0x60806040523480156200001157600080fd5b5060405162002a2538038062002a2583398181016040528101906200003791906200051e565b8585816002908051906020019062000051929190620003ce565b5080600390805190602001906200006a929190620003ce565b506200007b6200016060201b60201c565b600081905550505033600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508360099080519060200190620000dc929190620003ce565b50600082600a819055505b828110156200015357818184620000ff9190620006bb565b106200011d576200011784836200016560201b60201c565b6200013d565b6200013c848285620001309190620006bb565b6200016560201b60201c565b5b81816200014b91906200065e565b9050620000e7565b50505050505050620008a8565b600090565b6000805490506000821415620001a7576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b620001bc60008483856200034e60201b60201c565b600160406001901b178202600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055506200024b836200022d60008660006200035460201b60201c565b6200023e856200038460201b60201c565b176200039460201b60201c565b6004600083815260200190815260200160002081905550600080838301905073ffffffffffffffffffffffffffffffffffffffff85169150828260007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a4600183015b818114620002ee57808360007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a4600181019050620002b1565b5060008214156200032b576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806000819055505050620003496000848385620003bf60201b60201c565b505050565b50505050565b60008060e883901c905060e862000373868684620003c560201b60201c565b62ffffff16901b9150509392505050565b60006001821460e11b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff83169250814260a01b178317905092915050565b50505050565b60009392505050565b828054620003dc906200076a565b90600052602060002090601f0160209004810192826200040057600085556200044c565b82601f106200041b57805160ff19168380011785556200044c565b828001600101855582156200044c579182015b828111156200044b5782518255916020019190600101906200042e565b5b5090506200045b91906200045f565b5090565b5b808211156200047a57600081600090555060010162000460565b5090565b6000620004956200048f8462000628565b620005ff565b905082815260208101848484011115620004ae57600080fd5b620004bb84828562000734565b509392505050565b600081519050620004d48162000874565b92915050565b600082601f830112620004ec57600080fd5b8151620004fe8482602086016200047e565b91505092915050565b60008151905062000518816200088e565b92915050565b60008060008060008060c087890312156200053857600080fd5b600087015167ffffffffffffffff8111156200055357600080fd5b6200056189828a01620004da565b965050602087015167ffffffffffffffff8111156200057f57600080fd5b6200058d89828a01620004da565b955050604087015167ffffffffffffffff811115620005ab57600080fd5b620005b989828a01620004da565b9450506060620005cc89828a01620004c3565b9350506080620005df89828a0162000507565b92505060a0620005f289828a0162000507565b9150509295509295509295565b60006200060b6200061e565b9050620006198282620007a0565b919050565b6000604051905090565b600067ffffffffffffffff82111562000646576200064562000834565b5b620006518262000863565b9050602081019050919050565b60006200066b826200072a565b915062000678836200072a565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620006b057620006af620007d6565b5b828201905092915050565b6000620006c8826200072a565b9150620006d5836200072a565b925082821015620006eb57620006ea620007d6565b5b828203905092915050565b600062000703826200070a565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b838110156200075457808201518184015260208101905062000737565b8381111562000764576000848401525b50505050565b600060028204905060018216806200078357607f821691505b602082108114156200079a576200079962000805565b5b50919050565b620007ab8262000863565b810181811067ffffffffffffffff82111715620007cd57620007cc62000834565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b6200087f81620006f6565b81146200088b57600080fd5b50565b62000899816200072a565b8114620008a557600080fd5b50565b61216d80620008b86000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063570b3c6a11610097578063a22cb46511610066578063a22cb465146102ab578063b88d4fde146102c7578063c87b56dd146102e3578063e985e9c51461031357610100565b8063570b3c6a146102115780636352211e1461022d57806370a082311461025d57806395d89b411461028d57610100565b806318160ddd116100d357806318160ddd1461019f57806323b872dd146101bd57806340c10f19146101d957806342842e0e146101f557610100565b806301ffc9a71461010557806306fdde0314610135578063081812fc14610153578063095ea7b314610183575b600080fd5b61011f600480360381019061011a91906118d9565b610343565b60405161012c9190611bee565b60405180910390f35b61013d6103d5565b60405161014a9190611c09565b60405180910390f35b61016d6004803603810190610168919061196c565b610467565b60405161017a9190611b87565b60405180910390f35b61019d6004803603810190610198919061189d565b6104e6565b005b6101a761062a565b6040516101b49190611c4b565b60405180910390f35b6101d760048036038101906101d29190611797565b610641565b005b6101f360048036038101906101ee919061189d565b610966565b005b61020f600480360381019061020a9190611797565b6109cb565b005b61022b6004803603810190610226919061192b565b6109eb565b005b6102476004803603810190610242919061196c565b610a5f565b6040516102549190611b87565b60405180910390f35b61027760048036038101906102729190611732565b610a71565b6040516102849190611c4b565b60405180910390f35b610295610b2a565b6040516102a29190611c09565b60405180910390f35b6102c560048036038101906102c09190611861565b610bbc565b005b6102e160048036038101906102dc91906117e6565b610d34565b005b6102fd60048036038101906102f8919061196c565b610da7565b60405161030a9190611c09565b60405180910390f35b61032d6004803603810190610328919061175b565b610ddb565b60405161033a9190611bee565b60405180910390f35b60006301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061039e57506380ac58cd60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806103ce5750635b5e139f60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b6060600280546103e490611eb6565b80601f016020809104026020016040519081016040528092919081815260200182805461041090611eb6565b801561045d5780601f106104325761010080835404028352916020019161045d565b820191906000526020600020905b81548152906001019060200180831161044057829003601f168201915b5050505050905090565b600061047282610e6f565b6104a8576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006104f182610a5f565b90508073ffffffffffffffffffffffffffffffffffffffff16610512610ece565b73ffffffffffffffffffffffffffffffffffffffff16146105755761053e81610539610ece565b610ddb565b610574576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b826006600084815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b6000610634610ed6565b6001546000540303905090565b600061064c82610edb565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146106b3576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000806106bf84610fa9565b915091506106d581876106d0610ece565b610fd0565b610721576106ea866106e5610ece565b610ddb565b610720576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415610788576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107958686866001611014565b80156107a057600082555b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081546001900391905081905550600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081546001019190508190555061086e8561084a88888761101a565b7c020000000000000000000000000000000000000000000000000000000017611042565b600460008681526020019081526020016000208190555060007c0200000000000000000000000000000000000000000000000000000000841614156108f65760006001850190506000600460008381526020019081526020016000205414156108f45760005481146108f3578360046000838152602001908152602001600020819055505b5b505b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461095e868686600161106d565b505050505050565b600a548161097261062a565b61097c9190611d45565b11156109bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b490611c2b565b60405180910390fd5b6109c78282611073565b5050565b6109e683838360405180602001604052806000815250610d34565b505050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a4557600080fd5b8060099080519060200190610a5b929190611556565b5050565b6000610a6a82610edb565b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ad9576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054169050919050565b606060038054610b3990611eb6565b80601f0160208091040260200160405190810160405280929190818152602001828054610b6590611eb6565b8015610bb25780601f10610b8757610100808354040283529160200191610bb2565b820191906000526020600020905b815481529060010190602001808311610b9557829003601f168201915b5050505050905090565b610bc4610ece565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610c29576040517fb06307db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060076000610c36610ece565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16610ce3610ece565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051610d289190611bee565b60405180910390a35050565b610d3f848484610641565b60008373ffffffffffffffffffffffffffffffffffffffff163b14610da157610d6a84848484611230565b610da0576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b50505050565b60606009610db483611390565b604051602001610dc5929190611b4d565b6040516020818303038152906040529050919050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600081610e7a610ed6565b11158015610e89575060005482105b8015610ec7575060007c0100000000000000000000000000000000000000000000000000000000600460008581526020019081526020016000205416145b9050919050565b600033905090565b600090565b60008082905080610eea610ed6565b11610f7257600054811015610f715760006004600083815260200190815260200160002054905060007c010000000000000000000000000000000000000000000000000000000082161415610f6f575b6000811415610f65576004600083600190039350838152602001908152602001600020549050610f3a565b8092505050610fa4565b505b5b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b60008060006006600085815260200190815260200160002090508092508254915050915091565b600073ffffffffffffffffffffffffffffffffffffffff8316925073ffffffffffffffffffffffffffffffffffffffff821691508382148383141790509392505050565b50505050565b60008060e883901c905060e861103186868461153d565b62ffffff16901b9150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff83169250814260a01b178317905092915050565b50505050565b60008054905060008214156110b4576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110c16000848385611014565b600160406001901b178202600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555061113883611129600086600061101a565b61113285611546565b17611042565b6004600083815260200190815260200160002081905550600080838301905073ffffffffffffffffffffffffffffffffffffffff85169150828260007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a4600183015b8181146111d957808360007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a460018101905061119e565b506000821415611215576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600081905550505061122b600084838561106d565b505050565b60008373ffffffffffffffffffffffffffffffffffffffff1663150b7a02611256610ece565b8786866040518563ffffffff1660e01b81526004016112789493929190611ba2565b602060405180830381600087803b15801561129257600080fd5b505af19250505080156112c357506040513d601f19601f820116820180604052508101906112c09190611902565b60015b61133d573d80600081146112f3576040519150601f19603f3d011682016040523d82523d6000602084013e6112f8565b606091505b50600081511415611335576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b606060008214156113d8576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050611538565b600082905060005b6000821461140a5780806113f390611f19565b915050600a826114039190611d9b565b91506113e0565b60008167ffffffffffffffff81111561144c577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f19166020018201604052801561147e5781602001600182028036833780820191505090505b5090505b60008514611531576001826114979190611dcc565b9150600a856114a69190611f62565b60306114b29190611d45565b60f81b8183815181106114ee577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8561152a9190611d9b565b9450611482565b8093505050505b919050565b60009392505050565b60006001821460e11b9050919050565b82805461156290611eb6565b90600052602060002090601f01602090048101928261158457600085556115cb565b82601f1061159d57805160ff19168380011785556115cb565b828001600101855582156115cb579182015b828111156115ca5782518255916020019190600101906115af565b5b5090506115d891906115dc565b5090565b5b808211156115f55760008160009055506001016115dd565b5090565b600061160c61160784611c8b565b611c66565b90508281526020810184848401111561162457600080fd5b61162f848285611e74565b509392505050565b600061164a61164584611cbc565b611c66565b90508281526020810184848401111561166257600080fd5b61166d848285611e74565b509392505050565b600081359050611684816120db565b92915050565b600081359050611699816120f2565b92915050565b6000813590506116ae81612109565b92915050565b6000815190506116c381612109565b92915050565b600082601f8301126116da57600080fd5b81356116ea8482602086016115f9565b91505092915050565b600082601f83011261170457600080fd5b8135611714848260208601611637565b91505092915050565b60008135905061172c81612120565b92915050565b60006020828403121561174457600080fd5b600061175284828501611675565b91505092915050565b6000806040838503121561176e57600080fd5b600061177c85828601611675565b925050602061178d85828601611675565b9150509250929050565b6000806000606084860312156117ac57600080fd5b60006117ba86828701611675565b93505060206117cb86828701611675565b92505060406117dc8682870161171d565b9150509250925092565b600080600080608085870312156117fc57600080fd5b600061180a87828801611675565b945050602061181b87828801611675565b935050604061182c8782880161171d565b925050606085013567ffffffffffffffff81111561184957600080fd5b611855878288016116c9565b91505092959194509250565b6000806040838503121561187457600080fd5b600061188285828601611675565b92505060206118938582860161168a565b9150509250929050565b600080604083850312156118b057600080fd5b60006118be85828601611675565b92505060206118cf8582860161171d565b9150509250929050565b6000602082840312156118eb57600080fd5b60006118f98482850161169f565b91505092915050565b60006020828403121561191457600080fd5b6000611922848285016116b4565b91505092915050565b60006020828403121561193d57600080fd5b600082013567ffffffffffffffff81111561195757600080fd5b611963848285016116f3565b91505092915050565b60006020828403121561197e57600080fd5b600061198c8482850161171d565b91505092915050565b61199e81611e00565b82525050565b6119ad81611e12565b82525050565b60006119be82611d02565b6119c88185611d18565b93506119d8818560208601611e83565b6119e18161204f565b840191505092915050565b60006119f782611d0d565b611a018185611d29565b9350611a11818560208601611e83565b611a1a8161204f565b840191505092915050565b6000611a3082611d0d565b611a3a8185611d3a565b9350611a4a818560208601611e83565b80840191505092915050565b60008154611a6381611eb6565b611a6d8186611d3a565b94506001821660008114611a885760018114611a9957611acc565b60ff19831686528186019350611acc565b611aa285611ced565b60005b83811015611ac457815481890152600182019150602081019050611aa5565b838801955050505b50505092915050565b6000611ae2600e83611d29565b9150611aed82612060565b602082019050919050565b6000611b05600583611d3a565b9150611b1082612089565b600582019050919050565b6000611b28600183611d3a565b9150611b33826120b2565b600182019050919050565b611b4781611e6a565b82525050565b6000611b598285611a56565b9150611b6482611b1b565b9150611b708284611a25565b9150611b7b82611af8565b91508190509392505050565b6000602082019050611b9c6000830184611995565b92915050565b6000608082019050611bb76000830187611995565b611bc46020830186611995565b611bd16040830185611b3e565b8181036060830152611be381846119b3565b905095945050505050565b6000602082019050611c0360008301846119a4565b92915050565b60006020820190508181036000830152611c2381846119ec565b905092915050565b60006020820190508181036000830152611c4481611ad5565b9050919050565b6000602082019050611c606000830184611b3e565b92915050565b6000611c70611c81565b9050611c7c8282611ee8565b919050565b6000604051905090565b600067ffffffffffffffff821115611ca657611ca5612020565b5b611caf8261204f565b9050602081019050919050565b600067ffffffffffffffff821115611cd757611cd6612020565b5b611ce08261204f565b9050602081019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000611d5082611e6a565b9150611d5b83611e6a565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611d9057611d8f611f93565b5b828201905092915050565b6000611da682611e6a565b9150611db183611e6a565b925082611dc157611dc0611fc2565b5b828204905092915050565b6000611dd782611e6a565b9150611de283611e6a565b925082821015611df557611df4611f93565b5b828203905092915050565b6000611e0b82611e4a565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015611ea1578082015181840152602081019050611e86565b83811115611eb0576000848401525b50505050565b60006002820490506001821680611ece57607f821691505b60208210811415611ee257611ee1611ff1565b5b50919050565b611ef18261204f565b810181811067ffffffffffffffff82111715611f1057611f0f612020565b5b80604052505050565b6000611f2482611e6a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611f5757611f56611f93565b5b600182019050919050565b6000611f6d82611e6a565b9150611f7883611e6a565b925082611f8857611f87611fc2565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f737570706c792069732066756c6c000000000000000000000000000000000000600082015250565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600082015250565b7f2f00000000000000000000000000000000000000000000000000000000000000600082015250565b6120e481611e00565b81146120ef57600080fd5b50565b6120fb81611e12565b811461210657600080fd5b50565b61211281611e1e565b811461211d57600080fd5b50565b61212981611e6a565b811461213457600080fd5b5056fea26469706673582212200c5816b2f28b582457490a122b2089398426e6ff3d603f6baf25691c8d0007a664736f6c6343000804003300000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001400000000000000000000000001d4300e4d2f6caf8cf7c924f4d4acb292d968e0b0000000000000000000000000000000000000000000000000000000000001450000000000000000000000000000000000000000000000000000000000000006e000000000000000000000000000000000000000000000000000000000000000d5065726665637443686572727900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000350435400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000042697066733a2f2f62616679626569686a3233697737377372723637737061666e77356362696377346436626673667361747962703570746c70783437696865647879000000000000000000000000000000000000000000000000000000000000