0x60806040526040518060400160405280600581526020017f76616c75650000000000000000000000000000000000000000000000000000008152505f90816100479190610293565b50348015610053575f80fd5b50610362565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806100d457607f821691505b6020821081036100e7576100e6610090565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026101497fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261010e565b610153868361010e565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f61019761019261018d8461016b565b610174565b61016b565b9050919050565b5f819050919050565b6101b08361017d565b6101c46101bc8261019e565b84845461011a565b825550505050565b5f90565b6101d86101cc565b6101e38184846101a7565b505050565b5b81811015610206576101fb5f826101d0565b6001810190506101e9565b5050565b601f82111561024b5761021c816100ed565b610225846100ff565b81016020851015610234578190505b610248610240856100ff565b8301826101e8565b50505b505050565b5f82821c905092915050565b5f61026b5f1984600802610250565b1980831691505092915050565b5f610283838361025c565b9150826002028217905092915050565b61029c82610059565b67ffffffffffffffff8111156102b5576102b4610063565b5b6102bf82546100bd565b6102ca82828561020a565b5f60209050601f8311600181146102fb575f84156102e9578287015190505b6102f38582610278565b86555061035a565b601f198416610309866100ed565b5f5b828110156103305784890151825560018201915060208501945060208101905061030b565b8683101561034d5784890151610349601f89168261025c565b8355505b6001600288020188555050505b505050505050565b611e068061036f5f395ff3fe608060405234801561000f575f80fd5b5060043610610029575f3560e01c8063775c300c1461002d575b5f80fd5b61003561004b565b6040516100429190610169565b60405180910390f35b5f80604051610059906100e2565b604051809103905ff080158015610072573d5f803e3d5ffd5b5090508073ffffffffffffffffffffffffffffffffffffffff1663f2fde38b336040518263ffffffff1660e01b81526004016100ae91906101a2565b5f604051808303815f87803b1580156100c5575f80fd5b505af11580156100d7573d5f803e3d5ffd5b505050508091505090565b611c15806101bc83390190565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f61013161012c610127846100ef565b61010e565b6100ef565b9050919050565b5f61014282610117565b9050919050565b5f61015382610138565b9050919050565b61016381610149565b82525050565b5f60208201905061017c5f83018461015a565b92915050565b5f61018c826100ef565b9050919050565b61019c81610182565b82525050565b5f6020820190506101b55f830184610193565b9291505056fe60806040526040518060400160405280600581526020017f76616c75650000000000000000000000000000000000000000000000000000008152506001908161004891906103db565b506001600455348015610059575f80fd5b50335f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036100cb575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016100c291906104e9565b60405180910390fd5b6100da816100e060201b60201c565b50610502565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061021c57607f821691505b60208210810361022f5761022e6101d8565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026102917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610256565b61029b8683610256565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f6102df6102da6102d5846102b3565b6102bc565b6102b3565b9050919050565b5f819050919050565b6102f8836102c5565b61030c610304826102e6565b848454610262565b825550505050565b5f90565b610320610314565b61032b8184846102ef565b505050565b5b8181101561034e576103435f82610318565b600181019050610331565b5050565b601f8211156103935761036481610235565b61036d84610247565b8101602085101561037c578190505b61039061038885610247565b830182610330565b50505b505050565b5f82821c905092915050565b5f6103b35f1984600802610398565b1980831691505092915050565b5f6103cb83836103a4565b9150826002028217905092915050565b6103e4826101a1565b67ffffffffffffffff8111156103fd576103fc6101ab565b5b6104078254610205565b610412828285610352565b5f60209050601f831160018114610443575f8415610431578287015190505b61043b85826103c0565b8655506104a2565b601f19841661045186610235565b5f5b8281101561047857848901518255600182019150602085019450602081019050610453565b868310156104955784890151610491601f8916826103a4565b8355505b6001600288020188555050505b505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6104d3826104aa565b9050919050565b6104e3816104c9565b82525050565b5f6020820190506104fc5f8301846104da565b92915050565b6117068061050f5f395ff3fe608060405234801561000f575f80fd5b506004361061007b575f3560e01c8063b9ed6fca11610059578063b9ed6fca146100c3578063e6505e1e146100df578063ef1d6ddd1461010f578063f2fde38b1461012d5761007b565b80633f06f6e81461007f578063715018a61461009b5780638da5cb5b146100a5575b5f80fd5b61009960048036038101906100949190610cfe565b610149565b005b6100a36102fd565b005b6100ad610310565b6040516100ba9190610ded565b60405180910390f35b6100dd60048036038101906100d89190610e39565b610337565b005b6100f960048036038101906100f49190610e39565b610515565b6040516101069190610ff9565b60405180910390f35b61011761075c565b6040516101249190611142565b60405180910390f35b6101476004803603810190610142919061118c565b610937565b005b6101516109bb565b60026040518060800160405280600454815260200188888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f82011690508083019250505050505050815260200186868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505081526020018484808060200260200160405190810160405280939291908181526020018383602002808284375f81840152601f19601f82011690508083019250505050505050815250908060018154018082558091505060019003905f5260205f2090600402015f909190919091505f820151815f0155602082015181600101908161027f91906113de565b50604082015181600201908161029591906113de565b5060608201518160030190805190602001906102b2929190610b0a565b50505060016002805490506102c791906114da565b60035f60045481526020019081526020015f208190555060045f8154809291906102f09061150d565b9190505550505050505050565b6103056109bb565b61030e5f610a42565b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61033f6109bb565b5f60035f8381526020019081526020015f205490506002805490508110158061038a5750816002828154811061037857610377611554565b5b905f5260205f2090600402015f015414155b156103cc57816040517ff55dec000000000000000000000000000000000000000000000000000000000081526004016103c39190611590565b60405180910390fd5b600260016002805490506103e091906114da565b815481106103f1576103f0611554565b5b905f5260205f2090600402016002828154811061041157610410611554565b5b905f5260205f2090600402015f820154815f01556001820181600101908161043991906115be565b506002820181600201908161044e91906115be565b506003820181600301908054610465929190610b55565b509050508060035f6002848154811061048157610480611554565b5b905f5260205f2090600402015f015481526020019081526020015f208190555060028054806104b3576104b26116a3565b5b600190038181905f5260205f2090600402015f8082015f9055600182015f6104db9190610ba3565b600282015f6104ea9190610ba3565b600382015f6104f99190610be0565b5050905560035f8381526020019081526020015f205f90555050565b61051d610bfe565b5f60035f8481526020019081526020015f20549050600280549050811015806105685750826002828154811061055657610555611554565b5b905f5260205f2090600402015f015414155b156105aa57826040517ff55dec000000000000000000000000000000000000000000000000000000000081526004016105a19190611590565b60405180910390fd5b600281815481106105be576105bd611554565b5b905f5260205f2090600402016040518060800160405290815f82015481526020016001820180546105ee90611211565b80601f016020809104026020016040519081016040528092919081815260200182805461061a90611211565b80156106655780601f1061063c57610100808354040283529160200191610665565b820191905f5260205f20905b81548152906001019060200180831161064857829003601f168201915b5050505050815260200160028201805461067e90611211565b80601f01602080910402602001604051908101604052809291908181526020018280546106aa90611211565b80156106f55780601f106106cc576101008083540402835291602001916106f5565b820191905f5260205f20905b8154815290600101906020018083116106d857829003601f168201915b505050505081526020016003820180548060200260200160405190810160405280929190818152602001828054801561074b57602002820191905f5260205f20905b815481526020019060010190808311610737575b505050505081525050915050919050565b60606002805480602002602001604051908101604052809291908181526020015f905b8282101561092e578382905f5260205f2090600402016040518060800160405290815f82015481526020016001820180546107b990611211565b80601f01602080910402602001604051908101604052809291908181526020018280546107e590611211565b80156108305780601f1061080757610100808354040283529160200191610830565b820191905f5260205f20905b81548152906001019060200180831161081357829003601f168201915b5050505050815260200160028201805461084990611211565b80601f016020809104026020016040519081016040528092919081815260200182805461087590611211565b80156108c05780601f10610897576101008083540402835291602001916108c0565b820191905f5260205f20905b8154815290600101906020018083116108a357829003601f168201915b505050505081526020016003820180548060200260200160405190810160405280929190818152602001828054801561091657602002820191905f5260205f20905b815481526020019060010190808311610902575b5050505050815250508152602001906001019061077f565b50505050905090565b61093f6109bb565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036109af575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016109a69190610ded565b60405180910390fd5b6109b881610a42565b50565b6109c3610b03565b73ffffffffffffffffffffffffffffffffffffffff166109e1610310565b73ffffffffffffffffffffffffffffffffffffffff1614610a4057610a04610b03565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401610a379190610ded565b60405180910390fd5b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f33905090565b828054828255905f5260205f20908101928215610b44579160200282015b82811115610b43578251825591602001919060010190610b28565b5b509050610b519190610c25565b5090565b828054828255905f5260205f20908101928215610b92575f5260205f209182015b82811115610b91578254825591600101919060010190610b76565b5b509050610b9f9190610c25565b5090565b508054610baf90611211565b5f825580601f10610bc05750610bdd565b601f0160209004905f5260205f2090810190610bdc9190610c25565b5b50565b5080545f8255905f5260205f2090810190610bfb9190610c25565b50565b60405180608001604052805f81526020016060815260200160608152602001606081525090565b5b80821115610c3c575f815f905550600101610c26565b5090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112610c6957610c68610c48565b5b8235905067ffffffffffffffff811115610c8657610c85610c4c565b5b602083019150836001820283011115610ca257610ca1610c50565b5b9250929050565b5f8083601f840112610cbe57610cbd610c48565b5b8235905067ffffffffffffffff811115610cdb57610cda610c4c565b5b602083019150836020820283011115610cf757610cf6610c50565b5b9250929050565b5f805f805f8060608789031215610d1857610d17610c40565b5b5f87013567ffffffffffffffff811115610d3557610d34610c44565b5b610d4189828a01610c54565b9650965050602087013567ffffffffffffffff811115610d6457610d63610c44565b5b610d7089828a01610c54565b9450945050604087013567ffffffffffffffff811115610d9357610d92610c44565b5b610d9f89828a01610ca9565b92509250509295509295509295565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610dd782610dae565b9050919050565b610de781610dcd565b82525050565b5f602082019050610e005f830184610dde565b92915050565b5f819050919050565b610e1881610e06565b8114610e22575f80fd5b50565b5f81359050610e3381610e0f565b92915050565b5f60208284031215610e4e57610e4d610c40565b5b5f610e5b84828501610e25565b91505092915050565b610e6d81610e06565b82525050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610eb582610e73565b610ebf8185610e7d565b9350610ecf818560208601610e8d565b610ed881610e9b565b840191505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f610f178383610e64565b60208301905092915050565b5f602082019050919050565b5f610f3982610ee3565b610f438185610eed565b9350610f4e83610efd565b805f5b83811015610f7e578151610f658882610f0c565b9750610f7083610f23565b925050600181019050610f51565b5085935050505092915050565b5f608083015f830151610fa05f860182610e64565b5060208301518482036020860152610fb88282610eab565b91505060408301518482036040860152610fd28282610eab565b91505060608301518482036060860152610fec8282610f2f565b9150508091505092915050565b5f6020820190508181035f8301526110118184610f8b565b905092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f608083015f8301516110575f860182610e64565b506020830151848203602086015261106f8282610eab565b915050604083015184820360408601526110898282610eab565b915050606083015184820360608601526110a38282610f2f565b9150508091505092915050565b5f6110bb8383611042565b905092915050565b5f602082019050919050565b5f6110d982611019565b6110e38185611023565b9350836020820285016110f585611033565b805f5b85811015611130578484038952815161111185826110b0565b945061111c836110c3565b925060208a019950506001810190506110f8565b50829750879550505050505092915050565b5f6020820190508181035f83015261115a81846110cf565b905092915050565b61116b81610dcd565b8114611175575f80fd5b50565b5f8135905061118681611162565b92915050565b5f602082840312156111a1576111a0610c40565b5b5f6111ae84828501611178565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061122857607f821691505b60208210810361123b5761123a6111e4565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830261129d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82611262565b6112a78683611262565b95508019841693508086168417925050509392505050565b5f819050919050565b5f6112e26112dd6112d884610e06565b6112bf565b610e06565b9050919050565b5f819050919050565b6112fb836112c8565b61130f611307826112e9565b84845461126e565b825550505050565b5f90565b611323611317565b61132e8184846112f2565b505050565b5b81811015611351576113465f8261131b565b600181019050611334565b5050565b601f8211156113965761136781611241565b61137084611253565b8101602085101561137f578190505b61139361138b85611253565b830182611333565b50505b505050565b5f82821c905092915050565b5f6113b65f198460080261139b565b1980831691505092915050565b5f6113ce83836113a7565b9150826002028217905092915050565b6113e782610e73565b67ffffffffffffffff811115611400576113ff6111b7565b5b61140a8254611211565b611415828285611355565b5f60209050601f831160018114611446575f8415611434578287015190505b61143e85826113c3565b8655506114a5565b601f19841661145486611241565b5f5b8281101561147b57848901518255600182019150602085019450602081019050611456565b868310156114985784890151611494601f8916826113a7565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6114e482610e06565b91506114ef83610e06565b9250828203905081811115611507576115066114ad565b5b92915050565b5f61151782610e06565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611549576115486114ad565b5b600182019050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b61158a81610e06565b82525050565b5f6020820190506115a35f830184611581565b92915050565b5f815490506115b781611211565b9050919050565b8181036115cc5750506116a1565b6115d5826115a9565b67ffffffffffffffff8111156115ee576115ed6111b7565b5b6115f88254611211565b611603828285611355565b5f601f831160018114611630575f841561161e578287015490505b61162885826113c3565b86555061169a565b601f19841661163e87611241565b965061164986611241565b5f5b828110156116705784890154825560018201915060018501945060208101905061164b565b8683101561168d5784890154611689601f8916826113a7565b8355505b6001600288020188555050505b5050505050505b565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffdfea2646970667358221220b389bad6b80ccba71d770f79abc41f65c265e61ac157cfcc94ba2be2a8215a1f64736f6c634300081a0033a26469706673582212209eb955b268748ec0ecd743bd19410e45633e3ce43437de03f428286a9343c3f264736f6c634300081a0033