LyoKICogIGFybWJvb3QgLSBTdGFydHVwIENvZGUgZm9yIEFSTTkyNkVKUyBDUFUtY29yZQogKgogKiAgQ29weXJpZ2h0IChjKSAyMDAzICBUZXhhcyBJbnN0cnVtZW50cwogKgogKiAgLS0tLS0gQWRhcHRlZCBmb3IgT01BUDE2MTAgT01BUDczMCBmcm9tIEFSTTkyNXQgY29kZSAtLS0tLS0KICoKICogIENvcHlyaWdodCAoYykgMjAwMQlNYXJpdXMgR3L2Z2VyIDxtYWdAc3lzZ28uZGU+CiAqICBDb3B5cmlnaHQgKGMpIDIwMDIJQWxleCBa/HBrZSA8YXp1QHN5c2dvLmRlPgogKiAgQ29weXJpZ2h0IChjKSAyMDAyCUdhcnkgSmVubmVqb2huIDxnYXJ5akBkZW54LmRlPgogKiAgQ29weXJpZ2h0IChjKSAyMDAzCVJpY2hhcmQgV29vZHJ1ZmYgPHItd29vZHJ1ZmYyQHRpLmNvbT4KICogIENvcHlyaWdodCAoYykgMjAwMwlLc2hpdGlqIDxrc2hpdGlqQHRpLmNvbT4KICoKICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKICogcHJvamVjdC4KICoKICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcwogKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgogKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKICogTUEgMDIxMTEtMTMwNyBVU0EKICovCgoKI2luY2x1ZGUgPGNvbmZpZy5oPgojaW5jbHVkZSA8dmVyc2lvbi5oPgoKLyoKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICoKICogSnVtcCB2ZWN0b3IgdGFibGUKICoKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICovCgouZ2xvYmwgX3N0YXJ0Cl9zdGFydDoKCWIJcmVzZXQKCWxkcglwYywgX3VuZGVmaW5lZF9pbnN0cnVjdGlvbgoJbGRyCXBjLCBfc29mdHdhcmVfaW50ZXJydXB0CglsZHIJcGMsIF9wcmVmZXRjaF9hYm9ydAoJbGRyCXBjLCBfZGF0YV9hYm9ydAoJbGRyCXBjLCBfbm90X3VzZWQKCWxkcglwYywgX2lycQoJbGRyCXBjLCBfZmlxCgpfdW5kZWZpbmVkX2luc3RydWN0aW9uOgoJLndvcmQgdW5kZWZpbmVkX2luc3RydWN0aW9uCl9zb2Z0d2FyZV9pbnRlcnJ1cHQ6Cgkud29yZCBzb2Z0d2FyZV9pbnRlcnJ1cHQKX3ByZWZldGNoX2Fib3J0OgoJLndvcmQgcHJlZmV0Y2hfYWJvcnQKX2RhdGFfYWJvcnQ6Cgkud29yZCBkYXRhX2Fib3J0Cl9ub3RfdXNlZDoKCS53b3JkIG5vdF91c2VkCl9pcnE6Cgkud29yZCBpcnEKX2ZpcToKCS53b3JkIGZpcQoKCS5iYWxpZ25sIDE2LDB4ZGVhZGJlZWYKCi8qCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqCiAqIFN0YXJ0dXAgQ29kZSAocmVzZXQgdmVjdG9yKQogKgogKiBkbyBpbXBvcnRhbnQgaW5pdCBvbmx5IGlmIHdlIGRvbid0IHN0YXJ0IGZyb20gbWVtb3J5IQogKiBzZXR1cCBtZW1vcnkgYW5kIGJvYXJkIHNwZWNpZmljIGJpdHMgcHJpb3IgdG8gcmVsb2NhdGlvbi4KICogcmVsb2NhdGUgYXJtYm9vdCB0byByYW0KICogc2V0dXAgc3RhY2sKICoKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICovCgpfVEVYVF9CQVNFOgoJLndvcmQJVEVYVF9CQVNFIC8qIGFkZHJlc3Mgb2YgX3N0YXJ0IGluIHRoZSBsaW5rZWQgaW1hZ2UgKi8KCi5nbG9ibCBfYXJtYm9vdF9zdGFydApfYXJtYm9vdF9zdGFydDoKCS53b3JkIF9zdGFydAoKLyoKICogVGhlc2UgYXJlIGRlZmluZWQgaW4gdGhlIGJvYXJkLXNwZWNpZmljIGxpbmtlciBzY3JpcHQuCiAqLwouZ2xvYmwgX2Jzc19zdGFydApfYnNzX3N0YXJ0OgoJLndvcmQgX19ic3Nfc3RhcnQKCi5nbG9ibCBfYnNzX2VuZApfYnNzX2VuZDoKCS53b3JkIF9lbmQKCiNpZmRlZiBDT05GSUdfVVNFX0lSUQovKiBJUlEgc3RhY2sgbWVtb3J5IChjYWxjdWxhdGVkIGF0IHJ1bi10aW1lKSAqLwouZ2xvYmwgSVJRX1NUQUNLX1NUQVJUCklSUV9TVEFDS19TVEFSVDoKCS53b3JkCTB4MGJhZGMwZGUKCi8qIElSUSBzdGFjayBtZW1vcnkgKGNhbGN1bGF0ZWQgYXQgcnVuLXRpbWUpICovCi5nbG9ibCBGSVFfU1RBQ0tfU1RBUlQKRklRX1NUQUNLX1NUQVJUOgoJLndvcmQgMHgwYmFkYzBkZQojZW5kaWYKCgovKgogKiB0aGUgYWN0dWFsIHJlc2V0IGNvZGUKICovCi5nbG9ibCByZXNldApyZXNldDoKCS8qCgkgKiBzZXQgdGhlIGNwdSB0byBTVkMzMiBtb2RlCgkgKi8KCW1ycwlyMCxjcHNyCgliaWMJcjAscjAsIzB4MWYKCW9ycglyMCxyMCwjMHhkMwoJbXNyCWNwc3IscjAKCgkvKgoJICogd2UgZG8gc3lzLWNyaXRpY2FsIGluaXRzIG9ubHkgYXQgcmVib290LAoJICogbm90IHdoZW4gYm9vdGluZyBmcm9tIHJhbSEKCSAqLwojaWZkZWYgQ09ORklHX0lOSVRfQ1JJVElDQUwKCWJsCWNwdV9pbml0X2NyaXQKI2VuZGlmCgpyZWxvY2F0ZToJCQkJLyogcmVsb2NhdGUgVS1Cb290IHRvIFJBTQkgICAgKi8KCWFkcglyMCwgX3N0YXJ0CQkvKiBwYyByZWxhdGl2ZSAgYWRkcmVzcyBvZiBsYWJlbCAgICAqLwoJbGRyCXIxLCBfVEVYVF9CQVNFCQkvKiBsaW5rZWQgaW1hZ2UgYWRkcmVzcyBvZiBsYWJlbCAgICAqLwoJY21wCXIwLCByMSAgICAgICAgICAgICAgICAgIC8qIHRlc3QgaWYgd2UgcnVuIGZyb20gZmxhc2ggb3IgUkFNICovCgliZXEJc3RhY2tfc2V0dXAgICAgICAgICAgICAgLyogaWZlcSB3ZSBhcmUgaW4gdGhlIFJBTSBjb3B5ICAgICAgKi8KCglsZHIJcjIsIF9hcm1ib290X3N0YXJ0CglsZHIJcjMsIF9ic3Nfc3RhcnQKCXN1YglyMiwgcjMsIHIyCQkvKiByMiA8LSBzaXplIG9mIGFybWJvb3QgICAgICAgICAgICAqLwoJYWRkCXIyLCByMCwgcjIJCS8qIHIyIDwtIHNvdXJjZSBlbmQgYWRkcmVzcyAgICAgICAgICovCgpjb3B5X2xvb3A6CglsZG1pYQlyMCEsIHtyMy1yMTB9CQkvKiBjb3B5IGZyb20gc291cmNlIGFkZHJlc3MgW3IwXSAgICAqLwoJc3RtaWEJcjEhLCB7cjMtcjEwfQkJLyogY29weSB0byAgIHRhcmdldCBhZGRyZXNzIFtyMV0gICAgKi8KCWNtcAlyMCwgcjIJCQkvKiB1bnRpbCBzb3VyY2UgZW5kIGFkZHJlZWUgW3IyXSAgICAqLwoJYmxlCWNvcHlfbG9vcAoKCS8qIFNldCB1cCB0aGUgc3RhY2sJCQkJCQkgICAgKi8Kc3RhY2tfc2V0dXA6CglsZHIJcjAsIF9URVhUX0JBU0UJCS8qIHVwcGVyIDEyOCBLaUI6IHJlbG9jYXRlZCB1Ym9vdCAgICovCglzdWIJcjAsIHIwLCAjQ09ORklHX1NZU19NQUxMT0NfTEVOCS8qIG1hbGxvYyBhcmVhICAgICAgICAgICAgICAgICAgICAgICovCglzdWIJcjAsIHIwLCAjQ09ORklHX1NZU19HQkxfREFUQV9TSVpFIC8qIGJkaW5mbyAgICAgICAgICAgICAgICAgICAgICAgICovCiNpZmRlZiBDT05GSUdfVVNFX0lSUQoJc3ViCXIwLCByMCwgIyhDT05GSUdfU1RBQ0tTSVpFX0lSUStDT05GSUdfU1RBQ0tTSVpFX0ZJUSkKI2VuZGlmCglzdWIJc3AsIHIwLCAjMTIJCS8qIGxlYXZlIDMgd29yZHMgZm9yIGFib3J0LXN0YWNrICAgICovCgpjbGVhcl9ic3M6CglsZHIJcjAsIF9ic3Nfc3RhcnQJCS8qIGZpbmQgc3RhcnQgb2YgYnNzIHNlZ21lbnQgICAgICAgICovCglsZHIJcjEsIF9ic3NfZW5kCQkvKiBzdG9wIGhlcmUgICAgICAgICAgICAgICAgICAgICAgICAqLwoJbW92CXIyLCAjMHgwMDAwMDAwMAkJLyogY2xlYXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KCmNsYnNzX2w6c3RyCXIyLCBbcjBdCQkvKiBjbGVhciBsb29wLi4uICAgICAgICAgICAgICAgICAgICAqLwoJYWRkCXIwLCByMCwgIzQKCWNtcAlyMCwgcjEKCWJsZQljbGJzc19sCgoJbGRyCXBjLCBfc3RhcnRfYXJtYm9vdAoKX3N0YXJ0X2FybWJvb3Q6Cgkud29yZCBzdGFydF9hcm1ib290CgovKgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKgogKiBDUFVfaW5pdF9jcml0aWNhbCByZWdpc3RlcnMKICoKICogc2V0dXAgaW1wb3J0YW50IHJlZ2lzdGVycwogKiBzZXR1cCBtZW1vcnkgdGltaW5nCiAqCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqLwoKY3B1X2luaXRfY3JpdDoKCS8qICBhcm1faW50X2dlbmVyaWMgYXNzdW1lcyB0aGUgQVJNIGJvb3QgbW9uaXRvciwgb3IgdXNlciBzb2Z0d2FyZSwKCSAqIGhhcyBpbml0aWFsaXplZCB0aGUgcGxhdGZvcm0KCSAqLwoJbW92CXBjLCBscgkJLyogYmFjayB0byBteSBjYWxsZXIgKi8KLyoKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICoKICogSW50ZXJydXB0IGhhbmRsaW5nCiAqCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqLwoKQApAIElSUSBzdGFjayBmcmFtZS4KQAojZGVmaW5lIFNfRlJBTUVfU0laRQk3MgoKI2RlZmluZSBTX09MRF9SMAk2OAojZGVmaW5lIFNfUFNSCQk2NAojZGVmaW5lIFNfUEMJCTYwCiNkZWZpbmUgU19MUgkJNTYKI2RlZmluZSBTX1NQCQk1MgoKI2RlZmluZSBTX0lQCQk0OAojZGVmaW5lIFNfRlAJCTQ0CiNkZWZpbmUgU19SMTAJCTQwCiNkZWZpbmUgU19SOQkJMzYKI2RlZmluZSBTX1I4CQkzMgojZGVmaW5lIFNfUjcJCTI4CiNkZWZpbmUgU19SNgkJMjQKI2RlZmluZSBTX1I1CQkyMAojZGVmaW5lIFNfUjQJCTE2CiNkZWZpbmUgU19SMwkJMTIKI2RlZmluZSBTX1IyCQk4CiNkZWZpbmUgU19SMQkJNAojZGVmaW5lIFNfUjAJCTAKCiNkZWZpbmUgTU9ERV9TVkMgMHgxMwojZGVmaW5lIElfQklUCSAweDgwCgovKgogKiB1c2UgYmFkX3NhdmVfdXNlcl9yZWdzIGZvciBhYm9ydC9wcmVmZXRjaC91bmRlZi9zd2kgLi4uCiAqIHVzZSBpcnFfc2F2ZV91c2VyX3JlZ3MgLyBpcnFfcmVzdG9yZV91c2VyX3JlZ3MgZm9yIElSUS9GSVEgaGFuZGxpbmcKICovCgoJLm1hY3JvCWJhZF9zYXZlX3VzZXJfcmVncwoJQCBjYXJ2ZSBvdXQgYSBmcmFtZSBvbiBjdXJyZW50IHVzZXIgc3RhY2sKCXN1YglzcCwgc3AsICNTX0ZSQU1FX1NJWkUKCXN0bWlhCXNwLCB7cjAgLSByMTJ9CUAgU2F2ZSB1c2VyIHJlZ2lzdGVycyAobm93IGluIHN2YyBtb2RlKSByMC1yMTIKCglsZHIJcjIsIF9hcm1ib290X3N0YXJ0CglzdWIJcjIsIHIyLCAjKENPTkZJR19TVEFDS1NJWkUrQ09ORklHX1NZU19NQUxMT0NfTEVOKQoJc3ViCXIyLCByMiwgIyhDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUrOCkgIEAgc2V0IGJhc2UgMiB3b3JkcyBpbnRvIGFib3J0IHN0YWNrCglAIGdldCB2YWx1ZXMgZm9yICJhYm9ydGVkIiBwYyBhbmQgY3BzciAoaW50byBwYXJtIHJlZ3MpCglsZG1pYQlyMiwge3IyIC0gcjN9CglhZGQJcjAsIHNwLCAjU19GUkFNRV9TSVpFCQlAIGdyYWIgcG9pbnRlciB0byBvbGQgc3RhY2sKCWFkZAlyNSwgc3AsICNTX1NQCgltb3YJcjEsIGxyCglzdG1pYQlyNSwge3IwIC0gcjN9CUAgc2F2ZSBzcF9TVkMsIGxyX1NWQywgcGMsIGNwc3IKCW1vdglyMCwgc3AJCUAgc2F2ZSBjdXJyZW50IHN0YWNrIGludG8gcjAgKHBhcmFtIHJlZ2lzdGVyKQoJLmVuZG0KCgkubWFjcm8JaXJxX3NhdmVfdXNlcl9yZWdzCglzdWIJc3AsIHNwLCAjU19GUkFNRV9TSVpFCglzdG1pYQlzcCwge3IwIC0gcjEyfQkJCUAgQ2FsbGluZyByMC1yMTIKCUAgISEhISBSOCBORUVEUyB0byBiZSBzYXZlZCAhISEhIGEgcmVzZXJ2ZWQgc3RhY2sgc3BvdCB3b3VsZCBiZSBnb29kLgoJYWRkCXI4LCBzcCwgI1NfUEMKCXN0bWRiCXI4LCB7c3AsIGxyfV4JCUAgQ2FsbGluZyBTUCwgTFIKCXN0cglsciwgW3I4LCAjMF0JCUAgU2F2ZSBjYWxsaW5nIFBDCgltcnMJcjYsIHNwc3IKCXN0cglyNiwgW3I4LCAjNF0JCUAgU2F2ZSBDUFNSCglzdHIJcjAsIFtyOCwgIzhdCQlAIFNhdmUgT0xEX1IwCgltb3YJcjAsIHNwCgkuZW5kbQoKCS5tYWNybwlpcnFfcmVzdG9yZV91c2VyX3JlZ3MKCWxkbWlhCXNwLCB7cjAgLSBscn1eCQkJQCBDYWxsaW5nIHIwIC0gbHIKCW1vdglyMCwgcjAKCWxkcglsciwgW3NwLCAjU19QQ10JCQlAIEdldCBQQwoJYWRkCXNwLCBzcCwgI1NfRlJBTUVfU0laRQoJc3VicwlwYywgbHIsICM0CQlAIHJldHVybiAmIG1vdmUgc3Bzcl9zdmMgaW50byBjcHNyCgkuZW5kbQoKCS5tYWNybyBnZXRfYmFkX3N0YWNrCglsZHIJcjEzLCBfYXJtYm9vdF9zdGFydAkJQCBzZXR1cCBvdXIgbW9kZSBzdGFjawoJc3ViCXIxMywgcjEzLCAjKENPTkZJR19TVEFDS1NJWkUrQ09ORklHX1NZU19NQUxMT0NfTEVOKQoJc3ViCXIxMywgcjEzLCAjKENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSs4KSBAIHJlc2VydmVkIGEgY291cGxlIHNwb3RzIGluIGFib3J0IHN0YWNrCgoJc3RyCWxyLCBbcjEzXQlAIHNhdmUgY2FsbGVyIGxyIGluIHBvc2l0aW9uIDAgb2Ygc2F2ZWQgc3RhY2sKCW1ycwlsciwgc3BzcglAIGdldCB0aGUgc3BzcgoJc3RyCWxyLCBbcjEzLCAjNF0JQCBzYXZlIHNwc3IgaW4gcG9zaXRpb24gMSBvZiBzYXZlZCBzdGFjawoJbW92CXIxMywgI01PREVfU1ZDCUAgcHJlcGFyZSBTVkMtTW9kZQoJQCBtc3IJc3Bzcl9jLCByMTMKCW1zcglzcHNyLCByMTMJQCBzd2l0Y2ggbW9kZXMsIG1ha2Ugc3VyZSBtb3ZlcyB3aWxsIGV4ZWN1dGUKCW1vdglsciwgcGMJCUAgY2FwdHVyZSByZXR1cm4gcGMKCW1vdnMJcGMsIGxyCQlAIGp1bXAgdG8gbmV4dCBpbnN0cnVjdGlvbiAmIHN3aXRjaCBtb2Rlcy4KCS5lbmRtCgoJLm1hY3JvIGdldF9pcnFfc3RhY2sJCQlAIHNldHVwIElSUSBzdGFjawoJbGRyCXNwLCBJUlFfU1RBQ0tfU1RBUlQKCS5lbmRtCgoJLm1hY3JvIGdldF9maXFfc3RhY2sJCQlAIHNldHVwIEZJUSBzdGFjawoJbGRyCXNwLCBGSVFfU1RBQ0tfU1RBUlQKCS5lbmRtCgovKgogKiBleGNlcHRpb24gaGFuZGxlcnMKICovCgkuYWxpZ24gIDUKLmdsb2JsIHVuZGVmaW5lZF9pbnN0cnVjdGlvbgp1bmRlZmluZWRfaW5zdHJ1Y3Rpb246CglnZXRfYmFkX3N0YWNrCgliYWRfc2F2ZV91c2VyX3JlZ3MKCWJsCWRvX3VuZGVmaW5lZF9pbnN0cnVjdGlvbgoKCS5hbGlnbgk1Ci5nbG9ibCBzb2Z0d2FyZV9pbnRlcnJ1cHQKc29mdHdhcmVfaW50ZXJydXB0OgoJZ2V0X2JhZF9zdGFjawoJYmFkX3NhdmVfdXNlcl9yZWdzCglibAlkb19zb2Z0d2FyZV9pbnRlcnJ1cHQKCgkuYWxpZ24JNQouZ2xvYmwgcHJlZmV0Y2hfYWJvcnQKcHJlZmV0Y2hfYWJvcnQ6CglnZXRfYmFkX3N0YWNrCgliYWRfc2F2ZV91c2VyX3JlZ3MKCWJsCWRvX3ByZWZldGNoX2Fib3J0CgoJLmFsaWduCTUKLmdsb2JsIGRhdGFfYWJvcnQKZGF0YV9hYm9ydDoKCWdldF9iYWRfc3RhY2sKCWJhZF9zYXZlX3VzZXJfcmVncwoJYmwJZG9fZGF0YV9hYm9ydAoKCS5hbGlnbgk1Ci5nbG9ibCBub3RfdXNlZApub3RfdXNlZDoKCWdldF9iYWRfc3RhY2sKCWJhZF9zYXZlX3VzZXJfcmVncwoJYmwJZG9fbm90X3VzZWQKCiNpZmRlZiBDT05GSUdfVVNFX0lSUQoJLmFsaWduCTUKLmdsb2JsIGlycQppcnE6CglnZXRfaXJxX3N0YWNrCglpcnFfc2F2ZV91c2VyX3JlZ3MKCWJsCWRvX2lycQoJaXJxX3Jlc3RvcmVfdXNlcl9yZWdzCgoJLmFsaWduCTUKLmdsb2JsIGZpcQpmaXE6CglnZXRfZmlxX3N0YWNrCgkvKiBzb21lb25lIG91Z2h0IHRvIHdyaXRlIGEgbW9yZSBlZmZpY3Rpb24gZmlxX3NhdmVfdXNlcl9yZWdzICovCglpcnFfc2F2ZV91c2VyX3JlZ3MKCWJsCWRvX2ZpcQoJaXJxX3Jlc3RvcmVfdXNlcl9yZWdzCgojZWxzZQoKCS5hbGlnbgk1Ci5nbG9ibCBpcnEKaXJxOgoJZ2V0X2JhZF9zdGFjawoJYmFkX3NhdmVfdXNlcl9yZWdzCglibAlkb19pcnEKCgkuYWxpZ24JNQouZ2xvYmwgZmlxCmZpcToKCWdldF9iYWRfc3RhY2sKCWJhZF9zYXZlX3VzZXJfcmVncwoJYmwJZG9fZmlxCgojZW5kaWYK