608060405234801562000010575f80fd5b50336040518060600160405280603f815260200162003d5f603f91396200003d816200019e60201b60201c565b505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620000b1575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401620000a8919062000bcc565b60405180910390fd5b620000c281620001b360201b60201c565b506040518060400160405280601381526020017f3130203030302055534420464f522046524545000000000000000000000000008152506005908162000109919062000e4b565b506040518060400160405280601281526020017f6765742d6d797374657279626f782e6e657400000000000000000000000000008152506006908162000150919062000e4b565b5062000186336200016860046200027660201b60201c565b61271060405180602001604052805f8152506200028260201b60201c565b6200019860046200032a60201b60201c565b62001311565b8060029081620001af919062000e4b565b5050565b5f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f815f01549050919050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603620002f5575f6040517f57f447ce000000000000000000000000000000000000000000000000000000008152600401620002ec919062000bcc565b60405180910390fd5b5f806200030985856200033e60201b60201c565b91509150620003225f878484876200036e60201b60201c565b505050505050565b6001815f015f828254019250508190555050565b60608060405191506001825283602083015260408201905060018152826020820152604081016040529250929050565b62000382858585856200044160201b60201c565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146200043a575f620003c7620007f360201b60201c565b9050600184510362000421575f620003e95f86620007fa60201b90919060201c565b90505f620004015f86620007fa60201b90919060201c565b9050620004198389898585896200080d60201b60201c565b505062000438565b62000437818787878787620009cb60201b60201c565b5b505b5050505050565b80518251146200048e57815181516040517f5b0599910000000000000000000000000000000000000000000000000000000081526004016200048592919062000f40565b60405180910390fd5b5f6200049f620007f360201b60201c565b90505f5b8351811015620006a8575f620004c38286620007fa60201b90919060201c565b90505f620004db8386620007fa60201b90919060201c565b90505f73ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff161462000602575f805f8481526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015620005ae57888183856040517f03dee4c5000000000000000000000000000000000000000000000000000000008152600401620005a5949392919062000f6b565b60405180910390fd5b8181035f808581526020019081526020015f205f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16146200069a57805f808481526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825462000692919062000fe3565b925050819055505b5050806001019050620004a3565b5060018351036200076b575f620006c95f85620007fa60201b90919060201c565b90505f620006e15f85620007fa60201b90919060201c565b90508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6285856040516200075b92919062000f40565b60405180910390a45050620007ec565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051620007e3929190620010e4565b60405180910390a45b5050505050565b5f33905090565b5f60208202602084010151905092915050565b5f8473ffffffffffffffffffffffffffffffffffffffff163b1115620009c3578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b815260040162000870959493929190620011b1565b6020604051808303815f875af1925050508015620008ae57506040513d601f19601f82011682018060405250810190620008ab919062001271565b60015b62000935573d805f8114620008df576040519150601f19603f3d011682016040523d82523d5f602084013e620008e4565b606091505b505f8151036200092d57846040517f57f447ce00000000000000000000000000000000000000000000000000000000815260040162000924919062000bcc565b60405180910390fd5b805181602001fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614620009c157846040517f57f447ce000000000000000000000000000000000000000000000000000000008152600401620009b8919062000bcc565b60405180910390fd5b505b505050505050565b5f8473ffffffffffffffffffffffffffffffffffffffff163b111562000b81578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b815260040162000a2e959493929190620012a1565b6020604051808303815f875af192505050801562000a6c57506040513d601f19601f8201168201806040525081019062000a69919062001271565b60015b62000af3573d805f811462000a9d576040519150601f19603f3d011682016040523d82523d5f602084013e62000aa2565b606091505b505f81510362000aeb57846040517f57f447ce00000000000000000000000000000000000000000000000000000000815260040162000ae2919062000bcc565b60405180910390fd5b805181602001fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161462000b7f57846040517f57f447ce00000000000000000000000000000000000000000000000000000000815260040162000b76919062000bcc565b60405180910390fd5b505b505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000bb48262000b89565b9050919050565b62000bc68162000ba8565b82525050565b5f60208201905062000be15f83018462000bbb565b92915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168062000c6357607f821691505b60208210810362000c795762000c7862000c1e565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262000cdd7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000ca0565b62000ce9868362000ca0565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000d3362000d2d62000d278462000d01565b62000d0a565b62000d01565b9050919050565b5f819050919050565b62000d4e8362000d13565b62000d6662000d5d8262000d3a565b84845462000cac565b825550505050565b5f90565b62000d7c62000d6e565b62000d8981848462000d43565b505050565b5b8181101562000db05762000da45f8262000d72565b60018101905062000d8f565b5050565b601f82111562000dff5762000dc98162000c7f565b62000dd48462000c91565b8101602085101562000de4578190505b62000dfc62000df38562000c91565b83018262000d8e565b50505b505050565b5f82821c905092915050565b5f62000e215f198460080262000e04565b1980831691505092915050565b5f62000e3b838362000e10565b9150826002028217905092915050565b62000e568262000be7565b67ffffffffffffffff81111562000e725762000e7162000bf1565b5b62000e7e825462000c4b565b62000e8b82828562000db4565b5f60209050601f83116001811462000ec1575f841562000eac578287015190505b62000eb8858262000e2e565b86555062000f27565b601f19841662000ed18662000c7f565b5f5b8281101562000efa5784890151825560018201915060208501945060208101905062000ed3565b8683101562000f1a578489015162000f16601f89168262000e10565b8355505b6001600288020188555050505b505050505050565b62000f3a8162000d01565b82525050565b5f60408201905062000f555f83018562000f2f565b62000f64602083018462000f2f565b9392505050565b5f60808201905062000f805f83018762000bbb565b62000f8f602083018662000f2f565b62000f9e604083018562000f2f565b62000fad606083018462000f2f565b95945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f62000fef8262000d01565b915062000ffc8362000d01565b925082820190508082111562001017576200101662000fb6565b5b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b620010518162000d01565b82525050565b5f62001064838362001046565b60208301905092915050565b5f602082019050919050565b5f62001088826200101d565b62001094818562001027565b9350620010a18362001037565b805f5b83811015620010d7578151620010bb888262001057565b9750620010c88362001070565b925050600181019050620010a4565b5085935050505092915050565b5f6040820190508181035f830152620010fe81856200107c565b905081810360208301526200111481846200107c565b90509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156200115657808201518184015260208101905062001139565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6200117d826200111d565b62001189818562001127565b93506200119b81856020860162001137565b620011a68162001161565b840191505092915050565b5f60a082019050620011c65f83018862000bbb565b620011d5602083018762000bbb565b620011e4604083018662000f2f565b620011f3606083018562000f2f565b818103608083015262001207818462001171565b90509695505050505050565b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6200124d8162001217565b811462001258575f80fd5b50565b5f815190506200126b8162001242565b92915050565b5f6020828403121562001289576200128862001213565b5b5f62001298848285016200125b565b91505092915050565b5f60a082019050620012b65f83018862000bbb565b620012c5602083018762000bbb565b8181036040830152620012d981866200107c565b90508181036060830152620012ef81856200107c565b9050818103608083015262001305818462001171565b90509695505050505050565b612a40806200131f5f395ff3fe608060405234801561000f575f80fd5b5060043610610108575f3560e01c80637c88e3d9116100a0578063a496dedf1161006f578063a496dedf146102a0578063da262f58146102bc578063e985e9c5146102d8578063f242432a14610308578063f2fde38b1461032457610108565b80637c88e3d91461022c5780638da5cb5b1461024857806395d89b4114610266578063a22cb4651461028457610108565b80632eb2c2d6116100dc5780632eb2c2d6146101ba57806340c10f19146101d65780634e1273f4146101f2578063715018a61461022257610108565b8062fdd58e1461010c57806301ffc9a71461013c57806306fdde031461016c5780630e89341c1461018a575b5f80fd5b61012660048036038101906101219190611a0d565b610340565b6040516101339190611a5a565b60405180910390f35b61015660048036038101906101519190611ac8565b610395565b6040516101639190611b0d565b60405180910390f35b610174610476565b6040516101819190611bb0565b60405180910390f35b6101a4600480360381019061019f9190611bd0565b610506565b6040516101b19190611bb0565b60405180910390f35b6101d460048036038101906101cf9190611deb565b610598565b005b6101f060048036038101906101eb9190611a0d565b61063f565b005b61020c60048036038101906102079190611f76565b610678565b60405161021991906120a3565b60405180910390f35b61022a61077f565b005b61024660048036038101906102419190611f76565b610792565b005b61025061085c565b60405161025d91906120d2565b60405180910390f35b61026e610884565b60405161027b9190611bb0565b60405180910390f35b61029e60048036038101906102999190612115565b610914565b005b6102ba60048036038101906102b59190612153565b61092a565b005b6102d660048036038101906102d1919061225d565b6109c8565b005b6102f260048036038101906102ed91906122d3565b6109f4565b6040516102ff9190611b0d565b60405180910390f35b610322600480360381019061031d9190612311565b610a82565b005b61033e600480360381019061033991906123a4565b610b29565b005b5f805f8381526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f7fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061045f57507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061046f575061046e82610bad565b5b9050919050565b606060058054610485906123fc565b80601f01602080910402602001604051908101604052809291908181526020018280546104b1906123fc565b80156104fc5780601f106104d3576101008083540402835291602001916104fc565b820191905f5260205f20905b8154815290600101906020018083116104df57829003601f168201915b5050505050905090565b606060028054610515906123fc565b80601f0160208091040260200160405190810160405280929190818152602001828054610541906123fc565b801561058c5780601f106105635761010080835404028352916020019161058c565b820191905f5260205f20905b81548152906001019060200180831161056f57829003601f168201915b50505050509050919050565b5f6105a1610c16565b90508073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16141580156105e657506105e486826109f4565b155b1561062a5780866040517fe237d92200000000000000000000000000000000000000000000000000000000815260040161062192919061242c565b60405180910390fd5b6106378686868686610c1d565b505050505050565b610647610d11565b61066a826106556004610d98565b8360405180602001604052805f815250610da4565b6106746004610e39565b5050565b606081518351146106c457815183516040517f5b0599910000000000000000000000000000000000000000000000000000000081526004016106bb929190612453565b60405180910390fd5b5f835167ffffffffffffffff8111156106e0576106df611bff565b5b60405190808252806020026020018201604052801561070e5781602001602082028036833780820191505090505b5090505f5b84518110156107745761074a6107328287610e4d90919063ffffffff16565b6107458387610e6090919063ffffffff16565b610340565b82828151811061075d5761075c61247a565b5b602002602001018181525050806001019050610713565b508091505092915050565b610787610d11565b6107905f610e73565b565b61079a610d11565b80518251146107de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d5906124f1565b60405180910390fd5b5f5b8251811015610857576108408382815181106107ff576107fe61247a565b5b60200260200101516108116004610d98565b8484815181106108245761082361247a565b5b602002602001015160405180602001604052805f815250610da4565b61084a6004610e39565b80806001019150506107e0565b505050565b5f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060068054610893906123fc565b80601f01602080910402602001604051908101604052809291908181526020018280546108bf906123fc565b801561090a5780601f106108e15761010080835404028352916020019161090a565b820191905f5260205f20905b8154815290600101906020018083116108ed57829003601f168201915b5050505050905090565b61092661091f610c16565b8383610f36565b5050565b610932610d11565b5f835111610975576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096c90612559565b60405180910390fd5b5f5b83518110156109c2576109b5338583815181106109975761099661247a565b5b6020026020010151858560405180602001604052805f81525061109f565b8080600101915050610977565b50505050565b6109d0610d11565b81600590816109df9190612714565b5080600690816109ef9190612714565b505050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b5f610a8b610c16565b90508073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614158015610ad05750610ace86826109f4565b155b15610b145780866040517fe237d922000000000000000000000000000000000000000000000000000000008152600401610b0b92919061242c565b60405180910390fd5b610b21868686868661109f565b505050505050565b610b31610d11565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610ba1575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401610b9891906120d2565b60405180910390fd5b610baa81610e73565b50565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610c8d575f6040517f57f447ce000000000000000000000000000000000000000000000000000000008152600401610c8491906120d2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603610cfd575f6040517f01a83514000000000000000000000000000000000000000000000000000000008152600401610cf491906120d2565b60405180910390fd5b610d0a85858585856111a5565b5050505050565b610d19610c16565b73ffffffffffffffffffffffffffffffffffffffff16610d3761085c565b73ffffffffffffffffffffffffffffffffffffffff1614610d9657610d5a610c16565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401610d8d91906120d2565b60405180910390fd5b565b5f815f01549050919050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610e14575f6040517f57f447ce000000000000000000000000000000000000000000000000000000008152600401610e0b91906120d2565b60405180910390fd5b5f80610e208585611251565b91509150610e315f878484876111a5565b505050505050565b6001815f015f828254019250508190555050565b5f60208202602084010151905092915050565b5f60208202602084010151905092915050565b5f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610fa6575f6040517fced3e100000000000000000000000000000000000000000000000000000000008152600401610f9d91906120d2565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516110929190611b0d565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361110f575f6040517f57f447ce00000000000000000000000000000000000000000000000000000000815260040161110691906120d2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff160361117f575f6040517f01a8351400000000000000000000000000000000000000000000000000000000815260040161117691906120d2565b60405180910390fd5b5f8061118b8585611251565b9150915061119c87878484876111a5565b50505050505050565b6111b185858585611281565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161461124a575f6111ed610c16565b90506001845103611239575f61120c5f86610e6090919063ffffffff16565b90505f6112225f86610e6090919063ffffffff16565b9050611232838989858589611611565b5050611248565b6112478187878787876117c0565b5b505b5050505050565b60608060405191506001825283602083015260408201905060018152826020820152604081016040529250929050565b80518251146112cb57815181516040517f5b0599910000000000000000000000000000000000000000000000000000000081526004016112c2929190612453565b60405180910390fd5b5f6112d4610c16565b90505f5b83518110156114d0575f6112f58286610e6090919063ffffffff16565b90505f61130b8386610e6090919063ffffffff16565b90505f73ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff161461142e575f805f8481526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156113da57888183856040517f03dee4c50000000000000000000000000000000000000000000000000000000081526004016113d194939291906127e3565b60405180910390fd5b8181035f808581526020019081526020015f205f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16146114c357805f808481526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546114bb9190612853565b925050819055505b50508060010190506112d8565b50600183510361158b575f6114ee5f85610e6090919063ffffffff16565b90505f6115045f85610e6090919063ffffffff16565b90508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62858560405161157c929190612453565b60405180910390a4505061160a565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051611601929190612886565b60405180910390a45b5050505050565b5f8473ffffffffffffffffffffffffffffffffffffffff163b11156117b8578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b815260040161167195949392919061290d565b6020604051808303815f875af19250505080156116ac57506040513d601f19601f820116820180604052508101906116a99190612979565b60015b61172d573d805f81146116da576040519150601f19603f3d011682016040523d82523d5f602084013e6116df565b606091505b505f81510361172557846040517f57f447ce00000000000000000000000000000000000000000000000000000000815260040161171c91906120d2565b60405180910390fd5b805181602001fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146117b657846040517f57f447ce0000000000000000000000000000000000000000000000000000000081526004016117ad91906120d2565b60405180910390fd5b505b505050505050565b5f8473ffffffffffffffffffffffffffffffffffffffff163b1115611967578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b81526004016118209594939291906129a4565b6020604051808303815f875af192505050801561185b57506040513d601f19601f820116820180604052508101906118589190612979565b60015b6118dc573d805f8114611889576040519150601f19603f3d011682016040523d82523d5f602084013e61188e565b606091505b505f8151036118d457846040517f57f447ce0000000000000000000000000000000000000000000000000000000081526004016118cb91906120d2565b60405180910390fd5b805181602001fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461196557846040517f57f447ce00000000000000000000000000000000000000000000000000000000815260040161195c91906120d2565b60405180910390fd5b505b505050505050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6119a982611980565b9050919050565b6119b98161199f565b81146119c3575f80fd5b50565b5f813590506119d4816119b0565b92915050565b5f819050919050565b6119ec816119da565b81146119f6575f80fd5b50565b5f81359050611a07816119e3565b92915050565b5f8060408385031215611a2357611a22611978565b5b5f611a30858286016119c6565b9250506020611a41858286016119f9565b9150509250929050565b611a54816119da565b82525050565b5f602082019050611a6d5f830184611a4b565b92915050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611aa781611a73565b8114611ab1575f80fd5b50565b5f81359050611ac281611a9e565b92915050565b5f60208284031215611add57611adc611978565b5b5f611aea84828501611ab4565b91505092915050565b5f8115159050919050565b611b0781611af3565b82525050565b5f602082019050611b205f830184611afe565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015611b5d578082015181840152602081019050611b42565b5f8484015250505050565b5f601f19601f8301169050919050565b5f611b8282611b26565b611b8c8185611b30565b9350611b9c818560208601611b40565b611ba581611b68565b840191505092915050565b5f6020820190508181035f830152611bc88184611b78565b905092915050565b5f60208284031215611be557611be4611978565b5b5f611bf2848285016119f9565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611c3582611b68565b810181811067ffffffffffffffff82111715611c5457611c53611bff565b5b80604052505050565b5f611c6661196f565b9050611c728282611c2c565b919050565b5f67ffffffffffffffff821115611c9157611c90611bff565b5b602082029050602081019050919050565b5f80fd5b5f611cb8611cb384611c77565b611c5d565b90508083825260208201905060208402830185811115611cdb57611cda611ca2565b5b835b81811015611d045780611cf088826119f9565b845260208401935050602081019050611cdd565b5050509392505050565b5f82601f830112611d2257611d21611bfb565b5b8135611d32848260208601611ca6565b91505092915050565b5f80fd5b5f67ffffffffffffffff821115611d5957611d58611bff565b5b611d6282611b68565b9050602081019050919050565b828183375f83830152505050565b5f611d8f611d8a84611d3f565b611c5d565b905082815260208101848484011115611dab57611daa611d3b565b5b611db6848285611d6f565b509392505050565b5f82601f830112611dd257611dd1611bfb565b5b8135611de2848260208601611d7d565b91505092915050565b5f805f805f60a08688031215611e0457611e03611978565b5b5f611e11888289016119c6565b9550506020611e22888289016119c6565b945050604086013567ffffffffffffffff811115611e4357611e4261197c565b5b611e4f88828901611d0e565b935050606086013567ffffffffffffffff811115611e7057611e6f61197c565b5b611e7c88828901611d0e565b925050608086013567ffffffffffffffff811115611e9d57611e9c61197c565b5b611ea988828901611dbe565b9150509295509295909350565b5f67ffffffffffffffff821115611ed057611ecf611bff565b5b602082029050602081019050919050565b5f611ef3611eee84611eb6565b611c5d565b90508083825260208201905060208402830185811115611f1657611f15611ca2565b5b835b81811015611f3f5780611f2b88826119c6565b845260208401935050602081019050611f18565b5050509392505050565b5f82601f830112611f5d57611f5c611bfb565b5b8135611f6d848260208601611ee1565b91505092915050565b5f8060408385031215611f8c57611f8b611978565b5b5f83013567ffffffffffffffff811115611fa957611fa861197c565b5b611fb585828601611f49565b925050602083013567ffffffffffffffff811115611fd657611fd561197c565b5b611fe285828601611d0e565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61201e816119da565b82525050565b5f61202f8383612015565b60208301905092915050565b5f602082019050919050565b5f61205182611fec565b61205b8185611ff6565b935061206683612006565b805f5b8381101561209657815161207d8882612024565b97506120888361203b565b925050600181019050612069565b5085935050505092915050565b5f6020820190508181035f8301526120bb8184612047565b905092915050565b6120cc8161199f565b82525050565b5f6020820190506120e55f8301846120c3565b92915050565b6120f481611af3565b81146120fe575f80fd5b50565b5f8135905061210f816120eb565b92915050565b5f806040838503121561212b5761212a611978565b5b5f612138858286016119c6565b925050602061214985828601612101565b9150509250929050565b5f805f6060848603121561216a57612169611978565b5b5f84013567ffffffffffffffff8111156121875761218661197c565b5b61219386828701611f49565b93505060206121a4868287016119f9565b92505060406121b5868287016119f9565b9150509250925092565b5f67ffffffffffffffff8211156121d9576121d8611bff565b5b6121e282611b68565b9050602081019050919050565b5f6122016121fc846121bf565b611c5d565b90508281526020810184848401111561221d5761221c611d3b565b5b612228848285611d6f565b509392505050565b5f82601f83011261224457612243611bfb565b5b81356122548482602086016121ef565b91505092915050565b5f806040838503121561227357612272611978565b5b5f83013567ffffffffffffffff8111156122905761228f61197c565b5b61229c85828601612230565b925050602083013567ffffffffffffffff8111156122bd576122bc61197c565b5b6122c985828601612230565b9150509250929050565b5f80604083850312156122e9576122e8611978565b5b5f6122f6858286016119c6565b9250506020612307858286016119c6565b9150509250929050565b5f805f805f60a0868803121561232a57612329611978565b5b5f612337888289016119c6565b9550506020612348888289016119c6565b9450506040612359888289016119f9565b935050606061236a888289016119f9565b925050608086013567ffffffffffffffff81111561238b5761238a61197c565b5b61239788828901611dbe565b9150509295509295909350565b5f602082840312156123b9576123b8611978565b5b5f6123c6848285016119c6565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061241357607f821691505b602082108103612426576124256123cf565b5b50919050565b5f60408201905061243f5f8301856120c3565b61244c60208301846120c3565b9392505050565b5f6040820190506124665f830185611a4b565b6124736020830184611a4b565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f417272617973206c656e677468206d69736d61746368000000000000000000005f82015250565b5f6124db601683611b30565b91506124e6826124a7565b602082019050919050565b5f6020820190508181035f830152612508816124cf565b9050919050565b7f4e6f20726563697069656e74732070726f7669646564000000000000000000005f82015250565b5f612543601683611b30565b915061254e8261250f565b602082019050919050565b5f6020820190508181035f83015261257081612537565b9050919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026125d37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612598565b6125dd8683612598565b95508019841693508086168417925050509392505050565b5f819050919050565b5f61261861261361260e846119da565b6125f5565b6119da565b9050919050565b5f819050919050565b612631836125fe565b61264561263d8261261f565b8484546125a4565b825550505050565b5f90565b61265961264d565b612664818484612628565b505050565b5b818110156126875761267c5f82612651565b60018101905061266a565b5050565b601f8211156126cc5761269d81612577565b6126a684612589565b810160208510156126b5578190505b6126c96126c185612589565b830182612669565b50505b505050565b5f82821c905092915050565b5f6126ec5f19846008026126d1565b1980831691505092915050565b5f61270483836126dd565b9150826002028217905092915050565b61271d82611b26565b67ffffffffffffffff81111561273657612735611bff565b5b61274082546123fc565b61274b82828561268b565b5f60209050601f83116001811461277c575f841561276a578287015190505b61277485826126f9565b8655506127db565b601f19841661278a86612577565b5f5b828110156127b15784890151825560018201915060208501945060208101905061278c565b868310156127ce57848901516127ca601f8916826126dd565b8355505b6001600288020188555050505b505050505050565b5f6080820190506127f65f8301876120c3565b6128036020830186611a4b565b6128106040830185611a4b565b61281d6060830184611a4b565b95945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61285d826119da565b9150612868836119da565b92508282019050808211156128805761287f612826565b5b92915050565b5f6040820190508181035f83015261289e8185612047565b905081810360208301526128b28184612047565b90509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f6128df826128bb565b6128e981856128c5565b93506128f9818560208601611b40565b61290281611b68565b840191505092915050565b5f60a0820190506129205f8301886120c3565b61292d60208301876120c3565b61293a6040830186611a4b565b6129476060830185611a4b565b818103608083015261295981846128d5565b90509695505050505050565b5f8151905061297381611a9e565b92915050565b5f6020828403121561298e5761298d611978565b5b5f61299b84828501612965565b91505092915050565b5f60a0820190506129b75f8301886120c3565b6129c460208301876120c3565b81810360408301526129d68186612047565b905081810360608301526129ea8185612047565b905081810360808301526129fe81846128d5565b9050969550505050505056fea264697066735822122061f125837229a4505f21a99555d4357c9c0b52defc639f0ce01401480ea2321864736f6c6343000816003368747470733a2f2f6c61756e63687061642e636f6c6c6563746966792e6170702f6d61696e2f6d657461646174612f3357434b33444835312f312e6a736f6e