608060405234801561000f575f80fd5b50604051613bd2380380613bd283398181016040528101906100319190610ce2565b8260405180602001604052805f815250610050816101c360201b60201c565b505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036100c1575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016100b89190610d79565b60405180910390fd5b6100d0816101d660201b60201c565b508260055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061013183838360405180602001604052805f81525061029960201b60201c565b6040518060400160405280600881526020017f4f524950204e4654000000000000000000000000000000000000000000000000815250600690816101759190610f96565b506040518060400160405280600881526020017f4f524950204e4654000000000000000000000000000000000000000000000000815250600790816101ba9190610f96565b505050506113c8565b80600290816101d29190610f96565b5050565b5f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610309575f6040517f57f447ce0000000000000000000000000000000000000000000000000000000081526004016103009190610d79565b60405180910390fd5b61031c5f8585858561032260201b60201c565b50505050565b610334858585856103e660201b60201c565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146103df575f61037661077c60201b60201c565b905060018451036103c8575f6103955f8661078360201b90919060201c565b90505f6103ab5f8661078360201b90919060201c565b90506103c183898985858961079660201b60201c565b50506103dd565b6103dc81878787878761094560201b60201c565b5b505b5050505050565b805182511461043057815181516040517f5b059991000000000000000000000000000000000000000000000000000000008152600401610427929190611074565b60405180910390fd5b5f61043f61077c60201b60201c565b90505f5b835181101561063b575f610460828661078360201b90919060201c565b90505f610476838661078360201b90919060201c565b90505f73ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614610599575f805f8481526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561054557888183856040517f03dee4c500000000000000000000000000000000000000000000000000000000815260040161053c949392919061109b565b60405180910390fd5b8181035f808581526020019081526020015f205f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161461062e57805f808481526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610626919061110b565b925050819055505b5050806001019050610443565b5060018351036106f6575f6106595f8561078360201b90919060201c565b90505f61066f5f8561078360201b90919060201c565b90508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6285856040516106e7929190611074565b60405180910390a45050610775565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb868660405161076c9291906111f5565b60405180910390a45b5050505050565b5f33905090565b5f60208202602084010151905092915050565b5f8473ffffffffffffffffffffffffffffffffffffffff163b111561093d578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b81526004016107f695949392919061128a565b6020604051808303815f875af192505050801561083157506040513d601f19601f8201168201806040525081019061082e9190611337565b60015b6108b2573d805f811461085f576040519150601f19603f3d011682016040523d82523d5f602084013e610864565b606091505b505f8151036108aa57846040517f57f447ce0000000000000000000000000000000000000000000000000000000081526004016108a19190610d79565b60405180910390fd5b805181602001fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461093b57846040517f57f447ce0000000000000000000000000000000000000000000000000000000081526004016109329190610d79565b60405180910390fd5b505b505050505050565b5f8473ffffffffffffffffffffffffffffffffffffffff163b1115610aec578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b81526004016109a5959493929190611362565b6020604051808303815f875af19250505080156109e057506040513d601f19601f820116820180604052508101906109dd9190611337565b60015b610a61573d805f8114610a0e576040519150601f19603f3d011682016040523d82523d5f602084013e610a13565b606091505b505f815103610a5957846040517f57f447ce000000000000000000000000000000000000000000000000000000008152600401610a509190610d79565b60405180910390fd5b805181602001fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614610aea57846040517f57f447ce000000000000000000000000000000000000000000000000000000008152600401610ae19190610d79565b60405180910390fd5b505b505050505050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610b2e82610b05565b9050919050565b610b3e81610b24565b8114610b48575f80fd5b50565b5f81519050610b5981610b35565b92915050565b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b610ba982610b63565b810181811067ffffffffffffffff82111715610bc857610bc7610b73565b5b80604052505050565b5f610bda610af4565b9050610be68282610ba0565b919050565b5f67ffffffffffffffff821115610c0557610c04610b73565b5b602082029050602081019050919050565b5f80fd5b5f819050919050565b610c2c81610c1a565b8114610c36575f80fd5b50565b5f81519050610c4781610c23565b92915050565b5f610c5f610c5a84610beb565b610bd1565b90508083825260208201905060208402830185811115610c8257610c81610c16565b5b835b81811015610cab5780610c978882610c39565b845260208401935050602081019050610c84565b5050509392505050565b5f82601f830112610cc957610cc8610b5f565b5b8151610cd9848260208601610c4d565b91505092915050565b5f805f60608486031215610cf957610cf8610afd565b5b5f610d0686828701610b4b565b935050602084015167ffffffffffffffff811115610d2757610d26610b01565b5b610d3386828701610cb5565b925050604084015167ffffffffffffffff811115610d5457610d53610b01565b5b610d6086828701610cb5565b9150509250925092565b610d7381610b24565b82525050565b5f602082019050610d8c5f830184610d6a565b92915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680610de057607f821691505b602082108103610df357610df2610d9c565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302610e557fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610e1a565b610e5f8683610e1a565b95508019841693508086168417925050509392505050565b5f819050919050565b5f610e9a610e95610e9084610c1a565b610e77565b610c1a565b9050919050565b5f819050919050565b610eb383610e80565b610ec7610ebf82610ea1565b848454610e26565b825550505050565b5f90565b610edb610ecf565b610ee6818484610eaa565b505050565b5b81811015610f0957610efe5f82610ed3565b600181019050610eec565b5050565b601f821115610f4e57610f1f81610df9565b610f2884610e0b565b81016020851015610f37578190505b610f4b610f4385610e0b565b830182610eeb565b50505b505050565b5f82821c905092915050565b5f610f6e5f1984600802610f53565b1980831691505092915050565b5f610f868383610f5f565b9150826002028217905092915050565b610f9f82610d92565b67ffffffffffffffff811115610fb857610fb7610b73565b5b610fc28254610dc9565b610fcd828285610f0d565b5f60209050601f831160018114610ffe575f8415610fec578287015190505b610ff68582610f7b565b86555061105d565b601f19841661100c86610df9565b5f5b828110156110335784890151825560018201915060208501945060208101905061100e565b86831015611050578489015161104c601f891682610f5f565b8355505b6001600288020188555050505b505050505050565b61106e81610c1a565b82525050565b5f6040820190506110875f830185611065565b6110946020830184611065565b9392505050565b5f6080820190506110ae5f830187610d6a565b6110bb6020830186611065565b6110c86040830185611065565b6110d56060830184611065565b95945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61111582610c1a565b915061112083610c1a565b9250828201905080821115611138576111376110de565b5b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61117081610c1a565b82525050565b5f6111818383611167565b60208301905092915050565b5f602082019050919050565b5f6111a38261113e565b6111ad8185611148565b93506111b883611158565b805f5b838110156111e85781516111cf8882611176565b97506111da8361118d565b9250506001810190506111bb565b5085935050505092915050565b5f6040820190508181035f83015261120d8185611199565b905081810360208301526112218184611199565b90509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f61125c8261122a565b6112668185611234565b9350611276818560208601611244565b61127f81610b63565b840191505092915050565b5f60a08201905061129d5f830188610d6a565b6112aa6020830187610d6a565b6112b76040830186611065565b6112c46060830185611065565b81810360808301526112d68184611252565b90509695505050505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611316816112e2565b8114611320575f80fd5b50565b5f815190506113318161130d565b92915050565b5f6020828403121561134c5761134b610afd565b5b5f61135984828501611323565b91505092915050565b5f60a0820190506113755f830188610d6a565b6113826020830187610d6a565b81810360408301526113948186611199565b905081810360608301526113a88185611199565b905081810360808301526113bc8184611252565b90509695505050505050565b6127fd806113d55f395ff3fe608060405234801561000f575f80fd5b50600436106100fd575f3560e01c80638da5cb5b11610095578063d81d0a1511610064578063d81d0a15146102a9578063e985e9c5146102c5578063f242432a146102f5578063f2fde38b14610311576100fd565b80638da5cb5b1461022157806395d89b411461023f578063a22cb4651461025d578063aed6176e14610279576100fd565b80630e89341c116100d15780630e89341c1461019b5780632eb2c2d6146101cb5780634e1273f4146101e7578063715018a614610217576100fd565b8062fdd58e1461010157806301ffc9a71461013157806302fe53051461016157806306fdde031461017d575b5f80fd5b61011b60048036038101906101169190611889565b61032d565b60405161012891906118d6565b60405180910390f35b61014b60048036038101906101469190611944565b610382565b6040516101589190611989565b60405180910390f35b61017b60048036038101906101769190611ade565b610463565b005b610185610477565b6040516101929190611b85565b60405180910390f35b6101b560048036038101906101b09190611ba5565b610503565b6040516101c29190611b85565b60405180910390f35b6101e560048036038101906101e09190611d32565b610595565b005b61020160048036038101906101fc9190611ebd565b61063c565b60405161020e9190611fea565b60405180910390f35b61021f610743565b005b610229610756565b6040516102369190612019565b60405180910390f35b61024761077e565b6040516102549190611b85565b60405180910390f35b6102776004803603810190610272919061205c565b61080a565b005b610293600480360381019061028e919061209a565b610820565b6040516102a09190612019565b60405180910390f35b6102c360048036038101906102be91906120d8565b610868565b005b6102df60048036038101906102da9190612160565b61088f565b6040516102ec9190611989565b60405180910390f35b61030f600480360381019061030a919061219e565b61091d565b005b61032b60048036038101906103269190612231565b6109c4565b005b5f805f8381526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f7fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061044c57507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061045c575061045b82610a48565b5b9050919050565b61046b610ab1565b61047481610b38565b50565b6006805461048490612289565b80601f01602080910402602001604051908101604052809291908181526020018280546104b090612289565b80156104fb5780601f106104d2576101008083540402835291602001916104fb565b820191905f5260205f20905b8154815290600101906020018083116104de57829003601f168201915b505050505081565b60606002805461051290612289565b80601f016020809104026020016040519081016040528092919081815260200182805461053e90612289565b80156105895780601f1061056057610100808354040283529160200191610589565b820191905f5260205f20905b81548152906001019060200180831161056c57829003601f168201915b50505050509050919050565b5f61059e610b4b565b90508073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16141580156105e357506105e1868261088f565b155b156106275780866040517fe237d92200000000000000000000000000000000000000000000000000000000815260040161061e9291906122b9565b60405180910390fd5b6106348686868686610b52565b505050505050565b6060815183511461068857815183516040517f5b05999100000000000000000000000000000000000000000000000000000000815260040161067f9291906122e0565b60405180910390fd5b5f835167ffffffffffffffff8111156106a4576106a36119ba565b5b6040519080825280602002602001820160405280156106d25781602001602082028036833780820191505090505b5090505f5b84518110156107385761070e6106f68287610c4690919063ffffffff16565b6107098387610c5990919063ffffffff16565b61032d565b82828151811061072157610720612307565b5b6020026020010181815250508060010190506106d7565b508091505092915050565b61074b610ab1565b6107545f610c6c565b565b5f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6007805461078b90612289565b80601f01602080910402602001604051908101604052809291908181526020018280546107b790612289565b80156108025780601f106107d957610100808354040283529160200191610802565b820191905f5260205f20905b8154815290600101906020018083116107e557829003601f168201915b505050505081565b61081c610815610b4b565b8383610d2f565b5050565b6004602052815f5260405f208181548110610839575f80fd5b905f5260205f20015f915091509054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610870610ab1565b61088a83838360405180602001604052805f815250610e98565b505050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b5f610926610b4b565b90508073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415801561096b5750610969868261088f565b155b156109af5780866040517fe237d9220000000000000000000000000000000000000000000000000000000081526004016109a69291906122b9565b60405180910390fd5b6109bc8686868686610f1b565b505050505050565b6109cc610ab1565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610a3c575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401610a339190612019565b60405180910390fd5b610a4581610c6c565b50565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b610ab9610b4b565b73ffffffffffffffffffffffffffffffffffffffff16610ad7610756565b73ffffffffffffffffffffffffffffffffffffffff1614610b3657610afa610b4b565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401610b2d9190612019565b60405180910390fd5b565b8060029081610b4791906124d1565b5050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610bc2575f6040517f57f447ce000000000000000000000000000000000000000000000000000000008152600401610bb99190612019565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603610c32575f6040517f01a83514000000000000000000000000000000000000000000000000000000008152600401610c299190612019565b60405180910390fd5b610c3f8585858585611021565b5050505050565b5f60208202602084010151905092915050565b5f60208202602084010151905092915050565b5f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d9f575f6040517fced3e100000000000000000000000000000000000000000000000000000000008152600401610d969190612019565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051610e8b9190611989565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610f08575f6040517f57f447ce000000000000000000000000000000000000000000000000000000008152600401610eff9190612019565b60405180910390fd5b610f155f85858585611021565b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610f8b575f6040517f57f447ce000000000000000000000000000000000000000000000000000000008152600401610f829190612019565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603610ffb575f6040517f01a83514000000000000000000000000000000000000000000000000000000008152600401610ff29190612019565b60405180910390fd5b5f8061100785856110cd565b915091506110188787848487611021565b50505050505050565b61102d858585856110fd565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146110c6575f611069610b4b565b905060018451036110b5575f6110885f86610c5990919063ffffffff16565b90505f61109e5f86610c5990919063ffffffff16565b90506110ae83898985858961148d565b50506110c4565b6110c381878787878761163c565b5b505b5050505050565b60608060405191506001825283602083015260408201905060018152826020820152604081016040529250929050565b805182511461114757815181516040517f5b05999100000000000000000000000000000000000000000000000000000000815260040161113e9291906122e0565b60405180910390fd5b5f611150610b4b565b90505f5b835181101561134c575f6111718286610c5990919063ffffffff16565b90505f6111878386610c5990919063ffffffff16565b90505f73ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16146112aa575f805f8481526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561125657888183856040517f03dee4c500000000000000000000000000000000000000000000000000000000815260040161124d94939291906125a0565b60405180910390fd5b8181035f808581526020019081526020015f205f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161461133f57805f808481526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546113379190612610565b925050819055505b5050806001019050611154565b506001835103611407575f61136a5f85610c5990919063ffffffff16565b90505f6113805f85610c5990919063ffffffff16565b90508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6285856040516113f89291906122e0565b60405180910390a45050611486565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb868660405161147d929190612643565b60405180910390a45b5050505050565b5f8473ffffffffffffffffffffffffffffffffffffffff163b1115611634578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b81526004016114ed9594939291906126ca565b6020604051808303815f875af192505050801561152857506040513d601f19601f820116820180604052508101906115259190612736565b60015b6115a9573d805f8114611556576040519150601f19603f3d011682016040523d82523d5f602084013e61155b565b606091505b505f8151036115a157846040517f57f447ce0000000000000000000000000000000000000000000000000000000081526004016115989190612019565b60405180910390fd5b805181602001fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461163257846040517f57f447ce0000000000000000000000000000000000000000000000000000000081526004016116299190612019565b60405180910390fd5b505b505050505050565b5f8473ffffffffffffffffffffffffffffffffffffffff163b11156117e3578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b815260040161169c959493929190612761565b6020604051808303815f875af19250505080156116d757506040513d601f19601f820116820180604052508101906116d49190612736565b60015b611758573d805f8114611705576040519150601f19603f3d011682016040523d82523d5f602084013e61170a565b606091505b505f81510361175057846040517f57f447ce0000000000000000000000000000000000000000000000000000000081526004016117479190612019565b60405180910390fd5b805181602001fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146117e157846040517f57f447ce0000000000000000000000000000000000000000000000000000000081526004016117d89190612019565b60405180910390fd5b505b505050505050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611825826117fc565b9050919050565b6118358161181b565b811461183f575f80fd5b50565b5f813590506118508161182c565b92915050565b5f819050919050565b61186881611856565b8114611872575f80fd5b50565b5f813590506118838161185f565b92915050565b5f806040838503121561189f5761189e6117f4565b5b5f6118ac85828601611842565b92505060206118bd85828601611875565b9150509250929050565b6118d081611856565b82525050565b5f6020820190506118e95f8301846118c7565b92915050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611923816118ef565b811461192d575f80fd5b50565b5f8135905061193e8161191a565b92915050565b5f60208284031215611959576119586117f4565b5b5f61196684828501611930565b91505092915050565b5f8115159050919050565b6119838161196f565b82525050565b5f60208201905061199c5f83018461197a565b92915050565b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6119f0826119aa565b810181811067ffffffffffffffff82111715611a0f57611a0e6119ba565b5b80604052505050565b5f611a216117eb565b9050611a2d82826119e7565b919050565b5f67ffffffffffffffff821115611a4c57611a4b6119ba565b5b611a55826119aa565b9050602081019050919050565b828183375f83830152505050565b5f611a82611a7d84611a32565b611a18565b905082815260208101848484011115611a9e57611a9d6119a6565b5b611aa9848285611a62565b509392505050565b5f82601f830112611ac557611ac46119a2565b5b8135611ad5848260208601611a70565b91505092915050565b5f60208284031215611af357611af26117f4565b5b5f82013567ffffffffffffffff811115611b1057611b0f6117f8565b5b611b1c84828501611ab1565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f611b5782611b25565b611b618185611b2f565b9350611b71818560208601611b3f565b611b7a816119aa565b840191505092915050565b5f6020820190508181035f830152611b9d8184611b4d565b905092915050565b5f60208284031215611bba57611bb96117f4565b5b5f611bc784828501611875565b91505092915050565b5f67ffffffffffffffff821115611bea57611be96119ba565b5b602082029050602081019050919050565b5f80fd5b5f611c11611c0c84611bd0565b611a18565b90508083825260208201905060208402830185811115611c3457611c33611bfb565b5b835b81811015611c5d5780611c498882611875565b845260208401935050602081019050611c36565b5050509392505050565b5f82601f830112611c7b57611c7a6119a2565b5b8135611c8b848260208601611bff565b91505092915050565b5f67ffffffffffffffff821115611cae57611cad6119ba565b5b611cb7826119aa565b9050602081019050919050565b5f611cd6611cd184611c94565b611a18565b905082815260208101848484011115611cf257611cf16119a6565b5b611cfd848285611a62565b509392505050565b5f82601f830112611d1957611d186119a2565b5b8135611d29848260208601611cc4565b91505092915050565b5f805f805f60a08688031215611d4b57611d4a6117f4565b5b5f611d5888828901611842565b9550506020611d6988828901611842565b945050604086013567ffffffffffffffff811115611d8a57611d896117f8565b5b611d9688828901611c67565b935050606086013567ffffffffffffffff811115611db757611db66117f8565b5b611dc388828901611c67565b925050608086013567ffffffffffffffff811115611de457611de36117f8565b5b611df088828901611d05565b9150509295509295909350565b5f67ffffffffffffffff821115611e1757611e166119ba565b5b602082029050602081019050919050565b5f611e3a611e3584611dfd565b611a18565b90508083825260208201905060208402830185811115611e5d57611e5c611bfb565b5b835b81811015611e865780611e728882611842565b845260208401935050602081019050611e5f565b5050509392505050565b5f82601f830112611ea457611ea36119a2565b5b8135611eb4848260208601611e28565b91505092915050565b5f8060408385031215611ed357611ed26117f4565b5b5f83013567ffffffffffffffff811115611ef057611eef6117f8565b5b611efc85828601611e90565b925050602083013567ffffffffffffffff811115611f1d57611f1c6117f8565b5b611f2985828601611c67565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b611f6581611856565b82525050565b5f611f768383611f5c565b60208301905092915050565b5f602082019050919050565b5f611f9882611f33565b611fa28185611f3d565b9350611fad83611f4d565b805f5b83811015611fdd578151611fc48882611f6b565b9750611fcf83611f82565b925050600181019050611fb0565b5085935050505092915050565b5f6020820190508181035f8301526120028184611f8e565b905092915050565b6120138161181b565b82525050565b5f60208201905061202c5f83018461200a565b92915050565b61203b8161196f565b8114612045575f80fd5b50565b5f8135905061205681612032565b92915050565b5f8060408385031215612072576120716117f4565b5b5f61207f85828601611842565b925050602061209085828601612048565b9150509250929050565b5f80604083850312156120b0576120af6117f4565b5b5f6120bd85828601611875565b92505060206120ce85828601611875565b9150509250929050565b5f805f606084860312156120ef576120ee6117f4565b5b5f6120fc86828701611842565b935050602084013567ffffffffffffffff81111561211d5761211c6117f8565b5b61212986828701611c67565b925050604084013567ffffffffffffffff81111561214a576121496117f8565b5b61215686828701611c67565b9150509250925092565b5f8060408385031215612176576121756117f4565b5b5f61218385828601611842565b925050602061219485828601611842565b9150509250929050565b5f805f805f60a086880312156121b7576121b66117f4565b5b5f6121c488828901611842565b95505060206121d588828901611842565b94505060406121e688828901611875565b93505060606121f788828901611875565b925050608086013567ffffffffffffffff811115612218576122176117f8565b5b61222488828901611d05565b9150509295509295909350565b5f60208284031215612246576122456117f4565b5b5f61225384828501611842565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806122a057607f821691505b6020821081036122b3576122b261225c565b5b50919050565b5f6040820190506122cc5f83018561200a565b6122d9602083018461200a565b9392505050565b5f6040820190506122f35f8301856118c7565b61230060208301846118c7565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026123907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612355565b61239a8683612355565b95508019841693508086168417925050509392505050565b5f819050919050565b5f6123d56123d06123cb84611856565b6123b2565b611856565b9050919050565b5f819050919050565b6123ee836123bb565b6124026123fa826123dc565b848454612361565b825550505050565b5f90565b61241661240a565b6124218184846123e5565b505050565b5b81811015612444576124395f8261240e565b600181019050612427565b5050565b601f8211156124895761245a81612334565b61246384612346565b81016020851015612472578190505b61248661247e85612346565b830182612426565b50505b505050565b5f82821c905092915050565b5f6124a95f198460080261248e565b1980831691505092915050565b5f6124c1838361249a565b9150826002028217905092915050565b6124da82611b25565b67ffffffffffffffff8111156124f3576124f26119ba565b5b6124fd8254612289565b612508828285612448565b5f60209050601f831160018114612539575f8415612527578287015190505b61253185826124b6565b865550612598565b601f19841661254786612334565b5f5b8281101561256e57848901518255600182019150602085019450602081019050612549565b8683101561258b5784890151612587601f89168261249a565b8355505b6001600288020188555050505b505050505050565b5f6080820190506125b35f83018761200a565b6125c060208301866118c7565b6125cd60408301856118c7565b6125da60608301846118c7565b95945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61261a82611856565b915061262583611856565b925082820190508082111561263d5761263c6125e3565b5b92915050565b5f6040820190508181035f83015261265b8185611f8e565b9050818103602083015261266f8184611f8e565b90509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f61269c82612678565b6126a68185612682565b93506126b6818560208601611b3f565b6126bf816119aa565b840191505092915050565b5f60a0820190506126dd5f83018861200a565b6126ea602083018761200a565b6126f760408301866118c7565b61270460608301856118c7565b81810360808301526127168184612692565b90509695505050505050565b5f815190506127308161191a565b92915050565b5f6020828403121561274b5761274a6117f4565b5b5f61275884828501612722565b91505092915050565b5f60a0820190506127745f83018861200a565b612781602083018761200a565b81810360408301526127938186611f8e565b905081810360608301526127a78185611f8e565b905081810360808301526127bb8184612692565b9050969550505050505056fea26469706673582212207c66b7cfb28e845081b0d7641ee8e08b0e7037841b9b485ea2cb134cf7587e0364736f6c634300081a00330000000000000000000000005297cd4c653928ecb177c9e730321e6e7f105dab000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000000000000090000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000500000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000007000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000090000000000000000000000000000000000000000000000000000000000000009000000000000000000000000000000000000000000000000000000000000006400000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000064000000000000000000000000000000000000000000000000000000000000006400000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000064000000000000000000000000000000000000000000000000000000000000006400000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000064