IyAkSWQkCgojIGxhbmd1YWdlIGVzCgojIHBhY2thZ2Ugb3JnLmFwYWNoZS5jb3lvdGUuaHR0cDExCgojCiMgSHR0cDExUHJvdG9jb2wKIwoKaHR0cDExcHJvdG9jb2wuZW5kcG9pbnQuaW5pdGVycm9yPUVycm9yIGluaWNpYWxpemFuZG8gcHVudG8gZmluYWwgKGVuZHBvaW50KQpodHRwMTFwcm90b2NvbC5lbmRwb2ludC5zdGFydGVycm9yPUVycm9yIGFycmFuY2FuZG8gcHVudG8gZmluYWwgKGVuZHBvaW50KQpodHRwMTFwcm90b2NvbC5pbml0PUluaWNpYWxpemFuZG8gQ295b3RlIEhUVFAvMS4xIGVuIHB1ZXJ0byB7MH0KaHR0cDExcHJvdG9jb2wucHJvdG8uZXJyb3I9RXJyb3IgbGV5ZW5kbyByZXF1ZXJpbWllbnRvLCBpZ25vcmFkbwpodHRwMTFwcm90b2NvbC5wcm90by5pb2V4Y2VwdGlvbi5kZWJ1Zz1JT0V4Y2VwdGlvbiBsZXllbmRvIHJlcXVlcmltaWVudG8KaHR0cDExcHJvdG9jb2wucHJvdG8uaW9leGNlcHRpb24uaW5mbz1JT0V4Y2VwdGlvbiBsZXllbmRvIHJlcXVlcmltaWVudG8sIGlnbm9yYWRhCmh0dHAxMXByb3RvY29sLnByb3RvLnNvY2tldGV4Y2VwdGlvbi5kZWJ1Zz1Tb2NrZXRFeGNlcHRpb24gbGV5ZW5kbyByZXF1ZXJpbWllbnRvCmh0dHAxMXByb3RvY29sLnByb3RvLnNvY2tldGV4Y2VwdGlvbi5pbmZvPVNvY2tldEV4Y2VwdGlvbiBsZXllbmRvIHJlcXVlcmltaWVudG8sIGlnbm9yYWRhCmh0dHAxMXByb3RvY29sLmdldGF0dHJpYnV0ZT1BdHJpYnV0byB7MH0KaHR0cDExcHJvdG9jb2wuc2V0YXR0cmlidXRlPUF0cmlidXRvIHswfTogezF9Cmh0dHAxMXByb3RvY29sLnNvY2tldGZhY3RvcnkuaW5pdGVycm9yPUVycm9yIGluaWNpYWxpemFuZG8gZuFicmljYSBkZSBlbmNodWZlcyAoc29ja2V0cykKaHR0cDExcHJvdG9jb2wuc3RhcnQ9QXJyYW5jYW5kbyBDb3lvdGUgSFRUUC8xLjEgZW4gcHVlcnRvIHswfQoKIwojIEh0dHAxMVByb2Nlc3NvcgojCgojCiMgSW50ZXJuYWxJbnB1dEJ1ZmZlcgojCgppaWIuZW9mLmVycm9yPUluZXNwZXJhZG8gRmluIERlIEFyY2hpdm8gKEVPRikgbGXtZG8gZW4gZWwgZW5jaHVmZSAoc29ja2V0KQppaWIucmVxdWVzdGhlYWRlcnRvb2xhcmdlLmVycm9yPUxhIGNhYmVjZXJhIGRlbCByZXF1ZXJpbWllbnRvIGVzIGRlbWFzaWRvIGdyYW5kZQoK