ZGlmZiAtLWdpdCBhL2JvYXJkL3RyaXplcHNpdi9NYWtlZmlsZSBiL2JvYXJkL3RyaXplcHNpdi9NYWtlZmlsZQppbmRleCA0NGMwZDQ5Li4wNjBhYzg5IDEwMDY0NAotLS0gYS9ib2FyZC90cml6ZXBzaXYvTWFrZWZpbGUKKysrIGIvYm9hcmQvdHJpemVwc2l2L01ha2VmaWxlCkBAIC0yNiwxNyArMjYsMTUgQEAKIExJQgk9ICQob2JqKWxpYiQoQk9BUkQpLmEKIAogQ09CSlMJOj0gY29ueHMubyBlZXByb20ubwotU09CSlMJOj0gbG93bGV2ZWxfaW5pdC5vIHB4YXZvbHRhZ2UubwogCi1TUkNTCTo9ICQoU09CSlM6Lm89LlMpICQoQ09CSlM6Lm89LmMpCitTUkNTCTo9ICQoQ09CSlM6Lm89LmMpCiBPQkpTCTo9ICQoYWRkcHJlZml4ICQob2JqKSwkKENPQkpTKSkKLVNPQkpTCTo9ICQoYWRkcHJlZml4ICQob2JqKSwkKFNPQkpTKSkKIAotJChMSUIpOgkkKG9iaikuZGVwZW5kICQoT0JKUykgJChTT0JKUykKLQkkKEFSKSAkKEFSRkxBR1MpICRAICQoT0JKUykgJChTT0JKUykKKyQoTElCKToJJChvYmopLmRlcGVuZCAkKE9CSlMpCisJJChBUikgJChBUkZMQUdTKSAkQCAkKE9CSlMpCiAKIGNsZWFuOgotCXJtIC1mICQoU09CSlMpICQoT0JKUykKKwlybSAtZiAkKE9CSlMpCiAKIGRpc3RjbGVhbjoJY2xlYW4KIAlybSAtZiAkKExJQikgY29yZSAqLmJhayAkKG9iaikuZGVwZW5kCmRpZmYgLS1naXQgYS9ib2FyZC90cml6ZXBzaXYvY29uZmlnLm1rIGIvYm9hcmQvdHJpemVwc2l2L2NvbmZpZy5tawpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjA0ZWI3NC4uMDAwMDAwMAotLS0gYS9ib2FyZC90cml6ZXBzaXYvY29uZmlnLm1rCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi1DT05GSUdfU1lTX1RFWFRfQkFTRSA9MHhhMWYwMDAwMAotIyAweGExNzAwMDAwCi0jQ09ORklHX1NZU19URVhUX0JBU0UgPSAwCmRpZmYgLS1naXQgYS9ib2FyZC90cml6ZXBzaXYvY29ueHMuYyBiL2JvYXJkL3RyaXplcHNpdi9jb254cy5jCmluZGV4IDBjNjczNjcuLjk5ZjY2NWIgMTAwNjQ0Ci0tLSBhL2JvYXJkL3RyaXplcHNpdi9jb254cy5jCisrKyBiL2JvYXJkL3RyaXplcHNpdi9jb254cy5jCkBAIC0xMDQsOCArMTA0LDkgQEAKIAogaW50IGJvYXJkX2luaXQgKHZvaWQpCiB7Ci0JLyogbWVtb3J5IGFuZCBjcHUtc3BlZWQgYXJlIHNldHVwIGJlZm9yZSByZWxvY2F0aW9uICovCi0JLyogc28gd2UgZG8gX25vdGhpbmdfIGhlcmUgKi8KKwkvKiBXZSBoYXZlIFJBTSwgZGlzYWJsZSBjYWNoZSAqLworCWRjYWNoZV9kaXNhYmxlKCk7CisJaWNhY2hlX2Rpc2FibGUoKTsKIAogCS8qIGFyY2ggbnVtYmVyIG9mIENvblhTIEJvYXJkICovCiAJZ2QtPmJkLT5iaV9hcmNoX251bWJlciA9IDc3NjsKQEAgLTEzOCwxOCArMTM5LDE4IEBACiAJcmV0dXJuICZzZXJpYWxfZmZ1YXJ0X2RldmljZTsKIH0KIAotaW50IGRyYW1faW5pdCAodm9pZCkKK2V4dGVybiB2b2lkIHB4YV9kcmFtX2luaXQodm9pZCk7CitpbnQgZHJhbV9pbml0KHZvaWQpCit7CisJcHhhX2RyYW1faW5pdCgpOworCWdkLT5yYW1fc2l6ZSA9IFBIWVNfU0RSQU1fMV9TSVpFOworCXJldHVybiAwOworfQorCit2b2lkIGRyYW1faW5pdF9iYW5rc2l6ZSh2b2lkKQogewogCWdkLT5iZC0+YmlfZHJhbVswXS5zdGFydCA9IFBIWVNfU0RSQU1fMTsKIAlnZC0+YmQtPmJpX2RyYW1bMF0uc2l6ZSA9IFBIWVNfU0RSQU1fMV9TSVpFOwotCWdkLT5iZC0+YmlfZHJhbVsxXS5zdGFydCA9IFBIWVNfU0RSQU1fMjsKLQlnZC0+YmQtPmJpX2RyYW1bMV0uc2l6ZSA9IFBIWVNfU0RSQU1fMl9TSVpFOwotCWdkLT5iZC0+YmlfZHJhbVsyXS5zdGFydCA9IFBIWVNfU0RSQU1fMzsKLQlnZC0+YmQtPmJpX2RyYW1bMl0uc2l6ZSA9IFBIWVNfU0RSQU1fM19TSVpFOwotCWdkLT5iZC0+YmlfZHJhbVszXS5zdGFydCA9IFBIWVNfU0RSQU1fNDsKLQlnZC0+YmQtPmJpX2RyYW1bM10uc2l6ZSA9IFBIWVNfU0RSQU1fNF9TSVpFOwotCi0JcmV0dXJuIDA7CiB9CiAKICNpZmRlZiBDT05GSUdfRFJJVkVSX0RNOTAwMApkaWZmIC0tZ2l0IGEvYm9hcmQvdHJpemVwc2l2L2xvd2xldmVsX2luaXQuUyBiL2JvYXJkL3RyaXplcHNpdi9sb3dsZXZlbF9pbml0LlMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEyOGQ1NTQuLjAwMDAwMDAKLS0tIGEvYm9hcmQvdHJpemVwc2l2L2xvd2xldmVsX2luaXQuUworKysgL2Rldi9udWxsCkBAIC0xLDUwMyArMCwwIEBACi0vKgotICogVGhpcyB3YXMgb3JpZ2luYWxseSBmcm9tIHRoZSBMdWJib2NrIHUtYm9vdCBwb3J0LgotICoKLSAqIE1vc3Qgb2YgdGhpcyB0YWtlbiBmcm9tIFJlZGJvb3QgaGFsX3BsYXRmb3JtX3NldHVwLmggd2l0aCBjbGVhbnVwCi0gKgotICogTk9URTogSSBoYXZlbid0IGNsZWFuIHRoaXMgdXAgY29uc2lkZXJhYmx5LCBqdXN0IGVub3VnaCB0byBnZXQgaXQKLSAqIHJ1bm5pbmcuIFNlZSBoYWxfcGxhdGZvcm1fc2V0dXAuaCBmb3IgdGhlIHNvdXJjZS4gU2VlCi0gKiBib2FyZC9jcmFkbGUvbG93bGV2ZWxfaW5pdC5TIGZvciBhbm90aGVyIFBYQTI1MCBzZXR1cCB0aGF0IGlzCi0gKiBtdWNoIGNsZWFuZXIuCi0gKgotICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKLSAqIHByb2plY3QuCi0gKgotICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKLSAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCi0gKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuCSBTZWUgdGhlCi0gKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKLSAqIE1BIDAyMTExLTEzMDcgVVNBCi0gKi8KLQotI2luY2x1ZGUgPGNvbmZpZy5oPgotI2luY2x1ZGUgPHZlcnNpb24uaD4KLSNpbmNsdWRlIDxhc20vYXJjaC9weGEtcmVncy5oPgotCi0vKiB3YWl0IGZvciBjb3Byb2Nlc3NvciB3cml0ZSBjb21wbGV0ZSAqLwotICAgLm1hY3JvIENQV0FJVCByZWcKLSAgIG1yYwlwMTUsMCxccmVnLGMyLGMwLDAKLSAgIG1vdglccmVnLFxyZWcKLSAgIHN1YglwYyxwYywjNAotICAgLmVuZG0KLQotCi0vKgotICoJTWVtb3J5IHNldHVwCi0gKi8KLQotLmdsb2JsIGxvd2xldmVsX2luaXQKLWxvd2xldmVsX2luaXQ6Ci0KLQkvKiBTZXQgdXAgR1BJTyBwaW5zIGZpcnN0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLQlsZHIJCXIwLAk9R1BTUjAKLQlsZHIJCXIxLAk9Q09ORklHX1NZU19HUFNSMF9WQUwKLQlzdHIJCXIxLCAgIFtyMF0KLQotCWxkcgkJcjAsCT1HUFNSMQotCWxkcgkJcjEsCT1DT05GSUdfU1lTX0dQU1IxX1ZBTAotCXN0cgkJcjEsICAgW3IwXQotCi0JbGRyCQlyMCwJPUdQU1IyCi0JbGRyCQlyMSwJPUNPTkZJR19TWVNfR1BTUjJfVkFMCi0Jc3RyCQlyMSwgICBbcjBdCi0KLQlsZHIJCXIwLAk9R1BTUjMKLQlsZHIJCXIxLAk9Q09ORklHX1NZU19HUFNSM19WQUwKLQlzdHIJCXIxLCAgIFtyMF0KLQotCWxkcgkJcjAsCT1HUENSMAotCWxkcgkJcjEsCT1DT05GSUdfU1lTX0dQQ1IwX1ZBTAotCXN0cgkJcjEsICAgW3IwXQotCi0JbGRyCQlyMCwJPUdQQ1IxCi0JbGRyCQlyMSwJPUNPTkZJR19TWVNfR1BDUjFfVkFMCi0Jc3RyCQlyMSwgICBbcjBdCi0KLQlsZHIJCXIwLAk9R1BDUjIKLQlsZHIJCXIxLAk9Q09ORklHX1NZU19HUENSMl9WQUwKLQlzdHIJCXIxLCAgIFtyMF0KLQotCWxkcgkJcjAsCT1HUENSMwotCWxkcgkJcjEsCT1DT05GSUdfU1lTX0dQQ1IzX1ZBTAotCXN0cgkJcjEsICAgW3IwXQotCi0JbGRyCQlyMCwJPUdSRVIwCi0JbGRyCQlyMSwJPUNPTkZJR19TWVNfR1JFUjBfVkFMCi0Jc3RyCQlyMSwgICBbcjBdCi0KLQlsZHIJCXIwLAk9R1JFUjEKLQlsZHIJCXIxLAk9Q09ORklHX1NZU19HUkVSMV9WQUwKLQlzdHIJCXIxLCAgIFtyMF0KLQotCWxkcgkJcjAsCT1HUkVSMgotCWxkcgkJcjEsCT1DT05GSUdfU1lTX0dSRVIyX1ZBTAotCXN0cgkJcjEsICAgW3IwXQotCi0JbGRyCQlyMCwJPUdSRVIzCi0JbGRyCQlyMSwJPUNPTkZJR19TWVNfR1JFUjNfVkFMCi0Jc3RyCQlyMSwgICBbcjBdCi0KLQlsZHIJCXIwLAk9R0ZFUjAKLQlsZHIJCXIxLAk9Q09ORklHX1NZU19HRkVSMF9WQUwKLQlzdHIJCXIxLCAgIFtyMF0KLQotCWxkcgkJcjAsCT1HRkVSMQotCWxkcgkJcjEsCT1DT05GSUdfU1lTX0dGRVIxX1ZBTAotCXN0cgkJcjEsICAgW3IwXQotCi0JbGRyCQlyMCwJPUdGRVIyCi0JbGRyCQlyMSwJPUNPTkZJR19TWVNfR0ZFUjJfVkFMCi0Jc3RyCQlyMSwgICBbcjBdCi0KLQlsZHIJCXIwLAk9R0ZFUjMKLQlsZHIJCXIxLAk9Q09ORklHX1NZU19HRkVSM19WQUwKLQlzdHIJCXIxLCAgIFtyMF0KLQotCWxkcgkJcjAsCT1HUERSMAotCWxkcgkJcjEsCT1DT05GSUdfU1lTX0dQRFIwX1ZBTAotCXN0cgkJcjEsICAgW3IwXQotCi0JbGRyCQlyMCwJPUdQRFIxCi0JbGRyCQlyMSwJPUNPTkZJR19TWVNfR1BEUjFfVkFMCi0Jc3RyCQlyMSwgICBbcjBdCi0KLQlsZHIJCXIwLAk9R1BEUjIKLQlsZHIJCXIxLAk9Q09ORklHX1NZU19HUERSMl9WQUwKLQlzdHIJCXIxLCAgIFtyMF0KLQotCWxkcgkJcjAsCT1HUERSMwotCWxkcgkJcjEsCT1DT05GSUdfU1lTX0dQRFIzX1ZBTAotCXN0cgkJcjEsICAgW3IwXQotCi0JbGRyCQlyMCwJPUdBRlIwX0wKLQlsZHIJCXIxLAk9Q09ORklHX1NZU19HQUZSMF9MX1ZBTAotCXN0cgkJcjEsICAgW3IwXQotCi0JbGRyCQlyMCwJPUdBRlIwX1UKLQlsZHIJCXIxLAk9Q09ORklHX1NZU19HQUZSMF9VX1ZBTAotCXN0cgkJcjEsICAgW3IwXQotCi0JbGRyCQlyMCwJPUdBRlIxX0wKLQlsZHIJCXIxLAk9Q09ORklHX1NZU19HQUZSMV9MX1ZBTAotCXN0cgkJcjEsICAgW3IwXQotCi0JbGRyCQlyMCwJPUdBRlIxX1UKLQlsZHIJCXIxLAk9Q09ORklHX1NZU19HQUZSMV9VX1ZBTAotCXN0cgkJcjEsICAgW3IwXQotCi0JbGRyCQlyMCwJPUdBRlIyX0wKLQlsZHIJCXIxLAk9Q09ORklHX1NZU19HQUZSMl9MX1ZBTAotCXN0cgkJcjEsICAgW3IwXQotCi0JbGRyCQlyMCwJPUdBRlIyX1UKLQlsZHIJCXIxLAk9Q09ORklHX1NZU19HQUZSMl9VX1ZBTAotCXN0cgkJcjEsICAgW3IwXQotCi0JbGRyCQlyMCwJPUdBRlIzX0wKLQlsZHIJCXIxLAk9Q09ORklHX1NZU19HQUZSM19MX1ZBTAotCXN0cgkJcjEsICAgW3IwXQotCi0JbGRyCQlyMCwJPUdBRlIzX1UKLQlsZHIJCXIxLAk9Q09ORklHX1NZU19HQUZSM19VX1ZBTAotCXN0cgkJcjEsICAgW3IwXQotCi0JbGRyCQlyMCwJPVBTU1IJCS8qIGVuYWJsZSBHUElPIHBpbnMgKi8KLQlsZHIJCXIxLAk9Q09ORklHX1NZU19QU1NSX1ZBTAotCXN0cgkJcjEsICAgW3IwXQotCi0JLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCS8qIEVuYWJsZSBtZW1vcnkgaW50ZXJmYWNlCQkJCQkgICAgKi8KLQkvKgkJCQkJCQkJICAgICovCi0JLyogVGhlIHNlcXVlbmNlIGJlbG93IGlzIGJhc2VkIG9uIHRoZSByZWNvbW1lbmRlZCBpbml0IHN0ZXBzCSAgICAqLwotCS8qIGRldGFpbGVkIGluIHRoZSBJbnRlbCBQWEEyNTAgT3BlcmF0aW5nIFN5c3RlbXMgRGV2ZWxvcGVycyBHdWlkZSwgKi8KLQkvKiBDaGFwdGVyIDEwLgkJCQkJCQkgICAgKi8KLQkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLQkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0JLyogU3RlcCAxOiBXYWl0IGZvciBhdCBsZWFzdCAyMDAgbWljcm9zZWRvbmRzIHRvIGFsbG93IGludGVybmFsCSAgICAqLwotCS8qCSAgIGNsb2NrcyB0byBzZXR0bGUuIE9ubHkgbmVjZXNzYXJ5IGFmdGVyIGhhcmQgcmVzZXQuLi4JICAgICovCi0JLyoJICAgRklYTUU6IGNhbiBiZSBvcHRpbWl6ZWQgbGF0ZXIJCQkgICAgKi8KLQkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLQlsZHIgcjMsID1PU0NSCQkJLyogcmVzZXQgdGhlIE9TIFRpbWVyIENvdW50IHRvIHplcm8gKi8KLQltb3YgcjIsICMwCi0Jc3RyIHIyLCBbcjNdCi0JbGRyIHI0LCA9MHgzMDAJCQkvKiByZWFsbHkgMHgyRTEgaXMgYWJvdXQgMjAwdXNlYywgICAqLwotCQkJCQkvKiBzbyAweDMwMCBzaG91bGQgYmUgcGxlbnR5CSAgICAqLwotMToKLQlsZHIgcjIsIFtyM10KLQljbXAgcjQsIHIyCi0JYmd0IDFiCi0KLW1lbV9pbml0OgotCi0JbGRyCXIxLCAgPU1FTUNfQkFTRQkJLyogZ2V0IG1lbW9yeSBjb250cm9sbGVyIGJhc2UgYWRkci4gKi8KLQotCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQkvKiBTdGVwIDJhOiBJbml0aWFsaXplIEFzeW5jaHJvbm91cyBzdGF0aWMgbWVtb3J5IGNvbnRyb2xsZXIJICAgICovCi0JLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi0JLyogTVNDIHJlZ2lzdGVyczogdGltaW5nLCBidXMgd2lkdGgsIG1lbSB0eXBlCQkJICAgICovCi0KLQkvKiBNU0MwOiBuQ1MoMCwxKQkJCQkJCSAgICAqLwotCWxkcglyMiwgICA9Q09ORklHX1NZU19NU0MwX1ZBTAotCXN0cglyMiwgICBbcjEsICNNU0MwX09GRlNFVF0KLQlsZHIJcjIsICAgW3IxLCAjTVNDMF9PRkZTRVRdCS8qIHJlYWQgYmFjayB0byBlbnN1cmUJICAgICovCi0JCQkJCQkvKiB0aGF0IGRhdGEgbGF0Y2hlcwkgICAgKi8KLQkvKiBNU0MxOiBuQ1MoMiwzKQkJCQkJCSAgICAqLwotCWxkcglyMiwgID1DT05GSUdfU1lTX01TQzFfVkFMCi0Jc3RyCXIyLCAgW3IxLCAjTVNDMV9PRkZTRVRdCi0JbGRyCXIyLCAgW3IxLCAjTVNDMV9PRkZTRVRdCi0KLQkvKiBNU0MyOiBuQ1MoNCw1KQkJCQkJCSAgICAqLwotCWxkcglyMiwgID1DT05GSUdfU1lTX01TQzJfVkFMCi0Jc3RyCXIyLCAgW3IxLCAjTVNDMl9PRkZTRVRdCi0JbGRyCXIyLCAgW3IxLCAjTVNDMl9PRkZTRVRdCi0KLQkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0JLyogU3RlcCAyYjogSW5pdGlhbGl6ZSBDYXJkIEludGVyZmFjZQkJCQkgICAgKi8KLQkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLQkvKiBNRUNSOiBNZW1vcnkgRXhwYW5zaW9uIENhcmQgUmVnaXN0ZXIJCQkJICAgICovCi0JbGRyCXIyLCAgPUNPTkZJR19TWVNfTUVDUl9WQUwKLQlzdHIJcjIsICBbcjEsICNNRUNSX09GRlNFVF0KLQlsZHIJcjIsCVtyMSwgI01FQ1JfT0ZGU0VUXQotCi0JLyogTUNNRU0wOiBDYXJkIEludGVyZmFjZSBzbG90IDAgdGltaW5nCQkJCSAgICAqLwotCWxkcglyMiwgID1DT05GSUdfU1lTX01DTUVNMF9WQUwKLQlzdHIJcjIsICBbcjEsICNNQ01FTTBfT0ZGU0VUXQotCWxkcglyMiwJW3IxLCAjTUNNRU0wX09GRlNFVF0KLQotCS8qIE1DTUVNMTogQ2FyZCBJbnRlcmZhY2Ugc2xvdCAxIHRpbWluZwkJCQkgICAgKi8KLQlsZHIJcjIsICA9Q09ORklHX1NZU19NQ01FTTFfVkFMCi0Jc3RyCXIyLCAgW3IxLCAjTUNNRU0xX09GRlNFVF0KLQlsZHIJcjIsCVtyMSwgI01DTUVNMV9PRkZTRVRdCi0KLQkvKiBNQ0FUVDA6IENhcmQgSW50ZXJmYWNlIEF0dHJpYnV0ZSBTcGFjZSBUaW1pbmcsIHNsb3QgMAkgICAgKi8KLQlsZHIJcjIsICA9Q09ORklHX1NZU19NQ0FUVDBfVkFMCi0Jc3RyCXIyLCAgW3IxLCAjTUNBVFQwX09GRlNFVF0KLQlsZHIJcjIsCVtyMSwgI01DQVRUMF9PRkZTRVRdCi0KLQkvKiBNQ0FUVDE6IENhcmQgSW50ZXJmYWNlIEF0dHJpYnV0ZSBTcGFjZSBUaW1pbmcsIHNsb3QgMQkgICAgKi8KLQlsZHIJcjIsICA9Q09ORklHX1NZU19NQ0FUVDFfVkFMCi0Jc3RyCXIyLCAgW3IxLCAjTUNBVFQxX09GRlNFVF0KLQlsZHIJcjIsCVtyMSwgI01DQVRUMV9PRkZTRVRdCi0KLQkvKiBNQ0lPMDogQ2FyZCBJbnRlcmZhY2UgSS9PIFNwYWNlIFRpbWluZywgc2xvdCAwCQkgICAgKi8KLQlsZHIJcjIsICA9Q09ORklHX1NZU19NQ0lPMF9WQUwKLQlzdHIJcjIsICBbcjEsICNNQ0lPMF9PRkZTRVRdCi0JbGRyCXIyLAlbcjEsICNNQ0lPMF9PRkZTRVRdCi0KLQkvKiBNQ0lPMTogQ2FyZCBJbnRlcmZhY2UgSS9PIFNwYWNlIFRpbWluZywgc2xvdCAxCQkgICAgKi8KLQlsZHIJcjIsICA9Q09ORklHX1NZU19NQ0lPMV9WQUwKLQlzdHIJcjIsICBbcjEsICNNQ0lPMV9PRkZTRVRdCi0JbGRyCXIyLAlbcjEsICNNQ0lPMV9PRkZTRVRdCi0KLQkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0JLyogU3RlcCAyYzogV3JpdGUgRkxZQ05GRyAgRklYTUU6IHdoYXQncyB0aGF0Pz8/CQkgICAgKi8KLQkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0JbGRyCXIyLCAgPUNPTkZJR19TWVNfRkxZQ05GR19WQUwKLQlzdHIJcjIsICBbcjEsICNGTFlDTkZHX09GRlNFVF0KLQlzdHIJcjIsCVtyMSwgI0ZMWUNORkdfT0ZGU0VUXQotCi0JLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCS8qIFN0ZXAgMmQ6IEluaXRpYWxpemUgVGltaW5nIGZvciBTeW5jIE1lbW9yeSAoU0RDTEswKQkJICAgICovCi0JLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi0JLyogQmVmb3JlIGFjY2Vzc2luZyBNRFJFRlIgd2UgbmVlZCBhIHZhbGlkIERSSSBmaWVsZCwgc28gd2Ugc2V0CSAgICAqLwotCS8qIHRoaXMgdG8gcG93ZXIgb24gZGVmYXVsdHMgKyBEUkkgZmllbGQuCQkJICAgICovCi0KLQlsZHIJcjQsCVtyMSwgI01EUkVGUl9PRkZTRVRdCi0JbGRyCXIyLAk9MHhGRkYKLQliaWMJcjQsCXI0LCByMgotCi0JbGRyCXIzLAk9Q09ORklHX1NZU19NRFJFRlJfVkFMCi0JYW5kCXIzLAlyMywgIHIyCi0KLQlvcnIJcjQsCXI0LCByMwotCXN0cglyNCwJW3IxLCAjTURSRUZSX09GRlNFVF0JLyogd3JpdGUgYmFjayBNRFJFRlIJICAgICovCi0KLQlvcnIJcjQsICByNCwgI01EUkVGUl9LMFJVTgotCW9ycglyNCwgIHI0LCAjTURSRUZSX0swREI0Ci0Jb3JyCXI0LCAgcjQsICNNRFJFRlJfSzBGUkVFCi0Jb3JyCXI0LCAgcjQsICNNRFJFRlJfSzBEQjIKLQlvcnIJcjQsICByNCwgI01EUkVGUl9LMURCMgotCWJpYwlyNCwgIHI0LCAjTURSRUZSX0sxRlJFRQotCWJpYwlyNCwgIHI0LCAjTURSRUZSX0syRlJFRQotCi0Jc3RyCXI0LAlbcjEsICNNRFJFRlJfT0ZGU0VUXQkvKiB3cml0ZSBiYWNrIE1EUkVGUgkgICAgKi8KLQlsZHIJcjQsICBbcjEsICNNRFJFRlJfT0ZGU0VUXQotCi0JLyogTm90ZTogcHJlc2VydmUgdGhlIG1kcmVmciB2YWx1ZSBpbiByNAkJCSAgICAqLwotCi0KLQkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0JLyogU3RlcCAzOiBJbml0aWFsaXplIFN5bmNocm9ub3VzIFN0YXRpYyBNZW1vcnkgKEZsYXNoL1BlcmlwaGVyYWxzKSAqLwotCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotCS8qIEluaXRpYWxpemUgU1hDTkZHIHJlZ2lzdGVyLiBBc3NlcnQgdGhlIGVuYWJsZSBiaXRzCQkgICAgKi8KLQotCS8qIFdyaXRlIFNYTVJTIHRvIGNhdXNlIGFuIE1SUyBjb21tYW5kIHRvIGFsbCBlbmFibGVkIGJhbmtzIG9mCSAgICAqLwotCS8qIHN5bmNocm9ub3VzIHN0YXRpYyBtZW1vcnkuIE5vdGUgdGhhdCBTWExDUiBuZWVkIG5vdCBiZSB3cml0dGVuICAgKi8KLQkvKiBhdCB0aGlzIHRpbWUuCQkJCQkJICAgICovCi0KLQlsZHIJcjIsICA9Q09ORklHX1NZU19TWENORkdfVkFMCi0Jc3RyCXIyLCAgW3IxLCAjU1hDTkZHX09GRlNFVF0KLQotCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQkvKiBTdGVwIDQ6IEluaXRpYWxpemUgU0RSQU0JCQkJCSAgICAqLwotCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotCWJpYwlyNCwgcjQsICMoTURSRUZSX0syRlJFRSB8TURSRUZSX0sxRlJFRSB8IE1EUkVGUl9LMEZSRUUpCi0KLQlvcnIJcjQsIHI0LCAjTURSRUZSX0sxUlVOCi0JYmljCXI0LCByNCwgI01EUkVGUl9LMkRCMgotCXN0cglyNCwgW3IxLCAjTURSRUZSX09GRlNFVF0KLQlsZHIJcjQsIFtyMSwgI01EUkVGUl9PRkZTRVRdCi0KLQliaWMJcjQsIHI0LCAjTURSRUZSX1NMRlJTSAotCXN0cglyNCwgW3IxLCAjTURSRUZSX09GRlNFVF0KLQlsZHIJcjQsIFtyMSwgI01EUkVGUl9PRkZTRVRdCi0KLQlvcnIJcjQsIHI0LCAjTURSRUZSX0UxUElOCi0Jc3RyCXI0LCBbcjEsICNNRFJFRlJfT0ZGU0VUXQotCWxkcglyNCwgW3IxLCAjTURSRUZSX09GRlNFVF0KLQotCW5vcAotCW5vcAotCi0KLQkvKiBTdGVwIDRkOiB3cml0ZSBNRENORkcgd2l0aCBNRENORkc6REV4IGRlYXNzZXJ0ZWQgKHNldCB0byAwKSwgdG8gICovCi0JLyoJICAgIGNvbmZpZ3VyZSBidXQgbm90IGVuYWJsZSBlYWNoIFNEUkFNIHBhcnRpdGlvbiBwYWlyLgkgICAgKi8KLQotCWxkcglyNCwJPUNPTkZJR19TWVNfTURDTkZHX1ZBTAotCWJpYwlyNCwJcjQsCSMoTURDTkZHX0RFMHxNRENORkdfREUxKQotCWJpYwlyNCwJcjQsCSMoTURDTkZHX0RFMnxNRENORkdfREUzKQotCi0Jc3RyCXI0LAlbcjEsICNNRENORkdfT0ZGU0VUXQkvKiB3cml0ZSBiYWNrIE1EQ05GRwkgICAgKi8KLQlsZHIJcjQsCVtyMSwgI01EQ05GR19PRkZTRVRdCi0KLQotCS8qIFN0ZXAgNGU6IFdhaXQgZm9yIHRoZSBjbG9jayB0byB0aGUgU0RSQU1zIHRvIHN0YWJpbGl6ZSwJICAgICovCi0JLyoJICAgIDEwMC4uMjAwILVzZWMuCQkJCQkgICAgKi8KLQotCWxkciByMywgPU9TQ1IJCQkvKiByZXNldCB0aGUgT1MgVGltZXIgQ291bnQgdG8gemVybyAqLwotCW1vdiByMiwgIzAKLQlzdHIgcjIsIFtyM10KLQlsZHIgcjQsID0weDMwMAkJCS8qIHJlYWxseSAweDJFMSBpcyBhYm91dCAyMDB1c2VjLCAgICovCi0JCQkJCS8qIHNvIDB4MzAwIHNob3VsZCBiZSBwbGVudHkJICAgICovCi0xOgotCSAgICBsZHIgcjIsIFtyM10KLQkgICAgY21wIHI0LCByMgotCSAgICBiZ3QgMWIKLQotCi0JLyogU3RlcCA0ZjogVHJpZ2dlciBhIG51bWJlciAodXN1YWxseSA4KSByZWZyZXNoIGN5Y2xlcyBieQkgICAgKi8KLQkvKgkgICAgYXR0ZW1wdGluZyBub24tYnVyc3QgcmVhZCBvciB3cml0ZSBhY2Nlc3NlcyB0byBkaXNhYmxlZCAqLwotCS8qCSAgICBTRFJBTSwgYXMgY29tbW9ubHkgc3BlY2lmaWVkIGluIHRoZSBwb3dlciB1cCBzZXF1ZW5jZSAgICovCi0JLyoJICAgIGRvY3VtZW50ZWQgaW4gU0RSQU0gZGF0YSBzaGVldHMuIFRoZSBhZGRyZXNzKGVzKSB1c2VkICAgKi8KLQkvKgkgICAgZm9yIHRoaXMgcHVycG9zZSBtdXN0IG5vdCBiZSBjYWNoZWFibGUuCQkgICAgKi8KLQotCWxkcglyMywJPUNPTkZJR19TWVNfRFJBTV9CQVNFCi0Jc3RyCXIyLAlbcjNdCi0Jc3RyCXIyLAlbcjNdCi0Jc3RyCXIyLAlbcjNdCi0Jc3RyCXIyLAlbcjNdCi0Jc3RyCXIyLAlbcjNdCi0Jc3RyCXIyLAlbcjNdCi0Jc3RyCXIyLAlbcjNdCi0Jc3RyCXIyLAlbcjNdCi0KLQotCS8qIFN0ZXAgNGc6IFdyaXRlIE1EQ05GRyB3aXRoIGVuYWJsZSBiaXRzIGFzc2VydGVkCQkgICAgKi8KLQkvKgkgICAgKE1EQ05GRzpERXggc2V0IHRvIDEpLgkJCQkgICAgKi8KLQotCWxkcglyMywJW3IxLCAjTURDTkZHX09GRlNFVF0KLQltb3YJcjQsIHIzCi0Jb3JyCXIzLAlyMywJI01EQ05GR19ERTAKLQlzdHIJcjMsCVtyMSwgI01EQ05GR19PRkZTRVRdCi0JbW92CXIwLCByMwotCi0JLyogU3RlcCA0aDogV3JpdGUgTURNUlMuCQkJCQkgICAgKi8KLQotCWxkcglyMiwgID1DT05GSUdfU1lTX01ETVJTX1ZBTAotCXN0cglyMiwgIFtyMSwgI01ETVJTX09GRlNFVF0KLQotCS8qIGVuYWJsZSBBUEQgKi8KLQlsZHIJcjMsICBbcjEsICNNRFJFRlJfT0ZGU0VUXQotCW9ycglyMywgIHIzLCAgI01EUkVGUl9BUEQKLQlzdHIJcjMsICBbcjEsICNNRFJFRlJfT0ZGU0VUXQotCi0JLyogV2UgYXJlIGZpbmlzaGVkIHdpdGggSW50ZWwncyBtZW1vcnkgY29udHJvbGxlciBpbml0aWFsaXNhdGlvbiAgICAqLwotCi0KLXNldHZvbHRhZ2U6Ci0KLQltb3YJcjEwLAlscgotCWJsCWluaXRQWEF2b2x0YWdlCS8qIEluIGNhc2UgdGhlIGJvYXJkIGlzIHJlYm9vdGluZyB3aXRoIGEgICAgKi8KLQltb3YJbHIsCXIxMAkvKiBsb3cgdm9sdGFnZSByYWlzZSBpdCB1cCB0byBhIGdvb2Qgb25lLiAgICovCi0KLSNpZiAxCi0JYiBpbml0aXJxcwotI2VuZGlmCi0KLXdha2V1cDoKLQkvKiBBcmUgd2Ugd2FraW5nIGZyb20gc2xlZXA/ICovCi0JbGRyCXIwLAk9UkNTUgotCWxkcglyMSwJW3IwXQotCWFuZAlyMSwJcjEsICMoUkNTUl9HUFIgfCBSQ1NSX1NNUiB8IFJDU1JfV0RSIHwgUkNTUl9IV1IpCi0Jc3RyCXIxLAlbcjBdCi0JdGVxCXIxLAkjUkNTUl9TTVIKLQotCWJuZQlpbml0aXJxcwotCi0JbGRyCXIwLAk9UFNTUgotCW1vdglyMSwJI1BTU1JfUEgKLQlzdHIJcjEsCVtyMF0KLQotCS8qIGlmIHNvLCByZXN1bWUgYXQgUFNQUiAqLwotCWxkcglyMCwJPVBTUFIKLQlsZHIJcjEsCVtyMF0KLQltb3YJcGMsCXIxCi0KLQkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0JLyogRGlzYWJsZSAobWFzaykgYWxsIGludGVycnVwdHMgYXQgaW50ZXJydXB0IGNvbnRyb2xsZXIJICAgICovCi0JLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi1pbml0aXJxczoKLQotCW1vdglyMSwgICMwCQkvKiBjbGVhciBpbnQuIGxldmVsIHJlZ2lzdGVyIChJUlEsIG5vdCBGSVEpICovCi0JbGRyCXIyLCAgPUlDTFIKLQlzdHIJcjEsICBbcjJdCi0KLQlsZHIJcjIsICA9SUNNUgkvKiBtYXNrIGFsbCBpbnRlcnJ1cHRzIGF0IHRoZSBjb250cm9sbGVyICAgICovCi0Jc3RyCXIxLCAgW3IyXQotCi0JLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCS8qIENsb2NrIGluaXRpYWxpc2F0aW9uCQkJCQkJICAgICovCi0JLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi1pbml0Y2xrczoKLQotCS8qIERpc2FibGUgdGhlIHBlcmlwaGVyYWwgY2xvY2tzLCBhbmQgc2V0IHRoZSBjb3JlIGNsb2NrIGZyZXF1ZW5jeSAgKi8KLQotCS8qIFR1cm4gT2ZmIG9uLWNoaXAgcGVyaXBoZXJhbCBjbG9ja3MgKGV4Y2VwdCBmb3IgbWVtb3J5KQkgICAgKi8KLQkvKiBmb3IgcmUtY29uZmlndXJhdGlvbi4JCQkJCSAgICAqLwotCWxkcglyMSwgID1DS0VOCi0JbGRyCXIyLCAgPUNPTkZJR19TWVNfQ0tFTgotCXN0cglyMiwgIFtyMV0KLQotCS8qIC4uLiBhbmQgd3JpdGUgdGhlIGNvcmUgY2xvY2sgY29uZmlnIHJlZ2lzdGVyCQkJICAgICovCi0JbGRyCXIyLCAgPUNPTkZJR19TWVNfQ0NDUgotCWxkcglyMSwgID1DQ0NSCi0Jc3RyCXIyLCAgW3IxXQotCi0JLyogVHVybiBvbiB0dXJibyBtb2RlICovCi0JbXJjCXAxNCwgMCwgcjIsIGM2LCBjMCwgMAotCW9ycglyMiwgcjIsICMweEIJCS8qIFR1cmJvLCBGYXN0LUJ1cywgRnJlcSBjaGFuZ2UqKi8KLQltY3IJcDE0LCAwLCByMiwgYzYsIGMwLCAwCi0KLQkvKiBSZS13cml0ZSBNRFJFRlIgKi8KLQlsZHIJcjEsID1NRU1DX0JBU0UKLQlsZHIJcjIsIFtyMSwgI01EUkVGUl9PRkZTRVRdCi0Jc3RyCXIyLCBbcjEsICNNRFJFRlJfT0ZGU0VUXQotI2lmZGVmIFJUQwotCS8qIGVuYWJsZSB0aGUgMzJLaHogb3NjaWxsYXRvciBmb3IgUlRDIGFuZCBQb3dlck1hbmFnZXIJCSAgICAqLwotCWxkcglyMSwgID1PU0NDCi0JbW92CXIyLCAgI09TQ0NfT09OCi0Jc3RyCXIyLCAgW3IxXQotCi0JLyogTk9URTogIHNwaW4gaGVyZSB1bnRpbCBPU0NDLk9PSyBnZXQgc2V0LCBtZWFuaW5nIHRoZSBQTEwJICAgICovCi0JLyogaGFzIHNldHRsZWQuCQkJCQkJCSAgICAqLwotNjA6Ci0JbGRyCXIyLCBbcjFdCi0JYW5kcwlyMiwgcjIsICMxCi0JYmVxCTYwYgotI2Vsc2UKLSNlcnJvciAiUlRDIG5vdCBkZWZpbmVkIgotI2VuZGlmCi0KLQkvKiBJbnRlcnJ1cHQgaW5pdDogTWFzayBhbGwgaW50ZXJydXB0cwkJCQkgICAgKi8KLSAgICBsZHIgcjAsID1JQ01SIC8qIGVuYWJsZSBubyBzb3VyY2VzICovCi0JbW92IHIxLCAjMAotICAgIHN0ciByMSwgW3IwXQotCS8qIEZJWE1FICovCi0KLSNpZmRlZiBOT0RFQlVHCi0JLypEaXNhYmxlIHNvZnR3YXJlIGFuZCBkYXRhIGJyZWFrcG9pbnRzICovCi0JbW92CXIwLCMwCi0JbWNyCXAxNSwwLHIwLGMxNCxjOCwwICAvKiBpYmNyMCAqLwotCW1jcglwMTUsMCxyMCxjMTQsYzksMCAgLyogaWJjcjEgKi8KLQltY3IJcDE1LDAscjAsYzE0LGM0LDAgIC8qIGRiY29uICovCi0KLQkvKkVuYWJsZSBhbGwgZGVidWcgZnVuY3Rpb25hbGl0eSAqLwotCW1vdglyMCwjMHg4MDAwMDAwMAotCW1jcglwMTQsMCxyMCxjMTAsYzAsMCAgLyogZGNzciAqLwotI2VuZGlmCi0KLQkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0JLyogRW5kIGxvd2xldmVsX2luaXQJCQkJCQkJICAgICovCi0JLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi1lbmRsb3dsZXZlbF9pbml0OgotCi0JbW92CXBjLCBscgpkaWZmIC0tZ2l0IGEvYm9hcmQvdHJpemVwc2l2L3B4YXZvbHRhZ2UuUyBiL2JvYXJkL3RyaXplcHNpdi9weGF2b2x0YWdlLlMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk2NTljMmIuLjAwMDAwMDAKLS0tIGEvYm9hcmQvdHJpemVwc2l2L3B4YXZvbHRhZ2UuUworKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLS8qCi0gKiAoQykgQ29weXJpZ2h0IDIwMDcKLSAqIFN0ZWZhbm8gQmFiaWMsIERFTlggR21iaCwgc2JhYmljQGRlbnguZGUKLSAqCi0gKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcwotICogcHJvamVjdC4KLSAqCi0gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcwotICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKLSAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAotICogTUEgMDIxMTEtMTMwNyBVU0EKLSAqLwotCi0jaW5jbHVkZSA8YXNtL2FyY2gvcHhhLXJlZ3MuaD4KLQotCQkuZ2xvYmFsCWluaXRQWEF2b2x0YWdlCi0KLWluaXRQWEF2b2x0YWdlOgotCQltb3YJcGMsIGxyCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvdHJpemVwc2l2LmggYi9pbmNsdWRlL2NvbmZpZ3MvdHJpemVwc2l2LmgKaW5kZXggNDc0MzQ5NS4uYWMzNTY2YyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL3RyaXplcHNpdi5oCisrKyBiL2luY2x1ZGUvY29uZmlncy90cml6ZXBzaXYuaApAQCAtNDQsNiArNDQsNyBAQAogCiAjZGVmaW5lIENPTkZJR19NTUMJCTEKICNkZWZpbmUgQk9BUkRfTEFURV9JTklUCQkxCisjZGVmaW5lCUNPTkZJR19TWVNfVEVYVF9CQVNFCTB4MAogCiAjdW5kZWYgQ09ORklHX1VTRV9JUlEJCQkvKiB3ZSBkb24ndCBuZWVkIElSUS9GSVEgc3R1ZmYgKi8KIAo=