0x60806040523480156200001157600080fd5b506040516200214f3803806200214f833981810160405281019062000037919062000118565b81600281905550806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610258600360006101000a81548163ffffffff021916908363ffffffff1602179055505050620001d6565b600081519050620000fb81620001a2565b92915050565b6000815190506200011281620001bc565b92915050565b600080604083850312156200013257620001316200019d565b5b6000620001428582860162000101565b92505060206200015585828601620000ea565b9150509250929050565b60006200016c826200017d565b9050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b620001ad816200015f565b8114620001b957600080fd5b50565b620001c78162000173565b8114620001d357600080fd5b50565b611f6980620001e66000396000f3fe6080604052600436106100dd5760003560e01c806385e685311161007f578063b111288511610059578063b11128851461029d578063b6a5d7de146102c6578063c6326dd0146102ef578063e255bc4d1461031a576100dd565b806385e685311461021a578063a5a0d59114610243578063a8f0b76d1461025f576100dd565b8063392f37e9116100bb578063392f37e91461015d5780635745ae28146101885780635d38bbc7146101c65780635e0edd30146101ef576100dd565b806310700844146100e257806310ee1b221461010b5780632ce315e114610134575b600080fd5b3480156100ee57600080fd5b506101096004803603810190610104919061132c565b610345565b005b34801561011757600080fd5b50610132600480360381019061012d91906112e3565b610468565b005b34801561014057600080fd5b5061015b6004803603810190610156919061159d565b61063c565b005b34801561016957600080fd5b50610172610737565b60405161017f91906117d6565b60405180910390f35b34801561019457600080fd5b506101af60048036038101906101aa91906112b6565b61073d565b6040516101bd9291906117f1565b60405180910390f35b3480156101d257600080fd5b506101ed60048036038101906101e8919061142f565b6107f6565b005b3480156101fb57600080fd5b506102046108f4565b60405161021191906119d2565b60405180910390f35b34801561022657600080fd5b50610241600480360381019061023c91906112b6565b61090a565b005b61025d600480360381019061025891906114fe565b610a86565b005b34801561026b57600080fd5b506102866004803603810190610281919061132c565b610cf3565b6040516102949291906117ad565b60405180910390f35b3480156102a957600080fd5b506102c460048036038101906102bf91906113a4565b610d5d565b005b3480156102d257600080fd5b506102ed60048036038101906102e891906112b6565b610ef7565b005b3480156102fb57600080fd5b50610304611105565b6040516103119190611777565b60405180910390f35b34801561032657600080fd5b5061032f61112b565b60405161033c9190611792565b60405180910390f35b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103cc9061193d565b60405180910390fd5b60016004836040516103e79190611760565b9081526020016040518091039020826040516104039190611760565b908152602001604051809103902060000160006101000a81548160ff0219169083151502179055507f6b83df92bb58edfbb02e4199aa14383cc81d72da25771c20422b7bb7593d0b73828260405161045c929190611821565b60405180910390a15050565b6000600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000180546104b790611bdf565b90501480156105145750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b801561056c575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b6105ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a2906118fd565b60405180910390fd5b80600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001908051906020019061060192919061114f565b507f384b79324edad69b6a420b1328c852f2e169ee8d77c5c6011b1fe6aa0f7cd6c3336040516106319190611777565b60405180910390a150565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c1906118bd565b60405180910390fd5b80600360006101000a81548163ffffffff021916908363ffffffff1602179055507f02b9885e40190bbcf75df6c62c2cfe7e97550b4f15591cecf828002580ec6cc4600360009054906101000a900463ffffffff1660405161072c91906119d2565b60405180910390a150565b60025481565b600560205280600052604060002060009150905080600001805461076090611bdf565b80601f016020809104026020016040519081016040528092919081815260200182805461078c90611bdf565b80156107d95780601f106107ae576101008083540402835291602001916107d9565b820191906000526020600020905b8154815290600101906020018083116107bc57829003601f168201915b5050505050908060010160009054906101000a900460ff16905082565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610886576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087d9061193d565b60405180910390fd5b836040516108949190611760565b6040518091039020856040516108aa9190611760565b60405180910390207f4e9f3125e3fe7fe25ad60fb9c2cc7d0993c434ce0aef4c3b772292f459933d748585856040516108e59392919061195d565b60405180910390a35050505050565b600360009054906101000a900463ffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610998576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098f906118bd565b60405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900460ff166109f157600080fd5b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055507f1b9b72fde9da721e70e6aca3b0cf4cbe73e82765ef1f280157740376531bfdd881604051610a7b9190611777565b60405180910390a150565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900460ff16610b15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0c9061189d565b60405180910390fd5b6000600483604051610b279190611760565b908152602001604051809103902082604051610b439190611760565b90815260200160405180910390206001015414158015610bc357506236ee808484610b6e9190611af5565b610b789190611a6a565b600483604051610b889190611760565b908152602001604051809103902082604051610ba49190611760565b908152602001604051809103902060010154610bc09190611a9b565b34145b8015610bdb57506103e842610bd89190611a9b565b84105b8015610bf457506103e842610bf09190611a9b565b8311155b8015610bff57508284105b610c0857600080fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015610c6e573d6000803e3d6000fd5b503373ffffffffffffffffffffffffffffffffffffffff1681604051610c949190611760565b604051809103902083604051610caa9190611760565b60405180910390207fda13e48f802e3b712b0f78580f01bb2622f79dd88d6be249eb47755a06a37e1f878734604051610ce59392919061199b565b60405180910390a450505050565b60048280516020810182018051848252602083016020850120818352809550505050505081805160208101820180518482526020830160208501208183528095505050505050600091509150508060000160009054906101000a900460ff16908060010154905082565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610deb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de2906118bd565b60405180910390fd5b600483604051610dfb9190611760565b908152602001604051809103902082604051610e179190611760565b908152602001604051809103902060000160009054906101000a900460ff16610e75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6c9061191d565b60405180910390fd5b80600484604051610e869190611760565b908152602001604051809103902083604051610ea29190611760565b9081526020016040518091039020600101819055507f3502c5037cedb0fdeb2edfb7b6c2326f8e3395e69e672d3262ec0c5fca7d7e0d838383604051610eea93929190611858565b60405180910390a1505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7c906118bd565b60405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900460ff1615801561103157506000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001805461102c90611bdf565b905014155b611070576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611067906118dd565b60405180910390fd5b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055507fdeb5c31899474fe8c086c95ff9344480d19365676a6a1d22d37bb8e3e7c0ef18816040516110fa9190611777565b60405180910390a150565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b82805461115b90611bdf565b90600052602060002090601f01602090048101928261117d57600085556111c4565b82601f1061119657805160ff19168380011785556111c4565b828001600101855582156111c4579182015b828111156111c35782518255916020019190600101906111a8565b5b5090506111d191906111d5565b5090565b5b808211156111ee5760008160009055506001016111d6565b5090565b600061120561120084611a12565b6119ed565b90508281526020810184848401111561122157611220611d03565b5b61122c848285611b9d565b509392505050565b60008135905061124381611ed7565b92915050565b60008135905061125881611eee565b92915050565b600082601f83011261127357611272611cfe565b5b81356112838482602086016111f2565b91505092915050565b60008135905061129b81611f05565b92915050565b6000813590506112b081611f1c565b92915050565b6000602082840312156112cc576112cb611d0d565b5b60006112da84828501611234565b91505092915050565b6000602082840312156112f9576112f8611d0d565b5b600082013567ffffffffffffffff81111561131757611316611d08565b5b6113238482850161125e565b91505092915050565b6000806040838503121561134357611342611d0d565b5b600083013567ffffffffffffffff81111561136157611360611d08565b5b61136d8582860161125e565b925050602083013567ffffffffffffffff81111561138e5761138d611d08565b5b61139a8582860161125e565b9150509250929050565b6000806000606084860312156113bd576113bc611d0d565b5b600084013567ffffffffffffffff8111156113db576113da611d08565b5b6113e78682870161125e565b935050602084013567ffffffffffffffff81111561140857611407611d08565b5b6114148682870161125e565b92505060406114258682870161128c565b9150509250925092565b600080600080600060a0868803121561144b5761144a611d0d565b5b600086013567ffffffffffffffff81111561146957611468611d08565b5b6114758882890161125e565b955050602086013567ffffffffffffffff81111561149657611495611d08565b5b6114a28882890161125e565b94505060406114b38882890161128c565b93505060606114c488828901611249565b925050608086013567ffffffffffffffff8111156114e5576114e4611d08565b5b6114f18882890161125e565b9150509295509295909350565b6000806000806080858703121561151857611517611d0d565b5b60006115268782880161128c565b94505060206115378782880161128c565b935050604085013567ffffffffffffffff81111561155857611557611d08565b5b6115648782880161125e565b925050606085013567ffffffffffffffff81111561158557611584611d08565b5b6115918782880161125e565b91505092959194509250565b6000602082840312156115b3576115b2611d0d565b5b60006115c1848285016112a1565b91505092915050565b6115d381611b3b565b82525050565b6115e281611b29565b82525050565b6115f181611b4d565b82525050565b61160081611b59565b82525050565b600061161182611a43565b61161b8185611a4e565b935061162b818560208601611bac565b61163481611d12565b840191505092915050565b600061164a82611a43565b6116548185611a5f565b9350611664818560208601611bac565b80840191505092915050565b600061167d602983611a4e565b915061168882611d23565b604082019050919050565b60006116a0602d83611a4e565b91506116ab82611d72565b604082019050919050565b60006116c3602b83611a4e565b91506116ce82611dc1565b604082019050919050565b60006116e6602c83611a4e565b91506116f182611e10565b604082019050919050565b6000611709601583611a4e565b915061171482611e5f565b602082019050919050565b600061172c602783611a4e565b915061173782611e88565b604082019050919050565b61174b81611b83565b82525050565b61175a81611b8d565b82525050565b600061176c828461163f565b915081905092915050565b600060208201905061178c60008301846115d9565b92915050565b60006020820190506117a760008301846115ca565b92915050565b60006040820190506117c260008301856115e8565b6117cf6020830184611742565b9392505050565b60006020820190506117eb60008301846115f7565b92915050565b6000604082019050818103600083015261180b8185611606565b905061181a60208301846115e8565b9392505050565b6000604082019050818103600083015261183b8185611606565b9050818103602083015261184f8184611606565b90509392505050565b600060608201905081810360008301526118728186611606565b905081810360208301526118868185611606565b90506118956040830184611742565b949350505050565b600060208201905081810360008301526118b681611670565b9050919050565b600060208201905081810360008301526118d681611693565b9050919050565b600060208201905081810360008301526118f6816116b6565b9050919050565b60006020820190508181036000830152611916816116d9565b9050919050565b60006020820190508181036000830152611936816116fc565b9050919050565b600060208201905081810360008301526119568161171f565b9050919050565b60006060820190506119726000830186611742565b61197f60208301856115f7565b81810360408301526119918184611606565b9050949350505050565b60006060820190506119b06000830186611742565b6119bd6020830185611742565b6119ca6040830184611742565b949350505050565b60006020820190506119e76000830184611751565b92915050565b60006119f7611a08565b9050611a038282611c11565b919050565b6000604051905090565b600067ffffffffffffffff821115611a2d57611a2c611ccf565b5b611a3682611d12565b9050602081019050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b6000611a7582611b83565b9150611a8083611b83565b925082611a9057611a8f611c71565b5b828204905092915050565b6000611aa682611b83565b9150611ab183611b83565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611aea57611ae9611c42565b5b828202905092915050565b6000611b0082611b83565b9150611b0b83611b83565b925082821015611b1e57611b1d611c42565b5b828203905092915050565b6000611b3482611b63565b9050919050565b6000611b4682611b63565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b82818337600083830152505050565b60005b83811015611bca578082015181840152602081019050611baf565b83811115611bd9576000848401525b50505050565b60006002820490506001821680611bf757607f821691505b60208210811415611c0b57611c0a611ca0565b5b50919050565b611c1a82611d12565b810181811067ffffffffffffffff82111715611c3957611c38611ccf565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4f6e6c79206120737562736372696265722063616e2063616c6c20746869732060008201527f66756e6374696f6e2e0000000000000000000000000000000000000000000000602082015250565b7f4f6e6c792074686520646576696365206f776e65722063616e2063616c6c207460008201527f6869732066756e6374696f6e2e00000000000000000000000000000000000000602082015250565b7f4f6e6c79206e65772073756273637269626572732063616e206265206772616e60008201527f746564206163636573732e000000000000000000000000000000000000000000602082015250565b7f4f6e6c79206e65772073756273637269626572732063616e2063616c6c20746860008201527f69732066756e6374696f6e2e0000000000000000000000000000000000000000602082015250565b7f53747265616d20646f6573206e6f742065786973740000000000000000000000600082015250565b7f4f6e6c7920746865206465766963652063616e2063616c6c207468697320667560008201527f6e6374696f6e2e00000000000000000000000000000000000000000000000000602082015250565b611ee081611b29565b8114611eeb57600080fd5b50565b611ef781611b59565b8114611f0257600080fd5b50565b611f0e81611b83565b8114611f1957600080fd5b50565b611f2581611b8d565b8114611f3057600080fd5b5056fea264697066735822122019b09453eef6a98e6fa6b5b211e7bb741a6e2d4333a3631d793f2f71337ee11064736f6c63430008070033