0x610160604052348015610010575f5ffd5b50604080518082018252600c81526b4761736c65737352656c617960a01b602080830191909152825180840190935260018352603160f81b9083015290610057825f610100565b61012052610066816001610100565b61014052815160208084019190912060e052815190820120610100524660a0526100f260e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b60805250503060c052610322565b5f60208351101561011b5761011483610132565b905061012c565b816101268482610210565b5060ff90505b92915050565b5f5f829050601f81511115610165578260405163305a27a960e01b815260040161015c91906102ca565b60405180910390fd5b8051610170826102ff565b179392505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806101a057607f821691505b6020821081036101be57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561020b57805f5260205f20601f840160051c810160208510156101e95750805b601f840160051c820191505b81811015610208575f81556001016101f5565b50505b505050565b81516001600160401b0381111561022957610229610178565b61023d81610237845461018c565b846101c4565b6020601f82116001811461026f575f83156102585750848201515b5f19600385901b1c1916600184901b178455610208565b5f84815260208120601f198516915b8281101561029e578785015182556020948501946001909201910161027e565b50848210156102bb57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156101be575f1960209190910360031b1b16919050565b60805160a05160c05160e051610100516101205161014051610dc36103735f395f6104d501525f6104a401525f61078001525f61075801525f6106b301525f6106dd01525f6107070152610dc35ff3fe608060405234801561000f575f5ffd5b506004361061003f575f3560e01c80637ecebe001461004357806384b0196e14610075578063abf25aa414610090575b5f5ffd5b610062610051366004610b05565b60026020525f908152604090205481565b6040519081526020015b60405180910390f35b61007d6100a5565b60405161006c9796959493929190610b53565b6100a361009e366004610c15565b610103565b005b5f6060805f5f5f60606100b661049d565b6100be6104ce565b604080515f808252602082019092527f0f000000000000000000000000000000000000000000000000000000000000009b939a50919850469750309650945092509050565b864211156101585760405162461bcd60e51b815260206004820152601360248201527f5472616e73616374696f6e20657870697265640000000000000000000000000060448201526064015b60405180910390fd5b6001600160a01b038c165f9081526002602052604090205486146101be5760405162461bcd60e51b815260206004820152600d60248201527f496e76616c6964206e6f6e636500000000000000000000000000000000000000604482015260640161014f565b604080517f2018b98eb618ebcdca04d701105587d7df3218d3d790fe31d272885bb0536c8c60208201526001600160a01b03808f1692820192909252818d166060820152908916608082015260a081018b905260c081018a905260e0810187905261010081018890525f9061024c9061012001604051602081830303815290604052805190602001206104fb565b90505f61028e8288888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061054892505050565b90508d6001600160a01b0316816001600160a01b0316146102f15760405162461bcd60e51b815260206004820152601160248201527f496e76616c6964207369676e6174757265000000000000000000000000000000604482015260640161014f565b6001600160a01b038e165f90815260026020526040812080549161031483610d16565b909155505060ff851615158061032957508315155b8061033357508215155b156103ed575f6103438c8e610d2e565b90505f8f90508b6001600160a01b031663d505accf8230858f8c8c8c6040518863ffffffff1660e01b81526004016103bd97969594939291906001600160a01b0397881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b5f604051808303815f87803b1580156103d4575f5ffd5b505af11580156103e6573d5f5f3e3d5ffd5b5050505050505b6104026001600160a01b038b168f8f8f610570565b8a1561041d5761041d6001600160a01b038b168f338e610570565b8c6001600160a01b03168e6001600160a01b03167f2963a3afa10d8134080cccb037384ccc10a6135970444b6764e525ab6f200cae8e8e8e8d604051610485949392919093845260208401929092526001600160a01b03166040830152606082015260800190565b60405180910390a35050505050505050505050505050565b60606104c97f00000000000000000000000000000000000000000000000000000000000000005f6105fe565b905090565b60606104c97f000000000000000000000000000000000000000000000000000000000000000060016105fe565b5f6105426105076106a7565b836040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b92915050565b5f5f5f5f61055686866107d0565b9250925092506105668282610819565b5090949350505050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790526105f8908590610920565b50505050565b606060ff831461061857610611836109a5565b9050610542565b81805461062490610d41565b80601f016020809104026020016040519081016040528092919081815260200182805461065090610d41565b801561069b5780601f106106725761010080835404028352916020019161069b565b820191905f5260205f20905b81548152906001019060200180831161067e57829003601f168201915b50505050509050610542565b5f306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480156106ff57507f000000000000000000000000000000000000000000000000000000000000000046145b1561072957507f000000000000000000000000000000000000000000000000000000000000000090565b6104c9604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b5f5f5f8351604103610807576020840151604085015160608601515f1a6107f9888285856109e2565b955095509550505050610812565b505081515f91506002905b9250925092565b5f82600381111561082c5761082c610d79565b03610835575050565b600182600381111561084957610849610d79565b03610880576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600282600381111561089457610894610d79565b036108ce576040517ffce698f70000000000000000000000000000000000000000000000000000000081526004810182905260240161014f565b60038260038111156108e2576108e2610d79565b0361091c576040517fd78bce0c0000000000000000000000000000000000000000000000000000000081526004810182905260240161014f565b5050565b5f5f60205f8451602086015f885af18061093f576040513d5f823e3d81fd5b50505f513d91508115610956578060011415610963565b6001600160a01b0384163b155b156105f8576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161014f565b60605f6109b183610aaa565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115610a1b57505f91506003905082610aa0565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015610a6c573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116610a9757505f925060019150829050610aa0565b92505f91508190505b9450945094915050565b5f60ff8216601f811115610542576040517fb3512b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b0381168114610b00575f5ffd5b919050565b5f60208284031215610b15575f5ffd5b610b1e82610aea565b9392505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e060208201525f610b8d60e0830189610b25565b8281036040840152610b9f8189610b25565b606084018890526001600160a01b038716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b81811015610bf4578351835260209384019390920191600101610bd6565b50909b9a5050505050505050505050565b803560ff81168114610b00575f5ffd5b5f5f5f5f5f5f5f5f5f5f5f5f6101608d8f031215610c31575f5ffd5b610c3a8d610aea565b9b50610c4860208e01610aea565b9a5060408d0135995060608d01359850610c6460808e01610aea565b975060a08d0135965060c08d0135955060e08d013567ffffffffffffffff811115610c8d575f5ffd5b8d01601f81018f13610c9d575f5ffd5b803567ffffffffffffffff811115610cb3575f5ffd5b8f6020828401011115610cc4575f5ffd5b60209190910195509350610cdb6101008e01610c05565b9b9e9a9d50989b979a96999598509396929591949193505061012082013591610140013590565b634e487b7160e01b5f52601160045260245ffd5b5f60018201610d2757610d27610d02565b5060010190565b8082018082111561054257610542610d02565b600181811c90821680610d5557607f821691505b602082108103610d7357634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52602160045260245ffdfea26469706673582212207686a406a17ff414f61ef2a60c45dfe2a4f8d2daea7bc871651054435c913c5264736f6c634300081c0033