From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: tjuhasz To: git-commits@fedoraproject.org Subject: [rpms/nodejs22] rawhide: Update to version 22.23.1 (rhbz#2477273). Date: Mon, 20 Jul 2026 09:27:51 GMT Message-ID: <178453967164.1.10655344063042444964.rpms-nodejs22-b023a9b3af07@fedoraproject.org> List-ID: X-Git-Repo: rpms/nodejs22 X-Git-Branch: rawhide X-Git-Rev: b023a9b3af079efff47fbcbcea5aeb0c66445798 ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvbm9kZWpzMjIKICAgICAgICAgICAgQnJhbmNoIDogcmF3aGlkZQogICAgICAg ICAgICBDb21taXQgOiBiMDIzYTliM2FmMDc5ZWZmZjQ3ZmJjYmNlYTVhZWIwYzY2NDQ1Nzk4CiAg ICAgICAgICAgIEF1dGhvciA6IHRqdWhhc3ogPHRqdWhhc3pAcmVkaGF0LmNvbT4KICAgICAgICAg ICAgRGF0ZSAgIDogMjAyNi0wNy0yMFQwOToyNzozNiswMDowMAogICAgICAgICAgICBTdGF0cyAg OiArMzIvLTc3NDEgaW4gMyBmaWxlKHMpCiAgICAgICAgICAgIFVSTCAgICA6IGh0dHBzOi8vc3Jj LmZlZG9yYXByb2plY3Qub3JnL3JwbXMvbm9kZWpzMjIvYy9iMDIzYTliM2FmMDc5ZWZmZjQ3ZmJj YmNlYTVhZWIwYzY2NDQ1Nzk4P2JyYW5jaD1yYXdoaWRlCgogICAgICAgICAgICBMb2c6CiAgICAg ICAgICAgIFVwZGF0ZSB0byB2ZXJzaW9uIDIyLjIzLjEgKHJoYnojMjQ3NzI3MykuCgpGaXggZm9y OgpDVkUtMjAyNi02NzMzIC0gIHVuZGljaSB2dWxuZXJhYmxlIHRvIEhUVFAgcmVzcG9uc2UgcXVl dWUgcG9pc29uaW5nIHZpYSBrZWVwLWFsaXZlIHNvY2tldCByZXVzZQogKHJoYnojMjQ5MDIxMikK Q1ZFLTIwMjYtMTE1MjUgLSB1bmRpY2k6IFdlYWtlbmluZyBvZiBjb29raWUgU2FtZVNpdGUgcG9s aWN5IGR1ZSB0byBpbmNvcnJlY3QgcGFyc2luZyBvZiBTZXQtQ29va2llIGhlYWRlcgogKHJoYnoj MjQ5MDIwOCkKQ1ZFLTIwMjYtMTIxNTEgLSAgdW5kaWNpOiBEZW5pYWwgb2YgU2VydmljZSBkdWUg dG8gdW5ib3VuZGVkIG1lbW9yeSBncm93dGggdmlhIFdlYlNvY2tldCBmcmFtZXMKIChyaGJ6IzI0 OTAyMjEpCkNWRS0yMDI2LTk2NzkgLSB1bmRpY2kgdnVsbmVyYWJsZSB0byBIVFRQIGhlYWRlciBp bmplY3Rpb24gdmlhIFNldC1Db29raWUgcGVyY2VudC1kZWNvZGluZwogKHJoYnojMjQ5MDIwMCkK Q1ZFLTIwMjYtNDg2MTggdGxzOiBub3JtYWxpemUgaG9zdG5hbWUgZm9yIHNlcnZlciBpZGVudGl0 eSBjaGVja3MuCiAocmhieiMyNDkzODExKQpDVkUtMjAyNi00ODkzMyBjcnlwdG86IGd1YXJkIFdl YkNyeXB0byBjaXBoZXIgb3V0cHV0IGxlbmd0aC4KIChyaGJ6IzI0OTM4MDIpCkNWRS0yMDI2LTQ4 OTMwIGRucyxuZXQ6IHJlamVjdCBob3N0bmFtZXMgd2l0aCBlbWJlZGRlZCBOVUwgYnl0ZXMuCiAo cmhieiMyNDkzODM2KQpDVkUtMjAyNi00ODYxOSBodHRwMjogY2FwIG9yaWdpblNldCBzaXplIHRv IHByZXZlbnQgdW5ib3VuZGVkIG1lbW9yeSBncm93dGguCiAocmhieiMyNDkzNzMzKQpDVkUtMjAy Ni00ODYxNSBsaWIsdGVzdDogcmVkYWN0IHByb3h5IGNyZWRlbnRpYWxzIGluIHR1bm5lbCBlcnJv cnMuCiAocmhieiMyNDkzODE5KQpDVkUtMjAyNi00ODkzNCB0bHM6IGJpbmQgcmV1c2FibGUgc2Vz c2lvbnMgdG8gYXV0aGVudGljYXRlZCBob3N0LgogKHJoYnojMjQ5MzgyNikKQ1ZFLTIwMjYtNDg5 MjggdGxzOiBmaXggY2FzZS1zZW5zaXRpdmUgU05JIGNvbnRleHQgbWF0Y2hpbmcuCiAocmhieiMy NDkzODIyKQpDVkUtMjAyNi00ODkzNSBwZXJtaXNzaW9uOiBkaXNhYmxlIEZpbGVIYW5kbGUgdXRp bWVzIHdpdGggcGVybWlzc2lvbiBtb2RlbC4KIChyaGJ6IzI0OTM4MzApCkNWRS0yMDI2LTQ4OTM2 IC0gTG9jYWwgc2VydmVyIGNhbiBiZSBzdGFydGVkIHdpdGhvdXQgbmV0d29yayBwZXJtaXNzaW9u IHZpYSBQZXJtaXNzaW9uIEFQSSBmbGF3CiAocmhieiMyNDkzODE1KQoKQ1ZFLTIwMjYtNDg5Mzcg ZGVwczogZml4IGludGVncmF0aW9uIGlzc3VlcyB3aXRoIHRoZSBsYXRlc3QgbmdodHRwMi4KQ1ZF LTIwMjYtNDg5MzEgaHR0cDogZml4IHJlc3BvbnNlIHF1ZXVlIHBvaXNvbmluZyBpbiBodHRwLkFn ZW50LgpDVkUtMjAyNi00ODYxNyBwZXJtaXNzaW9uOiBoYW5kbGUgcHJvY2Vzcy5jaGRpciBvbiB3 cml0ZXJlcG9ydC4KCi0tLQpkaWZmIC0tZ2l0IGEvMDAwMS1kZXBzLXVwZGF0ZS1uZ2h0dHAyLXRv LTEuNjguMS5wYXRjaCBiLzAwMDEtZGVwcy11cGRhdGUtbmdodHRwMi10by0xLjY4LjEucGF0Y2gK ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGExN2Q3M2QuLjAwMDAwMDAKLS0tIGEvMDAw MS1kZXBzLXVwZGF0ZS1uZ2h0dHAyLXRvLTEuNjguMS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0x LDc3MTIgKzAsMCBAQAotRnJvbSBjZDdjZDZkZmUxZmZkMzU4MzJmNzk3ZmU3OTQyZjRjY2QxZDUx ZDA3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQW5kcmVpIFJhZGNoZW5rbyA8YXJh ZGNoZW5AcmVkaGF0LmNvbT4KLURhdGU6IFRodSwgMjYgTWFyIDIwMjYgMTE6MzI6MTggKzAxMDAK LVN1YmplY3Q6IFtQQVRDSF0gZGVwczogdXBkYXRlIG5naHR0cDIgdG8gMS42OC4xCi0KLS0tLQot IGRlcHMvbmdodHRwMi9saWIvQ01ha2VMaXN0cy50eHQgICAgICAgICAgICAgICB8ICAgNDAgKy0K LSBkZXBzL25naHR0cDIvbGliL01ha2VmaWxlLmFtICAgICAgICAgICAgICAgICAgfCAgICAyICst Ci0gZGVwcy9uZ2h0dHAyL2xpYi9NYWtlZmlsZS5pbiAgICAgICAgICAgICAgICAgIHwgICAgNiAr LQotIGRlcHMvbmdodHRwMi9saWIvY29uZmlnLmNtYWtlLmluICAgICAgICAgICAgICB8ICAgIDMg KwotIGRlcHMvbmdodHRwMi9saWIvaW5jbHVkZXMvTWFrZWZpbGUuaW4gICAgICAgICB8ICAgIDQg KwotIGRlcHMvbmdodHRwMi9saWIvaW5jbHVkZXMvbmdodHRwMi9uZ2h0dHAyLmggICB8ICAzMTUg KystLS0KLSAuLi4vbmdodHRwMi9saWIvaW5jbHVkZXMvbmdodHRwMi9uZ2h0dHAydmVyLmggfCAg ICA0ICstCi0gZGVwcy9uZ2h0dHAyL2xpYi9uZ2h0dHAyX2FscG4uaCAgICAgICAgICAgICAgIHwg ICAgNCArLQotIGRlcHMvbmdodHRwMi9saWIvbmdodHRwMl9idWYuaCAgICAgICAgICAgICAgICB8 ICAgIDQgKy0KLSBkZXBzL25naHR0cDIvbGliL25naHR0cDJfY2FsbGJhY2tzLmMgICAgICAgICAg fCAgICA1ICsKLSBkZXBzL25naHR0cDIvbGliL25naHR0cDJfY2FsbGJhY2tzLmggICAgICAgICAg fCAgICA1ICstCi0gZGVwcy9uZ2h0dHAyL2xpYi9uZ2h0dHAyX2RlYnVnLmMgICAgICAgICAgICAg IHwgICAgNCArLQotIGRlcHMvbmdodHRwMi9saWIvbmdodHRwMl9kZWJ1Zy5oICAgICAgICAgICAg ICB8ICAgIDggKy0KLSBkZXBzL25naHR0cDIvbGliL25naHR0cDJfZXh0cHJpLmggICAgICAgICAg ICAgfCAgICA0ICstCi0gZGVwcy9uZ2h0dHAyL2xpYi9uZ2h0dHAyX2ZyYW1lLmMgICAgICAgICAg ICAgIHwgICAxMCArCi0gZGVwcy9uZ2h0dHAyL2xpYi9uZ2h0dHAyX2ZyYW1lLmggICAgICAgICAg ICAgIHwgICAgNCArLQotIGRlcHMvbmdodHRwMi9saWIvbmdodHRwMl9oZC5jICAgICAgICAgICAg ICAgICB8ICAgMTEgKwotIGRlcHMvbmdodHRwMi9saWIvbmdodHRwMl9oZC5oICAgICAgICAgICAg ICAgICB8ICAgIDQgKy0KLSBkZXBzL25naHR0cDIvbGliL25naHR0cDJfaGRfaHVmZm1hbi5oICAg ICAgICAgfCAgICA0ICstCi0gZGVwcy9uZ2h0dHAyL2xpYi9uZ2h0dHAyX2hlbHBlci5oICAgICAg ICAgICAgIHwgICAgNCArLQotIGRlcHMvbmdodHRwMi9saWIvbmdodHRwMl9odHRwLmMgICAgICAg ICAgICAgICB8ICAgMTcgKy0KLSBkZXBzL25naHR0cDIvbGliL25naHR0cDJfaHR0cC5oICAgICAg ICAgICAgICAgfCAgICA0ICstCi0gZGVwcy9uZ2h0dHAyL2xpYi9uZ2h0dHAyX2ludC5oICAgICAg ICAgICAgICAgIHwgICAxMCArLQotIGRlcHMvbmdodHRwMi9saWIvbmdodHRwMl9tYXAuYyAgICAg ICAgICAgICAgICB8ICAgNzAgKy0KLSBkZXBzL25naHR0cDIvbGliL25naHR0cDJfbWFwLmggICAg ICAgICAgICAgICAgfCAgICA5ICstCi0gZGVwcy9uZ2h0dHAyL2xpYi9uZ2h0dHAyX21lbS5oICAg ICAgICAgICAgICAgIHwgICAgNCArLQotIGRlcHMvbmdodHRwMi9saWIvbmdodHRwMl9uZXQuaCAg ICAgICAgICAgICAgICB8ICAgMTYgKy0KLSBkZXBzL25naHR0cDIvbGliL25naHR0cDJfb3B0aW9u LmMgICAgICAgICAgICAgfCAgICA3ICsKLSBkZXBzL25naHR0cDIvbGliL25naHR0cDJfb3B0aW9u LmggICAgICAgICAgICAgfCAgIDEwICstCi0gZGVwcy9uZ2h0dHAyL2xpYi9uZ2h0dHAyX291dGJv dW5kX2l0ZW0uaCAgICAgIHwgICAgNCArLQotIGRlcHMvbmdodHRwMi9saWIvbmdodHRwMl9wcS5o ICAgICAgICAgICAgICAgICB8ICAgIDQgKy0KLSBkZXBzL25naHR0cDIvbGliL25naHR0cDJfcHJp b3JpdHlfc3BlYy5oICAgICAgfCAgICA0ICstCi0gZGVwcy9uZ2h0dHAyL2xpYi9uZ2h0dHAyX3F1 ZXVlLmggICAgICAgICAgICAgIHwgICAgNCArLQotIGRlcHMvbmdodHRwMi9saWIvbmdodHRwMl9y YXRlbGltLmggICAgICAgICAgICB8ICAgIDQgKy0KLSBkZXBzL25naHR0cDIvbGliL25naHR0cDJf cmNidWYuaCAgICAgICAgICAgICAgfCAgICA0ICstCi0gZGVwcy9uZ2h0dHAyL2xpYi9uZ2h0dHAy X3Nlc3Npb24uYyAgICAgICAgICAgIHwgMTE2MyArKysrKystLS0tLS0tLS0tLQotIGRlcHMvbmdo dHRwMi9saWIvbmdodHRwMl9zZXNzaW9uLmggICAgICAgICAgICB8ICAxNDcgKy0tCi0gZGVwcy9u Z2h0dHAyL2xpYi9uZ2h0dHAyX3N0cmVhbS5jICAgICAgICAgICAgIHwgIDg0NyArLS0tLS0tLS0t LS0KLSBkZXBzL25naHR0cDIvbGliL25naHR0cDJfc3RyZWFtLmggICAgICAgICAgICAgfCAgMTYx ICstLQotIGRlcHMvbmdodHRwMi9saWIvbmdodHRwMl9zdWJtaXQuYyAgICAgICAgICAgICB8ICAx NjQgKy0tCi0gZGVwcy9uZ2h0dHAyL2xpYi9uZ2h0dHAyX3N1Ym1pdC5oICAgICAgICAgICAgIHwg ICAgNCArLQotIGRlcHMvbmdodHRwMi9saWIvbmdodHRwMl90aW1lLmMgICAgICAgICAgICAgICB8 ICAgMTUgKy0KLSBkZXBzL25naHR0cDIvbGliL25naHR0cDJfdGltZS5oICAgICAgICAgICAgICAg fCAgICA0ICstCi0gZGVwcy9uZ2h0dHAyL2xpYi9uZ2h0dHAyX3ZlcnNpb24uYyAgICAgICAgICAg IHwgICAgMiArLQotIGRlcHMvbmdodHRwMi9saWIvc2ZwYXJzZS5jICAgICAgICAgICAgICAgICAg ICB8IDExNDAgKysrKysrKysrKysrLS0tLQotIGRlcHMvbmdodHRwMi9saWIvc2ZwYXJzZS5oICAg ICAgICAgICAgICAgICAgICB8ICAzMTMgKysrLS0KLSA0NiBmaWxlcyBjaGFuZ2VkLCAxODM0IGlu c2VydGlvbnMoKyksIDI3NDIgZGVsZXRpb25zKC0pCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGRlcHMv bmdodHRwMi9saWIvY29uZmlnLmNtYWtlLmluCi0KLWRpZmYgLS1naXQgYS9kZXBzL25naHR0cDIv bGliL0NNYWtlTGlzdHMudHh0IGIvZGVwcy9uZ2h0dHAyL2xpYi9DTWFrZUxpc3RzLnR4dAotaW5k ZXggZmRhOGRjYjcuLjk4ZTNkYmU3IDEwMDY0NAotLS0tIGEvZGVwcy9uZ2h0dHAyL2xpYi9DTWFr ZUxpc3RzLnR4dAotKysrIGIvZGVwcy9uZ2h0dHAyL2xpYi9DTWFrZUxpc3RzLnR4dAotQEAgLTQ3 LDcgKzQ3LDI5IEBAIGlmKFdJTjMyKQotICAgc2V0KE5HSFRUUDJfUkVTICR7Q01BS0VfQ1VSUkVO VF9CSU5BUllfRElSfS92ZXJzaW9uLnJjKQotIGVuZGlmKCkKLSAKLS1zZXQoRVhQT1JUX1NFVCAi JHtQUk9KRUNUX05BTUV9LXRhcmdldHMiKQotK3NldChOR0hUVFAyX0dFTkVSQVRFRF9ESVIgIiR7 Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfS9nZW5lcmF0ZWQiKQotK3NldChOR0hUVFAyX1ZFUlNJ T05fQ09ORklHICIke05HSFRUUDJfR0VORVJBVEVEX0RJUn0vJHtQUk9KRUNUX05BTUV9Q29uZmln VmVyc2lvbi5jbWFrZSIpCi0rc2V0KE5HSFRUUDJfUFJPSkVDVF9DT05GSUcgIiR7TkdIVFRQMl9H RU5FUkFURURfRElSfS8ke1BST0pFQ1RfTkFNRX1Db25maWcuY21ha2UiKQotK3NldChOR0hUVFAy X1RBUkdFVFNfRVhQT1JUX05BTUUgIiR7UFJPSkVDVF9OQU1FfVRhcmdldHMiKQotK3NldChOR0hU VFAyX0NPTkZJR19JTlNUQUxMX0RJUiAibGliL2NtYWtlLyR7UFJPSkVDVF9OQU1FfSIpCi0rc2V0 KE5HSFRUUDJfTkFNRVNQQUNFICIke1BST0pFQ1RfTkFNRX06OiIpCi0rc2V0KE5HSFRUUDJfVkVS U0lPTiAke1BST0pFQ1RfVkVSU0lPTn0pCi0rCi0raW5jbHVkZShDTWFrZVBhY2thZ2VDb25maWdI ZWxwZXJzKQotK3dyaXRlX2Jhc2ljX3BhY2thZ2VfdmVyc2lvbl9maWxlKAotKyAgIiR7TkdIVFRQ Ml9WRVJTSU9OX0NPTkZJR30iIFZFUlNJT04gJHtOR0hUVFAyX1ZFUlNJT059IENPTVBBVElCSUxJ VFkgU2FtZU1ham9yVmVyc2lvbgotKykKLStjb25maWd1cmVfZmlsZSgiJHtDTUFLRV9DVVJSRU5U X1NPVVJDRV9ESVJ9L2NvbmZpZy5jbWFrZS5pbiIgIiR7TkdIVFRQMl9QUk9KRUNUX0NPTkZJR30i IEBPTkxZKQotKwotKyMgSW5zdGFsbCBjbWFrZSBjb25maWcgZmlsZXMKLStpbnN0YWxsKAotKyAg RklMRVMgIiR7TkdIVFRQMl9QUk9KRUNUX0NPTkZJR30iICIke05HSFRUUDJfVkVSU0lPTl9DT05G SUd9IgotKyAgREVTVElOQVRJT04gIiR7TkdIVFRQMl9DT05GSUdfSU5TVEFMTF9ESVJ9IikKLSsK LStpbnN0YWxsKAotKyAgRVhQT1JUICIke05HSFRUUDJfVEFSR0VUU19FWFBPUlRfTkFNRX0iCi0r ICBOQU1FU1BBQ0UgIiR7TkdIVFRQMl9OQU1FU1BBQ0V9IgotKyAgREVTVElOQVRJT04gIiR7TkdI VFRQMl9DT05GSUdfSU5TVEFMTF9ESVJ9IikKLSAKLSAjIFB1YmxpYyBzaGFyZWQgbGlicmFyeQot IGlmKEJVSUxEX1NIQVJFRF9MSUJTKQotQEAgLTY1LDcgKzg3LDExIEBAIGlmKEJVSUxEX1NIQVJF RF9MSUJTKQotICAgICAkPElOU1RBTExfSU5URVJGQUNFOiR7Q01BS0VfSU5TVEFMTF9JTkNMVURF RElSfT4KLSAgICkKLSAKLS0gIGluc3RhbGwoVEFSR0VUUyAke1NIQVJFRF9MSUJ9IEVYUE9SVCAk e0VYUE9SVF9TRVR9KQotKyAgaW5zdGFsbChUQVJHRVRTICR7U0hBUkVEX0xJQn0KLSsgICAgRVhQ T1JUICR7TkdIVFRQMl9UQVJHRVRTX0VYUE9SVF9OQU1FfQotKyAgICBBUkNISVZFIERFU1RJTkFU SU9OICIke0NNQUtFX0lOU1RBTExfTElCRElSfSIKLSsgICAgTElCUkFSWSBERVNUSU5BVElPTiAi JHtDTUFLRV9JTlNUQUxMX0xJQkRJUn0iCi0rICAgIFJVTlRJTUUgREVTVElOQVRJT04gIiR7Q01B S0VfSU5TVEFMTF9CSU5ESVJ9IikKLSAgIGxpc3QoQVBQRU5EIG5naHR0cDJfZXhwb3J0cyAke1NI QVJFRF9MSUJ9KQotIGVuZGlmKCkKLSAKLUBAIC04Nyw3ICsxMTMsOSBAQCBpZihCVUlMRF9TVEFU SUNfTElCUykKLSAKLSAgIHRhcmdldF9jb21waWxlX2RlZmluaXRpb25zKCR7U1RBVElDX0xJQn0g UFVCTElDICItRE5HSFRUUDJfU1RBVElDTElCIikKLSAKLS0gIGluc3RhbGwoVEFSR0VUUyAke1NU QVRJQ19MSUJ9IEVYUE9SVCAke0VYUE9SVF9TRVR9KQotKyAgaW5zdGFsbChUQVJHRVRTICR7U1RB VElDX0xJQn0KLSsgICAgRVhQT1JUICR7TkdIVFRQMl9UQVJHRVRTX0VYUE9SVF9OQU1FfQotKyAg ICBBUkNISVZFIERFU1RJTkFUSU9OICIke0NNQUtFX0lOU1RBTExfTElCRElSfSIpCi0gICBsaXN0 KEFQUEVORCBuZ2h0dHAyX2V4cG9ydHMgJHtTVEFUSUNfTElCfSkKLSBlbmRpZigpCi0gCi1AQCAt OTcsMTEgKzEyNSw3IEBAIGVsc2UoKQotICAgc2V0KExJQl9TRUxFQ1RFRCAke1NUQVRJQ19MSUJ9 KQotIGVuZGlmKCkKLSAKLS1hZGRfbGlicmFyeSgke1BST0pFQ1RfTkFNRX06Om5naHR0cDIgQUxJ QVMgJHtMSUJfU0VMRUNURUR9KQotK2FkZF9saWJyYXJ5KG5naHR0cDIgQUxJQVMgJHtMSUJfU0VM RUNURUR9KQotIAotIGluc3RhbGwoRklMRVMgIiR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfS9s aWJuZ2h0dHAyLnBjIgotICAgREVTVElOQVRJT04gIiR7Q01BS0VfSU5TVEFMTF9MSUJESVJ9L3Br Z2NvbmZpZyIpCi0tCi0taW5zdGFsbChFWFBPUlQgJHtFWFBPUlRfU0VUfQotLSAgREVTVElOQVRJ T04gJHtDTUFLRV9JTlNUQUxMX0xJQkRJUn0vY21ha2UvJHtQUk9KRUNUX05BTUV9Ci0tICBOQU1F U1BBQ0UgJHtQUk9KRUNUX05BTUV9OjopCi1kaWZmIC0tZ2l0IGEvZGVwcy9uZ2h0dHAyL2xpYi9N YWtlZmlsZS5hbSBiL2RlcHMvbmdodHRwMi9saWIvTWFrZWZpbGUuYW0KLWluZGV4IDExNjhjMWU2 Li4zYTc0M2RmNiAxMDA2NDQKLS0tLSBhL2RlcHMvbmdodHRwMi9saWIvTWFrZWZpbGUuYW0KLSsr KyBiL2RlcHMvbmdodHRwMi9saWIvTWFrZWZpbGUuYW0KLUBAIC0yMiw3ICsyMiw3IEBACi0gIyBX SVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZU V0FSRS4KLSBTVUJESVJTID0gaW5jbHVkZXMKLSAKLS1FWFRSQV9ESVNUID0gTWFrZWZpbGUubXN2 YyBDTWFrZUxpc3RzLnR4dCB2ZXJzaW9uLnJjLmluCi0rRVhUUkFfRElTVCA9IE1ha2VmaWxlLm1z dmMgQ01ha2VMaXN0cy50eHQgdmVyc2lvbi5yYy5pbiBjb25maWcuY21ha2UuaW4KLSAKLSBBTV9D RkxBR1MgPSAkKFdBUk5DRkxBR1MpICQoRVhUUkFDRkxBRykKLSBBTV9DUFBGTEFHUyA9IC1JJChz cmNkaXIpL2luY2x1ZGVzIC1JJChidWlsZGRpcikvaW5jbHVkZXMgLURCVUlMRElOR19OR0hUVFAy IFwKLWRpZmYgLS1naXQgYS9kZXBzL25naHR0cDIvbGliL01ha2VmaWxlLmluIGIvZGVwcy9uZ2h0 dHAyL2xpYi9NYWtlZmlsZS5pbgotaW5kZXggMTQ2ODZlZjEuLmJiNDU4YTE4IDEwMDY0NAotLS0t IGEvZGVwcy9uZ2h0dHAyL2xpYi9NYWtlZmlsZS5pbgotKysrIGIvZGVwcy9uZ2h0dHAyL2xpYi9N YWtlZmlsZS5pbgotQEAgLTM2MCw2ICszNjAsMTAgQEAgTElCTkdIVFRQM19MSUJTID0gQExJQk5H SFRUUDNfTElCU0AKLSBMSUJOR1RDUDJfQ0ZMQUdTID0gQExJQk5HVENQMl9DRkxBR1NACi0gTElC TkdUQ1AyX0NSWVBUT19CT1JJTkdTU0xfQ0ZMQUdTID0gQExJQk5HVENQMl9DUllQVE9fQk9SSU5H U1NMX0NGTEFHU0AKLSBMSUJOR1RDUDJfQ1JZUFRPX0JPUklOR1NTTF9MSUJTID0gQExJQk5HVENQ Ml9DUllQVE9fQk9SSU5HU1NMX0xJQlNACi0rTElCTkdUQ1AyX0NSWVBUT19MSUJSRVNTTF9DRkxB R1MgPSBATElCTkdUQ1AyX0NSWVBUT19MSUJSRVNTTF9DRkxBR1NACi0rTElCTkdUQ1AyX0NSWVBU T19MSUJSRVNTTF9MSUJTID0gQExJQk5HVENQMl9DUllQVE9fTElCUkVTU0xfTElCU0AKLStMSUJO R1RDUDJfQ1JZUFRPX09TU0xfQ0ZMQUdTID0gQExJQk5HVENQMl9DUllQVE9fT1NTTF9DRkxBR1NA Ci0rTElCTkdUQ1AyX0NSWVBUT19PU1NMX0xJQlMgPSBATElCTkdUQ1AyX0NSWVBUT19PU1NMX0xJ QlNACi0gTElCTkdUQ1AyX0NSWVBUT19RVUlDVExTX0NGTEFHUyA9IEBMSUJOR1RDUDJfQ1JZUFRP X1FVSUNUTFNfQ0ZMQUdTQAotIExJQk5HVENQMl9DUllQVE9fUVVJQ1RMU19MSUJTID0gQExJQk5H VENQMl9DUllQVE9fUVVJQ1RMU19MSUJTQAotIExJQk5HVENQMl9DUllQVE9fV09MRlNTTF9DRkxB R1MgPSBATElCTkdUQ1AyX0NSWVBUT19XT0xGU1NMX0NGTEFHU0AKLUBAIC00OTIsNyArNDk2LDcg QEAgdG9wX3NyY2RpciA9IEB0b3Bfc3JjZGlyQAotICMgT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RI RVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OCi0gIyBXSVRIIFRI RSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4K LSBTVUJESVJTID0gaW5jbHVkZXMKLS1FWFRSQV9ESVNUID0gTWFrZWZpbGUubXN2YyBDTWFrZUxp c3RzLnR4dCB2ZXJzaW9uLnJjLmluCi0rRVhUUkFfRElTVCA9IE1ha2VmaWxlLm1zdmMgQ01ha2VM aXN0cy50eHQgdmVyc2lvbi5yYy5pbiBjb25maWcuY21ha2UuaW4KLSBBTV9DRkxBR1MgPSAkKFdB Uk5DRkxBR1MpICQoRVhUUkFDRkxBRykKLSBBTV9DUFBGTEFHUyA9IC1JJChzcmNkaXIpL2luY2x1 ZGVzIC1JJChidWlsZGRpcikvaW5jbHVkZXMgLURCVUlMRElOR19OR0hUVFAyIFwKLSAJQERFRlNA Ci1kaWZmIC0tZ2l0IGEvZGVwcy9uZ2h0dHAyL2xpYi9jb25maWcuY21ha2UuaW4gYi9kZXBzL25n aHR0cDIvbGliL2NvbmZpZy5jbWFrZS5pbgotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAw MDAwMDAwLi4wYjY3NzcxOAotLS0tIC9kZXYvbnVsbAotKysrIGIvZGVwcy9uZ2h0dHAyL2xpYi9j b25maWcuY21ha2UuaW4KLUBAIC0wLDAgKzEsMyBAQAotK2luY2x1ZGUoQ01ha2VGaW5kRGVwZW5k ZW5jeU1hY3JvKQotKwotK2luY2x1ZGUoIiR7Q01BS0VfQ1VSUkVOVF9MSVNUX0RJUn0vQE5HSFRU UDJfVEFSR0VUU19FWFBPUlRfTkFNRUAuY21ha2UiKQotZGlmZiAtLWdpdCBhL2RlcHMvbmdodHRw Mi9saWIvaW5jbHVkZXMvTWFrZWZpbGUuaW4gYi9kZXBzL25naHR0cDIvbGliL2luY2x1ZGVzL01h a2VmaWxlLmluCi1pbmRleCA3NzhkY2I4Ny4uYTQ2ODczOTAgMTAwNjQ0Ci0tLS0gYS9kZXBzL25n aHR0cDIvbGliL2luY2x1ZGVzL01ha2VmaWxlLmluCi0rKysgYi9kZXBzL25naHR0cDIvbGliL2lu Y2x1ZGVzL01ha2VmaWxlLmluCi1AQCAtMjY1LDYgKzI2NSwxMCBAQCBMSUJOR0hUVFAzX0xJQlMg PSBATElCTkdIVFRQM19MSUJTQAotIExJQk5HVENQMl9DRkxBR1MgPSBATElCTkdUQ1AyX0NGTEFH U0AKLSBMSUJOR1RDUDJfQ1JZUFRPX0JPUklOR1NTTF9DRkxBR1MgPSBATElCTkdUQ1AyX0NSWVBU T19CT1JJTkdTU0xfQ0ZMQUdTQAotIExJQk5HVENQMl9DUllQVE9fQk9SSU5HU1NMX0xJQlMgPSBA TElCTkdUQ1AyX0NSWVBUT19CT1JJTkdTU0xfTElCU0AKLStMSUJOR1RDUDJfQ1JZUFRPX0xJQlJF U1NMX0NGTEFHUyA9IEBMSUJOR1RDUDJfQ1JZUFRPX0xJQlJFU1NMX0NGTEFHU0AKLStMSUJOR1RD UDJfQ1JZUFRPX0xJQlJFU1NMX0xJQlMgPSBATElCTkdUQ1AyX0NSWVBUT19MSUJSRVNTTF9MSUJT QAotK0xJQk5HVENQMl9DUllQVE9fT1NTTF9DRkxBR1MgPSBATElCTkdUQ1AyX0NSWVBUT19PU1NM X0NGTEFHU0AKLStMSUJOR1RDUDJfQ1JZUFRPX09TU0xfTElCUyA9IEBMSUJOR1RDUDJfQ1JZUFRP X09TU0xfTElCU0AKLSBMSUJOR1RDUDJfQ1JZUFRPX1FVSUNUTFNfQ0ZMQUdTID0gQExJQk5HVENQ Ml9DUllQVE9fUVVJQ1RMU19DRkxBR1NACi0gTElCTkdUQ1AyX0NSWVBUT19RVUlDVExTX0xJQlMg PSBATElCTkdUQ1AyX0NSWVBUT19RVUlDVExTX0xJQlNACi0gTElCTkdUQ1AyX0NSWVBUT19XT0xG U1NMX0NGTEFHUyA9IEBMSUJOR1RDUDJfQ1JZUFRPX1dPTEZTU0xfQ0ZMQUdTQAotZGlmZiAtLWdp dCBhL2RlcHMvbmdodHRwMi9saWIvaW5jbHVkZXMvbmdodHRwMi9uZ2h0dHAyLmggYi9kZXBzL25n aHR0cDIvbGliL2luY2x1ZGVzL25naHR0cDIvbmdodHRwMi5oCi1pbmRleCAyZWY0OWI4ZC4uMTlj MTg3NGYgMTAwNjQ0Ci0tLS0gYS9kZXBzL25naHR0cDIvbGliL2luY2x1ZGVzL25naHR0cDIvbmdo dHRwMi5oCi0rKysgYi9kZXBzL25naHR0cDIvbGliL2luY2x1ZGVzL25naHR0cDIvbmdodHRwMi5o Ci1AQCAtMjAzOSwxOCArMjAzOSwxOSBAQCB0eXBlZGVmIGludCAoKm5naHR0cDJfb25faGVhZGVy X2NhbGxiYWNrMikobmdodHRwMl9zZXNzaW9uICpzZXNzaW9uLAotIC8qKgotICAqIEBmdW5jdHlw ZWRlZgotICAqCi0tICogQ2FsbGJhY2sgZnVuY3Rpb24gaW52b2tlZCB3aGVuIGEgaW52YWxpZCBo ZWFkZXIgbmFtZS92YWx1ZSBwYWlyIGlzCi0rICogQ2FsbGJhY2sgZnVuY3Rpb24gaW52b2tlZCB3 aGVuIGFuIGludmFsaWQgaGVhZGVyIG5hbWUvdmFsdWUgcGFpciBpcwotICAqIHJlY2VpdmVkIGZv ciB0aGUgfGZyYW1lfC4KLSAgKgotICAqIFRoZSBwYXJhbWV0ZXIgYW5kIGJlaGF2aW91ciBhcmUg c2ltaWxhciB0bwotICAqIDp0eXBlOmBuZ2h0dHAyX29uX2hlYWRlcl9jYWxsYmFja2AuICBUaGUg ZGlmZmVyZW5jZSBpcyB0aGF0IHRoaXMKLS0gKiBjYWxsYmFjayBpcyBvbmx5IGludm9rZWQgd2hl biBhIGludmFsaWQgaGVhZGVyIG5hbWUvdmFsdWUgcGFpciBpcwotLSAqIHJlY2VpdmVkIHdoaWNo IGlzIHRyZWF0ZWQgYXMgc3RyZWFtIGVycm9yIGlmIHRoaXMgY2FsbGJhY2sgaXMgbm90Ci0tICog c2V0LiAgT25seSBpbnZhbGlkIHJlZ3VsYXIgaGVhZGVyIGZpZWxkIGFyZSBwYXNzZWQgdG8gdGhp cwotLSAqIGNhbGxiYWNrLiAgSW4gb3RoZXIgd29yZHMsIGludmFsaWQgcHNldWRvIGhlYWRlciBm aWVsZCBpcyBub3QKLS0gKiBwYXNzZWQgdG8gdGhpcyBjYWxsYmFjay4gIEFsc28gaGVhZGVyIGZp ZWxkcyB3aGljaCBpbmNsdWRlcyB1cHBlcgotLSAqIGNhc2VkIGxhdHRlciBhcmUgYWxzbyB0cmVh dGVkIGFzIGVycm9yIHdpdGhvdXQgcGFzc2luZyB0aGVtIHRvIHRoaXMKLS0gKiBjYWxsYmFjay4K LSsgKiBjYWxsYmFjayBpcyBvbmx5IGludm9rZWQgd2hlbiBhbiBpbnZhbGlkIGhlYWRlciBuYW1l L3ZhbHVlIHBhaXIgaXMKLSsgKiByZWNlaXZlZCB3aGljaCBpcyB0cmVhdGVkIGFzIHN0cmVhbSBl cnJvciBpZiB0aGlzIGNhbGxiYWNrIHJldHVybnMKLSsgKiA6ZW51bTpgbmdodHRwMl9lcnJvci5O R0hUVFAyX0VSUl9URU1QT1JBTF9DQUxMQkFDS19GQUlMVVJFYCBhbmQKLSsgKiA6dHlwZTpgbmdo dHRwMl9vbl9pbnZhbGlkX2hlYWRlcl9jYWxsYmFjazJgIGlzIG5vdCBzZXQuICBPbmx5Ci0rICog aW52YWxpZCByZWd1bGFyIGhlYWRlciBmaWVsZCBhcmUgcGFzc2VkIHRvIHRoaXMgY2FsbGJhY2su ICBJbiBvdGhlcgotKyAqIHdvcmRzLCBpbnZhbGlkIHBzZXVkbyBoZWFkZXIgZmllbGQgaXMgbm90 IHBhc3NlZCB0byB0aGlzIGNhbGxiYWNrLgotKyAqIEFsc28gaGVhZGVyIGZpZWxkcyB3aGljaCBp bmNsdWRlcyB1cHBlciBjYXNlZCBsYXR0ZXIgYXJlIGFsc28KLSsgKiB0cmVhdGVkIGFzIGVycm9y IHdpdGhvdXQgcGFzc2luZyB0aGVtIHRvIHRoaXMgY2FsbGJhY2suCi0gICoKLSAgKiBUaGlzIGNh bGxiYWNrIGlzIG9ubHkgY29uc2lkZXJlZCBpZiBIVFRQIG1lc3NhZ2luZyB2YWxpZGF0aW9uIGlz Ci0gICogdHVybmVkIG9uICh3aGljaCBpcyBvbiBieSBkZWZhdWx0LCBzZWUKLUBAIC0yMDc2LDE3 ICsyMDc3LDE4IEBAIHR5cGVkZWYgaW50ICgqbmdodHRwMl9vbl9pbnZhbGlkX2hlYWRlcl9jYWxs YmFjaykoCi0gLyoqCi0gICogQGZ1bmN0eXBlZGVmCi0gICoKLS0gKiBDYWxsYmFjayBmdW5jdGlv biBpbnZva2VkIHdoZW4gYSBpbnZhbGlkIGhlYWRlciBuYW1lL3ZhbHVlIHBhaXIgaXMKLSsgKiBD YWxsYmFjayBmdW5jdGlvbiBpbnZva2VkIHdoZW4gYW4gaW52YWxpZCBoZWFkZXIgbmFtZS92YWx1 ZSBwYWlyIGlzCi0gICogcmVjZWl2ZWQgZm9yIHRoZSB8ZnJhbWV8LgotICAqCi0gICogVGhlIHBh cmFtZXRlciBhbmQgYmVoYXZpb3VyIGFyZSBzaW1pbGFyIHRvCi0gICogOnR5cGU6YG5naHR0cDJf b25faGVhZGVyX2NhbGxiYWNrMmAuICBUaGUgZGlmZmVyZW5jZSBpcyB0aGF0IHRoaXMKLS0gKiBj YWxsYmFjayBpcyBvbmx5IGludm9rZWQgd2hlbiBhIGludmFsaWQgaGVhZGVyIG5hbWUvdmFsdWUg cGFpciBpcwotLSAqIHJlY2VpdmVkIHdoaWNoIGlzIHNpbGVudGx5IGlnbm9yZWQgaWYgdGhpcyBj YWxsYmFjayBpcyBub3Qgc2V0LgotLSAqIE9ubHkgaW52YWxpZCByZWd1bGFyIGhlYWRlciBmaWVs ZCBhcmUgcGFzc2VkIHRvIHRoaXMgY2FsbGJhY2suICBJbgotLSAqIG90aGVyIHdvcmRzLCBpbnZh bGlkIHBzZXVkbyBoZWFkZXIgZmllbGQgaXMgbm90IHBhc3NlZCB0byB0aGlzCi0tICogY2FsbGJh Y2suICBBbHNvIGhlYWRlciBmaWVsZHMgd2hpY2ggaW5jbHVkZXMgdXBwZXIgY2FzZWQgbGF0dGVy IGFyZQotLSAqIGFsc28gdHJlYXRlZCBhcyBlcnJvciB3aXRob3V0IHBhc3NpbmcgdGhlbSB0byB0 aGlzIGNhbGxiYWNrLgotKyAqIGNhbGxiYWNrIGlzIG9ubHkgaW52b2tlZCB3aGVuIGFuIGludmFs aWQgaGVhZGVyIG5hbWUvdmFsdWUgcGFpciBpcwotKyAqIHJlY2VpdmVkIHdoaWNoIGlzIHNpbGVu dGx5IGlnbm9yZWQgaWYgbmVpdGhlciB0aGlzIGNhbGxiYWNrIG5vcgotKyAqIDp0eXBlOmBuZ2h0 dHAyX29uX2ludmFsaWRfaGVhZGVyX2NhbGxiYWNrYCBpcyBzZXQuICBPbmx5IGludmFsaWQKLSsg KiByZWd1bGFyIGhlYWRlciBmaWVsZCBhcmUgcGFzc2VkIHRvIHRoaXMgY2FsbGJhY2suICBJbiBv dGhlciB3b3JkcywKLSsgKiBpbnZhbGlkIHBzZXVkbyBoZWFkZXIgZmllbGQgaXMgbm90IHBhc3Nl ZCB0byB0aGlzIGNhbGxiYWNrLiAgQWxzbwotKyAqIGhlYWRlciBmaWVsZHMgd2hpY2ggaW5jbHVk ZXMgdXBwZXIgY2FzZWQgbGF0dGVyIGFyZSBhbHNvIHRyZWF0ZWQgYXMKLSsgKiBlcnJvciB3aXRo b3V0IHBhc3NpbmcgdGhlbSB0byB0aGlzIGNhbGxiYWNrLgotICAqCi0gICogVGhpcyBjYWxsYmFj ayBpcyBvbmx5IGNvbnNpZGVyZWQgaWYgSFRUUCBtZXNzYWdpbmcgdmFsaWRhdGlvbiBpcwotICAq IHR1cm5lZCBvbiAod2hpY2ggaXMgb24gYnkgZGVmYXVsdCwgc2VlCi1AQCAtMjQ0NSw2ICsyNDQ3 LDE1IEBAIHR5cGVkZWYgaW50ICgqbmdodHRwMl9lcnJvcl9jYWxsYmFjazIpKG5naHR0cDJfc2Vz c2lvbiAqc2Vzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp bnQgbGliX2Vycm9yX2NvZGUsIGNvbnN0IGNoYXIgKm1zZywKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGVuLCB2b2lkICp1c2VyX2RhdGEpOwotIAotKy8q KgotKyAqIEBmdW5jdHlwZWRlZgotKyAqCi0rICogQ2FsbGJhY2sgZnVuY3Rpb24gaW52b2tlZCB3 aGVuIHVucHJlZGljdGFibGUgZGF0YSBvZiB8ZGVzdGxlbnwKLSsgKiBieXRlcyBhcmUgbmVlZGVk LiAgVGhlIGltcGxlbWVudGF0aW9uIG11c3Qgd3JpdGUgdW5wcmVkaWN0YWJsZSBkYXRhCi0rICog b2YgfGRlc3RsZW58IGJ5dGVzIGludG8gdGhlIGJ1ZmZlciBwb2ludGVkIGJ5IHxkZXN0fC4KLSsg Ki8KLSt0eXBlZGVmIHZvaWQgKCpuZ2h0dHAyX3JhbmRfY2FsbGJhY2spKHVpbnQ4X3QgKmRlc3Qs IHNpemVfdCBkZXN0bGVuKTsKLSsKLSBzdHJ1Y3QgbmdodHRwMl9zZXNzaW9uX2NhbGxiYWNrczsK LSAKLSAvKioKLUBAIC0yNjQ5LDcgKzI2NjAsNyBAQCBOR0hUVFAyX0VYVEVSTiB2b2lkIG5naHR0 cDJfc2Vzc2lvbl9jYWxsYmFja3Nfc2V0X29uX2hlYWRlcl9jYWxsYmFjazIoCi0gLyoqCi0gICog QGZ1bmN0aW9uCi0gICoKLS0gKiBTZXRzIGNhbGxiYWNrIGZ1bmN0aW9uIGludm9rZWQgd2hlbiBh IGludmFsaWQgaGVhZGVyIG5hbWUvdmFsdWUKLSsgKiBTZXRzIGNhbGxiYWNrIGZ1bmN0aW9uIGlu dm9rZWQgd2hlbiBhbiBpbnZhbGlkIGhlYWRlciBuYW1lL3ZhbHVlCi0gICogcGFpciBpcyByZWNl aXZlZC4gIElmIGJvdGgKLSAgKiBgbmdodHRwMl9zZXNzaW9uX2NhbGxiYWNrc19zZXRfb25faW52 YWxpZF9oZWFkZXJfY2FsbGJhY2soKWAgYW5kCi0gICogYG5naHR0cDJfc2Vzc2lvbl9jYWxsYmFj a3Nfc2V0X29uX2ludmFsaWRfaGVhZGVyX2NhbGxiYWNrMigpYCBhcmUKLUBAIC0yNjYyLDcgKzI2 NzMsNyBAQCBOR0hUVFAyX0VYVEVSTiB2b2lkIG5naHR0cDJfc2Vzc2lvbl9jYWxsYmFja3Nfc2V0 X29uX2ludmFsaWRfaGVhZGVyX2NhbGxiYWNrKAotIC8qKgotICAqIEBmdW5jdGlvbgotICAqCi0t ICogU2V0cyBjYWxsYmFjayBmdW5jdGlvbiBpbnZva2VkIHdoZW4gYSBpbnZhbGlkIGhlYWRlciBu YW1lL3ZhbHVlCi0rICogU2V0cyBjYWxsYmFjayBmdW5jdGlvbiBpbnZva2VkIHdoZW4gYW4gaW52 YWxpZCBoZWFkZXIgbmFtZS92YWx1ZQotICAqIHBhaXIgaXMgcmVjZWl2ZWQuCi0gICovCi0gTkdI VFRQMl9FWFRFUk4gdm9pZCBuZ2h0dHAyX3Nlc3Npb25fY2FsbGJhY2tzX3NldF9vbl9pbnZhbGlk X2hlYWRlcl9jYWxsYmFjazIoCi1AQCAtMjgzMyw2ICsyODQ0LDE4IEBAIE5HSFRUUDJfRVhURVJO IHZvaWQgbmdodHRwMl9zZXNzaW9uX2NhbGxiYWNrc19zZXRfZXJyb3JfY2FsbGJhY2soCi0gTkdI VFRQMl9FWFRFUk4gdm9pZCBuZ2h0dHAyX3Nlc3Npb25fY2FsbGJhY2tzX3NldF9lcnJvcl9jYWxs YmFjazIoCi0gICBuZ2h0dHAyX3Nlc3Npb25fY2FsbGJhY2tzICpjYnMsIG5naHR0cDJfZXJyb3Jf Y2FsbGJhY2syIGVycm9yX2NhbGxiYWNrMik7Ci0gCi0rLyoqCi0rICogQGZ1bmN0aW9uCi0rICoK LSsgKiBTZXRzIGNhbGxiYWNrIGZ1bmN0aW9uIGludm9rZWQgd2hlbiB1bnByZWRpY3RhYmxlIGRh dGEgaXMgbmVlZGVkLgotKyAqIEFsdGhvdWdoIHRoaXMgY2FsbGJhY2sgaXMgb3B0aW9uYWwgZHVl IHRvIHRoZSBiYWNrd2FyZAotKyAqIGNvbXBhdGliaWxpdHksIGl0IGlzIHJlY29tbWVuZGVkIHRv IHNwZWNpZnkgaXQgdG8gaGFyZGVuIHRoZQotKyAqIHJ1bnRpbWUgYmVoYXZpb3IgYWdhaW5zdCBz dXNwaWNpb3VzIGFjdGl2aXRpZXMgb2YgYSByZW1vdGUKLSsgKiBlbmRwb2ludC4KLSsgKi8KLStO R0hUVFAyX0VYVEVSTiB2b2lkIG5naHR0cDJfc2Vzc2lvbl9jYWxsYmFja3Nfc2V0X3JhbmRfY2Fs bGJhY2soCi0rICBuZ2h0dHAyX3Nlc3Npb25fY2FsbGJhY2tzICpjYnMsIG5naHR0cDJfcmFuZF9j YWxsYmFjayByYW5kX2NhbGxiYWNrKTsKLSsKLSAvKioKLSAgKiBAZnVuY3R5cGVkZWYKLSAgKgot QEAgLTMxMzMsMTQgKzMxNTYsMTIgQEAgbmdodHRwMl9vcHRpb25fc2V0X21heF9kZWZsYXRlX2R5 bmFtaWNfdGFibGVfc2l6ZShuZ2h0dHAyX29wdGlvbiAqb3B0aW9uLAotIC8qKgotICAqIEBmdW5j dGlvbgotICAqCi0tICogVGhpcyBvcHRpb24gcHJldmVudHMgdGhlIGxpYnJhcnkgZnJvbSByZXRh aW5pbmcgY2xvc2VkIHN0cmVhbXMgdG8KLS0gKiBtYWludGFpbiB0aGUgcHJpb3JpdHkgdHJlZS4g IElmIHRoaXMgb3B0aW9uIGlzIHNldCB0byBub256ZXJvLAotLSAqIGFwcGxpY2F0aW9ucyBjYW4g ZGlzY2FyZCBjbG9zZWQgc3RyZWFtIGNvbXBsZXRlbHkgdG8gc2F2ZSBtZW1vcnkuCi0rICogLi4g d2FybmluZzo6Ci0gICoKLS0gKiBJZgotLSAqIDplbnVtOmBuZ2h0dHAyX3NldHRpbmdzX2lkLk5H SFRUUDJfU0VUVElOR1NfTk9fUkZDNzU0MF9QUklPUklUSUVTYAotLSAqIG9mIHZhbHVlIG9mIDEg aXMgc3VibWl0dGVkIHZpYSBgbmdodHRwMl9zdWJtaXRfc2V0dGluZ3MoKWAsIGFueQotLSAqIGNs b3NlZCBzdHJlYW1zIGFyZSBub3QgcmV0YWluZWQgcmVnYXJkbGVzcyBvZiB0aGlzIG9wdGlvbi4K LSsgKiAgIERlcHJlY2F0ZWQuICBDbG9zZWQgc3RyZWFtcyBhcmUgbm90IHJldGFpbmVkIGFueW1v cmUuCi0rICoKLSsgKiBUaGlzIGZ1bmN0aW9uIHdvcmtzIGFzIGJlZm9yZSwgYnV0IGl0IGRvZXMg bm90IHRha2UgYW55IGVmZmVjdAotKyAqIGFnYWluc3QgOnR5cGU6YG5naHR0cDJfc2Vzc2lvbmAu Ci0gICovCi0gTkdIVFRQMl9FWFRFUk4gdm9pZCBuZ2h0dHAyX29wdGlvbl9zZXRfbm9fY2xvc2Vk X3N0cmVhbXMobmdodHRwMl9vcHRpb24gKm9wdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdmFsKTsKLUBAIC0zMTcwLDE2 ICszMTkxLDExIEBAIE5HSFRUUDJfRVhURVJOIHZvaWQgbmdodHRwMl9vcHRpb25fc2V0X21heF9z ZXR0aW5ncyhuZ2h0dHAyX29wdGlvbiAqb3B0aW9uLAotIC8qKgotICAqIEBmdW5jdGlvbgotICAq Ci0tICogVGhpcyBvcHRpb24sIGlmIHNldCB0byBub256ZXJvLCBhbGxvd3Mgc2VydmVyIHRvIGZh bGxiYWNrIHRvCi0tICogOnJmYzpgNzU0MGAgcHJpb3JpdGllcyBpZiBTRVRUSU5HU19OT19SRkM3 NTQwX1BSSU9SSVRJRVMgd2FzIG5vdAotLSAqIHJlY2VpdmVkIGZyb20gY2xpZW50LCBhbmQgc2Vy dmVyIHN1Ym1pdHRlZAotLSAqIDplbnVtOmBuZ2h0dHAyX3NldHRpbmdzX2lkLk5HSFRUUDJfU0VU VElOR1NfTk9fUkZDNzU0MF9QUklPUklUSUVTYAotLSAqID0gMSB2aWEgYG5naHR0cDJfc3VibWl0 X3NldHRpbmdzKClgLiAgTW9zdCBvZiB0aGUgYWR2YW5jZWQKLS0gKiBmdW5jdGlvbmFsaXR5IGZv ciBSRkMgNzU0MCBwcmlvcml0aWVzIGFyZSBzdGlsbCBkaXNhYmxlZC4gIFRoaXMKLS0gKiBmYWxs YmFjayBvbmx5IGVuYWJsZXMgdGhlIG1pbmltYWwgZmVhdHVyZSBzZXQgb2YgUkZDIDc1NDAKLS0g KiBwcmlvcml0aWVzIHRvIGRlYWwgd2l0aCBwcmlvcml0eSBzaWduYWxpbmcgZnJvbSBjbGllbnQu Ci0rICogLi4gd2FybmluZzo6Ci0rICogICAgRGVwcmVjYXRlZC4gIDpyZmM6YDc1NDBgIHByaW9y aXRpZXMgaGF2ZSBiZWVuIHJlbW92ZWQuCi0gICoKLS0gKiBDbGllbnQgc2Vzc2lvbiBpZ25vcmVz IHRoaXMgb3B0aW9uLgotKyAqIFRoaXMgZnVuY3Rpb24gd29ya3MgYXMgYmVmb3JlLCBidXQgaXQg ZG9lcyBub3QgdGFrZSBhbnkgZWZmZWN0Ci0rICogYWdhaW5zdCA6dHlwZTpgbmdodHRwMl9zZXNz aW9uYC4KLSAgKi8KLSBOR0hUVFAyX0VYVEVSTiB2b2lkCi0gbmdodHRwMl9vcHRpb25fc2V0X3Nl cnZlcl9mYWxsYmFja19yZmM3NTQwX3ByaW9yaXRpZXMobmdodHRwMl9vcHRpb24gKm9wdGlvbiwK LUBAIC0zMjI1LDYgKzMyNDEsMjMgQEAgbmdodHRwMl9vcHRpb25fc2V0X3N0cmVhbV9yZXNldF9y YXRlX2xpbWl0KG5naHR0cDJfb3B0aW9uICpvcHRpb24sCi0gTkdIVFRQMl9FWFRFUk4gdm9pZCBu Z2h0dHAyX29wdGlvbl9zZXRfbWF4X2NvbnRpbnVhdGlvbnMobmdodHRwMl9vcHRpb24gKm9wdGlv biwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzaXplX3QgdmFsKTsKLSAKLSsvKioKLSsgKiBAZnVuY3Rpb24KLSsgKgotKyAqIFRoaXMg ZnVuY3Rpb24gc2V0cyB0aGUgcmF0ZSBsaW1pdCBmb3IgdGhlICJnbGl0Y2hlcyIsIHRoZQotKyAq IHN1c3BpY2lvdXMgYWN0aXZpdGllcyBmcm9tIGEgcmVtb3RlIGVuZHBvaW50LiAgSXQgaXMgYSB0 b2tlbi1idWNrZXQKLSsgKiBiYXNlZCByYXRlIGxpbWl0ZXIuICB8YnVyc3R8IHNwZWNpZmllcyB0 aGUgbnVtYmVyIG9mIHRva2VucyB0aGF0IGlzCi0rICogaW5pdGlhbGx5IGF2YWlsYWJsZS4gIFRo ZSBtYXhpbXVtIG51bWJlciBvZiB0b2tlbnMgaXMgY2FwcGVkIHRvCi0rICogdGhpcyB2YWx1ZS4g IHxyYXRlfCBzcGVjaWZpZXMgdGhlIG51bWJlciBvZiB0b2tlbnMgdGhhdCBhcmUKLSsgKiByZWdl bmVyYXRlZCBwZXIgc2Vjb25kLiAgV2hlbiBhIHN1c3BpY2lvdXMgYWN0aXZpdHkgaXMgZGV0ZWN0 ZWQsCi0rICogc29tZSBhbW91bnQgb2YgdG9rZW5zIGFyZSBjb25zdW1lZC4gIElmIHRoZXJlIGlz IG5vIHRva2VuCi0rICogYXZhaWxhYmxlLCBHT0FXQVkgaXMgc2VudCB0byB0ZWFyIGRvd24gdGhl IGNvbm5lY3Rpb24uICB8YnVyc3R8IGFuZAotKyAqIHxyYXRlfCBkZWZhdWx0IHRvIDEwMDAgYW5k IDMzIHJlc3BlY3RpdmVseS4KLSsgKi8KLStOR0hUVFAyX0VYVEVSTiB2b2lkIG5naHR0cDJfb3B0 aW9uX3NldF9nbGl0Y2hfcmF0ZV9saW1pdChuZ2h0dHAyX29wdGlvbiAqb3B0aW9uLAotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2 NF90IGJ1cnN0LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHVpbnQ2NF90IHJhdGUpOwotKwotIC8qKgotICAqIEBmdW5jdGlvbgotICAq Ci1AQCAtNDE3OSwzOSArNDIxMiw5IEBAIE5HSFRUUDJfRVhURVJOIGludCBuZ2h0dHAyX3Nlc3Np b25fY29uc3VtZV9zdHJlYW0obmdodHRwMl9zZXNzaW9uICpzZXNzaW9uLAotICAqCi0gICogICBE ZXByZWNhdGVkLiAgOnJmYzpgNzU0MGAgcHJpb3JpdGllcyBhcmUgZGVwcmVjYXRlZCBieQotICAq ICAgOnJmYzpgOTExM2AuICBDb25zaWRlciBtaWdyYXRpbmcgdG8gOnJmYzpgOTIxOGAgZXh0ZW5z aWJsZQotLSAqICAgcHJpb3JpdGl6YXRpb24gc2NoZW1lLiAgSW4gdGhlIGZ1dHVyZSByZWxlYXNl IGFmdGVyIHRoZSBlbmQgb2YKLS0gKiAgIDIwMjQsIHRoaXMgZnVuY3Rpb24gd2lsbCBhbHdheXMg cmV0dXJuIDAgd2l0aG91dCBkb2luZyBhbnl0aGluZy4KLS0gKgotLSAqIENoYW5nZXMgcHJpb3Jp dHkgb2YgZXhpc3Rpbmcgc3RyZWFtIGRlbm90ZWQgYnkgfHN0cmVhbV9pZHwuICBUaGUKLS0gKiBu ZXcgcHJpb3JpdHkgc3BlY2lmaWNhdGlvbiBpcyB8cHJpX3NwZWN8LgotLSAqCi0tICogVGhlIHBy aW9yaXR5IGlzIGNoYW5nZWQgc2lsZW50bHkgYW5kIGluc3RhbnRseSwgYW5kIG5vIFBSSU9SSVRZ Ci0tICogZnJhbWUgd2lsbCBiZSBzZW50IHRvIG5vdGlmeSB0aGUgcGVlciBvZiB0aGlzIGNoYW5n ZS4gIFRoaXMKLS0gKiBmdW5jdGlvbiBtYXkgYmUgdXNlZnVsIGZvciBzZXJ2ZXIgdG8gY2hhbmdl IHRoZSBwcmlvcml0eSBvZiBwdXNoZWQKLS0gKiBzdHJlYW0uCi0tICoKLS0gKiBJZiB8c2Vzc2lv bnwgaXMgaW5pdGlhbGl6ZWQgYXMgc2VydmVyLCBhbmQgYGBwcmlfc3BlYy0+c3RyZWFtX2lkYGAK LS0gKiBwb2ludHMgdG8gdGhlIGlkbGUgc3RyZWFtLCB0aGUgaWRsZSBzdHJlYW0gaXMgY3JlYXRl ZCBpZiBpdCBkb2VzCi0tICogbm90IGV4aXN0LiAgVGhlIGNyZWF0ZWQgaWRsZSBzdHJlYW0gd2ls bCBkZXBlbmQgb24gcm9vdCBzdHJlYW0KLS0gKiAoc3RyZWFtIDApIHdpdGggd2VpZ2h0IDE2Lgot LSAqCi0tICogT3RoZXJ3aXNlLCBpZiBzdHJlYW0gZGVub3RlZCBieSBgYHByaV9zcGVjLT5zdHJl YW1faWRgYCBpcyBub3QKLS0gKiBmb3VuZCwgd2UgdXNlIGRlZmF1bHQgcHJpb3JpdHkgaW5zdGVh ZCBvZiBnaXZlbiB8cHJpX3NwZWN8LiAgVGhhdAotLSAqIGlzIG1ha2Ugc3RyZWFtIGRlcGVuZCBv biByb290IHN0cmVhbSB3aXRoIHdlaWdodCAxNi4KLS0gKgotLSAqIElmCi0tICogOmVudW06YG5n aHR0cDJfc2V0dGluZ3NfaWQuTkdIVFRQMl9TRVRUSU5HU19OT19SRkM3NTQwX1BSSU9SSVRJRVNg Ci0tICogb2YgdmFsdWUgb2YgMSBpcyBzdWJtaXR0ZWQgdmlhIGBuZ2h0dHAyX3N1Ym1pdF9zZXR0 aW5ncygpYCwgdGhpcwotLSAqIGZ1bmN0aW9uIGRvZXMgbm90aGluZyBhbmQgcmV0dXJucyAwLgot LSAqCi0tICogVGhpcyBmdW5jdGlvbiByZXR1cm5zIDAgaWYgaXQgc3VjY2VlZHMsIG9yIG9uZSBv ZiB0aGUgZm9sbG93aW5nCi0tICogbmVnYXRpdmUgZXJyb3IgY29kZXM6Ci0rICogICBwcmlvcml0 aXphdGlvbiBzY2hlbWUuCi0gICoKLS0gKiA6ZW51bTpgbmdodHRwMl9lcnJvci5OR0hUVFAyX0VS Ul9OT01FTWAKLS0gKiAgICAgT3V0IG9mIG1lbW9yeS4KLS0gKiA6ZW51bTpgbmdodHRwMl9lcnJv ci5OR0hUVFAyX0VSUl9JTlZBTElEX0FSR1VNRU5UYAotLSAqICAgICBBdHRlbXB0ZWQgdG8gZGVw ZW5kIG9uIGl0c2VsZjsgb3Igbm8gc3RyZWFtIGV4aXN0IGZvciB0aGUgZ2l2ZW4KLS0gKiAgICAg fHN0cmVhbV9pZHw7IG9yIHxzdHJlYW1faWR8IGlzIDAKLSsgKiBUaGlzIGZ1bmN0aW9uIGlzIG5v b3AuICBJdCBhbHdheXMgcmV0dXJucyAwLgotICAqLwotIE5HSFRUUDJfRVhURVJOIGludAotIG5n aHR0cDJfc2Vzc2lvbl9jaGFuZ2Vfc3RyZWFtX3ByaW9yaXR5KG5naHR0cDJfc2Vzc2lvbiAqc2Vz c2lvbiwKLUBAIC00MjI1LDUxICs0MjI4LDkgQEAgbmdodHRwMl9zZXNzaW9uX2NoYW5nZV9zdHJl YW1fcHJpb3JpdHkobmdodHRwMl9zZXNzaW9uICpzZXNzaW9uLAotICAqCi0gICogICBEZXByZWNh dGVkLiAgOnJmYzpgNzU0MGAgcHJpb3JpdGllcyBhcmUgZGVwcmVjYXRlZCBieQotICAqICAgOnJm YzpgOTExM2AuICBDb25zaWRlciBtaWdyYXRpbmcgdG8gOnJmYzpgOTIxOGAgZXh0ZW5zaWJsZQot LSAqICAgcHJpb3JpdGl6YXRpb24gc2NoZW1lLiAgSW4gdGhlIGZ1dHVyZSByZWxlYXNlIGFmdGVy IHRoZSBlbmQgb2YKLS0gKiAgIDIwMjQsIHRoaXMgZnVuY3Rpb24gd2lsbCBhbHdheXMgcmV0dXJu IDAgd2l0aG91dCBkb2luZyBhbnl0aGluZy4KLS0gKgotLSAqIENyZWF0ZXMgaWRsZSBzdHJlYW0g d2l0aCB0aGUgZ2l2ZW4gfHN0cmVhbV9pZHwsIGFuZCBwcmlvcml0eQotLSAqIHxwcmlfc3BlY3wu Ci0tICoKLS0gKiBUaGUgc3RyZWFtIGNyZWF0aW9uIGlzIGRvbmUgd2l0aG91dCBzZW5kaW5nIFBS SU9SSVRZIGZyYW1lLCB3aGljaAotLSAqIG1lYW5zIHRoYXQgcGVlciBkb2VzIG5vdCBrbm93IGFi b3V0IHRoZSBleGlzdGVuY2Ugb2YgdGhpcyBpZGxlCi0tICogc3RyZWFtIGluIHRoZSBsb2NhbCBl bmRwb2ludC4KLS0gKgotLSAqIFJGQyA3NTQwIGRvZXMgbm90IGRpc2FsbG93IHRoZSB1c2Ugb2Yg Y3JlYXRpb24gb2YgaWRsZSBzdHJlYW0gd2l0aAotLSAqIG9kZCBvciBldmVuIHN0cmVhbSBJRCBy ZWdhcmRsZXNzIG9mIGNsaWVudCBvciBzZXJ2ZXIuICBTbyB0aGlzCi0tICogZnVuY3Rpb24gY2Fu IGNyZWF0ZSBvZGQgb3IgZXZlbiBzdHJlYW0gSUQgcmVnYXJkbGVzcyBvZiBjbGllbnQgb3IKLS0g KiBzZXJ2ZXIuICBCdXQgcHJvYmFibHkgaXQgaXMgYSBiaXQgc2FmZXIgdG8gdXNlIHRoZSBzdHJl YW0gSUQgdGhlCi0tICogbG9jYWwgZW5kcG9pbnQgY2FuIGluaXRpYXRlIChpbiBvdGhlciB3b3Jk cywgdXNlIG9kZCBzdHJlYW0gSUQgZm9yCi0tICogY2xpZW50LCBhbmQgZXZlbiBzdHJlYW0gSUQg Zm9yIHNlcnZlciksIHRvIGF2b2lkIHBvdGVudGlhbAotLSAqIGNvbGxpc2lvbiBmcm9tIHBlZXIn cyBpbnN0cnVjdGlvbi4gIEFsc28gd2UgY2FuIHVzZQotLSAqIGBuZ2h0dHAyX3Nlc3Npb25fc2V0 X25leHRfc3RyZWFtX2lkKClgIHRvIGF2b2lkIHRvIG9wZW4gY3JlYXRlZAotLSAqIGlkbGUgc3Ry ZWFtcyBhY2NpZGVudGFsbHkgaWYgd2UgZm9sbG93IHRoaXMgcmVjb21tZW5kYXRpb24uCi0tICoK LS0gKiBJZiB8c2Vzc2lvbnwgaXMgaW5pdGlhbGl6ZWQgYXMgc2VydmVyLCBhbmQgYGBwcmlfc3Bl Yy0+c3RyZWFtX2lkYGAKLS0gKiBwb2ludHMgdG8gdGhlIGlkbGUgc3RyZWFtLCB0aGUgaWRsZSBz dHJlYW0gaXMgY3JlYXRlZCBpZiBpdCBkb2VzCi0tICogbm90IGV4aXN0LiAgVGhlIGNyZWF0ZWQg aWRsZSBzdHJlYW0gd2lsbCBkZXBlbmQgb24gcm9vdCBzdHJlYW0KLS0gKiAoc3RyZWFtIDApIHdp dGggd2VpZ2h0IDE2LgotLSAqCi0tICogT3RoZXJ3aXNlLCBpZiBzdHJlYW0gZGVub3RlZCBieSBg YHByaV9zcGVjLT5zdHJlYW1faWRgYCBpcyBub3QKLS0gKiBmb3VuZCwgd2UgdXNlIGRlZmF1bHQg cHJpb3JpdHkgaW5zdGVhZCBvZiBnaXZlbiB8cHJpX3NwZWN8LiAgVGhhdAotLSAqIGlzIG1ha2Ug c3RyZWFtIGRlcGVuZCBvbiByb290IHN0cmVhbSB3aXRoIHdlaWdodCAxNi4KLS0gKgotLSAqIElm Ci0tICogOmVudW06YG5naHR0cDJfc2V0dGluZ3NfaWQuTkdIVFRQMl9TRVRUSU5HU19OT19SRkM3 NTQwX1BSSU9SSVRJRVNgCi0tICogb2YgdmFsdWUgb2YgMSBpcyBzdWJtaXR0ZWQgdmlhIGBuZ2h0 dHAyX3N1Ym1pdF9zZXR0aW5ncygpYCwgdGhpcwotLSAqIGZ1bmN0aW9uIGRvZXMgbm90aGluZyBh bmQgcmV0dXJucyAwLgotLSAqCi0tICogVGhpcyBmdW5jdGlvbiByZXR1cm5zIDAgaWYgaXQgc3Vj Y2VlZHMsIG9yIG9uZSBvZiB0aGUgZm9sbG93aW5nCi0tICogbmVnYXRpdmUgZXJyb3IgY29kZXM6 Ci0rICogICBwcmlvcml0aXphdGlvbiBzY2hlbWUuCi0gICoKLS0gKiA6ZW51bTpgbmdodHRwMl9l cnJvci5OR0hUVFAyX0VSUl9OT01FTWAKLS0gKiAgICAgT3V0IG9mIG1lbW9yeS4KLS0gKiA6ZW51 bTpgbmdodHRwMl9lcnJvci5OR0hUVFAyX0VSUl9JTlZBTElEX0FSR1VNRU5UYAotLSAqICAgICBB dHRlbXB0ZWQgdG8gZGVwZW5kIG9uIGl0c2VsZjsgb3Igc3RyZWFtIGRlbm90ZWQgYnkgfHN0cmVh bV9pZHwKLS0gKiAgICAgYWxyZWFkeSBleGlzdHM7IG9yIHxzdHJlYW1faWR8IGNhbm5vdCBiZSB1 c2VkIHRvIGNyZWF0ZSBpZGxlCi0tICogICAgIHN0cmVhbSAoaW4gb3RoZXIgd29yZHMsIGxvY2Fs IGVuZHBvaW50IGhhcyBhbHJlYWR5IG9wZW5lZAotLSAqICAgICBzdHJlYW0gSUQgZ3JlYXRlciB0 aGFuIG9yIGVxdWFsIHRvIHRoZSBnaXZlbiBzdHJlYW0gSUQ7IG9yCi0tICogICAgIHxzdHJlYW1f aWR8IGlzIDAKLSsgKiBUaGlzIGZ1bmN0aW9uIGlzIG5vb3AuICBJdCBhbHdheXMgcmV0dXJucyAw LgotICAqLwotIE5HSFRUUDJfRVhURVJOIGludAotIG5naHR0cDJfc2Vzc2lvbl9jcmVhdGVfaWRs ZV9zdHJlYW0obmdodHRwMl9zZXNzaW9uICpzZXNzaW9uLCBpbnQzMl90IHN0cmVhbV9pZCwKLUBA IC00NTA1LDIzICs0NDY2LDcgQEAgbmdodHRwMl9wcmlvcml0eV9zcGVjX2NoZWNrX2RlZmF1bHQo Y29uc3QgbmdodHRwMl9wcmlvcml0eV9zcGVjICpwcmlfc3BlYyk7Ci0gICoKLSAgKiBTdWJtaXRz IEhFQURFUlMgZnJhbWUgYW5kIG9wdGlvbmFsbHkgb25lIG9yIG1vcmUgREFUQSBmcmFtZXMuCi0g ICoKLS0gKiBUaGUgfHByaV9zcGVjfCBpcyBhIGRlcHJlY2F0ZWQgcHJpb3JpdHkgc3BlY2lmaWNh dGlvbiBvZiB0aGlzCi0tICogcmVxdWVzdC4gIGBgTlVMTGBgIG1lYW5zIHRoZSBkZWZhdWx0IHBy aW9yaXR5IChzZWUKLS0gKiBgbmdodHRwMl9wcmlvcml0eV9zcGVjX2RlZmF1bHRfaW5pdCgpYCku ICBUbyBzcGVjaWZ5IHRoZSBwcmlvcml0eSwKLS0gKiB1c2UgYG5naHR0cDJfcHJpb3JpdHlfc3Bl Y19pbml0KClgLiAgSWYgfHByaV9zcGVjfCBpcyBub3QgYGBOVUxMYGAsCi0tICogdGhpcyBmdW5j dGlvbiB3aWxsIGNvcHkgaXRzIGRhdGEgbWVtYmVycy4KLS0gKgotLSAqIFRoZSBgYHByaV9zcGVj LT53ZWlnaHRgYCBtdXN0IGJlIGluIFs6bWFjcm86YE5HSFRUUDJfTUlOX1dFSUdIVGAsCi0tICog Om1hY3JvOmBOR0hUVFAyX01BWF9XRUlHSFRgXSwgaW5jbHVzaXZlLiAgSWYgYGBwcmlfc3BlYy0+ d2VpZ2h0YGAKLS0gKiBpcyBzdHJpY3RseSBsZXNzIHRoYW4gOm1hY3JvOmBOR0hUVFAyX01JTl9X RUlHSFRgLCBpdCBiZWNvbWVzCi0tICogOm1hY3JvOmBOR0hUVFAyX01JTl9XRUlHSFRgLiAgSWYg aXQgaXMgc3RyaWN0bHkgZ3JlYXRlciB0aGFuCi0tICogOm1hY3JvOmBOR0hUVFAyX01BWF9XRUlH SFRgLCBpdCBiZWNvbWVzCi0tICogOm1hY3JvOmBOR0hUVFAyX01BWF9XRUlHSFRgLgotLSAqCi0t ICogSWYKLS0gKiA6ZW51bTpgbmdodHRwMl9zZXR0aW5nc19pZC5OR0hUVFAyX1NFVFRJTkdTX05P X1JGQzc1NDBfUFJJT1JJVElFU2AKLS0gKiBvZiB2YWx1ZSBvZiAxIGlzIHJlY2VpdmVkIGJ5IGEg cmVtb3RlIGVuZHBvaW50LCB8cHJpX3NwZWN8IGlzCi0tICogaWdub3JlZCwgYW5kIHRyZWF0ZWQg YXMgaWYgYGBOVUxMYGAgaXMgc3BlY2lmaWVkLgotKyAqIFRoZSB8cHJpX3NwZWN8IGlzIGlnbm9y ZWQuCi0gICoKLSAgKiBUaGUgfG52YXwgaXMgYW4gYXJyYXkgb2YgbmFtZS92YWx1ZSBwYWlyIDp0 eXBlOmBuZ2h0dHAyX252YCB3aXRoCi0gICogfG52bGVufCBlbGVtZW50cy4gIFRoZSBhcHBsaWNh dGlvbiBpcyByZXNwb25zaWJsZSB0byBpbmNsdWRlCi1AQCAtNDU2NCw5ICs0NTA5LDYgQEAgbmdo dHRwMl9wcmlvcml0eV9zcGVjX2NoZWNrX2RlZmF1bHQoY29uc3QgbmdodHRwMl9wcmlvcml0eV9z cGVjICpwcmlfc3BlYyk7Ci0gICogOmVudW06YG5naHR0cDJfZXJyb3IuTkdIVFRQMl9FUlJfU1RS RUFNX0lEX05PVF9BVkFJTEFCTEVgCi0gICogICAgIE5vIHN0cmVhbSBJRCBpcyBhdmFpbGFibGUg YmVjYXVzZSBtYXhpbXVtIHN0cmVhbSBJRCB3YXMKLSAgKiAgICAgcmVhY2hlZC4KLS0gKiA6ZW51 bTpgbmdodHRwMl9lcnJvci5OR0hUVFAyX0VSUl9JTlZBTElEX0FSR1VNRU5UYAotLSAqICAgICBU cnlpbmcgdG8gZGVwZW5kIG9uIGl0c2VsZiAobmV3IHN0cmVhbSBJRCBlcXVhbHMKLS0gKiAgICAg YGBwcmlfc3BlYy0+c3RyZWFtX2lkYGApLgotICAqIDplbnVtOmBuZ2h0dHAyX2Vycm9yLk5HSFRU UDJfRVJSX1BST1RPYAotICAqICAgICBUaGUgfHNlc3Npb258IGlzIHNlcnZlciBzZXNzaW9uLgot ICAqCi1AQCAtNDU5NCwyNSArNDUzNiw3IEBAIE5HSFRUUDJfRVhURVJOIGludDMyX3QgbmdodHRw Ml9zdWJtaXRfcmVxdWVzdCgKLSAgKgotICAqIFN1Ym1pdHMgSEVBREVSUyBmcmFtZSBhbmQgb3B0 aW9uYWxseSBvbmUgb3IgbW9yZSBEQVRBIGZyYW1lcy4KLSAgKgotLSAqIFRoZSB8cHJpX3NwZWN8 IGlzIGEgZGVwcmVjYXRlZCBwcmlvcml0eSBzcGVjaWZpY2F0aW9uIG9mIHRoaXMKLS0gKiByZXF1 ZXN0LiAgYGBOVUxMYGAgbWVhbnMgdGhlIGRlZmF1bHQgcHJpb3JpdHkgKHNlZQotLSAqIGBuZ2h0 dHAyX3ByaW9yaXR5X3NwZWNfZGVmYXVsdF9pbml0KClgKS4gIFRvIHNwZWNpZnkgdGhlIHByaW9y aXR5LAotLSAqIHVzZSBgbmdodHRwMl9wcmlvcml0eV9zcGVjX2luaXQoKWAuICBJZiB8cHJpX3Nw ZWN8IGlzIG5vdCBgYE5VTExgYCwKLS0gKiB0aGlzIGZ1bmN0aW9uIHdpbGwgY29weSBpdHMgZGF0 YSBtZW1iZXJzLiAgSW4gdGhlIGZ1dHVyZSByZWxlYXNlCi0tICogYWZ0ZXIgdGhlIGVuZCBvZiAy MDI0LCB0aGlzIGZ1bmN0aW9uIHdpbGwgaWdub3JlIHxwcmlfc3BlY3wgYW5kCi0tICogYmVoYXZl IGFzIGlmIGBgTlVMTGBgIGlzIGdpdmVuLgotLSAqCi0tICogVGhlIGBgcHJpX3NwZWMtPndlaWdo dGBgIG11c3QgYmUgaW4gWzptYWNybzpgTkdIVFRQMl9NSU5fV0VJR0hUYCwKLS0gKiA6bWFjcm86 YE5HSFRUUDJfTUFYX1dFSUdIVGBdLCBpbmNsdXNpdmUuICBJZiBgYHByaV9zcGVjLT53ZWlnaHRg YAotLSAqIGlzIHN0cmljdGx5IGxlc3MgdGhhbiA6bWFjcm86YE5HSFRUUDJfTUlOX1dFSUdIVGAs IGl0IGJlY29tZXMKLS0gKiA6bWFjcm86YE5HSFRUUDJfTUlOX1dFSUdIVGAuICBJZiBpdCBpcyBz dHJpY3RseSBncmVhdGVyIHRoYW4KLS0gKiA6bWFjcm86YE5HSFRUUDJfTUFYX1dFSUdIVGAsIGl0 IGJlY29tZXMKLS0gKiA6bWFjcm86YE5HSFRUUDJfTUFYX1dFSUdIVGAuCi0tICoKLS0gKiBJZgot LSAqIDplbnVtOmBuZ2h0dHAyX3NldHRpbmdzX2lkLk5HSFRUUDJfU0VUVElOR1NfTk9fUkZDNzU0 MF9QUklPUklUSUVTYAotLSAqIG9mIHZhbHVlIG9mIDEgaXMgcmVjZWl2ZWQgYnkgYSByZW1vdGUg ZW5kcG9pbnQsIHxwcmlfc3BlY3wgaXMKLS0gKiBpZ25vcmVkLCBhbmQgdHJlYXRlZCBhcyBpZiBg YE5VTExgYCBpcyBzcGVjaWZpZWQuCi0rICogVGhlIHxwcmlfc3BlY3wgaXMgaWdub3JlZC4KLSAg KgotICAqIFRoZSB8bnZhfCBpcyBhbiBhcnJheSBvZiBuYW1lL3ZhbHVlIHBhaXIgOnR5cGU6YG5n aHR0cDJfbnZgIHdpdGgKLSAgKiB8bnZsZW58IGVsZW1lbnRzLiAgVGhlIGFwcGxpY2F0aW9uIGlz IHJlc3BvbnNpYmxlIHRvIGluY2x1ZGUKLUBAIC00NjU1LDkgKzQ1NzksNiBAQCBOR0hUVFAyX0VY VEVSTiBpbnQzMl90IG5naHR0cDJfc3VibWl0X3JlcXVlc3QoCi0gICogOmVudW06YG5naHR0cDJf ZXJyb3IuTkdIVFRQMl9FUlJfU1RSRUFNX0lEX05PVF9BVkFJTEFCTEVgCi0gICogICAgIE5vIHN0 cmVhbSBJRCBpcyBhdmFpbGFibGUgYmVjYXVzZSBtYXhpbXVtIHN0cmVhbSBJRCB3YXMKLSAgKiAg ICAgcmVhY2hlZC4KLS0gKiA6ZW51bTpgbmdodHRwMl9lcnJvci5OR0hUVFAyX0VSUl9JTlZBTElE X0FSR1VNRU5UYAotLSAqICAgICBUcnlpbmcgdG8gZGVwZW5kIG9uIGl0c2VsZiAobmV3IHN0cmVh bSBJRCBlcXVhbHMKLS0gKiAgICAgYGBwcmlfc3BlYy0+c3RyZWFtX2lkYGApLgotICAqIDplbnVt OmBuZ2h0dHAyX2Vycm9yLk5HSFRUUDJfRVJSX1BST1RPYAotICAqICAgICBUaGUgfHNlc3Npb258 IGlzIHNlcnZlciBzZXNzaW9uLgotICAqCi1AQCAtNDg5OSwyNCArNDgyMCw3IEBAIE5HSFRUUDJf RVhURVJOIGludCBuZ2h0dHAyX3N1Ym1pdF90cmFpbGVyKG5naHR0cDJfc2Vzc2lvbiAqc2Vzc2lv biwKLSAgKiBhc3NpZ25lZCBzdHJlYW0gSUQgd2lsbCBiZSByZXR1cm5lZC4gIE90aGVyd2lzZSwg c3BlY2lmeSBzdHJlYW0gSUQKLSAgKiBpbiB8c3RyZWFtX2lkfC4KLSAgKgotLSAqIFRoZSB8cHJp X3NwZWN8IGlzIGEgZGVwcmVjYXRlZCBwcmlvcml0eSBzcGVjaWZpY2F0aW9uIG9mIHRoaXMKLS0g KiByZXF1ZXN0LiAgYGBOVUxMYGAgbWVhbnMgdGhlIGRlZmF1bHQgcHJpb3JpdHkgKHNlZQotLSAq IGBuZ2h0dHAyX3ByaW9yaXR5X3NwZWNfZGVmYXVsdF9pbml0KClgKS4gIFRvIHNwZWNpZnkgdGhl IHByaW9yaXR5LAotLSAqIHVzZSBgbmdodHRwMl9wcmlvcml0eV9zcGVjX2luaXQoKWAuICBJZiB8 cHJpX3NwZWN8IGlzIG5vdCBgYE5VTExgYCwKLS0gKiB0aGlzIGZ1bmN0aW9uIHdpbGwgY29weSBp dHMgZGF0YSBtZW1iZXJzLiAgSW4gdGhlIGZ1dHVyZSByZWxlYXNlCi0tICogYWZ0ZXIgdGhlIGVu ZCBvZiAyMDI0LCB0aGlzIGZ1bmN0aW9uIHdpbGwgaWdub3JlIHxwcmlfc3BlY3wgYW5kCi0tICog YmVoYXZlIGFzIGlmIGBgTlVMTGBgIGlzIGdpdmVuLgotLSAqCi0tICogVGhlIGBgcHJpX3NwZWMt PndlaWdodGBgIG11c3QgYmUgaW4gWzptYWNybzpgTkdIVFRQMl9NSU5fV0VJR0hUYCwKLS0gKiA6 bWFjcm86YE5HSFRUUDJfTUFYX1dFSUdIVGBdLCBpbmNsdXNpdmUuICBJZiBgYHByaV9zcGVjLT53 ZWlnaHRgYAotLSAqIGlzIHN0cmljdGx5IGxlc3MgdGhhbiA6bWFjcm86YE5HSFRUUDJfTUlOX1dF SUdIVGAsIGl0IGJlY29tZXMKLS0gKiA6bWFjcm86YE5HSFRUUDJfTUlOX1dFSUdIVGAuICBJZiBp dCBpcyBzdHJpY3RseSBncmVhdGVyIHRoYW4KLS0gKiA6bWFjcm86YE5HSFRUUDJfTUFYX1dFSUdI VGAsIGl0IGJlY29tZXMgOm1hY3JvOmBOR0hUVFAyX01BWF9XRUlHSFRgLgotLSAqCi0tICogSWYK LS0gKiA6ZW51bTpgbmdodHRwMl9zZXR0aW5nc19pZC5OR0hUVFAyX1NFVFRJTkdTX05PX1JGQzc1 NDBfUFJJT1JJVElFU2AKLS0gKiBvZiB2YWx1ZSBvZiAxIGlzIHJlY2VpdmVkIGJ5IGEgcmVtb3Rl IGVuZHBvaW50LCB8cHJpX3NwZWN8IGlzCi0tICogaWdub3JlZCwgYW5kIHRyZWF0ZWQgYXMgaWYg YGBOVUxMYGAgaXMgc3BlY2lmaWVkLgotKyAqIFRoZSB8cHJpX3NwZWN8IGlzIGlnbm9yZWQuCi0g ICoKLSAgKiBUaGUgfG52YXwgaXMgYW4gYXJyYXkgb2YgbmFtZS92YWx1ZSBwYWlyIDp0eXBlOmBu Z2h0dHAyX252YCB3aXRoCi0gICogfG52bGVufCBlbGVtZW50cy4gIFRoZSBhcHBsaWNhdGlvbiBp cyByZXNwb25zaWJsZSB0byBpbmNsdWRlCi1AQCAtNDk1Niw4ICs0ODYwLDcgQEAgTkdIVFRQMl9F WFRFUk4gaW50IG5naHR0cDJfc3VibWl0X3RyYWlsZXIobmdodHRwMl9zZXNzaW9uICpzZXNzaW9u LAotICAqICAgICBObyBzdHJlYW0gSUQgaXMgYXZhaWxhYmxlIGJlY2F1c2UgbWF4aW11bSBzdHJl YW0gSUQgd2FzCi0gICogICAgIHJlYWNoZWQuCi0gICogOmVudW06YG5naHR0cDJfZXJyb3IuTkdI VFRQMl9FUlJfSU5WQUxJRF9BUkdVTUVOVGAKLS0gKiAgICAgVGhlIHxzdHJlYW1faWR8IGlzIDA7 IG9yIHRyeWluZyB0byBkZXBlbmQgb24gaXRzZWxmIChzdHJlYW0gSUQKLS0gKiAgICAgZXF1YWxz IGBgcHJpX3NwZWMtPnN0cmVhbV9pZGBgKS4KLSsgKiAgICAgVGhlIHxzdHJlYW1faWR8IGlzIDAu Ci0gICogOmVudW06YG5naHR0cDJfZXJyb3IuTkdIVFRQMl9FUlJfREFUQV9FWElTVGAKLSAgKiAg ICAgREFUQSBvciBIRUFERVJTIGhhcyBiZWVuIGFscmVhZHkgc3VibWl0dGVkIGFuZCBub3QgZnVs bHkKLSAgKiAgICAgcHJvY2Vzc2VkIHlldC4gIFRoaXMgaGFwcGVucyBpZiBzdHJlYW0gZGVub3Rl ZCBieSB8c3RyZWFtX2lkfAotQEAgLTUwODMsNDAgKzQ5ODYsOSBAQCBOR0hUVFAyX0VYVEVSTiBp bnQgbmdodHRwMl9zdWJtaXRfZGF0YTIobmdodHRwMl9zZXNzaW9uICpzZXNzaW9uLCB1aW50OF90 IGZsYWdzLAotICAqCi0gICogICBEZXByZWNhdGVkLiAgOnJmYzpgNzU0MGAgcHJpb3JpdGllcyBh cmUgZGVwcmVjYXRlZCBieQotICAqICAgOnJmYzpgOTExM2AuICBDb25zaWRlciBtaWdyYXRpbmcg dG8gOnJmYzpgOTIxOGAgZXh0ZW5zaWJsZQotLSAqICAgcHJpb3JpdGl6YXRpb24gc2NoZW1lLiAg SW4gdGhlIGZ1dHVyZSByZWxlYXNlIGFmdGVyIHRoZSBlbmQgb2YKLS0gKiAgIDIwMjQsIHRoaXMg ZnVuY3Rpb24gd2lsbCBhbHdheXMgcmV0dXJuIDAgd2l0aG91dCBkb2luZyBhbnl0aGluZy4KLS0g KgotLSAqIFN1Ym1pdHMgUFJJT1JJVFkgZnJhbWUgdG8gY2hhbmdlIHRoZSBwcmlvcml0eSBvZiBz dHJlYW0gfHN0cmVhbV9pZHwKLS0gKiB0byB0aGUgcHJpb3JpdHkgc3BlY2lmaWNhdGlvbiB8cHJp X3NwZWN8LgotLSAqCi0tICogVGhlIHxmbGFnc3wgaXMgY3VycmVudGx5IGlnbm9yZWQgYW5kIHNo b3VsZCBiZQotLSAqIDplbnVtOmBuZ2h0dHAyX2ZsYWcuTkdIVFRQMl9GTEFHX05PTkVgLgotLSAq Ci0tICogVGhlIHxwcmlfc3BlY3wgaXMgYSBkZXByZWNhdGVkIHByaW9yaXR5IHNwZWNpZmljYXRp b24gb2YgdGhpcwotLSAqIHJlcXVlc3QuICBgYE5VTExgYCBpcyBub3QgYWxsb3dlZCBmb3IgdGhp cyBmdW5jdGlvbi4gVG8gc3BlY2lmeSB0aGUKLS0gKiBwcmlvcml0eSwgdXNlIGBuZ2h0dHAyX3By aW9yaXR5X3NwZWNfaW5pdCgpYC4gIFRoaXMgZnVuY3Rpb24gd2lsbAotLSAqIGNvcHkgaXRzIGRh dGEgbWVtYmVycy4KLS0gKgotLSAqIFRoZSBgYHByaV9zcGVjLT53ZWlnaHRgYCBtdXN0IGJlIGlu IFs6bWFjcm86YE5HSFRUUDJfTUlOX1dFSUdIVGAsCi0tICogOm1hY3JvOmBOR0hUVFAyX01BWF9X RUlHSFRgXSwgaW5jbHVzaXZlLiAgSWYgYGBwcmlfc3BlYy0+d2VpZ2h0YGAKLS0gKiBpcyBzdHJp Y3RseSBsZXNzIHRoYW4gOm1hY3JvOmBOR0hUVFAyX01JTl9XRUlHSFRgLCBpdCBiZWNvbWVzCi0t ICogOm1hY3JvOmBOR0hUVFAyX01JTl9XRUlHSFRgLiAgSWYgaXQgaXMgc3RyaWN0bHkgZ3JlYXRl ciB0aGFuCi0tICogOm1hY3JvOmBOR0hUVFAyX01BWF9XRUlHSFRgLCBpdCBiZWNvbWVzCi0tICog Om1hY3JvOmBOR0hUVFAyX01BWF9XRUlHSFRgLgotLSAqCi0tICogSWYKLS0gKiA6ZW51bTpgbmdo dHRwMl9zZXR0aW5nc19pZC5OR0hUVFAyX1NFVFRJTkdTX05PX1JGQzc1NDBfUFJJT1JJVElFU2AK LS0gKiBvZiB2YWx1ZSBvZiAxIGlzIHJlY2VpdmVkIGJ5IGEgcmVtb3RlIGVuZHBvaW50LCB0aGlz IGZ1bmN0aW9uIGRvZXMKLS0gKiBub3RoaW5nIGFuZCByZXR1cm5zIDAuCi0tICoKLS0gKiBUaGlz IGZ1bmN0aW9uIHJldHVybnMgMCBpZiBpdCBzdWNjZWVkcywgb3Igb25lIG9mIHRoZSBmb2xsb3dp bmcKLS0gKiBuZWdhdGl2ZSBlcnJvciBjb2RlczoKLSsgKiAgIHByaW9yaXRpemF0aW9uIHNjaGVt ZS4KLSAgKgotLSAqIDplbnVtOmBuZ2h0dHAyX2Vycm9yLk5HSFRUUDJfRVJSX05PTUVNYAotLSAq ICAgICBPdXQgb2YgbWVtb3J5LgotLSAqIDplbnVtOmBuZ2h0dHAyX2Vycm9yLk5HSFRUUDJfRVJS X0lOVkFMSURfQVJHVU1FTlRgCi0tICogICAgIFRoZSB8c3RyZWFtX2lkfCBpcyAwOyBvciB0aGUg fHByaV9zcGVjfCBpcyBOVUxMOyBvciB0cnlpbmcgdG8KLS0gKiAgICAgZGVwZW5kIG9uIGl0c2Vs Zi4KLSsgKiBUaGlzIGZ1bmN0aW9uIGlzIG5vb3AuICBJdCBhbHdheXMgcmV0dXJucyAwLgotICAq LwotIE5HSFRUUDJfRVhURVJOIGludAotIG5naHR0cDJfc3VibWl0X3ByaW9yaXR5KG5naHR0cDJf c2Vzc2lvbiAqc2Vzc2lvbiwgdWludDhfdCBmbGFncywKLUBAIC02ODg1LDExICs2NzU3LDkgQEAg bmdodHRwMl9zZXNzaW9uX2dldF9yb290X3N0cmVhbShuZ2h0dHAyX3Nlc3Npb24gKnNlc3Npb24p OwotICAqCi0gICogICBEZXByZWNhdGVkLiAgOnJmYzpgNzU0MGAgcHJpb3JpdGllcyBhcmUgZGVw cmVjYXRlZCBieQotICAqICAgOnJmYzpgOTExM2AuICBDb25zaWRlciBtaWdyYXRpbmcgdG8gOnJm YzpgOTIxOGAgZXh0ZW5zaWJsZQotLSAqICAgcHJpb3JpdGl6YXRpb24gc2NoZW1lLiAgSW4gdGhl IGZ1dHVyZSByZWxlYXNlIGFmdGVyIHRoZSBlbmQgb2YKLS0gKiAgIDIwMjQsIHRoaXMgZnVuY3Rp b24gd2lsbCBhbHdheXMgcmV0dXJuIE5VTEwuCi0rICogICBwcmlvcml0aXphdGlvbiBzY2hlbWUu Ci0gICoKLS0gKiBSZXR1cm5zIHRoZSBwYXJlbnQgc3RyZWFtIG9mIHxzdHJlYW18IGluIGRlcGVu ZGVuY3kgdHJlZS4gIFJldHVybnMKLS0gKiBOVUxMIGlmIHRoZXJlIGlzIG5vIHN1Y2ggc3RyZWFt LgotKyAqIFRoaXMgZnVuY3Rpb24gYWx3YXlzIHJldHVybnMgTlVMTC4KLSAgKi8KLSBOR0hUVFAy X0VYVEVSTiBuZ2h0dHAyX3N0cmVhbSAqCi0gbmdodHRwMl9zdHJlYW1fZ2V0X3BhcmVudChuZ2h0 dHAyX3N0cmVhbSAqc3RyZWFtKTsKLUBAIC02OTAzLDExICs2NzczLDkgQEAgTkdIVFRQMl9FWFRF Uk4gaW50MzJfdCBuZ2h0dHAyX3N0cmVhbV9nZXRfc3RyZWFtX2lkKG5naHR0cDJfc3RyZWFtICpz dHJlYW0pOwotICAqCi0gICogICBEZXByZWNhdGVkLiAgOnJmYzpgNzU0MGAgcHJpb3JpdGllcyBh cmUgZGVwcmVjYXRlZCBieQotICAqICAgOnJmYzpgOTExM2AuICBDb25zaWRlciBtaWdyYXRpbmcg dG8gOnJmYzpgOTIxOGAgZXh0ZW5zaWJsZQotLSAqICAgcHJpb3JpdGl6YXRpb24gc2NoZW1lLiAg SW4gdGhlIGZ1dHVyZSByZWxlYXNlIGFmdGVyIHRoZSBlbmQgb2YKLS0gKiAgIDIwMjQsIHRoaXMg ZnVuY3Rpb24gd2lsbCBhbHdheXMgcmV0dXJuIE5VTEwuCi0rICogICBwcmlvcml0aXphdGlvbiBz Y2hlbWUuCi0gICoKLS0gKiBSZXR1cm5zIHRoZSBuZXh0IHNpYmxpbmcgc3RyZWFtIG9mIHxzdHJl YW18IGluIGRlcGVuZGVuY3kgdHJlZS4KLS0gKiBSZXR1cm5zIE5VTEwgaWYgdGhlcmUgaXMgbm8g c3VjaCBzdHJlYW0uCi0rICogVGhpcyBmdW5jdGlvbiBhbHdheXMgcmV0dXJucyBOVUxMLgotICAq LwotIE5HSFRUUDJfRVhURVJOIG5naHR0cDJfc3RyZWFtICoKLSBuZ2h0dHAyX3N0cmVhbV9nZXRf bmV4dF9zaWJsaW5nKG5naHR0cDJfc3RyZWFtICpzdHJlYW0pOwotQEAgLTY5MTksMTEgKzY3ODcs OSBAQCBuZ2h0dHAyX3N0cmVhbV9nZXRfbmV4dF9zaWJsaW5nKG5naHR0cDJfc3RyZWFtICpzdHJl YW0pOwotICAqCi0gICogICBEZXByZWNhdGVkLiAgOnJmYzpgNzU0MGAgcHJpb3JpdGllcyBhcmUg ZGVwcmVjYXRlZCBieQotICAqICAgOnJmYzpgOTExM2AuICBDb25zaWRlciBtaWdyYXRpbmcgdG8g OnJmYzpgOTIxOGAgZXh0ZW5zaWJsZQotLSAqICAgcHJpb3JpdGl6YXRpb24gc2NoZW1lLiAgSW4g dGhlIGZ1dHVyZSByZWxlYXNlIGFmdGVyIHRoZSBlbmQgb2YKLS0gKiAgIDIwMjQsIHRoaXMgZnVu Y3Rpb24gd2lsbCBhbHdheXMgcmV0dXJuIE5VTEwuCi0rICogICBwcmlvcml0aXphdGlvbiBzY2hl bWUuCi0gICoKLS0gKiBSZXR1cm5zIHRoZSBwcmV2aW91cyBzaWJsaW5nIHN0cmVhbSBvZiB8c3Ry ZWFtfCBpbiBkZXBlbmRlbmN5IHRyZWUuCi0tICogUmV0dXJucyBOVUxMIGlmIHRoZXJlIGlzIG5v IHN1Y2ggc3RyZWFtLgotKyAqIFRoaXMgZnVuY3Rpb24gYWx3YXlzIHJldHVybnMgTlVMTC4KLSAg Ki8KLSBOR0hUVFAyX0VYVEVSTiBuZ2h0dHAyX3N0cmVhbSAqCi0gbmdodHRwMl9zdHJlYW1fZ2V0 X3ByZXZpb3VzX3NpYmxpbmcobmdodHRwMl9zdHJlYW0gKnN0cmVhbSk7Ci1AQCAtNjkzNSwxMSAr NjgwMSw5IEBAIG5naHR0cDJfc3RyZWFtX2dldF9wcmV2aW91c19zaWJsaW5nKG5naHR0cDJfc3Ry ZWFtICpzdHJlYW0pOwotICAqCi0gICogICBEZXByZWNhdGVkLiAgOnJmYzpgNzU0MGAgcHJpb3Jp dGllcyBhcmUgZGVwcmVjYXRlZCBieQotICAqICAgOnJmYzpgOTExM2AuICBDb25zaWRlciBtaWdy YXRpbmcgdG8gOnJmYzpgOTIxOGAgZXh0ZW5zaWJsZQotLSAqICAgcHJpb3JpdGl6YXRpb24gc2No ZW1lLiAgSW4gdGhlIGZ1dHVyZSByZWxlYXNlIGFmdGVyIHRoZSBlbmQgb2YKLS0gKiAgIDIwMjQs IHRoaXMgZnVuY3Rpb24gd2lsbCBhbHdheXMgcmV0dXJuIE5VTEwuCi0rICogICBwcmlvcml0aXph dGlvbiBzY2hlbWUuCi0gICoKLS0gKiBSZXR1cm5zIHRoZSBmaXJzdCBjaGlsZCBzdHJlYW0gb2Yg fHN0cmVhbXwgaW4gZGVwZW5kZW5jeSB0cmVlLgotLSAqIFJldHVybnMgTlVMTCBpZiB0aGVyZSBp cyBubyBzdWNoIHN0cmVhbS4KLSsgKiBUaGlzIGZ1bmN0aW9uIGFsd2F5cyByZXR1cm5zIE5VTEwu Ci0gICovCi0gTkdIVFRQMl9FWFRFUk4gbmdodHRwMl9zdHJlYW0gKgotIG5naHR0cDJfc3RyZWFt X2dldF9maXJzdF9jaGlsZChuZ2h0dHAyX3N0cmVhbSAqc3RyZWFtKTsKLUBAIC02OTUxLDExICs2 ODE1LDkgQEAgbmdodHRwMl9zdHJlYW1fZ2V0X2ZpcnN0X2NoaWxkKG5naHR0cDJfc3RyZWFtICpz dHJlYW0pOwotICAqCi0gICogICBEZXByZWNhdGVkLiAgOnJmYzpgNzU0MGAgcHJpb3JpdGllcyBh cmUgZGVwcmVjYXRlZCBieQotICAqICAgOnJmYzpgOTExM2AuICBDb25zaWRlciBtaWdyYXRpbmcg dG8gOnJmYzpgOTIxOGAgZXh0ZW5zaWJsZQotLSAqICAgcHJpb3JpdGl6YXRpb24gc2NoZW1lLiAg SW4gdGhlIGZ1dHVyZSByZWxlYXNlIGFmdGVyIHRoZSBlbmQgb2YKLS0gKiAgIDIwMjQsIHRoaXMg ZnVuY3Rpb24gd2lsbCBhbHdheXMgcmV0dXJuCi0tICogICA6bWFjcm86YE5HSFRUUDJfREVGQVVM VF9XRUlHSFRgLgotKyAqICAgcHJpb3JpdGl6YXRpb24gc2NoZW1lLgotICAqCi0tICogUmV0dXJu cyBkZXBlbmRlbmN5IHdlaWdodCB0byB0aGUgcGFyZW50IHN0cmVhbSBvZiB8c3RyZWFtfC4KLSsg KiBUaGlzIGZ1bmN0aW9uIGFsd2F5cyByZXR1cm5zIDptYWNybzpgTkdIVFRQMl9ERUZBVUxUX1dF SUdIVGAuCi0gICovCi0gTkdIVFRQMl9FWFRFUk4gaW50MzJfdCBuZ2h0dHAyX3N0cmVhbV9nZXRf d2VpZ2h0KG5naHR0cDJfc3RyZWFtICpzdHJlYW0pOwotIAotQEAgLTY5NjYsMTAgKzY4MjgsOSBA QCBOR0hUVFAyX0VYVEVSTiBpbnQzMl90IG5naHR0cDJfc3RyZWFtX2dldF93ZWlnaHQobmdodHRw Ml9zdHJlYW0gKnN0cmVhbSk7Ci0gICoKLSAgKiAgIERlcHJlY2F0ZWQuICA6cmZjOmA3NTQwYCBw cmlvcml0aWVzIGFyZSBkZXByZWNhdGVkIGJ5Ci0gICogICA6cmZjOmA5MTEzYC4gIENvbnNpZGVy IG1pZ3JhdGluZyB0byA6cmZjOmA5MjE4YCBleHRlbnNpYmxlCi0tICogICBwcmlvcml0aXphdGlv biBzY2hlbWUuICBJbiB0aGUgZnV0dXJlIHJlbGVhc2UgYWZ0ZXIgdGhlIGVuZCBvZgotLSAqICAg MjAyNCwgdGhpcyBmdW5jdGlvbiB3aWxsIGFsd2F5cyByZXR1cm4gMC4KLSsgKiAgIHByaW9yaXRp emF0aW9uIHNjaGVtZS4KLSAgKgotLSAqIFJldHVybnMgdGhlIHN1bSBvZiB0aGUgd2VpZ2h0IGZv ciB8c3RyZWFtfCdzIGNoaWxkcmVuLgotKyAqIFRoaXMgZnVuY3Rpb24gYWx3YXlzIHJldHVybnMg MC4KLSAgKi8KLSBOR0hUVFAyX0VYVEVSTiBpbnQzMl90Ci0gbmdodHRwMl9zdHJlYW1fZ2V0X3N1 bV9kZXBlbmRlbmN5X3dlaWdodChuZ2h0dHAyX3N0cmVhbSAqc3RyZWFtKTsKLWRpZmYgLS1naXQg YS9kZXBzL25naHR0cDIvbGliL2luY2x1ZGVzL25naHR0cDIvbmdodHRwMnZlci5oIGIvZGVwcy9u Z2h0dHAyL2xpYi9pbmNsdWRlcy9uZ2h0dHAyL25naHR0cDJ2ZXIuaAotaW5kZXggODI3Yzk5ODku Ljk1YWNlZjIyIDEwMDY0NAotLS0tIGEvZGVwcy9uZ2h0dHAyL2xpYi9pbmNsdWRlcy9uZ2h0dHAy L25naHR0cDJ2ZXIuaAotKysrIGIvZGVwcy9uZ2h0dHAyL2xpYi9pbmNsdWRlcy9uZ2h0dHAyL25n aHR0cDJ2ZXIuaAotQEAgLTI5LDcgKzI5LDcgQEAKLSAgKiBAbWFjcm8KLSAgKiBWZXJzaW9uIG51 bWJlciBvZiB0aGUgbmdodHRwMiBsaWJyYXJ5IHJlbGVhc2UKLSAgKi8KLS0jZGVmaW5lIE5HSFRU UDJfVkVSU0lPTiAiMS42NC4wIgotKyNkZWZpbmUgTkdIVFRQMl9WRVJTSU9OICIxLjY4LjEiCi0g Ci0gLyoqCi0gICogQG1hY3JvCi1AQCAtMzcsNiArMzcsNiBAQAotICAqIHJlbGVhc2UuIFRoaXMg aXMgYSAyNCBiaXQgbnVtYmVyIHdpdGggOCBiaXRzIGZvciBtYWpvciBudW1iZXIsIDggYml0cwot ICAqIGZvciBtaW5vciBhbmQgOCBiaXRzIGZvciBwYXRjaC4gVmVyc2lvbiAxLjIuMyBiZWNvbWVz IDB4MDEwMjAzLgotICAqLwotLSNkZWZpbmUgTkdIVFRQMl9WRVJTSU9OX05VTSAweDAxNDAwMAot KyNkZWZpbmUgTkdIVFRQMl9WRVJTSU9OX05VTSAweDAxNDQwMQotIAotICNlbmRpZiAvKiBOR0hU VFAyVkVSX0ggKi8KLWRpZmYgLS1naXQgYS9kZXBzL25naHR0cDIvbGliL25naHR0cDJfYWxwbi5o IGIvZGVwcy9uZ2h0dHAyL2xpYi9uZ2h0dHAyX2FscG4uaAotaW5kZXggMDk4MTBmZDguLmVjYzll ZDIwIDEwMDY0NAotLS0tIGEvZGVwcy9uZ2h0dHAyL2xpYi9uZ2h0dHAyX2FscG4uaAotKysrIGIv ZGVwcy9uZ2h0dHAyL2xpYi9uZ2h0dHAyX2FscG4uaAotQEAgLTI3LDggKzI3LDggQEAKLSAKLSAj aWZkZWYgSEFWRV9DT05GSUdfSAotICMgIGluY2x1ZGUgPGNvbmZpZy5oPgotLSNlbmRpZiAvKiBI QVZFX0NPTkZJR19IICovCi0rI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9DT05GSUdfSCkgKi8KLSAK LSAjaW5jbHVkZSA8bmdodHRwMi9uZ2h0dHAyLmg+Ci0gCi0tI2VuZGlmIC8qIE5HSFRUUDJfQUxQ Tl9IICovCi0rI2VuZGlmIC8qICFkZWZpbmVkKE5HSFRUUDJfQUxQTl9IKSAqLwotZGlmZiAtLWdp dCBhL2RlcHMvbmdodHRwMi9saWIvbmdodHRwMl9idWYuaCBiL2RlcHMvbmdodHRwMi9saWIvbmdo dHRwMl9idWYuaAotaW5kZXggOTVmZjM3MDYuLjYzNmFhNjE5IDEwMDY0NAotLS0tIGEvZGVwcy9u Z2h0dHAyL2xpYi9uZ2h0dHAyX2J1Zi5oCi0rKysgYi9kZXBzL25naHR0cDIvbGliL25naHR0cDJf YnVmLmgKLUBAIC0yNyw3ICsyNyw3IEBACi0gCi0gI2lmZGVmIEhBVkVfQ09ORklHX0gKLSAjICBp bmNsdWRlIDxjb25maWcuaD4KLS0jZW5kaWYgLyogSEFWRV9DT05GSUdfSCAqLwotKyNlbmRpZiAv KiBkZWZpbmVkKEhBVkVfQ09ORklHX0gpICovCi0gCi0gI2luY2x1ZGUgPG5naHR0cDIvbmdodHRw Mi5oPgotIAotQEAgLTQwOSw0ICs0MDksNCBAQCBpbnQgbmdodHRwMl9idWZzX25leHRfcHJlc2Vu dChuZ2h0dHAyX2J1ZnMgKmJ1ZnMpOwotICAqLwotIHNpemVfdCBuZ2h0dHAyX2J1ZnNfbGVuKG5n aHR0cDJfYnVmcyAqYnVmcyk7Ci0gCi0tI2VuZGlmIC8qIE5HSFRUUDJfQlVGX0ggKi8KLSsjZW5k aWYgLyogIWRlZmluZWQoTkdIVFRQMl9CVUZfSCkgKi8KLWRpZmYgLS1naXQgYS9kZXBzL25naHR0 cDIvbGliL25naHR0cDJfY2FsbGJhY2tzLmMgYi9kZXBzL25naHR0cDIvbGliL25naHR0cDJfY2Fs bGJhY2tzLmMKLWluZGV4IDMyZmVkZDUyLi4xNjJjYTZiZCAxMDA2NDQKLS0tLSBhL2RlcHMvbmdo dHRwMi9saWIvbmdodHRwMl9jYWxsYmFja3MuYwotKysrIGIvZGVwcy9uZ2h0dHAyL2xpYi9uZ2h0 dHAyX2NhbGxiYWNrcy5jCi1AQCAtMjAxLDMgKzIwMSw4IEBAIHZvaWQgbmdodHRwMl9zZXNzaW9u X2NhbGxiYWNrc19zZXRfZXJyb3JfY2FsbGJhY2syKAotICAgbmdodHRwMl9zZXNzaW9uX2NhbGxi YWNrcyAqY2JzLCBuZ2h0dHAyX2Vycm9yX2NhbGxiYWNrMiBlcnJvcl9jYWxsYmFjazIpIHsKLSAg IGNicy0+ZXJyb3JfY2FsbGJhY2syID0gZXJyb3JfY2FsbGJhY2syOwotIH0KLSsKLSt2b2lkIG5n aHR0cDJfc2Vzc2lvbl9jYWxsYmFja3Nfc2V0X3JhbmRfY2FsbGJhY2soCi0rICBuZ2h0dHAyX3Nl c3Npb25fY2FsbGJhY2tzICpjYnMsIG5naHR0cDJfcmFuZF9jYWxsYmFjayByYW5kX2NhbGxiYWNr KSB7Ci0rICBjYnMtPnJhbmRfY2FsbGJhY2sgPSByYW5kX2NhbGxiYWNrOwotK30KLWRpZmYgLS1n aXQgYS9kZXBzL25naHR0cDIvbGliL25naHR0cDJfY2FsbGJhY2tzLmggYi9kZXBzL25naHR0cDIv bGliL25naHR0cDJfY2FsbGJhY2tzLmgKLWluZGV4IGE2MTFmNDg1Li40YjQ1ZTU3OCAxMDA2NDQK LS0tLSBhL2RlcHMvbmdodHRwMi9saWIvbmdodHRwMl9jYWxsYmFja3MuaAotKysrIGIvZGVwcy9u Z2h0dHAyL2xpYi9uZ2h0dHAyX2NhbGxiYWNrcy5oCi1AQCAtMjcsNyArMjcsNyBAQAotIAotICNp ZmRlZiBIQVZFX0NPTkZJR19ICi0gIyAgaW5jbHVkZSA8Y29uZmlnLmg+Ci0tI2VuZGlmIC8qIEhB VkVfQ09ORklHX0ggKi8KLSsjZW5kaWYgLyogZGVmaW5lZChIQVZFX0NPTkZJR19IKSAqLwotIAot ICNpbmNsdWRlIDxuZ2h0dHAyL25naHR0cDIuaD4KLSAKLUBAIC0xNTEsNiArMTUxLDcgQEAgc3Ry dWN0IG5naHR0cDJfc2Vzc2lvbl9jYWxsYmFja3MgewotICAgbmdodHRwMl9vbl9leHRlbnNpb25f Y2h1bmtfcmVjdl9jYWxsYmFjayBvbl9leHRlbnNpb25fY2h1bmtfcmVjdl9jYWxsYmFjazsKLSAg IG5naHR0cDJfZXJyb3JfY2FsbGJhY2sgZXJyb3JfY2FsbGJhY2s7Ci0gICBuZ2h0dHAyX2Vycm9y X2NhbGxiYWNrMiBlcnJvcl9jYWxsYmFjazI7Ci0rICBuZ2h0dHAyX3JhbmRfY2FsbGJhY2sgcmFu ZF9jYWxsYmFjazsKLSB9OwotIAotLSNlbmRpZiAvKiBOR0hUVFAyX0NBTExCQUNLU19IICovCi0r I2VuZGlmIC8qICFkZWZpbmVkKE5HSFRUUDJfQ0FMTEJBQ0tTX0gpICovCi1kaWZmIC0tZ2l0IGEv ZGVwcy9uZ2h0dHAyL2xpYi9uZ2h0dHAyX2RlYnVnLmMgYi9kZXBzL25naHR0cDIvbGliL25naHR0 cDJfZGVidWcuYwotaW5kZXggMDlkZDJiMjguLmI1ZjMzZWYzIDEwMDY0NAotLS0tIGEvZGVwcy9u Z2h0dHAyL2xpYi9uZ2h0dHAyX2RlYnVnLmMKLSsrKyBiL2RlcHMvbmdodHRwMi9saWIvbmdodHRw Ml9kZWJ1Zy5jCi1AQCAtNTAsMTEgKzUwLDExIEBAIHZvaWQgbmdodHRwMl9zZXRfZGVidWdfdnBy aW50Zl9jYWxsYmFjaygKLSAgIHN0YXRpY19kZWJ1Z192cHJpbnRmX2NhbGxiYWNrID0gZGVidWdf dnByaW50Zl9jYWxsYmFjazsKLSB9Ci0gCi0tI2Vsc2UgLyogIURFQlVHQlVJTEQgKi8KLSsjZWxz ZSAvKiAhZGVmaW5lZChERUJVR0JVSUxEKSAqLwotIAotIHZvaWQgbmdodHRwMl9zZXRfZGVidWdf dnByaW50Zl9jYWxsYmFjaygKLSAgIG5naHR0cDJfZGVidWdfdnByaW50Zl9jYWxsYmFjayBkZWJ1 Z192cHJpbnRmX2NhbGxiYWNrKSB7Ci0gICAodm9pZClkZWJ1Z192cHJpbnRmX2NhbGxiYWNrOwot IH0KLSAKLS0jZW5kaWYgLyogIURFQlVHQlVJTEQgKi8KLSsjZW5kaWYgLyogIWRlZmluZWQoREVC VUdCVUlMRCkgKi8KLWRpZmYgLS1naXQgYS9kZXBzL25naHR0cDIvbGliL25naHR0cDJfZGVidWcu aCBiL2RlcHMvbmdodHRwMi9saWIvbmdodHRwMl9kZWJ1Zy5oCi1pbmRleCBjYmI0ZGQ1Ny4uMjY1 NjZhNjIgMTAwNjQ0Ci0tLS0gYS9kZXBzL25naHR0cDIvbGliL25naHR0cDJfZGVidWcuaAotKysr IGIvZGVwcy9uZ2h0dHAyL2xpYi9uZ2h0dHAyX2RlYnVnLmgKLUBAIC0yNywxNyArMjcsMTcgQEAK LSAKLSAjaWZkZWYgSEFWRV9DT05GSUdfSAotICMgIGluY2x1ZGUgPGNvbmZpZy5oPgotLSNlbmRp ZiAvKiBIQVZFX0NPTkZJR19IICovCi0rI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9DT05GSUdfSCkg Ki8KLSAKLSAjaW5jbHVkZSA8bmdodHRwMi9uZ2h0dHAyLmg+Ci0gCi0gI2lmZGVmIERFQlVHQlVJ TEQKLSAjICBkZWZpbmUgREVCVUdGKC4uLikgbmdodHRwMl9kZWJ1Z192cHJpbnRmKF9fVkFfQVJH U19fKQotIHZvaWQgbmdodHRwMl9kZWJ1Z192cHJpbnRmKGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4u KTsKLS0jZWxzZQotKyNlbHNlIC8qICFkZWZpbmVkKERFQlVHQlVJTEQpICovCi0gIyAgZGVmaW5l IERFQlVHRiguLi4pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwKLSAgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICB9IHdoaWxlICgw KQotLSNlbmRpZgotKyNlbmRpZiAvKiAhZGVmaW5lZChERUJVR0JVSUxEKSAqLwotIAotLSNlbmRp ZiAvKiBOR0hUVFAyX0RFQlVHX0ggKi8KLSsjZW5kaWYgLyogIWRlZmluZWQoTkdIVFRQMl9ERUJV R19IKSAqLwotZGlmZiAtLWdpdCBhL2RlcHMvbmdodHRwMi9saWIvbmdodHRwMl9leHRwcmkuaCBi L2RlcHMvbmdodHRwMi9saWIvbmdodHRwMl9leHRwcmkuaAotaW5kZXggZGI5MTE5NzIuLjJlMDM5 MTY1IDEwMDY0NAotLS0tIGEvZGVwcy9uZ2h0dHAyL2xpYi9uZ2h0dHAyX2V4dHByaS5oCi0rKysg Yi9kZXBzL25naHR0cDIvbGliL25naHR0cDJfZXh0cHJpLmgKLUBAIC0yOCw3ICsyOCw3IEBACi0g Ci0gI2lmZGVmIEhBVkVfQ09ORklHX0gKLSAjICBpbmNsdWRlIDxjb25maWcuaD4KLS0jZW5kaWYg LyogSEFWRV9DT05GSUdfSCAqLwotKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfQ09ORklHX0gpICov Ci0gCi0gI2luY2x1ZGUgPG5naHR0cDIvbmdodHRwMi5oPgotIAotQEAgLTYyLDQgKzYyLDQgQEAg dm9pZCBuZ2h0dHAyX2V4dHByaV9mcm9tX3VpbnQ4KG5naHR0cDJfZXh0cHJpICpleHRwcmksIHVp bnQ4X3QgdThleHRwcmkpOwotICAqLwotICNkZWZpbmUgbmdodHRwMl9leHRwcmlfdWludDhfaW5j KFBSSSkgKCgoUFJJKSAmIE5HSFRUUDJfRVhUUFJJX0lOQ19NQVNLKSAhPSAwKQotIAotLSNlbmRp ZiAvKiBOR0hUVFAyX0VYVFBSSV9IICovCi0rI2VuZGlmIC8qICFkZWZpbmVkKE5HSFRUUDJfRVhU UFJJX0gpICovCi1kaWZmIC0tZ2l0IGEvZGVwcy9uZ2h0dHAyL2xpYi9uZ2h0dHAyX2ZyYW1lLmMg Yi9kZXBzL25naHR0cDIvbGliL25naHR0cDJfZnJhbWUuYwotaW5kZXggZWRjMmFhYWEuLjI2NGFl OWQzIDEwMDY0NAotLS0tIGEvZGVwcy9uZ2h0dHAyL2xpYi9uZ2h0dHAyX2ZyYW1lLmMKLSsrKyBi L2RlcHMvbmdodHRwMi9saWIvbmdodHRwMl9mcmFtZS5jCi1AQCAtNzUwLDYgKzc1MCwxNiBAQCB2 b2lkIG5naHR0cDJfZnJhbWVfdW5wYWNrX2FsdHN2Y19wYXlsb2FkKG5naHR0cDJfZXh0ZW5zaW9u ICpmcmFtZSwKLSAgIHVpbnQ4X3QgKnA7Ci0gCi0gICBhbHRzdmMgPSBmcmFtZS0+cGF5bG9hZDsK LSsKLSsgIGlmIChwYXlsb2FkbGVuID09IDApIHsKLSsgICAgYWx0c3ZjLT5vcmlnaW4gPSBOVUxM OwotKyAgICBhbHRzdmMtPm9yaWdpbl9sZW4gPSAwOwotKyAgICBhbHRzdmMtPmZpZWxkX3ZhbHVl ID0gTlVMTDsKLSsgICAgYWx0c3ZjLT5maWVsZF92YWx1ZV9sZW4gPSAwOwotKwotKyAgICByZXR1 cm47Ci0rICB9Ci0rCi0gICBwID0gcGF5bG9hZDsKLSAKLSAgIGFsdHN2Yy0+b3JpZ2luID0gcDsK LWRpZmYgLS1naXQgYS9kZXBzL25naHR0cDIvbGliL25naHR0cDJfZnJhbWUuaCBiL2RlcHMvbmdo dHRwMi9saWIvbmdodHRwMl9mcmFtZS5oCi1pbmRleCBkNTg2Njg4MC4uZWQ0YWIyYzYgMTAwNjQ0 Ci0tLS0gYS9kZXBzL25naHR0cDIvbGliL25naHR0cDJfZnJhbWUuaAotKysrIGIvZGVwcy9uZ2h0 dHAyL2xpYi9uZ2h0dHAyX2ZyYW1lLmgKLUBAIC0yNyw3ICsyNyw3IEBACi0gCi0gI2lmZGVmIEhB VkVfQ09ORklHX0gKLSAjICBpbmNsdWRlIDxjb25maWcuaD4KLS0jZW5kaWYgLyogSEFWRV9DT05G SUdfSCAqLwotKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfQ09ORklHX0gpICovCi0gCi0gI2luY2x1 ZGUgPG5naHR0cDIvbmdodHRwMi5oPgotICNpbmNsdWRlICJuZ2h0dHAyX2hkLmgiCi1AQCAtNjM0 LDQgKzYzNCw0IEBAIGludCBuZ2h0dHAyX2l2X2NoZWNrKGNvbnN0IG5naHR0cDJfc2V0dGluZ3Nf ZW50cnkgKml2LCBzaXplX3Qgbml2KTsKLSB2b2lkIG5naHR0cDJfZnJhbWVfYWRkX3BhZChuZ2h0 dHAyX2J1ZnMgKmJ1ZnMsIG5naHR0cDJfZnJhbWVfaGQgKmhkLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHNpemVfdCBwYWRsZW4sIGludCBmcmFtZWhkX29ubHkpOwotIAotLSNlbmRpZiAv KiBOR0hUVFAyX0ZSQU1FX0ggKi8KLSsjZW5kaWYgLyogIWRlZmluZWQoTkdIVFRQMl9GUkFNRV9I KSAqLwotZGlmZiAtLWdpdCBhL2RlcHMvbmdodHRwMi9saWIvbmdodHRwMl9oZC5jIGIvZGVwcy9u Z2h0dHAyL2xpYi9uZ2h0dHAyX2hkLmMKLWluZGV4IDU1ZmMyY2M2Li5hZDg1ZWVkMSAxMDA2NDQK LS0tLSBhL2RlcHMvbmdodHRwMi9saWIvbmdodHRwMl9oZC5jCi0rKysgYi9kZXBzL25naHR0cDIv bGliL25naHR0cDJfaGQuYwotQEAgLTU5NCw4ICs1OTQsMTkgQEAgc3RhdGljIHZvaWQgaGRfbWFw X3JlbW92ZShuZ2h0dHAyX2hkX21hcCAqbWFwLCBuZ2h0dHAyX2hkX2VudHJ5ICplbnQpIHsKLSBz dGF0aWMgaW50IGhkX3JpbmdidWZfaW5pdChuZ2h0dHAyX2hkX3JpbmdidWYgKnJpbmdidWYsIHNp emVfdCBidWZzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5naHR0cDJfbWVtICpt ZW0pIHsKLSAgIHNpemVfdCBzaXplOwotKyAgY29uc3Qgc2l6ZV90IG1heF9zaXplID0gU0laRV9N QVggLyBzaXplb2YobmdodHRwMl9oZF9lbnRyeSAqKTsKLSsKLSsgIGlmIChidWZzaXplID4gbWF4 X3NpemUpIHsKLSsgICAgcmV0dXJuIE5HSFRUUDJfRVJSX05PTUVNOwotKyAgfQotKwotICAgZm9y IChzaXplID0gMTsgc2l6ZSA8IGJ1ZnNpemU7IHNpemUgPDw9IDEpCi0gICAgIDsKLSsKLSsgIGlm IChzaXplID4gbWF4X3NpemUpIHsKLSsgICAgcmV0dXJuIE5HSFRUUDJfRVJSX05PTUVNOwotKyAg fQotKwotICAgcmluZ2J1Zi0+YnVmZmVyID0gbmdodHRwMl9tZW1fbWFsbG9jKG1lbSwgc2l6ZW9m KG5naHR0cDJfaGRfZW50cnkgKikgKiBzaXplKTsKLSAgIGlmIChyaW5nYnVmLT5idWZmZXIgPT0g TlVMTCkgewotICAgICByZXR1cm4gTkdIVFRQMl9FUlJfTk9NRU07Ci1kaWZmIC0tZ2l0IGEvZGVw cy9uZ2h0dHAyL2xpYi9uZ2h0dHAyX2hkLmggYi9kZXBzL25naHR0cDIvbGliL25naHR0cDJfaGQu aAotaW5kZXggMzhhMzFhODMuLmJkYzdmYWQ1IDEwMDY0NAotLS0tIGEvZGVwcy9uZ2h0dHAyL2xp Yi9uZ2h0dHAyX2hkLmgKLSsrKyBiL2RlcHMvbmdodHRwMi9saWIvbmdodHRwMl9oZC5oCi1AQCAt MjcsNyArMjcsNyBAQAotIAotICNpZmRlZiBIQVZFX0NPTkZJR19ICi0gIyAgaW5jbHVkZSA8Y29u ZmlnLmg+Ci0tI2VuZGlmIC8qIEhBVkVfQ09ORklHX0ggKi8KLSsjZW5kaWYgLyogZGVmaW5lZChI QVZFX0NPTkZJR19IKSAqLwotIAotICNpbmNsdWRlIDxuZ2h0dHAyL25naHR0cDIuaD4KLSAKLUBA IC00MzksNCArNDM5LDQgQEAgbmdodHRwMl9zc2l6ZSBuZ2h0dHAyX2hkX2h1ZmZfZGVjb2RlKG5n aHR0cDJfaGRfaHVmZl9kZWNvZGVfY29udGV4dCAqY3R4LAotICAqLwotIGludCBuZ2h0dHAyX2hk X2h1ZmZfZGVjb2RlX2ZhaWx1cmVfc3RhdGUobmdodHRwMl9oZF9odWZmX2RlY29kZV9jb250ZXh0 ICpjdHgpOwotIAotLSNlbmRpZiAvKiBOR0hUVFAyX0hEX0ggKi8KLSsjZW5kaWYgLyogIWRlZmlu ZWQoTkdIVFRQMl9IRF9IKSAqLwotZGlmZiAtLWdpdCBhL2RlcHMvbmdodHRwMi9saWIvbmdodHRw Ml9oZF9odWZmbWFuLmggYi9kZXBzL25naHR0cDIvbGliL25naHR0cDJfaGRfaHVmZm1hbi5oCi1p bmRleCAyYmZkNTMxOC4uZGYwMzdhOGIgMTAwNjQ0Ci0tLS0gYS9kZXBzL25naHR0cDIvbGliL25n aHR0cDJfaGRfaHVmZm1hbi5oCi0rKysgYi9kZXBzL25naHR0cDIvbGliL25naHR0cDJfaGRfaHVm Zm1hbi5oCi1AQCAtMjcsNyArMjcsNyBAQAotIAotICNpZmRlZiBIQVZFX0NPTkZJR19ICi0gIyAg aW5jbHVkZSA8Y29uZmlnLmg+Ci0tI2VuZGlmIC8qIEhBVkVfQ09ORklHX0ggKi8KLSsjZW5kaWYg LyogZGVmaW5lZChIQVZFX0NPTkZJR19IKSAqLwotIAotICNpbmNsdWRlIDxuZ2h0dHAyL25naHR0 cDIuaD4KLSAKLUBAIC02OSw0ICs2OSw0IEBAIHR5cGVkZWYgc3RydWN0IHsKLSBleHRlcm4gY29u c3QgbmdodHRwMl9odWZmX3N5bSBodWZmX3N5bV90YWJsZVtdOwotIGV4dGVybiBjb25zdCBuZ2h0 dHAyX2h1ZmZfZGVjb2RlIGh1ZmZfZGVjb2RlX3RhYmxlW11bMTZdOwotIAotLSNlbmRpZiAvKiBO R0hUVFAyX0hEX0hVRkZNQU5fSCAqLwotKyNlbmRpZiAvKiAhZGVmaW5lZChOR0hUVFAyX0hEX0hV RkZNQU5fSCkgKi8KLWRpZmYgLS1naXQgYS9kZXBzL25naHR0cDIvbGliL25naHR0cDJfaGVscGVy LmggYi9kZXBzL25naHR0cDIvbGliL25naHR0cDJfaGVscGVyLmgKLWluZGV4IGY1ZGU2MjkwLi43 ZDY0MDc2MSAxMDA2NDQKLS0tLSBhL2RlcHMvbmdodHRwMi9saWIvbmdodHRwMl9oZWxwZXIuaAot KysrIGIvZGVwcy9uZ2h0dHAyL2xpYi9uZ2h0dHAyX2hlbHBlci5oCi1AQCAtMjcsNyArMjcsNyBA QAotIAotICNpZmRlZiBIQVZFX0NPTkZJR19ICi0gIyAgaW5jbHVkZSA8Y29uZmlnLmg+Ci0tI2Vu ZGlmIC8qIEhBVkVfQ09ORklHX0ggKi8KLSsjZW5kaWYgLyogZGVmaW5lZChIQVZFX0NPTkZJR19I KSAqLwotIAotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSAjaW5jbHVkZSA8c3RkZGVmLmg+Ci1AQCAt MTQyLDQgKzE0Miw0IEBAIGludCBuZ2h0dHAyX3Nob3VsZF9zZW5kX3dpbmRvd191cGRhdGUoaW50 MzJfdCBsb2NhbF93aW5kb3dfc2l6ZSwKLSAgKi8KLSB1aW50OF90ICpuZ2h0dHAyX2NweW1lbSh1 aW50OF90ICpkZXN0LCBjb25zdCB2b2lkICpzcmMsIHNpemVfdCBsZW4pOwotIAotLSNlbmRpZiAv KiBOR0hUVFAyX0hFTFBFUl9IICovCi0rI2VuZGlmIC8qICFkZWZpbmVkKE5HSFRUUDJfSEVMUEVS X0gpICovCi1kaWZmIC0tZ2l0IGEvZGVwcy9uZ2h0dHAyL2xpYi9uZ2h0dHAyX2h0dHAuYyBiL2Rl cHMvbmdodHRwMi9saWIvbmdodHRwMl9odHRwLmMKLWluZGV4IGYyMjJmZTVlLi42MGEwYjAxZSAx MDA2NDQKLS0tLSBhL2RlcHMvbmdodHRwMi9saWIvbmdodHRwMl9odHRwLmMKLSsrKyBiL2RlcHMv bmdodHRwMi9saWIvbmdodHRwMl9odHRwLmMKLUBAIC0yMDcsNyArMjA3LDYgQEAgc3RhdGljIGlu dCBodHRwX3JlcXVlc3Rfb25faGVhZGVyKG5naHR0cDJfc3RyZWFtICpzdHJlYW0sIG5naHR0cDJf aGRfbnYgKm52LAotICAgICBpZiAoIXRyYWlsZXIgJiYKLSAgICAgICAgIC8qIERvIG5vdCBwYXJz ZSB0aGUgaGVhZGVyIGZpZWxkIGluIFBVU0hfUFJPTUlTRS4gKi8KLSAgICAgICAgIChzdHJlYW0t PnN0cmVhbV9pZCAmIDEpICYmCi0tICAgICAgICAoc3RyZWFtLT5mbGFncyAmIE5HSFRUUDJfU1RS RUFNX0ZMQUdfTk9fUkZDNzU0MF9QUklPUklUSUVTKSAmJgotICAgICAgICAgIShzdHJlYW0tPmh0 dHBfZmxhZ3MgJiBOR0hUVFAyX0hUVFBfRkxBR19CQURfUFJJT1JJVFkpKSB7Ci0gICAgICAgbmdo dHRwMl9leHRwcmlfZnJvbV91aW50OCgmZXh0cHJpLCBzdHJlYW0tPmh0dHBfZXh0cHJpKTsKLSAg ICAgICBpZiAobmdodHRwMl9odHRwX3BhcnNlX3ByaW9yaXR5KCZleHRwcmksIG52LT52YWx1ZS0+ YmFzZSwKLUBAIC02NjAsMTcgKzY1OSwxNyBAQCB2b2lkIG5naHR0cDJfaHR0cF9yZWNvcmRfcmVx dWVzdF9tZXRob2QobmdodHRwMl9zdHJlYW0gKnN0cmVhbSwKLSBpbnQgbmdodHRwMl9odHRwX3Bh cnNlX3ByaW9yaXR5KG5naHR0cDJfZXh0cHJpICpkZXN0LCBjb25zdCB1aW50OF90ICp2YWx1ZSwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB2YWx1ZWxlbikgewotICAg bmdodHRwMl9leHRwcmkgcHJpID0gKmRlc3Q7Ci0tICBzZl9wYXJzZXIgc2ZwOwotLSAgc2ZfdmVj IGtleTsKLS0gIHNmX3ZhbHVlIHZhbDsKLSsgIHNmcGFyc2VfcGFyc2VyIHNmcDsKLSsgIHNmcGFy c2VfdmVjIGtleTsKLSsgIHNmcGFyc2VfdmFsdWUgdmFsOwotICAgaW50IHJ2OwotIAotLSAgc2Zf cGFyc2VyX2luaXQoJnNmcCwgdmFsdWUsIHZhbHVlbGVuKTsKLSsgIHNmcGFyc2VfcGFyc2VyX2lu aXQoJnNmcCwgdmFsdWUsIHZhbHVlbGVuKTsKLSAKLSAgIGZvciAoOzspIHsKLS0gICAgcnYgPSBz Zl9wYXJzZXJfZGljdCgmc2ZwLCAma2V5LCAmdmFsKTsKLSsgICAgcnYgPSBzZnBhcnNlX3BhcnNl cl9kaWN0KCZzZnAsICZrZXksICZ2YWwpOwotICAgICBpZiAocnYgIT0gMCkgewotLSAgICAgIGlm IChydiA9PSBTRl9FUlJfRU9GKSB7Ci0rICAgICAgaWYgKHJ2ID09IFNGUEFSU0VfRVJSX0VPRikg ewotICAgICAgICAgYnJlYWs7Ci0gICAgICAgfQotIAotQEAgLTY4Myw3ICs2ODIsNyBAQCBpbnQg bmdodHRwMl9odHRwX3BhcnNlX3ByaW9yaXR5KG5naHR0cDJfZXh0cHJpICpkZXN0LCBjb25zdCB1 aW50OF90ICp2YWx1ZSwKLSAKLSAgICAgc3dpdGNoIChrZXkuYmFzZVswXSkgewotICAgICBjYXNl ICdpJzoKLS0gICAgICBpZiAodmFsLnR5cGUgIT0gU0ZfVFlQRV9CT09MRUFOKSB7Ci0rICAgICAg aWYgKHZhbC50eXBlICE9IFNGUEFSU0VfVFlQRV9CT09MRUFOKSB7Ci0gICAgICAgICByZXR1cm4g TkdIVFRQMl9FUlJfSU5WQUxJRF9BUkdVTUVOVDsKLSAgICAgICB9Ci0gCi1AQCAtNjkxLDcgKzY5 MCw3IEBAIGludCBuZ2h0dHAyX2h0dHBfcGFyc2VfcHJpb3JpdHkobmdodHRwMl9leHRwcmkgKmRl c3QsIGNvbnN0IHVpbnQ4X3QgKnZhbHVlLAotIAotICAgICAgIGJyZWFrOwotICAgICBjYXNlICd1 JzoKLS0gICAgICBpZiAodmFsLnR5cGUgIT0gU0ZfVFlQRV9JTlRFR0VSIHx8Ci0rICAgICAgaWYg KHZhbC50eXBlICE9IFNGUEFSU0VfVFlQRV9JTlRFR0VSIHx8Ci0gICAgICAgICAgIHZhbC5pbnRl Z2VyIDwgTkdIVFRQMl9FWFRQUklfVVJHRU5DWV9ISUdIIHx8Ci0gICAgICAgICAgIE5HSFRUUDJf RVhUUFJJX1VSR0VOQ1lfTE9XIDwgdmFsLmludGVnZXIpIHsKLSAgICAgICAgIHJldHVybiBOR0hU VFAyX0VSUl9JTlZBTElEX0FSR1VNRU5UOwotZGlmZiAtLWdpdCBhL2RlcHMvbmdodHRwMi9saWIv bmdodHRwMl9odHRwLmggYi9kZXBzL25naHR0cDIvbGliL25naHR0cDJfaHR0cC5oCi1pbmRleCBk OTk5MmZlNi4uMjkyNTMzNGMgMTAwNjQ0Ci0tLS0gYS9kZXBzL25naHR0cDIvbGliL25naHR0cDJf aHR0cC5oCi0rKysgYi9kZXBzL25naHR0cDIvbGliL25naHR0cDJfaHR0cC5oCi1AQCAtMjcsNyAr MjcsNyBAQAotIAotICNpZmRlZiBIQVZFX0NPTkZJR19ICi0gIyAgaW5jbHVkZSA8Y29uZmlnLmg+ Ci0tI2VuZGlmIC8qIEhBVkVfQ09ORklHX0ggKi8KLSsjZW5kaWYgLyogZGVmaW5lZChIQVZFX0NP TkZJR19IKSAqLwotIAotICNpbmNsdWRlIDxuZ2h0dHAyL25naHR0cDIuaD4KLSAjaW5jbHVkZSAi bmdodHRwMl9zZXNzaW9uLmgiCi1AQCAtOTcsNCArOTcsNCBAQCB2b2lkIG5naHR0cDJfaHR0cF9y ZWNvcmRfcmVxdWVzdF9tZXRob2QobmdodHRwMl9zdHJlYW0gKnN0cmVhbSwKLSBpbnQgbmdodHRw Ml9odHRwX3BhcnNlX3ByaW9yaXR5KG5naHR0cDJfZXh0cHJpICpkZXN0LCBjb25zdCB1aW50OF90 ICp2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB2YWx1ZWxl bik7Ci0gCi0tI2VuZGlmIC8qIE5HSFRUUDJfSFRUUF9IICovCi0rI2VuZGlmIC8qICFkZWZpbmVk KE5HSFRUUDJfSFRUUF9IKSAqLwotZGlmZiAtLWdpdCBhL2RlcHMvbmdodHRwMi9saWIvbmdodHRw Ml9pbnQuaCBiL2RlcHMvbmdodHRwMi9saWIvbmdodHRwMl9pbnQuaAotaW5kZXggYjIzNTg1Y2Mu LmQ4OWNmMTU0IDEwMDY0NAotLS0tIGEvZGVwcy9uZ2h0dHAyL2xpYi9uZ2h0dHAyX2ludC5oCi0r KysgYi9kZXBzL25naHR0cDIvbGliL25naHR0cDJfaW50LmgKLUBAIC0yNyw3ICsyNyw3IEBACi0g Ci0gI2lmZGVmIEhBVkVfQ09ORklHX0gKLSAjICBpbmNsdWRlIDxjb25maWcuaD4KLS0jZW5kaWYg LyogSEFWRV9DT05GSUdfSCAqLwotKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfQ09ORklHX0gpICov Ci0gCi0gI2luY2x1ZGUgPG5naHR0cDIvbmdodHRwMi5oPgotIAotQEAgLTUyLDcgKzUyLDExIEBA IHR5cGVkZWYgZW51bSB7Ci0gICAgKiBVbmxpa2UgTkdIVFRQMl9FUlJfSUdOX0hUVFBfSEVBREVS LCB0aGlzIGRvZXMgbm90IGludm9rZQotICAgICogbmdodHRwMl9vbl9pbnZhbGlkX2hlYWRlcl9j YWxsYmFjay4KLSAgICAqLwotLSAgTkdIVFRQMl9FUlJfUkVNT1ZFX0hUVFBfSEVBREVSID0gLTEw NgotKyAgTkdIVFRQMl9FUlJfUkVNT1ZFX0hUVFBfSEVBREVSID0gLTEwNiwKLSsgIC8qCi0rICAg KiBDYW5jZWwgcHVzaGVkIHN0cmVhbS4KLSsgICAqLwotKyAgTkdIVFRQMl9FUlJfUFVTSF9DQU5D RUwgPSAtMTA3LAotIH0gbmdodHRwMl9pbnRlcm5hbF9lcnJvcjsKLSAKLS0jZW5kaWYgLyogTkdI VFRQMl9JTlRfSCAqLwotKyNlbmRpZiAvKiAhZGVmaW5lZChOR0hUVFAyX0lOVF9IKSAqLwotZGlm ZiAtLWdpdCBhL2RlcHMvbmdodHRwMi9saWIvbmdodHRwMl9tYXAuYyBiL2RlcHMvbmdodHRwMi9s aWIvbmdodHRwMl9tYXAuYwotaW5kZXggZWU2YmIxOTYuLmY4OWYzMTAzIDEwMDY0NAotLS0tIGEv ZGVwcy9uZ2h0dHAyL2xpYi9uZ2h0dHAyX21hcC5jCi0rKysgYi9kZXBzL25naHR0cDIvbGliL25n aHR0cDJfbWFwLmMKLUBAIC0zMSwxMiArMzEsMTMgQEAKLSAKLSAjaW5jbHVkZSAibmdodHRwMl9o ZWxwZXIuaCIKLSAKLS0jZGVmaW5lIE5HSFRUUDJfSU5JVElBTF9UQUJMRV9MRU5CSVRTIDQKLSsj ZGVmaW5lIE5HSFRUUDJfSU5JVElBTF9IQVNIQklUUyA0Ci0gCi0tdm9pZCBuZ2h0dHAyX21hcF9p bml0KG5naHR0cDJfbWFwICptYXAsIG5naHR0cDJfbWVtICptZW0pIHsKLSt2b2lkIG5naHR0cDJf bWFwX2luaXQobmdodHRwMl9tYXAgKm1hcCwgdWludDMyX3Qgc2VlZCwgbmdodHRwMl9tZW0gKm1l bSkgewotICAgbWFwLT5tZW0gPSBtZW07Ci0gICBtYXAtPmhhc2hiaXRzID0gMDsKLSAgIG1hcC0+ dGFibGUgPSBOVUxMOwotKyAgbWFwLT5zZWVkID0gc2VlZDsKLSAgIG1hcC0+c2l6ZSA9IDA7Ci0g fQotIAotQEAgLTc3LDggKzc4LDEzIEBAIGludCBuZ2h0dHAyX21hcF9lYWNoKGNvbnN0IG5naHR0 cDJfbWFwICptYXAsIGludCAoKmZ1bmMpKHZvaWQgKmRhdGEsIHZvaWQgKnB0ciksCi0gICByZXR1 cm4gMDsKLSB9Ci0gCi0tc3RhdGljIHNpemVfdCBoYXNoKG5naHR0cDJfbWFwX2tleV90eXBlIGtl eSwgc2l6ZV90IGJpdHMpIHsKLS0gIHJldHVybiAoc2l6ZV90KSgoKHVpbnQzMl90KWtleSAqIDI2 NTQ0MzU3Njl1KSA+PiAoMzIgLSBiaXRzKSk7Ci0rc3RhdGljIHNpemVfdCBtYXBfaGFzaChjb25z dCBuZ2h0dHAyX21hcCAqbWFwLCBuZ2h0dHAyX21hcF9rZXlfdHlwZSBrZXkpIHsKLSsgIC8qIGhh c2hlciBmcm9tCi0rICAgICBodHRwczovL2dpdGh1Yi5jb20vcnVzdC1sYW5nL3J1c3RjLWhhc2gv YmxvYi9kYzVjMzNmMTI4M2RlMmRhNjRkOGQ3YTA2NDAxZDkxYWRlZDAzYWQ0L3NyYy9saWIucnMK LSsgICAgIFdlIGRvIG5vdCBwZXJmb3JtIGZpbmFsaXphdGlvbiBoZXJlIGJlY2F1c2Ugd2UgdXNl IHRvcCBiaXRzCi0rICAgICBhbnl3YXkuICovCi0rICB1aW50MzJfdCBoID0gKCh1aW50MzJfdClr ZXkgKyBtYXAtPnNlZWQpICogMHg5M2Q3NjVkZDsKLSsgIHJldHVybiAoc2l6ZV90KSgoaCAqIDI2 NTQ0MzU3Njl1KSA+PiAoMzIgLSBtYXAtPmhhc2hiaXRzKSk7Ci0gfQotIAotIHN0YXRpYyB2b2lk IG1hcF9idWNrZXRfc3dhcChuZ2h0dHAyX21hcF9idWNrZXQgKmEsIG5naHR0cDJfbWFwX2J1Y2tl dCAqYikgewotQEAgLTEwOSwyNCArMTE1LDI4IEBAIHZvaWQgbmdodHRwMl9tYXBfcHJpbnRfZGlz dGFuY2UoY29uc3QgbmdodHRwMl9tYXAgKm1hcCkgewotICAgICAgIGNvbnRpbnVlOwotICAgICB9 Ci0gCi0tICAgIGlkeCA9IGhhc2goYmt0LT5rZXksIG1hcC0+aGFzaGJpdHMpOwotKyAgICBpZHgg PSBtYXBfaGFzaChtYXAsIGJrdC0+a2V5KTsKLSAgICAgZnByaW50ZihzdGRlcnIsICJAJXp1IGhh c2g9JXp1IGtleT0lZCBiYXNlPSV6dSBkaXN0YW5jZT0ldVxuIiwgaSwKLS0gICAgICAgICAgICBo YXNoKGJrdC0+a2V5LCBtYXAtPmhhc2hiaXRzKSwgYmt0LT5rZXksIGlkeCwgYmt0LT5wc2wpOwot KyAgICAgICAgICAgIG1hcF9oYXNoKG1hcCwgYmt0LT5rZXkpLCBia3QtPmtleSwgaWR4LCBia3Qt PnBzbCk7Ci0gICB9Ci0gfQotLSNlbmRpZiAvKiAhV0lOMzIgKi8KLS0KLS1zdGF0aWMgaW50IGlu c2VydChuZ2h0dHAyX21hcF9idWNrZXQgKnRhYmxlLCBzaXplX3QgaGFzaGJpdHMsCi0tICAgICAg ICAgICAgICAgICAgbmdodHRwMl9tYXBfa2V5X3R5cGUga2V5LCB2b2lkICpkYXRhKSB7Ci0tICBz aXplX3QgaWR4ID0gaGFzaChrZXksIGhhc2hiaXRzKTsKLS0gIG5naHR0cDJfbWFwX2J1Y2tldCBi ID0gezAsIGtleSwgZGF0YX0sICpia3Q7Ci0tICBzaXplX3QgbWFzayA9ICgxdSA8PCBoYXNoYml0 cykgLSAxOwotKyNlbmRpZiAvKiAhZGVmaW5lZChXSU4zMikgKi8KLSsKLStzdGF0aWMgaW50IG1h cF9pbnNlcnQobmdodHRwMl9tYXAgKm1hcCwgbmdodHRwMl9tYXBfa2V5X3R5cGUga2V5LCB2b2lk ICpkYXRhKSB7Ci0rICBzaXplX3QgaWR4ID0gbWFwX2hhc2gobWFwLCBrZXkpOwotKyAgbmdodHRw Ml9tYXBfYnVja2V0IGIgPSB7Ci0rICAgIC5rZXkgPSBrZXksCi0rICAgIC5kYXRhID0gZGF0YSwK LSsgIH07Ci0rICBuZ2h0dHAyX21hcF9idWNrZXQgKmJrdDsKLSsgIHNpemVfdCBtYXNrID0gKDF1 IDw8IG1hcC0+aGFzaGJpdHMpIC0gMTsKLSAKLSAgIGZvciAoOzspIHsKLS0gICAgYmt0ID0gJnRh YmxlW2lkeF07Ci0rICAgIGJrdCA9ICZtYXAtPnRhYmxlW2lkeF07Ci0gCi0gICAgIGlmIChia3Qt PmRhdGEgPT0gTlVMTCkgewotICAgICAgICpia3QgPSBiOwotKyAgICAgICsrbWFwLT5zaXplOwot ICAgICAgIHJldHVybiAwOwotICAgICB9Ci0gCi1AQCAtMTQ3LDE1ICsxNTcsMTkgQEAgc3RhdGlj IGludCBpbnNlcnQobmdodHRwMl9tYXBfYnVja2V0ICp0YWJsZSwgc2l6ZV90IGhhc2hiaXRzLAot IAotIHN0YXRpYyBpbnQgbWFwX3Jlc2l6ZShuZ2h0dHAyX21hcCAqbWFwLCBzaXplX3QgbmV3X2hh c2hiaXRzKSB7Ci0gICBzaXplX3QgaTsKLS0gIG5naHR0cDJfbWFwX2J1Y2tldCAqbmV3X3RhYmxl OwotICAgbmdodHRwMl9tYXBfYnVja2V0ICpia3Q7Ci0gICBzaXplX3QgdGFibGVsZW47Ci0gICBp bnQgcnY7Ci0rICBuZ2h0dHAyX21hcCBuZXdfbWFwID0gewotKyAgICAudGFibGUgPSBuZ2h0dHAy X21lbV9jYWxsb2MobWFwLT5tZW0sIDF1IDw8IG5ld19oYXNoYml0cywKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHNpemVvZihuZ2h0dHAyX21hcF9idWNrZXQpKSwKLSsgICAgLm1l bSA9IG1hcC0+bWVtLAotKyAgICAuc2VlZCA9IG1hcC0+c2VlZCwKLSsgICAgLmhhc2hiaXRzID0g bmV3X2hhc2hiaXRzLAotKyAgfTsKLSAgICh2b2lkKXJ2OwotIAotLSAgbmV3X3RhYmxlID0gbmdo dHRwMl9tZW1fY2FsbG9jKG1hcC0+bWVtLCAxdSA8PCBuZXdfaGFzaGJpdHMsCi0tICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKG5naHR0cDJfbWFwX2J1Y2tldCkpOwotLSAg aWYgKG5ld190YWJsZSA9PSBOVUxMKSB7Ci0rICBpZiAobmV3X21hcC50YWJsZSA9PSBOVUxMKSB7 Ci0gICAgIHJldHVybiBOR0hUVFAyX0VSUl9OT01FTTsKLSAgIH0KLSAKLUBAIC0xNjgsMTUgKzE4 MiwxNSBAQCBzdGF0aWMgaW50IG1hcF9yZXNpemUobmdodHRwMl9tYXAgKm1hcCwgc2l6ZV90IG5l d19oYXNoYml0cykgewotICAgICAgICAgY29udGludWU7Ci0gICAgICAgfQotIAotLSAgICAgIHJ2 ID0gaW5zZXJ0KG5ld190YWJsZSwgbmV3X2hhc2hiaXRzLCBia3QtPmtleSwgYmt0LT5kYXRhKTsK LSsgICAgICBydiA9IG1hcF9pbnNlcnQoJm5ld19tYXAsIGJrdC0+a2V5LCBia3QtPmRhdGEpOwot IAotICAgICAgIGFzc2VydCgwID09IHJ2KTsKLSAgICAgfQotICAgfQotIAotICAgbmdodHRwMl9t ZW1fZnJlZShtYXAtPm1lbSwgbWFwLT50YWJsZSk7Ci0rICBtYXAtPnRhYmxlID0gbmV3X21hcC50 YWJsZTsKLSAgIG1hcC0+aGFzaGJpdHMgPSBuZXdfaGFzaGJpdHM7Ci0tICBtYXAtPnRhYmxlID0g bmV3X3RhYmxlOwotIAotICAgcmV0dXJuIDA7Ci0gfQotQEAgLTE4NiwzMCArMjAwLDI4IEBAIGlu dCBuZ2h0dHAyX21hcF9pbnNlcnQobmdodHRwMl9tYXAgKm1hcCwgbmdodHRwMl9tYXBfa2V5X3R5 cGUga2V5LCB2b2lkICpkYXRhKSB7Ci0gCi0gICBhc3NlcnQoZGF0YSk7Ci0gCi0tICAvKiBMb2Fk IGZhY3RvciBpcyAwLjc1ICovCi0rICAvKiBMb2FkIGZhY3RvciBpcyA3LzggKi8KLSAgIC8qIFVu ZGVyIHRoZSB2ZXJ5IGluaXRpYWwgY29uZGl0aW9uLCB0aGF0IGlzIG1hcC0+c2l6ZSA9PSAwIGFu ZAotLSAgICAgbWFwLT5oYXNoYml0cyA9PSAwLCA0ID4gMyBzdGlsbCBob2xkcyBuaWNlbHkuICov Ci0tICBpZiAoKG1hcC0+c2l6ZSArIDEpICogNCA+ICgxdSA8PCBtYXAtPmhhc2hiaXRzKSAqIDMp IHsKLSsgICAgIG1hcC0+aGFzaGJpdHMgPT0gMCwgOCA+IDcgc3RpbGwgaG9sZHMgbmljZWx5LiAq LwotKyAgaWYgKChtYXAtPnNpemUgKyAxKSAqIDggPiAoMXUgPDwgbWFwLT5oYXNoYml0cykgKiA3 KSB7Ci0gICAgIGlmIChtYXAtPmhhc2hiaXRzKSB7Ci0gICAgICAgcnYgPSBtYXBfcmVzaXplKG1h cCwgbWFwLT5oYXNoYml0cyArIDEpOwotICAgICAgIGlmIChydiAhPSAwKSB7Ci0gICAgICAgICBy ZXR1cm4gcnY7Ci0gICAgICAgfQotICAgICB9IGVsc2UgewotLSAgICAgIHJ2ID0gbWFwX3Jlc2l6 ZShtYXAsIE5HSFRUUDJfSU5JVElBTF9UQUJMRV9MRU5CSVRTKTsKLSsgICAgICBydiA9IG1hcF9y ZXNpemUobWFwLCBOR0hUVFAyX0lOSVRJQUxfSEFTSEJJVFMpOwotICAgICAgIGlmIChydiAhPSAw KSB7Ci0gICAgICAgICByZXR1cm4gcnY7Ci0gICAgICAgfQotICAgICB9Ci0gICB9Ci0gCi0tICBy diA9IGluc2VydChtYXAtPnRhYmxlLCBtYXAtPmhhc2hiaXRzLCBrZXksIGRhdGEpOwotKyAgcnYg PSBtYXBfaW5zZXJ0KG1hcCwga2V5LCBkYXRhKTsKLSAgIGlmIChydiAhPSAwKSB7Ci0gICAgIHJl dHVybiBydjsKLSAgIH0KLSAKLS0gICsrbWFwLT5zaXplOwotLQotICAgcmV0dXJuIDA7Ci0gfQot IAotQEAgLTIyMyw3ICsyMzUsNyBAQCB2b2lkICpuZ2h0dHAyX21hcF9maW5kKGNvbnN0IG5naHR0 cDJfbWFwICptYXAsIG5naHR0cDJfbWFwX2tleV90eXBlIGtleSkgewotICAgICByZXR1cm4gTlVM TDsKLSAgIH0KLSAKLS0gIGlkeCA9IGhhc2goa2V5LCBtYXAtPmhhc2hiaXRzKTsKLSsgIGlkeCA9 IG1hcF9oYXNoKG1hcCwga2V5KTsKLSAgIG1hc2sgPSAoMXUgPDwgbWFwLT5oYXNoYml0cykgLSAx OwotIAotICAgZm9yICg7OykgewotQEAgLTI1Miw3ICsyNjQsNyBAQCBpbnQgbmdodHRwMl9tYXBf cmVtb3ZlKG5naHR0cDJfbWFwICptYXAsIG5naHR0cDJfbWFwX2tleV90eXBlIGtleSkgewotICAg ICByZXR1cm4gTkdIVFRQMl9FUlJfSU5WQUxJRF9BUkdVTUVOVDsKLSAgIH0KLSAKLS0gIGlkeCA9 IGhhc2goa2V5LCBtYXAtPmhhc2hiaXRzKTsKLSsgIGlkeCA9IG1hcF9oYXNoKG1hcCwga2V5KTsK LSAgIG1hc2sgPSAoMXUgPDwgbWFwLT5oYXNoYml0cykgLSAxOwotIAotICAgZm9yICg7Oykgewot ZGlmZiAtLWdpdCBhL2RlcHMvbmdodHRwMi9saWIvbmdodHRwMl9tYXAuaCBiL2RlcHMvbmdodHRw Mi9saWIvbmdodHRwMl9tYXAuaAotaW5kZXggNWFkZmI3OGQuLmU0NTY4NWJjIDEwMDY0NAotLS0t IGEvZGVwcy9uZ2h0dHAyL2xpYi9uZ2h0dHAyX21hcC5oCi0rKysgYi9kZXBzL25naHR0cDIvbGli L25naHR0cDJfbWFwLmgKLUBAIC0yOCw3ICsyOCw3IEBACi0gCi0gI2lmZGVmIEhBVkVfQ09ORklH X0gKLSAjICBpbmNsdWRlIDxjb25maWcuaD4KLS0jZW5kaWYgLyogSEFWRV9DT05GSUdfSCAqLwot KyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfQ09ORklHX0gpICovCi0gCi0gI2luY2x1ZGUgPG5naHR0 cDIvbmdodHRwMi5oPgotIAotQEAgLTQ3LDYgKzQ3LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgbmdodHRw Ml9tYXBfYnVja2V0IHsKLSB0eXBlZGVmIHN0cnVjdCBuZ2h0dHAyX21hcCB7Ci0gICBuZ2h0dHAy X21hcF9idWNrZXQgKnRhYmxlOwotICAgbmdodHRwMl9tZW0gKm1lbTsKLSsgIHVpbnQzMl90IHNl ZWQ7Ci0gICBzaXplX3Qgc2l6ZTsKLSAgIHNpemVfdCBoYXNoYml0czsKLSB9IG5naHR0cDJfbWFw OwotQEAgLTU0LDcgKzU1LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgbmdodHRwMl9tYXAgewotIC8qCi0g ICogbmdodHRwMl9tYXBfaW5pdCBpbml0aWFsaXplcyB0aGUgbWFwIHxtYXB8LgotICAqLwotLXZv aWQgbmdodHRwMl9tYXBfaW5pdChuZ2h0dHAyX21hcCAqbWFwLCBuZ2h0dHAyX21lbSAqbWVtKTsK LSt2b2lkIG5naHR0cDJfbWFwX2luaXQobmdodHRwMl9tYXAgKm1hcCwgdWludDMyX3Qgc2VlZCwg bmdodHRwMl9tZW0gKm1lbSk7Ci0gCi0gLyoKLSAgKiBuZ2h0dHAyX21hcF9mcmVlIGRlYWxsb2Nh dGVzIGFueSByZXNvdXJjZXMgYWxsb2NhdGVkIGZvciB8bWFwfC4KLUBAIC0xMjMsNiArMTI0LDYg QEAgaW50IG5naHR0cDJfbWFwX2VhY2goY29uc3QgbmdodHRwMl9tYXAgKm1hcCwgaW50ICgqZnVu Yykodm9pZCAqZGF0YSwgdm9pZCAqcHRyKSwKLSAKLSAjaWZuZGVmIFdJTjMyCi0gdm9pZCBuZ2h0 dHAyX21hcF9wcmludF9kaXN0YW5jZShjb25zdCBuZ2h0dHAyX21hcCAqbWFwKTsKLS0jZW5kaWYg LyogIVdJTjMyICovCi0rI2VuZGlmIC8qICFkZWZpbmVkKFdJTjMyKSAqLwotIAotLSNlbmRpZiAv KiBOR0hUVFAyX01BUF9IICovCi0rI2VuZGlmIC8qICFkZWZpbmVkKE5HSFRUUDJfTUFQX0gpICov Ci1kaWZmIC0tZ2l0IGEvZGVwcy9uZ2h0dHAyL2xpYi9uZ2h0dHAyX21lbS5oIGIvZGVwcy9uZ2h0 dHAyL2xpYi9uZ2h0dHAyX21lbS5oCi1pbmRleCBmODNkYmNiOC4uMTBhZjdjNjkgMTAwNjQ0Ci0t LS0gYS9kZXBzL25naHR0cDIvbGliL25naHR0cDJfbWVtLmgKLSsrKyBiL2RlcHMvbmdodHRwMi9s aWIvbmdodHRwMl9tZW0uaAotQEAgLTI3LDcgKzI3LDcgQEAKLSAKLSAjaWZkZWYgSEFWRV9DT05G SUdfSAotICMgIGluY2x1ZGUgPGNvbmZpZy5oPgotLSNlbmRpZiAvKiBIQVZFX0NPTkZJR19IICov Ci0rI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9DT05GSUdfSCkgKi8KLSAKLSAjaW5jbHVkZSA8bmdo dHRwMi9uZ2h0dHAyLmg+Ci0gCi1AQCAtNDIsNCArNDIsNCBAQCB2b2lkIG5naHR0cDJfbWVtX2Zy ZWUyKG5naHR0cDJfZnJlZSBmcmVlX2Z1bmMsIHZvaWQgKnB0ciwgdm9pZCAqbWVtX3VzZXJfZGF0 YSk7Ci0gdm9pZCAqbmdodHRwMl9tZW1fY2FsbG9jKG5naHR0cDJfbWVtICptZW0sIHNpemVfdCBu bWVtYiwgc2l6ZV90IHNpemUpOwotIHZvaWQgKm5naHR0cDJfbWVtX3JlYWxsb2MobmdodHRwMl9t ZW0gKm1lbSwgdm9pZCAqcHRyLCBzaXplX3Qgc2l6ZSk7Ci0gCi0tI2VuZGlmIC8qIE5HSFRUUDJf TUVNX0ggKi8KLSsjZW5kaWYgLyogIWRlZmluZWQoTkdIVFRQMl9NRU1fSCkgKi8KLWRpZmYgLS1n aXQgYS9kZXBzL25naHR0cDIvbGliL25naHR0cDJfbmV0LmggYi9kZXBzL25naHR0cDIvbGliL25n aHR0cDJfbmV0LmgKLWluZGV4IDUyMWY5ODE0Li4wYzU3ZDk0NyAxMDA2NDQKLS0tLSBhL2RlcHMv bmdodHRwMi9saWIvbmdodHRwMl9uZXQuaAotKysrIGIvZGVwcy9uZ2h0dHAyL2xpYi9uZ2h0dHAy X25ldC5oCi1AQCAtMjcsMjggKzI3LDI4IEBACi0gCi0gI2lmZGVmIEhBVkVfQ09ORklHX0gKLSAj ICBpbmNsdWRlIDxjb25maWcuaD4KLS0jZW5kaWYgLyogSEFWRV9DT05GSUdfSCAqLwotKyNlbmRp ZiAvKiBkZWZpbmVkKEhBVkVfQ09ORklHX0gpICovCi0gCi0gI2lmZGVmIEhBVkVfQVJQQV9JTkVU X0gKLSAjICBpbmNsdWRlIDxhcnBhL2luZXQuaD4KLS0jZW5kaWYgLyogSEFWRV9BUlBBX0lORVRf SCAqLwotKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfQVJQQV9JTkVUX0gpICovCi0gCi0gI2lmZGVm IEhBVkVfTkVUSU5FVF9JTl9ICi0gIyAgaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgotLSNlbmRpZiAv KiBIQVZFX05FVElORVRfSU5fSCAqLwotKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfTkVUSU5FVF9J Tl9IKSAqLwotIAotICNpbmNsdWRlIDxuZ2h0dHAyL25naHR0cDIuaD4KLSAKLS0jaWYgZGVmaW5l ZChXSU4zMikKLSsjaWZkZWYgV0lOMzIKLSAvKiBXaW5kb3dzIHJlcXVpcmVzIHdzMl8zMiBsaWJy YXJ5IGZvciBudG9ubCBmYW1pbHkgZnVuY3Rpb25zLiAgV2UKLSAgICBkZWZpbmUgaW5saW5lIGZ1 bmN0aW9ucyBmb3IgdGhvc2UgZnVuY3Rpb24gc28gdGhhdCB3ZSBkb24ndCBoYXZlCi0gICAgZGVw ZW5kZW5jeSBvbiB0aGF0IGxpYi4gKi8KLSAKLSAjICBpZmRlZiBfTVNDX1ZFUgotICMgICAgZGVm aW5lIFNUSU4gc3RhdGljIF9faW5saW5lCi0tIyAgZWxzZQotKyMgIGVsc2UgLyogIWRlZmluZWQo X01TQ19WRVIpICovCi0gIyAgICBkZWZpbmUgU1RJTiBzdGF0aWMgaW5saW5lCi0tIyAgZW5kaWYK LSsjICBlbmRpZiAvKiAhZGVmaW5lZChfTVNDX1ZFUikgKi8KLSAKLSBTVElOIHVpbnQzMl90IGh0 b25sKHVpbnQzMl90IGhvc3Rsb25nKSB7Ci0gICB1aW50MzJfdCByZXM7Ci1AQCAtODYsNiArODYs NiBAQCBTVElOIHVpbnQxNl90IG50b2hzKHVpbnQxNl90IG5ldHNob3J0KSB7Ci0gICByZXR1cm4g cmVzOwotIH0KLSAKLS0jZW5kaWYgLyogV0lOMzIgKi8KLSsjZW5kaWYgLyogZGVmaW5lZChXSU4z MikgKi8KLSAKLS0jZW5kaWYgLyogTkdIVFRQMl9ORVRfSCAqLwotKyNlbmRpZiAvKiAhZGVmaW5l ZChOR0hUVFAyX05FVF9IKSAqLwotZGlmZiAtLWdpdCBhL2RlcHMvbmdodHRwMi9saWIvbmdodHRw Ml9vcHRpb24uYyBiL2RlcHMvbmdodHRwMi9saWIvbmdodHRwMl9vcHRpb24uYwotaW5kZXggMDJh MjRlZWUuLjdlNDRhMjQxIDEwMDY0NAotLS0tIGEvZGVwcy9uZ2h0dHAyL2xpYi9uZ2h0dHAyX29w dGlvbi5jCi0rKysgYi9kZXBzL25naHR0cDIvbGliL25naHR0cDJfb3B0aW9uLmMKLUBAIC0xNTUs MyArMTU1LDEwIEBAIHZvaWQgbmdodHRwMl9vcHRpb25fc2V0X21heF9jb250aW51YXRpb25zKG5n aHR0cDJfb3B0aW9uICpvcHRpb24sIHNpemVfdCB2YWwpIHsKLSAgIG9wdGlvbi0+b3B0X3NldF9t YXNrIHw9IE5HSFRUUDJfT1BUX01BWF9DT05USU5VQVRJT05TOwotICAgb3B0aW9uLT5tYXhfY29u dGludWF0aW9ucyA9IHZhbDsKLSB9Ci0rCi0rdm9pZCBuZ2h0dHAyX29wdGlvbl9zZXRfZ2xpdGNo X3JhdGVfbGltaXQobmdodHRwMl9vcHRpb24gKm9wdGlvbiwKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCBidXJzdCwgdWludDY0X3QgcmF0ZSkgewot KyAgb3B0aW9uLT5vcHRfc2V0X21hc2sgfD0gTkdIVFRQMl9PUFRfR0xJVENIX1JBVEVfTElNSVQ7 Ci0rICBvcHRpb24tPmdsaXRjaF9idXJzdCA9IGJ1cnN0OwotKyAgb3B0aW9uLT5nbGl0Y2hfcmF0 ZSA9IHJhdGU7Ci0rfQotZGlmZiAtLWdpdCBhL2RlcHMvbmdodHRwMi9saWIvbmdodHRwMl9vcHRp b24uaCBiL2RlcHMvbmdodHRwMi9saWIvbmdodHRwMl9vcHRpb24uaAotaW5kZXggYzg5Y2I5N2Yu LjcxMTE4NWJhIDEwMDY0NAotLS0tIGEvZGVwcy9uZ2h0dHAyL2xpYi9uZ2h0dHAyX29wdGlvbi5o Ci0rKysgYi9kZXBzL25naHR0cDIvbGliL25naHR0cDJfb3B0aW9uLmgKLUBAIC0yNyw3ICsyNyw3 IEBACi0gCi0gI2lmZGVmIEhBVkVfQ09ORklHX0gKLSAjICBpbmNsdWRlIDxjb25maWcuaD4KLS0j ZW5kaWYgLyogSEFWRV9DT05GSUdfSCAqLwotKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfQ09ORklH X0gpICovCi0gCi0gI2luY2x1ZGUgPG5naHR0cDIvbmdodHRwMi5oPgotIAotQEAgLTcyLDYgKzcy LDcgQEAgdHlwZWRlZiBlbnVtIHsKLSAgIE5HSFRUUDJfT1BUX05PX1JGQzkxMTNfTEVBRElOR19B TkRfVFJBSUxJTkdfV1NfVkFMSURBVElPTiA9IDEgPDwgMTQsCi0gICBOR0hUVFAyX09QVF9TVFJF QU1fUkVTRVRfUkFURV9MSU1JVCA9IDEgPDwgMTUsCi0gICBOR0hUVFAyX09QVF9NQVhfQ09OVElO VUFUSU9OUyA9IDEgPDwgMTYsCi0rICBOR0hUVFAyX09QVF9HTElUQ0hfUkFURV9MSU1JVCA9IDEg PDwgMTcsCi0gfSBuZ2h0dHAyX29wdGlvbl9mbGFnOwotIAotIC8qKgotQEAgLTgzLDYgKzg0LDEx IEBAIHN0cnVjdCBuZ2h0dHAyX29wdGlvbiB7Ci0gICAgKi8KLSAgIHVpbnQ2NF90IHN0cmVhbV9y ZXNldF9idXJzdDsKLSAgIHVpbnQ2NF90IHN0cmVhbV9yZXNldF9yYXRlOwotKyAgLyoqCi0rICAg KiBOR0hUVFAyX09QVF9HTElUQ0hfUkFURV9MSU1JVAotKyAgICovCi0rICB1aW50NjRfdCBnbGl0 Y2hfYnVyc3Q7Ci0rICB1aW50NjRfdCBnbGl0Y2hfcmF0ZTsKLSAgIC8qKgotICAgICogTkdIVFRQ Ml9PUFRfTUFYX1NFTkRfSEVBREVSX0JMT0NLX0xFTkdUSAotICAgICovCi1AQCAtMTU0LDQgKzE2 MCw0IEBAIHN0cnVjdCBuZ2h0dHAyX29wdGlvbiB7Ci0gICB1aW50OF90IHVzZXJfcmVjdl9leHRf dHlwZXNbMzJdOwotIH07Ci0gCi0tI2VuZGlmIC8qIE5HSFRUUDJfT1BUSU9OX0ggKi8KLSsjZW5k aWYgLyogIWRlZmluZWQoTkdIVFRQMl9PUFRJT05fSCkgKi8KLWRpZmYgLS1naXQgYS9kZXBzL25n aHR0cDIvbGliL25naHR0cDJfb3V0Ym91bmRfaXRlbS5oIGIvZGVwcy9uZ2h0dHAyL2xpYi9uZ2h0 dHAyX291dGJvdW5kX2l0ZW0uaAotaW5kZXggNGU5MTc1MDAuLjZlOGUzMTBjIDEwMDY0NAotLS0t IGEvZGVwcy9uZ2h0dHAyL2xpYi9uZ2h0dHAyX291dGJvdW5kX2l0ZW0uaAotKysrIGIvZGVwcy9u Z2h0dHAyL2xpYi9uZ2h0dHAyX291dGJvdW5kX2l0ZW0uaAotQEAgLTI3LDcgKzI3LDcgQEAKLSAK LSAjaWZkZWYgSEFWRV9DT05GSUdfSAotICMgIGluY2x1ZGUgPGNvbmZpZy5oPgotLSNlbmRpZiAv KiBIQVZFX0NPTkZJR19IICovCi0rI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9DT05GSUdfSCkgKi8K LSAKLSAjaW5jbHVkZSA8bmdodHRwMi9uZ2h0dHAyLmg+Ci0gI2luY2x1ZGUgIm5naHR0cDJfZnJh bWUuaCIKLUBAIC0xODYsNCArMTg2LDQgQEAgdm9pZCBuZ2h0dHAyX291dGJvdW5kX3F1ZXVlX3Bv cChuZ2h0dHAyX291dGJvdW5kX3F1ZXVlICpxKTsKLSAvKiBSZXR1cm5zIHRoZSBzaXplIG9mIHRo ZSBxdWV1ZSAqLwotICNkZWZpbmUgbmdodHRwMl9vdXRib3VuZF9xdWV1ZV9zaXplKFEpICgoUSkt Pm4pCi0gCi0tI2VuZGlmIC8qIE5HSFRUUDJfT1VUQk9VTkRfSVRFTV9IICovCi0rI2VuZGlmIC8q ICFkZWZpbmVkKE5HSFRUUDJfT1VUQk9VTkRfSVRFTV9IKSAqLwotZGlmZiAtLWdpdCBhL2RlcHMv bmdodHRwMi9saWIvbmdodHRwMl9wcS5oIGIvZGVwcy9uZ2h0dHAyL2xpYi9uZ2h0dHAyX3BxLmgK LWluZGV4IGM4ZDkwZWYyLi41ZGQ4NjNmOCAxMDA2NDQKLS0tLSBhL2RlcHMvbmdodHRwMi9saWIv bmdodHRwMl9wcS5oCi0rKysgYi9kZXBzL25naHR0cDIvbGliL25naHR0cDJfcHEuaAotQEAgLTI3 LDcgKzI3LDcgQEAKLSAKLSAjaWZkZWYgSEFWRV9DT05GSUdfSAotICMgIGluY2x1ZGUgPGNvbmZp Zy5oPgotLSNlbmRpZiAvKiBIQVZFX0NPTkZJR19IICovCi0rI2VuZGlmIC8qIGRlZmluZWQoSEFW RV9DT05GSUdfSCkgKi8KLSAKLSAjaW5jbHVkZSA8bmdodHRwMi9uZ2h0dHAyLmg+Ci0gI2luY2x1 ZGUgIm5naHR0cDJfaW50LmgiCi1AQCAtMTIxLDQgKzEyMSw0IEBAIGludCBuZ2h0dHAyX3BxX2Vh Y2gobmdodHRwMl9wcSAqcHEsIG5naHR0cDJfcHFfaXRlbV9jYiBmdW4sIHZvaWQgKmFyZyk7Ci0g ICovCi0gdm9pZCBuZ2h0dHAyX3BxX3JlbW92ZShuZ2h0dHAyX3BxICpwcSwgbmdodHRwMl9wcV9l bnRyeSAqaXRlbSk7Ci0gCi0tI2VuZGlmIC8qIE5HSFRUUDJfUFFfSCAqLwotKyNlbmRpZiAvKiAh ZGVmaW5lZChOR0hUVFAyX1BRX0gpICovCi1kaWZmIC0tZ2l0IGEvZGVwcy9uZ2h0dHAyL2xpYi9u Z2h0dHAyX3ByaW9yaXR5X3NwZWMuaCBiL2RlcHMvbmdodHRwMi9saWIvbmdodHRwMl9wcmlvcml0 eV9zcGVjLmgKLWluZGV4IDkyZWNlODIyLi4xNThlMGRjZCAxMDA2NDQKLS0tLSBhL2RlcHMvbmdo dHRwMi9saWIvbmdodHRwMl9wcmlvcml0eV9zcGVjLmgKLSsrKyBiL2RlcHMvbmdodHRwMi9saWIv bmdodHRwMl9wcmlvcml0eV9zcGVjLmgKLUBAIC0yNyw3ICsyNyw3IEBACi0gCi0gI2lmZGVmIEhB VkVfQ09ORklHX0gKLSAjICBpbmNsdWRlIDxjb25maWcuaD4KLS0jZW5kaWYgLyogSEFWRV9DT05G SUdfSCAqLwotKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfQ09ORklHX0gpICovCi0gCi0gI2luY2x1 ZGUgPG5naHR0cDIvbmdodHRwMi5oPgotIAotQEAgLTM5LDQgKzM5LDQgQEAKLSAgKi8KLSB2b2lk IG5naHR0cDJfcHJpb3JpdHlfc3BlY19ub3JtYWxpemVfd2VpZ2h0KG5naHR0cDJfcHJpb3JpdHlf c3BlYyAqcHJpX3NwZWMpOwotIAotLSNlbmRpZiAvKiBOR0hUVFAyX1BSSU9SSVRZX1NQRUNfSCAq LwotKyNlbmRpZiAvKiAhZGVmaW5lZChOR0hUVFAyX1BSSU9SSVRZX1NQRUNfSCkgKi8KLWRpZmYg LS1naXQgYS9kZXBzL25naHR0cDIvbGliL25naHR0cDJfcXVldWUuaCBiL2RlcHMvbmdodHRwMi9s aWIvbmdodHRwMl9xdWV1ZS5oCi1pbmRleCBhMDZmYTZjNy4uYzYzODk3YzAgMTAwNjQ0Ci0tLS0g YS9kZXBzL25naHR0cDIvbGliL25naHR0cDJfcXVldWUuaAotKysrIGIvZGVwcy9uZ2h0dHAyL2xp Yi9uZ2h0dHAyX3F1ZXVlLmgKLUBAIC0yNyw3ICsyNyw3IEBACi0gCi0gI2lmZGVmIEhBVkVfQ09O RklHX0gKLSAjICBpbmNsdWRlICJjb25maWcuaCIKLS0jZW5kaWYgLyogSEFWRV9DT05GSUdfSCAq LwotKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfQ09ORklHX0gpICovCi0gCi0gI2luY2x1ZGUgPG5n aHR0cDIvbmdodHRwMi5oPgotIAotQEAgLTQ4LDQgKzQ4LDQgQEAgdm9pZCAqbmdodHRwMl9xdWV1 ZV9mcm9udChuZ2h0dHAyX3F1ZXVlICpxdWV1ZSk7Ci0gdm9pZCAqbmdodHRwMl9xdWV1ZV9iYWNr KG5naHR0cDJfcXVldWUgKnF1ZXVlKTsKLSBpbnQgbmdodHRwMl9xdWV1ZV9lbXB0eShuZ2h0dHAy X3F1ZXVlICpxdWV1ZSk7Ci0gCi0tI2VuZGlmIC8qIE5HSFRUUDJfUVVFVUVfSCAqLwotKyNlbmRp ZiAvKiAhZGVmaW5lZChOR0hUVFAyX1FVRVVFX0gpICovCi1kaWZmIC0tZ2l0IGEvZGVwcy9uZ2h0 dHAyL2xpYi9uZ2h0dHAyX3JhdGVsaW0uaCBiL2RlcHMvbmdodHRwMi9saWIvbmdodHRwMl9yYXRl bGltLmgKLWluZGV4IDg2NmVkM2YwLi5kMTA5N2YyZiAxMDA2NDQKLS0tLSBhL2RlcHMvbmdodHRw Mi9saWIvbmdodHRwMl9yYXRlbGltLmgKLSsrKyBiL2RlcHMvbmdodHRwMi9saWIvbmdodHRwMl9y YXRlbGltLmgKLUBAIC0yNyw3ICsyNyw3IEBACi0gCi0gI2lmZGVmIEhBVkVfQ09ORklHX0gKLSAj ICBpbmNsdWRlIDxjb25maWcuaD4KLS0jZW5kaWYgLyogSEFWRV9DT05GSUdfSCAqLwotKyNlbmRp ZiAvKiBkZWZpbmVkKEhBVkVfQ09ORklHX0gpICovCi0gCi0gI2luY2x1ZGUgPG5naHR0cDIvbmdo dHRwMi5oPgotIAotQEAgLTU0LDQgKzU0LDQgQEAgdm9pZCBuZ2h0dHAyX3JhdGVsaW1fdXBkYXRl KG5naHR0cDJfcmF0ZWxpbSAqcmwsIHVpbnQ2NF90IHRzdGFtcCk7Ci0gICAgc3VjY2VlZHMsIG9y IC0xLiAqLwotIGludCBuZ2h0dHAyX3JhdGVsaW1fZHJhaW4obmdodHRwMl9yYXRlbGltICpybCwg dWludDY0X3Qgbik7Ci0gCi0tI2VuZGlmIC8qIE5HSFRUUDJfUkFURUxJTV9IICovCi0rI2VuZGlm IC8qICFkZWZpbmVkKE5HSFRUUDJfUkFURUxJTV9IKSAqLwotZGlmZiAtLWdpdCBhL2RlcHMvbmdo dHRwMi9saWIvbmdodHRwMl9yY2J1Zi5oIGIvZGVwcy9uZ2h0dHAyL2xpYi9uZ2h0dHAyX3JjYnVm LmgKLWluZGV4IDY4MTRlNzA5Li5lZjgyZTFiMyAxMDA2NDQKLS0tLSBhL2RlcHMvbmdodHRwMi9s aWIvbmdodHRwMl9yY2J1Zi5oCi0rKysgYi9kZXBzL25naHR0cDIvbGliL25naHR0cDJfcmNidWYu aAotQEAgLTI3LDcgKzI3LDcgQEAKLSAKLSAjaWZkZWYgSEFWRV9DT05GSUdfSAotICMgIGluY2x1 ZGUgPGNvbmZpZy5oPgotLSNlbmRpZiAvKiBIQVZFX0NPTkZJR19IICovCi0rI2VuZGlmIC8qIGRl ZmluZWQoSEFWRV9DT05GSUdfSCkgKi8KLSAKLSAjaW5jbHVkZSA8bmdodHRwMi9uZ2h0dHAyLmg+ Ci0gCi1AQCAtNzcsNCArNzcsNCBAQCBpbnQgbmdodHRwMl9yY2J1Zl9uZXcyKG5naHR0cDJfcmNi dWYgKipyY2J1Zl9wdHIsIGNvbnN0IHVpbnQ4X3QgKnNyYywKLSAgKi8KLSB2b2lkIG5naHR0cDJf cmNidWZfZGVsKG5naHR0cDJfcmNidWYgKnJjYnVmKTsKLSAKLS0jZW5kaWYgLyogTkdIVFRQMl9S Q0JVRl9IICovCi0rI2VuZGlmIC8qICFkZWZpbmVkKE5HSFRUUDJfUkNCVUZfSCkgKi8KLWRpZmYg LS1naXQgYS9kZXBzL25naHR0cDIvbGliL25naHR0cDJfc2Vzc2lvbi5jIGIvZGVwcy9uZ2h0dHAy L2xpYi9uZ2h0dHAyX3Nlc3Npb24uYwotaW5kZXggZGYzM2E4OWUuLjBmYmNjOTMwIDEwMDY0NAot LS0tIGEvZGVwcy9uZ2h0dHAyL2xpYi9uZ2h0dHAyX3Nlc3Npb24uYwotKysrIGIvZGVwcy9uZ2h0 dHAyL2xpYi9uZ2h0dHAyX3Nlc3Npb24uYwotQEAgLTQxLDYgKzQxLDggQEAKLSAjaW5jbHVkZSAi bmdodHRwMl9kZWJ1Zy5oIgotICNpbmNsdWRlICJuZ2h0dHAyX3N1Ym1pdC5oIgotIAotK25naHR0 cDJfc3RyZWFtIG5naHR0cDJfc3RyZWFtX3Jvb3Q7Ci0rCi0gLyoKLSAgKiBSZXR1cm5zIG5vbi16 ZXJvIGlmIHRoZSBudW1iZXIgb2Ygb3V0Z29pbmcgb3BlbmVkIHN0cmVhbXMgaXMgbGFyZ2VyCi0g ICogdGhhbiBvciBlcXVhbCB0bwotQEAgLTE0NiwxMSArMTQ4LDYgQEAgc3RhdGljIGludCBzZXNz aW9uX2RldGVjdF9pZGxlX3N0cmVhbShuZ2h0dHAyX3Nlc3Npb24gKnNlc3Npb24sCi0gICByZXR1 cm4gMDsKLSB9Ci0gCi0tc3RhdGljIGludCBzZXNzaW9uX25vX3JmYzc1NDBfcHJpX25vX2ZhbGxi YWNrKG5naHR0cDJfc2Vzc2lvbiAqc2Vzc2lvbikgewotLSAgcmV0dXJuIHNlc3Npb24tPnBlbmRp bmdfbm9fcmZjNzU0MF9wcmlvcml0aWVzID09IDEgJiYKLS0gICAgICAgICAhc2Vzc2lvbi0+ZmFs bGJhY2tfcmZjNzU0MF9wcmlvcml0aWVzOwotLX0KLS0KLSBzdGF0aWMgaW50IGNoZWNrX2V4dF90 eXBlX3NldChjb25zdCB1aW50OF90ICpleHRfdHlwZXMsIHVpbnQ4X3QgdHlwZSkgewotICAgcmV0 dXJuIChleHRfdHlwZXNbdHlwZSAvIDhdICYgKDEgPDwgKHR5cGUgJiAweDcpKSkgPiAwOwotIH0K LUBAIC00NDEsNiArNDM4LDcgQEAgc3RhdGljIGludCBzZXNzaW9uX25ldyhuZ2h0dHAyX3Nlc3Np b24gKipzZXNzaW9uX3B0ciwKLSAgIHNpemVfdCBtYXhfZGVmbGF0ZV9keW5hbWljX3RhYmxlX3Np emUgPQotICAgICBOR0hUVFAyX0hEX0RFRkFVTFRfTUFYX0RFRkxBVEVfQlVGRkVSX1NJWkU7Ci0g ICBzaXplX3QgaTsKLSsgIHVpbnQzMl90IG1hcF9zZWVkOwotIAotICAgaWYgKG1lbSA9PSBOVUxM KSB7Ci0gICAgIG1lbSA9IG5naHR0cDJfbWVtX2RlZmF1bHQoKTsKLUBAIC00NTgsMTAgKzQ1Niw2 IEBAIHN0YXRpYyBpbnQgc2Vzc2lvbl9uZXcobmdodHRwMl9zZXNzaW9uICoqc2Vzc2lvbl9wdHIs Ci0gICAvKiBuZXh0X3N0cmVhbV9pZCBpcyBpbml0aWFsaXplZCBpbiBlaXRoZXIKLSAgICAgIG5n aHR0cDJfc2Vzc2lvbl9jbGllbnRfbmV3MiBvciBuZ2h0dHAyX3Nlc3Npb25fc2VydmVyX25ldzIg Ki8KLSAKLS0gIG5naHR0cDJfc3RyZWFtX2luaXQoJigqc2Vzc2lvbl9wdHIpLT5yb290LCAwLCBO R0hUVFAyX1NUUkVBTV9GTEFHX05PTkUsCi0tICAgICAgICAgICAgICAgICAgICAgIE5HSFRUUDJf U1RSRUFNX0lETEUsIE5HSFRUUDJfREVGQVVMVF9XRUlHSFQsIDAsIDAsIE5VTEwsCi0tICAgICAg ICAgICAgICAgICAgICAgIG1lbSk7Ci0tCi0gICAoKnNlc3Npb25fcHRyKS0+cmVtb3RlX3dpbmRv d19zaXplID0gTkdIVFRQMl9JTklUSUFMX0NPTk5FQ1RJT05fV0lORE9XX1NJWkU7Ci0gICAoKnNl c3Npb25fcHRyKS0+cmVjdl93aW5kb3dfc2l6ZSA9IDA7Ci0gICAoKnNlc3Npb25fcHRyKS0+Y29u c3VtZWRfc2l6ZSA9IDA7Ci1AQCAtNDgxLDYgKzQ3NSwxMCBAQCBzdGF0aWMgaW50IHNlc3Npb25f bmV3KG5naHR0cDJfc2Vzc2lvbiAqKnNlc3Npb25fcHRyLAotICAgICAgICAgICAgICAgICAgICAg ICAgTkdIVFRQMl9ERUZBVUxUX1NUUkVBTV9SRVNFVF9CVVJTVCwKLSAgICAgICAgICAgICAgICAg ICAgICAgIE5HSFRUUDJfREVGQVVMVF9TVFJFQU1fUkVTRVRfUkFURSk7Ci0gCi0rICBuZ2h0dHAy X3JhdGVsaW1faW5pdCgmKCpzZXNzaW9uX3B0ciktPmdsaXRjaF9yYXRlbGltLAotKyAgICAgICAg ICAgICAgICAgICAgICAgTkdIVFRQMl9ERUZBVUxUX0dMSVRDSF9CVVJTVCwKLSsgICAgICAgICAg ICAgICAgICAgICAgIE5HSFRUUDJfREVGQVVMVF9HTElUQ0hfUkFURSk7Ci0rCi0gICBpZiAoc2Vy dmVyKSB7Ci0gICAgICgqc2Vzc2lvbl9wdHIpLT5zZXJ2ZXIgPSAxOwotICAgfQotQEAgLTU0OCwx MSArNTQ2LDYgQEAgc3RhdGljIGludCBzZXNzaW9uX25ldyhuZ2h0dHAyX3Nlc3Npb24gKipzZXNz aW9uX3B0ciwKLSAgICAgICBtYXhfZGVmbGF0ZV9keW5hbWljX3RhYmxlX3NpemUgPSBvcHRpb24t Pm1heF9kZWZsYXRlX2R5bmFtaWNfdGFibGVfc2l6ZTsKLSAgICAgfQotIAotLSAgICBpZiAoKG9w dGlvbi0+b3B0X3NldF9tYXNrICYgTkdIVFRQMl9PUFRfTk9fQ0xPU0VEX1NUUkVBTVMpICYmCi0t ICAgICAgICBvcHRpb24tPm5vX2Nsb3NlZF9zdHJlYW1zKSB7Ci0tICAgICAgKCpzZXNzaW9uX3B0 ciktPm9wdF9mbGFncyB8PSBOR0hUVFAyX09QVE1BU0tfTk9fQ0xPU0VEX1NUUkVBTVM7Ci0tICAg IH0KLS0KLSAgICAgaWYgKG9wdGlvbi0+b3B0X3NldF9tYXNrICYgTkdIVFRQMl9PUFRfTUFYX09V VEJPVU5EX0FDSykgewotICAgICAgICgqc2Vzc2lvbl9wdHIpLT5tYXhfb3V0Ym91bmRfYWNrID0g b3B0aW9uLT5tYXhfb3V0Ym91bmRfYWNrOwotICAgICB9Ci1AQCAtNTYyLDEzICs1NTUsNiBAQCBz dGF0aWMgaW50IHNlc3Npb25fbmV3KG5naHR0cDJfc2Vzc2lvbiAqKnNlc3Npb25fcHRyLAotICAg ICAgICgqc2Vzc2lvbl9wdHIpLT5tYXhfc2V0dGluZ3MgPSBvcHRpb24tPm1heF9zZXR0aW5nczsK LSAgICAgfQotIAotLSAgICBpZiAoKG9wdGlvbi0+b3B0X3NldF9tYXNrICYKLS0gICAgICAgICBO R0hUVFAyX09QVF9TRVJWRVJfRkFMTEJBQ0tfUkZDNzU0MF9QUklPUklUSUVTKSAmJgotLSAgICAg ICAgb3B0aW9uLT5zZXJ2ZXJfZmFsbGJhY2tfcmZjNzU0MF9wcmlvcml0aWVzKSB7Ci0tICAgICAg KCpzZXNzaW9uX3B0ciktPm9wdF9mbGFncyB8PQotLSAgICAgICAgTkdIVFRQMl9PUFRNQVNLX1NF UlZFUl9GQUxMQkFDS19SRkM3NTQwX1BSSU9SSVRJRVM7Ci0tICAgIH0KLS0KLSAgICAgaWYgKChv cHRpb24tPm9wdF9zZXRfbWFzayAmCi0gICAgICAgICAgTkdIVFRQMl9PUFRfTk9fUkZDOTExM19M RUFESU5HX0FORF9UUkFJTElOR19XU19WQUxJREFUSU9OKSAmJgotICAgICAgICAgb3B0aW9uLT5u b19yZmM5MTEzX2xlYWRpbmdfYW5kX3RyYWlsaW5nX3dzX3ZhbGlkYXRpb24pIHsKLUBAIC01ODUs NiArNTcxLDExIEBAIHN0YXRpYyBpbnQgc2Vzc2lvbl9uZXcobmdodHRwMl9zZXNzaW9uICoqc2Vz c2lvbl9wdHIsCi0gICAgIGlmIChvcHRpb24tPm9wdF9zZXRfbWFzayAmIE5HSFRUUDJfT1BUX01B WF9DT05USU5VQVRJT05TKSB7Ci0gICAgICAgKCpzZXNzaW9uX3B0ciktPm1heF9jb250aW51YXRp b25zID0gb3B0aW9uLT5tYXhfY29udGludWF0aW9uczsKLSAgICAgfQotKwotKyAgICBpZiAob3B0 aW9uLT5vcHRfc2V0X21hc2sgJiBOR0hUVFAyX09QVF9HTElUQ0hfUkFURV9MSU1JVCkgewotKyAg ICAgIG5naHR0cDJfcmF0ZWxpbV9pbml0KCYoKnNlc3Npb25fcHRyKS0+Z2xpdGNoX3JhdGVsaW0s Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uLT5nbGl0Y2hfYnVyc3QsIG9wdGlv bi0+Z2xpdGNoX3JhdGUpOwotKyAgICB9Ci0gICB9Ci0gCi0gICBydiA9IG5naHR0cDJfaGRfZGVm bGF0ZV9pbml0MigmKCpzZXNzaW9uX3B0ciktPmhkX2RlZmxhdGVyLAotQEAgLTYxMyw3ICs2MDQs MTMgQEAgc3RhdGljIGludCBzZXNzaW9uX25ldyhuZ2h0dHAyX3Nlc3Npb24gKipzZXNzaW9uX3B0 ciwKLSAgICAgZ290byBmYWlsX2FvYl9mcmFtZWJ1ZjsKLSAgIH0KLSAKLS0gIG5naHR0cDJfbWFw X2luaXQoJigqc2Vzc2lvbl9wdHIpLT5zdHJlYW1zLCBtZW0pOwotKyAgaWYgKGNhbGxiYWNrcy0+ cmFuZF9jYWxsYmFjaykgewotKyAgICBjYWxsYmFja3MtPnJhbmRfY2FsbGJhY2soKHVpbnQ4X3Qg KikmbWFwX3NlZWQsIHNpemVvZihtYXBfc2VlZCkpOwotKyAgfSBlbHNlIHsKLSsgICAgbWFwX3Nl ZWQgPSAwOwotKyAgfQotKwotKyAgbmdodHRwMl9tYXBfaW5pdCgmKCpzZXNzaW9uX3B0ciktPnN0 cmVhbXMsIG1hcF9zZWVkLCBtZW0pOwotIAotICAgYWN0aXZlX291dGJvdW5kX2l0ZW1fcmVzZXQo Jigqc2Vzc2lvbl9wdHIpLT5hb2IsIG1lbSk7Ci0gCi1AQCAtODEwLDcgKzgwNyw2IEBAIHZvaWQg bmdodHRwMl9zZXNzaW9uX2RlbChuZ2h0dHAyX3Nlc3Npb24gKnNlc3Npb24pIHsKLSAgIGZvciAo aSA9IDA7IGkgPCBOR0hUVFAyX0VYVFBSSV9VUkdFTkNZX0xFVkVMUzsgKytpKSB7Ci0gICAgIG5n aHR0cDJfcHFfZnJlZSgmc2Vzc2lvbi0+c2NoZWRbaV0ub2JfZGF0YSk7Ci0gICB9Ci0tICBuZ2h0 dHAyX3N0cmVhbV9mcmVlKCZzZXNzaW9uLT5yb290KTsKLSAKLSAgIC8qIEhhdmUgdG8gZnJlZSBz dHJlYW1zIGZpcnN0LCBzbyB0aGF0IHdlIGNhbiBjaGVjawotICAgICAgc3RyZWFtLT5pdGVtLT5x dWV1ZWQgKi8KLUBAIC04MjksODIgKzgyNSw2IEBAIHZvaWQgbmdodHRwMl9zZXNzaW9uX2RlbChu Z2h0dHAyX3Nlc3Npb24gKnNlc3Npb24pIHsKLSAgIG5naHR0cDJfbWVtX2ZyZWUobWVtLCBzZXNz aW9uKTsKLSB9Ci0gCi0taW50IG5naHR0cDJfc2Vzc2lvbl9yZXByaW9yaXRpemVfc3RyZWFtKAot LSAgbmdodHRwMl9zZXNzaW9uICpzZXNzaW9uLCBuZ2h0dHAyX3N0cmVhbSAqc3RyZWFtLAotLSAg Y29uc3QgbmdodHRwMl9wcmlvcml0eV9zcGVjICpwcmlfc3BlY19pbikgewotLSAgaW50IHJ2Owot LSAgbmdodHRwMl9zdHJlYW0gKmRlcF9zdHJlYW0gPSBOVUxMOwotLSAgbmdodHRwMl9wcmlvcml0 eV9zcGVjIHByaV9zcGVjX2RlZmF1bHQ7Ci0tICBjb25zdCBuZ2h0dHAyX3ByaW9yaXR5X3NwZWMg KnByaV9zcGVjID0gcHJpX3NwZWNfaW47Ci0tCi0tICBhc3NlcnQoKCFzZXNzaW9uLT5zZXJ2ZXIg JiYgc2Vzc2lvbi0+cGVuZGluZ19ub19yZmM3NTQwX3ByaW9yaXRpZXMgIT0gMSkgfHwKLS0gICAg ICAgICAoc2Vzc2lvbi0+c2VydmVyICYmICFzZXNzaW9uX25vX3JmYzc1NDBfcHJpX25vX2ZhbGxi YWNrKHNlc3Npb24pKSk7Ci0tICBhc3NlcnQocHJpX3NwZWMtPnN0cmVhbV9pZCAhPSBzdHJlYW0t PnN0cmVhbV9pZCk7Ci0tCi0tICBpZiAoIW5naHR0cDJfc3RyZWFtX2luX2RlcF90cmVlKHN0cmVh bSkpIHsKLS0gICAgcmV0dXJuIDA7Ci0tICB9Ci0tCi0tICBpZiAocHJpX3NwZWMtPnN0cmVhbV9p ZCAhPSAwKSB7Ci0tICAgIGRlcF9zdHJlYW0gPSBuZ2h0dHAyX3Nlc3Npb25fZ2V0X3N0cmVhbV9y YXcoc2Vzc2lvbiwgcHJpX3NwZWMtPnN0cmVhbV9pZCk7Ci0tCi0tICAgIGlmICghZGVwX3N0cmVh bSAmJgotLSAgICAgICAgc2Vzc2lvbl9kZXRlY3RfaWRsZV9zdHJlYW0oc2Vzc2lvbiwgcHJpX3Nw ZWMtPnN0cmVhbV9pZCkpIHsKLS0gICAgICBuZ2h0dHAyX3ByaW9yaXR5X3NwZWNfZGVmYXVsdF9p bml0KCZwcmlfc3BlY19kZWZhdWx0KTsKLS0KLS0gICAgICBkZXBfc3RyZWFtID0gbmdodHRwMl9z ZXNzaW9uX29wZW5fc3RyZWFtKAotLSAgICAgICAgc2Vzc2lvbiwgcHJpX3NwZWMtPnN0cmVhbV9p ZCwgTkdIVFRQMl9GTEFHX05PTkUsICZwcmlfc3BlY19kZWZhdWx0LAotLSAgICAgICAgTkdIVFRQ Ml9TVFJFQU1fSURMRSwgTlVMTCk7Ci0tCi0tICAgICAgaWYgKGRlcF9zdHJlYW0gPT0gTlVMTCkg ewotLSAgICAgICAgcmV0dXJuIE5HSFRUUDJfRVJSX05PTUVNOwotLSAgICAgIH0KLS0gICAgfSBl bHNlIGlmICghZGVwX3N0cmVhbSB8fCAhbmdodHRwMl9zdHJlYW1faW5fZGVwX3RyZWUoZGVwX3N0 cmVhbSkpIHsKLS0gICAgICBuZ2h0dHAyX3ByaW9yaXR5X3NwZWNfZGVmYXVsdF9pbml0KCZwcmlf c3BlY19kZWZhdWx0KTsKLS0gICAgICBwcmlfc3BlYyA9ICZwcmlfc3BlY19kZWZhdWx0OwotLSAg ICB9Ci0tICB9Ci0tCi0tICBpZiAocHJpX3NwZWMtPnN0cmVhbV9pZCA9PSAwKSB7Ci0tICAgIGRl cF9zdHJlYW0gPSAmc2Vzc2lvbi0+cm9vdDsKLS0gIH0gZWxzZSBpZiAobmdodHRwMl9zdHJlYW1f ZGVwX2ZpbmRfYW5jZXN0b3IoZGVwX3N0cmVhbSwgc3RyZWFtKSkgewotLSAgICBERUJVR0YoInN0 cmVhbTogY3ljbGUgZGV0ZWN0ZWQsIGRlcF9zdHJlYW0oJXApPSVkIHN0cmVhbSglcCk9JWRcbiIs Ci0tICAgICAgICAgICBkZXBfc3RyZWFtLCBkZXBfc3RyZWFtLT5zdHJlYW1faWQsIHN0cmVhbSwg c3RyZWFtLT5zdHJlYW1faWQpOwotLQotLSAgICBuZ2h0dHAyX3N0cmVhbV9kZXBfcmVtb3ZlX3N1 YnRyZWUoZGVwX3N0cmVhbSk7Ci0tICAgIHJ2ID0gbmdodHRwMl9zdHJlYW1fZGVwX2FkZF9zdWJ0 cmVlKHN0cmVhbS0+ZGVwX3ByZXYsIGRlcF9zdHJlYW0pOwotLSAgICBpZiAocnYgIT0gMCkgewot LSAgICAgIHJldHVybiBydjsKLS0gICAgfQotLSAgfQotLQotLSAgYXNzZXJ0KGRlcF9zdHJlYW0p OwotLQotLSAgaWYgKGRlcF9zdHJlYW0gPT0gc3RyZWFtLT5kZXBfcHJldiAmJiAhcHJpX3NwZWMt PmV4Y2x1c2l2ZSkgewotLSAgICAvKiBUaGlzIGlzIG1pbm9yIG9wdGltaXphdGlvbiB3aGVuIGp1 c3Qgd2VpZ2h0IGlzIGNoYW5nZWQuICovCi0tICAgIG5naHR0cDJfc3RyZWFtX2NoYW5nZV93ZWln aHQoc3RyZWFtLCBwcmlfc3BlYy0+d2VpZ2h0KTsKLS0KLS0gICAgcmV0dXJuIDA7Ci0tICB9Ci0t Ci0tICBuZ2h0dHAyX3N0cmVhbV9kZXBfcmVtb3ZlX3N1YnRyZWUoc3RyZWFtKTsKLS0KLS0gIC8q IFdlIGhhdmUgdG8gdXBkYXRlIHdlaWdodCBhZnRlciByZW1vdmluZyBzdHJlYW0gZnJvbSB0cmVl ICovCi0tICBzdHJlYW0tPndlaWdodCA9IHByaV9zcGVjLT53ZWlnaHQ7Ci0tCi0tICBpZiAocHJp X3NwZWMtPmV4Y2x1c2l2ZSkgewotLSAgICBydiA9IG5naHR0cDJfc3RyZWFtX2RlcF9pbnNlcnRf c3VidHJlZShkZXBfc3RyZWFtLCBzdHJlYW0pOwotLSAgfSBlbHNlIHsKLS0gICAgcnYgPSBuZ2h0 dHAyX3N0cmVhbV9kZXBfYWRkX3N1YnRyZWUoZGVwX3N0cmVhbSwgc3RyZWFtKTsKLS0gIH0KLS0K LS0gIGlmIChydiAhPSAwKSB7Ci0tICAgIHJldHVybiBydjsKLS0gIH0KLS0KLS0gIHJldHVybiAw OwotLX0KLS0KLSBzdGF0aWMgdWludDY0X3QgcHFfZ2V0X2ZpcnN0X2N5Y2xlKG5naHR0cDJfcHEg KnBxKSB7Ci0gICBuZ2h0dHAyX3N0cmVhbSAqc3RyZWFtOwotIAotQEAgLTkyMyw3ICs4NDMsNiBA QCBzdGF0aWMgaW50IHNlc3Npb25fb2JfZGF0YV9wdXNoKG5naHR0cDJfc2Vzc2lvbiAqc2Vzc2lv biwKLSAgIGludCBpbmM7Ci0gICBuZ2h0dHAyX3BxICpwcTsKLSAKLS0gIGFzc2VydChzdHJlYW0t PmZsYWdzICYgTkdIVFRQMl9TVFJFQU1fRkxBR19OT19SRkM3NTQwX1BSSU9SSVRJRVMpOwotICAg YXNzZXJ0KHN0cmVhbS0+cXVldWVkID09IDApOwotIAotICAgdXJnZW5jeSA9IG5naHR0cDJfZXh0 cHJpX3VpbnQ4X3VyZ2VuY3koc3RyZWFtLT5leHRwcmkpOwotQEAgLTk1Miw3ICs4NzEsNiBAQCBz dGF0aWMgdm9pZCBzZXNzaW9uX29iX2RhdGFfcmVtb3ZlKG5naHR0cDJfc2Vzc2lvbiAqc2Vzc2lv biwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5naHR0cDJfc3RyZWFtICpz dHJlYW0pIHsKLSAgIHVpbnQzMl90IHVyZ2VuY3k7Ci0gCi0tICBhc3NlcnQoc3RyZWFtLT5mbGFn cyAmIE5HSFRUUDJfU1RSRUFNX0ZMQUdfTk9fUkZDNzU0MF9QUklPUklUSUVTKTsKLSAgIGFzc2Vy dChzdHJlYW0tPnF1ZXVlZCA9PSAxKTsKLSAKLSAgIHVyZ2VuY3kgPSBuZ2h0dHAyX2V4dHByaV91 aW50OF91cmdlbmN5KHN0cmVhbS0+ZXh0cHJpKTsKLUBAIC05NjksMTQgKzg4Nyw3IEBAIHN0YXRp YyBpbnQgc2Vzc2lvbl9hdHRhY2hfc3RyZWFtX2l0ZW0obmdodHRwMl9zZXNzaW9uICpzZXNzaW9u LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmdodHRwMl9vdXRib3Vu ZF9pdGVtICppdGVtKSB7Ci0gICBpbnQgcnY7Ci0gCi0tICBydiA9IG5naHR0cDJfc3RyZWFtX2F0 dGFjaF9pdGVtKHN0cmVhbSwgaXRlbSk7Ci0tICBpZiAocnYgIT0gMCkgewotLSAgICByZXR1cm4g cnY7Ci0tICB9Ci0tCi0tICBpZiAoIShzdHJlYW0tPmZsYWdzICYgTkdIVFRQMl9TVFJFQU1fRkxB R19OT19SRkM3NTQwX1BSSU9SSVRJRVMpKSB7Ci0tICAgIHJldHVybiAwOwotLSAgfQotKyAgbmdo dHRwMl9zdHJlYW1fYXR0YWNoX2l0ZW0oc3RyZWFtLCBpdGVtKTsKLSAKLSAgIHJ2ID0gc2Vzc2lv bl9vYl9kYXRhX3B1c2goc2Vzc2lvbiwgc3RyZWFtKTsKLSAgIGlmIChydiAhPSAwKSB7Ci1AQCAt OTkyLDggKzkwMyw3IEBAIHN0YXRpYyB2b2lkIHNlc3Npb25fZGV0YWNoX3N0cmVhbV9pdGVtKG5n aHR0cDJfc2Vzc2lvbiAqc2Vzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBuZ2h0dHAyX3N0cmVhbSAqc3RyZWFtKSB7Ci0gICBuZ2h0dHAyX3N0cmVhbV9kZXRh Y2hfaXRlbShzdHJlYW0pOwotIAotLSAgaWYgKCEoc3RyZWFtLT5mbGFncyAmIE5HSFRUUDJfU1RS RUFNX0ZMQUdfTk9fUkZDNzU0MF9QUklPUklUSUVTKSB8fAotLSAgICAgICFzdHJlYW0tPnF1ZXVl ZCkgewotKyAgaWYgKCFzdHJlYW0tPnF1ZXVlZCkgewotICAgICByZXR1cm47Ci0gICB9Ci0gCi1A QCAtMTAwNCw4ICs5MTQsNyBAQCBzdGF0aWMgdm9pZCBzZXNzaW9uX2RlZmVyX3N0cmVhbV9pdGVt KG5naHR0cDJfc2Vzc2lvbiAqc2Vzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIG5naHR0cDJfc3RyZWFtICpzdHJlYW0sIHVpbnQ4X3QgZmxhZ3MpIHsKLSAgIG5n aHR0cDJfc3RyZWFtX2RlZmVyX2l0ZW0oc3RyZWFtLCBmbGFncyk7Ci0gCi0tICBpZiAoIShzdHJl YW0tPmZsYWdzICYgTkdIVFRQMl9TVFJFQU1fRkxBR19OT19SRkM3NTQwX1BSSU9SSVRJRVMpIHx8 Ci0tICAgICAgIXN0cmVhbS0+cXVldWVkKSB7Ci0rICBpZiAoIXN0cmVhbS0+cXVldWVkKSB7Ci0g ICAgIHJldHVybjsKLSAgIH0KLSAKLUBAIC0xMDE1LDE1ICs5MjQsOSBAQCBzdGF0aWMgdm9pZCBz ZXNzaW9uX2RlZmVyX3N0cmVhbV9pdGVtKG5naHR0cDJfc2Vzc2lvbiAqc2Vzc2lvbiwKLSBzdGF0 aWMgaW50IHNlc3Npb25fcmVzdW1lX2RlZmVycmVkX3N0cmVhbV9pdGVtKG5naHR0cDJfc2Vzc2lv biAqc2Vzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG5naHR0cDJfc3RyZWFtICpzdHJlYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB1aW50OF90IGZsYWdzKSB7Ci0tICBpbnQgcnY7Ci0rICBuZ2h0 dHAyX3N0cmVhbV9yZXN1bWVfZGVmZXJyZWRfaXRlbShzdHJlYW0sIGZsYWdzKTsKLSAKLS0gIHJ2 ID0gbmdodHRwMl9zdHJlYW1fcmVzdW1lX2RlZmVycmVkX2l0ZW0oc3RyZWFtLCBmbGFncyk7Ci0t ICBpZiAocnYgIT0gMCkgewotLSAgICByZXR1cm4gcnY7Ci0tICB9Ci0tCi0tICBpZiAoIShzdHJl YW0tPmZsYWdzICYgTkdIVFRQMl9TVFJFQU1fRkxBR19OT19SRkM3NTQwX1BSSU9SSVRJRVMpIHx8 Ci0tICAgICAgKHN0cmVhbS0+ZmxhZ3MgJiBOR0hUVFAyX1NUUkVBTV9GTEFHX0RFRkVSUkVEX0FM TCkpIHsKLSsgIGlmIChzdHJlYW0tPmZsYWdzICYgTkdIVFRQMl9TVFJFQU1fRkxBR19ERUZFUlJF RF9BTEwpIHsKLSAgICAgcmV0dXJuIDA7Ci0gICB9Ci0gCi1AQCAtMTE2OCw3ICsxMDcxLDYgQEAg aW50IG5naHR0cDJfc2Vzc2lvbl9hZGRfaXRlbShuZ2h0dHAyX3Nlc3Npb24gKnNlc3Npb24sCi0g ICAgIHJldHVybiAwOwotICAgY2FzZSBOR0hUVFAyX1BVU0hfUFJPTUlTRTogewotICAgICBuZ2h0 dHAyX2hlYWRlcnNfYXV4X2RhdGEgKmF1eF9kYXRhOwotLSAgICBuZ2h0dHAyX3ByaW9yaXR5X3Nw ZWMgcHJpX3NwZWM7Ci0gCi0gICAgIGF1eF9kYXRhID0gJml0ZW0tPmF1eF9kYXRhLmhlYWRlcnM7 Ci0gCi1AQCAtMTE3NiwyMCArMTA3OCwxMyBAQCBpbnQgbmdodHRwMl9zZXNzaW9uX2FkZF9pdGVt KG5naHR0cDJfc2Vzc2lvbiAqc2Vzc2lvbiwKLSAgICAgICByZXR1cm4gTkdIVFRQMl9FUlJfU1RS RUFNX0NMT1NFRDsKLSAgICAgfQotIAotLSAgICBuZ2h0dHAyX3ByaW9yaXR5X3NwZWNfaW5pdCgm cHJpX3NwZWMsIHN0cmVhbS0+c3RyZWFtX2lkLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBOR0hUVFAyX0RFRkFVTFRfV0VJR0hULCAwKTsKLS0KLSAgICAgaWYgKCFuZ2h0dHAyX3Nl c3Npb25fb3Blbl9zdHJlYW0oCi0gICAgICAgICAgIHNlc3Npb24sIGZyYW1lLT5wdXNoX3Byb21p c2UucHJvbWlzZWRfc3RyZWFtX2lkLAotLSAgICAgICAgICBOR0hUVFAyX1NUUkVBTV9GTEFHX05P TkUsICZwcmlfc3BlYywgTkdIVFRQMl9TVFJFQU1fUkVTRVJWRUQsCi0rICAgICAgICAgIE5HSFRU UDJfU1RSRUFNX0ZMQUdfTk9ORSwgTkdIVFRQMl9TVFJFQU1fUkVTRVJWRUQsCi0gICAgICAgICAg IGF1eF9kYXRhLT5zdHJlYW1fdXNlcl9kYXRhKSkgewotICAgICAgIHJldHVybiBOR0hUVFAyX0VS Ul9OT01FTTsKLSAgICAgfQotIAotLSAgICAvKiBXZSBkb24ndCBoYXZlIHRvIGNhbGwgbmdodHRw Ml9zZXNzaW9uX2FkanVzdF9jbG9zZWRfc3RyZWFtKCkKLS0gICAgICAgaGVyZSwgc2luY2Ugc3Ry ZWFtLT5zdHJlYW1faWQgaXMgbG9jYWwgc3RyZWFtX2lkLCBhbmQgaXQgZG9lcwotLSAgICAgICBu b3QgYWZmZWN0IGNsb3NlZCBzdHJlYW0gY291bnQuICovCi0tCi0gICAgIG5naHR0cDJfb3V0Ym91 bmRfcXVldWVfcHVzaCgmc2Vzc2lvbi0+b2JfcmVnLCBpdGVtKTsKLSAgICAgaXRlbS0+cXVldWVk ID0gMTsKLSAKLUBAIC0xMjEzLDYgKzExMDgsMTUgQEAgaW50IG5naHR0cDJfc2Vzc2lvbl9hZGRf aXRlbShuZ2h0dHAyX3Nlc3Npb24gKnNlc3Npb24sCi0gCi0gaW50IG5naHR0cDJfc2Vzc2lvbl9h ZGRfcnN0X3N0cmVhbShuZ2h0dHAyX3Nlc3Npb24gKnNlc3Npb24sIGludDMyX3Qgc3RyZWFtX2lk LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgZXJyb3JfY29k ZSkgewotKyAgcmV0dXJuIG5naHR0cDJfc2Vzc2lvbl9hZGRfcnN0X3N0cmVhbV9jb250aW51ZSgK LSsgICAgc2Vzc2lvbiwgc3RyZWFtX2lkLCBlcnJvcl9jb2RlLAotKyAgICAvKiBjb250aW51ZV93 aXRob3V0X3N0cmVhbSA9ICovIDEpOwotK30KLSsKLStpbnQgbmdodHRwMl9zZXNzaW9uX2FkZF9y c3Rfc3RyZWFtX2NvbnRpbnVlKG5naHR0cDJfc2Vzc2lvbiAqc2Vzc2lvbiwKLSsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3Qgc3RyZWFtX2lkLAotKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgZXJyb3Jf Y29kZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBj b250aW51ZV93aXRob3V0X3N0cmVhbSkgewotICAgaW50IHJ2OwotICAgbmdodHRwMl9vdXRib3Vu ZF9pdGVtICppdGVtOwotICAgbmdodHRwMl9mcmFtZSAqZnJhbWU7Ci1AQCAtMTI2OSw2ICsxMTcz LDEyIEBAIGludCBuZ2h0dHAyX3Nlc3Npb25fYWRkX3JzdF9zdHJlYW0obmdodHRwMl9zZXNzaW9u ICpzZXNzaW9uLCBpbnQzMl90IHN0cmVhbV9pZCwKLSAgICAgfQotICAgfQotIAotKyAgLyogVG8g a2VlcCB0aGUgb2xkIGJlaGF2aW91ciwgZG8gbm90IGZhaWwgaWYgc3RyZWFtIHdhcyBub3QKLSsg ICAgIGZvdW5kLiAqLwotKyAgaWYgKCFjb250aW51ZV93aXRob3V0X3N0cmVhbSAmJiAhc3RyZWFt KSB7Ci0rICAgIHJldHVybiAwOwotKyAgfQotKwotICAgaXRlbSA9IG5naHR0cDJfbWVtX21hbGxv YyhtZW0sIHNpemVvZihuZ2h0dHAyX291dGJvdW5kX2l0ZW0pKTsKLSAgIGlmIChpdGVtID09IE5V TEwpIHsKLSAgICAgcmV0dXJuIE5HSFRUUDJfRVJSX05PTUVNOwotQEAgLTEyOTAsMTUgKzEyMDAs MTEgQEAgaW50IG5naHR0cDJfc2Vzc2lvbl9hZGRfcnN0X3N0cmVhbShuZ2h0dHAyX3Nlc3Npb24g KnNlc3Npb24sIGludDMyX3Qgc3RyZWFtX2lkLAotIAotIG5naHR0cDJfc3RyZWFtICpuZ2h0dHAy X3Nlc3Npb25fb3Blbl9zdHJlYW0obmdodHRwMl9zZXNzaW9uICpzZXNzaW9uLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBzdHJlYW1faWQsIHVp bnQ4X3QgZmxhZ3MsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBuZ2h0dHAyX3ByaW9yaXR5X3NwZWMgKnByaV9zcGVjX2luLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbmdodHRwMl9zdHJlYW1fc3RhdGUgaW5pdGlhbF9z dGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQg KnN0cmVhbV91c2VyX2RhdGEpIHsKLSAgIGludCBydjsKLSAgIG5naHR0cDJfc3RyZWFtICpzdHJl YW07Ci0tICBuZ2h0dHAyX3N0cmVhbSAqZGVwX3N0cmVhbSA9IE5VTEw7Ci0gICBpbnQgc3RyZWFt X2FsbG9jID0gMDsKLS0gIG5naHR0cDJfcHJpb3JpdHlfc3BlYyBwcmlfc3BlY19kZWZhdWx0Owot LSAgbmdodHRwMl9wcmlvcml0eV9zcGVjICpwcmlfc3BlYyA9IHByaV9zcGVjX2luOwotICAgbmdo dHRwMl9tZW0gKm1lbTsKLSAKLSAgIG1lbSA9ICZzZXNzaW9uLT5tZW07Ci1AQCAtMTMxMSwyMyAr MTIxNyw5IEBAIG5naHR0cDJfc3RyZWFtICpuZ2h0dHAyX3Nlc3Npb25fb3Blbl9zdHJlYW0obmdo dHRwMl9zZXNzaW9uICpzZXNzaW9uLAotIAotICAgaWYgKHN0cmVhbSkgewotICAgICBhc3NlcnQo c3RyZWFtLT5zdGF0ZSA9PSBOR0hUVFAyX1NUUkVBTV9JRExFKTsKLS0gICAgYXNzZXJ0KChzdHJl YW0tPmZsYWdzICYgTkdIVFRQMl9TVFJFQU1fRkxBR19OT19SRkM3NTQwX1BSSU9SSVRJRVMpIHx8 Ci0tICAgICAgICAgICBuZ2h0dHAyX3N0cmVhbV9pbl9kZXBfdHJlZShzdHJlYW0pKTsKLS0KLS0g ICAgbmdodHRwMl9zZXNzaW9uX2RldGFjaF9pZGxlX3N0cmVhbShzZXNzaW9uLCBzdHJlYW0pOwot LQotLSAgICBpZiAobmdodHRwMl9zdHJlYW1faW5fZGVwX3RyZWUoc3RyZWFtKSkgewotLSAgICAg IGFzc2VydCghKHN0cmVhbS0+ZmxhZ3MgJiBOR0hUVFAyX1NUUkVBTV9GTEFHX05PX1JGQzc1NDBf UFJJT1JJVElFUykpOwotKyAgICBhc3NlcnQoaW5pdGlhbF9zdGF0ZSAhPSBOR0hUVFAyX1NUUkVB TV9JRExFKTsKLSAKLS0gICAgICBydiA9IG5naHR0cDJfc3RyZWFtX2RlcF9yZW1vdmUoc3RyZWFt KTsKLS0gICAgICBpZiAocnYgIT0gMCkgewotLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0tICAgICAg fQotLQotLSAgICAgIGlmIChzZXNzaW9uX25vX3JmYzc1NDBfcHJpX25vX2ZhbGxiYWNrKHNlc3Np b24pKSB7Ci0tICAgICAgICBzdHJlYW0tPmZsYWdzIHw9IE5HSFRUUDJfU1RSRUFNX0ZMQUdfTk9f UkZDNzU0MF9QUklPUklUSUVTOwotLSAgICAgIH0KLS0gICAgfQotKyAgICAtLXNlc3Npb24tPm51 bV9pZGxlX3N0cmVhbXM7Ci0gICB9IGVsc2UgewotICAgICBzdHJlYW0gPSBuZ2h0dHAyX21lbV9t YWxsb2MobWVtLCBzaXplb2YobmdodHRwMl9zdHJlYW0pKTsKLSAgICAgaWYgKHN0cmVhbSA9PSBO VUxMKSB7Ci1AQCAtMTMzNyw2OSArMTIyOSwxNiBAQCBuZ2h0dHAyX3N0cmVhbSAqbmdodHRwMl9z ZXNzaW9uX29wZW5fc3RyZWFtKG5naHR0cDJfc2Vzc2lvbiAqc2Vzc2lvbiwKLSAgICAgc3RyZWFt X2FsbG9jID0gMTsKLSAgIH0KLSAKLS0gIGlmIChzZXNzaW9uX25vX3JmYzc1NDBfcHJpX25vX2Zh bGxiYWNrKHNlc3Npb24pIHx8Ci0tICAgICAgc2Vzc2lvbi0+cmVtb3RlX3NldHRpbmdzLm5vX3Jm Yzc1NDBfcHJpb3JpdGllcyA9PSAxKSB7Ci0tICAgIC8qIEZvciBjbGllbnQgd2hpY2ggaGFzIG5v dCByZWNlaXZlZCBzZXJ2ZXIKLS0gICAgICAgU0VUVElOR1NfTk9fUkZDNzU0MF9QUklPUklUSUVT ID0gMSwgc2VuZCBhIHByaW9yaXR5IHNpZ25hbAotLSAgICAgICBvcHBvcnR1bmlzdGljYWxseS4g Ki8KLS0gICAgaWYgKHNlc3Npb24tPnNlcnZlciB8fAotLSAgICAgICAgc2Vzc2lvbi0+cmVtb3Rl X3NldHRpbmdzLm5vX3JmYzc1NDBfcHJpb3JpdGllcyA9PSAxKSB7Ci0tICAgICAgbmdodHRwMl9w cmlvcml0eV9zcGVjX2RlZmF1bHRfaW5pdCgmcHJpX3NwZWNfZGVmYXVsdCk7Ci0tICAgICAgcHJp X3NwZWMgPSAmcHJpX3NwZWNfZGVmYXVsdDsKLS0gICAgfQotLQotLSAgICBpZiAoc2Vzc2lvbi0+ cGVuZGluZ19ub19yZmM3NTQwX3ByaW9yaXRpZXMgPT0gMSkgewotLSAgICAgIGZsYWdzIHw9IE5H SFRUUDJfU1RSRUFNX0ZMQUdfTk9fUkZDNzU0MF9QUklPUklUSUVTOwotLSAgICB9Ci0tICB9IGVs c2UgaWYgKHByaV9zcGVjLT5zdHJlYW1faWQgIT0gMCkgewotLSAgICBkZXBfc3RyZWFtID0gbmdo dHRwMl9zZXNzaW9uX2dldF9zdHJlYW1fcmF3KHNlc3Npb24sIHByaV9zcGVjLT5zdHJlYW1faWQp OwotLQotLSAgICBpZiAoIWRlcF9zdHJlYW0gJiYKLS0gICAgICAgIHNlc3Npb25fZGV0ZWN0X2lk bGVfc3RyZWFtKHNlc3Npb24sIHByaV9zcGVjLT5zdHJlYW1faWQpKSB7Ci0tICAgICAgLyogRGVw ZW5kcyBvbiBpZGxlIHN0cmVhbSwgd2hpY2ggZG9lcyBub3QgZXhpc3QgaW4gbWVtb3J5LgotLSAg ICAgICAgIEFzc2lnbiBkZWZhdWx0IHByaW9yaXR5IGZvciBpdC4gKi8KLS0gICAgICBuZ2h0dHAy X3ByaW9yaXR5X3NwZWNfZGVmYXVsdF9pbml0KCZwcmlfc3BlY19kZWZhdWx0KTsKLS0KLS0gICAg ICBkZXBfc3RyZWFtID0gbmdodHRwMl9zZXNzaW9uX29wZW5fc3RyZWFtKAotLSAgICAgICAgc2Vz c2lvbiwgcHJpX3NwZWMtPnN0cmVhbV9pZCwgTkdIVFRQMl9GTEFHX05PTkUsICZwcmlfc3BlY19k ZWZhdWx0LAotLSAgICAgICAgTkdIVFRQMl9TVFJFQU1fSURMRSwgTlVMTCk7Ci0tCi0tICAgICAg aWYgKGRlcF9zdHJlYW0gPT0gTlVMTCkgewotLSAgICAgICAgaWYgKHN0cmVhbV9hbGxvYykgewot LSAgICAgICAgICBuZ2h0dHAyX21lbV9mcmVlKG1lbSwgc3RyZWFtKTsKLS0gICAgICAgIH0KLS0K LS0gICAgICAgIHJldHVybiBOVUxMOwotLSAgICAgIH0KLS0gICAgfSBlbHNlIGlmICghZGVwX3N0 cmVhbSB8fCAhbmdodHRwMl9zdHJlYW1faW5fZGVwX3RyZWUoZGVwX3N0cmVhbSkpIHsKLS0gICAg ICAvKiBJZiBkZXBfc3RyZWFtIGlzIG5vdCBwYXJ0IG9mIGRlcGVuZGVuY3kgdHJlZSwgc3RyZWFt IHdpbGwgZ2V0Ci0tICAgICAgICAgZGVmYXVsdCBwcmlvcml0eS4gIFRoaXMgaGFuZGxlcyB0aGUg Y2FzZSB3aGVuCi0tICAgICAgICAgcHJpX3NwZWMtPnN0cmVhbV9pZCA9PSBzdHJlYW1faWQuICBU aGlzIGhhcHBlbnMgYmVjYXVzZSB3ZQotLSAgICAgICAgIGRvbid0IGNoZWNrIHByaV9zcGVjLT5z dHJlYW1faWQgYWdhaW5zdCBuZXcgc3RyZWFtIElEIGluCi0tICAgICAgICAgbmdodHRwMl9zdWJt aXRfcmVxdWVzdC4gIFRoaXMgYWxzbyBoYW5kbGVzIHRoZSBjYXNlIHdoZW4gaWRsZQotLSAgICAg ICAgIHN0cmVhbSBjcmVhdGVkIGJ5IFBSSU9SSVRZIGZyYW1lIHdhcyBvcGVuZWQuICBTb21laG93 IHdlCi0tICAgICAgICAgZmlyc3QgcmVtb3ZlIHRoZSBpZGxlIHN0cmVhbSBmcm9tIGRlcGVuZGVu Y3kgdHJlZS4gIFRoaXMgaXMKLS0gICAgICAgICBkb25lIHRvIHNpbXBsaWZ5IGNvZGUgYmFzZSwg YnV0IGlkZWFsbHkgd2Ugc2hvdWxkIHJldGFpbiBvbGQKLS0gICAgICAgICBkZXBlbmRlbmN5LiAg QnV0IEknbSBub3Qgc3VyZSB0aGlzIGFkZHMgdmFsdWVzLiAqLwotLSAgICAgIG5naHR0cDJfcHJp b3JpdHlfc3BlY19kZWZhdWx0X2luaXQoJnByaV9zcGVjX2RlZmF1bHQpOwotLSAgICAgIHByaV9z cGVjID0gJnByaV9zcGVjX2RlZmF1bHQ7Ci0tICAgIH0KLS0gIH0KLS0KLSAgIGlmIChpbml0aWFs X3N0YXRlID09IE5HSFRUUDJfU1RSRUFNX1JFU0VSVkVEKSB7Ci0gICAgIGZsYWdzIHw9IE5HSFRU UDJfU1RSRUFNX0ZMQUdfUFVTSDsKLSAgIH0KLSAKLSAgIGlmIChzdHJlYW1fYWxsb2MpIHsKLSAg ICAgbmdodHRwMl9zdHJlYW1faW5pdChzdHJlYW0sIHN0cmVhbV9pZCwgZmxhZ3MsIGluaXRpYWxf c3RhdGUsCi0tICAgICAgICAgICAgICAgICAgICAgICAgcHJpX3NwZWMtPndlaWdodCwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAoaW50MzJfdClzZXNzaW9uLT5yZW1vdGVfc2V0dGluZ3MuaW5p dGlhbF93aW5kb3dfc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAoaW50MzJfdClzZXNz aW9uLT5sb2NhbF9zZXR0aW5ncy5pbml0aWFsX3dpbmRvd19zaXplLAotLSAgICAgICAgICAgICAg ICAgICAgICAgIHN0cmVhbV91c2VyX2RhdGEsIG1lbSk7Ci0tCi0tICAgIGlmIChzZXNzaW9uX25v X3JmYzc1NDBfcHJpX25vX2ZhbGxiYWNrKHNlc3Npb24pKSB7Ci0tICAgICAgc3RyZWFtLT5zZXEg PSBzZXNzaW9uLT5zdHJlYW1fc2VxKys7Ci0tICAgIH0KLSsgICAgICAgICAgICAgICAgICAgICAg ICBzdHJlYW1fdXNlcl9kYXRhKTsKLSsgICAgc3RyZWFtLT5zZXEgPSBzZXNzaW9uLT5zdHJlYW1f c2VxKys7Ci0gCi0gICAgIHJ2ID0gbmdodHRwMl9tYXBfaW5zZXJ0KCZzZXNzaW9uLT5zdHJlYW1z LCBzdHJlYW1faWQsIHN0cmVhbSk7Ci0gICAgIGlmIChydiAhPSAwKSB7Ci1AQCAtMTQxMCw3ICsx MjQ5LDYgQEAgbmdodHRwMl9zdHJlYW0gKm5naHR0cDJfc2Vzc2lvbl9vcGVuX3N0cmVhbShuZ2h0 dHAyX3Nlc3Npb24gKnNlc3Npb24sCi0gICB9IGVsc2UgewotICAgICBzdHJlYW0tPmZsYWdzID0g ZmxhZ3M7Ci0gICAgIHN0cmVhbS0+c3RhdGUgPSBpbml0aWFsX3N0YXRlOwotLSAgICBzdHJlYW0t PndlaWdodCA9IHByaV9zcGVjLT53ZWlnaHQ7Ci0gICAgIHN0cmVhbS0+c3RyZWFtX3VzZXJfZGF0 YSA9IHN0cmVhbV91c2VyX2RhdGE7Ci0gICB9Ci0gCi1AQCAtMTQyOCw5ICsxMjY2LDcgQEAgbmdo dHRwMl9zdHJlYW0gKm5naHR0cDJfc2Vzc2lvbl9vcGVuX3N0cmVhbShuZ2h0dHAyX3Nlc3Npb24g KnNlc3Npb24sCi0gICAgICAgIGxpbWl0LiBUaGF0IGlzIG9uZSBvZiB0aGUgRE9TIHZlY3Rvci4g Ki8KLSAgICAgYnJlYWs7Ci0gICBjYXNlIE5HSFRUUDJfU1RSRUFNX0lETEU6Ci0tICAgIC8qIElk bGUgc3RyZWFtIGRvZXMgbm90IGNvdW50IHRvd2FyZCB0aGUgY29uY3VycmVudCBzdHJlYW1zIGxp bWl0LgotLSAgICAgICBUaGlzIGlzIHVzZWQgYXMgYW5jaG9yIG5vZGUgaW4gZGVwZW5kZW5jeSB0 cmVlLiAqLwotLSAgICBuZ2h0dHAyX3Nlc3Npb25fa2VlcF9pZGxlX3N0cmVhbShzZXNzaW9uLCBz dHJlYW0pOwotKyAgICArK3Nlc3Npb24tPm51bV9pZGxlX3N0cmVhbXM7Ci0gICAgIGJyZWFrOwot ICAgZGVmYXVsdDoKLSAgICAgaWYgKG5naHR0cDJfc2Vzc2lvbl9pc19teV9zdHJlYW1faWQoc2Vz c2lvbiwgc3RyZWFtX2lkKSkgewotQEAgLTE0NDAsMzEgKzEyNzYsMTEgQEAgbmdodHRwMl9zdHJl YW0gKm5naHR0cDJfc2Vzc2lvbl9vcGVuX3N0cmVhbShuZ2h0dHAyX3Nlc3Npb24gKnNlc3Npb24s Ci0gICAgIH0KLSAgIH0KLSAKLS0gIGlmIChzdHJlYW0tPmZsYWdzICYgTkdIVFRQMl9TVFJFQU1f RkxBR19OT19SRkM3NTQwX1BSSU9SSVRJRVMpIHsKLS0gICAgcmV0dXJuIHN0cmVhbTsKLS0gIH0K LS0KLS0gIGlmIChwcmlfc3BlYy0+c3RyZWFtX2lkID09IDApIHsKLS0gICAgZGVwX3N0cmVhbSA9 ICZzZXNzaW9uLT5yb290OwotLSAgfQotLQotLSAgYXNzZXJ0KGRlcF9zdHJlYW0pOwotLQotLSAg aWYgKHByaV9zcGVjLT5leGNsdXNpdmUpIHsKLS0gICAgcnYgPSBuZ2h0dHAyX3N0cmVhbV9kZXBf aW5zZXJ0KGRlcF9zdHJlYW0sIHN0cmVhbSk7Ci0tICAgIGlmIChydiAhPSAwKSB7Ci0tICAgICAg cmV0dXJuIE5VTEw7Ci0tICAgIH0KLS0gIH0gZWxzZSB7Ci0tICAgIG5naHR0cDJfc3RyZWFtX2Rl cF9hZGQoZGVwX3N0cmVhbSwgc3RyZWFtKTsKLS0gIH0KLS0KLSAgIHJldHVybiBzdHJlYW07Ci0g fQotIAotIGludCBuZ2h0dHAyX3Nlc3Npb25fY2xvc2Vfc3RyZWFtKG5naHR0cDJfc2Vzc2lvbiAq c2Vzc2lvbiwgaW50MzJfdCBzdHJlYW1faWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdWludDMyX3QgZXJyb3JfY29kZSkgewotLSAgaW50IHJ2OwotICAgbmdodHRwMl9zdHJl YW0gKnN0cmVhbTsKLSAgIG5naHR0cDJfbWVtICptZW07Ci0gICBpbnQgaXNfbXlfc3RyZWFtX2lk OwotQEAgLTE1MjgsMjA3ICsxMzQ0LDI2IEBAIGludCBuZ2h0dHAyX3Nlc3Npb25fY2xvc2Vfc3Ry ZWFtKG5naHR0cDJfc2Vzc2lvbiAqc2Vzc2lvbiwgaW50MzJfdCBzdHJlYW1faWQsCi0gICAvKiBD bG9zZXMgYm90aCBkaXJlY3Rpb25zIGp1c3QgaW4gY2FzZSB0aGV5IGFyZSBub3QgY2xvc2VkIHll dCAqLwotICAgc3RyZWFtLT5mbGFncyB8PSBOR0hUVFAyX1NUUkVBTV9GTEFHX0NMT1NFRDsKLSAK LS0gIGlmIChzZXNzaW9uLT5wZW5kaW5nX25vX3JmYzc1NDBfcHJpb3JpdGllcyA9PSAxKSB7Ci0t ICAgIHJldHVybiBuZ2h0dHAyX3Nlc3Npb25fZGVzdHJveV9zdHJlYW0oc2Vzc2lvbiwgc3RyZWFt KTsKLS0gIH0KLS0KLS0gIGlmICgoc2Vzc2lvbi0+b3B0X2ZsYWdzICYgTkdIVFRQMl9PUFRNQVNL X05PX0NMT1NFRF9TVFJFQU1TKSA9PSAwICYmCi0tICAgICAgc2Vzc2lvbi0+c2VydmVyICYmICFp c19teV9zdHJlYW1faWQgJiYKLS0gICAgICBuZ2h0dHAyX3N0cmVhbV9pbl9kZXBfdHJlZShzdHJl YW0pKSB7Ci0tICAgIC8qIE9uIHNlcnZlciBzaWRlLCByZXRhaW4gc3RyZWFtIGF0IG1vc3QgTUFY X0NPTkNVUlJFTlRfU1RSRUFNUwotLSAgICAgICBjb21iaW5lZCB3aXRoIHRoZSBjdXJyZW50IGFj dGl2ZSBpbmNvbWluZyBzdHJlYW1zIHRvIG1ha2UKLS0gICAgICAgZGVwZW5kZW5jeSB0cmVlIHdv cmsgYmV0dGVyLiAqLwotLSAgICBuZ2h0dHAyX3Nlc3Npb25fa2VlcF9jbG9zZWRfc3RyZWFtKHNl c3Npb24sIHN0cmVhbSk7Ci0tICB9IGVsc2UgewotLSAgICBydiA9IG5naHR0cDJfc2Vzc2lvbl9k ZXN0cm95X3N0cmVhbShzZXNzaW9uLCBzdHJlYW0pOwotLSAgICBpZiAocnYgIT0gMCkgewotLSAg ICAgIHJldHVybiBydjsKLS0gICAgfQotLSAgfQotKyAgbmdodHRwMl9zZXNzaW9uX2Rlc3Ryb3lf c3RyZWFtKHNlc3Npb24sIHN0cmVhbSk7Ci0gCi0gICByZXR1cm4gMDsKLSB9Ci0gCi0taW50IG5n aHR0cDJfc2Vzc2lvbl9kZXN0cm95X3N0cmVhbShuZ2h0dHAyX3Nlc3Npb24gKnNlc3Npb24sCi0t ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZ2h0dHAyX3N0cmVhbSAqc3RyZWFt KSB7Ci0rdm9pZCBuZ2h0dHAyX3Nlc3Npb25fZGVzdHJveV9zdHJlYW0obmdodHRwMl9zZXNzaW9u ICpzZXNzaW9uLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5naHR0cDJf c3RyZWFtICpzdHJlYW0pIHsKLSAgIG5naHR0cDJfbWVtICptZW07Ci0tICBpbnQgcnY7Ci0gCi0g ICBERUJVR0YoInN0cmVhbTogZGVzdHJveSBjbG9zZWQgc3RyZWFtKCVwKT0lZFxuIiwgc3RyZWFt LCBzdHJlYW0tPnN0cmVhbV9pZCk7Ci0gCi0gICBtZW0gPSAmc2Vzc2lvbi0+bWVtOwotIAotLSAg aWYgKG5naHR0cDJfc3RyZWFtX2luX2RlcF90cmVlKHN0cmVhbSkpIHsKLS0gICAgcnYgPSBuZ2h0 dHAyX3N0cmVhbV9kZXBfcmVtb3ZlKHN0cmVhbSk7Ci0tICAgIGlmIChydiAhPSAwKSB7Ci0tICAg ICAgcmV0dXJuIHJ2OwotLSAgICB9Ci0tICB9Ci0tCi0tICBpZiAoc3RyZWFtLT5xdWV1ZWQgJiYK LS0gICAgICAoc3RyZWFtLT5mbGFncyAmIE5HSFRUUDJfU1RSRUFNX0ZMQUdfTk9fUkZDNzU0MF9Q UklPUklUSUVTKSkgewotKyAgaWYgKHN0cmVhbS0+cXVldWVkKSB7Ci0gICAgIHNlc3Npb25fb2Jf ZGF0YV9yZW1vdmUoc2Vzc2lvbiwgc3RyZWFtKTsKLSAgIH0KLSAKLSAgIG5naHR0cDJfbWFwX3Jl bW92ZSgmc2Vzc2lvbi0+c3RyZWFtcywgc3RyZWFtLT5zdHJlYW1faWQpOwotICAgbmdodHRwMl9z dHJlYW1fZnJlZShzdHJlYW0pOwotICAgbmdodHRwMl9tZW1fZnJlZShtZW0sIHN0cmVhbSk7Ci0t Ci0tICByZXR1cm4gMDsKLS19Ci0tCi0tdm9pZCBuZ2h0dHAyX3Nlc3Npb25fa2VlcF9jbG9zZWRf c3RyZWFtKG5naHR0cDJfc2Vzc2lvbiAqc2Vzc2lvbiwKLS0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbmdodHRwMl9zdHJlYW0gKnN0cmVhbSkgewotLSAgREVCVUdGKCJz dHJlYW06IGtlZXAgY2xvc2VkIHN0cmVhbSglcCk9JWQsIHN0YXRlPSVkXG4iLCBzdHJlYW0sCi0t ICAgICAgICAgc3RyZWFtLT5zdHJlYW1faWQsIHN0cmVhbS0+c3RhdGUpOwotLQotLSAgaWYgKHNl c3Npb24tPmNsb3NlZF9zdHJlYW1fdGFpbCkgewotLSAgICBzZXNzaW9uLT5jbG9zZWRfc3RyZWFt X3RhaWwtPmNsb3NlZF9uZXh0ID0gc3RyZWFtOwotLSAgICBzdHJlYW0tPmNsb3NlZF9wcmV2ID0g c2Vzc2lvbi0+Y2xvc2VkX3N0cmVhbV90YWlsOwotLSAgfSBlbHNlIHsKLS0gICAgc2Vzc2lvbi0+ Y2xvc2VkX3N0cmVhbV9oZWFkID0gc3RyZWFtOwotLSAgfQotLSAgc2Vzc2lvbi0+Y2xvc2VkX3N0 cmVhbV90YWlsID0gc3RyZWFtOwotLQotLSAgKytzZXNzaW9uLT5udW1fY2xvc2VkX3N0cmVhbXM7 Ci0tfQotLQotLXZvaWQgbmdodHRwMl9zZXNzaW9uX2tlZXBfaWRsZV9zdHJlYW0obmdodHRwMl9z ZXNzaW9uICpzZXNzaW9uLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg bmdodHRwMl9zdHJlYW0gKnN0cmVhbSkgewotLSAgREVCVUdGKCJzdHJlYW06IGtlZXAgaWRsZSBz dHJlYW0oJXApPSVkLCBzdGF0ZT0lZFxuIiwgc3RyZWFtLAotLSAgICAgICAgIHN0cmVhbS0+c3Ry ZWFtX2lkLCBzdHJlYW0tPnN0YXRlKTsKLS0KLS0gIGlmIChzZXNzaW9uLT5pZGxlX3N0cmVhbV90 YWlsKSB7Ci0tICAgIHNlc3Npb24tPmlkbGVfc3RyZWFtX3RhaWwtPmNsb3NlZF9uZXh0ID0gc3Ry ZWFtOwotLSAgICBzdHJlYW0tPmNsb3NlZF9wcmV2ID0gc2Vzc2lvbi0+aWRsZV9zdHJlYW1fdGFp bDsKLS0gIH0gZWxzZSB7Ci0tICAgIHNlc3Npb24tPmlkbGVfc3RyZWFtX2hlYWQgPSBzdHJlYW07 Ci0tICB9Ci0tICBzZXNzaW9uLT5pZGxlX3N0cmVhbV90YWlsID0gc3RyZWFtOwotLQotLSAgKytz ZXNzaW9uLT5udW1faWRsZV9zdHJlYW1zOwotLX0KLS0KLS12b2lkIG5naHR0cDJfc2Vzc2lvbl9k ZXRhY2hfaWRsZV9zdHJlYW0obmdodHRwMl9zZXNzaW9uICpzZXNzaW9uLAotLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZ2h0dHAyX3N0cmVhbSAqc3RyZWFtKSB7Ci0t ICBuZ2h0dHAyX3N0cmVhbSAqcHJldl9zdHJlYW0sICpuZXh0X3N0cmVhbTsKLS0KLS0gIERFQlVH Rigic3RyZWFtOiBkZXRhY2ggaWRsZSBzdHJlYW0oJXApPSVkLCBzdGF0ZT0lZFxuIiwgc3RyZWFt LAotLSAgICAgICAgIHN0cmVhbS0+c3RyZWFtX2lkLCBzdHJlYW0tPnN0YXRlKTsKLS0KLS0gIHBy ZXZfc3RyZWFtID0gc3RyZWFtLT5jbG9zZWRfcHJldjsKLS0gIG5leHRfc3RyZWFtID0gc3RyZWFt LT5jbG9zZWRfbmV4dDsKLS0KLS0gIGlmIChwcmV2X3N0cmVhbSkgewotLSAgICBwcmV2X3N0cmVh bS0+Y2xvc2VkX25leHQgPSBuZXh0X3N0cmVhbTsKLS0gIH0gZWxzZSB7Ci0tICAgIHNlc3Npb24t PmlkbGVfc3RyZWFtX2hlYWQgPSBuZXh0X3N0cmVhbTsKLS0gIH0KLS0KLS0gIGlmIChuZXh0X3N0 cmVhbSkgewotLSAgICBuZXh0X3N0cmVhbS0+Y2xvc2VkX3ByZXYgPSBwcmV2X3N0cmVhbTsKLS0g IH0gZWxzZSB7Ci0tICAgIHNlc3Npb24tPmlkbGVfc3RyZWFtX3RhaWwgPSBwcmV2X3N0cmVhbTsK LS0gIH0KLS0KLS0gIHN0cmVhbS0+Y2xvc2VkX3ByZXYgPSBOVUxMOwotLSAgc3RyZWFtLT5jbG9z ZWRfbmV4dCA9IE5VTEw7Ci0tCi0tICAtLXNlc3Npb24tPm51bV9pZGxlX3N0cmVhbXM7Ci0tfQot LQotLWludCBuZ2h0dHAyX3Nlc3Npb25fYWRqdXN0X2Nsb3NlZF9zdHJlYW0obmdodHRwMl9zZXNz aW9uICpzZXNzaW9uKSB7Ci0tICBzaXplX3QgbnVtX3N0cmVhbV9tYXg7Ci0tICBpbnQgcnY7Ci0t Ci0tICBpZiAoc2Vzc2lvbi0+bG9jYWxfc2V0dGluZ3MubWF4X2NvbmN1cnJlbnRfc3RyZWFtcyA9 PQotLSAgICAgIE5HSFRUUDJfREVGQVVMVF9NQVhfQ09OQ1VSUkVOVF9TVFJFQU1TKSB7Ci0tICAg IG51bV9zdHJlYW1fbWF4ID0gc2Vzc2lvbi0+cGVuZGluZ19sb2NhbF9tYXhfY29uY3VycmVudF9z dHJlYW07Ci0tICB9IGVsc2UgewotLSAgICBudW1fc3RyZWFtX21heCA9IHNlc3Npb24tPmxvY2Fs X3NldHRpbmdzLm1heF9jb25jdXJyZW50X3N0cmVhbXM7Ci0tICB9Ci0tCi0tICBERUJVR0YoInN0 cmVhbTogYWRqdXN0aW5nIGtlcHQgY2xvc2VkIHN0cmVhbXMgbnVtX2Nsb3NlZF9zdHJlYW1zPSV6 dSwgIgotLSAgICAgICAgICJudW1faW5jb21pbmdfc3RyZWFtcz0lenUsIG1heF9jb25jdXJyZW50 X3N0cmVhbXM9JXp1XG4iLAotLSAgICAgICAgIHNlc3Npb24tPm51bV9jbG9zZWRfc3RyZWFtcywg c2Vzc2lvbi0+bnVtX2luY29taW5nX3N0cmVhbXMsCi0tICAgICAgICAgbnVtX3N0cmVhbV9tYXgp OwotLQotLSAgd2hpbGUgKHNlc3Npb24tPm51bV9jbG9zZWRfc3RyZWFtcyA+IDAgJiYKLS0gICAg ICAgICBzZXNzaW9uLT5udW1fY2xvc2VkX3N0cmVhbXMgKyBzZXNzaW9uLT5udW1faW5jb21pbmdf c3RyZWFtcyA+Ci0tICAgICAgICAgICBudW1fc3RyZWFtX21heCkgewotLSAgICBuZ2h0dHAyX3N0 cmVhbSAqaGVhZF9zdHJlYW07Ci0tICAgIG5naHR0cDJfc3RyZWFtICpuZXh0OwotLQotLSAgICBo ZWFkX3N0cmVhbSA9IHNlc3Npb24tPmNsb3NlZF9zdHJlYW1faGVhZDsKLS0KLS0gICAgYXNzZXJ0 KGhlYWRfc3RyZWFtKTsKLS0KLS0gICAgbmV4dCA9IGhlYWRfc3RyZWFtLT5jbG9zZWRfbmV4dDsK LS0KLS0gICAgcnYgPSBuZ2h0dHAyX3Nlc3Npb25fZGVzdHJveV9zdHJlYW0oc2Vzc2lvbiwgaGVh ZF9zdHJlYW0pOwotLSAgICBpZiAocnYgIT0gMCkgewotLSAgICAgIHJldHVybiBydjsKLS0gICAg fQotLQotLSAgICAvKiBoZWFkX3N0cmVhbSBpcyBub3cgZnJlZWQgKi8KLS0KLS0gICAgc2Vzc2lv bi0+Y2xvc2VkX3N0cmVhbV9oZWFkID0gbmV4dDsKLS0KLS0gICAgaWYgKHNlc3Npb24tPmNsb3Nl ZF9zdHJlYW1faGVhZCkgewotLSAgICAgIHNlc3Npb24tPmNsb3NlZF9zdHJlYW1faGVhZC0+Y2xv c2VkX3ByZXYgPSBOVUxMOwotLSAgICB9IGVsc2UgewotLSAgICAgIHNlc3Npb24tPmNsb3NlZF9z dHJlYW1fdGFpbCA9IE5VTEw7Ci0tICAgIH0KLS0KLS0gICAgLS1zZXNzaW9uLT5udW1fY2xvc2Vk X3N0cmVhbXM7Ci0tICB9Ci0tCi0tICByZXR1cm4gMDsKLS19Ci0tCi0taW50IG5naHR0cDJfc2Vz c2lvbl9hZGp1c3RfaWRsZV9zdHJlYW0obmdodHRwMl9zZXNzaW9uICpzZXNzaW9uKSB7Ci0tICBz aXplX3QgbWF4OwotLSAgaW50IHJ2OwotLQotLSAgLyogTWFrZSBtaW5pbXVtIG51bWJlciBvZiBp ZGxlIHN0cmVhbXMgMTYsIGFuZCBtYXhpbXVtIDEwMCwgd2hpY2gKLS0gICAgIGFyZSBhcmJpdHJh cnkgY2hvc2VuIG51bWJlcnMuICovCi0tICBtYXggPSBuZ2h0dHAyX21pbl91aW50MzIoCi0tICAg IDEwMCwKLS0gICAgbmdodHRwMl9tYXhfdWludDMyKAotLSAgICAgIDE2LCBuZ2h0dHAyX21pbl91 aW50MzIoc2Vzc2lvbi0+bG9jYWxfc2V0dGluZ3MubWF4X2NvbmN1cnJlbnRfc3RyZWFtcywKLS0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb24tPnBlbmRpbmdfbG9jYWxfbWF4X2Nv bmN1cnJlbnRfc3RyZWFtKSkpOwotLQotLSAgREVCVUdGKCJzdHJlYW06IGFkanVzdGluZyBrZXB0 IGlkbGUgc3RyZWFtcyBudW1faWRsZV9zdHJlYW1zPSV6dSwgbWF4PSV6dVxuIiwKLS0gICAgICAg ICBzZXNzaW9uLT5udW1faWRsZV9zdHJlYW1zLCBtYXgpOwotLQotLSAgd2hpbGUgKHNlc3Npb24t Pm51bV9pZGxlX3N0cmVhbXMgPiBtYXgpIHsKLS0gICAgbmdodHRwMl9zdHJlYW0gKmhlYWQ7Ci0t ICAgIG5naHR0cDJfc3RyZWFtICpuZXh0OwotLQotLSAgICBoZWFkID0gc2Vzc2lvbi0+aWRsZV9z dHJlYW1faGVhZDsKLS0gICAgYXNzZXJ0KGhlYWQpOwotLQotLSAgICBuZXh0ID0gaGVhZC0+Y2xv c2VkX25leHQ7Ci0tCi0tICAgIHJ2ID0gbmdodHRwMl9zZXNzaW9uX2Rlc3Ryb3lfc3RyZWFtKHNl c3Npb24sIGhlYWQpOwotLSAgICBpZiAocnYgIT0gMCkgewotLSAgICAgIHJldHVybiBydjsKLS0g ICAgfQotLQotLSAgICAvKiBoZWFkIGlzIG5vdyBkZXN0cm95ZWQgKi8KLS0KLS0gICAgc2Vzc2lv bi0+aWRsZV9zdHJlYW1faGVhZCA9IG5leHQ7Ci0tCi0tICAgIGlmIChzZXNzaW9uLT5pZGxlX3N0 cmVhbV9oZWFkKSB7Ci0tICAgICAgc2Vzc2lvbi0+aWRsZV9zdHJlYW1faGVhZC0+Y2xvc2VkX3By ZXYgPSBOVUxMOwotLSAgICB9IGVsc2UgewotLSAgICAgIHNlc3Npb24tPmlkbGVfc3RyZWFtX3Rh aWwgPSBOVUxMOwotLSAgICB9Ci0tCi0tICAgIC0tc2Vzc2lvbi0+bnVtX2lkbGVfc3RyZWFtczsK LS0gIH0KLS0KLS0gIHJldHVybiAwOwotIH0KLSAKLSAvKgotQEAgLTI0MTEsMTYgKzIwNDYsMTIg QEAgc3RhdGljIGludCBzZXNzaW9uX3ByZXBfZnJhbWUobmdodHRwMl9zZXNzaW9uICpzZXNzaW9u LAotIAotICAgICAgIHN0cmVhbSA9IG5naHR0cDJfc2Vzc2lvbl9vcGVuX3N0cmVhbSgKLSAgICAg ICAgIHNlc3Npb24sIGZyYW1lLT5oZC5zdHJlYW1faWQsIE5HSFRUUDJfU1RSRUFNX0ZMQUdfTk9O RSwKLS0gICAgICAgICZmcmFtZS0+aGVhZGVycy5wcmlfc3BlYywgTkdIVFRQMl9TVFJFQU1fSU5J VElBTCwKLS0gICAgICAgIGF1eF9kYXRhLT5zdHJlYW1fdXNlcl9kYXRhKTsKLSsgICAgICAgIE5H SFRUUDJfU1RSRUFNX0lOSVRJQUwsIGF1eF9kYXRhLT5zdHJlYW1fdXNlcl9kYXRhKTsKLSAKLSAg ICAgICBpZiAoc3RyZWFtID09IE5VTEwpIHsKLSAgICAgICAgIHJldHVybiBOR0hUVFAyX0VSUl9O T01FTTsKLSAgICAgICB9Ci0gCi0tICAgICAgLyogV2UgZG9uJ3QgY2FsbCBuZ2h0dHAyX3Nlc3Np b25fYWRqdXN0X2Nsb3NlZF9zdHJlYW0oKSBoZXJlLAotLSAgICAgICAgIHNpbmNlIHdlIGRvbid0 IGtlZXAgY2xvc2VkIHN0cmVhbSBpbiBjbGllbnQgc2lkZSAqLwotLQotICAgICAgIHJ2ID0gc2Vz c2lvbl9wcmVkaWNhdGVfcmVxdWVzdF9oZWFkZXJzX3NlbmQoc2Vzc2lvbiwgaXRlbSk7Ci0gICAg ICAgaWYgKHJ2ICE9IDApIHsKLSAgICAgICAgIHJldHVybiBydjsKLUBAIC0yNjYyLDggKzIyOTMs NiBAQCBzdGF0aWMgaW50IHNlc3Npb25fcHJlcF9mcmFtZShuZ2h0dHAyX3Nlc3Npb24gKnNlc3Np b24sCi0gCi0gbmdodHRwMl9vdXRib3VuZF9pdGVtICoKLSBuZ2h0dHAyX3Nlc3Npb25fZ2V0X25l eHRfb2JfaXRlbShuZ2h0dHAyX3Nlc3Npb24gKnNlc3Npb24pIHsKLS0gIG5naHR0cDJfb3V0Ym91 bmRfaXRlbSAqaXRlbTsKLS0KLSAgIGlmIChuZ2h0dHAyX291dGJvdW5kX3F1ZXVlX3RvcCgmc2Vz c2lvbi0+b2JfdXJnZW50KSkgewotICAgICByZXR1cm4gbmdodHRwMl9vdXRib3VuZF9xdWV1ZV90 b3AoJnNlc3Npb24tPm9iX3VyZ2VudCk7Ci0gICB9Ci1AQCAtMjY3OSwxMSArMjMwOCw2IEBAIG5n aHR0cDJfc2Vzc2lvbl9nZXRfbmV4dF9vYl9pdGVtKG5naHR0cDJfc2Vzc2lvbiAqc2Vzc2lvbikg ewotICAgfQotIAotICAgaWYgKHNlc3Npb24tPnJlbW90ZV93aW5kb3dfc2l6ZSA+IDApIHsKLS0g ICAgaXRlbSA9IG5naHR0cDJfc3RyZWFtX25leHRfb3V0Ym91bmRfaXRlbSgmc2Vzc2lvbi0+cm9v dCk7Ci0tICAgIGlmIChpdGVtKSB7Ci0tICAgICAgcmV0dXJuIGl0ZW07Ci0tICAgIH0KLS0KLSAg ICAgcmV0dXJuIHNlc3Npb25fc2NoZWRfZ2V0X25leHRfb3V0Ym91bmRfaXRlbShzZXNzaW9uKTsK LSAgIH0KLSAKLUBAIC0yNzE4LDExICsyMzQyLDYgQEAgbmdodHRwMl9zZXNzaW9uX3BvcF9uZXh0 X29iX2l0ZW0obmdodHRwMl9zZXNzaW9uICpzZXNzaW9uKSB7Ci0gICB9Ci0gCi0gICBpZiAoc2Vz c2lvbi0+cmVtb3RlX3dpbmRvd19zaXplID4gMCkgewotLSAgICBpdGVtID0gbmdodHRwMl9zdHJl YW1fbmV4dF9vdXRib3VuZF9pdGVtKCZzZXNzaW9uLT5yb290KTsKLS0gICAgaWYgKGl0ZW0pIHsK LS0gICAgICByZXR1cm4gaXRlbTsKLS0gICAgfQotLQotICAgICByZXR1cm4gc2Vzc2lvbl9zY2hl ZF9nZXRfbmV4dF9vdXRib3VuZF9pdGVtKHNlc3Npb24pOwotICAgfQotIAotQEAgLTI3ODEsNyAr MjQwMCw2IEBAIHN0YXRpYyBpbnQgZmluZF9zdHJlYW1fb25fZ29hd2F5X2Z1bmModm9pZCAqZW50 cnksIHZvaWQgKnB0cikgewotICAgICAgICBuZ2h0dHAyX3Nlc3Npb25fY2xvc2Vfc3RyZWFtKCkg aW5zaWRlIG5naHR0cDJfbWFwX2VhY2goKS4KLSAgICAgICAgUmV1c2UgY2xvc2VkX25leHQgbWVt YmVyLi4gYmFkIGNob2ljZT8gKi8KLSAgICAgYXNzZXJ0KHN0cmVhbS0+Y2xvc2VkX25leHQgPT0g TlVMTCk7Ci0tICAgIGFzc2VydChzdHJlYW0tPmNsb3NlZF9wcmV2ID09IE5VTEwpOwotIAotICAg ICBpZiAoYXJnLT5oZWFkKSB7Ci0gICAgICAgc3RyZWFtLT5jbG9zZWRfbmV4dCA9IGFyZy0+aGVh ZDsKLUBAIC0yODM3LDExICsyNDU1LDYgQEAgc3RhdGljIHZvaWQgc2Vzc2lvbl9yZXNjaGVkdWxl X3N0cmVhbShuZ2h0dHAyX3Nlc3Npb24gKnNlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBuZ2h0dHAyX3N0cmVhbSAqc3RyZWFtKSB7Ci0gICBzdHJlYW0tPmxh c3Rfd3JpdGVsZW4gPSBzdHJlYW0tPml0ZW0tPmZyYW1lLmhkLmxlbmd0aDsKLSAKLS0gIGlmICgh KHN0cmVhbS0+ZmxhZ3MgJiBOR0hUVFAyX1NUUkVBTV9GTEFHX05PX1JGQzc1NDBfUFJJT1JJVElF UykpIHsKLS0gICAgbmdodHRwMl9zdHJlYW1fcmVzY2hlZHVsZShzdHJlYW0pOwotLSAgICByZXR1 cm47Ci0tICB9Ci0tCi0gICBpZiAoIXNlc3Npb24tPnNlcnZlcikgewotICAgICByZXR1cm47Ci0g ICB9Ci1AQCAtMzAyMCwzNyArMjYzMyw2IEBAIHN0YXRpYyBpbnQgc2Vzc2lvbl9hZnRlcl9mcmFt ZV9zZW50MShuZ2h0dHAyX3Nlc3Npb24gKnNlc3Npb24pIHsKLSAgICAgfQotICAgfQotICAgY2Fz ZSBOR0hUVFAyX1BSSU9SSVRZOgotLSAgICBpZiAoc2Vzc2lvbi0+c2VydmVyIHx8IHNlc3Npb24t PnBlbmRpbmdfbm9fcmZjNzU0MF9wcmlvcml0aWVzID09IDEpIHsKLS0gICAgICByZXR1cm4gMDsK LS0gICAgfQotLQotLSAgICBzdHJlYW0gPSBuZ2h0dHAyX3Nlc3Npb25fZ2V0X3N0cmVhbV9yYXco c2Vzc2lvbiwgZnJhbWUtPmhkLnN0cmVhbV9pZCk7Ci0tCi0tICAgIGlmICghc3RyZWFtKSB7Ci0t ICAgICAgaWYgKCFzZXNzaW9uX2RldGVjdF9pZGxlX3N0cmVhbShzZXNzaW9uLCBmcmFtZS0+aGQu c3RyZWFtX2lkKSkgewotLSAgICAgICAgcmV0dXJuIDA7Ci0tICAgICAgfQotLQotLSAgICAgIHN0 cmVhbSA9IG5naHR0cDJfc2Vzc2lvbl9vcGVuX3N0cmVhbSgKLS0gICAgICAgIHNlc3Npb24sIGZy YW1lLT5oZC5zdHJlYW1faWQsIE5HSFRUUDJfRkxBR19OT05FLAotLSAgICAgICAgJmZyYW1lLT5w cmlvcml0eS5wcmlfc3BlYywgTkdIVFRQMl9TVFJFQU1fSURMRSwgTlVMTCk7Ci0tICAgICAgaWYg KCFzdHJlYW0pIHsKLS0gICAgICAgIHJldHVybiBOR0hUVFAyX0VSUl9OT01FTTsKLS0gICAgICB9 Ci0tICAgIH0gZWxzZSB7Ci0tICAgICAgcnYgPSBuZ2h0dHAyX3Nlc3Npb25fcmVwcmlvcml0aXpl X3N0cmVhbShzZXNzaW9uLCBzdHJlYW0sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAmZnJhbWUtPnByaW9yaXR5LnByaV9zcGVjKTsKLS0gICAgICBpZiAo bmdodHRwMl9pc19mYXRhbChydikpIHsKLS0gICAgICAgIHJldHVybiBydjsKLS0gICAgICB9Ci0t ICAgIH0KLS0KLS0gICAgcnYgPSBuZ2h0dHAyX3Nlc3Npb25fYWRqdXN0X2lkbGVfc3RyZWFtKHNl c3Npb24pOwotLQotLSAgICBpZiAobmdodHRwMl9pc19mYXRhbChydikpIHsKLS0gICAgICByZXR1 cm4gcnY7Ci0tICAgIH0KLS0KLSAgICAgcmV0dXJuIDA7Ci0gICBjYXNlIE5HSFRUUDJfUlNUX1NU UkVBTToKLSAgICAgcnYgPSBuZ2h0dHAyX3Nlc3Npb25fY2xvc2Vfc3RyZWFtKHNlc3Npb24sIGZy YW1lLT5oZC5zdHJlYW1faWQsCi1AQCAtMzIzOSwxNCArMjgyMSw2IEBAIHN0YXRpYyBuZ2h0dHAy X3NzaXplIG5naHR0cDJfc2Vzc2lvbl9tZW1fc2VuZF9pbnRlcm5hbChuZ2h0dHAyX3Nlc3Npb24g KnNlc3Npb24sCi0gICBhb2IgPSAmc2Vzc2lvbi0+YW9iOwotICAgZnJhbWVidWZzID0gJmFvYi0+ ZnJhbWVidWZzOwotIAotLSAgLyogV2UgbWF5IGhhdmUgaWRsZSBzdHJlYW1zIG1vcmUgdGhhbiB3 ZSBleHBlY3QgKGUuZy4sCi0tICAgICBuZ2h0dHAyX3Nlc3Npb25fY2hhbmdlX3N0cmVhbV9wcmlv cml0eSgpIG9yCi0tICAgICBuZ2h0dHAyX3Nlc3Npb25fY3JlYXRlX2lkbGVfc3RyZWFtKCkpLiAg QWRqdXN0IHRoZW0gaGVyZS4gKi8KLS0gIHJ2ID0gbmdodHRwMl9zZXNzaW9uX2FkanVzdF9pZGxl X3N0cmVhbShzZXNzaW9uKTsKLS0gIGlmIChuZ2h0dHAyX2lzX2ZhdGFsKHJ2KSkgewotLSAgICBy ZXR1cm4gcnY7Ci0tICB9Ci0tCi0gICBmb3IgKDs7KSB7Ci0gICAgIHN3aXRjaCAoYW9iLT5zdGF0 ZSkgewotICAgICBjYXNlIE5HSFRUUDJfT0JfUE9QX0lURU06IHsKLUBAIC0zNjk4LDcgKzMyNzIs OSBAQCBzdGF0aWMgaW50IHNlc3Npb25fY2FsbF9vbl9pbnZhbGlkX2hlYWRlcihuZ2h0dHAyX3Nl c3Npb24gKnNlc3Npb24sCi0gICAgICAgc2Vzc2lvbiwgZnJhbWUsIG52LT5uYW1lLT5iYXNlLCBu di0+bmFtZS0+bGVuLCBudi0+dmFsdWUtPmJhc2UsCi0gICAgICAgbnYtPnZhbHVlLT5sZW4sIG52 LT5mbGFncywgc2Vzc2lvbi0+dXNlcl9kYXRhKTsKLSAgIH0gZWxzZSB7Ci0tICAgIHJldHVybiBO R0hUVFAyX0VSUl9URU1QT1JBTF9DQUxMQkFDS19GQUlMVVJFOwotKyAgICAvKiBJZiBib3RoIGNh bGxiYWNrcyBhcmUgbm90IHNldCwgdGhlIGludmFsaWQgZmllbGQgbnYgaXMKLSsgICAgICAgaWdu b3JlZC4gKi8KLSsgICAgcmV0dXJuIDA7Ci0gICB9Ci0gCi0gICBpZiAocnYgPT0gTkdIVFRQMl9F UlJfUEFVU0UgfHwgcnYgPT0gTkdIVFRQMl9FUlJfVEVNUE9SQUxfQ0FMTEJBQ0tfRkFJTFVSRSkg ewotQEAgLTM3ODMsNiArMzM1OSwxMCBAQCBzdGF0aWMgdWludDMyX3QgZ2V0X2Vycm9yX2NvZGVf ZnJvbV9saWJfZXJyb3JfY29kZShpbnQgbGliX2Vycm9yX2NvZGUpIHsKLSAgIGNhc2UgTkdIVFRQ Ml9FUlJfSFRUUF9IRUFERVI6Ci0gICBjYXNlIE5HSFRUUDJfRVJSX0hUVFBfTUVTU0FHSU5HOgot ICAgICByZXR1cm4gTkdIVFRQMl9QUk9UT0NPTF9FUlJPUjsKLSsgIGNhc2UgTkdIVFRQMl9FUlJf SU5URVJOQUw6Ci0rICAgIHJldHVybiBOR0hUVFAyX0lOVEVSTkFMX0VSUk9SOwotKyAgY2FzZSBO R0hUVFAyX0VSUl9QVVNIX0NBTkNFTDoKLSsgICAgcmV0dXJuIE5HSFRUUDJfQ0FOQ0VMOwotICAg ZGVmYXVsdDoKLSAgICAgcmV0dXJuIE5HSFRUUDJfSU5URVJOQUxfRVJST1I7Ci0gICB9Ci1AQCAt MzgwOSwxNyArMzM4OSwzMiBAQCBzdGF0aWMgaW50IHNlc3Npb25fY2FsbF9vbl9pbnZhbGlkX2Zy YW1lX3JlY3ZfY2FsbGJhY2sobmdodHRwMl9zZXNzaW9uICpzZXNzaW9uLAotICAgcmV0dXJuIDA7 Ci0gfQotIAotK3N0YXRpYyBpbnQgc2Vzc2lvbl91cGRhdGVfZ2xpdGNoX3JhdGVsaW0obmdodHRw Ml9zZXNzaW9uICpzZXNzaW9uKSB7Ci0rICBpZiAoc2Vzc2lvbi0+Z29hd2F5X2ZsYWdzICYgTkdI VFRQMl9HT0FXQVlfVEVSTV9PTl9TRU5EKSB7Ci0rICAgIHJldHVybiAwOwotKyAgfQotKwotKyAg bmdodHRwMl9yYXRlbGltX3VwZGF0ZSgmc2Vzc2lvbi0+Z2xpdGNoX3JhdGVsaW0sIG5naHR0cDJf dGltZV9ub3dfc2VjKCkpOwotKwotKyAgaWYgKG5naHR0cDJfcmF0ZWxpbV9kcmFpbigmc2Vzc2lv bi0+Z2xpdGNoX3JhdGVsaW0sIDEpID09IDApIHsKLSsgICAgcmV0dXJuIDA7Ci0rICB9Ci0rCi0r ICByZXR1cm4gbmdodHRwMl9zZXNzaW9uX3Rlcm1pbmF0ZV9zZXNzaW9uKHNlc3Npb24sIE5HSFRU UDJfRU5IQU5DRV9ZT1VSX0NBTE0pOwotK30KLSsKLSBzdGF0aWMgaW50IHNlc3Npb25faGFuZGxl X2ludmFsaWRfc3RyZWFtMihuZ2h0dHAyX3Nlc3Npb24gKnNlc3Npb24sCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBzdHJlYW1faWQsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmdodHRwMl9mcmFtZSAqZnJhbWUs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxpYl9lcnJv cl9jb2RlKSB7Ci0gICBpbnQgcnY7Ci0rCi0gICBydiA9IG5naHR0cDJfc2Vzc2lvbl9hZGRfcnN0 X3N0cmVhbSgKLSAgICAgc2Vzc2lvbiwgc3RyZWFtX2lkLCBnZXRfZXJyb3JfY29kZV9mcm9tX2xp Yl9lcnJvcl9jb2RlKGxpYl9lcnJvcl9jb2RlKSk7Ci0gICBpZiAocnYgIT0gMCkgewotICAgICBy ZXR1cm4gcnY7Ci0gICB9Ci0tICBpZiAoc2Vzc2lvbi0+Y2FsbGJhY2tzLm9uX2ludmFsaWRfZnJh bWVfcmVjdl9jYWxsYmFjaykgewotKyAgaWYgKGZyYW1lICYmIHNlc3Npb24tPmNhbGxiYWNrcy5v bl9pbnZhbGlkX2ZyYW1lX3JlY3ZfY2FsbGJhY2spIHsKLSAgICAgaWYgKHNlc3Npb24tPmNhbGxi YWNrcy5vbl9pbnZhbGlkX2ZyYW1lX3JlY3ZfY2FsbGJhY2soCi0gICAgICAgICAgIHNlc3Npb24s IGZyYW1lLCBsaWJfZXJyb3JfY29kZSwgc2Vzc2lvbi0+dXNlcl9kYXRhKSAhPSAwKSB7Ci0gICAg ICAgcmV0dXJuIE5HSFRUUDJfRVJSX0NBTExCQUNLX0ZBSUxVUkU7Ci1AQCAtMzk3NCw3ICszNTY5 LDI5IEBAIHN0YXRpYyBpbnQgaW5mbGF0ZV9oZWFkZXJfYmxvY2sobmdodHRwMl9zZXNzaW9uICpz ZXNzaW9uLCBuZ2h0dHAyX2ZyYW1lICpmcmFtZSwKLSAKLSAgICAgICAgICAgICBydjIgPSBzZXNz aW9uX2NhbGxfb25faW52YWxpZF9oZWFkZXIoc2Vzc2lvbiwgZnJhbWUsICZudik7Ci0gICAgICAg ICAgICAgaWYgKHJ2MiA9PSBOR0hUVFAyX0VSUl9URU1QT1JBTF9DQUxMQkFDS19GQUlMVVJFKSB7 Ci0tICAgICAgICAgICAgICBydiA9IE5HSFRUUDJfRVJSX0hUVFBfSEVBREVSOwotKyAgICAgICAg ICAgICAgREVCVUdGKCJyZWN2OiBIVFRQIGVycm9yOiB0eXBlPSV1LCBpZD0lZCwgaGVhZGVyICUu KnM6ICUuKnNcbiIsCi0rICAgICAgICAgICAgICAgICAgICAgZnJhbWUtPmhkLnR5cGUsIGZyYW1l LT5oZC5zdHJlYW1faWQsIChpbnQpbnYubmFtZS0+bGVuLAotKyAgICAgICAgICAgICAgICAgICAg IG52Lm5hbWUtPmJhc2UsIChpbnQpbnYudmFsdWUtPmxlbiwgbnYudmFsdWUtPmJhc2UpOwotKwot KyAgICAgICAgICAgICAgcnYgPSBzZXNzaW9uX2NhbGxfZXJyb3JfY2FsbGJhY2soCi0rICAgICAg ICAgICAgICAgIHNlc3Npb24sIE5HSFRUUDJfRVJSX0hUVFBfSEVBREVSLAotKyAgICAgICAgICAg ICAgICAiSW52YWxpZCBIVFRQIGhlYWRlciBmaWVsZCB3YXMgcmVjZWl2ZWQ6IGZyYW1lIHR5cGU6 ICIKLSsgICAgICAgICAgICAgICAgIiV1LCBzdHJlYW06ICVkLCBuYW1lOiBbJS4qc10sIHZhbHVl OiBbJS4qc10iLAotKyAgICAgICAgICAgICAgICBmcmFtZS0+aGQudHlwZSwgZnJhbWUtPmhkLnN0 cmVhbV9pZCwgKGludCludi5uYW1lLT5sZW4sCi0rICAgICAgICAgICAgICAgIG52Lm5hbWUtPmJh c2UsIChpbnQpbnYudmFsdWUtPmxlbiwgbnYudmFsdWUtPmJhc2UpOwotKwotKyAgICAgICAgICAg ICAgaWYgKG5naHR0cDJfaXNfZmF0YWwocnYpKSB7Ci0rICAgICAgICAgICAgICAgIHJldHVybiBy djsKLSsgICAgICAgICAgICAgIH0KLSsKLSsgICAgICAgICAgICAgIHJ2ID0gc2Vzc2lvbl9oYW5k bGVfaW52YWxpZF9zdHJlYW0yKAotKyAgICAgICAgICAgICAgICBzZXNzaW9uLCBzdWJqZWN0X3N0 cmVhbS0+c3RyZWFtX2lkLCBmcmFtZSwKLSsgICAgICAgICAgICAgICAgTkdIVFRQMl9FUlJfSFRU UF9IRUFERVIpOwotKyAgICAgICAgICAgICAgaWYgKG5naHR0cDJfaXNfZmF0YWwocnYpKSB7Ci0r ICAgICAgICAgICAgICAgIHJldHVybiBydjsKLSsgICAgICAgICAgICAgIH0KLSsKLSsgICAgICAg ICAgICAgIHJldHVybiBOR0hUVFAyX0VSUl9URU1QT1JBTF9DQUxMQkFDS19GQUlMVVJFOwotICAg ICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICBpZiAocnYyICE9IDApIHsKLSAgICAg ICAgICAgICAgICAgcmV0dXJuIHJ2MjsKLUBAIC00MDE0LDEzICszNjMxLDggQEAgc3RhdGljIGlu dCBpbmZsYXRlX2hlYWRlcl9ibG9jayhuZ2h0dHAyX3Nlc3Npb24gKnNlc3Npb24sIG5naHR0cDJf ZnJhbWUgKmZyYW1lLAotICAgICAgICAgICAgICAgcmV0dXJuIHJ2OwotICAgICAgICAgICAgIH0K LSAKLS0gICAgICAgICAgICBydiA9Ci0tICAgICAgICAgICAgICBzZXNzaW9uX2hhbmRsZV9pbnZh bGlkX3N0cmVhbTIoc2Vzc2lvbiwgc3ViamVjdF9zdHJlYW0tPnN0cmVhbV9pZCwKLS0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZSwgTkdIVFRQMl9FUlJf SFRUUF9IRUFERVIpOwotLSAgICAgICAgICAgIGlmIChuZ2h0dHAyX2lzX2ZhdGFsKHJ2KSkgewot LSAgICAgICAgICAgICAgcmV0dXJuIHJ2OwotLSAgICAgICAgICAgIH0KLS0gICAgICAgICAgICBy ZXR1cm4gTkdIVFRQMl9FUlJfVEVNUE9SQUxfQ0FMTEJBQ0tfRkFJTFVSRTsKLSsgICAgICAgICAg ICByZXR1cm4gbmdodHRwMl9zZXNzaW9uX3Rlcm1pbmF0ZV9zZXNzaW9uKHNlc3Npb24sCi0rICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOR0hUVFAy X1BST1RPQ09MX0VSUk9SKTsKLSAgICAgICAgICAgfQotICAgICAgICAgfQotICAgICAgICAgaWYg KHJ2ID09IDApIHsKLUBAIC00MDY0LDcgKzM2NzYsNiBAQCBzdGF0aWMgaW50IHNlc3Npb25fZW5k X3N0cmVhbV9oZWFkZXJzX3JlY2VpdmVkKG5naHR0cDJfc2Vzc2lvbiAqc2Vzc2lvbiwKLSAKLSAg IGlmIChzZXNzaW9uLT5zZXJ2ZXIgJiYgc2Vzc2lvbl9lbmZvcmNlX2h0dHBfbWVzc2FnaW5nKHNl c3Npb24pICYmCi0gICAgICAgZnJhbWUtPmhlYWRlcnMuY2F0ID09IE5HSFRUUDJfSENBVF9SRVFV RVNUICYmCi0tICAgICAgKHN0cmVhbS0+ZmxhZ3MgJiBOR0hUVFAyX1NUUkVBTV9GTEFHX05PX1JG Qzc1NDBfUFJJT1JJVElFUykgJiYKLSAgICAgICAhKHN0cmVhbS0+ZmxhZ3MgJiBOR0hUVFAyX1NU UkVBTV9GTEFHX0lHTk9SRV9DTElFTlRfUFJJT1JJVElFUykgJiYKLSAgICAgICAoc3RyZWFtLT5o dHRwX2ZsYWdzICYgTkdIVFRQMl9IVFRQX0ZMQUdfUFJJT1JJVFkpKSB7Ci0gICAgIHJ2ID0gc2Vz c2lvbl91cGRhdGVfc3RyZWFtX3ByaW9yaXR5KHNlc3Npb24sIHN0cmVhbSwgc3RyZWFtLT5odHRw X2V4dHByaSk7Ci1AQCAtNDEzNCwyNyArMzc0NSw3IEBAIHN0YXRpYyBpbnQgc2Vzc2lvbl9hZnRl cl9oZWFkZXJfYmxvY2tfcmVjZWl2ZWQobmdodHRwMl9zZXNzaW9uICpzZXNzaW9uKSB7Ci0gICAg ICAgfQotICAgICB9Ci0gICAgIGlmIChydiAhPSAwKSB7Ci0tICAgICAgaW50MzJfdCBzdHJlYW1f aWQ7Ci0tCi0tICAgICAgaWYgKGZyYW1lLT5oZC50eXBlID09IE5HSFRUUDJfUFVTSF9QUk9NSVNF KSB7Ci0tICAgICAgICBzdHJlYW1faWQgPSBmcmFtZS0+cHVzaF9wcm9taXNlLnByb21pc2VkX3N0 cmVhbV9pZDsKLS0gICAgICB9IGVsc2UgewotLSAgICAgICAgc3RyZWFtX2lkID0gZnJhbWUtPmhk LnN0cmVhbV9pZDsKLS0gICAgICB9Ci0tCi0tICAgICAgcnYgPSBzZXNzaW9uX2hhbmRsZV9pbnZh bGlkX3N0cmVhbTIoc2Vzc2lvbiwgc3RyZWFtX2lkLCBmcmFtZSwKLS0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBOR0hUVFAyX0VSUl9IVFRQX01FU1NBR0lORyk7Ci0t ICAgICAgaWYgKG5naHR0cDJfaXNfZmF0YWwocnYpKSB7Ci0tICAgICAgICByZXR1cm4gcnY7Ci0t ICAgICAgfQotLQotLSAgICAgIGlmIChmcmFtZS0+aGQudHlwZSA9PSBOR0hUVFAyX0hFQURFUlMg JiYKLS0gICAgICAgICAgKGZyYW1lLT5oZC5mbGFncyAmIE5HSFRUUDJfRkxBR19FTkRfU1RSRUFN KSkgewotLSAgICAgICAgbmdodHRwMl9zdHJlYW1fc2h1dGRvd24oc3RyZWFtLCBOR0hUVFAyX1NI VVRfUkQpOwotLSAgICAgICAgLyogRG9uJ3QgY2FsbCBuZ2h0dHAyX3Nlc3Npb25fY2xvc2Vfc3Ry ZWFtX2lmX3NodXRfcmR3cgotLSAgICAgICAgICAgYmVjYXVzZSBSU1RfU1RSRUFNIGhhcyBiZWVu IHN1Ym1pdHRlZC4gKi8KLS0gICAgICB9Ci0tICAgICAgcmV0dXJuIDA7Ci0rICAgICAgcmV0dXJu IG5naHR0cDJfc2Vzc2lvbl90ZXJtaW5hdGVfc2Vzc2lvbihzZXNzaW9uLCBOR0hUVFAyX1BST1RP Q09MX0VSUk9SKTsKLSAgICAgfQotICAgfQotIAotQEAgLTQyNTMsMTggKzM4NDQsMTMgQEAgaW50 IG5naHR0cDJfc2Vzc2lvbl9vbl9yZXF1ZXN0X2hlYWRlcnNfcmVjZWl2ZWQobmdodHRwMl9zZXNz aW9uICpzZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBOR0hUVFAyX0VSUl9SRUZVU0VEX1NUUkVBTSk7Ci0gICB9Ci0gCi0tICBzdHJlYW0g PSBuZ2h0dHAyX3Nlc3Npb25fb3Blbl9zdHJlYW0oCi0tICAgIHNlc3Npb24sIGZyYW1lLT5oZC5z dHJlYW1faWQsIE5HSFRUUDJfU1RSRUFNX0ZMQUdfTk9ORSwKLS0gICAgJmZyYW1lLT5oZWFkZXJz LnByaV9zcGVjLCBOR0hUVFAyX1NUUkVBTV9PUEVOSU5HLCBOVUxMKTsKLSsgIHN0cmVhbSA9IG5n aHR0cDJfc2Vzc2lvbl9vcGVuX3N0cmVhbShzZXNzaW9uLCBmcmFtZS0+aGQuc3RyZWFtX2lkLAot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5HSFRUUDJfU1RSRUFNX0ZM QUdfTk9ORSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOR0hUVFAy X1NUUkVBTV9PUEVOSU5HLCBOVUxMKTsKLSAgIGlmICghc3RyZWFtKSB7Ci0gICAgIHJldHVybiBO R0hUVFAyX0VSUl9OT01FTTsKLSAgIH0KLSAKLS0gIHJ2ID0gbmdodHRwMl9zZXNzaW9uX2FkanVz dF9jbG9zZWRfc3RyZWFtKHNlc3Npb24pOwotLSAgaWYgKG5naHR0cDJfaXNfZmF0YWwocnYpKSB7 Ci0tICAgIHJldHVybiBydjsKLS0gIH0KLS0KLSAgIHNlc3Npb24tPmxhc3RfcHJvY19zdHJlYW1f aWQgPSBzZXNzaW9uLT5sYXN0X3JlY3Zfc3RyZWFtX2lkOwotIAotICAgcnYgPSBzZXNzaW9uX2Nh bGxfb25fYmVnaW5faGVhZGVycyhzZXNzaW9uLCBmcmFtZSk7Ci1AQCAtNDM5NiwxMDQgKzM5ODIs MzMgQEAgaW50IG5naHR0cDJfc2Vzc2lvbl9vbl9oZWFkZXJzX3JlY2VpdmVkKG5naHR0cDJfc2Vz c2lvbiAqc2Vzc2lvbiwKLSAgIHJldHVybiBOR0hUVFAyX0VSUl9JR05fSEVBREVSX0JMT0NLOwot IH0KLSAKLS1zdGF0aWMgaW50IHNlc3Npb25fcHJvY2Vzc19oZWFkZXJzX2ZyYW1lKG5naHR0cDJf c2Vzc2lvbiAqc2Vzc2lvbikgewotLSAgbmdodHRwMl9pbmJvdW5kX2ZyYW1lICppZnJhbWUgPSAm c2Vzc2lvbi0+aWZyYW1lOwotLSAgbmdodHRwMl9mcmFtZSAqZnJhbWUgPSAmaWZyYW1lLT5mcmFt ZTsKLS0gIG5naHR0cDJfc3RyZWFtICpzdHJlYW07Ci0tCi0tICBuZ2h0dHAyX2ZyYW1lX3VucGFj a19oZWFkZXJzX3BheWxvYWQoJmZyYW1lLT5oZWFkZXJzLCBpZnJhbWUtPnNidWYucG9zKTsKLS0K LS0gIHN0cmVhbSA9IG5naHR0cDJfc2Vzc2lvbl9nZXRfc3RyZWFtKHNlc3Npb24sIGZyYW1lLT5o ZC5zdHJlYW1faWQpOwotLSAgaWYgKCFzdHJlYW0pIHsKLS0gICAgZnJhbWUtPmhlYWRlcnMuY2F0 ID0gTkdIVFRQMl9IQ0FUX1JFUVVFU1Q7Ci0tICAgIHJldHVybiBuZ2h0dHAyX3Nlc3Npb25fb25f cmVxdWVzdF9oZWFkZXJzX3JlY2VpdmVkKHNlc3Npb24sIGZyYW1lKTsKLS0gIH0KLS0KLS0gIGlm IChzdHJlYW0tPnN0YXRlID09IE5HSFRUUDJfU1RSRUFNX1JFU0VSVkVEKSB7Ci0tICAgIGZyYW1l LT5oZWFkZXJzLmNhdCA9IE5HSFRUUDJfSENBVF9QVVNIX1JFU1BPTlNFOwotLSAgICByZXR1cm4g bmdodHRwMl9zZXNzaW9uX29uX3B1c2hfcmVzcG9uc2VfaGVhZGVyc19yZWNlaXZlZChzZXNzaW9u LCBmcmFtZSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc3RyZWFtKTsKLS0gIH0KLS0KLS0gIGlmIChzdHJlYW0tPnN0YXRlID09 IE5HSFRUUDJfU1RSRUFNX09QRU5JTkcgJiYKLS0gICAgICBuZ2h0dHAyX3Nlc3Npb25faXNfbXlf c3RyZWFtX2lkKHNlc3Npb24sIGZyYW1lLT5oZC5zdHJlYW1faWQpKSB7Ci0tICAgIGZyYW1lLT5o ZWFkZXJzLmNhdCA9IE5HSFRUUDJfSENBVF9SRVNQT05TRTsKLS0gICAgcmV0dXJuIG5naHR0cDJf c2Vzc2lvbl9vbl9yZXNwb25zZV9oZWFkZXJzX3JlY2VpdmVkKHNlc3Npb24sIGZyYW1lLCBzdHJl YW0pOwotLSAgfQotLQotLSAgZnJhbWUtPmhlYWRlcnMuY2F0ID0gTkdIVFRQMl9IQ0FUX0hFQURF UlM7Ci0tICByZXR1cm4gbmdodHRwMl9zZXNzaW9uX29uX2hlYWRlcnNfcmVjZWl2ZWQoc2Vzc2lv biwgZnJhbWUsIHN0cmVhbSk7Ci0tfQotLQotLWludCBuZ2h0dHAyX3Nlc3Npb25fb25fcHJpb3Jp dHlfcmVjZWl2ZWQobmdodHRwMl9zZXNzaW9uICpzZXNzaW9uLAotLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbmdodHRwMl9mcmFtZSAqZnJhbWUpIHsKLS0gIGludCBy djsKLS0gIG5naHR0cDJfc3RyZWFtICpzdHJlYW07Ci0tCi0tICBhc3NlcnQoIXNlc3Npb25fbm9f cmZjNzU0MF9wcmlfbm9fZmFsbGJhY2soc2Vzc2lvbikpOwotLQotLSAgaWYgKGZyYW1lLT5oZC5z dHJlYW1faWQgPT0gMCkgewotLSAgICByZXR1cm4gc2Vzc2lvbl9oYW5kbGVfaW52YWxpZF9jb25u ZWN0aW9uKHNlc3Npb24sIGZyYW1lLCBOR0hUVFAyX0VSUl9QUk9UTywKLS0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUFJJT1JJVFk6IHN0cmVhbV9pZCA9PSAw Iik7Ci0tICB9Ci0tCi0tICBpZiAoZnJhbWUtPnByaW9yaXR5LnByaV9zcGVjLnN0cmVhbV9pZCA9 PSBmcmFtZS0+aGQuc3RyZWFtX2lkKSB7Ci0tICAgIHJldHVybiBuZ2h0dHAyX3Nlc3Npb25fdGVy bWluYXRlX3Nlc3Npb25fd2l0aF9yZWFzb24oCi0tICAgICAgc2Vzc2lvbiwgTkdIVFRQMl9QUk9U T0NPTF9FUlJPUiwgImRlcGVuZCBvbiBpdHNlbGYiKTsKLS0gIH0KLS0KLS0gIGlmICghc2Vzc2lv bi0+c2VydmVyKSB7Ci0tICAgIC8qIFJlLXByaW9yaXRpemF0aW9uIHdvcmtzIG9ubHkgaW4gc2Vy dmVyICovCi0tICAgIHJldHVybiBzZXNzaW9uX2NhbGxfb25fZnJhbWVfcmVjZWl2ZWQoc2Vzc2lv biwgZnJhbWUpOwotLSAgfQotLQotLSAgc3RyZWFtID0gbmdodHRwMl9zZXNzaW9uX2dldF9zdHJl YW1fcmF3KHNlc3Npb24sIGZyYW1lLT5oZC5zdHJlYW1faWQpOwotLQotLSAgaWYgKCFzdHJlYW0p IHsKLS0gICAgLyogUFJJT1JJVFkgYWdhaW5zdCBpZGxlIHN0cmVhbSBjYW4gY3JlYXRlIGFuY2hv ciBub2RlIGluCi0tICAgICAgIGRlcGVuZGVuY3kgdHJlZS4gKi8KLS0gICAgaWYgKCFzZXNzaW9u X2RldGVjdF9pZGxlX3N0cmVhbShzZXNzaW9uLCBmcmFtZS0+aGQuc3RyZWFtX2lkKSkgewotLSAg ICAgIHJldHVybiAwOwotLSAgICB9Ci0tCi0tICAgIHN0cmVhbSA9IG5naHR0cDJfc2Vzc2lvbl9v cGVuX3N0cmVhbSgKLS0gICAgICBzZXNzaW9uLCBmcmFtZS0+aGQuc3RyZWFtX2lkLCBOR0hUVFAy X1NUUkVBTV9GTEFHX05PTkUsCi0tICAgICAgJmZyYW1lLT5wcmlvcml0eS5wcmlfc3BlYywgTkdI VFRQMl9TVFJFQU1fSURMRSwgTlVMTCk7Ci0tCi0tICAgIGlmIChzdHJlYW0gPT0gTlVMTCkgewot LSAgICAgIHJldHVybiBOR0hUVFAyX0VSUl9OT01FTTsKLS0gICAgfQotLQotLSAgICBydiA9IG5n aHR0cDJfc2Vzc2lvbl9hZGp1c3RfaWRsZV9zdHJlYW0oc2Vzc2lvbik7Ci0tICAgIGlmIChuZ2h0 dHAyX2lzX2ZhdGFsKHJ2KSkgewotLSAgICAgIHJldHVybiBydjsKLS0gICAgfQotLSAgfSBlbHNl IHsKLS0gICAgcnYgPSBuZ2h0dHAyX3Nlc3Npb25fcmVwcmlvcml0aXplX3N0cmVhbShzZXNzaW9u LCBzdHJlYW0sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg JmZyYW1lLT5wcmlvcml0eS5wcmlfc3BlYyk7Ci0tCi0tICAgIGlmIChuZ2h0dHAyX2lzX2ZhdGFs KHJ2KSkgewotLSAgICAgIHJldHVybiBydjsKLS0gICAgfQotLQotLSAgICBydiA9IG5naHR0cDJf c2Vzc2lvbl9hZGp1c3RfaWRsZV9zdHJlYW0oc2Vzc2lvbik7Ci0tICAgIGlmIChuZ2h0dHAyX2lz X2ZhdGFsKHJ2KSkgewotLSAgICAgIHJldHVybiBydjsKLS0gICAgfQotLSAgfQotLQotLSAgcmV0 dXJuIHNlc3Npb25fY2FsbF9vbl9mcmFtZV9yZWNlaXZlZChzZXNzaW9uLCBmcmFtZSk7Ci0tfQot LQotLXN0YXRpYyBpbnQgc2Vzc2lvbl9wcm9jZXNzX3ByaW9yaXR5X2ZyYW1lKG5naHR0cDJfc2Vz c2lvbiAqc2Vzc2lvbikgewotK3N0YXRpYyBpbnQgc2Vzc2lvbl9wcm9jZXNzX2hlYWRlcnNfZnJh bWUobmdodHRwMl9zZXNzaW9uICpzZXNzaW9uKSB7Ci0gICBuZ2h0dHAyX2luYm91bmRfZnJhbWUg KmlmcmFtZSA9ICZzZXNzaW9uLT5pZnJhbWU7Ci0gICBuZ2h0dHAyX2ZyYW1lICpmcmFtZSA9ICZp ZnJhbWUtPmZyYW1lOwotKyAgbmdodHRwMl9zdHJlYW0gKnN0cmVhbTsKLSsKLSsgIG5naHR0cDJf ZnJhbWVfdW5wYWNrX2hlYWRlcnNfcGF5bG9hZCgmZnJhbWUtPmhlYWRlcnMsIGlmcmFtZS0+c2J1 Zi5wb3MpOwotKwotKyAgc3RyZWFtID0gbmdodHRwMl9zZXNzaW9uX2dldF9zdHJlYW0oc2Vzc2lv biwgZnJhbWUtPmhkLnN0cmVhbV9pZCk7Ci0rICBpZiAoIXN0cmVhbSkgewotKyAgICBmcmFtZS0+ aGVhZGVycy5jYXQgPSBOR0hUVFAyX0hDQVRfUkVRVUVTVDsKLSsgICAgcmV0dXJuIG5naHR0cDJf c2Vzc2lvbl9vbl9yZXF1ZXN0X2hlYWRlcnNfcmVjZWl2ZWQoc2Vzc2lvbiwgZnJhbWUpOwotKyAg fQotIAotLSAgYXNzZXJ0KCFzZXNzaW9uX25vX3JmYzc1NDBfcHJpX25vX2ZhbGxiYWNrKHNlc3Np b24pKTsKLSsgIGlmIChzdHJlYW0tPnN0YXRlID09IE5HSFRUUDJfU1RSRUFNX1JFU0VSVkVEKSB7 Ci0rICAgIGZyYW1lLT5oZWFkZXJzLmNhdCA9IE5HSFRUUDJfSENBVF9QVVNIX1JFU1BPTlNFOwot KyAgICByZXR1cm4gbmdodHRwMl9zZXNzaW9uX29uX3B1c2hfcmVzcG9uc2VfaGVhZGVyc19yZWNl aXZlZChzZXNzaW9uLCBmcmFtZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtKTsKLSsgIH0KLSAKLS0gIG5naHR0cDJf ZnJhbWVfdW5wYWNrX3ByaW9yaXR5X3BheWxvYWQoJmZyYW1lLT5wcmlvcml0eSwgaWZyYW1lLT5z YnVmLnBvcyk7Ci0rICBpZiAoc3RyZWFtLT5zdGF0ZSA9PSBOR0hUVFAyX1NUUkVBTV9PUEVOSU5H ICYmCi0rICAgICAgbmdodHRwMl9zZXNzaW9uX2lzX215X3N0cmVhbV9pZChzZXNzaW9uLCBmcmFt ZS0+aGQuc3RyZWFtX2lkKSkgewotKyAgICBmcmFtZS0+aGVhZGVycy5jYXQgPSBOR0hUVFAyX0hD QVRfUkVTUE9OU0U7Ci0rICAgIHJldHVybiBuZ2h0dHAyX3Nlc3Npb25fb25fcmVzcG9uc2VfaGVh ZGVyc19yZWNlaXZlZChzZXNzaW9uLCBmcmFtZSwgc3RyZWFtKTsKLSsgIH0KLSAKLS0gIHJldHVy biBuZ2h0dHAyX3Nlc3Npb25fb25fcHJpb3JpdHlfcmVjZWl2ZWQoc2Vzc2lvbiwgZnJhbWUpOwot KyAgZnJhbWUtPmhlYWRlcnMuY2F0ID0gTkdIVFRQMl9IQ0FUX0hFQURFUlM7Ci0rICByZXR1cm4g bmdodHRwMl9zZXNzaW9uX29uX2hlYWRlcnNfcmVjZWl2ZWQoc2Vzc2lvbiwgZnJhbWUsIHN0cmVh bSk7Ci0gfQotIAotIHN0YXRpYyBpbnQgc2Vzc2lvbl91cGRhdGVfc3RyZWFtX3Jlc2V0X3JhdGVs aW0obmdodHRwMl9zZXNzaW9uICpzZXNzaW9uKSB7Ci1AQCAtNDU2Niw4ICs0MDgxLDcgQEAgc3Rh dGljIGludCB1cGRhdGVfcmVtb3RlX2luaXRpYWxfd2luZG93X3NpemVfZnVuYyh2b2lkICplbnRy eSwgdm9pZCAqcHRyKSB7Ci0gICBydiA9IG5naHR0cDJfc3RyZWFtX3VwZGF0ZV9yZW1vdGVfaW5p dGlhbF93aW5kb3dfc2l6ZSgKLSAgICAgc3RyZWFtLCBhcmctPm5ld193aW5kb3dfc2l6ZSwgYXJn LT5vbGRfd2luZG93X3NpemUpOwotICAgaWYgKHJ2ICE9IDApIHsKLS0gICAgcmV0dXJuIG5naHR0 cDJfc2Vzc2lvbl9hZGRfcnN0X3N0cmVhbShhcmctPnNlc3Npb24sIHN0cmVhbS0+c3RyZWFtX2lk LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5HSFRUUDJfRkxP V19DT05UUk9MX0VSUk9SKTsKLSsgICAgcmV0dXJuIE5HSFRUUDJfRVJSX0ZMT1dfQ09OVFJPTDsK LSAgIH0KLSAKLSAgIC8qIElmIHdpbmRvdyBzaXplIGdldHMgcG9zaXRpdmUsIHB1c2ggZGVmZXJy ZWQgREFUQSBmcmFtZSB0bwotQEAgLTQ1OTMsNiArNDEwNyw4IEBAIHN0YXRpYyBpbnQgdXBkYXRl X3JlbW90ZV9pbml0aWFsX3dpbmRvd19zaXplX2Z1bmModm9pZCAqZW50cnksIHZvaWQgKnB0cikg ewotICAqCi0gICogTkdIVFRQMl9FUlJfTk9NRU0KLSAgKiAgICAgT3V0IG9mIG1lbW9yeS4KLSsg KiBOR0hUVFAyX0VSUl9GTE9XX0NPTlRST0wKLSsgKiAgICAgV2luZG93IHNpemUgZ2V0cyBvdXQg b2YgcmFuZ2UuCi0gICovCi0gc3RhdGljIGludAotIHNlc3Npb25fdXBkYXRlX3JlbW90ZV9pbml0 aWFsX3dpbmRvd19zaXplKG5naHR0cDJfc2Vzc2lvbiAqc2Vzc2lvbiwKLUBAIC00NjE2LDggKzQx MzIsNyBAQCBzdGF0aWMgaW50IHVwZGF0ZV9sb2NhbF9pbml0aWFsX3dpbmRvd19zaXplX2Z1bmMo dm9pZCAqZW50cnksIHZvaWQgKnB0cikgewotICAgcnYgPSBuZ2h0dHAyX3N0cmVhbV91cGRhdGVf bG9jYWxfaW5pdGlhbF93aW5kb3dfc2l6ZSgKLSAgICAgc3RyZWFtLCBhcmctPm5ld193aW5kb3df c2l6ZSwgYXJnLT5vbGRfd2luZG93X3NpemUpOwotICAgaWYgKHJ2ICE9IDApIHsKLS0gICAgcmV0 dXJuIG5naHR0cDJfc2Vzc2lvbl9hZGRfcnN0X3N0cmVhbShhcmctPnNlc3Npb24sIHN0cmVhbS0+ c3RyZWFtX2lkLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5H SFRUUDJfRkxPV19DT05UUk9MX0VSUk9SKTsKLSsgICAgcmV0dXJuIE5HSFRUUDJfRVJSX0ZMT1df Q09OVFJPTDsKLSAgIH0KLSAKLSAgIGlmIChzdHJlYW0tPndpbmRvd191cGRhdGVfcXVldWVkKSB7 Ci1AQCAtNDY1MSw2ICs0MTY2LDggQEAgc3RhdGljIGludCB1cGRhdGVfbG9jYWxfaW5pdGlhbF93 aW5kb3dfc2l6ZV9mdW5jKHZvaWQgKmVudHJ5LCB2b2lkICpwdHIpIHsKLSAgKgotICAqIE5HSFRU UDJfRVJSX05PTUVNCi0gICogICAgIE91dCBvZiBtZW1vcnkuCi0rICogTkdIVFRQMl9FUlJfRkxP V19DT05UUk9MCi0rICogICAgIFdpbmRvdyBzaXplIGdldHMgb3V0IG9mIHJhbmdlLgotICAqLwot IHN0YXRpYyBpbnQKLSBzZXNzaW9uX3VwZGF0ZV9sb2NhbF9pbml0aWFsX3dpbmRvd19zaXplKG5n aHR0cDJfc2Vzc2lvbiAqc2Vzc2lvbiwKLUBAIC00OTM0LDEyICs0NDUxLDYgQEAgaW50IG5naHR0 cDJfc2Vzc2lvbl9vbl9zZXR0aW5nc19yZWNlaXZlZChuZ2h0dHAyX3Nlc3Npb24gKnNlc3Npb24s Ci0gCi0gICBpZiAoc2Vzc2lvbi0+cmVtb3RlX3NldHRpbmdzLm5vX3JmYzc1NDBfcHJpb3JpdGll cyA9PSBVSU5UMzJfTUFYKSB7Ci0gICAgIHNlc3Npb24tPnJlbW90ZV9zZXR0aW5ncy5ub19yZmM3 NTQwX3ByaW9yaXRpZXMgPSAwOwotLQotLSAgICBpZiAoc2Vzc2lvbi0+c2VydmVyICYmIHNlc3Np b24tPnBlbmRpbmdfbm9fcmZjNzU0MF9wcmlvcml0aWVzICYmCi0tICAgICAgICAoc2Vzc2lvbi0+ b3B0X2ZsYWdzICYKLS0gICAgICAgICBOR0hUVFAyX09QVE1BU0tfU0VSVkVSX0ZBTExCQUNLX1JG Qzc1NDBfUFJJT1JJVElFUykpIHsKLS0gICAgICBzZXNzaW9uLT5mYWxsYmFja19yZmM3NTQwX3By aW9yaXRpZXMgPSAxOwotLSAgICB9Ci0gICB9Ci0gCi0gICBpZiAoIW5vYWNrICYmICFzZXNzaW9u X2lzX2Nsb3Npbmcoc2Vzc2lvbikpIHsKLUBAIC01MDAwLDcgKzQ1MTEsNiBAQCBpbnQgbmdodHRw Ml9zZXNzaW9uX29uX3B1c2hfcHJvbWlzZV9yZWNlaXZlZChuZ2h0dHAyX3Nlc3Npb24gKnNlc3Np b24sCi0gICBpbnQgcnY7Ci0gICBuZ2h0dHAyX3N0cmVhbSAqc3RyZWFtOwotICAgbmdodHRwMl9z dHJlYW0gKnByb21pc2VkX3N0cmVhbTsKLS0gIG5naHR0cDJfcHJpb3JpdHlfc3BlYyBwcmlfc3Bl YzsKLSAKLSAgIGlmIChmcmFtZS0+aGQuc3RyZWFtX2lkID09IDApIHsKLSAgICAgcmV0dXJuIHNl c3Npb25faW5mbGF0ZV9oYW5kbGVfaW52YWxpZF9jb25uZWN0aW9uKAotQEAgLTUwNDQsOSArNDU1 NCw5IEBAIGludCBuZ2h0dHAyX3Nlc3Npb25fb25fcHVzaF9wcm9taXNlX3JlY2VpdmVkKG5naHR0 cDJfc2Vzc2lvbiAqc2Vzc2lvbiwKLSAgICAgICAgIHNlc3Npb24tPm1heF9pbmNvbWluZ19yZXNl cnZlZF9zdHJlYW1zKSB7Ci0gICAgIC8qIEN1cnJlbnRseSwgY2xpZW50IGRvZXMgbm90IHJldGFp biBjbG9zZWQgc3RyZWFtLCBzbyB3ZSBkb24ndAotICAgICAgICBjaGVjayBOR0hUVFAyX1NIVVRf UkQgY29uZGl0aW9uIGhlcmUuICovCi0tCi0tICAgIHJ2ID0gbmdodHRwMl9zZXNzaW9uX2FkZF9y c3Rfc3RyZWFtKAotLSAgICAgIHNlc3Npb24sIGZyYW1lLT5wdXNoX3Byb21pc2UucHJvbWlzZWRf c3RyZWFtX2lkLCBOR0hUVFAyX0NBTkNFTCk7Ci0rICAgIHJ2ID0gc2Vzc2lvbl9oYW5kbGVfaW52 YWxpZF9zdHJlYW0yKHNlc3Npb24sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGZyYW1lLT5wdXNoX3Byb21pc2UucHJvbWlzZWRfc3RyZWFtX2lkLAotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBOR0hUVFAyX0VSUl9QVVNIX0NB TkNFTCk7Ci0gICAgIGlmIChydiAhPSAwKSB7Ci0gICAgICAgcmV0dXJuIHJ2OwotICAgICB9Ci1A QCAtNTA1OCwyMCArNDU2OCwxNCBAQCBpbnQgbmdodHRwMl9zZXNzaW9uX29uX3B1c2hfcHJvbWlz ZV9yZWNlaXZlZChuZ2h0dHAyX3Nlc3Npb24gKnNlc3Npb24sCi0gICAgICAgc2Vzc2lvbiwgZnJh bWUsIE5HSFRUUDJfRVJSX1NUUkVBTV9DTE9TRUQsICJQVVNIX1BST01JU0U6IHN0cmVhbSBjbG9z ZWQiKTsKLSAgIH0KLSAKLS0gIG5naHR0cDJfcHJpb3JpdHlfc3BlY19pbml0KCZwcmlfc3BlYywg c3RyZWFtLT5zdHJlYW1faWQsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOR0hUVFAy X0RFRkFVTFRfV0VJR0hULCAwKTsKLS0KLSAgIHByb21pc2VkX3N0cmVhbSA9IG5naHR0cDJfc2Vz c2lvbl9vcGVuX3N0cmVhbSgKLSAgICAgc2Vzc2lvbiwgZnJhbWUtPnB1c2hfcHJvbWlzZS5wcm9t aXNlZF9zdHJlYW1faWQsIE5HSFRUUDJfU1RSRUFNX0ZMQUdfTk9ORSwKLS0gICAgJnByaV9zcGVj LCBOR0hUVFAyX1NUUkVBTV9SRVNFUlZFRCwgTlVMTCk7Ci0rICAgIE5HSFRUUDJfU1RSRUFNX1JF U0VSVkVELCBOVUxMKTsKLSAKLSAgIGlmICghcHJvbWlzZWRfc3RyZWFtKSB7Ci0gICAgIHJldHVy biBOR0hUVFAyX0VSUl9OT01FTTsKLSAgIH0KLSAKLS0gIC8qIFdlIGRvbid0IGNhbGwgbmdodHRw Ml9zZXNzaW9uX2FkanVzdF9jbG9zZWRfc3RyZWFtKCksIHNpbmNlIHdlCi0tICAgICBkb24ndCBr ZWVwIGNsb3NlZCBzdHJlYW0gaW4gY2xpZW50IHNpZGUgKi8KLS0KLSAgIHNlc3Npb24tPmxhc3Rf cHJvY19zdHJlYW1faWQgPSBzZXNzaW9uLT5sYXN0X3JlY3Zfc3RyZWFtX2lkOwotICAgcnYgPSBz ZXNzaW9uX2NhbGxfb25fYmVnaW5faGVhZGVycyhzZXNzaW9uLCBmcmFtZSk7Ci0gICBpZiAocnYg IT0gMCkgewotQEAgLTUyMDksOCArNDcxMyw5IEBAIHN0YXRpYyBpbnQgc2Vzc2lvbl9vbl9zdHJl YW1fd2luZG93X3VwZGF0ZV9yZWNlaXZlZChuZ2h0dHAyX3Nlc3Npb24gKnNlc3Npb24sCi0gICB9 Ci0gICBpZiAoTkdIVFRQMl9NQVhfV0lORE9XX1NJWkUgLSBmcmFtZS0+d2luZG93X3VwZGF0ZS53 aW5kb3dfc2l6ZV9pbmNyZW1lbnQgPAotICAgICAgIHN0cmVhbS0+cmVtb3RlX3dpbmRvd19zaXpl KSB7Ci0tICAgIHJldHVybiBzZXNzaW9uX2hhbmRsZV9pbnZhbGlkX3N0cmVhbShzZXNzaW9uLCBm cmFtZSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5HSFRUUDJf RVJSX0ZMT1dfQ09OVFJPTCk7Ci0rICAgIHJldHVybiBzZXNzaW9uX2hhbmRsZV9pbnZhbGlkX2Nv bm5lY3Rpb24oCi0rICAgICAgc2Vzc2lvbiwgZnJhbWUsIE5HSFRUUDJfRVJSX0ZMT1dfQ09OVFJP TCwKLSsgICAgICAiV0lORE9XX1VQREFURTogd2luZG93IHNpemUgb3ZlcmZsb3ciKTsKLSAgIH0K LSAgIHN0cmVhbS0+cmVtb3RlX3dpbmRvd19zaXplICs9IGZyYW1lLT53aW5kb3dfdXBkYXRlLndp bmRvd19zaXplX2luY3JlbWVudDsKLSAKLUBAIC01MjkyLDcgKzQ3OTcsNiBAQCBpbnQgbmdodHRw Ml9zZXNzaW9uX29uX3ByaW9yaXR5X3VwZGF0ZV9yZWNlaXZlZChuZ2h0dHAyX3Nlc3Npb24gKnNl c3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg bmdodHRwMl9mcmFtZSAqZnJhbWUpIHsKLSAgIG5naHR0cDJfZXh0X3ByaW9yaXR5X3VwZGF0ZSAq cHJpb3JpdHlfdXBkYXRlOwotICAgbmdodHRwMl9zdHJlYW0gKnN0cmVhbTsKLS0gIG5naHR0cDJf cHJpb3JpdHlfc3BlYyBwcmlfc3BlYzsKLSAgIG5naHR0cDJfZXh0cHJpIGV4dHByaTsKLSAgIGlu dCBydjsKLSAKLUBAIC01MzMwLDEwICs0ODM0LDkgQEAgaW50IG5naHR0cDJfc2Vzc2lvbl9vbl9w cmlvcml0eV91cGRhdGVfcmVjZWl2ZWQobmdodHRwMl9zZXNzaW9uICpzZXNzaW9uLAotICAgICAg ICAgIlBSSU9SSVRZX1VQREFURTogbWF4IGNvbmN1cnJlbnQgc3RyZWFtcyBleGNlZWRlZCIpOwot ICAgICB9Ci0gCi0tICAgIG5naHR0cDJfcHJpb3JpdHlfc3BlY19kZWZhdWx0X2luaXQoJnByaV9z cGVjKTsKLS0gICAgc3RyZWFtID0gbmdodHRwMl9zZXNzaW9uX29wZW5fc3RyZWFtKHNlc3Npb24s IHByaW9yaXR5X3VwZGF0ZS0+c3RyZWFtX2lkLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgTkdIVFRQMl9GTEFHX05PTkUsICZwcmlfc3BlYywKLS0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5HSFRUUDJfU1RSRUFNX0lETEUsIE5VTEwp OwotKyAgICBzdHJlYW0gPQotKyAgICAgIG5naHR0cDJfc2Vzc2lvbl9vcGVuX3N0cmVhbShzZXNz aW9uLCBwcmlvcml0eV91cGRhdGUtPnN0cmVhbV9pZCwKLSsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgTkdIVFRQMl9GTEFHX05PTkUsIE5HSFRUUDJfU1RSRUFNX0lETEUsIE5VTEwp OwotICAgICBpZiAoIXN0cmVhbSkgewotICAgICAgIHJldHVybiBOR0hUVFAyX0VSUl9OT01FTTsK LSAgICAgfQotQEAgLTU0NDIsMTYgKzQ5NDUsNyBAQCBpbnQgbmdodHRwMl9zZXNzaW9uX29uX2Rh dGFfcmVjZWl2ZWQobmdodHRwMl9zZXNzaW9uICpzZXNzaW9uLAotICAgaWYgKHNlc3Npb25fZW5m b3JjZV9odHRwX21lc3NhZ2luZyhzZXNzaW9uKSAmJgotICAgICAgIChmcmFtZS0+aGQuZmxhZ3Mg JiBOR0hUVFAyX0ZMQUdfRU5EX1NUUkVBTSkpIHsKLSAgICAgaWYgKG5naHR0cDJfaHR0cF9vbl9y ZW1vdGVfZW5kX3N0cmVhbShzdHJlYW0pICE9IDApIHsKLS0gICAgICBydiA9IG5naHR0cDJfc2Vz c2lvbl9hZGRfcnN0X3N0cmVhbShzZXNzaW9uLCBzdHJlYW0tPnN0cmVhbV9pZCwKLS0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOR0hUVFAyX1BST1RPQ09MX0VSUk9S KTsKLS0gICAgICBpZiAobmdodHRwMl9pc19mYXRhbChydikpIHsKLS0gICAgICAgIHJldHVybiBy djsKLS0gICAgICB9Ci0tCi0tICAgICAgbmdodHRwMl9zdHJlYW1fc2h1dGRvd24oc3RyZWFtLCBO R0hUVFAyX1NIVVRfUkQpOwotLSAgICAgIC8qIERvbid0IGNhbGwgbmdodHRwMl9zZXNzaW9uX2Ns b3NlX3N0cmVhbV9pZl9zaHV0X3Jkd3IgYmVjYXVzZQotLSAgICAgICAgIFJTVF9TVFJFQU0gaGFz IGJlZW4gc3VibWl0dGVkLiAqLwotLSAgICAgIHJldHVybiAwOwotKyAgICAgIHJldHVybiBuZ2h0 dHAyX3Nlc3Npb25fdGVybWluYXRlX3Nlc3Npb24oc2Vzc2lvbiwgTkdIVFRQMl9QUk9UT0NPTF9F UlJPUik7Ci0gICAgIH0KLSAgIH0KLSAKLUBAIC01NTA5LDggKzUwMDMsOCBAQCBpbnQgbmdodHRw Ml9zZXNzaW9uX3VwZGF0ZV9yZWN2X3N0cmVhbV93aW5kb3dfc2l6ZShuZ2h0dHAyX3Nlc3Npb24g KnNlc3Npb24sCi0gICBydiA9IGFkanVzdF9yZWN2X3dpbmRvd19zaXplKCZzdHJlYW0tPnJlY3Zf d2luZG93X3NpemUsIGRlbHRhX3NpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHN0cmVhbS0+bG9jYWxfd2luZG93X3NpemUpOwotICAgaWYgKHJ2ICE9IDApIHsKLS0gICAgcmV0 dXJuIG5naHR0cDJfc2Vzc2lvbl9hZGRfcnN0X3N0cmVhbShzZXNzaW9uLCBzdHJlYW0tPnN0cmVh bV9pZCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOR0hUVFAy X0ZMT1dfQ09OVFJPTF9FUlJPUik7Ci0rICAgIHJldHVybiBuZ2h0dHAyX3Nlc3Npb25fdGVybWlu YXRlX3Nlc3Npb24oc2Vzc2lvbiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBOR0hUVFAyX0ZMT1dfQ09OVFJPTF9FUlJPUik7Ci0gICB9Ci0gICAvKiBXZSBk b24ndCBoYXZlIHRvIHNlbmQgV0lORE9XX1VQREFURSBpZiB0aGUgZGF0YSByZWNlaXZlZCBpcyB0 aGUKLSAgICAgIGxhc3QgY2h1bmsgaW4gdGhlIGluY29taW5nIHN0cmVhbS4gKi8KLUBAIC01ODY5 LDE0ICs1MzYzLDYgQEAgbmdodHRwMl9zc2l6ZSBuZ2h0dHAyX3Nlc3Npb25fbWVtX3JlY3YyKG5n aHR0cDJfc2Vzc2lvbiAqc2Vzc2lvbiwKLSAKLSAgIG1lbSA9ICZzZXNzaW9uLT5tZW07Ci0gCi0t ICAvKiBXZSBtYXkgaGF2ZSBpZGxlIHN0cmVhbXMgbW9yZSB0aGFuIHdlIGV4cGVjdCAoZS5nLiwK LS0gICAgIG5naHR0cDJfc2Vzc2lvbl9jaGFuZ2Vfc3RyZWFtX3ByaW9yaXR5KCkgb3IKLS0gICAg IG5naHR0cDJfc2Vzc2lvbl9jcmVhdGVfaWRsZV9zdHJlYW0oKSkuICBBZGp1c3QgdGhlbSBoZXJl LiAqLwotLSAgcnYgPSBuZ2h0dHAyX3Nlc3Npb25fYWRqdXN0X2lkbGVfc3RyZWFtKHNlc3Npb24p OwotLSAgaWYgKG5naHR0cDJfaXNfZmF0YWwocnYpKSB7Ci0tICAgIHJldHVybiBydjsKLS0gIH0K LS0KLSAgIGlmICghbmdodHRwMl9zZXNzaW9uX3dhbnRfcmVhZChzZXNzaW9uKSkgewotICAgICBy ZXR1cm4gKG5naHR0cDJfc3NpemUpaW5sZW47Ci0gICB9Ci1AQCAtNTk4MCwyMCArNTQ2NiwzMCBA QCBuZ2h0dHAyX3NzaXplIG5naHR0cDJfc2Vzc2lvbl9tZW1fcmVjdjIobmdodHRwMl9zZXNzaW9u ICpzZXNzaW9uLAotICAgICAgICAgYnVzeSA9IDE7Ci0gCi0gICAgICAgICBydiA9IHNlc3Npb25f b25fZGF0YV9yZWNlaXZlZF9mYWlsX2Zhc3Qoc2Vzc2lvbik7Ci0rICAgICAgICBpZiAobmdodHRw Ml9pc19mYXRhbChydikpIHsKLSsgICAgICAgICAgcmV0dXJuIHJ2OwotKyAgICAgICAgfQotKwot ICAgICAgICAgaWYgKGlmcmFtZS0+c3RhdGUgPT0gTkdIVFRQMl9JQl9JR05fQUxMKSB7Ci0gICAg ICAgICAgIHJldHVybiAobmdodHRwMl9zc2l6ZSlpbmxlbjsKLSAgICAgICAgIH0KLSAgICAgICAg IGlmIChydiA9PSBOR0hUVFAyX0VSUl9JR05fUEFZTE9BRCkgewotICAgICAgICAgICBERUJVR0Yo InJlY3Y6IERBVEEgbm90IGFsbG93ZWQgc3RyZWFtX2lkPSVkXG4iLAotICAgICAgICAgICAgICAg ICAgaWZyYW1lLT5mcmFtZS5oZC5zdHJlYW1faWQpOwotKwotKyAgICAgICAgICBydiA9IHNlc3Np b25fdXBkYXRlX2dsaXRjaF9yYXRlbGltKHNlc3Npb24pOwotKyAgICAgICAgICBpZiAocnYgIT0g MCkgewotKyAgICAgICAgICAgIHJldHVybiBydjsKLSsgICAgICAgICAgfQotKwotKyAgICAgICAg ICBpZiAoaWZyYW1lLT5zdGF0ZSA9PSBOR0hUVFAyX0lCX0lHTl9BTEwpIHsKLSsgICAgICAgICAg ICByZXR1cm4gKG5naHR0cDJfc3NpemUpaW5sZW47Ci0rICAgICAgICAgIH0KLSsKLSAgICAgICAg ICAgaWZyYW1lLT5zdGF0ZSA9IE5HSFRUUDJfSUJfSUdOX0RBVEE7Ci0gICAgICAgICAgIGJyZWFr OwotICAgICAgICAgfQotIAotLSAgICAgICAgaWYgKG5naHR0cDJfaXNfZmF0YWwocnYpKSB7Ci0t ICAgICAgICAgIHJldHVybiBydjsKLS0gICAgICAgIH0KLS0KLSAgICAgICAgIHJ2ID0gaW5ib3Vu ZF9mcmFtZV9oYW5kbGVfcGFkKGlmcmFtZSwgJmlmcmFtZS0+ZnJhbWUuaGQpOwotICAgICAgICAg aWYgKHJ2IDwgMCkgewotICAgICAgICAgICBydiA9IG5naHR0cDJfc2Vzc2lvbl90ZXJtaW5hdGVf c2Vzc2lvbl93aXRoX3JlYXNvbigKLUBAIC02MDExLDYgKzU1MDcsMjAgQEAgbmdodHRwMl9zc2l6 ZSBuZ2h0dHAyX3Nlc3Npb25fbWVtX3JlY3YyKG5naHR0cDJfc2Vzc2lvbiAqc2Vzc2lvbiwKLSAg ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICB9Ci0gCi0rICAgICAgICAvKiBFbXB0eSBEQVRBIGZy YW1lIHdpdGhvdXQgRU5EX1NUUkVBTSBmbGFnIHNldCBpcwotKyAgICAgICAgICAgc3VzcGljaW91 cy4gKi8KLSsgICAgICAgIGlmIChpZnJhbWUtPnBheWxvYWRsZWZ0ID09IDAgJiYKLSsgICAgICAg ICAgICAoaWZyYW1lLT5mcmFtZS5oZC5mbGFncyAmIE5HSFRUUDJfRkxBR19FTkRfU1RSRUFNKSA9 PSAwKSB7Ci0rICAgICAgICAgIHJ2ID0gc2Vzc2lvbl91cGRhdGVfZ2xpdGNoX3JhdGVsaW0oc2Vz c2lvbik7Ci0rICAgICAgICAgIGlmIChydiAhPSAwKSB7Ci0rICAgICAgICAgICAgcmV0dXJuIHJ2 OwotKyAgICAgICAgICB9Ci0rCi0rICAgICAgICAgIGlmIChpZnJhbWUtPnN0YXRlID09IE5HSFRU UDJfSUJfSUdOX0FMTCkgewotKyAgICAgICAgICAgIHJldHVybiAobmdodHRwMl9zc2l6ZSlpbmxl bjsKLSsgICAgICAgICAgfQotKyAgICAgICAgfQotKwotICAgICAgICAgaWZyYW1lLT5zdGF0ZSA9 IE5HSFRUUDJfSUJfUkVBRF9EQVRBOwotICAgICAgICAgYnJlYWs7Ci0gICAgICAgfQotQEAgLTYw NjMsNiArNTU3MywxMCBAQCBuZ2h0dHAyX3NzaXplIG5naHR0cDJfc2Vzc2lvbl9tZW1fcmVjdjIo bmdodHRwMl9zZXNzaW9uICpzZXNzaW9uLAotICAgICAgICAgICByZXR1cm4gcnY7Ci0gICAgICAg ICB9Ci0gCi0rICAgICAgICBpZiAoaWZyYW1lLT5zdGF0ZSA9PSBOR0hUVFAyX0lCX0lHTl9BTEwp IHsKLSsgICAgICAgICAgcmV0dXJuIChuZ2h0dHAyX3NzaXplKWlubGVuOwotKyAgICAgICAgfQot KwotICAgICAgICAgb25fYmVnaW5fZnJhbWVfY2FsbGVkID0gMTsKLSAKLSAgICAgICAgIHJ2ID0g c2Vzc2lvbl9wcm9jZXNzX2hlYWRlcnNfZnJhbWUoc2Vzc2lvbik7Ci1AQCAtNjA3Nyw4ICs1NTkx LDggQEAgbmdodHRwMl9zc2l6ZSBuZ2h0dHAyX3Nlc3Npb25fbWVtX3JlY3YyKG5naHR0cDJfc2Vz c2lvbiAqc2Vzc2lvbiwKLSAgICAgICAgIH0KLSAKLSAgICAgICAgIGlmIChydiA9PSBOR0hUVFAy X0VSUl9URU1QT1JBTF9DQUxMQkFDS19GQUlMVVJFKSB7Ci0tICAgICAgICAgIHJ2ID0gbmdodHRw Ml9zZXNzaW9uX2FkZF9yc3Rfc3RyZWFtKAotLSAgICAgICAgICAgIHNlc3Npb24sIGlmcmFtZS0+ ZnJhbWUuaGQuc3RyZWFtX2lkLCBOR0hUVFAyX0lOVEVSTkFMX0VSUk9SKTsKLSsgICAgICAgICAg cnYgPSBzZXNzaW9uX2hhbmRsZV9pbnZhbGlkX3N0cmVhbTIoCi0rICAgICAgICAgICAgc2Vzc2lv biwgaWZyYW1lLT5mcmFtZS5oZC5zdHJlYW1faWQsIE5VTEwsIE5HSFRUUDJfRVJSX0lOVEVSTkFM KTsKLSAgICAgICAgICAgaWYgKG5naHR0cDJfaXNfZmF0YWwocnYpKSB7Ci0gICAgICAgICAgICAg cmV0dXJuIHJ2OwotICAgICAgICAgICB9Ci1AQCAtNjA4Nyw2ICs1NjAxLDE1IEBAIG5naHR0cDJf c3NpemUgbmdodHRwMl9zZXNzaW9uX21lbV9yZWN2MihuZ2h0dHAyX3Nlc3Npb24gKnNlc3Npb24s Ci0gICAgICAgICB9Ci0gCi0gICAgICAgICBpZiAocnYgPT0gTkdIVFRQMl9FUlJfSUdOX0hFQURF Ul9CTE9DSykgewotKyAgICAgICAgICBydiA9IHNlc3Npb25fdXBkYXRlX2dsaXRjaF9yYXRlbGlt KHNlc3Npb24pOwotKyAgICAgICAgICBpZiAocnYgIT0gMCkgewotKyAgICAgICAgICAgIHJldHVy biBydjsKLSsgICAgICAgICAgfQotKwotKyAgICAgICAgICBpZiAoaWZyYW1lLT5zdGF0ZSA9PSBO R0hUVFAyX0lCX0lHTl9BTEwpIHsKLSsgICAgICAgICAgICByZXR1cm4gKG5naHR0cDJfc3NpemUp aW5sZW47Ci0rICAgICAgICAgIH0KLSsKLSAgICAgICAgICAgaWZyYW1lLT5zdGF0ZSA9IE5HSFRU UDJfSUJfSUdOX0hFQURFUl9CTE9DSzsKLSAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICB9Ci1A QCAtNjEwNyw2ICs1NjMwLDE4IEBAIG5naHR0cDJfc3NpemUgbmdodHRwMl9zZXNzaW9uX21lbV9y ZWN2MihuZ2h0dHAyX3Nlc3Npb24gKnNlc3Npb24sCi0gICAgICAgICAgIGJyZWFrOwotICAgICAg ICAgfQotIAotKyAgICAgICAgLyogVGhpcyBpcyBkZXByZWNhdGVkIFJGQyA3NTQwIHByaW9yaXRp ZXMgbWVjaGFuaXNtIHdoaWNoIGlzCi0rICAgICAgICAgICB2ZXJ5IHVucG9wdWxhci4gIFdlIGRv IG5vdCBleHBlY3QgaXQgaXMgcmVjZWl2ZWQgc28KLSsgICAgICAgICAgIGZyZXF1ZW50bHkuICov Ci0rICAgICAgICBydiA9IHNlc3Npb25fdXBkYXRlX2dsaXRjaF9yYXRlbGltKHNlc3Npb24pOwot KyAgICAgICAgaWYgKHJ2ICE9IDApIHsKLSsgICAgICAgICAgcmV0dXJuIHJ2OwotKyAgICAgICAg fQotKwotKyAgICAgICAgaWYgKGlmcmFtZS0+c3RhdGUgPT0gTkdIVFRQMl9JQl9JR05fQUxMKSB7 Ci0rICAgICAgICAgIHJldHVybiAobmdodHRwMl9zc2l6ZSlpbmxlbjsKLSsgICAgICAgIH0KLSsK LSAgICAgICAgIGlmcmFtZS0+c3RhdGUgPSBOR0hUVFAyX0lCX1JFQURfTkJZVEU7Ci0gCi0gICAg ICAgICBpbmJvdW5kX2ZyYW1lX3NldF9tYXJrKGlmcmFtZSwgTkdIVFRQMl9QUklPUklUWV9TUEVD TEVOKTsKLUBAIC02MTIzLDcgKzU2NTgsNyBAQCBuZ2h0dHAyX3NzaXplIG5naHR0cDJfc2Vzc2lv bl9tZW1fcmVjdjIobmdodHRwMl9zZXNzaW9uICpzZXNzaW9uLAotICAgICAgICAgICBERUJVR0Yo InJlY3Y6IFdJTkRPV19VUERBVEVcbiIpOwotICAgICAgICAgICBicmVhazsKLSAgICAgICAgIH0K LS0jZW5kaWYgLyogREVCVUdCVUlMRCAqLwotKyNlbmRpZiAvKiBkZWZpbmVkKERFQlVHQlVJTEQp ICovCi0gCi0gICAgICAgICBpZnJhbWUtPmZyYW1lLmhkLmZsYWdzID0gTkdIVFRQMl9GTEFHX05P TkU7Ci0gCi1AQCAtNjI3OSw4ICs1ODE0LDE3IEBAIG5naHR0cDJfc3NpemUgbmdodHRwMl9zZXNz aW9uX21lbV9yZWN2MihuZ2h0dHAyX3Nlc3Npb24gKnNlc3Npb24sCi0gICAgICAgICBpZiAoY2hl Y2tfZXh0X3R5cGVfc2V0KHNlc3Npb24tPnVzZXJfcmVjdl9leHRfdHlwZXMsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGlmcmFtZS0+ZnJhbWUuaGQudHlwZSkpIHsKLSAgICAgICAg ICAgaWYgKCFzZXNzaW9uLT5jYWxsYmFja3MudW5wYWNrX2V4dGVuc2lvbl9jYWxsYmFjaykgewot LSAgICAgICAgICAgIC8qIFNpbGVudGx5IGlnbm9yZSB1bmtub3duIGZyYW1lIHR5cGUuICovCi0r ICAgICAgICAgICAgLyogUmVjZWl2aW5nIHRvbyBmcmVxdWVudCB1bmtub3duIGZyYW1lcyBpcyBz dXNwaWNpb3VzLiAqLwotKyAgICAgICAgICAgIHJ2ID0gc2Vzc2lvbl91cGRhdGVfZ2xpdGNoX3Jh dGVsaW0oc2Vzc2lvbik7Ci0rICAgICAgICAgICAgaWYgKHJ2ICE9IDApIHsKLSsgICAgICAgICAg ICAgIHJldHVybiBydjsKLSsgICAgICAgICAgICB9Ci0rCi0rICAgICAgICAgICAgaWYgKGlmcmFt ZS0+c3RhdGUgPT0gTkdIVFRQMl9JQl9JR05fQUxMKSB7Ci0rICAgICAgICAgICAgICByZXR1cm4g KG5naHR0cDJfc3NpemUpaW5sZW47Ci0rICAgICAgICAgICAgfQotIAotKyAgICAgICAgICAgIC8q IFNpbGVudGx5IGlnbm9yZSB1bmtub3duIGZyYW1lIHR5cGUuICovCi0gICAgICAgICAgICAgYnVz eSA9IDE7Ci0gCi0gICAgICAgICAgICAgaWZyYW1lLT5zdGF0ZSA9IE5HSFRUUDJfSUJfSUdOX1BB WUxPQUQ7Ci1AQCAtNjI5OCw2ICs1ODQyLDE2IEBAIG5naHR0cDJfc3NpemUgbmdodHRwMl9zZXNz aW9uX21lbV9yZWN2MihuZ2h0dHAyX3Nlc3Npb24gKnNlc3Npb24sCi0gICAgICAgICAgIGNhc2Ug TkdIVFRQMl9BTFRTVkM6Ci0gICAgICAgICAgICAgaWYgKChzZXNzaW9uLT5idWlsdGluX3JlY3Zf ZXh0X3R5cGVzICYgTkdIVFRQMl9UWVBFTUFTS19BTFRTVkMpID09Ci0gICAgICAgICAgICAgICAg IDApIHsKLSsgICAgICAgICAgICAgIC8qIFJlY2VpdmluZyB0b28gZnJlcXVlbnQgdW5rbm93biBm cmFtZXMgaXMgc3VzcGljaW91cy4gKi8KLSsgICAgICAgICAgICAgIHJ2ID0gc2Vzc2lvbl91cGRh dGVfZ2xpdGNoX3JhdGVsaW0oc2Vzc2lvbik7Ci0rICAgICAgICAgICAgICBpZiAocnYgIT0gMCkg ewotKyAgICAgICAgICAgICAgICByZXR1cm4gcnY7Ci0rICAgICAgICAgICAgICB9Ci0rCi0rICAg ICAgICAgICAgICBpZiAoaWZyYW1lLT5zdGF0ZSA9PSBOR0hUVFAyX0lCX0lHTl9BTEwpIHsKLSsg ICAgICAgICAgICAgICAgcmV0dXJuIChuZ2h0dHAyX3NzaXplKWlubGVuOwotKyAgICAgICAgICAg ICAgfQotKwotICAgICAgICAgICAgICAgYnVzeSA9IDE7Ci0gICAgICAgICAgICAgICBpZnJhbWUt PnN0YXRlID0gTkdIVFRQMl9JQl9JR05fUEFZTE9BRDsKLSAgICAgICAgICAgICAgIGJyZWFrOwot QEAgLTYzMDksNiArNTg2MywxNyBAQCBuZ2h0dHAyX3NzaXplIG5naHR0cDJfc2Vzc2lvbl9tZW1f cmVjdjIobmdodHRwMl9zZXNzaW9uICpzZXNzaW9uLAotICAgICAgICAgICAgIGlmcmFtZS0+ZnJh bWUuZXh0LnBheWxvYWQgPSAmaWZyYW1lLT5leHRfZnJhbWVfcGF5bG9hZC5hbHRzdmM7Ci0gCi0g ICAgICAgICAgICAgaWYgKHNlc3Npb24tPnNlcnZlcikgewotKyAgICAgICAgICAgICAgLyogUmVj ZWl2aW5nIHRvbyBmcmVxdWVudCBBTFRTVkMgZnJvbSBjbGllbnQgaXMKLSsgICAgICAgICAgICAg ICAgIHN1c3BpY2lvdXMuICovCi0rICAgICAgICAgICAgICBydiA9IHNlc3Npb25fdXBkYXRlX2ds aXRjaF9yYXRlbGltKHNlc3Npb24pOwotKyAgICAgICAgICAgICAgaWYgKHJ2ICE9IDApIHsKLSsg ICAgICAgICAgICAgICAgcmV0dXJuIHJ2OwotKyAgICAgICAgICAgICAgfQotKwotKyAgICAgICAg ICAgICAgaWYgKGlmcmFtZS0+c3RhdGUgPT0gTkdIVFRQMl9JQl9JR05fQUxMKSB7Ci0rICAgICAg ICAgICAgICAgIHJldHVybiAobmdodHRwMl9zc2l6ZSlpbmxlbjsKLSsgICAgICAgICAgICAgIH0K LSsKLSAgICAgICAgICAgICAgIGJ1c3kgPSAxOwotICAgICAgICAgICAgICAgaWZyYW1lLT5zdGF0 ZSA9IE5HSFRUUDJfSUJfSUdOX1BBWUxPQUQ7Ci0gICAgICAgICAgICAgICBicmVhazsKLUBAIC02 MzI4LDYgKzU4OTMsMTYgQEAgbmdodHRwMl9zc2l6ZSBuZ2h0dHAyX3Nlc3Npb25fbWVtX3JlY3Yy KG5naHR0cDJfc2Vzc2lvbiAqc2Vzc2lvbiwKLSAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg ICAgY2FzZSBOR0hUVFAyX09SSUdJTjoKLSAgICAgICAgICAgICBpZiAoIShzZXNzaW9uLT5idWls dGluX3JlY3ZfZXh0X3R5cGVzICYgTkdIVFRQMl9UWVBFTUFTS19PUklHSU4pKSB7Ci0rICAgICAg ICAgICAgICAvKiBSZWNlaXZpbmcgdG9vIGZyZXF1ZW50IHVua25vd24gZnJhbWVzIGlzIHN1c3Bp Y2lvdXMuICovCi0rICAgICAgICAgICAgICBydiA9IHNlc3Npb25fdXBkYXRlX2dsaXRjaF9yYXRl bGltKHNlc3Npb24pOwotKyAgICAgICAgICAgICAgaWYgKHJ2ICE9IDApIHsKLSsgICAgICAgICAg ICAgICAgcmV0dXJuIHJ2OwotKyAgICAgICAgICAgICAgfQotKwotKyAgICAgICAgICAgICAgaWYg KGlmcmFtZS0+c3RhdGUgPT0gTkdIVFRQMl9JQl9JR05fQUxMKSB7Ci0rICAgICAgICAgICAgICAg IHJldHVybiAobmdodHRwMl9zc2l6ZSlpbmxlbjsKLSsgICAgICAgICAgICAgIH0KLSsKLSAgICAg ICAgICAgICAgIGJ1c3kgPSAxOwotICAgICAgICAgICAgICAgaWZyYW1lLT5zdGF0ZSA9IE5HSFRU UDJfSUJfSUdOX1BBWUxPQUQ7Ci0gICAgICAgICAgICAgICBicmVhazsKLUBAIC02MzM5LDYgKzU5 MTQsMTcgQEAgbmdodHRwMl9zc2l6ZSBuZ2h0dHAyX3Nlc3Npb25fbWVtX3JlY3YyKG5naHR0cDJf c2Vzc2lvbiAqc2Vzc2lvbiwKLSAKLSAgICAgICAgICAgICBpZiAoc2Vzc2lvbi0+c2VydmVyIHx8 IGlmcmFtZS0+ZnJhbWUuaGQuc3RyZWFtX2lkIHx8Ci0gICAgICAgICAgICAgICAgIChpZnJhbWUt PmZyYW1lLmhkLmZsYWdzICYgMHhmMCkpIHsKLSsgICAgICAgICAgICAgIC8qIFJlY2VpdmluZyB0 b28gZnJlcXVlbnQgaW52YWxpZCBmcmFtZXMgaXMKLSsgICAgICAgICAgICAgICAgIHN1c3BpY2lv dXMuICovCi0rICAgICAgICAgICAgICBydiA9IHNlc3Npb25fdXBkYXRlX2dsaXRjaF9yYXRlbGlt KHNlc3Npb24pOwotKyAgICAgICAgICAgICAgaWYgKHJ2ICE9IDApIHsKLSsgICAgICAgICAgICAg ICAgcmV0dXJuIHJ2OwotKyAgICAgICAgICAgICAgfQotKwotKyAgICAgICAgICAgICAgaWYgKGlm cmFtZS0+c3RhdGUgPT0gTkdIVFRQMl9JQl9JR05fQUxMKSB7Ci0rICAgICAgICAgICAgICAgIHJl dHVybiAobmdodHRwMl9zc2l6ZSlpbmxlbjsKLSsgICAgICAgICAgICAgIH0KLSsKLSAgICAgICAg ICAgICAgIGJ1c3kgPSAxOwotICAgICAgICAgICAgICAgaWZyYW1lLT5zdGF0ZSA9IE5HSFRUUDJf SUJfSUdOX1BBWUxPQUQ7Ci0gICAgICAgICAgICAgICBicmVhazsKLUBAIC02MzY1LDYgKzU5NTEs MTYgQEAgbmdodHRwMl9zc2l6ZSBuZ2h0dHAyX3Nlc3Npb25fbWVtX3JlY3YyKG5naHR0cDJfc2Vz c2lvbiAqc2Vzc2lvbiwKLSAgICAgICAgICAgY2FzZSBOR0hUVFAyX1BSSU9SSVRZX1VQREFURToK LSAgICAgICAgICAgICBpZiAoKHNlc3Npb24tPmJ1aWx0aW5fcmVjdl9leHRfdHlwZXMgJgotICAg ICAgICAgICAgICAgICAgTkdIVFRQMl9UWVBFTUFTS19QUklPUklUWV9VUERBVEUpID09IDApIHsK LSsgICAgICAgICAgICAgIC8qIFJlY2VpdmluZyB0b28gZnJlcXVlbnQgdW5rbm93biBmcmFtZXMg aXMgc3VzcGljaW91cy4gKi8KLSsgICAgICAgICAgICAgIHJ2ID0gc2Vzc2lvbl91cGRhdGVfZ2xp dGNoX3JhdGVsaW0oc2Vzc2lvbik7Ci0rICAgICAgICAgICAgICBpZiAocnYgIT0gMCkgewotKyAg ICAgICAgICAgICAgICByZXR1cm4gcnY7Ci0rICAgICAgICAgICAgICB9Ci0rCi0rICAgICAgICAg ICAgICBpZiAoaWZyYW1lLT5zdGF0ZSA9PSBOR0hUVFAyX0lCX0lHTl9BTEwpIHsKLSsgICAgICAg ICAgICAgICAgcmV0dXJuIChuZ2h0dHAyX3NzaXplKWlubGVuOwotKyAgICAgICAgICAgICAgfQot KwotICAgICAgICAgICAgICAgYnVzeSA9IDE7Ci0gICAgICAgICAgICAgICBpZnJhbWUtPnN0YXRl ID0gTkdIVFRQMl9JQl9JR05fUEFZTE9BRDsKLSAgICAgICAgICAgICAgIGJyZWFrOwotQEAgLTYz OTIsOCArNTk4OCwxOCBAQCBuZ2h0dHAyX3NzaXplIG5naHR0cDJfc2Vzc2lvbl9tZW1fcmVjdjIo bmdodHRwMl9zZXNzaW9uICpzZXNzaW9uLAotICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg ICAgICAgfQotIAotLSAgICAgICAgICAgIGlmICghc2Vzc2lvbl9ub19yZmM3NTQwX3ByaV9ub19m YWxsYmFjayhzZXNzaW9uKSB8fAotLSAgICAgICAgICAgICAgICBpZnJhbWUtPnBheWxvYWRsZWZ0 ID4gc2l6ZW9mKGlmcmFtZS0+cmF3X3NidWYpKSB7Ci0rICAgICAgICAgICAgLyogUmVjZWl2aW5n IHRvbyBmcmVxdWVudCBQUklPUklUWV9VUERBVEUgaXMKLSsgICAgICAgICAgICAgICBzdXNwaWNp b3VzLiAqLwotKyAgICAgICAgICAgIHJ2ID0gc2Vzc2lvbl91cGRhdGVfZ2xpdGNoX3JhdGVsaW0o c2Vzc2lvbik7Ci0rICAgICAgICAgICAgaWYgKHJ2ICE9IDApIHsKLSsgICAgICAgICAgICAgIHJl dHVybiBydjsKLSsgICAgICAgICAgICB9Ci0rCi0rICAgICAgICAgICAgaWYgKGlmcmFtZS0+c3Rh dGUgPT0gTkdIVFRQMl9JQl9JR05fQUxMKSB7Ci0rICAgICAgICAgICAgICByZXR1cm4gKG5naHR0 cDJfc3NpemUpaW5sZW47Ci0rICAgICAgICAgICAgfQotKwotKyAgICAgICAgICAgIGlmIChpZnJh bWUtPnBheWxvYWRsZWZ0ID4gc2l6ZW9mKGlmcmFtZS0+cmF3X3NidWYpKSB7Ci0gICAgICAgICAg ICAgICBidXN5ID0gMTsKLSAgICAgICAgICAgICAgIGlmcmFtZS0+c3RhdGUgPSBOR0hUVFAyX0lC X0lHTl9QQVlMT0FEOwotICAgICAgICAgICAgICAgYnJlYWs7Ci1AQCAtNjQwNiw2ICs2MDEyLDE2 IEBAIG5naHR0cDJfc3NpemUgbmdodHRwMl9zZXNzaW9uX21lbV9yZWN2MihuZ2h0dHAyX3Nlc3Np b24gKnNlc3Npb24sCi0gCi0gICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgIGRlZmF1bHQ6 Ci0rICAgICAgICAgICAgLyogUmVjZWl2aW5nIHRvbyBmcmVxdWVudCB1bmtub3duIGZyYW1lcyBp cyBzdXNwaWNpb3VzLiAqLwotKyAgICAgICAgICAgIHJ2ID0gc2Vzc2lvbl91cGRhdGVfZ2xpdGNo X3JhdGVsaW0oc2Vzc2lvbik7Ci0rICAgICAgICAgICAgaWYgKHJ2ICE9IDApIHsKLSsgICAgICAg ICAgICAgIHJldHVybiBydjsKLSsgICAgICAgICAgICB9Ci0rCi0rICAgICAgICAgICAgaWYgKGlm cmFtZS0+c3RhdGUgPT0gTkdIVFRQMl9JQl9JR05fQUxMKSB7Ci0rICAgICAgICAgICAgICByZXR1 cm4gKG5naHR0cDJfc3NpemUpaW5sZW47Ci0rICAgICAgICAgICAgfQotKwotICAgICAgICAgICAg IGJ1c3kgPSAxOwotIAotICAgICAgICAgICAgIGlmcmFtZS0+c3RhdGUgPSBOR0hUVFAyX0lCX0lH Tl9QQVlMT0FEOwotQEAgLTY0MjksNiArNjA0NSwxMCBAQCBuZ2h0dHAyX3NzaXplIG5naHR0cDJf c2Vzc2lvbl9tZW1fcmVjdjIobmdodHRwMl9zZXNzaW9uICpzZXNzaW9uLAotICAgICAgICAgICBp ZiAobmdodHRwMl9pc19mYXRhbChydikpIHsKLSAgICAgICAgICAgICByZXR1cm4gcnY7Ci0gICAg ICAgICAgIH0KLSsKLSsgICAgICAgICAgaWYgKGlmcmFtZS0+c3RhdGUgPT0gTkdIVFRQMl9JQl9J R05fQUxMKSB7Ci0rICAgICAgICAgICAgcmV0dXJuIChuZ2h0dHAyX3NzaXplKWlubGVuOwotKyAg ICAgICAgICB9Ci0gICAgICAgICB9Ci0gICAgICAgfQotIAotQEAgLTY0OTIsOCArNjExMiw4IEBA IG5naHR0cDJfc3NpemUgbmdodHRwMl9zZXNzaW9uX21lbV9yZWN2MihuZ2h0dHAyX3Nlc3Npb24g KnNlc3Npb24sCi0gICAgICAgICB9Ci0gCi0gICAgICAgICBpZiAocnYgPT0gTkdIVFRQMl9FUlJf VEVNUE9SQUxfQ0FMTEJBQ0tfRkFJTFVSRSkgewotLSAgICAgICAgICBydiA9IG5naHR0cDJfc2Vz c2lvbl9hZGRfcnN0X3N0cmVhbSgKLS0gICAgICAgICAgICBzZXNzaW9uLCBpZnJhbWUtPmZyYW1l LmhkLnN0cmVhbV9pZCwgTkdIVFRQMl9JTlRFUk5BTF9FUlJPUik7Ci0rICAgICAgICAgIHJ2ID0g c2Vzc2lvbl9oYW5kbGVfaW52YWxpZF9zdHJlYW0yKAotKyAgICAgICAgICAgIHNlc3Npb24sIGlm cmFtZS0+ZnJhbWUuaGQuc3RyZWFtX2lkLCBOVUxMLCBOR0hUVFAyX0VSUl9JTlRFUk5BTCk7Ci0g ICAgICAgICAgIGlmIChuZ2h0dHAyX2lzX2ZhdGFsKHJ2KSkgewotICAgICAgICAgICAgIHJldHVy biBydjsKLSAgICAgICAgICAgfQotQEAgLTY1MDIsMjYgKzYxMjIsMjMgQEAgbmdodHRwMl9zc2l6 ZSBuZ2h0dHAyX3Nlc3Npb25fbWVtX3JlY3YyKG5naHR0cDJfc2Vzc2lvbiAqc2Vzc2lvbiwKLSAg ICAgICAgIH0KLSAKLSAgICAgICAgIGlmIChydiA9PSBOR0hUVFAyX0VSUl9JR05fSEVBREVSX0JM T0NLKSB7Ci0tICAgICAgICAgIGlmcmFtZS0+c3RhdGUgPSBOR0hUVFAyX0lCX0lHTl9IRUFERVJf QkxPQ0s7Ci0tICAgICAgICAgIGJyZWFrOwotLSAgICAgICAgfQotLQotLSAgICAgICAgaWZyYW1l LT5zdGF0ZSA9IE5HSFRUUDJfSUJfUkVBRF9IRUFERVJfQkxPQ0s7Ci0tCi0tICAgICAgICBicmVh azsKLS0gICAgICBjYXNlIE5HSFRUUDJfUFJJT1JJVFk6Ci0tICAgICAgICBpZiAoIXNlc3Npb25f bm9fcmZjNzU0MF9wcmlfbm9fZmFsbGJhY2soc2Vzc2lvbikgJiYKLS0gICAgICAgICAgICBzZXNz aW9uLT5yZW1vdGVfc2V0dGluZ3Mubm9fcmZjNzU0MF9wcmlvcml0aWVzICE9IDEpIHsKLS0gICAg ICAgICAgcnYgPSBzZXNzaW9uX3Byb2Nlc3NfcHJpb3JpdHlfZnJhbWUoc2Vzc2lvbik7Ci0tICAg ICAgICAgIGlmIChuZ2h0dHAyX2lzX2ZhdGFsKHJ2KSkgewotKyAgICAgICAgICBydiA9IHNlc3Np b25fdXBkYXRlX2dsaXRjaF9yYXRlbGltKHNlc3Npb24pOwotKyAgICAgICAgICBpZiAocnYgIT0g MCkgewotICAgICAgICAgICAgIHJldHVybiBydjsKLSAgICAgICAgICAgfQotIAotICAgICAgICAg ICBpZiAoaWZyYW1lLT5zdGF0ZSA9PSBOR0hUVFAyX0lCX0lHTl9BTEwpIHsKLSAgICAgICAgICAg ICByZXR1cm4gKG5naHR0cDJfc3NpemUpaW5sZW47Ci0gICAgICAgICAgIH0KLSsKLSsgICAgICAg ICAgaWZyYW1lLT5zdGF0ZSA9IE5HSFRUUDJfSUJfSUdOX0hFQURFUl9CTE9DSzsKLSsgICAgICAg ICAgYnJlYWs7Ci0gICAgICAgICB9Ci0gCi0rICAgICAgICBpZnJhbWUtPnN0YXRlID0gTkdIVFRQ Ml9JQl9SRUFEX0hFQURFUl9CTE9DSzsKLSsKLSsgICAgICAgIGJyZWFrOwotKyAgICAgIGNhc2Ug TkdIVFRQMl9QUklPUklUWToKLSAgICAgICAgIHNlc3Npb25faW5ib3VuZF9mcmFtZV9yZXNldChz ZXNzaW9uKTsKLSAKLSAgICAgICAgIGJyZWFrOwotQEAgLTY1NzksOSArNjE5Niw5IEBAIG5naHR0 cDJfc3NpemUgbmdodHRwMl9zZXNzaW9uX21lbV9yZWN2MihuZ2h0dHAyX3Nlc3Npb24gKnNlc3Np b24sCi0gICAgICAgICB9Ci0gCi0gICAgICAgICBpZiAocnYgPT0gTkdIVFRQMl9FUlJfVEVNUE9S QUxfQ0FMTEJBQ0tfRkFJTFVSRSkgewotLSAgICAgICAgICBydiA9IG5naHR0cDJfc2Vzc2lvbl9h ZGRfcnN0X3N0cmVhbSgKLS0gICAgICAgICAgICBzZXNzaW9uLCBpZnJhbWUtPmZyYW1lLnB1c2hf cHJvbWlzZS5wcm9taXNlZF9zdHJlYW1faWQsCi0tICAgICAgICAgICAgTkdIVFRQMl9JTlRFUk5B TF9FUlJPUik7Ci0rICAgICAgICAgIHJ2ID0gc2Vzc2lvbl9oYW5kbGVfaW52YWxpZF9zdHJlYW0y KAotKyAgICAgICAgICAgIHNlc3Npb24sIGlmcmFtZS0+ZnJhbWUucHVzaF9wcm9taXNlLnByb21p c2VkX3N0cmVhbV9pZCwgTlVMTCwKLSsgICAgICAgICAgICBOR0hUVFAyX0VSUl9JTlRFUk5BTCk7 Ci0gICAgICAgICAgIGlmIChuZ2h0dHAyX2lzX2ZhdGFsKHJ2KSkgewotICAgICAgICAgICAgIHJl dHVybiBydjsKLSAgICAgICAgICAgfQotQEAgLTY2ODQsNiArNjMwMSwxMCBAQCBuZ2h0dHAyX3Nz aXplIG5naHR0cDJfc2Vzc2lvbl9tZW1fcmVjdjIobmdodHRwMl9zZXNzaW9uICpzZXNzaW9uLAot ICAgICAgICAgICByZXR1cm4gcnY7Ci0gICAgICAgICB9Ci0gCi0rICAgICAgICBpZiAoaWZyYW1l LT5zdGF0ZSA9PSBOR0hUVFAyX0lCX0lHTl9BTEwpIHsKLSsgICAgICAgICAgcmV0dXJuIChuZ2h0 dHAyX3NzaXplKWlubGVuOwotKyAgICAgICAgfQotKwotICAgICAgICAgc2Vzc2lvbl9pbmJvdW5k X2ZyYW1lX3Jlc2V0KHNlc3Npb24pOwotIAotICAgICAgICAgYnJlYWs7Ci1AQCAtNjcwNiw3ICs2 MzI3LDcgQEAgbmdodHRwMl9zc2l6ZSBuZ2h0dHAyX3Nlc3Npb25fbWVtX3JlY3YyKG5naHR0cDJf c2Vzc2lvbiAqc2Vzc2lvbiwKLSAgICAgICB9IGVsc2UgewotICAgICAgICAgREVCVUdGKCJyZWN2 OiBbSUJfSUdOX0hFQURFUl9CTE9DS11cbiIpOwotICAgICAgIH0KLS0jZW5kaWYgLyogREVCVUdC VUlMRCAqLwotKyNlbmRpZiAvKiBkZWZpbmVkKERFQlVHQlVJTEQpICovCi0gCi0gICAgICAgcmVh ZGxlbiA9IGluYm91bmRfZnJhbWVfcGF5bG9hZF9yZWFkbGVuKGlmcmFtZSwgaW4sIGxhc3QpOwot IAotQEAgLTY3NTksMTIgKzYzODAsMTIgQEAgbmdodHRwMl9zc2l6ZSBuZ2h0dHAyX3Nlc3Npb25f bWVtX3JlY3YyKG5naHR0cDJfc2Vzc2lvbiAqc2Vzc2lvbiwKLSAgICAgICAgICAgaWZyYW1lLT5w YXlsb2FkbGVmdCAtPSBoZF9wcm9jbGVuOwotIAotICAgICAgICAgICAvKiBVc2UgcHJvbWlzZWQg c3RyZWFtIElEIGZvciBQVVNIX1BST01JU0UgKi8KLS0gICAgICAgICAgcnYgPSBuZ2h0dHAyX3Nl c3Npb25fYWRkX3JzdF9zdHJlYW0oCi0rICAgICAgICAgIHJ2ID0gc2Vzc2lvbl9oYW5kbGVfaW52 YWxpZF9zdHJlYW0yKAotICAgICAgICAgICAgIHNlc3Npb24sCi0gICAgICAgICAgICAgaWZyYW1l LT5mcmFtZS5oZC50eXBlID09IE5HSFRUUDJfUFVTSF9QUk9NSVNFCi0gICAgICAgICAgICAgICA/ IGlmcmFtZS0+ZnJhbWUucHVzaF9wcm9taXNlLnByb21pc2VkX3N0cmVhbV9pZAotICAgICAgICAg ICAgICAgOiBpZnJhbWUtPmZyYW1lLmhkLnN0cmVhbV9pZCwKLS0gICAgICAgICAgICBOR0hUVFAy X0lOVEVSTkFMX0VSUk9SKTsKLSsgICAgICAgICAgICBOVUxMLCBOR0hUVFAyX0VSUl9JTlRFUk5B TCk7Ci0gICAgICAgICAgIGlmIChuZ2h0dHAyX2lzX2ZhdGFsKHJ2KSkgewotICAgICAgICAgICAg IHJldHVybiBydjsKLSAgICAgICAgICAgfQotQEAgLTY4MTEsNiArNjQzMiwxMCBAQCBuZ2h0dHAy X3NzaXplIG5naHR0cDJfc2Vzc2lvbl9tZW1fcmVjdjIobmdodHRwMl9zZXNzaW9uICpzZXNzaW9u LAotICAgICAgICAgICBpZiAobmdodHRwMl9pc19mYXRhbChydikpIHsKLSAgICAgICAgICAgICBy ZXR1cm4gcnY7Ci0gICAgICAgICAgIH0KLSsKLSsgICAgICAgICAgaWYgKGlmcmFtZS0+c3RhdGUg PT0gTkdIVFRQMl9JQl9JR05fQUxMKSB7Ci0rICAgICAgICAgICAgcmV0dXJuIChuZ2h0dHAyX3Nz aXplKWlubGVuOwotKyAgICAgICAgICB9Ci0gICAgICAgICB9Ci0gICAgICAgICBzZXNzaW9uX2lu Ym91bmRfZnJhbWVfcmVzZXQoc2Vzc2lvbik7Ci0gCi1AQCAtNjkzNCw3ICs2NTU5LDcgQEAgbmdo dHRwMl9zc2l6ZSBuZ2h0dHAyX3Nlc3Npb25fbWVtX3JlY3YyKG5naHR0cDJfc2Vzc2lvbiAqc2Vz c2lvbiwKLSAgICAgICB9IGVsc2UgewotICAgICAgICAgZnByaW50ZihzdGRlcnIsICJyZWN2OiBb SUJfSUdOX0NPTlRJTlVBVElPTl1cbiIpOwotICAgICAgIH0KLS0jZW5kaWYgLyogREVCVUdCVUlM RCAqLwotKyNlbmRpZiAvKiBkZWZpbmVkKERFQlVHQlVJTEQpICovCi0gCi0gICAgICAgaWYgKCsr c2Vzc2lvbi0+bnVtX2NvbnRpbnVhdGlvbnMgPiBzZXNzaW9uLT5tYXhfY29udGludWF0aW9ucykg ewotICAgICAgICAgcmV0dXJuIE5HSFRUUDJfRVJSX1RPT19NQU5ZX0NPTlRJTlVBVElPTlM7Ci1A QCAtNjk4Niw2ICs2NjExLDEwIEBAIG5naHR0cDJfc3NpemUgbmdodHRwMl9zZXNzaW9uX21lbV9y ZWN2MihuZ2h0dHAyX3Nlc3Npb24gKnNlc3Npb24sCi0gICAgICAgICBpZiAobmdodHRwMl9pc19m YXRhbChydikpIHsKLSAgICAgICAgICAgcmV0dXJuIHJ2OwotICAgICAgICAgfQotKwotKyAgICAg ICAgaWYgKGlmcmFtZS0+c3RhdGUgPT0gTkdIVFRQMl9JQl9JR05fQUxMKSB7Ci0rICAgICAgICAg IHJldHVybiAobmdodHRwMl9zc2l6ZSlpbmxlbjsKLSsgICAgICAgIH0KLSAgICAgICB9IGVsc2Ug ewotICAgICAgICAgaWZyYW1lLT5zdGF0ZSA9IE5HSFRUUDJfSUJfSUdOX0hFQURFUl9CTE9DSzsK LSAgICAgICB9Ci1AQCAtNzAzNiw2ICs2NjY1LDEwIEBAIG5naHR0cDJfc3NpemUgbmdodHRwMl9z ZXNzaW9uX21lbV9yZWN2MihuZ2h0dHAyX3Nlc3Npb24gKnNlc3Npb24sCi0gICAgICAgICBpZiAo bmdodHRwMl9pc19mYXRhbChydikpIHsKLSAgICAgICAgICAgcmV0dXJuIHJ2OwotICAgICAgICAg fQotKwotKyAgICAgICAgaWYgKGlmcmFtZS0+c3RhdGUgPT0gTkdIVFRQMl9JQl9JR05fQUxMKSB7 Ci0rICAgICAgICAgIHJldHVybiAobmdodHRwMl9zc2l6ZSlpbmxlbjsKLSsgICAgICAgIH0KLSAg ICAgICB9Ci0gCi0gICAgICAgYnVzeSA9IDE7Ci1AQCAtNzA1Miw2ICs2Njg1LDIwIEBAIG5naHR0 cDJfc3NpemUgbmdodHRwMl9zZXNzaW9uX21lbV9yZWN2MihuZ2h0dHAyX3Nlc3Npb24gKnNlc3Np b24sCi0gCi0gICAgICAgaWZyYW1lLT5mcmFtZS5kYXRhLnBhZGxlbiA9IChzaXplX3QpcGFkbGVu OwotIAotKyAgICAgIC8qIEVtcHR5IERBVEEgZnJhbWUgd2l0aG91dCBFTkRfU1RSRUFNIGZsYWcg c2V0IGlzCi0rICAgICAgICAgc3VzcGljaW91cy4gKi8KLSsgICAgICBpZiAoaWZyYW1lLT5wYXls b2FkbGVmdCA9PSAwICYmCi0rICAgICAgICAgIChpZnJhbWUtPmZyYW1lLmhkLmZsYWdzICYgTkdI VFRQMl9GTEFHX0VORF9TVFJFQU0pID09IDApIHsKLSsgICAgICAgIHJ2ID0gc2Vzc2lvbl91cGRh dGVfZ2xpdGNoX3JhdGVsaW0oc2Vzc2lvbik7Ci0rICAgICAgICBpZiAocnYgIT0gMCkgewotKyAg ICAgICAgICByZXR1cm4gcnY7Ci0rICAgICAgICB9Ci0rCi0rICAgICAgICBpZiAoaWZyYW1lLT5z dGF0ZSA9PSBOR0hUVFAyX0lCX0lHTl9BTEwpIHsKLSsgICAgICAgICAgcmV0dXJuIChuZ2h0dHAy X3NzaXplKWlubGVuOwotKyAgICAgICAgfQotKyAgICAgIH0KLSsKLSAgICAgICBpZnJhbWUtPnN0 YXRlID0gTkdIVFRQMl9JQl9SRUFEX0RBVEE7Ci0gCi0gICAgICAgYnJlYWs7Ci1AQCAtNzA5NCw2 ICs2NzQxLDEwIEBAIG5naHR0cDJfc3NpemUgbmdodHRwMl9zZXNzaW9uX21lbV9yZWN2MihuZ2h0 dHAyX3Nlc3Npb24gKnNlc3Npb24sCi0gICAgICAgICAgIHJldHVybiBydjsKLSAgICAgICAgIH0K LSAKLSsgICAgICAgIGlmIChpZnJhbWUtPnN0YXRlID09IE5HSFRUUDJfSUJfSUdOX0FMTCkgewot KyAgICAgICAgICByZXR1cm4gKG5naHR0cDJfc3NpemUpaW5sZW47Ci0rICAgICAgICB9Ci0rCi0g ICAgICAgICBkYXRhX3JlYWRsZW4gPQotICAgICAgICAgICBpbmJvdW5kX2ZyYW1lX2VmZmVjdGl2 ZV9yZWFkbGVuKGlmcmFtZSwgaWZyYW1lLT5wYXlsb2FkbGVmdCwgcmVhZGxlbik7Ci0gCi1AQCAt NzEyMyw0MSArNjc3NCwzMCBAQCBuZ2h0dHAyX3NzaXplIG5naHR0cDJfc2Vzc2lvbl9tZW1fcmVj djIobmdodHRwMl9zZXNzaW9uICpzZXNzaW9uLAotICAgICAgICAgaWYgKGRhdGFfcmVhZGxlbiA+ IDApIHsKLSAgICAgICAgICAgaWYgKHNlc3Npb25fZW5mb3JjZV9odHRwX21lc3NhZ2luZyhzZXNz aW9uKSkgewotICAgICAgICAgICAgIGlmIChuZ2h0dHAyX2h0dHBfb25fZGF0YV9jaHVuayhzdHJl YW0sIChzaXplX3QpZGF0YV9yZWFkbGVuKSAhPSAwKSB7Ci0tICAgICAgICAgICAgICBpZiAoc2Vz c2lvbi0+b3B0X2ZsYWdzICYgTkdIVFRQMl9PUFRNQVNLX05PX0FVVE9fV0lORE9XX1VQREFURSkg ewotLSAgICAgICAgICAgICAgICAvKiBDb25zdW1lIGFsbCBkYXRhIGZvciBjb25uZWN0aW9uIGlt bWVkaWF0ZWx5IGhlcmUgKi8KLS0gICAgICAgICAgICAgICAgcnYgPSBzZXNzaW9uX3VwZGF0ZV9j b25uZWN0aW9uX2NvbnN1bWVkX3NpemUoCi0tICAgICAgICAgICAgICAgICAgc2Vzc2lvbiwgKHNp emVfdClkYXRhX3JlYWRsZW4pOwotLQotLSAgICAgICAgICAgICAgICBpZiAobmdodHRwMl9pc19m YXRhbChydikpIHsKLS0gICAgICAgICAgICAgICAgICByZXR1cm4gcnY7Ci0tICAgICAgICAgICAg ICAgIH0KLS0KLS0gICAgICAgICAgICAgICAgaWYgKGlmcmFtZS0+c3RhdGUgPT0gTkdIVFRQMl9J Ql9JR05fREFUQSkgewotLSAgICAgICAgICAgICAgICAgIHJldHVybiAobmdodHRwMl9zc2l6ZSlp bmxlbjsKLS0gICAgICAgICAgICAgICAgfQotLSAgICAgICAgICAgICAgfQotLQotLSAgICAgICAg ICAgICAgcnYgPSBuZ2h0dHAyX3Nlc3Npb25fYWRkX3JzdF9zdHJlYW0oCi0tICAgICAgICAgICAg ICAgIHNlc3Npb24sIGlmcmFtZS0+ZnJhbWUuaGQuc3RyZWFtX2lkLCBOR0hUVFAyX1BST1RPQ09M X0VSUk9SKTsKLSsgICAgICAgICAgICAgIHJ2ID0gbmdodHRwMl9zZXNzaW9uX3Rlcm1pbmF0ZV9z ZXNzaW9uKHNlc3Npb24sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBOR0hUVFAyX1BST1RPQ09MX0VSUk9SKTsKLSAgICAgICAgICAgICAgIGlm IChuZ2h0dHAyX2lzX2ZhdGFsKHJ2KSkgewotICAgICAgICAgICAgICAgICByZXR1cm4gcnY7Ci0g ICAgICAgICAgICAgICB9Ci0tICAgICAgICAgICAgICBidXN5ID0gMTsKLS0gICAgICAgICAgICAg IGlmcmFtZS0+c3RhdGUgPSBOR0hUVFAyX0lCX0lHTl9EQVRBOwotLSAgICAgICAgICAgICAgYnJl YWs7Ci0rCi0rICAgICAgICAgICAgICByZXR1cm4gKG5naHR0cDJfc3NpemUpaW5sZW47Ci0gICAg ICAgICAgICAgfQotICAgICAgICAgICB9Ci0gICAgICAgICAgIGlmIChzZXNzaW9uLT5jYWxsYmFj a3Mub25fZGF0YV9jaHVua19yZWN2X2NhbGxiYWNrKSB7Ci0gICAgICAgICAgICAgcnYgPSBzZXNz aW9uLT5jYWxsYmFja3Mub25fZGF0YV9jaHVua19yZWN2X2NhbGxiYWNrKAotICAgICAgICAgICAg ICAgc2Vzc2lvbiwgaWZyYW1lLT5mcmFtZS5oZC5mbGFncywgaWZyYW1lLT5mcmFtZS5oZC5zdHJl YW1faWQsCi0gICAgICAgICAgICAgICBpbiAtIHJlYWRsZW4sIChzaXplX3QpZGF0YV9yZWFkbGVu LCBzZXNzaW9uLT51c2VyX2RhdGEpOwotLSAgICAgICAgICAgIGlmIChydiA9PSBOR0hUVFAyX0VS Ul9QQVVTRSkgewotLSAgICAgICAgICAgICAgcmV0dXJuIChuZ2h0dHAyX3NzaXplKShpbiAtIGZp cnN0KTsKLS0gICAgICAgICAgICB9Ci0tCi0gICAgICAgICAgICAgaWYgKG5naHR0cDJfaXNfZmF0 YWwocnYpKSB7Ci0gICAgICAgICAgICAgICByZXR1cm4gTkdIVFRQMl9FUlJfQ0FMTEJBQ0tfRkFJ TFVSRTsKLSAgICAgICAgICAgICB9Ci0rCi0rICAgICAgICAgICAgaWYgKGlmcmFtZS0+c3RhdGUg PT0gTkdIVFRQMl9JQl9JR05fQUxMKSB7Ci0rICAgICAgICAgICAgICByZXR1cm4gKG5naHR0cDJf c3NpemUpaW5sZW47Ci0rICAgICAgICAgICAgfQotKwotKyAgICAgICAgICAgIGlmIChydiA9PSBO R0hUVFAyX0VSUl9QQVVTRSkgewotKyAgICAgICAgICAgICAgcmV0dXJuIChuZ2h0dHAyX3NzaXpl KShpbiAtIGZpcnN0KTsKLSsgICAgICAgICAgICB9Ci0gICAgICAgICAgIH0KLSAgICAgICAgIH0K LSAgICAgICB9Ci1AQCAtNzE3MSw2ICs2ODExLDEwIEBAIG5naHR0cDJfc3NpemUgbmdodHRwMl9z ZXNzaW9uX21lbV9yZWN2MihuZ2h0dHAyX3Nlc3Npb24gKnNlc3Npb24sCi0gICAgICAgICByZXR1 cm4gcnY7Ci0gICAgICAgfQotIAotKyAgICAgIGlmIChpZnJhbWUtPnN0YXRlID09IE5HSFRUUDJf SUJfSUdOX0FMTCkgewotKyAgICAgICAgcmV0dXJuIChuZ2h0dHAyX3NzaXplKWlubGVuOwotKyAg ICAgIH0KLSsKLSAgICAgICBzZXNzaW9uX2luYm91bmRfZnJhbWVfcmVzZXQoc2Vzc2lvbik7Ci0g Ci0gICAgICAgYnJlYWs7Ci1AQCAtNzIzNyw2ICs2ODgxLDEwIEBAIG5naHR0cDJfc3NpemUgbmdo dHRwMl9zZXNzaW9uX21lbV9yZWN2MihuZ2h0dHAyX3Nlc3Npb24gKnNlc3Npb24sCi0gICAgICAg ICAgIHJldHVybiBydjsKLSAgICAgICAgIH0KLSAKLSsgICAgICAgIGlmIChpZnJhbWUtPnN0YXRl ID09IE5HSFRUUDJfSUJfSUdOX0FMTCkgewotKyAgICAgICAgICByZXR1cm4gKG5naHR0cDJfc3Np emUpaW5sZW47Ci0rICAgICAgICB9Ci0rCi0gICAgICAgICBpZiAocnYgIT0gMCkgewotICAgICAg ICAgICBidXN5ID0gMTsKLSAKLUBAIC03MjU1LDYgKzY5MDMsMTAgQEAgbmdodHRwMl9zc2l6ZSBu Z2h0dHAyX3Nlc3Npb25fbWVtX3JlY3YyKG5naHR0cDJfc2Vzc2lvbiAqc2Vzc2lvbiwKLSAgICAg ICAgIHJldHVybiBydjsKLSAgICAgICB9Ci0gCi0rICAgICAgaWYgKGlmcmFtZS0+c3RhdGUgPT0g TkdIVFRQMl9JQl9JR05fQUxMKSB7Ci0rICAgICAgICByZXR1cm4gKG5naHR0cDJfc3NpemUpaW5s ZW47Ci0rICAgICAgfQotKwotICAgICAgIHNlc3Npb25faW5ib3VuZF9mcmFtZV9yZXNldChzZXNz aW9uKTsKLSAKLSAgICAgICBicmVhazsKLUBAIC03MjgzLDYgKzY5MzUsMTAgQEAgbmdodHRwMl9z c2l6ZSBuZ2h0dHAyX3Nlc3Npb25fbWVtX3JlY3YyKG5naHR0cDJfc2Vzc2lvbiAqc2Vzc2lvbiwK LSAgICAgICAgIHJldHVybiBydjsKLSAgICAgICB9Ci0gCi0rICAgICAgaWYgKGlmcmFtZS0+c3Rh dGUgPT0gTkdIVFRQMl9JQl9JR05fQUxMKSB7Ci0rICAgICAgICByZXR1cm4gKG5naHR0cDJfc3Np emUpaW5sZW47Ci0rICAgICAgfQotKwotICAgICAgIHNlc3Npb25faW5ib3VuZF9mcmFtZV9yZXNl dChzZXNzaW9uKTsKLSAKLSAgICAgICBicmVhazsKLUBAIC03NDA0LDkgKzcwNjAsNyBAQCBpbnQg bmdodHRwMl9zZXNzaW9uX3dhbnRfd3JpdGUobmdodHRwMl9zZXNzaW9uICpzZXNzaW9uKSB7Ci0g ICAgKi8KLSAgIHJldHVybiBzZXNzaW9uLT5hb2IuaXRlbSB8fCBuZ2h0dHAyX291dGJvdW5kX3F1 ZXVlX3RvcCgmc2Vzc2lvbi0+b2JfdXJnZW50KSB8fAotICAgICAgICAgIG5naHR0cDJfb3V0Ym91 bmRfcXVldWVfdG9wKCZzZXNzaW9uLT5vYl9yZWcpIHx8Ci0tICAgICAgICAgKCghbmdodHRwMl9w cV9lbXB0eSgmc2Vzc2lvbi0+cm9vdC5vYnEpIHx8Ci0tICAgICAgICAgICAhc2Vzc2lvbl9zY2hl ZF9lbXB0eShzZXNzaW9uKSkgJiYKLS0gICAgICAgICAgc2Vzc2lvbi0+cmVtb3RlX3dpbmRvd19z aXplID4gMCkgfHwKLSsgICAgICAgICAoIXNlc3Npb25fc2NoZWRfZW1wdHkoc2Vzc2lvbikgJiYg c2Vzc2lvbi0+cmVtb3RlX3dpbmRvd19zaXplID4gMCkgfHwKLSAgICAgICAgICAobmdodHRwMl9v dXRib3VuZF9xdWV1ZV90b3AoJnNlc3Npb24tPm9iX3N5bikgJiYKLSAgICAgICAgICAgIXNlc3Np b25faXNfb3V0Z29pbmdfY29uY3VycmVudF9zdHJlYW1zX21heChzZXNzaW9uKSk7Ci0gfQotQEAg LTgwNDYsNyArNzcwMCw2IEBAIHN0YXRpYyBpbnQgbmdodHRwMl9zZXNzaW9uX3VwZ3JhZGVfaW50 ZXJuYWwobmdodHRwMl9zZXNzaW9uICpzZXNzaW9uLAotICAgbmdodHRwMl9zZXR0aW5nc19lbnRy eSAqaXY7Ci0gICBzaXplX3Qgbml2OwotICAgaW50IHJ2OwotLSAgbmdodHRwMl9wcmlvcml0eV9z cGVjIHByaV9zcGVjOwotICAgbmdodHRwMl9tZW0gKm1lbTsKLSAKLSAgIG1lbSA9ICZzZXNzaW9u LT5tZW07Ci1AQCAtODA4MywxOCArNzczNiwxMyBAQCBzdGF0aWMgaW50IG5naHR0cDJfc2Vzc2lv bl91cGdyYWRlX2ludGVybmFsKG5naHR0cDJfc2Vzc2lvbiAqc2Vzc2lvbiwKLSAgICAgcmV0dXJu IHJ2OwotICAgfQotIAotLSAgbmdodHRwMl9wcmlvcml0eV9zcGVjX2RlZmF1bHRfaW5pdCgmcHJp X3NwZWMpOwotLQotICAgc3RyZWFtID0gbmdodHRwMl9zZXNzaW9uX29wZW5fc3RyZWFtKAotLSAg ICBzZXNzaW9uLCAxLCBOR0hUVFAyX1NUUkVBTV9GTEFHX05PTkUsICZwcmlfc3BlYywgTkdIVFRQ Ml9TVFJFQU1fT1BFTklORywKLSsgICAgc2Vzc2lvbiwgMSwgTkdIVFRQMl9TVFJFQU1fRkxBR19O T05FLCBOR0hUVFAyX1NUUkVBTV9PUEVOSU5HLAotICAgICBzZXNzaW9uLT5zZXJ2ZXIgPyBOVUxM IDogc3RyZWFtX3VzZXJfZGF0YSk7Ci0gICBpZiAoc3RyZWFtID09IE5VTEwpIHsKLSAgICAgcmV0 dXJuIE5HSFRUUDJfRVJSX05PTUVNOwotICAgfQotIAotLSAgLyogV2UgZG9uJ3QgY2FsbCBuZ2h0 dHAyX3Nlc3Npb25fYWRqdXN0X2Nsb3NlZF9zdHJlYW0oKSwgc2luY2UgdGhpcwotLSAgICAgc2hv dWxkIGJlIHRoZSBmaXJzdCBzdHJlYW0gb3Blbi4gKi8KLS0KLSAgIGlmIChzZXNzaW9uLT5zZXJ2 ZXIpIHsKLSAgICAgbmdodHRwMl9zdHJlYW1fc2h1dGRvd24oc3RyZWFtLCBOR0hUVFAyX1NIVVRf UkQpOwotICAgICBzZXNzaW9uLT5sYXN0X3JlY3Zfc3RyZWFtX2lkID0gMTsKLUBAIC04MjkzLDE0 ICs3OTQxLDE2IEBAIGludDMyX3QgbmdodHRwMl9zZXNzaW9uX2dldF9sYXN0X3Byb2Nfc3RyZWFt X2lkKG5naHR0cDJfc2Vzc2lvbiAqc2Vzc2lvbikgewotIG5naHR0cDJfc3RyZWFtICpuZ2h0dHAy X3Nlc3Npb25fZmluZF9zdHJlYW0obmdodHRwMl9zZXNzaW9uICpzZXNzaW9uLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBzdHJlYW1faWQpIHsK LSAgIGlmIChzdHJlYW1faWQgPT0gMCkgewotLSAgICByZXR1cm4gJnNlc3Npb24tPnJvb3Q7Ci0r ICAgIHJldHVybiAmbmdodHRwMl9zdHJlYW1fcm9vdDsKLSAgIH0KLSAKLSAgIHJldHVybiBuZ2h0 dHAyX3Nlc3Npb25fZ2V0X3N0cmVhbV9yYXcoc2Vzc2lvbiwgc3RyZWFtX2lkKTsKLSB9Ci0gCi0g bmdodHRwMl9zdHJlYW0gKm5naHR0cDJfc2Vzc2lvbl9nZXRfcm9vdF9zdHJlYW0obmdodHRwMl9z ZXNzaW9uICpzZXNzaW9uKSB7Ci0tICByZXR1cm4gJnNlc3Npb24tPnJvb3Q7Ci0rICAodm9pZClz ZXNzaW9uOwotKwotKyAgcmV0dXJuICZuZ2h0dHAyX3N0cmVhbV9yb290OwotIH0KLSAKLSBpbnQg bmdodHRwMl9zZXNzaW9uX2NoZWNrX3NlcnZlcl9zZXNzaW9uKG5naHR0cDJfc2Vzc2lvbiAqc2Vz c2lvbikgewotQEAgLTgzMTAsNzUgKzc5NjAsMjAgQEAgaW50IG5naHR0cDJfc2Vzc2lvbl9jaGVj a19zZXJ2ZXJfc2Vzc2lvbihuZ2h0dHAyX3Nlc3Npb24gKnNlc3Npb24pIHsKLSBpbnQgbmdodHRw Ml9zZXNzaW9uX2NoYW5nZV9zdHJlYW1fcHJpb3JpdHkoCi0gICBuZ2h0dHAyX3Nlc3Npb24gKnNl c3Npb24sIGludDMyX3Qgc3RyZWFtX2lkLAotICAgY29uc3QgbmdodHRwMl9wcmlvcml0eV9zcGVj ICpwcmlfc3BlYykgewotLSAgaW50IHJ2OwotLSAgbmdodHRwMl9zdHJlYW0gKnN0cmVhbTsKLS0g IG5naHR0cDJfcHJpb3JpdHlfc3BlYyBwcmlfc3BlY19jb3B5OwotLQotLSAgaWYgKHNlc3Npb24t PnBlbmRpbmdfbm9fcmZjNzU0MF9wcmlvcml0aWVzID09IDEpIHsKLS0gICAgcmV0dXJuIDA7Ci0t ICB9Ci0tCi0tICBpZiAoc3RyZWFtX2lkID09IDAgfHwgc3RyZWFtX2lkID09IHByaV9zcGVjLT5z dHJlYW1faWQpIHsKLS0gICAgcmV0dXJuIE5HSFRUUDJfRVJSX0lOVkFMSURfQVJHVU1FTlQ7Ci0t ICB9Ci0tCi0tICBzdHJlYW0gPSBuZ2h0dHAyX3Nlc3Npb25fZ2V0X3N0cmVhbV9yYXcoc2Vzc2lv biwgc3RyZWFtX2lkKTsKLS0gIGlmICghc3RyZWFtKSB7Ci0tICAgIHJldHVybiBOR0hUVFAyX0VS Ul9JTlZBTElEX0FSR1VNRU5UOwotLSAgfQotLQotLSAgcHJpX3NwZWNfY29weSA9ICpwcmlfc3Bl YzsKLS0gIG5naHR0cDJfcHJpb3JpdHlfc3BlY19ub3JtYWxpemVfd2VpZ2h0KCZwcmlfc3BlY19j b3B5KTsKLS0KLS0gIHJ2ID0gbmdodHRwMl9zZXNzaW9uX3JlcHJpb3JpdGl6ZV9zdHJlYW0oc2Vz c2lvbiwgc3RyZWFtLCAmcHJpX3NwZWNfY29weSk7Ci0tCi0tICBpZiAobmdodHRwMl9pc19mYXRh bChydikpIHsKLS0gICAgcmV0dXJuIHJ2OwotLSAgfQotKyAgKHZvaWQpc2Vzc2lvbjsKLSsgICh2 b2lkKXN0cmVhbV9pZDsKLSsgICh2b2lkKXByaV9zcGVjOwotIAotLSAgLyogV2UgZG9uJ3QgaW50 ZW50aW9uYWxseSBjYWxsIG5naHR0cDJfc2Vzc2lvbl9hZGp1c3RfaWRsZV9zdHJlYW0oKQotLSAg ICAgc28gdGhhdCBpZGxlIHN0cmVhbSBjcmVhdGVkIGJ5IHRoaXMgZnVuY3Rpb24sIGFuZCBleGlz dGluZyBvbmVzCi0tICAgICBhcmUga2VwdCBmb3IgYXBwbGljYXRpb24uICBXZSB3aWxsIGFkanVz dCBudW1iZXIgb2YgaWRsZSBzdHJlYW0KLS0gICAgIGluIG5naHR0cDJfc2Vzc2lvbl9tZW1fc2Vu ZDIgb3IgbmdodHRwMl9zZXNzaW9uX21lbV9yZWN2MiBpcwotLSAgICAgY2FsbGVkLiAqLwotICAg cmV0dXJuIDA7Ci0gfQotIAotIGludCBuZ2h0dHAyX3Nlc3Npb25fY3JlYXRlX2lkbGVfc3RyZWFt KG5naHR0cDJfc2Vzc2lvbiAqc2Vzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBpbnQzMl90IHN0cmVhbV9pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjb25zdCBuZ2h0dHAyX3ByaW9yaXR5X3NwZWMgKnByaV9zcGVjKSB7Ci0t ICBuZ2h0dHAyX3N0cmVhbSAqc3RyZWFtOwotLSAgbmdodHRwMl9wcmlvcml0eV9zcGVjIHByaV9z cGVjX2NvcHk7Ci0tCi0tICBpZiAoc2Vzc2lvbi0+cGVuZGluZ19ub19yZmM3NTQwX3ByaW9yaXRp ZXMgPT0gMSkgewotLSAgICByZXR1cm4gMDsKLS0gIH0KLS0KLS0gIGlmIChzdHJlYW1faWQgPT0g MCB8fCBzdHJlYW1faWQgPT0gcHJpX3NwZWMtPnN0cmVhbV9pZCB8fAotLSAgICAgICFzZXNzaW9u X2RldGVjdF9pZGxlX3N0cmVhbShzZXNzaW9uLCBzdHJlYW1faWQpKSB7Ci0tICAgIHJldHVybiBO R0hUVFAyX0VSUl9JTlZBTElEX0FSR1VNRU5UOwotLSAgfQotLQotLSAgc3RyZWFtID0gbmdodHRw Ml9zZXNzaW9uX2dldF9zdHJlYW1fcmF3KHNlc3Npb24sIHN0cmVhbV9pZCk7Ci0tICBpZiAoc3Ry ZWFtKSB7Ci0tICAgIHJldHVybiBOR0hUVFAyX0VSUl9JTlZBTElEX0FSR1VNRU5UOwotLSAgfQot LQotLSAgcHJpX3NwZWNfY29weSA9ICpwcmlfc3BlYzsKLS0gIG5naHR0cDJfcHJpb3JpdHlfc3Bl Y19ub3JtYWxpemVfd2VpZ2h0KCZwcmlfc3BlY19jb3B5KTsKLS0KLS0gIHN0cmVhbSA9Ci0tICAg IG5naHR0cDJfc2Vzc2lvbl9vcGVuX3N0cmVhbShzZXNzaW9uLCBzdHJlYW1faWQsIE5HSFRUUDJf U1RSRUFNX0ZMQUdfTk9ORSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZwcmlf c3BlY19jb3B5LCBOR0hUVFAyX1NUUkVBTV9JRExFLCBOVUxMKTsKLS0gIGlmICghc3RyZWFtKSB7 Ci0tICAgIHJldHVybiBOR0hUVFAyX0VSUl9OT01FTTsKLS0gIH0KLSsgICh2b2lkKXNlc3Npb247 Ci0rICAodm9pZClzdHJlYW1faWQ7Ci0rICAodm9pZClwcmlfc3BlYzsKLSAKLS0gIC8qIFdlIGRv bid0IGludGVudGlvbmFsbHkgY2FsbCBuZ2h0dHAyX3Nlc3Npb25fYWRqdXN0X2lkbGVfc3RyZWFt KCkKLS0gICAgIHNvIHRoYXQgaWRsZSBzdHJlYW0gY3JlYXRlZCBieSB0aGlzIGZ1bmN0aW9uLCBh bmQgZXhpc3Rpbmcgb25lcwotLSAgICAgYXJlIGtlcHQgZm9yIGFwcGxpY2F0aW9uLiAgV2Ugd2ls bCBhZGp1c3QgbnVtYmVyIG9mIGlkbGUgc3RyZWFtCi0tICAgICBpbiBuZ2h0dHAyX3Nlc3Npb25f bWVtX3NlbmQyIG9yIG5naHR0cDJfc2Vzc2lvbl9tZW1fcmVjdjIgaXMKLS0gICAgIGNhbGxlZC4g Ki8KLSAgIHJldHVybiAwOwotIH0KLSAKLWRpZmYgLS1naXQgYS9kZXBzL25naHR0cDIvbGliL25n aHR0cDJfc2Vzc2lvbi5oIGIvZGVwcy9uZ2h0dHAyL2xpYi9uZ2h0dHAyX3Nlc3Npb24uaAotaW5k ZXggZWY4ZjdiMjcuLmVkYmVmODBkIDEwMDY0NAotLS0tIGEvZGVwcy9uZ2h0dHAyL2xpYi9uZ2h0 dHAyX3Nlc3Npb24uaAotKysrIGIvZGVwcy9uZ2h0dHAyL2xpYi9uZ2h0dHAyX3Nlc3Npb24uaAot QEAgLTI3LDcgKzI3LDcgQEAKLSAKLSAjaWZkZWYgSEFWRV9DT05GSUdfSAotICMgIGluY2x1ZGUg PGNvbmZpZy5oPgotLSNlbmRpZiAvKiBIQVZFX0NPTkZJR19IICovCi0rI2VuZGlmIC8qIGRlZmlu ZWQoSEFWRV9DT05GSUdfSCkgKi8KLSAKLSAjaW5jbHVkZSA8bmdodHRwMi9uZ2h0dHAyLmg+Ci0g I2luY2x1ZGUgIm5naHR0cDJfbWFwLmgiCi1AQCAtNDUsNiArNDUsOCBAQAotICAgIHByZWZhY2Ug aGFuZGxpbmcuICovCi0gZXh0ZXJuIGludCBuZ2h0dHAyX2VuYWJsZV9zdHJpY3RfcHJlZmFjZTsK LSAKLStleHRlcm4gbmdodHRwMl9zdHJlYW0gbmdodHRwMl9zdHJlYW1fcm9vdDsKLSsKLSAvKgot ICAqIE9wdGlvbiBmbGFncy4KLSAgKi8KLUBAIC01Myw4ICs1NSw2IEBAIHR5cGVkZWYgZW51bSB7 Ci0gICBOR0hUVFAyX09QVE1BU0tfTk9fUkVDVl9DTElFTlRfTUFHSUMgPSAxIDw8IDEsCi0gICBO R0hUVFAyX09QVE1BU0tfTk9fSFRUUF9NRVNTQUdJTkcgPSAxIDw8IDIsCi0gICBOR0hUVFAyX09Q VE1BU0tfTk9fQVVUT19QSU5HX0FDSyA9IDEgPDwgMywKLS0gIE5HSFRUUDJfT1BUTUFTS19OT19D TE9TRURfU1RSRUFNUyA9IDEgPDwgNCwKLS0gIE5HSFRUUDJfT1BUTUFTS19TRVJWRVJfRkFMTEJB Q0tfUkZDNzU0MF9QUklPUklUSUVTID0gMSA8PCA1LAotICAgTkdIVFRQMl9PUFRNQVNLX05PX1JG QzkxMTNfTEVBRElOR19BTkRfVFJBSUxJTkdfV1NfVkFMSURBVElPTiA9IDEgPDwgNiwKLSB9IG5n aHR0cDJfb3B0bWFzazsKLSAKLUBAIC04OSwxMCArODksNiBAQCB0eXBlZGVmIHN0cnVjdCB7Ci0g LyogVGhlIGRlZmF1bHQgbWF4aW11bSBudW1iZXIgb2YgaW5jb21pbmcgcmVzZXJ2ZWQgc3RyZWFt cyAqLwotICNkZWZpbmUgTkdIVFRQMl9NQVhfSU5DT01JTkdfUkVTRVJWRURfU1RSRUFNUyAyMDAK LSAKLS0vKiBFdmVuIGlmIHdlIGhhdmUgbGVzcyBTRVRUSU5HU19NQVhfQ09OQ1VSUkVOVF9TVFJF QU1TIHRoYW4gdGhpcwotLSAgIG51bWJlciwgd2Uga2VlcCBOR0hUVFAyX01JTl9JRExFX1NUUkVB TVMgc3RyZWFtcyBpbiBpZGxlIHN0YXRlICovCi0tI2RlZmluZSBOR0hUVFAyX01JTl9JRExFX1NU UkVBTVMgMTYKLS0KLSAvKiBUaGUgbWF4aW11bSBudW1iZXIgb2YgaXRlbXMgaW4gb3V0Ym91bmQg cXVldWUsIHdoaWNoIGlzIGNvbnNpZGVyZWQKLSAgICBhcyBmbG9vZGluZyBjYXVzZWQgYnkgcGVl ci4gIEFsbCBmcmFtZXMgYXJlIG5vdCBjb25zaWRlcmVkIGhlcmUuCi0gICAgV2Ugb25seSBjb25z aWRlciBQSU5HICsgQUNLIGFuZCBTRVRUSU5HUyArIEFDSy4gIFRoaXMgaXMgYmVjYXVzZQotQEAg LTExMCw2ICsxMDYsMTAgQEAgdHlwZWRlZiBzdHJ1Y3QgewotICNkZWZpbmUgTkdIVFRQMl9ERUZB VUxUX1NUUkVBTV9SRVNFVF9CVVJTVCAxMDAwCi0gI2RlZmluZSBOR0hUVFAyX0RFRkFVTFRfU1RS RUFNX1JFU0VUX1JBVEUgMzMKLSAKLSsvKiBUaGUgZGVmYXVsdCB2YWx1ZXMgZm9yIGdsaXRjaCBy YXRlIGxpbWl0ZXIuICovCi0rI2RlZmluZSBOR0hUVFAyX0RFRkFVTFRfR0xJVENIX0JVUlNUIDEw MDAKLSsjZGVmaW5lIE5HSFRUUDJfREVGQVVMVF9HTElUQ0hfUkFURSAzMwotKwotIC8qIFRoZSBk ZWZhdWx0IG1heCBudW1iZXIgb2YgQ09OVElOVUFUSU9OIGZyYW1lcyBmb2xsb3dpbmcgYW4gaW5j b21pbmcKLSAgICBIRUFERVIgZnJhbWUuICovCi0gI2RlZmluZSBOR0hUVFAyX0RFRkFVTFRfTUFY X0NPTlRJTlVBVElPTlMgOAotQEAgLTIwNSw4ICsyMDUsNiBAQCB0eXBlZGVmIHN0cnVjdCBuZ2h0 dHAyX2luZmxpZ2h0X3NldHRpbmdzIG5naHR0cDJfaW5mbGlnaHRfc2V0dGluZ3M7Ci0gCi0gc3Ry dWN0IG5naHR0cDJfc2Vzc2lvbiB7Ci0gICBuZ2h0dHAyX21hcCAvKiA8bmdodHRwMl9zdHJlYW0q PiAqLyBzdHJlYW1zOwotLSAgLyogcm9vdCBvZiBkZXBlbmRlbmN5IHRyZWUqLwotLSAgbmdodHRw Ml9zdHJlYW0gcm9vdDsKLSAgIC8qIFF1ZXVlIGZvciBvdXRib3VuZCB1cmdlbnQgZnJhbWVzIChQ SU5HIGFuZCBTRVRUSU5HUykgKi8KLSAgIG5naHR0cDJfb3V0Ym91bmRfcXVldWUgb2JfdXJnZW50 OwotICAgLyogUXVldWUgZm9yIG5vbi1EQVRBIGZyYW1lcyAqLwotQEAgLTIyOSwyNiArMjI3LDE0 IEBAIHN0cnVjdCBuZ2h0dHAyX3Nlc3Npb24gewotICAgLyogTWVtb3J5IGFsbG9jYXRvciAqLwot ICAgbmdodHRwMl9tZW0gbWVtOwotICAgdm9pZCAqdXNlcl9kYXRhOwotLSAgLyogUG9pbnRzIHRv IHRoZSBsYXRlc3QgaW5jb21pbmcgY2xvc2VkIHN0cmVhbS4gIE5VTEwgaWYgdGhlcmUgaXMgbm8K LS0gICAgIGNsb3NlZCBzdHJlYW0uICBPbmx5IHVzZWQgd2hlbiBzZXNzaW9uIGlzIGluaXRpYWxp emVkIGFzCi0tICAgICBzZXJ2ZXIuICovCi0tICBuZ2h0dHAyX3N0cmVhbSAqY2xvc2VkX3N0cmVh bV9oZWFkOwotLSAgLyogUG9pbnRzIHRvIHRoZSBvbGRlc3QgaW5jb21pbmcgY2xvc2VkIHN0cmVh bS4gIE5VTEwgaWYgdGhlcmUgaXMgbm8KLS0gICAgIGNsb3NlZCBzdHJlYW0uICBPbmx5IHVzZWQg d2hlbiBzZXNzaW9uIGlzIGluaXRpYWxpemVkIGFzCi0tICAgICBzZXJ2ZXIuICovCi0tICBuZ2h0 dHAyX3N0cmVhbSAqY2xvc2VkX3N0cmVhbV90YWlsOwotLSAgLyogUG9pbnRzIHRvIHRoZSBsYXRl c3QgaWRsZSBzdHJlYW0uICBOVUxMIGlmIHRoZXJlIGlzIG5vIGlkbGUKLS0gICAgIHN0cmVhbS4g IE9ubHkgdXNlZCB3aGVuIHNlc3Npb24gaXMgaW5pdGlhbGl6ZWQgYXMgc2VydmVyIC4qLwotLSAg bmdodHRwMl9zdHJlYW0gKmlkbGVfc3RyZWFtX2hlYWQ7Ci0tICAvKiBQb2ludHMgdG8gdGhlIG9s ZGVzdCBpZGxlIHN0cmVhbS4gIE5VTEwgaWYgdGhlcmUgaXMgbm8gaWRsZQotLSAgICAgc3RyZWFt LiAgT25seSB1c2VkIHdoZW4gc2Vzc2lvbiBpcyBpbml0aWFsaXplZCBhcyBlcnZlci4gKi8KLS0g IG5naHR0cDJfc3RyZWFtICppZGxlX3N0cmVhbV90YWlsOwotICAgLyogUXVldWUgb2YgSW4tZmxp Z2h0IFNFVFRJTkdTIHZhbHVlcy4gIFNFVFRJTkdTIGJlYXJpbmcgQUNLIGlzIG5vdAotICAgICAg Y29uc2lkZXJlZCBhcyBpbi1mbGlnaHQuICovCi0gICBuZ2h0dHAyX2luZmxpZ2h0X3NldHRpbmdz ICppbmZsaWdodF9zZXR0aW5nc19oZWFkOwotICAgLyogU3RyZWFtIHJlc2V0IHJhdGUgbGltaXRl ci4gIElmIHJlY2VpdmluZyBleGNlc3NpdmUgYW1vdW50IG9mCi0gICAgICBzdHJlYW0gcmVzZXRz LCBHT0FXQVkgd2lsbCBiZSBzZW50LiAqLwotICAgbmdodHRwMl9yYXRlbGltIHN0cmVhbV9yZXNl dF9yYXRlbGltOwotKyAgLyogUmF0ZSBsaW1pdGVyIGZvciBhbGwga2luZHMgb2YgZ2xpdGNoZXMu ICovCi0rICBuZ2h0dHAyX3JhdGVsaW0gZ2xpdGNoX3JhdGVsaW07Ci0gICAvKiBTZXF1ZW50aWFs IG51bWJlciBhY3Jvc3MgYWxsIHN0cmVhbXMgdG8gcHJvY2VzcyBzdHJlYW1zIGluCi0gICAgICBG SUZPLiAqLwotICAgdWludDY0X3Qgc3RyZWFtX3NlcTsKLUBAIC0yNzYsMTAgKzI2Miw5IEBAIHN0 cnVjdCBuZ2h0dHAyX3Nlc3Npb24gewotICAgICAgfGNsb3NlZF9zdHJlYW1faGVhZHwuICBUaGUg Y3VycmVudCBpbXBsZW1lbnRhdGlvbiBvbmx5IGtlZXBzCi0gICAgICBpbmNvbWluZyBzdHJlYW1z IGFuZCBzZXNzaW9uIGlzIGluaXRpYWxpemVkIGFzIHNlcnZlci4gKi8KLSAgIHNpemVfdCBudW1f Y2xvc2VkX3N0cmVhbXM7Ci0tICAvKiBUaGUgbnVtYmVyIG9mIGlkbGUgc3RyZWFtcyBrZXB0IGlu IHxzdHJlYW1zfCBoYXNoLiAgVGhlIGlkbGUKLS0gICAgIHN0cmVhbXMgY2FuIGJlIGFjY2Vzc2Vk IHRocm91Z2ggZG91Ymx5IGxpbmtlZCBsaXN0Ci0tICAgICB8aWRsZV9zdHJlYW1faGVhZHwuICBU aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBvbmx5IGtlZXBzIGlkbGUKLS0gICAgIHN0cmVhbXMg aWYgc2Vzc2lvbiBpcyBpbml0aWFsaXplZCBhcyBzZXJ2ZXIuICovCi0rICAvKiBUaGUgbnVtYmVy IG9mIGlkbGUgc3RyZWFtcyBrZXB0IGluIHxzdHJlYW1zfCBoYXNoLiAgVGhlIGN1cnJlbnQKLSsg ICAgIGltcGxlbWVudGF0aW9uIG9ubHkga2VlcHMgaWRsZSBzdHJlYW1zIGlmIHNlc3Npb24gaXMg aW5pdGlhbGl6ZWQKLSsgICAgIGFzIHNlcnZlci4gKi8KLSAgIHNpemVfdCBudW1faWRsZV9zdHJl YW1zOwotICAgLyogVGhlIG51bWJlciBvZiBieXRlcyBhbGxvY2F0ZWQgZm9yIG52YnVmICovCi0g ICBzaXplX3QgbnZidWZsZW47Ci1AQCAtMzYyLDggKzM0Nyw2IEBAIHN0cnVjdCBuZ2h0dHAyX3Nl c3Npb24gewotICAgLyogVW5hY2tlZCBsb2NhbCBTRVRUSU5HU19OT19SRkM3NTQwX1BSSU9SSVRJ RVMgdmFsdWUsIHdoaWNoIGlzCi0gICAgICBlZmZlY3RpdmUgYmVmb3JlIGl0IGlzIGFja25vd2xl ZGdlZC4gKi8KLSAgIHVpbnQ4X3QgcGVuZGluZ19ub19yZmM3NTQwX3ByaW9yaXRpZXM7Ci0tICAv KiBUdXJuIG9uIGZhbGxiYWNrIHRvIFJGQyA3NTQwIHByaW9yaXRpZXM7IGZvciBzZXJ2ZXIgdXNl IG9ubHkuICovCi0tICB1aW50OF90IGZhbGxiYWNrX3JmYzc1NDBfcHJpb3JpdGllczsKLSAgIC8q IE5vbnplcm8gaWYgdGhlIHNlc3Npb24gaXMgc2VydmVyIHNpZGUuICovCi0gICB1aW50OF90IHNl cnZlcjsKLSAgIC8qIEZsYWdzIGluZGljYXRpbmcgR09BV0FZIGlzIHNlbnQgYW5kL29yIHJlY2Vp dmVkLiBUaGUgZmxhZ3MgYXJlCi1AQCAtNDI1LDYgKzQwOCwxMyBAQCBpbnQgbmdodHRwMl9zZXNz aW9uX2lzX215X3N0cmVhbV9pZChuZ2h0dHAyX3Nlc3Npb24gKnNlc3Npb24sCi0gaW50IG5naHR0 cDJfc2Vzc2lvbl9hZGRfaXRlbShuZ2h0dHAyX3Nlc3Npb24gKnNlc3Npb24sCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBuZ2h0dHAyX291dGJvdW5kX2l0ZW0gKml0ZW0pOwotIAotKy8q Ci0rICogVGhpcyBmdW5jdGlvbiB3cmFwcyBhcm91bmQgbmdodHRwMl9zZXNzaW9uX2FkZF9yc3Rf c3RyZWFtX2NvbnRpbnVlCi0rICogd2l0aCBjb250aW51ZV93aXRob3V0X3N0cmVhbSA9IDEuCi0r ICovCi0raW50IG5naHR0cDJfc2Vzc2lvbl9hZGRfcnN0X3N0cmVhbShuZ2h0dHAyX3Nlc3Npb24g KnNlc3Npb24sIGludDMyX3Qgc3RyZWFtX2lkLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdWludDMyX3QgZXJyb3JfY29kZSk7Ci0rCi0gLyoKLSAgKiBBZGRzIFJTVF9TVFJF QU0gZnJhbWUgZm9yIHRoZSBzdHJlYW0gfHN0cmVhbV9pZHwgd2l0aCB0aGUgZXJyb3IKLSAgKiBj b2RlIHxlcnJvcl9jb2RlfC4gVGhpcyBpcyBhIGNvbnZlbmllbnQgZnVuY3Rpb24gYnVpbHQgb24g dG9wIG9mCi1AQCAtNDMyLDcgKzQyMiw5IEBAIGludCBuZ2h0dHAyX3Nlc3Npb25fYWRkX2l0ZW0o bmdodHRwMl9zZXNzaW9uICpzZXNzaW9uLAotICAqCi0gICogVGhpcyBmdW5jdGlvbiBzaW1wbHkg cmV0dXJucyAwIHdpdGhvdXQgYWRkaW5nIFJTVF9TVFJFQU0gZnJhbWUgaWYKLSAgKiBnaXZlbiBz dHJlYW0gaXMgaW4gTkdIVFRQMl9TVFJFQU1fQ0xPU0lORyBzdGF0ZSwgYmVjYXVzZSBtdWx0aXBs ZQotLSAqIFJTVF9TVFJFQU0gZm9yIGEgc3RyZWFtIGlzIHJlZHVuZGFudC4KLSsgKiBSU1RfU1RS RUFNIGZvciBhIHN0cmVhbSBpcyByZWR1bmRhbnQuICBJdCBhbHNvIHJldHVybnMgMCB3aXRob3V0 Ci0rICogYWRkaW5nIHRoZSBmcmFtZSBpZiB8Y29udGludWVfd2l0aG91dF9zdHJlYW18IGlzIG5v bnplcm8sIGFuZAotKyAqIHN0cmVhbSB3YXMgYWxyZWFkeSBnb25lLgotICAqCi0gICogVGhpcyBm dW5jdGlvbiByZXR1cm5zIDAgaWYgaXQgc3VjY2VlZHMsIG9yIG9uZSBvZiB0aGUgZm9sbG93aW5n Ci0gICogbmVnYXRpdmUgZXJyb3IgY29kZXM6Ci1AQCAtNDQwLDggKzQzMiwxMCBAQCBpbnQgbmdo dHRwMl9zZXNzaW9uX2FkZF9pdGVtKG5naHR0cDJfc2Vzc2lvbiAqc2Vzc2lvbiwKLSAgKiBOR0hU VFAyX0VSUl9OT01FTQotICAqICAgICBPdXQgb2YgbWVtb3J5LgotICAqLwotLWludCBuZ2h0dHAy X3Nlc3Npb25fYWRkX3JzdF9zdHJlYW0obmdodHRwMl9zZXNzaW9uICpzZXNzaW9uLCBpbnQzMl90 IHN0cmVhbV9pZCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90 IGVycm9yX2NvZGUpOwotK2ludCBuZ2h0dHAyX3Nlc3Npb25fYWRkX3JzdF9zdHJlYW1fY29udGlu dWUobmdodHRwMl9zZXNzaW9uICpzZXNzaW9uLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgaW50MzJfdCBzdHJlYW1faWQsCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBlcnJvcl9jb2RlLAotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNvbnRpbnVlX3dpdGhvdXRf c3RyZWFtKTsKLSAKLSAvKgotICAqIEFkZHMgUElORyBmcmFtZS4gVGhpcyBpcyBhIGNvbnZlbmll bnQgZnVuY3Rpb24gYnVpbHQgb24gdG9wIG9mCi1AQCAtNTI3LDE1ICs1MjEsOSBAQCBpbnQgbmdo dHRwMl9zZXNzaW9uX2FkZF9zZXR0aW5ncyhuZ2h0dHAyX3Nlc3Npb24gKnNlc3Npb24sIHVpbnQ4 X3QgZmxhZ3MsCi0gICoKLSAgKiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgYSBwb2ludGVyIHRvIGNy ZWF0ZWQgbmV3IHN0cmVhbSBvYmplY3QsIG9yCi0gICogTlVMTC4KLS0gKgotLSAqIFRoaXMgZnVu Y3Rpb24gYWRqdXN0cyBuZWl0aGVyIHRoZSBudW1iZXIgb2YgY2xvc2VkIHN0cmVhbXMgb3IgaWRs ZQotLSAqIHN0cmVhbXMuICBUaGUgY2FsbGVyIHNob3VsZCBtYW51YWxseSBjYWxsCi0tICogbmdo dHRwMl9zZXNzaW9uX2FkanVzdF9jbG9zZWRfc3RyZWFtKCkgb3IKLS0gKiBuZ2h0dHAyX3Nlc3Np b25fYWRqdXN0X2lkbGVfc3RyZWFtKCkgcmVzcGVjdGl2ZWx5LgotICAqLwotIG5naHR0cDJfc3Ry ZWFtICpuZ2h0dHAyX3Nlc3Npb25fb3Blbl9zdHJlYW0obmdodHRwMl9zZXNzaW9uICpzZXNzaW9u LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBz dHJlYW1faWQsIHVpbnQ4X3QgZmxhZ3MsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBuZ2h0dHAyX3ByaW9yaXR5X3NwZWMgKnByaV9zcGVjLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmdodHRwMl9zdHJlYW1fc3RhdGUg aW5pdGlhbF9zdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHZvaWQgKnN0cmVhbV91c2VyX2RhdGEpOwotIAotQEAgLTU0NCwxMSArNTMyLDYgQEAgbmdo dHRwMl9zdHJlYW0gKm5naHR0cDJfc2Vzc2lvbl9vcGVuX3N0cmVhbShuZ2h0dHAyX3Nlc3Npb24g KnNlc3Npb24sCi0gICogaXMgaW5kaWNhdGVkIGJ5IHRoZSB8ZXJyb3JfY29kZXwuIFdoZW4gY2xv c2luZyB0aGUgc3RyZWFtLAotICAqIG9uX3N0cmVhbV9jbG9zZV9jYWxsYmFjayB3aWxsIGJlIGNh bGxlZC4KLSAgKgotLSAqIElmIHRoZSBzZXNzaW9uIGlzIGluaXRpYWxpemVkIGFzIHNlcnZlciBh bmQgfHN0cmVhbXwgaXMgaW5jb21pbmcKLS0gKiBzdHJlYW0sIHN0cmVhbSBpcyBqdXN0IG1hcmtl ZCBjbG9zZWQgYW5kIHRoaXMgZnVuY3Rpb24gY2FsbHMKLS0gKiBuZ2h0dHAyX3Nlc3Npb25fa2Vl cF9jbG9zZWRfc3RyZWFtKCkgd2l0aCB8c3RyZWFtfC4gIE90aGVyd2lzZSwKLS0gKiB8c3RyZWFt fCB3aWxsIGJlIGRlbGV0ZWQgZnJvbSBtZW1vcnkuCi0tICoKLSAgKiBUaGlzIGZ1bmN0aW9uIHJl dHVybnMgMCBpZiBpdCBzdWNjZWVkcywgb3Igb25lIHRoZSBmb2xsb3dpbmcKLSAgKiBuZWdhdGl2 ZSBlcnJvciBjb2RlczoKLSAgKgotQEAgLTU2NSw2MyArNTQ4LDkgQEAgaW50IG5naHR0cDJfc2Vz c2lvbl9jbG9zZV9zdHJlYW0obmdodHRwMl9zZXNzaW9uICpzZXNzaW9uLCBpbnQzMl90IHN0cmVh bV9pZCwKLSAvKgotICAqIERlbGV0ZXMgfHN0cmVhbXwgZnJvbSBtZW1vcnkuICBBZnRlciB0aGlz IGZ1bmN0aW9uIHJldHVybnMsIHN0cmVhbQotICAqIGNhbm5vdCBiZSBhY2Nlc3NlZC4KLS0gKgot LSAqIFRoaXMgZnVuY3Rpb24gcmV0dXJucyAwIGlmIGl0IHN1Y2NlZWRzLCBvciBvbmUgdGhlIGZv bGxvd2luZwotLSAqIG5lZ2F0aXZlIGVycm9yIGNvZGVzOgotLSAqCi0tICogTkdIVFRQMl9FUlJf Tk9NRU0KLS0gKiAgICAgT3V0IG9mIG1lbW9yeQotLSAqLwotLWludCBuZ2h0dHAyX3Nlc3Npb25f ZGVzdHJveV9zdHJlYW0obmdodHRwMl9zZXNzaW9uICpzZXNzaW9uLAotLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgbmdodHRwMl9zdHJlYW0gKnN0cmVhbSk7Ci0tCi0tLyoKLS0g KiBUcmllcyB0byBrZWVwIGluY29taW5nIGNsb3NlZCBzdHJlYW0gfHN0cmVhbXwuICBEdWUgdG8g dGhlCi0tICogbGltaXRhdGlvbiBvZiBtYXhpbXVtIG51bWJlciBvZiBzdHJlYW1zIGluIG1lbW9y eSwgfHN0cmVhbXwgaXMgbm90Ci0tICogY2xvc2VkIGFuZCBqdXN0IGRlbGV0ZWQgZnJvbSBtZW1v cnkgKHNlZQotLSAqIG5naHR0cDJfc2Vzc2lvbl9kZXN0cm95X3N0cmVhbSkuCi0tICovCi0tdm9p ZCBuZ2h0dHAyX3Nlc3Npb25fa2VlcF9jbG9zZWRfc3RyZWFtKG5naHR0cDJfc2Vzc2lvbiAqc2Vz c2lvbiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmdodHRwMl9z dHJlYW0gKnN0cmVhbSk7Ci0tCi0tLyoKLS0gKiBBcHBlbmRzIHxzdHJlYW18IHRvIGxpbmtlZCBs aXN0IHxzZXNzaW9uLT5pZGxlX3N0cmVhbV9oZWFkfC4gIFdlCi0tICogYXBwbHkgZml4ZWQgbGlt aXQgZm9yIGxpc3Qgc2l6ZS4gIFRvIGZpdCBpbnRvIHRoYXQgbGltaXQsIG9uZSBvcgotLSAqIG1v cmUgb2xkZXN0IHN0cmVhbXMgYXJlIHJlbW92ZWQgZnJvbSBsaXN0IGFzIG5lY2Vzc2FyeS4KLSAg Ki8KLS12b2lkIG5naHR0cDJfc2Vzc2lvbl9rZWVwX2lkbGVfc3RyZWFtKG5naHR0cDJfc2Vzc2lv biAqc2Vzc2lvbiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5naHR0 cDJfc3RyZWFtICpzdHJlYW0pOwotLQotLS8qCi0tICogRGV0YWNoZXMgfHN0cmVhbXwgZnJvbSBp ZGxlIHN0cmVhbXMgbGlua2VkIGxpc3QuCi0tICovCi0tdm9pZCBuZ2h0dHAyX3Nlc3Npb25fZGV0 YWNoX2lkbGVfc3RyZWFtKG5naHR0cDJfc2Vzc2lvbiAqc2Vzc2lvbiwKLS0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbmdodHRwMl9zdHJlYW0gKnN0cmVhbSk7Ci0tCi0t LyoKLS0gKiBEZWxldGVzIGNsb3NlZCBzdHJlYW0gdG8gZW5zdXJlIHRoYXQgbnVtYmVyIG9mIGlu Y29taW5nIHN0cmVhbXMKLS0gKiBpbmNsdWRpbmcgYWN0aXZlIGFuZCBjbG9zZWQgaXMgaW4gdGhl IG1heGltdW0gbnVtYmVyIG9mIGFsbG93ZWQKLS0gKiBzdHJlYW0uCi0tICoKLS0gKiBUaGlzIGZ1 bmN0aW9uIHJldHVybnMgMCBpZiBpdCBzdWNjZWVkcywgb3Igb25lIHRoZSBmb2xsb3dpbmcKLS0g KiBuZWdhdGl2ZSBlcnJvciBjb2RlczoKLS0gKgotLSAqIE5HSFRUUDJfRVJSX05PTUVNCi0tICog ICAgIE91dCBvZiBtZW1vcnkKLS0gKi8KLS1pbnQgbmdodHRwMl9zZXNzaW9uX2FkanVzdF9jbG9z ZWRfc3RyZWFtKG5naHR0cDJfc2Vzc2lvbiAqc2Vzc2lvbik7Ci0tCi0tLyoKLS0gKiBEZWxldGVz IGlkbGUgc3RyZWFtIHRvIGVuc3VyZSB0aGF0IG51bWJlciBvZiBpZGxlIHN0cmVhbXMgaXMgaW4K LS0gKiBjZXJ0YWluIGxpbWl0LgotLSAqCi0tICogVGhpcyBmdW5jdGlvbiByZXR1cm5zIDAgaWYg aXQgc3VjY2VlZHMsIG9yIG9uZSB0aGUgZm9sbG93aW5nCi0tICogbmVnYXRpdmUgZXJyb3IgY29k ZXM6Ci0tICoKLS0gKiBOR0hUVFAyX0VSUl9OT01FTQotLSAqICAgICBPdXQgb2YgbWVtb3J5Ci0t ICovCi0taW50IG5naHR0cDJfc2Vzc2lvbl9hZGp1c3RfaWRsZV9zdHJlYW0obmdodHRwMl9zZXNz aW9uICpzZXNzaW9uKTsKLSt2b2lkIG5naHR0cDJfc2Vzc2lvbl9kZXN0cm95X3N0cmVhbShuZ2h0 dHAyX3Nlc3Npb24gKnNlc3Npb24sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgbmdodHRwMl9zdHJlYW0gKnN0cmVhbSk7Ci0gCi0gLyoKLSAgKiBJZiBmdXJ0aGVyIHJlY2Vw dGlvbnMgYW5kIHRyYW5zbWlzc2lvbnMgb3ZlciB0aGUgc3RyZWFtIHxzdHJlYW1faWR8Ci1AQCAt OTE1LDI0ICs4NDQsNiBAQCBpbnQgbmdodHRwMl9zZXNzaW9uX3VwZGF0ZV9sb2NhbF9zZXR0aW5n cyhuZ2h0dHAyX3Nlc3Npb24gKnNlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgbmdodHRwMl9zZXR0aW5nc19lbnRyeSAqaXYsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG5pdik7Ci0gCi0tLyoKLS0gKiBS ZS1wcmlvcml0aXplIHxzdHJlYW18LiBUaGUgbmV3IHByaW9yaXR5IHNwZWNpZmljYXRpb24gaXMK LS0gKiB8cHJpX3NwZWN8LiAgQ2FsbGVyIG11c3QgZW5zdXJlIHRoYXQgc3RyZWFtLT5oZC5zdHJl YW1faWQgIT0KLS0gKiBwcmlfc3BlYy0+c3RyZWFtX2lkLgotLSAqCi0tICogVGhpcyBmdW5jdGlv biBkb2VzIG5vdCBhZGp1c3QgdGhlIG51bWJlciBvZiBpZGxlIHN0cmVhbXMuICBUaGUKLS0gKiBj YWxsZXIgc2hvdWxkIGNhbGwgbmdodHRwMl9zZXNzaW9uX2FkanVzdF9pZGxlX3N0cmVhbSgpIGxh dGVyLgotLSAqCi0tICogVGhpcyBmdW5jdGlvbiByZXR1cm5zIDAgaWYgaXQgc3VjY2VlZHMsIG9y IG9uZSBvZiB0aGUgZm9sbG93aW5nCi0tICogbmVnYXRpdmUgZXJyb3IgY29kZXM6Ci0tICoKLS0g KiBOR0hUVFAyX0VSUl9OT01FTQotLSAqICAgICBPdXQgb2YgbWVtb3J5Ci0tICovCi0taW50IG5n aHR0cDJfc2Vzc2lvbl9yZXByaW9yaXRpemVfc3RyZWFtKG5naHR0cDJfc2Vzc2lvbiAqc2Vzc2lv biwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmdodHRwMl9zdHJl YW0gKnN0cmVhbSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u c3QgbmdodHRwMl9wcmlvcml0eV9zcGVjICpwcmlfc3BlYyk7Ci0tCi0gLyoKLSAgKiBUZXJtaW5h dGVzIGN1cnJlbnQgfHNlc3Npb258IHdpdGggdGhlIHxlcnJvcl9jb2RlfC4gIFRoZSB8cmVhc29u fAotICAqIGlzIE5VTEwtdGVybWluYXRlZCBkZWJ1ZyBzdHJpbmcuCi1AQCAtOTgxLDQgKzg5Miw0 IEBAIGludCBuZ2h0dHAyX3Nlc3Npb25fdXBkYXRlX3JlY3Zfc3RyZWFtX3dpbmRvd19zaXplKG5n aHR0cDJfc2Vzc2lvbiAqc2Vzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVsdGFfc2l6ZSwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2VuZF93aW5kb3dfdXBkYXRl KTsKLSAKLS0jZW5kaWYgLyogTkdIVFRQMl9TRVNTSU9OX0ggKi8KLSsjZW5kaWYgLyogIWRlZmlu ZWQoTkdIVFRQMl9TRVNTSU9OX0gpICovCi1kaWZmIC0tZ2l0IGEvZGVwcy9uZ2h0dHAyL2xpYi9u Z2h0dHAyX3N0cmVhbS5jIGIvZGVwcy9uZ2h0dHAyL2xpYi9uZ2h0dHAyX3N0cmVhbS5jCi1pbmRl eCBmMjM2MjQ0Ny4uMGYyZDM2NTggMTAwNjQ0Ci0tLS0gYS9kZXBzL25naHR0cDIvbGliL25naHR0 cDJfc3RyZWFtLmMKLSsrKyBiL2RlcHMvbmdodHRwMi9saWIvbmdodHRwMl9zdHJlYW0uYwotQEAg LTI1LDQ1ICsyNSwxNyBAQAotICNpbmNsdWRlICJuZ2h0dHAyX3N0cmVhbS5oIgotIAotICNpbmNs dWRlIDxhc3NlcnQuaD4KLS0jaW5jbHVkZSA8c3RkaW8uaD4KLSAKLSAjaW5jbHVkZSAibmdodHRw Ml9zZXNzaW9uLmgiCi0gI2luY2x1ZGUgIm5naHR0cDJfaGVscGVyLmgiCi0gI2luY2x1ZGUgIm5n aHR0cDJfZGVidWcuaCIKLSAjaW5jbHVkZSAibmdodHRwMl9mcmFtZS5oIgotIAotLS8qIE1heGlt dW0gZGlzdGFuY2UgYmV0d2VlbiBhbnkgdHdvIHN0cmVhbSdzIGN5Y2xlIGluIHRoZSBzYW1lCi0t ICAgcHJpb3JpdHkgcXVldWUuICBJbWFnaW5lIHN0cmVhbSBBJ3MgY3ljbGUgaXMgQSwgYW5kIHN0 cmVhbSBCJ3MKLS0gICBjeWNsZSBpcyBCLCBhbmQgQSA8IEIuICBUaGUgY3ljbGUgaXMgdW5zaWdu ZWQgMzIgYml0IGludGVnZXIsIGl0Ci0tICAgbWF5IGdldCBvdmVyZmxvdy4gIEJlY2F1c2Ugb2Yg aG93IHdlIGNhbGN1bGF0ZSB0aGUgbmV4dCBjeWNsZQotLSAgIHZhbHVlLCBpZiBCIC0gQSBpcyBs ZXNzIHRoYW4gb3IgZXF1YWxzIHRvCi0tICAgTkdIVFRQMl9NQVhfQ1lDTEVfRElTVEFOQ0UsIEEg YW5kIEIgYXJlIGluIHRoZSBzYW1lIHNjYWxlLCBpbiBvdGhlcgotLSAgIHdvcmRzLCBCIGlzIHJl YWxseSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gQS4gIE90aGVyd2lzZSwgQSBpcyBhCi0tICAg cmVzdWx0IG9mIG92ZXJmbG93LCBhbmQgaXQgaXMgYWN0dWFsbHkgQSA+IEIgaWYgd2UgY29uc2lk ZXIgdGhhdAotLSAgIGZhY3QuICovCi0tI2RlZmluZSBOR0hUVFAyX01BWF9DWUNMRV9ESVNUQU5D RSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS0gICgodWlu dDY0X3QpTkdIVFRQMl9NQVhfRlJBTUVfU0laRV9NQVggKiAyNTYgKyAyNTUpCi0tCi0tc3RhdGlj IGludCBzdHJlYW1fbGVzcyhjb25zdCB2b2lkICpsaHN4LCBjb25zdCB2b2lkICpyaHN4KSB7Ci0t ICBjb25zdCBuZ2h0dHAyX3N0cmVhbSAqbGhzLCAqcmhzOwotLQotLSAgbGhzID0gbmdodHRwMl9z dHJ1Y3Rfb2YobGhzeCwgbmdodHRwMl9zdHJlYW0sIHBxX2VudHJ5KTsKLS0gIHJocyA9IG5naHR0 cDJfc3RydWN0X29mKHJoc3gsIG5naHR0cDJfc3RyZWFtLCBwcV9lbnRyeSk7Ci0tCi0tICBpZiAo bGhzLT5jeWNsZSA9PSByaHMtPmN5Y2xlKSB7Ci0tICAgIHJldHVybiBsaHMtPnNlcSA8IHJocy0+ c2VxOwotLSAgfQotLQotLSAgcmV0dXJuIHJocy0+Y3ljbGUgLSBsaHMtPmN5Y2xlIDw9IE5HSFRU UDJfTUFYX0NZQ0xFX0RJU1RBTkNFOwotLX0KLS0KLSB2b2lkIG5naHR0cDJfc3RyZWFtX2luaXQo bmdodHRwMl9zdHJlYW0gKnN0cmVhbSwgaW50MzJfdCBzdHJlYW1faWQsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgIHVpbnQ4X3QgZmxhZ3MsIG5naHR0cDJfc3RyZWFtX3N0YXRlIGluaXRpYWxf c3RhdGUsCi0tICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3Qgd2VpZ2h0LCBpbnQzMl90 IHJlbW90ZV9pbml0aWFsX3dpbmRvd19zaXplLAotKyAgICAgICAgICAgICAgICAgICAgICAgICBp bnQzMl90IHJlbW90ZV9pbml0aWFsX3dpbmRvd19zaXplLAotICAgICAgICAgICAgICAgICAgICAg ICAgICBpbnQzMl90IGxvY2FsX2luaXRpYWxfd2luZG93X3NpemUsCi0tICAgICAgICAgICAgICAg ICAgICAgICAgIHZvaWQgKnN0cmVhbV91c2VyX2RhdGEsIG5naHR0cDJfbWVtICptZW0pIHsKLS0g IG5naHR0cDJfcHFfaW5pdCgmc3RyZWFtLT5vYnEsIHN0cmVhbV9sZXNzLCBtZW0pOwotLQotKyAg ICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpzdHJlYW1fdXNlcl9kYXRhKSB7Ci0gICBzdHJl YW0tPnN0cmVhbV9pZCA9IHN0cmVhbV9pZDsKLSAgIHN0cmVhbS0+ZmxhZ3MgPSBmbGFnczsKLSAg IHN0cmVhbS0+c3RhdGUgPSBpbml0aWFsX3N0YXRlOwotQEAgLTc3LDQyOCArNDksMzYgQEAgdm9p ZCBuZ2h0dHAyX3N0cmVhbV9pbml0KG5naHR0cDJfc3RyZWFtICpzdHJlYW0sIGludDMyX3Qgc3Ry ZWFtX2lkLAotICAgc3RyZWFtLT5yZWN2X3JlZHVjdGlvbiA9IDA7Ci0gICBzdHJlYW0tPndpbmRv d191cGRhdGVfcXVldWVkID0gMDsKLSAKLS0gIHN0cmVhbS0+ZGVwX3ByZXYgPSBOVUxMOwotLSAg c3RyZWFtLT5kZXBfbmV4dCA9IE5VTEw7Ci0tICBzdHJlYW0tPnNpYl9wcmV2ID0gTlVMTDsKLS0g IHN0cmVhbS0+c2liX25leHQgPSBOVUxMOwotLQotLSAgc3RyZWFtLT5jbG9zZWRfcHJldiA9IE5V TEw7Ci0gICBzdHJlYW0tPmNsb3NlZF9uZXh0ID0gTlVMTDsKLSAKLS0gIHN0cmVhbS0+d2VpZ2h0 ID0gd2VpZ2h0OwotLSAgc3RyZWFtLT5zdW1fZGVwX3dlaWdodCA9IDA7Ci0tCi0gICBzdHJlYW0t Pmh0dHBfZmxhZ3MgPSBOR0hUVFAyX0hUVFBfRkxBR19OT05FOwotICAgc3RyZWFtLT5jb250ZW50 X2xlbmd0aCA9IC0xOwotICAgc3RyZWFtLT5yZWN2X2NvbnRlbnRfbGVuZ3RoID0gMDsKLSAgIHN0 cmVhbS0+c3RhdHVzX2NvZGUgPSAtMTsKLSAKLSAgIHN0cmVhbS0+cXVldWVkID0gMDsKLS0gIHN0 cmVhbS0+ZGVzY2VuZGFudF9sYXN0X2N5Y2xlID0gMDsKLSAgIHN0cmVhbS0+Y3ljbGUgPSAwOwot ICAgc3RyZWFtLT5wZW5kaW5nX3BlbmFsdHkgPSAwOwotLSAgc3RyZWFtLT5kZXNjZW5kYW50X25l eHRfc2VxID0gMDsKLSAgIHN0cmVhbS0+c2VxID0gMDsKLSAgIHN0cmVhbS0+bGFzdF93cml0ZWxl biA9IDA7Ci0gCi0gICBzdHJlYW0tPmV4dHByaSA9IHN0cmVhbS0+aHR0cF9leHRwcmkgPSBOR0hU VFAyX0VYVFBSSV9ERUZBVUxUX1VSR0VOQ1k7Ci0gfQotIAotLXZvaWQgbmdodHRwMl9zdHJlYW1f ZnJlZShuZ2h0dHAyX3N0cmVhbSAqc3RyZWFtKSB7Ci0tICBuZ2h0dHAyX3BxX2ZyZWUoJnN0cmVh bS0+b2JxKTsKLS0gIC8qIFdlIGRvbid0IGZyZWUgc3RyZWFtLT5pdGVtLiAgSWYgaXQgaXMgYXNz aWduZWQgdG8gYW9iLCB0aGVuCi0tICAgICBhY3RpdmVfb3V0Ym91bmRfaXRlbV9yZXNldCgpIHdp bGwgZGVsZXRlIGl0LiAgT3RoZXJ3aXNlLAotLSAgICAgbmdodHRwMl9zdHJlYW1fY2xvc2UoKSBv ciBzZXNzaW9uX2RlbCgpIHdpbGwgZGVsZXRlIGl0LiAqLwotLX0KLSt2b2lkIG5naHR0cDJfc3Ry ZWFtX2ZyZWUobmdodHRwMl9zdHJlYW0gKnN0cmVhbSkgeyAodm9pZClzdHJlYW07IH0KLSAKLSB2 b2lkIG5naHR0cDJfc3RyZWFtX3NodXRkb3duKG5naHR0cDJfc3RyZWFtICpzdHJlYW0sIG5naHR0 cDJfc2h1dF9mbGFnIGZsYWcpIHsKLSAgIHN0cmVhbS0+c2h1dF9mbGFncyA9ICh1aW50OF90KShz dHJlYW0tPnNodXRfZmxhZ3MgfCBmbGFnKTsKLSB9Ci0gCi0tLyoKLS0gKiBSZXR1cm5zIG5vbnpl cm8gaWYgfHN0cmVhbXwgaXMgYWN0aXZlLiAgVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCB0YWtlCi0t ICogaW50byBhY2NvdW50IGl0cyBkZXNjZW5kYW50cy4KLS0gKi8KLS1zdGF0aWMgaW50IHN0cmVh bV9hY3RpdmUobmdodHRwMl9zdHJlYW0gKnN0cmVhbSkgewotLSAgcmV0dXJuIHN0cmVhbS0+aXRl bSAmJgotLSAgICAgICAgIChzdHJlYW0tPmZsYWdzICYgTkdIVFRQMl9TVFJFQU1fRkxBR19ERUZF UlJFRF9BTEwpID09IDA7Ci0tfQotLQotLS8qCi0tICogUmV0dXJucyBub256ZXJvIGlmIHxzdHJl YW18IG9yIG9uZSBvZiBpdHMgZGVzY2VuZGFudHMgaXMgYWN0aXZlCi0tICovCi0tc3RhdGljIGlu dCBzdHJlYW1fc3VidHJlZV9hY3RpdmUobmdodHRwMl9zdHJlYW0gKnN0cmVhbSkgewotLSAgcmV0 dXJuIHN0cmVhbV9hY3RpdmUoc3RyZWFtKSB8fCAhbmdodHRwMl9wcV9lbXB0eSgmc3RyZWFtLT5v YnEpOwotLX0KLS0KLS0vKgotLSAqIFJldHVybnMgbmV4dCBjeWNsZSBmb3IgfHN0cmVhbXwuCi0t ICovCi0tc3RhdGljIHZvaWQgc3RyZWFtX25leHRfY3ljbGUobmdodHRwMl9zdHJlYW0gKnN0cmVh bSwgdWludDY0X3QgbGFzdF9jeWNsZSkgewotLSAgdWludDY0X3QgcGVuYWx0eTsKLS0KLS0gIHBl bmFsdHkgPSAodWludDY0X3Qpc3RyZWFtLT5sYXN0X3dyaXRlbGVuICogTkdIVFRQMl9NQVhfV0VJ R0hUICsKLS0gICAgICAgICAgICBzdHJlYW0tPnBlbmRpbmdfcGVuYWx0eTsKLS0KLS0gIHN0cmVh bS0+Y3ljbGUgPSBsYXN0X2N5Y2xlICsgcGVuYWx0eSAvICh1aW50MzJfdClzdHJlYW0tPndlaWdo dDsKLS0gIHN0cmVhbS0+cGVuZGluZ19wZW5hbHR5ID0gKHVpbnQzMl90KShwZW5hbHR5ICUgKHVp bnQzMl90KXN0cmVhbS0+d2VpZ2h0KTsKLS19Ci0tCi0tc3RhdGljIGludCBzdHJlYW1fb2JxX3B1 c2gobmdodHRwMl9zdHJlYW0gKmRlcF9zdHJlYW0sIG5naHR0cDJfc3RyZWFtICpzdHJlYW0pIHsK LS0gIGludCBydjsKLS0KLS0gIGZvciAoOyBkZXBfc3RyZWFtICYmICFzdHJlYW0tPnF1ZXVlZDsK LS0gICAgICAgc3RyZWFtID0gZGVwX3N0cmVhbSwgZGVwX3N0cmVhbSA9IGRlcF9zdHJlYW0tPmRl cF9wcmV2KSB7Ci0tICAgIHN0cmVhbV9uZXh0X2N5Y2xlKHN0cmVhbSwgZGVwX3N0cmVhbS0+ZGVz Y2VuZGFudF9sYXN0X2N5Y2xlKTsKLS0gICAgc3RyZWFtLT5zZXEgPSBkZXBfc3RyZWFtLT5kZXNj ZW5kYW50X25leHRfc2VxKys7Ci0tCi0tICAgIERFQlVHRigic3RyZWFtOiBzdHJlYW09JWQgb2Jx IHB1c2ggY3ljbGU9JWx1XG4iLCBzdHJlYW0tPnN0cmVhbV9pZCwKLS0gICAgICAgICAgIHN0cmVh bS0+Y3ljbGUpOwotLQotLSAgICBERUJVR0YoInN0cmVhbTogcHVzaCBzdHJlYW0gJWQgdG8gc3Ry ZWFtICVkXG4iLCBzdHJlYW0tPnN0cmVhbV9pZCwKLS0gICAgICAgICAgIGRlcF9zdHJlYW0tPnN0 cmVhbV9pZCk7Ci0tCi0tICAgIHJ2ID0gbmdodHRwMl9wcV9wdXNoKCZkZXBfc3RyZWFtLT5vYnEs ICZzdHJlYW0tPnBxX2VudHJ5KTsKLS0gICAgaWYgKHJ2ICE9IDApIHsKLS0gICAgICByZXR1cm4g cnY7Ci0tICAgIH0KLS0gICAgc3RyZWFtLT5xdWV1ZWQgPSAxOwotLSAgfQotLQotLSAgcmV0dXJu IDA7Ci0tfQotLQotLS8qCi0tICogUmVtb3ZlcyB8c3RyZWFtfCBmcm9tIHBhcmVudCdzIG9icS4g IElmIHJlbW92YWwgb2YgfHN0cmVhbXwgbWFrZXMKLS0gKiBwYXJlbnQncyBvYnEgZW1wdHksIGFu ZCBwYXJlbnQgaXMgbm90IGFjdGl2ZSwgdGhlbiBwYXJlbnQgaXMgYWxzbwotLSAqIHJlbW92ZWQu ICBUaGlzIHByb2Nlc3MgaXMgcmVwZWF0ZWQgcmVjdXJzaXZlbHkuCi0tICovCi0tc3RhdGljIHZv aWQgc3RyZWFtX29icV9yZW1vdmUobmdodHRwMl9zdHJlYW0gKnN0cmVhbSkgewotLSAgbmdodHRw Ml9zdHJlYW0gKmRlcF9zdHJlYW07Ci0tCi0tICBkZXBfc3RyZWFtID0gc3RyZWFtLT5kZXBfcHJl djsKLS0KLS0gIGlmICghc3RyZWFtLT5xdWV1ZWQpIHsKLS0gICAgcmV0dXJuOwotLSAgfQotLQot LSAgZm9yICg7IGRlcF9zdHJlYW07IHN0cmVhbSA9IGRlcF9zdHJlYW0sIGRlcF9zdHJlYW0gPSBk ZXBfc3RyZWFtLT5kZXBfcHJldikgewotLSAgICBERUJVR0YoInN0cmVhbTogcmVtb3ZlIHN0cmVh bSAlZCBmcm9tIHN0cmVhbSAlZFxuIiwgc3RyZWFtLT5zdHJlYW1faWQsCi0tICAgICAgICAgICBk ZXBfc3RyZWFtLT5zdHJlYW1faWQpOwotLQotLSAgICBuZ2h0dHAyX3BxX3JlbW92ZSgmZGVwX3N0 cmVhbS0+b2JxLCAmc3RyZWFtLT5wcV9lbnRyeSk7Ci0tCi0tICAgIGFzc2VydChzdHJlYW0tPnF1 ZXVlZCk7Ci0tCi0tICAgIHN0cmVhbS0+cXVldWVkID0gMDsKLS0gICAgc3RyZWFtLT5jeWNsZSA9 IDA7Ci0tICAgIHN0cmVhbS0+cGVuZGluZ19wZW5hbHR5ID0gMDsKLS0gICAgc3RyZWFtLT5kZXNj ZW5kYW50X2xhc3RfY3ljbGUgPSAwOwotLSAgICBzdHJlYW0tPmxhc3Rfd3JpdGVsZW4gPSAwOwot LQotLSAgICBpZiAoc3RyZWFtX3N1YnRyZWVfYWN0aXZlKGRlcF9zdHJlYW0pKSB7Ci0tICAgICAg cmV0dXJuOwotLSAgICB9Ci0tICB9Ci0tfQotLQotLS8qCi0tICogTW92ZXMgfHN0cmVhbXwgZnJv bSB8c3JjfCdzIG9icSB0byB8ZGVzdHwncyBvYnEuICBSZW1vdmFsIGZyb20KLS0gKiB8c3JjfCdz IG9icSBpcyBqdXN0IGRvbmUgY2FsbGluZyBuZ2h0dHAyX3BxX3JlbW92ZSgpLCBzbyBpdCBkb2Vz Ci0tICogbm90IHJlY3Vyc2l2ZWx5IHJlbW92ZSB8c3JjfCBhbmQgYW5jZXN0b3JzLCBsaWtlCi0t ICogc3RyZWFtX29icV9yZW1vdmUoKS4KLS0gKi8KLS1zdGF0aWMgaW50IHN0cmVhbV9vYnFfbW92 ZShuZ2h0dHAyX3N0cmVhbSAqZGVzdCwgbmdodHRwMl9zdHJlYW0gKnNyYywKLS0gICAgICAgICAg ICAgICAgICAgICAgICAgICBuZ2h0dHAyX3N0cmVhbSAqc3RyZWFtKSB7Ci0tICBpZiAoIXN0cmVh bS0+cXVldWVkKSB7Ci0tICAgIHJldHVybiAwOwotLSAgfQotLQotLSAgREVCVUdGKCJzdHJlYW06 IHJlbW92ZSBzdHJlYW0gJWQgZnJvbSBzdHJlYW0gJWQgKG1vdmUpXG4iLCBzdHJlYW0tPnN0cmVh bV9pZCwKLS0gICAgICAgICBzcmMtPnN0cmVhbV9pZCk7Ci0tCi0tICBuZ2h0dHAyX3BxX3JlbW92 ZSgmc3JjLT5vYnEsICZzdHJlYW0tPnBxX2VudHJ5KTsKLS0gIHN0cmVhbS0+cXVldWVkID0gMDsK LS0KLS0gIHJldHVybiBzdHJlYW1fb2JxX3B1c2goZGVzdCwgc3RyZWFtKTsKLS19Ci0tCi0tdm9p ZCBuZ2h0dHAyX3N0cmVhbV9yZXNjaGVkdWxlKG5naHR0cDJfc3RyZWFtICpzdHJlYW0pIHsKLS0g IG5naHR0cDJfc3RyZWFtICpkZXBfc3RyZWFtOwotLQotLSAgYXNzZXJ0KHN0cmVhbS0+cXVldWVk KTsKLS0KLS0gIGRlcF9zdHJlYW0gPSBzdHJlYW0tPmRlcF9wcmV2OwotLQotLSAgZm9yICg7IGRl cF9zdHJlYW07IHN0cmVhbSA9IGRlcF9zdHJlYW0sIGRlcF9zdHJlYW0gPSBkZXBfc3RyZWFtLT5k ZXBfcHJldikgewotLSAgICBuZ2h0dHAyX3BxX3JlbW92ZSgmZGVwX3N0cmVhbS0+b2JxLCAmc3Ry ZWFtLT5wcV9lbnRyeSk7Ci0tCi0tICAgIHN0cmVhbV9uZXh0X2N5Y2xlKHN0cmVhbSwgZGVwX3N0 cmVhbS0+ZGVzY2VuZGFudF9sYXN0X2N5Y2xlKTsKLS0gICAgc3RyZWFtLT5zZXEgPSBkZXBfc3Ry ZWFtLT5kZXNjZW5kYW50X25leHRfc2VxKys7Ci0tCi0tICAgIG5naHR0cDJfcHFfcHVzaCgmZGVw X3N0cmVhbS0+b2JxLCAmc3RyZWFtLT5wcV9lbnRyeSk7Ci0tCi0tICAgIERFQlVHRigic3RyZWFt OiBzdHJlYW09JWQgb2JxIHJlc2NoZWQgY3ljbGU9JWx1XG4iLCBzdHJlYW0tPnN0cmVhbV9pZCwK LS0gICAgICAgICAgIHN0cmVhbS0+Y3ljbGUpOwotLQotLSAgICBkZXBfc3RyZWFtLT5sYXN0X3dy aXRlbGVuID0gc3RyZWFtLT5sYXN0X3dyaXRlbGVuOwotLSAgfQotLX0KLS0KLS12b2lkIG5naHR0 cDJfc3RyZWFtX2NoYW5nZV93ZWlnaHQobmdodHRwMl9zdHJlYW0gKnN0cmVhbSwgaW50MzJfdCB3 ZWlnaHQpIHsKLS0gIG5naHR0cDJfc3RyZWFtICpkZXBfc3RyZWFtOwotLSAgdWludDY0X3QgbGFz dF9jeWNsZTsKLS0gIGludDMyX3Qgb2xkX3dlaWdodDsKLS0gIHVpbnQ2NF90IHdsZW5fcGVuYWx0 eTsKLS0KLS0gIGlmIChzdHJlYW0tPndlaWdodCA9PSB3ZWlnaHQpIHsKLS0gICAgcmV0dXJuOwot LSAgfQotLQotLSAgb2xkX3dlaWdodCA9IHN0cmVhbS0+d2VpZ2h0OwotLSAgc3RyZWFtLT53ZWln aHQgPSB3ZWlnaHQ7Ci0tCi0tICBkZXBfc3RyZWFtID0gc3RyZWFtLT5kZXBfcHJldjsKLS0KLS0g IGlmICghZGVwX3N0cmVhbSkgewotLSAgICByZXR1cm47Ci0tICB9Ci0tCi0tICBkZXBfc3RyZWFt LT5zdW1fZGVwX3dlaWdodCArPSB3ZWlnaHQgLSBvbGRfd2VpZ2h0OwotLQotLSAgaWYgKCFzdHJl YW0tPnF1ZXVlZCkgewotLSAgICByZXR1cm47Ci0tICB9Ci0tCi0tICBuZ2h0dHAyX3BxX3JlbW92 ZSgmZGVwX3N0cmVhbS0+b2JxLCAmc3RyZWFtLT5wcV9lbnRyeSk7Ci0tCi0tICB3bGVuX3BlbmFs dHkgPSAodWludDY0X3Qpc3RyZWFtLT5sYXN0X3dyaXRlbGVuICogTkdIVFRQMl9NQVhfV0VJR0hU OwotLQotLSAgLyogQ29tcHV0ZSBvbGQgc3RyZWFtLT5wZW5kaW5nX3BlbmFsdHkgd2UgdXNlZCB0 byBjYWxjdWxhdGUKLS0gICAgIHN0cmVhbS0+Y3ljbGUgKi8KLS0gIHN0cmVhbS0+cGVuZGluZ19w ZW5hbHR5ID0KLS0gICAgKHVpbnQzMl90KSgoc3RyZWFtLT5wZW5kaW5nX3BlbmFsdHkgKyAodWlu dDMyX3Qpb2xkX3dlaWdodCAtCi0tICAgICAgICAgICAgICAgICh3bGVuX3BlbmFsdHkgJSAodWlu dDMyX3Qpb2xkX3dlaWdodCkpICUKLS0gICAgICAgICAgICAgICAodWludDMyX3Qpb2xkX3dlaWdo dCk7Ci0tCi0tICBsYXN0X2N5Y2xlID0gc3RyZWFtLT5jeWNsZSAtCi0tICAgICAgICAgICAgICAg KHdsZW5fcGVuYWx0eSArIHN0cmVhbS0+cGVuZGluZ19wZW5hbHR5KSAvICh1aW50MzJfdClvbGRf d2VpZ2h0OwotLQotLSAgLyogTm93IHdlIGhhdmUgb2xkIHN0cmVhbS0+cGVuZGluZ19wZW5hbHR5 IGFuZCBuZXcgc3RyZWFtLT53ZWlnaHQgaW4KLS0gICAgIHBsYWNlICovCi0tICBzdHJlYW1fbmV4 dF9jeWNsZShzdHJlYW0sIGxhc3RfY3ljbGUpOwotLQotLSAgaWYgKGRlcF9zdHJlYW0tPmRlc2Nl bmRhbnRfbGFzdF9jeWNsZSAtIHN0cmVhbS0+Y3ljbGUgPD0KLS0gICAgICBOR0hUVFAyX01BWF9D WUNMRV9ESVNUQU5DRSkgewotLSAgICBzdHJlYW0tPmN5Y2xlID0gZGVwX3N0cmVhbS0+ZGVzY2Vu ZGFudF9sYXN0X2N5Y2xlOwotLSAgfQotLQotLSAgLyogQ29udGludWUgdG8gdXNlIHNhbWUgc3Ry ZWFtLT5zZXEgKi8KLS0KLS0gIG5naHR0cDJfcHFfcHVzaCgmZGVwX3N0cmVhbS0+b2JxLCAmc3Ry ZWFtLT5wcV9lbnRyeSk7Ci0tCi0tICBERUJVR0YoInN0cmVhbTogc3RyZWFtPSVkIG9icSByZXNj aGVkIGN5Y2xlPSVsdVxuIiwgc3RyZWFtLT5zdHJlYW1faWQsCi0tICAgICAgICAgc3RyZWFtLT5j eWNsZSk7Ci0tfQotLQotLXN0YXRpYyBuZ2h0dHAyX3N0cmVhbSAqc3RyZWFtX2xhc3Rfc2liKG5n aHR0cDJfc3RyZWFtICpzdHJlYW0pIHsKLS0gIGZvciAoOyBzdHJlYW0tPnNpYl9uZXh0OyBzdHJl YW0gPSBzdHJlYW0tPnNpYl9uZXh0KQotLSAgICA7Ci0tCi0tICByZXR1cm4gc3RyZWFtOwotLX0K LS0KLS1pbnQzMl90IG5naHR0cDJfc3RyZWFtX2RlcF9kaXN0cmlidXRlZF93ZWlnaHQobmdodHRw Ml9zdHJlYW0gKnN0cmVhbSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaW50MzJfdCB3ZWlnaHQpIHsKLS0gIHdlaWdodCA9IHN0cmVhbS0+d2VpZ2h0ICog d2VpZ2h0IC8gc3RyZWFtLT5zdW1fZGVwX3dlaWdodDsKLS0KLS0gIHJldHVybiBuZ2h0dHAyX21h eF9pbnQzMigxLCB3ZWlnaHQpOwotLX0KLS0KLS0jaWZkZWYgU1RSRUFNX0RFUF9ERUJVRwotLQot LXN0YXRpYyB2b2lkIGVuc3VyZV9pbmFjdGl2ZShuZ2h0dHAyX3N0cmVhbSAqc3RyZWFtKSB7Ci0t ICBuZ2h0dHAyX3N0cmVhbSAqc2k7Ci0tCi0tICBpZiAoc3RyZWFtLT5xdWV1ZWQpIHsKLS0gICAg ZnByaW50ZihzdGRlcnIsICJzdHJlYW0oJXApPSVkLCBzdHJlYW0tPnF1ZXVlZCA9IDE7IHdhbnQg MFxuIiwgc3RyZWFtLAotLSAgICAgICAgICAgIHN0cmVhbS0+c3RyZWFtX2lkKTsKLS0gICAgYXNz ZXJ0KDApOwotLSAgfQotLQotLSAgaWYgKHN0cmVhbV9hY3RpdmUoc3RyZWFtKSkgewotLSAgICBm cHJpbnRmKHN0ZGVyciwgInN0cmVhbSglcCk9JWQsIHN0cmVhbV9hY3RpdmUoc3RyZWFtKSA9IDE7 IHdhbnQgMFxuIiwKLS0gICAgICAgICAgICBzdHJlYW0sIHN0cmVhbS0+c3RyZWFtX2lkKTsKLS0g ICAgYXNzZXJ0KDApOwotLSAgfQotLQotLSAgaWYgKCFuZ2h0dHAyX3BxX2VtcHR5KCZzdHJlYW0t Pm9icSkpIHsKLS0gICAgZnByaW50ZihzdGRlcnIsICJzdHJlYW0oJXApPSVkLCBuZ2h0dHAyX3Bx X3NpemUoKSA9ICV6dTsgd2FudCAwXG4iLCBzdHJlYW0sCi0tICAgICAgICAgICAgc3RyZWFtLT5z dHJlYW1faWQsIG5naHR0cDJfcHFfc2l6ZSgmc3RyZWFtLT5vYnEpKTsKLS0gICAgYXNzZXJ0KDAp OwotLSAgfQotLQotLSAgZm9yIChzaSA9IHN0cmVhbS0+ZGVwX25leHQ7IHNpOyBzaSA9IHNpLT5z aWJfbmV4dCkgewotLSAgICBlbnN1cmVfaW5hY3RpdmUoc2kpOwotLSAgfQotLX0KLS0KLS1zdGF0 aWMgdm9pZCBjaGVja19xdWV1ZWQobmdodHRwMl9zdHJlYW0gKnN0cmVhbSkgewotLSAgbmdodHRw Ml9zdHJlYW0gKnNpOwotLSAgaW50IHF1ZXVlZDsKLS0KLS0gIGlmIChzdHJlYW0tPnF1ZXVlZCkg ewotLSAgICBpZiAoIXN0cmVhbV9zdWJ0cmVlX2FjdGl2ZShzdHJlYW0pKSB7Ci0tICAgICAgZnBy aW50ZihzdGRlcnIsCi0tICAgICAgICAgICAgICAic3RyZWFtKCVwKT0lZCwgc3RyZWFtLT5xdWV1 ZWQgPT0gMSwgYnV0ICIKLS0gICAgICAgICAgICAgICJzdHJlYW1fYWN0aXZlKCkgPT0gJWQgYW5k IG5naHR0cDJfcHFfc2l6ZSgmc3RyZWFtLT5vYnEpID0gJXp1XG4iLAotLSAgICAgICAgICAgICAg c3RyZWFtLCBzdHJlYW0tPnN0cmVhbV9pZCwgc3RyZWFtX2FjdGl2ZShzdHJlYW0pLAotLSAgICAg ICAgICAgICAgbmdodHRwMl9wcV9zaXplKCZzdHJlYW0tPm9icSkpOwotLSAgICAgIGFzc2VydCgw KTsKLS0gICAgfQotLSAgICBpZiAoIXN0cmVhbV9hY3RpdmUoc3RyZWFtKSkgewotLSAgICAgIHF1 ZXVlZCA9IDA7Ci0tICAgICAgZm9yIChzaSA9IHN0cmVhbS0+ZGVwX25leHQ7IHNpOyBzaSA9IHNp LT5zaWJfbmV4dCkgewotLSAgICAgICAgaWYgKHNpLT5xdWV1ZWQpIHsKLS0gICAgICAgICAgKytx dWV1ZWQ7Ci0tICAgICAgICB9Ci0tICAgICAgfQotLSAgICAgIGlmIChxdWV1ZWQgPT0gMCkgewot LSAgICAgICAgZnByaW50ZihzdGRlcnIsCi0tICAgICAgICAgICAgICAgICJzdHJlYW0oJXApPSVk LCBzdHJlYW0tPnF1ZXVlZCA9PSAxLCBhbmQgIgotLSAgICAgICAgICAgICAgICAiIXN0cmVhbV9h Y3RpdmUoKSwgYnV0IG5vIGRlc2NlbmRhbnRzIGlzIHF1ZXVlZFxuIiwKLS0gICAgICAgICAgICAg ICAgc3RyZWFtLCBzdHJlYW0tPnN0cmVhbV9pZCk7Ci0tICAgICAgICBhc3NlcnQoMCk7Ci0tICAg ICAgfQotLSAgICB9Ci0tCi0tICAgIGZvciAoc2kgPSBzdHJlYW0tPmRlcF9uZXh0OyBzaTsgc2kg PSBzaS0+c2liX25leHQpIHsKLS0gICAgICBjaGVja19xdWV1ZWQoc2kpOwotLSAgICB9Ci0tICB9 IGVsc2UgewotLSAgICBpZiAoc3RyZWFtX2FjdGl2ZShzdHJlYW0pIHx8ICFuZ2h0dHAyX3BxX2Vt cHR5KCZzdHJlYW0tPm9icSkpIHsKLS0gICAgICBmcHJpbnRmKHN0ZGVyciwKLS0gICAgICAgICAg ICAgICJzdHJlYW0oJXApID0gJWQsIHN0cmVhbS0+cXVldWVkID09IDAsIGJ1dCAiCi0tICAgICAg ICAgICAgICAic3RyZWFtX2FjdGl2ZShzdHJlYW0pID09ICVkIGFuZCAiCi0tICAgICAgICAgICAg ICAibmdodHRwMl9wcV9zaXplKCZzdHJlYW0tPm9icSkgPSAlenVcbiIsCi0tICAgICAgICAgICAg ICBzdHJlYW0sIHN0cmVhbS0+c3RyZWFtX2lkLCBzdHJlYW1fYWN0aXZlKHN0cmVhbSksCi0tICAg ICAgICAgICAgICBuZ2h0dHAyX3BxX3NpemUoJnN0cmVhbS0+b2JxKSk7Ci0tICAgICAgYXNzZXJ0 KDApOwotLSAgICB9Ci0tICAgIGZvciAoc2kgPSBzdHJlYW0tPmRlcF9uZXh0OyBzaTsgc2kgPSBz aS0+c2liX25leHQpIHsKLS0gICAgICBlbnN1cmVfaW5hY3RpdmUoc2kpOwotLSAgICB9Ci0tICB9 Ci0tfQotLQotLXN0YXRpYyB2b2lkIGNoZWNrX3N1bV9kZXAobmdodHRwMl9zdHJlYW0gKnN0cmVh bSkgewotLSAgbmdodHRwMl9zdHJlYW0gKnNpOwotLSAgaW50MzJfdCBuID0gMDsKLS0gIGZvciAo c2kgPSBzdHJlYW0tPmRlcF9uZXh0OyBzaTsgc2kgPSBzaS0+c2liX25leHQpIHsKLS0gICAgbiAr PSBzaS0+d2VpZ2h0OwotLSAgfQotLSAgaWYgKG4gIT0gc3RyZWFtLT5zdW1fZGVwX3dlaWdodCkg ewotLSAgICBmcHJpbnRmKHN0ZGVyciwgInN0cmVhbSglcCk9JWQsIHN1bV9kZXBfd2VpZ2h0ID0g JWQ7IHdhbnQgJWRcbiIsIHN0cmVhbSwKLS0gICAgICAgICAgICBzdHJlYW0tPnN0cmVhbV9pZCwg biwgc3RyZWFtLT5zdW1fZGVwX3dlaWdodCk7Ci0tICAgIGFzc2VydCgwKTsKLS0gIH0KLS0gIGZv ciAoc2kgPSBzdHJlYW0tPmRlcF9uZXh0OyBzaTsgc2kgPSBzaS0+c2liX25leHQpIHsKLS0gICAg Y2hlY2tfc3VtX2RlcChzaSk7Ci0tICB9Ci0tfQotLQotLXN0YXRpYyB2b2lkIGNoZWNrX2RlcF9w cmV2KG5naHR0cDJfc3RyZWFtICpzdHJlYW0pIHsKLS0gIG5naHR0cDJfc3RyZWFtICpzaTsKLS0g IGZvciAoc2kgPSBzdHJlYW0tPmRlcF9uZXh0OyBzaTsgc2kgPSBzaS0+c2liX25leHQpIHsKLS0g ICAgaWYgKHNpLT5kZXBfcHJldiAhPSBzdHJlYW0pIHsKLS0gICAgICBmcHJpbnRmKHN0ZGVyciwg InNpLT5kZXBfcHJldiA9ICVwOyB3YW50ICVwXG4iLCBzaS0+ZGVwX3ByZXYsIHN0cmVhbSk7Ci0t ICAgICAgYXNzZXJ0KDApOwotLSAgICB9Ci0tICAgIGNoZWNrX2RlcF9wcmV2KHNpKTsKLS0gIH0K LS19Ci0tCi0tI2VuZGlmIC8qIFNUUkVBTV9ERVBfREVCVUcgKi8KLS0KLS0jaWZkZWYgU1RSRUFN X0RFUF9ERUJVRwotLXN0YXRpYyB2b2lkIHZhbGlkYXRlX3RyZWUobmdodHRwMl9zdHJlYW0gKnN0 cmVhbSkgewotLSAgbmdodHRwMl9zdHJlYW0gKnNpOwotLQotLSAgaWYgKCFzdHJlYW0pIHsKLS0g ICAgcmV0dXJuOwotLSAgfQotLQotLSAgZm9yICg7IHN0cmVhbS0+ZGVwX3ByZXY7IHN0cmVhbSA9 IHN0cmVhbS0+ZGVwX3ByZXYpCi0tICAgIDsKLS0KLS0gIGFzc2VydChzdHJlYW0tPnN0cmVhbV9p ZCA9PSAwKTsKLS0gIGFzc2VydCghc3RyZWFtLT5xdWV1ZWQpOwotLQotLSAgZnByaW50ZihzdGRl cnIsICJjaGVja2luZy4uLlxuIik7Ci0tICBpZiAobmdodHRwMl9wcV9lbXB0eSgmc3RyZWFtLT5v YnEpKSB7Ci0tICAgIGZwcmludGYoc3RkZXJyLCAicm9vdCBvYnEgZW1wdHlcbiIpOwotLSAgICBm b3IgKHNpID0gc3RyZWFtLT5kZXBfbmV4dDsgc2k7IHNpID0gc2ktPnNpYl9uZXh0KSB7Ci0tICAg ICAgZW5zdXJlX2luYWN0aXZlKHNpKTsKLS0gICAgfQotLSAgfSBlbHNlIHsKLS0gICAgZm9yIChz aSA9IHN0cmVhbS0+ZGVwX25leHQ7IHNpOyBzaSA9IHNpLT5zaWJfbmV4dCkgewotLSAgICAgIGNo ZWNrX3F1ZXVlZChzaSk7Ci0tICAgIH0KLS0gIH0KLS0KLS0gIGNoZWNrX3N1bV9kZXAoc3RyZWFt KTsKLS0gIGNoZWNrX2RlcF9wcmV2KHN0cmVhbSk7Ci0tfQotLSNlbHNlICAvKiAhU1RSRUFNX0RF UF9ERUJVRyAqLwotLXN0YXRpYyB2b2lkIHZhbGlkYXRlX3RyZWUobmdodHRwMl9zdHJlYW0gKnN0 cmVhbSkgeyAodm9pZClzdHJlYW07IH0KLS0jZW5kaWYgLyogIVNUUkVBTV9ERVBfREVCVUcqLwot LQotLXN0YXRpYyBpbnQgc3RyZWFtX3VwZGF0ZV9kZXBfb25fYXR0YWNoX2l0ZW0obmdodHRwMl9z dHJlYW0gKnN0cmVhbSkgewotLSAgaW50IHJ2OwotLQotLSAgcnYgPSBzdHJlYW1fb2JxX3B1c2go c3RyZWFtLT5kZXBfcHJldiwgc3RyZWFtKTsKLS0gIGlmIChydiAhPSAwKSB7Ci0tICAgIHJldHVy biBydjsKLS0gIH0KLS0KLS0gIHZhbGlkYXRlX3RyZWUoc3RyZWFtKTsKLS0gIHJldHVybiAwOwot LX0KLS0KLS1zdGF0aWMgdm9pZCBzdHJlYW1fdXBkYXRlX2RlcF9vbl9kZXRhY2hfaXRlbShuZ2h0 dHAyX3N0cmVhbSAqc3RyZWFtKSB7Ci0tICBpZiAobmdodHRwMl9wcV9lbXB0eSgmc3RyZWFtLT5v YnEpKSB7Ci0tICAgIHN0cmVhbV9vYnFfcmVtb3ZlKHN0cmVhbSk7Ci0tICB9Ci0tCi0tICB2YWxp ZGF0ZV90cmVlKHN0cmVhbSk7Ci0tfQotLQotLWludCBuZ2h0dHAyX3N0cmVhbV9hdHRhY2hfaXRl bShuZ2h0dHAyX3N0cmVhbSAqc3RyZWFtLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBuZ2h0dHAyX291dGJvdW5kX2l0ZW0gKml0ZW0pIHsKLS0gIGludCBydjsKLS0KLSt2b2lkIG5n aHR0cDJfc3RyZWFtX2F0dGFjaF9pdGVtKG5naHR0cDJfc3RyZWFtICpzdHJlYW0sCi0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBuZ2h0dHAyX291dGJvdW5kX2l0ZW0gKml0ZW0pIHsK LSAgIGFzc2VydCgoc3RyZWFtLT5mbGFncyAmIE5HSFRUUDJfU1RSRUFNX0ZMQUdfREVGRVJSRURf QUxMKSA9PSAwKTsKLSAgIGFzc2VydChzdHJlYW0tPml0ZW0gPT0gTlVMTCk7Ci0gCi0gICBERUJV R0YoInN0cmVhbTogc3RyZWFtPSVkIGF0dGFjaCBpdGVtPSVwXG4iLCBzdHJlYW0tPnN0cmVhbV9p ZCwgaXRlbSk7Ci0gCi0gICBzdHJlYW0tPml0ZW0gPSBpdGVtOwotLQotLSAgaWYgKHN0cmVhbS0+ ZmxhZ3MgJiBOR0hUVFAyX1NUUkVBTV9GTEFHX05PX1JGQzc1NDBfUFJJT1JJVElFUykgewotLSAg ICByZXR1cm4gMDsKLS0gIH0KLS0KLS0gIHJ2ID0gc3RyZWFtX3VwZGF0ZV9kZXBfb25fYXR0YWNo X2l0ZW0oc3RyZWFtKTsKLS0gIGlmIChydiAhPSAwKSB7Ci0tICAgIC8qIFRoaXMgbWF5IHJlbGF2 ZSBzdHJlYW0tPnF1ZXVlZCA9PSAxLCBidXQgc3RyZWFtLT5pdGVtID09IE5VTEwuCi0tICAgICAg IEJ1dCBvbmx5IGNvbnNlcXVlbmNlIG9mIHRoaXMgZXJyb3IgaXMgZmF0YWwgb25lLCBhbmQgc2Vz c2lvbgotLSAgICAgICBkZXN0cnVjdGlvbi4gIEluIHRoYXQgZXhlY3V0aW9uIHBhdGgsIHRoZXNl IGluY29uc2lzdGVuY3kgZG9lcwotLSAgICAgICBub3QgbWF0dGVyLiAqLwotLSAgICBzdHJlYW0t Pml0ZW0gPSBOVUxMOwotLSAgICByZXR1cm4gcnY7Ci0tICB9Ci0tCi0tICByZXR1cm4gMDsKLSB9 Ci0gCi0gdm9pZCBuZ2h0dHAyX3N0cmVhbV9kZXRhY2hfaXRlbShuZ2h0dHAyX3N0cmVhbSAqc3Ry ZWFtKSB7Ci1AQCAtNTA2LDEyICs4Niw2IEBAIHZvaWQgbmdodHRwMl9zdHJlYW1fZGV0YWNoX2l0 ZW0obmdodHRwMl9zdHJlYW0gKnN0cmVhbSkgewotIAotICAgc3RyZWFtLT5pdGVtID0gTlVMTDsK LSAgIHN0cmVhbS0+ZmxhZ3MgPSAodWludDhfdCkoc3RyZWFtLT5mbGFncyAmIH5OR0hUVFAyX1NU UkVBTV9GTEFHX0RFRkVSUkVEX0FMTCk7Ci0tCi0tICBpZiAoc3RyZWFtLT5mbGFncyAmIE5HSFRU UDJfU1RSRUFNX0ZMQUdfTk9fUkZDNzU0MF9QUklPUklUSUVTKSB7Ci0tICAgIHJldHVybjsKLS0g IH0KLS0KLS0gIHN0cmVhbV91cGRhdGVfZGVwX29uX2RldGFjaF9pdGVtKHN0cmVhbSk7Ci0gfQot IAotIHZvaWQgbmdodHRwMl9zdHJlYW1fZGVmZXJfaXRlbShuZ2h0dHAyX3N0cmVhbSAqc3RyZWFt LCB1aW50OF90IGZsYWdzKSB7Ci1AQCAtNTIxLDMxICs5NSwxNiBAQCB2b2lkIG5naHR0cDJfc3Ry ZWFtX2RlZmVyX2l0ZW0obmdodHRwMl9zdHJlYW0gKnN0cmVhbSwgdWludDhfdCBmbGFncykgewot ICAgICAgICAgIHN0cmVhbS0+aXRlbSwgZmxhZ3MpOwotIAotICAgc3RyZWFtLT5mbGFncyB8PSBm bGFnczsKLS0KLS0gIGlmIChzdHJlYW0tPmZsYWdzICYgTkdIVFRQMl9TVFJFQU1fRkxBR19OT19S RkM3NTQwX1BSSU9SSVRJRVMpIHsKLS0gICAgcmV0dXJuOwotLSAgfQotLQotLSAgc3RyZWFtX3Vw ZGF0ZV9kZXBfb25fZGV0YWNoX2l0ZW0oc3RyZWFtKTsKLSB9Ci0gCi0taW50IG5naHR0cDJfc3Ry ZWFtX3Jlc3VtZV9kZWZlcnJlZF9pdGVtKG5naHR0cDJfc3RyZWFtICpzdHJlYW0sIHVpbnQ4X3Qg ZmxhZ3MpIHsKLSt2b2lkIG5naHR0cDJfc3RyZWFtX3Jlc3VtZV9kZWZlcnJlZF9pdGVtKG5naHR0 cDJfc3RyZWFtICpzdHJlYW0sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB1aW50OF90IGZsYWdzKSB7Ci0gICBhc3NlcnQoc3RyZWFtLT5pdGVtKTsKLSAKLSAgIERF QlVHRigic3RyZWFtOiBzdHJlYW09JWQgcmVzdW1lIGl0ZW09JXAgZmxhZ3M9JTAyeFxuIiwgc3Ry ZWFtLT5zdHJlYW1faWQsCi0gICAgICAgICAgc3RyZWFtLT5pdGVtLCBmbGFncyk7Ci0gCi0gICBz dHJlYW0tPmZsYWdzID0gKHVpbnQ4X3QpKHN0cmVhbS0+ZmxhZ3MgJiB+ZmxhZ3MpOwotLQotLSAg aWYgKHN0cmVhbS0+ZmxhZ3MgJiBOR0hUVFAyX1NUUkVBTV9GTEFHX0RFRkVSUkVEX0FMTCkgewot LSAgICByZXR1cm4gMDsKLS0gIH0KLS0KLS0gIGlmIChzdHJlYW0tPmZsYWdzICYgTkdIVFRQMl9T VFJFQU1fRkxBR19OT19SRkM3NTQwX1BSSU9SSVRJRVMpIHsKLS0gICAgcmV0dXJuIDA7Ci0tICB9 Ci0tCi0tICByZXR1cm4gc3RyZWFtX3VwZGF0ZV9kZXBfb25fYXR0YWNoX2l0ZW0oc3RyZWFtKTsK LSB9Ci0gCi0gaW50IG5naHR0cDJfc3RyZWFtX2NoZWNrX2RlZmVycmVkX2l0ZW0obmdodHRwMl9z dHJlYW0gKnN0cmVhbSkgewotQEAgLTU5MSwzNzMgKzE1MCwxMSBAQCB2b2lkIG5naHR0cDJfc3Ry ZWFtX3Byb21pc2VfZnVsZmlsbGVkKG5naHR0cDJfc3RyZWFtICpzdHJlYW0pIHsKLSAgIHN0cmVh bS0+ZmxhZ3MgPSAodWludDhfdCkoc3RyZWFtLT5mbGFncyAmIH5OR0hUVFAyX1NUUkVBTV9GTEFH X1BVU0gpOwotIH0KLSAKLS1pbnQgbmdodHRwMl9zdHJlYW1fZGVwX2ZpbmRfYW5jZXN0b3Iobmdo dHRwMl9zdHJlYW0gKnN0cmVhbSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgbmdodHRwMl9zdHJlYW0gKnRhcmdldCkgewotLSAgZm9yICg7IHN0cmVhbTsgc3RyZWFtID0g c3RyZWFtLT5kZXBfcHJldikgewotLSAgICBpZiAoc3RyZWFtID09IHRhcmdldCkgewotLSAgICAg IHJldHVybiAxOwotLSAgICB9Ci0tICB9Ci0tICByZXR1cm4gMDsKLS19Ci0tCi0taW50IG5naHR0 cDJfc3RyZWFtX2RlcF9pbnNlcnQobmdodHRwMl9zdHJlYW0gKmRlcF9zdHJlYW0sCi0tICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbmdodHRwMl9zdHJlYW0gKnN0cmVhbSkgewotLSAgbmdo dHRwMl9zdHJlYW0gKnNpOwotLSAgaW50IHJ2OwotLQotLSAgREVCVUdGKCJzdHJlYW06IGRlcF9p bnNlcnQgZGVwX3N0cmVhbSglcCk9JWQsIHN0cmVhbSglcCk9JWRcbiIsIGRlcF9zdHJlYW0sCi0t ICAgICAgICAgZGVwX3N0cmVhbS0+c3RyZWFtX2lkLCBzdHJlYW0sIHN0cmVhbS0+c3RyZWFtX2lk KTsKLS0KLS0gIHN0cmVhbS0+c3VtX2RlcF93ZWlnaHQgPSBkZXBfc3RyZWFtLT5zdW1fZGVwX3dl aWdodDsKLS0gIGRlcF9zdHJlYW0tPnN1bV9kZXBfd2VpZ2h0ID0gc3RyZWFtLT53ZWlnaHQ7Ci0t Ci0tICBpZiAoZGVwX3N0cmVhbS0+ZGVwX25leHQpIHsKLS0gICAgZm9yIChzaSA9IGRlcF9zdHJl YW0tPmRlcF9uZXh0OyBzaTsgc2kgPSBzaS0+c2liX25leHQpIHsKLS0gICAgICBzaS0+ZGVwX3By ZXYgPSBzdHJlYW07Ci0tICAgICAgaWYgKHNpLT5xdWV1ZWQpIHsKLS0gICAgICAgIHJ2ID0gc3Ry ZWFtX29icV9tb3ZlKHN0cmVhbSwgZGVwX3N0cmVhbSwgc2kpOwotLSAgICAgICAgaWYgKHJ2ICE9 IDApIHsKLS0gICAgICAgICAgcmV0dXJuIHJ2OwotLSAgICAgICAgfQotLSAgICAgIH0KLS0gICAg fQotLQotLSAgICBpZiAoc3RyZWFtX3N1YnRyZWVfYWN0aXZlKHN0cmVhbSkpIHsKLS0gICAgICBy diA9IHN0cmVhbV9vYnFfcHVzaChkZXBfc3RyZWFtLCBzdHJlYW0pOwotLSAgICAgIGlmIChydiAh PSAwKSB7Ci0tICAgICAgICByZXR1cm4gcnY7Ci0tICAgICAgfQotLSAgICB9Ci0tCi0tICAgIHN0 cmVhbS0+ZGVwX25leHQgPSBkZXBfc3RyZWFtLT5kZXBfbmV4dDsKLS0gIH0KLS0KLS0gIGRlcF9z dHJlYW0tPmRlcF9uZXh0ID0gc3RyZWFtOwotLSAgc3RyZWFtLT5kZXBfcHJldiA9IGRlcF9zdHJl YW07Ci0tCi0tICB2YWxpZGF0ZV90cmVlKHN0cmVhbSk7Ci0tCi0tICByZXR1cm4gMDsKLS19Ci0t Ci0tc3RhdGljIHZvaWQgc2V0X2RlcF9wcmV2KG5naHR0cDJfc3RyZWFtICpzdHJlYW0sIG5naHR0 cDJfc3RyZWFtICpkZXApIHsKLS0gIGZvciAoOyBzdHJlYW07IHN0cmVhbSA9IHN0cmVhbS0+c2li X25leHQpIHsKLS0gICAgc3RyZWFtLT5kZXBfcHJldiA9IGRlcDsKLS0gIH0KLS19Ci0tCi0tc3Rh dGljIHZvaWQgbGlua19kZXAobmdodHRwMl9zdHJlYW0gKmRlcF9zdHJlYW0sIG5naHR0cDJfc3Ry ZWFtICpzdHJlYW0pIHsKLS0gIGRlcF9zdHJlYW0tPmRlcF9uZXh0ID0gc3RyZWFtOwotLSAgaWYg KHN0cmVhbSkgewotLSAgICBzdHJlYW0tPmRlcF9wcmV2ID0gZGVwX3N0cmVhbTsKLS0gIH0KLS19 Ci0tCi0tc3RhdGljIHZvaWQgbGlua19zaWIobmdodHRwMl9zdHJlYW0gKmEsIG5naHR0cDJfc3Ry ZWFtICpiKSB7Ci0tICBhLT5zaWJfbmV4dCA9IGI7Ci0tICBpZiAoYikgewotLSAgICBiLT5zaWJf cHJldiA9IGE7Ci0tICB9Ci0tfQotLQotLXN0YXRpYyB2b2lkIGluc2VydF9saW5rX2RlcChuZ2h0 dHAyX3N0cmVhbSAqZGVwX3N0cmVhbSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmdo dHRwMl9zdHJlYW0gKnN0cmVhbSkgewotLSAgbmdodHRwMl9zdHJlYW0gKnNpYl9uZXh0OwotLQot LSAgYXNzZXJ0KHN0cmVhbS0+c2liX3ByZXYgPT0gTlVMTCk7Ci0tCi0tICBzaWJfbmV4dCA9IGRl cF9zdHJlYW0tPmRlcF9uZXh0OwotLQotLSAgbGlua19zaWIoc3RyZWFtLCBzaWJfbmV4dCk7Ci0t Ci0tICBsaW5rX2RlcChkZXBfc3RyZWFtLCBzdHJlYW0pOwotLX0KLS0KLS1zdGF0aWMgdm9pZCB1 bmxpbmtfc2liKG5naHR0cDJfc3RyZWFtICpzdHJlYW0pIHsKLS0gIG5naHR0cDJfc3RyZWFtICpw cmV2LCAqbmV4dCwgKmRlcF9uZXh0OwotLQotLSAgcHJldiA9IHN0cmVhbS0+c2liX3ByZXY7Ci0t ICBkZXBfbmV4dCA9IHN0cmVhbS0+ZGVwX25leHQ7Ci0tCi0tICBhc3NlcnQocHJldik7Ci0tCi0t ICBpZiAoZGVwX25leHQpIHsKLS0gICAgLyoKLS0gICAgICogIHByZXYtLXN0cmVhbSgtLXNpYl9u ZXh0LS0uLi4pCi0tICAgICAqICAgICAgICAgfAotLSAgICAgKiAgICAgICAgZGVwX25leHQKLS0g ICAgICovCi0tCi0tICAgIGxpbmtfc2liKHByZXYsIGRlcF9uZXh0KTsKLS0KLS0gICAgc2V0X2Rl cF9wcmV2KGRlcF9uZXh0LCBzdHJlYW0tPmRlcF9wcmV2KTsKLS0KLS0gICAgaWYgKHN0cmVhbS0+ c2liX25leHQpIHsKLS0gICAgICBsaW5rX3NpYihzdHJlYW1fbGFzdF9zaWIoZGVwX25leHQpLCBz dHJlYW0tPnNpYl9uZXh0KTsKLS0gICAgfQotLSAgfSBlbHNlIHsKLS0gICAgLyoKLS0gICAgICog IHByZXYtLXN0cmVhbSgtLXNpYl9uZXh0LS0uLi4pCi0tICAgICAqLwotLSAgICBuZXh0ID0gc3Ry ZWFtLT5zaWJfbmV4dDsKLS0KLS0gICAgcHJldi0+c2liX25leHQgPSBuZXh0OwotLQotLSAgICBp ZiAobmV4dCkgewotLSAgICAgIG5leHQtPnNpYl9wcmV2ID0gcHJldjsKLS0gICAgfQotLSAgfQot LX0KLS0KLS1zdGF0aWMgdm9pZCB1bmxpbmtfZGVwKG5naHR0cDJfc3RyZWFtICpzdHJlYW0pIHsK LS0gIG5naHR0cDJfc3RyZWFtICpwcmV2LCAqbmV4dCwgKmRlcF9uZXh0OwotLQotLSAgcHJldiA9 IHN0cmVhbS0+ZGVwX3ByZXY7Ci0tICBkZXBfbmV4dCA9IHN0cmVhbS0+ZGVwX25leHQ7Ci0tCi0t ICBhc3NlcnQocHJldik7Ci0tCi0tICBpZiAoZGVwX25leHQpIHsKLS0gICAgLyoKLS0gICAgICog cHJldgotLSAgICAgKiAgIHwKLS0gICAgICogc3RyZWFtKC0tc2liX25leHQtLS4uLikKLS0gICAg ICogICB8Ci0tICAgICAqIGRlcF9uZXh0Ci0tICAgICAqLwotLSAgICBsaW5rX2RlcChwcmV2LCBk ZXBfbmV4dCk7Ci0tCi0tICAgIHNldF9kZXBfcHJldihkZXBfbmV4dCwgc3RyZWFtLT5kZXBfcHJl dik7Ci0tCi0tICAgIGlmIChzdHJlYW0tPnNpYl9uZXh0KSB7Ci0tICAgICAgbGlua19zaWIoc3Ry ZWFtX2xhc3Rfc2liKGRlcF9uZXh0KSwgc3RyZWFtLT5zaWJfbmV4dCk7Ci0tICAgIH0KLS0KLS0g IH0gZWxzZSBpZiAoc3RyZWFtLT5zaWJfbmV4dCkgewotLSAgICAvKgotLSAgICAgKiBwcmV2Ci0t ICAgICAqICAgfAotLSAgICAgKiBzdHJlYW0tLXNpYl9uZXh0Ci0tICAgICAqLwotLSAgICBuZXh0 ID0gc3RyZWFtLT5zaWJfbmV4dDsKLS0KLS0gICAgbmV4dC0+c2liX3ByZXYgPSBOVUxMOwotLQot LSAgICBsaW5rX2RlcChwcmV2LCBuZXh0KTsKLS0gIH0gZWxzZSB7Ci0tICAgIHByZXYtPmRlcF9u ZXh0ID0gTlVMTDsKLS0gIH0KLS19Ci0tCi0tdm9pZCBuZ2h0dHAyX3N0cmVhbV9kZXBfYWRkKG5n aHR0cDJfc3RyZWFtICpkZXBfc3RyZWFtLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBu Z2h0dHAyX3N0cmVhbSAqc3RyZWFtKSB7Ci0tICBERUJVR0YoInN0cmVhbTogZGVwX2FkZCBkZXBf c3RyZWFtKCVwKT0lZCwgc3RyZWFtKCVwKT0lZFxuIiwgZGVwX3N0cmVhbSwKLS0gICAgICAgICBk ZXBfc3RyZWFtLT5zdHJlYW1faWQsIHN0cmVhbSwgc3RyZWFtLT5zdHJlYW1faWQpOwotLQotLSAg ZGVwX3N0cmVhbS0+c3VtX2RlcF93ZWlnaHQgKz0gc3RyZWFtLT53ZWlnaHQ7Ci0tCi0tICBpZiAo ZGVwX3N0cmVhbS0+ZGVwX25leHQgPT0gTlVMTCkgewotLSAgICBsaW5rX2RlcChkZXBfc3RyZWFt LCBzdHJlYW0pOwotLSAgfSBlbHNlIHsKLS0gICAgaW5zZXJ0X2xpbmtfZGVwKGRlcF9zdHJlYW0s IHN0cmVhbSk7Ci0tICB9Ci0tCi0tICB2YWxpZGF0ZV90cmVlKHN0cmVhbSk7Ci0tfQotLQotLWlu dCBuZ2h0dHAyX3N0cmVhbV9kZXBfcmVtb3ZlKG5naHR0cDJfc3RyZWFtICpzdHJlYW0pIHsKLS0g IG5naHR0cDJfc3RyZWFtICpkZXBfcHJldiwgKnNpOwotLSAgaW50MzJfdCBzdW1fZGVwX3dlaWdo dF9kZWx0YTsKLS0gIGludCBydjsKLS0KLS0gIERFQlVHRigic3RyZWFtOiBkZXBfcmVtb3ZlIHN0 cmVhbSglcCk9JWRcbiIsIHN0cmVhbSwgc3RyZWFtLT5zdHJlYW1faWQpOwotLQotLSAgLyogRGlz dHJpYnV0ZSB3ZWlnaHQgb2YgfHN0cmVhbXwgdG8gZGlyZWN0IGRlc2NlbmRhbnRzICovCi0tICBz dW1fZGVwX3dlaWdodF9kZWx0YSA9IC1zdHJlYW0tPndlaWdodDsKLS0KLS0gIGZvciAoc2kgPSBz dHJlYW0tPmRlcF9uZXh0OyBzaTsgc2kgPSBzaS0+c2liX25leHQpIHsKLS0gICAgc2ktPndlaWdo dCA9IG5naHR0cDJfc3RyZWFtX2RlcF9kaXN0cmlidXRlZF93ZWlnaHQoc3RyZWFtLCBzaS0+d2Vp Z2h0KTsKLS0KLS0gICAgc3VtX2RlcF93ZWlnaHRfZGVsdGEgKz0gc2ktPndlaWdodDsKLS0KLS0g ICAgaWYgKHNpLT5xdWV1ZWQpIHsKLS0gICAgICBydiA9IHN0cmVhbV9vYnFfbW92ZShzdHJlYW0t PmRlcF9wcmV2LCBzdHJlYW0sIHNpKTsKLS0gICAgICBpZiAocnYgIT0gMCkgewotLSAgICAgICAg cmV0dXJuIHJ2OwotLSAgICAgIH0KLS0gICAgfQotLSAgfQotLQotLSAgYXNzZXJ0KHN0cmVhbS0+ ZGVwX3ByZXYpOwotLQotLSAgZGVwX3ByZXYgPSBzdHJlYW0tPmRlcF9wcmV2OwotLQotLSAgZGVw X3ByZXYtPnN1bV9kZXBfd2VpZ2h0ICs9IHN1bV9kZXBfd2VpZ2h0X2RlbHRhOwotLQotLSAgaWYg KHN0cmVhbS0+cXVldWVkKSB7Ci0tICAgIHN0cmVhbV9vYnFfcmVtb3ZlKHN0cmVhbSk7Ci0tICB9 Ci0tCi0tICBpZiAoc3RyZWFtLT5zaWJfcHJldikgewotLSAgICB1bmxpbmtfc2liKHN0cmVhbSk7 Ci0tICB9IGVsc2UgewotLSAgICB1bmxpbmtfZGVwKHN0cmVhbSk7Ci0tICB9Ci0tCi0tICBzdHJl YW0tPnN1bV9kZXBfd2VpZ2h0ID0gMDsKLS0KLS0gIHN0cmVhbS0+ZGVwX3ByZXYgPSBOVUxMOwot LSAgc3RyZWFtLT5kZXBfbmV4dCA9IE5VTEw7Ci0tICBzdHJlYW0tPnNpYl9wcmV2ID0gTlVMTDsK LS0gIHN0cmVhbS0+c2liX25leHQgPSBOVUxMOwotLQotLSAgdmFsaWRhdGVfdHJlZShkZXBfcHJl dik7Ci0tCi0tICByZXR1cm4gMDsKLS19Ci0tCi0taW50IG5naHR0cDJfc3RyZWFtX2RlcF9pbnNl cnRfc3VidHJlZShuZ2h0dHAyX3N0cmVhbSAqZGVwX3N0cmVhbSwKLS0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIG5naHR0cDJfc3RyZWFtICpzdHJlYW0pIHsKLS0gIG5naHR0 cDJfc3RyZWFtICpsYXN0X3NpYjsKLS0gIG5naHR0cDJfc3RyZWFtICpkZXBfbmV4dDsKLS0gIG5n aHR0cDJfc3RyZWFtICpzaTsKLS0gIGludCBydjsKLS0KLS0gIERFQlVHRigic3RyZWFtOiBkZXBf aW5zZXJ0X3N1YnRyZWUgZGVwX3N0cmVhbSglcCk9JWQgc3RyZWFtKCVwKT0lZFxuIiwKLS0gICAg ICAgICBkZXBfc3RyZWFtLCBkZXBfc3RyZWFtLT5zdHJlYW1faWQsIHN0cmVhbSwgc3RyZWFtLT5z dHJlYW1faWQpOwotLQotLSAgc3RyZWFtLT5zdW1fZGVwX3dlaWdodCArPSBkZXBfc3RyZWFtLT5z dW1fZGVwX3dlaWdodDsKLS0gIGRlcF9zdHJlYW0tPnN1bV9kZXBfd2VpZ2h0ID0gc3RyZWFtLT53 ZWlnaHQ7Ci0tCi0tICBpZiAoZGVwX3N0cmVhbS0+ZGVwX25leHQpIHsKLS0gICAgZGVwX25leHQg PSBkZXBfc3RyZWFtLT5kZXBfbmV4dDsKLS0KLS0gICAgbGlua19kZXAoZGVwX3N0cmVhbSwgc3Ry ZWFtKTsKLS0KLS0gICAgaWYgKHN0cmVhbS0+ZGVwX25leHQpIHsKLS0gICAgICBsYXN0X3NpYiA9 IHN0cmVhbV9sYXN0X3NpYihzdHJlYW0tPmRlcF9uZXh0KTsKLS0KLS0gICAgICBsaW5rX3NpYihs YXN0X3NpYiwgZGVwX25leHQpOwotLSAgICB9IGVsc2UgewotLSAgICAgIGxpbmtfZGVwKHN0cmVh bSwgZGVwX25leHQpOwotLSAgICB9Ci0tCi0tICAgIGZvciAoc2kgPSBkZXBfbmV4dDsgc2k7IHNp ID0gc2ktPnNpYl9uZXh0KSB7Ci0tICAgICAgc2ktPmRlcF9wcmV2ID0gc3RyZWFtOwotLSAgICAg IGlmIChzaS0+cXVldWVkKSB7Ci0tICAgICAgICBydiA9IHN0cmVhbV9vYnFfbW92ZShzdHJlYW0s IGRlcF9zdHJlYW0sIHNpKTsKLS0gICAgICAgIGlmIChydiAhPSAwKSB7Ci0tICAgICAgICAgIHJl dHVybiBydjsKLS0gICAgICAgIH0KLS0gICAgICB9Ci0tICAgIH0KLS0gIH0gZWxzZSB7Ci0tICAg IGxpbmtfZGVwKGRlcF9zdHJlYW0sIHN0cmVhbSk7Ci0tICB9Ci0tCi0tICBpZiAoc3RyZWFtX3N1 YnRyZWVfYWN0aXZlKHN0cmVhbSkpIHsKLS0gICAgcnYgPSBzdHJlYW1fb2JxX3B1c2goZGVwX3N0 cmVhbSwgc3RyZWFtKTsKLS0gICAgaWYgKHJ2ICE9IDApIHsKLS0gICAgICByZXR1cm4gcnY7Ci0t ICAgIH0KLS0gIH0KLS0KLS0gIHZhbGlkYXRlX3RyZWUoZGVwX3N0cmVhbSk7Ci0tCi0tICByZXR1 cm4gMDsKLS19Ci0tCi0taW50IG5naHR0cDJfc3RyZWFtX2RlcF9hZGRfc3VidHJlZShuZ2h0dHAy X3N0cmVhbSAqZGVwX3N0cmVhbSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IG5naHR0cDJfc3RyZWFtICpzdHJlYW0pIHsKLS0gIGludCBydjsKLS0KLS0gIERFQlVHRigic3Ry ZWFtOiBkZXBfYWRkX3N1YnRyZWUgZGVwX3N0cmVhbSglcCk9JWQgc3RyZWFtKCVwKT0lZFxuIiwK LS0gICAgICAgICBkZXBfc3RyZWFtLCBkZXBfc3RyZWFtLT5zdHJlYW1faWQsIHN0cmVhbSwgc3Ry ZWFtLT5zdHJlYW1faWQpOwotLQotLSAgZGVwX3N0cmVhbS0+c3VtX2RlcF93ZWlnaHQgKz0gc3Ry ZWFtLT53ZWlnaHQ7Ci0tCi0tICBpZiAoZGVwX3N0cmVhbS0+ZGVwX25leHQpIHsKLS0gICAgaW5z ZXJ0X2xpbmtfZGVwKGRlcF9zdHJlYW0sIHN0cmVhbSk7Ci0tICB9IGVsc2UgewotLSAgICBsaW5r X2RlcChkZXBfc3RyZWFtLCBzdHJlYW0pOwotLSAgfQotLQotLSAgaWYgKHN0cmVhbV9zdWJ0cmVl X2FjdGl2ZShzdHJlYW0pKSB7Ci0tICAgIHJ2ID0gc3RyZWFtX29icV9wdXNoKGRlcF9zdHJlYW0s IHN0cmVhbSk7Ci0tICAgIGlmIChydiAhPSAwKSB7Ci0tICAgICAgcmV0dXJuIHJ2OwotLSAgICB9 Ci0tICB9Ci0tCi0tICB2YWxpZGF0ZV90cmVlKGRlcF9zdHJlYW0pOwotLQotLSAgcmV0dXJuIDA7 Ci0tfQotLQotLXZvaWQgbmdodHRwMl9zdHJlYW1fZGVwX3JlbW92ZV9zdWJ0cmVlKG5naHR0cDJf c3RyZWFtICpzdHJlYW0pIHsKLS0gIG5naHR0cDJfc3RyZWFtICpuZXh0LCAqZGVwX3ByZXY7Ci0t Ci0tICBERUJVR0YoInN0cmVhbTogZGVwX3JlbW92ZV9zdWJ0cmVlIHN0cmVhbSglcCk9JWRcbiIs IHN0cmVhbSwKLS0gICAgICAgICBzdHJlYW0tPnN0cmVhbV9pZCk7Ci0tCi0tICBhc3NlcnQoc3Ry ZWFtLT5kZXBfcHJldik7Ci0tCi0tICBkZXBfcHJldiA9IHN0cmVhbS0+ZGVwX3ByZXY7Ci0tCi0t ICBpZiAoc3RyZWFtLT5zaWJfcHJldikgewotLSAgICBsaW5rX3NpYihzdHJlYW0tPnNpYl9wcmV2 LCBzdHJlYW0tPnNpYl9uZXh0KTsKLS0gIH0gZWxzZSB7Ci0tICAgIG5leHQgPSBzdHJlYW0tPnNp Yl9uZXh0OwotLQotLSAgICBsaW5rX2RlcChkZXBfcHJldiwgbmV4dCk7Ci0tCi0tICAgIGlmIChu ZXh0KSB7Ci0tICAgICAgbmV4dC0+c2liX3ByZXYgPSBOVUxMOwotLSAgICB9Ci0tICB9Ci0tCi0t ICBkZXBfcHJldi0+c3VtX2RlcF93ZWlnaHQgLT0gc3RyZWFtLT53ZWlnaHQ7Ci0tCi0tICBpZiAo c3RyZWFtLT5xdWV1ZWQpIHsKLS0gICAgc3RyZWFtX29icV9yZW1vdmUoc3RyZWFtKTsKLS0gIH0K LS0KLS0gIHZhbGlkYXRlX3RyZWUoZGVwX3ByZXYpOwotLQotLSAgc3RyZWFtLT5zaWJfcHJldiA9 IE5VTEw7Ci0tICBzdHJlYW0tPnNpYl9uZXh0ID0gTlVMTDsKLS0gIHN0cmVhbS0+ZGVwX3ByZXYg PSBOVUxMOwotLX0KLS0KLS1pbnQgbmdodHRwMl9zdHJlYW1faW5fZGVwX3RyZWUobmdodHRwMl9z dHJlYW0gKnN0cmVhbSkgewotLSAgcmV0dXJuIHN0cmVhbS0+ZGVwX3ByZXYgfHwgc3RyZWFtLT5k ZXBfbmV4dCB8fCBzdHJlYW0tPnNpYl9wcmV2IHx8Ci0tICAgICAgICAgc3RyZWFtLT5zaWJfbmV4 dDsKLS19Ci0tCi0tbmdodHRwMl9vdXRib3VuZF9pdGVtICoKLS1uZ2h0dHAyX3N0cmVhbV9uZXh0 X291dGJvdW5kX2l0ZW0obmdodHRwMl9zdHJlYW0gKnN0cmVhbSkgewotLSAgbmdodHRwMl9wcV9l bnRyeSAqZW50OwotLSAgbmdodHRwMl9zdHJlYW0gKnNpOwotLQotLSAgZm9yICg7OykgewotLSAg ICBpZiAoc3RyZWFtX2FjdGl2ZShzdHJlYW0pKSB7Ci0tICAgICAgLyogVXBkYXRlIGFzY2VuZGFu dCdzIGRlc2NlbmRhbnRfbGFzdF9jeWNsZSBoZXJlLCBzbyB0aGF0IHdlIGNhbgotLSAgICAgICAg IGFzc3VyZSB0aGF0IG5ldyBzdHJlYW0gaXMgc2NoZWR1bGVkIGJhc2VkIG9uIGl0LiAqLwotLSAg ICAgIGZvciAoc2kgPSBzdHJlYW07IHNpLT5kZXBfcHJldjsgc2kgPSBzaS0+ZGVwX3ByZXYpIHsK LS0gICAgICAgIHNpLT5kZXBfcHJldi0+ZGVzY2VuZGFudF9sYXN0X2N5Y2xlID0gc2ktPmN5Y2xl OwotLSAgICAgIH0KLS0gICAgICByZXR1cm4gc3RyZWFtLT5pdGVtOwotLSAgICB9Ci0tICAgIGVu dCA9IG5naHR0cDJfcHFfdG9wKCZzdHJlYW0tPm9icSk7Ci0tICAgIGlmICghZW50KSB7Ci0tICAg ICAgcmV0dXJuIE5VTEw7Ci0tICAgIH0KLS0gICAgc3RyZWFtID0gbmdodHRwMl9zdHJ1Y3Rfb2Yo ZW50LCBuZ2h0dHAyX3N0cmVhbSwgcHFfZW50cnkpOwotK25naHR0cDJfc3RyZWFtX3Byb3RvX3N0 YXRlIG5naHR0cDJfc3RyZWFtX2dldF9zdGF0ZShuZ2h0dHAyX3N0cmVhbSAqc3RyZWFtKSB7Ci0r ICBpZiAoc3RyZWFtID09ICZuZ2h0dHAyX3N0cmVhbV9yb290KSB7Ci0rICAgIHJldHVybiBOR0hU VFAyX1NUUkVBTV9TVEFURV9JRExFOwotICAgfQotLX0KLSAKLS1uZ2h0dHAyX3N0cmVhbV9wcm90 b19zdGF0ZSBuZ2h0dHAyX3N0cmVhbV9nZXRfc3RhdGUobmdodHRwMl9zdHJlYW0gKnN0cmVhbSkg ewotICAgaWYgKHN0cmVhbS0+ZmxhZ3MgJiBOR0hUVFAyX1NUUkVBTV9GTEFHX0NMT1NFRCkgewot ICAgICByZXR1cm4gTkdIVFRQMl9TVFJFQU1fU1RBVEVfQ0xPU0VEOwotICAgfQotQEAgLTk4OCwy NyArMTg1LDM5IEBAIG5naHR0cDJfc3RyZWFtX3Byb3RvX3N0YXRlIG5naHR0cDJfc3RyZWFtX2dl dF9zdGF0ZShuZ2h0dHAyX3N0cmVhbSAqc3RyZWFtKSB7Ci0gfQotIAotIG5naHR0cDJfc3RyZWFt ICpuZ2h0dHAyX3N0cmVhbV9nZXRfcGFyZW50KG5naHR0cDJfc3RyZWFtICpzdHJlYW0pIHsKLS0g IHJldHVybiBzdHJlYW0tPmRlcF9wcmV2OwotKyAgKHZvaWQpc3RyZWFtOwotKwotKyAgcmV0dXJu IE5VTEw7Ci0gfQotIAotIG5naHR0cDJfc3RyZWFtICpuZ2h0dHAyX3N0cmVhbV9nZXRfbmV4dF9z aWJsaW5nKG5naHR0cDJfc3RyZWFtICpzdHJlYW0pIHsKLS0gIHJldHVybiBzdHJlYW0tPnNpYl9u ZXh0OwotKyAgKHZvaWQpc3RyZWFtOwotKwotKyAgcmV0dXJuIE5VTEw7Ci0gfQotIAotIG5naHR0 cDJfc3RyZWFtICpuZ2h0dHAyX3N0cmVhbV9nZXRfcHJldmlvdXNfc2libGluZyhuZ2h0dHAyX3N0 cmVhbSAqc3RyZWFtKSB7Ci0tICByZXR1cm4gc3RyZWFtLT5zaWJfcHJldjsKLSsgICh2b2lkKXN0 cmVhbTsKLSsKLSsgIHJldHVybiBOVUxMOwotIH0KLSAKLSBuZ2h0dHAyX3N0cmVhbSAqbmdodHRw Ml9zdHJlYW1fZ2V0X2ZpcnN0X2NoaWxkKG5naHR0cDJfc3RyZWFtICpzdHJlYW0pIHsKLS0gIHJl dHVybiBzdHJlYW0tPmRlcF9uZXh0OwotKyAgKHZvaWQpc3RyZWFtOwotKwotKyAgcmV0dXJuIE5V TEw7Ci0gfQotIAotIGludDMyX3QgbmdodHRwMl9zdHJlYW1fZ2V0X3dlaWdodChuZ2h0dHAyX3N0 cmVhbSAqc3RyZWFtKSB7Ci0tICByZXR1cm4gc3RyZWFtLT53ZWlnaHQ7Ci0rICAodm9pZClzdHJl YW07Ci0rCi0rICByZXR1cm4gTkdIVFRQMl9ERUZBVUxUX1dFSUdIVDsKLSB9Ci0gCi0gaW50MzJf dCBuZ2h0dHAyX3N0cmVhbV9nZXRfc3VtX2RlcGVuZGVuY3lfd2VpZ2h0KG5naHR0cDJfc3RyZWFt ICpzdHJlYW0pIHsKLS0gIHJldHVybiBzdHJlYW0tPnN1bV9kZXBfd2VpZ2h0OwotKyAgKHZvaWQp c3RyZWFtOwotKwotKyAgcmV0dXJuIDA7Ci0gfQotIAotIGludDMyX3QgbmdodHRwMl9zdHJlYW1f Z2V0X3N0cmVhbV9pZChuZ2h0dHAyX3N0cmVhbSAqc3RyZWFtKSB7Ci1kaWZmIC0tZ2l0IGEvZGVw cy9uZ2h0dHAyL2xpYi9uZ2h0dHAyX3N0cmVhbS5oIGIvZGVwcy9uZ2h0dHAyL2xpYi9uZ2h0dHAy X3N0cmVhbS5oCi1pbmRleCAyOGFkZDE2NS4uNjAzMjA5ZWMgMTAwNjQ0Ci0tLS0gYS9kZXBzL25n aHR0cDIvbGliL25naHR0cDJfc3RyZWFtLmgKLSsrKyBiL2RlcHMvbmdodHRwMi9saWIvbmdodHRw Ml9zdHJlYW0uaAotQEAgLTI3LDcgKzI3LDcgQEAKLSAKLSAjaWZkZWYgSEFWRV9DT05GSUdfSAot ICMgIGluY2x1ZGUgPGNvbmZpZy5oPgotLSNlbmRpZiAvKiBIQVZFX0NPTkZJR19IICovCi0rI2Vu ZGlmIC8qIGRlZmluZWQoSEFWRV9DT05GSUdfSCkgKi8KLSAKLSAjaW5jbHVkZSA8bmdodHRwMi9u Z2h0dHAyLmg+Ci0gI2luY2x1ZGUgIm5naHR0cDJfb3V0Ym91bmRfaXRlbS5oIgotQEAgLTkxLDkg KzkxLDYgQEAgdHlwZWRlZiBlbnVtIHsKLSAgIC8qIGJpdHdpc2UgT1Igb2YgTkdIVFRQMl9TVFJF QU1fRkxBR19ERUZFUlJFRF9GTE9XX0NPTlRST0wgYW5kCi0gICAgICBOR0hUVFAyX1NUUkVBTV9G TEFHX0RFRkVSUkVEX1VTRVIuICovCi0gICBOR0hUVFAyX1NUUkVBTV9GTEFHX0RFRkVSUkVEX0FM TCA9IDB4MGMsCi0tICAvKiBJbmRpY2F0ZXMgdGhhdCB0aGlzIHN0cmVhbSBpcyBub3Qgc3ViamVj dCB0byBSRkM3NTQwCi0tICAgICBwcmlvcml0aWVzIHNjaGVtZS4gKi8KLS0gIE5HSFRUUDJfU1RS RUFNX0ZMQUdfTk9fUkZDNzU0MF9QUklPUklUSUVTID0gMHgxMCwKLSAgIC8qIElnbm9yZSBjbGll bnQgUkZDIDkyMTggcHJpb3JpdHkgc2lnbmFsLiAqLwotICAgTkdIVFRQMl9TVFJFQU1fRkxBR19J R05PUkVfQ0xJRU5UX1BSSU9SSVRJRVMgPSAweDIwLAotICAgLyogSW5kaWNhdGVzIHRoYXQgUkZD IDkxMTMgbGVhZGluZyBhbmQgdHJhaWxpbmcgd2hpdGUgc3BhY2VzCi1AQCAtMTQ2LDM5ICsxNDMs MTggQEAgdHlwZWRlZiBlbnVtIHsKLSB9IG5naHR0cDJfaHR0cF9mbGFnOwotIAotIHN0cnVjdCBu Z2h0dHAyX3N0cmVhbSB7Ci0tICAvKiBFbnRyeSBmb3IgZGVwX3ByZXYtPm9icSAqLwotKyAgbmdo dHRwMl9zdHJlYW1fc3RhdGUgc3RhdGU7Ci0gICBuZ2h0dHAyX3BxX2VudHJ5IHBxX2VudHJ5Owot LSAgLyogUHJpb3JpdHkgUXVldWUgc3RvcmluZyBkaXJlY3QgZGVzY2VuZGFudCAobmdodHRwMl9z dHJlYW0pLiAgT25seQotLSAgICAgc3RyZWFtcyB3aGljaCBpdHNlbGYgaGFzIHNvbWUgZGF0YSB0 byBzZW5kLCBvciBoYXMgYSBkZXNjZW5kYW50Ci0tICAgICB3aGljaCBoYXMgc29tZSBkYXRhIHRv IHNlbnQuICovCi0tICBuZ2h0dHAyX3BxIG9icTsKLSAgIC8qIENvbnRlbnQtTGVuZ3RoIG9mIHJl cXVlc3QvcmVzcG9uc2UgYm9keS4gIC0xIGlmIHVua25vd24uICovCi0gICBpbnQ2NF90IGNvbnRl bnRfbGVuZ3RoOwotICAgLyogUmVjZWl2ZWQgYm9keSBzbyBmYXIgKi8KLSAgIGludDY0X3QgcmVj dl9jb250ZW50X2xlbmd0aDsKLS0gIC8qIEJhc2UgbGFzdF9jeWNsZSBmb3IgZGlyZWN0IGRlc2Nl bmRlbnQgc3RyZWFtcy4gKi8KLS0gIHVpbnQ2NF90IGRlc2NlbmRhbnRfbGFzdF9jeWNsZTsKLSAg IC8qIE5leHQgc2NoZWR1bGVkIHRpbWUgdG8gc2VudCBpdGVtICovCi0gICB1aW50NjRfdCBjeWNs ZTsKLS0gIC8qIE5leHQgc2VxIHVzZWQgZm9yIGRpcmVjdCBkZXNjZW5kYW50IHN0cmVhbXMgKi8K LS0gIHVpbnQ2NF90IGRlc2NlbmRhbnRfbmV4dF9zZXE7Ci0gICAvKiBTZWNvbmRhcnkga2V5IGZv ciBwcmlvcml0aXphdGlvbiB0byBicmVhayBhIHRpZSBmb3IgY3ljbGUuICBUaGlzCi0gICAgICB2 YWx1ZSBpcyBtb25vdG9uaWNhbGx5IGluY3JlYXNlZCBmb3Igc2luZ2xlIHBhcmVudCBzdHJlYW0u ICovCi0gICB1aW50NjRfdCBzZXE7Ci0tICAvKiBwb2ludGVycyB0byBmb3JtIGRlcGVuZGVuY3kg dHJlZS4gIElmIG11bHRpcGxlIHN0cmVhbXMgZGVwZW5kIG9uCi0tICAgICBhIHN0cmVhbSwgb25s eSBvbmUgc3RyZWFtIChsZWZ0IG1vc3QpIGhhcyBub24tTlVMTCBkZXBfcHJldiB3aGljaAotLSAg ICAgcG9pbnRzIHRvIHRoZSBzdHJlYW0gaXQgZGVwZW5kcyBvbi4gVGhlIHJlbWFpbmluZyBzdHJl YW1zIGFyZQotLSAgICAgbGlua2VkIHVzaW5nIHNpYl9wcmV2IGFuZCBzaWJfbmV4dC4gIFRoZSBz dHJlYW0gd2hpY2ggaGFzCi0tICAgICBub24tTlVMTCBkZXBfcHJldiBhbHdheXMgTlVMTCBzaWJf cHJldi4gIFRoZSByaWdodCBtb3N0IHN0cmVhbQotLSAgICAgaGFzIE5VTEwgc2liX25leHQuICBJ ZiB0aGlzIHN0cmVhbSBpcyBhIHJvb3Qgb2YgZGVwZW5kZW5jeSB0cmVlLAotLSAgICAgZGVwX3By ZXYgYW5kIHNpYl9wcmV2IGFyZSBOVUxMLiAqLwotLSAgbmdodHRwMl9zdHJlYW0gKmRlcF9wcmV2 LCAqZGVwX25leHQ7Ci0tICBuZ2h0dHAyX3N0cmVhbSAqc2liX3ByZXYsICpzaWJfbmV4dDsKLS0g IC8qIFdoZW4gc3RyZWFtIGlzIGtlcHQgYWZ0ZXIgY2xvc3VyZSwgaXQgbWF5IGJlIGtlcHQgaW4g ZG91Ymx5Ci0tICAgICBsaW5rZWQgbGlzdCBwb2ludGVkIGJ5IG5naHR0cDJfc2Vzc2lvbiBjbG9z ZWRfc3RyZWFtX2hlYWQuCi0tICAgICBjbG9zZWRfbmV4dCBwb2ludHMgdG8gdGhlIG5leHQgc3Ry ZWFtIG9iamVjdCBpZiBpdCBpcyB0aGUgZWxlbWVudAotLSAgICAgb2YgdGhlIGxpc3QuICovCi0t ICBuZ2h0dHAyX3N0cmVhbSAqY2xvc2VkX3ByZXYsICpjbG9zZWRfbmV4dDsKLSsgIG5naHR0cDJf c3RyZWFtICpjbG9zZWRfbmV4dDsKLSAgIC8qIFRoZSBhcmJpdHJhcnkgZGF0YSBwcm92aWRlZCBi eSB1c2VyIGZvciB0aGlzIHN0cmVhbS4gKi8KLSAgIHZvaWQgKnN0cmVhbV91c2VyX2RhdGE7Ci0g ICAvKiBJdGVtIHRvIHNlbmQgKi8KLUBAIC0yMDUsMTMgKzE4MSw4IEBAIHN0cnVjdCBuZ2h0dHAy X3N0cmVhbSB7Ci0gICAgICBOR0hUVFAyX0lOSVRJQUxfV0lORE9XX1NJWkUgYW5kIGNvdWxkIGJl IGluY3JlYXNlZC9kZWNyZWFzZWQgYnkKLSAgICAgIHN1Ym1pdHRpbmcgV0lORE9XX1VQREFURS4g U2VlIG5naHR0cDJfc3VibWl0X3dpbmRvd191cGRhdGUoKS4gKi8KLSAgIGludDMyX3QgbG9jYWxf d2luZG93X3NpemU7Ci0tICAvKiB3ZWlnaHQgb2YgdGhpcyBzdHJlYW0gKi8KLS0gIGludDMyX3Qg d2VpZ2h0OwotICAgLyogVGhpcyBpcyB1bnBhaWQgcGVuYWx0eSAob2Zmc2V0KSB3aGVuIGNhbGN1 bGF0aW5nIGN5Y2xlLiAqLwotICAgdWludDMyX3QgcGVuZGluZ19wZW5hbHR5OwotLSAgLyogc3Vt IG9mIHdlaWdodCBvZiBkaXJlY3QgZGVzY2VuZGFudHMgKi8KLS0gIGludDMyX3Qgc3VtX2RlcF93 ZWlnaHQ7Ci0tICBuZ2h0dHAyX3N0cmVhbV9zdGF0ZSBzdGF0ZTsKLSAgIC8qIHN0YXR1cyBjb2Rl IGZyb20gcmVtb3RlIHNlcnZlciAqLwotICAgaW50MTZfdCBzdGF0dXNfY29kZTsKLSAgIC8qIEJp dHdpc2UgT1Igb2YgemVybyBvciBtb3JlIG5naHR0cDJfaHR0cF9mbGFnIHZhbHVlcyAqLwotQEAg LTIzOSw5ICsyMTAsOSBAQCBzdHJ1Y3QgbmdodHRwMl9zdHJlYW0gewotIAotIHZvaWQgbmdodHRw Ml9zdHJlYW1faW5pdChuZ2h0dHAyX3N0cmVhbSAqc3RyZWFtLCBpbnQzMl90IHN0cmVhbV9pZCwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCBmbGFncywgbmdodHRwMl9zdHJlYW1f c3RhdGUgaW5pdGlhbF9zdGF0ZSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCB3 ZWlnaHQsIGludDMyX3QgcmVtb3RlX2luaXRpYWxfd2luZG93X3NpemUsCi0rICAgICAgICAgICAg ICAgICAgICAgICAgIGludDMyX3QgcmVtb3RlX2luaXRpYWxfd2luZG93X3NpemUsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgIGludDMyX3QgbG9jYWxfaW5pdGlhbF93aW5kb3dfc2l6ZSwKLS0g ICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqc3RyZWFtX3VzZXJfZGF0YSwgbmdodHRwMl9t ZW0gKm1lbSk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnN0cmVhbV91c2VyX2Rh dGEpOwotIAotIHZvaWQgbmdodHRwMl9zdHJlYW1fZnJlZShuZ2h0dHAyX3N0cmVhbSAqc3RyZWFt KTsKLSAKLUBAIC0yNjcsMTQgKzIzOCw4IEBAIHZvaWQgbmdodHRwMl9zdHJlYW1fZGVmZXJfaXRl bShuZ2h0dHAyX3N0cmVhbSAqc3RyZWFtLCB1aW50OF90IGZsYWdzKTsKLSAgKiBOR0hUVFAyX1NU UkVBTV9GTEFHX0RFRkVSUkVEX0ZMT1dfQ09OVFJPTCBhbmQgZ2l2ZW4gbWFza3MgYXJlCi0gICog Y2xlYXJlZCBpZiB0aGV5IGFyZSBzZXQuICBTbyBldmVuIGlmIHRoaXMgZnVuY3Rpb24gaXMgY2Fs bGVkLCBpZgotICAqIG9uZSBvZiBmbGFnIGlzIHN0aWxsIHNldCwgZGF0YSBkb2VzIG5vdCBiZWNv bWUgYWN0aXZlLgotLSAqCi0tICogVGhpcyBmdW5jdGlvbiByZXR1cm5zIDAgaWYgaXQgc3VjY2Vl ZHMsIG9yIG9uZSBvZiB0aGUgZm9sbG93aW5nCi0tICogbmVnYXRpdmUgZXJyb3IgY29kZXM6Ci0t ICoKLS0gKiBOR0hUVFAyX0VSUl9OT01FTQotLSAqICAgICBPdXQgb2YgbWVtb3J5Ci0gICovCi0t aW50IG5naHR0cDJfc3RyZWFtX3Jlc3VtZV9kZWZlcnJlZF9pdGVtKG5naHR0cDJfc3RyZWFtICpz dHJlYW0sIHVpbnQ4X3QgZmxhZ3MpOwotK3ZvaWQgbmdodHRwMl9zdHJlYW1fcmVzdW1lX2RlZmVy cmVkX2l0ZW0obmdodHRwMl9zdHJlYW0gKnN0cmVhbSwgdWludDhfdCBmbGFncyk7Ci0gCi0gLyoK LSAgKiBSZXR1cm5zIG5vbnplcm8gaWYgaXRlbSBpcyBkZWZlcnJlZCBieSB3aGF0ZXZlciByZWFz b24uCi1AQCAtMzE3LDU3ICsyODIsMTEgQEAgaW50IG5naHR0cDJfc3RyZWFtX3VwZGF0ZV9sb2Nh bF9pbml0aWFsX3dpbmRvd19zaXplKAotICAqLwotIHZvaWQgbmdodHRwMl9zdHJlYW1fcHJvbWlz ZV9mdWxmaWxsZWQobmdodHRwMl9zdHJlYW0gKnN0cmVhbSk7Ci0gCi0tLyoKLS0gKiBSZXR1cm5z IG5vbnplcm8gaWYgfHRhcmdldHwgaXMgYW4gYW5jZXN0b3Igb2YgfHN0cmVhbXwuCi0tICovCi0t aW50IG5naHR0cDJfc3RyZWFtX2RlcF9maW5kX2FuY2VzdG9yKG5naHR0cDJfc3RyZWFtICpzdHJl YW0sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5naHR0cDJfc3RyZWFt ICp0YXJnZXQpOwotLQotLS8qCi0tICogQ29tcHV0ZXMgZGlzdHJpYnV0ZWQgd2VpZ2h0IG9mIGEg c3RyZWFtIG9mIHRoZSB8d2VpZ2h0fCB1bmRlciB0aGUKLS0gKiB8c3RyZWFtfCBpZiB8c3RyZWFt fCBpcyByZW1vdmVkIGZyb20gYSBkZXBlbmRlbmN5IHRyZWUuCi0tICovCi0taW50MzJfdCBuZ2h0 dHAyX3N0cmVhbV9kZXBfZGlzdHJpYnV0ZWRfd2VpZ2h0KG5naHR0cDJfc3RyZWFtICpzdHJlYW0s Ci0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3Qg d2VpZ2h0KTsKLS0KLS0vKgotLSAqIE1ha2VzIHRoZSB8c3RyZWFtfCBkZXBlbmQgb24gdGhlIHxk ZXBfc3RyZWFtfC4gIFRoaXMgZGVwZW5kZW5jeSBpcwotLSAqIGV4Y2x1c2l2ZS4gIEFsbCBleGlz dGluZyBkaXJlY3QgZGVzY2VuZGFudHMgb2YgfGRlcF9zdHJlYW18IGJlY29tZQotLSAqIHRoZSBk ZXNjZW5kYW50cyBvZiB0aGUgfHN0cmVhbXwuICBUaGlzIGZ1bmN0aW9uIGFzc3VtZXMKLS0gKiB8 c3RyZWFtLT5pdGVtfCBpcyBOVUxMLgotLSAqCi0tICogVGhpcyBmdW5jdGlvbiByZXR1cm5zIDAg aWYgaXQgc3VjY2VlZHMsIG9yIG9uZSBvZiB0aGUgZm9sbG93aW5nCi0tICogbmVnYXRpdmUgZXJy b3IgY29kZXM6Ci0tICoKLS0gKiBOR0hUVFAyX0VSUl9OT01FTQotLSAqICAgICBPdXQgb2YgbWVt b3J5Ci0tICovCi0taW50IG5naHR0cDJfc3RyZWFtX2RlcF9pbnNlcnQobmdodHRwMl9zdHJlYW0g KmRlcF9zdHJlYW0sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmdodHRwMl9zdHJl YW0gKnN0cmVhbSk7Ci0tCi0tLyoKLS0gKiBNYWtlcyB0aGUgfHN0cmVhbXwgZGVwZW5kIG9uIHRo ZSB8ZGVwX3N0cmVhbXwuICBUaGlzIGRlcGVuZGVuY3kgaXMKLS0gKiBub3QgZXhjbHVzaXZlLiAg VGhpcyBmdW5jdGlvbiBhc3N1bWVzIHxzdHJlYW0tPml0ZW18IGlzIE5VTEwuCi0tICovCi0tdm9p ZCBuZ2h0dHAyX3N0cmVhbV9kZXBfYWRkKG5naHR0cDJfc3RyZWFtICpkZXBfc3RyZWFtLCBuZ2h0 dHAyX3N0cmVhbSAqc3RyZWFtKTsKLS0KLS0vKgotLSAqIFJlbW92ZXMgdGhlIHxzdHJlYW18IGZy b20gdGhlIGN1cnJlbnQgZGVwZW5kZW5jeSB0cmVlLiAgVGhpcwotLSAqIGZ1bmN0aW9uIGFzc3Vt ZXMgfHN0cmVhbS0+aXRlbXwgaXMgTlVMTC4KLS0gKi8KLS1pbnQgbmdodHRwMl9zdHJlYW1fZGVw X3JlbW92ZShuZ2h0dHAyX3N0cmVhbSAqc3RyZWFtKTsKLS0KLSAvKgotICAqIEF0dGFjaGVzIHxp dGVtfCB0byB8c3RyZWFtfC4KLS0gKgotLSAqIFRoaXMgZnVuY3Rpb24gcmV0dXJucyAwIGlmIGl0 IHN1Y2NlZWRzLCBvciBvbmUgb2YgdGhlIGZvbGxvd2luZwotLSAqIG5lZ2F0aXZlIGVycm9yIGNv ZGVzOgotLSAqCi0tICogTkdIVFRQMl9FUlJfTk9NRU0KLS0gKiAgICAgT3V0IG9mIG1lbW9yeQot ICAqLwotLWludCBuZ2h0dHAyX3N0cmVhbV9hdHRhY2hfaXRlbShuZ2h0dHAyX3N0cmVhbSAqc3Ry ZWFtLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZ2h0dHAyX291dGJvdW5kX2l0 ZW0gKml0ZW0pOwotK3ZvaWQgbmdodHRwMl9zdHJlYW1fYXR0YWNoX2l0ZW0obmdodHRwMl9zdHJl YW0gKnN0cmVhbSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5naHR0cDJfb3V0 Ym91bmRfaXRlbSAqaXRlbSk7Ci0gCi0gLyoKLSAgKiBEZXRhY2hlcyB8c3RyZWFtLT5pdGVtfC4g IFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgZnJlZQotQEAgLTM3NSw2NiArMjk0LDQgQEAgaW50IG5n aHR0cDJfc3RyZWFtX2F0dGFjaF9pdGVtKG5naHR0cDJfc3RyZWFtICpzdHJlYW0sCi0gICovCi0g dm9pZCBuZ2h0dHAyX3N0cmVhbV9kZXRhY2hfaXRlbShuZ2h0dHAyX3N0cmVhbSAqc3RyZWFtKTsK LSAKLS0vKgotLSAqIE1ha2VzIHRoZSB8c3RyZWFtfCBkZXBlbmQgb24gdGhlIHxkZXBfc3RyZWFt fC4gIFRoaXMgZGVwZW5kZW5jeSBpcwotLSAqIGV4Y2x1c2l2ZS4KLS0gKgotLSAqIFRoaXMgZnVu Y3Rpb24gcmV0dXJucyAwIGlmIGl0IHN1Y2NlZWRzLCBvciBvbmUgb2YgdGhlIGZvbGxvd2luZwot LSAqIG5lZ2F0aXZlIGVycm9yIGNvZGVzOgotLSAqCi0tICogTkdIVFRQMl9FUlJfTk9NRU0KLS0g KiAgICAgT3V0IG9mIG1lbW9yeQotLSAqLwotLWludCBuZ2h0dHAyX3N0cmVhbV9kZXBfaW5zZXJ0 X3N1YnRyZWUobmdodHRwMl9zdHJlYW0gKmRlcF9zdHJlYW0sCi0tICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBuZ2h0dHAyX3N0cmVhbSAqc3RyZWFtKTsKLS0KLS0vKgotLSAq IE1ha2VzIHRoZSB8c3RyZWFtfCBkZXBlbmQgb24gdGhlIHxkZXBfc3RyZWFtfC4gIFRoaXMgZGVw ZW5kZW5jeSBpcwotLSAqIG5vdCBleGNsdXNpdmUuCi0tICoKLS0gKiBUaGlzIGZ1bmN0aW9uIHJl dHVybnMgMCBpZiBpdCBzdWNjZWVkcywgb3Igb25lIG9mIHRoZSBmb2xsb3dpbmcKLS0gKiBuZWdh dGl2ZSBlcnJvciBjb2RlczoKLS0gKgotLSAqIE5HSFRUUDJfRVJSX05PTUVNCi0tICogICAgIE91 dCBvZiBtZW1vcnkKLS0gKi8KLS1pbnQgbmdodHRwMl9zdHJlYW1fZGVwX2FkZF9zdWJ0cmVlKG5n aHR0cDJfc3RyZWFtICpkZXBfc3RyZWFtLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbmdodHRwMl9zdHJlYW0gKnN0cmVhbSk7Ci0tCi0tLyoKLS0gKiBSZW1vdmVzIHN1YnRy ZWUgd2hvc2Ugcm9vdCBzdHJlYW0gaXMgfHN0cmVhbXwuICBUaGUKLS0gKiBlZmZlY3RpdmVfd2Vp Z2h0IG9mIHN0cmVhbXMgaW4gcmVtb3ZlZCBzdWJ0cmVlIGlzIG5vdCB1cGRhdGVkLgotLSAqCi0t ICogVGhpcyBmdW5jdGlvbiByZXR1cm5zIDAgaWYgaXQgc3VjY2VlZHMsIG9yIG9uZSBvZiB0aGUg Zm9sbG93aW5nCi0tICogbmVnYXRpdmUgZXJyb3IgY29kZXM6Ci0tICoKLS0gKiBOR0hUVFAyX0VS Ul9OT01FTQotLSAqICAgICBPdXQgb2YgbWVtb3J5Ci0tICovCi0tdm9pZCBuZ2h0dHAyX3N0cmVh bV9kZXBfcmVtb3ZlX3N1YnRyZWUobmdodHRwMl9zdHJlYW0gKnN0cmVhbSk7Ci0tCi0tLyoKLS0g KiBSZXR1cm5zIG5vbnplcm8gaWYgfHN0cmVhbXwgaXMgaW4gYW55IGRlcGVuZGVuY3kgdHJlZS4K LS0gKi8KLS1pbnQgbmdodHRwMl9zdHJlYW1faW5fZGVwX3RyZWUobmdodHRwMl9zdHJlYW0gKnN0 cmVhbSk7Ci0tCi0tLyoKLS0gKiBTY2hlZHVsZXMgdHJhbnNtaXNzaW9uIG9mIHxzdHJlYW18J3Mg aXRlbSwgYXNzdW1pbmcgc3RyZWFtLT5pdGVtIGlzCi0tICogYXR0YWNoZWQsIGFuZCBzdHJlYW0t Pmxhc3Rfd3JpdGVsZW4gd2FzIHVwZGF0ZWQuCi0tICovCi0tdm9pZCBuZ2h0dHAyX3N0cmVhbV9y ZXNjaGVkdWxlKG5naHR0cDJfc3RyZWFtICpzdHJlYW0pOwotLQotLS8qCi0tICogQ2hhbmdlcyB8 c3RyZWFtfCdzIHdlaWdodCB0byB8d2VpZ2h0fC4gIElmIHxzdHJlYW18IGlzIHF1ZXVlZCwgaXQK LS0gKiB3aWxsIGJlIHJlc2NoZWR1bGVkIGJhc2VkIG9uIG5ldyB3ZWlnaHQuCi0tICovCi0tdm9p ZCBuZ2h0dHAyX3N0cmVhbV9jaGFuZ2Vfd2VpZ2h0KG5naHR0cDJfc3RyZWFtICpzdHJlYW0sIGlu dDMyX3Qgd2VpZ2h0KTsKLS0KLS0vKgotLSAqIFJldHVybnMgYSBzdHJlYW0gd2hpY2ggaGFzIGhp Z2hlc3QgcHJpb3JpdHksIHVwZGF0aW5nCi0tICogZGVzY2VuZGFudF9sYXN0X2N5Y2xlIG9mIHNl bGVjdGVkIHN0cmVhbSdzIGFuY2VzdG9ycy4KLS0gKi8KLS1uZ2h0dHAyX291dGJvdW5kX2l0ZW0g KgotLW5naHR0cDJfc3RyZWFtX25leHRfb3V0Ym91bmRfaXRlbShuZ2h0dHAyX3N0cmVhbSAqc3Ry ZWFtKTsKLS0KLS0jZW5kaWYgLyogTkdIVFRQMl9TVFJFQU0gKi8KLSsjZW5kaWYgLyogIWRlZmlu ZWQoTkdIVFRQMl9TVFJFQU1fSCkgKi8KLWRpZmYgLS1naXQgYS9kZXBzL25naHR0cDIvbGliL25n aHR0cDJfc3VibWl0LmMgYi9kZXBzL25naHR0cDIvbGliL25naHR0cDJfc3VibWl0LmMKLWluZGV4 IDgxYzFhYjcwLi44YTkwZjcxNCAxMDA2NDQKLS0tLSBhL2RlcHMvbmdodHRwMi9saWIvbmdodHRw Ml9zdWJtaXQuYwotKysrIGIvZGVwcy9uZ2h0dHAyL2xpYi9uZ2h0dHAyX3N1Ym1pdC5jCi1AQCAt MzIsNDIgKzMyLDEyIEBACi0gI2luY2x1ZGUgIm5naHR0cDJfaGVscGVyLmgiCi0gI2luY2x1ZGUg Im5naHR0cDJfcHJpb3JpdHlfc3BlYy5oIgotIAotLS8qCi0tICogRGV0ZWN0cyB0aGUgZGVwZW5k ZW5jeSBlcnJvciwgdGhhdCBpcyBzdHJlYW0gYXR0ZW1wdGVkIHRvIGRlcGVuZCBvbgotLSAqIGl0 c2VsZi4gIElmIHxzdHJlYW1faWR8IGlzIC0xLCB3ZSB1c2Ugc2Vzc2lvbi0+bmV4dF9zdHJlYW1f aWQgYXMKLS0gKiBzdHJlYW0gSUQuCi0tICoKLS0gKiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgMCBp ZiBpdCBzdWNjZWVkcywgb3Igb25lIG9mIHRoZSBmb2xsb3dpbmcKLS0gKiBlcnJvciBjb2RlczoK LS0gKgotLSAqIE5HSFRUUDJfRVJSX0lOVkFMSURfQVJHVU1FTlQKLS0gKiAgIFN0cmVhbSBhdHRl bXB0ZWQgdG8gZGVwZW5kIG9uIGl0c2VsZi4KLS0gKi8KLS1zdGF0aWMgaW50IGRldGVjdF9zZWxm X2RlcGVuZGVuY3kobmdodHRwMl9zZXNzaW9uICpzZXNzaW9uLCBpbnQzMl90IHN0cmVhbV9pZCwK LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmdodHRwMl9wcmlvcml0 eV9zcGVjICpwcmlfc3BlYykgewotLSAgYXNzZXJ0KHByaV9zcGVjKTsKLS0KLS0gIGlmIChzdHJl YW1faWQgPT0gLTEpIHsKLS0gICAgaWYgKChpbnQzMl90KXNlc3Npb24tPm5leHRfc3RyZWFtX2lk ID09IHByaV9zcGVjLT5zdHJlYW1faWQpIHsKLS0gICAgICByZXR1cm4gTkdIVFRQMl9FUlJfSU5W QUxJRF9BUkdVTUVOVDsKLS0gICAgfQotLSAgICByZXR1cm4gMDsKLS0gIH0KLS0KLS0gIGlmIChz dHJlYW1faWQgPT0gcHJpX3NwZWMtPnN0cmVhbV9pZCkgewotLSAgICByZXR1cm4gTkdIVFRQMl9F UlJfSU5WQUxJRF9BUkdVTUVOVDsKLS0gIH0KLS0KLS0gIHJldHVybiAwOwotLX0KLS0KLSAvKiBU aGlzIGZ1bmN0aW9uIHRha2VzIG93bmVyc2hpcCBvZiB8bnZhX2NvcHl8LiBSZWdhcmRsZXNzIG9m IHRoZQotICAgIHJldHVybiB2YWx1ZSwgdGhlIGNhbGxlciBtdXN0IG5vdCBmcmVlIHxudmFfY29w eXwgYWZ0ZXIgdGhpcwotICAgIGZ1bmN0aW9uIHJldHVybnMuICovCi0gc3RhdGljIGludDMyX3Qg c3VibWl0X2hlYWRlcnNfc2hhcmVkKG5naHR0cDJfc2Vzc2lvbiAqc2Vzc2lvbiwgdWludDhfdCBm bGFncywKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBzdHJl YW1faWQsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5naHR0 cDJfcHJpb3JpdHlfc3BlYyAqcHJpX3NwZWMsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIG5naHR0cDJfbnYgKm52YV9jb3B5LCBzaXplX3QgbnZsZW4sCi0rICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3Qgc3RyZWFtX2lkLCBuZ2h0dHAyX252 ICpudmFfY29weSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90 IG52bGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZ2h0 dHAyX2RhdGFfcHJvdmlkZXJfd3JhcCAqZHB3LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB2b2lkICpzdHJlYW1fdXNlcl9kYXRhKSB7Ci0gICBpbnQgcnY7Ci1AQCAtMTE0 LDggKzg0LDggQEAgc3RhdGljIGludDMyX3Qgc3VibWl0X2hlYWRlcnNfc2hhcmVkKG5naHR0cDJf c2Vzc2lvbiAqc2Vzc2lvbiwgdWludDhfdCBmbGFncywKLSAKLSAgIGZyYW1lID0gJml0ZW0tPmZy YW1lOwotIAotLSAgbmdodHRwMl9mcmFtZV9oZWFkZXJzX2luaXQoJmZyYW1lLT5oZWFkZXJzLCBm bGFnc19jb3B5LCBzdHJlYW1faWQsIGhjYXQsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBwcmlfc3BlYywgbnZhX2NvcHksIG52bGVuKTsKLSsgIG5naHR0cDJfZnJhbWVfaGVhZGVyc19p bml0KCZmcmFtZS0+aGVhZGVycywgZmxhZ3NfY29weSwgc3RyZWFtX2lkLCBoY2F0LCBOVUxMLAot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnZhX2NvcHksIG52bGVuKTsKLSAKLSAgIHJ2 ID0gbmdodHRwMl9zZXNzaW9uX2FkZF9pdGVtKHNlc3Npb24sIGl0ZW0pOwotIAotQEAgLTE0MSwz MSArMTExLDIyIEBAIGZhaWwyOgotIAotIHN0YXRpYyBpbnQzMl90IHN1Ym1pdF9oZWFkZXJzX3No YXJlZF9udmEobmdodHRwMl9zZXNzaW9uICpzZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdWludDhfdCBmbGFncywgaW50MzJfdCBzdHJlYW1faWQsCi0t ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZ2h0dHAyX3By aW9yaXR5X3NwZWMgKnByaV9zcGVjLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY29uc3QgbmdodHRwMl9udiAqbnZhLCBzaXplX3QgbnZsZW4sCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZ2h0dHAyX2RhdGFfcHJvdmlk ZXJfd3JhcCAqZHB3LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dm9pZCAqc3RyZWFtX3VzZXJfZGF0YSkgewotICAgaW50IHJ2OwotICAgbmdodHRwMl9udiAqbnZh X2NvcHk7Ci0tICBuZ2h0dHAyX3ByaW9yaXR5X3NwZWMgY29weV9wcmlfc3BlYzsKLSAgIG5naHR0 cDJfbWVtICptZW07Ci0gCi0gICBtZW0gPSAmc2Vzc2lvbi0+bWVtOwotIAotLSAgaWYgKHByaV9z cGVjKSB7Ci0tICAgIGNvcHlfcHJpX3NwZWMgPSAqcHJpX3NwZWM7Ci0tICAgIG5naHR0cDJfcHJp b3JpdHlfc3BlY19ub3JtYWxpemVfd2VpZ2h0KCZjb3B5X3ByaV9zcGVjKTsKLS0gIH0gZWxzZSB7 Ci0tICAgIG5naHR0cDJfcHJpb3JpdHlfc3BlY19kZWZhdWx0X2luaXQoJmNvcHlfcHJpX3NwZWMp OwotLSAgfQotLQotICAgcnYgPSBuZ2h0dHAyX252X2FycmF5X2NvcHkoJm52YV9jb3B5LCBudmEs IG52bGVuLCBtZW0pOwotICAgaWYgKHJ2IDwgMCkgewotICAgICByZXR1cm4gcnY7Ci0gICB9Ci0g Ci0tICByZXR1cm4gc3VibWl0X2hlYWRlcnNfc2hhcmVkKHNlc3Npb24sIGZsYWdzLCBzdHJlYW1f aWQsICZjb3B5X3ByaV9zcGVjLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudmFf Y29weSwgbnZsZW4sIGRwdywgc3RyZWFtX3VzZXJfZGF0YSk7Ci0rICByZXR1cm4gc3VibWl0X2hl YWRlcnNfc2hhcmVkKHNlc3Npb24sIGZsYWdzLCBzdHJlYW1faWQsIG52YV9jb3B5LCBudmxlbiwg ZHB3LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1fdXNlcl9kYXRhKTsK LSB9Ci0gCi0gaW50IG5naHR0cDJfc3VibWl0X3RyYWlsZXIobmdodHRwMl9zZXNzaW9uICpzZXNz aW9uLCBpbnQzMl90IHN0cmVhbV9pZCwKLUBAIC0xNzQsOCArMTM1LDggQEAgaW50IG5naHR0cDJf c3VibWl0X3RyYWlsZXIobmdodHRwMl9zZXNzaW9uICpzZXNzaW9uLCBpbnQzMl90IHN0cmVhbV9p ZCwKLSAgICAgcmV0dXJuIE5HSFRUUDJfRVJSX0lOVkFMSURfQVJHVU1FTlQ7Ci0gICB9Ci0gCi0t ICByZXR1cm4gKGludClzdWJtaXRfaGVhZGVyc19zaGFyZWRfbnZhKAotLSAgICBzZXNzaW9uLCBO R0hUVFAyX0ZMQUdfRU5EX1NUUkVBTSwgc3RyZWFtX2lkLCBOVUxMLCBudmEsIG52bGVuLCBOVUxM LCBOVUxMKTsKLSsgIHJldHVybiAoaW50KXN1Ym1pdF9oZWFkZXJzX3NoYXJlZF9udmEoc2Vzc2lv biwgTkdIVFRQMl9GTEFHX0VORF9TVFJFQU0sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHN0cmVhbV9pZCwgbnZhLCBudmxlbiwgTlVMTCwgTlVMTCk7Ci0gfQotIAot IGludDMyX3QgbmdodHRwMl9zdWJtaXRfaGVhZGVycyhuZ2h0dHAyX3Nlc3Npb24gKnNlc3Npb24s IHVpbnQ4X3QgZmxhZ3MsCi1AQCAtMTgzLDcgKzE0NCw3IEBAIGludDMyX3QgbmdodHRwMl9zdWJt aXRfaGVhZGVycyhuZ2h0dHAyX3Nlc3Npb24gKnNlc3Npb24sIHVpbnQ4X3QgZmxhZ3MsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5naHR0cDJfcHJpb3JpdHlfc3BlYyAq cHJpX3NwZWMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5naHR0cDJf bnYgKm52YSwgc2l6ZV90IG52bGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2 b2lkICpzdHJlYW1fdXNlcl9kYXRhKSB7Ci0tICBpbnQgcnY7Ci0rICAodm9pZClwcmlfc3BlYzsK LSAKLSAgIGlmIChzdHJlYW1faWQgPT0gLTEpIHsKLSAgICAgaWYgKHNlc3Npb24tPnNlcnZlcikg ewotQEAgLTE5NSwyMCArMTU2LDggQEAgaW50MzJfdCBuZ2h0dHAyX3N1Ym1pdF9oZWFkZXJzKG5n aHR0cDJfc2Vzc2lvbiAqc2Vzc2lvbiwgdWludDhfdCBmbGFncywKLSAKLSAgIGZsYWdzICY9IE5H SFRUUDJfRkxBR19FTkRfU1RSRUFNOwotIAotLSAgaWYgKHByaV9zcGVjICYmICFuZ2h0dHAyX3By aW9yaXR5X3NwZWNfY2hlY2tfZGVmYXVsdChwcmlfc3BlYykgJiYKLS0gICAgICBzZXNzaW9uLT5y ZW1vdGVfc2V0dGluZ3Mubm9fcmZjNzU0MF9wcmlvcml0aWVzICE9IDEpIHsKLS0gICAgcnYgPSBk ZXRlY3Rfc2VsZl9kZXBlbmRlbmN5KHNlc3Npb24sIHN0cmVhbV9pZCwgcHJpX3NwZWMpOwotLSAg ICBpZiAocnYgIT0gMCkgewotLSAgICAgIHJldHVybiBydjsKLS0gICAgfQotLQotLSAgICBmbGFn cyB8PSBOR0hUVFAyX0ZMQUdfUFJJT1JJVFk7Ci0tICB9IGVsc2UgewotLSAgICBwcmlfc3BlYyA9 IE5VTEw7Ci0tICB9Ci0tCi0tICByZXR1cm4gc3VibWl0X2hlYWRlcnNfc2hhcmVkX252YShzZXNz aW9uLCBmbGFncywgc3RyZWFtX2lkLCBwcmlfc3BlYywgbnZhLAotLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbnZsZW4sIE5VTEwsIHN0cmVhbV91c2VyX2RhdGEpOwotKyAgcmV0 dXJuIHN1Ym1pdF9oZWFkZXJzX3NoYXJlZF9udmEoc2Vzc2lvbiwgZmxhZ3MsIHN0cmVhbV9pZCwg bnZhLCBudmxlbiwgTlVMTCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0 cmVhbV91c2VyX2RhdGEpOwotIH0KLSAKLSBpbnQgbmdodHRwMl9zdWJtaXRfcGluZyhuZ2h0dHAy X3Nlc3Npb24gKnNlc3Npb24sIHVpbnQ4X3QgZmxhZ3MsCi1AQCAtMjIwLDUxICsxNjksMTAgQEAg aW50IG5naHR0cDJfc3VibWl0X3BpbmcobmdodHRwMl9zZXNzaW9uICpzZXNzaW9uLCB1aW50OF90 IGZsYWdzLAotIGludCBuZ2h0dHAyX3N1Ym1pdF9wcmlvcml0eShuZ2h0dHAyX3Nlc3Npb24gKnNl c3Npb24sIHVpbnQ4X3QgZmxhZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMy X3Qgc3RyZWFtX2lkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZ2h0dHAy X3ByaW9yaXR5X3NwZWMgKnByaV9zcGVjKSB7Ci0tICBpbnQgcnY7Ci0tICBuZ2h0dHAyX291dGJv dW5kX2l0ZW0gKml0ZW07Ci0tICBuZ2h0dHAyX2ZyYW1lICpmcmFtZTsKLS0gIG5naHR0cDJfcHJp b3JpdHlfc3BlYyBjb3B5X3ByaV9zcGVjOwotLSAgbmdodHRwMl9tZW0gKm1lbTsKLSsgICh2b2lk KXNlc3Npb247Ci0gICAodm9pZClmbGFnczsKLS0KLS0gIG1lbSA9ICZzZXNzaW9uLT5tZW07Ci0t Ci0tICBpZiAoc2Vzc2lvbi0+cmVtb3RlX3NldHRpbmdzLm5vX3JmYzc1NDBfcHJpb3JpdGllcyA9 PSAxKSB7Ci0tICAgIHJldHVybiAwOwotLSAgfQotLQotLSAgaWYgKHN0cmVhbV9pZCA9PSAwIHx8 IHByaV9zcGVjID09IE5VTEwpIHsKLS0gICAgcmV0dXJuIE5HSFRUUDJfRVJSX0lOVkFMSURfQVJH VU1FTlQ7Ci0tICB9Ci0tCi0tICBpZiAoc3RyZWFtX2lkID09IHByaV9zcGVjLT5zdHJlYW1faWQp IHsKLS0gICAgcmV0dXJuIE5HSFRUUDJfRVJSX0lOVkFMSURfQVJHVU1FTlQ7Ci0tICB9Ci0tCi0t ICBjb3B5X3ByaV9zcGVjID0gKnByaV9zcGVjOwotLQotLSAgbmdodHRwMl9wcmlvcml0eV9zcGVj X25vcm1hbGl6ZV93ZWlnaHQoJmNvcHlfcHJpX3NwZWMpOwotLQotLSAgaXRlbSA9IG5naHR0cDJf bWVtX21hbGxvYyhtZW0sIHNpemVvZihuZ2h0dHAyX291dGJvdW5kX2l0ZW0pKTsKLS0KLS0gIGlm IChpdGVtID09IE5VTEwpIHsKLS0gICAgcmV0dXJuIE5HSFRUUDJfRVJSX05PTUVNOwotLSAgfQot LQotLSAgbmdodHRwMl9vdXRib3VuZF9pdGVtX2luaXQoaXRlbSk7Ci0tCi0tICBmcmFtZSA9ICZp dGVtLT5mcmFtZTsKLS0KLS0gIG5naHR0cDJfZnJhbWVfcHJpb3JpdHlfaW5pdCgmZnJhbWUtPnBy aW9yaXR5LCBzdHJlYW1faWQsICZjb3B5X3ByaV9zcGVjKTsKLS0KLS0gIHJ2ID0gbmdodHRwMl9z ZXNzaW9uX2FkZF9pdGVtKHNlc3Npb24sIGl0ZW0pOwotLQotLSAgaWYgKHJ2ICE9IDApIHsKLS0g ICAgbmdodHRwMl9mcmFtZV9wcmlvcml0eV9mcmVlKCZmcmFtZS0+cHJpb3JpdHkpOwotLSAgICBu Z2h0dHAyX21lbV9mcmVlKG1lbSwgaXRlbSk7Ci0tCi0tICAgIHJldHVybiBydjsKLS0gIH0KLSsg ICh2b2lkKXN0cmVhbV9pZDsKLSsgICh2b2lkKXByaV9zcGVjOwotIAotICAgcmV0dXJuIDA7Ci0g fQotQEAgLTI3Nyw3ICsxODUsOCBAQCBpbnQgbmdodHRwMl9zdWJtaXRfcnN0X3N0cmVhbShuZ2h0 dHAyX3Nlc3Npb24gKnNlc3Npb24sIHVpbnQ4X3QgZmxhZ3MsCi0gICAgIHJldHVybiBOR0hUVFAy X0VSUl9JTlZBTElEX0FSR1VNRU5UOwotICAgfQotIAotLSAgcmV0dXJuIG5naHR0cDJfc2Vzc2lv bl9hZGRfcnN0X3N0cmVhbShzZXNzaW9uLCBzdHJlYW1faWQsIGVycm9yX2NvZGUpOwotKyAgcmV0 dXJuIG5naHR0cDJfc2Vzc2lvbl9hZGRfcnN0X3N0cmVhbV9jb250aW51ZSgKLSsgICAgc2Vzc2lv biwgc3RyZWFtX2lkLCBlcnJvcl9jb2RlLCAvKiBjb250aW51ZV93aXRob3V0X3N0cmVhbSA9ICov IDApOwotIH0KLSAKLSBpbnQgbmdodHRwMl9zdWJtaXRfZ29hd2F5KG5naHR0cDJfc2Vzc2lvbiAq c2Vzc2lvbiwgdWludDhfdCBmbGFncywKLUBAIC01NzgsNyArNDg3LDcgQEAgaW50IG5naHR0cDJf c3VibWl0X2FsdHN2YyhuZ2h0dHAyX3Nlc3Npb24gKnNlc3Npb24sIHVpbnQ4X3QgZmxhZ3MsCi0g ICByZXR1cm4gMDsKLSAKLSBmYWlsX2l0ZW1fbWFsbG9jOgotLSAgZnJlZShidWYpOwotKyAgbmdo dHRwMl9tZW1fZnJlZShtZW0sIGJ1Zik7Ci0gCi0gICByZXR1cm4gcnY7Ci0gfQotQEAgLTY2MSw3 ICs1NzAsNyBAQCBpbnQgbmdodHRwMl9zdWJtaXRfb3JpZ2luKG5naHR0cDJfc2Vzc2lvbiAqc2Vz c2lvbiwgdWludDhfdCBmbGFncywKLSAgIHJldHVybiAwOwotIAotIGZhaWxfaXRlbV9tYWxsb2M6 Ci0tICBmcmVlKG92X2NvcHkpOwotKyAgbmdodHRwMl9tZW1fZnJlZShtZW0sIG92X2NvcHkpOwot IAotICAgcmV0dXJuIHJ2OwotIH0KLUBAIC03MzMsNTEgKzY0MiwzNCBAQCBpbnQgbmdodHRwMl9z dWJtaXRfcHJpb3JpdHlfdXBkYXRlKG5naHR0cDJfc2Vzc2lvbiAqc2Vzc2lvbiwgdWludDhfdCBm bGFncywKLSAgIHJldHVybiAwOwotIAotIGZhaWxfaXRlbV9tYWxsb2M6Ci0tICBmcmVlKGJ1Zik7 Ci0rICBuZ2h0dHAyX21lbV9mcmVlKG1lbSwgYnVmKTsKLSAKLSAgIHJldHVybiBydjsKLSB9Ci0g Ci0tc3RhdGljIHVpbnQ4X3Qgc2V0X3JlcXVlc3RfZmxhZ3MoY29uc3QgbmdodHRwMl9wcmlvcml0 eV9zcGVjICpwcmlfc3BlYywKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z dCBuZ2h0dHAyX2RhdGFfcHJvdmlkZXJfd3JhcCAqZHB3KSB7Ci0rc3RhdGljIHVpbnQ4X3Qgc2V0 X3JlcXVlc3RfZmxhZ3MoY29uc3QgbmdodHRwMl9kYXRhX3Byb3ZpZGVyX3dyYXAgKmRwdykgewot ICAgdWludDhfdCBmbGFncyA9IE5HSFRUUDJfRkxBR19OT05FOwotICAgaWYgKGRwdyA9PSBOVUxM IHx8IGRwdy0+ZGF0YV9wcmQucmVhZF9jYWxsYmFjayA9PSBOVUxMKSB7Ci0gICAgIGZsYWdzIHw9 IE5HSFRUUDJfRkxBR19FTkRfU1RSRUFNOwotICAgfQotIAotLSAgaWYgKHByaV9zcGVjKSB7Ci0t ICAgIGZsYWdzIHw9IE5HSFRUUDJfRkxBR19QUklPUklUWTsKLS0gIH0KLS0KLSAgIHJldHVybiBm bGFnczsKLSB9Ci0gCi0gc3RhdGljIGludDMyX3Qgc3VibWl0X3JlcXVlc3Rfc2hhcmVkKG5naHR0 cDJfc2Vzc2lvbiAqc2Vzc2lvbiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29uc3QgbmdodHRwMl9wcmlvcml0eV9zcGVjICpwcmlfc3BlYywKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmdodHRwMl9udiAqbnZhLCBzaXplX3QgbnZs ZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5naHR0cDJf ZGF0YV9wcm92aWRlcl93cmFwICpkcHcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHZvaWQgKnN0cmVhbV91c2VyX2RhdGEpIHsKLSAgIHVpbnQ4X3QgZmxhZ3M7Ci0tICBp bnQgcnY7Ci0gCi0gICBpZiAoc2Vzc2lvbi0+c2VydmVyKSB7Ci0gICAgIHJldHVybiBOR0hUVFAy X0VSUl9QUk9UTzsKLSAgIH0KLSAKLS0gIGlmIChwcmlfc3BlYyAmJiAhbmdodHRwMl9wcmlvcml0 eV9zcGVjX2NoZWNrX2RlZmF1bHQocHJpX3NwZWMpICYmCi0tICAgICAgc2Vzc2lvbi0+cmVtb3Rl X3NldHRpbmdzLm5vX3JmYzc1NDBfcHJpb3JpdGllcyAhPSAxKSB7Ci0tICAgIHJ2ID0gZGV0ZWN0 X3NlbGZfZGVwZW5kZW5jeShzZXNzaW9uLCAtMSwgcHJpX3NwZWMpOwotLSAgICBpZiAocnYgIT0g MCkgewotLSAgICAgIHJldHVybiBydjsKLS0gICAgfQotLSAgfSBlbHNlIHsKLS0gICAgcHJpX3Nw ZWMgPSBOVUxMOwotLSAgfQotLQotLSAgZmxhZ3MgPSBzZXRfcmVxdWVzdF9mbGFncyhwcmlfc3Bl YywgZHB3KTsKLSsgIGZsYWdzID0gc2V0X3JlcXVlc3RfZmxhZ3MoZHB3KTsKLSAKLS0gIHJldHVy biBzdWJtaXRfaGVhZGVyc19zaGFyZWRfbnZhKHNlc3Npb24sIGZsYWdzLCAtMSwgcHJpX3NwZWMs IG52YSwgbnZsZW4sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcHcsIHN0 cmVhbV91c2VyX2RhdGEpOwotKyAgcmV0dXJuIHN1Ym1pdF9oZWFkZXJzX3NoYXJlZF9udmEoc2Vz c2lvbiwgZmxhZ3MsIC0xLCBudmEsIG52bGVuLCBkcHcsCi0rICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzdHJlYW1fdXNlcl9kYXRhKTsKLSB9Ci0gCi0gaW50MzJfdCBuZ2h0dHAy X3N1Ym1pdF9yZXF1ZXN0KG5naHR0cDJfc2Vzc2lvbiAqc2Vzc2lvbiwKLUBAIC03ODYsOCArNjc4 LDkgQEAgaW50MzJfdCBuZ2h0dHAyX3N1Ym1pdF9yZXF1ZXN0KG5naHR0cDJfc2Vzc2lvbiAqc2Vz c2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmdodHRwMl9kYXRh X3Byb3ZpZGVyICpkYXRhX3ByZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9p ZCAqc3RyZWFtX3VzZXJfZGF0YSkgewotICAgbmdodHRwMl9kYXRhX3Byb3ZpZGVyX3dyYXAgZHB3 OwotKyAgKHZvaWQpcHJpX3NwZWM7Ci0gCi0tICByZXR1cm4gc3VibWl0X3JlcXVlc3Rfc2hhcmVk KHNlc3Npb24sIHByaV9zcGVjLCBudmEsIG52bGVuLAotKyAgcmV0dXJuIHN1Ym1pdF9yZXF1ZXN0 X3NoYXJlZChzZXNzaW9uLCBudmEsIG52bGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBuZ2h0dHAyX2RhdGFfcHJvdmlkZXJfd3JhcF92MSgmZHB3LCBkYXRhX3ByZCksCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV91c2VyX2RhdGEpOwotIH0KLUBAIC03 OTgsOCArNjkxLDkgQEAgaW50MzJfdCBuZ2h0dHAyX3N1Ym1pdF9yZXF1ZXN0MihuZ2h0dHAyX3Nl c3Npb24gKnNlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBu Z2h0dHAyX2RhdGFfcHJvdmlkZXIyICpkYXRhX3ByZCwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHZvaWQgKnN0cmVhbV91c2VyX2RhdGEpIHsKLSAgIG5naHR0cDJfZGF0YV9wcm92 aWRlcl93cmFwIGRwdzsKLSsgICh2b2lkKXByaV9zcGVjOwotIAotLSAgcmV0dXJuIHN1Ym1pdF9y ZXF1ZXN0X3NoYXJlZChzZXNzaW9uLCBwcmlfc3BlYywgbnZhLCBudmxlbiwKLSsgIHJldHVybiBz dWJtaXRfcmVxdWVzdF9zaGFyZWQoc2Vzc2lvbiwgbnZhLCBudmxlbiwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbmdodHRwMl9kYXRhX3Byb3ZpZGVyX3dyYXBfdjIoJmRwdywgZGF0 YV9wcmQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1fdXNlcl9kYXRh KTsKLSB9Ci1AQCAtODI2LDggKzcyMCw4IEBAIHN0YXRpYyBpbnQgc3VibWl0X3Jlc3BvbnNlX3No YXJlZChuZ2h0dHAyX3Nlc3Npb24gKnNlc3Npb24sIGludDMyX3Qgc3RyZWFtX2lkLAotICAgfQot IAotICAgZmxhZ3MgPSBzZXRfcmVzcG9uc2VfZmxhZ3MoZHB3KTsKLS0gIHJldHVybiBzdWJtaXRf aGVhZGVyc19zaGFyZWRfbnZhKHNlc3Npb24sIGZsYWdzLCBzdHJlYW1faWQsIE5VTEwsIG52YSwg bnZsZW4sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcHcsIE5VTEwpOwot KyAgcmV0dXJuIHN1Ym1pdF9oZWFkZXJzX3NoYXJlZF9udmEoc2Vzc2lvbiwgZmxhZ3MsIHN0cmVh bV9pZCwgbnZhLCBudmxlbiwgZHB3LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgTlVMTCk7Ci0gfQotIAotIGludCBuZ2h0dHAyX3N1Ym1pdF9yZXNwb25zZShuZ2h0dHAyX3Nl c3Npb24gKnNlc3Npb24sIGludDMyX3Qgc3RyZWFtX2lkLAotZGlmZiAtLWdpdCBhL2RlcHMvbmdo dHRwMi9saWIvbmdodHRwMl9zdWJtaXQuaCBiL2RlcHMvbmdodHRwMi9saWIvbmdodHRwMl9zdWJt aXQuaAotaW5kZXggMzUwZWUwMjIuLmRlY2Y4MDNkIDEwMDY0NAotLS0tIGEvZGVwcy9uZ2h0dHAy L2xpYi9uZ2h0dHAyX3N1Ym1pdC5oCi0rKysgYi9kZXBzL25naHR0cDIvbGliL25naHR0cDJfc3Vi bWl0LmgKLUBAIC0yNyw3ICsyNyw3IEBACi0gCi0gI2lmZGVmIEhBVkVfQ09ORklHX0gKLSAjICBp bmNsdWRlIDxjb25maWcuaD4KLS0jZW5kaWYgLyogSEFWRV9DT05GSUdfSCAqLwotKyNlbmRpZiAv KiBkZWZpbmVkKEhBVkVfQ09ORklHX0gpICovCi0gCi0gI2luY2x1ZGUgPG5naHR0cDIvbmdodHRw Mi5oPgotIAotQEAgLTM3LDQgKzM3LDQgQEAgaW50IG5naHR0cDJfc3VibWl0X2RhdGFfc2hhcmVk KG5naHR0cDJfc2Vzc2lvbiAqc2Vzc2lvbiwgdWludDhfdCBmbGFncywKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgaW50MzJfdCBzdHJlYW1faWQsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNvbnN0IG5naHR0cDJfZGF0YV9wcm92aWRlcl93cmFwICpkcHcpOwotIAot LSNlbmRpZiAvKiBOR0hUVFAyX1NVQk1JVF9IICovCi0rI2VuZGlmIC8qICFkZWZpbmVkKE5HSFRU UDJfU1VCTUlUX0gpICovCi1kaWZmIC0tZ2l0IGEvZGVwcy9uZ2h0dHAyL2xpYi9uZ2h0dHAyX3Rp bWUuYyBiL2RlcHMvbmdodHRwMi9saWIvbmdodHRwMl90aW1lLmMKLWluZGV4IDE0OGNjZmRjLi4x OGZkN2JjYSAxMDA2NDQKLS0tLSBhL2RlcHMvbmdodHRwMi9saWIvbmdodHRwMl90aW1lLmMKLSsr KyBiL2RlcHMvbmdodHRwMi9saWIvbmdodHRwMl90aW1lLmMKLUBAIC0yNiw3ICsyNiw3IEBACi0g Ci0gI2lmZGVmIEhBVkVfV0lORE9XU19ICi0gIyAgaW5jbHVkZSA8d2luZG93cy5oPgotLSNlbmRp ZiAvKiBIQVZFX1dJTkRPV1NfSCAqLwotKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfV0lORE9XU19I KSAqLwotIAotICNpbmNsdWRlIDx0aW1lLmg+Ci0gCi1AQCAtNDAsMTIgKzQwLDExIEBAIHN0YXRp YyB1aW50NjRfdCB0aW1lX25vd19zZWModm9pZCkgewotIAotICAgcmV0dXJuICh1aW50NjRfdCl0 OwotIH0KLS0jZW5kaWYgLyogIUhBVkVfR0VUVElDS0NPVU5UNjQgfHwgX19DWUdXSU5fXyAqLwot KyNlbmRpZiAvKiAhZGVmaW5lZChIQVZFX0dFVFRJQ0tDT1VOVDY0KSB8fCBkZWZpbmVkKF9fQ1lH V0lOX18pICovCi0gCi0gI2lmIGRlZmluZWQoSEFWRV9HRVRUSUNLQ09VTlQ2NCkgJiYgIWRlZmlu ZWQoX19DWUdXSU5fXykKLSB1aW50NjRfdCBuZ2h0dHAyX3RpbWVfbm93X3NlYyh2b2lkKSB7IHJl dHVybiBHZXRUaWNrQ291bnQ2NCgpIC8gMTAwMDsgfQotLSNlbGlmIGRlZmluZWQoSEFWRV9DTE9D S19HRVRUSU1FKSAmJiBkZWZpbmVkKEhBVkVfREVDTF9DTE9DS19NT05PVE9OSUMpICYmICAgICBc Ci0tICBIQVZFX0RFQ0xfQ0xPQ0tfTU9OT1RPTklDCi0rI2VsaWYgZGVmaW5lZChIQVZFX0NMT0NL X0dFVFRJTUUpICYmIEhBVkVfREVDTF9DTE9DS19NT05PVE9OSUMKLSB1aW50NjRfdCBuZ2h0dHAy X3RpbWVfbm93X3NlYyh2b2lkKSB7Ci0gICBzdHJ1Y3QgdGltZXNwZWMgdHA7Ci0gICBpbnQgcnYg PSBjbG9ja19nZXR0aW1lKENMT0NLX01PTk9UT05JQywgJnRwKTsKLUBAIC01Niw4ICs1NSw4IEBA IHVpbnQ2NF90IG5naHR0cDJfdGltZV9ub3dfc2VjKHZvaWQpIHsKLSAKLSAgIHJldHVybiAodWlu dDY0X3QpdHAudHZfc2VjOwotIH0KLS0jZWxzZSAgLyogKCFIQVZFX0NMT0NLX0dFVFRJTUUgfHwg IUhBVkVfREVDTF9DTE9DS19NT05PVE9OSUMpICYmICAgICAgICAgICAgICAgXAotLSAgICAgICAg ICAoIUhBVkVfR0VUVElDS0NPVU5UNjQgfHwgX19DWUdXSU5fXykpICovCi0rI2Vsc2UgIC8qICgh ZGVmaW5lZChIQVZFX0dFVFRJQ0tDT1VOVDY0KSB8fCAhZGVmaW5lZChfX0NZR1dJTl9fKSkgJiYg ICAgICAgICAgIFwKLSsgICAgICAgICAgKCFkZWZpbmVkKEhBVkVfQ0xPQ0tfR0VUVElNRSkgfHwg IUhBVkVfREVDTF9DTE9DS19NT05PVE9OSUMpICovCi0gdWludDY0X3QgbmdodHRwMl90aW1lX25v d19zZWModm9pZCkgeyByZXR1cm4gdGltZV9ub3dfc2VjKCk7IH0KLS0jZW5kaWYgLyogKCFIQVZF X0NMT0NLX0dFVFRJTUUgfHwgIUhBVkVfREVDTF9DTE9DS19NT05PVE9OSUMpICYmICAgICAgICAg ICAgICAgXAotLSAgICAgICAgICghSEFWRV9HRVRUSUNLQ09VTlQ2NCB8fCBfX0NZR1dJTl9fKSkg Ki8KLSsjZW5kaWYgLyogKCFkZWZpbmVkKEhBVkVfR0VUVElDS0NPVU5UNjQpIHx8ICFkZWZpbmVk KF9fQ1lHV0lOX18pKSAmJiAgICAgICAgICAgXAotKyAgICAgICAgICAoIWRlZmluZWQoSEFWRV9D TE9DS19HRVRUSU1FKSB8fCAhSEFWRV9ERUNMX0NMT0NLX01PTk9UT05JQykgKi8KLWRpZmYgLS1n aXQgYS9kZXBzL25naHR0cDIvbGliL25naHR0cDJfdGltZS5oIGIvZGVwcy9uZ2h0dHAyL2xpYi9u Z2h0dHAyX3RpbWUuaAotaW5kZXggMDNjMGJiZTkuLmE5MWU2MmFkIDEwMDY0NAotLS0tIGEvZGVw cy9uZ2h0dHAyL2xpYi9uZ2h0dHAyX3RpbWUuaAotKysrIGIvZGVwcy9uZ2h0dHAyL2xpYi9uZ2h0 dHAyX3RpbWUuaAotQEAgLTI3LDcgKzI3LDcgQEAKLSAKLSAjaWZkZWYgSEFWRV9DT05GSUdfSAot ICMgIGluY2x1ZGUgPGNvbmZpZy5oPgotLSNlbmRpZiAvKiBIQVZFX0NPTkZJR19IICovCi0rI2Vu ZGlmIC8qIGRlZmluZWQoSEFWRV9DT05GSUdfSCkgKi8KLSAKLSAjaW5jbHVkZSA8bmdodHRwMi9u Z2h0dHAyLmg+Ci0gCi1AQCAtMzUsNCArMzUsNCBAQAotICAgIHRpbWVwb2ludC4gIElmIGl0IGlz IHVuYWJsZSB0byBnZXQgc2Vjb25kcywgaXQgcmV0dXJucyAwLiAqLwotIHVpbnQ2NF90IG5naHR0 cDJfdGltZV9ub3dfc2VjKHZvaWQpOwotIAotLSNlbmRpZiAvKiBOR0hUVFAyX1RJTUVfSCAqLwot KyNlbmRpZiAvKiAhZGVmaW5lZChOR0hUVFAyX1RJTUVfSCkgKi8KLWRpZmYgLS1naXQgYS9kZXBz L25naHR0cDIvbGliL25naHR0cDJfdmVyc2lvbi5jIGIvZGVwcy9uZ2h0dHAyL2xpYi9uZ2h0dHAy X3ZlcnNpb24uYwotaW5kZXggNDIxMWYyY2YuLjM5YTQ5ZmYzIDEwMDY0NAotLS0tIGEvZGVwcy9u Z2h0dHAyL2xpYi9uZ2h0dHAyX3ZlcnNpb24uYwotKysrIGIvZGVwcy9uZ2h0dHAyL2xpYi9uZ2h0 dHAyX3ZlcnNpb24uYwotQEAgLTI0LDcgKzI0LDcgQEAKLSAgKi8KLSAjaWZkZWYgSEFWRV9DT05G SUdfSAotICMgIGluY2x1ZGUgPGNvbmZpZy5oPgotLSNlbmRpZiAvKiBIQVZFX0NPTkZJR19IICov Ci0rI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9DT05GSUdfSCkgKi8KLSAKLSAjaW5jbHVkZSA8bmdo dHRwMi9uZ2h0dHAyLmg+Ci0gCi1kaWZmIC0tZ2l0IGEvZGVwcy9uZ2h0dHAyL2xpYi9zZnBhcnNl LmMgYi9kZXBzL25naHR0cDIvbGliL3NmcGFyc2UuYwotaW5kZXggYjVlOTRjYzIuLmNlZTA4OWQz IDEwMDY0NAotLS0tIGEvZGVwcy9uZ2h0dHAyL2xpYi9zZnBhcnNlLmMKLSsrKyBiL2RlcHMvbmdo dHRwMi9saWIvc2ZwYXJzZS5jCi1AQCAtMzAsMzggKzMwLDQ2IEBACi0gI2luY2x1ZGUgPGFzc2Vy dC5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLSAKLS0jZGVmaW5lIFNGX1NUQVRFX0RJQ1QgMHgw OHUKLS0jZGVmaW5lIFNGX1NUQVRFX0xJU1QgMHgxMHUKLS0jZGVmaW5lIFNGX1NUQVRFX0lURU0g MHgxOHUKLSsjaWZkZWYgX19BVlgyX18KLSsjICBpbmNsdWRlIDxpbW1pbnRyaW4uaD4KLSsjZW5k aWYgLyogX19BVlgyX18gKi8KLSAKLS0jZGVmaW5lIFNGX1NUQVRFX0lOTkVSX0xJU1QgMHgwNHUK LSsjZGVmaW5lIFNGUEFSU0VfU1RBVEVfRElDVCAweDA4dQotKyNkZWZpbmUgU0ZQQVJTRV9TVEFU RV9MSVNUIDB4MTB1Ci0rI2RlZmluZSBTRlBBUlNFX1NUQVRFX0lURU0gMHgxOHUKLSAKLS0jZGVm aW5lIFNGX1NUQVRFX0JFRk9SRSAweDAwdQotLSNkZWZpbmUgU0ZfU1RBVEVfQkVGT1JFX1BBUkFN UyAweDAxdQotLSNkZWZpbmUgU0ZfU1RBVEVfUEFSQU1TIDB4MDJ1Ci0tI2RlZmluZSBTRl9TVEFU RV9BRlRFUiAweDAzdQotKyNkZWZpbmUgU0ZQQVJTRV9TVEFURV9JTk5FUl9MSVNUIDB4MDR1Ci0g Ci0tI2RlZmluZSBTRl9TVEFURV9PUF9NQVNLIDB4MDN1Ci0rI2RlZmluZSBTRlBBUlNFX1NUQVRF X0JFRk9SRSAweDAwdQotKyNkZWZpbmUgU0ZQQVJTRV9TVEFURV9CRUZPUkVfUEFSQU1TIDB4MDF1 Ci0rI2RlZmluZSBTRlBBUlNFX1NUQVRFX1BBUkFNUyAweDAydQotKyNkZWZpbmUgU0ZQQVJTRV9T VEFURV9BRlRFUiAweDAzdQotIAotLSNkZWZpbmUgU0ZfU0VUX1NUQVRFX0FGVEVSKE5BTUUpIChT Rl9TVEFURV8jI05BTUUgfCBTRl9TVEFURV9BRlRFUikKLS0jZGVmaW5lIFNGX1NFVF9TVEFURV9C RUZPUkVfUEFSQU1TKE5BTUUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAotLSAgKFNGX1NUQVRFXyMjTkFNRSB8IFNGX1NUQVRFX0JFRk9SRV9QQVJBTVMpCi0tI2RlZmlu ZSBTRl9TRVRfU1RBVEVfSU5ORVJfTElTVF9CRUZPUkUoTkFNRSkgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwKLS0gIChTRl9TVEFURV8jI05BTUUgfCBTRl9TVEFURV9JTk5FUl9M SVNUIHwgU0ZfU1RBVEVfQkVGT1JFKQotKyNkZWZpbmUgU0ZQQVJTRV9TVEFURV9PUF9NQVNLIDB4 MDN1Ci0gCi0tI2RlZmluZSBTRl9TVEFURV9ESUNUX0FGVEVSIFNGX1NFVF9TVEFURV9BRlRFUihE SUNUKQotLSNkZWZpbmUgU0ZfU1RBVEVfRElDVF9CRUZPUkVfUEFSQU1TIFNGX1NFVF9TVEFURV9C RUZPUkVfUEFSQU1TKERJQ1QpCi0tI2RlZmluZSBTRl9TVEFURV9ESUNUX0lOTkVSX0xJU1RfQkVG T1JFIFNGX1NFVF9TVEFURV9JTk5FUl9MSVNUX0JFRk9SRShESUNUKQotKyNkZWZpbmUgU0ZQQVJT RV9TRVRfU1RBVEVfQUZURVIoTkFNRSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcCi0rICAoU0ZQQVJTRV9TVEFURV8jI05BTUUgfCBTRlBBUlNFX1NUQVRFX0FGVEVS KQotKyNkZWZpbmUgU0ZQQVJTRV9TRVRfU1RBVEVfQkVGT1JFX1BBUkFNUyhOQU1FKSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAoU0ZQQVJTRV9TVEFURV8jI05BTUUgfCBT RlBBUlNFX1NUQVRFX0JFRk9SRV9QQVJBTVMpCi0rI2RlZmluZSBTRlBBUlNFX1NFVF9TVEFURV9J Tk5FUl9MSVNUX0JFRk9SRShOQU1FKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsg IChTRlBBUlNFX1NUQVRFXyMjTkFNRSB8IFNGUEFSU0VfU1RBVEVfSU5ORVJfTElTVCB8IFNGUEFS U0VfU1RBVEVfQkVGT1JFKQotIAotLSNkZWZpbmUgU0ZfU1RBVEVfTElTVF9BRlRFUiBTRl9TRVRf U1RBVEVfQUZURVIoTElTVCkKLS0jZGVmaW5lIFNGX1NUQVRFX0xJU1RfQkVGT1JFX1BBUkFNUyBT Rl9TRVRfU1RBVEVfQkVGT1JFX1BBUkFNUyhMSVNUKQotLSNkZWZpbmUgU0ZfU1RBVEVfTElTVF9J Tk5FUl9MSVNUX0JFRk9SRSBTRl9TRVRfU1RBVEVfSU5ORVJfTElTVF9CRUZPUkUoTElTVCkKLSsj ZGVmaW5lIFNGUEFSU0VfU1RBVEVfRElDVF9BRlRFUiBTRlBBUlNFX1NFVF9TVEFURV9BRlRFUihE SUNUKQotKyNkZWZpbmUgU0ZQQVJTRV9TVEFURV9ESUNUX0JFRk9SRV9QQVJBTVMgU0ZQQVJTRV9T RVRfU1RBVEVfQkVGT1JFX1BBUkFNUyhESUNUKQotKyNkZWZpbmUgU0ZQQVJTRV9TVEFURV9ESUNU X0lOTkVSX0xJU1RfQkVGT1JFICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0r ICBTRlBBUlNFX1NFVF9TVEFURV9JTk5FUl9MSVNUX0JFRk9SRShESUNUKQotIAotLSNkZWZpbmUg U0ZfU1RBVEVfSVRFTV9BRlRFUiBTRl9TRVRfU1RBVEVfQUZURVIoSVRFTSkKLS0jZGVmaW5lIFNG X1NUQVRFX0lURU1fQkVGT1JFX1BBUkFNUyBTRl9TRVRfU1RBVEVfQkVGT1JFX1BBUkFNUyhJVEVN KQotLSNkZWZpbmUgU0ZfU1RBVEVfSVRFTV9JTk5FUl9MSVNUX0JFRk9SRSBTRl9TRVRfU1RBVEVf SU5ORVJfTElTVF9CRUZPUkUoSVRFTSkKLSsjZGVmaW5lIFNGUEFSU0VfU1RBVEVfTElTVF9BRlRF UiBTRlBBUlNFX1NFVF9TVEFURV9BRlRFUihMSVNUKQotKyNkZWZpbmUgU0ZQQVJTRV9TVEFURV9M SVNUX0JFRk9SRV9QQVJBTVMgU0ZQQVJTRV9TRVRfU1RBVEVfQkVGT1JFX1BBUkFNUyhMSVNUKQot KyNkZWZpbmUgU0ZQQVJTRV9TVEFURV9MSVNUX0lOTkVSX0xJU1RfQkVGT1JFICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCi0rICBTRlBBUlNFX1NFVF9TVEFURV9JTk5FUl9MSVNU X0JFRk9SRShMSVNUKQotIAotLSNkZWZpbmUgU0ZfU1RBVEVfSU5JVElBTCAweDAwdQotKyNkZWZp bmUgU0ZQQVJTRV9TVEFURV9JVEVNX0FGVEVSIFNGUEFSU0VfU0VUX1NUQVRFX0FGVEVSKElURU0p Ci0rI2RlZmluZSBTRlBBUlNFX1NUQVRFX0lURU1fQkVGT1JFX1BBUkFNUyBTRlBBUlNFX1NFVF9T VEFURV9CRUZPUkVfUEFSQU1TKElURU0pCi0rI2RlZmluZSBTRlBBUlNFX1NUQVRFX0lURU1fSU5O RVJfTElTVF9CRUZPUkUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgIFNG UEFSU0VfU0VUX1NUQVRFX0lOTkVSX0xJU1RfQkVGT1JFKElURU0pCi0rCi0rI2RlZmluZSBTRlBB UlNFX1NUQVRFX0lOSVRJQUwgMHgwMHUKLSAKLSAjZGVmaW5lIERJR0lUX0NBU0VTICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAg Y2FzZSAnMCc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBcCi1AQCAtMTM1LDYgKzE0Myw3MCBAQAotICAgVUNBTFBIQV9D QVNFUzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcCi0gICBMQ0FMUEhBX0NBU0VTCi0gCi0rI2RlZmluZSBUT0tFTl9DQVNFUyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKLSsgIGNhc2UgJyEnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgY2FzZSAnIyc6ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0r ICBjYXNlICckJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKLSsgIGNhc2UgJyUnOiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgY2Fz ZSAnJic6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcCi0rICBjYXNlICdcJyc6ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgIGNhc2UgJyon OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAotKyAgY2FzZSAnKyc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICBjYXNlICctJzogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKLSsgIGNhc2UgJy4nOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgY2FzZSAnLyc6ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcCi0rICBESUdJVF9DQVNFUzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgIGNhc2UgJzonOiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAot KyAgVUNBTFBIQV9DQVNFUzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCi0rICBjYXNlICdeJzogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgIGNh c2UgJ18nOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXAotKyAgY2FzZSAnYCc6ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICBMQ0FMUEhB X0NBU0VTOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwKLSsgIGNhc2UgJ3wnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgY2FzZSAnficKLSsK LSsjZGVmaW5lIExDSEVYQUxQSEFfQ0FTRVMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgY2FzZSAnYSc6ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICBj YXNlICdiJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKLSsgIGNhc2UgJ2MnOiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgY2FzZSAn ZCc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcCi0rICBjYXNlICdlJzogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgIGNhc2UgJ2YnCi0r Ci0rI2RlZmluZSBYMDBfMUZfQ0FTRVMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgIGNhc2UgMHgwMDogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAg Y2FzZSAweDAxOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBcCi0rICBjYXNlIDB4MDI6ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgIGNhc2Ug MHgwMzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAotKyAgY2FzZSAweDA0OiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICBjYXNlIDB4MDU6 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwKLSsgIGNhc2UgMHgwNjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgY2FzZSAweDA3OiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcCi0rICBjYXNlIDB4MDg6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgIGNhc2UgMHgwOTogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAotKyAgY2FzZSAweDBhOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICBjYXNlIDB4MGI6ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsg IGNhc2UgMHgwYzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXAotKyAgY2FzZSAweDBkOiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICBjYXNl IDB4MGU6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwKLSsgIGNhc2UgMHgwZjogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgY2FzZSAweDEw OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcCi0rICBjYXNlIDB4MTE6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgIGNhc2UgMHgxMjogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAotKyAgY2FzZSAweDEzOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICBjYXNlIDB4MTQ6ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKLSsgIGNhc2UgMHgxNTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgY2FzZSAweDE2OiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0r ICBjYXNlIDB4MTc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKLSsgIGNhc2UgMHgxODogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgY2Fz ZSAweDE5OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcCi0rICBjYXNlIDB4MWE6ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgIGNhc2UgMHgx YjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAotKyAgY2FzZSAweDFjOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICBjYXNlIDB4MWQ6ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKLSsgIGNhc2UgMHgxZTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgY2FzZSAweDFmCi0rCi0gI2Rl ZmluZSBYMjBfMjFfQ0FTRVMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKLSAgIGNhc2UgJyAnOiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgY2FzZSAn IScKLUBAIC0xNzUsNiArMjQ3LDEzNyBAQAotICAgY2FzZSAnfSc6ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICBj YXNlICd+JwotIAotKyNkZWZpbmUgWDdGX0ZGX0NBU0VTICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICBjYXNlIDB4N2Y6ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKLSsgIGNhc2UgMHg4MDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgY2FzZSAweDgxOiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc Ci0rICBjYXNlIDB4ODI6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgIGNhc2UgMHg4MzogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAg Y2FzZSAweDg0OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBcCi0rICBjYXNlIDB4ODU6ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgIGNhc2Ug MHg4NjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAotKyAgY2FzZSAweDg3OiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICBjYXNlIDB4ODg6 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwKLSsgIGNhc2UgMHg4OTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgY2FzZSAweDhhOiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcCi0rICBjYXNlIDB4OGI6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgIGNhc2UgMHg4YzogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAotKyAgY2FzZSAweDhkOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICBjYXNlIDB4OGU6ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsg IGNhc2UgMHg4ZjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXAotKyAgY2FzZSAweDkwOiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICBjYXNl IDB4OTE6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwKLSsgIGNhc2UgMHg5MjogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgY2FzZSAweDkz OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcCi0rICBjYXNlIDB4OTQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgIGNhc2UgMHg5NTogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAotKyAgY2FzZSAweDk2OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICBjYXNlIDB4OTc6ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKLSsgIGNhc2UgMHg5ODogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgY2FzZSAweDk5OiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0r ICBjYXNlIDB4OWE6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKLSsgIGNhc2UgMHg5YjogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgY2Fz ZSAweDljOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcCi0rICBjYXNlIDB4OWQ6ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgIGNhc2UgMHg5 ZTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAotKyAgY2FzZSAweDlmOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICBjYXNlIDB4YTA6ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKLSsgIGNhc2UgMHhhMTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgY2FzZSAweGEyOiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcCi0rICBjYXNlIDB4YTM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgIGNhc2UgMHhhNDogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAot KyAgY2FzZSAweGE1OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCi0rICBjYXNlIDB4YTY6ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgIGNh c2UgMHhhNzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXAotKyAgY2FzZSAweGE4OiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICBjYXNlIDB4 YTk6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwKLSsgIGNhc2UgMHhhYTogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgY2FzZSAweGFiOiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcCi0rICBjYXNlIDB4YWM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgIGNhc2UgMHhhZDogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXAotKyAgY2FzZSAweGFlOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICBjYXNlIDB4YWY6ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK LSsgIGNhc2UgMHhiMDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgY2FzZSAweGIxOiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICBj YXNlIDB4YjI6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKLSsgIGNhc2UgMHhiMzogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgY2FzZSAw eGI0OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcCi0rICBjYXNlIDB4YjU6ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgIGNhc2UgMHhiNjog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAotKyAgY2FzZSAweGI3OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICBjYXNlIDB4Yjg6ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKLSsgIGNhc2UgMHhiOTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgY2FzZSAweGJhOiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc Ci0rICBjYXNlIDB4YmI6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgIGNhc2UgMHhiYzogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAg Y2FzZSAweGJkOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBcCi0rICBjYXNlIDB4YmU6ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgIGNhc2Ug MHhiZjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAotKyAgY2FzZSAweGMwOiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICBjYXNlIDB4YzE6 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwKLSsgIGNhc2UgMHhjMjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgY2FzZSAweGMzOiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcCi0rICBjYXNlIDB4YzQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgIGNhc2UgMHhjNTogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAotKyAgY2FzZSAweGM2OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICBjYXNlIDB4Yzc6ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsg IGNhc2UgMHhjODogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXAotKyAgY2FzZSAweGM5OiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICBjYXNl IDB4Y2E6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwKLSsgIGNhc2UgMHhjYjogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgY2FzZSAweGNj OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcCi0rICBjYXNlIDB4Y2Q6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgIGNhc2UgMHhjZTogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAotKyAgY2FzZSAweGNmOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICBjYXNlIDB4ZDA6ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKLSsgIGNhc2UgMHhkMTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgY2FzZSAweGQyOiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0r ICBjYXNlIDB4ZDM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKLSsgIGNhc2UgMHhkNDogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgY2Fz ZSAweGQ1OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcCi0rICBjYXNlIDB4ZDY6ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgIGNhc2UgMHhk NzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAotKyAgY2FzZSAweGQ4OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICBjYXNlIDB4ZDk6ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKLSsgIGNhc2UgMHhkYTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgY2FzZSAweGRiOiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcCi0rICBjYXNlIDB4ZGM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgIGNhc2UgMHhkZDogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAot KyAgY2FzZSAweGRlOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCi0rICBjYXNlIDB4ZGY6ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgIGNh c2UgMHhlMDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXAotKyAgY2FzZSAweGUxOiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICBjYXNlIDB4 ZTI6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwKLSsgIGNhc2UgMHhlMzogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgY2FzZSAweGU0OiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcCi0rICBjYXNlIDB4ZTU6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgIGNhc2UgMHhlNjogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXAotKyAgY2FzZSAweGU3OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICBjYXNlIDB4ZTg6ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK LSsgIGNhc2UgMHhlOTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgY2FzZSAweGVhOiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICBj YXNlIDB4ZWI6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKLSsgIGNhc2UgMHhlYzogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgY2FzZSAw eGVkOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcCi0rICBjYXNlIDB4ZWU6ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgIGNhc2UgMHhlZjog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAotKyAgY2FzZSAweGYwOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICBjYXNlIDB4ZjE6ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKLSsgIGNhc2UgMHhmMjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgY2FzZSAweGYzOiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc Ci0rICBjYXNlIDB4ZjQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgIGNhc2UgMHhmNTogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAg Y2FzZSAweGY2OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBcCi0rICBjYXNlIDB4Zjc6ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgIGNhc2Ug MHhmODogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAotKyAgY2FzZSAweGY5OiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICBjYXNlIDB4ZmE6 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwKLSsgIGNhc2UgMHhmYjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgY2FzZSAweGZjOiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcCi0rICBjYXNlIDB4ZmQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgIGNhc2UgMHhmZTogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAotKyAgY2FzZSAweGZmCi0rCi0gc3RhdGljIGludCBpc193cyh1aW50OF90IGMpIHsKLSAgIHN3 aXRjaCAoYykgewotICAgY2FzZSAnICc6Ci1AQCAtMTg1LDQwICszODgsMTA4IEBAIHN0YXRpYyBp bnQgaXNfd3ModWludDhfdCBjKSB7Ci0gICB9Ci0gfQotIAotLXN0YXRpYyBpbnQgcGFyc2VyX2Vv ZihzZl9wYXJzZXIgKnNmcCkgeyByZXR1cm4gc2ZwLT5wb3MgPT0gc2ZwLT5lbmQ7IH0KLSsjaWZk ZWYgX19BVlgyX18KLSsjICBpZmRlZiBfTVNDX1ZFUgotKyMgICAgaW5jbHVkZSA8aW50cmluLmg+ Ci0rCi0rc3RhdGljIGludCBjdHoodW5zaWduZWQgaW50IHYpIHsKLSsgIHVuc2lnbmVkIGxvbmcg bjsKLSsKLSsgIC8qIEFzc3VtZSB0aGF0IHYgaXMgbm90IDAuICovCi0rICBfQml0U2NhbkZvcndh cmQoJm4sIHYpOwotKwotKyAgcmV0dXJuIChpbnQpbjsKLSt9Ci0rIyAgZWxzZSAvKiAhX01TQ19W RVIgKi8KLSsjICAgIGRlZmluZSBjdHogX19idWlsdGluX2N0egotKyMgIGVuZGlmIC8qICFfTVND X1ZFUiAqLwotKyNlbmRpZiAgIC8qIF9fQVZYMl9fICovCi0rCi0rc3RhdGljIGludCBwYXJzZXJf ZW9mKHNmcGFyc2VfcGFyc2VyICpzZnApIHsgcmV0dXJuIHNmcC0+cG9zID09IHNmcC0+ZW5kOyB9 Ci0gCi0tc3RhdGljIHZvaWQgcGFyc2VyX2Rpc2NhcmRfb3dzKHNmX3BhcnNlciAqc2ZwKSB7Ci0r c3RhdGljIHZvaWQgcGFyc2VyX2Rpc2NhcmRfb3dzKHNmcGFyc2VfcGFyc2VyICpzZnApIHsKLSAg IGZvciAoOyAhcGFyc2VyX2VvZihzZnApICYmIGlzX3dzKCpzZnAtPnBvcyk7ICsrc2ZwLT5wb3Mp Ci0gICAgIDsKLSB9Ci0gCi0tc3RhdGljIHZvaWQgcGFyc2VyX2Rpc2NhcmRfc3Aoc2ZfcGFyc2Vy ICpzZnApIHsKLStzdGF0aWMgdm9pZCBwYXJzZXJfZGlzY2FyZF9zcChzZnBhcnNlX3BhcnNlciAq c2ZwKSB7Ci0gICBmb3IgKDsgIXBhcnNlcl9lb2Yoc2ZwKSAmJiAqc2ZwLT5wb3MgPT0gJyAnOyAr K3NmcC0+cG9zKQotICAgICA7Ci0gfQotIAotLXN0YXRpYyB2b2lkIHBhcnNlcl9zZXRfb3Bfc3Rh dGUoc2ZfcGFyc2VyICpzZnAsIHVpbnQzMl90IG9wKSB7Ci0tICBzZnAtPnN0YXRlICY9IH5TRl9T VEFURV9PUF9NQVNLOwotK3N0YXRpYyB2b2lkIHBhcnNlcl9zZXRfb3Bfc3RhdGUoc2ZwYXJzZV9w YXJzZXIgKnNmcCwgdWludDMyX3Qgb3ApIHsKLSsgIHNmcC0+c3RhdGUgJj0gflNGUEFSU0VfU1RB VEVfT1BfTUFTSzsKLSAgIHNmcC0+c3RhdGUgfD0gb3A7Ci0gfQotIAotLXN0YXRpYyB2b2lkIHBh cnNlcl91bnNldF9pbm5lcl9saXN0X3N0YXRlKHNmX3BhcnNlciAqc2ZwKSB7Ci0tICBzZnAtPnN0 YXRlICY9IH5TRl9TVEFURV9JTk5FUl9MSVNUOwotK3N0YXRpYyB2b2lkIHBhcnNlcl91bnNldF9p bm5lcl9saXN0X3N0YXRlKHNmcGFyc2VfcGFyc2VyICpzZnApIHsKLSsgIHNmcC0+c3RhdGUgJj0g flNGUEFSU0VfU1RBVEVfSU5ORVJfTElTVDsKLSB9Ci0gCi0tc3RhdGljIGludCBwYXJzZXJfa2V5 KHNmX3BhcnNlciAqc2ZwLCBzZl92ZWMgKmRlc3QpIHsKLSsjaWZkZWYgX19BVlgyX18KLStzdGF0 aWMgY29uc3QgdWludDhfdCAqZmluZF9jaGFyX2tleShjb25zdCB1aW50OF90ICpmaXJzdCwgY29u c3QgdWludDhfdCAqbGFzdCkgewotKyAgY29uc3QgX19tMjU2aSB1cyA9IF9tbTI1Nl9zZXQxX2Vw aTgoJ18nKTsKLSsgIGNvbnN0IF9fbTI1NmkgZHMgPSBfbW0yNTZfc2V0MV9lcGk4KCctJyk7Ci0r ICBjb25zdCBfX20yNTZpIGRvdCA9IF9tbTI1Nl9zZXQxX2VwaTgoJy4nKTsKLSsgIGNvbnN0IF9f bTI1NmkgYXN0ID0gX21tMjU2X3NldDFfZXBpOCgnKicpOwotKyAgY29uc3QgX19tMjU2aSByMGwg PSBfbW0yNTZfc2V0MV9lcGk4KCcwJyAtIDEpOwotKyAgY29uc3QgX19tMjU2aSByMHIgPSBfbW0y NTZfc2V0MV9lcGk4KCc5JyArIDEpOwotKyAgY29uc3QgX19tMjU2aSByMWwgPSBfbW0yNTZfc2V0 MV9lcGk4KCdhJyAtIDEpOwotKyAgY29uc3QgX19tMjU2aSByMXIgPSBfbW0yNTZfc2V0MV9lcGk4 KCd6JyArIDEpOwotKyAgX19tMjU2aSBzLCB4OwotKyAgdWludDMyX3QgbTsKLSsKLSsgIGZvciAo OyBmaXJzdCAhPSBsYXN0OyBmaXJzdCArPSAzMikgewotKyAgICBzID0gX21tMjU2X2xvYWR1X3Np MjU2KCh2b2lkICopZmlyc3QpOwotKwotKyAgICB4ID0gX21tMjU2X2NtcGVxX2VwaTgocywgdXMp OwotKyAgICB4ID0gX21tMjU2X29yX3NpMjU2KF9tbTI1Nl9jbXBlcV9lcGk4KHMsIGRzKSwgeCk7 Ci0rICAgIHggPSBfbW0yNTZfb3Jfc2kyNTYoX21tMjU2X2NtcGVxX2VwaTgocywgZG90KSwgeCk7 Ci0rICAgIHggPSBfbW0yNTZfb3Jfc2kyNTYoX21tMjU2X2NtcGVxX2VwaTgocywgYXN0KSwgeCk7 Ci0rICAgIHggPSBfbW0yNTZfb3Jfc2kyNTYoCi0rICAgICAgX21tMjU2X2FuZF9zaTI1NihfbW0y NTZfY21wZ3RfZXBpOChzLCByMGwpLCBfbW0yNTZfY21wZ3RfZXBpOChyMHIsIHMpKSwKLSsgICAg ICB4KTsKLSsgICAgeCA9IF9tbTI1Nl9vcl9zaTI1NigKLSsgICAgICBfbW0yNTZfYW5kX3NpMjU2 KF9tbTI1Nl9jbXBndF9lcGk4KHMsIHIxbCksIF9tbTI1Nl9jbXBndF9lcGk4KHIxciwgcykpLAot KyAgICAgIHgpOwotKwotKyAgICBtID0gfih1aW50MzJfdClfbW0yNTZfbW92ZW1hc2tfZXBpOCh4 KTsKLSsgICAgaWYgKG0pIHsKLSsgICAgICByZXR1cm4gZmlyc3QgKyBjdHoobSk7Ci0rICAgIH0K LSsgIH0KLSsKLSsgIHJldHVybiBsYXN0OwotK30KLSsjZW5kaWYgLyogX19BVlgyX18gKi8KLSsK LStzdGF0aWMgaW50IHBhcnNlcl9rZXkoc2ZwYXJzZV9wYXJzZXIgKnNmcCwgc2ZwYXJzZV92ZWMg KmRlc3QpIHsKLSAgIGNvbnN0IHVpbnQ4X3QgKmJhc2U7Ci0rI2lmZGVmIF9fQVZYMl9fCi0rICBj b25zdCB1aW50OF90ICpsYXN0OwotKyNlbmRpZiAvKiBfX0FWWDJfXyAqLwotIAotICAgc3dpdGNo ICgqc2ZwLT5wb3MpIHsKLSAgIGNhc2UgJyonOgotICAgTENBTFBIQV9DQVNFUzoKLSAgICAgYnJl YWs7Ci0gICBkZWZhdWx0OgotLSAgICByZXR1cm4gU0ZfRVJSX1BBUlNFX0VSUk9SOwotKyAgICBy ZXR1cm4gU0ZQQVJTRV9FUlJfUEFSU0U7Ci0gICB9Ci0gCi0gICBiYXNlID0gc2ZwLT5wb3MrKzsK LSAKLSsjaWZkZWYgX19BVlgyX18KLSsgIGlmIChzZnAtPmVuZCAtIHNmcC0+cG9zID49IDMyKSB7 Ci0rICAgIGxhc3QgPSBzZnAtPnBvcyArICgoc2ZwLT5lbmQgLSBzZnAtPnBvcykgJiB+MHgxZnUp OwotKwotKyAgICBzZnAtPnBvcyA9IGZpbmRfY2hhcl9rZXkoc2ZwLT5wb3MsIGxhc3QpOwotKyAg ICBpZiAoc2ZwLT5wb3MgIT0gbGFzdCkgewotKyAgICAgIGdvdG8gZmluOwotKyAgICB9Ci0rICB9 Ci0rI2VuZGlmIC8qIF9fQVZYMl9fICovCi0rCi0gICBmb3IgKDsgIXBhcnNlcl9lb2Yoc2ZwKTsg KytzZnAtPnBvcykgewotICAgICBzd2l0Y2ggKCpzZnAtPnBvcykgewotICAgICBjYXNlICdfJzoK LUBAIC0yMzMsNiArNTA0LDkgQEAgc3RhdGljIGludCBwYXJzZXJfa2V5KHNmX3BhcnNlciAqc2Zw LCBzZl92ZWMgKmRlc3QpIHsKLSAgICAgYnJlYWs7Ci0gICB9Ci0gCi0rI2lmZGVmIF9fQVZYMl9f Ci0rZmluOgotKyNlbmRpZiAvKiBfX0FWWDJfXyAqLwotICAgaWYgKGRlc3QpIHsKLSAgICAgZGVz dC0+YmFzZSA9ICh1aW50OF90ICopYmFzZTsKLSAgICAgZGVzdC0+bGVuID0gKHNpemVfdCkoc2Zw LT5wb3MgLSBkZXN0LT5iYXNlKTsKLUBAIC0yNDEsNyArNTE1LDcgQEAgc3RhdGljIGludCBwYXJz ZXJfa2V5KHNmX3BhcnNlciAqc2ZwLCBzZl92ZWMgKmRlc3QpIHsKLSAgIHJldHVybiAwOwotIH0K LSAKLS1zdGF0aWMgaW50IHBhcnNlcl9udW1iZXIoc2ZfcGFyc2VyICpzZnAsIHNmX3ZhbHVlICpk ZXN0KSB7Ci0rc3RhdGljIGludCBwYXJzZXJfbnVtYmVyKHNmcGFyc2VfcGFyc2VyICpzZnAsIHNm cGFyc2VfdmFsdWUgKmRlc3QpIHsKLSAgIGludCBzaWduID0gMTsKLSAgIGludDY0X3QgdmFsdWUg PSAwOwotICAgc2l6ZV90IGxlbiA9IDA7Ci1AQCAtMjUwLDcgKzUyNCw3IEBAIHN0YXRpYyBpbnQg cGFyc2VyX251bWJlcihzZl9wYXJzZXIgKnNmcCwgc2ZfdmFsdWUgKmRlc3QpIHsKLSAgIGlmICgq c2ZwLT5wb3MgPT0gJy0nKSB7Ci0gICAgICsrc2ZwLT5wb3M7Ci0gICAgIGlmIChwYXJzZXJfZW9m KHNmcCkpIHsKLS0gICAgICByZXR1cm4gU0ZfRVJSX1BBUlNFX0VSUk9SOwotKyAgICAgIHJldHVy biBTRlBBUlNFX0VSUl9QQVJTRTsKLSAgICAgfQotIAotICAgICBzaWduID0gLTE7Ci1AQCAtMjYy LDcgKzUzNiw3IEBAIHN0YXRpYyBpbnQgcGFyc2VyX251bWJlcihzZl9wYXJzZXIgKnNmcCwgc2Zf dmFsdWUgKmRlc3QpIHsKLSAgICAgc3dpdGNoICgqc2ZwLT5wb3MpIHsKLSAgICAgRElHSVRfQ0FT RVM6Ci0gICAgICAgaWYgKCsrbGVuID4gMTUpIHsKLS0gICAgICAgIHJldHVybiBTRl9FUlJfUEFS U0VfRVJST1I7Ci0rICAgICAgICByZXR1cm4gU0ZQQVJTRV9FUlJfUEFSU0U7Ci0gICAgICAgfQot IAotICAgICAgIHZhbHVlICo9IDEwOwotQEAgLTI3NSwxMyArNTQ5LDEzIEBAIHN0YXRpYyBpbnQg cGFyc2VyX251bWJlcihzZl9wYXJzZXIgKnNmcCwgc2ZfdmFsdWUgKmRlc3QpIHsKLSAgIH0KLSAK LSAgIGlmIChsZW4gPT0gMCkgewotLSAgICByZXR1cm4gU0ZfRVJSX1BBUlNFX0VSUk9SOwotKyAg ICByZXR1cm4gU0ZQQVJTRV9FUlJfUEFSU0U7Ci0gICB9Ci0gCi0gICBpZiAocGFyc2VyX2VvZihz ZnApIHx8ICpzZnAtPnBvcyAhPSAnLicpIHsKLSAgICAgaWYgKGRlc3QpIHsKLS0gICAgICBkZXN0 LT50eXBlID0gU0ZfVFlQRV9JTlRFR0VSOwotLSAgICAgIGRlc3QtPmZsYWdzID0gU0ZfVkFMVUVf RkxBR19OT05FOwotKyAgICAgIGRlc3QtPnR5cGUgPSBTRlBBUlNFX1RZUEVfSU5URUdFUjsKLSsg ICAgICBkZXN0LT5mbGFncyA9IFNGUEFSU0VfVkFMVUVfRkxBR19OT05FOwotICAgICAgIGRlc3Qt PmludGVnZXIgPSB2YWx1ZSAqIHNpZ247Ci0gICAgIH0KLSAKLUBAIC0yOTEsNyArNTY1LDcgQEAg c3RhdGljIGludCBwYXJzZXJfbnVtYmVyKHNmX3BhcnNlciAqc2ZwLCBzZl92YWx1ZSAqZGVzdCkg ewotICAgLyogZGVjaW1hbCAqLwotIAotICAgaWYgKGxlbiA+IDEyKSB7Ci0tICAgIHJldHVybiBT Rl9FUlJfUEFSU0VfRVJST1I7Ci0rICAgIHJldHVybiBTRlBBUlNFX0VSUl9QQVJTRTsKLSAgIH0K LSAKLSAgIGZwb3MgPSBsZW47Ci1AQCAtMzAyLDcgKzU3Niw3IEBAIHN0YXRpYyBpbnQgcGFyc2Vy X251bWJlcihzZl9wYXJzZXIgKnNmcCwgc2ZfdmFsdWUgKmRlc3QpIHsKLSAgICAgc3dpdGNoICgq c2ZwLT5wb3MpIHsKLSAgICAgRElHSVRfQ0FTRVM6Ci0gICAgICAgaWYgKCsrbGVuID4gMTUpIHsK LS0gICAgICAgIHJldHVybiBTRl9FUlJfUEFSU0VfRVJST1I7Ci0rICAgICAgICByZXR1cm4gU0ZQ QVJTRV9FUlJfUEFSU0U7Ci0gICAgICAgfQotIAotICAgICAgIHZhbHVlICo9IDEwOwotQEAgLTMx NSwxMiArNTg5LDEyIEBAIHN0YXRpYyBpbnQgcGFyc2VyX251bWJlcihzZl9wYXJzZXIgKnNmcCwg c2ZfdmFsdWUgKmRlc3QpIHsKLSAgIH0KLSAKLSAgIGlmIChmcG9zID09IGxlbiB8fCBsZW4gLSBm cG9zID4gMykgewotLSAgICByZXR1cm4gU0ZfRVJSX1BBUlNFX0VSUk9SOwotKyAgICByZXR1cm4g U0ZQQVJTRV9FUlJfUEFSU0U7Ci0gICB9Ci0gCi0gICBpZiAoZGVzdCkgewotLSAgICBkZXN0LT50 eXBlID0gU0ZfVFlQRV9ERUNJTUFMOwotLSAgICBkZXN0LT5mbGFncyA9IFNGX1ZBTFVFX0ZMQUdf Tk9ORTsKLSsgICAgZGVzdC0+dHlwZSA9IFNGUEFSU0VfVFlQRV9ERUNJTUFMOwotKyAgICBkZXN0 LT5mbGFncyA9IFNGUEFSU0VfVkFMVUVfRkxBR19OT05FOwotICAgICBkZXN0LT5kZWNpbWFsLm51 bWVyID0gdmFsdWUgKiBzaWduOwotIAotICAgICBzd2l0Y2ggKGxlbiAtIGZwb3MpIHsKLUBAIC0z NDIsOSArNjE2LDkgQEAgc3RhdGljIGludCBwYXJzZXJfbnVtYmVyKHNmX3BhcnNlciAqc2ZwLCBz Zl92YWx1ZSAqZGVzdCkgewotICAgcmV0dXJuIDA7Ci0gfQotIAotLXN0YXRpYyBpbnQgcGFyc2Vy X2RhdGUoc2ZfcGFyc2VyICpzZnAsIHNmX3ZhbHVlICpkZXN0KSB7Ci0rc3RhdGljIGludCBwYXJz ZXJfZGF0ZShzZnBhcnNlX3BhcnNlciAqc2ZwLCBzZnBhcnNlX3ZhbHVlICpkZXN0KSB7Ci0gICBp bnQgcnY7Ci0tICBzZl92YWx1ZSB2YWw7Ci0rICBzZnBhcnNlX3ZhbHVlIHZhbDsKLSAKLSAgIC8q IFRoZSBmaXJzdCBieXRlIGhhcyBhbHJlYWR5IGJlZW4gdmFsaWRhdGVkIGJ5IHRoZSBjYWxsZXIu ICovCi0gICBhc3NlcnQoJ0AnID09ICpzZnAtPnBvcyk7Ci1AQCAtMzUyLDcgKzYyNiw3IEBAIHN0 YXRpYyBpbnQgcGFyc2VyX2RhdGUoc2ZfcGFyc2VyICpzZnAsIHNmX3ZhbHVlICpkZXN0KSB7Ci0g ICArK3NmcC0+cG9zOwotIAotICAgaWYgKHBhcnNlcl9lb2Yoc2ZwKSkgewotLSAgICByZXR1cm4g U0ZfRVJSX1BBUlNFX0VSUk9SOwotKyAgICByZXR1cm4gU0ZQQVJTRV9FUlJfUEFSU0U7Ci0gICB9 Ci0gCi0gICBydiA9IHBhcnNlcl9udW1iZXIoc2ZwLCAmdmFsKTsKLUBAIC0zNjAsMjcgKzYzNCw5 MyBAQCBzdGF0aWMgaW50IHBhcnNlcl9kYXRlKHNmX3BhcnNlciAqc2ZwLCBzZl92YWx1ZSAqZGVz dCkgewotICAgICByZXR1cm4gcnY7Ci0gICB9Ci0gCi0tICBpZiAodmFsLnR5cGUgIT0gU0ZfVFlQ RV9JTlRFR0VSKSB7Ci0tICAgIHJldHVybiBTRl9FUlJfUEFSU0VfRVJST1I7Ci0rICBpZiAodmFs LnR5cGUgIT0gU0ZQQVJTRV9UWVBFX0lOVEVHRVIpIHsKLSsgICAgcmV0dXJuIFNGUEFSU0VfRVJS X1BBUlNFOwotICAgfQotIAotICAgaWYgKGRlc3QpIHsKLSAgICAgKmRlc3QgPSB2YWw7Ci0tICAg IGRlc3QtPnR5cGUgPSBTRl9UWVBFX0RBVEU7Ci0rICAgIGRlc3QtPnR5cGUgPSBTRlBBUlNFX1RZ UEVfREFURTsKLSAgIH0KLSAKLSAgIHJldHVybiAwOwotIH0KLSAKLS1zdGF0aWMgaW50IHBhcnNl cl9zdHJpbmcoc2ZfcGFyc2VyICpzZnAsIHNmX3ZhbHVlICpkZXN0KSB7Ci0rI2lmZGVmIF9fQVZY Ml9fCi0rc3RhdGljIGNvbnN0IHVpbnQ4X3QgKmZpbmRfY2hhcl9zdHJpbmcoY29uc3QgdWludDhf dCAqZmlyc3QsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg dWludDhfdCAqbGFzdCkgewotKyAgY29uc3QgX19tMjU2aSBicyA9IF9tbTI1Nl9zZXQxX2VwaTgo J1xcJyk7Ci0rICBjb25zdCBfX20yNTZpIGRxID0gX21tMjU2X3NldDFfZXBpOCgnIicpOwotKyAg Y29uc3QgX19tMjU2aSBkZWwgPSBfbW0yNTZfc2V0MV9lcGk4KDB4N2YpOwotKyAgY29uc3QgX19t MjU2aSBzcCA9IF9tbTI1Nl9zZXQxX2VwaTgoJyAnKTsKLSsgIF9fbTI1NmkgcywgeDsKLSsgIHVp bnQzMl90IG07Ci0rCi0rICBmb3IgKDsgZmlyc3QgIT0gbGFzdDsgZmlyc3QgKz0gMzIpIHsKLSsg ICAgcyA9IF9tbTI1Nl9sb2FkdV9zaTI1Nigodm9pZCAqKWZpcnN0KTsKLSsKLSsgICAgeCA9IF9t bTI1Nl9jbXBndF9lcGk4KHNwLCBzKTsKLSsgICAgeCA9IF9tbTI1Nl9vcl9zaTI1NihfbW0yNTZf Y21wZXFfZXBpOChzLCBicyksIHgpOwotKyAgICB4ID0gX21tMjU2X29yX3NpMjU2KF9tbTI1Nl9j bXBlcV9lcGk4KHMsIGRxKSwgeCk7Ci0rICAgIHggPSBfbW0yNTZfb3Jfc2kyNTYoX21tMjU2X2Nt cGVxX2VwaTgocywgZGVsKSwgeCk7Ci0rCi0rICAgIG0gPSAodWludDMyX3QpX21tMjU2X21vdmVt YXNrX2VwaTgoeCk7Ci0rICAgIGlmIChtKSB7Ci0rICAgICAgcmV0dXJuIGZpcnN0ICsgY3R6KG0p OwotKyAgICB9Ci0rICB9Ci0rCi0rICByZXR1cm4gbGFzdDsKLSt9Ci0rI2VuZGlmIC8qIF9fQVZY Ml9fICovCi0rCi0rc3RhdGljIGludCBwYXJzZXJfc3RyaW5nKHNmcGFyc2VfcGFyc2VyICpzZnAs IHNmcGFyc2VfdmFsdWUgKmRlc3QpIHsKLSAgIGNvbnN0IHVpbnQ4X3QgKmJhc2U7Ci0tICB1aW50 MzJfdCBmbGFncyA9IFNGX1ZBTFVFX0ZMQUdfTk9ORTsKLSsjaWZkZWYgX19BVlgyX18KLSsgIGNv bnN0IHVpbnQ4X3QgKmxhc3Q7Ci0rI2VuZGlmIC8qIF9fQVZYMl9fICovCi0rICB1aW50MzJfdCBm bGFncyA9IFNGUEFSU0VfVkFMVUVfRkxBR19OT05FOwotIAotICAgLyogVGhlIGZpcnN0IGJ5dGUg aGFzIGFscmVhZHkgYmVlbiB2YWxpZGF0ZWQgYnkgdGhlIGNhbGxlci4gKi8KLSAgIGFzc2VydCgn IicgPT0gKnNmcC0+cG9zKTsKLSAKLSAgIGJhc2UgPSArK3NmcC0+cG9zOwotIAotKyNpZmRlZiBf X0FWWDJfXwotKyAgZm9yICg7IHNmcC0+ZW5kIC0gc2ZwLT5wb3MgPj0gMzI7ICsrc2ZwLT5wb3Mp IHsKLSsgICAgbGFzdCA9IHNmcC0+cG9zICsgKChzZnAtPmVuZCAtIHNmcC0+cG9zKSAmIH4weDFm dSk7Ci0rCi0rICAgIHNmcC0+cG9zID0gZmluZF9jaGFyX3N0cmluZyhzZnAtPnBvcywgbGFzdCk7 Ci0rICAgIGlmIChzZnAtPnBvcyA9PSBsYXN0KSB7Ci0rICAgICAgYnJlYWs7Ci0rICAgIH0KLSsK LSsgICAgc3dpdGNoICgqc2ZwLT5wb3MpIHsKLSsgICAgY2FzZSAnXFwnOgotKyAgICAgICsrc2Zw LT5wb3M7Ci0rICAgICAgaWYgKHBhcnNlcl9lb2Yoc2ZwKSkgewotKyAgICAgICAgcmV0dXJuIFNG UEFSU0VfRVJSX1BBUlNFOwotKyAgICAgIH0KLSsKLSsgICAgICBzd2l0Y2ggKCpzZnAtPnBvcykg ewotKyAgICAgIGNhc2UgJyInOgotKyAgICAgIGNhc2UgJ1xcJzoKLSsgICAgICAgIGZsYWdzID0g U0ZQQVJTRV9WQUxVRV9GTEFHX0VTQ0FQRURfU1RSSU5HOwotKwotKyAgICAgICAgYnJlYWs7Ci0r ICAgICAgZGVmYXVsdDoKLSsgICAgICAgIHJldHVybiBTRlBBUlNFX0VSUl9QQVJTRTsKLSsgICAg ICB9Ci0rCi0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgJyInOgotKyAgICAgIGdvdG8gZmluOwot KyAgICBkZWZhdWx0OgotKyAgICAgIHJldHVybiBTRlBBUlNFX0VSUl9QQVJTRTsKLSsgICAgfQot KyAgfQotKyNlbmRpZiAvKiBfX0FWWDJfXyAqLwotKwotICAgZm9yICg7ICFwYXJzZXJfZW9mKHNm cCk7ICsrc2ZwLT5wb3MpIHsKLSAgICAgc3dpdGNoICgqc2ZwLT5wb3MpIHsKLSAgICAgWDIwXzIx X0NBU0VTOgotQEAgLTM5MCw3NSArNzMwLDEzMSBAQCBzdGF0aWMgaW50IHBhcnNlcl9zdHJpbmco c2ZfcGFyc2VyICpzZnAsIHNmX3ZhbHVlICpkZXN0KSB7Ci0gICAgIGNhc2UgJ1xcJzoKLSAgICAg ICArK3NmcC0+cG9zOwotICAgICAgIGlmIChwYXJzZXJfZW9mKHNmcCkpIHsKLS0gICAgICAgIHJl dHVybiBTRl9FUlJfUEFSU0VfRVJST1I7Ci0rICAgICAgICByZXR1cm4gU0ZQQVJTRV9FUlJfUEFS U0U7Ci0gICAgICAgfQotIAotICAgICAgIHN3aXRjaCAoKnNmcC0+cG9zKSB7Ci0gICAgICAgY2Fz ZSAnIic6Ci0gICAgICAgY2FzZSAnXFwnOgotLSAgICAgICAgZmxhZ3MgPSBTRl9WQUxVRV9GTEFH X0VTQ0FQRURfU1RSSU5HOwotKyAgICAgICAgZmxhZ3MgPSBTRlBBUlNFX1ZBTFVFX0ZMQUdfRVND QVBFRF9TVFJJTkc7Ci0gCi0gICAgICAgICBicmVhazsKLSAgICAgICBkZWZhdWx0OgotLSAgICAg ICAgcmV0dXJuIFNGX0VSUl9QQVJTRV9FUlJPUjsKLSsgICAgICAgIHJldHVybiBTRlBBUlNFX0VS Ul9QQVJTRTsKLSAgICAgICB9Ci0gCi0gICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgJyInOgotLSAg ICAgIGlmIChkZXN0KSB7Ci0tICAgICAgICBkZXN0LT50eXBlID0gU0ZfVFlQRV9TVFJJTkc7Ci0t ICAgICAgICBkZXN0LT5mbGFncyA9IGZsYWdzOwotLSAgICAgICAgZGVzdC0+dmVjLmxlbiA9IChz aXplX3QpKHNmcC0+cG9zIC0gYmFzZSk7Ci0tICAgICAgICBkZXN0LT52ZWMuYmFzZSA9IGRlc3Qt PnZlYy5sZW4gPT0gMCA/IE5VTEwgOiAodWludDhfdCAqKWJhc2U7Ci0tICAgICAgfQotKyAgICAg IGdvdG8gZmluOwotKyAgICBkZWZhdWx0OgotKyAgICAgIHJldHVybiBTRlBBUlNFX0VSUl9QQVJT RTsKLSsgICAgfQotKyAgfQotIAotLSAgICAgICsrc2ZwLT5wb3M7Ci0rICByZXR1cm4gU0ZQQVJT RV9FUlJfUEFSU0U7Ci0gCi0tICAgICAgcmV0dXJuIDA7Ci0tICAgIGRlZmF1bHQ6Ci0tICAgICAg cmV0dXJuIFNGX0VSUl9QQVJTRV9FUlJPUjsKLStmaW46Ci0rICBpZiAoZGVzdCkgewotKyAgICBk ZXN0LT50eXBlID0gU0ZQQVJTRV9UWVBFX1NUUklORzsKLSsgICAgZGVzdC0+ZmxhZ3MgPSBmbGFn czsKLSsgICAgZGVzdC0+dmVjLmxlbiA9IChzaXplX3QpKHNmcC0+cG9zIC0gYmFzZSk7Ci0rICAg IGRlc3QtPnZlYy5iYXNlID0gZGVzdC0+dmVjLmxlbiA9PSAwID8gTlVMTCA6ICh1aW50OF90ICop YmFzZTsKLSsgIH0KLSsKLSsgICsrc2ZwLT5wb3M7Ci0rCi0rICByZXR1cm4gMDsKLSt9Ci0rCi0r I2lmZGVmIF9fQVZYMl9fCi0rc3RhdGljIGNvbnN0IHVpbnQ4X3QgKmZpbmRfY2hhcl90b2tlbihj b25zdCB1aW50OF90ICpmaXJzdCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnN0IHVpbnQ4X3QgKmxhc3QpIHsKLSsgIC8qIHIwOiAhLi46LCBleGNsdWRpbmcgIigp LAotKyAgICAgcjE6IEEuLloKLSsgICAgIHIyOiBeLi5+LCBleGNsdWRpbmcge30gKi8KLSsgIGNv bnN0IF9fbTI1NmkgcjBsID0gX21tMjU2X3NldDFfZXBpOCgnIScgLSAxKTsKLSsgIGNvbnN0IF9f bTI1NmkgcjByID0gX21tMjU2X3NldDFfZXBpOCgnOicgKyAxKTsKLSsgIGNvbnN0IF9fbTI1Nmkg ZHEgPSBfbW0yNTZfc2V0MV9lcGk4KCciJyk7Ci0rICBjb25zdCBfX20yNTZpIHBybCA9IF9tbTI1 Nl9zZXQxX2VwaTgoJygnKTsKLSsgIGNvbnN0IF9fbTI1NmkgcHJyID0gX21tMjU2X3NldDFfZXBp OCgnKScpOwotKyAgY29uc3QgX19tMjU2aSBjb21tYSA9IF9tbTI1Nl9zZXQxX2VwaTgoJywnKTsK LSsgIGNvbnN0IF9fbTI1NmkgcjFsID0gX21tMjU2X3NldDFfZXBpOCgnQScgLSAxKTsKLSsgIGNv bnN0IF9fbTI1NmkgcjFyID0gX21tMjU2X3NldDFfZXBpOCgnWicgKyAxKTsKLSsgIGNvbnN0IF9f bTI1NmkgcjJsID0gX21tMjU2X3NldDFfZXBpOCgnXicgLSAxKTsKLSsgIGNvbnN0IF9fbTI1Nmkg cjJyID0gX21tMjU2X3NldDFfZXBpOCgnficgKyAxKTsKLSsgIGNvbnN0IF9fbTI1NmkgY2JsID0g X21tMjU2X3NldDFfZXBpOCgneycpOwotKyAgY29uc3QgX19tMjU2aSBjYnIgPSBfbW0yNTZfc2V0 MV9lcGk4KCd9Jyk7Ci0rICBfX20yNTZpIHMsIHg7Ci0rICB1aW50MzJfdCBtOwotKwotKyAgZm9y ICg7IGZpcnN0ICE9IGxhc3Q7IGZpcnN0ICs9IDMyKSB7Ci0rICAgIHMgPSBfbW0yNTZfbG9hZHVf c2kyNTYoKHZvaWQgKilmaXJzdCk7Ci0rCi0rICAgIHggPSBfbW0yNTZfYW5kbm90X3NpMjU2KAot KyAgICAgIF9tbTI1Nl9jbXBlcV9lcGk4KHMsIGNvbW1hKSwKLSsgICAgICBfbW0yNTZfYW5kbm90 X3NpMjU2KAotKyAgICAgICAgX21tMjU2X2NtcGVxX2VwaTgocywgcHJyKSwKLSsgICAgICAgIF9t bTI1Nl9hbmRub3Rfc2kyNTYoCi0rICAgICAgICAgIF9tbTI1Nl9jbXBlcV9lcGk4KHMsIHBybCks Ci0rICAgICAgICAgIF9tbTI1Nl9hbmRub3Rfc2kyNTYoX21tMjU2X2NtcGVxX2VwaTgocywgZHEp LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9tbTI1Nl9hbmRfc2kyNTYoX21tMjU2 X2NtcGd0X2VwaTgocywgcjBsKSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIF9tbTI1Nl9jbXBndF9lcGk4KHIwciwgcykpKSkpKTsKLSsgICAgeCA9IF9t bTI1Nl9vcl9zaTI1NigKLSsgICAgICBfbW0yNTZfYW5kX3NpMjU2KF9tbTI1Nl9jbXBndF9lcGk4 KHMsIHIxbCksIF9tbTI1Nl9jbXBndF9lcGk4KHIxciwgcykpLAotKyAgICAgIHgpOwotKyAgICB4 ID0gX21tMjU2X29yX3NpMjU2KAotKyAgICAgIF9tbTI1Nl9hbmRub3Rfc2kyNTYoCi0rICAgICAg ICBfbW0yNTZfY21wZXFfZXBpOChzLCBjYnIpLAotKyAgICAgICAgX21tMjU2X2FuZG5vdF9zaTI1 NihfbW0yNTZfY21wZXFfZXBpOChzLCBjYmwpLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICBfbW0yNTZfYW5kX3NpMjU2KF9tbTI1Nl9jbXBndF9lcGk4KHMsIHIybCksCi0rICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX21tMjU2X2NtcGd0X2VwaTgocjJy LCBzKSkpKSwKLSsgICAgICB4KTsKLSsKLSsgICAgbSA9IH4odWludDMyX3QpX21tMjU2X21vdmVt YXNrX2VwaTgoeCk7Ci0rICAgIGlmIChtKSB7Ci0rICAgICAgcmV0dXJuIGZpcnN0ICsgY3R6KG0p OwotICAgICB9Ci0gICB9Ci0gCi0tICByZXR1cm4gU0ZfRVJSX1BBUlNFX0VSUk9SOwotKyAgcmV0 dXJuIGxhc3Q7Ci0gfQotKyNlbmRpZiAvKiBfX0FWWDJfXyAqLwotIAotLXN0YXRpYyBpbnQgcGFy c2VyX3Rva2VuKHNmX3BhcnNlciAqc2ZwLCBzZl92YWx1ZSAqZGVzdCkgewotK3N0YXRpYyBpbnQg cGFyc2VyX3Rva2VuKHNmcGFyc2VfcGFyc2VyICpzZnAsIHNmcGFyc2VfdmFsdWUgKmRlc3QpIHsK LSAgIGNvbnN0IHVpbnQ4X3QgKmJhc2U7Ci0rI2lmZGVmIF9fQVZYMl9fCi0rICBjb25zdCB1aW50 OF90ICpsYXN0OwotKyNlbmRpZiAvKiBfX0FWWDJfXyAqLwotIAotICAgLyogVGhlIGZpcnN0IGJ5 dGUgaGFzIGFscmVhZHkgYmVlbiB2YWxpZGF0ZWQgYnkgdGhlIGNhbGxlci4gKi8KLSAgIGJhc2Ug PSBzZnAtPnBvcysrOwotIAotKyNpZmRlZiBfX0FWWDJfXwotKyAgaWYgKHNmcC0+ZW5kIC0gc2Zw LT5wb3MgPj0gMzIpIHsKLSsgICAgbGFzdCA9IHNmcC0+cG9zICsgKChzZnAtPmVuZCAtIHNmcC0+ cG9zKSAmIH4weDFmdSk7Ci0rCi0rICAgIHNmcC0+cG9zID0gZmluZF9jaGFyX3Rva2VuKHNmcC0+ cG9zLCBsYXN0KTsKLSsgICAgaWYgKHNmcC0+cG9zICE9IGxhc3QpIHsKLSsgICAgICBnb3RvIGZp bjsKLSsgICAgfQotKyAgfQotKyNlbmRpZiAvKiBfX0FWWDJfXyAqLwotKwotICAgZm9yICg7ICFw YXJzZXJfZW9mKHNmcCk7ICsrc2ZwLT5wb3MpIHsKLSAgICAgc3dpdGNoICgqc2ZwLT5wb3MpIHsK LS0gICAgY2FzZSAnISc6Ci0tICAgIGNhc2UgJyMnOgotLSAgICBjYXNlICckJzoKLS0gICAgY2Fz ZSAnJSc6Ci0tICAgIGNhc2UgJyYnOgotLSAgICBjYXNlICdcJyc6Ci0tICAgIGNhc2UgJyonOgot LSAgICBjYXNlICcrJzoKLS0gICAgY2FzZSAnLSc6Ci0tICAgIGNhc2UgJy4nOgotLSAgICBjYXNl ICdeJzoKLS0gICAgY2FzZSAnXyc6Ci0tICAgIGNhc2UgJ2AnOgotLSAgICBjYXNlICd8JzoKLS0g ICAgY2FzZSAnfic6Ci0tICAgIGNhc2UgJzonOgotLSAgICBjYXNlICcvJzoKLS0gICAgRElHSVRf Q0FTRVM6Ci0tICAgIEFMUEhBX0NBU0VTOgotKyAgICBUT0tFTl9DQVNFUzoKLSAgICAgICBjb250 aW51ZTsKLSAgICAgfQotIAotICAgICBicmVhazsKLSAgIH0KLSAKLSsjaWZkZWYgX19BVlgyX18K LStmaW46Ci0rI2VuZGlmIC8qIF9fQVZYMl9fICovCi0gICBpZiAoZGVzdCkgewotLSAgICBkZXN0 LT50eXBlID0gU0ZfVFlQRV9UT0tFTjsKLS0gICAgZGVzdC0+ZmxhZ3MgPSBTRl9WQUxVRV9GTEFH X05PTkU7Ci0rICAgIGRlc3QtPnR5cGUgPSBTRlBBUlNFX1RZUEVfVE9LRU47Ci0rICAgIGRlc3Qt PmZsYWdzID0gU0ZQQVJTRV9WQUxVRV9GTEFHX05PTkU7Ci0gICAgIGRlc3QtPnZlYy5iYXNlID0g KHVpbnQ4X3QgKiliYXNlOwotICAgICBkZXN0LT52ZWMubGVuID0gKHNpemVfdCkoc2ZwLT5wb3Mg LSBiYXNlKTsKLSAgIH0KLUBAIC00NjYsMTQgKzg2Miw2MyBAQCBzdGF0aWMgaW50IHBhcnNlcl90 b2tlbihzZl9wYXJzZXIgKnNmcCwgc2ZfdmFsdWUgKmRlc3QpIHsKLSAgIHJldHVybiAwOwotIH0K LSAKLS1zdGF0aWMgaW50IHBhcnNlcl9ieXRlc2VxKHNmX3BhcnNlciAqc2ZwLCBzZl92YWx1ZSAq ZGVzdCkgewotKyNpZmRlZiBfX0FWWDJfXwotK3N0YXRpYyBjb25zdCB1aW50OF90ICpmaW5kX2No YXJfYnl0ZXNlcShjb25zdCB1aW50OF90ICpmaXJzdCwKLSsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqbGFzdCkgewotKyAgY29uc3QgX19tMjU2 aSBwbHMgPSBfbW0yNTZfc2V0MV9lcGk4KCcrJyk7Ci0rICBjb25zdCBfX20yNTZpIGZzID0gX21t MjU2X3NldDFfZXBpOCgnLycpOwotKyAgY29uc3QgX19tMjU2aSByMGwgPSBfbW0yNTZfc2V0MV9l cGk4KCcwJyAtIDEpOwotKyAgY29uc3QgX19tMjU2aSByMHIgPSBfbW0yNTZfc2V0MV9lcGk4KCc5 JyArIDEpOwotKyAgY29uc3QgX19tMjU2aSByMWwgPSBfbW0yNTZfc2V0MV9lcGk4KCdBJyAtIDEp OwotKyAgY29uc3QgX19tMjU2aSByMXIgPSBfbW0yNTZfc2V0MV9lcGk4KCdaJyArIDEpOwotKyAg Y29uc3QgX19tMjU2aSByMmwgPSBfbW0yNTZfc2V0MV9lcGk4KCdhJyAtIDEpOwotKyAgY29uc3Qg X19tMjU2aSByMnIgPSBfbW0yNTZfc2V0MV9lcGk4KCd6JyArIDEpOwotKyAgX19tMjU2aSBzLCB4 OwotKyAgdWludDMyX3QgbTsKLSsKLSsgIGZvciAoOyBmaXJzdCAhPSBsYXN0OyBmaXJzdCArPSAz MikgewotKyAgICBzID0gX21tMjU2X2xvYWR1X3NpMjU2KCh2b2lkICopZmlyc3QpOwotKwotKyAg ICB4ID0gX21tMjU2X2NtcGVxX2VwaTgocywgcGxzKTsKLSsgICAgeCA9IF9tbTI1Nl9vcl9zaTI1 NihfbW0yNTZfY21wZXFfZXBpOChzLCBmcyksIHgpOwotKyAgICB4ID0gX21tMjU2X29yX3NpMjU2 KAotKyAgICAgIF9tbTI1Nl9hbmRfc2kyNTYoX21tMjU2X2NtcGd0X2VwaTgocywgcjBsKSwgX21t MjU2X2NtcGd0X2VwaTgocjByLCBzKSksCi0rICAgICAgeCk7Ci0rICAgIHggPSBfbW0yNTZfb3Jf c2kyNTYoCi0rICAgICAgX21tMjU2X2FuZF9zaTI1NihfbW0yNTZfY21wZ3RfZXBpOChzLCByMWwp LCBfbW0yNTZfY21wZ3RfZXBpOChyMXIsIHMpKSwKLSsgICAgICB4KTsKLSsgICAgeCA9IF9tbTI1 Nl9vcl9zaTI1NigKLSsgICAgICBfbW0yNTZfYW5kX3NpMjU2KF9tbTI1Nl9jbXBndF9lcGk4KHMs IHIybCksIF9tbTI1Nl9jbXBndF9lcGk4KHIyciwgcykpLAotKyAgICAgIHgpOwotKwotKyAgICBt ID0gfih1aW50MzJfdClfbW0yNTZfbW92ZW1hc2tfZXBpOCh4KTsKLSsgICAgaWYgKG0pIHsKLSsg ICAgICByZXR1cm4gZmlyc3QgKyBjdHoobSk7Ci0rICAgIH0KLSsgIH0KLSsKLSsgIHJldHVybiBs YXN0OwotK30KLSsjZW5kaWYgLyogX19BVlgyX18gKi8KLSsKLStzdGF0aWMgaW50IHBhcnNlcl9i eXRlc2VxKHNmcGFyc2VfcGFyc2VyICpzZnAsIHNmcGFyc2VfdmFsdWUgKmRlc3QpIHsKLSAgIGNv bnN0IHVpbnQ4X3QgKmJhc2U7Ci0rI2lmZGVmIF9fQVZYMl9fCi0rICBjb25zdCB1aW50OF90ICps YXN0OwotKyNlbmRpZiAvKiBfX0FWWDJfXyAqLwotIAotICAgLyogVGhlIGZpcnN0IGJ5dGUgaGFz IGFscmVhZHkgYmVlbiB2YWxpZGF0ZWQgYnkgdGhlIGNhbGxlci4gKi8KLSAgIGFzc2VydCgnOicg PT0gKnNmcC0+cG9zKTsKLSAKLSAgIGJhc2UgPSArK3NmcC0+cG9zOwotIAotKyNpZmRlZiBfX0FW WDJfXwotKyAgaWYgKHNmcC0+ZW5kIC0gc2ZwLT5wb3MgPj0gMzIpIHsKLSsgICAgbGFzdCA9IHNm cC0+cG9zICsgKChzZnAtPmVuZCAtIHNmcC0+cG9zKSAmIH4weDFmdSk7Ci0rICAgIHNmcC0+cG9z ID0gZmluZF9jaGFyX2J5dGVzZXEoc2ZwLT5wb3MsIGxhc3QpOwotKyAgfQotKyNlbmRpZiAvKiBf X0FWWDJfXyAqLwotKwotICAgZm9yICg7ICFwYXJzZXJfZW9mKHNmcCk7ICsrc2ZwLT5wb3MpIHsK LSAgICAgc3dpdGNoICgqc2ZwLT5wb3MpIHsKLSAgICAgY2FzZSAnKyc6Ci1AQCAtNDg1LDc1ICs5 MzAsNDcgQEAgc3RhdGljIGludCBwYXJzZXJfYnl0ZXNlcShzZl9wYXJzZXIgKnNmcCwgc2ZfdmFs dWUgKmRlc3QpIHsKLSAgICAgICBzd2l0Y2ggKChzZnAtPnBvcyAtIGJhc2UpICYgMHgzKSB7Ci0g ICAgICAgY2FzZSAwOgotICAgICAgIGNhc2UgMToKLS0gICAgICAgIHJldHVybiBTRl9FUlJfUEFS U0VfRVJST1I7Ci0rICAgICAgICByZXR1cm4gU0ZQQVJTRV9FUlJfUEFSU0U7Ci0gICAgICAgY2Fz ZSAyOgotLSAgICAgICAgc3dpdGNoICgqKHNmcC0+cG9zIC0gMSkpIHsKLS0gICAgICAgIGNhc2Ug J0EnOgotLSAgICAgICAgY2FzZSAnUSc6Ci0tICAgICAgICBjYXNlICdnJzoKLS0gICAgICAgIGNh c2UgJ3cnOgotLSAgICAgICAgICBicmVhazsKLS0gICAgICAgIGRlZmF1bHQ6Ci0tICAgICAgICAg IHJldHVybiBTRl9FUlJfUEFSU0VfRVJST1I7Ci0tICAgICAgICB9Ci0tCi0gICAgICAgICArK3Nm cC0+cG9zOwotIAotLSAgICAgICAgaWYgKHBhcnNlcl9lb2Yoc2ZwKSB8fCAqc2ZwLT5wb3MgIT0g Jz0nKSB7Ci0tICAgICAgICAgIHJldHVybiBTRl9FUlJfUEFSU0VfRVJST1I7Ci0rICAgICAgICBp ZiAocGFyc2VyX2VvZihzZnApKSB7Ci0rICAgICAgICAgIHJldHVybiBTRlBBUlNFX0VSUl9QQVJT RTsKLSsgICAgICAgIH0KLSsKLSsgICAgICAgIGlmICgqc2ZwLT5wb3MgPT0gJz0nKSB7Ci0rICAg ICAgICAgICsrc2ZwLT5wb3M7Ci0gICAgICAgICB9Ci0gCi0gICAgICAgICBicmVhazsKLSAgICAg ICBjYXNlIDM6Ci0tICAgICAgICBzd2l0Y2ggKCooc2ZwLT5wb3MgLSAxKSkgewotLSAgICAgICAg Y2FzZSAnQSc6Ci0tICAgICAgICBjYXNlICdFJzoKLS0gICAgICAgIGNhc2UgJ0knOgotLSAgICAg ICAgY2FzZSAnTSc6Ci0tICAgICAgICBjYXNlICdRJzoKLS0gICAgICAgIGNhc2UgJ1UnOgotLSAg ICAgICAgY2FzZSAnWSc6Ci0tICAgICAgICBjYXNlICdjJzoKLS0gICAgICAgIGNhc2UgJ2cnOgot LSAgICAgICAgY2FzZSAnayc6Ci0tICAgICAgICBjYXNlICdvJzoKLS0gICAgICAgIGNhc2UgJ3Mn OgotLSAgICAgICAgY2FzZSAndyc6Ci0tICAgICAgICBjYXNlICcwJzoKLS0gICAgICAgIGNhc2Ug JzQnOgotLSAgICAgICAgY2FzZSAnOCc6Ci0tICAgICAgICAgIGJyZWFrOwotLSAgICAgICAgZGVm YXVsdDoKLS0gICAgICAgICAgcmV0dXJuIFNGX0VSUl9QQVJTRV9FUlJPUjsKLS0gICAgICAgIH0K LSsgICAgICAgICsrc2ZwLT5wb3M7Ci0gCi0gICAgICAgICBicmVhazsKLSAgICAgICB9Ci0gCi0t ICAgICAgKytzZnAtPnBvczsKLS0KLSAgICAgICBpZiAocGFyc2VyX2VvZihzZnApIHx8ICpzZnAt PnBvcyAhPSAnOicpIHsKLS0gICAgICAgIHJldHVybiBTRl9FUlJfUEFSU0VfRVJST1I7Ci0rICAg ICAgICByZXR1cm4gU0ZQQVJTRV9FUlJfUEFSU0U7Ci0gICAgICAgfQotIAotICAgICAgIGdvdG8g ZmluOwotICAgICBjYXNlICc6JzoKLS0gICAgICBpZiAoKHNmcC0+cG9zIC0gYmFzZSkgJiAweDMp IHsKLS0gICAgICAgIHJldHVybiBTRl9FUlJfUEFSU0VfRVJST1I7Ci0rICAgICAgaWYgKCgoc2Zw LT5wb3MgLSBiYXNlKSAmIDB4MykgPT0gMSkgewotKyAgICAgICAgcmV0dXJuIFNGUEFSU0VfRVJS X1BBUlNFOwotICAgICAgIH0KLSAKLSAgICAgICBnb3RvIGZpbjsKLSAgICAgZGVmYXVsdDoKLS0g ICAgICByZXR1cm4gU0ZfRVJSX1BBUlNFX0VSUk9SOwotKyAgICAgIHJldHVybiBTRlBBUlNFX0VS Ul9QQVJTRTsKLSAgICAgfQotICAgfQotIAotLSAgcmV0dXJuIFNGX0VSUl9QQVJTRV9FUlJPUjsK LSsgIHJldHVybiBTRlBBUlNFX0VSUl9QQVJTRTsKLSAKLSBmaW46Ci0gICBpZiAoZGVzdCkgewot LSAgICBkZXN0LT50eXBlID0gU0ZfVFlQRV9CWVRFU0VROwotLSAgICBkZXN0LT5mbGFncyA9IFNG X1ZBTFVFX0ZMQUdfTk9ORTsKLSsgICAgZGVzdC0+dHlwZSA9IFNGUEFSU0VfVFlQRV9CWVRFU0VR OwotKyAgICBkZXN0LT5mbGFncyA9IFNGUEFSU0VfVkFMVUVfRkxBR19OT05FOwotICAgICBkZXN0 LT52ZWMubGVuID0gKHNpemVfdCkoc2ZwLT5wb3MgLSBiYXNlKTsKLSAgICAgZGVzdC0+dmVjLmJh c2UgPSBkZXN0LT52ZWMubGVuID09IDAgPyBOVUxMIDogKHVpbnQ4X3QgKiliYXNlOwotICAgfQot QEAgLTU2Myw3ICs5ODAsNyBAQCBmaW46Ci0gICByZXR1cm4gMDsKLSB9Ci0gCi0tc3RhdGljIGlu dCBwYXJzZXJfYm9vbGVhbihzZl9wYXJzZXIgKnNmcCwgc2ZfdmFsdWUgKmRlc3QpIHsKLStzdGF0 aWMgaW50IHBhcnNlcl9ib29sZWFuKHNmcGFyc2VfcGFyc2VyICpzZnAsIHNmcGFyc2VfdmFsdWUg KmRlc3QpIHsKLSAgIGludCBiOwotIAotICAgLyogVGhlIGZpcnN0IGJ5dGUgaGFzIGFscmVhZHkg YmVlbiB2YWxpZGF0ZWQgYnkgdGhlIGNhbGxlci4gKi8KLUBAIC01NzIsNyArOTg5LDcgQEAgc3Rh dGljIGludCBwYXJzZXJfYm9vbGVhbihzZl9wYXJzZXIgKnNmcCwgc2ZfdmFsdWUgKmRlc3QpIHsK LSAgICsrc2ZwLT5wb3M7Ci0gCi0gICBpZiAocGFyc2VyX2VvZihzZnApKSB7Ci0tICAgIHJldHVy biBTRl9FUlJfUEFSU0VfRVJST1I7Ci0rICAgIHJldHVybiBTRlBBUlNFX0VSUl9QQVJTRTsKLSAg IH0KLSAKLSAgIHN3aXRjaCAoKnNmcC0+cG9zKSB7Ci1AQCAtNTg1LDIxICsxMDAyLDE4NCBAQCBz dGF0aWMgaW50IHBhcnNlcl9ib29sZWFuKHNmX3BhcnNlciAqc2ZwLCBzZl92YWx1ZSAqZGVzdCkg ewotIAotICAgICBicmVhazsKLSAgIGRlZmF1bHQ6Ci0tICAgIHJldHVybiBTRl9FUlJfUEFSU0Vf RVJST1I7Ci0rICAgIHJldHVybiBTRlBBUlNFX0VSUl9QQVJTRTsKLSAgIH0KLSAKLSAgICsrc2Zw LT5wb3M7Ci0gCi0gICBpZiAoZGVzdCkgewotLSAgICBkZXN0LT50eXBlID0gU0ZfVFlQRV9CT09M RUFOOwotLSAgICBkZXN0LT5mbGFncyA9IFNGX1ZBTFVFX0ZMQUdfTk9ORTsKLSsgICAgZGVzdC0+ dHlwZSA9IFNGUEFSU0VfVFlQRV9CT09MRUFOOwotKyAgICBkZXN0LT5mbGFncyA9IFNGUEFSU0Vf VkFMVUVfRkxBR19OT05FOwotICAgICBkZXN0LT5ib29sZWFuID0gYjsKLSAgIH0KLSAKLSAgIHJl dHVybiAwOwotIH0KLSAKLS1zdGF0aWMgaW50IHBhcnNlcl9iYXJlX2l0ZW0oc2ZfcGFyc2VyICpz ZnAsIHNmX3ZhbHVlICpkZXN0KSB7Ci0rc3RhdGljIGludCBwY3RkZWNvZGUodWludDhfdCAqcGMs IGNvbnN0IHVpbnQ4X3QgKipwcG9zKSB7Ci0rICB1aW50OF90IGMsIGIgPSAqKnBwb3M7Ci0rCi0r ICBzd2l0Y2ggKGIpIHsKLSsgIERJR0lUX0NBU0VTOgotKyAgICBjID0gKHVpbnQ4X3QpKChiIC0g JzAnKSA8PCA0KTsKLSsKLSsgICAgYnJlYWs7Ci0rICBMQ0hFWEFMUEhBX0NBU0VTOgotKyAgICBj ID0gKHVpbnQ4X3QpKChiIC0gJ2EnICsgMTApIDw8IDQpOwotKwotKyAgICBicmVhazsKLSsgIGRl ZmF1bHQ6Ci0rICAgIHJldHVybiAtMTsKLSsgIH0KLSsKLSsgIGIgPSAqKysqcHBvczsKLSsKLSsg IHN3aXRjaCAoYikgewotKyAgRElHSVRfQ0FTRVM6Ci0rICAgIGMgfD0gKHVpbnQ4X3QpKGIgLSAn MCcpOwotKwotKyAgICBicmVhazsKLSsgIExDSEVYQUxQSEFfQ0FTRVM6Ci0rICAgIGMgfD0gKHVp bnQ4X3QpKGIgLSAnYScgKyAxMCk7Ci0rCi0rICAgIGJyZWFrOwotKyAgZGVmYXVsdDoKLSsgICAg cmV0dXJuIC0xOwotKyAgfQotKwotKyAgKnBjID0gYzsKLSsgICsrKnBwb3M7Ci0rCi0rICByZXR1 cm4gMDsKLSt9Ci0rCi0rLyogU3RhcnQgb2YgdXRmOCBkZmEgKi8KLSsvKiBDb3B5cmlnaHQgKGMp IDIwMDgtMjAxMCBCam9lcm4gSG9laHJtYW5uIDxiam9lcm5AaG9laHJtYW5uLmRlPgotKyAqIFNl ZSBodHRwOi8vYmpvZXJuLmhvZWhybWFubi5kZS91dGYtOC9kZWNvZGVyL2RmYS8gZm9yIGRldGFp bHMuCi0rICoKLSsgKiBDb3B5cmlnaHQgKGMpIDIwMDgtMjAwOSBCam9lcm4gSG9laHJtYW5uIDxi am9lcm5AaG9laHJtYW5uLmRlPgotKyAqCi0rICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRl ZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24KLSsgKiBvYnRhaW5pbmcgYSBjb3B5IG9m IHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbgotKyAqIGZpbGVzICh0 aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQKLSsgKiByZXN0 cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwg Y29weSwKLSsgKiBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNl LCBhbmQvb3Igc2VsbCBjb3BpZXMKLSsgKiBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQg cGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwotKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywg c3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Ci0rICoKLSsgKiBUaGUgYWJvdmUg Y29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZQotKyAq IGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNv ZnR3YXJlLgotKyAqCi0rICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhP VVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsCi0rICogRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJ TkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCi0rICogTUVSQ0hBTlRBQklM SVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQKLSsgKiBOT05JTkZSSU5H RU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJT Ci0rICogQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZ LCBXSEVUSEVSIElOIEFOCi0rICogQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lT RSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4KLSsgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNP RlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFCi0rICogU09GVFdBUkUu Ci0rICovCi0rI2RlZmluZSBVVEY4X0FDQ0VQVCAwCi0rI2RlZmluZSBVVEY4X1JFSkVDVCAxMgot KwotKy8qIGNsYW5nLWZvcm1hdCBvZmYgKi8KLStzdGF0aWMgY29uc3QgdWludDhfdCB1dGY4ZFtd ID0gewotKyAgLyoKLSsgICAqIFRoZSBmaXJzdCBwYXJ0IG9mIHRoZSB0YWJsZSBtYXBzIGJ5dGVz IHRvIGNoYXJhY3RlciBjbGFzc2VzIHRoYXQKLSsgICAqIHRvIHJlZHVjZSB0aGUgc2l6ZSBvZiB0 aGUgdHJhbnNpdGlvbiB0YWJsZSBhbmQgY3JlYXRlIGJpdG1hc2tzLgotKyAgICovCi0rICAgMCww LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwgIDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAs MCwwLDAsCi0rICAgMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwgIDAsMCwwLDAsMCww LDAsMCwwLDAsMCwwLDAsMCwwLDAsCi0rICAgMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAs MCwgIDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsCi0rICAgMCwwLDAsMCwwLDAsMCww LDAsMCwwLDAsMCwwLDAsMCwgIDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsCi0rICAg MSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwgIDksOSw5LDksOSw5LDksOSw5LDksOSw5 LDksOSw5LDksCi0rICAgNyw3LDcsNyw3LDcsNyw3LDcsNyw3LDcsNyw3LDcsNywgIDcsNyw3LDcs Nyw3LDcsNyw3LDcsNyw3LDcsNyw3LDcsCi0rICAgOCw4LDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwy LDIsMiwgIDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsCi0rICAxMCwzLDMsMywzLDMs MywzLDMsMywzLDMsMyw0LDMsMywgMTEsNiw2LDYsNSw4LDgsOCw4LDgsOCw4LDgsOCw4LDgsCi0r Ci0rICAgLyoKLSsgICAgKiBUaGUgc2Vjb25kIHBhcnQgaXMgYSB0cmFuc2l0aW9uIHRhYmxlIHRo YXQgbWFwcyBhIGNvbWJpbmF0aW9uCi0rICAgICogb2YgYSBzdGF0ZSBvZiB0aGUgYXV0b21hdG9u IGFuZCBhIGNoYXJhY3RlciBjbGFzcyB0byBhIHN0YXRlLgotKyAgICAqLwotKyAgIDAsMTIsMjQs MzYsNjAsOTYsODQsMTIsMTIsMTIsNDgsNzIsIDEyLDEyLDEyLDEyLDEyLDEyLDEyLDEyLDEyLDEy LDEyLDEyLAotKyAgMTIsIDAsMTIsMTIsMTIsMTIsMTIsIDAsMTIsIDAsMTIsMTIsIDEyLDI0LDEy LDEyLDEyLDEyLDEyLDI0LDEyLDI0LDEyLDEyLAotKyAgMTIsMTIsMTIsMTIsMTIsMTIsMTIsMjQs MTIsMTIsMTIsMTIsIDEyLDI0LDEyLDEyLDEyLDEyLDEyLDEyLDEyLDI0LDEyLDEyLAotKyAgMTIs MTIsMTIsMTIsMTIsMTIsMTIsMzYsMTIsMzYsMTIsMTIsIDEyLDM2LDEyLDEyLDEyLDEyLDEyLDM2 LDEyLDM2LDEyLDEyLAotKyAgMTIsMzYsMTIsMTIsMTIsMTIsMTIsMTIsMTIsMTIsMTIsMTIsCi0r fTsKLSsvKiBjbGFuZy1mb3JtYXQgb24gKi8KLSsKLStzdGF0aWMgdm9pZCB1dGY4X2RlY29kZSh1 aW50MzJfdCAqc3RhdGUsIHVpbnQ4X3QgYnl0ZSkgewotKyAgKnN0YXRlID0gdXRmOGRbMjU2ICsg KnN0YXRlICsgdXRmOGRbYnl0ZV1dOwotK30KLSsKLSsvKiBFbmQgb2YgdXRmOCBkZmEgKi8KLSsK LStzdGF0aWMgaW50IHBhcnNlcl9kaXNwc3RyaW5nKHNmcGFyc2VfcGFyc2VyICpzZnAsIHNmcGFy c2VfdmFsdWUgKmRlc3QpIHsKLSsgIGNvbnN0IHVpbnQ4X3QgKmJhc2U7Ci0rICB1aW50OF90IGM7 Ci0rICB1aW50MzJfdCB1dGY4c3RhdGUgPSBVVEY4X0FDQ0VQVDsKLSsKLSsgIGFzc2VydCgnJScg PT0gKnNmcC0+cG9zKTsKLSsKLSsgICsrc2ZwLT5wb3M7Ci0rCi0rICBpZiAocGFyc2VyX2VvZihz ZnApIHx8ICpzZnAtPnBvcyAhPSAnIicpIHsKLSsgICAgcmV0dXJuIFNGUEFSU0VfRVJSX1BBUlNF OwotKyAgfQotKwotKyAgYmFzZSA9ICsrc2ZwLT5wb3M7Ci0rCi0rICBmb3IgKDsgIXBhcnNlcl9l b2Yoc2ZwKTspIHsKLSsgICAgc3dpdGNoICgqc2ZwLT5wb3MpIHsKLSsgICAgWDAwXzFGX0NBU0VT OgotKyAgICBYN0ZfRkZfQ0FTRVM6Ci0rICAgICAgcmV0dXJuIFNGUEFSU0VfRVJSX1BBUlNFOwot KyAgICBjYXNlICclJzoKLSsgICAgICArK3NmcC0+cG9zOwotKwotKyAgICAgIGlmIChzZnAtPnBv cyArIDIgPiBzZnAtPmVuZCkgewotKyAgICAgICAgcmV0dXJuIFNGUEFSU0VfRVJSX1BBUlNFOwot KyAgICAgIH0KLSsKLSsgICAgICBpZiAocGN0ZGVjb2RlKCZjLCAmc2ZwLT5wb3MpICE9IDApIHsK LSsgICAgICAgIHJldHVybiBTRlBBUlNFX0VSUl9QQVJTRTsKLSsgICAgICB9Ci0rCi0rICAgICAg dXRmOF9kZWNvZGUoJnV0ZjhzdGF0ZSwgYyk7Ci0rICAgICAgaWYgKHV0ZjhzdGF0ZSA9PSBVVEY4 X1JFSkVDVCkgewotKyAgICAgICAgcmV0dXJuIFNGUEFSU0VfRVJSX1BBUlNFOwotKyAgICAgIH0K LSsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSAnIic6Ci0rICAgICAgaWYgKHV0ZjhzdGF0ZSAh PSBVVEY4X0FDQ0VQVCkgewotKyAgICAgICAgcmV0dXJuIFNGUEFSU0VfRVJSX1BBUlNFOwotKyAg ICAgIH0KLSsKLSsgICAgICBpZiAoZGVzdCkgewotKyAgICAgICAgZGVzdC0+dHlwZSA9IFNGUEFS U0VfVFlQRV9ESVNQU1RSSU5HOwotKyAgICAgICAgZGVzdC0+ZmxhZ3MgPSBTRlBBUlNFX1ZBTFVF X0ZMQUdfTk9ORTsKLSsgICAgICAgIGRlc3QtPnZlYy5sZW4gPSAoc2l6ZV90KShzZnAtPnBvcyAt IGJhc2UpOwotKyAgICAgICAgZGVzdC0+dmVjLmJhc2UgPSBkZXN0LT52ZWMubGVuID09IDAgPyBO VUxMIDogKHVpbnQ4X3QgKiliYXNlOwotKyAgICAgIH0KLSsKLSsgICAgICArK3NmcC0+cG9zOwot KwotKyAgICAgIHJldHVybiAwOwotKyAgICBkZWZhdWx0OgotKyAgICAgIGlmICh1dGY4c3RhdGUg IT0gVVRGOF9BQ0NFUFQpIHsKLSsgICAgICAgIHJldHVybiBTRlBBUlNFX0VSUl9QQVJTRTsKLSsg ICAgICB9Ci0rCi0rICAgICAgKytzZnAtPnBvczsKLSsgICAgfQotKyAgfQotKwotKyAgcmV0dXJu IFNGUEFSU0VfRVJSX1BBUlNFOwotK30KLSsKLStzdGF0aWMgaW50IHBhcnNlcl9iYXJlX2l0ZW0o c2ZwYXJzZV9wYXJzZXIgKnNmcCwgc2ZwYXJzZV92YWx1ZSAqZGVzdCkgewotICAgc3dpdGNoICgq c2ZwLT5wb3MpIHsKLSAgIGNhc2UgJyInOgotICAgICByZXR1cm4gcGFyc2VyX3N0cmluZyhzZnAs IGRlc3QpOwotQEAgLTYxNSwyOSArMTE5NSwzMiBAQCBzdGF0aWMgaW50IHBhcnNlcl9iYXJlX2l0 ZW0oc2ZfcGFyc2VyICpzZnAsIHNmX3ZhbHVlICpkZXN0KSB7Ci0gICBjYXNlICcqJzoKLSAgIEFM UEhBX0NBU0VTOgotICAgICByZXR1cm4gcGFyc2VyX3Rva2VuKHNmcCwgZGVzdCk7Ci0rICBjYXNl ICclJzoKLSsgICAgcmV0dXJuIHBhcnNlcl9kaXNwc3RyaW5nKHNmcCwgZGVzdCk7Ci0gICBkZWZh dWx0OgotLSAgICByZXR1cm4gU0ZfRVJSX1BBUlNFX0VSUk9SOwotKyAgICByZXR1cm4gU0ZQQVJT RV9FUlJfUEFSU0U7Ci0gICB9Ci0gfQotIAotLXN0YXRpYyBpbnQgcGFyc2VyX3NraXBfaW5uZXJf bGlzdChzZl9wYXJzZXIgKnNmcCk7Ci0rc3RhdGljIGludCBwYXJzZXJfc2tpcF9pbm5lcl9saXN0 KHNmcGFyc2VfcGFyc2VyICpzZnApOwotIAotLWludCBzZl9wYXJzZXJfcGFyYW0oc2ZfcGFyc2Vy ICpzZnAsIHNmX3ZlYyAqZGVzdF9rZXksIHNmX3ZhbHVlICpkZXN0X3ZhbHVlKSB7Ci0raW50IHNm cGFyc2VfcGFyc2VyX3BhcmFtKHNmcGFyc2VfcGFyc2VyICpzZnAsIHNmcGFyc2VfdmVjICpkZXN0 X2tleSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgc2ZwYXJzZV92YWx1ZSAqZGVzdF92YWx1 ZSkgewotICAgaW50IHJ2OwotIAotLSAgc3dpdGNoIChzZnAtPnN0YXRlICYgU0ZfU1RBVEVfT1Bf TUFTSykgewotLSAgY2FzZSBTRl9TVEFURV9CRUZPUkU6Ci0rICBzd2l0Y2ggKHNmcC0+c3RhdGUg JiBTRlBBUlNFX1NUQVRFX09QX01BU0spIHsKLSsgIGNhc2UgU0ZQQVJTRV9TVEFURV9CRUZPUkU6 Ci0gICAgIHJ2ID0gcGFyc2VyX3NraXBfaW5uZXJfbGlzdChzZnApOwotICAgICBpZiAocnYgIT0g MCkgewotICAgICAgIHJldHVybiBydjsKLSAgICAgfQotIAotICAgICAvKiBmYWxsIHRocm91Z2gg Ki8KLS0gIGNhc2UgU0ZfU1RBVEVfQkVGT1JFX1BBUkFNUzoKLS0gICAgcGFyc2VyX3NldF9vcF9z dGF0ZShzZnAsIFNGX1NUQVRFX1BBUkFNUyk7Ci0rICBjYXNlIFNGUEFSU0VfU1RBVEVfQkVGT1JF X1BBUkFNUzoKLSsgICAgcGFyc2VyX3NldF9vcF9zdGF0ZShzZnAsIFNGUEFSU0VfU1RBVEVfUEFS QU1TKTsKLSAKLSAgICAgYnJlYWs7Ci0tICBjYXNlIFNGX1NUQVRFX1BBUkFNUzoKLSsgIGNhc2Ug U0ZQQVJTRV9TVEFURV9QQVJBTVM6Ci0gICAgIGJyZWFrOwotICAgZGVmYXVsdDoKLSAgICAgYXNz ZXJ0KDApOwotQEAgLTY0NSwxNiArMTIyOCwxNiBAQCBpbnQgc2ZfcGFyc2VyX3BhcmFtKHNmX3Bh cnNlciAqc2ZwLCBzZl92ZWMgKmRlc3Rfa2V5LCBzZl92YWx1ZSAqZGVzdF92YWx1ZSkgewotICAg fQotIAotICAgaWYgKHBhcnNlcl9lb2Yoc2ZwKSB8fCAqc2ZwLT5wb3MgIT0gJzsnKSB7Ci0tICAg IHBhcnNlcl9zZXRfb3Bfc3RhdGUoc2ZwLCBTRl9TVEFURV9BRlRFUik7Ci0rICAgIHBhcnNlcl9z ZXRfb3Bfc3RhdGUoc2ZwLCBTRlBBUlNFX1NUQVRFX0FGVEVSKTsKLSAKLS0gICAgcmV0dXJuIFNG X0VSUl9FT0Y7Ci0rICAgIHJldHVybiBTRlBBUlNFX0VSUl9FT0Y7Ci0gICB9Ci0gCi0gICArK3Nm cC0+cG9zOwotIAotICAgcGFyc2VyX2Rpc2NhcmRfc3Aoc2ZwKTsKLSAgIGlmIChwYXJzZXJfZW9m KHNmcCkpIHsKLS0gICAgcmV0dXJuIFNGX0VSUl9QQVJTRV9FUlJPUjsKLSsgICAgcmV0dXJuIFNG UEFSU0VfRVJSX1BBUlNFOwotICAgfQotIAotICAgcnYgPSBwYXJzZXJfa2V5KHNmcCwgZGVzdF9r ZXkpOwotQEAgLTY2NCw4ICsxMjQ3LDggQEAgaW50IHNmX3BhcnNlcl9wYXJhbShzZl9wYXJzZXIg KnNmcCwgc2ZfdmVjICpkZXN0X2tleSwgc2ZfdmFsdWUgKmRlc3RfdmFsdWUpIHsKLSAKLSAgIGlm IChwYXJzZXJfZW9mKHNmcCkgfHwgKnNmcC0+cG9zICE9ICc9JykgewotICAgICBpZiAoZGVzdF92 YWx1ZSkgewotLSAgICAgIGRlc3RfdmFsdWUtPnR5cGUgPSBTRl9UWVBFX0JPT0xFQU47Ci0tICAg ICAgZGVzdF92YWx1ZS0+ZmxhZ3MgPSBTRl9WQUxVRV9GTEFHX05PTkU7Ci0rICAgICAgZGVzdF92 YWx1ZS0+dHlwZSA9IFNGUEFSU0VfVFlQRV9CT09MRUFOOwotKyAgICAgIGRlc3RfdmFsdWUtPmZs YWdzID0gU0ZQQVJTRV9WQUxVRV9GTEFHX05PTkU7Ci0gICAgICAgZGVzdF92YWx1ZS0+Ym9vbGVh biA9IDE7Ci0gICAgIH0KLSAKLUBAIC02NzUsMjMgKzEyNTgsMjMgQEAgaW50IHNmX3BhcnNlcl9w YXJhbShzZl9wYXJzZXIgKnNmcCwgc2ZfdmVjICpkZXN0X2tleSwgc2ZfdmFsdWUgKmRlc3RfdmFs dWUpIHsKLSAgICsrc2ZwLT5wb3M7Ci0gCi0gICBpZiAocGFyc2VyX2VvZihzZnApKSB7Ci0tICAg IHJldHVybiBTRl9FUlJfUEFSU0VfRVJST1I7Ci0rICAgIHJldHVybiBTRlBBUlNFX0VSUl9QQVJT RTsKLSAgIH0KLSAKLSAgIHJldHVybiBwYXJzZXJfYmFyZV9pdGVtKHNmcCwgZGVzdF92YWx1ZSk7 Ci0gfQotIAotLXN0YXRpYyBpbnQgcGFyc2VyX3NraXBfcGFyYW1zKHNmX3BhcnNlciAqc2ZwKSB7 Ci0rc3RhdGljIGludCBwYXJzZXJfc2tpcF9wYXJhbXMoc2ZwYXJzZV9wYXJzZXIgKnNmcCkgewot ICAgaW50IHJ2OwotIAotICAgZm9yICg7OykgewotLSAgICBydiA9IHNmX3BhcnNlcl9wYXJhbShz ZnAsIE5VTEwsIE5VTEwpOwotKyAgICBydiA9IHNmcGFyc2VfcGFyc2VyX3BhcmFtKHNmcCwgTlVM TCwgTlVMTCk7Ci0gICAgIHN3aXRjaCAocnYpIHsKLSAgICAgY2FzZSAwOgotICAgICAgIGJyZWFr OwotLSAgICBjYXNlIFNGX0VSUl9FT0Y6Ci0rICAgIGNhc2UgU0ZQQVJTRV9FUlJfRU9GOgotICAg ICAgIHJldHVybiAwOwotLSAgICBjYXNlIFNGX0VSUl9QQVJTRV9FUlJPUjoKLSsgICAgY2FzZSBT RlBBUlNFX0VSUl9QQVJTRToKLSAgICAgICByZXR1cm4gcnY7Ci0gICAgIGRlZmF1bHQ6Ci0gICAg ICAgYXNzZXJ0KDApOwotQEAgLTcwMCw0NSArMTI4Myw0NSBAQCBzdGF0aWMgaW50IHBhcnNlcl9z a2lwX3BhcmFtcyhzZl9wYXJzZXIgKnNmcCkgewotICAgfQotIH0KLSAKLS1pbnQgc2ZfcGFyc2Vy X2lubmVyX2xpc3Qoc2ZfcGFyc2VyICpzZnAsIHNmX3ZhbHVlICpkZXN0KSB7Ci0raW50IHNmcGFy c2VfcGFyc2VyX2lubmVyX2xpc3Qoc2ZwYXJzZV9wYXJzZXIgKnNmcCwgc2ZwYXJzZV92YWx1ZSAq ZGVzdCkgewotICAgaW50IHJ2OwotIAotLSAgc3dpdGNoIChzZnAtPnN0YXRlICYgU0ZfU1RBVEVf T1BfTUFTSykgewotLSAgY2FzZSBTRl9TVEFURV9CRUZPUkU6Ci0rICBzd2l0Y2ggKHNmcC0+c3Rh dGUgJiBTRlBBUlNFX1NUQVRFX09QX01BU0spIHsKLSsgIGNhc2UgU0ZQQVJTRV9TVEFURV9CRUZP UkU6Ci0gICAgIHBhcnNlcl9kaXNjYXJkX3NwKHNmcCk7Ci0gICAgIGlmIChwYXJzZXJfZW9mKHNm cCkpIHsKLS0gICAgICByZXR1cm4gU0ZfRVJSX1BBUlNFX0VSUk9SOwotKyAgICAgIHJldHVybiBT RlBBUlNFX0VSUl9QQVJTRTsKLSAgICAgfQotIAotICAgICBicmVhazsKLS0gIGNhc2UgU0ZfU1RB VEVfQkVGT1JFX1BBUkFNUzoKLSsgIGNhc2UgU0ZQQVJTRV9TVEFURV9CRUZPUkVfUEFSQU1TOgot ICAgICBydiA9IHBhcnNlcl9za2lwX3BhcmFtcyhzZnApOwotICAgICBpZiAocnYgIT0gMCkgewot ICAgICAgIHJldHVybiBydjsKLSAgICAgfQotIAotLSAgICAvKiBUZWNobmljYWxseSwgd2UgYXJl IGVudGVyaW5nIFNGX1NUQVRFX0FGVEVSLCBidXQgd2Ugd2lsbCBzZXQKLSsgICAgLyogVGVjaG5p Y2FsbHksIHdlIGFyZSBlbnRlcmluZyBTRlBBUlNFX1NUQVRFX0FGVEVSLCBidXQgd2Ugd2lsbCBz ZXQKLSAgICAgICAgYW5vdGhlciBzdGF0ZSB3aXRob3V0IHJlYWRpbmcgdGhlIHN0YXRlLiAqLwot LSAgICAvKiBwYXJzZXJfc2V0X29wX3N0YXRlKHNmcCwgU0ZfU1RBVEVfQUZURVIpOyAqLwotKyAg ICAvKiBwYXJzZXJfc2V0X29wX3N0YXRlKHNmcCwgU0ZQQVJTRV9TVEFURV9BRlRFUik7ICovCi0g Ci0gICAgIC8qIGZhbGwgdGhyb3VnaCAqLwotLSAgY2FzZSBTRl9TVEFURV9BRlRFUjoKLSsgIGNh c2UgU0ZQQVJTRV9TVEFURV9BRlRFUjoKLSAgICAgaWYgKHBhcnNlcl9lb2Yoc2ZwKSkgewotLSAg ICAgIHJldHVybiBTRl9FUlJfUEFSU0VfRVJST1I7Ci0rICAgICAgcmV0dXJuIFNGUEFSU0VfRVJS X1BBUlNFOwotICAgICB9Ci0gCi0gICAgIHN3aXRjaCAoKnNmcC0+cG9zKSB7Ci0gICAgIGNhc2Ug JyAnOgotICAgICAgIHBhcnNlcl9kaXNjYXJkX3NwKHNmcCk7Ci0gICAgICAgaWYgKHBhcnNlcl9l b2Yoc2ZwKSkgewotLSAgICAgICAgcmV0dXJuIFNGX0VSUl9QQVJTRV9FUlJPUjsKLSsgICAgICAg IHJldHVybiBTRlBBUlNFX0VSUl9QQVJTRTsKLSAgICAgICB9Ci0gCi0gICAgICAgYnJlYWs7Ci0g ICAgIGNhc2UgJyknOgotICAgICAgIGJyZWFrOwotICAgICBkZWZhdWx0OgotLSAgICAgIHJldHVy biBTRl9FUlJfUEFSU0VfRVJST1I7Ci0rICAgICAgcmV0dXJuIFNGUEFSU0VfRVJSX1BBUlNFOwot ICAgICB9Ci0gCi0gICAgIGJyZWFrOwotQEAgLTc1MSw5ICsxMzM0LDkgQEAgaW50IHNmX3BhcnNl cl9pbm5lcl9saXN0KHNmX3BhcnNlciAqc2ZwLCBzZl92YWx1ZSAqZGVzdCkgewotICAgICArK3Nm cC0+cG9zOwotIAotICAgICBwYXJzZXJfdW5zZXRfaW5uZXJfbGlzdF9zdGF0ZShzZnApOwotLSAg ICBwYXJzZXJfc2V0X29wX3N0YXRlKHNmcCwgU0ZfU1RBVEVfQkVGT1JFX1BBUkFNUyk7Ci0rICAg IHBhcnNlcl9zZXRfb3Bfc3RhdGUoc2ZwLCBTRlBBUlNFX1NUQVRFX0JFRk9SRV9QQVJBTVMpOwot IAotLSAgICByZXR1cm4gU0ZfRVJSX0VPRjsKLSsgICAgcmV0dXJuIFNGUEFSU0VfRVJSX0VPRjsK LSAgIH0KLSAKLSAgIHJ2ID0gcGFyc2VyX2JhcmVfaXRlbShzZnAsIGRlc3QpOwotQEAgLTc2MSwy MiArMTM0NCwyMiBAQCBpbnQgc2ZfcGFyc2VyX2lubmVyX2xpc3Qoc2ZfcGFyc2VyICpzZnAsIHNm X3ZhbHVlICpkZXN0KSB7Ci0gICAgIHJldHVybiBydjsKLSAgIH0KLSAKLS0gIHBhcnNlcl9zZXRf b3Bfc3RhdGUoc2ZwLCBTRl9TVEFURV9CRUZPUkVfUEFSQU1TKTsKLSsgIHBhcnNlcl9zZXRfb3Bf c3RhdGUoc2ZwLCBTRlBBUlNFX1NUQVRFX0JFRk9SRV9QQVJBTVMpOwotIAotICAgcmV0dXJuIDA7 Ci0gfQotIAotLXN0YXRpYyBpbnQgcGFyc2VyX3NraXBfaW5uZXJfbGlzdChzZl9wYXJzZXIgKnNm cCkgewotK3N0YXRpYyBpbnQgcGFyc2VyX3NraXBfaW5uZXJfbGlzdChzZnBhcnNlX3BhcnNlciAq c2ZwKSB7Ci0gICBpbnQgcnY7Ci0gCi0gICBmb3IgKDs7KSB7Ci0tICAgIHJ2ID0gc2ZfcGFyc2Vy X2lubmVyX2xpc3Qoc2ZwLCBOVUxMKTsKLSsgICAgcnYgPSBzZnBhcnNlX3BhcnNlcl9pbm5lcl9s aXN0KHNmcCwgTlVMTCk7Ci0gICAgIHN3aXRjaCAocnYpIHsKLSAgICAgY2FzZSAwOgotICAgICAg IGJyZWFrOwotLSAgICBjYXNlIFNGX0VSUl9FT0Y6Ci0rICAgIGNhc2UgU0ZQQVJTRV9FUlJfRU9G OgotICAgICAgIHJldHVybiAwOwotLSAgICBjYXNlIFNGX0VSUl9QQVJTRV9FUlJPUjoKLSsgICAg Y2FzZSBTRlBBUlNFX0VSUl9QQVJTRToKLSAgICAgICByZXR1cm4gcnY7Ci0gICAgIGRlZmF1bHQ6 Ci0gICAgICAgYXNzZXJ0KDApOwotQEAgLTc4NSwzOSArMTM2OCwzOSBAQCBzdGF0aWMgaW50IHBh cnNlcl9za2lwX2lubmVyX2xpc3Qoc2ZfcGFyc2VyICpzZnApIHsKLSAgIH0KLSB9Ci0gCi0tc3Rh dGljIGludCBwYXJzZXJfbmV4dF9rZXlfb3JfaXRlbShzZl9wYXJzZXIgKnNmcCkgewotK3N0YXRp YyBpbnQgcGFyc2VyX25leHRfa2V5X29yX2l0ZW0oc2ZwYXJzZV9wYXJzZXIgKnNmcCkgewotICAg cGFyc2VyX2Rpc2NhcmRfb3dzKHNmcCk7Ci0gCi0gICBpZiAocGFyc2VyX2VvZihzZnApKSB7Ci0t ICAgIHJldHVybiBTRl9FUlJfRU9GOwotKyAgICByZXR1cm4gU0ZQQVJTRV9FUlJfRU9GOwotICAg fQotIAotICAgaWYgKCpzZnAtPnBvcyAhPSAnLCcpIHsKLS0gICAgcmV0dXJuIFNGX0VSUl9QQVJT RV9FUlJPUjsKLSsgICAgcmV0dXJuIFNGUEFSU0VfRVJSX1BBUlNFOwotICAgfQotIAotICAgKytz ZnAtPnBvczsKLSAKLSAgIHBhcnNlcl9kaXNjYXJkX293cyhzZnApOwotICAgaWYgKHBhcnNlcl9l b2Yoc2ZwKSkgewotLSAgICByZXR1cm4gU0ZfRVJSX1BBUlNFX0VSUk9SOwotKyAgICByZXR1cm4g U0ZQQVJTRV9FUlJfUEFSU0U7Ci0gICB9Ci0gCi0gICByZXR1cm4gMDsKLSB9Ci0gCi0tc3RhdGlj IGludCBwYXJzZXJfZGljdF92YWx1ZShzZl9wYXJzZXIgKnNmcCwgc2ZfdmFsdWUgKmRlc3QpIHsK LStzdGF0aWMgaW50IHBhcnNlcl9kaWN0X3ZhbHVlKHNmcGFyc2VfcGFyc2VyICpzZnAsIHNmcGFy c2VfdmFsdWUgKmRlc3QpIHsKLSAgIGludCBydjsKLSAKLSAgIGlmIChwYXJzZXJfZW9mKHNmcCkg fHwgKihzZnAtPnBvcykgIT0gJz0nKSB7Ci0gICAgIC8qIEJvb2xlYW4gdHJ1ZSAqLwotICAgICBp ZiAoZGVzdCkgewotLSAgICAgIGRlc3QtPnR5cGUgPSBTRl9UWVBFX0JPT0xFQU47Ci0tICAgICAg ZGVzdC0+ZmxhZ3MgPSBTRl9WQUxVRV9GTEFHX05PTkU7Ci0rICAgICAgZGVzdC0+dHlwZSA9IFNG UEFSU0VfVFlQRV9CT09MRUFOOwotKyAgICAgIGRlc3QtPmZsYWdzID0gU0ZQQVJTRV9WQUxVRV9G TEFHX05PTkU7Ci0gICAgICAgZGVzdC0+Ym9vbGVhbiA9IDE7Ci0gICAgIH0KLSAKLS0gICAgc2Zw LT5zdGF0ZSA9IFNGX1NUQVRFX0RJQ1RfQkVGT1JFX1BBUkFNUzsKLSsgICAgc2ZwLT5zdGF0ZSA9 IFNGUEFSU0VfU1RBVEVfRElDVF9CRUZPUkVfUEFSQU1TOwotIAotICAgICByZXR1cm4gMDsKLSAg IH0KLUBAIC04MjUsMTggKzE0MDgsMTggQEAgc3RhdGljIGludCBwYXJzZXJfZGljdF92YWx1ZShz Zl9wYXJzZXIgKnNmcCwgc2ZfdmFsdWUgKmRlc3QpIHsKLSAgICsrc2ZwLT5wb3M7Ci0gCi0gICBp ZiAocGFyc2VyX2VvZihzZnApKSB7Ci0tICAgIHJldHVybiBTRl9FUlJfUEFSU0VfRVJST1I7Ci0r ICAgIHJldHVybiBTRlBBUlNFX0VSUl9QQVJTRTsKLSAgIH0KLSAKLSAgIGlmICgqc2ZwLT5wb3Mg PT0gJygnKSB7Ci0gICAgIGlmIChkZXN0KSB7Ci0tICAgICAgZGVzdC0+dHlwZSA9IFNGX1RZUEVf SU5ORVJfTElTVDsKLS0gICAgICBkZXN0LT5mbGFncyA9IFNGX1ZBTFVFX0ZMQUdfTk9ORTsKLSsg ICAgICBkZXN0LT50eXBlID0gU0ZQQVJTRV9UWVBFX0lOTkVSX0xJU1Q7Ci0rICAgICAgZGVzdC0+ ZmxhZ3MgPSBTRlBBUlNFX1ZBTFVFX0ZMQUdfTk9ORTsKLSAgICAgfQotIAotICAgICArK3NmcC0+ cG9zOwotIAotLSAgICBzZnAtPnN0YXRlID0gU0ZfU1RBVEVfRElDVF9JTk5FUl9MSVNUX0JFRk9S RTsKLSsgICAgc2ZwLT5zdGF0ZSA9IFNGUEFSU0VfU1RBVEVfRElDVF9JTk5FUl9MSVNUX0JFRk9S RTsKLSAKLSAgICAgcmV0dXJuIDA7Ci0gICB9Ci1AQCAtODQ2LDQxICsxNDI5LDQyIEBAIHN0YXRp YyBpbnQgcGFyc2VyX2RpY3RfdmFsdWUoc2ZfcGFyc2VyICpzZnAsIHNmX3ZhbHVlICpkZXN0KSB7 Ci0gICAgIHJldHVybiBydjsKLSAgIH0KLSAKLS0gIHNmcC0+c3RhdGUgPSBTRl9TVEFURV9ESUNU X0JFRk9SRV9QQVJBTVM7Ci0rICBzZnAtPnN0YXRlID0gU0ZQQVJTRV9TVEFURV9ESUNUX0JFRk9S RV9QQVJBTVM7Ci0gCi0gICByZXR1cm4gMDsKLSB9Ci0gCi0taW50IHNmX3BhcnNlcl9kaWN0KHNm X3BhcnNlciAqc2ZwLCBzZl92ZWMgKmRlc3Rfa2V5LCBzZl92YWx1ZSAqZGVzdF92YWx1ZSkgewot K2ludCBzZnBhcnNlX3BhcnNlcl9kaWN0KHNmcGFyc2VfcGFyc2VyICpzZnAsIHNmcGFyc2VfdmVj ICpkZXN0X2tleSwKLSsgICAgICAgICAgICAgICAgICAgICAgICBzZnBhcnNlX3ZhbHVlICpkZXN0 X3ZhbHVlKSB7Ci0gICBpbnQgcnY7Ci0gCi0gICBzd2l0Y2ggKHNmcC0+c3RhdGUpIHsKLS0gIGNh c2UgU0ZfU1RBVEVfRElDVF9JTk5FUl9MSVNUX0JFRk9SRToKLSsgIGNhc2UgU0ZQQVJTRV9TVEFU RV9ESUNUX0lOTkVSX0xJU1RfQkVGT1JFOgotICAgICBydiA9IHBhcnNlcl9za2lwX2lubmVyX2xp c3Qoc2ZwKTsKLSAgICAgaWYgKHJ2ICE9IDApIHsKLSAgICAgICByZXR1cm4gcnY7Ci0gICAgIH0K LSAKLSAgICAgLyogZmFsbCB0aHJvdWdoICovCi0tICBjYXNlIFNGX1NUQVRFX0RJQ1RfQkVGT1JF X1BBUkFNUzoKLSsgIGNhc2UgU0ZQQVJTRV9TVEFURV9ESUNUX0JFRk9SRV9QQVJBTVM6Ci0gICAg IHJ2ID0gcGFyc2VyX3NraXBfcGFyYW1zKHNmcCk7Ci0gICAgIGlmIChydiAhPSAwKSB7Ci0gICAg ICAgcmV0dXJuIHJ2OwotICAgICB9Ci0gCi0gICAgIC8qIGZhbGwgdGhyb3VnaCAqLwotLSAgY2Fz ZSBTRl9TVEFURV9ESUNUX0FGVEVSOgotKyAgY2FzZSBTRlBBUlNFX1NUQVRFX0RJQ1RfQUZURVI6 Ci0gICAgIHJ2ID0gcGFyc2VyX25leHRfa2V5X29yX2l0ZW0oc2ZwKTsKLSAgICAgaWYgKHJ2ICE9 IDApIHsKLSAgICAgICByZXR1cm4gcnY7Ci0gICAgIH0KLSAKLSAgICAgYnJlYWs7Ci0tICBjYXNl IFNGX1NUQVRFX0lOSVRJQUw6Ci0rICBjYXNlIFNGUEFSU0VfU1RBVEVfSU5JVElBTDoKLSAgICAg cGFyc2VyX2Rpc2NhcmRfc3Aoc2ZwKTsKLSAKLSAgICAgaWYgKHBhcnNlcl9lb2Yoc2ZwKSkgewot LSAgICAgIHJldHVybiBTRl9FUlJfRU9GOwotKyAgICAgIHJldHVybiBTRlBBUlNFX0VSUl9FT0Y7 Ci0gICAgIH0KLSAKLSAgICAgYnJlYWs7Ci1AQCAtODk3LDM2ICsxNDgxLDM2IEBAIGludCBzZl9w YXJzZXJfZGljdChzZl9wYXJzZXIgKnNmcCwgc2ZfdmVjICpkZXN0X2tleSwgc2ZfdmFsdWUgKmRl c3RfdmFsdWUpIHsKLSAgIHJldHVybiBwYXJzZXJfZGljdF92YWx1ZShzZnAsIGRlc3RfdmFsdWUp OwotIH0KLSAKLS1pbnQgc2ZfcGFyc2VyX2xpc3Qoc2ZfcGFyc2VyICpzZnAsIHNmX3ZhbHVlICpk ZXN0KSB7Ci0raW50IHNmcGFyc2VfcGFyc2VyX2xpc3Qoc2ZwYXJzZV9wYXJzZXIgKnNmcCwgc2Zw YXJzZV92YWx1ZSAqZGVzdCkgewotICAgaW50IHJ2OwotIAotICAgc3dpdGNoIChzZnAtPnN0YXRl KSB7Ci0tICBjYXNlIFNGX1NUQVRFX0xJU1RfSU5ORVJfTElTVF9CRUZPUkU6Ci0rICBjYXNlIFNG UEFSU0VfU1RBVEVfTElTVF9JTk5FUl9MSVNUX0JFRk9SRToKLSAgICAgcnYgPSBwYXJzZXJfc2tp cF9pbm5lcl9saXN0KHNmcCk7Ci0gICAgIGlmIChydiAhPSAwKSB7Ci0gICAgICAgcmV0dXJuIHJ2 OwotICAgICB9Ci0gCi0gICAgIC8qIGZhbGwgdGhyb3VnaCAqLwotLSAgY2FzZSBTRl9TVEFURV9M SVNUX0JFRk9SRV9QQVJBTVM6Ci0rICBjYXNlIFNGUEFSU0VfU1RBVEVfTElTVF9CRUZPUkVfUEFS QU1TOgotICAgICBydiA9IHBhcnNlcl9za2lwX3BhcmFtcyhzZnApOwotICAgICBpZiAocnYgIT0g MCkgewotICAgICAgIHJldHVybiBydjsKLSAgICAgfQotIAotICAgICAvKiBmYWxsIHRocm91Z2gg Ki8KLS0gIGNhc2UgU0ZfU1RBVEVfTElTVF9BRlRFUjoKLSsgIGNhc2UgU0ZQQVJTRV9TVEFURV9M SVNUX0FGVEVSOgotICAgICBydiA9IHBhcnNlcl9uZXh0X2tleV9vcl9pdGVtKHNmcCk7Ci0gICAg IGlmIChydiAhPSAwKSB7Ci0gICAgICAgcmV0dXJuIHJ2OwotICAgICB9Ci0gCi0gICAgIGJyZWFr OwotLSAgY2FzZSBTRl9TVEFURV9JTklUSUFMOgotKyAgY2FzZSBTRlBBUlNFX1NUQVRFX0lOSVRJ QUw6Ci0gICAgIHBhcnNlcl9kaXNjYXJkX3NwKHNmcCk7Ci0gCi0gICAgIGlmIChwYXJzZXJfZW9m KHNmcCkpIHsKLS0gICAgICByZXR1cm4gU0ZfRVJSX0VPRjsKLSsgICAgICByZXR1cm4gU0ZQQVJT RV9FUlJfRU9GOwotICAgICB9Ci0gCi0gICAgIGJyZWFrOwotQEAgLTkzNywxMyArMTUyMSwxMyBA QCBpbnQgc2ZfcGFyc2VyX2xpc3Qoc2ZfcGFyc2VyICpzZnAsIHNmX3ZhbHVlICpkZXN0KSB7Ci0g Ci0gICBpZiAoKnNmcC0+cG9zID09ICcoJykgewotICAgICBpZiAoZGVzdCkgewotLSAgICAgIGRl c3QtPnR5cGUgPSBTRl9UWVBFX0lOTkVSX0xJU1Q7Ci0tICAgICAgZGVzdC0+ZmxhZ3MgPSBTRl9W QUxVRV9GTEFHX05PTkU7Ci0rICAgICAgZGVzdC0+dHlwZSA9IFNGUEFSU0VfVFlQRV9JTk5FUl9M SVNUOwotKyAgICAgIGRlc3QtPmZsYWdzID0gU0ZQQVJTRV9WQUxVRV9GTEFHX05PTkU7Ci0gICAg IH0KLSAKLSAgICAgKytzZnAtPnBvczsKLSAKLS0gICAgc2ZwLT5zdGF0ZSA9IFNGX1NUQVRFX0xJ U1RfSU5ORVJfTElTVF9CRUZPUkU7Ci0rICAgIHNmcC0+c3RhdGUgPSBTRlBBUlNFX1NUQVRFX0xJ U1RfSU5ORVJfTElTVF9CRUZPUkU7Ci0gCi0gICAgIHJldHVybiAwOwotICAgfQotQEAgLTk1Myw0 NSArMTUzNyw0NSBAQCBpbnQgc2ZfcGFyc2VyX2xpc3Qoc2ZfcGFyc2VyICpzZnAsIHNmX3ZhbHVl ICpkZXN0KSB7Ci0gICAgIHJldHVybiBydjsKLSAgIH0KLSAKLS0gIHNmcC0+c3RhdGUgPSBTRl9T VEFURV9MSVNUX0JFRk9SRV9QQVJBTVM7Ci0rICBzZnAtPnN0YXRlID0gU0ZQQVJTRV9TVEFURV9M SVNUX0JFRk9SRV9QQVJBTVM7Ci0gCi0gICByZXR1cm4gMDsKLSB9Ci0gCi0taW50IHNmX3BhcnNl cl9pdGVtKHNmX3BhcnNlciAqc2ZwLCBzZl92YWx1ZSAqZGVzdCkgewotK2ludCBzZnBhcnNlX3Bh cnNlcl9pdGVtKHNmcGFyc2VfcGFyc2VyICpzZnAsIHNmcGFyc2VfdmFsdWUgKmRlc3QpIHsKLSAg IGludCBydjsKLSAKLSAgIHN3aXRjaCAoc2ZwLT5zdGF0ZSkgewotLSAgY2FzZSBTRl9TVEFURV9J TklUSUFMOgotKyAgY2FzZSBTRlBBUlNFX1NUQVRFX0lOSVRJQUw6Ci0gICAgIHBhcnNlcl9kaXNj YXJkX3NwKHNmcCk7Ci0gCi0gICAgIGlmIChwYXJzZXJfZW9mKHNmcCkpIHsKLS0gICAgICByZXR1 cm4gU0ZfRVJSX1BBUlNFX0VSUk9SOwotKyAgICAgIHJldHVybiBTRlBBUlNFX0VSUl9QQVJTRTsK LSAgICAgfQotIAotICAgICBicmVhazsKLS0gIGNhc2UgU0ZfU1RBVEVfSVRFTV9JTk5FUl9MSVNU X0JFRk9SRToKLSsgIGNhc2UgU0ZQQVJTRV9TVEFURV9JVEVNX0lOTkVSX0xJU1RfQkVGT1JFOgot ICAgICBydiA9IHBhcnNlcl9za2lwX2lubmVyX2xpc3Qoc2ZwKTsKLSAgICAgaWYgKHJ2ICE9IDAp IHsKLSAgICAgICByZXR1cm4gcnY7Ci0gICAgIH0KLSAKLSAgICAgLyogZmFsbCB0aHJvdWdoICov Ci0tICBjYXNlIFNGX1NUQVRFX0lURU1fQkVGT1JFX1BBUkFNUzoKLSsgIGNhc2UgU0ZQQVJTRV9T VEFURV9JVEVNX0JFRk9SRV9QQVJBTVM6Ci0gICAgIHJ2ID0gcGFyc2VyX3NraXBfcGFyYW1zKHNm cCk7Ci0gICAgIGlmIChydiAhPSAwKSB7Ci0gICAgICAgcmV0dXJuIHJ2OwotICAgICB9Ci0gCi0g ICAgIC8qIGZhbGwgdGhyb3VnaCAqLwotLSAgY2FzZSBTRl9TVEFURV9JVEVNX0FGVEVSOgotKyAg Y2FzZSBTRlBBUlNFX1NUQVRFX0lURU1fQUZURVI6Ci0gICAgIHBhcnNlcl9kaXNjYXJkX3NwKHNm cCk7Ci0gCi0gICAgIGlmICghcGFyc2VyX2VvZihzZnApKSB7Ci0tICAgICAgcmV0dXJuIFNGX0VS Ul9QQVJTRV9FUlJPUjsKLSsgICAgICByZXR1cm4gU0ZQQVJTRV9FUlJfUEFSU0U7Ci0gICAgIH0K LSAKLS0gICAgcmV0dXJuIFNGX0VSUl9FT0Y7Ci0rICAgIHJldHVybiBTRlBBUlNFX0VSUl9FT0Y7 Ci0gICBkZWZhdWx0OgotICAgICBhc3NlcnQoMCk7Ci0gICAgIGFib3J0KCk7Ci1AQCAtOTk5LDEz ICsxNTgzLDEzIEBAIGludCBzZl9wYXJzZXJfaXRlbShzZl9wYXJzZXIgKnNmcCwgc2ZfdmFsdWUg KmRlc3QpIHsKLSAKLSAgIGlmICgqc2ZwLT5wb3MgPT0gJygnKSB7Ci0gICAgIGlmIChkZXN0KSB7 Ci0tICAgICAgZGVzdC0+dHlwZSA9IFNGX1RZUEVfSU5ORVJfTElTVDsKLS0gICAgICBkZXN0LT5m bGFncyA9IFNGX1ZBTFVFX0ZMQUdfTk9ORTsKLSsgICAgICBkZXN0LT50eXBlID0gU0ZQQVJTRV9U WVBFX0lOTkVSX0xJU1Q7Ci0rICAgICAgZGVzdC0+ZmxhZ3MgPSBTRlBBUlNFX1ZBTFVFX0ZMQUdf Tk9ORTsKLSAgICAgfQotIAotICAgICArK3NmcC0+cG9zOwotIAotLSAgICBzZnAtPnN0YXRlID0g U0ZfU1RBVEVfSVRFTV9JTk5FUl9MSVNUX0JFRk9SRTsKLSsgICAgc2ZwLT5zdGF0ZSA9IFNGUEFS U0VfU1RBVEVfSVRFTV9JTk5FUl9MSVNUX0JFRk9SRTsKLSAKLSAgICAgcmV0dXJuIDA7Ci0gICB9 Ci1AQCAtMTAxNSwxMiArMTU5OSwxMyBAQCBpbnQgc2ZfcGFyc2VyX2l0ZW0oc2ZfcGFyc2VyICpz ZnAsIHNmX3ZhbHVlICpkZXN0KSB7Ci0gICAgIHJldHVybiBydjsKLSAgIH0KLSAKLS0gIHNmcC0+ c3RhdGUgPSBTRl9TVEFURV9JVEVNX0JFRk9SRV9QQVJBTVM7Ci0rICBzZnAtPnN0YXRlID0gU0ZQ QVJTRV9TVEFURV9JVEVNX0JFRk9SRV9QQVJBTVM7Ci0gCi0gICByZXR1cm4gMDsKLSB9Ci0gCi0t dm9pZCBzZl9wYXJzZXJfaW5pdChzZl9wYXJzZXIgKnNmcCwgY29uc3QgdWludDhfdCAqZGF0YSwg c2l6ZV90IGRhdGFsZW4pIHsKLSt2b2lkIHNmcGFyc2VfcGFyc2VyX2luaXQoc2ZwYXJzZV9wYXJz ZXIgKnNmcCwgY29uc3QgdWludDhfdCAqZGF0YSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAg c2l6ZV90IGRhdGFsZW4pIHsKLSAgIGlmIChkYXRhbGVuID09IDApIHsKLSAgICAgc2ZwLT5wb3Mg PSBzZnAtPmVuZCA9IE5VTEw7Ci0gICB9IGVsc2UgewotQEAgLTEwMjgsMTYgKzE2MTMsMTYgQEAg dm9pZCBzZl9wYXJzZXJfaW5pdChzZl9wYXJzZXIgKnNmcCwgY29uc3QgdWludDhfdCAqZGF0YSwg c2l6ZV90IGRhdGFsZW4pIHsKLSAgICAgc2ZwLT5lbmQgPSBkYXRhICsgZGF0YWxlbjsKLSAgIH0K LSAKLS0gIHNmcC0+c3RhdGUgPSBTRl9TVEFURV9JTklUSUFMOwotKyAgc2ZwLT5zdGF0ZSA9IFNG UEFSU0VfU1RBVEVfSU5JVElBTDsKLSB9Ci0gCi0tdm9pZCBzZl91bmVzY2FwZShzZl92ZWMgKmRl c3QsIGNvbnN0IHNmX3ZlYyAqc3JjKSB7Ci0rdm9pZCBzZnBhcnNlX3VuZXNjYXBlKHNmcGFyc2Vf dmVjICpkZXN0LCBjb25zdCBzZnBhcnNlX3ZlYyAqc3JjKSB7Ci0gICBjb25zdCB1aW50OF90ICpw LCAqcTsKLSAgIHVpbnQ4X3QgKm87Ci0gICBzaXplX3QgbGVuLCBzbGVuOwotIAotICAgaWYgKHNy Yy0+bGVuID09IDApIHsKLS0gICAgKmRlc3QgPSAqc3JjOwotKyAgICBkZXN0LT5sZW4gPSAwOwot IAotICAgICByZXR1cm47Ci0gICB9Ci1AQCAtMTA0OSwxNiArMTYzNCwxMiBAQCB2b2lkIHNmX3Vu ZXNjYXBlKHNmX3ZlYyAqZGVzdCwgY29uc3Qgc2ZfdmVjICpzcmMpIHsKLSAgIGZvciAoOzspIHsK LSAgICAgcSA9IG1lbWNocihwLCAnXFwnLCBsZW4pOwotICAgICBpZiAocSA9PSBOVUxMKSB7Ci0t ICAgICAgaWYgKGxlbiA9PSBzcmMtPmxlbikgewotLSAgICAgICAgKmRlc3QgPSAqc3JjOwotLQot LSAgICAgICAgcmV0dXJuOwotLSAgICAgIH0KLS0KLSAgICAgICBtZW1jcHkobywgcCwgbGVuKTsK LSAgICAgICBvICs9IGxlbjsKLSAKLS0gICAgICBicmVhazsKLSsgICAgICBkZXN0LT5sZW4gPSAo c2l6ZV90KShvIC0gZGVzdC0+YmFzZSk7Ci0rCi0rICAgICAgcmV0dXJuOwotICAgICB9Ci0gCi0g ICAgIHNsZW4gPSAoc2l6ZV90KShxIC0gcCk7Ci1AQCAtMTA2OSwxMSArMTY1MCw5IEBAIHZvaWQg c2ZfdW5lc2NhcGUoc2ZfdmVjICpkZXN0LCBjb25zdCBzZl92ZWMgKnNyYykgewotICAgICAqbysr ID0gKnArKzsKLSAgICAgbGVuIC09IHNsZW4gKyAyOwotICAgfQotLQotLSAgZGVzdC0+bGVuID0g KHNpemVfdCkobyAtIGRlc3QtPmJhc2UpOwotIH0KLSAKLS12b2lkIHNmX2Jhc2U2NGRlY29kZShz Zl92ZWMgKmRlc3QsIGNvbnN0IHNmX3ZlYyAqc3JjKSB7Ci0rdm9pZCBzZnBhcnNlX2Jhc2U2NGRl Y29kZShzZnBhcnNlX3ZlYyAqZGVzdCwgY29uc3Qgc2ZwYXJzZV92ZWMgKnNyYykgewotICAgc3Rh dGljIGNvbnN0IGludCBpbmRleF90YmxbXSA9IHsKLSAgICAgLTEsIC0xLCAtMSwgLTEsIC0xLCAt MSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsCi0g ICAgIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAt MSwgLTEsIC0xLCAtMSwgLTEsIC0xLAotQEAgLTEwOTIsMjAgKzE2NzEsMjIgQEAgdm9pZCBzZl9i YXNlNjRkZWNvZGUoc2ZfdmVjICpkZXN0LCBjb25zdCBzZl92ZWMgKnNyYykgewotICAgdWludDhf dCAqbzsKLSAgIGNvbnN0IHVpbnQ4X3QgKnAsICplbmQ7Ci0gICB1aW50MzJfdCBuOwotLSAgc2l6 ZV90IGk7Ci0rICBzaXplX3QgaSwgbGVmdDsKLSAgIGludCBpZHg7Ci0gCi0tICBhc3NlcnQoKHNy Yy0+bGVuICYgMHgzKSA9PSAwKTsKLS0KLSAgIGlmIChzcmMtPmxlbiA9PSAwKSB7Ci0tICAgICpk ZXN0ID0gKnNyYzsKLSsgICAgZGVzdC0+bGVuID0gMDsKLSAKLSAgICAgcmV0dXJuOwotICAgfQot IAotICAgbyA9IGRlc3QtPmJhc2U7Ci0gICBwID0gc3JjLT5iYXNlOwotLSAgZW5kID0gc3JjLT5i YXNlICsgc3JjLT5sZW47Ci0rICBsZWZ0ID0gc3JjLT5sZW4gJiAweDM7Ci0rICBpZiAobGVmdCA9 PSAwICYmIHNyYy0+YmFzZVtzcmMtPmxlbiAtIDFdID09ICc9JykgewotKyAgICBsZWZ0ID0gNDsK LSsgIH0KLSsgIGVuZCA9IHNyYy0+YmFzZSArIHNyYy0+bGVuIC0gbGVmdDsKLSAKLSAgIGZvciAo OyBwICE9IGVuZDspIHsKLSAgICAgbiA9IDA7Ci1AQCAtMTExMywzMyArMTY5NCw5NCBAQCB2b2lk IHNmX2Jhc2U2NGRlY29kZShzZl92ZWMgKmRlc3QsIGNvbnN0IHNmX3ZlYyAqc3JjKSB7Ci0gICAg IGZvciAoaSA9IDE7IGkgPD0gNDsgKytpLCArK3ApIHsKLSAgICAgICBpZHggPSBpbmRleF90Ymxb KnBdOwotIAotLSAgICAgIGlmIChpZHggPT0gLTEpIHsKLS0gICAgICAgIGFzc2VydChpID4gMik7 Ci0rICAgICAgYXNzZXJ0KGlkeCAhPSAtMSk7Ci0gCi0tICAgICAgICBpZiAoaSA9PSAzKSB7Ci0t ICAgICAgICAgIGFzc2VydCgqcCA9PSAnPScgJiYgKihwICsgMSkgPT0gJz0nICYmIHAgKyAyID09 IGVuZCk7Ci0rICAgICAgbiArPSAodWludDMyX3QpKGlkeCA8PCAoMjQgLSBpICogNikpOwotKyAg ICB9Ci0gCi0tICAgICAgICAgICpvKysgPSAodWludDhfdCkobiA+PiAxNik7Ci0rICAgICpvKysg PSAodWludDhfdCkobiA+PiAxNik7Ci0rICAgICpvKysgPSAobiA+PiA4KSAmIDB4ZmZ1OwotKyAg ICAqbysrID0gbiAmIDB4ZmZ1OwotKyAgfQotIAotLSAgICAgICAgICBnb3RvIGZpbjsKLS0gICAg ICAgIH0KLSsgIHN3aXRjaCAobGVmdCkgewotKyAgY2FzZSAwOgotKyAgICBnb3RvIGZpbjsKLSsg IGNhc2UgMToKLSsgICAgYXNzZXJ0KDApOwotKyAgICBhYm9ydCgpOwotKyAgY2FzZSAzOgotKyAg ICBpZiAoc3JjLT5iYXNlW3NyYy0+bGVuIC0gMV0gPT0gJz0nKSB7Ci0rICAgICAgbGVmdCA9IDI7 Ci0rICAgIH0KLSAKLS0gICAgICAgIGFzc2VydCgqcCA9PSAnPScgJiYgcCArIDEgPT0gZW5kKTsK LSsgICAgYnJlYWs7Ci0rICBjYXNlIDQ6Ci0rICAgIGFzc2VydCgnPScgPT0gc3JjLT5iYXNlW3Ny Yy0+bGVuIC0gMV0pOwotIAotLSAgICAgICAgKm8rKyA9ICh1aW50OF90KShuID4+IDE2KTsKLS0g ICAgICAgICpvKysgPSAobiA+PiA4KSAmIDB4ZmZ1OwotKyAgICBpZiAoc3JjLT5iYXNlW3NyYy0+ bGVuIC0gMl0gPT0gJz0nKSB7Ci0rICAgICAgbGVmdCA9IDI7Ci0rICAgIH0gZWxzZSB7Ci0rICAg ICAgbGVmdCA9IDM7Ci0rICAgIH0KLSAKLS0gICAgICAgIGdvdG8gZmluOwotLSAgICAgIH0KLSsg ICAgYnJlYWs7Ci0rICB9Ci0gCi0tICAgICAgbiArPSAodWludDMyX3QpKGlkeCA8PCAoMjQgLSBp ICogNikpOwotLSAgICB9Ci0rICBzd2l0Y2ggKGxlZnQpIHsKLSsgIGNhc2UgMjoKLSsgICAgKm8g PSAodWludDhfdCkoaW5kZXhfdGJsWypwKytdIDw8IDIpOwotKyAgICAqbysrIHw9ICh1aW50OF90 KShpbmRleF90YmxbKnArK10gPj4gNCk7Ci0gCi0tICAgICpvKysgPSAodWludDhfdCkobiA+PiAx Nik7Ci0rICAgIGJyZWFrOwotKyAgY2FzZSAzOgotKyAgICBuID0gKHVpbnQzMl90KShpbmRleF90 YmxbKnArK10gPDwgMTApOwotKyAgICBuICs9ICh1aW50MzJfdCkoaW5kZXhfdGJsWypwKytdIDw8 IDQpOwotKyAgICBuICs9ICh1aW50MzJfdCkoaW5kZXhfdGJsWypwKytdID4+IDIpOwotICAgICAq bysrID0gKG4gPj4gOCkgJiAweGZmdTsKLSAgICAgKm8rKyA9IG4gJiAweGZmdTsKLSsKLSsgICAg YnJlYWs7Ci0gICB9Ci0gCi0gZmluOgotICAgZGVzdC0+bGVuID0gKHNpemVfdCkobyAtIGRlc3Qt PmJhc2UpOwotIH0KLSsKLSt2b2lkIHNmcGFyc2VfcGN0ZGVjb2RlKHNmcGFyc2VfdmVjICpkZXN0 LCBjb25zdCBzZnBhcnNlX3ZlYyAqc3JjKSB7Ci0rICBjb25zdCB1aW50OF90ICpwLCAqcTsKLSsg IHVpbnQ4X3QgKm87Ci0rICBzaXplX3QgbGVuLCBzbGVuOwotKwotKyAgaWYgKHNyYy0+bGVuID09 IDApIHsKLSsgICAgZGVzdC0+bGVuID0gMDsKLSsKLSsgICAgcmV0dXJuOwotKyAgfQotKwotKyAg byA9IGRlc3QtPmJhc2U7Ci0rICBwID0gc3JjLT5iYXNlOwotKyAgbGVuID0gc3JjLT5sZW47Ci0r Ci0rICBmb3IgKDs7KSB7Ci0rICAgIHEgPSBtZW1jaHIocCwgJyUnLCBsZW4pOwotKyAgICBpZiAo cSA9PSBOVUxMKSB7Ci0rICAgICAgbWVtY3B5KG8sIHAsIGxlbik7Ci0rICAgICAgbyArPSBsZW47 Ci0rCi0rICAgICAgZGVzdC0+bGVuID0gKHNpemVfdCkobyAtIGRlc3QtPmJhc2UpOwotKwotKyAg ICAgIHJldHVybjsKLSsgICAgfQotKwotKyAgICBzbGVuID0gKHNpemVfdCkocSAtIHApOwotKyAg ICBtZW1jcHkobywgcCwgc2xlbik7Ci0rICAgIG8gKz0gc2xlbjsKLSsKLSsgICAgcCA9IHEgKyAx OwotKwotKyAgICBwY3RkZWNvZGUobysrLCAmcCk7Ci0rCi0rICAgIGxlbiAtPSBzbGVuICsgMzsK LSsgIH0KLSt9Ci1kaWZmIC0tZ2l0IGEvZGVwcy9uZ2h0dHAyL2xpYi9zZnBhcnNlLmggYi9kZXBz L25naHR0cDIvbGliL3NmcGFyc2UuaAotaW5kZXggMTQ3NGRiMTQuLjkzNDEyMjFhIDEwMDY0NAot LS0tIGEvZGVwcy9uZ2h0dHAyL2xpYi9zZnBhcnNlLmgKLSsrKyBiL2RlcHMvbmdodHRwMi9saWIv c2ZwYXJzZS5oCi1AQCAtMzEsODYgKzMxLDkwIEBACi0gICAgbGliY3VybCkgKi8KLSAjaWYgKGRl ZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9fV0lOMzJfXykpICYmICFkZWZpbmVkKFdJTjMyKQot ICMgIGRlZmluZSBXSU4zMgotLSNlbmRpZgotKyNlbmRpZiAvKiAoZGVmaW5lZChfV0lOMzIpIHx8 IGRlZmluZWQoX19XSU4zMl9fKSkgJiYgIWRlZmluZWQoV0lOMzIpICovCi0gCi0gI2lmZGVmIF9f Y3BsdXNwbHVzCi0gZXh0ZXJuICJDIiB7Ci0tI2VuZGlmCi0rI2VuZGlmIC8qIGRlZmluZWQoX19j cGx1c3BsdXMpICovCi0gCi0gI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA8IDE4 MDApCi0gLyogTVNWQyA8IDIwMTMgZG9lcyBub3QgaGF2ZSBpbnR0eXBlcy5oIGJlY2F1c2UgaXQg aXMgbm90IEM5OQotICAgIGNvbXBsaWFudC4gIFNlZSBjb21waWxlciBtYWNyb3MgYW5kIHZlcnNp b24gbnVtYmVyIGluCi0gICAgaHR0cHM6Ly9zb3VyY2Vmb3JnZS5uZXQvcC9wcmVkZWYvd2lraS9D b21waWxlcnMvICovCi0gIyAgaW5jbHVkZSA8c3RkaW50Lmg+Ci0tI2Vsc2UgLyogIWRlZmluZWQo X01TQ19WRVIpIHx8IChfTVNDX1ZFUiA+PSAxODAwKSAqLwotKyNlbHNlIC8qICEoZGVmaW5lZChf TVNDX1ZFUikgJiYgKF9NU0NfVkVSIDwgMTgwMCkpICovCi0gIyAgaW5jbHVkZSA8aW50dHlwZXMu aD4KLS0jZW5kaWYgLyogIWRlZmluZWQoX01TQ19WRVIpIHx8IChfTVNDX1ZFUiA+PSAxODAwKSAq LwotKyNlbmRpZiAvKiAhKGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA8IDE4MDApKSAq LwotICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAjaW5jbHVkZSA8c3RkZGVmLmg+Ci0gCi0gLyoq Ci0gICogQGVudW0KLSAgKgotLSAqIDp0eXBlOmBzZl90eXBlYCBkZWZpbmVzIHZhbHVlIHR5cGUu Ci0rICogOnR5cGU6YHNmcGFyc2VfdHlwZWAgZGVmaW5lcyB2YWx1ZSB0eXBlLgotICAqLwotLXR5 cGVkZWYgZW51bSBzZl90eXBlIHsKLSt0eXBlZGVmIGVudW0gc2ZwYXJzZV90eXBlIHsKLSAgIC8q KgotLSAgICogOmVudW06YFNGX1RZUEVfQk9PTEVBTmAgaW5kaWNhdGVzIGJvb2xlYW4gdHlwZS4K LSsgICAqIDplbnVtOmBTRlBBUlNFX1RZUEVfQk9PTEVBTmAgaW5kaWNhdGVzIGJvb2xlYW4gdHlw ZS4KLSAgICAqLwotLSAgU0ZfVFlQRV9CT09MRUFOLAotKyAgU0ZQQVJTRV9UWVBFX0JPT0xFQU4s Ci0gICAvKioKLS0gICAqIDplbnVtOmBTRl9UWVBFX0lOVEVHRVJgIGluZGljYXRlcyBpbnRlZ2Vy IHR5cGUuCi0rICAgKiA6ZW51bTpgU0ZQQVJTRV9UWVBFX0lOVEVHRVJgIGluZGljYXRlcyBpbnRl Z2VyIHR5cGUuCi0gICAgKi8KLS0gIFNGX1RZUEVfSU5URUdFUiwKLSsgIFNGUEFSU0VfVFlQRV9J TlRFR0VSLAotICAgLyoqCi0tICAgKiA6ZW51bTpgU0ZfVFlQRV9ERUNJTUFMYCBpbmRpY2F0ZXMg ZGVjaW1hbCB0eXBlLgotKyAgICogOmVudW06YFNGUEFSU0VfVFlQRV9ERUNJTUFMYCBpbmRpY2F0 ZXMgZGVjaW1hbCB0eXBlLgotICAgICovCi0tICBTRl9UWVBFX0RFQ0lNQUwsCi0rICBTRlBBUlNF X1RZUEVfREVDSU1BTCwKLSAgIC8qKgotLSAgICogOmVudW06YFNGX1RZUEVfU1RSSU5HYCBpbmRp Y2F0ZXMgc3RyaW5nIHR5cGUuCi0rICAgKiA6ZW51bTpgU0ZQQVJTRV9UWVBFX1NUUklOR2AgaW5k aWNhdGVzIHN0cmluZyB0eXBlLgotICAgICovCi0tICBTRl9UWVBFX1NUUklORywKLSsgIFNGUEFS U0VfVFlQRV9TVFJJTkcsCi0gICAvKioKLS0gICAqIDplbnVtOmBTRl9UWVBFX1RPS0VOYCBpbmRp Y2F0ZXMgdG9rZW4gdHlwZS4KLSsgICAqIDplbnVtOmBTRlBBUlNFX1RZUEVfVE9LRU5gIGluZGlj YXRlcyB0b2tlbiB0eXBlLgotICAgICovCi0tICBTRl9UWVBFX1RPS0VOLAotKyAgU0ZQQVJTRV9U WVBFX1RPS0VOLAotICAgLyoqCi0tICAgKiA6ZW51bTpgU0ZfVFlQRV9CWVRFU0VRYCBpbmRpY2F0 ZXMgYnl0ZSBzZXF1ZW5jZSB0eXBlLgotKyAgICogOmVudW06YFNGUEFSU0VfVFlQRV9CWVRFU0VR YCBpbmRpY2F0ZXMgYnl0ZSBzZXF1ZW5jZSB0eXBlLgotICAgICovCi0tICBTRl9UWVBFX0JZVEVT RVEsCi0rICBTRlBBUlNFX1RZUEVfQllURVNFUSwKLSAgIC8qKgotLSAgICogOmVudW06YFNGX1RZ UEVfSU5ORVJfTElTVGAgaW5kaWNhdGVzIGlubmVyIGxpc3QgdHlwZS4KLSsgICAqIDplbnVtOmBT RlBBUlNFX1RZUEVfSU5ORVJfTElTVGAgaW5kaWNhdGVzIGlubmVyIGxpc3QgdHlwZS4KLSAgICAq LwotLSAgU0ZfVFlQRV9JTk5FUl9MSVNULAotKyAgU0ZQQVJTRV9UWVBFX0lOTkVSX0xJU1QsCi0g ICAvKioKLS0gICAqIDplbnVtOmBTRl9UWVBFX0RBVEVgIGluZGljYXRlcyBkYXRlIHR5cGUuCi0r ICAgKiA6ZW51bTpgU0ZQQVJTRV9UWVBFX0RBVEVgIGluZGljYXRlcyBkYXRlIHR5cGUuCi0gICAg Ki8KLS0gIFNGX1RZUEVfREFURQotLX0gc2ZfdHlwZTsKLSsgIFNGUEFSU0VfVFlQRV9EQVRFLAot KyAgLyoqCi0rICAgKiA6ZW51bTpgU0ZQQVJTRV9UWVBFX0RJU1BTVFJJTkdgIGluZGljYXRlcyBk aXNwbGF5IHN0cmluZyB0eXBlLgotKyAgICovCi0rICBTRlBBUlNFX1RZUEVfRElTUFNUUklORwot K30gc2ZwYXJzZV90eXBlOwotIAotIC8qKgotICAqIEBtYWNybwotICAqCi0tICogOm1hY3JvOmBT Rl9FUlJfUEFSU0VfRVJST1JgIGluZGljYXRlcyBmYXRhbCBwYXJzZSBlcnJvciBoYXMKLSsgKiA6 bWFjcm86YFNGUEFSU0VfRVJSX1BBUlNFYCBpbmRpY2F0ZXMgZmF0YWwgcGFyc2UgZXJyb3IgaGFz Ci0gICogb2NjdXJyZWQsIGFuZCBpdCBpcyBub3QgcG9zc2libGUgdG8gY29udGludWUgdGhlIHBy b2Nlc3NpbmcuCi0gICovCi0tI2RlZmluZSBTRl9FUlJfUEFSU0VfRVJST1IgLTEKLSsjZGVmaW5l IFNGUEFSU0VfRVJSX1BBUlNFIC0xCi0gCi0gLyoqCi0gICogQG1hY3JvCi0gICoKLS0gKiA6bWFj cm86YFNGX0VSUl9FT0ZgIGluZGljYXRlcyB0aGF0IHRoZXJlIGlzIG5vdGhpbmcgbGVmdCB0byBy ZWFkLgotLSAqIFRoZSBjb250ZXh0IG9mIHRoaXMgZXJyb3IgdmFyaWVzIGRlcGVuZGluZyBvbiB0 aGUgZnVuY3Rpb24gdGhhdAotLSAqIHJldHVybnMgdGhpcyBlcnJvciBjb2RlLgotKyAqIDptYWNy bzpgU0ZQQVJTRV9FUlJfRU9GYCBpbmRpY2F0ZXMgdGhhdCB0aGVyZSBpcyBub3RoaW5nIGxlZnQg dG8KLSsgKiByZWFkLiAgVGhlIGNvbnRleHQgb2YgdGhpcyBlcnJvciB2YXJpZXMgZGVwZW5kaW5n IG9uIHRoZSBmdW5jdGlvbgotKyAqIHRoYXQgcmV0dXJucyB0aGlzIGVycm9yIGNvZGUuCi0gICov Ci0tI2RlZmluZSBTRl9FUlJfRU9GIC0yCi0rI2RlZmluZSBTRlBBUlNFX0VSUl9FT0YgLTIKLSAK LSAvKioKLSAgKiBAc3RydWN0Ci0gICoKLS0gKiA6dHlwZTpgc2ZfdmVjYCBzdG9yZXMgc2VxdWVu Y2Ugb2YgYnl0ZXMuCi0rICogOnR5cGU6YHNmcGFyc2VfdmVjYCBzdG9yZXMgc2VxdWVuY2Ugb2Yg Ynl0ZXMuCi0gICovCi0tdHlwZWRlZiBzdHJ1Y3Qgc2ZfdmVjIHsKLSt0eXBlZGVmIHN0cnVjdCBz ZnBhcnNlX3ZlYyB7Ci0gICAvKioKLSAgICAqIDptZW1iZXI6YGJhc2VgIHBvaW50cyB0byB0aGUg YmVnaW5uaW5nIG9mIHRoZSBzZXF1ZW5jZSBvZiBieXRlcy4KLSAgICAqLwotQEAgLTExOSwyOSAr MTIzLDI5IEBAIHR5cGVkZWYgc3RydWN0IHNmX3ZlYyB7Ci0gICAgKiA6bWVtYmVyOmBsZW5gIGlz IHRoZSBudW1iZXIgb2YgYnl0ZXMgY29udGFpbmVkIGluIHRoaXMgc2VxdWVuY2UuCi0gICAgKi8K LSAgIHNpemVfdCBsZW47Ci0tfSBzZl92ZWM7Ci0rfSBzZnBhcnNlX3ZlYzsKLSAKLSAvKioKLSAg KiBAbWFjcm8KLSAgKgotLSAqIDptYWNybzpgU0ZfVkFMVUVfRkxBR19OT05FYCBpbmRpY2F0ZXMg bm8gZmxhZyBzZXQuCi0rICogOm1hY3JvOmBTRlBBUlNFX1ZBTFVFX0ZMQUdfTk9ORWAgaW5kaWNh dGVzIG5vIGZsYWcgc2V0LgotICAqLwotLSNkZWZpbmUgU0ZfVkFMVUVfRkxBR19OT05FIDB4MHUK LSsjZGVmaW5lIFNGUEFSU0VfVkFMVUVfRkxBR19OT05FIDB4MHUKLSAKLSAvKioKLSAgKiBAbWFj cm8KLSAgKgotLSAqIDptYWNybzpgU0ZfVkFMVUVfRkxBR19FU0NBUEVEX1NUUklOR2AgaW5kaWNh dGVzIHRoYXQgYSBzdHJpbmcKLSsgKiA6bWFjcm86YFNGUEFSU0VfVkFMVUVfRkxBR19FU0NBUEVE X1NUUklOR2AgaW5kaWNhdGVzIHRoYXQgYSBzdHJpbmcKLSAgKiBjb250YWlucyBlc2NhcGVkIGNo YXJhY3RlcihzKS4KLSAgKi8KLS0jZGVmaW5lIFNGX1ZBTFVFX0ZMQUdfRVNDQVBFRF9TVFJJTkcg MHgxdQotKyNkZWZpbmUgU0ZQQVJTRV9WQUxVRV9GTEFHX0VTQ0FQRURfU1RSSU5HIDB4MXUKLSAK LSAvKioKLSAgKiBAc3RydWN0Ci0gICoKLS0gKiA6dHlwZTpgc2ZfZGVjaW1hbGAgY29udGFpbnMg ZGVjaW1hbCB2YWx1ZS4KLSsgKiA6dHlwZTpgc2ZwYXJzZV9kZWNpbWFsYCBjb250YWlucyBkZWNp bWFsIHZhbHVlLgotICAqLwotLXR5cGVkZWYgc3RydWN0IHNmX2RlY2ltYWwgewotK3R5cGVkZWYg c3RydWN0IHNmcGFyc2VfZGVjaW1hbCB7Ci0gICAvKioKLSAgICAqIDptZW1iZXI6YG51bWVyYCBj b250YWlucyBudW1lcmF0b3Igb2YgdGhlIGRlY2ltYWwgdmFsdWUuCi0gICAgKi8KLUBAIC0xNTAs MjYwICsxNTQsMjg5IEBAIHR5cGVkZWYgc3RydWN0IHNmX2RlY2ltYWwgewotICAgICogOm1lbWJl cjpgZGVub21gIGNvbnRhaW5zIGRlbm9taW5hdG9yIG9mIHRoZSBkZWNpbWFsIHZhbHVlLgotICAg ICovCi0gICBpbnQ2NF90IGRlbm9tOwotLX0gc2ZfZGVjaW1hbDsKLSt9IHNmcGFyc2VfZGVjaW1h bDsKLSAKLSAvKioKLSAgKiBAc3RydWN0Ci0gICoKLS0gKiA6dHlwZTpgc2ZfdmFsdWVgIHN0b3Jl cyBhIFN0cnVjdHVyZWQgRmllbGQgaXRlbS4gIEZvciBJbm5lciBMaXN0LAotLSAqIG9ubHkgdHlw ZSBpcyBzZXQgdG8gOmVudW06YHNmX3R5cGUuU0ZfVFlQRV9JTk5FUl9MSVNUYC4gIEluIG9yZGVy Ci0tICogdG8gcmVhZCB0aGUgaXRlbXMgY29udGFpbmVkIGluIGFuIGlubmVyIGxpc3QsIGNhbGwK LS0gKiBgc2ZfcGFyc2VyX2lubmVyX2xpc3RgLgotKyAqIDp0eXBlOmBzZnBhcnNlX3ZhbHVlYCBz dG9yZXMgYSBTdHJ1Y3R1cmVkIEZpZWxkIGl0ZW0uICBGb3IgSW5uZXIKLSsgKiBMaXN0LCBvbmx5 IHR5cGUgaXMgc2V0IHRvCi0rICogOmVudW06YHNmcGFyc2VfdHlwZS5TRlBBUlNFX1RZUEVfSU5O RVJfTElTVGAuICBJbiBvcmRlciB0byByZWFkIHRoZQotKyAqIGl0ZW1zIGNvbnRhaW5lZCBpbiBh biBpbm5lciBsaXN0LCBjYWxsIGBzZnBhcnNlX3BhcnNlcl9pbm5lcl9saXN0YC4KLSAgKi8KLS10 eXBlZGVmIHN0cnVjdCBzZl92YWx1ZSB7Ci0rdHlwZWRlZiBzdHJ1Y3Qgc2ZwYXJzZV92YWx1ZSB7 Ci0gICAvKioKLSAgICAqIDptZW1iZXI6YHR5cGVgIGlzIHRoZSB0eXBlIG9mIHRoZSB2YWx1ZSBj b250YWluZWQgaW4gdGhpcwotICAgICogcGFydGljdWxhciBvYmplY3QuCi0gICAgKi8KLS0gIHNm X3R5cGUgdHlwZTsKLSsgIHNmcGFyc2VfdHlwZSB0eXBlOwotICAgLyoqCi0gICAgKiA6bWVtYmVy OmBmbGFnc2AgaXMgYml0d2lzZSBPUiBvZiBvbmUgb3IgbW9yZSBvZgotLSAgICogOm1hY3JvOmBT Rl9WQUxVRV9GTEFHXyogPFNGX1ZBTFVFX0ZMQUdfTk9ORT5gLgotKyAgICogOm1hY3JvOmBTRlBB UlNFX1ZBTFVFX0ZMQUdfKiA8U0ZQQVJTRV9WQUxVRV9GTEFHX05PTkU+YC4KLSAgICAqLwotICAg dWludDMyX3QgZmxhZ3M7Ci0gICAvKioKLSAgICAqIEBhbm9udW5pb25fc3RhcnQKLSAgICAqCi0t ICAgKiBAc2ZfdmFsdWVfdmFsdWUKLSsgICAqIEBzZnBhcnNlX3ZhbHVlX3ZhbHVlCi0gICAgKi8K LSAgIHVuaW9uIHsKLSAgICAgLyoqCi0gICAgICAqIDptZW1iZXI6YGJvb2xlYW5gIGNvbnRhaW5z IGJvb2xlYW4gdmFsdWUgaWYgOm1lbWJlcjpgdHlwZWAgPT0KLS0gICAgICogOmVudW06YHNmX3R5 cGUuU0ZfVFlQRV9CT09MRUFOYC4gIDEgaW5kaWNhdGVzIHRydWUsIGFuZCAwCi0tICAgICAqIGlu ZGljYXRlcyBmYWxzZS4KLSsgICAgICogOmVudW06YHNmcGFyc2VfdHlwZS5TRlBBUlNFX1RZUEVf Qk9PTEVBTmAuICAxIGluZGljYXRlcyB0cnVlLAotKyAgICAgKiBhbmQgMCBpbmRpY2F0ZXMgZmFs c2UuCi0gICAgICAqLwotICAgICBpbnQgYm9vbGVhbjsKLSAgICAgLyoqCi0gICAgICAqIDptZW1i ZXI6YGludGVnZXJgIGNvbnRhaW5zIGludGVnZXIgdmFsdWUgaWYgOm1lbWJlcjpgdHlwZWAgaXMK LS0gICAgICogZWl0aGVyIDplbnVtOmBzZl90eXBlLlNGX1RZUEVfSU5URUdFUmAgb3IKLS0gICAg ICogOmVudW06YHNmX3R5cGUuU0ZfVFlQRV9EQVRFYC4KLSsgICAgICogZWl0aGVyIDplbnVtOmBz ZnBhcnNlX3R5cGUuU0ZQQVJTRV9UWVBFX0lOVEVHRVJgIG9yCi0rICAgICAqIDplbnVtOmBzZnBh cnNlX3R5cGUuU0ZQQVJTRV9UWVBFX0RBVEVgLgotICAgICAgKi8KLSAgICAgaW50NjRfdCBpbnRl Z2VyOwotICAgICAvKioKLSAgICAgICogOm1lbWJlcjpgZGVjaW1hbGAgY29udGFpbnMgZGVjaW1h bCB2YWx1ZSBpZiA6bWVtYmVyOmB0eXBlYCA9PQotLSAgICAgKiA6ZW51bTpgc2ZfdHlwZS5TRl9U WVBFX0RFQ0lNQUxgLgotKyAgICAgKiA6ZW51bTpgc2ZwYXJzZV90eXBlLlNGUEFSU0VfVFlQRV9E RUNJTUFMYC4KLSAgICAgICovCi0tICAgIHNmX2RlY2ltYWwgZGVjaW1hbDsKLSsgICAgc2ZwYXJz ZV9kZWNpbWFsIGRlY2ltYWw7Ci0gICAgIC8qKgotICAgICAgKiA6bWVtYmVyOmB2ZWNgIGNvbnRh aW5zIHNlcXVlbmNlIG9mIGJ5dGVzIGlmIDptZW1iZXI6YHR5cGVgIGlzCi0tICAgICAqIGVpdGhl ciA6ZW51bTpgc2ZfdHlwZS5TRl9UWVBFX1NUUklOR2AsCi0tICAgICAqIDplbnVtOmBzZl90eXBl LlNGX1RZUEVfVE9LRU5gLCBvcgotLSAgICAgKiA6ZW51bTpgc2ZfdHlwZS5TRl9UWVBFX0JZVEVT RVFgLgotKyAgICAgKiBlaXRoZXIgOmVudW06YHNmcGFyc2VfdHlwZS5TRlBBUlNFX1RZUEVfU1RS SU5HYCwKLSsgICAgICogOmVudW06YHNmcGFyc2VfdHlwZS5TRlBBUlNFX1RZUEVfVE9LRU5gLAot KyAgICAgKiA6ZW51bTpgc2ZwYXJzZV90eXBlLlNGUEFSU0VfVFlQRV9CWVRFU0VRYCwgb3IKLSsg ICAgICogOmVudW06YHNmcGFyc2VfdHlwZS5TRlBBUlNFX1RZUEVfRElTUFNUUklOR2AuCi0gICAg ICAqCi0tICAgICAqIEZvciA6ZW51bTpgc2ZfdHlwZS5TRl9UWVBFX1NUUklOR2AsIHRoaXMgZmll bGQgY29udGFpbnMgb25lIG9yCi0tICAgICAqIG1vcmUgZXNjYXBlZCBjaGFyYWN0ZXJzIGlmIDpt ZW1iZXI6YGZsYWdzYCBoYXMKLS0gICAgICogOm1hY3JvOmBTRl9WQUxVRV9GTEFHX0VTQ0FQRURf U1RSSU5HYCBzZXQuICBUbyB1bmVzY2FwZSB0aGUKLS0gICAgICogc3RyaW5nLCB1c2UgYHNmX3Vu ZXNjYXBlYC4KLSsgICAgICogRm9yIDplbnVtOmBzZnBhcnNlX3R5cGUuU0ZQQVJTRV9UWVBFX1NU UklOR2AsIHRoaXMgZmllbGQKLSsgICAgICogY29udGFpbnMgb25lIG9yIG1vcmUgZXNjYXBlZCBj aGFyYWN0ZXJzIGlmIDptZW1iZXI6YGZsYWdzYCBoYXMKLSsgICAgICogOm1hY3JvOmBTRlBBUlNF X1ZBTFVFX0ZMQUdfRVNDQVBFRF9TVFJJTkdgIHNldC4gIFRvIHVuZXNjYXBlCi0rICAgICAqIHRo ZSBzdHJpbmcsIHVzZSBgc2ZwYXJzZV91bmVzY2FwZWAuCi0gICAgICAqCi0tICAgICAqIEZvciA6 ZW51bTpgc2ZfdHlwZS5TRl9UWVBFX0JZVEVTRVFgLCB0aGlzIGZpZWxkIGNvbnRhaW5zIGJhc2U2 NAotLSAgICAgKiBlbmNvZGVkIHN0cmluZy4gIFRvIGRlY29kZSB0aGlzIGJ5dGUgc3RyaW5nLCB1 c2UKLS0gICAgICogYHNmX2Jhc2U2NGRlY29kZWAuCi0rICAgICAqIEZvciA6ZW51bTpgc2ZwYXJz ZV90eXBlLlNGUEFSU0VfVFlQRV9CWVRFU0VRYCwgdGhpcyBmaWVsZAotKyAgICAgKiBjb250YWlu cyBiYXNlNjQgZW5jb2RlZCBzdHJpbmcuICBUbyBkZWNvZGUgdGhpcyBieXRlIHN0cmluZywKLSsg ICAgICogdXNlIGBzZnBhcnNlX2Jhc2U2NGRlY29kZWAuCi0gICAgICAqCi0tICAgICAqIElmIDpt ZW1iZXI6YHZlYy5sZW4gPHNmX3ZlYy5sZW4+YCA9PSAwLCA6bWVtYmVyOmB2ZWMuYmFzZQotLSAg ICAgKiA8c2ZfdmVjLmJhc2U+YCBpcyBndWFyYW50ZWVkIHRvIGJlIE5VTEwuCi0rICAgICAqIEZv ciA6ZW51bTpgc2ZwYXJzZV90eXBlLlNGUEFSU0VfVFlQRV9ESVNQU1RSSU5HYCwgdGhpcyBmaWVs ZAotKyAgICAgKiBtYXkgY29udGFpbiBwZXJjZW50LWVuY29kZWQgVVRGLTggYnl0ZSBzZXF1ZW5j ZXMuICBUbyBkZWNvZGUKLSsgICAgICogaXQsIHVzZSBgc2ZwYXJzZV9wY3RkZWNvZGVgLgotKyAg ICAgKgotKyAgICAgKiBJZiA6bWVtYmVyOmB2ZWMubGVuIDxzZnBhcnNlX3ZlYy5sZW4+YCA9PSAw LCA6bWVtYmVyOmB2ZWMuYmFzZQotKyAgICAgKiA8c2ZwYXJzZV92ZWMuYmFzZT5gIGlzIGd1YXJh bnRlZWQgdG8gYmUgTlVMTC4KLSAgICAgICovCi0tICAgIHNmX3ZlYyB2ZWM7Ci0rICAgIHNmcGFy c2VfdmVjIHZlYzsKLSAgICAgLyoqCi0gICAgICAqIEBhbm9udW5pb25fZW5kCi0gICAgICAqLwot ICAgfTsKLS19IHNmX3ZhbHVlOwotK30gc2ZwYXJzZV92YWx1ZTsKLSAKLSAvKioKLSAgKiBAc3Ry dWN0Ci0gICoKLS0gKiA6dHlwZTpgc2ZfcGFyc2VyYCBpcyB0aGUgU3RydWN0dXJlZCBGaWVsZCBW YWx1ZXMgcGFyc2VyLiAgVXNlCi0tICogYHNmX3BhcnNlcl9pbml0YCB0byBpbml0aWFsaXplIGl0 LgotKyAqIDp0eXBlOmBzZnBhcnNlX3BhcnNlcmAgaXMgdGhlIFN0cnVjdHVyZWQgRmllbGQgVmFs dWVzIHBhcnNlci4gIFVzZQotKyAqIGBzZnBhcnNlX3BhcnNlcl9pbml0YCB0byBpbml0aWFsaXpl IGl0LgotICAqLwotLXR5cGVkZWYgc3RydWN0IHNmX3BhcnNlciB7Ci0rdHlwZWRlZiBzdHJ1Y3Qg c2ZwYXJzZV9wYXJzZXIgewotICAgLyogYWxsIGZpZWxkcyBhcmUgcHJpdmF0ZSAqLwotICAgY29u c3QgdWludDhfdCAqcG9zOwotICAgY29uc3QgdWludDhfdCAqZW5kOwotICAgdWludDMyX3Qgc3Rh dGU7Ci0tfSBzZl9wYXJzZXI7Ci0rfSBzZnBhcnNlX3BhcnNlcjsKLSAKLSAvKioKLSAgKiBAZnVu Y3Rpb24KLSAgKgotLSAqIGBzZl9wYXJzZXJfaW5pdGAgaW5pdGlhbGl6ZXMgfHNmcHwgd2l0aCB0 aGUgZ2l2ZW4gYnVmZmVyIHBvaW50ZWQgYnkKLS0gKiB8ZGF0YXwgb2YgbGVuZ3RoIHxkYXRhbGVu fC4KLSsgKiBgc2ZwYXJzZV9wYXJzZXJfaW5pdGAgaW5pdGlhbGl6ZXMgfHNmcHwgd2l0aCB0aGUg Z2l2ZW4gZGF0YSBlbmNvZGVkCi0rICogaW4gU3RydWN0dXJlZCBGaWVsZCBWYWx1ZXMgcG9pbnRl ZCBieSB8ZGF0YXwgb2YgbGVuZ3RoIHxkYXRhbGVufC4KLSAgKi8KLS12b2lkIHNmX3BhcnNlcl9p bml0KHNmX3BhcnNlciAqc2ZwLCBjb25zdCB1aW50OF90ICpkYXRhLCBzaXplX3QgZGF0YWxlbik7 Ci0rdm9pZCBzZnBhcnNlX3BhcnNlcl9pbml0KHNmcGFyc2VfcGFyc2VyICpzZnAsIGNvbnN0IHVp bnQ4X3QgKmRhdGEsCi0rICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBkYXRhbGVuKTsK LSAKLSAvKioKLSAgKiBAZnVuY3Rpb24KLSAgKgotLSAqIGBzZl9wYXJzZXJfcGFyYW1gIHJlYWRz IGEgcGFyYW1ldGVyLiAgSWYgdGhpcyBmdW5jdGlvbiByZXR1cm5zIDAsCi0tICogaXQgc3RvcmVz IHBhcmFtZXRlciBrZXkgYW5kIHZhbHVlIGluIHxkZXN0X2tleXwgYW5kIHxkZXN0X3ZhbHVlfAot KyAqIGBzZnBhcnNlX3BhcnNlcl9wYXJhbWAgcmVhZHMgYSBwYXJhbWV0ZXIuICBJZiB0aGlzIGZ1 bmN0aW9uIHJldHVybnMKLSsgKiAwLCBpdCBzdG9yZXMgcGFyYW1ldGVyIGtleSBhbmQgdmFsdWUg aW4gfGRlc3Rfa2V5fCBhbmQgfGRlc3RfdmFsdWV8Ci0gICogcmVzcGVjdGl2ZWx5LCBpZiB0aGV5 IGFyZSBub3QgTlVMTC4KLSAgKgotICAqIFRoaXMgZnVuY3Rpb24gZG9lcyBubyBlZmZvcnQgdG8g ZmluZCBkdXBsaWNhdGVkIGtleXMuICBTYW1lIGtleSBtYXkKLSAgKiBiZSByZXBvcnRlZCBtb3Jl IHRoYW4gb25jZS4KLSAgKgotICAqIENhbGxlciBzaG91bGQga2VlcCBjYWxsaW5nIHRoaXMgZnVu Y3Rpb24gdW50aWwgaXQgcmV0dXJucyBuZWdhdGl2ZQotLSAqIGVycm9yIGNvZGUuICBJZiBpdCBy ZXR1cm5zIDptYWNybzpgU0ZfRVJSX0VPRmAsIGFsbCBwYXJhbWV0ZXJzIGhhdmUKLS0gKiByZWFk LCBhbmQgY2FsbGVyIGNhbiBjb250aW51ZSB0byByZWFkIHJlc3Qgb2YgdGhlIHZhbHVlcy4gIElm IGl0Ci0tICogcmV0dXJucyA6bWFjcm86YFNGX0VSUl9QQVJTRV9FUlJPUmAsIGl0IGVuY291bnRl cmVkIGZhdGFsIGVycm9yCi0rICogZXJyb3IgY29kZS4gIElmIGl0IHJldHVybnMgOm1hY3JvOmBT RlBBUlNFX0VSUl9FT0ZgLCBhbGwgcGFyYW1ldGVycwotKyAqIGhhdmUgcmVhZCwgYW5kIGNhbGxl ciBjYW4gY29udGludWUgdG8gcmVhZCByZXN0IG9mIHRoZSB2YWx1ZXMuICBJZgotKyAqIGl0IHJl dHVybnMgOm1hY3JvOmBTRlBBUlNFX0VSUl9QQVJTRWAsIGl0IGVuY291bnRlcmVkIGZhdGFsIGVy cm9yCi0gICogd2hpbGUgcGFyc2luZyBmaWVsZCB2YWx1ZS4KLSAgKi8KLS1pbnQgc2ZfcGFyc2Vy X3BhcmFtKHNmX3BhcnNlciAqc2ZwLCBzZl92ZWMgKmRlc3Rfa2V5LCBzZl92YWx1ZSAqZGVzdF92 YWx1ZSk7Ci0raW50IHNmcGFyc2VfcGFyc2VyX3BhcmFtKHNmcGFyc2VfcGFyc2VyICpzZnAsIHNm cGFyc2VfdmVjICpkZXN0X2tleSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgc2ZwYXJzZV92 YWx1ZSAqZGVzdF92YWx1ZSk7Ci0gCi0gLyoqCi0gICogQGZ1bmN0aW9uCi0gICoKLS0gKiBgc2Zf cGFyc2VyX2RpY3RgIHJlYWRzIHRoZSBuZXh0IGRpY3Rpb25hcnkga2V5IGFuZCB2YWx1ZSBwYWly LiAgSWYKLS0gKiB0aGlzIGZ1bmN0aW9uIHJldHVybnMgMCwgaXQgc3RvcmVzIHRoZSBrZXkgYW5k IHZhbHVlIGluIHxkZXN0X2tleXwKLS0gKiBhbmQgfGRlc3RfdmFsdWV8IHJlc3BlY3RpdmVseSwg aWYgdGhleSBhcmUgbm90IE5VTEwuCi0rICogYHNmcGFyc2VfcGFyc2VyX2RpY3RgIHJlYWRzIHRo ZSBuZXh0IGRpY3Rpb25hcnkga2V5IGFuZCB2YWx1ZSBwYWlyLgotKyAqIElmIHRoaXMgZnVuY3Rp b24gcmV0dXJucyAwLCBpdCBzdG9yZXMgdGhlIGtleSBhbmQgdmFsdWUgaW4KLSsgKiB8ZGVzdF9r ZXl8IGFuZCB8ZGVzdF92YWx1ZXwgcmVzcGVjdGl2ZWx5LCBpZiB0aGV5IGFyZSBub3QgTlVMTC4K LSAgKgotICAqIENhbGxlciBjYW4gb3B0aW9uYWxseSByZWFkIHBhcmFtZXRlcnMgYXR0YWNoZWQg dG8gdGhlIHBhaXIgYnkKLS0gKiBjYWxsaW5nIGBzZl9wYXJzZXJfcGFyYW1gLgotKyAqIGNhbGxp bmcgYHNmcGFyc2VfcGFyc2VyX3BhcmFtYC4KLSAgKgotICAqIFRoaXMgZnVuY3Rpb24gZG9lcyBu byBlZmZvcnQgdG8gZmluZCBkdXBsaWNhdGVkIGtleXMuICBTYW1lIGtleSBtYXkKLSAgKiBiZSBy ZXBvcnRlZCBtb3JlIHRoYW4gb25jZS4KLSAgKgotICAqIENhbGxlciBzaG91bGQga2VlcCBjYWxs aW5nIHRoaXMgZnVuY3Rpb24gdW50aWwgaXQgcmV0dXJucyBuZWdhdGl2ZQotLSAqIGVycm9yIGNv ZGUuICBJZiBpdCByZXR1cm5zIDptYWNybzpgU0ZfRVJSX0VPRmAsIGFsbCBrZXkgYW5kIHZhbHVl Ci0tICogcGFpcnMgaGF2ZSBiZWVuIHJlYWQsIGFuZCB0aGVyZSBpcyBub3RoaW5nIGxlZnQgdG8g cmVhZC4KLSsgKiBlcnJvciBjb2RlLiAgSWYgaXQgcmV0dXJucyA6bWFjcm86YFNGUEFSU0VfRVJS X0VPRmAsIGFsbCBrZXkgYW5kCi0rICogdmFsdWUgcGFpcnMgaGF2ZSBiZWVuIHJlYWQsIGFuZCB0 aGVyZSBpcyBub3RoaW5nIGxlZnQgdG8gcmVhZC4KLSAgKgotICAqIFRoaXMgZnVuY3Rpb24gcmV0 dXJucyAwIGlmIGl0IHN1Y2NlZWRzLCBvciBvbmUgb2YgdGhlIGZvbGxvd2luZwotICAqIG5lZ2F0 aXZlIGVycm9yIGNvZGVzOgotICAqCi0tICogOm1hY3JvOmBTRl9FUlJfRU9GYAotKyAqIDptYWNy bzpgU0ZQQVJTRV9FUlJfRU9GYAotICAqICAgICBBbGwgdmFsdWVzIGluIHRoZSBkaWN0aW9uYXJ5 IGhhdmUgcmVhZC4KLS0gKiA6bWFjcm86YFNGX0VSUl9QQVJTRV9FUlJPUmAKLSsgKiA6bWFjcm86 YFNGUEFSU0VfRVJSX1BBUlNFYAotICAqICAgICBJdCBlbmNvdW50ZXJlZCBmYXRhbCBlcnJvciB3 aGlsZSBwYXJzaW5nIGZpZWxkIHZhbHVlLgotICAqLwotLWludCBzZl9wYXJzZXJfZGljdChzZl9w YXJzZXIgKnNmcCwgc2ZfdmVjICpkZXN0X2tleSwgc2ZfdmFsdWUgKmRlc3RfdmFsdWUpOwotK2lu dCBzZnBhcnNlX3BhcnNlcl9kaWN0KHNmcGFyc2VfcGFyc2VyICpzZnAsIHNmcGFyc2VfdmVjICpk ZXN0X2tleSwKLSsgICAgICAgICAgICAgICAgICAgICAgICBzZnBhcnNlX3ZhbHVlICpkZXN0X3Zh bHVlKTsKLSAKLSAvKioKLSAgKiBAZnVuY3Rpb24KLSAgKgotLSAqIGBzZl9wYXJzZXJfbGlzdGAg cmVhZHMgdGhlIG5leHQgbGlzdCBpdGVtLiAgSWYgdGhpcyBmdW5jdGlvbgotKyAqIGBzZnBhcnNl X3BhcnNlcl9saXN0YCByZWFkcyB0aGUgbmV4dCBsaXN0IGl0ZW0uICBJZiB0aGlzIGZ1bmN0aW9u Ci0gICogcmV0dXJucyAwLCBpdCBzdG9yZXMgdGhlIGl0ZW0gaW4gfGRlc3R8IGlmIGl0IGlzIG5v dCBOVUxMLgotICAqCi0gICogQ2FsbGVyIGNhbiBvcHRpb25hbGx5IHJlYWQgcGFyYW1ldGVycyBh dHRhY2hlZCB0byB0aGUgaXRlbSBieQotLSAqIGNhbGxpbmcgYHNmX3BhcnNlcl9wYXJhbWAuCi0r ICogY2FsbGluZyBgc2ZwYXJzZV9wYXJzZXJfcGFyYW1gLgotICAqCi0gICogQ2FsbGVyIHNob3Vs ZCBrZWVwIGNhbGxpbmcgdGhpcyBmdW5jdGlvbiB1bnRpbCBpdCByZXR1cm5zIG5lZ2F0aXZlCi0t ICogZXJyb3IgY29kZS4gIElmIGl0IHJldHVybnMgOm1hY3JvOmBTRl9FUlJfRU9GYCwgYWxsIHZh bHVlcyBpbiB0aGUKLS0gKiBsaXN0IGhhdmUgYmVlbiByZWFkLCBhbmQgdGhlcmUgaXMgbm90aGlu ZyBsZWZ0IHRvIHJlYWQuCi0rICogZXJyb3IgY29kZS4gIElmIGl0IHJldHVybnMgOm1hY3JvOmBT RlBBUlNFX0VSUl9FT0ZgLCBhbGwgdmFsdWVzIGluCi0rICogdGhlIGxpc3QgaGF2ZSBiZWVuIHJl YWQsIGFuZCB0aGVyZSBpcyBub3RoaW5nIGxlZnQgdG8gcmVhZC4KLSAgKgotICAqIFRoaXMgZnVu Y3Rpb24gcmV0dXJucyAwIGlmIGl0IHN1Y2NlZWRzLCBvciBvbmUgb2YgdGhlIGZvbGxvd2luZwot ICAqIG5lZ2F0aXZlIGVycm9yIGNvZGVzOgotICAqCi0tICogOm1hY3JvOmBTRl9FUlJfRU9GYAot KyAqIDptYWNybzpgU0ZQQVJTRV9FUlJfRU9GYAotICAqICAgICBBbGwgdmFsdWVzIGluIHRoZSBs aXN0IGhhdmUgcmVhZC4KLS0gKiA6bWFjcm86YFNGX0VSUl9QQVJTRV9FUlJPUmAKLSsgKiA6bWFj cm86YFNGUEFSU0VfRVJSX1BBUlNFYAotICAqICAgICBJdCBlbmNvdW50ZXJlZCBmYXRhbCBlcnJv ciB3aGlsZSBwYXJzaW5nIGZpZWxkIHZhbHVlLgotICAqLwotLWludCBzZl9wYXJzZXJfbGlzdChz Zl9wYXJzZXIgKnNmcCwgc2ZfdmFsdWUgKmRlc3QpOwotK2ludCBzZnBhcnNlX3BhcnNlcl9saXN0 KHNmcGFyc2VfcGFyc2VyICpzZnAsIHNmcGFyc2VfdmFsdWUgKmRlc3QpOwotIAotIC8qKgotICAq IEBmdW5jdGlvbgotICAqCi0tICogYHNmX3BhcnNlcl9pdGVtYCByZWFkcyBhIHNpbmdsZSBpdGVt LiAgSWYgdGhpcyBmdW5jdGlvbiByZXR1cm5zIDAsCi0tICogaXQgc3RvcmVzIHRoZSBpdGVtIGlu IHxkZXN0fCBpZiBpdCBpcyBub3QgTlVMTC4KLSsgKiBgc2ZwYXJzZV9wYXJzZXJfaXRlbWAgcmVh ZHMgYSBzaW5nbGUgaXRlbS4gIElmIHRoaXMgZnVuY3Rpb24KLSsgKiByZXR1cm5zIDAsIGl0IHN0 b3JlcyB0aGUgaXRlbSBpbiB8ZGVzdHwgaWYgaXQgaXMgbm90IE5VTEwuCi0gICoKLSAgKiBUaGlz IGZ1bmN0aW9uIGlzIG9ubHkgdXNlZCBmb3IgdGhlIGZpZWxkIHZhbHVlIHRoYXQgY29uc2lzdHMg b2YgYQotICAqIHNpbmdsZSBpdGVtLgotICAqCi0gICogQ2FsbGVyIGNhbiBvcHRpb25hbGx5IHJl YWQgcGFyYW1ldGVycyBhdHRhY2hlZCB0byB0aGUgaXRlbSBieQotLSAqIGNhbGxpbmcgYHNmX3Bh cnNlcl9wYXJhbWAuCi0rICogY2FsbGluZyBgc2ZwYXJzZV9wYXJzZXJfcGFyYW1gLgotICAqCi0g ICogQ2FsbGVyIHNob3VsZCBjYWxsIHRoaXMgZnVuY3Rpb24gYWdhaW4gdG8gbWFrZSBzdXJlIHRo YXQgdGhlcmUgaXMKLSAgKiBub3RoaW5nIGxlZnQgdG8gcmVhZC4gIElmIHRoaXMgMm5kIGZ1bmN0 aW9uIGNhbGwgcmV0dXJucwotLSAqIDptYWNybzpgU0ZfRVJSX0VPRmAsIGFsbCBkYXRhIGhhdmUg YmVlbiBwcm9jZXNzZWQgc3VjY2Vzc2Z1bGx5LgotKyAqIDptYWNybzpgU0ZQQVJTRV9FUlJfRU9G YCwgYWxsIGRhdGEgaGF2ZSBiZWVuIHByb2Nlc3NlZAotKyAqIHN1Y2Nlc3NmdWxseS4KLSAgKgot ICAqIFRoaXMgZnVuY3Rpb24gcmV0dXJucyAwIGlmIGl0IHN1Y2NlZWRzLCBvciBvbmUgb2YgdGhl IGZvbGxvd2luZwotICAqIG5lZ2F0aXZlIGVycm9yIGNvZGVzOgotICAqCi0tICogOm1hY3JvOmBT Rl9FUlJfRU9GYAotKyAqIDptYWNybzpgU0ZQQVJTRV9FUlJfRU9GYAotICAqICAgICBUaGVyZSBp cyBub3RoaW5nIGxlZnQgdG8gcmVhZC4KLS0gKiA6bWFjcm86YFNGX0VSUl9QQVJTRV9FUlJPUmAK LSsgKiA6bWFjcm86YFNGUEFSU0VfRVJSX1BBUlNFYAotICAqICAgICBJdCBlbmNvdW50ZXJlZCBm YXRhbCBlcnJvciB3aGlsZSBwYXJzaW5nIGZpZWxkIHZhbHVlLgotICAqLwotLWludCBzZl9wYXJz ZXJfaXRlbShzZl9wYXJzZXIgKnNmcCwgc2ZfdmFsdWUgKmRlc3QpOwotK2ludCBzZnBhcnNlX3Bh cnNlcl9pdGVtKHNmcGFyc2VfcGFyc2VyICpzZnAsIHNmcGFyc2VfdmFsdWUgKmRlc3QpOwotIAot IC8qKgotICAqIEBmdW5jdGlvbgotICAqCi0tICogYHNmX3BhcnNlcl9pbm5lcl9saXN0YCByZWFk cyB0aGUgbmV4dCBpbm5lciBsaXN0IGl0ZW0uICBJZiB0aGlzCi0tICogZnVuY3Rpb24gcmV0dXJu cyAwLCBpdCBzdG9yZXMgdGhlIGl0ZW0gaW4gfGRlc3R8IGlmIGl0IGlzIG5vdCBOVUxMLgotKyAq IGBzZnBhcnNlX3BhcnNlcl9pbm5lcl9saXN0YCByZWFkcyB0aGUgbmV4dCBpbm5lciBsaXN0IGl0 ZW0uICBJZgotKyAqIHRoaXMgZnVuY3Rpb24gcmV0dXJucyAwLCBpdCBzdG9yZXMgdGhlIGl0ZW0g aW4gfGRlc3R8IGlmIGl0IGlzIG5vdAotKyAqIE5VTEwuCi0gICoKLSAgKiBDYWxsZXIgY2FuIG9w dGlvbmFsbHkgcmVhZCBwYXJhbWV0ZXJzIGF0dGFjaGVkIHRvIHRoZSBpdGVtIGJ5Ci0tICogY2Fs bGluZyBgc2ZfcGFyc2VyX3BhcmFtYC4KLSsgKiBjYWxsaW5nIGBzZnBhcnNlX3BhcnNlcl9wYXJh bWAuCi0gICoKLSAgKiBDYWxsZXIgc2hvdWxkIGtlZXAgY2FsbGluZyB0aGlzIGZ1bmN0aW9uIHVu dGlsIGl0IHJldHVybnMgbmVnYXRpdmUKLS0gKiBlcnJvciBjb2RlLiAgSWYgaXQgcmV0dXJucyA6 bWFjcm86YFNGX0VSUl9FT0ZgLCBhbGwgdmFsdWVzIGluIHRoaXMKLS0gKiBpbm5lciBsaXN0IGhh dmUgYmVlbiByZWFkLCBhbmQgY2FsbGVyIGNhbiBvcHRpb25hbGx5IHJlYWQKLSsgKiBlcnJvciBj b2RlLiAgSWYgaXQgcmV0dXJucyA6bWFjcm86YFNGUEFSU0VfRVJSX0VPRmAsIGFsbCB2YWx1ZXMg aW4KLSsgKiB0aGlzIGlubmVyIGxpc3QgaGF2ZSBiZWVuIHJlYWQsIGFuZCBjYWxsZXIgY2FuIG9w dGlvbmFsbHkgcmVhZAotICAqIHBhcmFtZXRlcnMgYXR0YWNoZWQgdG8gdGhpcyBpbm5lciBsaXN0 IGJ5IGNhbGxpbmcKLS0gKiBgc2ZfcGFyc2VyX3BhcmFtYC4gIFRoZW4gY2FsbGVyIGNhbiBjb250 aW51ZSB0byByZWFkIHJlc3Qgb2YgdGhlCi0tICogdmFsdWVzLgotKyAqIGBzZnBhcnNlX3BhcnNl cl9wYXJhbWAuICBUaGVuIGNhbGxlciBjYW4gY29udGludWUgdG8gcmVhZCByZXN0IG9mCi0rICog dGhlIHZhbHVlcy4KLSAgKgotICAqIFRoaXMgZnVuY3Rpb24gcmV0dXJucyAwIGlmIGl0IHN1Y2Nl ZWRzLCBvciBvbmUgb2YgdGhlIGZvbGxvd2luZwotICAqIG5lZ2F0aXZlIGVycm9yIGNvZGVzOgot ICAqCi0tICogOm1hY3JvOmBTRl9FUlJfRU9GYAotKyAqIDptYWNybzpgU0ZQQVJTRV9FUlJfRU9G YAotICAqICAgICBBbGwgdmFsdWVzIGluIHRoZSBpbm5lciBsaXN0IGhhdmUgcmVhZC4KLS0gKiA6 bWFjcm86YFNGX0VSUl9QQVJTRV9FUlJPUmAKLSsgKiA6bWFjcm86YFNGUEFSU0VfRVJSX1BBUlNF YAotICAqICAgICBJdCBlbmNvdW50ZXJlZCBmYXRhbCBlcnJvciB3aGlsZSBwYXJzaW5nIGZpZWxk IHZhbHVlLgotICAqLwotLWludCBzZl9wYXJzZXJfaW5uZXJfbGlzdChzZl9wYXJzZXIgKnNmcCwg c2ZfdmFsdWUgKmRlc3QpOwotK2ludCBzZnBhcnNlX3BhcnNlcl9pbm5lcl9saXN0KHNmcGFyc2Vf cGFyc2VyICpzZnAsIHNmcGFyc2VfdmFsdWUgKmRlc3QpOwotIAotIC8qKgotICAqIEBmdW5jdGlv bgotICAqCi0tICogYHNmX3VuZXNjYXBlYCBjb3BpZXMgfHNyY3wgdG8gfGRlc3R8IGJ5IHJlbW92 aW5nIGVzY2FwZXMgKGBgXGBgKS4KLS0gKiB8c3JjfCBzaG91bGQgYmUgdGhlIHBvaW50ZXIgdG8g Om1lbWJlcjpgc2ZfdmFsdWUudmVjYCBvZiB0eXBlCi0tICogOmVudW06YHNmX3R5cGUuU0ZfVFlQ RV9TVFJJTkdgIHByb2R1Y2VkIGJ5IGVpdGhlciBgc2ZfcGFyc2VyX2RpY3RgLAotLSAqIGBzZl9w YXJzZXJfbGlzdGAsIGBzZl9wYXJzZXJfaW5uZXJfbGlzdGAsIGBzZl9wYXJzZXJfaXRlbWAsIG9y Ci0tICogYHNmX3BhcnNlcl9wYXJhbWAsIG90aGVyd2lzZSB0aGUgYmVoYXZpb3IgaXMgdW5kZWZp bmVkLgotKyAqIGBzZnBhcnNlX3VuZXNjYXBlYCBjb3BpZXMgfHNyY3wgdG8gfGRlc3R8IGJ5IHJl bW92aW5nIGVzY2FwZXMKLSsgKiAoYGBcYGApLiAgfHNyY3wgc2hvdWxkIGJlIHRoZSBwb2ludGVy IHRvCi0rICogOm1lbWJlcjpgc2ZwYXJzZV92YWx1ZS52ZWNgIG9mIHR5cGUKLSsgKiA6ZW51bTpg c2ZwYXJzZV90eXBlLlNGUEFSU0VfVFlQRV9TVFJJTkdgIHByb2R1Y2VkIGJ5IGVpdGhlcgotKyAq IGBzZnBhcnNlX3BhcnNlcl9kaWN0YCwgYHNmcGFyc2VfcGFyc2VyX2xpc3RgLAotKyAqIGBzZnBh cnNlX3BhcnNlcl9pbm5lcl9saXN0YCwgYHNmcGFyc2VfcGFyc2VyX2l0ZW1gLCBvcgotKyAqIGBz ZnBhcnNlX3BhcnNlcl9wYXJhbWAsIG90aGVyd2lzZSB0aGUgYmVoYXZpb3IgaXMgdW5kZWZpbmVk LgotICAqCi0tICogOm1lbWJlcjpgZGVzdC0+YmFzZSA8c2ZfdmVjLmJhc2U+YCBtdXN0IHBvaW50 IHRvIHRoZSBidWZmZXIgdGhhdAotLSAqIGhhcyBzdWZmaWNpZW50IHNwYWNlIHRvIHN0b3JlIHRo ZSB1bmVzY2FwZWQgc3RyaW5nLgotLSAqCi0tICogSWYgdGhlcmUgaXMgbm8gZXNjYXBlIGNoYXJh Y3RlciBpbiB8c3JjfCwgfCpzcmN8IGlzIGFzc2lnbmVkIHRvCi0tICogfCpkZXN0fC4gIFRoaXMg aW5jbHVkZXMgdGhlIGNhc2UgdGhhdCA6bWVtYmVyOmBzcmMtPmxlbgotLSAqIDxzZl92ZWMubGVu PmAgPT0gMC4KLSsgKiA6bWVtYmVyOmBkZXN0LT5iYXNlIDxzZnBhcnNlX3ZlYy5iYXNlPmAgbXVz dCBwb2ludCB0byB0aGUgYnVmZmVyCi0rICogdGhhdCBoYXMgc3VmZmljaWVudCBzcGFjZSB0byBz dG9yZSB0aGUgdW5lc2NhcGVkIHN0cmluZy4gIFRoZQotKyAqIG1lbW9yeSBhcmVhcyBwb2ludGVk IGJ5IDptZW1iZXI6YGRlc3QtPmJhc2UgPHNmcGFyc2VfdmVjLmJhc2U+YCBhbmQKLSsgKiA6bWVt YmVyOmBzcmMtPmJhc2UgPHNmcGFyc2VfdmVjLmJhc2U+YCBtdXN0IG5vdCBvdmVybGFwLgotICAq Ci0gICogVGhpcyBmdW5jdGlvbiBzZXRzIHRoZSBsZW5ndGggb2YgdW5lc2NhcGVkIHN0cmluZyB0 bwotLSAqIDptZW1iZXI6YGRlc3QtPmxlbiA8c2ZfdmVjLmxlbj5gLgotKyAqIDptZW1iZXI6YGRl c3QtPmxlbiA8c2ZwYXJzZV92ZWMubGVuPmAuCi0gICovCi0tdm9pZCBzZl91bmVzY2FwZShzZl92 ZWMgKmRlc3QsIGNvbnN0IHNmX3ZlYyAqc3JjKTsKLSt2b2lkIHNmcGFyc2VfdW5lc2NhcGUoc2Zw YXJzZV92ZWMgKmRlc3QsIGNvbnN0IHNmcGFyc2VfdmVjICpzcmMpOwotIAotIC8qKgotICAqIEBm dW5jdGlvbgotICAqCi0tICogYHNmX2Jhc2U2NGRlY29kZWAgZGVjb2RlcyBCYXNlNjQgZW5jb2Rl ZCBzdHJpbmcgfHNyY3wgYW5kIHdyaXRlcwotLSAqIHRoZSByZXN1bHQgaW50byB8ZGVzdHwuICB8 c3JjfCBzaG91bGQgYmUgdGhlIHBvaW50ZXIgdG8KLS0gKiA6bWVtYmVyOmBzZl92YWx1ZS52ZWNg IG9mIHR5cGUgOmVudW06YHNmX3R5cGUuU0ZfVFlQRV9CWVRFU0VRYAotLSAqIHByb2R1Y2VkIGJ5 IGVpdGhlciBgc2ZfcGFyc2VyX2RpY3RgLCBgc2ZfcGFyc2VyX2xpc3RgLAotLSAqIGBzZl9wYXJz ZXJfaW5uZXJfbGlzdGAsIGBzZl9wYXJzZXJfaXRlbWAsIG9yIGBzZl9wYXJzZXJfcGFyYW1gLAot LSAqIG90aGVyd2lzZSB0aGUgYmVoYXZpb3IgaXMgdW5kZWZpbmVkLgotKyAqIGBzZnBhcnNlX2Jh c2U2NGRlY29kZWAgZGVjb2RlcyBCYXNlNjQgZW5jb2RlZCBzdHJpbmcgfHNyY3wgYW5kCi0rICog d3JpdGVzIHRoZSByZXN1bHQgaW50byB8ZGVzdHwuICB8c3JjfCBzaG91bGQgYmUgdGhlIHBvaW50 ZXIgdG8KLSsgKiA6bWVtYmVyOmBzZnBhcnNlX3ZhbHVlLnZlY2Agb2YgdHlwZQotKyAqIDplbnVt OmBzZnBhcnNlX3R5cGUuU0ZQQVJTRV9UWVBFX0JZVEVTRVFgIHByb2R1Y2VkIGJ5IGVpdGhlcgot KyAqIGBzZnBhcnNlX3BhcnNlcl9kaWN0YCwgYHNmcGFyc2VfcGFyc2VyX2xpc3RgLAotKyAqIGBz ZnBhcnNlX3BhcnNlcl9pbm5lcl9saXN0YCwgYHNmcGFyc2VfcGFyc2VyX2l0ZW1gLCBvcgotKyAq IGBzZnBhcnNlX3BhcnNlcl9wYXJhbWAsIG90aGVyd2lzZSB0aGUgYmVoYXZpb3IgaXMgdW5kZWZp bmVkLgotKyAqCi0rICogOm1lbWJlcjpgZGVzdC0+YmFzZSA8c2ZwYXJzZV92ZWMuYmFzZT5gIG11 c3QgcG9pbnQgdG8gdGhlIGJ1ZmZlcgotKyAqIHRoYXQgaGFzIHN1ZmZpY2llbnQgc3BhY2UgdG8g c3RvcmUgdGhlIGRlY29kZWQgYnl0ZSBzdHJpbmcuCi0gICoKLS0gKiA6bWVtYmVyOmBkZXN0LT5i YXNlIDxzZl92ZWMuYmFzZT5gIG11c3QgcG9pbnQgdG8gdGhlIGJ1ZmZlciB0aGF0Ci0tICogaGFz IHN1ZmZpY2llbnQgc3BhY2UgdG8gc3RvcmUgdGhlIGRlY29kZWQgYnl0ZSBzdHJpbmcuCi0rICog VGhpcyBmdW5jdGlvbiBzZXRzIHRoZSBsZW5ndGggb2YgZGVjb2RlZCBieXRlIHN0cmluZyB0bwot KyAqIDptZW1iZXI6YGRlc3QtPmxlbiA8c2ZwYXJzZV92ZWMubGVuPmAuCi0rICovCi0rdm9pZCBz ZnBhcnNlX2Jhc2U2NGRlY29kZShzZnBhcnNlX3ZlYyAqZGVzdCwgY29uc3Qgc2ZwYXJzZV92ZWMg KnNyYyk7Ci0rCi0rLyoqCi0rICogQGZ1bmN0aW9uCi0rICoKLSsgKiBgc2ZwYXJzZV9wY3RkZWNv ZGVgIGRlY29kZXMgcGVyY2VudC1lbmNvZGVkIHN0cmluZyB8c3JjfCBhbmQgd3JpdGVzCi0rICog dGhlIHJlc3VsdCBpbnRvIHxkZXN0fC4gIHxzcmN8IHNob3VsZCBiZSB0aGUgcG9pbnRlciB0bwot KyAqIDptZW1iZXI6YHNmcGFyc2VfdmFsdWUudmVjYCBvZiB0eXBlCi0rICogOmVudW06YHNmcGFy c2VfdHlwZS5TRlBBUlNFX1RZUEVfRElTUFNUUklOR2AgcHJvZHVjZWQgYnkgZWl0aGVyCi0rICog YHNmcGFyc2VfcGFyc2VyX2RpY3RgLCBgc2ZwYXJzZV9wYXJzZXJfbGlzdGAsCi0rICogYHNmcGFy c2VfcGFyc2VyX2lubmVyX2xpc3RgLCBgc2ZwYXJzZV9wYXJzZXJfaXRlbWAsIG9yCi0rICogYHNm cGFyc2VfcGFyc2VyX3BhcmFtYCwgb3RoZXJ3aXNlIHRoZSBiZWhhdmlvciBpcyB1bmRlZmluZWQu Ci0gICoKLS0gKiBJZiA6bWVtYmVyOmBzcmMtPmxlbiA8c2ZfdmVjLmxlbj5gID09IDAsIHwqc3Jj fCBpcyBhc3NpZ25lZCB0bwotLSAqIHwqZGVzdHwuCi0rICogOm1lbWJlcjpgZGVzdC0+YmFzZSA8 c2ZwYXJzZV92ZWMuYmFzZT5gIG11c3QgcG9pbnQgdG8gdGhlIGJ1ZmZlcgotKyAqIHRoYXQgaGFz IHN1ZmZpY2llbnQgc3BhY2UgdG8gc3RvcmUgdGhlIGRlY29kZWQgYnl0ZSBzdHJpbmcuICBUaGUK LSsgKiBtZW1vcnkgYXJlYXMgcG9pbnRlZCBieSA6bWVtYmVyOmBkZXN0LT5iYXNlIDxzZnBhcnNl X3ZlYy5iYXNlPmAgYW5kCi0rICogOm1lbWJlcjpgc3JjLT5iYXNlIDxzZnBhcnNlX3ZlYy5iYXNl PmAgbXVzdCBub3Qgb3ZlcmxhcC4KLSAgKgotICAqIFRoaXMgZnVuY3Rpb24gc2V0cyB0aGUgbGVu Z3RoIG9mIGRlY29kZWQgYnl0ZSBzdHJpbmcgdG8KLS0gKiA6bWVtYmVyOmBkZXN0LT5sZW4gPHNm X3ZlYy5sZW4+YC4KLSsgKiA6bWVtYmVyOmBkZXN0LT5sZW4gPHNmcGFyc2VfdmVjLmxlbj5gLgot ICAqLwotLXZvaWQgc2ZfYmFzZTY0ZGVjb2RlKHNmX3ZlYyAqZGVzdCwgY29uc3Qgc2ZfdmVjICpz cmMpOwotK3ZvaWQgc2ZwYXJzZV9wY3RkZWNvZGUoc2ZwYXJzZV92ZWMgKmRlc3QsIGNvbnN0IHNm cGFyc2VfdmVjICpzcmMpOwotIAotICNpZmRlZiBfX2NwbHVzcGx1cwotIH0KLS0jZW5kaWYKLSsj ZW5kaWYgLyogZGVmaW5lZChfX2NwbHVzcGx1cykgKi8KLSAKLS0jZW5kaWYgLyogU0ZQQVJTRV9I ICovCi0rI2VuZGlmIC8qICFkZWZpbmVkKFNGUEFSU0VfSCkgKi8KLS0tIAotMi41My4wCi0KCmRp ZmYgLS1naXQgYS9ub2RlanMyMi5zcGVjIGIvbm9kZWpzMjIuc3BlYwppbmRleCBkMzRhYjdmLi5l ZjJkZWJiIDEwMDY0NAotLS0gYS9ub2RlanMyMi5zcGVjCisrKyBiL25vZGVqczIyLnNwZWMKQEAg LTMsNyArMyw3IEBACiAle2xvYWQ6JXtfc291cmNlZGlyfS9ub2RlanMuc3JwbS5tYWNyb3N9CiAK ICMgPT09IFZlcnNpb25zIG9mIGFueSBzb2Z0d2FyZSBzaGlwcGVkIGluIHRoZSBtYWluIG5vZGVq cyB0YXJiYWxsCi0lbm9kZWpzX2RlZmluZV92ZXJzaW9uIG5vZGUgMToyMi4yMi4yLSV7YXV0b3Jl bGVhc2V9IC1wCislbm9kZWpzX2RlZmluZV92ZXJzaW9uIG5vZGUgMToyMi4yMy4xLSV7YXV0b3Jl bGVhc2V9IC1wCiAKICMgU3BlY2lhbCByZWxlYXNlIGZvciBzdWItcGFja2FnZXMgd2l0aCB0aGVp ciBvd24gdmVyc2lvbiBzdHJpbmcuCiAjIFRoZSBjb21wbGV4IHJlbGVhc2Ugc3RyaW5nIGVuc3Vy ZXMgdGhhdCB0aGUgc3VicGFja2FnZSByZWxlYXNlIGlzIGFsd2F5cyBpbmNyZWFzaW5nLApAQCAt MTUsNDQgKzE1LDQ0IEBACiAjIGV4cGVjdCBhbnl0aGluZyBiZXR3ZWVuIHRoZSBtYXJrZXJzIHRv IGJlIG92ZXJ3cml0dGVuIG9uIGFueSB1cGRhdGUuCiAKICMgQkVHSU4gYXV0b21hdGljLXZlcnNp b24tbWFjcm9zICAjIERPIE5PVCBSRU1PVkUgVEhJUyBMSU5FIQotIyBWZXJzaW9uIGZyb20gbm9k ZS12MjIuMjIuMi9zcmMvbm9kZV92ZXJzaW9uLmgKKyMgVmVyc2lvbiBmcm9tIG5vZGUtdjIyLjIz LjEvc3JjL25vZGVfdmVyc2lvbi5oCiAlZ2xvYmFsIG5vZGVfc292ZXJzaW9uIDEyNwogCi0jIFZl cnNpb24gZnJvbSBub2RlLXYyMi4yMi4yL2RlcHMvYWRhL2FkYS5oCisjIFZlcnNpb24gZnJvbSBu b2RlLXYyMi4yMy4xL2RlcHMvYWRhL2FkYS5oCiAlbm9kZWpzX2RlZmluZV92ZXJzaW9uIGFkYSAy LjkuMgotIyBWZXJzaW9uIGZyb20gbm9kZS12MjIuMjIuMi9kZXBzL2Jyb3RsaS9jL2NvbW1vbi92 ZXJzaW9uLmgKKyMgVmVyc2lvbiBmcm9tIG5vZGUtdjIyLjIzLjEvZGVwcy9icm90bGkvYy9jb21t b24vdmVyc2lvbi5oCiAlbm9kZWpzX2RlZmluZV92ZXJzaW9uIGJyb3RsaSAxLjEuMAotIyBWZXJz aW9uIGZyb20gbm9kZS12MjIuMjIuMi9kZXBzL2NhcmVzL2luY2x1ZGUvYXJlc192ZXJzaW9uLmgK KyMgVmVyc2lvbiBmcm9tIG5vZGUtdjIyLjIzLjEvZGVwcy9jYXJlcy9pbmNsdWRlL2FyZXNfdmVy c2lvbi5oCiAlbm9kZWpzX2RlZmluZV92ZXJzaW9uIGNfYXJlcyAxLjM0LjYKLSMgVmVyc2lvbiBm cm9tIG5vZGUtdjIyLjIyLjIvZGVwcy9oaXN0b2dyYW0vaW5jbHVkZS9oZHIvaGRyX2hpc3RvZ3Jh bV92ZXJzaW9uLmgKKyMgVmVyc2lvbiBmcm9tIG5vZGUtdjIyLjIzLjEvZGVwcy9oaXN0b2dyYW0v aW5jbHVkZS9oZHIvaGRyX2hpc3RvZ3JhbV92ZXJzaW9uLmgKICVub2RlanNfZGVmaW5lX3ZlcnNp b24gaGlzdG9ncmFtIDAuMTEuOQotIyBWZXJzaW9uIGZyb20gbm9kZS12MjIuMjIuMi90b29scy9p Y3UvY3VycmVudF92ZXIuZGVwCisjIFZlcnNpb24gZnJvbSBub2RlLXYyMi4yMy4xL3Rvb2xzL2lj dS9jdXJyZW50X3Zlci5kZXAKICVub2RlanNfZGVmaW5lX3ZlcnNpb24gaWN1IDc4LjIgLXAKLSMg VmVyc2lvbiBmcm9tIG5vZGUtdjIyLjIyLjIvZGVwcy91di9pbmNsdWRlL3V2L3ZlcnNpb24uaAor IyBWZXJzaW9uIGZyb20gbm9kZS12MjIuMjMuMS9kZXBzL3V2L2luY2x1ZGUvdXYvdmVyc2lvbi5o CiAlbm9kZWpzX2RlZmluZV92ZXJzaW9uIGxpYnV2IDEuNTEuMAotIyBWZXJzaW9uIGZyb20gbm9k ZS12MjIuMjIuMi9kZXBzL2xsaHR0cC9pbmNsdWRlL2xsaHR0cC5oCi0lbm9kZWpzX2RlZmluZV92 ZXJzaW9uIGxsaHR0cCA5LjMuMAotIyBWZXJzaW9uIGZyb20gbm9kZS12MjIuMjIuMi9kZXBzL25n aHR0cDIvbGliL2luY2x1ZGVzL25naHR0cDIvbmdodHRwMnZlci5oCi0lbm9kZWpzX2RlZmluZV92 ZXJzaW9uIG5naHR0cDIgMS42OC4xCi0jIFZlcnNpb24gZnJvbSBub2RlLXYyMi4yMi4yL2RlcHMv bmd0Y3AyL25naHR0cDMvbGliL2luY2x1ZGVzL25naHR0cDMvdmVyc2lvbi5oCisjIFZlcnNpb24g ZnJvbSBub2RlLXYyMi4yMy4xL2RlcHMvbGxodHRwL2luY2x1ZGUvbGxodHRwLmgKKyVub2RlanNf ZGVmaW5lX3ZlcnNpb24gbGxodHRwIDkuNC4yCisjIFZlcnNpb24gZnJvbSBub2RlLXYyMi4yMy4x L2RlcHMvbmdodHRwMi9saWIvaW5jbHVkZXMvbmdodHRwMi9uZ2h0dHAydmVyLmgKKyVub2RlanNf ZGVmaW5lX3ZlcnNpb24gbmdodHRwMiAxLjY5LjAKKyMgVmVyc2lvbiBmcm9tIG5vZGUtdjIyLjIz LjEvZGVwcy9uZ3RjcDIvbmdodHRwMy9saWIvaW5jbHVkZXMvbmdodHRwMy92ZXJzaW9uLmgKICVu b2RlanNfZGVmaW5lX3ZlcnNpb24gbmdodHRwMyAxLjYuMAotIyBWZXJzaW9uIGZyb20gbm9kZS12 MjIuMjIuMi9kZXBzL25ndGNwMi9uZ3RjcDIvbGliL2luY2x1ZGVzL25ndGNwMi92ZXJzaW9uLmgK KyMgVmVyc2lvbiBmcm9tIG5vZGUtdjIyLjIzLjEvZGVwcy9uZ3RjcDIvbmd0Y3AyL2xpYi9pbmNs dWRlcy9uZ3RjcDIvdmVyc2lvbi5oCiAlbm9kZWpzX2RlZmluZV92ZXJzaW9uIG5ndGNwMiAxLjEx LjAKLSMgVmVyc2lvbiBmcm9tIG5vZGUtdjIyLjIyLjIvZGVwcy9janMtbW9kdWxlLWxleGVyL3Ny Yy9wYWNrYWdlLmpzb24KKyMgVmVyc2lvbiBmcm9tIG5vZGUtdjIyLjIzLjEvZGVwcy9janMtbW9k dWxlLWxleGVyL3NyYy9wYWNrYWdlLmpzb24KICVub2RlanNfZGVmaW5lX3ZlcnNpb24gbm9kZWpz LWNqcy1tb2R1bGUtbGV4ZXIgMi4yLjAKLSMgVmVyc2lvbiBmcm9tIG5vZGUtdjIyLjIyLjIvbGli L3B1bnljb2RlLmpzCisjIFZlcnNpb24gZnJvbSBub2RlLXYyMi4yMy4xL2xpYi9wdW55Y29kZS5q cwogJW5vZGVqc19kZWZpbmVfdmVyc2lvbiBub2RlanMtcHVueWNvZGUgMi4xLjAKLSMgVmVyc2lv biBmcm9tIG5vZGUtdjIyLjIyLjIvZGVwcy91bmRpY2kvc3JjL3BhY2thZ2UuanNvbgotJW5vZGVq c19kZWZpbmVfdmVyc2lvbiBub2RlanMtdW5kaWNpIDYuMjQuMQotIyBWZXJzaW9uIGZyb20gbm9k ZS12MjIuMjIuMi9kZXBzL25wbS9wYWNrYWdlLmpzb24KLSVub2RlanNfZGVmaW5lX3ZlcnNpb24g bnBtIDE6MTAuOS43LSV7bm9kZWpzX3N1YnBhY2thZ2VfcmVsZWFzZX0KLSMgVmVyc2lvbiBmcm9t IG5vZGUtdjIyLjIyLjIvZGVwcy9zcWxpdGUvc3FsaXRlMy5oCi0lbm9kZWpzX2RlZmluZV92ZXJz aW9uIHNxbGl0ZSAzLjUxLjIKLSMgVmVyc2lvbiBmcm9tIG5vZGUtdjIyLjIyLjIvZGVwcy91dndh c2kvaW5jbHVkZS91dndhc2kuaAorIyBWZXJzaW9uIGZyb20gbm9kZS12MjIuMjMuMS9kZXBzL3Vu ZGljaS9zcmMvcGFja2FnZS5qc29uCislbm9kZWpzX2RlZmluZV92ZXJzaW9uIG5vZGVqcy11bmRp Y2kgNi4yNy4wCisjIFZlcnNpb24gZnJvbSBub2RlLXYyMi4yMy4xL2RlcHMvbnBtL3BhY2thZ2Uu anNvbgorJW5vZGVqc19kZWZpbmVfdmVyc2lvbiBucG0gMToxMC45LjgtJXtub2RlanNfc3VicGFj a2FnZV9yZWxlYXNlfQorIyBWZXJzaW9uIGZyb20gbm9kZS12MjIuMjMuMS9kZXBzL3NxbGl0ZS9z cWxpdGUzLmgKKyVub2RlanNfZGVmaW5lX3ZlcnNpb24gc3FsaXRlIDMuNTEuMworIyBWZXJzaW9u IGZyb20gbm9kZS12MjIuMjMuMS9kZXBzL3V2d2FzaS9pbmNsdWRlL3V2d2FzaS5oCiAlbm9kZWpz X2RlZmluZV92ZXJzaW9uIHV2d2FzaSAwLjAuMjMKLSMgVmVyc2lvbiBmcm9tIG5vZGUtdjIyLjIy LjIvZGVwcy92OC9pbmNsdWRlL3Y4LXZlcnNpb24uaAorIyBWZXJzaW9uIGZyb20gbm9kZS12MjIu MjMuMS9kZXBzL3Y4L2luY2x1ZGUvdjgtdmVyc2lvbi5oCiAlbm9kZWpzX2RlZmluZV92ZXJzaW9u IHY4IDM6MTIuNC4yNTQuMjEtJXtub2RlanNfc3VicGFja2FnZV9yZWxlYXNlfSAtcAotIyBWZXJz aW9uIGZyb20gbm9kZS12MjIuMjIuMi9kZXBzL3psaWIvemxpYi5oCisjIFZlcnNpb24gZnJvbSBu b2RlLXYyMi4yMy4xL2RlcHMvemxpYi96bGliLmgKICVub2RlanNfZGVmaW5lX3ZlcnNpb24gemxp YiAxLjMuMQogIyBFTkQgYXV0b21hdGljLXZlcnNpb24tbWFjcm9zICAjIERPIE5PVCBSRU1PVkUg VEhJUyBMSU5FIQogCkBAIC0xMDIsNiArMTAyLDcgQEAgQnVpbGRSZXF1aXJlczogIHB5dGhvbiV7 cHl0aG9uM19wa2d2ZXJzaW9ufS1kZXZlbAogQnVpbGRSZXF1aXJlczogICV7cHkzX2Rpc3Qgc2V0 dXB0b29scyBqaW5qYTJ9CiAjIEFkZGl0aW9uYWwgbGlicmFyaWVzLCBlaXRoZXIgc3lzdGVtIG9y IHZlbmRvcmVkIG9uZXMKIEJ1aWxkUmVxdWlyZXM6ICBwa2djb25maWcob3BlbnNzbCkgPj0gMy4w LjIKK0J1aWxkUmVxdWlyZXM6IChwa2djb25maWcob3BlbnNzbCkgPj0gMy4wLjIgd2l0aCBwa2dj b25maWcob3BlbnNzbCkgPCA0LjApCiAlbm9kZWpzX2RlY2xhcmVfYnVuZGxlZCAtYSAgYWRhCiAl bm9kZWpzX2RlY2xhcmVfYnVuZGxlZCAtYSAgYnJvdGxpICAgICAgLXBsaWJicm90bGlkZWMsbGli YnJvdGxpZW5jCiAlbm9kZWpzX2RlY2xhcmVfYnVuZGxlZCAtYSAgYy1hcmVzICAgICAgLXBsaWJj YXJlcwpAQCAtMTY0LDcgKzE2NSw2IEBAIFNvdXJjZTEwMTogICAgICBub2RlanMuc3JwbS5tYWNy b3MKICVwYXRjaGxpc3QKIDAwMDEtUmVtb3ZlLXVudXNlZC1PcGVuU1NMLWNvbmZpZy5wYXRjaAog MDAwMS1maXBzLWRpc2FibGUtb3B0aW9ucy5wYXRjaAotMDAwMS1kZXBzLXVwZGF0ZS1uZ2h0dHAy LXRvLTEuNjguMS5wYXRjaAogCiAlZGVzY3JpcHRpb24KIE5vZGUuanMgaXMgYSBwbGF0Zm9ybSBi dWlsdCBvbiBDaHJvbWUncyBKYXZhU2NyaXB0IHJ1bnRpbWUKQEAgLTI5Niw3ICsyOTYsNyBAQCBC aW5hcnkgc3ltbGlua3MgZm9yIE5vZGUuanMgUGFja2FnZSBNYW5hZ2VyLgogcmVhZG9ubHkgLWEg ZGV2ZW5kb3JlZF9wYXRocz0oCiAgICAgZGVwcy92OC90aGlyZF9wYXJ0eS9qaW5qYTIgdG9vbHMv aW5zcGVjdG9yX3Byb3RvY29sL2ppbmphMgogICAgICV7PyF3aXRoX2J1bmRsZWRfYnJvdGxpOmRl cHMvYnJvdGxpfQotICAgICV7PyF3aXRoX2J1bmRsZWRfY19hcmVzOmRlcHMvY2FyZXN9CisgICAg IyV7PyF3aXRoX2J1bmRsZWRfY19hcmVzOmRlcHMvY2FyZXN9CiAgICAgJXs/IXdpdGhfYnVuZGxl ZF9saWJ1djpkZXBzL3V2fQogICAgICV7PyF3aXRoX2J1bmRsZWRfbm9kZWpzX2Nqc19tb2R1bGVf bGV4ZXI6ZGVwcy9janMtbW9kdWxlLWxleGVyfQogICAgICV7PyF3aXRoX2J1bmRsZWRfbm9kZWpz X3VuZGljaTpkZXBzL3VuZGljaX0KQEAgLTM0Myw3ICszNDMsMTAgQEAgcmVhZG9ubHkgLWEgY29u ZmlndXJlX2ZsYWdzPSgKICAgICAtLW9wZW5zc2wtdXNlLWRlZi1jYS1zdG9yZQogICAgICMgTGlu ayB3aXRoIHN5c3RlbSBsaWJyYXJpZXMgd2hlcmUgYXBwcm9wcmlhdGUKICAgICAlez8hd2l0aF9i dW5kbGVkX2Jyb3RsaTotLXNoYXJlZC1icm90bGl9Ci0gICAgJXs/IXdpdGhfYnVuZGxlZF9jX2Fy ZXM6LS1zaGFyZWQtY2FyZXN9CisgICAgIyBTd2l0Y2hpbmcgdG8gYnVuZGxlZCBjLWFyZXMgZm9y IDIyLjIzLjEKKyAgICAjIER1ZSB0bzoKKyAgICAjIC4uLy4uL3NyYy9jYXJlc193cmFwLmNjOjE3 MzA6MjE6IGVycm9yOiBubyBtYXRjaGVzIGNvbnZlcnRpbmcgZnVuY3Rpb24g4oCYQ2FsbGJhY2vi gJkgdG8gdHlwZSDigJhhcmVzX2hvc3RfY2FsbGJhY2vigJkKKyAgICAjJXs/IXdpdGhfYnVuZGxl ZF9jX2FyZXM6LS1zaGFyZWQtY2FyZXN9CiAgICAgJXs/IXdpdGhfYnVuZGxlZF9saWJ1djotLXNo YXJlZC1saWJ1dn0KICAgICAlez8hd2l0aF9idW5kbGVkX3NxbGl0ZTotLXNoYXJlZC1zcWxpdGV9 CiAgICAgJXs/IXdpdGhfYnVuZGxlZF96bGliOi0tc2hhcmVkLXpsaWJ9CgpkaWZmIC0tZ2l0IGEv c291cmNlcyBiL3NvdXJjZXMKaW5kZXggYjdjZDAyMy4uMzA5ZmRhMSAxMDA2NDQKLS0tIGEvc291 cmNlcworKysgYi9zb3VyY2VzCkBAIC0xLDQgKzEsNCBAQAotU0hBNTEyIChub2RlLXYyMi4yMi4y LXN0cmlwcGVkLnRhci5neikgPSA3ZWIxM2ZjYWFmOGFlYWRmZTgxMzVjMzZhMzU2ZGVkZTFjZDY4 MjNmNjVjNGQ0NDZmMDg5MzMyNmI5ZDVkM2NhZjZhODUyYTk5ZjA0ZGIzOWE0OWFlM2Y2ZWIzNzM4 ZjkzMmJkMjk1M2Q5N2UwNjgwYTFjMzEwZGZhNThlYzYwNworU0hBNTEyIChub2RlLXYyMi4yMy4x LXN0cmlwcGVkLnRhci5neikgPSAzMTViMDgzYzliZTA1OWVkNjk2NThlZWZjZDliMjM5YzlhZGM2 ZDNmOGFiZmM0M2NiNWJlOTRiMWI2ZTRmZGZkMDczMmQyYTExMjcwNTBhZDdkMmZhOWE0NGZhZjAx MGMyZDM4YmU1YTJkZTgwY2Y3MGI5ZDIwMGQ1ZDZhNWMxNAogU0hBNTEyIChpY3U0Yy03OC4yLWRh dGEtYmluLWIuemlwKSA9IDAzMmExZTUxOWJmOTJkZmE3OTM2ZWY4NWViZWQ2OTc1NTBkYmNiNGUz MmM2ZWNkMjhmZmVjYjE1OGE0MDNlZWZmNmMwYTM1NDViMjU1MWViYTczZjI4OGUzMTY5M2JlNjg4 MGUyMDJhMzhjZDg2YzEyOWRmZmEzOTVlOGFiNjI1CiBTSEE1MTIgKGljdTRjLTc4LjItZGF0YS1i aW4tbC56aXApID0gYzBiNDZkZTExNTMzMjk0MGQzMjc2NzYzOTA0Y2FhNjI1N2ViNTE2ZWRjZTQz ODI2MzJmNGI5NmE1YjAxMGZlZTRjYjA2YTVlMTBlZjVlZWUyZjg4MTUxNWMxZWU4Mjc3ZDlhZTU5 MDE1ZjZkZTZmZTFkMTc1YjlkMDBkYmIxY2EKIFNIQTUxMiAocGFja2FnaW5nLXNjcmlwdHMudGFy Lmd6KSA9IDUxMmYyMWRjNjUzYWQ4NDFiNzY4NTFkNTFhNzFiYThlOGQzMGU4NTYxZDhhNzQ1NTc3 ZGY5NjMxZDE5ZmQ0ZjczNjA5Y2NiMDRhODFjNmMyNTRlYTJjZjllMmE5NWRmMGM0OTcxZWQ5M2Rl YjRkNjM3MWJhOGY4YTE3YWVmNDYwCg==