60806040523480156200001157600080fd5b506040516200484038038062004840833981810160405281019062000037919062000441565b6040518060400160405280600881526020017f50656e6775696e730000000000000000000000000000000000000000000000008152506040518060400160405280600881526020017f50656e6775696e730000000000000000000000000000000000000000000000008152508160029081620000b4919062000754565b508060039081620000c6919062000754565b50620000d76200016360201b60201c565b6000819055505050620000ff620000f36200016860201b60201c565b6200017060201b60201c565b600160098190555086600a8190555085600b8190555084600c908162000126919062000754565b5083600d8190555082600e8190555081600f60006101000a81548160ff02191690831515021790555080601081905550505050505050506200083b565b600090565b600033905090565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b6200025f816200024a565b81146200026b57600080fd5b50565b6000815190506200027f8162000254565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620002da826200028f565b810181811067ffffffffffffffff82111715620002fc57620002fb620002a0565b5b80604052505050565b60006200031162000236565b90506200031f8282620002cf565b919050565b600067ffffffffffffffff821115620003425762000341620002a0565b5b6200034d826200028f565b9050602081019050919050565b60005b838110156200037a5780820151818401526020810190506200035d565b60008484015250505050565b60006200039d620003978462000324565b62000305565b905082815260208101848484011115620003bc57620003bb6200028a565b5b620003c98482856200035a565b509392505050565b600082601f830112620003e957620003e862000285565b5b8151620003fb84826020860162000386565b91505092915050565b60008115159050919050565b6200041b8162000404565b81146200042757600080fd5b50565b6000815190506200043b8162000410565b92915050565b600080600080600080600060e0888a03121562000463576200046262000240565b5b6000620004738a828b016200026e565b9750506020620004868a828b016200026e565b965050604088015167ffffffffffffffff811115620004aa57620004a962000245565b5b620004b88a828b01620003d1565b9550506060620004cb8a828b016200026e565b9450506080620004de8a828b016200026e565b93505060a0620004f18a828b016200042a565b92505060c0620005048a828b016200026e565b91505092959891949750929550565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200056657607f821691505b6020821081036200057c576200057b6200051e565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620005e67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620005a7565b620005f28683620005a7565b95508019841693508086168417925050509392505050565b6000819050919050565b6000620006356200062f62000629846200024a565b6200060a565b6200024a565b9050919050565b6000819050919050565b620006518362000614565b6200066962000660826200063c565b848454620005b4565b825550505050565b600090565b6200068062000671565b6200068d81848462000646565b505050565b5b81811015620006b557620006a960008262000676565b60018101905062000693565b5050565b601f8211156200070457620006ce8162000582565b620006d98462000597565b81016020851015620006e9578190505b62000701620006f88562000597565b83018262000692565b50505b505050565b600082821c905092915050565b6000620007296000198460080262000709565b1980831691505092915050565b600062000744838362000716565b9150826002028217905092915050565b6200075f8262000513565b67ffffffffffffffff8111156200077b576200077a620002a0565b5b6200078782546200054d565b62000794828285620006b9565b600060209050601f831160018114620007cc5760008415620007b7578287015190505b620007c3858262000736565b86555062000833565b601f198416620007dc8662000582565b60005b828110156200080657848901518255600182019150602085019450602081019050620007df565b8683101562000826578489015162000822601f89168262000716565b8355505b6001600288020188555050505b505050505050565b613ff5806200084b6000396000f3fe6080604052600436106102045760003560e01c8063715018a611610118578063a22cb465116100a0578063c87b56dd1161006f578063c87b56dd1461070a578063d111515d14610747578063e985e9c51461075e578063f2fde38b1461079b578063fdb4953a146107c457610204565b8063a22cb46514610666578063b0551ac41461068f578063b88d4fde146106b8578063c4e9374d146106e157610204565b80638d859f3e116100e75780638d859f3e146105a05780638da5cb5b146105cb57806391b7f5ed146105f657806395d89b411461061f578063a0712d681461064a57610204565b8063715018a61461050c57806376d02b7114610523578063841718a61461054e5780638b85e43d1461057757610204565b806332cb6b0c1161019b57806342842e0e1161016a57806342842e0e1461041757806355f804b314610440578063616cdb1e146104695780636352211e1461049257806370a08231146104cf57610204565b806332cb6b0c146103815780633ccfd60b146103ac5780634065b85f146103c3578063408cbf94146103ee57610204565b806309ef6527116101d757806309ef6527146102d757806310b0c0521461030257806318160ddd1461032d57806323b872dd1461035857610204565b806301ffc9a71461020957806306fdde0314610246578063081812fc14610271578063095ea7b3146102ae575b600080fd5b34801561021557600080fd5b50610230600480360381019061022b9190612e22565b6107ef565b60405161023d9190612e6a565b60405180910390f35b34801561025257600080fd5b5061025b6108d1565b6040516102689190612f15565b60405180910390f35b34801561027d57600080fd5b5061029860048036038101906102939190612f6d565b610963565b6040516102a59190612fdb565b60405180910390f35b3480156102ba57600080fd5b506102d560048036038101906102d09190613022565b6109df565b005b3480156102e357600080fd5b506102ec610ae9565b6040516102f99190613071565b60405180910390f35b34801561030e57600080fd5b50610317610aef565b6040516103249190613071565b60405180910390f35b34801561033957600080fd5b50610342610af5565b60405161034f9190613071565b60405180910390f35b34801561036457600080fd5b5061037f600480360381019061037a919061308c565b610b0c565b005b34801561038d57600080fd5b50610396610b1c565b6040516103a39190613071565b60405180910390f35b3480156103b857600080fd5b506103c1610b22565b005b3480156103cf57600080fd5b506103d8610c25565b6040516103e59190613071565b60405180910390f35b3480156103fa57600080fd5b5061041560048036038101906104109190613022565b610c2b565b005b34801561042357600080fd5b5061043e6004803603810190610439919061308c565b610d5a565b005b34801561044c57600080fd5b5061046760048036038101906104629190613214565b610d7a565b005b34801561047557600080fd5b50610490600480360381019061048b9190612f6d565b610e59565b005b34801561049e57600080fd5b506104b960048036038101906104b49190612f6d565b610edf565b6040516104c69190612fdb565b60405180910390f35b3480156104db57600080fd5b506104f660048036038101906104f1919061325d565b610ef5565b6040516105039190613071565b60405180910390f35b34801561051857600080fd5b50610521610fc4565b005b34801561052f57600080fd5b5061053861104c565b6040516105459190612e6a565b60405180910390f35b34801561055a57600080fd5b50610575600480360381019061057091906132b6565b61105f565b005b34801561058357600080fd5b5061059e60048036038101906105999190612f6d565b6110f8565b005b3480156105ac57600080fd5b506105b561117e565b6040516105c29190613071565b60405180910390f35b3480156105d757600080fd5b506105e0611184565b6040516105ed9190612fdb565b60405180910390f35b34801561060257600080fd5b5061061d60048036038101906106189190612f6d565b6111ae565b005b34801561062b57600080fd5b50610634611234565b6040516106419190612f15565b60405180910390f35b610664600480360381019061065f9190612f6d565b6112c6565b005b34801561067257600080fd5b5061068d600480360381019061068891906132e3565b6114dd565b005b34801561069b57600080fd5b506106b660048036038101906106b19190612f6d565b611654565b005b3480156106c457600080fd5b506106df60048036038101906106da91906133c4565b6116da565b005b3480156106ed57600080fd5b5061070860048036038101906107039190612f6d565b611756565b005b34801561071657600080fd5b50610731600480360381019061072c9190612f6d565b611865565b60405161073e9190612f15565b60405180910390f35b34801561075357600080fd5b5061075c611903565b005b34801561076a57600080fd5b5061078560048036038101906107809190613447565b61199c565b6040516107929190612e6a565b60405180910390f35b3480156107a757600080fd5b506107c260048036038101906107bd919061325d565b611a30565b005b3480156107d057600080fd5b506107d9611b27565b6040516107e69190612e6a565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806108ba57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806108ca57506108c982611b3a565b5b9050919050565b6060600280546108e0906134b6565b80601f016020809104026020016040519081016040528092919081815260200182805461090c906134b6565b80156109595780601f1061092e57610100808354040283529160200191610959565b820191906000526020600020905b81548152906001019060200180831161093c57829003601f168201915b5050505050905090565b600061096e82611ba4565b6109a4576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006109ea82610edf565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610a51576040517f943f7b8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610a70611bf2565b73ffffffffffffffffffffffffffffffffffffffff1614158015610aa25750610aa081610a9b611bf2565b61199c565b155b15610ad9576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ae4838383611bfa565b505050565b600e5481565b600d5481565b6000610aff611cac565b6001546000540303905090565b610b17838383611cb1565b505050565b600b5481565b610b2a611bf2565b73ffffffffffffffffffffffffffffffffffffffff16610b48611184565b73ffffffffffffffffffffffffffffffffffffffff1614610b9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9590613533565b60405180910390fd5b600260095403610be3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bda9061359f565b60405180910390fd5b60026009819055506000479050610c1a73aa308b1fad5554919abaa347c559b8963e3a09a1600183610c15919061361d565b612165565b506001600981905550565b60105481565b80600081118015610c3e5750600e548111155b610c7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c749061369a565b60405180910390fd5b600b5481600054610c8e91906136ba565b1115610ccf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc69061373a565b60405180910390fd5b610cd7611bf2565b73ffffffffffffffffffffffffffffffffffffffff16610cf5611184565b73ffffffffffffffffffffffffffffffffffffffff1614610d4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4290613533565b60405180910390fd5b610d558383612259565b505050565b610d75838383604051806020016040528060008152506116da565b505050565b610d82611bf2565b73ffffffffffffffffffffffffffffffffffffffff16610da0611184565b73ffffffffffffffffffffffffffffffffffffffff1614610df6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ded90613533565b60405180910390fd5b601160009054906101000a900460ff1615610e46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3d906137a6565b60405180910390fd5b80600c9081610e559190613972565b5050565b610e61611bf2565b73ffffffffffffffffffffffffffffffffffffffff16610e7f611184565b73ffffffffffffffffffffffffffffffffffffffff1614610ed5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ecc90613533565b60405180910390fd5b80600e8190555050565b6000610eea82612277565b600001519050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f5c576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900467ffffffffffffffff1667ffffffffffffffff169050919050565b610fcc611bf2565b73ffffffffffffffffffffffffffffffffffffffff16610fea611184565b73ffffffffffffffffffffffffffffffffffffffff1614611040576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103790613533565b60405180910390fd5b61104a6000612506565b565b600f60009054906101000a900460ff1681565b611067611bf2565b73ffffffffffffffffffffffffffffffffffffffff16611085611184565b73ffffffffffffffffffffffffffffffffffffffff16146110db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d290613533565b60405180910390fd5b80600f60006101000a81548160ff02191690831515021790555050565b611100611bf2565b73ffffffffffffffffffffffffffffffffffffffff1661111e611184565b73ffffffffffffffffffffffffffffffffffffffff1614611174576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116b90613533565b60405180910390fd5b8060108190555050565b600a5481565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6111b6611bf2565b73ffffffffffffffffffffffffffffffffffffffff166111d4611184565b73ffffffffffffffffffffffffffffffffffffffff161461122a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122190613533565b60405180910390fd5b80600a8190555050565b606060038054611243906134b6565b80601f016020809104026020016040519081016040528092919081815260200182805461126f906134b6565b80156112bc5780601f10611291576101008083540402835291602001916112bc565b820191906000526020600020905b81548152906001019060200180831161129f57829003601f168201915b5050505050905090565b806000811180156112d95750600e548111155b611318576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130f9061369a565b60405180910390fd5b600b548160005461132991906136ba565b111561136a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113619061373a565b60405180910390fd5b600f60009054906101000a900460ff166113b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b090613a90565b60405180910390fd5b600082600a546113c99190613ab0565b9050601054600054101561148b576000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600d546114269190613af2565b905060008111156114895780841061146257600a54816114469190613ab0565b826114519190613af2565b915061145d33826125cc565b611488565b600a54846114709190613ab0565b8261147b9190613af2565b915061148733856125cc565b5b5b505b803410156114ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c590613b72565b60405180910390fd5b6114d83384612259565b505050565b6114e5611bf2565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611549576040517fb06307db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060076000611556611bf2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611603611bf2565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516116489190612e6a565b60405180910390a35050565b61165c611bf2565b73ffffffffffffffffffffffffffffffffffffffff1661167a611184565b73ffffffffffffffffffffffffffffffffffffffff16146116d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c790613533565b60405180910390fd5b80600d8190555050565b6116e5848484611cb1565b6117048373ffffffffffffffffffffffffffffffffffffffff16612626565b8015611719575061171784848484612649565b155b15611750576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b61175e611bf2565b73ffffffffffffffffffffffffffffffffffffffff1661177c611184565b73ffffffffffffffffffffffffffffffffffffffff16146117d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c990613533565b60405180910390fd5b600b548110611816576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180d90613bde565b60405180910390fd5b60005481101561185b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185290613bde565b60405180910390fd5b80600b8190555050565b606061187082611ba4565b6118a6576040517fa14c4b5000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006118b0612799565b905060008151116118d057604051806020016040528060008152506118fb565b806118da8461282b565b6040516020016118eb929190613c3a565b6040516020818303038152906040525b915050919050565b61190b611bf2565b73ffffffffffffffffffffffffffffffffffffffff16611929611184565b73ffffffffffffffffffffffffffffffffffffffff161461197f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197690613533565b60405180910390fd5b6001601160006101000a81548160ff021916908315150217905550565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611a38611bf2565b73ffffffffffffffffffffffffffffffffffffffff16611a56611184565b73ffffffffffffffffffffffffffffffffffffffff1614611aac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa390613533565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611b1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1290613cd0565b60405180910390fd5b611b2481612506565b50565b601160009054906101000a900460ff1681565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600081611baf611cac565b11158015611bbe575060005482105b8015611beb575060046000838152602001908152602001600020600001601c9054906101000a900460ff16155b9050919050565b600033905090565b826006600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b600090565b6000611cbc82612277565b90508373ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614611d27576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008473ffffffffffffffffffffffffffffffffffffffff16611d48611bf2565b73ffffffffffffffffffffffffffffffffffffffff161480611d775750611d7685611d71611bf2565b61199c565b5b80611dbc5750611d85611bf2565b73ffffffffffffffffffffffffffffffffffffffff16611da484610963565b73ffffffffffffffffffffffffffffffffffffffff16145b905080611df5576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611e5b576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611e68858585600161298b565b611e7460008487611bfa565b6001600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160392506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506001600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506000600460008581526020019081526020016000209050848160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550428160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060006001850190506000600460008381526020019081526020016000209050600073ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036120f35760005482146120f257878160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084602001518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b5b505050828473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461215e8585856001612991565b5050505050565b804710156121a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219f90613d3c565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff16826040516121ce90613d8d565b60006040518083038185875af1925050503d806000811461220b576040519150601f19603f3d011682016040523d82523d6000602084013e612210565b606091505b5050905080612254576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224b90613e14565b60405180910390fd5b505050565b612273828260405180602001604052806000815250612997565b5050565b61227f612d73565b60008290508061228d611cac565b1115801561229c575060005481105b156124cf576000600460008381526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff161515151581525050905080604001516124cd57600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16146123b1578092505050612501565b5b6001156124cc57818060019003925050600460008381526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff1615151515815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16146124c7578092505050612501565b6123b2565b5b505b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461261b91906136ba565b925050819055505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60008373ffffffffffffffffffffffffffffffffffffffff1663150b7a0261266f611bf2565b8786866040518563ffffffff1660e01b81526004016126919493929190613e89565b6020604051808303816000875af19250505080156126cd57506040513d601f19601f820116820180604052508101906126ca9190613eea565b60015b612746573d80600081146126fd576040519150601f19603f3d011682016040523d82523d6000602084013e612702565b606091505b50600081510361273e576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b6060600c80546127a8906134b6565b80601f01602080910402602001604051908101604052809291908181526020018280546127d4906134b6565b80156128215780601f106127f657610100808354040283529160200191612821565b820191906000526020600020905b81548152906001019060200180831161280457829003601f168201915b5050505050905090565b606060008203612872576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612986565b600082905060005b600082146128a457808061288d90613f17565b915050600a8261289d919061361d565b915061287a565b60008167ffffffffffffffff8111156128c0576128bf6130e9565b5b6040519080825280601f01601f1916602001820160405280156128f25781602001600182028036833780820191505090505b5090505b6000851461297f5760018261290b9190613af2565b9150600a8561291a9190613f5f565b603061292691906136ba565b60f81b81838151811061293c5761293b613f90565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85612978919061361d565b94506128f6565b8093505050505b919050565b50505050565b50505050565b6129a483838360016129a9565b505050565b600080549050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603612a15576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008403612a4f576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612a5c600086838761298b565b83600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555083600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160088282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550846004600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426004600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550600081905060008582019050838015612c265750612c258773ffffffffffffffffffffffffffffffffffffffff16612626565b5b15612ceb575b818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612c9b6000888480600101955088612649565b612cd1576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b808203612c2c578260005414612ce657600080fd5b612d56565b5b818060010192508773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4808203612cec575b816000819055505050612d6c6000868387612991565b5050505050565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681526020016000151581525090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612dff81612dca565b8114612e0a57600080fd5b50565b600081359050612e1c81612df6565b92915050565b600060208284031215612e3857612e37612dc0565b5b6000612e4684828501612e0d565b91505092915050565b60008115159050919050565b612e6481612e4f565b82525050565b6000602082019050612e7f6000830184612e5b565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612ebf578082015181840152602081019050612ea4565b60008484015250505050565b6000601f19601f8301169050919050565b6000612ee782612e85565b612ef18185612e90565b9350612f01818560208601612ea1565b612f0a81612ecb565b840191505092915050565b60006020820190508181036000830152612f2f8184612edc565b905092915050565b6000819050919050565b612f4a81612f37565b8114612f5557600080fd5b50565b600081359050612f6781612f41565b92915050565b600060208284031215612f8357612f82612dc0565b5b6000612f9184828501612f58565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612fc582612f9a565b9050919050565b612fd581612fba565b82525050565b6000602082019050612ff06000830184612fcc565b92915050565b612fff81612fba565b811461300a57600080fd5b50565b60008135905061301c81612ff6565b92915050565b6000806040838503121561303957613038612dc0565b5b60006130478582860161300d565b925050602061305885828601612f58565b9150509250929050565b61306b81612f37565b82525050565b60006020820190506130866000830184613062565b92915050565b6000806000606084860312156130a5576130a4612dc0565b5b60006130b38682870161300d565b93505060206130c48682870161300d565b92505060406130d586828701612f58565b9150509250925092565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61312182612ecb565b810181811067ffffffffffffffff821117156131405761313f6130e9565b5b80604052505050565b6000613153612db6565b905061315f8282613118565b919050565b600067ffffffffffffffff82111561317f5761317e6130e9565b5b61318882612ecb565b9050602081019050919050565b82818337600083830152505050565b60006131b76131b284613164565b613149565b9050828152602081018484840111156131d3576131d26130e4565b5b6131de848285613195565b509392505050565b600082601f8301126131fb576131fa6130df565b5b813561320b8482602086016131a4565b91505092915050565b60006020828403121561322a57613229612dc0565b5b600082013567ffffffffffffffff81111561324857613247612dc5565b5b613254848285016131e6565b91505092915050565b60006020828403121561327357613272612dc0565b5b60006132818482850161300d565b91505092915050565b61329381612e4f565b811461329e57600080fd5b50565b6000813590506132b08161328a565b92915050565b6000602082840312156132cc576132cb612dc0565b5b60006132da848285016132a1565b91505092915050565b600080604083850312156132fa576132f9612dc0565b5b60006133088582860161300d565b9250506020613319858286016132a1565b9150509250929050565b600067ffffffffffffffff82111561333e5761333d6130e9565b5b61334782612ecb565b9050602081019050919050565b600061336761336284613323565b613149565b905082815260208101848484011115613383576133826130e4565b5b61338e848285613195565b509392505050565b600082601f8301126133ab576133aa6130df565b5b81356133bb848260208601613354565b91505092915050565b600080600080608085870312156133de576133dd612dc0565b5b60006133ec8782880161300d565b94505060206133fd8782880161300d565b935050604061340e87828801612f58565b925050606085013567ffffffffffffffff81111561342f5761342e612dc5565b5b61343b87828801613396565b91505092959194509250565b6000806040838503121561345e5761345d612dc0565b5b600061346c8582860161300d565b925050602061347d8582860161300d565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806134ce57607f821691505b6020821081036134e1576134e0613487565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061351d602083612e90565b9150613528826134e7565b602082019050919050565b6000602082019050818103600083015261354c81613510565b9050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b6000613589601f83612e90565b915061359482613553565b602082019050919050565b600060208201905081810360008301526135b88161357c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061362882612f37565b915061363383612f37565b925082613643576136426135bf565b5b828204905092915050565b7f496e76616c6964206d696e7420616d6f756e7421000000000000000000000000600082015250565b6000613684601483612e90565b915061368f8261364e565b602082019050919050565b600060208201905081810360008301526136b381613677565b9050919050565b60006136c582612f37565b91506136d083612f37565b92508282019050808211156136e8576136e76135ee565b5b92915050565b7f4d617820737570706c7920657863656564656421000000000000000000000000600082015250565b6000613724601483612e90565b915061372f826136ee565b602082019050919050565b6000602082019050818103600083015261375381613717565b9050919050565b7f4d657461646174612066726f7a656e2100000000000000000000000000000000600082015250565b6000613790601083612e90565b915061379b8261375a565b602082019050919050565b600060208201905081810360008301526137bf81613783565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026138287fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826137eb565b61383286836137eb565b95508019841693508086168417925050509392505050565b6000819050919050565b600061386f61386a61386584612f37565b61384a565b612f37565b9050919050565b6000819050919050565b61388983613854565b61389d61389582613876565b8484546137f8565b825550505050565b600090565b6138b26138a5565b6138bd818484613880565b505050565b5b818110156138e1576138d66000826138aa565b6001810190506138c3565b5050565b601f821115613926576138f7816137c6565b613900846137db565b8101602085101561390f578190505b61392361391b856137db565b8301826138c2565b50505b505050565b600082821c905092915050565b60006139496000198460080261392b565b1980831691505092915050565b60006139628383613938565b9150826002028217905092915050565b61397b82612e85565b67ffffffffffffffff811115613994576139936130e9565b5b61399e82546134b6565b6139a98282856138e5565b600060209050601f8311600181146139dc57600084156139ca578287015190505b6139d48582613956565b865550613a3c565b601f1984166139ea866137c6565b60005b82811015613a12578489015182556001820191506020850194506020810190506139ed565b86831015613a2f5784890151613a2b601f891682613938565b8355505b6001600288020188555050505b505050505050565b7f53616c65206973206e6f74206163746976652100000000000000000000000000600082015250565b6000613a7a601383612e90565b9150613a8582613a44565b602082019050919050565b60006020820190508181036000830152613aa981613a6d565b9050919050565b6000613abb82612f37565b9150613ac683612f37565b9250828202613ad481612f37565b91508282048414831517613aeb57613aea6135ee565b5b5092915050565b6000613afd82612f37565b9150613b0883612f37565b9250828203905081811115613b2057613b1f6135ee565b5b92915050565b7f496e73756666696369656e742066756e64732100000000000000000000000000600082015250565b6000613b5c601383612e90565b9150613b6782613b26565b602082019050919050565b60006020820190508181036000830152613b8b81613b4f565b9050919050565b7f496e76616c6964206e6577206d617820737570706c7900000000000000000000600082015250565b6000613bc8601683612e90565b9150613bd382613b92565b602082019050919050565b60006020820190508181036000830152613bf781613bbb565b9050919050565b600081905092915050565b6000613c1482612e85565b613c1e8185613bfe565b9350613c2e818560208601612ea1565b80840191505092915050565b6000613c468285613c09565b9150613c528284613c09565b91508190509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613cba602683612e90565b9150613cc582613c5e565b604082019050919050565b60006020820190508181036000830152613ce981613cad565b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b6000613d26601d83612e90565b9150613d3182613cf0565b602082019050919050565b60006020820190508181036000830152613d5581613d19565b9050919050565b600081905092915050565b50565b6000613d77600083613d5c565b9150613d8282613d67565b600082019050919050565b6000613d9882613d6a565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b6000613dfe603a83612e90565b9150613e0982613da2565b604082019050919050565b60006020820190508181036000830152613e2d81613df1565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000613e5b82613e34565b613e658185613e3f565b9350613e75818560208601612ea1565b613e7e81612ecb565b840191505092915050565b6000608082019050613e9e6000830187612fcc565b613eab6020830186612fcc565b613eb86040830185613062565b8181036060830152613eca8184613e50565b905095945050505050565b600081519050613ee481612df6565b92915050565b600060208284031215613f0057613eff612dc0565b5b6000613f0e84828501613ed5565b91505092915050565b6000613f2282612f37565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613f5457613f536135ee565b5b600182019050919050565b6000613f6a82612f37565b9150613f7583612f37565b925082613f8557613f846135bf565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea26469706673582212209d02afa62c068557bf6df4f3cbf71b191a32bbde89ac043bd24e7c1181b7581464736f6c634300081100330000000000000000000000000000000000000000000000000008e1bc9bf0400000000000000000000000000000000000000000000000000000000000000015b300000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000613000000000000000000000000000000000000000000000000000000000000004420697066733a2f2f626166796265696334336a647171776237646a767a376f6977323375746c77727373756e7574376f79637a64723773337164637334616e6f6970792f00000000000000000000000000000000000000000000000000000000