60a060405260fa600a60146101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555073271682deb8c4e0901d1a1550ad2e64d568e69909600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f8af398995b04c28e9951adb9721ef74c74f93e6a478f39e7e0777be13527e7ef60001b600c55620186a0600d60006101000a81548163ffffffff021916908363ffffffff1602179055506003600d60046101000a81548161ffff021916908361ffff1602179055506001600d60066101000a81548163ffffffff021916908363ffffffff160217905550611388601055604051806060016040528060368152602001620049fd603691396011908051906020019062000145929190620003e7565b506000601260006101000a81548160ff02191690831515021790555060006015553480156200017357600080fd5b50600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518060400160405280601281526020017f4d61676963466f726573744e6f536c65657000000000000000000000000000008152506040518060400160405280600481526020017f4d464e530000000000000000000000000000000000000000000000000000000081525062000223620002176200031660201b60201c565b6200031e60201b60201c565b81600390805190602001906200023b929190620003e7565b50806004908051906020019062000254929190620003e7565b5062000265620003e260201b60201c565b600181905550505060016009819055508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b8152505050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620004fc565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600090565b828054620003f59062000497565b90600052602060002090601f01602090048101928262000419576000855562000465565b82601f106200043457805160ff191683800117855562000465565b8280016001018555821562000465579182015b828111156200046457825182559160200191906001019062000447565b5b50905062000474919062000478565b5090565b5b808211156200049357600081600090555060010162000479565b5090565b60006002820490506001821680620004b057607f821691505b60208210811415620004c757620004c6620004cd565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60805160601c6144db6200052260003960008181610bd90152610c2d01526144db6000f3fe6080604052600436106102255760003560e01c80638da5cb5b11610123578063b88d4fde116100ab578063dad9d8ff1161006f578063dad9d8ff146107e0578063dc33e6811461080b578063e89e106a14610848578063e985e9c514610873578063f2fde38b146108b057610225565b8063b88d4fde1461070a578063bdeb7a8514610733578063c5d98bb31461075c578063c87b56dd14610799578063d2eb86ee146107d657610225565b806397254e55116100f257806397254e551461064f5780639b27bf3a14610678578063a22cb465146106a1578063ac446002146106ca578063b423fe67146106e157610225565b80638da5cb5b146105915780638e8bdd0d146105bc5780639231ab2a146105e757806395d89b411461062457610225565b806342842e0e116101b15780635cfe6b84116101755780635cfe6b84146104ac5780636352211e146104d55780636bb7b1d91461051257806370a082311461053d578063715018a61461057a57610225565b806342842e0e146103db57806345149bb31461040457806345c0f5331461042d5780634c261247146104585780635409c73e1461048157610225565b806318160ddd116101f857806318160ddd146102f85780631fe543e31461032357806323b872dd1461034c5780633cd47537146103755780633e16dc341461039e57610225565b806301ffc9a71461022a57806306fdde0314610267578063081812fc14610292578063095ea7b3146102cf575b600080fd5b34801561023657600080fd5b50610251600480360381019061024c91906134bb565b6108d9565b60405161025e9190613a77565b60405180910390f35b34801561027357600080fd5b5061027c61096b565b6040516102899190613ae5565b60405180910390f35b34801561029e57600080fd5b506102b960048036038101906102b49190613562565b6109fd565b6040516102c691906139e7565b60405180910390f35b3480156102db57600080fd5b506102f660048036038101906102f19190613357565b610a7c565b005b34801561030457600080fd5b5061030d610bc0565b60405161031a9190613ca2565b60405180910390f35b34801561032f57600080fd5b5061034a600480360381019061034591906135bc565b610bd7565b005b34801561035857600080fd5b50610373600480360381019061036e91906131e5565b610c97565b005b34801561038157600080fd5b5061039c600480360381019061039791906133e0565b610fbc565b005b3480156103aa57600080fd5b506103c560048036038101906103c091906132bb565b61111a565b6040516103d29190613a77565b60405180910390f35b3480156103e757600080fd5b5061040260048036038101906103fd91906131e5565b61115c565b005b34801561041057600080fd5b5061042b6004803603810190610426919061348e565b61117c565b005b34801561043957600080fd5b50610442611202565b60405161044f9190613ca2565b60405180910390f35b34801561046457600080fd5b5061047f600480360381019061047a9190613515565b611208565b005b34801561048d57600080fd5b506104966112a2565b6040516104a39190613ca2565b60405180910390f35b3480156104b857600080fd5b506104d360048036038101906104ce9190613397565b6112a8565b005b3480156104e157600080fd5b506104fc60048036038101906104f79190613562565b6113f1565b60405161050991906139e7565b60405180910390f35b34801561051e57600080fd5b50610527611403565b6040516105349190613ca2565b60405180910390f35b34801561054957600080fd5b50610564600480360381019061055f9190613178565b611409565b6040516105719190613ca2565b60405180910390f35b34801561058657600080fd5b5061058f6114c2565b005b34801561059d57600080fd5b506105a661154a565b6040516105b391906139e7565b60405180910390f35b3480156105c857600080fd5b506105d1611573565b6040516105de9190613ca2565b60405180910390f35b3480156105f357600080fd5b5061060e60048036038101906106099190613562565b6115b6565b60405161061b9190613c87565b60405180910390f35b34801561063057600080fd5b506106396115ce565b6040516106469190613ae5565b60405180910390f35b34801561065b57600080fd5b5061067660048036038101906106719190613397565b611660565b005b34801561068457600080fd5b5061069f600480360381019061069a9190613461565b6117a9565b005b3480156106ad57600080fd5b506106c860048036038101906106c39190613317565b611842565b005b3480156106d657600080fd5b506106df6119ba565b005b3480156106ed57600080fd5b5061070860048036038101906107039190613461565b611c30565b005b34801561071657600080fd5b50610731600480360381019061072c9190613238565b611cca565b005b34801561073f57600080fd5b5061075a6004803603810190610755919061348e565b611d3d565b005b34801561076857600080fd5b50610783600480360381019061077e91906132bb565b611dc3565b6040516107909190613a77565b60405180910390f35b3480156107a557600080fd5b506107c060048036038101906107bb9190613562565b611e05565b6040516107cd9190613ae5565b60405180910390f35b6107de611ebe565b005b3480156107ec57600080fd5b506107f5612032565b6040516108029190613a77565b60405180910390f35b34801561081757600080fd5b50610832600480360381019061082d9190613178565b612045565b60405161083f9190613ca2565b60405180910390f35b34801561085457600080fd5b5061085d612057565b60405161086a9190613ca2565b60405180910390f35b34801561087f57600080fd5b5061089a600480360381019061089591906131a5565b61205d565b6040516108a79190613a77565b60405180910390f35b3480156108bc57600080fd5b506108d760048036038101906108d29190613178565b6120f1565b005b60006301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061093457506380ac58cd60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806109645750635b5e139f60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b60606003805461097a90613fcf565b80601f01602080910402602001604051908101604052809291908181526020018280546109a690613fcf565b80156109f35780601f106109c8576101008083540402835291602001916109f3565b820191906000526020600020905b8154815290600101906020018083116109d657829003601f168201915b5050505050905090565b6000610a08826121e9565b610a3e576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6007600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610a87826113f1565b90508073ffffffffffffffffffffffffffffffffffffffff16610aa8612248565b73ffffffffffffffffffffffffffffffffffffffff1614610b0b57610ad481610acf612248565b61205d565b610b0a576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b826007600084815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b6000610bca612250565b6002546001540303905090565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c8957337f00000000000000000000000000000000000000000000000000000000000000006040517f1cf993f4000000000000000000000000000000000000000000000000000000008152600401610c80929190613a02565b60405180910390fd5b610c938282612255565b5050565b6000610ca282612288565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610d09576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080610d1584612356565b91509150610d2b8187610d26612248565b61237d565b610d7757610d4086610d3b612248565b61205d565b610d76576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415610dde576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610deb86868660016123c1565b8015610df657600082555b600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081546001900391905081905550600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815460010191905081905550610ec485610ea08888876123c7565b7c0200000000000000000000000000000000000000000000000000000000176123ef565b600560008681526020019081526020016000208190555060007c020000000000000000000000000000000000000000000000000000000084161415610f4c576000600185019050600060056000838152602001908152602001600020541415610f4a576001548114610f49578360056000838152602001908152602001600020819055505b5b505b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4610fb4868686600161241a565b505050505050565b610fc4612420565b73ffffffffffffffffffffffffffffffffffffffff16610fe261154a565b73ffffffffffffffffffffffffffffffffffffffff1614611038576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102f90613be7565b60405180910390fd5b60005b848490508110156111135760105485858381811061105c5761105b61415d565b5b9050602002013561106b610bc0565b6110759190613db9565b11156110b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ad90613b87565b60405180910390fd5b6111008383838181106110cc576110cb61415d565b5b90506020020160208101906110e19190613178565b8686848181106110f4576110f361415d565b5b90506020020135612428565b808061110b90614032565b91505061103b565b5050505050565b6000808360405160200161112e9190613993565b6040516020818303038152906040528051906020012090506111538360135483612446565b91505092915050565b61117783838360405180602001604052806000815250611cca565b505050565b611184612420565b73ffffffffffffffffffffffffffffffffffffffff166111a261154a565b73ffffffffffffffffffffffffffffffffffffffff16146111f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ef90613be7565b60405180910390fd5b8060138190555050565b60105481565b611210612420565b73ffffffffffffffffffffffffffffffffffffffff1661122e61154a565b73ffffffffffffffffffffffffffffffffffffffff1614611284576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127b90613be7565b60405180910390fd5b61128c61245d565b81816011919061129d929190612d45565b505050565b600e5481565b601260009054906101000a900460ff166112f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ee90613ba7565b60405180910390fd5b6010546001611304610bc0565b61130e9190613db9565b111561134f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134690613c67565b60405180910390fd5b6113593382611dc3565b611398576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138f90613b47565b60405180910390fd5b60006113a333612566565b146113e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113da90613bc7565b60405180910390fd5b6113ee336001612428565b50565b60006113fc82612288565b9050919050565b60155481565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611471576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054169050919050565b6114ca612420565b73ffffffffffffffffffffffffffffffffffffffff166114e861154a565b73ffffffffffffffffffffffffffffffffffffffff161461153e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153590613be7565b60405180910390fd5b61154860006125bd565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080601554141561158857600090506115b3565b6202a3006015546115999190613db9565b42106115ae5766b1a2bc2ec5000090506115b3565b600090505b90565b6115be612dcb565b6115c782612681565b9050919050565b6060600480546115dd90613fcf565b80601f016020809104026020016040519081016040528092919081815260200182805461160990613fcf565b80156116565780601f1061162b57610100808354040283529160200191611656565b820191906000526020600020905b81548152906001019060200180831161163957829003601f168201915b5050505050905090565b601260009054906101000a900460ff166116af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a690613ba7565b60405180910390fd5b60105460016116bc610bc0565b6116c69190613db9565b1115611707576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116fe90613c67565b60405180910390fd5b611711338261111a565b611750576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174790613b47565b60405180910390fd5b600061175b33612566565b1461179b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179290613bc7565b60405180910390fd5b6117a6336001612428565b50565b6117b1612420565b73ffffffffffffffffffffffffffffffffffffffff166117cf61154a565b73ffffffffffffffffffffffffffffffffffffffff1614611825576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181c90613be7565b60405180910390fd5b80601260006101000a81548160ff02191690831515021790555050565b61184a612248565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156118af576040517fb06307db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600860006118bc612248565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611969612248565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516119ae9190613a77565b60405180910390a35050565b6119c2612420565b73ffffffffffffffffffffffffffffffffffffffff166119e061154a565b73ffffffffffffffffffffffffffffffffffffffff1614611a36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2d90613be7565b60405180910390fd5b60026009541415611a7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7390613c47565b60405180910390fd5b6002600981905550600073718a7438297ac14382f25802bb18422a4dadd31b905060006005606447611aae9190613e0f565b611ab89190613e40565b905060008147611ac89190613e9a565b905060008373ffffffffffffffffffffffffffffffffffffffff1683604051611af0906139d2565b60006040518083038185875af1925050503d8060008114611b2d576040519150601f19603f3d011682016040523d82523d6000602084013e611b32565b606091505b5050905080611b76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6d90613c07565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff1682604051611b9a906139d2565b60006040518083038185875af1925050503d8060008114611bd7576040519150601f19603f3d011682016040523d82523d6000602084013e611bdc565b606091505b50508091505080611c22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1990613c07565b60405180910390fd5b505050506001600981905550565b611c38612420565b73ffffffffffffffffffffffffffffffffffffffff16611c5661154a565b73ffffffffffffffffffffffffffffffffffffffff1614611cac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca390613be7565b60405180910390fd5b8015611cbe5742601581905550611cc7565b60006015819055505b50565b611cd5848484610c97565b60008373ffffffffffffffffffffffffffffffffffffffff163b14611d3757611d00848484846126a1565b611d36576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b50505050565b611d45612420565b73ffffffffffffffffffffffffffffffffffffffff16611d6361154a565b73ffffffffffffffffffffffffffffffffffffffff1614611db9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611db090613be7565b60405180910390fd5b8060148190555050565b60008083604051602001611dd79190613993565b604051602081830303815290604052805190602001209050611dfc8360145483612446565b91505092915050565b6060611e10826121e9565b611e46576040517fa14c4b5000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611e50612801565b9050600081511415611e715760405180602001604052806000815250611eb6565b80611e95601054600e5486611e869190613db9565b611e90919061409f565b612893565b604051602001611ea69291906139ae565b6040516020818303038152906040525b915050919050565b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614611f2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2390613b67565b60405180910390fd5b60006015541415611f72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6990613b07565b60405180910390fd5b6010546001611f7f610bc0565b611f899190613db9565b1115611fca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc190613c67565b60405180910390fd5b6000611fd533612566565b14612015576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200c90613bc7565b60405180910390fd5b612025612020611573565b6128ed565b612030336001612428565b565b601260009054906101000a900460ff1681565b600061205082612566565b9050919050565b600f5481565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6120f9612420565b73ffffffffffffffffffffffffffffffffffffffff1661211761154a565b73ffffffffffffffffffffffffffffffffffffffff161461216d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216490613be7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156121dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d490613b27565b60405180910390fd5b6121e6816125bd565b50565b6000816121f4612250565b11158015612203575060015482105b8015612241575060007c0100000000000000000000000000000000000000000000000000000000600560008581526020019081526020016000205416145b9050919050565b600033905090565b600090565b6010548160008151811061226c5761226b61415d565b5b602002602001015161227e919061409f565b600e819055505050565b60008082905080612297612250565b1161231f5760015481101561231e5760006005600083815260200190815260200160002054905060007c01000000000000000000000000000000000000000000000000000000008216141561231c575b60008114156123125760056000836001900393508381526020019081526020016000205490506122e7565b8092505050612351565b505b5b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b60008060006007600085815260200190815260200160002090508092508254915050915091565b600073ffffffffffffffffffffffffffffffffffffffff8316925073ffffffffffffffffffffffffffffffffffffffff821691508382148383141790509392505050565b50505050565b60008060e883901c905060e86123de86868461298e565b62ffffff16901b9150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff83169250814260a01b178317905092915050565b50505050565b600033905090565b612442828260405180602001604052806000815250612997565b5050565b6000826124538584612a35565b1490509392505050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635d3b1d30600c54600a60149054906101000a900467ffffffffffffffff16600d60049054906101000a900461ffff16600d60009054906101000a900463ffffffff16600d60069054906101000a900463ffffffff166040518663ffffffff1660e01b815260040161250c959493929190613a92565b602060405180830381600087803b15801561252657600080fd5b505af115801561253a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061255e919061358f565b600f81905550565b600067ffffffffffffffff6040600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054901c169050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b612689612dcb565b61269a61269583612288565b612aaa565b9050919050565b60008373ffffffffffffffffffffffffffffffffffffffff1663150b7a026126c7612248565b8786866040518563ffffffff1660e01b81526004016126e99493929190613a2b565b602060405180830381600087803b15801561270357600080fd5b505af192505050801561273457506040513d601f19601f8201168201806040525081019061273191906134e8565b60015b6127ae573d8060008114612764576040519150601f19603f3d011682016040523d82523d6000602084013e612769565b606091505b506000815114156127a6576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b60606011805461281090613fcf565b80601f016020809104026020016040519081016040528092919081815260200182805461283c90613fcf565b80156128895780601f1061285e57610100808354040283529160200191612889565b820191906000526020600020905b81548152906001019060200180831161286c57829003601f168201915b5050505050905090565b60606080604051019050806040528082600183039250600a81066030018353600a810490505b80156128d957600183039250600a81066030018353600a810490506128b9565b508181036020830392508083525050919050565b80341015612930576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292790613c27565b60405180910390fd5b8034111561298b573373ffffffffffffffffffffffffffffffffffffffff166108fc823461295e9190613e9a565b9081150290604051600060405180830381858888f19350505050158015612989573d6000803e3d6000fd5b505b50565b60009392505050565b6129a18383612b60565b60008373ffffffffffffffffffffffffffffffffffffffff163b14612a305760006001549050600083820390505b6129e260008683806001019450866126a1565b612a18576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8181106129cf578160015414612a2d57600080fd5b50505b505050565b60008082905060005b8451811015612a9f576000858281518110612a5c57612a5b61415d565b5b60200260200101519050808311612a7e57612a778382612d1e565b9250612a8b565b612a888184612d1e565b92505b508080612a9790614032565b915050612a3e565b508091505092915050565b612ab2612dcb565b81816000019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060a082901c816020019067ffffffffffffffff16908167ffffffffffffffff168152505060007c01000000000000000000000000000000000000000000000000000000008316141581604001901515908115158152505060e882901c816060019062ffffff16908162ffffff1681525050919050565b600060015490506000821415612ba2576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612baf60008483856123c1565b600160406001901b178202600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550612c2683612c1760008660006123c7565b612c2085612d35565b176123ef565b6005600083815260200190815260200160002081905550600080838301905073ffffffffffffffffffffffffffffffffffffffff85169150828260007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a4600183015b818114612cc757808360007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a4600181019050612c8c565b506000821415612d03576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806001819055505050612d19600084838561241a565b505050565b600082600052816020526040600020905092915050565b60006001821460e11b9050919050565b828054612d5190613fcf565b90600052602060002090601f016020900481019282612d735760008555612dba565b82601f10612d8c57803560ff1916838001178555612dba565b82800160010185558215612dba579182015b82811115612db9578235825591602001919060010190612d9e565b5b509050612dc79190612e1a565b5090565b6040518060800160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff168152602001600015158152602001600062ffffff1681525090565b5b80821115612e33576000816000905550600101612e1b565b5090565b6000612e4a612e4584613ce2565b613cbd565b90508083825260208201905082856020860282011115612e6d57612e6c6141c5565b5b60005b85811015612e9d5781612e83888261308b565b845260208401935060208301925050600181019050612e70565b5050509392505050565b6000612eba612eb584613d0e565b613cbd565b90508083825260208201905082856020860282011115612edd57612edc6141c5565b5b60005b85811015612f0d5781612ef3888261314e565b845260208401935060208301925050600181019050612ee0565b5050509392505050565b6000612f2a612f2584613d3a565b613cbd565b905082815260208101848484011115612f4657612f456141ca565b5b612f51848285613f8d565b509392505050565b600081359050612f6881614432565b92915050565b60008083601f840112612f8457612f836141c0565b5b8235905067ffffffffffffffff811115612fa157612fa06141bb565b5b602083019150836020820283011115612fbd57612fbc6141c5565b5b9250929050565b600082601f830112612fd957612fd86141c0565b5b8135612fe9848260208601612e37565b91505092915050565b60008083601f840112613008576130076141c0565b5b8235905067ffffffffffffffff811115613025576130246141bb565b5b602083019150836020820283011115613041576130406141c5565b5b9250929050565b600082601f83011261305d5761305c6141c0565b5b813561306d848260208601612ea7565b91505092915050565b60008135905061308581614449565b92915050565b60008135905061309a81614460565b92915050565b6000813590506130af81614477565b92915050565b6000815190506130c481614477565b92915050565b600082601f8301126130df576130de6141c0565b5b81356130ef848260208601612f17565b91505092915050565b60008083601f84011261310e5761310d6141c0565b5b8235905067ffffffffffffffff81111561312b5761312a6141bb565b5b602083019150836001820283011115613147576131466141c5565b5b9250929050565b60008135905061315d8161448e565b92915050565b6000815190506131728161448e565b92915050565b60006020828403121561318e5761318d6141d4565b5b600061319c84828501612f59565b91505092915050565b600080604083850312156131bc576131bb6141d4565b5b60006131ca85828601612f59565b92505060206131db85828601612f59565b9150509250929050565b6000806000606084860312156131fe576131fd6141d4565b5b600061320c86828701612f59565b935050602061321d86828701612f59565b925050604061322e8682870161314e565b9150509250925092565b60008060008060808587031215613252576132516141d4565b5b600061326087828801612f59565b945050602061327187828801612f59565b93505060406132828782880161314e565b925050606085013567ffffffffffffffff8111156132a3576132a26141cf565b5b6132af878288016130ca565b91505092959194509250565b600080604083850312156132d2576132d16141d4565b5b60006132e085828601612f59565b925050602083013567ffffffffffffffff811115613301576133006141cf565b5b61330d85828601612fc4565b9150509250929050565b6000806040838503121561332e5761332d6141d4565b5b600061333c85828601612f59565b925050602061334d85828601613076565b9150509250929050565b6000806040838503121561336e5761336d6141d4565b5b600061337c85828601612f59565b925050602061338d8582860161314e565b9150509250929050565b6000602082840312156133ad576133ac6141d4565b5b600082013567ffffffffffffffff8111156133cb576133ca6141cf565b5b6133d784828501612fc4565b91505092915050565b600080600080604085870312156133fa576133f96141d4565b5b600085013567ffffffffffffffff811115613418576134176141cf565b5b61342487828801612ff2565b9450945050602085013567ffffffffffffffff811115613447576134466141cf565b5b61345387828801612f6e565b925092505092959194509250565b600060208284031215613477576134766141d4565b5b600061348584828501613076565b91505092915050565b6000602082840312156134a4576134a36141d4565b5b60006134b28482850161308b565b91505092915050565b6000602082840312156134d1576134d06141d4565b5b60006134df848285016130a0565b91505092915050565b6000602082840312156134fe576134fd6141d4565b5b600061350c848285016130b5565b91505092915050565b6000806020838503121561352c5761352b6141d4565b5b600083013567ffffffffffffffff81111561354a576135496141cf565b5b613556858286016130f8565b92509250509250929050565b600060208284031215613578576135776141d4565b5b60006135868482850161314e565b91505092915050565b6000602082840312156135a5576135a46141d4565b5b60006135b384828501613163565b91505092915050565b600080604083850312156135d3576135d26141d4565b5b60006135e18582860161314e565b925050602083013567ffffffffffffffff811115613602576136016141cf565b5b61360e85828601613048565b9150509250929050565b61362181613ece565b82525050565b61363081613ece565b82525050565b61364761364282613ece565b61407b565b82525050565b61365681613ee0565b82525050565b61366581613ee0565b82525050565b61367481613eec565b82525050565b600061368582613d6b565b61368f8185613d81565b935061369f818560208601613f9c565b6136a8816141d9565b840191505092915050565b60006136be82613d76565b6136c88185613d9d565b93506136d8818560208601613f9c565b6136e1816141d9565b840191505092915050565b60006136f782613d76565b6137018185613dae565b9350613711818560208601613f9c565b80840191505092915050565b600061372a601b83613d9d565b9150613735826141f7565b602082019050919050565b600061374d602683613d9d565b915061375882614220565b604082019050919050565b6000613770601583613d9d565b915061377b8261426f565b602082019050919050565b6000613793601e83613d9d565b915061379e82614298565b602082019050919050565b60006137b6602883613d9d565b91506137c1826142c1565b604082019050919050565b60006137d9601983613d9d565b91506137e482614310565b602082019050919050565b60006137fc601f83613d9d565b915061380782614339565b602082019050919050565b600061381f602083613d9d565b915061382a82614362565b602082019050919050565b6000613842600083613d92565b915061384d8261438b565b600082019050919050565b6000613865601083613d9d565b91506138708261438e565b602082019050919050565b6000613888601683613d9d565b9150613893826143b7565b602082019050919050565b60006138ab601f83613d9d565b91506138b6826143e0565b602082019050919050565b60006138ce601283613d9d565b91506138d982614409565b602082019050919050565b6080820160008201516138fa6000850182613618565b50602082015161390d6020850182613975565b506040820151613920604085018261364d565b5060608201516139336060850182613948565b50505050565b61394281613f22565b82525050565b61395181613f50565b82525050565b61396081613f5f565b82525050565b61396f81613f69565b82525050565b61397e81613f79565b82525050565b61398d81613f79565b82525050565b600061399f8284613636565b60148201915081905092915050565b60006139ba82856136ec565b91506139c682846136ec565b91508190509392505050565b60006139dd82613835565b9150819050919050565b60006020820190506139fc6000830184613627565b92915050565b6000604082019050613a176000830185613627565b613a246020830184613627565b9392505050565b6000608082019050613a406000830187613627565b613a4d6020830186613627565b613a5a6040830185613957565b8181036060830152613a6c818461367a565b905095945050505050565b6000602082019050613a8c600083018461365c565b92915050565b600060a082019050613aa7600083018861366b565b613ab46020830187613984565b613ac16040830186613939565b613ace6060830185613966565b613adb6080830184613966565b9695505050505050565b60006020820190508181036000830152613aff81846136b3565b905092915050565b60006020820190508181036000830152613b208161371d565b9050919050565b60006020820190508181036000830152613b4081613740565b9050919050565b60006020820190508181036000830152613b6081613763565b9050919050565b60006020820190508181036000830152613b8081613786565b9050919050565b60006020820190508181036000830152613ba0816137a9565b9050919050565b60006020820190508181036000830152613bc0816137cc565b9050919050565b60006020820190508181036000830152613be0816137ef565b9050919050565b60006020820190508181036000830152613c0081613812565b9050919050565b60006020820190508181036000830152613c2081613858565b9050919050565b60006020820190508181036000830152613c408161387b565b9050919050565b60006020820190508181036000830152613c608161389e565b9050919050565b60006020820190508181036000830152613c80816138c1565b9050919050565b6000608082019050613c9c60008301846138e4565b92915050565b6000602082019050613cb76000830184613957565b92915050565b6000613cc7613cd8565b9050613cd38282614001565b919050565b6000604051905090565b600067ffffffffffffffff821115613cfd57613cfc61418c565b5b602082029050602081019050919050565b600067ffffffffffffffff821115613d2957613d2861418c565b5b602082029050602081019050919050565b600067ffffffffffffffff821115613d5557613d5461418c565b5b613d5e826141d9565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b6000613dc482613f5f565b9150613dcf83613f5f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613e0457613e036140d0565b5b828201905092915050565b6000613e1a82613f5f565b9150613e2583613f5f565b925082613e3557613e346140ff565b5b828204905092915050565b6000613e4b82613f5f565b9150613e5683613f5f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613e8f57613e8e6140d0565b5b828202905092915050565b6000613ea582613f5f565b9150613eb083613f5f565b925082821015613ec357613ec26140d0565b5b828203905092915050565b6000613ed982613f30565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600061ffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062ffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600067ffffffffffffffff82169050919050565b82818337600083830152505050565b60005b83811015613fba578082015181840152602081019050613f9f565b83811115613fc9576000848401525b50505050565b60006002820490506001821680613fe757607f821691505b60208210811415613ffb57613ffa61412e565b5b50919050565b61400a826141d9565b810181811067ffffffffffffffff821117156140295761402861418c565b5b80604052505050565b600061403d82613f5f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156140705761406f6140d0565b5b600182019050919050565b60006140868261408d565b9050919050565b6000614098826141ea565b9050919050565b60006140aa82613f5f565b91506140b583613f5f565b9250826140c5576140c46140ff565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b7f5075626c69632053616c65204d696e74204e6f742053746172742e0000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f496e76616c6964204d65726b6c652050726f6f662e0000000000000000000000600082015250565b7f5468652063616c6c657220697320616e6f7468657220636f6e74726163740000600082015250565b7f546f6f206d616e7920616c7265616479206d696e746564206265666f7265206460008201527f6576206d696e742e000000000000000000000000000000000000000000000000602082015250565b7f5768697465204c697374204d696e74204e6f7420537461727400000000000000600082015250565b7f4561636820416464726573732043616e204f6e6c79204d696e74204f6e652e00600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b50565b7f5472616e73666572206661696c65642e00000000000000000000000000000000600082015250565b7f4e65656420746f2073656e64206d6f7265204554482e00000000000000000000600082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b7f52656163686564204d617820537570706c790000000000000000000000000000600082015250565b61443b81613ece565b811461444657600080fd5b50565b61445281613ee0565b811461445d57600080fd5b50565b61446981613eec565b811461447457600080fd5b50565b61448081613ef6565b811461448b57600080fd5b50565b61449781613f5f565b81146144a257600080fd5b5056fea2646970667358221220aa9880cab5b295a8c80634989457aef3db67d0ab649696d0a4377072a183768064736f6c63430008070033697066733a2f2f516d51313138454569454d384c544433625178776775546451516378486d6750693837724b786464416f466f42652f