60806040526004600c556001600d5f6101000a81548160ff0219169083151502179055505f600d60016101000a81548160ff021916908315150217905550348015610048575f80fd5b50336040518060400160405280600981526020017f44656c74615061737300000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f4454500000000000000000000000000000000000000000000000000000000000815250815f90816100c49190610474565b5080600190816100d49190610474565b5050505f600a5f6101000a81548160ff0219169083151502179055505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610160575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016101579190610582565b60405180910390fd5b61016f8161017560201b60201c565b5061059b565b5f600a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806102b557607f821691505b6020821081036102c8576102c7610271565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830261032a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826102ef565b61033486836102ef565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f61037861037361036e8461034c565b610355565b61034c565b9050919050565b5f819050919050565b6103918361035e565b6103a561039d8261037f565b8484546102fb565b825550505050565b5f90565b6103b96103ad565b6103c4818484610388565b505050565b5b818110156103e7576103dc5f826103b1565b6001810190506103ca565b5050565b601f82111561042c576103fd816102ce565b610406846102e0565b81016020851015610415578190505b610429610421856102e0565b8301826103c9565b50505b505050565b5f82821c905092915050565b5f61044c5f1984600802610431565b1980831691505092915050565b5f610464838361043d565b9150826002028217905092915050565b61047d8261023a565b67ffffffffffffffff81111561049657610495610244565b5b6104a0825461029e565b6104ab8282856103eb565b5f60209050601f8311600181146104dc575f84156104ca578287015190505b6104d48582610459565b86555061053b565b601f1984166104ea866102ce565b5f5b82811015610511578489015182556001820191506020850194506020810190506104ec565b8683101561052e578489015161052a601f89168261043d565b8355505b6001600288020188555050505b505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61056c82610543565b9050919050565b61057c81610562565b82525050565b5f6020820190506105955f830184610573565b92915050565b613303806105a85f395ff3fe6080604052600436106101cc575f3560e01c80635c975abb116100f657806395d89b4111610094578063c1fcc79511610063578063c1fcc79514610608578063c87b56dd14610630578063e985e9c51461066c578063f2fde38b146106a8576101cc565b806395d89b4114610564578063a22cb4651461058e578063b88d4fde146105b6578063bcc9ca5b146105de576101cc565b806370a08231116100d057806370a08231146104d2578063715018a61461050e5780638456cb59146105245780638da5cb5b1461053a576101cc565b80635c975abb146104445780636352211e1461046e5780636447c35d146104aa576101cc565b806323b872dd1161016e5780633f4ba83a1161013d5780633f4ba83a146103a257806342842e0e146103b85780634f6ccce7146103e057806351cff8d91461041c576101cc565b806323b872dd146102f857806326092b83146103205780632848aeaf1461032a5780632f745c5914610366576101cc565b8063085c9bac116101aa578063085c9bac14610272578063095ea7b31461029c578063102a6a73146102c457806318160ddd146102ce576101cc565b806301ffc9a7146101d057806306fdde031461020c578063081812fc14610236575b5f80fd5b3480156101db575f80fd5b506101f660048036038101906101f19190612722565b6106d0565b6040516102039190612767565b60405180910390f35b348015610217575f80fd5b506102206106e1565b60405161022d91906127f0565b60405180910390f35b348015610241575f80fd5b5061025c60048036038101906102579190612843565b610770565b60405161026991906128ad565b60405180910390f35b34801561027d575f80fd5b5061028661078b565b6040516102939190612767565b60405180910390f35b3480156102a7575f80fd5b506102c260048036038101906102bd91906128f0565b61079e565b005b6102cc6107b4565b005b3480156102d9575f80fd5b506102e2610947565b6040516102ef919061293d565b60405180910390f35b348015610303575f80fd5b5061031e60048036038101906103199190612956565b610953565b005b610328610a52565b005b348015610335575f80fd5b50610350600480360381019061034b91906129a6565b610b5b565b60405161035d9190612767565b60405180910390f35b348015610371575f80fd5b5061038c600480360381019061038791906128f0565b610b78565b604051610399919061293d565b60405180910390f35b3480156103ad575f80fd5b506103b6610c1c565b005b3480156103c3575f80fd5b506103de60048036038101906103d99190612956565b610c2e565b005b3480156103eb575f80fd5b5061040660048036038101906104019190612843565b610c4d565b604051610413919061293d565b60405180910390f35b348015610427575f80fd5b50610442600480360381019061043d91906129a6565b610cbf565b005b34801561044f575f80fd5b50610458610d13565b6040516104659190612767565b60405180910390f35b348015610479575f80fd5b50610494600480360381019061048f9190612843565b610d28565b6040516104a191906128ad565b60405180910390f35b3480156104b5575f80fd5b506104d060048036038101906104cb9190612a32565b610d39565b005b3480156104dd575f80fd5b506104f860048036038101906104f391906129a6565b610ddc565b604051610505919061293d565b60405180910390f35b348015610519575f80fd5b50610522610e92565b005b34801561052f575f80fd5b50610538610ea5565b005b348015610545575f80fd5b5061054e610eb7565b60405161055b91906128ad565b60405180910390f35b34801561056f575f80fd5b50610578610ee0565b60405161058591906127f0565b60405180910390f35b348015610599575f80fd5b506105b460048036038101906105af9190612aa7565b610f70565b005b3480156105c1575f80fd5b506105dc60048036038101906105d79190612c0d565b610f86565b005b3480156105e9575f80fd5b506105f2610fa3565b6040516105ff9190612767565b60405180910390f35b348015610613575f80fd5b5061062e60048036038101906106299190612c8d565b610fb5565b005b34801561063b575f80fd5b5061065660048036038101906106519190612843565b610ff4565b60405161066391906127f0565b60405180910390f35b348015610677575f80fd5b50610692600480360381019061068d9190612ccb565b61105a565b60405161069f9190612767565b60405180910390f35b3480156106b3575f80fd5b506106ce60048036038101906106c991906129a6565b6110e8565b005b5f6106da8261116c565b9050919050565b60605f80546106ef90612d36565b80601f016020809104026020016040519081016040528092919081815260200182805461071b90612d36565b80156107665780601f1061073d57610100808354040283529160200191610766565b820191905f5260205f20905b81548152906001019060200180831161074957829003601f168201915b5050505050905090565b5f61077a826111e5565b506107848261126b565b9050919050565b600d60019054906101000a900460ff1681565b6107b082826107ab6112a4565b6112ab565b5050565b600d60019054906101000a900460ff16610803576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107fa90612db0565b60405180910390fd5b600e5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661088c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088390612e18565b60405180910390fd5b66038d7ea4c680003410156108d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108cd90612e80565b60405180910390fd5b600c546108e1610947565b10610921576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091890612ee8565b60405180910390fd5b5f600b5f81548092919061093490612f33565b91905055905061094433826112bd565b50565b5f600880549050905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036109c3575f6040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016109ba91906128ad565b60405180910390fd5b5f6109d683836109d16112a4565b6112da565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610a4c578382826040517f64283d7b000000000000000000000000000000000000000000000000000000008152600401610a4393929190612f7a565b60405180910390fd5b50505050565b600d5f9054906101000a900460ff16610aa0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9790612ff9565b60405180910390fd5b66071afd498d0000341015610aea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae190612e80565b60405180910390fd5b600c54610af5610947565b10610b35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2c90613061565b60405180910390fd5b5f600b5f815480929190610b4890612f33565b919050559050610b5833826112bd565b50565b600e602052805f5260405f205f915054906101000a900460ff1681565b5f610b8283610ddc565b8210610bc75782826040517fa57d13dc000000000000000000000000000000000000000000000000000000008152600401610bbe92919061307f565b60405180910390fd5b60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f2054905092915050565b610c246112ef565b610c2c611376565b565b610c4883838360405180602001604052805f815250610f86565b505050565b5f610c56610947565b8210610c9b575f826040517fa57d13dc000000000000000000000000000000000000000000000000000000008152600401610c9292919061307f565b60405180910390fd5b60088281548110610caf57610cae6130a6565b5b905f5260205f2001549050919050565b610cc76112ef565b5f4790508173ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015610d0e573d5f803e3d5ffd5b505050565b5f600a5f9054906101000a900460ff16905090565b5f610d32826111e5565b9050919050565b610d416112ef565b5f5b82829050811015610dd7576001600e5f858585818110610d6657610d656130a6565b5b9050602002016020810190610d7b91906129a6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610d43565b505050565b5f8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e4d575f6040517f89c62b64000000000000000000000000000000000000000000000000000000008152600401610e4491906128ad565b60405180910390fd5b60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610e9a6112ef565b610ea35f6113d7565b565b610ead6112ef565b610eb561149c565b565b5f600a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060018054610eef90612d36565b80601f0160208091040260200160405190810160405280929190818152602001828054610f1b90612d36565b8015610f665780601f10610f3d57610100808354040283529160200191610f66565b820191905f5260205f20905b815481529060010190602001808311610f4957829003601f168201915b5050505050905090565b610f82610f7b6112a4565b83836114fe565b5050565b610f91848484610953565b610f9d84848484611667565b50505050565b600d5f9054906101000a900460ff1681565b610fbd6112ef565b81600d60016101000a81548160ff02191690831515021790555080600d5f6101000a81548160ff0219169083151502179055505050565b6060610fff826111e5565b505f611009611819565b90505f8151116110275760405180602001604052805f815250611052565b8061103184611839565b60405160200161104292919061310d565b6040516020818303038152906040525b915050919050565b5f60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b6110f06112ef565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611160575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161115791906128ad565b60405180910390fd5b611169816113d7565b50565b5f7f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806111de57506111dd82611903565b5b9050919050565b5f806111f0836119e4565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361126257826040517f7e273289000000000000000000000000000000000000000000000000000000008152600401611259919061293d565b60405180910390fd5b80915050919050565b5f60045f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b5f33905090565b6112b88383836001611a1d565b505050565b6112d6828260405180602001604052805f815250611bdc565b5050565b5f6112e6848484611bf7565b90509392505050565b6112f76112a4565b73ffffffffffffffffffffffffffffffffffffffff16611315610eb7565b73ffffffffffffffffffffffffffffffffffffffff1614611374576113386112a4565b6040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040161136b91906128ad565b60405180910390fd5b565b61137e611c14565b5f600a5f6101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6113c06112a4565b6040516113cd91906128ad565b60405180910390a1565b5f600a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6114a4611c54565b6001600a5f6101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586114e76112a4565b6040516114f491906128ad565b60405180910390a1565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361156e57816040517f5b08ba1800000000000000000000000000000000000000000000000000000000815260040161156591906128ad565b60405180910390fd5b8060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161165a9190612767565b60405180910390a3505050565b5f8373ffffffffffffffffffffffffffffffffffffffff163b1115611813578273ffffffffffffffffffffffffffffffffffffffff1663150b7a026116aa6112a4565b8685856040518563ffffffff1660e01b81526004016116cc9493929190613182565b6020604051808303815f875af192505050801561170757506040513d601f19601f8201168201806040525081019061170491906131e0565b60015b611788573d805f8114611735576040519150601f19603f3d011682016040523d82523d5f602084013e61173a565b606091505b505f81510361178057836040517f64a0ae9200000000000000000000000000000000000000000000000000000000815260040161177791906128ad565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461181157836040517f64a0ae9200000000000000000000000000000000000000000000000000000000815260040161180891906128ad565b60405180910390fd5b505b50505050565b606060405180606001604052806035815260200161329960359139905090565b60605f600161184784611c95565b0190505f8167ffffffffffffffff81111561186557611864612ae9565b5b6040519080825280601f01601f1916602001820160405280156118975781602001600182028036833780820191505090505b5090505f82602001820190505b6001156118f8578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85816118ed576118ec61320b565b5b0494505f85036118a4575b819350505050919050565b5f7f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806119cd57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806119dd57506119dc82611de6565b5b9050919050565b5f60025f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b8080611a5557505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611b87575f611a64846111e5565b90505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611ace57508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b8015611ae15750611adf818461105a565b155b15611b2357826040517fa9fbf51f000000000000000000000000000000000000000000000000000000008152600401611b1a91906128ad565b60405180910390fd5b8115611b8557838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b8360045f8581526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b611be68383611e4f565b611bf25f848484611667565b505050565b5f611c00611c54565b611c0b848484611f42565b90509392505050565b611c1c610d13565b611c52576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b611c5c610d13565b15611c93576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b5f805f90507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310611cf1577a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008381611ce757611ce661320b565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310611d2e576d04ee2d6d415b85acef81000000008381611d2457611d2361320b565b5b0492506020810190505b662386f26fc100008310611d5d57662386f26fc100008381611d5357611d5261320b565b5b0492506010810190505b6305f5e1008310611d86576305f5e1008381611d7c57611d7b61320b565b5b0492506008810190505b6127108310611dab576127108381611da157611da061320b565b5b0492506004810190505b60648310611dce5760648381611dc457611dc361320b565b5b0492506002810190505b600a8310611ddd576001810190505b80915050919050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ebf575f6040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401611eb691906128ad565b60405180910390fd5b5f611ecb83835f6112da565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611f3d575f6040517f73c6ac6e000000000000000000000000000000000000000000000000000000008152600401611f3491906128ad565b60405180910390fd5b505050565b5f80611f4f85858561205c565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611f9257611f8d84612267565b611fd1565b8473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611fd057611fcf81856122ab565b5b5b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036120125761200d846123f5565b612051565b8473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146120505761204f85856124b5565b5b5b809150509392505050565b5f80612067846119e4565b90505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146120a8576120a7818486612539565b5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614612133576120e75f855f80611a1d565b600160035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825403925050819055505b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16146121b257600160035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8460025f8681526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4809150509392505050565b60088054905060095f8381526020019081526020015f2081905550600881908060018154018082558091505060019003905f5260205f20015f909190919091505550565b5f6122b583610ddc565b90505f60075f8481526020019081526020015f2054905081811461238c575f60065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8481526020019081526020015f205490508060065f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8481526020019081526020015f20819055508160075f8381526020019081526020015f2081905550505b60075f8481526020019081526020015f205f905560065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f205f905550505050565b5f60016008805490506124089190613238565b90505f60095f8481526020019081526020015f205490505f60088381548110612434576124336130a6565b5b905f5260205f20015490508060088381548110612454576124536130a6565b5b905f5260205f2001819055508160095f8381526020019081526020015f208190555060095f8581526020019081526020015f205f9055600880548061249c5761249b61326b565b5b600190038181905f5260205f20015f9055905550505050565b5f60016124c184610ddc565b6124cb9190613238565b90508160065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f20819055508060075f8481526020019081526020015f2081905550505050565b6125448383836125fc565b6125f7575f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036125b857806040517f7e2732890000000000000000000000000000000000000000000000000000000081526004016125af919061293d565b60405180910390fd5b81816040517f177e802f0000000000000000000000000000000000000000000000000000000081526004016125ee92919061307f565b60405180910390fd5b505050565b5f8073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156126b357508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806126745750612673848461105a565b5b806126b257508273ffffffffffffffffffffffffffffffffffffffff1661269a8361126b565b73ffffffffffffffffffffffffffffffffffffffff16145b5b90509392505050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612701816126cd565b811461270b575f80fd5b50565b5f8135905061271c816126f8565b92915050565b5f60208284031215612737576127366126c5565b5b5f6127448482850161270e565b91505092915050565b5f8115159050919050565b6127618161274d565b82525050565b5f60208201905061277a5f830184612758565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6127c282612780565b6127cc818561278a565b93506127dc81856020860161279a565b6127e5816127a8565b840191505092915050565b5f6020820190508181035f83015261280881846127b8565b905092915050565b5f819050919050565b61282281612810565b811461282c575f80fd5b50565b5f8135905061283d81612819565b92915050565b5f60208284031215612858576128576126c5565b5b5f6128658482850161282f565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6128978261286e565b9050919050565b6128a78161288d565b82525050565b5f6020820190506128c05f83018461289e565b92915050565b6128cf8161288d565b81146128d9575f80fd5b50565b5f813590506128ea816128c6565b92915050565b5f8060408385031215612906576129056126c5565b5b5f612913858286016128dc565b92505060206129248582860161282f565b9150509250929050565b61293781612810565b82525050565b5f6020820190506129505f83018461292e565b92915050565b5f805f6060848603121561296d5761296c6126c5565b5b5f61297a868287016128dc565b935050602061298b868287016128dc565b925050604061299c8682870161282f565b9150509250925092565b5f602082840312156129bb576129ba6126c5565b5b5f6129c8848285016128dc565b91505092915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126129f2576129f16129d1565b5b8235905067ffffffffffffffff811115612a0f57612a0e6129d5565b5b602083019150836020820283011115612a2b57612a2a6129d9565b5b9250929050565b5f8060208385031215612a4857612a476126c5565b5b5f83013567ffffffffffffffff811115612a6557612a646126c9565b5b612a71858286016129dd565b92509250509250929050565b612a868161274d565b8114612a90575f80fd5b50565b5f81359050612aa181612a7d565b92915050565b5f8060408385031215612abd57612abc6126c5565b5b5f612aca858286016128dc565b9250506020612adb85828601612a93565b9150509250929050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612b1f826127a8565b810181811067ffffffffffffffff82111715612b3e57612b3d612ae9565b5b80604052505050565b5f612b506126bc565b9050612b5c8282612b16565b919050565b5f67ffffffffffffffff821115612b7b57612b7a612ae9565b5b612b84826127a8565b9050602081019050919050565b828183375f83830152505050565b5f612bb1612bac84612b61565b612b47565b905082815260208101848484011115612bcd57612bcc612ae5565b5b612bd8848285612b91565b509392505050565b5f82601f830112612bf457612bf36129d1565b5b8135612c04848260208601612b9f565b91505092915050565b5f805f8060808587031215612c2557612c246126c5565b5b5f612c32878288016128dc565b9450506020612c43878288016128dc565b9350506040612c548782880161282f565b925050606085013567ffffffffffffffff811115612c7557612c746126c9565b5b612c8187828801612be0565b91505092959194509250565b5f8060408385031215612ca357612ca26126c5565b5b5f612cb085828601612a93565b9250506020612cc185828601612a93565b9150509250929050565b5f8060408385031215612ce157612ce06126c5565b5b5f612cee858286016128dc565b9250506020612cff858286016128dc565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612d4d57607f821691505b602082108103612d6057612d5f612d09565b5b50919050565b7f416c6c6f774c697374204d696e7420697320436c6f73656400000000000000005f82015250565b5f612d9a60188361278a565b9150612da582612d66565b602082019050919050565b5f6020820190508181035f830152612dc781612d8e565b9050919050565b7f596f7520617265206e6f74206f6e2074686520416c6c6f774c697374000000005f82015250565b5f612e02601c8361278a565b9150612e0d82612dce565b602082019050919050565b5f6020820190508181035f830152612e2f81612df6565b9050919050565b7f4e6f7420656e6f7567682066756e6473210000000000000000000000000000005f82015250565b5f612e6a60118361278a565b9150612e7582612e36565b602082019050919050565b5f6020820190508181035f830152612e9781612e5e565b9050919050565b7f416c6c6f774c69737420536f6c64206f757421000000000000000000000000005f82015250565b5f612ed260138361278a565b9150612edd82612e9e565b602082019050919050565b5f6020820190508181035f830152612eff81612ec6565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612f3d82612810565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612f6f57612f6e612f06565b5b600182019050919050565b5f606082019050612f8d5f83018661289e565b612f9a602083018561292e565b612fa7604083018461289e565b949350505050565b7f5075626c6963204d696e7420697320436c6f73656400000000000000000000005f82015250565b5f612fe360158361278a565b9150612fee82612faf565b602082019050919050565b5f6020820190508181035f83015261301081612fd7565b9050919050565b7f546f74616c20537570706c7920536f6c64206f757421000000000000000000005f82015250565b5f61304b60168361278a565b915061305682613017565b602082019050919050565b5f6020820190508181035f8301526130788161303f565b9050919050565b5f6040820190506130925f83018561289e565b61309f602083018461292e565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81905092915050565b5f6130e782612780565b6130f181856130d3565b935061310181856020860161279a565b80840191505092915050565b5f61311882856130dd565b915061312482846130dd565b91508190509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f61315482613130565b61315e818561313a565b935061316e81856020860161279a565b613177816127a8565b840191505092915050565b5f6080820190506131955f83018761289e565b6131a2602083018661289e565b6131af604083018561292e565b81810360608301526131c1818461314a565b905095945050505050565b5f815190506131da816126f8565b92915050565b5f602082840312156131f5576131f46126c5565b5b5f613202848285016131cc565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61324282612810565b915061324d83612810565b925082820390508181111561326557613264612f06565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffdfe697066733a2f2f516d6351746f336b57636f6836573352787250585a55637145456464356a356b535669643842747867484b735066a2646970667358221220c20362f9da37a2766c65c18859bf0ab9b6c256cbd0478acb9f34650d1980b91a64736f6c634300081a0033