0x60806040523480156200001157600080fd5b5060405162001912380380620019128339810180604052810190808051906020019092919080518201929190602001805190602001909291905050508282816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060019080519060200190620000a792919062000135565b50505033600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050620001e4565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200017857805160ff1916838001178555620001a9565b82800160010185558215620001a9579182015b82811115620001a85782518255916020019190600101906200018b565b5b509050620001b89190620001bc565b5090565b620001e191905b80821115620001dd576000816000905550600101620001c3565b5090565b90565b61171e80620001f46000396000f3006080604052600436106100d0576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806302c891c5146100d55780630c7ac7b6146101105780630fa8c7ce146101a05780632c6bb044146101cb578063311a6c561461023c5780633f37773f146102735780636cc6cde1146102f6578063888dcad31461034d578063a22352e21461039a578063a829c3d1146103df578063bc8802a21461040d578063cc3ea6fa14610464578063d521aa9f146104ad578063d5f39488146104f6575b600080fd5b3480156100e157600080fd5b5061010e60048036038101908080359060200190820180359060200191909192939192939050505061054d565b005b34801561011c57600080fd5b506101256106d1565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561016557808201518184015260208101905061014a565b50505050905090810190601f1680156101925780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101ac57600080fd5b506101b561076f565b6040518082815260200191505060405180910390f35b3480156101d757600080fd5b506101fa6004803603810190808035600019169060200190929190505050610793565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561024857600080fd5b5061027160048036038101908080359060200190929190803590602001909291905050506107c6565b005b34801561027f57600080fd5b506102f460048036038101908080356000191690602001909291908035600019169060200190929190803560001916906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080351515906020019092919050505061090d565b005b34801561030257600080fd5b5061030b610de6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561035957600080fd5b5061037c6004803603810190808035600019169060200190929190505050610e0b565b60405180826000191660001916815260200191505060405180910390f35b3480156103a657600080fd5b506103c96004803603810190808035600019169060200190929190505050610e23565b6040518082815260200191505060405180910390f35b61040b600480360381019080803560001916906020019092919080359060200190929190505050610f7a565b005b34801561041957600080fd5b50610422611316565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561047057600080fd5b50610493600480360381019080803560001916906020019092919050505061133c565b604051808215151515815260200191505060405180910390f35b3480156104b957600080fd5b506104d86004803603810190808035906020019092919050505061135c565b60405180826000191660001916815260200191505060405180910390f35b34801561050257600080fd5b5061050b611374565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610638576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260388152602001807f43616e206f6e6c792062652063616c6c6564206f6e636520627920746865206481526020017f65706c6f796572206f662074686520636f6e74726163742e000000000000000081525060400191505060405180910390fd5b6000600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060007f61606860eb6c87306811e2695215385101daab53bd6ab4e9f9049aead9363c7d8383604051808060200182810382528484828181526020019250808284378201915050935050505060405180910390a25050565b60018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156107675780601f1061073c57610100808354040283529160200191610767565b820191906000526020600020905b81548152906001019060200180831161074a57829003601f168201915b505050505081565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81565b60056020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156108b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f43616e206f6e6c792062652063616c6c6564206279207468652061726269747281526020017f61746f722e00000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b813373ffffffffffffffffffffffffffffffffffffffff167f394027a5fa6e098a1191094d1719d6929b9abc535fcc0c8f448d6a4e75622276836040518082815260200191505060405180910390a3610909828261139a565b5050565b848484848460405180866000191660001916815260200185600019166000191681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140182151515157f010000000000000000000000000000000000000000000000000000000000000002815260010195505050505050604051809103902060001916600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166382ffa9f7886040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b158015610a5157600080fd5b505af1158015610a65573d6000803e3d6000fd5b505050506040513d6020811015610a7b57600080fd5b810190808051906020019092919050505060001916141515610b77576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260638152602001807f5468652068617368206f662074686520686973746f727920706172616d65746581526020017f727320737570706c69656420646f6573206e6f74206d6174636820746865206f81526020017f6e652073746f72656420696e20746865205265616c6974696f20636f6e74726181526020017f63742e000000000000000000000000000000000000000000000000000000000081525060800191505060405180910390fd5b60076000876000191660001916815260200190815260200160002060009054906101000a900460ff161515610c3a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f5468652061726269747261746f7220686173206e6f742072756c65642079657481526020017f2e0000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fe92049d87600660008a6000191660001916815260200190815260200160002054610ca28a89898989611468565b6040518463ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180846000191660001916815260200183600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019350505050600060405180830381600087803b158015610d3e57600080fd5b505af1158015610d52573d6000803e3d6000fd5b5050505060056000876000191660001916815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556006600087600019166000191681526020019081526020016000206000905560076000876000191660001916815260200190815260200160002060006101000a81549060ff0219169055505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60066020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f7434ea960016040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015610f185780601f10610eed57610100808354040283529160200191610f18565b820191906000526020600020905b815481529060010190602001808311610efb57829003601f168201915b505092505050602060405180830381600087803b158015610f3857600080fd5b505af1158015610f4c573d6000803e3d6000fd5b505050506040513d6020811015610f6257600080fd5b81019080805190602001909291905050509050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c13517e1347ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe60016040518463ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180838152602001806020018281038252838181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156110975780601f1061106c57610100808354040283529160200191611097565b820191906000526020600020905b81548152906001019060200180831161107a57829003601f168201915b505093505050506020604051808303818588803b1580156110b757600080fd5b505af11580156110cb573d6000803e3d6000fd5b50505050506040513d60208110156110e257600080fd5b81019080805190602001909291905050509050826004600083815260200190815260200160002081600019169055503360056000856000191660001916815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f6a94ecb8433856040518463ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018084600019166000191681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b15801561124057600080fd5b505af1158015611254573d6000803e3d6000fd5b50505050806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f74baab670a4015ab2f1b467c5252a96141a2573f2908e58a92081e80d3cfde3d600080604051808381526020018281526020019250505060405180910390a3807fcbb827f06aed2dd1e157f8e6b29f32604bc4e88360964014c4d4ad259f8d3fa88460405180826000191660001916815260200191505060405180910390a2505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60076020528060005260406000206000915054906101000a900460ff1681565b60046020528060005260406000206000915090505481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600081146113ab57600181036113cd565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b60010260066000600460008681526020019081526020016000205460001916600019168152602001908152602001600020816000191690555060016007600060046000868152602001908152602001600020546000191660001916815260200190815260200160002060006101000a81548160ff02191690831515021790555060046000838152602001908152602001600020600090555050565b6000806000806000806000891415611483576000935061166c565b861561166357600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663839df9458b6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050606060405180830381600087803b15801561152257600080fd5b505af1158015611536573d6000803e3d6000fd5b505050506040513d606081101561154c57600080fd5b810190808051906020019092919080519060200190929190805190602001909291905050509250925092508115611589578094506001935061165e565b4263ffffffff168363ffffffff1611151515611659576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260598152602001807f4172626974726174696f6e2063616e6e6f7420626520646f6e6520756e74696c81526020017f20746865206c61737420616e73776572657220686173206861642074696d652081526020017f746f2072657665616c2069747320636f6d6d69746d656e742e0000000000000081525060600191505060405180910390fd5b600093505b61166b565b899450600193505b5b83801561169b5750600660008c6000191660001916815260200190815260200160002054600019168560001916145b6116e057600560008c6000191660001916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166116e2565b875b95505050505050959450505050505600a165627a7a723058207a1a750d8882511f1c2599998b821fe88db079148e4df21e33d14bf6acc6f6220029000000000000000000000000988b3a538b618c7a603e1c11ab82cd16dbe2806900000000000000000000000000000000000000000000000000000000000000600000000000000000000000005b7dd1e86623548af054a4985f7fc8ccbb554e2c00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001f