6080604052604051806060016040528060368152602001620041d3603691396009908051906020019062000035929190620002d4565b506040518060400160405280600581526020017f2e6a736f6e000000000000000000000000000000000000000000000000000000815250600a908051906020019062000083929190620002d4565b506040518060600160405280603581526020016200419e60359139600b9080519060200190620000b5929190620002d4565b506005600c60006101000a81548160ff021916908360ff16021790555066138a388a43c000600d556001600e60006101000a81548160ff0219169083151502179055506000600e60016101000a81548160ff0219169083151502179055503480156200012057600080fd5b506040518060400160405280601481526020017f596f757220446164206f6e20457468657265756d0000000000000000000000008152506040518060400160405280600481526020017f59444f45000000000000000000000000000000000000000000000000000000008152508160029080519060200190620001a5929190620002d4565b508060039080519060200190620001be929190620002d4565b50620001cf620001fd60201b60201c565b6000819055505050620001f7620001eb6200020660201b60201c565b6200020e60201b60201c565b620003e9565b60006001905090565b600033905090565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b828054620002e29062000384565b90600052602060002090601f01602090048101928262000306576000855562000352565b82601f106200032157805160ff191683800117855562000352565b8280016001018555821562000352579182015b828111156200035157825182559160200191906001019062000334565b5b50905062000361919062000365565b5090565b5b808211156200038057600081600090555060010162000366565b5090565b600060028204905060018216806200039d57607f821691505b60208210811415620003b457620003b3620003ba565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b613da580620003f96000396000f3fe6080604052600436106101ee5760003560e01c80636352211e1161010d578063a475b5dd116100a0578063d5abeb011161006f578063d5abeb011461068e578063dbd37cf4146106b9578063e985e9c5146106f6578063eef440af14610733578063f2fde38b1461075e576101ee565b8063a475b5dd146105d2578063b88d4fde146105fd578063bc951b9114610626578063c87b56dd14610651576101ee565b80637ec4a659116100dc5780637ec4a6591461052a5780638da5cb5b1461055357806395d89b411461057e578063a22cb465146105a9576101ee565b80636352211e1461047d5780636ecd2306146104ba57806370a08231146104d6578063715018a614610513576101ee565b806328b60d15116101855780633ccfd60b116101545780633ccfd60b146103e957806342842e0e1461040057806344a0d68a146104295780635c975abb14610452576101ee565b806328b60d15146103695780632f6f98e11461039257806337a66d85146103bb5780633bd64968146103d2576101ee565b80631067fcc7116101c15780631067fcc7146102c157806313faede6146102ea57806318160ddd1461031557806323b872dd14610340576101ee565b806301ffc9a7146101f357806306fdde0314610230578063081812fc1461025b578063095ea7b314610298575b600080fd5b3480156101ff57600080fd5b5061021a60048036038101906102159190612fee565b610787565b6040516102279190613448565b60405180910390f35b34801561023c57600080fd5b50610245610869565b6040516102529190613463565b60405180910390f35b34801561026757600080fd5b50610282600480360381019061027d91906130d1565b6108fb565b60405161028f91906133e1565b60405180910390f35b3480156102a457600080fd5b506102bf60048036038101906102ba9190612fae565b610977565b005b3480156102cd57600080fd5b506102e860048036038101906102e39190613048565b610a82565b005b3480156102f657600080fd5b506102ff610b18565b60405161030c91906135a0565b60405180910390f35b34801561032157600080fd5b5061032a610b1e565b60405161033791906135a0565b60405180910390f35b34801561034c57600080fd5b5061036760048036038101906103629190612e98565b610b35565b005b34801561037557600080fd5b50610390600480360381019061038b91906130fe565b610b45565b005b34801561039e57600080fd5b506103b960048036038101906103b49190613091565b610bdf565b005b3480156103c757600080fd5b506103d0610cde565b005b3480156103de57600080fd5b506103e7610d86565b005b3480156103f557600080fd5b506103fe610e2e565b005b34801561040c57600080fd5b5061042760048036038101906104229190612e98565b610ef9565b005b34801561043557600080fd5b50610450600480360381019061044b91906130d1565b610f19565b005b34801561045e57600080fd5b50610467610f9f565b6040516104749190613448565b60405180910390f35b34801561048957600080fd5b506104a4600480360381019061049f91906130d1565b610fb2565b6040516104b191906133e1565b60405180910390f35b6104d460048036038101906104cf91906130fe565b610fc8565b005b3480156104e257600080fd5b506104fd60048036038101906104f89190612e2b565b61126f565b60405161050a91906135a0565b60405180910390f35b34801561051f57600080fd5b5061052861133f565b005b34801561053657600080fd5b50610551600480360381019061054c9190613048565b6113c7565b005b34801561055f57600080fd5b5061056861145d565b60405161057591906133e1565b60405180910390f35b34801561058a57600080fd5b50610593611487565b6040516105a09190613463565b60405180910390f35b3480156105b557600080fd5b506105d060048036038101906105cb9190612f6e565b611519565b005b3480156105de57600080fd5b506105e7611691565b6040516105f49190613448565b60405180910390f35b34801561060957600080fd5b50610624600480360381019061061f9190612eeb565b6116a4565b005b34801561063257600080fd5b5061063b611720565b60405161064891906135bb565b60405180910390f35b34801561065d57600080fd5b50610678600480360381019061067391906130d1565b611733565b6040516106859190613463565b60405180910390f35b34801561069a57600080fd5b506106a361188c565b6040516106b09190613585565b60405180910390f35b3480156106c557600080fd5b506106e060048036038101906106db9190612e2b565b611892565b6040516106ed91906135bb565b60405180910390f35b34801561070257600080fd5b5061071d60048036038101906107189190612e58565b6118b2565b60405161072a9190613448565b60405180910390f35b34801561073f57600080fd5b50610748611946565b6040516107559190613463565b60405180910390f35b34801561076a57600080fd5b5061078560048036038101906107809190612e2b565b6119d4565b005b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061085257507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610862575061086182611acc565b5b9050919050565b6060600280546108789061393e565b80601f01602080910402602001604051908101604052809291908181526020018280546108a49061393e565b80156108f15780601f106108c6576101008083540402835291602001916108f1565b820191906000526020600020905b8154815290600101906020018083116108d457829003601f168201915b5050505050905090565b600061090682611b36565b61093c576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061098282610fb2565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156109ea576040517f943f7b8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610a09611b84565b73ffffffffffffffffffffffffffffffffffffffff1614158015610a3b5750610a3981610a34611b84565b6118b2565b155b15610a72576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a7d838383611b8c565b505050565b610a8a611b84565b73ffffffffffffffffffffffffffffffffffffffff16610aa861145d565b73ffffffffffffffffffffffffffffffffffffffff1614610afe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af5906134e5565b60405180910390fd5b80600b9080519060200190610b14929190612bd2565b5050565b600d5481565b6000610b28611c3e565b6001546000540303905090565b610b40838383611c47565b505050565b610b4d611b84565b73ffffffffffffffffffffffffffffffffffffffff16610b6b61145d565b73ffffffffffffffffffffffffffffffffffffffff1614610bc1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb8906134e5565b60405180910390fd5b80600c60006101000a81548160ff021916908360ff16021790555050565b610be7611b84565b73ffffffffffffffffffffffffffffffffffffffff16610c0561145d565b73ffffffffffffffffffffffffffffffffffffffff1614610c5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c52906134e5565b60405180910390fd5b6000610c65610b1e565b90506115b361ffff168382610c7a91906136b5565b61ffff161115610cbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb690613485565b60405180910390fd5b610ccd828461ffff166120fd565b600092506000915060009050505050565b610ce6611b84565b73ffffffffffffffffffffffffffffffffffffffff16610d0461145d565b73ffffffffffffffffffffffffffffffffffffffff1614610d5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d51906134e5565b60405180910390fd5b600e60009054906101000a900460ff1615600e60006101000a81548160ff021916908315150217905550565b610d8e611b84565b73ffffffffffffffffffffffffffffffffffffffff16610dac61145d565b73ffffffffffffffffffffffffffffffffffffffff1614610e02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df9906134e5565b60405180910390fd5b600e60019054906101000a900460ff1615600e60016101000a81548160ff021916908315150217905550565b610e36611b84565b73ffffffffffffffffffffffffffffffffffffffff16610e5461145d565b73ffffffffffffffffffffffffffffffffffffffff1614610eaa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea1906134e5565b60405180910390fd5b60004790503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610ef5573d6000803e3d6000fd5b5050565b610f14838383604051806020016040528060008152506116a4565b505050565b610f21611b84565b73ffffffffffffffffffffffffffffffffffffffff16610f3f61145d565b73ffffffffffffffffffffffffffffffffffffffff1614610f95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8c906134e5565b60405180910390fd5b80600d8190555050565b600e60009054906101000a900460ff1681565b6000610fbd8261211b565b600001519050919050565b6000610fd2610b1e565b90506115b361ffff168260ff1682610fea91906136b5565b61ffff16111561102f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102690613545565b60405180910390fd5b6000600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050600c60009054906101000a900460ff1660ff16818461109f9190613743565b60ff1611156110e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110da90613565565b60405180910390fd5b600e60009054906101000a900460ff1615611133576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112a90613505565b60405180910390fd5b60018160ff1610611196578260ff16600d5461114f91906137ab565b341015611191576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611188906134c5565b60405180910390fd5b6111f6565b6001836111a39190613839565b60ff16600d546111b391906137ab565b3410156111f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ec906134c5565b60405180910390fd5b5b611203338460ff166120fd565b808361120f9190613743565b600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908360ff16021790555060009150505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156112d7576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900467ffffffffffffffff1667ffffffffffffffff169050919050565b611347611b84565b73ffffffffffffffffffffffffffffffffffffffff1661136561145d565b73ffffffffffffffffffffffffffffffffffffffff16146113bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b2906134e5565b60405180910390fd5b6113c560006123aa565b565b6113cf611b84565b73ffffffffffffffffffffffffffffffffffffffff166113ed61145d565b73ffffffffffffffffffffffffffffffffffffffff1614611443576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143a906134e5565b60405180910390fd5b8060099080519060200190611459929190612bd2565b5050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600380546114969061393e565b80601f01602080910402602001604051908101604052809291908181526020018280546114c29061393e565b801561150f5780601f106114e45761010080835404028352916020019161150f565b820191906000526020600020905b8154815290600101906020018083116114f257829003601f168201915b5050505050905090565b611521611b84565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611586576040517fb06307db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060076000611593611b84565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611640611b84565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516116859190613448565b60405180910390a35050565b600e60019054906101000a900460ff1681565b6116af848484611c47565b6116ce8373ffffffffffffffffffffffffffffffffffffffff16612470565b80156116e357506116e184848484612493565b155b1561171a576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b600c60009054906101000a900460ff1681565b606061173e82611b36565b61177d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177490613525565b60405180910390fd5b60001515600e60019054906101000a900460ff161515141561182b57600b80546117a69061393e565b80601f01602080910402602001604051908101604052809291908181526020018280546117d29061393e565b801561181f5780601f106117f45761010080835404028352916020019161181f565b820191906000526020600020905b81548152906001019060200180831161180257829003601f168201915b50505050509050611887565b60006118356125f3565b905060008151116118555760405180602001604052806000815250611883565b8061185f84612685565b600a604051602001611873939291906133b0565b6040516020818303038152906040525b9150505b919050565b6115b381565b600f6020528060005260406000206000915054906101000a900460ff1681565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600b80546119539061393e565b80601f016020809104026020016040519081016040528092919081815260200182805461197f9061393e565b80156119cc5780601f106119a1576101008083540402835291602001916119cc565b820191906000526020600020905b8154815290600101906020018083116119af57829003601f168201915b505050505081565b6119dc611b84565b73ffffffffffffffffffffffffffffffffffffffff166119fa61145d565b73ffffffffffffffffffffffffffffffffffffffff1614611a50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a47906134e5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611ac0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab7906134a5565b60405180910390fd5b611ac9816123aa565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600081611b41611c3e565b11158015611b50575060005482105b8015611b7d575060046000838152602001908152602001600020600001601c9054906101000a900460ff16155b9050919050565b600033905090565b826006600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b60006001905090565b6000611c528261211b565b90508373ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614611cbd576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008473ffffffffffffffffffffffffffffffffffffffff16611cde611b84565b73ffffffffffffffffffffffffffffffffffffffff161480611d0d5750611d0c85611d07611b84565b6118b2565b5b80611d525750611d1b611b84565b73ffffffffffffffffffffffffffffffffffffffff16611d3a846108fb565b73ffffffffffffffffffffffffffffffffffffffff16145b905080611d8b576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611df2576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611dff85858560016127e6565b611e0b60008487611b8c565b6001600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160392506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506001600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506000600460008581526020019081526020016000209050848160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550428160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060006001850190506000600460008381526020019081526020016000209050600073ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561208b57600054821461208a57878160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084602001518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b5b505050828473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46120f685858560016127ec565b5050505050565b6121178282604051806020016040528060008152506127f2565b5050565b612123612c58565b600082905080612131611c3e565b11158015612140575060005481105b15612373576000600460008381526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff1615151515815250509050806040015161237157600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16146122555780925050506123a5565b5b60011561237057818060019003925050600460008381526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff1615151515815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff161461236b5780925050506123a5565b612256565b5b505b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60008373ffffffffffffffffffffffffffffffffffffffff1663150b7a026124b9611b84565b8786866040518563ffffffff1660e01b81526004016124db94939291906133fc565b602060405180830381600087803b1580156124f557600080fd5b505af192505050801561252657506040513d601f19601f82011682018060405250810190612523919061301b565b60015b6125a0573d8060008114612556576040519150601f19603f3d011682016040523d82523d6000602084013e61255b565b606091505b50600081511415612598576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b6060600980546126029061393e565b80601f016020809104026020016040519081016040528092919081815260200182805461262e9061393e565b801561267b5780601f106126505761010080835404028352916020019161267b565b820191906000526020600020905b81548152906001019060200180831161265e57829003601f168201915b5050505050905090565b606060008214156126cd576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506127e1565b600082905060005b600082146126ff5780806126e8906139a1565b915050600a826126f8919061377a565b91506126d5565b60008167ffffffffffffffff81111561271b5761271a613ad7565b5b6040519080825280601f01601f19166020018201604052801561274d5781602001600182028036833780820191505090505b5090505b600085146127da576001826127669190613805565b9150600a8561277591906139ea565b603061278191906136ed565b60f81b81838151811061279757612796613aa8565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856127d3919061377a565b9450612751565b8093505050505b919050565b50505050565b50505050565b6127ff8383836001612804565b505050565b600080549050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415612871576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008414156128ac576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6128b960008683876127e6565b83600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555083600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160088282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550846004600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426004600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550600081905060008582019050838015612a835750612a828773ffffffffffffffffffffffffffffffffffffffff16612470565b5b15612b49575b818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612af86000888480600101955088612493565b612b2e576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80821415612a89578260005414612b4457600080fd5b612bb5565b5b818060010192508773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a480821415612b4a575b816000819055505050612bcb60008683876127ec565b5050505050565b828054612bde9061393e565b90600052602060002090601f016020900481019282612c005760008555612c47565b82601f10612c1957805160ff1916838001178555612c47565b82800160010185558215612c47579182015b82811115612c46578251825591602001919060010190612c2b565b5b509050612c549190612c9b565b5090565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681526020016000151581525090565b5b80821115612cb4576000816000905550600101612c9c565b5090565b6000612ccb612cc6846135fb565b6135d6565b905082815260208101848484011115612ce757612ce6613b0b565b5b612cf28482856138fc565b509392505050565b6000612d0d612d088461362c565b6135d6565b905082815260208101848484011115612d2957612d28613b0b565b5b612d348482856138fc565b509392505050565b600081359050612d4b81613ce5565b92915050565b600081359050612d6081613cfc565b92915050565b600081359050612d7581613d13565b92915050565b600081519050612d8a81613d13565b92915050565b600082601f830112612da557612da4613b06565b5b8135612db5848260208601612cb8565b91505092915050565b600082601f830112612dd357612dd2613b06565b5b8135612de3848260208601612cfa565b91505092915050565b600081359050612dfb81613d2a565b92915050565b600081359050612e1081613d41565b92915050565b600081359050612e2581613d58565b92915050565b600060208284031215612e4157612e40613b15565b5b6000612e4f84828501612d3c565b91505092915050565b60008060408385031215612e6f57612e6e613b15565b5b6000612e7d85828601612d3c565b9250506020612e8e85828601612d3c565b9150509250929050565b600080600060608486031215612eb157612eb0613b15565b5b6000612ebf86828701612d3c565b9350506020612ed086828701612d3c565b9250506040612ee186828701612e01565b9150509250925092565b60008060008060808587031215612f0557612f04613b15565b5b6000612f1387828801612d3c565b9450506020612f2487828801612d3c565b9350506040612f3587828801612e01565b925050606085013567ffffffffffffffff811115612f5657612f55613b10565b5b612f6287828801612d90565b91505092959194509250565b60008060408385031215612f8557612f84613b15565b5b6000612f9385828601612d3c565b9250506020612fa485828601612d51565b9150509250929050565b60008060408385031215612fc557612fc4613b15565b5b6000612fd385828601612d3c565b9250506020612fe485828601612e01565b9150509250929050565b60006020828403121561300457613003613b15565b5b600061301284828501612d66565b91505092915050565b60006020828403121561303157613030613b15565b5b600061303f84828501612d7b565b91505092915050565b60006020828403121561305e5761305d613b15565b5b600082013567ffffffffffffffff81111561307c5761307b613b10565b5b61308884828501612dbe565b91505092915050565b600080604083850312156130a8576130a7613b15565b5b60006130b685828601612dec565b92505060206130c785828601612d3c565b9150509250929050565b6000602082840312156130e7576130e6613b15565b5b60006130f584828501612e01565b91505092915050565b60006020828403121561311457613113613b15565b5b600061312284828501612e16565b91505092915050565b6131348161386d565b82525050565b6131438161387f565b82525050565b600061315482613672565b61315e8185613688565b935061316e81856020860161390b565b61317781613b1a565b840191505092915050565b600061318d8261367d565b6131978185613699565b93506131a781856020860161390b565b6131b081613b1a565b840191505092915050565b60006131c68261367d565b6131d081856136aa565b93506131e081856020860161390b565b80840191505092915050565b600081546131f98161393e565b61320381866136aa565b9450600182166000811461321e576001811461322f57613262565b60ff19831686528186019350613262565b6132388561365d565b60005b8381101561325a5781548189015260018201915060208101905061323b565b838801955050505b50505092915050565b6000613278601383613699565b915061328382613b2b565b602082019050919050565b600061329b602683613699565b91506132a682613b54565b604082019050919050565b60006132be601283613699565b91506132c982613ba3565b602082019050919050565b60006132e1602083613699565b91506132ec82613bcc565b602082019050919050565b6000613304601783613699565b915061330f82613bf5565b602082019050919050565b6000613327602f83613699565b915061333282613c1e565b604082019050919050565b600061334a601383613699565b915061335582613c6d565b602082019050919050565b600061336d602383613699565b915061337882613c96565b604082019050919050565b61338c816138b7565b82525050565b61339b816138e5565b82525050565b6133aa816138ef565b82525050565b60006133bc82866131bb565b91506133c882856131bb565b91506133d482846131ec565b9150819050949350505050565b60006020820190506133f6600083018461312b565b92915050565b6000608082019050613411600083018761312b565b61341e602083018661312b565b61342b6040830185613392565b818103606083015261343d8184613149565b905095945050505050565b600060208201905061345d600083018461313a565b92915050565b6000602082019050818103600083015261347d8184613182565b905092915050565b6000602082019050818103600083015261349e8161326b565b9050919050565b600060208201905081810360008301526134be8161328e565b9050919050565b600060208201905081810360008301526134de816132b1565b9050919050565b600060208201905081810360008301526134fe816132d4565b9050919050565b6000602082019050818103600083015261351e816132f7565b9050919050565b6000602082019050818103600083015261353e8161331a565b9050919050565b6000602082019050818103600083015261355e8161333d565b9050919050565b6000602082019050818103600083015261357e81613360565b9050919050565b600060208201905061359a6000830184613383565b92915050565b60006020820190506135b56000830184613392565b92915050565b60006020820190506135d060008301846133a1565b92915050565b60006135e06135f1565b90506135ec8282613970565b919050565b6000604051905090565b600067ffffffffffffffff82111561361657613615613ad7565b5b61361f82613b1a565b9050602081019050919050565b600067ffffffffffffffff82111561364757613646613ad7565b5b61365082613b1a565b9050602081019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b60006136c0826138b7565b91506136cb836138b7565b92508261ffff038211156136e2576136e1613a1b565b5b828201905092915050565b60006136f8826138e5565b9150613703836138e5565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561373857613737613a1b565b5b828201905092915050565b600061374e826138ef565b9150613759836138ef565b92508260ff0382111561376f5761376e613a1b565b5b828201905092915050565b6000613785826138e5565b9150613790836138e5565b9250826137a05761379f613a4a565b5b828204905092915050565b60006137b6826138e5565b91506137c1836138e5565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156137fa576137f9613a1b565b5b828202905092915050565b6000613810826138e5565b915061381b836138e5565b92508282101561382e5761382d613a1b565b5b828203905092915050565b6000613844826138ef565b915061384f836138ef565b92508282101561386257613861613a1b565b5b828203905092915050565b6000613878826138c5565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600061ffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b82818337600083830152505050565b60005b8381101561392957808201518184015260208101905061390e565b83811115613938576000848401525b50505050565b6000600282049050600182168061395657607f821691505b6020821081141561396a57613969613a79565b5b50919050565b61397982613b1a565b810181811067ffffffffffffffff8211171561399857613997613ad7565b5b80604052505050565b60006139ac826138e5565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156139df576139de613a1b565b5b600182019050919050565b60006139f5826138e5565b9150613a00836138e5565b925082613a1057613a0f613a4a565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f45786365646573206d617820737570706c792e00000000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f496e73756666696369656e742046756e64730000000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f54686520636f6e74726163742069732070617573656421000000000000000000600082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f45786365656473206d617820737570706c792e00000000000000000000000000600082015250565b7f45786365656473206d6178204e667420616c6c6f776564207065722057616c6c60008201527f65742e0000000000000000000000000000000000000000000000000000000000602082015250565b613cee8161386d565b8114613cf957600080fd5b50565b613d058161387f565b8114613d1057600080fd5b50565b613d1c8161388b565b8114613d2757600080fd5b50565b613d33816138b7565b8114613d3e57600080fd5b50565b613d4a816138e5565b8114613d5557600080fd5b50565b613d61816138ef565b8114613d6c57600080fd5b5056fea2646970667358221220faa8ca98d861a5ec803091dbd182d023469f2a88e3a8fee4d91be6a899645bc664736f6c63430008070033697066733a2f2f516d5a4a347036374731437a516d6b4b6b6e566e396a7442567557444d6f43734235643971333678784879376f31697066733a2f2f516d5a4a347036374731437a516d6b4b6b6e566e396a7442567557444d6f43734235643971333678784879376f312f