60c060405234801561000f575f80fd5b50604051613f43380380613f43833981810160405281019061003191906101f2565b816040518060400160405280600d81526020017f43726f7373436861696e4e4654000000000000000000000000000000000000008152506040518060400160405280600581526020017f43434e4654000000000000000000000000000000000000000000000000000000815250815f90816100ac919061046a565b5080600190816100bc919061046a565b5050505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610124576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1681525050508073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250505050610539565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6101c182610198565b9050919050565b6101d1816101b7565b81146101db575f80fd5b50565b5f815190506101ec816101c8565b92915050565b5f806040838503121561020857610207610194565b5b5f610215858286016101de565b9250506020610226858286016101de565b9150509250929050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806102ab57607f821691505b6020821081036102be576102bd610267565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026103207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826102e5565b61032a86836102e5565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f61036e61036961036484610342565b61034b565b610342565b9050919050565b5f819050919050565b61038783610354565b61039b61039382610375565b8484546102f1565b825550505050565b5f90565b6103af6103a3565b6103ba81848461037e565b505050565b5b818110156103dd576103d25f826103a7565b6001810190506103c0565b5050565b601f821115610422576103f3816102c4565b6103fc846102d6565b8101602085101561040b578190505b61041f610417856102d6565b8301826103bf565b50505b505050565b5f82821c905092915050565b5f6104425f1984600802610427565b1980831691505092915050565b5f61045a8383610433565b9150826002028217905092915050565b61047382610230565b67ffffffffffffffff81111561048c5761048b61023a565b5b6104968254610294565b6104a18282856103e1565b5f60209050601f8311600181146104d2575f84156104c0578287015190505b6104ca858261044f565b865550610531565b601f1984166104e0866102c4565b5f5b82811015610507578489015182556001820191506020850194506020810190506104e2565b868310156105245784890151610520601f891682610433565b8355505b6001600288020188555050505b505050505050565b60805160a0516139cd6105765f395f8181610b390152610ffd01525f8181610683015281816106c20152818161098401526110af01526139cd5ff3fe60806040526004361061014a575f3560e01c80636a22d8cc116100b5578063b88d4fde1161006e578063b88d4fde1461048e578063c87b56dd146104b6578063d85d3d27146104f2578063e21f37ce1461052e578063e985e9c514610558578063f7a4a003146105945761014a565b80636a22d8cc1461038457806370a08231146103ae578063920a14a7146103ea57806395d89b4114610412578063a22cb4651461043c578063b0fa8444146104645761014a565b80631c6ffa46116101075780631c6ffa461461026a57806323b872dd1461029457806342842e0e146102bc57806349160658146102e45780634e90b9c01461030c5780636352211e146103485761014a565b806301ffc9a71461014e57806306fdde031461018a578063081812fc146101b4578063095ea7b3146101f0578063116191b6146102185780631a98b2e014610242575b5f80fd5b348015610159575f80fd5b50610174600480360381019061016f91906123d3565b6105b0565b6040516101819190612418565b60405180910390f35b348015610195575f80fd5b5061019e6105c1565b6040516101ab91906124a1565b60405180910390f35b3480156101bf575f80fd5b506101da60048036038101906101d591906124f4565b610650565b6040516101e7919061255e565b60405180910390f35b3480156101fb575f80fd5b50610216600480360381019061021191906125a1565b61066b565b005b348015610223575f80fd5b5061022c610681565b604051610239919061263a565b60405180910390f35b34801561024d575f80fd5b506102686004803603810190610263919061273c565b6106a5565b005b348015610275575f80fd5b5061027e6107bd565b60405161028b91906124a1565b60405180910390f35b34801561029f575f80fd5b506102ba60048036038101906102b59190612846565b610849565b005b3480156102c7575f80fd5b506102e260048036038101906102dd9190612846565b610948565b005b3480156102ef575f80fd5b5061030a60048036038101906103059190612896565b610967565b005b348015610317575f80fd5b50610332600480360381019061032d9190612a82565b610a73565b60405161033f91906124a1565b60405180910390f35b348015610353575f80fd5b5061036e600480360381019061036991906124f4565b610b26565b60405161037b919061255e565b60405180910390f35b34801561038f575f80fd5b50610398610b37565b6040516103a59190612ae9565b60405180910390f35b3480156103b9575f80fd5b506103d460048036038101906103cf9190612b02565b610b5b565b6040516103e19190612b3c565b60405180910390f35b3480156103f5575f80fd5b50610410600480360381019061040b9190612b55565b610c11565b005b34801561041d575f80fd5b50610426610c47565b60405161043391906124a1565b60405180910390f35b348015610447575f80fd5b50610462600480360381019061045d9190612bfd565b610cd7565b005b34801561046f575f80fd5b50610478610ced565b60405161048591906124a1565b60405180910390f35b348015610499575f80fd5b506104b460048036038101906104af9190612cd9565b610d79565b005b3480156104c1575f80fd5b506104dc60048036038101906104d791906124f4565b610d96565b6040516104e991906124a1565b60405180910390f35b3480156104fd575f80fd5b5061051860048036038101906105139190612a82565b610da8565b6040516105259190612b3c565b60405180910390f35b348015610539575f80fd5b50610542610ddf565b60405161054f91906124a1565b60405180910390f35b348015610563575f80fd5b5061057e60048036038101906105799190612d59565b610e6b565b60405161058b9190612418565b60405180910390f35b6105ae60048036038101906105a99190612d97565b610ef9565b005b5f6105ba82611160565b9050919050565b60605f80546105cf90612e35565b80601f01602080910402602001604051908101604052809291908181526020018280546105fb90612e35565b80156106465780601f1061061d57610100808354040283529160200191610646565b820191905f5260205f20905b81548152906001019060200180831161062957829003601f168201915b5050505050905090565b5f61065a826111c0565b5061066482611246565b9050919050565b61067d828261067861127f565b611286565b5050565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f85856040516106b6929190612e93565b604051809103902090507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631876eed98c8c8c8c8c878b8b8b6040518a63ffffffff1660e01b815260040161072999989796959493929190612ee6565b6020604051808303815f875af1158015610745573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107699190612f74565b61079f576040517f500c44b400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107b08a8a8a8a8a8a8a8a8a611298565b5050505050505050505050565b600880546107ca90612e35565b80601f01602080910402602001604051908101604052809291908181526020018280546107f690612e35565b80156108415780601f1061081857610100808354040283529160200191610841565b820191905f5260205f20905b81548152906001019060200180831161082457829003601f168201915b505050505081565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036108b9575f6040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016108b0919061255e565b60405180910390fd5b5f6108cc83836108c761127f565b6112a3565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610942578382826040517f64283d7b00000000000000000000000000000000000000000000000000000000815260040161093993929190612f9f565b60405180910390fd5b50505050565b61096283838360405180602001604052805f815250610d79565b505050565b5f8282604051610978929190612e93565b604051809103902090507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635f6970c38989898989876040518763ffffffff1660e01b81526004016109e596959493929190612fd4565b6020604051808303815f875af1158015610a01573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a259190612f74565b610a5b576040517f500c44b400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a698787878787876114ae565b5050505050505050565b600b818051602081018201805184825260208301602085012081835280955050505050505f915090508054610aa790612e35565b80601f0160208091040260200160405190810160405280929190818152602001828054610ad390612e35565b8015610b1e5780601f10610af557610100808354040283529160200191610b1e565b820191905f5260205f20905b815481529060010190602001808311610b0157829003601f168201915b505050505081565b5f610b30826111c0565b9050919050565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610bcc575f6040517f89c62b64000000000000000000000000000000000000000000000000000000008152600401610bc3919061255e565b60405180910390fd5b60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b8181600b8686604051610c25929190613057565b90815260200160405180910390209182610c4092919061320d565b5050505050565b606060018054610c5690612e35565b80601f0160208091040260200160405190810160405280929190818152602001828054610c8290612e35565b8015610ccd5780601f10610ca457610100808354040283529160200191610ccd565b820191905f5260205f20905b815481529060010190602001808311610cb057829003601f168201915b5050505050905090565b610ce9610ce261127f565b8383611595565b5050565b60098054610cfa90612e35565b80601f0160208091040260200160405190810160405280929190818152602001828054610d2690612e35565b8015610d715780601f10610d4857610100808354040283529160200191610d71565b820191905f5260205f20905b815481529060010190602001808311610d5457829003601f168201915b505050505081565b610d84848484610849565b610d90848484846116fe565b50505050565b6060610da1826118b0565b9050919050565b5f80600a5f815480929190610dbc90613307565b919050559050610dcc33826119bb565b610dd681846119d8565b80915050919050565b60078054610dec90612e35565b80601f0160208091040260200160405190810160405280929190818152602001828054610e1890612e35565b8015610e635780601f10610e3a57610100808354040283529160200191610e63565b820191905f5260205f20905b815481529060010190602001808311610e4657829003601f168201915b505050505081565b5f60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b610f0a610f0461127f565b82611a32565b610f49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4090613398565b60405180910390fd5b5f600b8585604051610f5c929190613057565b90815260200160405180910390208054610f7590612e35565b905011610fb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fae90613400565b60405180910390fd5b5f610fc182610d96565b9050610fcc82611a81565b5f838383604051602001610fe29392919061341e565b60405160208183030381529060405290505f3411156110ad577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630c93e3bb34308989600b8c8c60405161104d929190613057565b908152602001604051809103902087336040518863ffffffff1660e01b815260040161107e9695949392919061352d565b5f604051808303818588803b158015611095575f80fd5b505af11580156110a7573d5f803e3d5ffd5b50505050505b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631c92115f8787600b8a8a6040516110fd929190613057565b9081526020016040518091039020856040518563ffffffff1660e01b815260040161112b9493929190613595565b5f604051808303815f87803b158015611142575f80fd5b505af1158015611154573d5f803e3d5ffd5b50505050505050505050565b5f634906490660e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806111b957506111b882611b03565b5b9050919050565b5f806111cb83611be4565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361123d57826040517f7e2732890000000000000000000000000000000000000000000000000000000081526004016112349190612b3c565b60405180910390fd5b80915050919050565b5f60045f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b5f33905090565b6112938383836001611c1d565b505050565b505050505050505050565b5f806112ae84611be4565b90505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146112ef576112ee818486611ddc565b5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461137a5761132e5f855f80611c1d565b600160035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825403925050819055505b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16146113f957600160035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8460025f8681526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4809150509392505050565b600b86866040516114c0929190613057565b90815260200160405180910390206040516114db9190613673565b604051809103902060096040516114f29190613673565b60405180910390201461153a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611531906136d3565b60405180910390fd5b85856008918261154b92919061320d565b5083836009918261155d92919061320d565b505f805f8484810190611570919061372c565b92509250925061158083836119bb565b61158a82826119d8565b505050505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361160557816040517f5b08ba180000000000000000000000000000000000000000000000000000000081526004016115fc919061255e565b60405180910390fd5b8060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516116f19190612418565b60405180910390a3505050565b5f8373ffffffffffffffffffffffffffffffffffffffff163b11156118aa578273ffffffffffffffffffffffffffffffffffffffff1663150b7a0261174161127f565b8685856040518563ffffffff1660e01b81526004016117639493929190613798565b6020604051808303815f875af192505050801561179e57506040513d601f19601f8201168201806040525081019061179b91906137f6565b60015b61181f573d805f81146117cc576040519150601f19603f3d011682016040523d82523d5f602084013e6117d1565b606091505b505f81510361181757836040517f64a0ae9200000000000000000000000000000000000000000000000000000000815260040161180e919061255e565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146118a857836040517f64a0ae9200000000000000000000000000000000000000000000000000000000815260040161189f919061255e565b60405180910390fd5b505b50505050565b60606118bb826111c0565b505f60065f8481526020019081526020015f2080546118d990612e35565b80601f016020809104026020016040519081016040528092919081815260200182805461190590612e35565b80156119505780601f1061192757610100808354040283529160200191611950565b820191905f5260205f20905b81548152906001019060200180831161193357829003601f168201915b505050505090505f611960611e9f565b90505f8151036119745781925050506119b6565b5f825111156119a8578082604051602001611990929190613851565b604051602081830303815290604052925050506119b6565b6119b184611eb5565b925050505b919050565b6119d4828260405180602001604052805f815250611f1b565b5050565b8060065f8481526020019081526020015f2090816119f69190613874565b507ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce782604051611a269190612b3c565b60405180910390a15050565b5f8273ffffffffffffffffffffffffffffffffffffffff16611a5383610b26565b73ffffffffffffffffffffffffffffffffffffffff1603611a775760019050611a7b565b5f90505b92915050565b5f611a8d5f835f6112a3565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611aff57816040517f7e273289000000000000000000000000000000000000000000000000000000008152600401611af69190612b3c565b60405180910390fd5b5050565b5f7f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611bcd57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611bdd5750611bdc82611f36565b5b9050919050565b5f60025f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b8080611c5557505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611d87575f611c64846111c0565b90505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611cce57508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b8015611ce15750611cdf8184610e6b565b155b15611d2357826040517fa9fbf51f000000000000000000000000000000000000000000000000000000008152600401611d1a919061255e565b60405180910390fd5b8115611d8557838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b8360045f8581526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b611de7838383611f9f565b611e9a575f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e5b57806040517f7e273289000000000000000000000000000000000000000000000000000000008152600401611e529190612b3c565b60405180910390fd5b81816040517f177e802f000000000000000000000000000000000000000000000000000000008152600401611e91929190613943565b60405180910390fd5b505050565b606060405180602001604052805f815250905090565b6060611ec0826111c0565b505f611eca611e9f565b90505f815111611ee85760405180602001604052805f815250611f13565b80611ef28461205f565b604051602001611f03929190613851565b6040516020818303038152906040525b915050919050565b611f258383612129565b611f315f8484846116fe565b505050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561205657508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061201757506120168484610e6b565b5b8061205557508273ffffffffffffffffffffffffffffffffffffffff1661203d83611246565b73ffffffffffffffffffffffffffffffffffffffff16145b5b90509392505050565b60605f600161206d8461221c565b0190505f8167ffffffffffffffff81111561208b5761208a61295e565b5b6040519080825280601f01601f1916602001820160405280156120bd5781602001600182028036833780820191505090505b5090505f82602001820190505b60011561211e578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85816121135761211261396a565b5b0494505f85036120ca575b819350505050919050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612199575f6040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401612190919061255e565b60405180910390fd5b5f6121a583835f6112a3565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614612217575f6040517f73c6ac6e00000000000000000000000000000000000000000000000000000000815260040161220e919061255e565b60405180910390fd5b505050565b5f805f90507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310612278577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000838161226e5761226d61396a565b5b0492506040810190505b6d04ee2d6d415b85acef810000000083106122b5576d04ee2d6d415b85acef810000000083816122ab576122aa61396a565b5b0492506020810190505b662386f26fc1000083106122e457662386f26fc1000083816122da576122d961396a565b5b0492506010810190505b6305f5e100831061230d576305f5e10083816123035761230261396a565b5b0492506008810190505b61271083106123325761271083816123285761232761396a565b5b0492506004810190505b60648310612355576064838161234b5761234a61396a565b5b0492506002810190505b600a8310612364576001810190505b80915050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6123b28161237e565b81146123bc575f80fd5b50565b5f813590506123cd816123a9565b92915050565b5f602082840312156123e8576123e7612376565b5b5f6123f5848285016123bf565b91505092915050565b5f8115159050919050565b612412816123fe565b82525050565b5f60208201905061242b5f830184612409565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61247382612431565b61247d818561243b565b935061248d81856020860161244b565b61249681612459565b840191505092915050565b5f6020820190508181035f8301526124b98184612469565b905092915050565b5f819050919050565b6124d3816124c1565b81146124dd575f80fd5b50565b5f813590506124ee816124ca565b92915050565b5f6020828403121561250957612508612376565b5b5f612516848285016124e0565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6125488261251f565b9050919050565b6125588161253e565b82525050565b5f6020820190506125715f83018461254f565b92915050565b6125808161253e565b811461258a575f80fd5b50565b5f8135905061259b81612577565b92915050565b5f80604083850312156125b7576125b6612376565b5b5f6125c48582860161258d565b92505060206125d5858286016124e0565b9150509250929050565b5f819050919050565b5f6126026125fd6125f88461251f565b6125df565b61251f565b9050919050565b5f612613826125e8565b9050919050565b5f61262482612609565b9050919050565b6126348161261a565b82525050565b5f60208201905061264d5f83018461262b565b92915050565b5f819050919050565b61266581612653565b811461266f575f80fd5b50565b5f813590506126808161265c565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126126a7576126a6612686565b5b8235905067ffffffffffffffff8111156126c4576126c361268a565b5b6020830191508360018202830111156126e0576126df61268e565b5b9250929050565b5f8083601f8401126126fc576126fb612686565b5b8235905067ffffffffffffffff8111156127195761271861268a565b5b6020830191508360018202830111156127355761273461268e565b5b9250929050565b5f805f805f805f805f8060c08b8d03121561275a57612759612376565b5b5f6127678d828e01612672565b9a505060208b013567ffffffffffffffff8111156127885761278761237a565b5b6127948d828e01612692565b995099505060408b013567ffffffffffffffff8111156127b7576127b661237a565b5b6127c38d828e01612692565b975097505060608b013567ffffffffffffffff8111156127e6576127e561237a565b5b6127f28d828e016126e7565b955095505060808b013567ffffffffffffffff8111156128155761281461237a565b5b6128218d828e01612692565b935093505060a06128348d828e016124e0565b9150509295989b9194979a5092959850565b5f805f6060848603121561285d5761285c612376565b5b5f61286a8682870161258d565b935050602061287b8682870161258d565b925050604061288c868287016124e0565b9150509250925092565b5f805f805f805f6080888a0312156128b1576128b0612376565b5b5f6128be8a828b01612672565b975050602088013567ffffffffffffffff8111156128df576128de61237a565b5b6128eb8a828b01612692565b9650965050604088013567ffffffffffffffff81111561290e5761290d61237a565b5b61291a8a828b01612692565b9450945050606088013567ffffffffffffffff81111561293d5761293c61237a565b5b6129498a828b016126e7565b925092505092959891949750929550565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61299482612459565b810181811067ffffffffffffffff821117156129b3576129b261295e565b5b80604052505050565b5f6129c561236d565b90506129d1828261298b565b919050565b5f67ffffffffffffffff8211156129f0576129ef61295e565b5b6129f982612459565b9050602081019050919050565b828183375f83830152505050565b5f612a26612a21846129d6565b6129bc565b905082815260208101848484011115612a4257612a4161295a565b5b612a4d848285612a06565b509392505050565b5f82601f830112612a6957612a68612686565b5b8135612a79848260208601612a14565b91505092915050565b5f60208284031215612a9757612a96612376565b5b5f82013567ffffffffffffffff811115612ab457612ab361237a565b5b612ac084828501612a55565b91505092915050565b5f612ad382612609565b9050919050565b612ae381612ac9565b82525050565b5f602082019050612afc5f830184612ada565b92915050565b5f60208284031215612b1757612b16612376565b5b5f612b248482850161258d565b91505092915050565b612b36816124c1565b82525050565b5f602082019050612b4f5f830184612b2d565b92915050565b5f805f8060408587031215612b6d57612b6c612376565b5b5f85013567ffffffffffffffff811115612b8a57612b8961237a565b5b612b9687828801612692565b9450945050602085013567ffffffffffffffff811115612bb957612bb861237a565b5b612bc587828801612692565b925092505092959194509250565b612bdc816123fe565b8114612be6575f80fd5b50565b5f81359050612bf781612bd3565b92915050565b5f8060408385031215612c1357612c12612376565b5b5f612c208582860161258d565b9250506020612c3185828601612be9565b9150509250929050565b5f67ffffffffffffffff821115612c5557612c5461295e565b5b612c5e82612459565b9050602081019050919050565b5f612c7d612c7884612c3b565b6129bc565b905082815260208101848484011115612c9957612c9861295a565b5b612ca4848285612a06565b509392505050565b5f82601f830112612cc057612cbf612686565b5b8135612cd0848260208601612c6b565b91505092915050565b5f805f8060808587031215612cf157612cf0612376565b5b5f612cfe8782880161258d565b9450506020612d0f8782880161258d565b9350506040612d20878288016124e0565b925050606085013567ffffffffffffffff811115612d4157612d4061237a565b5b612d4d87828801612cac565b91505092959194509250565b5f8060408385031215612d6f57612d6e612376565b5b5f612d7c8582860161258d565b9250506020612d8d8582860161258d565b9150509250929050565b5f805f8060608587031215612daf57612dae612376565b5b5f85013567ffffffffffffffff811115612dcc57612dcb61237a565b5b612dd887828801612692565b94509450506020612deb8782880161258d565b9250506040612dfc878288016124e0565b91505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612e4c57607f821691505b602082108103612e5f57612e5e612e08565b5b50919050565b5f81905092915050565b5f612e7a8385612e65565b9350612e87838584612a06565b82840190509392505050565b5f612e9f828486612e6f565b91508190509392505050565b612eb481612653565b82525050565b5f612ec5838561243b565b9350612ed2838584612a06565b612edb83612459565b840190509392505050565b5f60c082019050612ef95f83018c612eab565b8181036020830152612f0c818a8c612eba565b90508181036040830152612f2181888a612eba565b9050612f306060830187612eab565b8181036080830152612f43818587612eba565b9050612f5260a0830184612b2d565b9a9950505050505050505050565b5f81519050612f6e81612bd3565b92915050565b5f60208284031215612f8957612f88612376565b5b5f612f9684828501612f60565b91505092915050565b5f606082019050612fb25f83018661254f565b612fbf6020830185612b2d565b612fcc604083018461254f565b949350505050565b5f608082019050612fe75f830189612eab565b8181036020830152612ffa818789612eba565b9050818103604083015261300f818587612eba565b905061301e6060830184612eab565b979650505050505050565b5f81905092915050565b5f61303e8385613029565b935061304b838584612a06565b82840190509392505050565b5f613063828486613033565b91508190509392505050565b5f82905092915050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026130d57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261309a565b6130df868361309a565b95508019841693508086168417925050509392505050565b5f61311161310c613107846124c1565b6125df565b6124c1565b9050919050565b5f819050919050565b61312a836130f7565b61313e61313682613118565b8484546130a6565b825550505050565b5f90565b613152613146565b61315d818484613121565b505050565b5b81811015613180576131755f8261314a565b600181019050613163565b5050565b601f8211156131c55761319681613079565b61319f8461308b565b810160208510156131ae578190505b6131c26131ba8561308b565b830182613162565b50505b505050565b5f82821c905092915050565b5f6131e55f19846008026131ca565b1980831691505092915050565b5f6131fd83836131d6565b9150826002028217905092915050565b613217838361306f565b67ffffffffffffffff8111156132305761322f61295e565b5b61323a8254612e35565b613245828285613184565b5f601f831160018114613272575f8415613260578287013590505b61326a85826131f2565b8655506132d1565b601f19841661328086613079565b5f5b828110156132a757848901358255600182019150602085019450602081019050613282565b868310156132c457848901356132c0601f8916826131d6565b8355505b6001600288020188555050505b50505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613311826124c1565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613343576133426132da565b5b600182019050919050565b7f4e6f7420617070726f766564206f72206f776e657200000000000000000000005f82015250565b5f61338260158361243b565b915061338d8261334e565b602082019050919050565b5f6020820190508181035f8301526133af81613376565b9050919050565b7f44657374696e6174696f6e20636861696e206e6f7420747275737465640000005f82015250565b5f6133ea601d8361243b565b91506133f5826133b6565b602082019050919050565b5f6020820190508181035f830152613417816133de565b9050919050565b5f6060820190506134315f83018661254f565b61343e6020830185612b2d565b81810360408301526134508184612469565b9050949350505050565b5f815461346681612e35565b613470818661243b565b9450600182165f811461348a57600181146134a0576134d2565b60ff1983168652811515602002860193506134d2565b6134a985613079565b5f5b838110156134ca578154818901526001820191506020810190506134ab565b808801955050505b50505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f6134ff826134db565b61350981856134e5565b935061351981856020860161244b565b61352281612459565b840191505092915050565b5f60a0820190506135405f83018961254f565b8181036020830152613553818789612eba565b90508181036040830152613567818661345a565b9050818103606083015261357b81856134f5565b905061358a608083018461254f565b979650505050505050565b5f6060820190508181035f8301526135ae818688612eba565b905081810360208301526135c2818561345a565b905081810360408301526135d681846134f5565b905095945050505050565b5f819050815f5260205f209050919050565b5f81546135ff81612e35565b6136098186612e65565b9450600182165f811461362357600181146136385761366a565b60ff198316865281151582028601935061366a565b613641856135e1565b5f5b8381101561366257815481890152600182019150602081019050613643565b838801955050505b50505092915050565b5f61367e82846135f3565b915081905092915050565b7f4e6f742061207472757374656420736f757263650000000000000000000000005f82015250565b5f6136bd60148361243b565b91506136c882613689565b602082019050919050565b5f6020820190508181035f8301526136ea816136b1565b9050919050565b5f6136fb8261251f565b9050919050565b61370b816136f1565b8114613715575f80fd5b50565b5f8135905061372681613702565b92915050565b5f805f6060848603121561374357613742612376565b5b5f61375086828701613718565b9350506020613761868287016124e0565b925050604084013567ffffffffffffffff8111156137825761378161237a565b5b61378e86828701612a55565b9150509250925092565b5f6080820190506137ab5f83018761254f565b6137b8602083018661254f565b6137c56040830185612b2d565b81810360608301526137d781846134f5565b905095945050505050565b5f815190506137f0816123a9565b92915050565b5f6020828403121561380b5761380a612376565b5b5f613818848285016137e2565b91505092915050565b5f61382b82612431565b6138358185613029565b935061384581856020860161244b565b80840191505092915050565b5f61385c8285613821565b91506138688284613821565b91508190509392505050565b61387d82612431565b67ffffffffffffffff8111156138965761389561295e565b5b6138a08254612e35565b6138ab828285613184565b5f60209050601f8311600181146138dc575f84156138ca578287015190505b6138d485826131f2565b86555061393b565b601f1984166138ea86613079565b5f5b82811015613911578489015182556001820191506020850194506020810190506138ec565b8683101561392e578489015161392a601f8916826131d6565b8355505b6001600288020188555050505b505050505050565b5f6040820190506139565f83018561254f565b6139636020830184612b2d565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffdfea26469706673582212208820741ecc88efd34c5d5d40a1d5074d0362944fc660c5bec9a0465ad0c5b2b464736f6c63430008190033000000000000000000000000e432150cce91c13a887f7d836923d5597add8e31000000000000000000000000be406f0189a0b4cf3a05c286473d23791dd44cc6