0x61016060405234801562000011575f80fd5b506040518060400160405280600581526020017f5649524154000000000000000000000000000000000000000000000000000000815250806040518060400160405280600181526020017f31000000000000000000000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f56495241540000000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f56525400000000000000000000000000000000000000000000000000000000008152508160039081620000fc919062000b56565b5080600490816200010e919062000b56565b50505062000131620001256200023f60201b60201c565b6200024660201b60201c565b5f600960146101000a81548160ff02191690831515021790555062000161600a836200030960201b90919060201c565b61012081815250506200017f600b826200030960201b90919060201c565b6101408181525050818051906020012060e08181525050808051906020012061010081815250504660a08181525050620001be6200035e60201b60201c565b608081815250503073ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff1681525050505050620002393362000211620003ba60201b60201c565b600a6200021f919062000dc3565b60126200022d919062000e13565b620003c260201b60201c565b62001208565b5f33905090565b5f60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f6020835110156200032e5762000326836200052760201b60201c565b905062000358565b8262000340836200059160201b60201c565b5f01908162000350919062000b56565b5060ff5f1b90505b92915050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60e0516101005146306040516020016200039f95949392919062000ecb565b60405160208183030381529060405280519060200120905090565b5f6012905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000433576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200042a9062000f84565b60405180910390fd5b620004465f83836200059a60201b60201c565b8060025f82825462000459919062000fa4565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000508919062000fde565b60405180910390a3620005235f8383620005c260201b60201c565b5050565b5f80829050601f815111156200057657826040517f305a27a90000000000000000000000000000000000000000000000000000000081526004016200056d919062001073565b60405180910390fd5b8051816200058490620010c4565b5f1c175f1b915050919050565b5f819050919050565b620005aa620005c760201b60201c565b620005bd8383836200061c60201b60201c565b505050565b505050565b620005d76200070e60201b60201c565b156200061a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006119062001181565b60405180910390fd5b565b6200062f8383836200072460201b60201c565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036200068a5762000674826200072960201b60201c565b620006846200078a60201b60201c565b62000709565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620006e557620006cf836200072960201b60201c565b620006df6200078a60201b60201c565b62000708565b620006f6836200072960201b60201c565b62000707826200072960201b60201c565b5b5b505050565b5f600960149054906101000a900460ff16905090565b505050565b6200078760055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206200077b83620007ae60201b60201c565b620007f360201b60201c565b50565b620007ac6006620007a06200087660201b60201c565b620007f360201b60201c565b565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f620008046200087f60201b60201c565b9050806200081a845f016200089760201b60201c565b10156200087157825f0181908060018154018082558091505060019003905f5260205f20015f90919091909150558260010182908060018154018082558091505060019003905f5260205f20015f90919091909150555b505050565b5f600254905090565b5f620008926008620008e660201b60201c565b905090565b5f80828054905003620008ad575f9050620008e1565b8160018380549050620008c19190620011a1565b81548110620008d557620008d4620011db565b5b905f5260205f20015490505b919050565b5f815f01549050919050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200096e57607f821691505b60208210810362000984576200098362000929565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620009e87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620009ab565b620009f48683620009ab565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000a3e62000a3862000a328462000a0c565b62000a15565b62000a0c565b9050919050565b5f819050919050565b62000a598362000a1e565b62000a7162000a688262000a45565b848454620009b7565b825550505050565b5f90565b62000a8762000a79565b62000a9481848462000a4e565b505050565b5b8181101562000abb5762000aaf5f8262000a7d565b60018101905062000a9a565b5050565b601f82111562000b0a5762000ad4816200098a565b62000adf846200099c565b8101602085101562000aef578190505b62000b0762000afe856200099c565b83018262000a99565b50505b505050565b5f82821c905092915050565b5f62000b2c5f198460080262000b0f565b1980831691505092915050565b5f62000b46838362000b1b565b9150826002028217905092915050565b62000b6182620008f2565b67ffffffffffffffff81111562000b7d5762000b7c620008fc565b5b62000b89825462000956565b62000b9682828562000abf565b5f60209050601f83116001811462000bcc575f841562000bb7578287015190505b62000bc3858262000b39565b86555062000c32565b601f19841662000bdc866200098a565b5f5b8281101562000c055784890151825560018201915060208501945060208101905062000bde565b8683101562000c25578489015162000c21601f89168262000b1b565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111562000cc45780860481111562000c9c5762000c9b62000c3a565b5b600185161562000cac5780820291505b808102905062000cbc8562000c67565b945062000c7c565b94509492505050565b5f8262000cde576001905062000db0565b8162000ced575f905062000db0565b816001811462000d06576002811462000d115762000d47565b600191505062000db0565b60ff84111562000d265762000d2562000c3a565b5b8360020a91508482111562000d405762000d3f62000c3a565b5b5062000db0565b5060208310610133831016604e8410600b841016171562000d815782820a90508381111562000d7b5762000d7a62000c3a565b5b62000db0565b62000d90848484600162000c73565b9250905081840481111562000daa5762000da962000c3a565b5b81810290505b9392505050565b5f60ff82169050919050565b5f62000dcf8262000a0c565b915062000ddc8362000db7565b925062000e0b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000ccd565b905092915050565b5f62000e1f8262000a0c565b915062000e2c8362000a0c565b925082820262000e3c8162000a0c565b9150828204841483151762000e565762000e5562000c3a565b5b5092915050565b5f819050919050565b62000e718162000e5d565b82525050565b62000e828162000a0c565b82525050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000eb38262000e88565b9050919050565b62000ec58162000ea7565b82525050565b5f60a08201905062000ee05f83018862000e66565b62000eef602083018762000e66565b62000efe604083018662000e66565b62000f0d606083018562000e77565b62000f1c608083018462000eba565b9695505050505050565b5f82825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f62000f6c601f8362000f26565b915062000f798262000f36565b602082019050919050565b5f6020820190508181035f83015262000f9d8162000f5e565b9050919050565b5f62000fb08262000a0c565b915062000fbd8362000a0c565b925082820190508082111562000fd85762000fd762000c3a565b5b92915050565b5f60208201905062000ff35f83018462000e77565b92915050565b5f5b838110156200101857808201518184015260208101905062000ffb565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6200103f82620008f2565b6200104b818562000f26565b93506200105d81856020860162000ff9565b620010688162001023565b840191505092915050565b5f6020820190508181035f8301526200108d818462001033565b905092915050565b5f81519050919050565b5f819050602082019050919050565b5f620010bb825162000e5d565b80915050919050565b5f620010d08262001095565b82620010dc846200109f565b9050620010e981620010ae565b925060208210156200112c57620011277fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83602003600802620009ab565b831692505b5050919050565b7f5061757361626c653a20706175736564000000000000000000000000000000005f82015250565b5f6200116960108362000f26565b9150620011768262001133565b602082019050919050565b5f6020820190508181035f8301526200119a816200115b565b9050919050565b5f620011ad8262000a0c565b9150620011ba8362000a0c565b9250828203905081811115620011d557620011d462000c3a565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b60805160a05160c05160e051610100516101205161014051613b506200125a5f395f610b5e01525f610b2a01525f611dfe01525f611ddd01525f61153001525f61158601525f6115af0152613b505ff3fe608060405234801561000f575f80fd5b50600436106101d8575f3560e01c8063715018a6116101025780639711715a116100a0578063d505accf1161006f578063d505accf1461055e578063d9d98ce41461057a578063dd62ed3e146105aa578063f2fde38b146105da576101d8565b80639711715a146104c4578063981b24d0146104ce578063a457c2d7146104fe578063a9059cbb1461052e576101d8565b80638456cb59116100dc5780638456cb591461045a57806384b0196e146104645780638da5cb5b1461048857806395d89b41146104a6576101d8565b8063715018a61461040457806379cc67901461040e5780637ecebe001461042a576101d8565b80633f4ba83a1161017a5780635c975abb116101495780635c975abb146103565780635cffe9de14610374578063613255ab146103a457806370a08231146103d4576101d8565b80633f4ba83a146102e457806340c10f19146102ee57806342966c681461030a5780634ee2cd7e14610326576101d8565b806323b872dd116101b657806323b872dd14610248578063313ce567146102785780633644e5151461029657806339509351146102b4576101d8565b806306fdde03146101dc578063095ea7b3146101fa57806318160ddd1461022a575b5f80fd5b6101e46105f6565b6040516101f191906125a5565b60405180910390f35b610214600480360381019061020f919061265a565b610686565b60405161022191906126b2565b60405180910390f35b6102326106a8565b60405161023f91906126da565b60405180910390f35b610262600480360381019061025d91906126f3565b6106b1565b60405161026f91906126b2565b60405180910390f35b6102806106df565b60405161028d919061275e565b60405180910390f35b61029e6106e7565b6040516102ab919061278f565b60405180910390f35b6102ce60048036038101906102c9919061265a565b6106f5565b6040516102db91906126b2565b60405180910390f35b6102ec61072b565b005b6103086004803603810190610303919061265a565b61073d565b005b610324600480360381019061031f91906127a8565b610753565b005b610340600480360381019061033b919061265a565b610767565b60405161034d91906126da565b60405180910390f35b61035e6107d3565b60405161036b91906126b2565b60405180910390f35b61038e6004803603810190610389919061286f565b6107e9565b60405161039b91906126b2565b60405180910390f35b6103be60048036038101906103b991906128f3565b6109ce565b6040516103cb91906126da565b60405180910390f35b6103ee60048036038101906103e991906128f3565b610a43565b6040516103fb91906126da565b60405180910390f35b61040c610a88565b005b6104286004803603810190610423919061265a565b610a9b565b005b610444600480360381019061043f91906128f3565b610abb565b60405161045191906126da565b60405180910390f35b610462610b08565b005b61046c610b1a565b60405161047f9796959493929190612a1e565b60405180910390f35b610490610c17565b60405161049d9190612aa0565b60405180910390f35b6104ae610c3f565b6040516104bb91906125a5565b60405180910390f35b6104cc610ccf565b005b6104e860048036038101906104e391906127a8565b610ce2565b6040516104f591906126da565b60405180910390f35b6105186004803603810190610513919061265a565b610d11565b60405161052591906126b2565b60405180910390f35b6105486004803603810190610543919061265a565b610d86565b60405161055591906126b2565b60405180910390f35b61057860048036038101906105739190612b0d565b610da8565b005b610594600480360381019061058f919061265a565b610ee7565b6040516105a191906126da565b60405180910390f35b6105c460048036038101906105bf9190612baa565b610f68565b6040516105d191906126da565b60405180910390f35b6105f460048036038101906105ef91906128f3565b610fea565b005b60606003805461060590612c15565b80601f016020809104026020016040519081016040528092919081815260200182805461063190612c15565b801561067c5780601f106106535761010080835404028352916020019161067c565b820191905f5260205f20905b81548152906001019060200180831161065f57829003601f168201915b5050505050905090565b5f8061069061106c565b905061069d818585611073565b600191505092915050565b5f600254905090565b5f806106bb61106c565b90506106c8858285611236565b6106d38585856112c1565b60019150509392505050565b5f6012905090565b5f6106f061152d565b905090565b5f806106ff61106c565b90506107208185856107118589610f68565b61071b9190612c72565b611073565b600191505092915050565b6107336115e3565b61073b611661565b565b6107456115e3565b61074f82826116c3565b5050565b61076461075e61106c565b82611811565b50565b5f805f6107b08460055f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206119d4565b91509150816107c7576107c285610a43565b6107c9565b805b9250505092915050565b5f600960149054906101000a900460ff16905090565b5f6107f3856109ce565b841115610835576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082c90612d15565b60405180910390fd5b5f6108408686610ee7565b905061084c87866116c3565b7f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd98773ffffffffffffffffffffffffffffffffffffffff166323e30c8b338989868a8a6040518763ffffffff1660e01b81526004016108b096959493929190612d7d565b6020604051808303815f875af11580156108cc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108f09190612deb565b14610930576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092790612e86565b60405180910390fd5b5f610939611ac1565b90506109518830848961094c9190612c72565b611236565b5f82148061098a57505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b156109a9576109a488838861099f9190612c72565b611811565b6109bf565b6109b38887611811565b6109be8882846112c1565b5b60019250505095945050505050565b5f3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614610a08575f610a3c565b610a106106a8565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610a3b9190612ea4565b5b9050919050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610a906115e3565b610a995f611ac5565b565b610aad82610aa761106c565b83611236565b610ab78282611811565b5050565b5f610b01600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20611b88565b9050919050565b610b106115e3565b610b18611b94565b565b5f6060805f805f6060610b57600a7f0000000000000000000000000000000000000000000000000000000000000000611bf790919063ffffffff16565b610b8b600b7f0000000000000000000000000000000000000000000000000000000000000000611bf790919063ffffffff16565b46305f801b5f67ffffffffffffffff811115610baa57610ba9612ed7565b5b604051908082528060200260200182016040528015610bd85781602001602082028036833780820191505090505b507f0f00000000000000000000000000000000000000000000000000000000000000959493929190965096509650965096509650965090919293949596565b5f60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610c4e90612c15565b80601f0160208091040260200160405190810160405280929190818152602001828054610c7a90612c15565b8015610cc55780601f10610c9c57610100808354040283529160200191610cc5565b820191905f5260205f20905b815481529060010190602001808311610ca857829003601f168201915b5050505050905090565b610cd76115e3565b610cdf611ca4565b50565b5f805f610cf08460066119d4565b9150915081610d0657610d016106a8565b610d08565b805b92505050919050565b5f80610d1b61106c565b90505f610d288286610f68565b905083811015610d6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6490612f74565b60405180910390fd5b610d7a8286868403611073565b60019250505092915050565b5f80610d9061106c565b9050610d9d8185856112c1565b600191505092915050565b83421115610deb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de290612fdc565b60405180910390fd5b5f7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888610e198c611cf8565b89604051602001610e2f96959493929190612ffa565b6040516020818303038152906040528051906020012090505f610e5182611d53565b90505f610e6082878787611d6c565b90508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610ed0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec7906130a3565b60405180910390fd5b610edb8a8a8a611073565b50505050505050505050565b5f3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614610f56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4d9061310b565b60405180910390fd5b610f608383611d95565b905092915050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610ff26115e3565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611060576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105790613199565b60405180910390fd5b61106981611ac5565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036110e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d890613227565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361114f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611146906132b5565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161122991906126da565b60405180910390a3505050565b5f6112418484610f68565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146112bb57818110156112ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a49061331d565b60405180910390fd5b6112ba8484848403611073565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361132f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611326906133ab565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361139d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139490613439565b60405180910390fd5b6113a8838383611d9c565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561142b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611422906134c7565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161151491906126da565b60405180910390a3611527848484611db4565b50505050565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161480156115a857507f000000000000000000000000000000000000000000000000000000000000000046145b156115d5577f000000000000000000000000000000000000000000000000000000000000000090506115e0565b6115dd611db9565b90505b90565b6115eb61106c565b73ffffffffffffffffffffffffffffffffffffffff16611609610c17565b73ffffffffffffffffffffffffffffffffffffffff161461165f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116569061352f565b60405180910390fd5b565b611669611e4e565b5f600960146101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6116ac61106c565b6040516116b99190612aa0565b60405180910390a1565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611731576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172890613597565b60405180910390fd5b61173c5f8383611d9c565b8060025f82825461174d9190612c72565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516117fa91906126da565b60405180910390a361180d5f8383611db4565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361187f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187690613625565b60405180910390fd5b61188a825f83611d9c565b5f805f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561190d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611904906136b3565b60405180910390fd5b8181035f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160025f82825403925050819055505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516119bc91906126da565b60405180910390a36119cf835f84611db4565b505050565b5f805f8411611a18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0f9061371b565b60405180910390fd5b611a20611e97565b841115611a62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5990613783565b60405180910390fd5b5f611a7885855f01611ea790919063ffffffff16565b9050835f01805490508103611a93575f809250925050611aba565b6001846001018281548110611aab57611aaa6137a1565b5b905f5260205f20015492509250505b9250929050565b5f90565b5f60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f815f01549050919050565b611b9c611f59565b6001600960146101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611be061106c565b604051611bed9190612aa0565b60405180910390a1565b606060ff5f1b8314611c1357611c0c83611fa3565b9050611c9e565b818054611c1f90612c15565b80601f0160208091040260200160405190810160405280929190818152602001828054611c4b90612c15565b8015611c965780601f10611c6d57610100808354040283529160200191611c96565b820191905f5260205f20905b815481529060010190602001808311611c7957829003601f168201915b505050505090505b92915050565b5f611caf6008612015565b5f611cb8611e97565b90507f8030e83b04d87bef53480e26263266d6ca66863aa8506aca6f2559d18aa1cb6781604051611ce991906126da565b60405180910390a18091505090565b5f80600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f209050611d4281611b88565b9150611d4d81612015565b50919050565b5f611d65611d5f61152d565b83612029565b9050919050565b5f805f611d7b87878787612069565b91509150611d8881612141565b8192505050949350505050565b5f92915050565b611da4611f59565b611daf8383836122a6565b505050565b505050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000004630604051602001611e339594939291906137ce565b60405160208183030381529060405280519060200120905090565b611e566107d3565b611e95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8c90613869565b60405180910390fd5b565b5f611ea26008611b88565b905090565b5f80838054905003611ebb575f9050611f53565b5f80848054905090505b80821015611f0c575f611ed8838361235c565b905084611ee58783612381565b5f01541115611ef657809150611f06565b600181611f039190612c72565b92505b50611ec5565b5f82118015611f32575083611f2d86600185611f289190612ea4565b612381565b5f0154145b15611f4d57600182611f449190612ea4565b92505050611f53565b81925050505b92915050565b611f616107d3565b15611fa1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f98906138d1565b60405180910390fd5b565b60605f611faf836123a0565b90505f602067ffffffffffffffff811115611fcd57611fcc612ed7565b5b6040519080825280601f01601f191660200182016040528015611fff5781602001600182028036833780820191505090505b5090508181528360208201528092505050919050565b6001815f015f828254019250508190555050565b5f6040517f190100000000000000000000000000000000000000000000000000000000000081528360028201528260228201526042812091505092915050565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0835f1c11156120a1575f600391509150612138565b5f6001878787876040515f81526020016040526040516120c494939291906138ef565b6020604051602081039080840390855afa1580156120e4573d5f803e3d5ffd5b5050506020604051035190505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612130575f60019250925050612138565b805f92509250505b94509492505050565b5f600481111561215457612153613932565b5b81600481111561216757612166613932565b5b03156122a3576001600481111561218157612180613932565b5b81600481111561219457612193613932565b5b036121d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121cb906139a9565b60405180910390fd5b600260048111156121e8576121e7613932565b5b8160048111156121fb576121fa613932565b5b0361223b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223290613a11565b60405180910390fd5b6003600481111561224f5761224e613932565b5b81600481111561226257612261613932565b5b036122a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229990613a9f565b60405180910390fd5b5b50565b6122b18383836123ee565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036122fa576122ed826123f3565b6122f5612444565b612357565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361234357612336836123f3565b61233e612444565b612356565b61234c836123f3565b612355826123f3565b5b5b505050565b5f600282841861236c9190613aea565b8284166123799190612c72565b905092915050565b5f80835f528260205f2001905061239781612458565b91505092915050565b5f8060ff835f1c169050601f8111156123e5576040517fb3512b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80915050919050565b505050565b61244160055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2061243c83610a43565b612461565b50565b61245660066124516106a8565b612461565b565b5f819050919050565b5f61246a611e97565b905080612478845f016124d3565b10156124ce57825f0181908060018154018082558091505060019003905f5260205f20015f90919091909150558260010182908060018154018082558091505060019003905f5260205f20015f90919091909150555b505050565b5f808280549050036124e7575f9050612516565b81600183805490506124f99190612ea4565b8154811061250a576125096137a1565b5b905f5260205f20015490505b919050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612552578082015181840152602081019050612537565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6125778261251b565b6125818185612525565b9350612591818560208601612535565b61259a8161255d565b840191505092915050565b5f6020820190508181035f8301526125bd818461256d565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6125f6826125cd565b9050919050565b612606816125ec565b8114612610575f80fd5b50565b5f81359050612621816125fd565b92915050565b5f819050919050565b61263981612627565b8114612643575f80fd5b50565b5f8135905061265481612630565b92915050565b5f80604083850312156126705761266f6125c5565b5b5f61267d85828601612613565b925050602061268e85828601612646565b9150509250929050565b5f8115159050919050565b6126ac81612698565b82525050565b5f6020820190506126c55f8301846126a3565b92915050565b6126d481612627565b82525050565b5f6020820190506126ed5f8301846126cb565b92915050565b5f805f6060848603121561270a576127096125c5565b5b5f61271786828701612613565b935050602061272886828701612613565b925050604061273986828701612646565b9150509250925092565b5f60ff82169050919050565b61275881612743565b82525050565b5f6020820190506127715f83018461274f565b92915050565b5f819050919050565b61278981612777565b82525050565b5f6020820190506127a25f830184612780565b92915050565b5f602082840312156127bd576127bc6125c5565b5b5f6127ca84828501612646565b91505092915050565b5f6127dd826125ec565b9050919050565b6127ed816127d3565b81146127f7575f80fd5b50565b5f81359050612808816127e4565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261282f5761282e61280e565b5b8235905067ffffffffffffffff81111561284c5761284b612812565b5b60208301915083600182028301111561286857612867612816565b5b9250929050565b5f805f805f60808688031215612888576128876125c5565b5b5f612895888289016127fa565b95505060206128a688828901612613565b94505060406128b788828901612646565b935050606086013567ffffffffffffffff8111156128d8576128d76125c9565b5b6128e48882890161281a565b92509250509295509295909350565b5f60208284031215612908576129076125c5565b5b5f61291584828501612613565b91505092915050565b5f7fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b6129528161291e565b82525050565b612961816125ec565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61299981612627565b82525050565b5f6129aa8383612990565b60208301905092915050565b5f602082019050919050565b5f6129cc82612967565b6129d68185612971565b93506129e183612981565b805f5b83811015612a115781516129f8888261299f565b9750612a03836129b6565b9250506001810190506129e4565b5085935050505092915050565b5f60e082019050612a315f83018a612949565b8181036020830152612a43818961256d565b90508181036040830152612a57818861256d565b9050612a6660608301876126cb565b612a736080830186612958565b612a8060a0830185612780565b81810360c0830152612a9281846129c2565b905098975050505050505050565b5f602082019050612ab35f830184612958565b92915050565b612ac281612743565b8114612acc575f80fd5b50565b5f81359050612add81612ab9565b92915050565b612aec81612777565b8114612af6575f80fd5b50565b5f81359050612b0781612ae3565b92915050565b5f805f805f805f60e0888a031215612b2857612b276125c5565b5b5f612b358a828b01612613565b9750506020612b468a828b01612613565b9650506040612b578a828b01612646565b9550506060612b688a828b01612646565b9450506080612b798a828b01612acf565b93505060a0612b8a8a828b01612af9565b92505060c0612b9b8a828b01612af9565b91505092959891949750929550565b5f8060408385031215612bc057612bbf6125c5565b5b5f612bcd85828601612613565b9250506020612bde85828601612613565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612c2c57607f821691505b602082108103612c3f57612c3e612be8565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612c7c82612627565b9150612c8783612627565b9250828201905080821115612c9f57612c9e612c45565b5b92915050565b7f4552433230466c6173684d696e743a20616d6f756e742065786365656473206d5f8201527f6178466c6173684c6f616e000000000000000000000000000000000000000000602082015250565b5f612cff602b83612525565b9150612d0a82612ca5565b604082019050919050565b5f6020820190508181035f830152612d2c81612cf3565b9050919050565b5f82825260208201905092915050565b828183375f83830152505050565b5f612d5c8385612d33565b9350612d69838584612d43565b612d728361255d565b840190509392505050565b5f60a082019050612d905f830189612958565b612d9d6020830188612958565b612daa60408301876126cb565b612db760608301866126cb565b8181036080830152612dca818486612d51565b9050979650505050505050565b5f81519050612de581612ae3565b92915050565b5f60208284031215612e0057612dff6125c5565b5b5f612e0d84828501612dd7565b91505092915050565b7f4552433230466c6173684d696e743a20696e76616c69642072657475726e20765f8201527f616c756500000000000000000000000000000000000000000000000000000000602082015250565b5f612e70602483612525565b9150612e7b82612e16565b604082019050919050565b5f6020820190508181035f830152612e9d81612e64565b9050919050565b5f612eae82612627565b9150612eb983612627565b9250828203905081811115612ed157612ed0612c45565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f612f5e602583612525565b9150612f6982612f04565b604082019050919050565b5f6020820190508181035f830152612f8b81612f52565b9050919050565b7f45524332305065726d69743a206578706972656420646561646c696e650000005f82015250565b5f612fc6601d83612525565b9150612fd182612f92565b602082019050919050565b5f6020820190508181035f830152612ff381612fba565b9050919050565b5f60c08201905061300d5f830189612780565b61301a6020830188612958565b6130276040830187612958565b61303460608301866126cb565b61304160808301856126cb565b61304e60a08301846126cb565b979650505050505050565b7f45524332305065726d69743a20696e76616c6964207369676e617475726500005f82015250565b5f61308d601e83612525565b915061309882613059565b602082019050919050565b5f6020820190508181035f8301526130ba81613081565b9050919050565b7f4552433230466c6173684d696e743a2077726f6e6720746f6b656e00000000005f82015250565b5f6130f5601b83612525565b9150613100826130c1565b602082019050919050565b5f6020820190508181035f830152613122816130e9565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613183602683612525565b915061318e82613129565b604082019050919050565b5f6020820190508181035f8301526131b081613177565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613211602483612525565b915061321c826131b7565b604082019050919050565b5f6020820190508181035f83015261323e81613205565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61329f602283612525565b91506132aa82613245565b604082019050919050565b5f6020820190508181035f8301526132cc81613293565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f613307601d83612525565b9150613312826132d3565b602082019050919050565b5f6020820190508181035f830152613334816132fb565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613395602583612525565b91506133a08261333b565b604082019050919050565b5f6020820190508181035f8301526133c281613389565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613423602383612525565b915061342e826133c9565b604082019050919050565b5f6020820190508181035f83015261345081613417565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f6134b1602683612525565b91506134bc82613457565b604082019050919050565b5f6020820190508181035f8301526134de816134a5565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613519602083612525565b9150613524826134e5565b602082019050919050565b5f6020820190508181035f8301526135468161350d565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f613581601f83612525565b915061358c8261354d565b602082019050919050565b5f6020820190508181035f8301526135ae81613575565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f206164647265735f8201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b5f61360f602183612525565b915061361a826135b5565b604082019050919050565b5f6020820190508181035f83015261363c81613603565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e5f8201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b5f61369d602283612525565b91506136a882613643565b604082019050919050565b5f6020820190508181035f8301526136ca81613691565b9050919050565b7f4552433230536e617073686f743a2069642069732030000000000000000000005f82015250565b5f613705601683612525565b9150613710826136d1565b602082019050919050565b5f6020820190508181035f830152613732816136f9565b9050919050565b7f4552433230536e617073686f743a206e6f6e6578697374656e742069640000005f82015250565b5f61376d601d83612525565b915061377882613739565b602082019050919050565b5f6020820190508181035f83015261379a81613761565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60a0820190506137e15f830188612780565b6137ee6020830187612780565b6137fb6040830186612780565b61380860608301856126cb565b6138156080830184612958565b9695505050505050565b7f5061757361626c653a206e6f74207061757365640000000000000000000000005f82015250565b5f613853601483612525565b915061385e8261381f565b602082019050919050565b5f6020820190508181035f83015261388081613847565b9050919050565b7f5061757361626c653a20706175736564000000000000000000000000000000005f82015250565b5f6138bb601083612525565b91506138c682613887565b602082019050919050565b5f6020820190508181035f8301526138e8816138af565b9050919050565b5f6080820190506139025f830187612780565b61390f602083018661274f565b61391c6040830185612780565b6139296060830184612780565b95945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b7f45434453413a20696e76616c6964207369676e617475726500000000000000005f82015250565b5f613993601883612525565b915061399e8261395f565b602082019050919050565b5f6020820190508181035f8301526139c081613987565b9050919050565b7f45434453413a20696e76616c6964207369676e6174757265206c656e677468005f82015250565b5f6139fb601f83612525565b9150613a06826139c7565b602082019050919050565b5f6020820190508181035f830152613a28816139ef565b9050919050565b7f45434453413a20696e76616c6964207369676e6174757265202773272076616c5f8201527f7565000000000000000000000000000000000000000000000000000000000000602082015250565b5f613a89602283612525565b9150613a9482613a2f565b604082019050919050565b5f6020820190508181035f830152613ab681613a7d565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613af482612627565b9150613aff83612627565b925082613b0f57613b0e613abd565b5b82820490509291505056fea2646970667358221220dc3abca8d8eab61f756a32ee82b0a11eb175ea0abe99053389e8783d19fe8d1964736f6c63430008140033