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: Josue Hernandez To: git-commits@fedoraproject.org Subject: [rpms/syslinux] f44: update zlib version to zlib-1.2.11 Date: Mon, 13 Jul 2026 16:30:38 GMT Message-ID: <178396023877.1.12084671167260458780.rpms-syslinux-452950760e6a@fedoraproject.org> List-ID: X-Git-Repo: rpms/syslinux X-Git-Branch: f44 X-Git-Rev: 452950760e6a1ba3e2e74fc20b5754d0081a2db1 ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvc3lzbGludXgKICAgICAgICAgICAgQnJhbmNoIDogZjQ0CiAgICAgICAgICAg IENvbW1pdCA6IDQ1Mjk1MDc2MGU2YTFiYTNlMmU3NGZjMjBiNTc1NGQwMDgxYTJkYjEKICAgICAg ICAgICAgQXV0aG9yIDogSm9zdWUgSGVybmFuZGV6IDxqb3NoZXJuYUByZWRoYXQuY29tPgogICAg ICAgICAgICBEYXRlICAgOiAyMDI2LTAzLTMxVDExOjAyOjIzLTA2OjAwCiAgICAgICAgICAgIFN0 YXRzICA6ICs2NDYwLy0xIGluIDIgZmlsZShzKQogICAgICAgICAgICBVUkwgICAgOiBodHRwczov L3NyYy5mZWRvcmFwcm9qZWN0Lm9yZy9ycG1zL3N5c2xpbnV4L2MvNDUyOTUwNzYwZTZhMWJhM2Uy ZTc0ZmMyMGI1NzU0ZDAwODFhMmRiMT9icmFuY2g9ZjQ0CgogICAgICAgICAgICBMb2c6CiAgICAg ICAgICAgIHVwZGF0ZSB6bGliIHZlcnNpb24gdG8gemxpYi0xLjIuMTEKClJlc29sdmVzOiBDVkUt MjAyMi0zNzQzNCBDVkUtMjAxOC0yNTAzMiBDVkUtMjAxNi05ODQwIENWRS0yMDE2LTk4NDMKClNp Z25lZC1vZmYtYnk6IEpvc3VlIEhlcm5hbmRleiA8am9zaGVybmFAcmVkaGF0LmNvbT4KCi0tLQpk aWZmIC0tZ2l0IGEvMDAxMi16bGliLXVwZGF0ZS10by12ZXJzaW9uLTEuMi4xMS5wYXRjaCBiLzAw MTItemxpYi11cGRhdGUtdG8tdmVyc2lvbi0xLjIuMTEucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMC4uNmNhZDY3MAotLS0gL2Rldi9udWxsCisrKyBiLzAwMTItemxpYi11 cGRhdGUtdG8tdmVyc2lvbi0xLjIuMTEucGF0Y2gKQEAgLTAsMCArMSw2NDU0IEBACitGcm9tIDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAgTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCitGcm9tOiAiSC4gUGV0ZXIgQW52aW4iIDxocGFAenl0b3IuY29tPgorRGF0ZTogTW9u LCAyOCBKYW4gMjAxOSAxNDo0NTo0MiAtMDgwMAorU3ViamVjdDogW1BBVENIXSB6bGliOiB1cGRh dGUgdG8gdmVyc2lvbiAxLjIuMTEKKworVXBkYXRlIHpsaWIgdG8gdmVyc2lvbiAxLjIuMTEgZHVl IHRvIGVycmF0YSBpbiBwcmV2aW91cyB2ZXJzaW9ucy4KKworU2lnbmVkLW9mZi1ieTogSC4gUGV0 ZXIgQW52aW4gPGhwYUB6eXRvci5jb20+CistLS0KKyBjb20zMi9pbmNsdWRlL2d6Z3V0cy5oICAg IHwgIDIxOCArKysrKysrKysKKyBjb20zMi9pbmNsdWRlL3pjb25mLmggICAgIHwgIDIzNCArKysr KysrLS0tCisgY29tMzIvaW5jbHVkZS96bGliLmggICAgICB8ICA3NDMgKysrKysrKysrKysrKysr KysrKysrLS0tLS0tLS0tLQorIGNvbTMyL2xpYi96bGliL0ZBUSAgICAgICAgfCAgIDEyICstCisg Y29tMzIvbGliL3psaWIvUkVBRE1FICAgICB8ICAgMjQgKy0KKyBjb20zMi9saWIvemxpYi9hZGxl cjMyLmMgIHwgICA4NyArKy0tCisgY29tMzIvbGliL3psaWIvY29tcHJlc3MuYyB8ICAgNDIgKy0K KyBjb20zMi9saWIvemxpYi9jcmMzMi5jICAgIHwgIDEyMCArKy0tLQorIGNvbTMyL2xpYi96bGli L2NyYzMyLmggICAgfCAgICAyICstCisgY29tMzIvbGliL3psaWIvZGVmbGF0ZS5jICB8IDEwNzkg KysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tCisgY29tMzIvbGli L3psaWIvZGVmbGF0ZS5oICB8ICAgNDUgKy0KKyBjb20zMi9saWIvemxpYi9pbmZiYWNrLmMgIHwg ICAxOCArLQorIGNvbTMyL2xpYi96bGliL2luZmZhc3QuYyAgfCAgIDg5ICsrLS0KKyBjb20zMi9s aWIvemxpYi9pbmZmaXhlZC5oIHwgICAgNiArLQorIGNvbTMyL2xpYi96bGliL2luZmxhdGUuYyAg fCAgMjUzICsrKysrKystLS0tCisgY29tMzIvbGliL3psaWIvaW5mbGF0ZS5oICB8ICAgMTEgKy0K KyBjb20zMi9saWIvemxpYi9pbmZ0cmVlcy5jIHwgICA3NCArLS0tCisgY29tMzIvbGliL3psaWIv dHJlZXMuYyAgICB8ICAxNTEgKysrLS0tLQorIGNvbTMyL2xpYi96bGliL3VuY29tcHIuYyAgfCAg IDk4ICsrLS0KKyBjb20zMi9saWIvemxpYi96bGliLjMgICAgIHwgICA4MCArKy0tCisgY29tMzIv bGliL3psaWIvenV0aWwuYyAgICB8ICAgNzEgKy0tCisgY29tMzIvbGliL3psaWIvenV0aWwuaCAg ICB8ICAxNjcgKysrKy0tLQorIDIyIGZpbGVzIGNoYW5nZWQsIDIzMjYgaW5zZXJ0aW9ucygrKSwg MTI5OCBkZWxldGlvbnMoLSkKKyBjcmVhdGUgbW9kZSAxMDA2NDQgY29tMzIvaW5jbHVkZS9nemd1 dHMuaAorCitkaWZmIC0tZ2l0IGEvY29tMzIvaW5jbHVkZS9nemd1dHMuaCBiL2NvbTMyL2luY2x1 ZGUvZ3pndXRzLmgKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMC4uOTkwYTRk MjUKKy0tLSAvZGV2L251bGwKKysrKyBiL2NvbTMyL2luY2x1ZGUvZ3pndXRzLmgKK0BAIC0wLDAg KzEsMjE4IEBACisrLyogZ3pndXRzLmggLS0gemxpYiBpbnRlcm5hbCBoZWFkZXIgZGVmaW5pdGlv bnMgZm9yIGd6KiBvcGVyYXRpb25zCisrICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDEw LCAyMDExLCAyMDEyLCAyMDEzLCAyMDE2IE1hcmsgQWRsZXIKKysgKiBGb3IgY29uZGl0aW9ucyBv ZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIGNvcHlyaWdodCBub3RpY2UgaW4gemxpYi5oCisr ICovCisrCisrI2lmZGVmIF9MQVJHRUZJTEU2NF9TT1VSQ0UKKysjICBpZm5kZWYgX0xBUkdFRklM RV9TT1VSQ0UKKysjICAgIGRlZmluZSBfTEFSR0VGSUxFX1NPVVJDRSAxCisrIyAgZW5kaWYKKysj ICBpZmRlZiBfRklMRV9PRkZTRVRfQklUUworKyMgICAgdW5kZWYgX0ZJTEVfT0ZGU0VUX0JJVFMK KysjICBlbmRpZgorKyNlbmRpZgorKworKyNpZmRlZiBIQVZFX0hJRERFTgorKyMgIGRlZmluZSBa TElCX0lOVEVSTkFMIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkgKCJoaWRkZW4iKSkpCisrI2Vs c2UKKysjICBkZWZpbmUgWkxJQl9JTlRFUk5BTAorKyNlbmRpZgorKworKyNpbmNsdWRlIDxzdGRp by5oPgorKyNpbmNsdWRlICJ6bGliLmgiCisrI2lmZGVmIFNUREMKKysjICBpbmNsdWRlIDxzdHJp bmcuaD4KKysjICBpbmNsdWRlIDxzdGRsaWIuaD4KKysjICBpbmNsdWRlIDxsaW1pdHMuaD4KKysj ZW5kaWYKKysKKysjaWZuZGVmIF9QT1NJWF9TT1VSQ0UKKysjICBkZWZpbmUgX1BPU0lYX1NPVVJD RQorKyNlbmRpZgorKyNpbmNsdWRlIDxmY250bC5oPgorKworKyNpZmRlZiBfV0lOMzIKKysjICBp bmNsdWRlIDxzdGRkZWYuaD4KKysjZW5kaWYKKysKKysjaWYgZGVmaW5lZChfX1RVUkJPQ19fKSB8 fCBkZWZpbmVkKF9NU0NfVkVSKSB8fCBkZWZpbmVkKF9XSU4zMikKKysjICBpbmNsdWRlIDxpby5o PgorKyNlbmRpZgorKworKyNpZiBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfX0NZR1dJTl9f KQorKyMgIGRlZmluZSBXSURFQ0hBUgorKyNlbmRpZgorKworKyNpZmRlZiBXSU5BUElfRkFNSUxZ CisrIyAgZGVmaW5lIG9wZW4gX29wZW4KKysjICBkZWZpbmUgcmVhZCBfcmVhZAorKyMgIGRlZmlu ZSB3cml0ZSBfd3JpdGUKKysjICBkZWZpbmUgY2xvc2UgX2Nsb3NlCisrI2VuZGlmCisrCisrI2lm ZGVmIE5PX0RFRkxBVEUgICAgICAgLyogZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBvbGQgZGVmaW5p dGlvbiAqLworKyMgIGRlZmluZSBOT19HWkNPTVBSRVNTCisrI2VuZGlmCisrCisrI2lmIGRlZmlu ZWQoU1REQzk5KSB8fCAoZGVmaW5lZChfX1RVUkJPQ19fKSAmJiBfX1RVUkJPQ19fID49IDB4NTUw KQorKyMgIGlmbmRlZiBIQVZFX1ZTTlBSSU5URgorKyMgICAgZGVmaW5lIEhBVkVfVlNOUFJJTlRG CisrIyAgZW5kaWYKKysjZW5kaWYKKysKKysjaWYgZGVmaW5lZChfX0NZR1dJTl9fKQorKyMgIGlm bmRlZiBIQVZFX1ZTTlBSSU5URgorKyMgICAgZGVmaW5lIEhBVkVfVlNOUFJJTlRGCisrIyAgZW5k aWYKKysjZW5kaWYKKysKKysjaWYgZGVmaW5lZChNU0RPUykgJiYgZGVmaW5lZChfX0JPUkxBTkRD X18pICYmIChCT1JMQU5EQyA+IDB4NDEwKQorKyMgIGlmbmRlZiBIQVZFX1ZTTlBSSU5URgorKyMg ICAgZGVmaW5lIEhBVkVfVlNOUFJJTlRGCisrIyAgZW5kaWYKKysjZW5kaWYKKysKKysjaWZuZGVm IEhBVkVfVlNOUFJJTlRGCisrIyAgaWZkZWYgTVNET1MKKysvKiB2c25wcmludGYgbWF5IGV4aXN0 IG9uIHNvbWUgTVMtRE9TIGNvbXBpbGVycyAoREpHUFA/KSwKKysgICBidXQgZm9yIG5vdyB3ZSBq dXN0IGFzc3VtZSBpdCBkb2Vzbid0LiAqLworKyMgICAgZGVmaW5lIE5PX3ZzbnByaW50ZgorKyMg IGVuZGlmCisrIyAgaWZkZWYgX19UVVJCT0NfXworKyMgICAgZGVmaW5lIE5PX3ZzbnByaW50Zgor KyMgIGVuZGlmCisrIyAgaWZkZWYgV0lOMzIKKysvKiBJbiBXaW4zMiwgdnNucHJpbnRmIGlzIGF2 YWlsYWJsZSBhcyB0aGUgIm5vbi1BTlNJIiBfdnNucHJpbnRmLiAqLworKyMgICAgaWYgIWRlZmlu ZWQodnNucHJpbnRmKSAmJiAhZGVmaW5lZChOT192c25wcmludGYpCisrIyAgICAgIGlmICFkZWZp bmVkKF9NU0NfVkVSKSB8fCAoIGRlZmluZWQoX01TQ19WRVIpICYmIF9NU0NfVkVSIDwgMTUwMCAp CisrIyAgICAgICAgIGRlZmluZSB2c25wcmludGYgX3ZzbnByaW50ZgorKyMgICAgICBlbmRpZgor KyMgICAgZW5kaWYKKysjICBlbmRpZgorKyMgIGlmZGVmIF9fU0FTQworKyMgICAgZGVmaW5lIE5P X3ZzbnByaW50ZgorKyMgIGVuZGlmCisrIyAgaWZkZWYgVk1TCisrIyAgICBkZWZpbmUgTk9fdnNu cHJpbnRmCisrIyAgZW5kaWYKKysjICBpZmRlZiBfX09TNDAwX18KKysjICAgIGRlZmluZSBOT192 c25wcmludGYKKysjICBlbmRpZgorKyMgIGlmZGVmIF9fTVZTX18KKysjICAgIGRlZmluZSBOT192 c25wcmludGYKKysjICBlbmRpZgorKyNlbmRpZgorKworKy8qIHVubGlrZSBzbnByaW50ZiAod2hp Y2ggaXMgcmVxdWlyZWQgaW4gQzk5KSwgX3NucHJpbnRmIGRvZXMgbm90IGd1YXJhbnRlZQorKyAg IG51bGwgdGVybWluYXRpb24gb2YgdGhlIHJlc3VsdCAtLSBob3dldmVyIHRoaXMgaXMgb25seSB1 c2VkIGluIGd6bGliLmMgd2hlcmUKKysgICB0aGUgcmVzdWx0IGlzIGFzc3VyZWQgdG8gZml0IGlu IHRoZSBzcGFjZSBwcm92aWRlZCAqLworKyNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiBfTVNDX1ZF UiA8IDE5MDAKKysjICBkZWZpbmUgc25wcmludGYgX3NucHJpbnRmCisrI2VuZGlmCisrCisrI2lm bmRlZiBsb2NhbAorKyMgIGRlZmluZSBsb2NhbCBzdGF0aWMKKysjZW5kaWYKKysvKiBzaW5jZSAi c3RhdGljIiBpcyB1c2VkIHRvIG1lYW4gdHdvIGNvbXBsZXRlbHkgZGlmZmVyZW50IHRoaW5ncyBp biBDLCB3ZQorKyAgIGRlZmluZSAibG9jYWwiIGZvciB0aGUgbm9uLXN0YXRpYyBtZWFuaW5nIG9m ICJzdGF0aWMiLCBmb3IgcmVhZGFiaWxpdHkKKysgICAoY29tcGlsZSB3aXRoIC1EbG9jYWwgaWYg eW91ciBkZWJ1Z2dlciBjYW4ndCBmaW5kIHN0YXRpYyBzeW1ib2xzKSAqLworKworKy8qIGd6KiBm dW5jdGlvbnMgYWx3YXlzIHVzZSBsaWJyYXJ5IGFsbG9jYXRpb24gZnVuY3Rpb25zICovCisrI2lm bmRlZiBTVERDCisrICBleHRlcm4gdm9pZHAgIG1hbGxvYyBPRigodUludCBzaXplKSk7CisrICBl eHRlcm4gdm9pZCAgIGZyZWUgICBPRigodm9pZHBmIHB0cikpOworKyNlbmRpZgorKworKy8qIGdl dCBlcnJubyBhbmQgc3RyZXJyb3IgZGVmaW5pdGlvbiAqLworKyNpZiBkZWZpbmVkIFVOREVSX0NF CisrIyAgaW5jbHVkZSA8d2luZG93cy5oPgorKyMgIGRlZmluZSB6c3RyZXJyb3IoKSBnel9zdHJ3 aW5lcnJvcigoRFdPUkQpR2V0TGFzdEVycm9yKCkpCisrI2Vsc2UKKysjICBpZm5kZWYgTk9fU1RS RVJST1IKKysjICAgIGluY2x1ZGUgPGVycm5vLmg+CisrIyAgICBkZWZpbmUgenN0cmVycm9yKCkg c3RyZXJyb3IoZXJybm8pCisrIyAgZWxzZQorKyMgICAgZGVmaW5lIHpzdHJlcnJvcigpICJzdGRp byBlcnJvciAoY29uc3VsdCBlcnJubykiCisrIyAgZW5kaWYKKysjZW5kaWYKKysKKysvKiBwcm92 aWRlIHByb3RvdHlwZXMgZm9yIHRoZXNlIHdoZW4gYnVpbGRpbmcgemxpYiB3aXRob3V0IExGUyAq LworKyNpZiAhZGVmaW5lZChfTEFSR0VGSUxFNjRfU09VUkNFKSB8fCBfTEZTNjRfTEFSR0VGSUxF LTAgPT0gMAorKyAgICBaRVhURVJOIGd6RmlsZSBaRVhQT1JUIGd6b3BlbjY0IE9GKChjb25zdCBj aGFyICosIGNvbnN0IGNoYXIgKikpOworKyAgICBaRVhURVJOIHpfb2ZmNjRfdCBaRVhQT1JUIGd6 c2VlazY0IE9GKChnekZpbGUsIHpfb2ZmNjRfdCwgaW50KSk7CisrICAgIFpFWFRFUk4gel9vZmY2 NF90IFpFWFBPUlQgZ3p0ZWxsNjQgT0YoKGd6RmlsZSkpOworKyAgICBaRVhURVJOIHpfb2ZmNjRf dCBaRVhQT1JUIGd6b2Zmc2V0NjQgT0YoKGd6RmlsZSkpOworKyNlbmRpZgorKworKy8qIGRlZmF1 bHQgbWVtTGV2ZWwgKi8KKysjaWYgTUFYX01FTV9MRVZFTCA+PSA4CisrIyAgZGVmaW5lIERFRl9N RU1fTEVWRUwgOAorKyNlbHNlCisrIyAgZGVmaW5lIERFRl9NRU1fTEVWRUwgIE1BWF9NRU1fTEVW RUwKKysjZW5kaWYKKysKKysvKiBkZWZhdWx0IGkvbyBidWZmZXIgc2l6ZSAtLSBkb3VibGUgdGhp cyBmb3Igb3V0cHV0IHdoZW4gcmVhZGluZyAodGhpcyBhbmQKKysgICB0d2ljZSB0aGlzIG11c3Qg YmUgYWJsZSB0byBmaXQgaW4gYW4gdW5zaWduZWQgdHlwZSkgKi8KKysjZGVmaW5lIEdaQlVGU0la RSA4MTkyCisrCisrLyogZ3ppcCBtb2RlcywgYWxzbyBwcm92aWRlIGEgbGl0dGxlIGludGVncml0 eSBjaGVjayBvbiB0aGUgcGFzc2VkIHN0cnVjdHVyZSAqLworKyNkZWZpbmUgR1pfTk9ORSAwCisr I2RlZmluZSBHWl9SRUFEIDcyNDcKKysjZGVmaW5lIEdaX1dSSVRFIDMxMTUzCisrI2RlZmluZSBH Wl9BUFBFTkQgMSAgICAgLyogbW9kZSBzZXQgdG8gR1pfV1JJVEUgYWZ0ZXIgdGhlIGZpbGUgaXMg b3BlbmVkICovCisrCisrLyogdmFsdWVzIGZvciBnel9zdGF0ZSBob3cgKi8KKysjZGVmaW5lIExP T0sgMCAgICAgIC8qIGxvb2sgZm9yIGEgZ3ppcCBoZWFkZXIgKi8KKysjZGVmaW5lIENPUFkgMSAg ICAgIC8qIGNvcHkgaW5wdXQgZGlyZWN0bHkgKi8KKysjZGVmaW5lIEdaSVAgMiAgICAgIC8qIGRl Y29tcHJlc3MgYSBnemlwIHN0cmVhbSAqLworKworKy8qIGludGVybmFsIGd6aXAgZmlsZSBzdGF0 ZSBkYXRhIHN0cnVjdHVyZSAqLworK3R5cGVkZWYgc3RydWN0IHsKKysgICAgICAgIC8qIGV4cG9z ZWQgY29udGVudHMgZm9yIGd6Z2V0YygpIG1hY3JvICovCisrICAgIHN0cnVjdCBnekZpbGVfcyB4 OyAgICAgIC8qICJ4IiBmb3IgZXhwb3NlZCAqLworKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAvKiB4LmhhdmU6IG51bWJlciBvZiBieXRlcyBhdmFpbGFibGUgYXQgeC5uZXh0ICovCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHgubmV4dDogbmV4dCBvdXRwdXQgZGF0YSB0byBk ZWxpdmVyIG9yIHdyaXRlICovCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHgucG9z OiBjdXJyZW50IHBvc2l0aW9uIGluIHVuY29tcHJlc3NlZCBkYXRhICovCisrICAgICAgICAvKiB1 c2VkIGZvciBib3RoIHJlYWRpbmcgYW5kIHdyaXRpbmcgKi8KKysgICAgaW50IG1vZGU7ICAgICAg ICAgICAgICAgLyogc2VlIGd6aXAgbW9kZXMgYWJvdmUgKi8KKysgICAgaW50IGZkOyAgICAgICAg ICAgICAgICAgLyogZmlsZSBkZXNjcmlwdG9yICovCisrICAgIGNoYXIgKnBhdGg7ICAgICAgICAg ICAgIC8qIHBhdGggb3IgZmQgZm9yIGVycm9yIG1lc3NhZ2VzICovCisrICAgIHVuc2lnbmVkIHNp emU7ICAgICAgICAgIC8qIGJ1ZmZlciBzaXplLCB6ZXJvIGlmIG5vdCBhbGxvY2F0ZWQgeWV0ICov CisrICAgIHVuc2lnbmVkIHdhbnQ7ICAgICAgICAgIC8qIHJlcXVlc3RlZCBidWZmZXIgc2l6ZSwg ZGVmYXVsdCBpcyBHWkJVRlNJWkUgKi8KKysgICAgdW5zaWduZWQgY2hhciAqaW47ICAgICAgLyog aW5wdXQgYnVmZmVyIChkb3VibGUtc2l6ZWQgd2hlbiB3cml0aW5nKSAqLworKyAgICB1bnNpZ25l ZCBjaGFyICpvdXQ7ICAgICAvKiBvdXRwdXQgYnVmZmVyIChkb3VibGUtc2l6ZWQgd2hlbiByZWFk aW5nKSAqLworKyAgICBpbnQgZGlyZWN0OyAgICAgICAgICAgICAvKiAwIGlmIHByb2Nlc3Npbmcg Z3ppcCwgMSBpZiB0cmFuc3BhcmVudCAqLworKyAgICAgICAgLyoganVzdCBmb3IgcmVhZGluZyAq LworKyAgICBpbnQgaG93OyAgICAgICAgICAgICAgICAvKiAwOiBnZXQgaGVhZGVyLCAxOiBjb3B5 LCAyOiBkZWNvbXByZXNzICovCisrICAgIHpfb2ZmNjRfdCBzdGFydDsgICAgICAgIC8qIHdoZXJl IHRoZSBnemlwIGRhdGEgc3RhcnRlZCwgZm9yIHJld2luZGluZyAqLworKyAgICBpbnQgZW9mOyAg ICAgICAgICAgICAgICAvKiB0cnVlIGlmIGVuZCBvZiBpbnB1dCBmaWxlIHJlYWNoZWQgKi8KKysg ICAgaW50IHBhc3Q7ICAgICAgICAgICAgICAgLyogdHJ1ZSBpZiByZWFkIHJlcXVlc3RlZCBwYXN0 IGVuZCAqLworKyAgICAgICAgLyoganVzdCBmb3Igd3JpdGluZyAqLworKyAgICBpbnQgbGV2ZWw7 ICAgICAgICAgICAgICAvKiBjb21wcmVzc2lvbiBsZXZlbCAqLworKyAgICBpbnQgc3RyYXRlZ3k7 ICAgICAgICAgICAvKiBjb21wcmVzc2lvbiBzdHJhdGVneSAqLworKyAgICAgICAgLyogc2VlayBy ZXF1ZXN0ICovCisrICAgIHpfb2ZmNjRfdCBza2lwOyAgICAgICAgIC8qIGFtb3VudCB0byBza2lw IChhbHJlYWR5IHJld291bmQgaWYgYmFja3dhcmRzKSAqLworKyAgICBpbnQgc2VlazsgICAgICAg ICAgICAgICAvKiB0cnVlIGlmIHNlZWsgcmVxdWVzdCBwZW5kaW5nICovCisrICAgICAgICAvKiBl cnJvciBpbmZvcm1hdGlvbiAqLworKyAgICBpbnQgZXJyOyAgICAgICAgICAgICAgICAvKiBlcnJv ciBjb2RlICovCisrICAgIGNoYXIgKm1zZzsgICAgICAgICAgICAgIC8qIGVycm9yIG1lc3NhZ2Ug Ki8KKysgICAgICAgIC8qIHpsaWIgaW5mbGF0ZSBvciBkZWZsYXRlIHN0cmVhbSAqLworKyAgICB6 X3N0cmVhbSBzdHJtOyAgICAgICAgICAvKiBzdHJlYW0gc3RydWN0dXJlIGluLXBsYWNlIChub3Qg YSBwb2ludGVyKSAqLworK30gZ3pfc3RhdGU7CisrdHlwZWRlZiBnel9zdGF0ZSBGQVIgKmd6X3N0 YXRlcDsKKysKKysvKiBzaGFyZWQgZnVuY3Rpb25zICovCisrdm9pZCBaTElCX0lOVEVSTkFMIGd6 X2Vycm9yIE9GKChnel9zdGF0ZXAsIGludCwgY29uc3QgY2hhciAqKSk7CisrI2lmIGRlZmluZWQg VU5ERVJfQ0UKKytjaGFyIFpMSUJfSU5URVJOQUwgKmd6X3N0cndpbmVycm9yIE9GKChEV09SRCBl cnJvcikpOworKyNlbmRpZgorKworKy8qIEdUX09GRih4KSwgd2hlcmUgeCBpcyBhbiB1bnNpZ25l ZCB2YWx1ZSwgaXMgdHJ1ZSBpZiB4ID4gbWF4aW11bSB6X29mZjY0X3QKKysgICB2YWx1ZSAtLSBu ZWVkZWQgd2hlbiBjb21wYXJpbmcgdW5zaWduZWQgdG8gel9vZmY2NF90LCB3aGljaCBpcyBzaWdu ZWQKKysgICAocG9zc2libGUgel9vZmY2NF90IHR5cGVzIG9mZl90LCBvZmY2NF90LCBhbmQgbG9u ZyBhcmUgYWxsIHNpZ25lZCkgKi8KKysjaWZkZWYgSU5UX01BWAorKyMgIGRlZmluZSBHVF9PRkYo eCkgKHNpemVvZihpbnQpID09IHNpemVvZih6X29mZjY0X3QpICYmICh4KSA+IElOVF9NQVgpCisr I2Vsc2UKKyt1bnNpZ25lZCBaTElCX0lOVEVSTkFMIGd6X2ludG1heCBPRigodm9pZCkpOworKyMg IGRlZmluZSBHVF9PRkYoeCkgKHNpemVvZihpbnQpID09IHNpemVvZih6X29mZjY0X3QpICYmICh4 KSA+IGd6X2ludG1heCgpKQorKyNlbmRpZgorZGlmZiAtLWdpdCBhL2NvbTMyL2luY2x1ZGUvemNv bmYuaCBiL2NvbTMyL2luY2x1ZGUvemNvbmYuaAoraW5kZXggMDJjZTU2YzQuLjVlMWQ2OGEwIDEw MDY0NAorLS0tIGEvY29tMzIvaW5jbHVkZS96Y29uZi5oCisrKysgYi9jb20zMi9pbmNsdWRlL3pj b25mLmgKK0BAIC0xLDUgKzEsNSBAQAorIC8qIHpjb25mLmggLS0gY29uZmlndXJhdGlvbiBvZiB0 aGUgemxpYiBjb21wcmVzc2lvbiBsaWJyYXJ5CistICogQ29weXJpZ2h0IChDKSAxOTk1LTIwMTAg SmVhbi1sb3VwIEdhaWxseS4KKysgKiBDb3B5cmlnaHQgKEMpIDE5OTUtMjAxNiBKZWFuLWxvdXAg R2FpbGx5LCBNYXJrIEFkbGVyCisgICogRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFu ZCB1c2UsIHNlZSBjb3B5cmlnaHQgbm90aWNlIGluIHpsaWIuaAorICAqLworIAorQEAgLTE1LDEx ICsxNSwxMyBAQAorICAqIHRoaXMgcGVybWFuZW50bHkgaW4gemNvbmYuaCB1c2luZyAiLi9jb25m aWd1cmUgLS16cHJlZml4Ii4KKyAgKi8KKyAjaWZkZWYgWl9QUkVGSVggICAgIC8qIG1heSBiZSBz ZXQgdG8gI2lmIDEgYnkgLi9jb25maWd1cmUgKi8KKysjICBkZWZpbmUgWl9QUkVGSVhfU0VUCisg CistLyogYWxsIGxpbmtlZCBzeW1ib2xzICovCisrLyogYWxsIGxpbmtlZCBzeW1ib2xzIGFuZCBp bml0IG1hY3JvcyAqLworICMgIGRlZmluZSBfZGlzdF9jb2RlICAgICAgICAgICAgel9fZGlzdF9j b2RlCisgIyAgZGVmaW5lIF9sZW5ndGhfY29kZSAgICAgICAgICB6X19sZW5ndGhfY29kZQorICMg IGRlZmluZSBfdHJfYWxpZ24gICAgICAgICAgICAgel9fdHJfYWxpZ24KKysjICBkZWZpbmUgX3Ry X2ZsdXNoX2JpdHMgICAgICAgIHpfX3RyX2ZsdXNoX2JpdHMKKyAjICBkZWZpbmUgX3RyX2ZsdXNo X2Jsb2NrICAgICAgIHpfX3RyX2ZsdXNoX2Jsb2NrCisgIyAgZGVmaW5lIF90cl9pbml0ICAgICAg ICAgICAgICB6X190cl9pbml0CisgIyAgZGVmaW5lIF90cl9zdG9yZWRfYmxvY2sgICAgICB6X190 cl9zdG9yZWRfYmxvY2sKK0BAIC0yNyw4MSArMjksMTExIEBACisgIyAgZGVmaW5lIGFkbGVyMzIg ICAgICAgICAgICAgICB6X2FkbGVyMzIKKyAjICBkZWZpbmUgYWRsZXIzMl9jb21iaW5lICAgICAg IHpfYWRsZXIzMl9jb21iaW5lCisgIyAgZGVmaW5lIGFkbGVyMzJfY29tYmluZTY0ICAgICB6X2Fk bGVyMzJfY29tYmluZTY0CistIyAgZGVmaW5lIGNvbXByZXNzICAgICAgICAgICAgICB6X2NvbXBy ZXNzCistIyAgZGVmaW5lIGNvbXByZXNzMiAgICAgICAgICAgICB6X2NvbXByZXNzMgorLSMgIGRl ZmluZSBjb21wcmVzc0JvdW5kICAgICAgICAgel9jb21wcmVzc0JvdW5kCisrIyAgZGVmaW5lIGFk bGVyMzJfeiAgICAgICAgICAgICB6X2FkbGVyMzJfegorKyMgIGlmbmRlZiBaX1NPTE8KKysjICAg IGRlZmluZSBjb21wcmVzcyAgICAgICAgICAgICAgel9jb21wcmVzcworKyMgICAgZGVmaW5lIGNv bXByZXNzMiAgICAgICAgICAgICB6X2NvbXByZXNzMgorKyMgICAgZGVmaW5lIGNvbXByZXNzQm91 bmQgICAgICAgICB6X2NvbXByZXNzQm91bmQKKysjICBlbmRpZgorICMgIGRlZmluZSBjcmMzMiAg ICAgICAgICAgICAgICAgel9jcmMzMgorICMgIGRlZmluZSBjcmMzMl9jb21iaW5lICAgICAgICAg el9jcmMzMl9jb21iaW5lCisgIyAgZGVmaW5lIGNyYzMyX2NvbWJpbmU2NCAgICAgICB6X2NyYzMy X2NvbWJpbmU2NAorKyMgIGRlZmluZSBjcmMzMl96ICAgICAgICAgICAgICAgel9jcmMzMl96Cisg IyAgZGVmaW5lIGRlZmxhdGUgICAgICAgICAgICAgICB6X2RlZmxhdGUKKyAjICBkZWZpbmUgZGVm bGF0ZUJvdW5kICAgICAgICAgIHpfZGVmbGF0ZUJvdW5kCisgIyAgZGVmaW5lIGRlZmxhdGVDb3B5 ICAgICAgICAgICB6X2RlZmxhdGVDb3B5CisgIyAgZGVmaW5lIGRlZmxhdGVFbmQgICAgICAgICAg ICB6X2RlZmxhdGVFbmQKKysjICBkZWZpbmUgZGVmbGF0ZUdldERpY3Rpb25hcnkgIHpfZGVmbGF0 ZUdldERpY3Rpb25hcnkKKysjICBkZWZpbmUgZGVmbGF0ZUluaXQgICAgICAgICAgIHpfZGVmbGF0 ZUluaXQKKysjICBkZWZpbmUgZGVmbGF0ZUluaXQyICAgICAgICAgIHpfZGVmbGF0ZUluaXQyCisg IyAgZGVmaW5lIGRlZmxhdGVJbml0Ml8gICAgICAgICB6X2RlZmxhdGVJbml0Ml8KKyAjICBkZWZp bmUgZGVmbGF0ZUluaXRfICAgICAgICAgIHpfZGVmbGF0ZUluaXRfCisgIyAgZGVmaW5lIGRlZmxh dGVQYXJhbXMgICAgICAgICB6X2RlZmxhdGVQYXJhbXMKKysjICBkZWZpbmUgZGVmbGF0ZVBlbmRp bmcgICAgICAgIHpfZGVmbGF0ZVBlbmRpbmcKKyAjICBkZWZpbmUgZGVmbGF0ZVByaW1lICAgICAg ICAgIHpfZGVmbGF0ZVByaW1lCisgIyAgZGVmaW5lIGRlZmxhdGVSZXNldCAgICAgICAgICB6X2Rl ZmxhdGVSZXNldAorKyMgIGRlZmluZSBkZWZsYXRlUmVzZXRLZWVwICAgICAgel9kZWZsYXRlUmVz ZXRLZWVwCisgIyAgZGVmaW5lIGRlZmxhdGVTZXREaWN0aW9uYXJ5ICB6X2RlZmxhdGVTZXREaWN0 aW9uYXJ5CisgIyAgZGVmaW5lIGRlZmxhdGVTZXRIZWFkZXIgICAgICB6X2RlZmxhdGVTZXRIZWFk ZXIKKyAjICBkZWZpbmUgZGVmbGF0ZVR1bmUgICAgICAgICAgIHpfZGVmbGF0ZVR1bmUKKyAjICBk ZWZpbmUgZGVmbGF0ZV9jb3B5cmlnaHQgICAgIHpfZGVmbGF0ZV9jb3B5cmlnaHQKKyAjICBkZWZp bmUgZ2V0X2NyY190YWJsZSAgICAgICAgIHpfZ2V0X2NyY190YWJsZQorLSMgIGRlZmluZSBnel9l cnJvciAgICAgICAgICAgICAgel9nel9lcnJvcgorLSMgIGRlZmluZSBnel9pbnRtYXggICAgICAg ICAgICAgel9nel9pbnRtYXgKKy0jICBkZWZpbmUgZ3pfc3Ryd2luZXJyb3IgICAgICAgIHpfZ3pf c3Ryd2luZXJyb3IKKy0jICBkZWZpbmUgZ3pidWZmZXIgICAgICAgICAgICAgIHpfZ3pidWZmZXIK Ky0jICBkZWZpbmUgZ3pjbGVhcmVyciAgICAgICAgICAgIHpfZ3pjbGVhcmVycgorLSMgIGRlZmlu ZSBnemNsb3NlICAgICAgICAgICAgICAgel9nemNsb3NlCistIyAgZGVmaW5lIGd6Y2xvc2VfciAg ICAgICAgICAgICB6X2d6Y2xvc2VfcgorLSMgIGRlZmluZSBnemNsb3NlX3cgICAgICAgICAgICAg el9nemNsb3NlX3cKKy0jICBkZWZpbmUgZ3pkaXJlY3QgICAgICAgICAgICAgIHpfZ3pkaXJlY3QK Ky0jICBkZWZpbmUgZ3pkb3BlbiAgICAgICAgICAgICAgIHpfZ3pkb3BlbgorLSMgIGRlZmluZSBn emVvZiAgICAgICAgICAgICAgICAgel9nemVvZgorLSMgIGRlZmluZSBnemVycm9yICAgICAgICAg ICAgICAgel9nemVycm9yCistIyAgZGVmaW5lIGd6Zmx1c2ggICAgICAgICAgICAgICB6X2d6Zmx1 c2gKKy0jICBkZWZpbmUgZ3pnZXRjICAgICAgICAgICAgICAgIHpfZ3pnZXRjCistIyAgZGVmaW5l IGd6Z2V0cyAgICAgICAgICAgICAgICB6X2d6Z2V0cworLSMgIGRlZmluZSBnem9mZnNldCAgICAg ICAgICAgICAgel9nem9mZnNldAorLSMgIGRlZmluZSBnem9mZnNldDY0ICAgICAgICAgICAgel9n em9mZnNldDY0CistIyAgZGVmaW5lIGd6b3BlbiAgICAgICAgICAgICAgICB6X2d6b3BlbgorLSMg IGRlZmluZSBnem9wZW42NCAgICAgICAgICAgICAgel9nem9wZW42NAorLSMgIGRlZmluZSBnenBy aW50ZiAgICAgICAgICAgICAgel9nenByaW50ZgorLSMgIGRlZmluZSBnenB1dGMgICAgICAgICAg ICAgICAgel9nenB1dGMKKy0jICBkZWZpbmUgZ3pwdXRzICAgICAgICAgICAgICAgIHpfZ3pwdXRz CistIyAgZGVmaW5lIGd6cmVhZCAgICAgICAgICAgICAgICB6X2d6cmVhZAorLSMgIGRlZmluZSBn enJld2luZCAgICAgICAgICAgICAgel9nenJld2luZAorLSMgIGRlZmluZSBnenNlZWsgICAgICAg ICAgICAgICAgel9nenNlZWsKKy0jICBkZWZpbmUgZ3pzZWVrNjQgICAgICAgICAgICAgIHpfZ3pz ZWVrNjQKKy0jICBkZWZpbmUgZ3pzZXRwYXJhbXMgICAgICAgICAgIHpfZ3pzZXRwYXJhbXMKKy0j ICBkZWZpbmUgZ3p0ZWxsICAgICAgICAgICAgICAgIHpfZ3p0ZWxsCistIyAgZGVmaW5lIGd6dGVs bDY0ICAgICAgICAgICAgICB6X2d6dGVsbDY0CistIyAgZGVmaW5lIGd6dW5nZXRjICAgICAgICAg ICAgICB6X2d6dW5nZXRjCistIyAgZGVmaW5lIGd6d3JpdGUgICAgICAgICAgICAgICB6X2d6d3Jp dGUKKysjICBpZm5kZWYgWl9TT0xPCisrIyAgICBkZWZpbmUgZ3pfZXJyb3IgICAgICAgICAgICAg IHpfZ3pfZXJyb3IKKysjICAgIGRlZmluZSBnel9pbnRtYXggICAgICAgICAgICAgel9nel9pbnRt YXgKKysjICAgIGRlZmluZSBnel9zdHJ3aW5lcnJvciAgICAgICAgel9nel9zdHJ3aW5lcnJvcgor KyMgICAgZGVmaW5lIGd6YnVmZmVyICAgICAgICAgICAgICB6X2d6YnVmZmVyCisrIyAgICBkZWZp bmUgZ3pjbGVhcmVyciAgICAgICAgICAgIHpfZ3pjbGVhcmVycgorKyMgICAgZGVmaW5lIGd6Y2xv c2UgICAgICAgICAgICAgICB6X2d6Y2xvc2UKKysjICAgIGRlZmluZSBnemNsb3NlX3IgICAgICAg ICAgICAgel9nemNsb3NlX3IKKysjICAgIGRlZmluZSBnemNsb3NlX3cgICAgICAgICAgICAgel9n emNsb3NlX3cKKysjICAgIGRlZmluZSBnemRpcmVjdCAgICAgICAgICAgICAgel9nemRpcmVjdAor KyMgICAgZGVmaW5lIGd6ZG9wZW4gICAgICAgICAgICAgICB6X2d6ZG9wZW4KKysjICAgIGRlZmlu ZSBnemVvZiAgICAgICAgICAgICAgICAgel9nemVvZgorKyMgICAgZGVmaW5lIGd6ZXJyb3IgICAg ICAgICAgICAgICB6X2d6ZXJyb3IKKysjICAgIGRlZmluZSBnemZsdXNoICAgICAgICAgICAgICAg el9nemZsdXNoCisrIyAgICBkZWZpbmUgZ3pmcmVhZCAgICAgICAgICAgICAgIHpfZ3pmcmVhZAor KyMgICAgZGVmaW5lIGd6ZndyaXRlICAgICAgICAgICAgICB6X2d6ZndyaXRlCisrIyAgICBkZWZp bmUgZ3pnZXRjICAgICAgICAgICAgICAgIHpfZ3pnZXRjCisrIyAgICBkZWZpbmUgZ3pnZXRjXyAg ICAgICAgICAgICAgIHpfZ3pnZXRjXworKyMgICAgZGVmaW5lIGd6Z2V0cyAgICAgICAgICAgICAg ICB6X2d6Z2V0cworKyMgICAgZGVmaW5lIGd6b2Zmc2V0ICAgICAgICAgICAgICB6X2d6b2Zmc2V0 CisrIyAgICBkZWZpbmUgZ3pvZmZzZXQ2NCAgICAgICAgICAgIHpfZ3pvZmZzZXQ2NAorKyMgICAg ZGVmaW5lIGd6b3BlbiAgICAgICAgICAgICAgICB6X2d6b3BlbgorKyMgICAgZGVmaW5lIGd6b3Bl bjY0ICAgICAgICAgICAgICB6X2d6b3BlbjY0CisrIyAgICBpZmRlZiBfV0lOMzIKKysjICAgICAg ZGVmaW5lIGd6b3Blbl93ICAgICAgICAgICAgICB6X2d6b3Blbl93CisrIyAgICBlbmRpZgorKyMg ICAgZGVmaW5lIGd6cHJpbnRmICAgICAgICAgICAgICB6X2d6cHJpbnRmCisrIyAgICBkZWZpbmUg Z3pwdXRjICAgICAgICAgICAgICAgIHpfZ3pwdXRjCisrIyAgICBkZWZpbmUgZ3pwdXRzICAgICAg ICAgICAgICAgIHpfZ3pwdXRzCisrIyAgICBkZWZpbmUgZ3pyZWFkICAgICAgICAgICAgICAgIHpf Z3pyZWFkCisrIyAgICBkZWZpbmUgZ3pyZXdpbmQgICAgICAgICAgICAgIHpfZ3pyZXdpbmQKKysj ICAgIGRlZmluZSBnenNlZWsgICAgICAgICAgICAgICAgel9nenNlZWsKKysjICAgIGRlZmluZSBn enNlZWs2NCAgICAgICAgICAgICAgel9nenNlZWs2NAorKyMgICAgZGVmaW5lIGd6c2V0cGFyYW1z ICAgICAgICAgICB6X2d6c2V0cGFyYW1zCisrIyAgICBkZWZpbmUgZ3p0ZWxsICAgICAgICAgICAg ICAgIHpfZ3p0ZWxsCisrIyAgICBkZWZpbmUgZ3p0ZWxsNjQgICAgICAgICAgICAgIHpfZ3p0ZWxs NjQKKysjICAgIGRlZmluZSBnenVuZ2V0YyAgICAgICAgICAgICAgel9nenVuZ2V0YworKyMgICAg ZGVmaW5lIGd6dnByaW50ZiAgICAgICAgICAgICB6X2d6dnByaW50ZgorKyMgICAgZGVmaW5lIGd6 d3JpdGUgICAgICAgICAgICAgICB6X2d6d3JpdGUKKysjICBlbmRpZgorICMgIGRlZmluZSBpbmZs YXRlICAgICAgICAgICAgICAgel9pbmZsYXRlCisgIyAgZGVmaW5lIGluZmxhdGVCYWNrICAgICAg ICAgICB6X2luZmxhdGVCYWNrCisgIyAgZGVmaW5lIGluZmxhdGVCYWNrRW5kICAgICAgICB6X2lu ZmxhdGVCYWNrRW5kCisrIyAgZGVmaW5lIGluZmxhdGVCYWNrSW5pdCAgICAgICB6X2luZmxhdGVC YWNrSW5pdAorICMgIGRlZmluZSBpbmZsYXRlQmFja0luaXRfICAgICAgel9pbmZsYXRlQmFja0lu aXRfCisrIyAgZGVmaW5lIGluZmxhdGVDb2Rlc1VzZWQgICAgICB6X2luZmxhdGVDb2Rlc1VzZWQK KyAjICBkZWZpbmUgaW5mbGF0ZUNvcHkgICAgICAgICAgIHpfaW5mbGF0ZUNvcHkKKyAjICBkZWZp bmUgaW5mbGF0ZUVuZCAgICAgICAgICAgIHpfaW5mbGF0ZUVuZAorKyMgIGRlZmluZSBpbmZsYXRl R2V0RGljdGlvbmFyeSAgel9pbmZsYXRlR2V0RGljdGlvbmFyeQorICMgIGRlZmluZSBpbmZsYXRl R2V0SGVhZGVyICAgICAgel9pbmZsYXRlR2V0SGVhZGVyCisrIyAgZGVmaW5lIGluZmxhdGVJbml0 ICAgICAgICAgICB6X2luZmxhdGVJbml0CisrIyAgZGVmaW5lIGluZmxhdGVJbml0MiAgICAgICAg ICB6X2luZmxhdGVJbml0MgorICMgIGRlZmluZSBpbmZsYXRlSW5pdDJfICAgICAgICAgel9pbmZs YXRlSW5pdDJfCisgIyAgZGVmaW5lIGluZmxhdGVJbml0XyAgICAgICAgICB6X2luZmxhdGVJbml0 XworICMgIGRlZmluZSBpbmZsYXRlTWFyayAgICAgICAgICAgel9pbmZsYXRlTWFyaworICMgIGRl ZmluZSBpbmZsYXRlUHJpbWUgICAgICAgICAgel9pbmZsYXRlUHJpbWUKKyAjICBkZWZpbmUgaW5m bGF0ZVJlc2V0ICAgICAgICAgIHpfaW5mbGF0ZVJlc2V0CisgIyAgZGVmaW5lIGluZmxhdGVSZXNl dDIgICAgICAgICB6X2luZmxhdGVSZXNldDIKKysjICBkZWZpbmUgaW5mbGF0ZVJlc2V0S2VlcCAg ICAgIHpfaW5mbGF0ZVJlc2V0S2VlcAorICMgIGRlZmluZSBpbmZsYXRlU2V0RGljdGlvbmFyeSAg el9pbmZsYXRlU2V0RGljdGlvbmFyeQorICMgIGRlZmluZSBpbmZsYXRlU3luYyAgICAgICAgICAg el9pbmZsYXRlU3luYworICMgIGRlZmluZSBpbmZsYXRlU3luY1BvaW50ICAgICAgel9pbmZsYXRl U3luY1BvaW50CisgIyAgZGVmaW5lIGluZmxhdGVVbmRlcm1pbmUgICAgICB6X2luZmxhdGVVbmRl cm1pbmUKKysjICBkZWZpbmUgaW5mbGF0ZVZhbGlkYXRlICAgICAgIHpfaW5mbGF0ZVZhbGlkYXRl CisgIyAgZGVmaW5lIGluZmxhdGVfY29weXJpZ2h0ICAgICB6X2luZmxhdGVfY29weXJpZ2h0Cisg IyAgZGVmaW5lIGluZmxhdGVfZmFzdCAgICAgICAgICB6X2luZmxhdGVfZmFzdAorICMgIGRlZmlu ZSBpbmZsYXRlX3RhYmxlICAgICAgICAgel9pbmZsYXRlX3RhYmxlCistIyAgZGVmaW5lIHVuY29t cHJlc3MgICAgICAgICAgICB6X3VuY29tcHJlc3MKKysjICBpZm5kZWYgWl9TT0xPCisrIyAgICBk ZWZpbmUgdW5jb21wcmVzcyAgICAgICAgICAgIHpfdW5jb21wcmVzcworKyMgICAgZGVmaW5lIHVu Y29tcHJlc3MyICAgICAgICAgICB6X3VuY29tcHJlc3MyCisrIyAgZW5kaWYKKyAjICBkZWZpbmUg ekVycm9yICAgICAgICAgICAgICAgIHpfekVycm9yCistIyAgZGVmaW5lIHpjYWxsb2MgICAgICAg ICAgICAgICB6X3pjYWxsb2MKKy0jICBkZWZpbmUgemNmcmVlICAgICAgICAgICAgICAgIHpfemNm cmVlCisrIyAgaWZuZGVmIFpfU09MTworKyMgICAgZGVmaW5lIHpjYWxsb2MgICAgICAgICAgICAg ICB6X3pjYWxsb2MKKysjICAgIGRlZmluZSB6Y2ZyZWUgICAgICAgICAgICAgICAgel96Y2ZyZWUK KysjICBlbmRpZgorICMgIGRlZmluZSB6bGliQ29tcGlsZUZsYWdzICAgICAgel96bGliQ29tcGls ZUZsYWdzCisgIyAgZGVmaW5lIHpsaWJWZXJzaW9uICAgICAgICAgICB6X3psaWJWZXJzaW9uCisg CitAQCAtMTExLDcgKzE0Myw5IEBACisgIyAgZGVmaW5lIGFsbG9jX2Z1bmMgICAgICAgICAgICB6 X2FsbG9jX2Z1bmMKKyAjICBkZWZpbmUgY2hhcmYgICAgICAgICAgICAgICAgIHpfY2hhcmYKKyAj ICBkZWZpbmUgZnJlZV9mdW5jICAgICAgICAgICAgIHpfZnJlZV9mdW5jCistIyAgZGVmaW5lIGd6 RmlsZSAgICAgICAgICAgICAgICB6X2d6RmlsZQorKyMgIGlmbmRlZiBaX1NPTE8KKysjICAgIGRl ZmluZSBnekZpbGUgICAgICAgICAgICAgICAgel9nekZpbGUKKysjICBlbmRpZgorICMgIGRlZmlu ZSBnel9oZWFkZXIgICAgICAgICAgICAgel9nel9oZWFkZXIKKyAjICBkZWZpbmUgZ3pfaGVhZGVy cCAgICAgICAgICAgIHpfZ3pfaGVhZGVycAorICMgIGRlZmluZSBpbl9mdW5jICAgICAgICAgICAg ICAgel9pbl9mdW5jCitAQCAtMTk3LDkgKzIzMSwyNSBAQAorICMgIGVuZGlmCisgI2VuZGlmCisg CistLyogU29tZSBNYWMgY29tcGlsZXJzIG1lcmdlIGFsbCAuaCBmaWxlcyBpbmNvcnJlY3RseTog Ki8KKy0jaWYgZGVmaW5lZChfX01XRVJLU19fKXx8ZGVmaW5lZChhcHBsZWMpfHxkZWZpbmVkKFRI SU5LX0MpfHxkZWZpbmVkKF9fU0NfXykKKy0jICBkZWZpbmUgTk9fRFVNTVlfREVDTAorKyNpZiBk ZWZpbmVkKFpMSUJfQ09OU1QpICYmICFkZWZpbmVkKHpfY29uc3QpCisrIyAgZGVmaW5lIHpfY29u c3QgY29uc3QKKysjZWxzZQorKyMgIGRlZmluZSB6X2NvbnN0CisrI2VuZGlmCisrCisrI2lmZGVm IFpfU09MTworKyAgIHR5cGVkZWYgdW5zaWduZWQgbG9uZyB6X3NpemVfdDsKKysjZWxzZQorKyMg IGRlZmluZSB6X2xvbmdsb25nIGxvbmcgbG9uZworKyMgIGlmIGRlZmluZWQoTk9fU0laRV9UKQor KyAgICAgdHlwZWRlZiB1bnNpZ25lZCBOT19TSVpFX1Qgel9zaXplX3Q7CisrIyAgZWxpZiBkZWZp bmVkKFNUREMpCisrIyAgICBpbmNsdWRlIDxzdGRkZWYuaD4KKysgICAgIHR5cGVkZWYgc2l6ZV90 IHpfc2l6ZV90OworKyMgIGVsc2UKKysgICAgIHR5cGVkZWYgdW5zaWduZWQgbG9uZyB6X3NpemVf dDsKKysjICBlbmRpZgorKyMgIHVuZGVmIHpfbG9uZ2xvbmcKKyAjZW5kaWYKKyAKKyAvKiBNYXhp bXVtIHZhbHVlIGZvciBtZW1MZXZlbCBpbiBkZWZsYXRlSW5pdDIgKi8KK0BAIC0yMjksNyArMjc5 LDcgQEAKKyAgT2YgY291cnNlIHRoaXMgd2lsbCBnZW5lcmFsbHkgZGVncmFkZSBjb21wcmVzc2lv biAodGhlcmUncyBubyBmcmVlIGx1bmNoKS4KKyAKKyAgICBUaGUgbWVtb3J5IHJlcXVpcmVtZW50 cyBmb3IgaW5mbGF0ZSBhcmUgKGluIGJ5dGVzKSAxIDw8IHdpbmRvd0JpdHMKKy0gdGhhdCBpcywg MzJLIGZvciB3aW5kb3dCaXRzPTE1IChkZWZhdWx0IHZhbHVlKSBwbHVzIGEgZmV3IGtpbG9ieXRl cworKyB0aGF0IGlzLCAzMksgZm9yIHdpbmRvd0JpdHM9MTUgKGRlZmF1bHQgdmFsdWUpIHBsdXMg YWJvdXQgNyBraWxvYnl0ZXMKKyAgZm9yIHNtYWxsIG9iamVjdHMuCisgKi8KKyAKK0BAIC0yNDMs NiArMjkzLDE0IEBACisgIyAgZW5kaWYKKyAjZW5kaWYKKyAKKysjaWZuZGVmIFpfQVJHIC8qIGZ1 bmN0aW9uIHByb3RvdHlwZXMgZm9yIHN0ZGFyZyAqLworKyMgIGlmIGRlZmluZWQoU1REQykgfHwg ZGVmaW5lZChaX0hBVkVfU1REQVJHX0gpCisrIyAgICBkZWZpbmUgWl9BUkcoYXJncykgIGFyZ3MK KysjICBlbHNlCisrIyAgICBkZWZpbmUgWl9BUkcoYXJncykgICgpCisrIyAgZW5kaWYKKysjZW5k aWYKKysKKyAvKiBUaGUgZm9sbG93aW5nIGRlZmluaXRpb25zIGZvciBGQVIgYXJlIG5lZWRlZCBv bmx5IGZvciBNU0RPUyBtaXhlZAorICAqIG1vZGVsIHByb2dyYW1taW5nIChzbWFsbCBvciBtZWRp dW0gbW9kZWwgd2l0aCBzb21lIGZhciBhbGxvY2F0aW9ucykuCisgICogVGhpcyB3YXMgdGVzdGVk IG9ubHkgd2l0aCBNU0M7IGZvciBvdGhlciBNU0RPUyBjb21waWxlcnMgeW91IG1heSBoYXZlCitA QCAtMzU2LDEyICs0MTQsNDcgQEAgdHlwZWRlZiB1TG9uZyBGQVIgdUxvbmdmOworICAgIHR5cGVk ZWYgQnl0ZSAgICAgICAqdm9pZHA7CisgI2VuZGlmCisgCisrI2lmICFkZWZpbmVkKFpfVTQpICYm ICFkZWZpbmVkKFpfU09MTykgJiYgZGVmaW5lZChTVERDKQorKyMgIGluY2x1ZGUgPGxpbWl0cy5o PgorKyMgIGlmIChVSU5UX01BWCA9PSAweGZmZmZmZmZmVUwpCisrIyAgICBkZWZpbmUgWl9VNCB1 bnNpZ25lZAorKyMgIGVsaWYgKFVMT05HX01BWCA9PSAweGZmZmZmZmZmVUwpCisrIyAgICBkZWZp bmUgWl9VNCB1bnNpZ25lZCBsb25nCisrIyAgZWxpZiAoVVNIUlRfTUFYID09IDB4ZmZmZmZmZmZV TCkKKysjICAgIGRlZmluZSBaX1U0IHVuc2lnbmVkIHNob3J0CisrIyAgZW5kaWYKKysjZW5kaWYK KysKKysjaWZkZWYgWl9VNAorKyAgIHR5cGVkZWYgWl9VNCB6X2NyY190OworKyNlbHNlCisrICAg dHlwZWRlZiB1bnNpZ25lZCBsb25nIHpfY3JjX3Q7CisrI2VuZGlmCisrCisgI2lmZGVmIEhBVkVf VU5JU1REX0ggICAgLyogbWF5IGJlIHNldCB0byAjaWYgMSBieSAuL2NvbmZpZ3VyZSAqLworICMg IGRlZmluZSBaX0hBVkVfVU5JU1REX0gKKyAjZW5kaWYKKyAKKysjaWZkZWYgSEFWRV9TVERBUkdf SCAgICAvKiBtYXkgYmUgc2V0IHRvICNpZiAxIGJ5IC4vY29uZmlndXJlICovCisrIyAgZGVmaW5l IFpfSEFWRV9TVERBUkdfSAorKyNlbmRpZgorKworICNpZmRlZiBTVERDCistIyAgaW5jbHVkZSA8 c3lzL3R5cGVzLmg+ICAgIC8qIGZvciBvZmZfdCAqLworKyMgIGlmbmRlZiBaX1NPTE8KKysjICAg IGluY2x1ZGUgPHN5cy90eXBlcy5oPiAgICAgIC8qIGZvciBvZmZfdCAqLworKyMgIGVuZGlmCisr I2VuZGlmCisrCisrI2lmIGRlZmluZWQoU1REQykgfHwgZGVmaW5lZChaX0hBVkVfU1REQVJHX0gp CisrIyAgaWZuZGVmIFpfU09MTworKyMgICAgaW5jbHVkZSA8c3RkYXJnLmg+ICAgICAgICAgLyog Zm9yIHZhX2xpc3QgKi8KKysjICBlbmRpZgorKyNlbmRpZgorKworKyNpZmRlZiBfV0lOMzIKKysj ICBpZm5kZWYgWl9TT0xPCisrIyAgICBpbmNsdWRlIDxzdGRkZWYuaD4gICAgICAgICAvKiBmb3Ig d2NoYXJfdCAqLworKyMgIGVuZGlmCisgI2VuZGlmCisgCisgLyogYSBsaXR0bGUgdHJpY2sgdG8g YWNjb21tb2RhdGUgYm90aCAiI2RlZmluZSBfTEFSR0VGSUxFNjRfU09VUkNFIiBhbmQKK0BAIC0z NzAsMjEgKzQ2MywzOCBAQCB0eXBlZGVmIHVMb25nIEZBUiB1TG9uZ2Y7CisgICogYm90aCAiI3Vu ZGVmIF9MQVJHRUZJTEU2NF9TT1VSQ0UiIGFuZCAiI2RlZmluZSBfTEFSR0VGSUxFNjRfU09VUkNF IDAiIGFzCisgICogZXF1aXZhbGVudGx5IHJlcXVlc3Rpbmcgbm8gNjQtYml0IG9wZXJhdGlvbnMK KyAgKi8KKy0jaWYgLV9MQVJHRUZJTEU2NF9TT1VSQ0UgLSAtMSA9PSAxCisrI2lmIGRlZmluZWQo X0xBUkdFRklMRTY0X1NPVVJDRSkgJiYgLV9MQVJHRUZJTEU2NF9TT1VSQ0UgLSAtMSA9PSAxCisg IyAgdW5kZWYgX0xBUkdFRklMRTY0X1NPVVJDRQorICNlbmRpZgorIAorLSNpZiBkZWZpbmVkKFpf SEFWRV9VTklTVERfSCkgfHwgZGVmaW5lZChfTEFSR0VGSUxFNjRfU09VUkNFKQorLSMgIGluY2x1 ZGUgPHVuaXN0ZC5oPiAgICAgICAvKiBmb3IgU0VFS18qIGFuZCBvZmZfdCAqLworLSMgIGlmZGVm IFZNUworLSMgICAgaW5jbHVkZSA8dW5peGlvLmg+ICAgICAvKiBmb3Igb2ZmX3QgKi8KKy0jICBl bmRpZgorLSMgIGlmbmRlZiB6X29mZl90CistIyAgICBkZWZpbmUgel9vZmZfdCBvZmZfdAorKyNp ZiBkZWZpbmVkKF9fV0FUQ09NQ19fKSAmJiAhZGVmaW5lZChaX0hBVkVfVU5JU1REX0gpCisrIyAg ZGVmaW5lIFpfSEFWRV9VTklTVERfSAorKyNlbmRpZgorKyNpZm5kZWYgWl9TT0xPCisrIyAgaWYg ZGVmaW5lZChaX0hBVkVfVU5JU1REX0gpIHx8IGRlZmluZWQoX0xBUkdFRklMRTY0X1NPVVJDRSkK KysjICAgIGluY2x1ZGUgPHVuaXN0ZC5oPiAgICAgICAgIC8qIGZvciBTRUVLXyosIG9mZl90LCBh bmQgX0xGUzY0X0xBUkdFRklMRSAqLworKyMgICAgaWZkZWYgVk1TCisrIyAgICAgIGluY2x1ZGUg PHVuaXhpby5oPiAgICAgICAvKiBmb3Igb2ZmX3QgKi8KKysjICAgIGVuZGlmCisrIyAgICBpZm5k ZWYgel9vZmZfdAorKyMgICAgICBkZWZpbmUgel9vZmZfdCBvZmZfdAorKyMgICAgZW5kaWYKKyAj ICBlbmRpZgorICNlbmRpZgorIAorLSNpZm5kZWYgU0VFS19TRVQKKysjaWYgZGVmaW5lZChfTEZT NjRfTEFSR0VGSUxFKSAmJiBfTEZTNjRfTEFSR0VGSUxFLTAKKysjICBkZWZpbmUgWl9MRlM2NAor KyNlbmRpZgorKworKyNpZiBkZWZpbmVkKF9MQVJHRUZJTEU2NF9TT1VSQ0UpICYmIGRlZmluZWQo Wl9MRlM2NCkKKysjICBkZWZpbmUgWl9MQVJHRTY0CisrI2VuZGlmCisrCisrI2lmIGRlZmluZWQo X0ZJTEVfT0ZGU0VUX0JJVFMpICYmIF9GSUxFX09GRlNFVF9CSVRTLTAgPT0gNjQgJiYgZGVmaW5l ZChaX0xGUzY0KQorKyMgIGRlZmluZSBaX1dBTlQ2NAorKyNlbmRpZgorKworKyNpZiAhZGVmaW5l ZChTRUVLX1NFVCkgJiYgIWRlZmluZWQoWl9TT0xPKQorICMgIGRlZmluZSBTRUVLX1NFVCAgICAg ICAgMCAgICAgICAvKiBTZWVrIGZyb20gYmVnaW5uaW5nIG9mIGZpbGUuICAqLworICMgIGRlZmlu ZSBTRUVLX0NVUiAgICAgICAgMSAgICAgICAvKiBTZWVrIGZyb20gY3VycmVudCBwb3NpdGlvbi4g ICovCisgIyAgZGVmaW5lIFNFRUtfRU5EICAgICAgICAyICAgICAgIC8qIFNldCBmaWxlIHBvaW50 ZXIgdG8gRU9GIHBsdXMgIm9mZnNldCIgKi8KK0BAIC0zOTQsMTggKzUwNCwxNCBAQCB0eXBlZGVm IHVMb25nIEZBUiB1TG9uZ2Y7CisgIyAgZGVmaW5lIHpfb2ZmX3QgbG9uZworICNlbmRpZgorIAor LSNpZiBkZWZpbmVkKF9MQVJHRUZJTEU2NF9TT1VSQ0UpICYmIF9MRlM2NF9MQVJHRUZJTEUtMAor KyNpZiAhZGVmaW5lZChfV0lOMzIpICYmIGRlZmluZWQoWl9MQVJHRTY0KQorICMgIGRlZmluZSB6 X29mZjY0X3Qgb2ZmNjRfdAorICNlbHNlCistIyAgZGVmaW5lIHpfb2ZmNjRfdCB6X29mZl90Cist I2VuZGlmCistCistI2lmIGRlZmluZWQoX19PUzQwMF9fKQorLSMgIGRlZmluZSBOT192c25wcmlu dGYKKy0jZW5kaWYKKy0KKy0jaWYgZGVmaW5lZChfX01WU19fKQorLSMgIGRlZmluZSBOT192c25w cmludGYKKysjICBpZiBkZWZpbmVkKF9XSU4zMikgJiYgIWRlZmluZWQoX19HTlVDX18pICYmICFk ZWZpbmVkKFpfU09MTykKKysjICAgIGRlZmluZSB6X29mZjY0X3QgX19pbnQ2NAorKyMgIGVsc2UK KysjICAgIGRlZmluZSB6X29mZjY0X3Qgel9vZmZfdAorKyMgIGVuZGlmCisgI2VuZGlmCisgCisg LyogTVZTIGxpbmtlciBkb2VzIG5vdCBzdXBwb3J0IGV4dGVybmFsIG5hbWVzIGxhcmdlciB0aGFu IDggYnl0ZXMgKi8KK2RpZmYgLS1naXQgYS9jb20zMi9pbmNsdWRlL3psaWIuaCBiL2NvbTMyL2lu Y2x1ZGUvemxpYi5oCitpbmRleCBiZmJiYTgzZS4uZjA5Y2RhZjEgMTAwNjQ0CistLS0gYS9jb20z Mi9pbmNsdWRlL3psaWIuaAorKysrIGIvY29tMzIvaW5jbHVkZS96bGliLmgKK0BAIC0xLDcgKzEs NyBAQAorIC8qIHpsaWIuaCAtLSBpbnRlcmZhY2Ugb2YgdGhlICd6bGliJyBnZW5lcmFsIHB1cnBv c2UgY29tcHJlc3Npb24gbGlicmFyeQorLSAgdmVyc2lvbiAxLjIuNSwgQXByaWwgMTl0aCwgMjAx MAorKyAgdmVyc2lvbiAxLjIuMTEsIEphbnVhcnkgMTV0aCwgMjAxNworIAorLSAgQ29weXJpZ2h0 IChDKSAxOTk1LTIwMTAgSmVhbi1sb3VwIEdhaWxseSBhbmQgTWFyayBBZGxlcgorKyAgQ29weXJp Z2h0IChDKSAxOTk1LTIwMTcgSmVhbi1sb3VwIEdhaWxseSBhbmQgTWFyayBBZGxlcgorIAorICAg VGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCAnYXMtaXMnLCB3aXRob3V0IGFueSBleHByZXNzIG9y IGltcGxpZWQKKyAgIHdhcnJhbnR5LiAgSW4gbm8gZXZlbnQgd2lsbCB0aGUgYXV0aG9ycyBiZSBo ZWxkIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMKK0BAIC0yNCw4ICsyNCw4IEBACisgCisgCisgICBU aGUgZGF0YSBmb3JtYXQgdXNlZCBieSB0aGUgemxpYiBsaWJyYXJ5IGlzIGRlc2NyaWJlZCBieSBS RkNzIChSZXF1ZXN0IGZvcgorLSAgQ29tbWVudHMpIDE5NTAgdG8gMTk1MiBpbiB0aGUgZmlsZXMg aHR0cDovL3d3dy5pZXRmLm9yZy9yZmMvcmZjMTk1MC50eHQKKy0gICh6bGliIGZvcm1hdCksIHJm YzE5NTEudHh0IChkZWZsYXRlIGZvcm1hdCkgYW5kIHJmYzE5NTIudHh0IChnemlwIGZvcm1hdCku CisrICBDb21tZW50cykgMTk1MCB0byAxOTUyIGluIHRoZSBmaWxlcyBodHRwOi8vdG9vbHMuaWV0 Zi5vcmcvaHRtbC9yZmMxOTUwCisrICAoemxpYiBmb3JtYXQpLCByZmMxOTUxIChkZWZsYXRlIGZv cm1hdCkgYW5kIHJmYzE5NTIgKGd6aXAgZm9ybWF0KS4KKyAqLworIAorICNpZm5kZWYgWkxJQl9I CitAQCAtMzcsMTEgKzM3LDExIEBACisgZXh0ZXJuICJDIiB7CisgI2VuZGlmCisgCistI2RlZmlu ZSBaTElCX1ZFUlNJT04gIjEuMi41IgorLSNkZWZpbmUgWkxJQl9WRVJOVU0gMHgxMjUwCisrI2Rl ZmluZSBaTElCX1ZFUlNJT04gIjEuMi4xMSIKKysjZGVmaW5lIFpMSUJfVkVSTlVNIDB4MTJiMAor ICNkZWZpbmUgWkxJQl9WRVJfTUFKT1IgMQorICNkZWZpbmUgWkxJQl9WRVJfTUlOT1IgMgorLSNk ZWZpbmUgWkxJQl9WRVJfUkVWSVNJT04gNQorKyNkZWZpbmUgWkxJQl9WRVJfUkVWSVNJT04gMTEK KyAjZGVmaW5lIFpMSUJfVkVSX1NVQlJFVklTSU9OIDAKKyAKKyAvKgorQEAgLTY1LDcgKzY1LDgg QEAgZXh0ZXJuICJDIiB7CisgICB3aXRoICJneiIuICBUaGUgZ3ppcCBmb3JtYXQgaXMgZGlmZmVy ZW50IGZyb20gdGhlIHpsaWIgZm9ybWF0LiAgZ3ppcCBpcyBhCisgICBnemlwIHdyYXBwZXIsIGRv Y3VtZW50ZWQgaW4gUkZDIDE5NTIsIHdyYXBwZWQgYXJvdW5kIGEgZGVmbGF0ZSBzdHJlYW0uCisg CistICAgIFRoaXMgbGlicmFyeSBjYW4gb3B0aW9uYWxseSByZWFkIGFuZCB3cml0ZSBnemlwIHN0 cmVhbXMgaW4gbWVtb3J5IGFzIHdlbGwuCisrICAgIFRoaXMgbGlicmFyeSBjYW4gb3B0aW9uYWxs eSByZWFkIGFuZCB3cml0ZSBnemlwIGFuZCByYXcgZGVmbGF0ZSBzdHJlYW1zIGluCisrICBtZW1v cnkgYXMgd2VsbC4KKyAKKyAgICAgVGhlIHpsaWIgZm9ybWF0IHdhcyBkZXNpZ25lZCB0byBiZSBj b21wYWN0IGFuZCBmYXN0IGZvciB1c2UgaW4gbWVtb3J5CisgICBhbmQgb24gY29tbXVuaWNhdGlv bnMgY2hhbm5lbHMuICBUaGUgZ3ppcCBmb3JtYXQgd2FzIGRlc2lnbmVkIGZvciBzaW5nbGUtCitA QCAtNzQsNyArNzUsNyBAQCBleHRlcm4gIkMiIHsKKyAKKyAgICAgVGhlIGxpYnJhcnkgZG9lcyBu b3QgaW5zdGFsbCBhbnkgc2lnbmFsIGhhbmRsZXIuICBUaGUgZGVjb2RlciBjaGVja3MKKyAgIHRo ZSBjb25zaXN0ZW5jeSBvZiB0aGUgY29tcHJlc3NlZCBkYXRhLCBzbyB0aGUgbGlicmFyeSBzaG91 bGQgbmV2ZXIgY3Jhc2gKKy0gIGV2ZW4gaW4gY2FzZSBvZiBjb3JydXB0ZWQgaW5wdXQuCisrICBl dmVuIGluIHRoZSBjYXNlIG9mIGNvcnJ1cHRlZCBpbnB1dC4KKyAqLworIAorIHR5cGVkZWYgdm9p ZHBmICgqYWxsb2NfZnVuYykgT0YoKHZvaWRwZiBvcGFxdWUsIHVJbnQgaXRlbXMsIHVJbnQgc2l6 ZSkpOworQEAgLTgzLDIzICs4NCwyNCBAQCB0eXBlZGVmIHZvaWQgICAoKmZyZWVfZnVuYykgIE9G KCh2b2lkcGYgb3BhcXVlLCB2b2lkcGYgYWRkcmVzcykpOworIHN0cnVjdCBpbnRlcm5hbF9zdGF0 ZTsKKyAKKyB0eXBlZGVmIHN0cnVjdCB6X3N0cmVhbV9zIHsKKy0gICAgQnl0ZWYgICAgKm5leHRf aW47ICAvKiBuZXh0IGlucHV0IGJ5dGUgKi8KKysgICAgel9jb25zdCBCeXRlZiAqbmV4dF9pbjsg ICAgIC8qIG5leHQgaW5wdXQgYnl0ZSAqLworICAgICB1SW50ICAgICBhdmFpbF9pbjsgIC8qIG51 bWJlciBvZiBieXRlcyBhdmFpbGFibGUgYXQgbmV4dF9pbiAqLworLSAgICB1TG9uZyAgICB0b3Rh bF9pbjsgIC8qIHRvdGFsIG5iIG9mIGlucHV0IGJ5dGVzIHJlYWQgc28gZmFyICovCisrICAgIHVM b25nICAgIHRvdGFsX2luOyAgLyogdG90YWwgbnVtYmVyIG9mIGlucHV0IGJ5dGVzIHJlYWQgc28g ZmFyICovCisgCistICAgIEJ5dGVmICAgICpuZXh0X291dDsgLyogbmV4dCBvdXRwdXQgYnl0ZSBz aG91bGQgYmUgcHV0IHRoZXJlICovCisrICAgIEJ5dGVmICAgICpuZXh0X291dDsgLyogbmV4dCBv dXRwdXQgYnl0ZSB3aWxsIGdvIGhlcmUgKi8KKyAgICAgdUludCAgICAgYXZhaWxfb3V0OyAvKiBy ZW1haW5pbmcgZnJlZSBzcGFjZSBhdCBuZXh0X291dCAqLworLSAgICB1TG9uZyAgICB0b3RhbF9v dXQ7IC8qIHRvdGFsIG5iIG9mIGJ5dGVzIG91dHB1dCBzbyBmYXIgKi8KKysgICAgdUxvbmcgICAg dG90YWxfb3V0OyAvKiB0b3RhbCBudW1iZXIgb2YgYnl0ZXMgb3V0cHV0IHNvIGZhciAqLworIAor LSAgICBjaGFyICAgICAqbXNnOyAgICAgIC8qIGxhc3QgZXJyb3IgbWVzc2FnZSwgTlVMTCBpZiBu byBlcnJvciAqLworKyAgICB6X2NvbnN0IGNoYXIgKm1zZzsgIC8qIGxhc3QgZXJyb3IgbWVzc2Fn ZSwgTlVMTCBpZiBubyBlcnJvciAqLworICAgICBzdHJ1Y3QgaW50ZXJuYWxfc3RhdGUgRkFSICpz dGF0ZTsgLyogbm90IHZpc2libGUgYnkgYXBwbGljYXRpb25zICovCisgCisgICAgIGFsbG9jX2Z1 bmMgemFsbG9jOyAgLyogdXNlZCB0byBhbGxvY2F0ZSB0aGUgaW50ZXJuYWwgc3RhdGUgKi8KKyAg ICAgZnJlZV9mdW5jICB6ZnJlZTsgICAvKiB1c2VkIHRvIGZyZWUgdGhlIGludGVybmFsIHN0YXRl ICovCisgICAgIHZvaWRwZiAgICAgb3BhcXVlOyAgLyogcHJpdmF0ZSBkYXRhIG9iamVjdCBwYXNz ZWQgdG8gemFsbG9jIGFuZCB6ZnJlZSAqLworIAorLSAgICBpbnQgICAgIGRhdGFfdHlwZTsgIC8q IGJlc3QgZ3Vlc3MgYWJvdXQgdGhlIGRhdGEgdHlwZTogYmluYXJ5IG9yIHRleHQgKi8KKy0gICAg dUxvbmcgICBhZGxlcjsgICAgICAvKiBhZGxlcjMyIHZhbHVlIG9mIHRoZSB1bmNvbXByZXNzZWQg ZGF0YSAqLworKyAgICBpbnQgICAgIGRhdGFfdHlwZTsgIC8qIGJlc3QgZ3Vlc3MgYWJvdXQgdGhl IGRhdGEgdHlwZTogYmluYXJ5IG9yIHRleHQKKysgICAgICAgICAgICAgICAgICAgICAgICAgICBm b3IgZGVmbGF0ZSwgb3IgdGhlIGRlY29kaW5nIHN0YXRlIGZvciBpbmZsYXRlICovCisrICAgIHVM b25nICAgYWRsZXI7ICAgICAgLyogQWRsZXItMzIgb3IgQ1JDLTMyIHZhbHVlIG9mIHRoZSB1bmNv bXByZXNzZWQgZGF0YSAqLworICAgICB1TG9uZyAgIHJlc2VydmVkOyAgIC8qIHJlc2VydmVkIGZv ciBmdXR1cmUgdXNlICovCisgfSB6X3N0cmVhbTsKKyAKK0BAIC0xNDIsNyArMTQ0LDkgQEAgdHlw ZWRlZiBnel9oZWFkZXIgRkFSICpnel9oZWFkZXJwOworIAorICAgICAgemFsbG9jIG11c3QgcmV0 dXJuIFpfTlVMTCBpZiB0aGVyZSBpcyBub3QgZW5vdWdoIG1lbW9yeSBmb3IgdGhlIG9iamVjdC4K KyAgICBJZiB6bGliIGlzIHVzZWQgaW4gYSBtdWx0aS10aHJlYWRlZCBhcHBsaWNhdGlvbiwgemFs bG9jIGFuZCB6ZnJlZSBtdXN0IGJlCistICAgdGhyZWFkIHNhZmUuCisrICAgdGhyZWFkIHNhZmUu ICBJbiB0aGF0IGNhc2UsIHpsaWIgaXMgdGhyZWFkLXNhZmUuICBXaGVuIHphbGxvYyBhbmQgemZy ZWUgYXJlCisrICAgWl9OVUxMIG9uIGVudHJ5IHRvIHRoZSBpbml0aWFsaXphdGlvbiBmdW5jdGlv biwgdGhleSBhcmUgc2V0IHRvIGludGVybmFsCisrICAgcm91dGluZXMgdGhhdCB1c2UgdGhlIHN0 YW5kYXJkIGxpYnJhcnkgZnVuY3Rpb25zIG1hbGxvYygpIGFuZCBmcmVlKCkuCisgCisgICAgICBP biAxNi1iaXQgc3lzdGVtcywgdGhlIGZ1bmN0aW9ucyB6YWxsb2MgYW5kIHpmcmVlIG11c3QgYmUg YWJsZSB0byBhbGxvY2F0ZQorICAgIGV4YWN0bHkgNjU1MzYgYnl0ZXMsIGJ1dCB3aWxsIG5vdCBi ZSByZXF1aXJlZCB0byBhbGxvY2F0ZSBtb3JlIHRoYW4gdGhpcyBpZgorQEAgLTE1NSw3ICsxNTks NyBAQCB0eXBlZGVmIGd6X2hlYWRlciBGQVIgKmd6X2hlYWRlcnA7CisgCisgICAgICBUaGUgZmll bGRzIHRvdGFsX2luIGFuZCB0b3RhbF9vdXQgY2FuIGJlIHVzZWQgZm9yIHN0YXRpc3RpY3Mgb3Ig cHJvZ3Jlc3MKKyAgICByZXBvcnRzLiAgQWZ0ZXIgY29tcHJlc3Npb24sIHRvdGFsX2luIGhvbGRz IHRoZSB0b3RhbCBzaXplIG9mIHRoZQorLSAgIHVuY29tcHJlc3NlZCBkYXRhIGFuZCBtYXkgYmUg c2F2ZWQgZm9yIHVzZSBpbiB0aGUgZGVjb21wcmVzc29yIChwYXJ0aWN1bGFybHkKKysgICB1bmNv bXByZXNzZWQgZGF0YSBhbmQgbWF5IGJlIHNhdmVkIGZvciB1c2UgYnkgdGhlIGRlY29tcHJlc3Nv ciAocGFydGljdWxhcmx5CisgICAgaWYgdGhlIGRlY29tcHJlc3NvciB3YW50cyB0byBkZWNvbXBy ZXNzIGV2ZXJ5dGhpbmcgaW4gYSBzaW5nbGUgc3RlcCkuCisgKi8KKyAKK0BAIC0yMDAsNyArMjA0 LDcgQEAgdHlwZWRlZiBnel9oZWFkZXIgRkFSICpnel9oZWFkZXJwOworICNkZWZpbmUgWl9URVhU ICAgICAxCisgI2RlZmluZSBaX0FTQ0lJICAgIFpfVEVYVCAgIC8qIGZvciBjb21wYXRpYmlsaXR5 IHdpdGggMS4yLjIgYW5kIGVhcmxpZXIgKi8KKyAjZGVmaW5lIFpfVU5LTk9XTiAgMgorLS8qIFBv c3NpYmxlIHZhbHVlcyBvZiB0aGUgZGF0YV90eXBlIGZpZWxkICh0aG91Z2ggc2VlIGluZmxhdGUo KSkgKi8KKysvKiBQb3NzaWJsZSB2YWx1ZXMgb2YgdGhlIGRhdGFfdHlwZSBmaWVsZCBmb3IgZGVm bGF0ZSgpICovCisgCisgI2RlZmluZSBaX0RFRkxBVEVEICAgOAorIC8qIFRoZSBkZWZsYXRlIGNv bXByZXNzaW9uIG1ldGhvZCAodGhlIG9ubHkgb25lIHN1cHBvcnRlZCBpbiB0aGlzIHZlcnNpb24p ICovCitAQCAtMjU4LDExICsyNjIsMTEgQEAgWkVYVEVSTiBpbnQgWkVYUE9SVCBkZWZsYXRlIE9G KCh6X3N0cmVhbXAgc3RybSwgaW50IGZsdXNoKSk7CisgICAgIGVub3VnaCByb29tIGluIHRoZSBv dXRwdXQgYnVmZmVyKSwgbmV4dF9pbiBhbmQgYXZhaWxfaW4gYXJlIHVwZGF0ZWQgYW5kCisgICAg IHByb2Nlc3Npbmcgd2lsbCByZXN1bWUgYXQgdGhpcyBwb2ludCBmb3IgdGhlIG5leHQgY2FsbCBv ZiBkZWZsYXRlKCkuCisgCistICAtIFByb3ZpZGUgbW9yZSBvdXRwdXQgc3RhcnRpbmcgYXQgbmV4 dF9vdXQgYW5kIHVwZGF0ZSBuZXh0X291dCBhbmQgYXZhaWxfb3V0CisrICAtIEdlbmVyYXRlIG1v cmUgb3V0cHV0IHN0YXJ0aW5nIGF0IG5leHRfb3V0IGFuZCB1cGRhdGUgbmV4dF9vdXQgYW5kIGF2 YWlsX291dAorICAgICBhY2NvcmRpbmdseS4gIFRoaXMgYWN0aW9uIGlzIGZvcmNlZCBpZiB0aGUg cGFyYW1ldGVyIGZsdXNoIGlzIG5vbiB6ZXJvLgorICAgICBGb3JjaW5nIGZsdXNoIGZyZXF1ZW50 bHkgZGVncmFkZXMgdGhlIGNvbXByZXNzaW9uIHJhdGlvLCBzbyB0aGlzIHBhcmFtZXRlcgorLSAg ICBzaG91bGQgYmUgc2V0IG9ubHkgd2hlbiBuZWNlc3NhcnkgKGluIGludGVyYWN0aXZlIGFwcGxp Y2F0aW9ucykuICBTb21lCistICAgIG91dHB1dCBtYXkgYmUgcHJvdmlkZWQgZXZlbiBpZiBmbHVz aCBpcyBub3Qgc2V0LgorKyAgICBzaG91bGQgYmUgc2V0IG9ubHkgd2hlbiBuZWNlc3NhcnkuICBT b21lIG91dHB1dCBtYXkgYmUgcHJvdmlkZWQgZXZlbiBpZgorKyAgICBmbHVzaCBpcyB6ZXJvLgor IAorICAgICBCZWZvcmUgdGhlIGNhbGwgb2YgZGVmbGF0ZSgpLCB0aGUgYXBwbGljYXRpb24gc2hv dWxkIGVuc3VyZSB0aGF0IGF0IGxlYXN0CisgICBvbmUgb2YgdGhlIGFjdGlvbnMgaXMgcG9zc2li bGUsIGJ5IHByb3ZpZGluZyBtb3JlIGlucHV0IGFuZC9vciBjb25zdW1pbmcgbW9yZQorQEAgLTI3 MSw3ICsyNzUsOSBAQCBaRVhURVJOIGludCBaRVhQT1JUIGRlZmxhdGUgT0YoKHpfc3RyZWFtcCBz dHJtLCBpbnQgZmx1c2gpKTsKKyAgIG91dHB1dCB3aGVuIGl0IHdhbnRzLCBmb3IgZXhhbXBsZSB3 aGVuIHRoZSBvdXRwdXQgYnVmZmVyIGlzIGZ1bGwgKGF2YWlsX291dAorICAgPT0gMCksIG9yIGFm dGVyIGVhY2ggY2FsbCBvZiBkZWZsYXRlKCkuICBJZiBkZWZsYXRlIHJldHVybnMgWl9PSyBhbmQg d2l0aAorICAgemVybyBhdmFpbF9vdXQsIGl0IG11c3QgYmUgY2FsbGVkIGFnYWluIGFmdGVyIG1h a2luZyByb29tIGluIHRoZSBvdXRwdXQKKy0gIGJ1ZmZlciBiZWNhdXNlIHRoZXJlIG1pZ2h0IGJl IG1vcmUgb3V0cHV0IHBlbmRpbmcuCisrICBidWZmZXIgYmVjYXVzZSB0aGVyZSBtaWdodCBiZSBt b3JlIG91dHB1dCBwZW5kaW5nLiBTZWUgZGVmbGF0ZVBlbmRpbmcoKSwKKysgIHdoaWNoIGNhbiBi ZSB1c2VkIGlmIGRlc2lyZWQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgb3Igbm90IHRoZXJlIGlzIG1v cmUgb3VwdXQKKysgIGluIHRoYXQgY2FzZS4KKyAKKyAgICAgTm9ybWFsbHkgdGhlIHBhcmFtZXRl ciBmbHVzaCBpcyBzZXQgdG8gWl9OT19GTFVTSCwgd2hpY2ggYWxsb3dzIGRlZmxhdGUgdG8KKyAg IGRlY2lkZSBob3cgbXVjaCBkYXRhIHRvIGFjY3VtdWxhdGUgYmVmb3JlIHByb2R1Y2luZyBvdXRw dXQsIGluIG9yZGVyIHRvCitAQCAtMjkyLDggKzI5OCw4IEBAIFpFWFRFUk4gaW50IFpFWFBPUlQg ZGVmbGF0ZSBPRigoel9zdHJlYW1wIHN0cm0sIGludCBmbHVzaCkpOworICAgaW5wdXQgZGF0YSBz byBmYXIgd2lsbCBiZSBhdmFpbGFibGUgdG8gdGhlIGRlY29tcHJlc3NvciwgYXMgZm9yIFpfU1lO Q19GTFVTSC4KKyAgIFRoaXMgY29tcGxldGVzIHRoZSBjdXJyZW50IGRlZmxhdGUgYmxvY2sgYW5k IGZvbGxvd3MgaXQgd2l0aCBhbiBlbXB0eSBmaXhlZAorICAgY29kZXMgYmxvY2sgdGhhdCBpcyAx MCBiaXRzIGxvbmcuICBUaGlzIGFzc3VyZXMgdGhhdCBlbm91Z2ggYnl0ZXMgYXJlIG91dHB1dAor LSAgaW4gb3JkZXIgZm9yIHRoZSBkZWNvbXByZXNzb3IgdG8gZmluaXNoIHRoZSBibG9jayBiZWZv cmUgdGhlIGVtcHR5IGZpeGVkIGNvZGUKKy0gIGJsb2NrLgorKyAgaW4gb3JkZXIgZm9yIHRoZSBk ZWNvbXByZXNzb3IgdG8gZmluaXNoIHRoZSBibG9jayBiZWZvcmUgdGhlIGVtcHR5IGZpeGVkCisr ICBjb2RlcyBibG9jay4KKyAKKyAgICAgSWYgZmx1c2ggaXMgc2V0IHRvIFpfQkxPQ0ssIGEgZGVm bGF0ZSBibG9jayBpcyBjb21wbGV0ZWQgYW5kIGVtaXR0ZWQsIGFzCisgICBmb3IgWl9TWU5DX0ZM VVNILCBidXQgdGhlIG91dHB1dCBpcyBub3QgYWxpZ25lZCBvbiBhIGJ5dGUgYm91bmRhcnksIGFu ZCB1cCB0bworQEAgLTMxOSwzMyArMzI1LDM4IEBAIFpFWFRFUk4gaW50IFpFWFBPUlQgZGVmbGF0 ZSBPRigoel9zdHJlYW1wIHN0cm0sIGludCBmbHVzaCkpOworIAorICAgICBJZiB0aGUgcGFyYW1l dGVyIGZsdXNoIGlzIHNldCB0byBaX0ZJTklTSCwgcGVuZGluZyBpbnB1dCBpcyBwcm9jZXNzZWQs CisgICBwZW5kaW5nIG91dHB1dCBpcyBmbHVzaGVkIGFuZCBkZWZsYXRlIHJldHVybnMgd2l0aCBa X1NUUkVBTV9FTkQgaWYgdGhlcmUgd2FzCistICBlbm91Z2ggb3V0cHV0IHNwYWNlOyBpZiBkZWZs YXRlIHJldHVybnMgd2l0aCBaX09LLCB0aGlzIGZ1bmN0aW9uIG11c3QgYmUKKy0gIGNhbGxlZCBh Z2FpbiB3aXRoIFpfRklOSVNIIGFuZCBtb3JlIG91dHB1dCBzcGFjZSAodXBkYXRlZCBhdmFpbF9v dXQpIGJ1dCBubworLSAgbW9yZSBpbnB1dCBkYXRhLCB1bnRpbCBpdCByZXR1cm5zIHdpdGggWl9T VFJFQU1fRU5EIG9yIGFuIGVycm9yLiAgQWZ0ZXIKKy0gIGRlZmxhdGUgaGFzIHJldHVybmVkIFpf U1RSRUFNX0VORCwgdGhlIG9ubHkgcG9zc2libGUgb3BlcmF0aW9ucyBvbiB0aGUgc3RyZWFtCist ICBhcmUgZGVmbGF0ZVJlc2V0IG9yIGRlZmxhdGVFbmQuCisrICBlbm91Z2ggb3V0cHV0IHNwYWNl LiAgSWYgZGVmbGF0ZSByZXR1cm5zIHdpdGggWl9PSyBvciBaX0JVRl9FUlJPUiwgdGhpcworKyAg ZnVuY3Rpb24gbXVzdCBiZSBjYWxsZWQgYWdhaW4gd2l0aCBaX0ZJTklTSCBhbmQgbW9yZSBvdXRw dXQgc3BhY2UgKHVwZGF0ZWQKKysgIGF2YWlsX291dCkgYnV0IG5vIG1vcmUgaW5wdXQgZGF0YSwg dW50aWwgaXQgcmV0dXJucyB3aXRoIFpfU1RSRUFNX0VORCBvciBhbgorKyAgZXJyb3IuICBBZnRl ciBkZWZsYXRlIGhhcyByZXR1cm5lZCBaX1NUUkVBTV9FTkQsIHRoZSBvbmx5IHBvc3NpYmxlIG9w ZXJhdGlvbnMKKysgIG9uIHRoZSBzdHJlYW0gYXJlIGRlZmxhdGVSZXNldCBvciBkZWZsYXRlRW5k LgorIAorLSAgICBaX0ZJTklTSCBjYW4gYmUgdXNlZCBpbW1lZGlhdGVseSBhZnRlciBkZWZsYXRl SW5pdCBpZiBhbGwgdGhlIGNvbXByZXNzaW9uCistICBpcyB0byBiZSBkb25lIGluIGEgc2luZ2xl IHN0ZXAuICBJbiB0aGlzIGNhc2UsIGF2YWlsX291dCBtdXN0IGJlIGF0IGxlYXN0IHRoZQorLSAg dmFsdWUgcmV0dXJuZWQgYnkgZGVmbGF0ZUJvdW5kIChzZWUgYmVsb3cpLiAgSWYgZGVmbGF0ZSBk b2VzIG5vdCByZXR1cm4KKy0gIFpfU1RSRUFNX0VORCwgdGhlbiBpdCBtdXN0IGJlIGNhbGxlZCBh Z2FpbiBhcyBkZXNjcmliZWQgYWJvdmUuCisrICAgIFpfRklOSVNIIGNhbiBiZSB1c2VkIGluIHRo ZSBmaXJzdCBkZWZsYXRlIGNhbGwgYWZ0ZXIgZGVmbGF0ZUluaXQgaWYgYWxsIHRoZQorKyAgY29t cHJlc3Npb24gaXMgdG8gYmUgZG9uZSBpbiBhIHNpbmdsZSBzdGVwLiAgSW4gb3JkZXIgdG8gY29t cGxldGUgaW4gb25lCisrICBjYWxsLCBhdmFpbF9vdXQgbXVzdCBiZSBhdCBsZWFzdCB0aGUgdmFs dWUgcmV0dXJuZWQgYnkgZGVmbGF0ZUJvdW5kIChzZWUKKysgIGJlbG93KS4gIFRoZW4gZGVmbGF0 ZSBpcyBndWFyYW50ZWVkIHRvIHJldHVybiBaX1NUUkVBTV9FTkQuICBJZiBub3QgZW5vdWdoCisr ICBvdXRwdXQgc3BhY2UgaXMgcHJvdmlkZWQsIGRlZmxhdGUgd2lsbCBub3QgcmV0dXJuIFpfU1RS RUFNX0VORCwgYW5kIGl0IG11c3QKKysgIGJlIGNhbGxlZCBhZ2FpbiBhcyBkZXNjcmliZWQgYWJv dmUuCisgCistICAgIGRlZmxhdGUoKSBzZXRzIHN0cm0tPmFkbGVyIHRvIHRoZSBhZGxlcjMyIGNo ZWNrc3VtIG9mIGFsbCBpbnB1dCByZWFkCistICBzbyBmYXIgKHRoYXQgaXMsIHRvdGFsX2luIGJ5 dGVzKS4KKysgICAgZGVmbGF0ZSgpIHNldHMgc3RybS0+YWRsZXIgdG8gdGhlIEFkbGVyLTMyIGNo ZWNrc3VtIG9mIGFsbCBpbnB1dCByZWFkCisrICBzbyBmYXIgKHRoYXQgaXMsIHRvdGFsX2luIGJ5 dGVzKS4gIElmIGEgZ3ppcCBzdHJlYW0gaXMgYmVpbmcgZ2VuZXJhdGVkLCB0aGVuCisrICBzdHJt LT5hZGxlciB3aWxsIGJlIHRoZSBDUkMtMzIgY2hlY2tzdW0gb2YgdGhlIGlucHV0IHJlYWQgc28g ZmFyLiAgKFNlZQorKyAgZGVmbGF0ZUluaXQyIGJlbG93LikKKyAKKyAgICAgZGVmbGF0ZSgpIG1h eSB1cGRhdGUgc3RybS0+ZGF0YV90eXBlIGlmIGl0IGNhbiBtYWtlIGEgZ29vZCBndWVzcyBhYm91 dAorLSAgdGhlIGlucHV0IGRhdGEgdHlwZSAoWl9CSU5BUlkgb3IgWl9URVhUKS4gIEluIGRvdWJ0 LCB0aGUgZGF0YSBpcyBjb25zaWRlcmVkCistICBiaW5hcnkuICBUaGlzIGZpZWxkIGlzIG9ubHkg Zm9yIGluZm9ybWF0aW9uIHB1cnBvc2VzIGFuZCBkb2VzIG5vdCBhZmZlY3QgdGhlCistICBjb21w cmVzc2lvbiBhbGdvcml0aG0gaW4gYW55IG1hbm5lci4KKysgIHRoZSBpbnB1dCBkYXRhIHR5cGUg KFpfQklOQVJZIG9yIFpfVEVYVCkuICBJZiBpbiBkb3VidCwgdGhlIGRhdGEgaXMKKysgIGNvbnNp ZGVyZWQgYmluYXJ5LiAgVGhpcyBmaWVsZCBpcyBvbmx5IGZvciBpbmZvcm1hdGlvbiBwdXJwb3Nl cyBhbmQgZG9lcyBub3QKKysgIGFmZmVjdCB0aGUgY29tcHJlc3Npb24gYWxnb3JpdGhtIGluIGFu eSBtYW5uZXIuCisgCisgICAgIGRlZmxhdGUoKSByZXR1cm5zIFpfT0sgaWYgc29tZSBwcm9ncmVz cyBoYXMgYmVlbiBtYWRlIChtb3JlIGlucHV0CisgICBwcm9jZXNzZWQgb3IgbW9yZSBvdXRwdXQg cHJvZHVjZWQpLCBaX1NUUkVBTV9FTkQgaWYgYWxsIGlucHV0IGhhcyBiZWVuCisgICBjb25zdW1l ZCBhbmQgYWxsIG91dHB1dCBoYXMgYmVlbiBwcm9kdWNlZCAob25seSB3aGVuIGZsdXNoIGlzIHNl dCB0bworICAgWl9GSU5JU0gpLCBaX1NUUkVBTV9FUlJPUiBpZiB0aGUgc3RyZWFtIHN0YXRlIHdh cyBpbmNvbnNpc3RlbnQgKGZvciBleGFtcGxlCistICBpZiBuZXh0X2luIG9yIG5leHRfb3V0IHdh cyBaX05VTEwpLCBaX0JVRl9FUlJPUiBpZiBubyBwcm9ncmVzcyBpcyBwb3NzaWJsZQorLSAgKGZv ciBleGFtcGxlIGF2YWlsX2luIG9yIGF2YWlsX291dCB3YXMgemVybykuICBOb3RlIHRoYXQgWl9C VUZfRVJST1IgaXMgbm90CistICBmYXRhbCwgYW5kIGRlZmxhdGUoKSBjYW4gYmUgY2FsbGVkIGFn YWluIHdpdGggbW9yZSBpbnB1dCBhbmQgbW9yZSBvdXRwdXQKKy0gIHNwYWNlIHRvIGNvbnRpbnVl IGNvbXByZXNzaW5nLgorKyAgaWYgbmV4dF9pbiBvciBuZXh0X291dCB3YXMgWl9OVUxMIG9yIHRo ZSBzdGF0ZSB3YXMgaW5hZHZlcnRlbnRseSB3cml0dGVuIG92ZXIKKysgIGJ5IHRoZSBhcHBsaWNh dGlvbiksIG9yIFpfQlVGX0VSUk9SIGlmIG5vIHByb2dyZXNzIGlzIHBvc3NpYmxlIChmb3IgZXhh bXBsZQorKyAgYXZhaWxfaW4gb3IgYXZhaWxfb3V0IHdhcyB6ZXJvKS4gIE5vdGUgdGhhdCBaX0JV Rl9FUlJPUiBpcyBub3QgZmF0YWwsIGFuZAorKyAgZGVmbGF0ZSgpIGNhbiBiZSBjYWxsZWQgYWdh aW4gd2l0aCBtb3JlIGlucHV0IGFuZCBtb3JlIG91dHB1dCBzcGFjZSB0bworKyAgY29udGludWUg Y29tcHJlc3NpbmcuCisgKi8KKyAKKyAKK0BAIC0zNjgsMjMgKzM3OSwyMSBAQCBaRVhURVJOIGlu dCBaRVhQT1JUIGluZmxhdGVJbml0IE9GKCh6X3N0cmVhbXAgc3RybSkpOworIAorICAgICAgSW5p dGlhbGl6ZXMgdGhlIGludGVybmFsIHN0cmVhbSBzdGF0ZSBmb3IgZGVjb21wcmVzc2lvbi4gIFRo ZSBmaWVsZHMKKyAgICBuZXh0X2luLCBhdmFpbF9pbiwgemFsbG9jLCB6ZnJlZSBhbmQgb3BhcXVl IG11c3QgYmUgaW5pdGlhbGl6ZWQgYmVmb3JlIGJ5CistICAgdGhlIGNhbGxlci4gIElmIG5leHRf aW4gaXMgbm90IFpfTlVMTCBhbmQgYXZhaWxfaW4gaXMgbGFyZ2UgZW5vdWdoICh0aGUKKy0gICBl eGFjdCB2YWx1ZSBkZXBlbmRzIG9uIHRoZSBjb21wcmVzc2lvbiBtZXRob2QpLCBpbmZsYXRlSW5p dCBkZXRlcm1pbmVzIHRoZQorLSAgIGNvbXByZXNzaW9uIG1ldGhvZCBmcm9tIHRoZSB6bGliIGhl YWRlciBhbmQgYWxsb2NhdGVzIGFsbCBkYXRhIHN0cnVjdHVyZXMKKy0gICBhY2NvcmRpbmdseTsg b3RoZXJ3aXNlIHRoZSBhbGxvY2F0aW9uIHdpbGwgYmUgZGVmZXJyZWQgdG8gdGhlIGZpcnN0IGNh bGwgb2YKKy0gICBpbmZsYXRlLiAgSWYgemFsbG9jIGFuZCB6ZnJlZSBhcmUgc2V0IHRvIFpfTlVM TCwgaW5mbGF0ZUluaXQgdXBkYXRlcyB0aGVtIHRvCistICAgdXNlIGRlZmF1bHQgYWxsb2NhdGlv biBmdW5jdGlvbnMuCisrICAgdGhlIGNhbGxlci4gIEluIHRoZSBjdXJyZW50IHZlcnNpb24gb2Yg aW5mbGF0ZSwgdGhlIHByb3ZpZGVkIGlucHV0IGlzIG5vdAorKyAgIHJlYWQgb3IgY29uc3VtZWQu ICBUaGUgYWxsb2NhdGlvbiBvZiBhIHNsaWRpbmcgd2luZG93IHdpbGwgYmUgZGVmZXJyZWQgdG8K KysgICB0aGUgZmlyc3QgY2FsbCBvZiBpbmZsYXRlIChpZiB0aGUgZGVjb21wcmVzc2lvbiBkb2Vz IG5vdCBjb21wbGV0ZSBvbiB0aGUKKysgICBmaXJzdCBjYWxsKS4gIElmIHphbGxvYyBhbmQgemZy ZWUgYXJlIHNldCB0byBaX05VTEwsIGluZmxhdGVJbml0IHVwZGF0ZXMKKysgICB0aGVtIHRvIHVz ZSBkZWZhdWx0IGFsbG9jYXRpb24gZnVuY3Rpb25zLgorIAorICAgICAgaW5mbGF0ZUluaXQgcmV0 dXJucyBaX09LIGlmIHN1Y2Nlc3MsIFpfTUVNX0VSUk9SIGlmIHRoZXJlIHdhcyBub3QgZW5vdWdo CisgICAgbWVtb3J5LCBaX1ZFUlNJT05fRVJST1IgaWYgdGhlIHpsaWIgbGlicmFyeSB2ZXJzaW9u IGlzIGluY29tcGF0aWJsZSB3aXRoIHRoZQorICAgIHZlcnNpb24gYXNzdW1lZCBieSB0aGUgY2Fs bGVyLCBvciBaX1NUUkVBTV9FUlJPUiBpZiB0aGUgcGFyYW1ldGVycyBhcmUKKyAgICBpbnZhbGlk LCBzdWNoIGFzIGEgbnVsbCBwb2ludGVyIHRvIHRoZSBzdHJ1Y3R1cmUuICBtc2cgaXMgc2V0IHRv IG51bGwgaWYKKy0gICB0aGVyZSBpcyBubyBlcnJvciBtZXNzYWdlLiAgaW5mbGF0ZUluaXQgZG9l cyBub3QgcGVyZm9ybSBhbnkgZGVjb21wcmVzc2lvbgorLSAgIGFwYXJ0IGZyb20gcG9zc2libHkg cmVhZGluZyB0aGUgemxpYiBoZWFkZXIgaWYgcHJlc2VudDogYWN0dWFsIGRlY29tcHJlc3Npb24K Ky0gICB3aWxsIGJlIGRvbmUgYnkgaW5mbGF0ZSgpLiAgKFNvIG5leHRfaW4gYW5kIGF2YWlsX2lu IG1heSBiZSBtb2RpZmllZCwgYnV0CistICAgbmV4dF9vdXQgYW5kIGF2YWlsX291dCBhcmUgdW51 c2VkIGFuZCB1bmNoYW5nZWQuKSBUaGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbgorLSAgIG9mIGlu ZmxhdGVJbml0KCkgZG9lcyBub3QgcHJvY2VzcyBhbnkgaGVhZGVyIGluZm9ybWF0aW9uIC0tIHRo YXQgaXMgZGVmZXJyZWQKKy0gICB1bnRpbCBpbmZsYXRlKCkgaXMgY2FsbGVkLgorKyAgIHRoZXJl IGlzIG5vIGVycm9yIG1lc3NhZ2UuICBpbmZsYXRlSW5pdCBkb2VzIG5vdCBwZXJmb3JtIGFueSBk ZWNvbXByZXNzaW9uLgorKyAgIEFjdHVhbCBkZWNvbXByZXNzaW9uIHdpbGwgYmUgZG9uZSBieSBp bmZsYXRlKCkuICBTbyBuZXh0X2luLCBhbmQgYXZhaWxfaW4sCisrICAgbmV4dF9vdXQsIGFuZCBh dmFpbF9vdXQgYXJlIHVudXNlZCBhbmQgdW5jaGFuZ2VkLiAgVGhlIGN1cnJlbnQKKysgICBpbXBs ZW1lbnRhdGlvbiBvZiBpbmZsYXRlSW5pdCgpIGRvZXMgbm90IHByb2Nlc3MgYW55IGhlYWRlciBp bmZvcm1hdGlvbiAtLQorKyAgIHRoYXQgaXMgZGVmZXJyZWQgdW50aWwgaW5mbGF0ZSgpIGlzIGNh bGxlZC4KKyAqLworIAorIAorQEAgLTQwMCwxNyArNDA5LDIwIEBAIFpFWFRFUk4gaW50IFpFWFBP UlQgaW5mbGF0ZSBPRigoel9zdHJlYW1wIHN0cm0sIGludCBmbHVzaCkpOworIAorICAgLSBEZWNv bXByZXNzIG1vcmUgaW5wdXQgc3RhcnRpbmcgYXQgbmV4dF9pbiBhbmQgdXBkYXRlIG5leHRfaW4g YW5kIGF2YWlsX2luCisgICAgIGFjY29yZGluZ2x5LiAgSWYgbm90IGFsbCBpbnB1dCBjYW4gYmUg cHJvY2Vzc2VkIChiZWNhdXNlIHRoZXJlIGlzIG5vdAorLSAgICBlbm91Z2ggcm9vbSBpbiB0aGUg b3V0cHV0IGJ1ZmZlciksIG5leHRfaW4gaXMgdXBkYXRlZCBhbmQgcHJvY2Vzc2luZyB3aWxsCist ICAgIHJlc3VtZSBhdCB0aGlzIHBvaW50IGZvciB0aGUgbmV4dCBjYWxsIG9mIGluZmxhdGUoKS4K KysgICAgZW5vdWdoIHJvb20gaW4gdGhlIG91dHB1dCBidWZmZXIpLCB0aGVuIG5leHRfaW4gYW5k IGF2YWlsX2luIGFyZSB1cGRhdGVkCisrICAgIGFjY29yZGluZ2x5LCBhbmQgcHJvY2Vzc2luZyB3 aWxsIHJlc3VtZSBhdCB0aGlzIHBvaW50IGZvciB0aGUgbmV4dCBjYWxsIG9mCisrICAgIGluZmxh dGUoKS4KKyAKKy0gIC0gUHJvdmlkZSBtb3JlIG91dHB1dCBzdGFydGluZyBhdCBuZXh0X291dCBh bmQgdXBkYXRlIG5leHRfb3V0IGFuZCBhdmFpbF9vdXQKKysgIC0gR2VuZXJhdGUgbW9yZSBvdXRw dXQgc3RhcnRpbmcgYXQgbmV4dF9vdXQgYW5kIHVwZGF0ZSBuZXh0X291dCBhbmQgYXZhaWxfb3V0 CisgICAgIGFjY29yZGluZ2x5LiAgaW5mbGF0ZSgpIHByb3ZpZGVzIGFzIG11Y2ggb3V0cHV0IGFz IHBvc3NpYmxlLCB1bnRpbCB0aGVyZSBpcworICAgICBubyBtb3JlIGlucHV0IGRhdGEgb3Igbm8g bW9yZSBzcGFjZSBpbiB0aGUgb3V0cHV0IGJ1ZmZlciAoc2VlIGJlbG93IGFib3V0CisgICAgIHRo ZSBmbHVzaCBwYXJhbWV0ZXIpLgorIAorICAgICBCZWZvcmUgdGhlIGNhbGwgb2YgaW5mbGF0ZSgp LCB0aGUgYXBwbGljYXRpb24gc2hvdWxkIGVuc3VyZSB0aGF0IGF0IGxlYXN0CisgICBvbmUgb2Yg dGhlIGFjdGlvbnMgaXMgcG9zc2libGUsIGJ5IHByb3ZpZGluZyBtb3JlIGlucHV0IGFuZC9vciBj b25zdW1pbmcgbW9yZQorLSAgb3V0cHV0LCBhbmQgdXBkYXRpbmcgdGhlIG5leHRfKiBhbmQgYXZh aWxfKiB2YWx1ZXMgYWNjb3JkaW5nbHkuICBUaGUKKysgIG91dHB1dCwgYW5kIHVwZGF0aW5nIHRo ZSBuZXh0XyogYW5kIGF2YWlsXyogdmFsdWVzIGFjY29yZGluZ2x5LiAgSWYgdGhlCisrICBjYWxs ZXIgb2YgaW5mbGF0ZSgpIGRvZXMgbm90IHByb3ZpZGUgYm90aCBhdmFpbGFibGUgaW5wdXQgYW5k IGF2YWlsYWJsZQorKyAgb3V0cHV0IHNwYWNlLCBpdCBpcyBwb3NzaWJsZSB0aGF0IHRoZXJlIHdp bGwgYmUgbm8gcHJvZ3Jlc3MgbWFkZS4gIFRoZQorICAgYXBwbGljYXRpb24gY2FuIGNvbnN1bWUg dGhlIHVuY29tcHJlc3NlZCBvdXRwdXQgd2hlbiBpdCB3YW50cywgZm9yIGV4YW1wbGUKKyAgIHdo ZW4gdGhlIG91dHB1dCBidWZmZXIgaXMgZnVsbCAoYXZhaWxfb3V0ID09IDApLCBvciBhZnRlciBl YWNoIGNhbGwgb2YKKyAgIGluZmxhdGUoKS4gIElmIGluZmxhdGUgcmV0dXJucyBaX09LIGFuZCB3 aXRoIHplcm8gYXZhaWxfb3V0LCBpdCBtdXN0IGJlCitAQCAtNDI3LDcgKzQzOSw3IEBAIFpFWFRF Uk4gaW50IFpFWFBPUlQgaW5mbGF0ZSBPRigoel9zdHJlYW1wIHN0cm0sIGludCBmbHVzaCkpOwor ICAgZ2V0cyB0byB0aGUgZW5kIG9mIHRoYXQgYmxvY2ssIG9yIHdoZW4gaXQgcnVucyBvdXQgb2Yg ZGF0YS4KKyAKKyAgICAgVGhlIFpfQkxPQ0sgb3B0aW9uIGFzc2lzdHMgaW4gYXBwZW5kaW5nIHRv IG9yIGNvbWJpbmluZyBkZWZsYXRlIHN0cmVhbXMuCistICBBbHNvIHRvIGFzc2lzdCBpbiB0aGlz LCBvbiByZXR1cm4gaW5mbGF0ZSgpIHdpbGwgc2V0IHN0cm0tPmRhdGFfdHlwZSB0byB0aGUKKysg IFRvIGFzc2lzdCBpbiB0aGlzLCBvbiByZXR1cm4gaW5mbGF0ZSgpIGFsd2F5cyBzZXRzIHN0cm0t PmRhdGFfdHlwZSB0byB0aGUKKyAgIG51bWJlciBvZiB1bnVzZWQgYml0cyBpbiB0aGUgbGFzdCBi eXRlIHRha2VuIGZyb20gc3RybS0+bmV4dF9pbiwgcGx1cyA2NCBpZgorICAgaW5mbGF0ZSgpIGlz IGN1cnJlbnRseSBkZWNvZGluZyB0aGUgbGFzdCBibG9jayBpbiB0aGUgZGVmbGF0ZSBzdHJlYW0s IHBsdXMKKyAgIDEyOCBpZiBpbmZsYXRlKCkgcmV0dXJuZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgZGVj b2RpbmcgYW4gZW5kLW9mLWJsb2NrIGNvZGUgb3IKK0BAIC00NTEsNDggKzQ2Myw1NyBAQCBaRVhU RVJOIGludCBaRVhQT1JUIGluZmxhdGUgT0YoKHpfc3RyZWFtcCBzdHJtLCBpbnQgZmx1c2gpKTsK KyAgIGVycm9yLiAgSG93ZXZlciBpZiBhbGwgZGVjb21wcmVzc2lvbiBpcyB0byBiZSBwZXJmb3Jt ZWQgaW4gYSBzaW5nbGUgc3RlcCAoYQorICAgc2luZ2xlIGNhbGwgb2YgaW5mbGF0ZSksIHRoZSBw YXJhbWV0ZXIgZmx1c2ggc2hvdWxkIGJlIHNldCB0byBaX0ZJTklTSC4gIEluCisgICB0aGlzIGNh c2UgYWxsIHBlbmRpbmcgaW5wdXQgaXMgcHJvY2Vzc2VkIGFuZCBhbGwgcGVuZGluZyBvdXRwdXQg aXMgZmx1c2hlZDsKKy0gIGF2YWlsX291dCBtdXN0IGJlIGxhcmdlIGVub3VnaCB0byBob2xkIGFs bCB0aGUgdW5jb21wcmVzc2VkIGRhdGEuICAoVGhlIHNpemUKKy0gIG9mIHRoZSB1bmNvbXByZXNz ZWQgZGF0YSBtYXkgaGF2ZSBiZWVuIHNhdmVkIGJ5IHRoZSBjb21wcmVzc29yIGZvciB0aGlzCist ICBwdXJwb3NlLikgVGhlIG5leHQgb3BlcmF0aW9uIG9uIHRoaXMgc3RyZWFtIG11c3QgYmUgaW5m bGF0ZUVuZCB0byBkZWFsbG9jYXRlCistICB0aGUgZGVjb21wcmVzc2lvbiBzdGF0ZS4gIFRoZSB1 c2Ugb2YgWl9GSU5JU0ggaXMgbmV2ZXIgcmVxdWlyZWQsIGJ1dCBjYW4gYmUKKy0gIHVzZWQgdG8g aW5mb3JtIGluZmxhdGUgdGhhdCBhIGZhc3RlciBhcHByb2FjaCBtYXkgYmUgdXNlZCBmb3IgdGhl IHNpbmdsZQorLSAgaW5mbGF0ZSgpIGNhbGwuCisrICBhdmFpbF9vdXQgbXVzdCBiZSBsYXJnZSBl bm91Z2ggdG8gaG9sZCBhbGwgb2YgdGhlIHVuY29tcHJlc3NlZCBkYXRhIGZvciB0aGUKKysgIG9w ZXJhdGlvbiB0byBjb21wbGV0ZS4gIChUaGUgc2l6ZSBvZiB0aGUgdW5jb21wcmVzc2VkIGRhdGEg bWF5IGhhdmUgYmVlbgorKyAgc2F2ZWQgYnkgdGhlIGNvbXByZXNzb3IgZm9yIHRoaXMgcHVycG9z ZS4pICBUaGUgdXNlIG9mIFpfRklOSVNIIGlzIG5vdAorKyAgcmVxdWlyZWQgdG8gcGVyZm9ybSBh biBpbmZsYXRpb24gaW4gb25lIHN0ZXAuICBIb3dldmVyIGl0IG1heSBiZSB1c2VkIHRvCisrICBp bmZvcm0gaW5mbGF0ZSB0aGF0IGEgZmFzdGVyIGFwcHJvYWNoIGNhbiBiZSB1c2VkIGZvciB0aGUg c2luZ2xlIGluZmxhdGUoKQorKyAgY2FsbC4gIFpfRklOSVNIIGFsc28gaW5mb3JtcyBpbmZsYXRl IHRvIG5vdCBtYWludGFpbiBhIHNsaWRpbmcgd2luZG93IGlmIHRoZQorKyAgc3RyZWFtIGNvbXBs ZXRlcywgd2hpY2ggcmVkdWNlcyBpbmZsYXRlJ3MgbWVtb3J5IGZvb3RwcmludC4gIElmIHRoZSBz dHJlYW0KKysgIGRvZXMgbm90IGNvbXBsZXRlLCBlaXRoZXIgYmVjYXVzZSBub3QgYWxsIG9mIHRo ZSBzdHJlYW0gaXMgcHJvdmlkZWQgb3Igbm90CisrICBlbm91Z2ggb3V0cHV0IHNwYWNlIGlzIHBy b3ZpZGVkLCB0aGVuIGEgc2xpZGluZyB3aW5kb3cgd2lsbCBiZSBhbGxvY2F0ZWQgYW5kCisrICBp bmZsYXRlKCkgY2FuIGJlIGNhbGxlZCBhZ2FpbiB0byBjb250aW51ZSB0aGUgb3BlcmF0aW9uIGFz IGlmIFpfTk9fRkxVU0ggaGFkCisrICBiZWVuIHVzZWQuCisgCisgICAgICBJbiB0aGlzIGltcGxl bWVudGF0aW9uLCBpbmZsYXRlKCkgYWx3YXlzIGZsdXNoZXMgYXMgbXVjaCBvdXRwdXQgYXMKKyAg IHBvc3NpYmxlIHRvIHRoZSBvdXRwdXQgYnVmZmVyLCBhbmQgYWx3YXlzIHVzZXMgdGhlIGZhc3Rl ciBhcHByb2FjaCBvbiB0aGUKKy0gIGZpcnN0IGNhbGwuICBTbyB0aGUgb25seSBlZmZlY3Qgb2Yg dGhlIGZsdXNoIHBhcmFtZXRlciBpbiB0aGlzIGltcGxlbWVudGF0aW9uCistICBpcyBvbiB0aGUg cmV0dXJuIHZhbHVlIG9mIGluZmxhdGUoKSwgYXMgbm90ZWQgYmVsb3csIG9yIHdoZW4gaXQgcmV0 dXJucyBlYXJseQorLSAgYmVjYXVzZSBaX0JMT0NLIG9yIFpfVFJFRVMgaXMgdXNlZC4KKysgIGZp cnN0IGNhbGwuICBTbyB0aGUgZWZmZWN0cyBvZiB0aGUgZmx1c2ggcGFyYW1ldGVyIGluIHRoaXMg aW1wbGVtZW50YXRpb24gYXJlCisrICBvbiB0aGUgcmV0dXJuIHZhbHVlIG9mIGluZmxhdGUoKSBh cyBub3RlZCBiZWxvdywgd2hlbiBpbmZsYXRlKCkgcmV0dXJucyBlYXJseQorKyAgd2hlbiBaX0JM T0NLIG9yIFpfVFJFRVMgaXMgdXNlZCwgYW5kIHdoZW4gaW5mbGF0ZSgpIGF2b2lkcyB0aGUgYWxs b2NhdGlvbiBvZgorKyAgbWVtb3J5IGZvciBhIHNsaWRpbmcgd2luZG93IHdoZW4gWl9GSU5JU0gg aXMgdXNlZC4KKyAKKyAgICAgIElmIGEgcHJlc2V0IGRpY3Rpb25hcnkgaXMgbmVlZGVkIGFmdGVy IHRoaXMgY2FsbCAoc2VlIGluZmxhdGVTZXREaWN0aW9uYXJ5CistICBiZWxvdyksIGluZmxhdGUg c2V0cyBzdHJtLT5hZGxlciB0byB0aGUgYWRsZXIzMiBjaGVja3N1bSBvZiB0aGUgZGljdGlvbmFy eQorKyAgYmVsb3cpLCBpbmZsYXRlIHNldHMgc3RybS0+YWRsZXIgdG8gdGhlIEFkbGVyLTMyIGNo ZWNrc3VtIG9mIHRoZSBkaWN0aW9uYXJ5CisgICBjaG9zZW4gYnkgdGhlIGNvbXByZXNzb3IgYW5k IHJldHVybnMgWl9ORUVEX0RJQ1Q7IG90aGVyd2lzZSBpdCBzZXRzCistICBzdHJtLT5hZGxlciB0 byB0aGUgYWRsZXIzMiBjaGVja3N1bSBvZiBhbGwgb3V0cHV0IHByb2R1Y2VkIHNvIGZhciAodGhh dCBpcywKKysgIHN0cm0tPmFkbGVyIHRvIHRoZSBBZGxlci0zMiBjaGVja3N1bSBvZiBhbGwgb3V0 cHV0IHByb2R1Y2VkIHNvIGZhciAodGhhdCBpcywKKyAgIHRvdGFsX291dCBieXRlcykgYW5kIHJl dHVybnMgWl9PSywgWl9TVFJFQU1fRU5EIG9yIGFuIGVycm9yIGNvZGUgYXMgZGVzY3JpYmVkCist ICBiZWxvdy4gIEF0IHRoZSBlbmQgb2YgdGhlIHN0cmVhbSwgaW5mbGF0ZSgpIGNoZWNrcyB0aGF0 IGl0cyBjb21wdXRlZCBhZGxlcjMyCisrICBiZWxvdy4gIEF0IHRoZSBlbmQgb2YgdGhlIHN0cmVh bSwgaW5mbGF0ZSgpIGNoZWNrcyB0aGF0IGl0cyBjb21wdXRlZCBBZGxlci0zMgorICAgY2hlY2tz dW0gaXMgZXF1YWwgdG8gdGhhdCBzYXZlZCBieSB0aGUgY29tcHJlc3NvciBhbmQgcmV0dXJucyBa X1NUUkVBTV9FTkQKKyAgIG9ubHkgaWYgdGhlIGNoZWNrc3VtIGlzIGNvcnJlY3QuCisgCisgICAg IGluZmxhdGUoKSBjYW4gZGVjb21wcmVzcyBhbmQgY2hlY2sgZWl0aGVyIHpsaWItd3JhcHBlZCBv ciBnemlwLXdyYXBwZWQKKyAgIGRlZmxhdGUgZGF0YS4gIFRoZSBoZWFkZXIgdHlwZSBpcyBkZXRl Y3RlZCBhdXRvbWF0aWNhbGx5LCBpZiByZXF1ZXN0ZWQgd2hlbgorICAgaW5pdGlhbGl6aW5nIHdp dGggaW5mbGF0ZUluaXQyKCkuICBBbnkgaW5mb3JtYXRpb24gY29udGFpbmVkIGluIHRoZSBnemlw CistICBoZWFkZXIgaXMgbm90IHJldGFpbmVkLCBzbyBhcHBsaWNhdGlvbnMgdGhhdCBuZWVkIHRo YXQgaW5mb3JtYXRpb24gc2hvdWxkCistICBpbnN0ZWFkIHVzZSByYXcgaW5mbGF0ZSwgc2VlIGlu ZmxhdGVJbml0MigpIGJlbG93LCBvciBpbmZsYXRlQmFjaygpIGFuZAorLSAgcGVyZm9ybSB0aGVp ciBvd24gcHJvY2Vzc2luZyBvZiB0aGUgZ3ppcCBoZWFkZXIgYW5kIHRyYWlsZXIuCisrICBoZWFk ZXIgaXMgbm90IHJldGFpbmVkIHVubGVzcyBpbmZsYXRlR2V0SGVhZGVyKCkgaXMgdXNlZC4gIFdo ZW4gcHJvY2Vzc2luZworKyAgZ3ppcC13cmFwcGVkIGRlZmxhdGUgZGF0YSwgc3RybS0+YWRsZXIz MiBpcyBzZXQgdG8gdGhlIENSQy0zMiBvZiB0aGUgb3V0cHV0CisrICBwcm9kdWNlZCBzbyBmYXIu ICBUaGUgQ1JDLTMyIGlzIGNoZWNrZWQgYWdhaW5zdCB0aGUgZ3ppcCB0cmFpbGVyLCBhcyBpcyB0 aGUKKysgIHVuY29tcHJlc3NlZCBsZW5ndGgsIG1vZHVsbyAyXjMyLgorIAorICAgICBpbmZsYXRl KCkgcmV0dXJucyBaX09LIGlmIHNvbWUgcHJvZ3Jlc3MgaGFzIGJlZW4gbWFkZSAobW9yZSBpbnB1 dCBwcm9jZXNzZWQKKyAgIG9yIG1vcmUgb3V0cHV0IHByb2R1Y2VkKSwgWl9TVFJFQU1fRU5EIGlm IHRoZSBlbmQgb2YgdGhlIGNvbXByZXNzZWQgZGF0YSBoYXMKKyAgIGJlZW4gcmVhY2hlZCBhbmQg YWxsIHVuY29tcHJlc3NlZCBvdXRwdXQgaGFzIGJlZW4gcHJvZHVjZWQsIFpfTkVFRF9ESUNUIGlm IGEKKyAgIHByZXNldCBkaWN0aW9uYXJ5IGlzIG5lZWRlZCBhdCB0aGlzIHBvaW50LCBaX0RBVEFf RVJST1IgaWYgdGhlIGlucHV0IGRhdGEgd2FzCisgICBjb3JydXB0ZWQgKGlucHV0IHN0cmVhbSBu b3QgY29uZm9ybWluZyB0byB0aGUgemxpYiBmb3JtYXQgb3IgaW5jb3JyZWN0IGNoZWNrCistICB2 YWx1ZSksIFpfU1RSRUFNX0VSUk9SIGlmIHRoZSBzdHJlYW0gc3RydWN0dXJlIHdhcyBpbmNvbnNp c3RlbnQgKGZvciBleGFtcGxlCistICBuZXh0X2luIG9yIG5leHRfb3V0IHdhcyBaX05VTEwpLCBa X01FTV9FUlJPUiBpZiB0aGVyZSB3YXMgbm90IGVub3VnaCBtZW1vcnksCistICBaX0JVRl9FUlJP UiBpZiBubyBwcm9ncmVzcyBpcyBwb3NzaWJsZSBvciBpZiB0aGVyZSB3YXMgbm90IGVub3VnaCBy b29tIGluIHRoZQorLSAgb3V0cHV0IGJ1ZmZlciB3aGVuIFpfRklOSVNIIGlzIHVzZWQuICBOb3Rl IHRoYXQgWl9CVUZfRVJST1IgaXMgbm90IGZhdGFsLCBhbmQKKysgIHZhbHVlLCBpbiB3aGljaCBj YXNlIHN0cm0tPm1zZyBwb2ludHMgdG8gYSBzdHJpbmcgd2l0aCBhIG1vcmUgc3BlY2lmaWMKKysg IGVycm9yKSwgWl9TVFJFQU1fRVJST1IgaWYgdGhlIHN0cmVhbSBzdHJ1Y3R1cmUgd2FzIGluY29u c2lzdGVudCAoZm9yIGV4YW1wbGUKKysgIG5leHRfaW4gb3IgbmV4dF9vdXQgd2FzIFpfTlVMTCwg b3IgdGhlIHN0YXRlIHdhcyBpbmFkdmVydGVudGx5IHdyaXR0ZW4gb3ZlcgorKyAgYnkgdGhlIGFw cGxpY2F0aW9uKSwgWl9NRU1fRVJST1IgaWYgdGhlcmUgd2FzIG5vdCBlbm91Z2ggbWVtb3J5LCBa X0JVRl9FUlJPUgorKyAgaWYgbm8gcHJvZ3Jlc3Mgd2FzIHBvc3NpYmxlIG9yIGlmIHRoZXJlIHdh cyBub3QgZW5vdWdoIHJvb20gaW4gdGhlIG91dHB1dAorKyAgYnVmZmVyIHdoZW4gWl9GSU5JU0gg aXMgdXNlZC4gIE5vdGUgdGhhdCBaX0JVRl9FUlJPUiBpcyBub3QgZmF0YWwsIGFuZAorICAgaW5m bGF0ZSgpIGNhbiBiZSBjYWxsZWQgYWdhaW4gd2l0aCBtb3JlIGlucHV0IGFuZCBtb3JlIG91dHB1 dCBzcGFjZSB0bworICAgY29udGludWUgZGVjb21wcmVzc2luZy4gIElmIFpfREFUQV9FUlJPUiBp cyByZXR1cm5lZCwgdGhlIGFwcGxpY2F0aW9uIG1heQorICAgdGhlbiBjYWxsIGluZmxhdGVTeW5j KCkgdG8gbG9vayBmb3IgYSBnb29kIGNvbXByZXNzaW9uIGJsb2NrIGlmIGEgcGFydGlhbAorLSAg cmVjb3Zlcnkgb2YgdGhlIGRhdGEgaXMgZGVzaXJlZC4KKysgIHJlY292ZXJ5IG9mIHRoZSBkYXRh IGlzIHRvIGJlIGF0dGVtcHRlZC4KKyAqLworIAorIAorQEAgLTUwMiw5ICs1MjMsOCBAQCBaRVhU RVJOIGludCBaRVhQT1JUIGluZmxhdGVFbmQgT0YoKHpfc3RyZWFtcCBzdHJtKSk7CisgICAgVGhp cyBmdW5jdGlvbiBkaXNjYXJkcyBhbnkgdW5wcm9jZXNzZWQgaW5wdXQgYW5kIGRvZXMgbm90IGZs dXNoIGFueSBwZW5kaW5nCisgICAgb3V0cHV0LgorIAorLSAgICAgaW5mbGF0ZUVuZCByZXR1cm5z IFpfT0sgaWYgc3VjY2VzcywgWl9TVFJFQU1fRVJST1IgaWYgdGhlIHN0cmVhbSBzdGF0ZQorLSAg IHdhcyBpbmNvbnNpc3RlbnQuICBJbiB0aGUgZXJyb3IgY2FzZSwgbXNnIG1heSBiZSBzZXQgYnV0 IHRoZW4gcG9pbnRzIHRvIGEKKy0gICBzdGF0aWMgc3RyaW5nICh3aGljaCBtdXN0IG5vdCBiZSBk ZWFsbG9jYXRlZCkuCisrICAgICBpbmZsYXRlRW5kIHJldHVybnMgWl9PSyBpZiBzdWNjZXNzLCBv ciBaX1NUUkVBTV9FUlJPUiBpZiB0aGUgc3RyZWFtIHN0YXRlCisrICAgd2FzIGluY29uc2lzdGVu dC4KKyAqLworIAorIAorQEAgLTUzNSwxNiArNTU1LDI5IEBAIFpFWFRFUk4gaW50IFpFWFBPUlQg ZGVmbGF0ZUluaXQyIE9GKCh6X3N0cmVhbXAgc3RybSwKKyAgICBjb21wcmVzc2lvbiBhdCB0aGUg ZXhwZW5zZSBvZiBtZW1vcnkgdXNhZ2UuICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyAxNSBpZgorICAg IGRlZmxhdGVJbml0IGlzIHVzZWQgaW5zdGVhZC4KKyAKKysgICAgIEZvciB0aGUgY3VycmVudCBp bXBsZW1lbnRhdGlvbiBvZiBkZWZsYXRlKCksIGEgd2luZG93Qml0cyB2YWx1ZSBvZiA4IChhCisr ICAgd2luZG93IHNpemUgb2YgMjU2IGJ5dGVzKSBpcyBub3Qgc3VwcG9ydGVkLiAgQXMgYSByZXN1 bHQsIGEgcmVxdWVzdCBmb3IgOAorKyAgIHdpbGwgcmVzdWx0IGluIDkgKGEgNTEyLWJ5dGUgd2lu ZG93KS4gIEluIHRoYXQgY2FzZSwgcHJvdmlkaW5nIDggdG8KKysgICBpbmZsYXRlSW5pdDIoKSB3 aWxsIHJlc3VsdCBpbiBhbiBlcnJvciB3aGVuIHRoZSB6bGliIGhlYWRlciB3aXRoIDkgaXMKKysg ICBjaGVja2VkIGFnYWluc3QgdGhlIGluaXRpYWxpemF0aW9uIG9mIGluZmxhdGUoKS4gIFRoZSBy ZW1lZHkgaXMgdG8gbm90IHVzZSA4CisrICAgd2l0aCBkZWZsYXRlSW5pdDIoKSB3aXRoIHRoaXMg aW5pdGlhbGl6YXRpb24sIG9yIGF0IGxlYXN0IGluIHRoYXQgY2FzZSB1c2UgOQorKyAgIHdpdGgg aW5mbGF0ZUluaXQyKCkuCisrCisgICAgICB3aW5kb3dCaXRzIGNhbiBhbHNvIGJlIC04Li4tMTUg Zm9yIHJhdyBkZWZsYXRlLiAgSW4gdGhpcyBjYXNlLCAtd2luZG93Qml0cworICAgIGRldGVybWlu ZXMgdGhlIHdpbmRvdyBzaXplLiAgZGVmbGF0ZSgpIHdpbGwgdGhlbiBnZW5lcmF0ZSByYXcgZGVm bGF0ZSBkYXRhCistICAgd2l0aCBubyB6bGliIGhlYWRlciBvciB0cmFpbGVyLCBhbmQgd2lsbCBu b3QgY29tcHV0ZSBhbiBhZGxlcjMyIGNoZWNrIHZhbHVlLgorKyAgIHdpdGggbm8gemxpYiBoZWFk ZXIgb3IgdHJhaWxlciwgYW5kIHdpbGwgbm90IGNvbXB1dGUgYSBjaGVjayB2YWx1ZS4KKyAKKyAg ICAgIHdpbmRvd0JpdHMgY2FuIGFsc28gYmUgZ3JlYXRlciB0aGFuIDE1IGZvciBvcHRpb25hbCBn emlwIGVuY29kaW5nLiAgQWRkCisgICAgMTYgdG8gd2luZG93Qml0cyB0byB3cml0ZSBhIHNpbXBs ZSBnemlwIGhlYWRlciBhbmQgdHJhaWxlciBhcm91bmQgdGhlCisgICAgY29tcHJlc3NlZCBkYXRh IGluc3RlYWQgb2YgYSB6bGliIHdyYXBwZXIuICBUaGUgZ3ppcCBoZWFkZXIgd2lsbCBoYXZlIG5v CisgICAgZmlsZSBuYW1lLCBubyBleHRyYSBkYXRhLCBubyBjb21tZW50LCBubyBtb2RpZmljYXRp b24gdGltZSAoc2V0IHRvIHplcm8pLCBubworLSAgIGhlYWRlciBjcmMsIGFuZCB0aGUgb3BlcmF0 aW5nIHN5c3RlbSB3aWxsIGJlIHNldCB0byAyNTUgKHVua25vd24pLiAgSWYgYQorLSAgIGd6aXAg c3RyZWFtIGlzIGJlaW5nIHdyaXR0ZW4sIHN0cm0tPmFkbGVyIGlzIGEgY3JjMzIgaW5zdGVhZCBv ZiBhbiBhZGxlcjMyLgorKyAgIGhlYWRlciBjcmMsIGFuZCB0aGUgb3BlcmF0aW5nIHN5c3RlbSB3 aWxsIGJlIHNldCB0byB0aGUgYXBwcm9wcmlhdGUgdmFsdWUsCisrICAgaWYgdGhlIG9wZXJhdGlu ZyBzeXN0ZW0gd2FzIGRldGVybWluZWQgYXQgY29tcGlsZSB0aW1lLiAgSWYgYSBnemlwIHN0cmVh bSBpcworKyAgIGJlaW5nIHdyaXR0ZW4sIHN0cm0tPmFkbGVyIGlzIGEgQ1JDLTMyIGluc3RlYWQg b2YgYW4gQWRsZXItMzIuCisrCisrICAgICBGb3IgcmF3IGRlZmxhdGUgb3IgZ3ppcCBlbmNvZGlu ZywgYSByZXF1ZXN0IGZvciBhIDI1Ni1ieXRlIHdpbmRvdyBpcworKyAgIHJlamVjdGVkIGFzIGlu dmFsaWQsIHNpbmNlIG9ubHkgdGhlIHpsaWIgaGVhZGVyIHByb3ZpZGVzIGEgbWVhbnMgb2YKKysg ICB0cmFuc21pdHRpbmcgdGhlIHdpbmRvdyBzaXplIHRvIHRoZSBkZWNvbXByZXNzb3IuCisgCisg ICAgICBUaGUgbWVtTGV2ZWwgcGFyYW1ldGVyIHNwZWNpZmllcyBob3cgbXVjaCBtZW1vcnkgc2hv dWxkIGJlIGFsbG9jYXRlZAorICAgIGZvciB0aGUgaW50ZXJuYWwgY29tcHJlc3Npb24gc3RhdGUu ICBtZW1MZXZlbD0xIHVzZXMgbWluaW11bSBtZW1vcnkgYnV0IGlzCitAQCAtNTgwLDEwICs2MTMs MTUgQEAgWkVYVEVSTiBpbnQgWkVYUE9SVCBkZWZsYXRlU2V0RGljdGlvbmFyeSBPRigoel9zdHJl YW1wIHN0cm0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dUludCAgZGljdExlbmd0aCkpOworIC8qCisgICAgICBJbml0aWFsaXplcyB0aGUgY29tcHJlc3Np b24gZGljdGlvbmFyeSBmcm9tIHRoZSBnaXZlbiBieXRlIHNlcXVlbmNlCistICAgd2l0aG91dCBw cm9kdWNpbmcgYW55IGNvbXByZXNzZWQgb3V0cHV0LiAgVGhpcyBmdW5jdGlvbiBtdXN0IGJlIGNh bGxlZAorLSAgIGltbWVkaWF0ZWx5IGFmdGVyIGRlZmxhdGVJbml0LCBkZWZsYXRlSW5pdDIgb3Ig ZGVmbGF0ZVJlc2V0LCBiZWZvcmUgYW55IGNhbGwKKy0gICBvZiBkZWZsYXRlLiAgVGhlIGNvbXBy ZXNzb3IgYW5kIGRlY29tcHJlc3NvciBtdXN0IHVzZSBleGFjdGx5IHRoZSBzYW1lCistICAgZGlj dGlvbmFyeSAoc2VlIGluZmxhdGVTZXREaWN0aW9uYXJ5KS4KKysgICB3aXRob3V0IHByb2R1Y2lu ZyBhbnkgY29tcHJlc3NlZCBvdXRwdXQuICBXaGVuIHVzaW5nIHRoZSB6bGliIGZvcm1hdCwgdGhp cworKyAgIGZ1bmN0aW9uIG11c3QgYmUgY2FsbGVkIGltbWVkaWF0ZWx5IGFmdGVyIGRlZmxhdGVJ bml0LCBkZWZsYXRlSW5pdDIgb3IKKysgICBkZWZsYXRlUmVzZXQsIGFuZCBiZWZvcmUgYW55IGNh bGwgb2YgZGVmbGF0ZS4gIFdoZW4gZG9pbmcgcmF3IGRlZmxhdGUsIHRoaXMKKysgICBmdW5jdGlv biBtdXN0IGJlIGNhbGxlZCBlaXRoZXIgYmVmb3JlIGFueSBjYWxsIG9mIGRlZmxhdGUsIG9yIGlt bWVkaWF0ZWx5CisrICAgYWZ0ZXIgdGhlIGNvbXBsZXRpb24gb2YgYSBkZWZsYXRlIGJsb2NrLCBp LmUuIGFmdGVyIGFsbCBpbnB1dCBoYXMgYmVlbgorKyAgIGNvbnN1bWVkIGFuZCBhbGwgb3V0cHV0 IGhhcyBiZWVuIGRlbGl2ZXJlZCB3aGVuIHVzaW5nIGFueSBvZiB0aGUgZmx1c2gKKysgICBvcHRp b25zIFpfQkxPQ0ssIFpfUEFSVElBTF9GTFVTSCwgWl9TWU5DX0ZMVVNILCBvciBaX0ZVTExfRkxV U0guICBUaGUKKysgICBjb21wcmVzc29yIGFuZCBkZWNvbXByZXNzb3IgbXVzdCB1c2UgZXhhY3Rs eSB0aGUgc2FtZSBkaWN0aW9uYXJ5IChzZWUKKysgICBpbmZsYXRlU2V0RGljdGlvbmFyeSkuCisg CisgICAgICBUaGUgZGljdGlvbmFyeSBzaG91bGQgY29uc2lzdCBvZiBzdHJpbmdzIChieXRlIHNl cXVlbmNlcykgdGhhdCBhcmUgbGlrZWx5CisgICAgdG8gYmUgZW5jb3VudGVyZWQgbGF0ZXIgaW4g dGhlIGRhdGEgdG8gYmUgY29tcHJlc3NlZCwgd2l0aCB0aGUgbW9zdCBjb21tb25seQorQEAgLTYw MCwxOCArNjM4LDQwIEBAIFpFWFRFUk4gaW50IFpFWFBPUlQgZGVmbGF0ZVNldERpY3Rpb25hcnkg T0YoKHpfc3RyZWFtcCBzdHJtLAorICAgIGFkZGl0aW9uLCB0aGUgY3VycmVudCBpbXBsZW1lbnRh dGlvbiBvZiBkZWZsYXRlIHdpbGwgdXNlIGF0IG1vc3QgdGhlIHdpbmRvdworICAgIHNpemUgbWlu dXMgMjYyIGJ5dGVzIG9mIHRoZSBwcm92aWRlZCBkaWN0aW9uYXJ5LgorIAorLSAgICAgVXBvbiBy ZXR1cm4gb2YgdGhpcyBmdW5jdGlvbiwgc3RybS0+YWRsZXIgaXMgc2V0IHRvIHRoZSBhZGxlcjMy IHZhbHVlCisrICAgICBVcG9uIHJldHVybiBvZiB0aGlzIGZ1bmN0aW9uLCBzdHJtLT5hZGxlciBp cyBzZXQgdG8gdGhlIEFkbGVyLTMyIHZhbHVlCisgICAgb2YgdGhlIGRpY3Rpb25hcnk7IHRoZSBk ZWNvbXByZXNzb3IgbWF5IGxhdGVyIHVzZSB0aGlzIHZhbHVlIHRvIGRldGVybWluZQorLSAgIHdo aWNoIGRpY3Rpb25hcnkgaGFzIGJlZW4gdXNlZCBieSB0aGUgY29tcHJlc3Nvci4gIChUaGUgYWRs ZXIzMiB2YWx1ZQorKyAgIHdoaWNoIGRpY3Rpb25hcnkgaGFzIGJlZW4gdXNlZCBieSB0aGUgY29t cHJlc3Nvci4gIChUaGUgQWRsZXItMzIgdmFsdWUKKyAgICBhcHBsaWVzIHRvIHRoZSB3aG9sZSBk aWN0aW9uYXJ5IGV2ZW4gaWYgb25seSBhIHN1YnNldCBvZiB0aGUgZGljdGlvbmFyeSBpcworICAg IGFjdHVhbGx5IHVzZWQgYnkgdGhlIGNvbXByZXNzb3IuKSBJZiBhIHJhdyBkZWZsYXRlIHdhcyBy ZXF1ZXN0ZWQsIHRoZW4gdGhlCistICAgYWRsZXIzMiB2YWx1ZSBpcyBub3QgY29tcHV0ZWQgYW5k IHN0cm0tPmFkbGVyIGlzIG5vdCBzZXQuCisrICAgQWRsZXItMzIgdmFsdWUgaXMgbm90IGNvbXB1 dGVkIGFuZCBzdHJtLT5hZGxlciBpcyBub3Qgc2V0LgorIAorICAgICAgZGVmbGF0ZVNldERpY3Rp b25hcnkgcmV0dXJucyBaX09LIGlmIHN1Y2Nlc3MsIG9yIFpfU1RSRUFNX0VSUk9SIGlmIGEKKyAg ICBwYXJhbWV0ZXIgaXMgaW52YWxpZCAoZS5nLiAgZGljdGlvbmFyeSBiZWluZyBaX05VTEwpIG9y IHRoZSBzdHJlYW0gc3RhdGUgaXMKKyAgICBpbmNvbnNpc3RlbnQgKGZvciBleGFtcGxlIGlmIGRl ZmxhdGUgaGFzIGFscmVhZHkgYmVlbiBjYWxsZWQgZm9yIHRoaXMgc3RyZWFtCistICAgb3IgaWYg dGhlIGNvbXByZXNzaW9uIG1ldGhvZCBpcyBic29ydCkuICBkZWZsYXRlU2V0RGljdGlvbmFyeSBk b2VzIG5vdAorLSAgIHBlcmZvcm0gYW55IGNvbXByZXNzaW9uOiB0aGlzIHdpbGwgYmUgZG9uZSBi eSBkZWZsYXRlKCkuCisrICAgb3IgaWYgbm90IGF0IGEgYmxvY2sgYm91bmRhcnkgZm9yIHJhdyBk ZWZsYXRlKS4gIGRlZmxhdGVTZXREaWN0aW9uYXJ5IGRvZXMKKysgICBub3QgcGVyZm9ybSBhbnkg Y29tcHJlc3Npb246IHRoaXMgd2lsbCBiZSBkb25lIGJ5IGRlZmxhdGUoKS4KKysqLworKworK1pF WFRFUk4gaW50IFpFWFBPUlQgZGVmbGF0ZUdldERpY3Rpb25hcnkgT0YoKHpfc3RyZWFtcCBzdHJt LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ5dGVmICpk aWN0aW9uYXJ5LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHVJbnQgICpkaWN0TGVuZ3RoKSk7CisrLyoKKysgICAgIFJldHVybnMgdGhlIHNsaWRpbmcgZGlj dGlvbmFyeSBiZWluZyBtYWludGFpbmVkIGJ5IGRlZmxhdGUuICBkaWN0TGVuZ3RoIGlzCisrICAg c2V0IHRvIHRoZSBudW1iZXIgb2YgYnl0ZXMgaW4gdGhlIGRpY3Rpb25hcnksIGFuZCB0aGF0IG1h bnkgYnl0ZXMgYXJlIGNvcGllZAorKyAgIHRvIGRpY3Rpb25hcnkuICBkaWN0aW9uYXJ5IG11c3Qg aGF2ZSBlbm91Z2ggc3BhY2UsIHdoZXJlIDMyNzY4IGJ5dGVzIGlzCisrICAgYWx3YXlzIGVub3Vn aC4gIElmIGRlZmxhdGVHZXREaWN0aW9uYXJ5KCkgaXMgY2FsbGVkIHdpdGggZGljdGlvbmFyeSBl cXVhbCB0bworKyAgIFpfTlVMTCwgdGhlbiBvbmx5IHRoZSBkaWN0aW9uYXJ5IGxlbmd0aCBpcyBy ZXR1cm5lZCwgYW5kIG5vdGhpbmcgaXMgY29waWVkLgorKyAgIFNpbWlsYXJ5LCBpZiBkaWN0TGVu Z3RoIGlzIFpfTlVMTCwgdGhlbiBpdCBpcyBub3Qgc2V0LgorKworKyAgICAgZGVmbGF0ZUdldERp Y3Rpb25hcnkoKSBtYXkgcmV0dXJuIGEgbGVuZ3RoIGxlc3MgdGhhbiB0aGUgd2luZG93IHNpemUs IGV2ZW4KKysgICB3aGVuIG1vcmUgdGhhbiB0aGUgd2luZG93IHNpemUgaW4gaW5wdXQgaGFzIGJl ZW4gcHJvdmlkZWQuIEl0IG1heSByZXR1cm4gdXAKKysgICB0byAyNTggYnl0ZXMgbGVzcyBpbiB0 aGF0IGNhc2UsIGR1ZSB0byBob3cgemxpYidzIGltcGxlbWVudGF0aW9uIG9mIGRlZmxhdGUKKysg ICBtYW5hZ2VzIHRoZSBzbGlkaW5nIHdpbmRvdyBhbmQgbG9va2FoZWFkIGZvciBtYXRjaGVzLCB3 aGVyZSBtYXRjaGVzIGNhbiBiZQorKyAgIHVwIHRvIDI1OCBieXRlcyBsb25nLiBJZiB0aGUgYXBw bGljYXRpb24gbmVlZHMgdGhlIGxhc3Qgd2luZG93LXNpemUgYnl0ZXMgb2YKKysgICBpbnB1dCwg dGhlbiB0aGF0IHdvdWxkIG5lZWQgdG8gYmUgc2F2ZWQgYnkgdGhlIGFwcGxpY2F0aW9uIG91dHNp ZGUgb2YgemxpYi4KKysKKysgICAgIGRlZmxhdGVHZXREaWN0aW9uYXJ5IHJldHVybnMgWl9PSyBv biBzdWNjZXNzLCBvciBaX1NUUkVBTV9FUlJPUiBpZiB0aGUKKysgICBzdHJlYW0gc3RhdGUgaXMg aW5jb25zaXN0ZW50LgorICovCisgCisgWkVYVEVSTiBpbnQgWkVYUE9SVCBkZWZsYXRlQ29weSBP Rigoel9zdHJlYW1wIGRlc3QsCitAQCAtNjM0LDEwICs2OTQsMTAgQEAgWkVYVEVSTiBpbnQgWkVY UE9SVCBkZWZsYXRlQ29weSBPRigoel9zdHJlYW1wIGRlc3QsCisgCisgWkVYVEVSTiBpbnQgWkVY UE9SVCBkZWZsYXRlUmVzZXQgT0YoKHpfc3RyZWFtcCBzdHJtKSk7CisgLyoKKy0gICAgIFRoaXMg ZnVuY3Rpb24gaXMgZXF1aXZhbGVudCB0byBkZWZsYXRlRW5kIGZvbGxvd2VkIGJ5IGRlZmxhdGVJ bml0LAorLSAgIGJ1dCBkb2VzIG5vdCBmcmVlIGFuZCByZWFsbG9jYXRlIGFsbCB0aGUgaW50ZXJu YWwgY29tcHJlc3Npb24gc3RhdGUuICBUaGUKKy0gICBzdHJlYW0gd2lsbCBrZWVwIHRoZSBzYW1l IGNvbXByZXNzaW9uIGxldmVsIGFuZCBhbnkgb3RoZXIgYXR0cmlidXRlcyB0aGF0CistICAgbWF5 IGhhdmUgYmVlbiBzZXQgYnkgZGVmbGF0ZUluaXQyLgorKyAgICAgVGhpcyBmdW5jdGlvbiBpcyBl cXVpdmFsZW50IHRvIGRlZmxhdGVFbmQgZm9sbG93ZWQgYnkgZGVmbGF0ZUluaXQsIGJ1dAorKyAg IGRvZXMgbm90IGZyZWUgYW5kIHJlYWxsb2NhdGUgdGhlIGludGVybmFsIGNvbXByZXNzaW9uIHN0 YXRlLiAgVGhlIHN0cmVhbQorKyAgIHdpbGwgbGVhdmUgdGhlIGNvbXByZXNzaW9uIGxldmVsIGFu ZCBhbnkgb3RoZXIgYXR0cmlidXRlcyB0aGF0IG1heSBoYXZlIGJlZW4KKysgICBzZXQgdW5jaGFu Z2VkLgorIAorICAgICAgZGVmbGF0ZVJlc2V0IHJldHVybnMgWl9PSyBpZiBzdWNjZXNzLCBvciBa X1NUUkVBTV9FUlJPUiBpZiB0aGUgc291cmNlCisgICAgc3RyZWFtIHN0YXRlIHdhcyBpbmNvbnNp c3RlbnQgKHN1Y2ggYXMgemFsbG9jIG9yIHN0YXRlIGJlaW5nIFpfTlVMTCkuCitAQCAtNjQ4LDIw ICs3MDgsMzYgQEAgWkVYVEVSTiBpbnQgWkVYUE9SVCBkZWZsYXRlUGFyYW1zIE9GKCh6X3N0cmVh bXAgc3RybSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzdHJh dGVneSkpOworIC8qCisgICAgICBEeW5hbWljYWxseSB1cGRhdGUgdGhlIGNvbXByZXNzaW9uIGxl dmVsIGFuZCBjb21wcmVzc2lvbiBzdHJhdGVneS4gIFRoZQorLSAgIGludGVycHJldGF0aW9uIG9m IGxldmVsIGFuZCBzdHJhdGVneSBpcyBhcyBpbiBkZWZsYXRlSW5pdDIuICBUaGlzIGNhbiBiZQor KyAgIGludGVycHJldGF0aW9uIG9mIGxldmVsIGFuZCBzdHJhdGVneSBpcyBhcyBpbiBkZWZsYXRl SW5pdDIoKS4gIFRoaXMgY2FuIGJlCisgICAgdXNlZCB0byBzd2l0Y2ggYmV0d2VlbiBjb21wcmVz c2lvbiBhbmQgc3RyYWlnaHQgY29weSBvZiB0aGUgaW5wdXQgZGF0YSwgb3IKKyAgICB0byBzd2l0 Y2ggdG8gYSBkaWZmZXJlbnQga2luZCBvZiBpbnB1dCBkYXRhIHJlcXVpcmluZyBhIGRpZmZlcmVu dCBzdHJhdGVneS4KKy0gICBJZiB0aGUgY29tcHJlc3Npb24gbGV2ZWwgaXMgY2hhbmdlZCwgdGhl IGlucHV0IGF2YWlsYWJsZSBzbyBmYXIgaXMKKy0gICBjb21wcmVzc2VkIHdpdGggdGhlIG9sZCBs ZXZlbCAoYW5kIG1heSBiZSBmbHVzaGVkKTsgdGhlIG5ldyBsZXZlbCB3aWxsIHRha2UKKy0gICBl ZmZlY3Qgb25seSBhdCB0aGUgbmV4dCBjYWxsIG9mIGRlZmxhdGUoKS4KKysgICBJZiB0aGUgY29t cHJlc3Npb24gYXBwcm9hY2ggKHdoaWNoIGlzIGEgZnVuY3Rpb24gb2YgdGhlIGxldmVsKSBvciB0 aGUKKysgICBzdHJhdGVneSBpcyBjaGFuZ2VkLCBhbmQgaWYgYW55IGlucHV0IGhhcyBiZWVuIGNv bnN1bWVkIGluIGEgcHJldmlvdXMKKysgICBkZWZsYXRlKCkgY2FsbCwgdGhlbiB0aGUgaW5wdXQg YXZhaWxhYmxlIHNvIGZhciBpcyBjb21wcmVzc2VkIHdpdGggdGhlIG9sZAorKyAgIGxldmVsIGFu ZCBzdHJhdGVneSB1c2luZyBkZWZsYXRlKHN0cm0sIFpfQkxPQ0spLiAgVGhlcmUgYXJlIHRocmVl IGFwcHJvYWNoZXMKKysgICBmb3IgdGhlIGNvbXByZXNzaW9uIGxldmVscyAwLCAxLi4zLCBhbmQg NC4uOSByZXNwZWN0aXZlbHkuICBUaGUgbmV3IGxldmVsCisrICAgYW5kIHN0cmF0ZWd5IHdpbGwg dGFrZSBlZmZlY3QgYXQgdGhlIG5leHQgY2FsbCBvZiBkZWZsYXRlKCkuCisgCistICAgICBCZWZv cmUgdGhlIGNhbGwgb2YgZGVmbGF0ZVBhcmFtcywgdGhlIHN0cmVhbSBzdGF0ZSBtdXN0IGJlIHNl dCBhcyBmb3IKKy0gICBhIGNhbGwgb2YgZGVmbGF0ZSgpLCBzaW5jZSB0aGUgY3VycmVudGx5IGF2 YWlsYWJsZSBpbnB1dCBtYXkgaGF2ZSB0byBiZQorLSAgIGNvbXByZXNzZWQgYW5kIGZsdXNoZWQu ICBJbiBwYXJ0aWN1bGFyLCBzdHJtLT5hdmFpbF9vdXQgbXVzdCBiZSBub24temVyby4KKysgICAg IElmIGEgZGVmbGF0ZShzdHJtLCBaX0JMT0NLKSBpcyBwZXJmb3JtZWQgYnkgZGVmbGF0ZVBhcmFt cygpLCBhbmQgaXQgZG9lcworKyAgIG5vdCBoYXZlIGVub3VnaCBvdXRwdXQgc3BhY2UgdG8gY29t cGxldGUsIHRoZW4gdGhlIHBhcmFtZXRlciBjaGFuZ2Ugd2lsbCBub3QKKysgICB0YWtlIGVmZmVj dC4gIEluIHRoaXMgY2FzZSwgZGVmbGF0ZVBhcmFtcygpIGNhbiBiZSBjYWxsZWQgYWdhaW4gd2l0 aCB0aGUKKysgICBzYW1lIHBhcmFtZXRlcnMgYW5kIG1vcmUgb3V0cHV0IHNwYWNlIHRvIHRyeSBh Z2Fpbi4KKyAKKy0gICAgIGRlZmxhdGVQYXJhbXMgcmV0dXJucyBaX09LIGlmIHN1Y2Nlc3MsIFpf U1RSRUFNX0VSUk9SIGlmIHRoZSBzb3VyY2UKKy0gICBzdHJlYW0gc3RhdGUgd2FzIGluY29uc2lz dGVudCBvciBpZiBhIHBhcmFtZXRlciB3YXMgaW52YWxpZCwgWl9CVUZfRVJST1IgaWYKKy0gICBz dHJtLT5hdmFpbF9vdXQgd2FzIHplcm8uCisrICAgICBJbiBvcmRlciB0byBhc3N1cmUgYSBjaGFu Z2UgaW4gdGhlIHBhcmFtZXRlcnMgb24gdGhlIGZpcnN0IHRyeSwgdGhlCisrICAgZGVmbGF0ZSBz dHJlYW0gc2hvdWxkIGJlIGZsdXNoZWQgdXNpbmcgZGVmbGF0ZSgpIHdpdGggWl9CTE9DSyBvciBv dGhlciBmbHVzaAorKyAgIHJlcXVlc3QgdW50aWwgc3RybS5hdmFpbF9vdXQgaXMgbm90IHplcm8s IGJlZm9yZSBjYWxsaW5nIGRlZmxhdGVQYXJhbXMoKS4KKysgICBUaGVuIG5vIG1vcmUgaW5wdXQg ZGF0YSBzaG91bGQgYmUgcHJvdmlkZWQgYmVmb3JlIHRoZSBkZWZsYXRlUGFyYW1zKCkgY2FsbC4K KysgICBJZiB0aGlzIGlzIGRvbmUsIHRoZSBvbGQgbGV2ZWwgYW5kIHN0cmF0ZWd5IHdpbGwgYmUg YXBwbGllZCB0byB0aGUgZGF0YQorKyAgIGNvbXByZXNzZWQgYmVmb3JlIGRlZmxhdGVQYXJhbXMo KSwgYW5kIHRoZSBuZXcgbGV2ZWwgYW5kIHN0cmF0ZWd5IHdpbGwgYmUKKysgICBhcHBsaWVkIHRv IHRoZSB0aGUgZGF0YSBjb21wcmVzc2VkIGFmdGVyIGRlZmxhdGVQYXJhbXMoKS4KKysKKysgICAg IGRlZmxhdGVQYXJhbXMgcmV0dXJucyBaX09LIG9uIHN1Y2Nlc3MsIFpfU1RSRUFNX0VSUk9SIGlm IHRoZSBzb3VyY2Ugc3RyZWFtCisrICAgc3RhdGUgd2FzIGluY29uc2lzdGVudCBvciBpZiBhIHBh cmFtZXRlciB3YXMgaW52YWxpZCwgb3IgWl9CVUZfRVJST1IgaWYKKysgICB0aGVyZSB3YXMgbm90 IGVub3VnaCBvdXRwdXQgc3BhY2UgdG8gY29tcGxldGUgdGhlIGNvbXByZXNzaW9uIG9mIHRoZQor KyAgIGF2YWlsYWJsZSBpbnB1dCBkYXRhIGJlZm9yZSBhIGNoYW5nZSBpbiB0aGUgc3RyYXRlZ3kg b3IgYXBwcm9hY2guICBOb3RlIHRoYXQKKysgICBpbiB0aGUgY2FzZSBvZiBhIFpfQlVGX0VSUk9S LCB0aGUgcGFyYW1ldGVycyBhcmUgbm90IGNoYW5nZWQuICBBIHJldHVybgorKyAgIHZhbHVlIG9m IFpfQlVGX0VSUk9SIGlzIG5vdCBmYXRhbCwgaW4gd2hpY2ggY2FzZSBkZWZsYXRlUGFyYW1zKCkg Y2FuIGJlCisrICAgcmV0cmllZCB3aXRoIG1vcmUgb3V0cHV0IHNwYWNlLgorICovCisgCisgWkVY VEVSTiBpbnQgWkVYUE9SVCBkZWZsYXRlVHVuZSBPRigoel9zdHJlYW1wIHN0cm0sCitAQCAtNjg4 LDkgKzc2NCwyOSBAQCBaRVhURVJOIHVMb25nIFpFWFBPUlQgZGVmbGF0ZUJvdW5kIE9GKCh6X3N0 cmVhbXAgc3RybSwKKyAgICBkZWZsYXRpb24gb2Ygc291cmNlTGVuIGJ5dGVzLiAgSXQgbXVzdCBi ZSBjYWxsZWQgYWZ0ZXIgZGVmbGF0ZUluaXQoKSBvcgorICAgIGRlZmxhdGVJbml0MigpLCBhbmQg YWZ0ZXIgZGVmbGF0ZVNldEhlYWRlcigpLCBpZiB1c2VkLiAgVGhpcyB3b3VsZCBiZSB1c2VkCisg ICAgdG8gYWxsb2NhdGUgYW4gb3V0cHV0IGJ1ZmZlciBmb3IgZGVmbGF0aW9uIGluIGEgc2luZ2xl IHBhc3MsIGFuZCBzbyB3b3VsZCBiZQorLSAgIGNhbGxlZCBiZWZvcmUgZGVmbGF0ZSgpLgorKyAg IGNhbGxlZCBiZWZvcmUgZGVmbGF0ZSgpLiAgSWYgdGhhdCBmaXJzdCBkZWZsYXRlKCkgY2FsbCBp cyBwcm92aWRlZCB0aGUKKysgICBzb3VyY2VMZW4gaW5wdXQgYnl0ZXMsIGFuIG91dHB1dCBidWZm ZXIgYWxsb2NhdGVkIHRvIHRoZSBzaXplIHJldHVybmVkIGJ5CisrICAgZGVmbGF0ZUJvdW5kKCks IGFuZCB0aGUgZmx1c2ggdmFsdWUgWl9GSU5JU0gsIHRoZW4gZGVmbGF0ZSgpIGlzIGd1YXJhbnRl ZWQKKysgICB0byByZXR1cm4gWl9TVFJFQU1fRU5ELiAgTm90ZSB0aGF0IGl0IGlzIHBvc3NpYmxl IGZvciB0aGUgY29tcHJlc3NlZCBzaXplIHRvCisrICAgYmUgbGFyZ2VyIHRoYW4gdGhlIHZhbHVl IHJldHVybmVkIGJ5IGRlZmxhdGVCb3VuZCgpIGlmIGZsdXNoIG9wdGlvbnMgb3RoZXIKKysgICB0 aGFuIFpfRklOSVNIIG9yIFpfTk9fRkxVU0ggYXJlIHVzZWQuCisgKi8KKyAKKytaRVhURVJOIGlu dCBaRVhQT1JUIGRlZmxhdGVQZW5kaW5nIE9GKCh6X3N0cmVhbXAgc3RybSwKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCAqcGVuZGluZywKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKmJpdHMpKTsKKysvKgorKyAgICAg ZGVmbGF0ZVBlbmRpbmcoKSByZXR1cm5zIHRoZSBudW1iZXIgb2YgYnl0ZXMgYW5kIGJpdHMgb2Yg b3V0cHV0IHRoYXQgaGF2ZQorKyAgIGJlZW4gZ2VuZXJhdGVkLCBidXQgbm90IHlldCBwcm92aWRl ZCBpbiB0aGUgYXZhaWxhYmxlIG91dHB1dC4gIFRoZSBieXRlcyBub3QKKysgICBwcm92aWRlZCB3 b3VsZCBiZSBkdWUgdG8gdGhlIGF2YWlsYWJsZSBvdXRwdXQgc3BhY2UgaGF2aW5nIGJlaW5nIGNv bnN1bWVkLgorKyAgIFRoZSBudW1iZXIgb2YgYml0cyBvZiBvdXRwdXQgbm90IHByb3ZpZGVkIGFy ZSBiZXR3ZWVuIDAgYW5kIDcsIHdoZXJlIHRoZXkKKysgICBhd2FpdCBtb3JlIGJpdHMgdG8gam9p biB0aGVtIGluIG9yZGVyIHRvIGZpbGwgb3V0IGEgZnVsbCBieXRlLiAgSWYgcGVuZGluZworKyAg IG9yIGJpdHMgYXJlIFpfTlVMTCwgdGhlbiB0aG9zZSB2YWx1ZXMgYXJlIG5vdCBzZXQuCisrCisr ICAgICBkZWZsYXRlUGVuZGluZyByZXR1cm5zIFpfT0sgaWYgc3VjY2Vzcywgb3IgWl9TVFJFQU1f RVJST1IgaWYgdGhlIHNvdXJjZQorKyAgIHN0cmVhbSBzdGF0ZSB3YXMgaW5jb25zaXN0ZW50Lgor KyAqLworKworIFpFWFRFUk4gaW50IFpFWFBPUlQgZGVmbGF0ZVByaW1lIE9GKCh6X3N0cmVhbXAg c3RybSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGJpdHMsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB2YWx1ZSkpOworQEAgLTcw Myw4ICs3OTksOSBAQCBaRVhURVJOIGludCBaRVhQT1JUIGRlZmxhdGVQcmltZSBPRigoel9zdHJl YW1wIHN0cm0sCisgICAgdGhhbiBvciBlcXVhbCB0byAxNiwgYW5kIHRoYXQgbWFueSBvZiB0aGUg bGVhc3Qgc2lnbmlmaWNhbnQgYml0cyBvZiB2YWx1ZQorICAgIHdpbGwgYmUgaW5zZXJ0ZWQgaW4g dGhlIG91dHB1dC4KKyAKKy0gICAgIGRlZmxhdGVQcmltZSByZXR1cm5zIFpfT0sgaWYgc3VjY2Vz cywgb3IgWl9TVFJFQU1fRVJST1IgaWYgdGhlIHNvdXJjZQorLSAgIHN0cmVhbSBzdGF0ZSB3YXMg aW5jb25zaXN0ZW50LgorKyAgICAgZGVmbGF0ZVByaW1lIHJldHVybnMgWl9PSyBpZiBzdWNjZXNz LCBaX0JVRl9FUlJPUiBpZiB0aGVyZSB3YXMgbm90IGVub3VnaAorKyAgIHJvb20gaW4gdGhlIGlu dGVybmFsIGJ1ZmZlciB0byBpbnNlcnQgdGhlIGJpdHMsIG9yIFpfU1RSRUFNX0VSUk9SIGlmIHRo ZQorKyAgIHNvdXJjZSBzdHJlYW0gc3RhdGUgd2FzIGluY29uc2lzdGVudC4KKyAqLworIAorIFpF WFRFUk4gaW50IFpFWFBPUlQgZGVmbGF0ZVNldEhlYWRlciBPRigoel9zdHJlYW1wIHN0cm0sCitA QCAtNzU4LDcgKzg1NSw3IEBAIFpFWFRFUk4gaW50IFpFWFBPUlQgaW5mbGF0ZUluaXQyIE9GKCh6 X3N0cmVhbXAgc3RybSwKKyAgICBpcyBmb3IgdXNlIHdpdGggb3RoZXIgZm9ybWF0cyB0aGF0IHVz ZSB0aGUgZGVmbGF0ZSBjb21wcmVzc2VkIGRhdGEgZm9ybWF0CisgICAgc3VjaCBhcyB6aXAuICBU aG9zZSBmb3JtYXRzIHByb3ZpZGUgdGhlaXIgb3duIGNoZWNrIHZhbHVlcy4gIElmIGEgY3VzdG9t CisgICAgZm9ybWF0IGlzIGRldmVsb3BlZCB1c2luZyB0aGUgcmF3IGRlZmxhdGUgZm9ybWF0IGZv ciBjb21wcmVzc2VkIGRhdGEsIGl0IGlzCistICAgcmVjb21tZW5kZWQgdGhhdCBhIGNoZWNrIHZh bHVlIHN1Y2ggYXMgYW4gYWRsZXIzMiBvciBhIGNyYzMyIGJlIGFwcGxpZWQgdG8KKysgICByZWNv bW1lbmRlZCB0aGF0IGEgY2hlY2sgdmFsdWUgc3VjaCBhcyBhbiBBZGxlci0zMiBvciBhIENSQy0z MiBiZSBhcHBsaWVkIHRvCisgICAgdGhlIHVuY29tcHJlc3NlZCBkYXRhIGFzIGlzIGRvbmUgaW4g dGhlIHpsaWIsIGd6aXAsIGFuZCB6aXAgZm9ybWF0cy4gIEZvcgorICAgIG1vc3QgYXBwbGljYXRp b25zLCB0aGUgemxpYiBmb3JtYXQgc2hvdWxkIGJlIHVzZWQgYXMgaXMuICBOb3RlIHRoYXQgY29t bWVudHMKKyAgICBhYm92ZSBvbiB0aGUgdXNlIGluIGRlZmxhdGVJbml0MigpIGFwcGxpZXMgdG8g dGhlIG1hZ25pdHVkZSBvZiB3aW5kb3dCaXRzLgorQEAgLTc2Nyw3ICs4NjQsMTAgQEAgWkVYVEVS TiBpbnQgWkVYUE9SVCBpbmZsYXRlSW5pdDIgT0YoKHpfc3RyZWFtcCBzdHJtLAorICAgIDMyIHRv IHdpbmRvd0JpdHMgdG8gZW5hYmxlIHpsaWIgYW5kIGd6aXAgZGVjb2Rpbmcgd2l0aCBhdXRvbWF0 aWMgaGVhZGVyCisgICAgZGV0ZWN0aW9uLCBvciBhZGQgMTYgdG8gZGVjb2RlIG9ubHkgdGhlIGd6 aXAgZm9ybWF0ICh0aGUgemxpYiBmb3JtYXQgd2lsbAorICAgIHJldHVybiBhIFpfREFUQV9FUlJP UikuICBJZiBhIGd6aXAgc3RyZWFtIGlzIGJlaW5nIGRlY29kZWQsIHN0cm0tPmFkbGVyIGlzIGEK Ky0gICBjcmMzMiBpbnN0ZWFkIG9mIGFuIGFkbGVyMzIuCisrICAgQ1JDLTMyIGluc3RlYWQgb2Yg YW4gQWRsZXItMzIuICBVbmxpa2UgdGhlIGd1bnppcCB1dGlsaXR5IGFuZCBnenJlYWQoKSAoc2Vl CisrICAgYmVsb3cpLCBpbmZsYXRlKCkgd2lsbCBub3QgYXV0b21hdGljYWxseSBkZWNvZGUgY29u Y2F0ZW5hdGVkIGd6aXAgc3RyZWFtcy4KKysgICBpbmZsYXRlKCkgd2lsbCByZXR1cm4gWl9TVFJF QU1fRU5EIGF0IHRoZSBlbmQgb2YgdGhlIGd6aXAgc3RyZWFtLiAgVGhlIHN0YXRlCisrICAgd291 bGQgbmVlZCB0byBiZSByZXNldCB0byBjb250aW51ZSBkZWNvZGluZyBhIHN1YnNlcXVlbnQgZ3pp cCBzdHJlYW0uCisgCisgICAgICBpbmZsYXRlSW5pdDIgcmV0dXJucyBaX09LIGlmIHN1Y2Nlc3Ms IFpfTUVNX0VSUk9SIGlmIHRoZXJlIHdhcyBub3QgZW5vdWdoCisgICAgbWVtb3J5LCBaX1ZFUlNJ T05fRVJST1IgaWYgdGhlIHpsaWIgbGlicmFyeSB2ZXJzaW9uIGlzIGluY29tcGF0aWJsZSB3aXRo IHRoZQorQEAgLTc4OCwzNCArODg4LDU0IEBAIFpFWFRFUk4gaW50IFpFWFBPUlQgaW5mbGF0ZVNl dERpY3Rpb25hcnkgT0YoKHpfc3RyZWFtcCBzdHJtLAorICAgICAgSW5pdGlhbGl6ZXMgdGhlIGRl Y29tcHJlc3Npb24gZGljdGlvbmFyeSBmcm9tIHRoZSBnaXZlbiB1bmNvbXByZXNzZWQgYnl0ZQor ICAgIHNlcXVlbmNlLiAgVGhpcyBmdW5jdGlvbiBtdXN0IGJlIGNhbGxlZCBpbW1lZGlhdGVseSBh ZnRlciBhIGNhbGwgb2YgaW5mbGF0ZSwKKyAgICBpZiB0aGF0IGNhbGwgcmV0dXJuZWQgWl9ORUVE X0RJQ1QuICBUaGUgZGljdGlvbmFyeSBjaG9zZW4gYnkgdGhlIGNvbXByZXNzb3IKKy0gICBjYW4g YmUgZGV0ZXJtaW5lZCBmcm9tIHRoZSBhZGxlcjMyIHZhbHVlIHJldHVybmVkIGJ5IHRoYXQgY2Fs bCBvZiBpbmZsYXRlLgorKyAgIGNhbiBiZSBkZXRlcm1pbmVkIGZyb20gdGhlIEFkbGVyLTMyIHZh bHVlIHJldHVybmVkIGJ5IHRoYXQgY2FsbCBvZiBpbmZsYXRlLgorICAgIFRoZSBjb21wcmVzc29y IGFuZCBkZWNvbXByZXNzb3IgbXVzdCB1c2UgZXhhY3RseSB0aGUgc2FtZSBkaWN0aW9uYXJ5IChz ZWUKKy0gICBkZWZsYXRlU2V0RGljdGlvbmFyeSkuICBGb3IgcmF3IGluZmxhdGUsIHRoaXMgZnVu Y3Rpb24gY2FuIGJlIGNhbGxlZAorLSAgIGltbWVkaWF0ZWx5IGFmdGVyIGluZmxhdGVJbml0Migp IG9yIGluZmxhdGVSZXNldCgpIGFuZCBiZWZvcmUgYW55IGNhbGwgb2YKKy0gICBpbmZsYXRlKCkg dG8gc2V0IHRoZSBkaWN0aW9uYXJ5LiAgVGhlIGFwcGxpY2F0aW9uIG11c3QgaW5zdXJlIHRoYXQg dGhlCistICAgZGljdGlvbmFyeSB0aGF0IHdhcyB1c2VkIGZvciBjb21wcmVzc2lvbiBpcyBwcm92 aWRlZC4KKysgICBkZWZsYXRlU2V0RGljdGlvbmFyeSkuICBGb3IgcmF3IGluZmxhdGUsIHRoaXMg ZnVuY3Rpb24gY2FuIGJlIGNhbGxlZCBhdCBhbnkKKysgICB0aW1lIHRvIHNldCB0aGUgZGljdGlv bmFyeS4gIElmIHRoZSBwcm92aWRlZCBkaWN0aW9uYXJ5IGlzIHNtYWxsZXIgdGhhbiB0aGUKKysg ICB3aW5kb3cgYW5kIHRoZXJlIGlzIGFscmVhZHkgZGF0YSBpbiB0aGUgd2luZG93LCB0aGVuIHRo ZSBwcm92aWRlZCBkaWN0aW9uYXJ5CisrICAgd2lsbCBhbWVuZCB3aGF0J3MgdGhlcmUuICBUaGUg YXBwbGljYXRpb24gbXVzdCBpbnN1cmUgdGhhdCB0aGUgZGljdGlvbmFyeQorKyAgIHRoYXQgd2Fz IHVzZWQgZm9yIGNvbXByZXNzaW9uIGlzIHByb3ZpZGVkLgorIAorICAgICAgaW5mbGF0ZVNldERp Y3Rpb25hcnkgcmV0dXJucyBaX09LIGlmIHN1Y2Nlc3MsIFpfU1RSRUFNX0VSUk9SIGlmIGEKKyAg ICBwYXJhbWV0ZXIgaXMgaW52YWxpZCAoZS5nLiAgZGljdGlvbmFyeSBiZWluZyBaX05VTEwpIG9y IHRoZSBzdHJlYW0gc3RhdGUgaXMKKyAgICBpbmNvbnNpc3RlbnQsIFpfREFUQV9FUlJPUiBpZiB0 aGUgZ2l2ZW4gZGljdGlvbmFyeSBkb2Vzbid0IG1hdGNoIHRoZQorLSAgIGV4cGVjdGVkIG9uZSAo aW5jb3JyZWN0IGFkbGVyMzIgdmFsdWUpLiAgaW5mbGF0ZVNldERpY3Rpb25hcnkgZG9lcyBub3QK KysgICBleHBlY3RlZCBvbmUgKGluY29ycmVjdCBBZGxlci0zMiB2YWx1ZSkuICBpbmZsYXRlU2V0 RGljdGlvbmFyeSBkb2VzIG5vdAorICAgIHBlcmZvcm0gYW55IGRlY29tcHJlc3Npb246IHRoaXMg d2lsbCBiZSBkb25lIGJ5IHN1YnNlcXVlbnQgY2FsbHMgb2YKKyAgICBpbmZsYXRlKCkuCisgKi8K KyAKKytaRVhURVJOIGludCBaRVhQT1JUIGluZmxhdGVHZXREaWN0aW9uYXJ5IE9GKCh6X3N0cmVh bXAgc3RybSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBC eXRlZiAqZGljdGlvbmFyeSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB1SW50ICAqZGljdExlbmd0aCkpOworKy8qCisrICAgICBSZXR1cm5zIHRoZSBzbGlk aW5nIGRpY3Rpb25hcnkgYmVpbmcgbWFpbnRhaW5lZCBieSBpbmZsYXRlLiAgZGljdExlbmd0aCBp cworKyAgIHNldCB0byB0aGUgbnVtYmVyIG9mIGJ5dGVzIGluIHRoZSBkaWN0aW9uYXJ5LCBhbmQg dGhhdCBtYW55IGJ5dGVzIGFyZSBjb3BpZWQKKysgICB0byBkaWN0aW9uYXJ5LiAgZGljdGlvbmFy eSBtdXN0IGhhdmUgZW5vdWdoIHNwYWNlLCB3aGVyZSAzMjc2OCBieXRlcyBpcworKyAgIGFsd2F5 cyBlbm91Z2guICBJZiBpbmZsYXRlR2V0RGljdGlvbmFyeSgpIGlzIGNhbGxlZCB3aXRoIGRpY3Rp b25hcnkgZXF1YWwgdG8KKysgICBaX05VTEwsIHRoZW4gb25seSB0aGUgZGljdGlvbmFyeSBsZW5n dGggaXMgcmV0dXJuZWQsIGFuZCBub3RoaW5nIGlzIGNvcGllZC4KKysgICBTaW1pbGFyeSwgaWYg ZGljdExlbmd0aCBpcyBaX05VTEwsIHRoZW4gaXQgaXMgbm90IHNldC4KKysKKysgICAgIGluZmxh dGVHZXREaWN0aW9uYXJ5IHJldHVybnMgWl9PSyBvbiBzdWNjZXNzLCBvciBaX1NUUkVBTV9FUlJP UiBpZiB0aGUKKysgICBzdHJlYW0gc3RhdGUgaXMgaW5jb25zaXN0ZW50LgorKyovCisrCisgWkVY VEVSTiBpbnQgWkVYUE9SVCBpbmZsYXRlU3luYyBPRigoel9zdHJlYW1wIHN0cm0pKTsKKyAvKgor LSAgICAgU2tpcHMgaW52YWxpZCBjb21wcmVzc2VkIGRhdGEgdW50aWwgYSBmdWxsIGZsdXNoIHBv aW50IChzZWUgYWJvdmUgdGhlCistICAgZGVzY3JpcHRpb24gb2YgZGVmbGF0ZSB3aXRoIFpfRlVM TF9GTFVTSCkgY2FuIGJlIGZvdW5kLCBvciB1bnRpbCBhbGwKKysgICAgIFNraXBzIGludmFsaWQg Y29tcHJlc3NlZCBkYXRhIHVudGlsIGEgcG9zc2libGUgZnVsbCBmbHVzaCBwb2ludCAoc2VlIGFi b3ZlCisrICAgZm9yIHRoZSBkZXNjcmlwdGlvbiBvZiBkZWZsYXRlIHdpdGggWl9GVUxMX0ZMVVNI KSBjYW4gYmUgZm91bmQsIG9yIHVudGlsIGFsbAorICAgIGF2YWlsYWJsZSBpbnB1dCBpcyBza2lw cGVkLiAgTm8gb3V0cHV0IGlzIHByb3ZpZGVkLgorIAorLSAgICAgaW5mbGF0ZVN5bmMgcmV0dXJu cyBaX09LIGlmIGEgZnVsbCBmbHVzaCBwb2ludCBoYXMgYmVlbiBmb3VuZCwgWl9CVUZfRVJST1IK Ky0gICBpZiBubyBtb3JlIGlucHV0IHdhcyBwcm92aWRlZCwgWl9EQVRBX0VSUk9SIGlmIG5vIGZs dXNoIHBvaW50IGhhcyBiZWVuCistICAgZm91bmQsIG9yIFpfU1RSRUFNX0VSUk9SIGlmIHRoZSBz dHJlYW0gc3RydWN0dXJlIHdhcyBpbmNvbnNpc3RlbnQuICBJbiB0aGUKKy0gICBzdWNjZXNzIGNh c2UsIHRoZSBhcHBsaWNhdGlvbiBtYXkgc2F2ZSB0aGUgY3VycmVudCBjdXJyZW50IHZhbHVlIG9m IHRvdGFsX2luCistICAgd2hpY2ggaW5kaWNhdGVzIHdoZXJlIHZhbGlkIGNvbXByZXNzZWQgZGF0 YSB3YXMgZm91bmQuICBJbiB0aGUgZXJyb3IgY2FzZSwKKy0gICB0aGUgYXBwbGljYXRpb24gbWF5 IHJlcGVhdGVkbHkgY2FsbCBpbmZsYXRlU3luYywgcHJvdmlkaW5nIG1vcmUgaW5wdXQgZWFjaAor LSAgIHRpbWUsIHVudGlsIHN1Y2Nlc3Mgb3IgZW5kIG9mIHRoZSBpbnB1dCBkYXRhLgorKyAgICAg aW5mbGF0ZVN5bmMgc2VhcmNoZXMgZm9yIGEgMDAgMDAgRkYgRkYgcGF0dGVybiBpbiB0aGUgY29t cHJlc3NlZCBkYXRhLgorKyAgIEFsbCBmdWxsIGZsdXNoIHBvaW50cyBoYXZlIHRoaXMgcGF0dGVy biwgYnV0IG5vdCBhbGwgb2NjdXJyZW5jZXMgb2YgdGhpcworKyAgIHBhdHRlcm4gYXJlIGZ1bGwg Zmx1c2ggcG9pbnRzLgorKworKyAgICAgaW5mbGF0ZVN5bmMgcmV0dXJucyBaX09LIGlmIGEgcG9z c2libGUgZnVsbCBmbHVzaCBwb2ludCBoYXMgYmVlbiBmb3VuZCwKKysgICBaX0JVRl9FUlJPUiBp ZiBubyBtb3JlIGlucHV0IHdhcyBwcm92aWRlZCwgWl9EQVRBX0VSUk9SIGlmIG5vIGZsdXNoIHBv aW50CisrICAgaGFzIGJlZW4gZm91bmQsIG9yIFpfU1RSRUFNX0VSUk9SIGlmIHRoZSBzdHJlYW0g c3RydWN0dXJlIHdhcyBpbmNvbnNpc3RlbnQuCisrICAgSW4gdGhlIHN1Y2Nlc3MgY2FzZSwgdGhl IGFwcGxpY2F0aW9uIG1heSBzYXZlIHRoZSBjdXJyZW50IGN1cnJlbnQgdmFsdWUgb2YKKysgICB0 b3RhbF9pbiB3aGljaCBpbmRpY2F0ZXMgd2hlcmUgdmFsaWQgY29tcHJlc3NlZCBkYXRhIHdhcyBm b3VuZC4gIEluIHRoZQorKyAgIGVycm9yIGNhc2UsIHRoZSBhcHBsaWNhdGlvbiBtYXkgcmVwZWF0 ZWRseSBjYWxsIGluZmxhdGVTeW5jLCBwcm92aWRpbmcgbW9yZQorKyAgIGlucHV0IGVhY2ggdGlt ZSwgdW50aWwgc3VjY2VzcyBvciBlbmQgb2YgdGhlIGlucHV0IGRhdGEuCisgKi8KKyAKKyBaRVhU RVJOIGludCBaRVhQT1JUIGluZmxhdGVDb3B5IE9GKCh6X3N0cmVhbXAgZGVzdCwKK0BAIC04Mzcs NyArOTU3LDcgQEAgWkVYVEVSTiBpbnQgWkVYUE9SVCBpbmZsYXRlQ29weSBPRigoel9zdHJlYW1w IGRlc3QsCisgWkVYVEVSTiBpbnQgWkVYUE9SVCBpbmZsYXRlUmVzZXQgT0YoKHpfc3RyZWFtcCBz dHJtKSk7CisgLyoKKyAgICAgIFRoaXMgZnVuY3Rpb24gaXMgZXF1aXZhbGVudCB0byBpbmZsYXRl RW5kIGZvbGxvd2VkIGJ5IGluZmxhdGVJbml0LAorLSAgIGJ1dCBkb2VzIG5vdCBmcmVlIGFuZCBy ZWFsbG9jYXRlIGFsbCB0aGUgaW50ZXJuYWwgZGVjb21wcmVzc2lvbiBzdGF0ZS4gIFRoZQorKyAg IGJ1dCBkb2VzIG5vdCBmcmVlIGFuZCByZWFsbG9jYXRlIHRoZSBpbnRlcm5hbCBkZWNvbXByZXNz aW9uIHN0YXRlLiAgVGhlCisgICAgc3RyZWFtIHdpbGwga2VlcCBhdHRyaWJ1dGVzIHRoYXQgbWF5 IGhhdmUgYmVlbiBzZXQgYnkgaW5mbGF0ZUluaXQyLgorIAorICAgICAgaW5mbGF0ZVJlc2V0IHJl dHVybnMgWl9PSyBpZiBzdWNjZXNzLCBvciBaX1NUUkVBTV9FUlJPUiBpZiB0aGUgc291cmNlCitA QCAtODQ5LDcgKzk2OSw5IEBAIFpFWFRFUk4gaW50IFpFWFBPUlQgaW5mbGF0ZVJlc2V0MiBPRigo el9zdHJlYW1wIHN0cm0sCisgLyoKKyAgICAgIFRoaXMgZnVuY3Rpb24gaXMgdGhlIHNhbWUgYXMg aW5mbGF0ZVJlc2V0LCBidXQgaXQgYWxzbyBwZXJtaXRzIGNoYW5naW5nCisgICAgdGhlIHdyYXAg YW5kIHdpbmRvdyBzaXplIHJlcXVlc3RzLiAgVGhlIHdpbmRvd0JpdHMgcGFyYW1ldGVyIGlzIGlu dGVycHJldGVkCistICAgdGhlIHNhbWUgYXMgaXQgaXMgZm9yIGluZmxhdGVJbml0Mi4KKysgICB0 aGUgc2FtZSBhcyBpdCBpcyBmb3IgaW5mbGF0ZUluaXQyLiAgSWYgdGhlIHdpbmRvdyBzaXplIGlz IGNoYW5nZWQsIHRoZW4gdGhlCisrICAgbWVtb3J5IGFsbG9jYXRlZCBmb3IgdGhlIHdpbmRvdyBp cyBmcmVlZCwgYW5kIHRoZSB3aW5kb3cgd2lsbCBiZSByZWFsbG9jYXRlZAorKyAgIGJ5IGluZmxh dGUoKSBpZiBuZWVkZWQuCisgCisgICAgICBpbmZsYXRlUmVzZXQyIHJldHVybnMgWl9PSyBpZiBz dWNjZXNzLCBvciBaX1NUUkVBTV9FUlJPUiBpZiB0aGUgc291cmNlCisgICAgc3RyZWFtIHN0YXRl IHdhcyBpbmNvbnNpc3RlbnQgKHN1Y2ggYXMgemFsbG9jIG9yIHN0YXRlIGJlaW5nIFpfTlVMTCks IG9yIGlmCitAQCAtOTAxLDcgKzEwMjMsNyBAQCBaRVhURVJOIGxvbmcgWkVYUE9SVCBpbmZsYXRl TWFyayBPRigoel9zdHJlYW1wIHN0cm0pKTsKKyAgICBsb2NhdGlvbiBpbiB0aGUgaW5wdXQgc3Ry ZWFtIGNhbiBiZSBkZXRlcm1pbmVkIGZyb20gYXZhaWxfaW4gYW5kIGRhdGFfdHlwZQorICAgIGFz IG5vdGVkIGluIHRoZSBkZXNjcmlwdGlvbiBmb3IgdGhlIFpfQkxPQ0sgZmx1c2ggcGFyYW1ldGVy IGZvciBpbmZsYXRlLgorIAorLSAgICAgaW5mbGF0ZU1hcmsgcmV0dXJucyB0aGUgdmFsdWUgbm90 ZWQgYWJvdmUgb3IgLTEgPDwgMTYgaWYgdGhlIHByb3ZpZGVkCisrICAgICBpbmZsYXRlTWFyayBy ZXR1cm5zIHRoZSB2YWx1ZSBub3RlZCBhYm92ZSwgb3IgLTY1NTM2IGlmIHRoZSBwcm92aWRlZAor ICAgIHNvdXJjZSBzdHJlYW0gc3RhdGUgd2FzIGluY29uc2lzdGVudC4KKyAqLworIAorQEAgLTk2 MiwxMiArMTA4NCwxMyBAQCBaRVhURVJOIGludCBaRVhQT1JUIGluZmxhdGVCYWNrSW5pdCBPRigo el9zdHJlYW1wIHN0cm0sIGludCB3aW5kb3dCaXRzLAorICAgICAgU2VlIGluZmxhdGVCYWNrKCkg Zm9yIHRoZSB1c2FnZSBvZiB0aGVzZSByb3V0aW5lcy4KKyAKKyAgICAgIGluZmxhdGVCYWNrSW5p dCB3aWxsIHJldHVybiBaX09LIG9uIHN1Y2Nlc3MsIFpfU1RSRUFNX0VSUk9SIGlmIGFueSBvZgor LSAgIHRoZSBwYXJhbWF0ZXJzIGFyZSBpbnZhbGlkLCBaX01FTV9FUlJPUiBpZiB0aGUgaW50ZXJu YWwgc3RhdGUgY291bGQgbm90IGJlCisrICAgdGhlIHBhcmFtZXRlcnMgYXJlIGludmFsaWQsIFpf TUVNX0VSUk9SIGlmIHRoZSBpbnRlcm5hbCBzdGF0ZSBjb3VsZCBub3QgYmUKKyAgICBhbGxvY2F0 ZWQsIG9yIFpfVkVSU0lPTl9FUlJPUiBpZiB0aGUgdmVyc2lvbiBvZiB0aGUgbGlicmFyeSBkb2Vz IG5vdCBtYXRjaAorICAgIHRoZSB2ZXJzaW9uIG9mIHRoZSBoZWFkZXIgZmlsZS4KKyAqLworIAor LXR5cGVkZWYgdW5zaWduZWQgKCppbl9mdW5jKSBPRigodm9pZCBGQVIgKiwgdW5zaWduZWQgY2hh ciBGQVIgKiBGQVIgKikpOworK3R5cGVkZWYgdW5zaWduZWQgKCppbl9mdW5jKSBPRigodm9pZCBG QVIgKiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHpfY29uc3QgdW5zaWduZWQg Y2hhciBGQVIgKiBGQVIgKikpOworIHR5cGVkZWYgaW50ICgqb3V0X2Z1bmMpIE9GKCh2b2lkIEZB UiAqLCB1bnNpZ25lZCBjaGFyIEZBUiAqLCB1bnNpZ25lZCkpOworIAorIFpFWFRFUk4gaW50IFpF WFBPUlQgaW5mbGF0ZUJhY2sgT0YoKHpfc3RyZWFtcCBzdHJtLAorQEAgLTk3NSwxMSArMTA5OCwx MiBAQCBaRVhURVJOIGludCBaRVhQT1JUIGluZmxhdGVCYWNrIE9GKCh6X3N0cmVhbXAgc3RybSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRfZnVuYyBvdXQsIHZvaWQg RkFSICpvdXRfZGVzYykpOworIC8qCisgICAgICBpbmZsYXRlQmFjaygpIGRvZXMgYSByYXcgaW5m bGF0ZSB3aXRoIGEgc2luZ2xlIGNhbGwgdXNpbmcgYSBjYWxsLWJhY2sKKy0gICBpbnRlcmZhY2Ug Zm9yIGlucHV0IGFuZCBvdXRwdXQuICBUaGlzIGlzIG1vcmUgZWZmaWNpZW50IHRoYW4gaW5mbGF0 ZSgpIGZvcgorLSAgIGZpbGUgaS9vIGFwcGxpY2F0aW9ucyBpbiB0aGF0IGl0IGF2b2lkcyBjb3B5 aW5nIGJldHdlZW4gdGhlIG91dHB1dCBhbmQgdGhlCistICAgc2xpZGluZyB3aW5kb3cgYnkgc2lt cGx5IG1ha2luZyB0aGUgd2luZG93IGl0c2VsZiB0aGUgb3V0cHV0IGJ1ZmZlci4gIFRoaXMKKy0g ICBmdW5jdGlvbiB0cnVzdHMgdGhlIGFwcGxpY2F0aW9uIHRvIG5vdCBjaGFuZ2UgdGhlIG91dHB1 dCBidWZmZXIgcGFzc2VkIGJ5CistICAgdGhlIG91dHB1dCBmdW5jdGlvbiwgYXQgbGVhc3QgdW50 aWwgaW5mbGF0ZUJhY2soKSByZXR1cm5zLgorKyAgIGludGVyZmFjZSBmb3IgaW5wdXQgYW5kIG91 dHB1dC4gIFRoaXMgaXMgcG90ZW50aWFsbHkgbW9yZSBlZmZpY2llbnQgdGhhbgorKyAgIGluZmxh dGUoKSBmb3IgZmlsZSBpL28gYXBwbGljYXRpb25zLCBpbiB0aGF0IGl0IGF2b2lkcyBjb3B5aW5n IGJldHdlZW4gdGhlCisrICAgb3V0cHV0IGFuZCB0aGUgc2xpZGluZyB3aW5kb3cgYnkgc2ltcGx5 IG1ha2luZyB0aGUgd2luZG93IGl0c2VsZiB0aGUgb3V0cHV0CisrICAgYnVmZmVyLiAgaW5mbGF0 ZSgpIGNhbiBiZSBmYXN0ZXIgb24gbW9kZXJuIENQVXMgd2hlbiB1c2VkIHdpdGggbGFyZ2UKKysg ICBidWZmZXJzLiAgaW5mbGF0ZUJhY2soKSB0cnVzdHMgdGhlIGFwcGxpY2F0aW9uIHRvIG5vdCBj aGFuZ2UgdGhlIG91dHB1dAorKyAgIGJ1ZmZlciBwYXNzZWQgYnkgdGhlIG91dHB1dCBmdW5jdGlv biwgYXQgbGVhc3QgdW50aWwgaW5mbGF0ZUJhY2soKSByZXR1cm5zLgorIAorICAgICAgaW5mbGF0 ZUJhY2tJbml0KCkgbXVzdCBiZSBjYWxsZWQgZmlyc3QgdG8gYWxsb2NhdGUgdGhlIGludGVybmFs IHN0YXRlCisgICAgYW5kIHRvIGluaXRpYWxpemUgdGhlIHN0YXRlIHdpdGggdGhlIHVzZXItcHJv dmlkZWQgd2luZG93IGJ1ZmZlci4KK0BAIC05OTEsOSArMTExNSw5IEBAIFpFWFRFUk4gaW50IFpF WFBPUlQgaW5mbGF0ZUJhY2sgT0YoKHpfc3RyZWFtcCBzdHJtLAorICAgIFRoaXMgcm91dGluZSB3 b3VsZCBub3JtYWxseSBiZSB1c2VkIGluIGEgdXRpbGl0eSB0aGF0IHJlYWRzIHppcCBvciBnemlw CisgICAgZmlsZXMgYW5kIHdyaXRlcyBvdXQgdW5jb21wcmVzc2VkIGZpbGVzLiAgVGhlIHV0aWxp dHkgd291bGQgZGVjb2RlIHRoZQorICAgIGhlYWRlciBhbmQgcHJvY2VzcyB0aGUgdHJhaWxlciBv biBpdHMgb3duLCBoZW5jZSB0aGlzIHJvdXRpbmUgZXhwZWN0cyBvbmx5CistICAgdGhlIHJhdyBk ZWZsYXRlIHN0cmVhbSB0byBkZWNvbXByZXNzLiAgVGhpcyBpcyBkaWZmZXJlbnQgZnJvbSB0aGUg bm9ybWFsCistICAgYmVoYXZpb3Igb2YgaW5mbGF0ZSgpLCB3aGljaCBleHBlY3RzIGVpdGhlciBh IHpsaWIgb3IgZ3ppcCBoZWFkZXIgYW5kCistICAgdHJhaWxlciBhcm91bmQgdGhlIGRlZmxhdGUg c3RyZWFtLgorKyAgIHRoZSByYXcgZGVmbGF0ZSBzdHJlYW0gdG8gZGVjb21wcmVzcy4gIFRoaXMg aXMgZGlmZmVyZW50IGZyb20gdGhlIGRlZmF1bHQKKysgICBiZWhhdmlvciBvZiBpbmZsYXRlKCks IHdoaWNoIGV4cGVjdHMgYSB6bGliIGhlYWRlciBhbmQgdHJhaWxlciBhcm91bmQgdGhlCisrICAg ZGVmbGF0ZSBzdHJlYW0uCisgCisgICAgICBpbmZsYXRlQmFjaygpIHVzZXMgdHdvIHN1YnJvdXRp bmVzIHN1cHBsaWVkIGJ5IHRoZSBjYWxsZXIgdGhhdCBhcmUgdGhlbgorICAgIGNhbGxlZCBieSBp bmZsYXRlQmFjaygpIGZvciBpbnB1dCBhbmQgb3V0cHV0LiAgaW5mbGF0ZUJhY2soKSBjYWxscyB0 aG9zZQorQEAgLTEwMDIsMTIgKzExMjYsMTIgQEAgWkVYVEVSTiBpbnQgWkVYUE9SVCBpbmZsYXRl QmFjayBPRigoel9zdHJlYW1wIHN0cm0sCisgICAgcGFyYW1ldGVycyBhbmQgcmV0dXJuIHR5cGVz IGFyZSBkZWZpbmVkIGFib3ZlIGluIHRoZSBpbl9mdW5jIGFuZCBvdXRfZnVuYworICAgIHR5cGVk ZWZzLiAgaW5mbGF0ZUJhY2soKSB3aWxsIGNhbGwgaW4oaW5fZGVzYywgJmJ1Zikgd2hpY2ggc2hv dWxkIHJldHVybiB0aGUKKyAgICBudW1iZXIgb2YgYnl0ZXMgb2YgcHJvdmlkZWQgaW5wdXQsIGFu ZCBhIHBvaW50ZXIgdG8gdGhhdCBpbnB1dCBpbiBidWYuICBJZgorLSAgIHRoZXJlIGlzIG5vIGlu cHV0IGF2YWlsYWJsZSwgaW4oKSBtdXN0IHJldHVybiB6ZXJvLS1idWYgaXMgaWdub3JlZCBpbiB0 aGF0CistICAgY2FzZS0tYW5kIGluZmxhdGVCYWNrKCkgd2lsbCByZXR1cm4gYSBidWZmZXIgZXJy b3IuICBpbmZsYXRlQmFjaygpIHdpbGwgY2FsbAorLSAgIG91dChvdXRfZGVzYywgYnVmLCBsZW4p IHRvIHdyaXRlIHRoZSB1bmNvbXByZXNzZWQgZGF0YSBidWZbMC4ubGVuLTFdLiAgb3V0KCkKKy0g ICBzaG91bGQgcmV0dXJuIHplcm8gb24gc3VjY2Vzcywgb3Igbm9uLXplcm8gb24gZmFpbHVyZS4g IElmIG91dCgpIHJldHVybnMKKy0gICBub24temVybywgaW5mbGF0ZUJhY2soKSB3aWxsIHJldHVy biB3aXRoIGFuIGVycm9yLiAgTmVpdGhlciBpbigpIG5vciBvdXQoKQorLSAgIGFyZSBwZXJtaXR0 ZWQgdG8gY2hhbmdlIHRoZSBjb250ZW50cyBvZiB0aGUgd2luZG93IHByb3ZpZGVkIHRvCisrICAg dGhlcmUgaXMgbm8gaW5wdXQgYXZhaWxhYmxlLCBpbigpIG11c3QgcmV0dXJuIHplcm8gLS0gYnVm IGlzIGlnbm9yZWQgaW4gdGhhdAorKyAgIGNhc2UgLS0gYW5kIGluZmxhdGVCYWNrKCkgd2lsbCBy ZXR1cm4gYSBidWZmZXIgZXJyb3IuICBpbmZsYXRlQmFjaygpIHdpbGwKKysgICBjYWxsIG91dChv dXRfZGVzYywgYnVmLCBsZW4pIHRvIHdyaXRlIHRoZSB1bmNvbXByZXNzZWQgZGF0YSBidWZbMC4u bGVuLTFdLgorKyAgIG91dCgpIHNob3VsZCByZXR1cm4gemVybyBvbiBzdWNjZXNzLCBvciBub24t emVybyBvbiBmYWlsdXJlLiAgSWYgb3V0KCkKKysgICByZXR1cm5zIG5vbi16ZXJvLCBpbmZsYXRl QmFjaygpIHdpbGwgcmV0dXJuIHdpdGggYW4gZXJyb3IuICBOZWl0aGVyIGluKCkgbm9yCisrICAg b3V0KCkgYXJlIHBlcm1pdHRlZCB0byBjaGFuZ2UgdGhlIGNvbnRlbnRzIG9mIHRoZSB3aW5kb3cg cHJvdmlkZWQgdG8KKyAgICBpbmZsYXRlQmFja0luaXQoKSwgd2hpY2ggaXMgYWxzbyB0aGUgYnVm ZmVyIHRoYXQgb3V0KCkgdXNlcyB0byB3cml0ZSBmcm9tLgorICAgIFRoZSBsZW5ndGggd3JpdHRl biBieSBvdXQoKSB3aWxsIGJlIGF0IG1vc3QgdGhlIHdpbmRvdyBzaXplLiAgQW55IG5vbi16ZXJv CisgICAgYW1vdW50IG9mIGlucHV0IG1heSBiZSBwcm92aWRlZCBieSBpbigpLgorQEAgLTEwMzUs NyArMTE1OSw3IEBAIFpFWFRFUk4gaW50IFpFWFBPUlQgaW5mbGF0ZUJhY2sgT0YoKHpfc3RyZWFt cCBzdHJtLAorICAgIHVzaW5nIHN0cm0tPm5leHRfaW4gd2hpY2ggd2lsbCBiZSBaX05VTEwgb25s eSBpZiBpbigpIHJldHVybmVkIGFuIGVycm9yLiAgSWYKKyAgICBzdHJtLT5uZXh0X2luIGlzIG5v dCBaX05VTEwsIHRoZW4gdGhlIFpfQlVGX0VSUk9SIHdhcyBkdWUgdG8gb3V0KCkgcmV0dXJuaW5n CisgICAgbm9uLXplcm8uICAoaW4oKSB3aWxsIGFsd2F5cyBiZSBjYWxsZWQgYmVmb3JlIG91dCgp LCBzbyBzdHJtLT5uZXh0X2luIGlzCistICAgYXNzdXJlZCB0byBiZSBkZWZpbmVkIGlmIG91dCgp IHJldHVybnMgbm9uLXplcm8uKSBOb3RlIHRoYXQgaW5mbGF0ZUJhY2soKQorKyAgIGFzc3VyZWQg dG8gYmUgZGVmaW5lZCBpZiBvdXQoKSByZXR1cm5zIG5vbi16ZXJvLikgIE5vdGUgdGhhdCBpbmZs YXRlQmFjaygpCisgICAgY2Fubm90IHJldHVybiBaX09LLgorICovCisgCitAQCAtMTA1Nyw3ICsx MTgxLDcgQEAgWkVYVEVSTiB1TG9uZyBaRVhQT1JUIHpsaWJDb21waWxlRmxhZ3MgT0YoKHZvaWQp KTsKKyAgICAgIDcuNjogc2l6ZSBvZiB6X29mZl90CisgCisgICAgIENvbXBpbGVyLCBhc3NlbWJs ZXIsIGFuZCBkZWJ1ZyBvcHRpb25zOgorLSAgICAgODogREVCVUcKKysgICAgIDg6IFpMSUJfREVC VUcKKyAgICAgIDk6IEFTTVYgb3IgQVNNSU5GIC0tIHVzZSBBU00gY29kZQorICAgICAgMTA6IFpM SUJfV0lOQVBJIC0tIGV4cG9ydGVkIGZ1bmN0aW9ucyB1c2UgdGhlIFdJTkFQSSBjYWxsaW5nIGNv bnZlbnRpb24KKyAgICAgIDExOiAwIChyZXNlcnZlZCkKK0BAIC0xMDg4LDYgKzEyMTIsNyBAQCBa RVhURVJOIHVMb25nIFpFWFBPUlQgemxpYkNvbXBpbGVGbGFncyBPRigodm9pZCkpOworICAgICAg MjctMzE6IDAgKHJlc2VydmVkKQorICAqLworIAorKyNpZm5kZWYgWl9TT0xPCisgCisgICAgICAg ICAgICAgICAgICAgICAgICAgLyogdXRpbGl0eSBmdW5jdGlvbnMgKi8KKyAKK0BAIC0xMTA2LDcg KzEyMzEsOCBAQCBaRVhURVJOIGludCBaRVhQT1JUIGNvbXByZXNzIE9GKChCeXRlZiAqZGVzdCwg ICB1TG9uZ2YgKmRlc3RMZW4sCisgICAgdGhlIGJ5dGUgbGVuZ3RoIG9mIHRoZSBzb3VyY2UgYnVm ZmVyLiAgVXBvbiBlbnRyeSwgZGVzdExlbiBpcyB0aGUgdG90YWwgc2l6ZQorICAgIG9mIHRoZSBk ZXN0aW5hdGlvbiBidWZmZXIsIHdoaWNoIG11c3QgYmUgYXQgbGVhc3QgdGhlIHZhbHVlIHJldHVy bmVkIGJ5CisgICAgY29tcHJlc3NCb3VuZChzb3VyY2VMZW4pLiAgVXBvbiBleGl0LCBkZXN0TGVu IGlzIHRoZSBhY3R1YWwgc2l6ZSBvZiB0aGUKKy0gICBjb21wcmVzc2VkIGJ1ZmZlci4KKysgICBj b21wcmVzc2VkIGRhdGEuICBjb21wcmVzcygpIGlzIGVxdWl2YWxlbnQgdG8gY29tcHJlc3MyKCkg d2l0aCBhIGxldmVsCisrICAgcGFyYW1ldGVyIG9mIFpfREVGQVVMVF9DT01QUkVTU0lPTi4KKyAK KyAgICAgIGNvbXByZXNzIHJldHVybnMgWl9PSyBpZiBzdWNjZXNzLCBaX01FTV9FUlJPUiBpZiB0 aGVyZSB3YXMgbm90CisgICAgZW5vdWdoIG1lbW9yeSwgWl9CVUZfRVJST1IgaWYgdGhlcmUgd2Fz IG5vdCBlbm91Z2ggcm9vbSBpbiB0aGUgb3V0cHV0CitAQCAtMTEyMiw3ICsxMjQ4LDcgQEAgWkVY VEVSTiBpbnQgWkVYUE9SVCBjb21wcmVzczIgT0YoKEJ5dGVmICpkZXN0LCAgIHVMb25nZiAqZGVz dExlbiwKKyAgICBsZW5ndGggb2YgdGhlIHNvdXJjZSBidWZmZXIuICBVcG9uIGVudHJ5LCBkZXN0 TGVuIGlzIHRoZSB0b3RhbCBzaXplIG9mIHRoZQorICAgIGRlc3RpbmF0aW9uIGJ1ZmZlciwgd2hp Y2ggbXVzdCBiZSBhdCBsZWFzdCB0aGUgdmFsdWUgcmV0dXJuZWQgYnkKKyAgICBjb21wcmVzc0Jv dW5kKHNvdXJjZUxlbikuICBVcG9uIGV4aXQsIGRlc3RMZW4gaXMgdGhlIGFjdHVhbCBzaXplIG9m IHRoZQorLSAgIGNvbXByZXNzZWQgYnVmZmVyLgorKyAgIGNvbXByZXNzZWQgZGF0YS4KKyAKKyAg ICAgIGNvbXByZXNzMiByZXR1cm5zIFpfT0sgaWYgc3VjY2VzcywgWl9NRU1fRVJST1IgaWYgdGhl cmUgd2FzIG5vdCBlbm91Z2gKKyAgICBtZW1vcnksIFpfQlVGX0VSUk9SIGlmIHRoZXJlIHdhcyBu b3QgZW5vdWdoIHJvb20gaW4gdGhlIG91dHB1dCBidWZmZXIsCitAQCAtMTE0NSwxMyArMTI3MSwy MiBAQCBaRVhURVJOIGludCBaRVhQT1JUIHVuY29tcHJlc3MgT0YoKEJ5dGVmICpkZXN0LCAgIHVM b25nZiAqZGVzdExlbiwKKyAgICB1bmNvbXByZXNzZWQgZGF0YS4gIChUaGUgc2l6ZSBvZiB0aGUg dW5jb21wcmVzc2VkIGRhdGEgbXVzdCBoYXZlIGJlZW4gc2F2ZWQKKyAgICBwcmV2aW91c2x5IGJ5 IHRoZSBjb21wcmVzc29yIGFuZCB0cmFuc21pdHRlZCB0byB0aGUgZGVjb21wcmVzc29yIGJ5IHNv bWUKKyAgICBtZWNoYW5pc20gb3V0c2lkZSB0aGUgc2NvcGUgb2YgdGhpcyBjb21wcmVzc2lvbiBs aWJyYXJ5LikgVXBvbiBleGl0LCBkZXN0TGVuCistICAgaXMgdGhlIGFjdHVhbCBzaXplIG9mIHRo ZSB1bmNvbXByZXNzZWQgYnVmZmVyLgorKyAgIGlzIHRoZSBhY3R1YWwgc2l6ZSBvZiB0aGUgdW5j b21wcmVzc2VkIGRhdGEuCisgCisgICAgICB1bmNvbXByZXNzIHJldHVybnMgWl9PSyBpZiBzdWNj ZXNzLCBaX01FTV9FUlJPUiBpZiB0aGVyZSB3YXMgbm90CisgICAgZW5vdWdoIG1lbW9yeSwgWl9C VUZfRVJST1IgaWYgdGhlcmUgd2FzIG5vdCBlbm91Z2ggcm9vbSBpbiB0aGUgb3V0cHV0CistICAg YnVmZmVyLCBvciBaX0RBVEFfRVJST1IgaWYgdGhlIGlucHV0IGRhdGEgd2FzIGNvcnJ1cHRlZCBv ciBpbmNvbXBsZXRlLgorKyAgIGJ1ZmZlciwgb3IgWl9EQVRBX0VSUk9SIGlmIHRoZSBpbnB1dCBk YXRhIHdhcyBjb3JydXB0ZWQgb3IgaW5jb21wbGV0ZS4gIEluCisrICAgdGhlIGNhc2Ugd2hlcmUg dGhlcmUgaXMgbm90IGVub3VnaCByb29tLCB1bmNvbXByZXNzKCkgd2lsbCBmaWxsIHRoZSBvdXRw dXQKKysgICBidWZmZXIgd2l0aCB0aGUgdW5jb21wcmVzc2VkIGRhdGEgdXAgdG8gdGhhdCBwb2lu dC4KKyAqLworIAorK1pFWFRFUk4gaW50IFpFWFBPUlQgdW5jb21wcmVzczIgT0YoKEJ5dGVmICpk ZXN0LCAgIHVMb25nZiAqZGVzdExlbiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjb25zdCBCeXRlZiAqc291cmNlLCB1TG9uZyAqc291cmNlTGVuKSk7CisrLyoKKysgICAg IFNhbWUgYXMgdW5jb21wcmVzcywgZXhjZXB0IHRoYXQgc291cmNlTGVuIGlzIGEgcG9pbnRlciwg d2hlcmUgdGhlCisrICAgbGVuZ3RoIG9mIHRoZSBzb3VyY2UgaXMgKnNvdXJjZUxlbi4gIE9uIHJl dHVybiwgKnNvdXJjZUxlbiBpcyB0aGUgbnVtYmVyIG9mCisrICAgc291cmNlIGJ5dGVzIGNvbnN1 bWVkLgorKyovCisgCisgICAgICAgICAgICAgICAgICAgICAgICAgLyogZ3ppcCBmaWxlIGFjY2Vz cyBmdW5jdGlvbnMgKi8KKyAKK0BAIC0xMTYyLDcgKzEyOTcsNyBAQCBaRVhURVJOIGludCBaRVhQ T1JUIHVuY29tcHJlc3MgT0YoKEJ5dGVmICpkZXN0LCAgIHVMb25nZiAqZGVzdExlbiwKKyAgICB3 cmFwcGVyLCBkb2N1bWVudGVkIGluIFJGQyAxOTUyLCB3cmFwcGVkIGFyb3VuZCBhIGRlZmxhdGUg c3RyZWFtLgorICovCisgCistdHlwZWRlZiB2b2lkcCBnekZpbGU7ICAgICAgIC8qIG9wYXF1ZSBn emlwIGZpbGUgZGVzY3JpcHRvciAqLworK3R5cGVkZWYgc3RydWN0IGd6RmlsZV9zICpnekZpbGU7 ICAgIC8qIHNlbWktb3BhcXVlIGd6aXAgZmlsZSBkZXNjcmlwdG9yICovCisgCisgLyoKKyBaRVhU RVJOIGd6RmlsZSBaRVhQT1JUIGd6b3BlbiBPRigoY29uc3QgY2hhciAqcGF0aCwgY29uc3QgY2hh ciAqbW9kZSkpOworQEAgLTExNzIsMTMgKzEzMDcsMjggQEAgWkVYVEVSTiBnekZpbGUgWkVYUE9S VCBnem9wZW4gT0YoKGNvbnN0IGNoYXIgKnBhdGgsIGNvbnN0IGNoYXIgKm1vZGUpKTsKKyAgICBh IHN0cmF0ZWd5OiAnZicgZm9yIGZpbHRlcmVkIGRhdGEgYXMgaW4gIndiNmYiLCAnaCcgZm9yIEh1 ZmZtYW4tb25seQorICAgIGNvbXByZXNzaW9uIGFzIGluICJ3YjFoIiwgJ1InIGZvciBydW4tbGVu Z3RoIGVuY29kaW5nIGFzIGluICJ3YjFSIiwgb3IgJ0YnCisgICAgZm9yIGZpeGVkIGNvZGUgY29t cHJlc3Npb24gYXMgaW4gIndiOUYiLiAgKFNlZSB0aGUgZGVzY3JpcHRpb24gb2YKKy0gICBkZWZs YXRlSW5pdDIgZm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHN0cmF0ZWd5IHBhcmFtZXRl ci4pIEFsc28gImEiCistICAgY2FuIGJlIHVzZWQgaW5zdGVhZCBvZiAidyIgdG8gcmVxdWVzdCB0 aGF0IHRoZSBnemlwIHN0cmVhbSB0aGF0IHdpbGwgYmUKKy0gICB3cml0dGVuIGJlIGFwcGVuZGVk IHRvIHRoZSBmaWxlLiAgIisiIHdpbGwgcmVzdWx0IGluIGFuIGVycm9yLCBzaW5jZSByZWFkaW5n CistICAgYW5kIHdyaXRpbmcgdG8gdGhlIHNhbWUgZ3ppcCBmaWxlIGlzIG5vdCBzdXBwb3J0ZWQu CisrICAgZGVmbGF0ZUluaXQyIGZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBzdHJhdGVn eSBwYXJhbWV0ZXIuKSAgJ1QnIHdpbGwKKysgICByZXF1ZXN0IHRyYW5zcGFyZW50IHdyaXRpbmcg b3IgYXBwZW5kaW5nIHdpdGggbm8gY29tcHJlc3Npb24gYW5kIG5vdCB1c2luZworKyAgIHRoZSBn emlwIGZvcm1hdC4KKysKKysgICAgICJhIiBjYW4gYmUgdXNlZCBpbnN0ZWFkIG9mICJ3IiB0byBy ZXF1ZXN0IHRoYXQgdGhlIGd6aXAgc3RyZWFtIHRoYXQgd2lsbAorKyAgIGJlIHdyaXR0ZW4gYmUg YXBwZW5kZWQgdG8gdGhlIGZpbGUuICAiKyIgd2lsbCByZXN1bHQgaW4gYW4gZXJyb3IsIHNpbmNl CisrICAgcmVhZGluZyBhbmQgd3JpdGluZyB0byB0aGUgc2FtZSBnemlwIGZpbGUgaXMgbm90IHN1 cHBvcnRlZC4gIFRoZSBhZGRpdGlvbiBvZgorKyAgICJ4IiB3aGVuIHdyaXRpbmcgd2lsbCBjcmVh dGUgdGhlIGZpbGUgZXhjbHVzaXZlbHksIHdoaWNoIGZhaWxzIGlmIHRoZSBmaWxlCisrICAgYWxy ZWFkeSBleGlzdHMuICBPbiBzeXN0ZW1zIHRoYXQgc3VwcG9ydCBpdCwgdGhlIGFkZGl0aW9uIG9m ICJlIiB3aGVuCisrICAgcmVhZGluZyBvciB3cml0aW5nIHdpbGwgc2V0IHRoZSBmbGFnIHRvIGNs b3NlIHRoZSBmaWxlIG9uIGFuIGV4ZWN2ZSgpIGNhbGwuCisrCisrICAgICBUaGVzZSBmdW5jdGlv bnMsIGFzIHdlbGwgYXMgZ3ppcCwgd2lsbCByZWFkIGFuZCBkZWNvZGUgYSBzZXF1ZW5jZSBvZiBn emlwCisrICAgc3RyZWFtcyBpbiBhIGZpbGUuICBUaGUgYXBwZW5kIGZ1bmN0aW9uIG9mIGd6b3Bl bigpIGNhbiBiZSB1c2VkIHRvIGNyZWF0ZQorKyAgIHN1Y2ggYSBmaWxlLiAgKEFsc28gc2VlIGd6 Zmx1c2goKSBmb3IgYW5vdGhlciB3YXkgdG8gZG8gdGhpcy4pICBXaGVuCisrICAgYXBwZW5kaW5n LCBnem9wZW4gZG9lcyBub3QgdGVzdCB3aGV0aGVyIHRoZSBmaWxlIGJlZ2lucyB3aXRoIGEgZ3pp cCBzdHJlYW0sCisrICAgbm9yIGRvZXMgaXQgbG9vayBmb3IgdGhlIGVuZCBvZiB0aGUgZ3ppcCBz dHJlYW1zIHRvIGJlZ2luIGFwcGVuZGluZy4gIGd6b3BlbgorKyAgIHdpbGwgc2ltcGx5IGFwcGVu ZCBhIGd6aXAgc3RyZWFtIHRvIHRoZSBleGlzdGluZyBmaWxlLgorIAorICAgICAgZ3pvcGVuIGNh biBiZSB1c2VkIHRvIHJlYWQgYSBmaWxlIHdoaWNoIGlzIG5vdCBpbiBnemlwIGZvcm1hdDsgaW4g dGhpcworLSAgIGNhc2UgZ3pyZWFkIHdpbGwgZGlyZWN0bHkgcmVhZCBmcm9tIHRoZSBmaWxlIHdp dGhvdXQgZGVjb21wcmVzc2lvbi4KKysgICBjYXNlIGd6cmVhZCB3aWxsIGRpcmVjdGx5IHJlYWQg ZnJvbSB0aGUgZmlsZSB3aXRob3V0IGRlY29tcHJlc3Npb24uICBXaGVuCisrICAgcmVhZGluZywg dGhpcyB3aWxsIGJlIGRldGVjdGVkIGF1dG9tYXRpY2FsbHkgYnkgbG9va2luZyBmb3IgdGhlIG1h Z2ljIHR3by0KKysgICBieXRlIGd6aXAgaGVhZGVyLgorIAorICAgICAgZ3pvcGVuIHJldHVybnMg TlVMTCBpZiB0aGUgZmlsZSBjb3VsZCBub3QgYmUgb3BlbmVkLCBpZiB0aGVyZSB3YXMKKyAgICBp bnN1ZmZpY2llbnQgbWVtb3J5IHRvIGFsbG9jYXRlIHRoZSBnekZpbGUgc3RhdGUsIG9yIGlmIGFu IGludmFsaWQgbW9kZSB3YXMKK0BAIC0xMTk3LDcgKzEzNDcsMTEgQEAgWkVYVEVSTiBnekZpbGUg WkVYUE9SVCBnemRvcGVuIE9GKChpbnQgZmQsIGNvbnN0IGNoYXIgKm1vZGUpKTsKKyAgICBkZXNj cmlwdG9yIGZkLCBqdXN0IGxpa2UgZmNsb3NlKGZkb3BlbihmZCwgbW9kZSkpIGNsb3NlcyB0aGUg ZmlsZSBkZXNjcmlwdG9yCisgICAgZmQuICBJZiB5b3Ugd2FudCB0byBrZWVwIGZkIG9wZW4sIHVz ZSBmZCA9IGR1cChmZF9rZWVwKTsgZ3ogPSBnemRvcGVuKGZkLAorICAgIG1vZGUpOy4gIFRoZSBk dXBsaWNhdGVkIGRlc2NyaXB0b3Igc2hvdWxkIGJlIHNhdmVkIHRvIGF2b2lkIGEgbGVhaywgc2lu Y2UKKy0gICBnemRvcGVuIGRvZXMgbm90IGNsb3NlIGZkIGlmIGl0IGZhaWxzLgorKyAgIGd6ZG9w ZW4gZG9lcyBub3QgY2xvc2UgZmQgaWYgaXQgZmFpbHMuICBJZiB5b3UgYXJlIHVzaW5nIGZpbGVu bygpIHRvIGdldCB0aGUKKysgICBmaWxlIGRlc2NyaXB0b3IgZnJvbSBhIEZJTEUgKiwgdGhlbiB5 b3Ugd2lsbCBoYXZlIHRvIHVzZSBkdXAoKSB0byBhdm9pZAorKyAgIGRvdWJsZS1jbG9zZSgpaW5n IHRoZSBmaWxlIGRlc2NyaXB0b3IuICBCb3RoIGd6Y2xvc2UoKSBhbmQgZmNsb3NlKCkgd2lsbAor KyAgIGNsb3NlIHRoZSBhc3NvY2lhdGVkIGZpbGUgZGVzY3JpcHRvciwgc28gdGhleSBuZWVkIHRv IGhhdmUgZGlmZmVyZW50IGZpbGUKKysgICBkZXNjcmlwdG9ycy4KKyAKKyAgICAgIGd6ZG9wZW4g cmV0dXJucyBOVUxMIGlmIHRoZXJlIHdhcyBpbnN1ZmZpY2llbnQgbWVtb3J5IHRvIGFsbG9jYXRl IHRoZQorICAgIGd6RmlsZSBzdGF0ZSwgaWYgYW4gaW52YWxpZCBtb2RlIHdhcyBzcGVjaWZpZWQg KGFuICdyJywgJ3cnLCBvciAnYScgd2FzIG5vdAorQEAgLTEyMTIsMTAgKzEzNjYsOSBAQCBaRVhU RVJOIGludCBaRVhQT1JUIGd6YnVmZmVyIE9GKChnekZpbGUgZmlsZSwgdW5zaWduZWQgc2l6ZSkp OworICAgIGRlZmF1bHQgYnVmZmVyIHNpemUgaXMgODE5MiBieXRlcy4gIFRoaXMgZnVuY3Rpb24g bXVzdCBiZSBjYWxsZWQgYWZ0ZXIKKyAgICBnem9wZW4oKSBvciBnemRvcGVuKCksIGFuZCBiZWZv cmUgYW55IG90aGVyIGNhbGxzIHRoYXQgcmVhZCBvciB3cml0ZSB0aGUKKyAgICBmaWxlLiAgVGhl IGJ1ZmZlciBtZW1vcnkgYWxsb2NhdGlvbiBpcyBhbHdheXMgZGVmZXJyZWQgdG8gdGhlIGZpcnN0 IHJlYWQgb3IKKy0gICB3cml0ZS4gIFR3byBidWZmZXJzIGFyZSBhbGxvY2F0ZWQsIGVpdGhlciBi b3RoIG9mIHRoZSBzcGVjaWZpZWQgc2l6ZSB3aGVuCistICAgd3JpdGluZywgb3Igb25lIG9mIHRo ZSBzcGVjaWZpZWQgc2l6ZSBhbmQgdGhlIG90aGVyIHR3aWNlIHRoYXQgc2l6ZSB3aGVuCistICAg cmVhZGluZy4gIEEgbGFyZ2VyIGJ1ZmZlciBzaXplIG9mLCBmb3IgZXhhbXBsZSwgNjRLIG9yIDEy OEsgYnl0ZXMgd2lsbAorLSAgIG5vdGljZWFibHkgaW5jcmVhc2UgdGhlIHNwZWVkIG9mIGRlY29t cHJlc3Npb24gKHJlYWRpbmcpLgorKyAgIHdyaXRlLiAgVGhyZWUgdGltZXMgdGhhdCBzaXplIGlu IGJ1ZmZlciBzcGFjZSBpcyBhbGxvY2F0ZWQuICBBIGxhcmdlciBidWZmZXIKKysgICBzaXplIG9m LCBmb3IgZXhhbXBsZSwgNjRLIG9yIDEyOEsgYnl0ZXMgd2lsbCBub3RpY2VhYmx5IGluY3JlYXNl IHRoZSBzcGVlZAorKyAgIG9mIGRlY29tcHJlc3Npb24gKHJlYWRpbmcpLgorIAorICAgICAgVGhl IG5ldyBidWZmZXIgc2l6ZSBhbHNvIGFmZmVjdHMgdGhlIG1heGltdW0gbGVuZ3RoIGZvciBnenBy aW50ZigpLgorIAorQEAgLTEyMjYsMjYgKzEzNzksNjggQEAgWkVYVEVSTiBpbnQgWkVYUE9SVCBn emJ1ZmZlciBPRigoZ3pGaWxlIGZpbGUsIHVuc2lnbmVkIHNpemUpKTsKKyBaRVhURVJOIGludCBa RVhQT1JUIGd6c2V0cGFyYW1zIE9GKChnekZpbGUgZmlsZSwgaW50IGxldmVsLCBpbnQgc3RyYXRl Z3kpKTsKKyAvKgorICAgICAgRHluYW1pY2FsbHkgdXBkYXRlIHRoZSBjb21wcmVzc2lvbiBsZXZl bCBvciBzdHJhdGVneS4gIFNlZSB0aGUgZGVzY3JpcHRpb24KKy0gICBvZiBkZWZsYXRlSW5pdDIg Zm9yIHRoZSBtZWFuaW5nIG9mIHRoZXNlIHBhcmFtZXRlcnMuCisrICAgb2YgZGVmbGF0ZUluaXQy IGZvciB0aGUgbWVhbmluZyBvZiB0aGVzZSBwYXJhbWV0ZXJzLiAgUHJldmlvdXNseSBwcm92aWRl ZAorKyAgIGRhdGEgaXMgZmx1c2hlZCBiZWZvcmUgdGhlIHBhcmFtZXRlciBjaGFuZ2UuCisgCist ICAgICBnenNldHBhcmFtcyByZXR1cm5zIFpfT0sgaWYgc3VjY2Vzcywgb3IgWl9TVFJFQU1fRVJS T1IgaWYgdGhlIGZpbGUgd2FzIG5vdAorLSAgIG9wZW5lZCBmb3Igd3JpdGluZy4KKysgICAgIGd6 c2V0cGFyYW1zIHJldHVybnMgWl9PSyBpZiBzdWNjZXNzLCBaX1NUUkVBTV9FUlJPUiBpZiB0aGUg ZmlsZSB3YXMgbm90CisrICAgb3BlbmVkIGZvciB3cml0aW5nLCBaX0VSUk5PIGlmIHRoZXJlIGlz IGFuIGVycm9yIHdyaXRpbmcgdGhlIGZsdXNoZWQgZGF0YSwKKysgICBvciBaX01FTV9FUlJPUiBp ZiB0aGVyZSBpcyBhIG1lbW9yeSBhbGxvY2F0aW9uIGVycm9yLgorICovCisgCisgWkVYVEVSTiBp bnQgWkVYUE9SVCBnenJlYWQgT0YoKGd6RmlsZSBmaWxlLCB2b2lkcCBidWYsIHVuc2lnbmVkIGxl bikpOworIC8qCisgICAgICBSZWFkcyB0aGUgZ2l2ZW4gbnVtYmVyIG9mIHVuY29tcHJlc3NlZCBi eXRlcyBmcm9tIHRoZSBjb21wcmVzc2VkIGZpbGUuICBJZgorLSAgIHRoZSBpbnB1dCBmaWxlIHdh cyBub3QgaW4gZ3ppcCBmb3JtYXQsIGd6cmVhZCBjb3BpZXMgdGhlIGdpdmVuIG51bWJlciBvZgor LSAgIGJ5dGVzIGludG8gdGhlIGJ1ZmZlci4KKysgICB0aGUgaW5wdXQgZmlsZSBpcyBub3QgaW4g Z3ppcCBmb3JtYXQsIGd6cmVhZCBjb3BpZXMgdGhlIGdpdmVuIG51bWJlciBvZgorKyAgIGJ5dGVz IGludG8gdGhlIGJ1ZmZlciBkaXJlY3RseSBmcm9tIHRoZSBmaWxlLgorIAorICAgICAgQWZ0ZXIg cmVhY2hpbmcgdGhlIGVuZCBvZiBhIGd6aXAgc3RyZWFtIGluIHRoZSBpbnB1dCwgZ3pyZWFkIHdp bGwgY29udGludWUKKy0gICB0byByZWFkLCBsb29raW5nIGZvciBhbm90aGVyIGd6aXAgc3RyZWFt LCBvciBmYWlsaW5nIHRoYXQsIHJlYWRpbmcgdGhlIHJlc3QKKy0gICBvZiB0aGUgaW5wdXQgZmls ZSBkaXJlY3RseSB3aXRob3V0IGRlY29tcHJlc3Npb24uICBUaGUgZW50aXJlIGlucHV0IGZpbGUK Ky0gICB3aWxsIGJlIHJlYWQgaWYgZ3pyZWFkIGlzIGNhbGxlZCB1bnRpbCBpdCByZXR1cm5zIGxl c3MgdGhhbiB0aGUgcmVxdWVzdGVkCistICAgbGVuLgorKyAgIHRvIHJlYWQsIGxvb2tpbmcgZm9y IGFub3RoZXIgZ3ppcCBzdHJlYW0uICBBbnkgbnVtYmVyIG9mIGd6aXAgc3RyZWFtcyBtYXkgYmUK KysgICBjb25jYXRlbmF0ZWQgaW4gdGhlIGlucHV0IGZpbGUsIGFuZCB3aWxsIGFsbCBiZSBkZWNv bXByZXNzZWQgYnkgZ3pyZWFkKCkuCisrICAgSWYgc29tZXRoaW5nIG90aGVyIHRoYW4gYSBnemlw IHN0cmVhbSBpcyBlbmNvdW50ZXJlZCBhZnRlciBhIGd6aXAgc3RyZWFtLAorKyAgIHRoYXQgcmVt YWluaW5nIHRyYWlsaW5nIGdhcmJhZ2UgaXMgaWdub3JlZCAoYW5kIG5vIGVycm9yIGlzIHJldHVy bmVkKS4KKysKKysgICAgIGd6cmVhZCBjYW4gYmUgdXNlZCB0byByZWFkIGEgZ3ppcCBmaWxlIHRo YXQgaXMgYmVpbmcgY29uY3VycmVudGx5IHdyaXR0ZW4uCisrICAgVXBvbiByZWFjaGluZyB0aGUg ZW5kIG9mIHRoZSBpbnB1dCwgZ3pyZWFkIHdpbGwgcmV0dXJuIHdpdGggdGhlIGF2YWlsYWJsZQor KyAgIGRhdGEuICBJZiB0aGUgZXJyb3IgY29kZSByZXR1cm5lZCBieSBnemVycm9yIGlzIFpfT0sg b3IgWl9CVUZfRVJST1IsIHRoZW4KKysgICBnemNsZWFyZXJyIGNhbiBiZSB1c2VkIHRvIGNsZWFy IHRoZSBlbmQgb2YgZmlsZSBpbmRpY2F0b3IgaW4gb3JkZXIgdG8gcGVybWl0CisrICAgZ3pyZWFk IHRvIGJlIHRyaWVkIGFnYWluLiAgWl9PSyBpbmRpY2F0ZXMgdGhhdCBhIGd6aXAgc3RyZWFtIHdh cyBjb21wbGV0ZWQKKysgICBvbiB0aGUgbGFzdCBnenJlYWQuICBaX0JVRl9FUlJPUiBpbmRpY2F0 ZXMgdGhhdCB0aGUgaW5wdXQgZmlsZSBlbmRlZCBpbiB0aGUKKysgICBtaWRkbGUgb2YgYSBnemlw IHN0cmVhbS4gIE5vdGUgdGhhdCBnenJlYWQgZG9lcyBub3QgcmV0dXJuIC0xIGluIHRoZSBldmVu dAorKyAgIG9mIGFuIGluY29tcGxldGUgZ3ppcCBzdHJlYW0uICBUaGlzIGVycm9yIGlzIGRlZmVy cmVkIHVudGlsIGd6Y2xvc2UoKSwgd2hpY2gKKysgICB3aWxsIHJldHVybiBaX0JVRl9FUlJPUiBp ZiB0aGUgbGFzdCBnenJlYWQgZW5kZWQgaW4gdGhlIG1pZGRsZSBvZiBhIGd6aXAKKysgICBzdHJl YW0uICBBbHRlcm5hdGl2ZWx5LCBnemVycm9yIGNhbiBiZSB1c2VkIGJlZm9yZSBnemNsb3NlIHRv IGRldGVjdCB0aGlzCisrICAgY2FzZS4KKyAKKyAgICAgIGd6cmVhZCByZXR1cm5zIHRoZSBudW1i ZXIgb2YgdW5jb21wcmVzc2VkIGJ5dGVzIGFjdHVhbGx5IHJlYWQsIGxlc3MgdGhhbgorLSAgIGxl biBmb3IgZW5kIG9mIGZpbGUsIG9yIC0xIGZvciBlcnJvci4KKysgICBsZW4gZm9yIGVuZCBvZiBm aWxlLCBvciAtMSBmb3IgZXJyb3IuICBJZiBsZW4gaXMgdG9vIGxhcmdlIHRvIGZpdCBpbiBhbiBp bnQsCisrICAgdGhlbiBub3RoaW5nIGlzIHJlYWQsIC0xIGlzIHJldHVybmVkLCBhbmQgdGhlIGVy cm9yIHN0YXRlIGlzIHNldCB0bworKyAgIFpfU1RSRUFNX0VSUk9SLgorKyovCisrCisrWkVYVEVS TiB6X3NpemVfdCBaRVhQT1JUIGd6ZnJlYWQgT0YoKHZvaWRwIGJ1Ziwgel9zaXplX3Qgc2l6ZSwg el9zaXplX3Qgbml0ZW1zLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn ekZpbGUgZmlsZSkpOworKy8qCisrICAgICBSZWFkIHVwIHRvIG5pdGVtcyBpdGVtcyBvZiBzaXpl IHNpemUgZnJvbSBmaWxlIHRvIGJ1Ziwgb3RoZXJ3aXNlIG9wZXJhdGluZworKyAgIGFzIGd6cmVh ZCgpIGRvZXMuICBUaGlzIGR1cGxpY2F0ZXMgdGhlIGludGVyZmFjZSBvZiBzdGRpbydzIGZyZWFk KCksIHdpdGgKKysgICBzaXplX3QgcmVxdWVzdCBhbmQgcmV0dXJuIHR5cGVzLiAgSWYgdGhlIGxp YnJhcnkgZGVmaW5lcyBzaXplX3QsIHRoZW4KKysgICB6X3NpemVfdCBpcyBpZGVudGljYWwgdG8g c2l6ZV90LiAgSWYgbm90LCB0aGVuIHpfc2l6ZV90IGlzIGFuIHVuc2lnbmVkCisrICAgaW50ZWdl ciB0eXBlIHRoYXQgY2FuIGNvbnRhaW4gYSBwb2ludGVyLgorKworKyAgICAgZ3pmcmVhZCgpIHJl dHVybnMgdGhlIG51bWJlciBvZiBmdWxsIGl0ZW1zIHJlYWQgb2Ygc2l6ZSBzaXplLCBvciB6ZXJv IGlmCisrICAgdGhlIGVuZCBvZiB0aGUgZmlsZSB3YXMgcmVhY2hlZCBhbmQgYSBmdWxsIGl0ZW0g Y291bGQgbm90IGJlIHJlYWQsIG9yIGlmCisrICAgdGhlcmUgd2FzIGFuIGVycm9yLiAgZ3plcnJv cigpIG11c3QgYmUgY29uc3VsdGVkIGlmIHplcm8gaXMgcmV0dXJuZWQgaW4KKysgICBvcmRlciB0 byBkZXRlcm1pbmUgaWYgdGhlcmUgd2FzIGFuIGVycm9yLiAgSWYgdGhlIG11bHRpcGxpY2F0aW9u IG9mIHNpemUgYW5kCisrICAgbml0ZW1zIG92ZXJmbG93cywgaS5lLiB0aGUgcHJvZHVjdCBkb2Vz IG5vdCBmaXQgaW4gYSB6X3NpemVfdCwgdGhlbiBub3RoaW5nCisrICAgaXMgcmVhZCwgemVybyBp cyByZXR1cm5lZCwgYW5kIHRoZSBlcnJvciBzdGF0ZSBpcyBzZXQgdG8gWl9TVFJFQU1fRVJST1Iu CisrCisrICAgICBJbiB0aGUgZXZlbnQgdGhhdCB0aGUgZW5kIG9mIGZpbGUgaXMgcmVhY2hlZCBh bmQgb25seSBhIHBhcnRpYWwgaXRlbSBpcworKyAgIGF2YWlsYWJsZSBhdCB0aGUgZW5kLCBpLmUu IHRoZSByZW1haW5pbmcgdW5jb21wcmVzc2VkIGRhdGEgbGVuZ3RoIGlzIG5vdCBhCisrICAgbXVs dGlwbGUgb2Ygc2l6ZSwgdGhlbiB0aGUgZmluYWwgcGFydGlhbCBpdGVtIGlzIG5ldmV0aGVsZXNz IHJlYWQgaW50byBidWYKKysgICBhbmQgdGhlIGVuZC1vZi1maWxlIGZsYWcgaXMgc2V0LiAgVGhl IGxlbmd0aCBvZiB0aGUgcGFydGlhbCBpdGVtIHJlYWQgaXMgbm90CisrICAgcHJvdmlkZWQsIGJ1 dCBjb3VsZCBiZSBpbmZlcnJlZCBmcm9tIHRoZSByZXN1bHQgb2YgZ3p0ZWxsKCkuICBUaGlzIGJl aGF2aW9yCisrICAgaXMgdGhlIHNhbWUgYXMgdGhlIGJlaGF2aW9yIG9mIGZyZWFkKCkgaW1wbGVt ZW50YXRpb25zIGluIGNvbW1vbiBsaWJyYXJpZXMsCisrICAgYnV0IGl0IHByZXZlbnRzIHRoZSBk aXJlY3QgdXNlIG9mIGd6ZnJlYWQoKSB0byByZWFkIGEgY29uY3VycmVudGx5IHdyaXR0ZW4KKysg ICBmaWxlLCByZXNldGluZyBhbmQgcmV0cnlpbmcgb24gZW5kLW9mLWZpbGUsIHdoZW4gc2l6ZSBp cyBub3QgMS4KKyAqLworIAorIFpFWFRFUk4gaW50IFpFWFBPUlQgZ3p3cml0ZSBPRigoZ3pGaWxl IGZpbGUsCitAQCAtMTI1NiwxOSArMTQ1MSwzMyBAQCBaRVhURVJOIGludCBaRVhQT1JUIGd6d3Jp dGUgT0YoKGd6RmlsZSBmaWxlLAorICAgIGVycm9yLgorICovCisgCistWkVYVEVSTiBpbnQgWkVY UE9SVFZBIGd6cHJpbnRmIE9GKChnekZpbGUgZmlsZSwgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4p KTsKKytaRVhURVJOIHpfc2l6ZV90IFpFWFBPUlQgZ3pmd3JpdGUgT0YoKHZvaWRwYyBidWYsIHpf c2l6ZV90IHNpemUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6X3Np emVfdCBuaXRlbXMsIGd6RmlsZSBmaWxlKSk7CisrLyoKKysgICAgIGd6ZndyaXRlKCkgd3JpdGVz IG5pdGVtcyBpdGVtcyBvZiBzaXplIHNpemUgZnJvbSBidWYgdG8gZmlsZSwgZHVwbGljYXRpbmcK KysgICB0aGUgaW50ZXJmYWNlIG9mIHN0ZGlvJ3MgZndyaXRlKCksIHdpdGggc2l6ZV90IHJlcXVl c3QgYW5kIHJldHVybiB0eXBlcy4gIElmCisrICAgdGhlIGxpYnJhcnkgZGVmaW5lcyBzaXplX3Qs IHRoZW4gel9zaXplX3QgaXMgaWRlbnRpY2FsIHRvIHNpemVfdC4gIElmIG5vdCwKKysgICB0aGVu IHpfc2l6ZV90IGlzIGFuIHVuc2lnbmVkIGludGVnZXIgdHlwZSB0aGF0IGNhbiBjb250YWluIGEg cG9pbnRlci4KKysKKysgICAgIGd6ZndyaXRlKCkgcmV0dXJucyB0aGUgbnVtYmVyIG9mIGZ1bGwg aXRlbXMgd3JpdHRlbiBvZiBzaXplIHNpemUsIG9yIHplcm8KKysgICBpZiB0aGVyZSB3YXMgYW4g ZXJyb3IuICBJZiB0aGUgbXVsdGlwbGljYXRpb24gb2Ygc2l6ZSBhbmQgbml0ZW1zIG92ZXJmbG93 cywKKysgICBpLmUuIHRoZSBwcm9kdWN0IGRvZXMgbm90IGZpdCBpbiBhIHpfc2l6ZV90LCB0aGVu IG5vdGhpbmcgaXMgd3JpdHRlbiwgemVybworKyAgIGlzIHJldHVybmVkLCBhbmQgdGhlIGVycm9y IHN0YXRlIGlzIHNldCB0byBaX1NUUkVBTV9FUlJPUi4KKysqLworKworK1pFWFRFUk4gaW50IFpF WFBPUlRWQSBnenByaW50ZiBaX0FSRygoZ3pGaWxlIGZpbGUsIGNvbnN0IGNoYXIgKmZvcm1hdCwg Li4uKSk7CisgLyoKKyAgICAgIENvbnZlcnRzLCBmb3JtYXRzLCBhbmQgd3JpdGVzIHRoZSBhcmd1 bWVudHMgdG8gdGhlIGNvbXByZXNzZWQgZmlsZSB1bmRlcgorICAgIGNvbnRyb2wgb2YgdGhlIGZv cm1hdCBzdHJpbmcsIGFzIGluIGZwcmludGYuICBnenByaW50ZiByZXR1cm5zIHRoZSBudW1iZXIg b2YKKy0gICB1bmNvbXByZXNzZWQgYnl0ZXMgYWN0dWFsbHkgd3JpdHRlbiwgb3IgMCBpbiBjYXNl IG9mIGVycm9yLiAgVGhlIG51bWJlciBvZgorLSAgIHVuY29tcHJlc3NlZCBieXRlcyB3cml0dGVu IGlzIGxpbWl0ZWQgdG8gODE5MSwgb3Igb25lIGxlc3MgdGhhbiB0aGUgYnVmZmVyCistICAgc2l6 ZSBnaXZlbiB0byBnemJ1ZmZlcigpLiAgVGhlIGNhbGxlciBzaG91bGQgYXNzdXJlIHRoYXQgdGhp cyBsaW1pdCBpcyBub3QKKy0gICBleGNlZWRlZC4gIElmIGl0IGlzIGV4Y2VlZGVkLCB0aGVuIGd6 cHJpbnRmKCkgd2lsbCByZXR1cm4gYW4gZXJyb3IgKDApIHdpdGgKKy0gICBub3RoaW5nIHdyaXR0 ZW4uICBJbiB0aGlzIGNhc2UsIHRoZXJlIG1heSBhbHNvIGJlIGEgYnVmZmVyIG92ZXJmbG93IHdp dGgKKy0gICB1bnByZWRpY3RhYmxlIGNvbnNlcXVlbmNlcywgd2hpY2ggaXMgcG9zc2libGUgb25s eSBpZiB6bGliIHdhcyBjb21waWxlZCB3aXRoCistICAgdGhlIGluc2VjdXJlIGZ1bmN0aW9ucyBz cHJpbnRmKCkgb3IgdnNwcmludGYoKSBiZWNhdXNlIHRoZSBzZWN1cmUgc25wcmludGYoKQorLSAg IG9yIHZzbnByaW50ZigpIGZ1bmN0aW9ucyB3ZXJlIG5vdCBhdmFpbGFibGUuICBUaGlzIGNhbiBi ZSBkZXRlcm1pbmVkIHVzaW5nCistICAgemxpYkNvbXBpbGVGbGFncygpLgorKyAgIHVuY29tcHJl c3NlZCBieXRlcyBhY3R1YWxseSB3cml0dGVuLCBvciBhIG5lZ2F0aXZlIHpsaWIgZXJyb3IgY29k ZSBpbiBjYXNlCisrICAgb2YgZXJyb3IuICBUaGUgbnVtYmVyIG9mIHVuY29tcHJlc3NlZCBieXRl cyB3cml0dGVuIGlzIGxpbWl0ZWQgdG8gODE5MSwgb3IKKysgICBvbmUgbGVzcyB0aGFuIHRoZSBi dWZmZXIgc2l6ZSBnaXZlbiB0byBnemJ1ZmZlcigpLiAgVGhlIGNhbGxlciBzaG91bGQgYXNzdXJl CisrICAgdGhhdCB0aGlzIGxpbWl0IGlzIG5vdCBleGNlZWRlZC4gIElmIGl0IGlzIGV4Y2VlZGVk LCB0aGVuIGd6cHJpbnRmKCkgd2lsbAorKyAgIHJldHVybiBhbiBlcnJvciAoMCkgd2l0aCBub3Ro aW5nIHdyaXR0ZW4uICBJbiB0aGlzIGNhc2UsIHRoZXJlIG1heSBhbHNvIGJlIGEKKysgICBidWZm ZXIgb3ZlcmZsb3cgd2l0aCB1bnByZWRpY3RhYmxlIGNvbnNlcXVlbmNlcywgd2hpY2ggaXMgcG9z c2libGUgb25seSBpZgorKyAgIHpsaWIgd2FzIGNvbXBpbGVkIHdpdGggdGhlIGluc2VjdXJlIGZ1 bmN0aW9ucyBzcHJpbnRmKCkgb3IgdnNwcmludGYoKQorKyAgIGJlY2F1c2UgdGhlIHNlY3VyZSBz bnByaW50ZigpIG9yIHZzbnByaW50ZigpIGZ1bmN0aW9ucyB3ZXJlIG5vdCBhdmFpbGFibGUuCisr ICAgVGhpcyBjYW4gYmUgZGV0ZXJtaW5lZCB1c2luZyB6bGliQ29tcGlsZUZsYWdzKCkuCisgKi8K KyAKKyBaRVhURVJOIGludCBaRVhQT1JUIGd6cHV0cyBPRigoZ3pGaWxlIGZpbGUsIGNvbnN0IGNo YXIgKnMpKTsKK0BAIC0xMzAxLDcgKzE1MTAsMTAgQEAgWkVYVEVSTiBpbnQgWkVYUE9SVCBnenB1 dGMgT0YoKGd6RmlsZSBmaWxlLCBpbnQgYykpOworIFpFWFRFUk4gaW50IFpFWFBPUlQgZ3pnZXRj IE9GKChnekZpbGUgZmlsZSkpOworIC8qCisgICAgICBSZWFkcyBvbmUgYnl0ZSBmcm9tIHRoZSBj b21wcmVzc2VkIGZpbGUuICBnemdldGMgcmV0dXJucyB0aGlzIGJ5dGUgb3IgLTEKKy0gICBpbiBj YXNlIG9mIGVuZCBvZiBmaWxlIG9yIGVycm9yLgorKyAgIGluIGNhc2Ugb2YgZW5kIG9mIGZpbGUg b3IgZXJyb3IuICBUaGlzIGlzIGltcGxlbWVudGVkIGFzIGEgbWFjcm8gZm9yIHNwZWVkLgorKyAg IEFzIHN1Y2gsIGl0IGRvZXMgbm90IGRvIGFsbCBvZiB0aGUgY2hlY2tpbmcgdGhlIG90aGVyIGZ1 bmN0aW9ucyBkby4gIEkuZS4KKysgICBpdCBkb2VzIG5vdCBjaGVjayB0byBzZWUgaWYgZmlsZSBp cyBOVUxMLCBub3Igd2hldGhlciB0aGUgc3RydWN0dXJlIGZpbGUKKysgICBwb2ludHMgdG8gaGFz IGJlZW4gY2xvYmJlcmVkIG9yIG5vdC4KKyAqLworIAorIFpFWFRFUk4gaW50IFpFWFBPUlQgZ3p1 bmdldGMgT0YoKGludCBjLCBnekZpbGUgZmlsZSkpOworQEAgLTEzMjUsNyArMTUzNyw3IEBAIFpF WFRFUk4gaW50IFpFWFBPUlQgZ3pmbHVzaCBPRigoZ3pGaWxlIGZpbGUsIGludCBmbHVzaCkpOwor ICAgICAgSWYgdGhlIGZsdXNoIHBhcmFtZXRlciBpcyBaX0ZJTklTSCwgdGhlIHJlbWFpbmluZyBk YXRhIGlzIHdyaXR0ZW4gYW5kIHRoZQorICAgIGd6aXAgc3RyZWFtIGlzIGNvbXBsZXRlZCBpbiB0 aGUgb3V0cHV0LiAgSWYgZ3p3cml0ZSgpIGlzIGNhbGxlZCBhZ2FpbiwgYSBuZXcKKyAgICBnemlw IHN0cmVhbSB3aWxsIGJlIHN0YXJ0ZWQgaW4gdGhlIG91dHB1dC4gIGd6cmVhZCgpIGlzIGFibGUg dG8gcmVhZCBzdWNoCistICAgY29uY2F0ZW50ZWQgZ3ppcCBzdHJlYW1zLgorKyAgIGNvbmNhdGVu YXRlZCBnemlwIHN0cmVhbXMuCisgCisgICAgICBnemZsdXNoIHNob3VsZCBiZSBjYWxsZWQgb25s eSB3aGVuIHN0cmljdGx5IG5lY2Vzc2FyeSBiZWNhdXNlIGl0IHdpbGwKKyAgICBkZWdyYWRlIGNv bXByZXNzaW9uIGlmIGNhbGxlZCB0b28gb2Z0ZW4uCitAQCAtMTM5Nyw5ICsxNjA5LDcgQEAgWkVY VEVSTiBpbnQgWkVYUE9SVCBnemVvZiBPRigoZ3pGaWxlIGZpbGUpKTsKKyBaRVhURVJOIGludCBa RVhQT1JUIGd6ZGlyZWN0IE9GKChnekZpbGUgZmlsZSkpOworIC8qCisgICAgICBSZXR1cm5zIHRy dWUgKDEpIGlmIGZpbGUgaXMgYmVpbmcgY29waWVkIGRpcmVjdGx5IHdoaWxlIHJlYWRpbmcsIG9y IGZhbHNlCistICAgKDApIGlmIGZpbGUgaXMgYSBnemlwIHN0cmVhbSBiZWluZyBkZWNvbXByZXNz ZWQuICBUaGlzIHN0YXRlIGNhbiBjaGFuZ2UgZnJvbQorLSAgIGZhbHNlIHRvIHRydWUgd2hpbGUg cmVhZGluZyB0aGUgaW5wdXQgZmlsZSBpZiB0aGUgZW5kIG9mIGEgZ3ppcCBzdHJlYW0gaXMKKy0g ICByZWFjaGVkLCBidXQgaXMgZm9sbG93ZWQgYnkgZGF0YSB0aGF0IGlzIG5vdCBhbm90aGVyIGd6 aXAgc3RyZWFtLgorKyAgICgwKSBpZiBmaWxlIGlzIGEgZ3ppcCBzdHJlYW0gYmVpbmcgZGVjb21w cmVzc2VkLgorIAorICAgICAgSWYgdGhlIGlucHV0IGZpbGUgaXMgZW1wdHksIGd6ZGlyZWN0KCkg d2lsbCByZXR1cm4gdHJ1ZSwgc2luY2UgdGhlIGlucHV0CisgICAgZG9lcyBub3QgY29udGFpbiBh IGd6aXAgc3RyZWFtLgorQEAgLTE0MDgsNiArMTYxOCwxMyBAQCBaRVhURVJOIGludCBaRVhQT1JU IGd6ZGlyZWN0IE9GKChnekZpbGUgZmlsZSkpOworICAgIGNhdXNlIGJ1ZmZlcnMgdG8gYmUgYWxs b2NhdGVkIHRvIGFsbG93IHJlYWRpbmcgdGhlIGZpbGUgdG8gZGV0ZXJtaW5lIGlmIGl0CisgICAg aXMgYSBnemlwIGZpbGUuICBUaGVyZWZvcmUgaWYgZ3pidWZmZXIoKSBpcyB1c2VkLCBpdCBzaG91 bGQgYmUgY2FsbGVkIGJlZm9yZQorICAgIGd6ZGlyZWN0KCkuCisrCisrICAgICBXaGVuIHdyaXRp bmcsIGd6ZGlyZWN0KCkgcmV0dXJucyB0cnVlICgxKSBpZiB0cmFuc3BhcmVudCB3cml0aW5nIHdh cworKyAgIHJlcXVlc3RlZCAoIndUIiBmb3IgdGhlIGd6b3BlbigpIG1vZGUpLCBvciBmYWxzZSAo MCkgb3RoZXJ3aXNlLiAgKE5vdGU6CisrICAgZ3pkaXJlY3QoKSBpcyBub3QgbmVlZGVkIHdoZW4g d3JpdGluZy4gIFRyYW5zcGFyZW50IHdyaXRpbmcgbXVzdCBiZQorKyAgIGV4cGxpY2l0bHkgcmVx dWVzdGVkLCBzbyB0aGUgYXBwbGljYXRpb24gYWxyZWFkeSBrbm93cyB0aGUgYW5zd2VyLiAgV2hl bgorKyAgIGxpbmtpbmcgc3RhdGljYWxseSwgdXNpbmcgZ3pkaXJlY3QoKSB3aWxsIGluY2x1ZGUg YWxsIG9mIHRoZSB6bGliIGNvZGUgZm9yCisrICAgZ3ppcCBmaWxlIHJlYWRpbmcgYW5kIGRlY29t cHJlc3Npb24sIHdoaWNoIG1heSBub3QgYmUgZGVzaXJlZC4pCisgKi8KKyAKKyBaRVhURVJOIGlu dCBaRVhQT1JUICAgIGd6Y2xvc2UgT0YoKGd6RmlsZSBmaWxlKSk7CitAQCAtMTQxOSw3ICsxNjM2 LDggQEAgWkVYVEVSTiBpbnQgWkVYUE9SVCAgICBnemNsb3NlIE9GKChnekZpbGUgZmlsZSkpOwor ICAgIG11c3Qgbm90IGJlIGNhbGxlZCBtb3JlIHRoYW4gb25jZSBvbiB0aGUgc2FtZSBhbGxvY2F0 aW9uLgorIAorICAgICAgZ3pjbG9zZSB3aWxsIHJldHVybiBaX1NUUkVBTV9FUlJPUiBpZiBmaWxl IGlzIG5vdCB2YWxpZCwgWl9FUlJOTyBvbiBhCistICAgZmlsZSBvcGVyYXRpb24gZXJyb3IsIG9y IFpfT0sgb24gc3VjY2Vzcy4KKysgICBmaWxlIG9wZXJhdGlvbiBlcnJvciwgWl9NRU1fRVJST1Ig aWYgb3V0IG9mIG1lbW9yeSwgWl9CVUZfRVJST1IgaWYgdGhlCisrICAgbGFzdCByZWFkIGVuZGVk IGluIHRoZSBtaWRkbGUgb2YgYSBnemlwIHN0cmVhbSwgb3IgWl9PSyBvbiBzdWNjZXNzLgorICov CisgCisgWkVYVEVSTiBpbnQgWkVYUE9SVCBnemNsb3NlX3IgT0YoKGd6RmlsZSBmaWxlKSk7CitA QCAtMTQ1Nyw2ICsxNjc1LDcgQEAgWkVYVEVSTiB2b2lkIFpFWFBPUlQgZ3pjbGVhcmVyciBPRigo Z3pGaWxlIGZpbGUpKTsKKyAgICBmaWxlIHRoYXQgaXMgYmVpbmcgd3JpdHRlbiBjb25jdXJyZW50 bHkuCisgKi8KKyAKKysjZW5kaWYgLyogIVpfU09MTyAqLworIAorICAgICAgICAgICAgICAgICAg ICAgICAgIC8qIGNoZWNrc3VtIGZ1bmN0aW9ucyAqLworIAorQEAgLTE0NzIsNyArMTY5MSw3IEBA IFpFWFRFUk4gdUxvbmcgWkVYUE9SVCBhZGxlcjMyIE9GKCh1TG9uZyBhZGxlciwgY29uc3QgQnl0 ZWYgKmJ1ZiwgdUludCBsZW4pKTsKKyAgICByZXR1cm4gdGhlIHVwZGF0ZWQgY2hlY2tzdW0uICBJ ZiBidWYgaXMgWl9OVUxMLCB0aGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlCisgICAgcmVxdWlyZWQg aW5pdGlhbCB2YWx1ZSBmb3IgdGhlIGNoZWNrc3VtLgorIAorLSAgICAgQW4gQWRsZXItMzIgY2hl Y2tzdW0gaXMgYWxtb3N0IGFzIHJlbGlhYmxlIGFzIGEgQ1JDMzIgYnV0IGNhbiBiZSBjb21wdXRl ZAorKyAgICAgQW4gQWRsZXItMzIgY2hlY2tzdW0gaXMgYWxtb3N0IGFzIHJlbGlhYmxlIGFzIGEg Q1JDLTMyIGJ1dCBjYW4gYmUgY29tcHV0ZWQKKyAgICBtdWNoIGZhc3Rlci4KKyAKKyAgICBVc2Fn ZSBleGFtcGxlOgorQEAgLTE0ODUsNiArMTcwNCwxMiBAQCBaRVhURVJOIHVMb25nIFpFWFBPUlQg YWRsZXIzMiBPRigodUxvbmcgYWRsZXIsIGNvbnN0IEJ5dGVmICpidWYsIHVJbnQgbGVuKSk7Cisg ICAgICBpZiAoYWRsZXIgIT0gb3JpZ2luYWxfYWRsZXIpIGVycm9yKCk7CisgKi8KKyAKKytaRVhU RVJOIHVMb25nIFpFWFBPUlQgYWRsZXIzMl96IE9GKCh1TG9uZyBhZGxlciwgY29uc3QgQnl0ZWYg KmJ1ZiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6X3NpemVfdCBsZW4p KTsKKysvKgorKyAgICAgU2FtZSBhcyBhZGxlcjMyKCksIGJ1dCB3aXRoIGEgc2l6ZV90IGxlbmd0 aC4KKysqLworKworIC8qCisgWkVYVEVSTiB1TG9uZyBaRVhQT1JUIGFkbGVyMzJfY29tYmluZSBP RigodUxvbmcgYWRsZXIxLCB1TG9uZyBhZGxlcjIsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgel9vZmZfdCBsZW4yKSk7CitAQCAtMTQ5MiwxNiArMTcxNywxNyBA QCBaRVhURVJOIHVMb25nIFpFWFBPUlQgYWRsZXIzMl9jb21iaW5lIE9GKCh1TG9uZyBhZGxlcjEs IHVMb25nIGFkbGVyMiwKKyAgICAgIENvbWJpbmUgdHdvIEFkbGVyLTMyIGNoZWNrc3VtcyBpbnRv IG9uZS4gIEZvciB0d28gc2VxdWVuY2VzIG9mIGJ5dGVzLCBzZXExCisgICAgYW5kIHNlcTIgd2l0 aCBsZW5ndGhzIGxlbjEgYW5kIGxlbjIsIEFkbGVyLTMyIGNoZWNrc3VtcyB3ZXJlIGNhbGN1bGF0 ZWQgZm9yCisgICAgZWFjaCwgYWRsZXIxIGFuZCBhZGxlcjIuICBhZGxlcjMyX2NvbWJpbmUoKSBy ZXR1cm5zIHRoZSBBZGxlci0zMiBjaGVja3N1bSBvZgorLSAgIHNlcTEgYW5kIHNlcTIgY29uY2F0 ZW5hdGVkLCByZXF1aXJpbmcgb25seSBhZGxlcjEsIGFkbGVyMiwgYW5kIGxlbjIuCisrICAgc2Vx MSBhbmQgc2VxMiBjb25jYXRlbmF0ZWQsIHJlcXVpcmluZyBvbmx5IGFkbGVyMSwgYWRsZXIyLCBh bmQgbGVuMi4gIE5vdGUKKysgICB0aGF0IHRoZSB6X29mZl90IHR5cGUgKGxpa2Ugb2ZmX3QpIGlz IGEgc2lnbmVkIGludGVnZXIuICBJZiBsZW4yIGlzCisrICAgbmVnYXRpdmUsIHRoZSByZXN1bHQg aGFzIG5vIG1lYW5pbmcgb3IgdXRpbGl0eS4KKyAqLworIAorIFpFWFRFUk4gdUxvbmcgWkVYUE9S VCBjcmMzMiAgIE9GKCh1TG9uZyBjcmMsIGNvbnN0IEJ5dGVmICpidWYsIHVJbnQgbGVuKSk7Cisg LyoKKyAgICAgIFVwZGF0ZSBhIHJ1bm5pbmcgQ1JDLTMyIHdpdGggdGhlIGJ5dGVzIGJ1ZlswLi5s ZW4tMV0gYW5kIHJldHVybiB0aGUKKyAgICB1cGRhdGVkIENSQy0zMi4gIElmIGJ1ZiBpcyBaX05V TEwsIHRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgcmVxdWlyZWQKKy0gICBpbml0aWFsIHZhbHVl IGZvciB0aGUgZm9yIHRoZSBjcmMuICBQcmUtIGFuZCBwb3N0LWNvbmRpdGlvbmluZyAob25lJ3MK Ky0gICBjb21wbGVtZW50KSBpcyBwZXJmb3JtZWQgd2l0aGluIHRoaXMgZnVuY3Rpb24gc28gaXQg c2hvdWxkbid0IGJlIGRvbmUgYnkgdGhlCistICAgYXBwbGljYXRpb24uCisrICAgaW5pdGlhbCB2 YWx1ZSBmb3IgdGhlIGNyYy4gIFByZS0gYW5kIHBvc3QtY29uZGl0aW9uaW5nIChvbmUncyBjb21w bGVtZW50KSBpcworKyAgIHBlcmZvcm1lZCB3aXRoaW4gdGhpcyBmdW5jdGlvbiBzbyBpdCBzaG91 bGRuJ3QgYmUgZG9uZSBieSB0aGUgYXBwbGljYXRpb24uCisgCisgICAgVXNhZ2UgZXhhbXBsZToK KyAKK0BAIC0xNTEzLDYgKzE3MzksMTIgQEAgWkVYVEVSTiB1TG9uZyBaRVhQT1JUIGNyYzMyICAg T0YoKHVMb25nIGNyYywgY29uc3QgQnl0ZWYgKmJ1ZiwgdUludCBsZW4pKTsKKyAgICAgIGlmIChj cmMgIT0gb3JpZ2luYWxfY3JjKSBlcnJvcigpOworICovCisgCisrWkVYVEVSTiB1TG9uZyBaRVhQ T1JUIGNyYzMyX3ogT0YoKHVMb25nIGFkbGVyLCBjb25zdCBCeXRlZiAqYnVmLAorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB6X3NpemVfdCBsZW4pKTsKKysvKgorKyAgICAgU2Ft ZSBhcyBjcmMzMigpLCBidXQgd2l0aCBhIHNpemVfdCBsZW5ndGguCisrKi8KKysKKyAvKgorIFpF WFRFUk4gdUxvbmcgWkVYUE9SVCBjcmMzMl9jb21iaW5lIE9GKCh1TG9uZyBjcmMxLCB1TG9uZyBj cmMyLCB6X29mZl90IGxlbjIpKTsKKyAKK0BAIC0xNTQzLDE4ICsxNzc1LDU5IEBAIFpFWFRFUk4g aW50IFpFWFBPUlQgaW5mbGF0ZUJhY2tJbml0XyBPRigoel9zdHJlYW1wIHN0cm0sIGludCB3aW5k b3dCaXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu ZWQgY2hhciBGQVIgKndpbmRvdywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNvbnN0IGNoYXIgKnZlcnNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpbnQgc3RyZWFtX3NpemUpKTsKKy0jZGVmaW5lIGRlZmxhdGVJbml0KHN0 cm0sIGxldmVsKSBcCistICAgICAgICBkZWZsYXRlSW5pdF8oKHN0cm0pLCAobGV2ZWwpLCAgICAg ICBaTElCX1ZFUlNJT04sIHNpemVvZih6X3N0cmVhbSkpCistI2RlZmluZSBpbmZsYXRlSW5pdChz dHJtKSBcCistICAgICAgICBpbmZsYXRlSW5pdF8oKHN0cm0pLCAgICAgICAgICAgICAgICBaTElC X1ZFUlNJT04sIHNpemVvZih6X3N0cmVhbSkpCistI2RlZmluZSBkZWZsYXRlSW5pdDIoc3RybSwg bGV2ZWwsIG1ldGhvZCwgd2luZG93Qml0cywgbWVtTGV2ZWwsIHN0cmF0ZWd5KSBcCistICAgICAg ICBkZWZsYXRlSW5pdDJfKChzdHJtKSwobGV2ZWwpLChtZXRob2QpLCh3aW5kb3dCaXRzKSwobWVt TGV2ZWwpLFwKKy0gICAgICAgICAgICAgICAgICAgICAgKHN0cmF0ZWd5KSwgICAgICAgICAgIFpM SUJfVkVSU0lPTiwgc2l6ZW9mKHpfc3RyZWFtKSkKKy0jZGVmaW5lIGluZmxhdGVJbml0MihzdHJt LCB3aW5kb3dCaXRzKSBcCistICAgICAgICBpbmZsYXRlSW5pdDJfKChzdHJtKSwgKHdpbmRvd0Jp dHMpLCBaTElCX1ZFUlNJT04sIHNpemVvZih6X3N0cmVhbSkpCistI2RlZmluZSBpbmZsYXRlQmFj a0luaXQoc3RybSwgd2luZG93Qml0cywgd2luZG93KSBcCistICAgICAgICBpbmZsYXRlQmFja0lu aXRfKChzdHJtKSwgKHdpbmRvd0JpdHMpLCAod2luZG93KSwgXAorLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgWkxJQl9WRVJTSU9OLCBzaXplb2Yoel9zdHJlYW0p KQorKyNpZmRlZiBaX1BSRUZJWF9TRVQKKysjICBkZWZpbmUgel9kZWZsYXRlSW5pdChzdHJtLCBs ZXZlbCkgXAorKyAgICAgICAgICBkZWZsYXRlSW5pdF8oKHN0cm0pLCAobGV2ZWwpLCBaTElCX1ZF UlNJT04sIChpbnQpc2l6ZW9mKHpfc3RyZWFtKSkKKysjICBkZWZpbmUgel9pbmZsYXRlSW5pdChz dHJtKSBcCisrICAgICAgICAgIGluZmxhdGVJbml0Xygoc3RybSksIFpMSUJfVkVSU0lPTiwgKGlu dClzaXplb2Yoel9zdHJlYW0pKQorKyMgIGRlZmluZSB6X2RlZmxhdGVJbml0MihzdHJtLCBsZXZl bCwgbWV0aG9kLCB3aW5kb3dCaXRzLCBtZW1MZXZlbCwgc3RyYXRlZ3kpIFwKKysgICAgICAgICAg ZGVmbGF0ZUluaXQyXygoc3RybSksKGxldmVsKSwobWV0aG9kKSwod2luZG93Qml0cyksKG1lbUxl dmVsKSxcCisrICAgICAgICAgICAgICAgICAgICAgICAgKHN0cmF0ZWd5KSwgWkxJQl9WRVJTSU9O LCAoaW50KXNpemVvZih6X3N0cmVhbSkpCisrIyAgZGVmaW5lIHpfaW5mbGF0ZUluaXQyKHN0cm0s IHdpbmRvd0JpdHMpIFwKKysgICAgICAgICAgaW5mbGF0ZUluaXQyXygoc3RybSksICh3aW5kb3dC aXRzKSwgWkxJQl9WRVJTSU9OLCBcCisrICAgICAgICAgICAgICAgICAgICAgICAgKGludClzaXpl b2Yoel9zdHJlYW0pKQorKyMgIGRlZmluZSB6X2luZmxhdGVCYWNrSW5pdChzdHJtLCB3aW5kb3dC aXRzLCB3aW5kb3cpIFwKKysgICAgICAgICAgaW5mbGF0ZUJhY2tJbml0Xygoc3RybSksICh3aW5k b3dCaXRzKSwgKHdpbmRvdyksIFwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICBaTElCX1ZF UlNJT04sIChpbnQpc2l6ZW9mKHpfc3RyZWFtKSkKKysjZWxzZQorKyMgIGRlZmluZSBkZWZsYXRl SW5pdChzdHJtLCBsZXZlbCkgXAorKyAgICAgICAgICBkZWZsYXRlSW5pdF8oKHN0cm0pLCAobGV2 ZWwpLCBaTElCX1ZFUlNJT04sIChpbnQpc2l6ZW9mKHpfc3RyZWFtKSkKKysjICBkZWZpbmUgaW5m bGF0ZUluaXQoc3RybSkgXAorKyAgICAgICAgICBpbmZsYXRlSW5pdF8oKHN0cm0pLCBaTElCX1ZF UlNJT04sIChpbnQpc2l6ZW9mKHpfc3RyZWFtKSkKKysjICBkZWZpbmUgZGVmbGF0ZUluaXQyKHN0 cm0sIGxldmVsLCBtZXRob2QsIHdpbmRvd0JpdHMsIG1lbUxldmVsLCBzdHJhdGVneSkgXAorKyAg ICAgICAgICBkZWZsYXRlSW5pdDJfKChzdHJtKSwobGV2ZWwpLChtZXRob2QpLCh3aW5kb3dCaXRz KSwobWVtTGV2ZWwpLFwKKysgICAgICAgICAgICAgICAgICAgICAgICAoc3RyYXRlZ3kpLCBaTElC X1ZFUlNJT04sIChpbnQpc2l6ZW9mKHpfc3RyZWFtKSkKKysjICBkZWZpbmUgaW5mbGF0ZUluaXQy KHN0cm0sIHdpbmRvd0JpdHMpIFwKKysgICAgICAgICAgaW5mbGF0ZUluaXQyXygoc3RybSksICh3 aW5kb3dCaXRzKSwgWkxJQl9WRVJTSU9OLCBcCisrICAgICAgICAgICAgICAgICAgICAgICAgKGlu dClzaXplb2Yoel9zdHJlYW0pKQorKyMgIGRlZmluZSBpbmZsYXRlQmFja0luaXQoc3RybSwgd2lu ZG93Qml0cywgd2luZG93KSBcCisrICAgICAgICAgIGluZmxhdGVCYWNrSW5pdF8oKHN0cm0pLCAo d2luZG93Qml0cyksICh3aW5kb3cpLCBcCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgWkxJ Ql9WRVJTSU9OLCAoaW50KXNpemVvZih6X3N0cmVhbSkpCisrI2VuZGlmCisrCisrI2lmbmRlZiBa X1NPTE8KKysKKysvKiBnemdldGMoKSBtYWNybyBhbmQgaXRzIHN1cHBvcnRpbmcgZnVuY3Rpb24g YW5kIGV4cG9zZWQgZGF0YSBzdHJ1Y3R1cmUuICBOb3RlCisrICogdGhhdCB0aGUgcmVhbCBpbnRl cm5hbCBzdGF0ZSBpcyBtdWNoIGxhcmdlciB0aGFuIHRoZSBleHBvc2VkIHN0cnVjdHVyZS4KKysg KiBUaGlzIGFiYnJldmlhdGVkIHN0cnVjdHVyZSBleHBvc2VzIGp1c3QgZW5vdWdoIGZvciB0aGUg Z3pnZXRjKCkgbWFjcm8uICBUaGUKKysgKiB1c2VyIHNob3VsZCBub3QgbWVzcyB3aXRoIHRoZXNl IGV4cG9zZWQgZWxlbWVudHMsIHNpbmNlIHRoZWlyIG5hbWVzIG9yCisrICogYmVoYXZpb3IgY291 bGQgY2hhbmdlIGluIHRoZSBmdXR1cmUsIHBlcmhhcHMgZXZlbiBjYXByaWNpb3VzbHkuICBUaGV5 IGNhbgorKyAqIG9ubHkgYmUgdXNlZCBieSB0aGUgZ3pnZXRjKCkgbWFjcm8uICBZb3UgaGF2ZSBi ZWVuIHdhcm5lZC4KKysgKi8KKytzdHJ1Y3QgZ3pGaWxlX3MgeworKyAgICB1bnNpZ25lZCBoYXZl OworKyAgICB1bnNpZ25lZCBjaGFyICpuZXh0OworKyAgICB6X29mZjY0X3QgcG9zOworK307Cisr WkVYVEVSTiBpbnQgWkVYUE9SVCBnemdldGNfIE9GKChnekZpbGUgZmlsZSkpOyAgLyogYmFja3dh cmQgY29tcGF0aWJpbGl0eSAqLworKyNpZmRlZiBaX1BSRUZJWF9TRVQKKysjICB1bmRlZiB6X2d6 Z2V0YworKyMgIGRlZmluZSB6X2d6Z2V0YyhnKSBcCisrICAgICAgICAgICgoZyktPmhhdmUgPyAo KGcpLT5oYXZlLS0sIChnKS0+cG9zKyssICooKGcpLT5uZXh0KSsrKSA6IChnemdldGMpKGcpKQor KyNlbHNlCisrIyAgZGVmaW5lIGd6Z2V0YyhnKSBcCisrICAgICAgICAgICgoZyktPmhhdmUgPyAo KGcpLT5oYXZlLS0sIChnKS0+cG9zKyssICooKGcpLT5uZXh0KSsrKSA6IChnemdldGMpKGcpKQor KyNlbmRpZgorIAorIC8qIHByb3ZpZGUgNjQtYml0IG9mZnNldCBmdW5jdGlvbnMgaWYgX0xBUkdF RklMRTY0X1NPVVJDRSBkZWZpbmVkLCBhbmQvb3IKKyAgKiBjaGFuZ2UgdGhlIHJlZ3VsYXIgZnVu Y3Rpb25zIHRvIDY0IGJpdHMgaWYgX0ZJTEVfT0ZGU0VUX0JJVFMgaXMgNjQgKGlmCitAQCAtMTU2 Miw3ICsxODM1LDcgQEAgWkVYVEVSTiBpbnQgWkVYUE9SVCBpbmZsYXRlQmFja0luaXRfIE9GKCh6 X3N0cmVhbXAgc3RybSwgaW50IHdpbmRvd0JpdHMsCisgICogZnVuY3Rpb25zIGFyZSBjaGFuZ2Vk IHRvIDY0IGJpdHMpIC0tIGluIGNhc2UgdGhlc2UgYXJlIHNldCBvbiBzeXN0ZW1zCisgICogd2l0 aG91dCBsYXJnZSBmaWxlIHN1cHBvcnQsIF9MRlM2NF9MQVJHRUZJTEUgbXVzdCBhbHNvIGJlIHRy dWUKKyAgKi8KKy0jaWYgZGVmaW5lZChfTEFSR0VGSUxFNjRfU09VUkNFKSAmJiBfTEZTNjRfTEFS R0VGSUxFLTAKKysjaWZkZWYgWl9MQVJHRTY0CisgICAgWkVYVEVSTiBnekZpbGUgWkVYUE9SVCBn em9wZW42NCBPRigoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopKTsKKyAgICBaRVhURVJOIHpf b2ZmNjRfdCBaRVhQT1JUIGd6c2VlazY0IE9GKChnekZpbGUsIHpfb2ZmNjRfdCwgaW50KSk7Cisg ICAgWkVYVEVSTiB6X29mZjY0X3QgWkVYUE9SVCBnenRlbGw2NCBPRigoZ3pGaWxlKSk7CitAQCAt MTU3MSwxNCArMTg0NCwyMyBAQCBaRVhURVJOIGludCBaRVhQT1JUIGluZmxhdGVCYWNrSW5pdF8g T0YoKHpfc3RyZWFtcCBzdHJtLCBpbnQgd2luZG93Qml0cywKKyAgICBaRVhURVJOIHVMb25nIFpF WFBPUlQgY3JjMzJfY29tYmluZTY0IE9GKCh1TG9uZywgdUxvbmcsIHpfb2ZmNjRfdCkpOworICNl bmRpZgorIAorLSNpZiAhZGVmaW5lZChaTElCX0lOVEVSTkFMKSAmJiBfRklMRV9PRkZTRVRfQklU Uy0wID09IDY0ICYmIF9MRlM2NF9MQVJHRUZJTEUtMAorLSMgIGRlZmluZSBnem9wZW4gZ3pvcGVu NjQKKy0jICBkZWZpbmUgZ3pzZWVrIGd6c2VlazY0CistIyAgZGVmaW5lIGd6dGVsbCBnenRlbGw2 NAorLSMgIGRlZmluZSBnem9mZnNldCBnem9mZnNldDY0CistIyAgZGVmaW5lIGFkbGVyMzJfY29t YmluZSBhZGxlcjMyX2NvbWJpbmU2NAorLSMgIGRlZmluZSBjcmMzMl9jb21iaW5lIGNyYzMyX2Nv bWJpbmU2NAorLSMgIGlmZGVmIF9MQVJHRUZJTEU2NF9TT1VSQ0UKKysjaWYgIWRlZmluZWQoWkxJ Ql9JTlRFUk5BTCkgJiYgZGVmaW5lZChaX1dBTlQ2NCkKKysjICBpZmRlZiBaX1BSRUZJWF9TRVQK KysjICAgIGRlZmluZSB6X2d6b3BlbiB6X2d6b3BlbjY0CisrIyAgICBkZWZpbmUgel9nenNlZWsg el9nenNlZWs2NAorKyMgICAgZGVmaW5lIHpfZ3p0ZWxsIHpfZ3p0ZWxsNjQKKysjICAgIGRlZmlu ZSB6X2d6b2Zmc2V0IHpfZ3pvZmZzZXQ2NAorKyMgICAgZGVmaW5lIHpfYWRsZXIzMl9jb21iaW5l IHpfYWRsZXIzMl9jb21iaW5lNjQKKysjICAgIGRlZmluZSB6X2NyYzMyX2NvbWJpbmUgel9jcmMz Ml9jb21iaW5lNjQKKysjICBlbHNlCisrIyAgICBkZWZpbmUgZ3pvcGVuIGd6b3BlbjY0CisrIyAg ICBkZWZpbmUgZ3pzZWVrIGd6c2VlazY0CisrIyAgICBkZWZpbmUgZ3p0ZWxsIGd6dGVsbDY0Cisr IyAgICBkZWZpbmUgZ3pvZmZzZXQgZ3pvZmZzZXQ2NAorKyMgICAgZGVmaW5lIGFkbGVyMzJfY29t YmluZSBhZGxlcjMyX2NvbWJpbmU2NAorKyMgICAgZGVmaW5lIGNyYzMyX2NvbWJpbmUgY3JjMzJf Y29tYmluZTY0CisrIyAgZW5kaWYKKysjICBpZm5kZWYgWl9MQVJHRTY0CisgICAgICBaRVhURVJO IGd6RmlsZSBaRVhQT1JUIGd6b3BlbjY0IE9GKChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKikp OworICAgICAgWkVYVEVSTiB6X29mZl90IFpFWFBPUlQgZ3pzZWVrNjQgT0YoKGd6RmlsZSwgel9v ZmZfdCwgaW50KSk7CisgICAgICBaRVhURVJOIHpfb2ZmX3QgWkVYUE9SVCBnenRlbGw2NCBPRigo Z3pGaWxlKSk7CitAQCAtMTU5NSwxNiArMTg3NywzMyBAQCBaRVhURVJOIGludCBaRVhQT1JUIGlu ZmxhdGVCYWNrSW5pdF8gT0YoKHpfc3RyZWFtcCBzdHJtLCBpbnQgd2luZG93Qml0cywKKyAgICBa RVhURVJOIHVMb25nIFpFWFBPUlQgY3JjMzJfY29tYmluZSBPRigodUxvbmcsIHVMb25nLCB6X29m Zl90KSk7CisgI2VuZGlmCisgCistLyogaGFjayBmb3IgYnVnZ3kgY29tcGlsZXJzICovCistI2lm ICFkZWZpbmVkKFpVVElMX0gpICYmICFkZWZpbmVkKE5PX0RVTU1ZX0RFQ0wpCistICAgIHN0cnVj dCBpbnRlcm5hbF9zdGF0ZSB7aW50IGR1bW15O307CistI2VuZGlmCisrI2Vsc2UgLyogWl9TT0xP ICovCisrCisrICAgWkVYVEVSTiB1TG9uZyBaRVhQT1JUIGFkbGVyMzJfY29tYmluZSBPRigodUxv bmcsIHVMb25nLCB6X29mZl90KSk7CisrICAgWkVYVEVSTiB1TG9uZyBaRVhQT1JUIGNyYzMyX2Nv bWJpbmUgT0YoKHVMb25nLCB1TG9uZywgel9vZmZfdCkpOworKworKyNlbmRpZiAvKiAhWl9TT0xP ICovCisgCisgLyogdW5kb2N1bWVudGVkIGZ1bmN0aW9ucyAqLworIFpFWFRFUk4gY29uc3QgY2hh ciAgICogWkVYUE9SVCB6RXJyb3IgICAgICAgICAgIE9GKChpbnQpKTsKKyBaRVhURVJOIGludCAg ICAgICAgICAgIFpFWFBPUlQgaW5mbGF0ZVN5bmNQb2ludCBPRigoel9zdHJlYW1wKSk7CistWkVY VEVSTiBjb25zdCB1TG9uZ2YgKiBaRVhQT1JUIGdldF9jcmNfdGFibGUgICAgT0YoKHZvaWQpKTsK KytaRVhURVJOIGNvbnN0IHpfY3JjX3QgRkFSICogWkVYUE9SVCBnZXRfY3JjX3RhYmxlICAgIE9G KCh2b2lkKSk7CisgWkVYVEVSTiBpbnQgICAgICAgICAgICBaRVhQT1JUIGluZmxhdGVVbmRlcm1p bmUgT0YoKHpfc3RyZWFtcCwgaW50KSk7CisrWkVYVEVSTiBpbnQgICAgICAgICAgICBaRVhQT1JU IGluZmxhdGVWYWxpZGF0ZSBPRigoel9zdHJlYW1wLCBpbnQpKTsKKytaRVhURVJOIHVuc2lnbmVk IGxvbmcgIFpFWFBPUlQgaW5mbGF0ZUNvZGVzVXNlZCBPRiAoKHpfc3RyZWFtcCkpOworK1pFWFRF Uk4gaW50ICAgICAgICAgICAgWkVYUE9SVCBpbmZsYXRlUmVzZXRLZWVwIE9GKCh6X3N0cmVhbXAp KTsKKytaRVhURVJOIGludCAgICAgICAgICAgIFpFWFBPUlQgZGVmbGF0ZVJlc2V0S2VlcCBPRigo el9zdHJlYW1wKSk7CisrI2lmIChkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfX0NZR1dJTl9f KSkgJiYgIWRlZmluZWQoWl9TT0xPKQorK1pFWFRFUk4gZ3pGaWxlICAgICAgICAgWkVYUE9SVCBn em9wZW5fdyBPRigoY29uc3Qgd2NoYXJfdCAqcGF0aCwKKysgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm1vZGUpKTsKKysjZW5kaWYKKysjaWYg ZGVmaW5lZChTVERDKSB8fCBkZWZpbmVkKFpfSEFWRV9TVERBUkdfSCkKKysjICBpZm5kZWYgWl9T T0xPCisrWkVYVEVSTiBpbnQgICAgICAgICAgICBaRVhQT1JUVkEgZ3p2cHJpbnRmIFpfQVJHKChn ekZpbGUgZmlsZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNvbnN0IGNoYXIgKmZvcm1hdCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHZhX2xpc3QgdmEpKTsKKysjICBlbmRpZgorKyNlbmRpZgor IAorICNpZmRlZiBfX2NwbHVzcGx1cworIH0KK2RpZmYgLS1naXQgYS9jb20zMi9saWIvemxpYi9G QVEgYi9jb20zMi9saWIvemxpYi9GQVEKK2luZGV4IDFhMjI3NTBhLi45OWI3Y2Y5MiAxMDA2NDQK Ky0tLSBhL2NvbTMyL2xpYi96bGliL0ZBUQorKysrIGIvY29tMzIvbGliL3psaWIvRkFRCitAQCAt NDQsOCArNDQsOCBAQCBUaGUgbGFzdGVzdCB6bGliIEZBUSBpcyBhdCBodHRwOi8vemxpYi5uZXQv emxpYl9mYXEuaHRtbAorIAorICA2LiBXaGVyZSdzIHRoZSB6bGliIGRvY3VtZW50YXRpb24gKG1h biBwYWdlcywgZXRjLik/CisgCistICAgIEl0J3MgaW4gemxpYi5oIC4gIEV4YW1wbGVzIG9mIHps aWIgdXNhZ2UgYXJlIGluIHRoZSBmaWxlcyBleGFtcGxlLmMgYW5kCistICAgIG1pbmlnemlwLmMs IHdpdGggbW9yZSBpbiBleGFtcGxlcy8gLgorKyAgICBJdCdzIGluIHpsaWIuaCAuICBFeGFtcGxl cyBvZiB6bGliIHVzYWdlIGFyZSBpbiB0aGUgZmlsZXMgdGVzdC9leGFtcGxlLmMKKysgICAgYW5k IHRlc3QvbWluaWd6aXAuYywgd2l0aCBtb3JlIGluIGV4YW1wbGVzLyAuCisgCisgIDcuIFdoeSBk b24ndCB5b3UgdXNlIEdOVSBhdXRvY29uZiBvciBsaWJ0b29sIG9yIC4uLj8KKyAKK0BAIC04NCw4 ICs4NCwxMCBAQCBUaGUgbGFzdGVzdCB6bGliIEZBUSBpcyBhdCBodHRwOi8vemxpYi5uZXQvemxp Yl9mYXEuaHRtbAorIAorIDEzLiBIb3cgY2FuIEkgbWFrZSBhIFVuaXggc2hhcmVkIGxpYnJhcnk/ CisgCistICAgIG1ha2UgY2xlYW4KKy0gICAgLi9jb25maWd1cmUgLXMKKysgICAgQnkgZGVmYXVs dCBhIHNoYXJlZCAoYW5kIGEgc3RhdGljKSBsaWJyYXJ5IGlzIGJ1aWx0IGZvciBVbml4LiAgU286 CisrCisrICAgIG1ha2UgZGlzdGNsZWFuCisrICAgIC4vY29uZmlndXJlCisgICAgIG1ha2UKKyAK KyAxNC4gSG93IGRvIEkgaW5zdGFsbCBhIHNoYXJlZCB6bGliIGxpYnJhcnkgb24gVW5peD8KK0BA IC0zMjUsNyArMzI3LDcgQEAgVGhlIGxhc3Rlc3QgemxpYiBGQVEgaXMgYXQgaHR0cDovL3psaWIu bmV0L3psaWJfZmFxLmh0bWwKKyAgICAgY29ycmVjdGx5IHBvaW50cyB0byB0aGUgemxpYiBzcGVj aWZpY2F0aW9uIGluIFJGQyAxOTUwIGZvciB0aGUgImRlZmxhdGUiCisgICAgIHRyYW5zZmVyIGVu Y29kaW5nLCB0aGVyZSBoYXZlIGJlZW4gcmVwb3J0cyBvZiBzZXJ2ZXJzIGFuZCBicm93c2VycyB0 aGF0CisgICAgIGluY29ycmVjdGx5IHByb2R1Y2Ugb3IgZXhwZWN0IHJhdyBkZWZsYXRlIGRhdGEg cGVyIHRoZSBkZWZsYXRlCistICAgIHNwZWNmaWNpYXRpb24gaW4gUkZDIDE5NTEsIG1vc3Qgbm90 YWJseSBNaWNyb3NvZnQuICBTbyBldmVuIHRob3VnaCB0aGUKKysgICAgc3BlY2lmaWNhdGlvbiBp biBSRkMgMTk1MSwgbW9zdCBub3RhYmx5IE1pY3Jvc29mdC4gIFNvIGV2ZW4gdGhvdWdoIHRoZQor ICAgICAiZGVmbGF0ZSIgdHJhbnNmZXIgZW5jb2RpbmcgdXNpbmcgdGhlIHpsaWIgZm9ybWF0IHdv dWxkIGJlIHRoZSBtb3JlCisgICAgIGVmZmljaWVudCBhcHByb2FjaCAoYW5kIGluIGZhY3QgZXhh Y3RseSB3aGF0IHRoZSB6bGliIGZvcm1hdCB3YXMgZGVzaWduZWQKKyAgICAgZm9yKSwgdXNpbmcg dGhlICJnemlwIiB0cmFuc2ZlciBlbmNvZGluZyBpcyBwcm9iYWJseSBtb3JlIHJlbGlhYmxlIGR1 ZSB0bworZGlmZiAtLWdpdCBhL2NvbTMyL2xpYi96bGliL1JFQURNRSBiL2NvbTMyL2xpYi96bGli L1JFQURNRQoraW5kZXggZDQyMTliZjguLjUxMTA2ZGU0IDEwMDY0NAorLS0tIGEvY29tMzIvbGli L3psaWIvUkVBRE1FCisrKysgYi9jb20zMi9saWIvemxpYi9SRUFETUUKK0BAIC0xLDIyICsxLDIy IEBACisgWkxJQiBEQVRBIENPTVBSRVNTSU9OIExJQlJBUlkKKyAKKy16bGliIDEuMi41IGlzIGEg Z2VuZXJhbCBwdXJwb3NlIGRhdGEgY29tcHJlc3Npb24gbGlicmFyeS4gIEFsbCB0aGUgY29kZSBp cworK3psaWIgMS4yLjExIGlzIGEgZ2VuZXJhbCBwdXJwb3NlIGRhdGEgY29tcHJlc3Npb24gbGli cmFyeS4gIEFsbCB0aGUgY29kZSBpcworIHRocmVhZCBzYWZlLiAgVGhlIGRhdGEgZm9ybWF0IHVz ZWQgYnkgdGhlIHpsaWIgbGlicmFyeSBpcyBkZXNjcmliZWQgYnkgUkZDcworIChSZXF1ZXN0IGZv ciBDb21tZW50cykgMTk1MCB0byAxOTUyIGluIHRoZSBmaWxlcworLWh0dHA6Ly93d3cuaWV0Zi5v cmcvcmZjL3JmYzE5NTAudHh0ICh6bGliIGZvcm1hdCksIHJmYzE5NTEudHh0IChkZWZsYXRlIGZv cm1hdCkKKy1hbmQgcmZjMTk1Mi50eHQgKGd6aXAgZm9ybWF0KS4KKytodHRwOi8vdG9vbHMuaWV0 Zi5vcmcvaHRtbC9yZmMxOTUwICh6bGliIGZvcm1hdCksIHJmYzE5NTEgKGRlZmxhdGUgZm9ybWF0 KSBhbmQKKytyZmMxOTUyIChnemlwIGZvcm1hdCkuCisgCisgQWxsIGZ1bmN0aW9ucyBvZiB0aGUg Y29tcHJlc3Npb24gbGlicmFyeSBhcmUgZG9jdW1lbnRlZCBpbiB0aGUgZmlsZSB6bGliLmgKKyAo dm9sdW50ZWVyIHRvIHdyaXRlIG1hbiBwYWdlcyB3ZWxjb21lLCBjb250YWN0IHpsaWJAZ3ppcC5v cmcpLiAgQSB1c2FnZSBleGFtcGxlCistb2YgdGhlIGxpYnJhcnkgaXMgZ2l2ZW4gaW4gdGhlIGZp bGUgZXhhbXBsZS5jIHdoaWNoIGFsc28gdGVzdHMgdGhhdCB0aGUgbGlicmFyeQorLWlzIHdvcmtp bmcgY29ycmVjdGx5LiAgQW5vdGhlciBleGFtcGxlIGlzIGdpdmVuIGluIHRoZSBmaWxlIG1pbmln emlwLmMuICBUaGUKKy1jb21wcmVzc2lvbiBsaWJyYXJ5IGl0c2VsZiBpcyBjb21wb3NlZCBvZiBh bGwgc291cmNlIGZpbGVzIGV4Y2VwdCBleGFtcGxlLmMgYW5kCistbWluaWd6aXAuYy4KKytvZiB0 aGUgbGlicmFyeSBpcyBnaXZlbiBpbiB0aGUgZmlsZSB0ZXN0L2V4YW1wbGUuYyB3aGljaCBhbHNv IHRlc3RzIHRoYXQKKyt0aGUgbGlicmFyeSBpcyB3b3JraW5nIGNvcnJlY3RseS4gIEFub3RoZXIg ZXhhbXBsZSBpcyBnaXZlbiBpbiB0aGUgZmlsZQorK3Rlc3QvbWluaWd6aXAuYy4gIFRoZSBjb21w cmVzc2lvbiBsaWJyYXJ5IGl0c2VsZiBpcyBjb21wb3NlZCBvZiBhbGwgc291cmNlCisrZmlsZXMg aW4gdGhlIHJvb3QgZGlyZWN0b3J5LgorIAorIFRvIGNvbXBpbGUgYWxsIGZpbGVzIGFuZCBydW4g dGhlIHRlc3QgcHJvZ3JhbSwgZm9sbG93IHRoZSBpbnN0cnVjdGlvbnMgZ2l2ZW4gYXQKKyB0aGUg dG9wIG9mIE1ha2VmaWxlLmluLiAgSW4gc2hvcnQgIi4vY29uZmlndXJlOyBtYWtlIHRlc3QiLCBh bmQgaWYgdGhhdCBnb2VzCistd2VsbCwgIm1ha2UgaW5zdGFsbCIgc2hvdWxkIHdvcmsgZm9yIG1v c3QgZmxhdm9ycyBvZiBVbml4LiAgRm9yIFdpbmRvd3MsIHVzZSBvbmUKKy1vZiB0aGUgc3BlY2lh bCBtYWtlZmlsZXMgaW4gd2luMzIvIG9yIGNvbnRyaWIvdnN0dWRpby8gLiAgRm9yIFZNUywgdXNl Cisrd2VsbCwgIm1ha2UgaW5zdGFsbCIgc2hvdWxkIHdvcmsgZm9yIG1vc3QgZmxhdm9ycyBvZiBV bml4LiAgRm9yIFdpbmRvd3MsIHVzZQorK29uZSBvZiB0aGUgc3BlY2lhbCBtYWtlZmlsZXMgaW4g d2luMzIvIG9yIGNvbnRyaWIvdnN0dWRpby8gLiAgRm9yIFZNUywgdXNlCisgbWFrZV92bXMuY29t LgorIAorIFF1ZXN0aW9ucyBhYm91dCB6bGliIHNob3VsZCBiZSBzZW50IHRvIDx6bGliQGd6aXAu b3JnPiwgb3IgdG8gR2lsbGVzIFZvbGxhbnQKK0BAIC0zMSw3ICszMSw3IEBAIE1hcmsgTmVsc29u IDxtYXJrbkBpZWVlLm9yZz4gd3JvdGUgYW4gYXJ0aWNsZSBhYm91dCB6bGliIGZvciB0aGUgSmFu LiAgMTk5NworIGlzc3VlIG9mIERyLiAgRG9iYidzIEpvdXJuYWw7IGEgY29weSBvZiB0aGUgYXJ0 aWNsZSBpcyBhdmFpbGFibGUgYXQKKyBodHRwOi8vbWFya25lbHNvbi51cy8xOTk3LzAxLzAxL3ps aWItZW5naW5lLyAuCisgCistVGhlIGNoYW5nZXMgbWFkZSBpbiB2ZXJzaW9uIDEuMi41IGFyZSBk b2N1bWVudGVkIGluIHRoZSBmaWxlIENoYW5nZUxvZy4KKytUaGUgY2hhbmdlcyBtYWRlIGluIHZl cnNpb24gMS4yLjExIGFyZSBkb2N1bWVudGVkIGluIHRoZSBmaWxlIENoYW5nZUxvZy4KKyAKKyBV bnN1cHBvcnRlZCB0aGlyZCBwYXJ0eSBjb250cmlidXRpb25zIGFyZSBwcm92aWRlZCBpbiBkaXJl Y3RvcnkgY29udHJpYi8gLgorIAorQEAgLTQ0LDcgKzQ0LDcgQEAgaHR0cDovL3NlYXJjaC5jcGFu Lm9yZy9+cG1xcy9JTy1Db21wcmVzcy1abGliLyAuCisgCisgQSBQeXRob24gaW50ZXJmYWNlIHRv IHpsaWIgd3JpdHRlbiBieSBBLk0uIEt1Y2hsaW5nIDxhbWtAYW1rLmNhPiBpcworIGF2YWlsYWJs ZSBpbiBQeXRob24gMS41IGFuZCBsYXRlciB2ZXJzaW9ucywgc2VlCistaHR0cDovL3d3dy5weXRo b24ub3JnL2RvYy9saWIvbW9kdWxlLXpsaWIuaHRtbCAuCisraHR0cDovL2RvY3MucHl0aG9uLm9y Zy9saWJyYXJ5L3psaWIuaHRtbCAuCisgCisgemxpYiBpcyBidWlsdCBpbnRvIHRjbDogaHR0cDov L3dpa2kudGNsLnRrLzQ2MTAgLgorIAorQEAgLTg0LDcgKzg0LDcgQEAgQWNrbm93bGVkZ21lbnRz OgorIAorIENvcHlyaWdodCBub3RpY2U6CisgCistIChDKSAxOTk1LTIwMTAgSmVhbi1sb3VwIEdh aWxseSBhbmQgTWFyayBBZGxlcgorKyAoQykgMTk5NS0yMDE3IEplYW4tbG91cCBHYWlsbHkgYW5k IE1hcmsgQWRsZXIKKyAKKyAgIFRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgJ2FzLWlzJywgd2l0 aG91dCBhbnkgZXhwcmVzcyBvciBpbXBsaWVkCisgICB3YXJyYW50eS4gIEluIG5vIGV2ZW50IHdp bGwgdGhlIGF1dGhvcnMgYmUgaGVsZCBsaWFibGUgZm9yIGFueSBkYW1hZ2VzCitkaWZmIC0tZ2l0 IGEvY29tMzIvbGliL3psaWIvYWRsZXIzMi5jIGIvY29tMzIvbGliL3psaWIvYWRsZXIzMi5jCitp bmRleCA2NWFkNmE1YS4uZDBiZTQzODAgMTAwNjQ0CistLS0gYS9jb20zMi9saWIvemxpYi9hZGxl cjMyLmMKKysrKyBiL2NvbTMyL2xpYi96bGliL2FkbGVyMzIuYworQEAgLTEsNSArMSw1IEBACisg LyogYWRsZXIzMi5jIC0tIGNvbXB1dGUgdGhlIEFkbGVyLTMyIGNoZWNrc3VtIG9mIGEgZGF0YSBz dHJlYW0KKy0gKiBDb3B5cmlnaHQgKEMpIDE5OTUtMjAwNyBNYXJrIEFkbGVyCisrICogQ29weXJp Z2h0IChDKSAxOTk1LTIwMTEsIDIwMTYgTWFyayBBZGxlcgorICAqIEZvciBjb25kaXRpb25zIG9m IGRpc3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgY29weXJpZ2h0IG5vdGljZSBpbiB6bGliLmgKKyAg Ki8KKyAKK0BAIC03LDExICs3LDkgQEAKKyAKKyAjaW5jbHVkZSAienV0aWwuaCIKKyAKKy0jZGVm aW5lIGxvY2FsIHN0YXRpYworK2xvY2FsIHVMb25nIGFkbGVyMzJfY29tYmluZV8gT0YoKHVMb25n IGFkbGVyMSwgdUxvbmcgYWRsZXIyLCB6X29mZjY0X3QgbGVuMikpOworIAorLWxvY2FsIHVMb25n IGFkbGVyMzJfY29tYmluZV8odUxvbmcgYWRsZXIxLCB1TG9uZyBhZGxlcjIsIHpfb2ZmNjRfdCBs ZW4yKTsKKy0KKy0jZGVmaW5lIEJBU0UgNjU1MjFVTCAgICAvKiBsYXJnZXN0IHByaW1lIHNtYWxs ZXIgdGhhbiA2NTUzNiAqLworKyNkZWZpbmUgQkFTRSA2NTUyMVUgICAgIC8qIGxhcmdlc3QgcHJp bWUgc21hbGxlciB0aGFuIDY1NTM2ICovCisgI2RlZmluZSBOTUFYIDU1NTIKKyAvKiBOTUFYIGlz IHRoZSBsYXJnZXN0IG4gc3VjaCB0aGF0IDI1NW4obisxKS8yICsgKG4rMSkoQkFTRS0xKSA8PSAy XjMyLTEgKi8KKyAKK0BAIC0yMSw0NiArMTksNTEgQEAgbG9jYWwgdUxvbmcgYWRsZXIzMl9jb21i aW5lXyh1TG9uZyBhZGxlcjEsIHVMb25nIGFkbGVyMiwgel9vZmY2NF90IGxlbjIpOworICNkZWZp bmUgRE84KGJ1ZixpKSAgRE80KGJ1ZixpKTsgRE80KGJ1ZixpKzQpOworICNkZWZpbmUgRE8xNihi dWYpICAgRE84KGJ1ZiwwKTsgRE84KGJ1Ziw4KTsKKyAKKy0vKiB1c2UgTk9fRElWSURFIGlmIHlv dXIgcHJvY2Vzc29yIGRvZXMgbm90IGRvIGRpdmlzaW9uIGluIGhhcmR3YXJlICovCisrLyogdXNl IE5PX0RJVklERSBpZiB5b3VyIHByb2Nlc3NvciBkb2VzIG5vdCBkbyBkaXZpc2lvbiBpbiBoYXJk d2FyZSAtLQorKyAgIHRyeSBpdCBib3RoIHdheXMgdG8gc2VlIHdoaWNoIGlzIGZhc3RlciAqLwor ICNpZmRlZiBOT19ESVZJREUKKysvKiBub3RlIHRoYXQgdGhpcyBhc3N1bWVzIEJBU0UgaXMgNjU1 MjEsIHdoZXJlIDY1NTM2ICUgNjU1MjEgPT0gMTUKKysgICAodGhhbmsgeW91IHRvIEpvaG4gUmVp c2VyIGZvciBwb2ludGluZyB0aGlzIG91dCkgKi8KKysjICBkZWZpbmUgQ0hPUChhKSBcCisrICAg IGRvIHsgXAorKyAgICAgICAgdW5zaWduZWQgbG9uZyB0bXAgPSBhID4+IDE2OyBcCisrICAgICAg ICBhICY9IDB4ZmZmZlVMOyBcCisrICAgICAgICBhICs9ICh0bXAgPDwgNCkgLSB0bXA7IFwKKysg ICAgfSB3aGlsZSAoMCkKKysjICBkZWZpbmUgTU9EMjgoYSkgXAorKyAgICBkbyB7IFwKKysgICAg ICAgIENIT1AoYSk7IFwKKysgICAgICAgIGlmIChhID49IEJBU0UpIGEgLT0gQkFTRTsgXAorKyAg ICB9IHdoaWxlICgwKQorICMgIGRlZmluZSBNT0QoYSkgXAorICAgICBkbyB7IFwKKy0gICAgICAg IGlmIChhID49IChCQVNFIDw8IDE2KSkgYSAtPSAoQkFTRSA8PCAxNik7IFwKKy0gICAgICAgIGlm IChhID49IChCQVNFIDw8IDE1KSkgYSAtPSAoQkFTRSA8PCAxNSk7IFwKKy0gICAgICAgIGlmIChh ID49IChCQVNFIDw8IDE0KSkgYSAtPSAoQkFTRSA8PCAxNCk7IFwKKy0gICAgICAgIGlmIChhID49 IChCQVNFIDw8IDEzKSkgYSAtPSAoQkFTRSA8PCAxMyk7IFwKKy0gICAgICAgIGlmIChhID49IChC QVNFIDw8IDEyKSkgYSAtPSAoQkFTRSA8PCAxMik7IFwKKy0gICAgICAgIGlmIChhID49IChCQVNF IDw8IDExKSkgYSAtPSAoQkFTRSA8PCAxMSk7IFwKKy0gICAgICAgIGlmIChhID49IChCQVNFIDw8 IDEwKSkgYSAtPSAoQkFTRSA8PCAxMCk7IFwKKy0gICAgICAgIGlmIChhID49IChCQVNFIDw8IDkp KSBhIC09IChCQVNFIDw8IDkpOyBcCistICAgICAgICBpZiAoYSA+PSAoQkFTRSA8PCA4KSkgYSAt PSAoQkFTRSA8PCA4KTsgXAorLSAgICAgICAgaWYgKGEgPj0gKEJBU0UgPDwgNykpIGEgLT0gKEJB U0UgPDwgNyk7IFwKKy0gICAgICAgIGlmIChhID49IChCQVNFIDw8IDYpKSBhIC09IChCQVNFIDw8 IDYpOyBcCistICAgICAgICBpZiAoYSA+PSAoQkFTRSA8PCA1KSkgYSAtPSAoQkFTRSA8PCA1KTsg XAorLSAgICAgICAgaWYgKGEgPj0gKEJBU0UgPDwgNCkpIGEgLT0gKEJBU0UgPDwgNCk7IFwKKy0g ICAgICAgIGlmIChhID49IChCQVNFIDw8IDMpKSBhIC09IChCQVNFIDw8IDMpOyBcCistICAgICAg ICBpZiAoYSA+PSAoQkFTRSA8PCAyKSkgYSAtPSAoQkFTRSA8PCAyKTsgXAorLSAgICAgICAgaWYg KGEgPj0gKEJBU0UgPDwgMSkpIGEgLT0gKEJBU0UgPDwgMSk7IFwKKy0gICAgICAgIGlmIChhID49 IEJBU0UpIGEgLT0gQkFTRTsgXAorKyAgICAgICAgQ0hPUChhKTsgXAorKyAgICAgICAgTU9EMjgo YSk7IFwKKyAgICAgfSB3aGlsZSAoMCkKKy0jICBkZWZpbmUgTU9ENChhKSBcCistICAgIGRvIHsg XAorLSAgICAgICAgaWYgKGEgPj0gKEJBU0UgPDwgNCkpIGEgLT0gKEJBU0UgPDwgNCk7IFwKKy0g ICAgICAgIGlmIChhID49IChCQVNFIDw8IDMpKSBhIC09IChCQVNFIDw8IDMpOyBcCistICAgICAg ICBpZiAoYSA+PSAoQkFTRSA8PCAyKSkgYSAtPSAoQkFTRSA8PCAyKTsgXAorLSAgICAgICAgaWYg KGEgPj0gKEJBU0UgPDwgMSkpIGEgLT0gKEJBU0UgPDwgMSk7IFwKKysjICBkZWZpbmUgTU9ENjMo YSkgXAorKyAgICBkbyB7IC8qIHRoaXMgYXNzdW1lcyBhIGlzIG5vdCBuZWdhdGl2ZSAqLyBcCisr ICAgICAgICB6X29mZjY0X3QgdG1wID0gYSA+PiAzMjsgXAorKyAgICAgICAgYSAmPSAweGZmZmZm ZmZmTDsgXAorKyAgICAgICAgYSArPSAodG1wIDw8IDgpIC0gKHRtcCA8PCA1KSArIHRtcDsgXAor KyAgICAgICAgdG1wID0gYSA+PiAxNjsgXAorKyAgICAgICAgYSAmPSAweGZmZmZMOyBcCisrICAg ICAgICBhICs9ICh0bXAgPDwgNCkgLSB0bXA7IFwKKysgICAgICAgIHRtcCA9IGEgPj4gMTY7IFwK KysgICAgICAgIGEgJj0gMHhmZmZmTDsgXAorKyAgICAgICAgYSArPSAodG1wIDw8IDQpIC0gdG1w OyBcCisgICAgICAgICBpZiAoYSA+PSBCQVNFKSBhIC09IEJBU0U7IFwKKyAgICAgfSB3aGlsZSAo MCkKKyAjZWxzZQorICMgIGRlZmluZSBNT0QoYSkgYSAlPSBCQVNFCistIyAgZGVmaW5lIE1PRDQo YSkgYSAlPSBCQVNFCisrIyAgZGVmaW5lIE1PRDI4KGEpIGEgJT0gQkFTRQorKyMgIGRlZmluZSBN T0Q2MyhhKSBhICU9IEJBU0UKKyAjZW5kaWYKKyAKKyAvKiA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCist dUxvbmcgWkVYUE9SVCBhZGxlcjMyKGFkbGVyLCBidWYsIGxlbikKKyt1TG9uZyBaRVhQT1JUIGFk bGVyMzJfeihhZGxlciwgYnVmLCBsZW4pCisgICAgIHVMb25nIGFkbGVyOworICAgICBjb25zdCBC eXRlZiAqYnVmOworLSAgICB1SW50IGxlbjsKKysgICAgel9zaXplX3QgbGVuOworIHsKKyAgICAg dW5zaWduZWQgbG9uZyBzdW0yOworICAgICB1bnNpZ25lZCBuOworQEAgLTkyLDcgKzk1LDcgQEAg dUxvbmcgWkVYUE9SVCBhZGxlcjMyKGFkbGVyLCBidWYsIGxlbikKKyAgICAgICAgIH0KKyAgICAg ICAgIGlmIChhZGxlciA+PSBCQVNFKQorICAgICAgICAgICAgIGFkbGVyIC09IEJBU0U7CistICAg ICAgICBNT0Q0KHN1bTIpOyAgICAgICAgICAgICAvKiBvbmx5IGFkZGVkIHNvIG1hbnkgQkFTRSdz ICovCisrICAgICAgICBNT0QyOChzdW0yKTsgICAgICAgICAgICAvKiBvbmx5IGFkZGVkIHNvIG1h bnkgQkFTRSdzICovCisgICAgICAgICByZXR1cm4gYWRsZXIgfCAoc3VtMiA8PCAxNik7CisgICAg IH0KKyAKK0BAIC0xMjcsNiArMTMwLDE1IEBAIHVMb25nIFpFWFBPUlQgYWRsZXIzMihhZGxlciwg YnVmLCBsZW4pCisgICAgIHJldHVybiBhZGxlciB8IChzdW0yIDw8IDE2KTsKKyB9CisgCisrLyog PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PSAqLworK3VMb25nIFpFWFBPUlQgYWRsZXIzMihhZGxlciwgYnVmLCBs ZW4pCisrICAgIHVMb25nIGFkbGVyOworKyAgICBjb25zdCBCeXRlZiAqYnVmOworKyAgICB1SW50 IGxlbjsKKyt7CisrICAgIHJldHVybiBhZGxlcjMyX3ooYWRsZXIsIGJ1ZiwgbGVuKTsKKyt9Cisr CisgLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PSAqLworIGxvY2FsIHVMb25nIGFkbGVyMzJfY29tYmluZV8o YWRsZXIxLCBhZGxlcjIsIGxlbjIpCisgICAgIHVMb25nIGFkbGVyMTsKK0BAIC0xMzcsOCArMTQ5 LDEzIEBAIGxvY2FsIHVMb25nIGFkbGVyMzJfY29tYmluZV8oYWRsZXIxLCBhZGxlcjIsIGxlbjIp CisgICAgIHVuc2lnbmVkIGxvbmcgc3VtMjsKKyAgICAgdW5zaWduZWQgcmVtOworIAorKyAgICAv KiBmb3IgbmVnYXRpdmUgbGVuLCByZXR1cm4gaW52YWxpZCBhZGxlcjMyIGFzIGEgY2x1ZSBmb3Ig ZGVidWdnaW5nICovCisrICAgIGlmIChsZW4yIDwgMCkKKysgICAgICAgIHJldHVybiAweGZmZmZm ZmZmVUw7CisrCisgICAgIC8qIHRoZSBkZXJpdmF0aW9uIG9mIHRoaXMgZm9ybXVsYSBpcyBsZWZ0 IGFzIGFuIGV4ZXJjaXNlIGZvciB0aGUgcmVhZGVyICovCistICAgIHJlbSA9ICh1bnNpZ25lZCko bGVuMiAlIEJBU0UpOworKyAgICBNT0Q2MyhsZW4yKTsgICAgICAgICAgICAgICAgLyogYXNzdW1l cyBsZW4yID49IDAgKi8KKysgICAgcmVtID0gKHVuc2lnbmVkKWxlbjI7CisgICAgIHN1bTEgPSBh ZGxlcjEgJiAweGZmZmY7CisgICAgIHN1bTIgPSByZW0gKiBzdW0xOworICAgICBNT0Qoc3VtMik7 CitAQCAtMTQ2LDcgKzE2Myw3IEBAIGxvY2FsIHVMb25nIGFkbGVyMzJfY29tYmluZV8oYWRsZXIx LCBhZGxlcjIsIGxlbjIpCisgICAgIHN1bTIgKz0gKChhZGxlcjEgPj4gMTYpICYgMHhmZmZmKSAr ICgoYWRsZXIyID4+IDE2KSAmIDB4ZmZmZikgKyBCQVNFIC0gcmVtOworICAgICBpZiAoc3VtMSA+ PSBCQVNFKSBzdW0xIC09IEJBU0U7CisgICAgIGlmIChzdW0xID49IEJBU0UpIHN1bTEgLT0gQkFT RTsKKy0gICAgaWYgKHN1bTIgPj0gKEJBU0UgPDwgMSkpIHN1bTIgLT0gKEJBU0UgPDwgMSk7Cisr ICAgIGlmIChzdW0yID49ICgodW5zaWduZWQgbG9uZylCQVNFIDw8IDEpKSBzdW0yIC09ICgodW5z aWduZWQgbG9uZylCQVNFIDw8IDEpOworICAgICBpZiAoc3VtMiA+PSBCQVNFKSBzdW0yIC09IEJB U0U7CisgICAgIHJldHVybiBzdW0xIHwgKHN1bTIgPDwgMTYpOworIH0KK2RpZmYgLS1naXQgYS9j b20zMi9saWIvemxpYi9jb21wcmVzcy5jIGIvY29tMzIvbGliL3psaWIvY29tcHJlc3MuYworaW5k ZXggZWE0ZGZiZTkuLmUyZGI0MDRhIDEwMDY0NAorLS0tIGEvY29tMzIvbGliL3psaWIvY29tcHJl c3MuYworKysrIGIvY29tMzIvbGliL3psaWIvY29tcHJlc3MuYworQEAgLTEsNSArMSw1IEBACisg LyogY29tcHJlc3MuYyAtLSBjb21wcmVzcyBhIG1lbW9yeSBidWZmZXIKKy0gKiBDb3B5cmlnaHQg KEMpIDE5OTUtMjAwNSBKZWFuLWxvdXAgR2FpbGx5LgorKyAqIENvcHlyaWdodCAoQykgMTk5NS0y MDA1LCAyMDE0LCAyMDE2IEplYW4tbG91cCBHYWlsbHksIE1hcmsgQWRsZXIKKyAgKiBGb3IgY29u ZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIGNvcHlyaWdodCBub3RpY2UgaW4g emxpYi5oCisgICovCisgCitAQCAtMjgsMTYgKzI4LDExIEBAIGludCBaRVhQT1JUIGNvbXByZXNz MiAoZGVzdCwgZGVzdExlbiwgc291cmNlLCBzb3VyY2VMZW4sIGxldmVsKQorIHsKKyAgICAgel9z dHJlYW0gc3RyZWFtOworICAgICBpbnQgZXJyOworKyAgICBjb25zdCB1SW50IG1heCA9ICh1SW50 KS0xOworKyAgICB1TG9uZyBsZWZ0OworIAorLSAgICBzdHJlYW0ubmV4dF9pbiA9IChCeXRlZiop c291cmNlOworLSAgICBzdHJlYW0uYXZhaWxfaW4gPSAodUludClzb3VyY2VMZW47CistI2lmZGVm IE1BWFNFR182NEsKKy0gICAgLyogQ2hlY2sgZm9yIHNvdXJjZSA+IDY0SyBvbiAxNi1iaXQgbWFj aGluZTogKi8KKy0gICAgaWYgKCh1TG9uZylzdHJlYW0uYXZhaWxfaW4gIT0gc291cmNlTGVuKSBy ZXR1cm4gWl9CVUZfRVJST1I7CistI2VuZGlmCistICAgIHN0cmVhbS5uZXh0X291dCA9IGRlc3Q7 CistICAgIHN0cmVhbS5hdmFpbF9vdXQgPSAodUludCkqZGVzdExlbjsKKy0gICAgaWYgKCh1TG9u ZylzdHJlYW0uYXZhaWxfb3V0ICE9ICpkZXN0TGVuKSByZXR1cm4gWl9CVUZfRVJST1I7CisrICAg IGxlZnQgPSAqZGVzdExlbjsKKysgICAgKmRlc3RMZW4gPSAwOworIAorICAgICBzdHJlYW0uemFs bG9jID0gKGFsbG9jX2Z1bmMpMDsKKyAgICAgc3RyZWFtLnpmcmVlID0gKGZyZWVfZnVuYykwOwor QEAgLTQ2LDE1ICs0MSwyNiBAQCBpbnQgWkVYUE9SVCBjb21wcmVzczIgKGRlc3QsIGRlc3RMZW4s IHNvdXJjZSwgc291cmNlTGVuLCBsZXZlbCkKKyAgICAgZXJyID0gZGVmbGF0ZUluaXQoJnN0cmVh bSwgbGV2ZWwpOworICAgICBpZiAoZXJyICE9IFpfT0spIHJldHVybiBlcnI7CisgCistICAgIGVy ciA9IGRlZmxhdGUoJnN0cmVhbSwgWl9GSU5JU0gpOworLSAgICBpZiAoZXJyICE9IFpfU1RSRUFN X0VORCkgeworLSAgICAgICAgZGVmbGF0ZUVuZCgmc3RyZWFtKTsKKy0gICAgICAgIHJldHVybiBl cnIgPT0gWl9PSyA/IFpfQlVGX0VSUk9SIDogZXJyOworLSAgICB9CisrICAgIHN0cmVhbS5uZXh0 X291dCA9IGRlc3Q7CisrICAgIHN0cmVhbS5hdmFpbF9vdXQgPSAwOworKyAgICBzdHJlYW0ubmV4 dF9pbiA9ICh6X2NvbnN0IEJ5dGVmICopc291cmNlOworKyAgICBzdHJlYW0uYXZhaWxfaW4gPSAw OworKworKyAgICBkbyB7CisrICAgICAgICBpZiAoc3RyZWFtLmF2YWlsX291dCA9PSAwKSB7Cisr ICAgICAgICAgICAgc3RyZWFtLmF2YWlsX291dCA9IGxlZnQgPiAodUxvbmcpbWF4ID8gbWF4IDog KHVJbnQpbGVmdDsKKysgICAgICAgICAgICBsZWZ0IC09IHN0cmVhbS5hdmFpbF9vdXQ7CisrICAg ICAgICB9CisrICAgICAgICBpZiAoc3RyZWFtLmF2YWlsX2luID09IDApIHsKKysgICAgICAgICAg ICBzdHJlYW0uYXZhaWxfaW4gPSBzb3VyY2VMZW4gPiAodUxvbmcpbWF4ID8gbWF4IDogKHVJbnQp c291cmNlTGVuOworKyAgICAgICAgICAgIHNvdXJjZUxlbiAtPSBzdHJlYW0uYXZhaWxfaW47Cisr ICAgICAgICB9CisrICAgICAgICBlcnIgPSBkZWZsYXRlKCZzdHJlYW0sIHNvdXJjZUxlbiA/IFpf Tk9fRkxVU0ggOiBaX0ZJTklTSCk7CisrICAgIH0gd2hpbGUgKGVyciA9PSBaX09LKTsKKysKKyAg ICAgKmRlc3RMZW4gPSBzdHJlYW0udG90YWxfb3V0OworLQorLSAgICBlcnIgPSBkZWZsYXRlRW5k KCZzdHJlYW0pOworLSAgICByZXR1cm4gZXJyOworKyAgICBkZWZsYXRlRW5kKCZzdHJlYW0pOwor KyAgICByZXR1cm4gZXJyID09IFpfU1RSRUFNX0VORCA/IFpfT0sgOiBlcnI7CisgfQorIAorIC8q ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQorZGlmZiAtLWdpdCBhL2NvbTMyL2xpYi96bGliL2NyYzMyLmMg Yi9jb20zMi9saWIvemxpYi9jcmMzMi5jCitpbmRleCAwNzI2NWM2Zi4uOTU4MDQ0MGMgMTAwNjQ0 CistLS0gYS9jb20zMi9saWIvemxpYi9jcmMzMi5jCisrKysgYi9jb20zMi9saWIvemxpYi9jcmMz Mi5jCitAQCAtMSw1ICsxLDUgQEAKKyAvKiBjcmMzMi5jIC0tIGNvbXB1dGUgdGhlIENSQy0zMiBv ZiBhIGRhdGEgc3RyZWFtCistICogQ29weXJpZ2h0IChDKSAxOTk1LTIwMDYsIDIwMTAgTWFyayBB ZGxlcgorKyAqIENvcHlyaWdodCAoQykgMTk5NS0yMDA2LCAyMDEwLCAyMDExLCAyMDEyLCAyMDE2 IE1hcmsgQWRsZXIKKyAgKiBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwg c2VlIGNvcHlyaWdodCBub3RpY2UgaW4gemxpYi5oCisgICoKKyAgKiBUaGFua3MgdG8gUm9kbmV5 IEJyb3duIDxyYnJvd242NEBjc2MuY29tLmF1PiBmb3IgaGlzIGNvbnRyaWJ1dGlvbiBvZiBmYXN0 ZXIKK0BAIC0xNyw2ICsxNyw4IEBACisgICBvZiB0aGUgY3JjIHRhYmxlcy4gIFRoZXJlZm9yZSwg aWYgeW91ICNkZWZpbmUgRFlOQU1JQ19DUkNfVEFCTEUsIHlvdSBzaG91bGQKKyAgIGZpcnN0IGNh bGwgZ2V0X2NyY190YWJsZSgpIHRvIGluaXRpYWxpemUgdGhlIHRhYmxlcyBiZWZvcmUgYWxsb3dp bmcgbW9yZSB0aGFuCisgICBvbmUgdGhyZWFkIHRvIHVzZSBjcmMzMigpLgorKworKyAgRFlOQU1J Q19DUkNfVEFCTEUgYW5kIE1BS0VDUkNIIGNhbiBiZSAjZGVmaW5lZCB0byB3cml0ZSBvdXQgY3Jj MzIuaC4KKyAgKi8KKyAKKyAjaWZkZWYgTUFLRUNSQ0gKK0BAIC0yOCwzNyArMzAsMTUgQEAKKyAK KyAjaW5jbHVkZSAienV0aWwuaCIgICAgICAvKiBmb3IgU1REQyBhbmQgRkFSIGRlZmluaXRpb25z ICovCisgCistI2RlZmluZSBsb2NhbCBzdGF0aWMKKy0KKy0vKiBGaW5kIGEgZm91ci1ieXRlIGlu dGVnZXIgdHlwZSBmb3IgY3JjMzJfbGl0dGxlKCkgYW5kIGNyYzMyX2JpZygpLiAqLworLSNpZm5k ZWYgTk9CWUZPVVIKKy0jICBpZmRlZiBTVERDICAgICAgICAgICAvKiBuZWVkIEFOU0kgQyBsaW1p dHMuaCB0byBkZXRlcm1pbmUgc2l6ZXMgKi8KKy0jICAgIGluY2x1ZGUgPGxpbWl0cy5oPgorLSMg ICAgZGVmaW5lIEJZRk9VUgorLSMgICAgaWYgKFVJTlRfTUFYID09IDB4ZmZmZmZmZmZVTCkKKy0g ICAgICAgdHlwZWRlZiB1bnNpZ25lZCBpbnQgdTQ7CistIyAgICBlbHNlCistIyAgICAgIGlmIChV TE9OR19NQVggPT0gMHhmZmZmZmZmZlVMKQorLSAgICAgICAgIHR5cGVkZWYgdW5zaWduZWQgbG9u ZyB1NDsKKy0jICAgICAgZWxzZQorLSMgICAgICAgIGlmIChVU0hSVF9NQVggPT0gMHhmZmZmZmZm ZlVMKQorLSAgICAgICAgICAgdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCB1NDsKKy0jICAgICAgICBl bHNlCistIyAgICAgICAgICB1bmRlZiBCWUZPVVIgICAgIC8qIGNhbid0IGZpbmQgYSBmb3VyLWJ5 dGUgaW50ZWdlciB0eXBlISAqLworLSMgICAgICAgIGVuZGlmCistIyAgICAgIGVuZGlmCistIyAg ICBlbmRpZgorLSMgIGVuZGlmIC8qIFNUREMgKi8KKy0jZW5kaWYgLyogIU5PQllGT1VSICovCist CisgLyogRGVmaW5pdGlvbnMgZm9yIGRvaW5nIHRoZSBjcmMgZm91ciBkYXRhIGJ5dGVzIGF0IGEg dGltZS4gKi8KKysjaWYgIWRlZmluZWQoTk9CWUZPVVIpICYmIGRlZmluZWQoWl9VNCkKKysjICBk ZWZpbmUgQllGT1VSCisrI2VuZGlmCisgI2lmZGVmIEJZRk9VUgorLSMgIGRlZmluZSBSRVYodykg KCgoKHcpPj4yNCkmMHhmZikrKCgodyk+PjgpJjB4ZmYwMCkrIFwKKy0gICAgICAgICAgICAgICAg KCgodykmMHhmZjAwKTw8OCkrKCgodykmMHhmZik8PDI0KSkKKyAgICBsb2NhbCB1bnNpZ25lZCBs b25nIGNyYzMyX2xpdHRsZSBPRigodW5zaWduZWQgbG9uZywKKy0gICAgICAgICAgICAgICAgICAg ICAgICBjb25zdCB1bnNpZ25lZCBjaGFyIEZBUiAqLCB1bnNpZ25lZCkpOworKyAgICAgICAgICAg ICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgRkFSICosIHpfc2l6ZV90KSk7CisgICAg bG9jYWwgdW5zaWduZWQgbG9uZyBjcmMzMl9iaWcgT0YoKHVuc2lnbmVkIGxvbmcsCistICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciBGQVIgKiwgdW5zaWduZWQpKTsK KysgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyIEZBUiAqLCB6X3Np emVfdCkpOworICMgIGRlZmluZSBUQkxTIDgKKyAjZWxzZQorICMgIGRlZmluZSBUQkxTIDEKK0BA IC02OCwxNiArNDgsMTYgQEAKKyBsb2NhbCB1bnNpZ25lZCBsb25nIGdmMl9tYXRyaXhfdGltZXMg T0YoKHVuc2lnbmVkIGxvbmcgKm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdmVjKSk7CisgbG9jYWwgdm9pZCBnZjJfbWF0cml4X3Nx dWFyZSBPRigodW5zaWduZWQgbG9uZyAqc3F1YXJlLCB1bnNpZ25lZCBsb25nICptYXQpKTsKKy1s b2NhbCB1TG9uZyBjcmMzMl9jb21iaW5lXyh1TG9uZyBjcmMxLCB1TG9uZyBjcmMyLCB6X29mZjY0 X3QgbGVuMik7CisrbG9jYWwgdUxvbmcgY3JjMzJfY29tYmluZV8gT0YoKHVMb25nIGNyYzEsIHVM b25nIGNyYzIsIHpfb2ZmNjRfdCBsZW4yKSk7CisgCisgCisgI2lmZGVmIERZTkFNSUNfQ1JDX1RB QkxFCisgCisgbG9jYWwgdm9sYXRpbGUgaW50IGNyY190YWJsZV9lbXB0eSA9IDE7CistbG9jYWwg dW5zaWduZWQgbG9uZyBGQVIgY3JjX3RhYmxlW1RCTFNdWzI1Nl07CisrbG9jYWwgel9jcmNfdCBG QVIgY3JjX3RhYmxlW1RCTFNdWzI1Nl07CisgbG9jYWwgdm9pZCBtYWtlX2NyY190YWJsZSBPRigo dm9pZCkpOworICNpZmRlZiBNQUtFQ1JDSAorLSAgIGxvY2FsIHZvaWQgd3JpdGVfdGFibGUgT0Yo KEZJTEUgKiwgY29uc3QgdW5zaWduZWQgbG9uZyBGQVIgKikpOworKyAgIGxvY2FsIHZvaWQgd3Jp dGVfdGFibGUgT0YoKEZJTEUgKiwgY29uc3Qgel9jcmNfdCBGQVIgKikpOworICNlbmRpZiAvKiBN QUtFQ1JDSCAqLworIC8qCisgICBHZW5lcmF0ZSB0YWJsZXMgZm9yIGEgYnl0ZS13aXNlIDMyLWJp dCBDUkMgY2FsY3VsYXRpb24gb24gdGhlIHBvbHlub21pYWw6CitAQCAtMTA3LDkgKzg3LDkgQEAg bG9jYWwgdm9pZCBtYWtlX2NyY190YWJsZSBPRigodm9pZCkpOworICovCisgbG9jYWwgdm9pZCBt YWtlX2NyY190YWJsZSgpCisgeworLSAgICB1bnNpZ25lZCBsb25nIGM7CisrICAgIHpfY3JjX3Qg YzsKKyAgICAgaW50IG4sIGs7CistICAgIHVuc2lnbmVkIGxvbmcgcG9seTsgICAgICAgICAgICAg ICAgIC8qIHBvbHlub21pYWwgZXhjbHVzaXZlLW9yIHBhdHRlcm4gKi8KKysgICAgel9jcmNfdCBw b2x5OyAgICAgICAgICAgICAgICAgICAgICAgLyogcG9seW5vbWlhbCBleGNsdXNpdmUtb3IgcGF0 dGVybiAqLworICAgICAvKiB0ZXJtcyBvZiBwb2x5bm9taWFsIGRlZmluaW5nIHRoaXMgY3JjIChl eGNlcHQgeF4zMik6ICovCisgICAgIHN0YXRpYyB2b2xhdGlsZSBpbnQgZmlyc3QgPSAxOyAgICAg IC8qIGZsYWcgdG8gbGltaXQgY29uY3VycmVudCBtYWtpbmcgKi8KKyAgICAgc3RhdGljIGNvbnN0 IHVuc2lnbmVkIGNoYXIgcFtdID0gezAsMSwyLDQsNSw3LDgsMTAsMTEsMTIsMTYsMjIsMjMsMjZ9 OworQEAgLTEyMSwxMyArMTAxLDEzIEBAIGxvY2FsIHZvaWQgbWFrZV9jcmNfdGFibGUoKQorICAg ICAgICAgZmlyc3QgPSAwOworIAorICAgICAgICAgLyogbWFrZSBleGNsdXNpdmUtb3IgcGF0dGVy biBmcm9tIHBvbHlub21pYWwgKDB4ZWRiODgzMjBVTCkgKi8KKy0gICAgICAgIHBvbHkgPSAwVUw7 CisrICAgICAgICBwb2x5ID0gMDsKKyAgICAgICAgIGZvciAobiA9IDA7IG4gPCAoaW50KShzaXpl b2YocCkvc2l6ZW9mKHVuc2lnbmVkIGNoYXIpKTsgbisrKQorLSAgICAgICAgICAgIHBvbHkgfD0g MVVMIDw8ICgzMSAtIHBbbl0pOworKyAgICAgICAgICAgIHBvbHkgfD0gKHpfY3JjX3QpMSA8PCAo MzEgLSBwW25dKTsKKyAKKyAgICAgICAgIC8qIGdlbmVyYXRlIGEgY3JjIGZvciBldmVyeSA4LWJp dCB2YWx1ZSAqLworICAgICAgICAgZm9yIChuID0gMDsgbiA8IDI1NjsgbisrKSB7CistICAgICAg ICAgICAgYyA9ICh1bnNpZ25lZCBsb25nKW47CisrICAgICAgICAgICAgYyA9ICh6X2NyY190KW47 CisgICAgICAgICAgICAgZm9yIChrID0gMDsgayA8IDg7IGsrKykKKyAgICAgICAgICAgICAgICAg YyA9IGMgJiAxID8gcG9seSBeIChjID4+IDEpIDogYyA+PiAxOworICAgICAgICAgICAgIGNyY190 YWJsZVswXVtuXSA9IGM7CitAQCAtMTM4LDExICsxMTgsMTEgQEAgbG9jYWwgdm9pZCBtYWtlX2Ny Y190YWJsZSgpCisgICAgICAgICAgICBhbmQgdGhlbiB0aGUgYnl0ZSByZXZlcnNhbCBvZiB0aG9z ZSBhcyB3ZWxsIGFzIHRoZSBmaXJzdCB0YWJsZSAqLworICAgICAgICAgZm9yIChuID0gMDsgbiA8 IDI1NjsgbisrKSB7CisgICAgICAgICAgICAgYyA9IGNyY190YWJsZVswXVtuXTsKKy0gICAgICAg ICAgICBjcmNfdGFibGVbNF1bbl0gPSBSRVYoYyk7CisrICAgICAgICAgICAgY3JjX3RhYmxlWzRd W25dID0gWlNXQVAzMihjKTsKKyAgICAgICAgICAgICBmb3IgKGsgPSAxOyBrIDwgNDsgaysrKSB7 CisgICAgICAgICAgICAgICAgIGMgPSBjcmNfdGFibGVbMF1bYyAmIDB4ZmZdIF4gKGMgPj4gOCk7 CisgICAgICAgICAgICAgICAgIGNyY190YWJsZVtrXVtuXSA9IGM7CistICAgICAgICAgICAgICAg IGNyY190YWJsZVtrICsgNF1bbl0gPSBSRVYoYyk7CisrICAgICAgICAgICAgICAgIGNyY190YWJs ZVtrICsgNF1bbl0gPSBaU1dBUDMyKGMpOworICAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKyAj ZW5kaWYgLyogQllGT1VSICovCitAQCAtMTY0LDcgKzE0NCw3IEBAIGxvY2FsIHZvaWQgbWFrZV9j cmNfdGFibGUoKQorICAgICAgICAgaWYgKG91dCA9PSBOVUxMKSByZXR1cm47CisgICAgICAgICBm cHJpbnRmKG91dCwgIi8qIGNyYzMyLmggLS0gdGFibGVzIGZvciByYXBpZCBDUkMgY2FsY3VsYXRp b25cbiIpOworICAgICAgICAgZnByaW50ZihvdXQsICIgKiBHZW5lcmF0ZWQgYXV0b21hdGljYWxs eSBieSBjcmMzMi5jXG4gKi9cblxuIik7CistICAgICAgICBmcHJpbnRmKG91dCwgImxvY2FsIGNv bnN0IHVuc2lnbmVkIGxvbmcgRkFSICIpOworKyAgICAgICAgZnByaW50ZihvdXQsICJsb2NhbCBj b25zdCB6X2NyY190IEZBUiAiKTsKKyAgICAgICAgIGZwcmludGYob3V0LCAiY3JjX3RhYmxlW1RC TFNdWzI1Nl0gPVxue1xuICB7XG4iKTsKKyAgICAgICAgIHdyaXRlX3RhYmxlKG91dCwgY3JjX3Rh YmxlWzBdKTsKKyAjICBpZmRlZiBCWUZPVVIKK0BAIC0xODQsMTIgKzE2NCwxMyBAQCBsb2NhbCB2 b2lkIG1ha2VfY3JjX3RhYmxlKCkKKyAjaWZkZWYgTUFLRUNSQ0gKKyBsb2NhbCB2b2lkIHdyaXRl X3RhYmxlKG91dCwgdGFibGUpCisgICAgIEZJTEUgKm91dDsKKy0gICAgY29uc3QgdW5zaWduZWQg bG9uZyBGQVIgKnRhYmxlOworKyAgICBjb25zdCB6X2NyY190IEZBUiAqdGFibGU7CisgeworICAg ICBpbnQgbjsKKyAKKyAgICAgZm9yIChuID0gMDsgbiA8IDI1NjsgbisrKQorLSAgICAgICAgZnBy aW50ZihvdXQsICIlczB4JTA4bHhVTCVzIiwgbiAlIDUgPyAiIiA6ICIgICAgIiwgdGFibGVbbl0s CisrICAgICAgICBmcHJpbnRmKG91dCwgIiVzMHglMDhseFVMJXMiLCBuICUgNSA/ICIiIDogIiAg ICAiLAorKyAgICAgICAgICAgICAgICAodW5zaWduZWQgbG9uZykodGFibGVbbl0pLAorICAgICAg ICAgICAgICAgICBuID09IDI1NSA/ICJcbiIgOiAobiAlIDUgPT0gNCA/ICIsXG4iIDogIiwgIikp OworIH0KKyAjZW5kaWYgLyogTUFLRUNSQ0ggKi8KK0BAIC0yMDQsMTMgKzE4NSwxMyBAQCBsb2Nh bCB2b2lkIHdyaXRlX3RhYmxlKG91dCwgdGFibGUpCisgLyogPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAq IFRoaXMgZnVuY3Rpb24gY2FuIGJlIHVzZWQgYnkgYXNtIHZlcnNpb25zIG9mIGNyYzMyKCkKKyAg Ki8KKy1jb25zdCB1bnNpZ25lZCBsb25nIEZBUiAqIFpFWFBPUlQgZ2V0X2NyY190YWJsZSgpCisr Y29uc3Qgel9jcmNfdCBGQVIgKiBaRVhQT1JUIGdldF9jcmNfdGFibGUoKQorIHsKKyAjaWZkZWYg RFlOQU1JQ19DUkNfVEFCTEUKKyAgICAgaWYgKGNyY190YWJsZV9lbXB0eSkKKyAgICAgICAgIG1h a2VfY3JjX3RhYmxlKCk7CisgI2VuZGlmIC8qIERZTkFNSUNfQ1JDX1RBQkxFICovCistICAgIHJl dHVybiAoY29uc3QgdW5zaWduZWQgbG9uZyBGQVIgKiljcmNfdGFibGU7CisrICAgIHJldHVybiAo Y29uc3Qgel9jcmNfdCBGQVIgKiljcmNfdGFibGU7CisgfQorIAorIC8qID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0gKi8KK0BAIC0yMTgsMTAgKzE5OSwxMCBAQCBjb25zdCB1bnNpZ25lZCBsb25nIEZBUiAqIFpF WFBPUlQgZ2V0X2NyY190YWJsZSgpCisgI2RlZmluZSBETzggRE8xOyBETzE7IERPMTsgRE8xOyBE TzE7IERPMTsgRE8xOyBETzEKKyAKKyAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCistdW5zaWduZWQg bG9uZyBaRVhQT1JUIGNyYzMyKGNyYywgYnVmLCBsZW4pCisrdW5zaWduZWQgbG9uZyBaRVhQT1JU IGNyYzMyX3ooY3JjLCBidWYsIGxlbikKKyAgICAgdW5zaWduZWQgbG9uZyBjcmM7CisgICAgIGNv bnN0IHVuc2lnbmVkIGNoYXIgRkFSICpidWY7CistICAgIHVJbnQgbGVuOworKyAgICB6X3NpemVf dCBsZW47CisgeworICAgICBpZiAoYnVmID09IFpfTlVMTCkgcmV0dXJuIDBVTDsKKyAKK0BAIC0y MzIsNyArMjEzLDcgQEAgdW5zaWduZWQgbG9uZyBaRVhQT1JUIGNyYzMyKGNyYywgYnVmLCBsZW4p CisgCisgI2lmZGVmIEJZRk9VUgorICAgICBpZiAoc2l6ZW9mKHZvaWQgKikgPT0gc2l6ZW9mKHB0 cmRpZmZfdCkpIHsKKy0gICAgICAgIHU0IGVuZGlhbjsKKysgICAgICAgIHpfY3JjX3QgZW5kaWFu OworIAorICAgICAgICAgZW5kaWFuID0gMTsKKyAgICAgICAgIGlmICgqKCh1bnNpZ25lZCBjaGFy ICopKCZlbmRpYW4pKSkKK0BAIC0yNTIsOCArMjMzLDI5IEBAIHVuc2lnbmVkIGxvbmcgWkVYUE9S VCBjcmMzMihjcmMsIGJ1ZiwgbGVuKQorICAgICByZXR1cm4gY3JjIF4gMHhmZmZmZmZmZlVMOwor IH0KKyAKKysvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCisrdW5zaWduZWQgbG9uZyBaRVhQT1JUIGNy YzMyKGNyYywgYnVmLCBsZW4pCisrICAgIHVuc2lnbmVkIGxvbmcgY3JjOworKyAgICBjb25zdCB1 bnNpZ25lZCBjaGFyIEZBUiAqYnVmOworKyAgICB1SW50IGxlbjsKKyt7CisrICAgIHJldHVybiBj cmMzMl96KGNyYywgYnVmLCBsZW4pOworK30KKysKKyAjaWZkZWYgQllGT1VSCisgCisrLyoKKysg ICBUaGlzIEJZRk9VUiBjb2RlIGFjY2Vzc2VzIHRoZSBwYXNzZWQgdW5zaWduZWQgY2hhciAqIGJ1 ZmZlciB3aXRoIGEgMzItYml0CisrICAgaW50ZWdlciBwb2ludGVyIHR5cGUuIFRoaXMgdmlvbGF0 ZXMgdGhlIHN0cmljdCBhbGlhc2luZyBydWxlLCB3aGVyZSBhCisrICAgY29tcGlsZXIgY2FuIGFz c3VtZSwgZm9yIG9wdGltaXphdGlvbiBwdXJwb3NlcywgdGhhdCB0d28gcG9pbnRlcnMgdG8KKysg ICBmdW5kYW1lbnRhbGx5IGRpZmZlcmVudCB0eXBlcyB3b24ndCBldmVyIHBvaW50IHRvIHRoZSBz YW1lIG1lbW9yeS4gVGhpcyBjYW4KKysgICBtYW5pZmVzdCBhcyBhIHByb2JsZW0gb25seSBpZiBv bmUgb2YgdGhlIHBvaW50ZXJzIGlzIHdyaXR0ZW4gdG8uIFRoaXMgY29kZQorKyAgIG9ubHkgcmVh ZHMgZnJvbSB0aG9zZSBwb2ludGVycy4gU28gbG9uZyBhcyB0aGlzIGNvZGUgcmVtYWlucyBpc29s YXRlZCBpbgorKyAgIHRoaXMgY29tcGlsYXRpb24gdW5pdCwgdGhlcmUgd29uJ3QgYmUgYSBwcm9i bGVtLiBGb3IgdGhpcyByZWFzb24sIHRoaXMgY29kZQorKyAgIHNob3VsZCBub3QgYmUgY29waWVk IGFuZCBwYXN0ZWQgaW50byBhIGNvbXBpbGF0aW9uIHVuaXQgaW4gd2hpY2ggb3RoZXIgY29kZQor KyAgIHdyaXRlcyB0byB0aGUgYnVmZmVyIHRoYXQgaXMgcGFzc2VkIHRvIHRoZXNlIHJvdXRpbmVz LgorKyAqLworKworIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KKyAjZGVmaW5lIERPTElUNCBjIF49 ICpidWY0Kys7IFwKKyAgICAgICAgIGMgPSBjcmNfdGFibGVbM11bYyAmIDB4ZmZdIF4gY3JjX3Rh YmxlWzJdWyhjID4+IDgpICYgMHhmZl0gXiBcCitAQCAtMjY0LDE5ICsyNjYsMTkgQEAgdW5zaWdu ZWQgbG9uZyBaRVhQT1JUIGNyYzMyKGNyYywgYnVmLCBsZW4pCisgbG9jYWwgdW5zaWduZWQgbG9u ZyBjcmMzMl9saXR0bGUoY3JjLCBidWYsIGxlbikKKyAgICAgdW5zaWduZWQgbG9uZyBjcmM7Cisg ICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgRkFSICpidWY7CistICAgIHVuc2lnbmVkIGxlbjsKKysg ICAgel9zaXplX3QgbGVuOworIHsKKy0gICAgcmVnaXN0ZXIgdTQgYzsKKy0gICAgcmVnaXN0ZXIg Y29uc3QgdTQgRkFSICpidWY0OworKyAgICByZWdpc3RlciB6X2NyY190IGM7CisrICAgIHJlZ2lz dGVyIGNvbnN0IHpfY3JjX3QgRkFSICpidWY0OworIAorLSAgICBjID0gKHU0KWNyYzsKKysgICAg YyA9ICh6X2NyY190KWNyYzsKKyAgICAgYyA9IH5jOworICAgICB3aGlsZSAobGVuICYmICgocHRy ZGlmZl90KWJ1ZiAmIDMpKSB7CisgICAgICAgICBjID0gY3JjX3RhYmxlWzBdWyhjIF4gKmJ1Zisr KSAmIDB4ZmZdIF4gKGMgPj4gOCk7CisgICAgICAgICBsZW4tLTsKKyAgICAgfQorIAorLSAgICBi dWY0ID0gKGNvbnN0IHU0IEZBUiAqKShjb25zdCB2b2lkIEZBUiAqKWJ1ZjsKKysgICAgYnVmNCA9 IChjb25zdCB6X2NyY190IEZBUiAqKShjb25zdCB2b2lkIEZBUiAqKWJ1ZjsKKyAgICAgd2hpbGUg KGxlbiA+PSAzMikgeworICAgICAgICAgRE9MSVQzMjsKKyAgICAgICAgIGxlbiAtPSAzMjsKK0BA IC0yOTUsNyArMjk3LDcgQEAgbG9jYWwgdW5zaWduZWQgbG9uZyBjcmMzMl9saXR0bGUoY3JjLCBi dWYsIGxlbikKKyB9CisgCisgLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLworLSNkZWZpbmUgRE9CSUc0 IGMgXj0gKisrYnVmNDsgXAorKyNkZWZpbmUgRE9CSUc0IGMgXj0gKmJ1ZjQrKzsgXAorICAgICAg ICAgYyA9IGNyY190YWJsZVs0XVtjICYgMHhmZl0gXiBjcmNfdGFibGVbNV1bKGMgPj4gOCkgJiAw eGZmXSBeIFwKKyAgICAgICAgICAgICBjcmNfdGFibGVbNl1bKGMgPj4gMTYpICYgMHhmZl0gXiBj cmNfdGFibGVbN11bYyA+PiAyNF0KKyAjZGVmaW5lIERPQklHMzIgRE9CSUc0OyBET0JJRzQ7IERP QklHNDsgRE9CSUc0OyBET0JJRzQ7IERPQklHNDsgRE9CSUc0OyBET0JJRzQKK0BAIC0zMDQsMjAg KzMwNiwxOSBAQCBsb2NhbCB1bnNpZ25lZCBsb25nIGNyYzMyX2xpdHRsZShjcmMsIGJ1ZiwgbGVu KQorIGxvY2FsIHVuc2lnbmVkIGxvbmcgY3JjMzJfYmlnKGNyYywgYnVmLCBsZW4pCisgICAgIHVu c2lnbmVkIGxvbmcgY3JjOworICAgICBjb25zdCB1bnNpZ25lZCBjaGFyIEZBUiAqYnVmOworLSAg ICB1bnNpZ25lZCBsZW47CisrICAgIHpfc2l6ZV90IGxlbjsKKyB7CistICAgIHJlZ2lzdGVyIHU0 IGM7CistICAgIHJlZ2lzdGVyIGNvbnN0IHU0IEZBUiAqYnVmNDsKKysgICAgcmVnaXN0ZXIgel9j cmNfdCBjOworKyAgICByZWdpc3RlciBjb25zdCB6X2NyY190IEZBUiAqYnVmNDsKKyAKKy0gICAg YyA9IFJFVigodTQpY3JjKTsKKysgICAgYyA9IFpTV0FQMzIoKHpfY3JjX3QpY3JjKTsKKyAgICAg YyA9IH5jOworICAgICB3aGlsZSAobGVuICYmICgocHRyZGlmZl90KWJ1ZiAmIDMpKSB7CisgICAg ICAgICBjID0gY3JjX3RhYmxlWzRdWyhjID4+IDI0KSBeICpidWYrK10gXiAoYyA8PCA4KTsKKyAg ICAgICAgIGxlbi0tOworICAgICB9CisgCistICAgIGJ1ZjQgPSAoY29uc3QgdTQgRkFSICopKGNv bnN0IHZvaWQgRkFSICopYnVmOworLSAgICBidWY0LS07CisrICAgIGJ1ZjQgPSAoY29uc3Qgel9j cmNfdCBGQVIgKikoY29uc3Qgdm9pZCBGQVIgKilidWY7CisgICAgIHdoaWxlIChsZW4gPj0gMzIp IHsKKyAgICAgICAgIERPQklHMzI7CisgICAgICAgICBsZW4gLT0gMzI7CitAQCAtMzI2LDE0ICsz MjcsMTMgQEAgbG9jYWwgdW5zaWduZWQgbG9uZyBjcmMzMl9iaWcoY3JjLCBidWYsIGxlbikKKyAg ICAgICAgIERPQklHNDsKKyAgICAgICAgIGxlbiAtPSA0OworICAgICB9CistICAgIGJ1ZjQrKzsK KyAgICAgYnVmID0gKGNvbnN0IHVuc2lnbmVkIGNoYXIgRkFSICopYnVmNDsKKyAKKyAgICAgaWYg KGxlbikgZG8geworICAgICAgICAgYyA9IGNyY190YWJsZVs0XVsoYyA+PiAyNCkgXiAqYnVmKytd IF4gKGMgPDwgOCk7CisgICAgIH0gd2hpbGUgKC0tbGVuKTsKKyAgICAgYyA9IH5jOworLSAgICBy ZXR1cm4gKHVuc2lnbmVkIGxvbmcpKFJFVihjKSk7CisrICAgIHJldHVybiAodW5zaWduZWQgbG9u ZykoWlNXQVAzMihjKSk7CisgfQorIAorICNlbmRpZiAvKiBCWUZPVVIgKi8KK2RpZmYgLS1naXQg YS9jb20zMi9saWIvemxpYi9jcmMzMi5oIGIvY29tMzIvbGliL3psaWIvY3JjMzIuaAoraW5kZXgg ODA1M2I2MTEuLjllMGM3NzgxIDEwMDY0NAorLS0tIGEvY29tMzIvbGliL3psaWIvY3JjMzIuaAor KysrIGIvY29tMzIvbGliL3psaWIvY3JjMzIuaAorQEAgLTIsNyArMiw3IEBACisgICogR2VuZXJh dGVkIGF1dG9tYXRpY2FsbHkgYnkgY3JjMzIuYworICAqLworIAorLWxvY2FsIGNvbnN0IHVuc2ln bmVkIGxvbmcgRkFSIGNyY190YWJsZVtUQkxTXVsyNTZdID0KKytsb2NhbCBjb25zdCB6X2NyY190 IEZBUiBjcmNfdGFibGVbVEJMU11bMjU2XSA9CisgeworICAgeworICAgICAweDAwMDAwMDAwVUws IDB4NzcwNzMwOTZVTCwgMHhlZTBlNjEyY1VMLCAweDk5MDk1MWJhVUwsIDB4MDc2ZGM0MTlVTCwK K2RpZmYgLS1naXQgYS9jb20zMi9saWIvemxpYi9kZWZsYXRlLmMgYi9jb20zMi9saWIvemxpYi9k ZWZsYXRlLmMKK2luZGV4IDFhMzc1NjM0Li4xZWM3NjE0NCAxMDA2NDQKKy0tLSBhL2NvbTMyL2xp Yi96bGliL2RlZmxhdGUuYworKysrIGIvY29tMzIvbGliL3psaWIvZGVmbGF0ZS5jCitAQCAtMSw1 ICsxLDUgQEAKKyAvKiBkZWZsYXRlLmMgLS0gY29tcHJlc3MgZGF0YSB1c2luZyB0aGUgZGVmbGF0 aW9uIGFsZ29yaXRobQorLSAqIENvcHlyaWdodCAoQykgMTk5NS0yMDEwIEplYW4tbG91cCBHYWls bHkgYW5kIE1hcmsgQWRsZXIKKysgKiBDb3B5cmlnaHQgKEMpIDE5OTUtMjAxNyBKZWFuLWxvdXAg R2FpbGx5IGFuZCBNYXJrIEFkbGVyCisgICogRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9u IGFuZCB1c2UsIHNlZSBjb3B5cmlnaHQgbm90aWNlIGluIHpsaWIuaAorICAqLworIAorQEAgLTM3 LDcgKzM3LDcgQEAKKyAgKiAgUkVGRVJFTkNFUworICAqCisgICogICAgICBEZXV0c2NoLCBMLlAu LCJERUZMQVRFIENvbXByZXNzZWQgRGF0YSBGb3JtYXQgU3BlY2lmaWNhdGlvbiIuCistICogICAg ICBBdmFpbGFibGUgaW4gaHR0cDovL3d3dy5pZXRmLm9yZy9yZmMvcmZjMTk1MS50eHQKKysgKiAg ICAgIEF2YWlsYWJsZSBpbiBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMxOTUxCisgICoK KyAgKiAgICAgIEEgZGVzY3JpcHRpb24gb2YgdGhlIFJhYmluIGFuZCBLYXJwIGFsZ29yaXRobSBp cyBnaXZlbiBpbiB0aGUgYm9vaworICAqICAgICAgICAgIkFsZ29yaXRobXMiIGJ5IFIuIFNlZGdl d2ljaywgQWRkaXNvbi1XZXNsZXksIHAyNTIuCitAQCAtNTIsNyArNTIsNyBAQAorICNpbmNsdWRl ICJkZWZsYXRlLmgiCisgCisgY29uc3QgY2hhciBkZWZsYXRlX2NvcHlyaWdodFtdID0KKy0gICAi IGRlZmxhdGUgMS4yLjUgQ29weXJpZ2h0IDE5OTUtMjAxMCBKZWFuLWxvdXAgR2FpbGx5IGFuZCBN YXJrIEFkbGVyICI7CisrICAgIiBkZWZsYXRlIDEuMi4xMSBDb3B5cmlnaHQgMTk5NS0yMDE3IEpl YW4tbG91cCBHYWlsbHkgYW5kIE1hcmsgQWRsZXIgIjsKKyAvKgorICAgSWYgeW91IHVzZSB0aGUg emxpYiBsaWJyYXJ5IGluIGEgcHJvZHVjdCwgYW4gYWNrbm93bGVkZ21lbnQgaXMgd2VsY29tZQor ICAgaW4gdGhlIGRvY3VtZW50YXRpb24gb2YgeW91ciBwcm9kdWN0LiBJZiBmb3Igc29tZSByZWFz b24geW91IGNhbm5vdAorQEAgLTczLDYgKzczLDggQEAgdHlwZWRlZiBlbnVtIHsKKyB0eXBlZGVm IGJsb2NrX3N0YXRlICgqY29tcHJlc3NfZnVuYykgT0YoKGRlZmxhdGVfc3RhdGUgKnMsIGludCBm bHVzaCkpOworIC8qIENvbXByZXNzaW9uIGZ1bmN0aW9uLiBSZXR1cm5zIHRoZSBibG9jayBzdGF0 ZSBhZnRlciB0aGUgY2FsbC4gKi8KKyAKKytsb2NhbCBpbnQgZGVmbGF0ZVN0YXRlQ2hlY2sgICAg ICBPRigoel9zdHJlYW1wIHN0cm0pKTsKKytsb2NhbCB2b2lkIHNsaWRlX2hhc2ggICAgIE9GKChk ZWZsYXRlX3N0YXRlICpzKSk7CisgbG9jYWwgdm9pZCBmaWxsX3dpbmRvdyAgICBPRigoZGVmbGF0 ZV9zdGF0ZSAqcykpOworIGxvY2FsIGJsb2NrX3N0YXRlIGRlZmxhdGVfc3RvcmVkIE9GKChkZWZs YXRlX3N0YXRlICpzLCBpbnQgZmx1c2gpKTsKKyBsb2NhbCBibG9ja19zdGF0ZSBkZWZsYXRlX2Zh c3QgICBPRigoZGVmbGF0ZV9zdGF0ZSAqcywgaW50IGZsdXNoKSk7CitAQCAtODQsMTUgKzg2LDE2 IEBAIGxvY2FsIGJsb2NrX3N0YXRlIGRlZmxhdGVfaHVmZiAgIE9GKChkZWZsYXRlX3N0YXRlICpz LCBpbnQgZmx1c2gpKTsKKyBsb2NhbCB2b2lkIGxtX2luaXQgICAgICAgIE9GKChkZWZsYXRlX3N0 YXRlICpzKSk7CisgbG9jYWwgdm9pZCBwdXRTaG9ydE1TQiAgICBPRigoZGVmbGF0ZV9zdGF0ZSAq cywgdUludCBiKSk7CisgbG9jYWwgdm9pZCBmbHVzaF9wZW5kaW5nICBPRigoel9zdHJlYW1wIHN0 cm0pKTsKKy1sb2NhbCBpbnQgcmVhZF9idWYgICAgICAgIE9GKCh6X3N0cmVhbXAgc3RybSwgQnl0 ZWYgKmJ1ZiwgdW5zaWduZWQgc2l6ZSkpOworK2xvY2FsIHVuc2lnbmVkIHJlYWRfYnVmICAgT0Yo KHpfc3RyZWFtcCBzdHJtLCBCeXRlZiAqYnVmLCB1bnNpZ25lZCBzaXplKSk7CisgI2lmZGVmIEFT TVYKKysjICBwcmFnbWEgbWVzc2FnZSgiQXNzZW1ibGVyIGNvZGUgbWF5IGhhdmUgYnVncyAtLSB1 c2UgYXQgeW91ciBvd24gcmlzayIpCisgICAgICAgdm9pZCBtYXRjaF9pbml0IE9GKCh2b2lkKSk7 IC8qIGFzbSBjb2RlIGluaXRpYWxpemF0aW9uICovCisgICAgICAgdUludCBsb25nZXN0X21hdGNo ICBPRigoZGVmbGF0ZV9zdGF0ZSAqcywgSVBvcyBjdXJfbWF0Y2gpKTsKKyAjZWxzZQorIGxvY2Fs IHVJbnQgbG9uZ2VzdF9tYXRjaCAgT0YoKGRlZmxhdGVfc3RhdGUgKnMsIElQb3MgY3VyX21hdGNo KSk7CisgI2VuZGlmCisgCistI2lmZGVmIERFQlVHX1pMSUIKKysjaWZkZWYgWkxJQl9ERUJVRwor IGxvY2FsICB2b2lkIGNoZWNrX21hdGNoIE9GKChkZWZsYXRlX3N0YXRlICpzLCBJUG9zIHN0YXJ0 LCBJUG9zIG1hdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGVuZ3RoKSk7 CisgI2VuZGlmCitAQCAtMTQ4LDE4ICsxNTEsMTQgQEAgbG9jYWwgY29uc3QgY29uZmlnIGNvbmZp Z3VyYXRpb25fdGFibGVbMTBdID0geworICAqIG1lYW5pbmcuCisgICovCisgCistI2RlZmluZSBF UVVBTCAwCistLyogcmVzdWx0IG9mIG1lbWNtcCBmb3IgZXF1YWwgc3RyaW5ncyAqLworLQorLSNp Zm5kZWYgTk9fRFVNTVlfREVDTAorLXN0cnVjdCBzdGF0aWNfdHJlZV9kZXNjX3Mge2ludCBkdW1t eTt9OyAvKiBmb3IgYnVnZ3kgY29tcGlsZXJzICovCistI2VuZGlmCisrLyogcmFuayBaX0JMT0NL IGJldHdlZW4gWl9OT19GTFVTSCBhbmQgWl9QQVJUSUFMX0ZMVVNIICovCisrI2RlZmluZSBSQU5L KGYpICgoKGYpICogMikgLSAoKGYpID4gNCA/IDkgOiAwKSkKKyAKKyAvKiA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KKyAgKiBVcGRhdGUgYSBoYXNoIHZhbHVlIHdpdGggdGhlIGdpdmVuIGlucHV0IGJ5dGUK Ky0gKiBJTiAgYXNzZXJ0aW9uOiBhbGwgY2FsbHMgdG8gdG8gVVBEQVRFX0hBU0ggYXJlIG1hZGUg d2l0aCBjb25zZWN1dGl2ZQorLSAqICAgIGlucHV0IGNoYXJhY3RlcnMsIHNvIHRoYXQgYSBydW5u aW5nIGhhc2gga2V5IGNhbiBiZSBjb21wdXRlZCBmcm9tIHRoZQorLSAqICAgIHByZXZpb3VzIGtl eSBpbnN0ZWFkIG9mIGNvbXBsZXRlIHJlY2FsY3VsYXRpb24gZWFjaCB0aW1lLgorKyAqIElOICBh c3NlcnRpb246IGFsbCBjYWxscyB0byBVUERBVEVfSEFTSCBhcmUgbWFkZSB3aXRoIGNvbnNlY3V0 aXZlIGlucHV0CisrICogICAgY2hhcmFjdGVycywgc28gdGhhdCBhIHJ1bm5pbmcgaGFzaCBrZXkg Y2FuIGJlIGNvbXB1dGVkIGZyb20gdGhlIHByZXZpb3VzCisrICogICAga2V5IGluc3RlYWQgb2Yg Y29tcGxldGUgcmVjYWxjdWxhdGlvbiBlYWNoIHRpbWUuCisgICovCisgI2RlZmluZSBVUERBVEVf SEFTSChzLGgsYykgKGggPSAoKChoKTw8cy0+aGFzaF9zaGlmdCkgXiAoYykpICYgcy0+aGFzaF9t YXNrKQorIAorQEAgLTE3MCw5ICsxNjksOSBAQCBzdHJ1Y3Qgc3RhdGljX3RyZWVfZGVzY19zIHtp bnQgZHVtbXk7fTsgLyogZm9yIGJ1Z2d5IGNvbXBpbGVycyAqLworICAqIHRoZSBwcmV2aW91cyBs ZW5ndGggb2YgdGhlIGhhc2ggY2hhaW4uCisgICogSWYgdGhpcyBmaWxlIGlzIGNvbXBpbGVkIHdp dGggLURGQVNURVNULCB0aGUgY29tcHJlc3Npb24gbGV2ZWwgaXMgZm9yY2VkCisgICogdG8gMSwg YW5kIG5vIGhhc2ggY2hhaW5zIGFyZSBtYWludGFpbmVkLgorLSAqIElOICBhc3NlcnRpb246IGFs bCBjYWxscyB0byB0byBJTlNFUlRfU1RSSU5HIGFyZSBtYWRlIHdpdGggY29uc2VjdXRpdmUKKy0g KiAgICBpbnB1dCBjaGFyYWN0ZXJzIGFuZCB0aGUgZmlyc3QgTUlOX01BVENIIGJ5dGVzIG9mIHN0 ciBhcmUgdmFsaWQKKy0gKiAgICAoZXhjZXB0IGZvciB0aGUgbGFzdCBNSU5fTUFUQ0gtMSBieXRl cyBvZiB0aGUgaW5wdXQgZmlsZSkuCisrICogSU4gIGFzc2VydGlvbjogYWxsIGNhbGxzIHRvIElO U0VSVF9TVFJJTkcgYXJlIG1hZGUgd2l0aCBjb25zZWN1dGl2ZSBpbnB1dAorKyAqICAgIGNoYXJh Y3RlcnMgYW5kIHRoZSBmaXJzdCBNSU5fTUFUQ0ggYnl0ZXMgb2Ygc3RyIGFyZSB2YWxpZCAoZXhj ZXB0IGZvcgorKyAqICAgIHRoZSBsYXN0IE1JTl9NQVRDSC0xIGJ5dGVzIG9mIHRoZSBpbnB1dCBm aWxlKS4KKyAgKi8KKyAjaWZkZWYgRkFTVEVTVAorICNkZWZpbmUgSU5TRVJUX1NUUklORyhzLCBz dHIsIG1hdGNoX2hlYWQpIFwKK0BAIC0xOTQsNiArMTkzLDM3IEBAIHN0cnVjdCBzdGF0aWNfdHJl ZV9kZXNjX3Mge2ludCBkdW1teTt9OyAvKiBmb3IgYnVnZ3kgY29tcGlsZXJzICovCisgICAgIHMt PmhlYWRbcy0+aGFzaF9zaXplLTFdID0gTklMOyBcCisgICAgIHptZW16ZXJvKChCeXRlZiAqKXMt PmhlYWQsICh1bnNpZ25lZCkocy0+aGFzaF9zaXplLTEpKnNpemVvZigqcy0+aGVhZCkpOworIAor Ky8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQorKyAqIFNsaWRlIHRoZSBoYXNoIHRhYmxlIHdoZW4gc2xp ZGluZyB0aGUgd2luZG93IGRvd24gKGNvdWxkIGJlIGF2b2lkZWQgd2l0aCAzMgorKyAqIGJpdCB2 YWx1ZXMgYXQgdGhlIGV4cGVuc2Ugb2YgbWVtb3J5IHVzYWdlKS4gV2Ugc2xpZGUgZXZlbiB3aGVu IGxldmVsID09IDAgdG8KKysgKiBrZWVwIHRoZSBoYXNoIHRhYmxlIGNvbnNpc3RlbnQgaWYgd2Ug c3dpdGNoIGJhY2sgdG8gbGV2ZWwgPiAwIGxhdGVyLgorKyAqLworK2xvY2FsIHZvaWQgc2xpZGVf aGFzaChzKQorKyAgICBkZWZsYXRlX3N0YXRlICpzOworK3sKKysgICAgdW5zaWduZWQgbiwgbTsK KysgICAgUG9zZiAqcDsKKysgICAgdUludCB3c2l6ZSA9IHMtPndfc2l6ZTsKKysKKysgICAgbiA9 IHMtPmhhc2hfc2l6ZTsKKysgICAgcCA9ICZzLT5oZWFkW25dOworKyAgICBkbyB7CisrICAgICAg ICBtID0gKi0tcDsKKysgICAgICAgICpwID0gKFBvcykobSA+PSB3c2l6ZSA/IG0gLSB3c2l6ZSA6 IE5JTCk7CisrICAgIH0gd2hpbGUgKC0tbik7CisrICAgIG4gPSB3c2l6ZTsKKysjaWZuZGVmIEZB U1RFU1QKKysgICAgcCA9ICZzLT5wcmV2W25dOworKyAgICBkbyB7CisrICAgICAgICBtID0gKi0t cDsKKysgICAgICAgICpwID0gKFBvcykobSA+PSB3c2l6ZSA/IG0gLSB3c2l6ZSA6IE5JTCk7Cisr ICAgICAgICAvKiBJZiBuIGlzIG5vdCBvbiBhbnkgaGFzaCBjaGFpbiwgcHJldltuXSBpcyBnYXJi YWdlIGJ1dAorKyAgICAgICAgICogaXRzIHZhbHVlIHdpbGwgbmV2ZXIgYmUgdXNlZC4KKysgICAg ICAgICAqLworKyAgICB9IHdoaWxlICgtLW4pOworKyNlbmRpZgorK30KKysKKyAvKiA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09ICovCisgaW50IFpFWFBPUlQgZGVmbGF0ZUluaXRfKHN0cm0sIGxldmVsLCB2ZXJz aW9uLCBzdHJlYW1fc2l6ZSkKKyAgICAgel9zdHJlYW1wIHN0cm07CitAQCAtMjM1LDEwICsyNjUs MTkgQEAgaW50IFpFWFBPUlQgZGVmbGF0ZUluaXQyXyhzdHJtLCBsZXZlbCwgbWV0aG9kLCB3aW5k b3dCaXRzLCBtZW1MZXZlbCwgc3RyYXRlZ3ksCisgCisgICAgIHN0cm0tPm1zZyA9IFpfTlVMTDsK KyAgICAgaWYgKHN0cm0tPnphbGxvYyA9PSAoYWxsb2NfZnVuYykwKSB7CisrI2lmZGVmIFpfU09M TworKyAgICAgICAgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOworKyNlbHNlCisgICAgICAgICBzdHJt LT56YWxsb2MgPSB6Y2FsbG9jOworICAgICAgICAgc3RybS0+b3BhcXVlID0gKHZvaWRwZikwOwor KyNlbmRpZgorICAgICB9CistICAgIGlmIChzdHJtLT56ZnJlZSA9PSAoZnJlZV9mdW5jKTApIHN0 cm0tPnpmcmVlID0gemNmcmVlOworKyAgICBpZiAoc3RybS0+emZyZWUgPT0gKGZyZWVfZnVuYykw KQorKyNpZmRlZiBaX1NPTE8KKysgICAgICAgIHJldHVybiBaX1NUUkVBTV9FUlJPUjsKKysjZWxz ZQorKyAgICAgICAgc3RybS0+emZyZWUgPSB6Y2ZyZWU7CisrI2VuZGlmCisgCisgI2lmZGVmIEZB U1RFU1QKKyAgICAgaWYgKGxldmVsICE9IDApIGxldmVsID0gMTsKK0BAIC0yNTgsNyArMjk3LDcg QEAgaW50IFpFWFBPUlQgZGVmbGF0ZUluaXQyXyhzdHJtLCBsZXZlbCwgbWV0aG9kLCB3aW5kb3dC aXRzLCBtZW1MZXZlbCwgc3RyYXRlZ3ksCisgI2VuZGlmCisgICAgIGlmIChtZW1MZXZlbCA8IDEg fHwgbWVtTGV2ZWwgPiBNQVhfTUVNX0xFVkVMIHx8IG1ldGhvZCAhPSBaX0RFRkxBVEVEIHx8Cisg ICAgICAgICB3aW5kb3dCaXRzIDwgOCB8fCB3aW5kb3dCaXRzID4gMTUgfHwgbGV2ZWwgPCAwIHx8 IGxldmVsID4gOSB8fAorLSAgICAgICAgc3RyYXRlZ3kgPCAwIHx8IHN0cmF0ZWd5ID4gWl9GSVhF RCkgeworKyAgICAgICAgc3RyYXRlZ3kgPCAwIHx8IHN0cmF0ZWd5ID4gWl9GSVhFRCB8fCAod2lu ZG93Qml0cyA9PSA4ICYmIHdyYXAgIT0gMSkpIHsKKyAgICAgICAgIHJldHVybiBaX1NUUkVBTV9F UlJPUjsKKyAgICAgfQorICAgICBpZiAod2luZG93Qml0cyA9PSA4KSB3aW5kb3dCaXRzID0gOTsg IC8qIHVudGlsIDI1Ni1ieXRlIHdpbmRvdyBidWcgZml4ZWQgKi8KK0BAIC0yNjYsMTQgKzMwNSwx NSBAQCBpbnQgWkVYUE9SVCBkZWZsYXRlSW5pdDJfKHN0cm0sIGxldmVsLCBtZXRob2QsIHdpbmRv d0JpdHMsIG1lbUxldmVsLCBzdHJhdGVneSwKKyAgICAgaWYgKHMgPT0gWl9OVUxMKSByZXR1cm4g Wl9NRU1fRVJST1I7CisgICAgIHN0cm0tPnN0YXRlID0gKHN0cnVjdCBpbnRlcm5hbF9zdGF0ZSBG QVIgKilzOworICAgICBzLT5zdHJtID0gc3RybTsKKysgICAgcy0+c3RhdHVzID0gSU5JVF9TVEFU RTsgICAgIC8qIHRvIHBhc3Mgc3RhdGUgdGVzdCBpbiBkZWZsYXRlUmVzZXQoKSAqLworIAorICAg ICBzLT53cmFwID0gd3JhcDsKKyAgICAgcy0+Z3poZWFkID0gWl9OVUxMOworLSAgICBzLT53X2Jp dHMgPSB3aW5kb3dCaXRzOworKyAgICBzLT53X2JpdHMgPSAodUludCl3aW5kb3dCaXRzOworICAg ICBzLT53X3NpemUgPSAxIDw8IHMtPndfYml0czsKKyAgICAgcy0+d19tYXNrID0gcy0+d19zaXpl IC0gMTsKKyAKKy0gICAgcy0+aGFzaF9iaXRzID0gbWVtTGV2ZWwgKyA3OworKyAgICBzLT5oYXNo X2JpdHMgPSAodUludCltZW1MZXZlbCArIDc7CisgICAgIHMtPmhhc2hfc2l6ZSA9IDEgPDwgcy0+ aGFzaF9iaXRzOworICAgICBzLT5oYXNoX21hc2sgPSBzLT5oYXNoX3NpemUgLSAxOworICAgICBz LT5oYXNoX3NoaWZ0ID0gICgocy0+aGFzaF9iaXRzK01JTl9NQVRDSC0xKS9NSU5fTUFUQ0gpOwor QEAgLTI5Myw3ICszMzMsNyBAQCBpbnQgWkVYUE9SVCBkZWZsYXRlSW5pdDJfKHN0cm0sIGxldmVs LCBtZXRob2QsIHdpbmRvd0JpdHMsIG1lbUxldmVsLCBzdHJhdGVneSwKKyAgICAgaWYgKHMtPndp bmRvdyA9PSBaX05VTEwgfHwgcy0+cHJldiA9PSBaX05VTEwgfHwgcy0+aGVhZCA9PSBaX05VTEwg fHwKKyAgICAgICAgIHMtPnBlbmRpbmdfYnVmID09IFpfTlVMTCkgeworICAgICAgICAgcy0+c3Rh dHVzID0gRklOSVNIX1NUQVRFOworLSAgICAgICAgc3RybS0+bXNnID0gKGNoYXIqKUVSUl9NU0co Wl9NRU1fRVJST1IpOworKyAgICAgICAgc3RybS0+bXNnID0gRVJSX01TRyhaX01FTV9FUlJPUik7 CisgICAgICAgICBkZWZsYXRlRW5kIChzdHJtKTsKKyAgICAgICAgIHJldHVybiBaX01FTV9FUlJP UjsKKyAgICAgfQorQEAgLTMwNyw2ICszNDcsMzEgQEAgaW50IFpFWFBPUlQgZGVmbGF0ZUluaXQy XyhzdHJtLCBsZXZlbCwgbWV0aG9kLCB3aW5kb3dCaXRzLCBtZW1MZXZlbCwgc3RyYXRlZ3ksCisg ICAgIHJldHVybiBkZWZsYXRlUmVzZXQoc3RybSk7CisgfQorIAorKy8qID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KKysgKiBDaGVjayBmb3IgYSB2YWxpZCBkZWZsYXRlIHN0cmVhbSBzdGF0ZS4gUmV0dXJuIDAg aWYgb2ssIDEgaWYgbm90LgorKyAqLworK2xvY2FsIGludCBkZWZsYXRlU3RhdGVDaGVjayAoc3Ry bSkKKysgICAgel9zdHJlYW1wIHN0cm07CisreworKyAgICBkZWZsYXRlX3N0YXRlICpzOworKyAg ICBpZiAoc3RybSA9PSBaX05VTEwgfHwKKysgICAgICAgIHN0cm0tPnphbGxvYyA9PSAoYWxsb2Nf ZnVuYykwIHx8IHN0cm0tPnpmcmVlID09IChmcmVlX2Z1bmMpMCkKKysgICAgICAgIHJldHVybiAx OworKyAgICBzID0gc3RybS0+c3RhdGU7CisrICAgIGlmIChzID09IFpfTlVMTCB8fCBzLT5zdHJt ICE9IHN0cm0gfHwgKHMtPnN0YXR1cyAhPSBJTklUX1NUQVRFICYmCisrI2lmZGVmIEdaSVAKKysg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+c3RhdHVzICE9IEda SVBfU1RBVEUgJiYKKysjZW5kaWYKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcy0+c3RhdHVzICE9IEVYVFJBX1NUQVRFICYmCisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHMtPnN0YXR1cyAhPSBOQU1FX1NUQVRFICYmCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPnN0YXR1cyAhPSBDT01N RU5UX1NUQVRFICYmCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHMtPnN0YXR1cyAhPSBIQ1JDX1NUQVRFICYmCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHMtPnN0YXR1cyAhPSBCVVNZX1NUQVRFICYmCisrICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPnN0YXR1cyAhPSBGSU5JU0hfU1RBVEUp KQorKyAgICAgICAgcmV0dXJuIDE7CisrICAgIHJldHVybiAwOworK30KKysKKyAvKiA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09ICovCisgaW50IFpFWFBPUlQgZGVmbGF0ZVNldERpY3Rpb25hcnkgKHN0cm0sIGRp Y3Rpb25hcnksIGRpY3RMZW5ndGgpCisgICAgIHpfc3RyZWFtcCBzdHJtOworQEAgLTMxNCw0OSAr Mzc5LDk3IEBAIGludCBaRVhQT1JUIGRlZmxhdGVTZXREaWN0aW9uYXJ5IChzdHJtLCBkaWN0aW9u YXJ5LCBkaWN0TGVuZ3RoKQorICAgICB1SW50ICBkaWN0TGVuZ3RoOworIHsKKyAgICAgZGVmbGF0 ZV9zdGF0ZSAqczsKKy0gICAgdUludCBsZW5ndGggPSBkaWN0TGVuZ3RoOworLSAgICB1SW50IG47 CistICAgIElQb3MgaGFzaF9oZWFkID0gMDsKKysgICAgdUludCBzdHIsIG47CisrICAgIGludCB3 cmFwOworKyAgICB1bnNpZ25lZCBhdmFpbDsKKysgICAgel9jb25zdCB1bnNpZ25lZCBjaGFyICpu ZXh0OworIAorLSAgICBpZiAoc3RybSA9PSBaX05VTEwgfHwgc3RybS0+c3RhdGUgPT0gWl9OVUxM IHx8IGRpY3Rpb25hcnkgPT0gWl9OVUxMIHx8CistICAgICAgICBzdHJtLT5zdGF0ZS0+d3JhcCA9 PSAyIHx8CistICAgICAgICAoc3RybS0+c3RhdGUtPndyYXAgPT0gMSAmJiBzdHJtLT5zdGF0ZS0+ c3RhdHVzICE9IElOSVRfU1RBVEUpKQorKyAgICBpZiAoZGVmbGF0ZVN0YXRlQ2hlY2soc3RybSkg fHwgZGljdGlvbmFyeSA9PSBaX05VTEwpCisgICAgICAgICByZXR1cm4gWl9TVFJFQU1fRVJST1I7 CistCisgICAgIHMgPSBzdHJtLT5zdGF0ZTsKKy0gICAgaWYgKHMtPndyYXApCisrICAgIHdyYXAg PSBzLT53cmFwOworKyAgICBpZiAod3JhcCA9PSAyIHx8ICh3cmFwID09IDEgJiYgcy0+c3RhdHVz ICE9IElOSVRfU1RBVEUpIHx8IHMtPmxvb2thaGVhZCkKKysgICAgICAgIHJldHVybiBaX1NUUkVB TV9FUlJPUjsKKysKKysgICAgLyogd2hlbiB1c2luZyB6bGliIHdyYXBwZXJzLCBjb21wdXRlIEFk bGVyLTMyIGZvciBwcm92aWRlZCBkaWN0aW9uYXJ5ICovCisrICAgIGlmICh3cmFwID09IDEpCisg ICAgICAgICBzdHJtLT5hZGxlciA9IGFkbGVyMzIoc3RybS0+YWRsZXIsIGRpY3Rpb25hcnksIGRp Y3RMZW5ndGgpOworKyAgICBzLT53cmFwID0gMDsgICAgICAgICAgICAgICAgICAgIC8qIGF2b2lk IGNvbXB1dGluZyBBZGxlci0zMiBpbiByZWFkX2J1ZiAqLworIAorLSAgICBpZiAobGVuZ3RoIDwg TUlOX01BVENIKSByZXR1cm4gWl9PSzsKKy0gICAgaWYgKGxlbmd0aCA+IHMtPndfc2l6ZSkgewor LSAgICAgICAgbGVuZ3RoID0gcy0+d19zaXplOworLSAgICAgICAgZGljdGlvbmFyeSArPSBkaWN0 TGVuZ3RoIC0gbGVuZ3RoOyAvKiB1c2UgdGhlIHRhaWwgb2YgdGhlIGRpY3Rpb25hcnkgKi8KKysg ICAgLyogaWYgZGljdGlvbmFyeSB3b3VsZCBmaWxsIHdpbmRvdywganVzdCByZXBsYWNlIHRoZSBo aXN0b3J5ICovCisrICAgIGlmIChkaWN0TGVuZ3RoID49IHMtPndfc2l6ZSkgeworKyAgICAgICAg aWYgKHdyYXAgPT0gMCkgeyAgICAgICAgICAgIC8qIGFscmVhZHkgZW1wdHkgb3RoZXJ3aXNlICov CisrICAgICAgICAgICAgQ0xFQVJfSEFTSChzKTsKKysgICAgICAgICAgICBzLT5zdHJzdGFydCA9 IDA7CisrICAgICAgICAgICAgcy0+YmxvY2tfc3RhcnQgPSAwTDsKKysgICAgICAgICAgICBzLT5p bnNlcnQgPSAwOworKyAgICAgICAgfQorKyAgICAgICAgZGljdGlvbmFyeSArPSBkaWN0TGVuZ3Ro IC0gcy0+d19zaXplOyAgLyogdXNlIHRoZSB0YWlsICovCisrICAgICAgICBkaWN0TGVuZ3RoID0g cy0+d19zaXplOworICAgICB9CistICAgIHptZW1jcHkocy0+d2luZG93LCBkaWN0aW9uYXJ5LCBs ZW5ndGgpOworLSAgICBzLT5zdHJzdGFydCA9IGxlbmd0aDsKKy0gICAgcy0+YmxvY2tfc3RhcnQg PSAobG9uZylsZW5ndGg7CisgCistICAgIC8qIEluc2VydCBhbGwgc3RyaW5ncyBpbiB0aGUgaGFz aCB0YWJsZSAoZXhjZXB0IGZvciB0aGUgbGFzdCB0d28gYnl0ZXMpLgorLSAgICAgKiBzLT5sb29r YWhlYWQgc3RheXMgbnVsbCwgc28gcy0+aW5zX2ggd2lsbCBiZSByZWNvbXB1dGVkIGF0IHRoZSBu ZXh0CistICAgICAqIGNhbGwgb2YgZmlsbF93aW5kb3cuCistICAgICAqLworLSAgICBzLT5pbnNf aCA9IHMtPndpbmRvd1swXTsKKy0gICAgVVBEQVRFX0hBU0gocywgcy0+aW5zX2gsIHMtPndpbmRv d1sxXSk7CistICAgIGZvciAobiA9IDA7IG4gPD0gbGVuZ3RoIC0gTUlOX01BVENIOyBuKyspIHsK Ky0gICAgICAgIElOU0VSVF9TVFJJTkcocywgbiwgaGFzaF9oZWFkKTsKKysgICAgLyogaW5zZXJ0 IGRpY3Rpb25hcnkgaW50byB3aW5kb3cgYW5kIGhhc2ggKi8KKysgICAgYXZhaWwgPSBzdHJtLT5h dmFpbF9pbjsKKysgICAgbmV4dCA9IHN0cm0tPm5leHRfaW47CisrICAgIHN0cm0tPmF2YWlsX2lu ID0gZGljdExlbmd0aDsKKysgICAgc3RybS0+bmV4dF9pbiA9ICh6X2NvbnN0IEJ5dGVmICopZGlj dGlvbmFyeTsKKysgICAgZmlsbF93aW5kb3cocyk7CisrICAgIHdoaWxlIChzLT5sb29rYWhlYWQg Pj0gTUlOX01BVENIKSB7CisrICAgICAgICBzdHIgPSBzLT5zdHJzdGFydDsKKysgICAgICAgIG4g PSBzLT5sb29rYWhlYWQgLSAoTUlOX01BVENILTEpOworKyAgICAgICAgZG8geworKyAgICAgICAg ICAgIFVQREFURV9IQVNIKHMsIHMtPmluc19oLCBzLT53aW5kb3dbc3RyICsgTUlOX01BVENILTFd KTsKKysjaWZuZGVmIEZBU1RFU1QKKysgICAgICAgICAgICBzLT5wcmV2W3N0ciAmIHMtPndfbWFz a10gPSBzLT5oZWFkW3MtPmluc19oXTsKKysjZW5kaWYKKysgICAgICAgICAgICBzLT5oZWFkW3Mt Pmluc19oXSA9IChQb3Mpc3RyOworKyAgICAgICAgICAgIHN0cisrOworKyAgICAgICAgfSB3aGls ZSAoLS1uKTsKKysgICAgICAgIHMtPnN0cnN0YXJ0ID0gc3RyOworKyAgICAgICAgcy0+bG9va2Fo ZWFkID0gTUlOX01BVENILTE7CisrICAgICAgICBmaWxsX3dpbmRvdyhzKTsKKyAgICAgfQorLSAg ICBpZiAoaGFzaF9oZWFkKSBoYXNoX2hlYWQgPSAwOyAgLyogdG8gbWFrZSBjb21waWxlciBoYXBw eSAqLworKyAgICBzLT5zdHJzdGFydCArPSBzLT5sb29rYWhlYWQ7CisrICAgIHMtPmJsb2NrX3N0 YXJ0ID0gKGxvbmcpcy0+c3Ryc3RhcnQ7CisrICAgIHMtPmluc2VydCA9IHMtPmxvb2thaGVhZDsK KysgICAgcy0+bG9va2FoZWFkID0gMDsKKysgICAgcy0+bWF0Y2hfbGVuZ3RoID0gcy0+cHJldl9s ZW5ndGggPSBNSU5fTUFUQ0gtMTsKKysgICAgcy0+bWF0Y2hfYXZhaWxhYmxlID0gMDsKKysgICAg c3RybS0+bmV4dF9pbiA9IG5leHQ7CisrICAgIHN0cm0tPmF2YWlsX2luID0gYXZhaWw7CisrICAg IHMtPndyYXAgPSB3cmFwOworICAgICByZXR1cm4gWl9PSzsKKyB9CisgCisgLyogPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PSAqLworLWludCBaRVhQT1JUIGRlZmxhdGVSZXNldCAoc3RybSkKKytpbnQgWkVYUE9S VCBkZWZsYXRlR2V0RGljdGlvbmFyeSAoc3RybSwgZGljdGlvbmFyeSwgZGljdExlbmd0aCkKKyAg ICAgel9zdHJlYW1wIHN0cm07CisrICAgIEJ5dGVmICpkaWN0aW9uYXJ5OworKyAgICB1SW50ICAq ZGljdExlbmd0aDsKKyB7CisgICAgIGRlZmxhdGVfc3RhdGUgKnM7CisrICAgIHVJbnQgbGVuOwor IAorLSAgICBpZiAoc3RybSA9PSBaX05VTEwgfHwgc3RybS0+c3RhdGUgPT0gWl9OVUxMIHx8Cist ICAgICAgICBzdHJtLT56YWxsb2MgPT0gKGFsbG9jX2Z1bmMpMCB8fCBzdHJtLT56ZnJlZSA9PSAo ZnJlZV9mdW5jKTApIHsKKysgICAgaWYgKGRlZmxhdGVTdGF0ZUNoZWNrKHN0cm0pKQorKyAgICAg ICAgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOworKyAgICBzID0gc3RybS0+c3RhdGU7CisrICAgIGxl biA9IHMtPnN0cnN0YXJ0ICsgcy0+bG9va2FoZWFkOworKyAgICBpZiAobGVuID4gcy0+d19zaXpl KQorKyAgICAgICAgbGVuID0gcy0+d19zaXplOworKyAgICBpZiAoZGljdGlvbmFyeSAhPSBaX05V TEwgJiYgbGVuKQorKyAgICAgICAgem1lbWNweShkaWN0aW9uYXJ5LCBzLT53aW5kb3cgKyBzLT5z dHJzdGFydCArIHMtPmxvb2thaGVhZCAtIGxlbiwgbGVuKTsKKysgICAgaWYgKGRpY3RMZW5ndGgg IT0gWl9OVUxMKQorKyAgICAgICAgKmRpY3RMZW5ndGggPSBsZW47CisrICAgIHJldHVybiBaX09L OworK30KKysKKysvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCisraW50IFpFWFBPUlQgZGVmbGF0ZVJl c2V0S2VlcCAoc3RybSkKKysgICAgel9zdHJlYW1wIHN0cm07CisreworKyAgICBkZWZsYXRlX3N0 YXRlICpzOworKworKyAgICBpZiAoZGVmbGF0ZVN0YXRlQ2hlY2soc3RybSkpIHsKKyAgICAgICAg IHJldHVybiBaX1NUUkVBTV9FUlJPUjsKKyAgICAgfQorIAorQEAgLTM3MSw3ICs0ODQsMTEgQEAg aW50IFpFWFBPUlQgZGVmbGF0ZVJlc2V0IChzdHJtKQorICAgICBpZiAocy0+d3JhcCA8IDApIHsK KyAgICAgICAgIHMtPndyYXAgPSAtcy0+d3JhcDsgLyogd2FzIG1hZGUgbmVnYXRpdmUgYnkgZGVm bGF0ZSguLi4sIFpfRklOSVNIKTsgKi8KKyAgICAgfQorLSAgICBzLT5zdGF0dXMgPSBzLT53cmFw ID8gSU5JVF9TVEFURSA6IEJVU1lfU1RBVEU7CisrICAgIHMtPnN0YXR1cyA9CisrI2lmZGVmIEda SVAKKysgICAgICAgIHMtPndyYXAgPT0gMiA/IEdaSVBfU1RBVEUgOgorKyNlbmRpZgorKyAgICAg ICAgcy0+d3JhcCA/IElOSVRfU1RBVEUgOiBCVVNZX1NUQVRFOworICAgICBzdHJtLT5hZGxlciA9 CisgI2lmZGVmIEdaSVAKKyAgICAgICAgIHMtPndyYXAgPT0gMiA/IGNyYzMyKDBMLCBaX05VTEws IDApIDoKK0BAIC0zODAsMzEgKzQ5Nyw3MCBAQCBpbnQgWkVYUE9SVCBkZWZsYXRlUmVzZXQgKHN0 cm0pCisgICAgIHMtPmxhc3RfZmx1c2ggPSBaX05PX0ZMVVNIOworIAorICAgICBfdHJfaW5pdChz KTsKKy0gICAgbG1faW5pdChzKTsKKyAKKyAgICAgcmV0dXJuIFpfT0s7CisgfQorIAorKy8qID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0gKi8KKytpbnQgWkVYUE9SVCBkZWZsYXRlUmVzZXQgKHN0cm0pCisrICAg IHpfc3RyZWFtcCBzdHJtOworK3sKKysgICAgaW50IHJldDsKKysKKysgICAgcmV0ID0gZGVmbGF0 ZVJlc2V0S2VlcChzdHJtKTsKKysgICAgaWYgKHJldCA9PSBaX09LKQorKyAgICAgICAgbG1faW5p dChzdHJtLT5zdGF0ZSk7CisrICAgIHJldHVybiByZXQ7CisrfQorKworIC8qID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0gKi8KKyBpbnQgWkVYUE9SVCBkZWZsYXRlU2V0SGVhZGVyIChzdHJtLCBoZWFkKQorICAg ICB6X3N0cmVhbXAgc3RybTsKKyAgICAgZ3pfaGVhZGVycCBoZWFkOworIHsKKy0gICAgaWYgKHN0 cm0gPT0gWl9OVUxMIHx8IHN0cm0tPnN0YXRlID09IFpfTlVMTCkgcmV0dXJuIFpfU1RSRUFNX0VS Uk9SOworLSAgICBpZiAoc3RybS0+c3RhdGUtPndyYXAgIT0gMikgcmV0dXJuIFpfU1RSRUFNX0VS Uk9SOworKyAgICBpZiAoZGVmbGF0ZVN0YXRlQ2hlY2soc3RybSkgfHwgc3RybS0+c3RhdGUtPndy YXAgIT0gMikKKysgICAgICAgIHJldHVybiBaX1NUUkVBTV9FUlJPUjsKKyAgICAgc3RybS0+c3Rh dGUtPmd6aGVhZCA9IGhlYWQ7CisgICAgIHJldHVybiBaX09LOworIH0KKyAKKysvKiA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09ICovCisraW50IFpFWFBPUlQgZGVmbGF0ZVBlbmRpbmcgKHN0cm0sIHBlbmRpbmcs IGJpdHMpCisrICAgIHVuc2lnbmVkICpwZW5kaW5nOworKyAgICBpbnQgKmJpdHM7CisrICAgIHpf c3RyZWFtcCBzdHJtOworK3sKKysgICAgaWYgKGRlZmxhdGVTdGF0ZUNoZWNrKHN0cm0pKSByZXR1 cm4gWl9TVFJFQU1fRVJST1I7CisrICAgIGlmIChwZW5kaW5nICE9IFpfTlVMTCkKKysgICAgICAg ICpwZW5kaW5nID0gc3RybS0+c3RhdGUtPnBlbmRpbmc7CisrICAgIGlmIChiaXRzICE9IFpfTlVM TCkKKysgICAgICAgICpiaXRzID0gc3RybS0+c3RhdGUtPmJpX3ZhbGlkOworKyAgICByZXR1cm4g Wl9PSzsKKyt9CisrCisgLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLworIGludCBaRVhQT1JUIGRlZmxh dGVQcmltZSAoc3RybSwgYml0cywgdmFsdWUpCisgICAgIHpfc3RyZWFtcCBzdHJtOworICAgICBp bnQgYml0czsKKyAgICAgaW50IHZhbHVlOworIHsKKy0gICAgaWYgKHN0cm0gPT0gWl9OVUxMIHx8 IHN0cm0tPnN0YXRlID09IFpfTlVMTCkgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOworLSAgICBzdHJt LT5zdGF0ZS0+YmlfdmFsaWQgPSBiaXRzOworLSAgICBzdHJtLT5zdGF0ZS0+YmlfYnVmID0gKHVz aCkodmFsdWUgJiAoKDEgPDwgYml0cykgLSAxKSk7CisrICAgIGRlZmxhdGVfc3RhdGUgKnM7Cisr ICAgIGludCBwdXQ7CisrCisrICAgIGlmIChkZWZsYXRlU3RhdGVDaGVjayhzdHJtKSkgcmV0dXJu IFpfU1RSRUFNX0VSUk9SOworKyAgICBzID0gc3RybS0+c3RhdGU7CisrICAgIGlmICgoQnl0ZWYg Kikocy0+ZF9idWYpIDwgcy0+cGVuZGluZ19vdXQgKyAoKEJ1Zl9zaXplICsgNykgPj4gMykpCisr ICAgICAgICByZXR1cm4gWl9CVUZfRVJST1I7CisrICAgIGRvIHsKKysgICAgICAgIHB1dCA9IEJ1 Zl9zaXplIC0gcy0+YmlfdmFsaWQ7CisrICAgICAgICBpZiAocHV0ID4gYml0cykKKysgICAgICAg ICAgICBwdXQgPSBiaXRzOworKyAgICAgICAgcy0+YmlfYnVmIHw9ICh1c2gpKCh2YWx1ZSAmICgo MSA8PCBwdXQpIC0gMSkpIDw8IHMtPmJpX3ZhbGlkKTsKKysgICAgICAgIHMtPmJpX3ZhbGlkICs9 IHB1dDsKKysgICAgICAgIF90cl9mbHVzaF9iaXRzKHMpOworKyAgICAgICAgdmFsdWUgPj49IHB1 dDsKKysgICAgICAgIGJpdHMgLT0gcHV0OworKyAgICB9IHdoaWxlIChiaXRzKTsKKyAgICAgcmV0 dXJuIFpfT0s7CisgfQorIAorQEAgLTQxNiw5ICs1NzIsOCBAQCBpbnQgWkVYUE9SVCBkZWZsYXRl UGFyYW1zKHN0cm0sIGxldmVsLCBzdHJhdGVneSkKKyB7CisgICAgIGRlZmxhdGVfc3RhdGUgKnM7 CisgICAgIGNvbXByZXNzX2Z1bmMgZnVuYzsKKy0gICAgaW50IGVyciA9IFpfT0s7CisgCistICAg IGlmIChzdHJtID09IFpfTlVMTCB8fCBzdHJtLT5zdGF0ZSA9PSBaX05VTEwpIHJldHVybiBaX1NU UkVBTV9FUlJPUjsKKysgICAgaWYgKGRlZmxhdGVTdGF0ZUNoZWNrKHN0cm0pKSByZXR1cm4gWl9T VFJFQU1fRVJST1I7CisgICAgIHMgPSBzdHJtLT5zdGF0ZTsKKyAKKyAjaWZkZWYgRkFTVEVTVAor QEAgLTQzMiwxMSArNTg3LDIyIEBAIGludCBaRVhQT1JUIGRlZmxhdGVQYXJhbXMoc3RybSwgbGV2 ZWwsIHN0cmF0ZWd5KQorICAgICBmdW5jID0gY29uZmlndXJhdGlvbl90YWJsZVtzLT5sZXZlbF0u ZnVuYzsKKyAKKyAgICAgaWYgKChzdHJhdGVneSAhPSBzLT5zdHJhdGVneSB8fCBmdW5jICE9IGNv bmZpZ3VyYXRpb25fdGFibGVbbGV2ZWxdLmZ1bmMpICYmCistICAgICAgICBzdHJtLT50b3RhbF9p biAhPSAwKSB7CisrICAgICAgICBzLT5oaWdoX3dhdGVyKSB7CisgICAgICAgICAvKiBGbHVzaCB0 aGUgbGFzdCBidWZmZXI6ICovCistICAgICAgICBlcnIgPSBkZWZsYXRlKHN0cm0sIFpfQkxPQ0sp OworKyAgICAgICAgaW50IGVyciA9IGRlZmxhdGUoc3RybSwgWl9CTE9DSyk7CisrICAgICAgICBp ZiAoZXJyID09IFpfU1RSRUFNX0VSUk9SKQorKyAgICAgICAgICAgIHJldHVybiBlcnI7CisrICAg ICAgICBpZiAoc3RybS0+YXZhaWxfb3V0ID09IDApCisrICAgICAgICAgICAgcmV0dXJuIFpfQlVG X0VSUk9SOworICAgICB9CisgICAgIGlmIChzLT5sZXZlbCAhPSBsZXZlbCkgeworKyAgICAgICAg aWYgKHMtPmxldmVsID09IDAgJiYgcy0+bWF0Y2hlcyAhPSAwKSB7CisrICAgICAgICAgICAgaWYg KHMtPm1hdGNoZXMgPT0gMSkKKysgICAgICAgICAgICAgICAgc2xpZGVfaGFzaChzKTsKKysgICAg ICAgICAgICBlbHNlCisrICAgICAgICAgICAgICAgIENMRUFSX0hBU0gocyk7CisrICAgICAgICAg ICAgcy0+bWF0Y2hlcyA9IDA7CisrICAgICAgICB9CisgICAgICAgICBzLT5sZXZlbCA9IGxldmVs OworICAgICAgICAgcy0+bWF4X2xhenlfbWF0Y2ggICA9IGNvbmZpZ3VyYXRpb25fdGFibGVbbGV2 ZWxdLm1heF9sYXp5OworICAgICAgICAgcy0+Z29vZF9tYXRjaCAgICAgICA9IGNvbmZpZ3VyYXRp b25fdGFibGVbbGV2ZWxdLmdvb2RfbGVuZ3RoOworQEAgLTQ0NCw3ICs2MTAsNyBAQCBpbnQgWkVY UE9SVCBkZWZsYXRlUGFyYW1zKHN0cm0sIGxldmVsLCBzdHJhdGVneSkKKyAgICAgICAgIHMtPm1h eF9jaGFpbl9sZW5ndGggPSBjb25maWd1cmF0aW9uX3RhYmxlW2xldmVsXS5tYXhfY2hhaW47Cisg ICAgIH0KKyAgICAgcy0+c3RyYXRlZ3kgPSBzdHJhdGVneTsKKy0gICAgcmV0dXJuIGVycjsKKysg ICAgcmV0dXJuIFpfT0s7CisgfQorIAorIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KK0BAIC00NTcs MTIgKzYyMywxMiBAQCBpbnQgWkVYUE9SVCBkZWZsYXRlVHVuZShzdHJtLCBnb29kX2xlbmd0aCwg bWF4X2xhenksIG5pY2VfbGVuZ3RoLCBtYXhfY2hhaW4pCisgeworICAgICBkZWZsYXRlX3N0YXRl ICpzOworIAorLSAgICBpZiAoc3RybSA9PSBaX05VTEwgfHwgc3RybS0+c3RhdGUgPT0gWl9OVUxM KSByZXR1cm4gWl9TVFJFQU1fRVJST1I7CisrICAgIGlmIChkZWZsYXRlU3RhdGVDaGVjayhzdHJt KSkgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOworICAgICBzID0gc3RybS0+c3RhdGU7CistICAgIHMt Pmdvb2RfbWF0Y2ggPSBnb29kX2xlbmd0aDsKKy0gICAgcy0+bWF4X2xhenlfbWF0Y2ggPSBtYXhf bGF6eTsKKysgICAgcy0+Z29vZF9tYXRjaCA9ICh1SW50KWdvb2RfbGVuZ3RoOworKyAgICBzLT5t YXhfbGF6eV9tYXRjaCA9ICh1SW50KW1heF9sYXp5OworICAgICBzLT5uaWNlX21hdGNoID0gbmlj ZV9sZW5ndGg7CistICAgIHMtPm1heF9jaGFpbl9sZW5ndGggPSBtYXhfY2hhaW47CisrICAgIHMt Pm1heF9jaGFpbl9sZW5ndGggPSAodUludCltYXhfY2hhaW47CisgICAgIHJldHVybiBaX09LOwor IH0KKyAKK0BAIC00ODksMTQgKzY1NSwxMyBAQCB1TG9uZyBaRVhQT1JUIGRlZmxhdGVCb3VuZChz dHJtLCBzb3VyY2VMZW4pCisgeworICAgICBkZWZsYXRlX3N0YXRlICpzOworICAgICB1TG9uZyBj b21wbGVuLCB3cmFwbGVuOworLSAgICBCeXRlZiAqc3RyOworIAorICAgICAvKiBjb25zZXJ2YXRp dmUgdXBwZXIgYm91bmQgZm9yIGNvbXByZXNzZWQgZGF0YSAqLworICAgICBjb21wbGVuID0gc291 cmNlTGVuICsKKyAgICAgICAgICAgICAgICgoc291cmNlTGVuICsgNykgPj4gMykgKyAoKHNvdXJj ZUxlbiArIDYzKSA+PiA2KSArIDU7CisgCisgICAgIC8qIGlmIGNhbid0IGdldCBwYXJhbWV0ZXJz LCByZXR1cm4gY29uc2VydmF0aXZlIGJvdW5kIHBsdXMgemxpYiB3cmFwcGVyICovCistICAgIGlm IChzdHJtID09IFpfTlVMTCB8fCBzdHJtLT5zdGF0ZSA9PSBaX05VTEwpCisrICAgIGlmIChkZWZs YXRlU3RhdGVDaGVjayhzdHJtKSkKKyAgICAgICAgIHJldHVybiBjb21wbGVuICsgNjsKKyAKKyAg ICAgLyogY29tcHV0ZSB3cmFwcGVyIGxlbmd0aCAqLworQEAgLTUwOCw5ICs2NzMsMTEgQEAgdUxv bmcgWkVYUE9SVCBkZWZsYXRlQm91bmQoc3RybSwgc291cmNlTGVuKQorICAgICBjYXNlIDE6ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogemxpYiB3cmFwcGVyICovCisgICAgICAg ICB3cmFwbGVuID0gNiArIChzLT5zdHJzdGFydCA/IDQgOiAwKTsKKyAgICAgICAgIGJyZWFrOwor KyNpZmRlZiBHWklQCisgICAgIGNhc2UgMjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAvKiBnemlwIHdyYXBwZXIgKi8KKyAgICAgICAgIHdyYXBsZW4gPSAxODsKKyAgICAgICAgIGlm IChzLT5nemhlYWQgIT0gWl9OVUxMKSB7ICAgICAgICAgIC8qIHVzZXItc3VwcGxpZWQgZ3ppcCBo ZWFkZXIgKi8KKysgICAgICAgICAgICBCeXRlZiAqc3RyOworICAgICAgICAgICAgIGlmIChzLT5n emhlYWQtPmV4dHJhICE9IFpfTlVMTCkKKyAgICAgICAgICAgICAgICAgd3JhcGxlbiArPSAyICsg cy0+Z3poZWFkLT5leHRyYV9sZW47CisgICAgICAgICAgICAgc3RyID0gcy0+Z3poZWFkLT5uYW1l OworQEAgLTUyNyw2ICs2OTQsNyBAQCB1TG9uZyBaRVhQT1JUIGRlZmxhdGVCb3VuZChzdHJtLCBz b3VyY2VMZW4pCisgICAgICAgICAgICAgICAgIHdyYXBsZW4gKz0gMjsKKyAgICAgICAgIH0KKyAg ICAgICAgIGJyZWFrOworKyNlbmRpZgorICAgICBkZWZhdWx0OiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgLyogZm9yIGNvbXBpbGVyIGhhcHBpbmVzcyAqLworICAgICAgICAgd3JhcGxl biA9IDY7CisgICAgIH0KK0BAIC01NTQsMzAgKzcyMiw0MyBAQCBsb2NhbCB2b2lkIHB1dFNob3J0 TVNCIChzLCBiKQorIH0KKyAKKyAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistICogRmx1c2ggYXMgbXVj aCBwZW5kaW5nIG91dHB1dCBhcyBwb3NzaWJsZS4gQWxsIGRlZmxhdGUoKSBvdXRwdXQgZ29lcwor LSAqIHRocm91Z2ggdGhpcyBmdW5jdGlvbiBzbyBzb21lIGFwcGxpY2F0aW9ucyBtYXkgd2lzaCB0 byBtb2RpZnkgaXQKKy0gKiB0byBhdm9pZCBhbGxvY2F0aW5nIGEgbGFyZ2Ugc3RybS0+bmV4dF9v dXQgYnVmZmVyIGFuZCBjb3B5aW5nIGludG8gaXQuCistICogKFNlZSBhbHNvIHJlYWRfYnVmKCkp LgorKyAqIEZsdXNoIGFzIG11Y2ggcGVuZGluZyBvdXRwdXQgYXMgcG9zc2libGUuIEFsbCBkZWZs YXRlKCkgb3V0cHV0LCBleGNlcHQgZm9yCisrICogc29tZSBkZWZsYXRlX3N0b3JlZCgpIG91dHB1 dCwgZ29lcyB0aHJvdWdoIHRoaXMgZnVuY3Rpb24gc28gc29tZQorKyAqIGFwcGxpY2F0aW9ucyBt YXkgd2lzaCB0byBtb2RpZnkgaXQgdG8gYXZvaWQgYWxsb2NhdGluZyBhIGxhcmdlCisrICogc3Ry bS0+bmV4dF9vdXQgYnVmZmVyIGFuZCBjb3B5aW5nIGludG8gaXQuIChTZWUgYWxzbyByZWFkX2J1 ZigpKS4KKyAgKi8KKyBsb2NhbCB2b2lkIGZsdXNoX3BlbmRpbmcoc3RybSkKKyAgICAgel9zdHJl YW1wIHN0cm07CisgeworLSAgICB1bnNpZ25lZCBsZW4gPSBzdHJtLT5zdGF0ZS0+cGVuZGluZzsK KysgICAgdW5zaWduZWQgbGVuOworKyAgICBkZWZsYXRlX3N0YXRlICpzID0gc3RybS0+c3RhdGU7 CisgCisrICAgIF90cl9mbHVzaF9iaXRzKHMpOworKyAgICBsZW4gPSBzLT5wZW5kaW5nOworICAg ICBpZiAobGVuID4gc3RybS0+YXZhaWxfb3V0KSBsZW4gPSBzdHJtLT5hdmFpbF9vdXQ7CisgICAg IGlmIChsZW4gPT0gMCkgcmV0dXJuOworIAorLSAgICB6bWVtY3B5KHN0cm0tPm5leHRfb3V0LCBz dHJtLT5zdGF0ZS0+cGVuZGluZ19vdXQsIGxlbik7CisrICAgIHptZW1jcHkoc3RybS0+bmV4dF9v dXQsIHMtPnBlbmRpbmdfb3V0LCBsZW4pOworICAgICBzdHJtLT5uZXh0X291dCAgKz0gbGVuOwor LSAgICBzdHJtLT5zdGF0ZS0+cGVuZGluZ19vdXQgICs9IGxlbjsKKysgICAgcy0+cGVuZGluZ19v dXQgICs9IGxlbjsKKyAgICAgc3RybS0+dG90YWxfb3V0ICs9IGxlbjsKKy0gICAgc3RybS0+YXZh aWxfb3V0ICAtPSBsZW47CistICAgIHN0cm0tPnN0YXRlLT5wZW5kaW5nIC09IGxlbjsKKy0gICAg aWYgKHN0cm0tPnN0YXRlLT5wZW5kaW5nID09IDApIHsKKy0gICAgICAgIHN0cm0tPnN0YXRlLT5w ZW5kaW5nX291dCA9IHN0cm0tPnN0YXRlLT5wZW5kaW5nX2J1ZjsKKysgICAgc3RybS0+YXZhaWxf b3V0IC09IGxlbjsKKysgICAgcy0+cGVuZGluZyAgICAgIC09IGxlbjsKKysgICAgaWYgKHMtPnBl bmRpbmcgPT0gMCkgeworKyAgICAgICAgcy0+cGVuZGluZ19vdXQgPSBzLT5wZW5kaW5nX2J1ZjsK KyAgICAgfQorIH0KKyAKKysvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKysgKiBVcGRhdGUgdGhlIGhl YWRlciBDUkMgd2l0aCB0aGUgYnl0ZXMgcy0+cGVuZGluZ19idWZbYmVnLi5zLT5wZW5kaW5nIC0g MV0uCisrICovCisrI2RlZmluZSBIQ1JDX1VQREFURShiZWcpIFwKKysgICAgZG8geyBcCisrICAg ICAgICBpZiAocy0+Z3poZWFkLT5oY3JjICYmIHMtPnBlbmRpbmcgPiAoYmVnKSkgXAorKyAgICAg ICAgICAgIHN0cm0tPmFkbGVyID0gY3JjMzIoc3RybS0+YWRsZXIsIHMtPnBlbmRpbmdfYnVmICsg KGJlZyksIFwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPnBlbmRpbmcgLSAo YmVnKSk7IFwKKysgICAgfSB3aGlsZSAoMCkKKysKKyAvKiA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCisg aW50IFpFWFBPUlQgZGVmbGF0ZSAoc3RybSwgZmx1c2gpCisgICAgIHpfc3RyZWFtcCBzdHJtOwor QEAgLTU4NiwyMDMgKzc2NywyMSBAQCBpbnQgWkVYUE9SVCBkZWZsYXRlIChzdHJtLCBmbHVzaCkK KyAgICAgaW50IG9sZF9mbHVzaDsgLyogdmFsdWUgb2YgZmx1c2ggcGFyYW0gZm9yIHByZXZpb3Vz IGRlZmxhdGUgY2FsbCAqLworICAgICBkZWZsYXRlX3N0YXRlICpzOworIAorLSAgICBpZiAoc3Ry bSA9PSBaX05VTEwgfHwgc3RybS0+c3RhdGUgPT0gWl9OVUxMIHx8CistICAgICAgICBmbHVzaCA+ IFpfQkxPQ0sgfHwgZmx1c2ggPCAwKSB7CisrICAgIGlmIChkZWZsYXRlU3RhdGVDaGVjayhzdHJt KSB8fCBmbHVzaCA+IFpfQkxPQ0sgfHwgZmx1c2ggPCAwKSB7CisgICAgICAgICByZXR1cm4gWl9T VFJFQU1fRVJST1I7CisgICAgIH0KKyAgICAgcyA9IHN0cm0tPnN0YXRlOworIAorICAgICBpZiAo c3RybS0+bmV4dF9vdXQgPT0gWl9OVUxMIHx8CistICAgICAgICAoc3RybS0+bmV4dF9pbiA9PSBa X05VTEwgJiYgc3RybS0+YXZhaWxfaW4gIT0gMCkgfHwKKysgICAgICAgIChzdHJtLT5hdmFpbF9p biAhPSAwICYmIHN0cm0tPm5leHRfaW4gPT0gWl9OVUxMKSB8fAorICAgICAgICAgKHMtPnN0YXR1 cyA9PSBGSU5JU0hfU1RBVEUgJiYgZmx1c2ggIT0gWl9GSU5JU0gpKSB7CisgICAgICAgICBFUlJf UkVUVVJOKHN0cm0sIFpfU1RSRUFNX0VSUk9SKTsKKyAgICAgfQorICAgICBpZiAoc3RybS0+YXZh aWxfb3V0ID09IDApIEVSUl9SRVRVUk4oc3RybSwgWl9CVUZfRVJST1IpOworIAorLSAgICBzLT5z dHJtID0gc3RybTsgLyoganVzdCBpbiBjYXNlICovCisgICAgIG9sZF9mbHVzaCA9IHMtPmxhc3Rf Zmx1c2g7CisgICAgIHMtPmxhc3RfZmx1c2ggPSBmbHVzaDsKKyAKKy0gICAgLyogV3JpdGUgdGhl IGhlYWRlciAqLworLSAgICBpZiAocy0+c3RhdHVzID09IElOSVRfU1RBVEUpIHsKKy0jaWZkZWYg R1pJUAorLSAgICAgICAgaWYgKHMtPndyYXAgPT0gMikgeworLSAgICAgICAgICAgIHN0cm0tPmFk bGVyID0gY3JjMzIoMEwsIFpfTlVMTCwgMCk7CistICAgICAgICAgICAgcHV0X2J5dGUocywgMzEp OworLSAgICAgICAgICAgIHB1dF9ieXRlKHMsIDEzOSk7CistICAgICAgICAgICAgcHV0X2J5dGUo cywgOCk7CistICAgICAgICAgICAgaWYgKHMtPmd6aGVhZCA9PSBaX05VTEwpIHsKKy0gICAgICAg ICAgICAgICAgcHV0X2J5dGUocywgMCk7CistICAgICAgICAgICAgICAgIHB1dF9ieXRlKHMsIDAp OworLSAgICAgICAgICAgICAgICBwdXRfYnl0ZShzLCAwKTsKKy0gICAgICAgICAgICAgICAgcHV0 X2J5dGUocywgMCk7CistICAgICAgICAgICAgICAgIHB1dF9ieXRlKHMsIDApOworLSAgICAgICAg ICAgICAgICBwdXRfYnl0ZShzLCBzLT5sZXZlbCA9PSA5ID8gMiA6CistICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChzLT5zdHJhdGVneSA+PSBaX0hVRkZNQU5fT05MWSB8fCBzLT5sZXZlbCA8 IDIgPworLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNCA6IDApKTsKKy0gICAgICAgICAg ICAgICAgcHV0X2J5dGUocywgT1NfQ09ERSk7CistICAgICAgICAgICAgICAgIHMtPnN0YXR1cyA9 IEJVU1lfU1RBVEU7CistICAgICAgICAgICAgfQorLSAgICAgICAgICAgIGVsc2UgeworLSAgICAg ICAgICAgICAgICBwdXRfYnl0ZShzLCAocy0+Z3poZWFkLT50ZXh0ID8gMSA6IDApICsKKy0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgKHMtPmd6aGVhZC0+aGNyYyA/IDIgOiAwKSArCistICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChzLT5nemhlYWQtPmV4dHJhID09IFpfTlVMTCA/IDAg OiA0KSArCistICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzLT5nemhlYWQtPm5hbWUgPT0g Wl9OVUxMID8gMCA6IDgpICsKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHMtPmd6aGVh ZC0+Y29tbWVudCA9PSBaX05VTEwgPyAwIDogMTYpCistICAgICAgICAgICAgICAgICAgICAgICAg KTsKKy0gICAgICAgICAgICAgICAgcHV0X2J5dGUocywgKEJ5dGUpKHMtPmd6aGVhZC0+dGltZSAm IDB4ZmYpKTsKKy0gICAgICAgICAgICAgICAgcHV0X2J5dGUocywgKEJ5dGUpKChzLT5nemhlYWQt PnRpbWUgPj4gOCkgJiAweGZmKSk7CistICAgICAgICAgICAgICAgIHB1dF9ieXRlKHMsIChCeXRl KSgocy0+Z3poZWFkLT50aW1lID4+IDE2KSAmIDB4ZmYpKTsKKy0gICAgICAgICAgICAgICAgcHV0 X2J5dGUocywgKEJ5dGUpKChzLT5nemhlYWQtPnRpbWUgPj4gMjQpICYgMHhmZikpOworLSAgICAg ICAgICAgICAgICBwdXRfYnl0ZShzLCBzLT5sZXZlbCA9PSA5ID8gMiA6CistICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChzLT5zdHJhdGVneSA+PSBaX0hVRkZNQU5fT05MWSB8fCBzLT5sZXZl bCA8IDIgPworLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNCA6IDApKTsKKy0gICAgICAg ICAgICAgICAgcHV0X2J5dGUocywgcy0+Z3poZWFkLT5vcyAmIDB4ZmYpOworLSAgICAgICAgICAg ICAgICBpZiAocy0+Z3poZWFkLT5leHRyYSAhPSBaX05VTEwpIHsKKy0gICAgICAgICAgICAgICAg ICAgIHB1dF9ieXRlKHMsIHMtPmd6aGVhZC0+ZXh0cmFfbGVuICYgMHhmZik7CistICAgICAgICAg ICAgICAgICAgICBwdXRfYnl0ZShzLCAocy0+Z3poZWFkLT5leHRyYV9sZW4gPj4gOCkgJiAweGZm KTsKKy0gICAgICAgICAgICAgICAgfQorLSAgICAgICAgICAgICAgICBpZiAocy0+Z3poZWFkLT5o Y3JjKQorLSAgICAgICAgICAgICAgICAgICAgc3RybS0+YWRsZXIgPSBjcmMzMihzdHJtLT5hZGxl ciwgcy0+cGVuZGluZ19idWYsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHMtPnBlbmRpbmcpOworLSAgICAgICAgICAgICAgICBzLT5nemluZGV4ID0gMDsKKy0gICAg ICAgICAgICAgICAgcy0+c3RhdHVzID0gRVhUUkFfU1RBVEU7CistICAgICAgICAgICAgfQorLSAg ICAgICAgfQorLSAgICAgICAgZWxzZQorLSNlbmRpZgorLSAgICAgICAgeworLSAgICAgICAgICAg IHVJbnQgaGVhZGVyID0gKFpfREVGTEFURUQgKyAoKHMtPndfYml0cy04KTw8NCkpIDw8IDg7Cist ICAgICAgICAgICAgdUludCBsZXZlbF9mbGFnczsKKy0KKy0gICAgICAgICAgICBpZiAocy0+c3Ry YXRlZ3kgPj0gWl9IVUZGTUFOX09OTFkgfHwgcy0+bGV2ZWwgPCAyKQorLSAgICAgICAgICAgICAg ICBsZXZlbF9mbGFncyA9IDA7CistICAgICAgICAgICAgZWxzZSBpZiAocy0+bGV2ZWwgPCA2KQor LSAgICAgICAgICAgICAgICBsZXZlbF9mbGFncyA9IDE7CistICAgICAgICAgICAgZWxzZSBpZiAo cy0+bGV2ZWwgPT0gNikKKy0gICAgICAgICAgICAgICAgbGV2ZWxfZmxhZ3MgPSAyOworLSAgICAg ICAgICAgIGVsc2UKKy0gICAgICAgICAgICAgICAgbGV2ZWxfZmxhZ3MgPSAzOworLSAgICAgICAg ICAgIGhlYWRlciB8PSAobGV2ZWxfZmxhZ3MgPDwgNik7CistICAgICAgICAgICAgaWYgKHMtPnN0 cnN0YXJ0ICE9IDApIGhlYWRlciB8PSBQUkVTRVRfRElDVDsKKy0gICAgICAgICAgICBoZWFkZXIg Kz0gMzEgLSAoaGVhZGVyICUgMzEpOworLQorLSAgICAgICAgICAgIHMtPnN0YXR1cyA9IEJVU1lf U1RBVEU7CistICAgICAgICAgICAgcHV0U2hvcnRNU0IocywgaGVhZGVyKTsKKy0KKy0gICAgICAg ICAgICAvKiBTYXZlIHRoZSBhZGxlcjMyIG9mIHRoZSBwcmVzZXQgZGljdGlvbmFyeTogKi8KKy0g ICAgICAgICAgICBpZiAocy0+c3Ryc3RhcnQgIT0gMCkgeworLSAgICAgICAgICAgICAgICBwdXRT aG9ydE1TQihzLCAodUludCkoc3RybS0+YWRsZXIgPj4gMTYpKTsKKy0gICAgICAgICAgICAgICAg cHV0U2hvcnRNU0IocywgKHVJbnQpKHN0cm0tPmFkbGVyICYgMHhmZmZmKSk7CistICAgICAgICAg ICAgfQorLSAgICAgICAgICAgIHN0cm0tPmFkbGVyID0gYWRsZXIzMigwTCwgWl9OVUxMLCAwKTsK Ky0gICAgICAgIH0KKy0gICAgfQorLSNpZmRlZiBHWklQCistICAgIGlmIChzLT5zdGF0dXMgPT0g RVhUUkFfU1RBVEUpIHsKKy0gICAgICAgIGlmIChzLT5nemhlYWQtPmV4dHJhICE9IFpfTlVMTCkg eworLSAgICAgICAgICAgIHVJbnQgYmVnID0gcy0+cGVuZGluZzsgIC8qIHN0YXJ0IG9mIGJ5dGVz IHRvIHVwZGF0ZSBjcmMgKi8KKy0KKy0gICAgICAgICAgICB3aGlsZSAocy0+Z3ppbmRleCA8IChz LT5nemhlYWQtPmV4dHJhX2xlbiAmIDB4ZmZmZikpIHsKKy0gICAgICAgICAgICAgICAgaWYgKHMt PnBlbmRpbmcgPT0gcy0+cGVuZGluZ19idWZfc2l6ZSkgeworLSAgICAgICAgICAgICAgICAgICAg aWYgKHMtPmd6aGVhZC0+aGNyYyAmJiBzLT5wZW5kaW5nID4gYmVnKQorLSAgICAgICAgICAgICAg ICAgICAgICAgIHN0cm0tPmFkbGVyID0gY3JjMzIoc3RybS0+YWRsZXIsIHMtPnBlbmRpbmdfYnVm ICsgYmVnLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+ cGVuZGluZyAtIGJlZyk7CistICAgICAgICAgICAgICAgICAgICBmbHVzaF9wZW5kaW5nKHN0cm0p OworLSAgICAgICAgICAgICAgICAgICAgYmVnID0gcy0+cGVuZGluZzsKKy0gICAgICAgICAgICAg ICAgICAgIGlmIChzLT5wZW5kaW5nID09IHMtPnBlbmRpbmdfYnVmX3NpemUpCistICAgICAgICAg ICAgICAgICAgICAgICAgYnJlYWs7CistICAgICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICAg ICAgcHV0X2J5dGUocywgcy0+Z3poZWFkLT5leHRyYVtzLT5nemluZGV4XSk7CistICAgICAgICAg ICAgICAgIHMtPmd6aW5kZXgrKzsKKy0gICAgICAgICAgICB9CistICAgICAgICAgICAgaWYgKHMt Pmd6aGVhZC0+aGNyYyAmJiBzLT5wZW5kaW5nID4gYmVnKQorLSAgICAgICAgICAgICAgICBzdHJt LT5hZGxlciA9IGNyYzMyKHN0cm0tPmFkbGVyLCBzLT5wZW5kaW5nX2J1ZiArIGJlZywKKy0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5wZW5kaW5nIC0gYmVnKTsKKy0gICAg ICAgICAgICBpZiAocy0+Z3ppbmRleCA9PSBzLT5nemhlYWQtPmV4dHJhX2xlbikgeworLSAgICAg ICAgICAgICAgICBzLT5nemluZGV4ID0gMDsKKy0gICAgICAgICAgICAgICAgcy0+c3RhdHVzID0g TkFNRV9TVEFURTsKKy0gICAgICAgICAgICB9CistICAgICAgICB9CistICAgICAgICBlbHNlCist ICAgICAgICAgICAgcy0+c3RhdHVzID0gTkFNRV9TVEFURTsKKy0gICAgfQorLSAgICBpZiAocy0+ c3RhdHVzID09IE5BTUVfU1RBVEUpIHsKKy0gICAgICAgIGlmIChzLT5nemhlYWQtPm5hbWUgIT0g Wl9OVUxMKSB7CistICAgICAgICAgICAgdUludCBiZWcgPSBzLT5wZW5kaW5nOyAgLyogc3RhcnQg b2YgYnl0ZXMgdG8gdXBkYXRlIGNyYyAqLworLSAgICAgICAgICAgIGludCB2YWw7CistCistICAg ICAgICAgICAgZG8geworLSAgICAgICAgICAgICAgICBpZiAocy0+cGVuZGluZyA9PSBzLT5wZW5k aW5nX2J1Zl9zaXplKSB7CistICAgICAgICAgICAgICAgICAgICBpZiAocy0+Z3poZWFkLT5oY3Jj ICYmIHMtPnBlbmRpbmcgPiBiZWcpCistICAgICAgICAgICAgICAgICAgICAgICAgc3RybS0+YWRs ZXIgPSBjcmMzMihzdHJtLT5hZGxlciwgcy0+cGVuZGluZ19idWYgKyBiZWcsCistICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5wZW5kaW5nIC0gYmVnKTsKKy0g ICAgICAgICAgICAgICAgICAgIGZsdXNoX3BlbmRpbmcoc3RybSk7CistICAgICAgICAgICAgICAg ICAgICBiZWcgPSBzLT5wZW5kaW5nOworLSAgICAgICAgICAgICAgICAgICAgaWYgKHMtPnBlbmRp bmcgPT0gcy0+cGVuZGluZ19idWZfc2l6ZSkgeworLSAgICAgICAgICAgICAgICAgICAgICAgIHZh bCA9IDE7CistICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CistICAgICAgICAgICAgICAg ICAgICB9CistICAgICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICAgICAgdmFsID0gcy0+Z3po ZWFkLT5uYW1lW3MtPmd6aW5kZXgrK107CistICAgICAgICAgICAgICAgIHB1dF9ieXRlKHMsIHZh bCk7CistICAgICAgICAgICAgfSB3aGlsZSAodmFsICE9IDApOworLSAgICAgICAgICAgIGlmIChz LT5nemhlYWQtPmhjcmMgJiYgcy0+cGVuZGluZyA+IGJlZykKKy0gICAgICAgICAgICAgICAgc3Ry bS0+YWRsZXIgPSBjcmMzMihzdHJtLT5hZGxlciwgcy0+cGVuZGluZ19idWYgKyBiZWcsCistICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+cGVuZGluZyAtIGJlZyk7CistICAg ICAgICAgICAgaWYgKHZhbCA9PSAwKSB7CistICAgICAgICAgICAgICAgIHMtPmd6aW5kZXggPSAw OworLSAgICAgICAgICAgICAgICBzLT5zdGF0dXMgPSBDT01NRU5UX1NUQVRFOworLSAgICAgICAg ICAgIH0KKy0gICAgICAgIH0KKy0gICAgICAgIGVsc2UKKy0gICAgICAgICAgICBzLT5zdGF0dXMg PSBDT01NRU5UX1NUQVRFOworLSAgICB9CistICAgIGlmIChzLT5zdGF0dXMgPT0gQ09NTUVOVF9T VEFURSkgeworLSAgICAgICAgaWYgKHMtPmd6aGVhZC0+Y29tbWVudCAhPSBaX05VTEwpIHsKKy0g ICAgICAgICAgICB1SW50IGJlZyA9IHMtPnBlbmRpbmc7ICAvKiBzdGFydCBvZiBieXRlcyB0byB1 cGRhdGUgY3JjICovCistICAgICAgICAgICAgaW50IHZhbDsKKy0KKy0gICAgICAgICAgICBkbyB7 CistICAgICAgICAgICAgICAgIGlmIChzLT5wZW5kaW5nID09IHMtPnBlbmRpbmdfYnVmX3NpemUp IHsKKy0gICAgICAgICAgICAgICAgICAgIGlmIChzLT5nemhlYWQtPmhjcmMgJiYgcy0+cGVuZGlu ZyA+IGJlZykKKy0gICAgICAgICAgICAgICAgICAgICAgICBzdHJtLT5hZGxlciA9IGNyYzMyKHN0 cm0tPmFkbGVyLCBzLT5wZW5kaW5nX2J1ZiArIGJlZywKKy0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHMtPnBlbmRpbmcgLSBiZWcpOworLSAgICAgICAgICAgICAg ICAgICAgZmx1c2hfcGVuZGluZyhzdHJtKTsKKy0gICAgICAgICAgICAgICAgICAgIGJlZyA9IHMt PnBlbmRpbmc7CistICAgICAgICAgICAgICAgICAgICBpZiAocy0+cGVuZGluZyA9PSBzLT5wZW5k aW5nX2J1Zl9zaXplKSB7CistICAgICAgICAgICAgICAgICAgICAgICAgdmFsID0gMTsKKy0gICAg ICAgICAgICAgICAgICAgICAgICBicmVhazsKKy0gICAgICAgICAgICAgICAgICAgIH0KKy0gICAg ICAgICAgICAgICAgfQorLSAgICAgICAgICAgICAgICB2YWwgPSBzLT5nemhlYWQtPmNvbW1lbnRb cy0+Z3ppbmRleCsrXTsKKy0gICAgICAgICAgICAgICAgcHV0X2J5dGUocywgdmFsKTsKKy0gICAg ICAgICAgICB9IHdoaWxlICh2YWwgIT0gMCk7CistICAgICAgICAgICAgaWYgKHMtPmd6aGVhZC0+ aGNyYyAmJiBzLT5wZW5kaW5nID4gYmVnKQorLSAgICAgICAgICAgICAgICBzdHJtLT5hZGxlciA9 IGNyYzMyKHN0cm0tPmFkbGVyLCBzLT5wZW5kaW5nX2J1ZiArIGJlZywKKy0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzLT5wZW5kaW5nIC0gYmVnKTsKKy0gICAgICAgICAgICBp ZiAodmFsID09IDApCistICAgICAgICAgICAgICAgIHMtPnN0YXR1cyA9IEhDUkNfU1RBVEU7Cist ICAgICAgICB9CistICAgICAgICBlbHNlCistICAgICAgICAgICAgcy0+c3RhdHVzID0gSENSQ19T VEFURTsKKy0gICAgfQorLSAgICBpZiAocy0+c3RhdHVzID09IEhDUkNfU1RBVEUpIHsKKy0gICAg ICAgIGlmIChzLT5nemhlYWQtPmhjcmMpIHsKKy0gICAgICAgICAgICBpZiAocy0+cGVuZGluZyAr IDIgPiBzLT5wZW5kaW5nX2J1Zl9zaXplKQorLSAgICAgICAgICAgICAgICBmbHVzaF9wZW5kaW5n KHN0cm0pOworLSAgICAgICAgICAgIGlmIChzLT5wZW5kaW5nICsgMiA8PSBzLT5wZW5kaW5nX2J1 Zl9zaXplKSB7CistICAgICAgICAgICAgICAgIHB1dF9ieXRlKHMsIChCeXRlKShzdHJtLT5hZGxl ciAmIDB4ZmYpKTsKKy0gICAgICAgICAgICAgICAgcHV0X2J5dGUocywgKEJ5dGUpKChzdHJtLT5h ZGxlciA+PiA4KSAmIDB4ZmYpKTsKKy0gICAgICAgICAgICAgICAgc3RybS0+YWRsZXIgPSBjcmMz MigwTCwgWl9OVUxMLCAwKTsKKy0gICAgICAgICAgICAgICAgcy0+c3RhdHVzID0gQlVTWV9TVEFU RTsKKy0gICAgICAgICAgICB9CistICAgICAgICB9CistICAgICAgICBlbHNlCistICAgICAgICAg ICAgcy0+c3RhdHVzID0gQlVTWV9TVEFURTsKKy0gICAgfQorLSNlbmRpZgorLQorICAgICAvKiBG bHVzaCBhcyBtdWNoIHBlbmRpbmcgb3V0cHV0IGFzIHBvc3NpYmxlICovCisgICAgIGlmIChzLT5w ZW5kaW5nICE9IDApIHsKKyAgICAgICAgIGZsdXNoX3BlbmRpbmcoc3RybSk7CitAQCAtODAxLDcg KzgwMCw3IEBAIGludCBaRVhQT1JUIGRlZmxhdGUgKHN0cm0sIGZsdXNoKQorICAgICAgKiBmbHVz aGVzLiBGb3IgcmVwZWF0ZWQgYW5kIHVzZWxlc3MgY2FsbHMgd2l0aCBaX0ZJTklTSCwgd2Uga2Vl cAorICAgICAgKiByZXR1cm5pbmcgWl9TVFJFQU1fRU5EIGluc3RlYWQgb2YgWl9CVUZfRVJST1Iu CisgICAgICAqLworLSAgICB9IGVsc2UgaWYgKHN0cm0tPmF2YWlsX2luID09IDAgJiYgZmx1c2gg PD0gb2xkX2ZsdXNoICYmCisrICAgIH0gZWxzZSBpZiAoc3RybS0+YXZhaWxfaW4gPT0gMCAmJiBS QU5LKGZsdXNoKSA8PSBSQU5LKG9sZF9mbHVzaCkgJiYKKyAgICAgICAgICAgICAgICBmbHVzaCAh PSBaX0ZJTklTSCkgeworICAgICAgICAgRVJSX1JFVFVSTihzdHJtLCBaX0JVRl9FUlJPUik7Cisg ICAgIH0KK0BAIC04MTEsMTUgKzgxMCwxOTcgQEAgaW50IFpFWFBPUlQgZGVmbGF0ZSAoc3RybSwg Zmx1c2gpCisgICAgICAgICBFUlJfUkVUVVJOKHN0cm0sIFpfQlVGX0VSUk9SKTsKKyAgICAgfQor IAorKyAgICAvKiBXcml0ZSB0aGUgaGVhZGVyICovCisrICAgIGlmIChzLT5zdGF0dXMgPT0gSU5J VF9TVEFURSkgeworKyAgICAgICAgLyogemxpYiBoZWFkZXIgKi8KKysgICAgICAgIHVJbnQgaGVh ZGVyID0gKFpfREVGTEFURUQgKyAoKHMtPndfYml0cy04KTw8NCkpIDw8IDg7CisrICAgICAgICB1 SW50IGxldmVsX2ZsYWdzOworKworKyAgICAgICAgaWYgKHMtPnN0cmF0ZWd5ID49IFpfSFVGRk1B Tl9PTkxZIHx8IHMtPmxldmVsIDwgMikKKysgICAgICAgICAgICBsZXZlbF9mbGFncyA9IDA7Cisr ICAgICAgICBlbHNlIGlmIChzLT5sZXZlbCA8IDYpCisrICAgICAgICAgICAgbGV2ZWxfZmxhZ3Mg PSAxOworKyAgICAgICAgZWxzZSBpZiAocy0+bGV2ZWwgPT0gNikKKysgICAgICAgICAgICBsZXZl bF9mbGFncyA9IDI7CisrICAgICAgICBlbHNlCisrICAgICAgICAgICAgbGV2ZWxfZmxhZ3MgPSAz OworKyAgICAgICAgaGVhZGVyIHw9IChsZXZlbF9mbGFncyA8PCA2KTsKKysgICAgICAgIGlmIChz LT5zdHJzdGFydCAhPSAwKSBoZWFkZXIgfD0gUFJFU0VUX0RJQ1Q7CisrICAgICAgICBoZWFkZXIg Kz0gMzEgLSAoaGVhZGVyICUgMzEpOworKworKyAgICAgICAgcHV0U2hvcnRNU0IocywgaGVhZGVy KTsKKysKKysgICAgICAgIC8qIFNhdmUgdGhlIGFkbGVyMzIgb2YgdGhlIHByZXNldCBkaWN0aW9u YXJ5OiAqLworKyAgICAgICAgaWYgKHMtPnN0cnN0YXJ0ICE9IDApIHsKKysgICAgICAgICAgICBw dXRTaG9ydE1TQihzLCAodUludCkoc3RybS0+YWRsZXIgPj4gMTYpKTsKKysgICAgICAgICAgICBw dXRTaG9ydE1TQihzLCAodUludCkoc3RybS0+YWRsZXIgJiAweGZmZmYpKTsKKysgICAgICAgIH0K KysgICAgICAgIHN0cm0tPmFkbGVyID0gYWRsZXIzMigwTCwgWl9OVUxMLCAwKTsKKysgICAgICAg IHMtPnN0YXR1cyA9IEJVU1lfU1RBVEU7CisrCisrICAgICAgICAvKiBDb21wcmVzc2lvbiBtdXN0 IHN0YXJ0IHdpdGggYW4gZW1wdHkgcGVuZGluZyBidWZmZXIgKi8KKysgICAgICAgIGZsdXNoX3Bl bmRpbmcoc3RybSk7CisrICAgICAgICBpZiAocy0+cGVuZGluZyAhPSAwKSB7CisrICAgICAgICAg ICAgcy0+bGFzdF9mbHVzaCA9IC0xOworKyAgICAgICAgICAgIHJldHVybiBaX09LOworKyAgICAg ICAgfQorKyAgICB9CisrI2lmZGVmIEdaSVAKKysgICAgaWYgKHMtPnN0YXR1cyA9PSBHWklQX1NU QVRFKSB7CisrICAgICAgICAvKiBnemlwIGhlYWRlciAqLworKyAgICAgICAgc3RybS0+YWRsZXIg PSBjcmMzMigwTCwgWl9OVUxMLCAwKTsKKysgICAgICAgIHB1dF9ieXRlKHMsIDMxKTsKKysgICAg ICAgIHB1dF9ieXRlKHMsIDEzOSk7CisrICAgICAgICBwdXRfYnl0ZShzLCA4KTsKKysgICAgICAg IGlmIChzLT5nemhlYWQgPT0gWl9OVUxMKSB7CisrICAgICAgICAgICAgcHV0X2J5dGUocywgMCk7 CisrICAgICAgICAgICAgcHV0X2J5dGUocywgMCk7CisrICAgICAgICAgICAgcHV0X2J5dGUocywg MCk7CisrICAgICAgICAgICAgcHV0X2J5dGUocywgMCk7CisrICAgICAgICAgICAgcHV0X2J5dGUo cywgMCk7CisrICAgICAgICAgICAgcHV0X2J5dGUocywgcy0+bGV2ZWwgPT0gOSA/IDIgOgorKyAg ICAgICAgICAgICAgICAgICAgIChzLT5zdHJhdGVneSA+PSBaX0hVRkZNQU5fT05MWSB8fCBzLT5s ZXZlbCA8IDIgPworKyAgICAgICAgICAgICAgICAgICAgICA0IDogMCkpOworKyAgICAgICAgICAg IHB1dF9ieXRlKHMsIE9TX0NPREUpOworKyAgICAgICAgICAgIHMtPnN0YXR1cyA9IEJVU1lfU1RB VEU7CisrCisrICAgICAgICAgICAgLyogQ29tcHJlc3Npb24gbXVzdCBzdGFydCB3aXRoIGFuIGVt cHR5IHBlbmRpbmcgYnVmZmVyICovCisrICAgICAgICAgICAgZmx1c2hfcGVuZGluZyhzdHJtKTsK KysgICAgICAgICAgICBpZiAocy0+cGVuZGluZyAhPSAwKSB7CisrICAgICAgICAgICAgICAgIHMt Pmxhc3RfZmx1c2ggPSAtMTsKKysgICAgICAgICAgICAgICAgcmV0dXJuIFpfT0s7CisrICAgICAg ICAgICAgfQorKyAgICAgICAgfQorKyAgICAgICAgZWxzZSB7CisrICAgICAgICAgICAgcHV0X2J5 dGUocywgKHMtPmd6aGVhZC0+dGV4dCA/IDEgOiAwKSArCisrICAgICAgICAgICAgICAgICAgICAg KHMtPmd6aGVhZC0+aGNyYyA/IDIgOiAwKSArCisrICAgICAgICAgICAgICAgICAgICAgKHMtPmd6 aGVhZC0+ZXh0cmEgPT0gWl9OVUxMID8gMCA6IDQpICsKKysgICAgICAgICAgICAgICAgICAgICAo cy0+Z3poZWFkLT5uYW1lID09IFpfTlVMTCA/IDAgOiA4KSArCisrICAgICAgICAgICAgICAgICAg ICAgKHMtPmd6aGVhZC0+Y29tbWVudCA9PSBaX05VTEwgPyAwIDogMTYpCisrICAgICAgICAgICAg ICAgICAgICAgKTsKKysgICAgICAgICAgICBwdXRfYnl0ZShzLCAoQnl0ZSkocy0+Z3poZWFkLT50 aW1lICYgMHhmZikpOworKyAgICAgICAgICAgIHB1dF9ieXRlKHMsIChCeXRlKSgocy0+Z3poZWFk LT50aW1lID4+IDgpICYgMHhmZikpOworKyAgICAgICAgICAgIHB1dF9ieXRlKHMsIChCeXRlKSgo cy0+Z3poZWFkLT50aW1lID4+IDE2KSAmIDB4ZmYpKTsKKysgICAgICAgICAgICBwdXRfYnl0ZShz LCAoQnl0ZSkoKHMtPmd6aGVhZC0+dGltZSA+PiAyNCkgJiAweGZmKSk7CisrICAgICAgICAgICAg cHV0X2J5dGUocywgcy0+bGV2ZWwgPT0gOSA/IDIgOgorKyAgICAgICAgICAgICAgICAgICAgIChz LT5zdHJhdGVneSA+PSBaX0hVRkZNQU5fT05MWSB8fCBzLT5sZXZlbCA8IDIgPworKyAgICAgICAg ICAgICAgICAgICAgICA0IDogMCkpOworKyAgICAgICAgICAgIHB1dF9ieXRlKHMsIHMtPmd6aGVh ZC0+b3MgJiAweGZmKTsKKysgICAgICAgICAgICBpZiAocy0+Z3poZWFkLT5leHRyYSAhPSBaX05V TEwpIHsKKysgICAgICAgICAgICAgICAgcHV0X2J5dGUocywgcy0+Z3poZWFkLT5leHRyYV9sZW4g JiAweGZmKTsKKysgICAgICAgICAgICAgICAgcHV0X2J5dGUocywgKHMtPmd6aGVhZC0+ZXh0cmFf bGVuID4+IDgpICYgMHhmZik7CisrICAgICAgICAgICAgfQorKyAgICAgICAgICAgIGlmIChzLT5n emhlYWQtPmhjcmMpCisrICAgICAgICAgICAgICAgIHN0cm0tPmFkbGVyID0gY3JjMzIoc3RybS0+ YWRsZXIsIHMtPnBlbmRpbmdfYnVmLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHMtPnBlbmRpbmcpOworKyAgICAgICAgICAgIHMtPmd6aW5kZXggPSAwOworKyAgICAgICAg ICAgIHMtPnN0YXR1cyA9IEVYVFJBX1NUQVRFOworKyAgICAgICAgfQorKyAgICB9CisrICAgIGlm IChzLT5zdGF0dXMgPT0gRVhUUkFfU1RBVEUpIHsKKysgICAgICAgIGlmIChzLT5nemhlYWQtPmV4 dHJhICE9IFpfTlVMTCkgeworKyAgICAgICAgICAgIHVsZyBiZWcgPSBzLT5wZW5kaW5nOyAgIC8q IHN0YXJ0IG9mIGJ5dGVzIHRvIHVwZGF0ZSBjcmMgKi8KKysgICAgICAgICAgICB1SW50IGxlZnQg PSAocy0+Z3poZWFkLT5leHRyYV9sZW4gJiAweGZmZmYpIC0gcy0+Z3ppbmRleDsKKysgICAgICAg ICAgICB3aGlsZSAocy0+cGVuZGluZyArIGxlZnQgPiBzLT5wZW5kaW5nX2J1Zl9zaXplKSB7Cisr ICAgICAgICAgICAgICAgIHVJbnQgY29weSA9IHMtPnBlbmRpbmdfYnVmX3NpemUgLSBzLT5wZW5k aW5nOworKyAgICAgICAgICAgICAgICB6bWVtY3B5KHMtPnBlbmRpbmdfYnVmICsgcy0+cGVuZGlu ZywKKysgICAgICAgICAgICAgICAgICAgICAgICBzLT5nemhlYWQtPmV4dHJhICsgcy0+Z3ppbmRl eCwgY29weSk7CisrICAgICAgICAgICAgICAgIHMtPnBlbmRpbmcgPSBzLT5wZW5kaW5nX2J1Zl9z aXplOworKyAgICAgICAgICAgICAgICBIQ1JDX1VQREFURShiZWcpOworKyAgICAgICAgICAgICAg ICBzLT5nemluZGV4ICs9IGNvcHk7CisrICAgICAgICAgICAgICAgIGZsdXNoX3BlbmRpbmcoc3Ry bSk7CisrICAgICAgICAgICAgICAgIGlmIChzLT5wZW5kaW5nICE9IDApIHsKKysgICAgICAgICAg ICAgICAgICAgIHMtPmxhc3RfZmx1c2ggPSAtMTsKKysgICAgICAgICAgICAgICAgICAgIHJldHVy biBaX09LOworKyAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgICAgIGJlZyA9IDA7Cisr ICAgICAgICAgICAgICAgIGxlZnQgLT0gY29weTsKKysgICAgICAgICAgICB9CisrICAgICAgICAg ICAgem1lbWNweShzLT5wZW5kaW5nX2J1ZiArIHMtPnBlbmRpbmcsCisrICAgICAgICAgICAgICAg ICAgICBzLT5nemhlYWQtPmV4dHJhICsgcy0+Z3ppbmRleCwgbGVmdCk7CisrICAgICAgICAgICAg cy0+cGVuZGluZyArPSBsZWZ0OworKyAgICAgICAgICAgIEhDUkNfVVBEQVRFKGJlZyk7CisrICAg ICAgICAgICAgcy0+Z3ppbmRleCA9IDA7CisrICAgICAgICB9CisrICAgICAgICBzLT5zdGF0dXMg PSBOQU1FX1NUQVRFOworKyAgICB9CisrICAgIGlmIChzLT5zdGF0dXMgPT0gTkFNRV9TVEFURSkg eworKyAgICAgICAgaWYgKHMtPmd6aGVhZC0+bmFtZSAhPSBaX05VTEwpIHsKKysgICAgICAgICAg ICB1bGcgYmVnID0gcy0+cGVuZGluZzsgICAvKiBzdGFydCBvZiBieXRlcyB0byB1cGRhdGUgY3Jj ICovCisrICAgICAgICAgICAgaW50IHZhbDsKKysgICAgICAgICAgICBkbyB7CisrICAgICAgICAg ICAgICAgIGlmIChzLT5wZW5kaW5nID09IHMtPnBlbmRpbmdfYnVmX3NpemUpIHsKKysgICAgICAg ICAgICAgICAgICAgIEhDUkNfVVBEQVRFKGJlZyk7CisrICAgICAgICAgICAgICAgICAgICBmbHVz aF9wZW5kaW5nKHN0cm0pOworKyAgICAgICAgICAgICAgICAgICAgaWYgKHMtPnBlbmRpbmcgIT0g MCkgeworKyAgICAgICAgICAgICAgICAgICAgICAgIHMtPmxhc3RfZmx1c2ggPSAtMTsKKysgICAg ICAgICAgICAgICAgICAgICAgICByZXR1cm4gWl9PSzsKKysgICAgICAgICAgICAgICAgICAgIH0K KysgICAgICAgICAgICAgICAgICAgIGJlZyA9IDA7CisrICAgICAgICAgICAgICAgIH0KKysgICAg ICAgICAgICAgICAgdmFsID0gcy0+Z3poZWFkLT5uYW1lW3MtPmd6aW5kZXgrK107CisrICAgICAg ICAgICAgICAgIHB1dF9ieXRlKHMsIHZhbCk7CisrICAgICAgICAgICAgfSB3aGlsZSAodmFsICE9 IDApOworKyAgICAgICAgICAgIEhDUkNfVVBEQVRFKGJlZyk7CisrICAgICAgICAgICAgcy0+Z3pp bmRleCA9IDA7CisrICAgICAgICB9CisrICAgICAgICBzLT5zdGF0dXMgPSBDT01NRU5UX1NUQVRF OworKyAgICB9CisrICAgIGlmIChzLT5zdGF0dXMgPT0gQ09NTUVOVF9TVEFURSkgeworKyAgICAg ICAgaWYgKHMtPmd6aGVhZC0+Y29tbWVudCAhPSBaX05VTEwpIHsKKysgICAgICAgICAgICB1bGcg YmVnID0gcy0+cGVuZGluZzsgICAvKiBzdGFydCBvZiBieXRlcyB0byB1cGRhdGUgY3JjICovCisr ICAgICAgICAgICAgaW50IHZhbDsKKysgICAgICAgICAgICBkbyB7CisrICAgICAgICAgICAgICAg IGlmIChzLT5wZW5kaW5nID09IHMtPnBlbmRpbmdfYnVmX3NpemUpIHsKKysgICAgICAgICAgICAg ICAgICAgIEhDUkNfVVBEQVRFKGJlZyk7CisrICAgICAgICAgICAgICAgICAgICBmbHVzaF9wZW5k aW5nKHN0cm0pOworKyAgICAgICAgICAgICAgICAgICAgaWYgKHMtPnBlbmRpbmcgIT0gMCkgewor KyAgICAgICAgICAgICAgICAgICAgICAgIHMtPmxhc3RfZmx1c2ggPSAtMTsKKysgICAgICAgICAg ICAgICAgICAgICAgICByZXR1cm4gWl9PSzsKKysgICAgICAgICAgICAgICAgICAgIH0KKysgICAg ICAgICAgICAgICAgICAgIGJlZyA9IDA7CisrICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAg ICAgICAgdmFsID0gcy0+Z3poZWFkLT5jb21tZW50W3MtPmd6aW5kZXgrK107CisrICAgICAgICAg ICAgICAgIHB1dF9ieXRlKHMsIHZhbCk7CisrICAgICAgICAgICAgfSB3aGlsZSAodmFsICE9IDAp OworKyAgICAgICAgICAgIEhDUkNfVVBEQVRFKGJlZyk7CisrICAgICAgICB9CisrICAgICAgICBz LT5zdGF0dXMgPSBIQ1JDX1NUQVRFOworKyAgICB9CisrICAgIGlmIChzLT5zdGF0dXMgPT0gSENS Q19TVEFURSkgeworKyAgICAgICAgaWYgKHMtPmd6aGVhZC0+aGNyYykgeworKyAgICAgICAgICAg IGlmIChzLT5wZW5kaW5nICsgMiA+IHMtPnBlbmRpbmdfYnVmX3NpemUpIHsKKysgICAgICAgICAg ICAgICAgZmx1c2hfcGVuZGluZyhzdHJtKTsKKysgICAgICAgICAgICAgICAgaWYgKHMtPnBlbmRp bmcgIT0gMCkgeworKyAgICAgICAgICAgICAgICAgICAgcy0+bGFzdF9mbHVzaCA9IC0xOworKyAg ICAgICAgICAgICAgICAgICAgcmV0dXJuIFpfT0s7CisrICAgICAgICAgICAgICAgIH0KKysgICAg ICAgICAgICB9CisrICAgICAgICAgICAgcHV0X2J5dGUocywgKEJ5dGUpKHN0cm0tPmFkbGVyICYg MHhmZikpOworKyAgICAgICAgICAgIHB1dF9ieXRlKHMsIChCeXRlKSgoc3RybS0+YWRsZXIgPj4g OCkgJiAweGZmKSk7CisrICAgICAgICAgICAgc3RybS0+YWRsZXIgPSBjcmMzMigwTCwgWl9OVUxM LCAwKTsKKysgICAgICAgIH0KKysgICAgICAgIHMtPnN0YXR1cyA9IEJVU1lfU1RBVEU7CisrCisr ICAgICAgICAvKiBDb21wcmVzc2lvbiBtdXN0IHN0YXJ0IHdpdGggYW4gZW1wdHkgcGVuZGluZyBi dWZmZXIgKi8KKysgICAgICAgIGZsdXNoX3BlbmRpbmcoc3RybSk7CisrICAgICAgICBpZiAocy0+ cGVuZGluZyAhPSAwKSB7CisrICAgICAgICAgICAgcy0+bGFzdF9mbHVzaCA9IC0xOworKyAgICAg ICAgICAgIHJldHVybiBaX09LOworKyAgICAgICAgfQorKyAgICB9CisrI2VuZGlmCisrCisgICAg IC8qIFN0YXJ0IGEgbmV3IGJsb2NrIG9yIGNvbnRpbnVlIHRoZSBjdXJyZW50IG9uZS4KKyAgICAg ICovCisgICAgIGlmIChzdHJtLT5hdmFpbF9pbiAhPSAwIHx8IHMtPmxvb2thaGVhZCAhPSAwIHx8 CisgICAgICAgICAoZmx1c2ggIT0gWl9OT19GTFVTSCAmJiBzLT5zdGF0dXMgIT0gRklOSVNIX1NU QVRFKSkgeworICAgICAgICAgYmxvY2tfc3RhdGUgYnN0YXRlOworIAorLSAgICAgICAgYnN0YXRl ID0gcy0+c3RyYXRlZ3kgPT0gWl9IVUZGTUFOX09OTFkgPyBkZWZsYXRlX2h1ZmYocywgZmx1c2gp IDoKKy0gICAgICAgICAgICAgICAgICAgIChzLT5zdHJhdGVneSA9PSBaX1JMRSA/IGRlZmxhdGVf cmxlKHMsIGZsdXNoKSA6CistICAgICAgICAgICAgICAgICAgICAgICAgKCooY29uZmlndXJhdGlv bl90YWJsZVtzLT5sZXZlbF0uZnVuYykpKHMsIGZsdXNoKSk7CisrICAgICAgICBic3RhdGUgPSBz LT5sZXZlbCA9PSAwID8gZGVmbGF0ZV9zdG9yZWQocywgZmx1c2gpIDoKKysgICAgICAgICAgICAg ICAgIHMtPnN0cmF0ZWd5ID09IFpfSFVGRk1BTl9PTkxZID8gZGVmbGF0ZV9odWZmKHMsIGZsdXNo KSA6CisrICAgICAgICAgICAgICAgICBzLT5zdHJhdGVneSA9PSBaX1JMRSA/IGRlZmxhdGVfcmxl KHMsIGZsdXNoKSA6CisrICAgICAgICAgICAgICAgICAoKihjb25maWd1cmF0aW9uX3RhYmxlW3Mt PmxldmVsXS5mdW5jKSkocywgZmx1c2gpOworIAorICAgICAgICAgaWYgKGJzdGF0ZSA9PSBmaW5p c2hfc3RhcnRlZCB8fCBic3RhdGUgPT0gZmluaXNoX2RvbmUpIHsKKyAgICAgICAgICAgICBzLT5z dGF0dXMgPSBGSU5JU0hfU1RBVEU7CitAQCAtODUwLDYgKzEwMzEsNyBAQCBpbnQgWkVYUE9SVCBk ZWZsYXRlIChzdHJtLCBmbHVzaCkKKyAgICAgICAgICAgICAgICAgICAgIGlmIChzLT5sb29rYWhl YWQgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgIHMtPnN0cnN0YXJ0ID0gMDsKKyAg ICAgICAgICAgICAgICAgICAgICAgICBzLT5ibG9ja19zdGFydCA9IDBMOworKyAgICAgICAgICAg ICAgICAgICAgICAgIHMtPmluc2VydCA9IDA7CisgICAgICAgICAgICAgICAgICAgICB9CisgICAg ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICB9CitAQCAtODYwLDcgKzEwNDIsNiBAQCBpbnQg WkVYUE9SVCBkZWZsYXRlIChzdHJtLCBmbHVzaCkKKyAgICAgICAgICAgICB9CisgICAgICAgICB9 CisgICAgIH0KKy0gICAgQXNzZXJ0KHN0cm0tPmF2YWlsX291dCA+IDAsICJidWcyIik7CisgCisg ICAgIGlmIChmbHVzaCAhPSBaX0ZJTklTSCkgcmV0dXJuIFpfT0s7CisgICAgIGlmIChzLT53cmFw IDw9IDApIHJldHVybiBaX1NUUkVBTV9FTkQ7CitAQCAtODk3LDE4ICsxMDc4LDkgQEAgaW50IFpF WFBPUlQgZGVmbGF0ZUVuZCAoc3RybSkKKyB7CisgICAgIGludCBzdGF0dXM7CisgCistICAgIGlm IChzdHJtID09IFpfTlVMTCB8fCBzdHJtLT5zdGF0ZSA9PSBaX05VTEwpIHJldHVybiBaX1NUUkVB TV9FUlJPUjsKKysgICAgaWYgKGRlZmxhdGVTdGF0ZUNoZWNrKHN0cm0pKSByZXR1cm4gWl9TVFJF QU1fRVJST1I7CisgCisgICAgIHN0YXR1cyA9IHN0cm0tPnN0YXRlLT5zdGF0dXM7CistICAgIGlm IChzdGF0dXMgIT0gSU5JVF9TVEFURSAmJgorLSAgICAgICAgc3RhdHVzICE9IEVYVFJBX1NUQVRF ICYmCistICAgICAgICBzdGF0dXMgIT0gTkFNRV9TVEFURSAmJgorLSAgICAgICAgc3RhdHVzICE9 IENPTU1FTlRfU1RBVEUgJiYKKy0gICAgICAgIHN0YXR1cyAhPSBIQ1JDX1NUQVRFICYmCistICAg ICAgICBzdGF0dXMgIT0gQlVTWV9TVEFURSAmJgorLSAgICAgICAgc3RhdHVzICE9IEZJTklTSF9T VEFURSkgeworLSAgICAgIHJldHVybiBaX1NUUkVBTV9FUlJPUjsKKy0gICAgfQorIAorICAgICAv KiBEZWFsbG9jYXRlIGluIHJldmVyc2Ugb3JkZXIgb2YgYWxsb2NhdGlvbnM6ICovCisgICAgIFRS WV9GUkVFKHN0cm0sIHN0cm0tPnN0YXRlLT5wZW5kaW5nX2J1Zik7CitAQCAtOTM5LDE4ICsxMTEx LDE4IEBAIGludCBaRVhQT1JUIGRlZmxhdGVDb3B5IChkZXN0LCBzb3VyY2UpCisgICAgIHVzaGYg Km92ZXJsYXk7CisgCisgCistICAgIGlmIChzb3VyY2UgPT0gWl9OVUxMIHx8IGRlc3QgPT0gWl9O VUxMIHx8IHNvdXJjZS0+c3RhdGUgPT0gWl9OVUxMKSB7CisrICAgIGlmIChkZWZsYXRlU3RhdGVD aGVjayhzb3VyY2UpIHx8IGRlc3QgPT0gWl9OVUxMKSB7CisgICAgICAgICByZXR1cm4gWl9TVFJF QU1fRVJST1I7CisgICAgIH0KKyAKKyAgICAgc3MgPSBzb3VyY2UtPnN0YXRlOworIAorLSAgICB6 bWVtY3B5KGRlc3QsIHNvdXJjZSwgc2l6ZW9mKHpfc3RyZWFtKSk7CisrICAgIHptZW1jcHkoKHZv aWRwZilkZXN0LCAodm9pZHBmKXNvdXJjZSwgc2l6ZW9mKHpfc3RyZWFtKSk7CisgCisgICAgIGRz ID0gKGRlZmxhdGVfc3RhdGUgKikgWkFMTE9DKGRlc3QsIDEsIHNpemVvZihkZWZsYXRlX3N0YXRl KSk7CisgICAgIGlmIChkcyA9PSBaX05VTEwpIHJldHVybiBaX01FTV9FUlJPUjsKKyAgICAgZGVz dC0+c3RhdGUgPSAoc3RydWN0IGludGVybmFsX3N0YXRlIEZBUiAqKSBkczsKKy0gICAgem1lbWNw eShkcywgc3MsIHNpemVvZihkZWZsYXRlX3N0YXRlKSk7CisrICAgIHptZW1jcHkoKHZvaWRwZilk cywgKHZvaWRwZilzcywgc2l6ZW9mKGRlZmxhdGVfc3RhdGUpKTsKKyAgICAgZHMtPnN0cm0gPSBk ZXN0OworIAorICAgICBkcy0+d2luZG93ID0gKEJ5dGVmICopIFpBTExPQyhkZXN0LCBkcy0+d19z aXplLCAyKnNpemVvZihCeXRlKSk7CitAQCAtOTY2LDggKzExMzgsOCBAQCBpbnQgWkVYUE9SVCBk ZWZsYXRlQ29weSAoZGVzdCwgc291cmNlKQorICAgICB9CisgICAgIC8qIGZvbGxvd2luZyB6bWVt Y3B5IGRvIG5vdCB3b3JrIGZvciAxNi1iaXQgTVNET1MgKi8KKyAgICAgem1lbWNweShkcy0+d2lu ZG93LCBzcy0+d2luZG93LCBkcy0+d19zaXplICogMiAqIHNpemVvZihCeXRlKSk7CistICAgIHpt ZW1jcHkoZHMtPnByZXYsIHNzLT5wcmV2LCBkcy0+d19zaXplICogc2l6ZW9mKFBvcykpOworLSAg ICB6bWVtY3B5KGRzLT5oZWFkLCBzcy0+aGVhZCwgZHMtPmhhc2hfc2l6ZSAqIHNpemVvZihQb3Mp KTsKKysgICAgem1lbWNweSgodm9pZHBmKWRzLT5wcmV2LCAodm9pZHBmKXNzLT5wcmV2LCBkcy0+ d19zaXplICogc2l6ZW9mKFBvcykpOworKyAgICB6bWVtY3B5KCh2b2lkcGYpZHMtPmhlYWQsICh2 b2lkcGYpc3MtPmhlYWQsIGRzLT5oYXNoX3NpemUgKiBzaXplb2YoUG9zKSk7CisgICAgIHptZW1j cHkoZHMtPnBlbmRpbmdfYnVmLCBzcy0+cGVuZGluZ19idWYsICh1SW50KWRzLT5wZW5kaW5nX2J1 Zl9zaXplKTsKKyAKKyAgICAgZHMtPnBlbmRpbmdfb3V0ID0gZHMtPnBlbmRpbmdfYnVmICsgKHNz LT5wZW5kaW5nX291dCAtIHNzLT5wZW5kaW5nX2J1Zik7CitAQCAtOTg5LDcgKzExNjEsNyBAQCBp bnQgWkVYUE9SVCBkZWZsYXRlQ29weSAoZGVzdCwgc291cmNlKQorICAqIGFsbG9jYXRpbmcgYSBs YXJnZSBzdHJtLT5uZXh0X2luIGJ1ZmZlciBhbmQgY29weWluZyBmcm9tIGl0LgorICAqIChTZWUg YWxzbyBmbHVzaF9wZW5kaW5nKCkpLgorICAqLworLWxvY2FsIGludCByZWFkX2J1ZihzdHJtLCBi dWYsIHNpemUpCisrbG9jYWwgdW5zaWduZWQgcmVhZF9idWYoc3RybSwgYnVmLCBzaXplKQorICAg ICB6X3N0cmVhbXAgc3RybTsKKyAgICAgQnl0ZWYgKmJ1ZjsKKyAgICAgdW5zaWduZWQgc2l6ZTsK K0BAIC0xMDAxLDE5ICsxMTczLDE5IEBAIGxvY2FsIGludCByZWFkX2J1ZihzdHJtLCBidWYsIHNp emUpCisgCisgICAgIHN0cm0tPmF2YWlsX2luICAtPSBsZW47CisgCisrICAgIHptZW1jcHkoYnVm LCBzdHJtLT5uZXh0X2luLCBsZW4pOworICAgICBpZiAoc3RybS0+c3RhdGUtPndyYXAgPT0gMSkg eworLSAgICAgICAgc3RybS0+YWRsZXIgPSBhZGxlcjMyKHN0cm0tPmFkbGVyLCBzdHJtLT5uZXh0 X2luLCBsZW4pOworKyAgICAgICAgc3RybS0+YWRsZXIgPSBhZGxlcjMyKHN0cm0tPmFkbGVyLCBi dWYsIGxlbik7CisgICAgIH0KKyAjaWZkZWYgR1pJUAorICAgICBlbHNlIGlmIChzdHJtLT5zdGF0 ZS0+d3JhcCA9PSAyKSB7CistICAgICAgICBzdHJtLT5hZGxlciA9IGNyYzMyKHN0cm0tPmFkbGVy LCBzdHJtLT5uZXh0X2luLCBsZW4pOworKyAgICAgICAgc3RybS0+YWRsZXIgPSBjcmMzMihzdHJt LT5hZGxlciwgYnVmLCBsZW4pOworICAgICB9CisgI2VuZGlmCistICAgIHptZW1jcHkoYnVmLCBz dHJtLT5uZXh0X2luLCBsZW4pOworICAgICBzdHJtLT5uZXh0X2luICArPSBsZW47CisgICAgIHN0 cm0tPnRvdGFsX2luICs9IGxlbjsKKyAKKy0gICAgcmV0dXJuIChpbnQpbGVuOworKyAgICByZXR1 cm4gbGVuOworIH0KKyAKKyAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0BAIC0xMDM2LDYgKzEyMDgs NyBAQCBsb2NhbCB2b2lkIGxtX2luaXQgKHMpCisgICAgIHMtPnN0cnN0YXJ0ID0gMDsKKyAgICAg cy0+YmxvY2tfc3RhcnQgPSAwTDsKKyAgICAgcy0+bG9va2FoZWFkID0gMDsKKysgICAgcy0+aW5z ZXJ0ID0gMDsKKyAgICAgcy0+bWF0Y2hfbGVuZ3RoID0gcy0+cHJldl9sZW5ndGggPSBNSU5fTUFU Q0gtMTsKKyAgICAgcy0+bWF0Y2hfYXZhaWxhYmxlID0gMDsKKyAgICAgcy0+aW5zX2ggPSAwOwor QEAgLTEwNjYsOSArMTIzOSw5IEBAIGxvY2FsIHVJbnQgbG9uZ2VzdF9tYXRjaChzLCBjdXJfbWF0 Y2gpCisgeworICAgICB1bnNpZ25lZCBjaGFpbl9sZW5ndGggPSBzLT5tYXhfY2hhaW5fbGVuZ3Ro Oy8qIG1heCBoYXNoIGNoYWluIGxlbmd0aCAqLworICAgICByZWdpc3RlciBCeXRlZiAqc2NhbiA9 IHMtPndpbmRvdyArIHMtPnN0cnN0YXJ0OyAvKiBjdXJyZW50IHN0cmluZyAqLworLSAgICByZWdp c3RlciBCeXRlZiAqbWF0Y2g7ICAgICAgICAgICAgICAgICAgICAgICAvKiBtYXRjaGVkIHN0cmlu ZyAqLworKyAgICByZWdpc3RlciBCeXRlZiAqbWF0Y2g7ICAgICAgICAgICAgICAgICAgICAgIC8q IG1hdGNoZWQgc3RyaW5nICovCisgICAgIHJlZ2lzdGVyIGludCBsZW47ICAgICAgICAgICAgICAg ICAgICAgICAgICAgLyogbGVuZ3RoIG9mIGN1cnJlbnQgbWF0Y2ggKi8KKy0gICAgaW50IGJlc3Rf bGVuID0gcy0+cHJldl9sZW5ndGg7ICAgICAgICAgICAgICAvKiBiZXN0IG1hdGNoIGxlbmd0aCBz byBmYXIgKi8KKysgICAgaW50IGJlc3RfbGVuID0gKGludClzLT5wcmV2X2xlbmd0aDsgICAgICAg ICAvKiBiZXN0IG1hdGNoIGxlbmd0aCBzbyBmYXIgKi8KKyAgICAgaW50IG5pY2VfbWF0Y2ggPSBz LT5uaWNlX21hdGNoOyAgICAgICAgICAgICAvKiBzdG9wIGlmIG1hdGNoIGxvbmcgZW5vdWdoICov CisgICAgIElQb3MgbGltaXQgPSBzLT5zdHJzdGFydCA+IChJUG9zKU1BWF9ESVNUKHMpID8KKyAg ICAgICAgIHMtPnN0cnN0YXJ0IC0gKElQb3MpTUFYX0RJU1QocykgOiBOSUw7CitAQCAtMTEwMyw3 ICsxMjc2LDcgQEAgbG9jYWwgdUludCBsb25nZXN0X21hdGNoKHMsIGN1cl9tYXRjaCkKKyAgICAg LyogRG8gbm90IGxvb2sgZm9yIG1hdGNoZXMgYmV5b25kIHRoZSBlbmQgb2YgdGhlIGlucHV0LiBU aGlzIGlzIG5lY2Vzc2FyeQorICAgICAgKiB0byBtYWtlIGRlZmxhdGUgZGV0ZXJtaW5pc3RpYy4K KyAgICAgICovCistICAgIGlmICgodUludCluaWNlX21hdGNoID4gcy0+bG9va2FoZWFkKSBuaWNl X21hdGNoID0gcy0+bG9va2FoZWFkOworKyAgICBpZiAoKHVJbnQpbmljZV9tYXRjaCA+IHMtPmxv b2thaGVhZCkgbmljZV9tYXRjaCA9IChpbnQpcy0+bG9va2FoZWFkOworIAorICAgICBBc3NlcnQo KHVsZylzLT5zdHJzdGFydCA8PSBzLT53aW5kb3dfc2l6ZS1NSU5fTE9PS0FIRUFELCAibmVlZCBs b29rYWhlYWQiKTsKKyAKK0BAIC0xMjY0LDcgKzE0MzcsMTEgQEAgbG9jYWwgdUludCBsb25nZXN0 X21hdGNoKHMsIGN1cl9tYXRjaCkKKyAKKyAjZW5kaWYgLyogRkFTVEVTVCAqLworIAorLSNpZmRl ZiBERUJVR19aTElCCisrI2lmZGVmIFpMSUJfREVCVUcKKysKKysjZGVmaW5lIEVRVUFMIDAKKysv KiByZXN1bHQgb2YgbWVtY21wIGZvciBlcXVhbCBzdHJpbmdzICovCisrCisgLyogPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CisgICogQ2hlY2sgdGhhdCB0aGUgbWF0Y2ggYXQgbWF0Y2hfc3RhcnQgaXMgaW5k ZWVkIGEgbWF0Y2guCisgICovCitAQCAtMTI5MCw3ICsxNDY3LDcgQEAgbG9jYWwgdm9pZCBjaGVj a19tYXRjaChzLCBzdGFydCwgbWF0Y2gsIGxlbmd0aCkKKyB9CisgI2Vsc2UKKyAjICBkZWZpbmUg Y2hlY2tfbWF0Y2gocywgc3RhcnQsIG1hdGNoLCBsZW5ndGgpCistI2VuZGlmIC8qIERFQlVHX1pM SUIgKi8KKysjZW5kaWYgLyogWkxJQl9ERUJVRyAqLworIAorIC8qID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQorICAqIEZpbGwgdGhlIHdpbmRvdyB3aGVuIHRoZSBsb29rYWhlYWQgYmVjb21lcyBpbnN1ZmZp Y2llbnQuCitAQCAtMTMwNSwxMSArMTQ4MiwxMiBAQCBsb2NhbCB2b2lkIGNoZWNrX21hdGNoKHMs IHN0YXJ0LCBtYXRjaCwgbGVuZ3RoKQorIGxvY2FsIHZvaWQgZmlsbF93aW5kb3cocykKKyAgICAg ZGVmbGF0ZV9zdGF0ZSAqczsKKyB7CistICAgIHJlZ2lzdGVyIHVuc2lnbmVkIG4sIG07CistICAg IHJlZ2lzdGVyIFBvc2YgKnA7CisrICAgIHVuc2lnbmVkIG47CisgICAgIHVuc2lnbmVkIG1vcmU7 ICAgIC8qIEFtb3VudCBvZiBmcmVlIHNwYWNlIGF0IHRoZSBlbmQgb2YgdGhlIHdpbmRvdy4gKi8K KyAgICAgdUludCB3c2l6ZSA9IHMtPndfc2l6ZTsKKyAKKysgICAgQXNzZXJ0KHMtPmxvb2thaGVh ZCA8IE1JTl9MT09LQUhFQUQsICJhbHJlYWR5IGVub3VnaCBsb29rYWhlYWQiKTsKKysKKyAgICAg ZG8geworICAgICAgICAgbW9yZSA9ICh1bnNpZ25lZCkocy0+d2luZG93X3NpemUgLSh1bGcpcy0+ bG9va2FoZWFkIC0odWxnKXMtPnN0cnN0YXJ0KTsKKyAKK0BAIC0xMzMxLDM4ICsxNTA5LDE0IEBA IGxvY2FsIHZvaWQgZmlsbF93aW5kb3cocykKKyAgICAgICAgICAqLworICAgICAgICAgaWYgKHMt PnN0cnN0YXJ0ID49IHdzaXplK01BWF9ESVNUKHMpKSB7CisgCistICAgICAgICAgICAgem1lbWNw eShzLT53aW5kb3csIHMtPndpbmRvdyt3c2l6ZSwgKHVuc2lnbmVkKXdzaXplKTsKKysgICAgICAg ICAgICB6bWVtY3B5KHMtPndpbmRvdywgcy0+d2luZG93K3dzaXplLCAodW5zaWduZWQpd3NpemUg LSBtb3JlKTsKKyAgICAgICAgICAgICBzLT5tYXRjaF9zdGFydCAtPSB3c2l6ZTsKKyAgICAgICAg ICAgICBzLT5zdHJzdGFydCAgICAtPSB3c2l6ZTsgLyogd2Ugbm93IGhhdmUgc3Ryc3RhcnQgPj0g TUFYX0RJU1QgKi8KKyAgICAgICAgICAgICBzLT5ibG9ja19zdGFydCAtPSAobG9uZykgd3NpemU7 CistCistICAgICAgICAgICAgLyogU2xpZGUgdGhlIGhhc2ggdGFibGUgKGNvdWxkIGJlIGF2b2lk ZWQgd2l0aCAzMiBiaXQgdmFsdWVzCistICAgICAgICAgICAgICAgYXQgdGhlIGV4cGVuc2Ugb2Yg bWVtb3J5IHVzYWdlKS4gV2Ugc2xpZGUgZXZlbiB3aGVuIGxldmVsID09IDAKKy0gICAgICAgICAg ICAgICB0byBrZWVwIHRoZSBoYXNoIHRhYmxlIGNvbnNpc3RlbnQgaWYgd2Ugc3dpdGNoIGJhY2sg dG8gbGV2ZWwgPiAwCistICAgICAgICAgICAgICAgbGF0ZXIuIChVc2luZyBsZXZlbCAwIHBlcm1h bmVudGx5IGlzIG5vdCBhbiBvcHRpbWFsIHVzYWdlIG9mCistICAgICAgICAgICAgICAgemxpYiwg c28gd2UgZG9uJ3QgY2FyZSBhYm91dCB0aGlzIHBhdGhvbG9naWNhbCBjYXNlLikKKy0gICAgICAg ICAgICAgKi8KKy0gICAgICAgICAgICBuID0gcy0+aGFzaF9zaXplOworLSAgICAgICAgICAgIHAg PSAmcy0+aGVhZFtuXTsKKy0gICAgICAgICAgICBkbyB7CistICAgICAgICAgICAgICAgIG0gPSAq LS1wOworLSAgICAgICAgICAgICAgICAqcCA9IChQb3MpKG0gPj0gd3NpemUgPyBtLXdzaXplIDog TklMKTsKKy0gICAgICAgICAgICB9IHdoaWxlICgtLW4pOworLQorLSAgICAgICAgICAgIG4gPSB3 c2l6ZTsKKy0jaWZuZGVmIEZBU1RFU1QKKy0gICAgICAgICAgICBwID0gJnMtPnByZXZbbl07Cist ICAgICAgICAgICAgZG8geworLSAgICAgICAgICAgICAgICBtID0gKi0tcDsKKy0gICAgICAgICAg ICAgICAgKnAgPSAoUG9zKShtID49IHdzaXplID8gbS13c2l6ZSA6IE5JTCk7CistICAgICAgICAg ICAgICAgIC8qIElmIG4gaXMgbm90IG9uIGFueSBoYXNoIGNoYWluLCBwcmV2W25dIGlzIGdhcmJh Z2UgYnV0CistICAgICAgICAgICAgICAgICAqIGl0cyB2YWx1ZSB3aWxsIG5ldmVyIGJlIHVzZWQu CistICAgICAgICAgICAgICAgICAqLworLSAgICAgICAgICAgIH0gd2hpbGUgKC0tbik7CistI2Vu ZGlmCisrICAgICAgICAgICAgc2xpZGVfaGFzaChzKTsKKyAgICAgICAgICAgICBtb3JlICs9IHdz aXplOworICAgICAgICAgfQorLSAgICAgICAgaWYgKHMtPnN0cm0tPmF2YWlsX2luID09IDApIHJl dHVybjsKKysgICAgICAgIGlmIChzLT5zdHJtLT5hdmFpbF9pbiA9PSAwKSBicmVhazsKKyAKKyAg ICAgICAgIC8qIElmIHRoZXJlIHdhcyBubyBzbGlkaW5nOgorICAgICAgICAgICogICAgc3Ryc3Rh cnQgPD0gV1NJWkUrTUFYX0RJU1QtMSAmJiBsb29rYWhlYWQgPD0gTUlOX0xPT0tBSEVBRCAtIDEg JiYKK0BAIC0xMzgxLDEyICsxNTM1LDI0IEBAIGxvY2FsIHZvaWQgZmlsbF93aW5kb3cocykKKyAg ICAgICAgIHMtPmxvb2thaGVhZCArPSBuOworIAorICAgICAgICAgLyogSW5pdGlhbGl6ZSB0aGUg aGFzaCB2YWx1ZSBub3cgdGhhdCB3ZSBoYXZlIHNvbWUgaW5wdXQ6ICovCistICAgICAgICBpZiAo cy0+bG9va2FoZWFkID49IE1JTl9NQVRDSCkgeworLSAgICAgICAgICAgIHMtPmluc19oID0gcy0+ d2luZG93W3MtPnN0cnN0YXJ0XTsKKy0gICAgICAgICAgICBVUERBVEVfSEFTSChzLCBzLT5pbnNf aCwgcy0+d2luZG93W3MtPnN0cnN0YXJ0KzFdKTsKKysgICAgICAgIGlmIChzLT5sb29rYWhlYWQg KyBzLT5pbnNlcnQgPj0gTUlOX01BVENIKSB7CisrICAgICAgICAgICAgdUludCBzdHIgPSBzLT5z dHJzdGFydCAtIHMtPmluc2VydDsKKysgICAgICAgICAgICBzLT5pbnNfaCA9IHMtPndpbmRvd1tz dHJdOworKyAgICAgICAgICAgIFVQREFURV9IQVNIKHMsIHMtPmluc19oLCBzLT53aW5kb3dbc3Ry ICsgMV0pOworICNpZiBNSU5fTUFUQ0ggIT0gMworICAgICAgICAgICAgIENhbGwgVVBEQVRFX0hB U0goKSBNSU5fTUFUQ0gtMyBtb3JlIHRpbWVzCisgI2VuZGlmCisrICAgICAgICAgICAgd2hpbGUg KHMtPmluc2VydCkgeworKyAgICAgICAgICAgICAgICBVUERBVEVfSEFTSChzLCBzLT5pbnNfaCwg cy0+d2luZG93W3N0ciArIE1JTl9NQVRDSC0xXSk7CisrI2lmbmRlZiBGQVNURVNUCisrICAgICAg ICAgICAgICAgIHMtPnByZXZbc3RyICYgcy0+d19tYXNrXSA9IHMtPmhlYWRbcy0+aW5zX2hdOwor KyNlbmRpZgorKyAgICAgICAgICAgICAgICBzLT5oZWFkW3MtPmluc19oXSA9IChQb3Mpc3RyOwor KyAgICAgICAgICAgICAgICBzdHIrKzsKKysgICAgICAgICAgICAgICAgcy0+aW5zZXJ0LS07Cisr ICAgICAgICAgICAgICAgIGlmIChzLT5sb29rYWhlYWQgKyBzLT5pbnNlcnQgPCBNSU5fTUFUQ0gp CisrICAgICAgICAgICAgICAgICAgICBicmVhazsKKysgICAgICAgICAgICB9CisgICAgICAgICB9 CisgICAgICAgICAvKiBJZiB0aGUgd2hvbGUgaW5wdXQgaGFzIGxlc3MgdGhhbiBNSU5fTUFUQ0gg Ynl0ZXMsIGluc19oIGlzIGdhcmJhZ2UsCisgICAgICAgICAgKiBidXQgdGhpcyBpcyBub3QgaW1w b3J0YW50IHNpbmNlIG9ubHkgbGl0ZXJhbCBieXRlcyB3aWxsIGJlIGVtaXR0ZWQuCitAQCAtMTQy Nyw2ICsxNTkzLDkgQEAgbG9jYWwgdm9pZCBmaWxsX3dpbmRvdyhzKQorICAgICAgICAgICAgIHMt PmhpZ2hfd2F0ZXIgKz0gaW5pdDsKKyAgICAgICAgIH0KKyAgICAgfQorKworKyAgICBBc3NlcnQo KHVsZylzLT5zdHJzdGFydCA8PSBzLT53aW5kb3dfc2l6ZSAtIE1JTl9MT09LQUhFQUQsCisrICAg ICAgICAgICAibm90IGVub3VnaCByb29tIGZvciBzZWFyY2giKTsKKyB9CisgCisgLyogPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CitAQCAtMTQ1MCw2NCArMTYxOSwxOTkgQEAgbG9jYWwgdm9pZCBmaWxsX3dp bmRvdyhzKQorICAgIGlmIChzLT5zdHJtLT5hdmFpbF9vdXQgPT0gMCkgcmV0dXJuIChsYXN0KSA/ IGZpbmlzaF9zdGFydGVkIDogbmVlZF9tb3JlOyBcCisgfQorIAorKy8qIE1heGltdW0gc3RvcmVk IGJsb2NrIGxlbmd0aCBpbiBkZWZsYXRlIGZvcm1hdCAobm90IGluY2x1ZGluZyBoZWFkZXIpLiAq LworKyNkZWZpbmUgTUFYX1NUT1JFRCA2NTUzNQorKworKy8qIE1pbmltdW0gb2YgYSBhbmQgYi4g Ki8KKysjZGVmaW5lIE1JTihhLCBiKSAoKGEpID4gKGIpID8gKGIpIDogKGEpKQorKworIC8qID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQorICAqIENvcHkgd2l0aG91dCBjb21wcmVzc2lvbiBhcyBtdWNoIGFz IHBvc3NpYmxlIGZyb20gdGhlIGlucHV0IHN0cmVhbSwgcmV0dXJuCisgICogdGhlIGN1cnJlbnQg YmxvY2sgc3RhdGUuCistICogVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBpbnNlcnQgbmV3IHN0cmlu Z3MgaW4gdGhlIGRpY3Rpb25hcnkgc2luY2UKKy0gKiB1bmNvbXByZXNzaWJsZSBkYXRhIGlzIHBy b2JhYmx5IG5vdCB1c2VmdWwuIFRoaXMgZnVuY3Rpb24gaXMgdXNlZAorLSAqIG9ubHkgZm9yIHRo ZSBsZXZlbD0wIGNvbXByZXNzaW9uIG9wdGlvbi4KKy0gKiBOT1RFOiB0aGlzIGZ1bmN0aW9uIHNo b3VsZCBiZSBvcHRpbWl6ZWQgdG8gYXZvaWQgZXh0cmEgY29weWluZyBmcm9tCistICogd2luZG93 IHRvIHBlbmRpbmdfYnVmLgorKyAqCisrICogSW4gY2FzZSBkZWZsYXRlUGFyYW1zKCkgaXMgdXNl ZCB0byBsYXRlciBzd2l0Y2ggdG8gYSBub24temVybyBjb21wcmVzc2lvbgorKyAqIGxldmVsLCBz LT5tYXRjaGVzIChvdGhlcndpc2UgdW51c2VkIHdoZW4gc3RvcmluZykga2VlcHMgdHJhY2sgb2Yg dGhlIG51bWJlcgorKyAqIG9mIGhhc2ggdGFibGUgc2xpZGVzIHRvIHBlcmZvcm0uIElmIHMtPm1h dGNoZXMgaXMgMSwgdGhlbiBvbmUgaGFzaCB0YWJsZQorKyAqIHNsaWRlIHdpbGwgYmUgZG9uZSB3 aGVuIHN3aXRjaGluZy4gSWYgcy0+bWF0Y2hlcyBpcyAyLCB0aGUgbWF4aW11bSB2YWx1ZQorKyAq IGFsbG93ZWQgaGVyZSwgdGhlbiB0aGUgaGFzaCB0YWJsZSB3aWxsIGJlIGNsZWFyZWQsIHNpbmNl IHR3byBvciBtb3JlIHNsaWRlcworKyAqIGlzIHRoZSBzYW1lIGFzIGEgY2xlYXIuCisrICoKKysg KiBkZWZsYXRlX3N0b3JlZCgpIGlzIHdyaXR0ZW4gdG8gbWluaW1pemUgdGhlIG51bWJlciBvZiB0 aW1lcyBhbiBpbnB1dCBieXRlIGlzCisrICogY29waWVkLiBJdCBpcyBtb3N0IGVmZmljaWVudCB3 aXRoIGxhcmdlIGlucHV0IGFuZCBvdXRwdXQgYnVmZmVycywgd2hpY2gKKysgKiBtYXhpbWl6ZXMg dGhlIG9wcG9ydHVuaXRlcyB0byBoYXZlIGEgc2luZ2xlIGNvcHkgZnJvbSBuZXh0X2luIHRvIG5l eHRfb3V0LgorICAqLworIGxvY2FsIGJsb2NrX3N0YXRlIGRlZmxhdGVfc3RvcmVkKHMsIGZsdXNo KQorICAgICBkZWZsYXRlX3N0YXRlICpzOworICAgICBpbnQgZmx1c2g7CisgeworLSAgICAvKiBT dG9yZWQgYmxvY2tzIGFyZSBsaW1pdGVkIHRvIDB4ZmZmZiBieXRlcywgcGVuZGluZ19idWYgaXMg bGltaXRlZAorLSAgICAgKiB0byBwZW5kaW5nX2J1Zl9zaXplLCBhbmQgZWFjaCBzdG9yZWQgYmxv Y2sgaGFzIGEgNSBieXRlIGhlYWRlcjoKKysgICAgLyogU21hbGxlc3Qgd29ydGh5IGJsb2NrIHNp emUgd2hlbiBub3QgZmx1c2hpbmcgb3IgZmluaXNoaW5nLiBCeSBkZWZhdWx0CisrICAgICAqIHRo aXMgaXMgMzJLLiBUaGlzIGNhbiBiZSBhcyBzbWFsbCBhcyA1MDcgYnl0ZXMgZm9yIG1lbUxldmVs ID09IDEuIEZvcgorKyAgICAgKiBsYXJnZSBpbnB1dCBhbmQgb3V0cHV0IGJ1ZmZlcnMsIHRoZSBz dG9yZWQgYmxvY2sgc2l6ZSB3aWxsIGJlIGxhcmdlci4KKyAgICAgICovCistICAgIHVsZyBtYXhf YmxvY2tfc2l6ZSA9IDB4ZmZmZjsKKy0gICAgdWxnIG1heF9zdGFydDsKKysgICAgdW5zaWduZWQg bWluX2Jsb2NrID0gTUlOKHMtPnBlbmRpbmdfYnVmX3NpemUgLSA1LCBzLT53X3NpemUpOworIAor LSAgICBpZiAobWF4X2Jsb2NrX3NpemUgPiBzLT5wZW5kaW5nX2J1Zl9zaXplIC0gNSkgeworLSAg ICAgICAgbWF4X2Jsb2NrX3NpemUgPSBzLT5wZW5kaW5nX2J1Zl9zaXplIC0gNTsKKy0gICAgfQor KyAgICAvKiBDb3B5IGFzIG1hbnkgbWluX2Jsb2NrIG9yIGxhcmdlciBzdG9yZWQgYmxvY2tzIGRp cmVjdGx5IHRvIG5leHRfb3V0IGFzCisrICAgICAqIHBvc3NpYmxlLiBJZiBmbHVzaGluZywgY29w eSB0aGUgcmVtYWluaW5nIGF2YWlsYWJsZSBpbnB1dCB0byBuZXh0X291dCBhcworKyAgICAgKiBz dG9yZWQgYmxvY2tzLCBpZiB0aGVyZSBpcyBlbm91Z2ggc3BhY2UuCisrICAgICAqLworKyAgICB1 bnNpZ25lZCBsZW4sIGxlZnQsIGhhdmUsIGxhc3QgPSAwOworKyAgICB1bnNpZ25lZCB1c2VkID0g cy0+c3RybS0+YXZhaWxfaW47CisrICAgIGRvIHsKKysgICAgICAgIC8qIFNldCBsZW4gdG8gdGhl IG1heGltdW0gc2l6ZSBibG9jayB0aGF0IHdlIGNhbiBjb3B5IGRpcmVjdGx5IHdpdGggdGhlCisr ICAgICAgICAgKiBhdmFpbGFibGUgaW5wdXQgZGF0YSBhbmQgb3V0cHV0IHNwYWNlLiBTZXQgbGVm dCB0byBob3cgbXVjaCBvZiB0aGF0CisrICAgICAgICAgKiB3b3VsZCBiZSBjb3BpZWQgZnJvbSB3 aGF0J3MgbGVmdCBpbiB0aGUgd2luZG93LgorKyAgICAgICAgICovCisrICAgICAgICBsZW4gPSBN QVhfU1RPUkVEOyAgICAgICAvKiBtYXhpbXVtIGRlZmxhdGUgc3RvcmVkIGJsb2NrIGxlbmd0aCAq LworKyAgICAgICAgaGF2ZSA9IChzLT5iaV92YWxpZCArIDQyKSA+PiAzOyAgICAgICAgIC8qIG51 bWJlciBvZiBoZWFkZXIgYnl0ZXMgKi8KKysgICAgICAgIGlmIChzLT5zdHJtLT5hdmFpbF9vdXQg PCBoYXZlKSAgICAgICAgICAvKiBuZWVkIHJvb20gZm9yIGhlYWRlciAqLworKyAgICAgICAgICAg IGJyZWFrOworKyAgICAgICAgICAgIC8qIG1heGltdW0gc3RvcmVkIGJsb2NrIGxlbmd0aCB0aGF0 IHdpbGwgZml0IGluIGF2YWlsX291dDogKi8KKysgICAgICAgIGhhdmUgPSBzLT5zdHJtLT5hdmFp bF9vdXQgLSBoYXZlOworKyAgICAgICAgbGVmdCA9IHMtPnN0cnN0YXJ0IC0gcy0+YmxvY2tfc3Rh cnQ7ICAgIC8qIGJ5dGVzIGxlZnQgaW4gd2luZG93ICovCisrICAgICAgICBpZiAobGVuID4gKHVs ZylsZWZ0ICsgcy0+c3RybS0+YXZhaWxfaW4pCisrICAgICAgICAgICAgbGVuID0gbGVmdCArIHMt PnN0cm0tPmF2YWlsX2luOyAgICAgLyogbGltaXQgbGVuIHRvIHRoZSBpbnB1dCAqLworKyAgICAg ICAgaWYgKGxlbiA+IGhhdmUpCisrICAgICAgICAgICAgbGVuID0gaGF2ZTsgICAgICAgICAgICAg ICAgICAgICAgICAgLyogbGltaXQgbGVuIHRvIHRoZSBvdXRwdXQgKi8KKyAKKy0gICAgLyogQ29w eSBhcyBtdWNoIGFzIHBvc3NpYmxlIGZyb20gaW5wdXQgdG8gb3V0cHV0OiAqLworLSAgICBmb3Ig KDs7KSB7CistICAgICAgICAvKiBGaWxsIHRoZSB3aW5kb3cgYXMgbXVjaCBhcyBwb3NzaWJsZTog Ki8KKy0gICAgICAgIGlmIChzLT5sb29rYWhlYWQgPD0gMSkgeworKyAgICAgICAgLyogSWYgdGhl IHN0b3JlZCBibG9jayB3b3VsZCBiZSBsZXNzIHRoYW4gbWluX2Jsb2NrIGluIGxlbmd0aCwgb3Ig aWYKKysgICAgICAgICAqIHVuYWJsZSB0byBjb3B5IGFsbCBvZiB0aGUgYXZhaWxhYmxlIGlucHV0 IHdoZW4gZmx1c2hpbmcsIHRoZW4gdHJ5CisrICAgICAgICAgKiBjb3B5aW5nIHRvIHRoZSB3aW5k b3cgYW5kIHRoZSBwZW5kaW5nIGJ1ZmZlciBpbnN0ZWFkLiBBbHNvIGRvbid0CisrICAgICAgICAg KiB3cml0ZSBhbiBlbXB0eSBibG9jayB3aGVuIGZsdXNoaW5nIC0tIGRlZmxhdGUoKSBkb2VzIHRo YXQuCisrICAgICAgICAgKi8KKysgICAgICAgIGlmIChsZW4gPCBtaW5fYmxvY2sgJiYgKChsZW4g PT0gMCAmJiBmbHVzaCAhPSBaX0ZJTklTSCkgfHwKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGZsdXNoID09IFpfTk9fRkxVU0ggfHwKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGxlbiAhPSBsZWZ0ICsgcy0+c3RybS0+YXZhaWxfaW4pKQorKyAgICAgICAgICAgIGJy ZWFrOworKworKyAgICAgICAgLyogTWFrZSBhIGR1bW15IHN0b3JlZCBibG9jayBpbiBwZW5kaW5n IHRvIGdldCB0aGUgaGVhZGVyIGJ5dGVzLAorKyAgICAgICAgICogaW5jbHVkaW5nIGFueSBwZW5k aW5nIGJpdHMuIFRoaXMgYWxzbyB1cGRhdGVzIHRoZSBkZWJ1Z2dpbmcgY291bnRzLgorKyAgICAg ICAgICovCisrICAgICAgICBsYXN0ID0gZmx1c2ggPT0gWl9GSU5JU0ggJiYgbGVuID09IGxlZnQg KyBzLT5zdHJtLT5hdmFpbF9pbiA/IDEgOiAwOworKyAgICAgICAgX3RyX3N0b3JlZF9ibG9jayhz LCAoY2hhciAqKTAsIDBMLCBsYXN0KTsKKyAKKy0gICAgICAgICAgICBBc3NlcnQocy0+c3Ryc3Rh cnQgPCBzLT53X3NpemUrTUFYX0RJU1QocykgfHwKKy0gICAgICAgICAgICAgICAgICAgcy0+Ymxv Y2tfc3RhcnQgPj0gKGxvbmcpcy0+d19zaXplLCAic2xpZGUgdG9vIGxhdGUiKTsKKysgICAgICAg IC8qIFJlcGxhY2UgdGhlIGxlbmd0aHMgaW4gdGhlIGR1bW15IHN0b3JlZCBibG9jayB3aXRoIGxl bi4gKi8KKysgICAgICAgIHMtPnBlbmRpbmdfYnVmW3MtPnBlbmRpbmcgLSA0XSA9IGxlbjsKKysg ICAgICAgIHMtPnBlbmRpbmdfYnVmW3MtPnBlbmRpbmcgLSAzXSA9IGxlbiA+PiA4OworKyAgICAg ICAgcy0+cGVuZGluZ19idWZbcy0+cGVuZGluZyAtIDJdID0gfmxlbjsKKysgICAgICAgIHMtPnBl bmRpbmdfYnVmW3MtPnBlbmRpbmcgLSAxXSA9IH5sZW4gPj4gODsKKyAKKy0gICAgICAgICAgICBm aWxsX3dpbmRvdyhzKTsKKy0gICAgICAgICAgICBpZiAocy0+bG9va2FoZWFkID09IDAgJiYgZmx1 c2ggPT0gWl9OT19GTFVTSCkgcmV0dXJuIG5lZWRfbW9yZTsKKysgICAgICAgIC8qIFdyaXRlIHRo ZSBzdG9yZWQgYmxvY2sgaGVhZGVyIGJ5dGVzLiAqLworKyAgICAgICAgZmx1c2hfcGVuZGluZyhz LT5zdHJtKTsKKyAKKy0gICAgICAgICAgICBpZiAocy0+bG9va2FoZWFkID09IDApIGJyZWFrOyAv KiBmbHVzaCB0aGUgY3VycmVudCBibG9jayAqLworKyNpZmRlZiBaTElCX0RFQlVHCisrICAgICAg ICAvKiBVcGRhdGUgZGVidWdnaW5nIGNvdW50cyBmb3IgdGhlIGRhdGEgYWJvdXQgdG8gYmUgY29w aWVkLiAqLworKyAgICAgICAgcy0+Y29tcHJlc3NlZF9sZW4gKz0gbGVuIDw8IDM7CisrICAgICAg ICBzLT5iaXRzX3NlbnQgKz0gbGVuIDw8IDM7CisrI2VuZGlmCisrCisrICAgICAgICAvKiBDb3B5 IHVuY29tcHJlc3NlZCBieXRlcyBmcm9tIHRoZSB3aW5kb3cgdG8gbmV4dF9vdXQuICovCisrICAg ICAgICBpZiAobGVmdCkgeworKyAgICAgICAgICAgIGlmIChsZWZ0ID4gbGVuKQorKyAgICAgICAg ICAgICAgICBsZWZ0ID0gbGVuOworKyAgICAgICAgICAgIHptZW1jcHkocy0+c3RybS0+bmV4dF9v dXQsIHMtPndpbmRvdyArIHMtPmJsb2NrX3N0YXJ0LCBsZWZ0KTsKKysgICAgICAgICAgICBzLT5z dHJtLT5uZXh0X291dCArPSBsZWZ0OworKyAgICAgICAgICAgIHMtPnN0cm0tPmF2YWlsX291dCAt PSBsZWZ0OworKyAgICAgICAgICAgIHMtPnN0cm0tPnRvdGFsX291dCArPSBsZWZ0OworKyAgICAg ICAgICAgIHMtPmJsb2NrX3N0YXJ0ICs9IGxlZnQ7CisrICAgICAgICAgICAgbGVuIC09IGxlZnQ7 CisgICAgICAgICB9CistICAgICAgICBBc3NlcnQocy0+YmxvY2tfc3RhcnQgPj0gMEwsICJibG9j ayBnb25lIik7CistCistICAgICAgICBzLT5zdHJzdGFydCArPSBzLT5sb29rYWhlYWQ7CistICAg ICAgICBzLT5sb29rYWhlYWQgPSAwOworLQorLSAgICAgICAgLyogRW1pdCBhIHN0b3JlZCBibG9j ayBpZiBwZW5kaW5nX2J1ZiB3aWxsIGJlIGZ1bGw6ICovCistICAgICAgICBtYXhfc3RhcnQgPSBz LT5ibG9ja19zdGFydCArIG1heF9ibG9ja19zaXplOworLSAgICAgICAgaWYgKHMtPnN0cnN0YXJ0 ID09IDAgfHwgKHVsZylzLT5zdHJzdGFydCA+PSBtYXhfc3RhcnQpIHsKKy0gICAgICAgICAgICAv KiBzdHJzdGFydCA9PSAwIGlzIHBvc3NpYmxlIHdoZW4gd3JhcGFyb3VuZCBvbiAxNi1iaXQgbWFj aGluZSAqLworLSAgICAgICAgICAgIHMtPmxvb2thaGVhZCA9ICh1SW50KShzLT5zdHJzdGFydCAt IG1heF9zdGFydCk7CistICAgICAgICAgICAgcy0+c3Ryc3RhcnQgPSAodUludCltYXhfc3RhcnQ7 CistICAgICAgICAgICAgRkxVU0hfQkxPQ0socywgMCk7CisrCisrICAgICAgICAvKiBDb3B5IHVu Y29tcHJlc3NlZCBieXRlcyBkaXJlY3RseSBmcm9tIG5leHRfaW4gdG8gbmV4dF9vdXQsIHVwZGF0 aW5nCisrICAgICAgICAgKiB0aGUgY2hlY2sgdmFsdWUuCisrICAgICAgICAgKi8KKysgICAgICAg IGlmIChsZW4pIHsKKysgICAgICAgICAgICByZWFkX2J1ZihzLT5zdHJtLCBzLT5zdHJtLT5uZXh0 X291dCwgbGVuKTsKKysgICAgICAgICAgICBzLT5zdHJtLT5uZXh0X291dCArPSBsZW47CisrICAg ICAgICAgICAgcy0+c3RybS0+YXZhaWxfb3V0IC09IGxlbjsKKysgICAgICAgICAgICBzLT5zdHJt LT50b3RhbF9vdXQgKz0gbGVuOworICAgICAgICAgfQorLSAgICAgICAgLyogRmx1c2ggaWYgd2Ug bWF5IGhhdmUgdG8gc2xpZGUsIG90aGVyd2lzZSBibG9ja19zdGFydCBtYXkgYmVjb21lCistICAg ICAgICAgKiBuZWdhdGl2ZSBhbmQgdGhlIGRhdGEgd2lsbCBiZSBnb25lOgorKyAgICB9IHdoaWxl IChsYXN0ID09IDApOworKworKyAgICAvKiBVcGRhdGUgdGhlIHNsaWRpbmcgd2luZG93IHdpdGgg dGhlIGxhc3Qgcy0+d19zaXplIGJ5dGVzIG9mIHRoZSBjb3BpZWQKKysgICAgICogZGF0YSwgb3Ig YXBwZW5kIGFsbCBvZiB0aGUgY29waWVkIGRhdGEgdG8gdGhlIGV4aXN0aW5nIHdpbmRvdyBpZiBs ZXNzCisrICAgICAqIHRoYW4gcy0+d19zaXplIGJ5dGVzIHdlcmUgY29waWVkLiBBbHNvIHVwZGF0 ZSB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRvCisrICAgICAqIGluc2VydCBpbiB0aGUgaGFzaCB0YWJs ZXMsIGluIHRoZSBldmVudCB0aGF0IGRlZmxhdGVQYXJhbXMoKSBzd2l0Y2hlcyB0bworKyAgICAg KiBhIG5vbi16ZXJvIGNvbXByZXNzaW9uIGxldmVsLgorKyAgICAgKi8KKysgICAgdXNlZCAtPSBz LT5zdHJtLT5hdmFpbF9pbjsgICAgICAvKiBudW1iZXIgb2YgaW5wdXQgYnl0ZXMgZGlyZWN0bHkg Y29waWVkICovCisrICAgIGlmICh1c2VkKSB7CisrICAgICAgICAvKiBJZiBhbnkgaW5wdXQgd2Fz IHVzZWQsIHRoZW4gbm8gdW51c2VkIGlucHV0IHJlbWFpbnMgaW4gdGhlIHdpbmRvdywKKysgICAg ICAgICAqIHRoZXJlZm9yZSBzLT5ibG9ja19zdGFydCA9PSBzLT5zdHJzdGFydC4KKyAgICAgICAg ICAqLworLSAgICAgICAgaWYgKHMtPnN0cnN0YXJ0IC0gKHVJbnQpcy0+YmxvY2tfc3RhcnQgPj0g TUFYX0RJU1QocykpIHsKKy0gICAgICAgICAgICBGTFVTSF9CTE9DSyhzLCAwKTsKKysgICAgICAg IGlmICh1c2VkID49IHMtPndfc2l6ZSkgeyAgICAvKiBzdXBwbGFudCB0aGUgcHJldmlvdXMgaGlz dG9yeSAqLworKyAgICAgICAgICAgIHMtPm1hdGNoZXMgPSAyOyAgICAgICAgIC8qIGNsZWFyIGhh c2ggKi8KKysgICAgICAgICAgICB6bWVtY3B5KHMtPndpbmRvdywgcy0+c3RybS0+bmV4dF9pbiAt IHMtPndfc2l6ZSwgcy0+d19zaXplKTsKKysgICAgICAgICAgICBzLT5zdHJzdGFydCA9IHMtPndf c2l6ZTsKKyAgICAgICAgIH0KKysgICAgICAgIGVsc2UgeworKyAgICAgICAgICAgIGlmIChzLT53 aW5kb3dfc2l6ZSAtIHMtPnN0cnN0YXJ0IDw9IHVzZWQpIHsKKysgICAgICAgICAgICAgICAgLyog U2xpZGUgdGhlIHdpbmRvdyBkb3duLiAqLworKyAgICAgICAgICAgICAgICBzLT5zdHJzdGFydCAt PSBzLT53X3NpemU7CisrICAgICAgICAgICAgICAgIHptZW1jcHkocy0+d2luZG93LCBzLT53aW5k b3cgKyBzLT53X3NpemUsIHMtPnN0cnN0YXJ0KTsKKysgICAgICAgICAgICAgICAgaWYgKHMtPm1h dGNoZXMgPCAyKQorKyAgICAgICAgICAgICAgICAgICAgcy0+bWF0Y2hlcysrOyAgIC8qIGFkZCBh IHBlbmRpbmcgc2xpZGVfaGFzaCgpICovCisrICAgICAgICAgICAgfQorKyAgICAgICAgICAgIHpt ZW1jcHkocy0+d2luZG93ICsgcy0+c3Ryc3RhcnQsIHMtPnN0cm0tPm5leHRfaW4gLSB1c2VkLCB1 c2VkKTsKKysgICAgICAgICAgICBzLT5zdHJzdGFydCArPSB1c2VkOworKyAgICAgICAgfQorKyAg ICAgICAgcy0+YmxvY2tfc3RhcnQgPSBzLT5zdHJzdGFydDsKKysgICAgICAgIHMtPmluc2VydCAr PSBNSU4odXNlZCwgcy0+d19zaXplIC0gcy0+aW5zZXJ0KTsKKysgICAgfQorKyAgICBpZiAocy0+ aGlnaF93YXRlciA8IHMtPnN0cnN0YXJ0KQorKyAgICAgICAgcy0+aGlnaF93YXRlciA9IHMtPnN0 cnN0YXJ0OworKworKyAgICAvKiBJZiB0aGUgbGFzdCBibG9jayB3YXMgd3JpdHRlbiB0byBuZXh0 X291dCwgdGhlbiBkb25lLiAqLworKyAgICBpZiAobGFzdCkKKysgICAgICAgIHJldHVybiBmaW5p c2hfZG9uZTsKKysKKysgICAgLyogSWYgZmx1c2hpbmcgYW5kIGFsbCBpbnB1dCBoYXMgYmVlbiBj b25zdW1lZCwgdGhlbiBkb25lLiAqLworKyAgICBpZiAoZmx1c2ggIT0gWl9OT19GTFVTSCAmJiBm bHVzaCAhPSBaX0ZJTklTSCAmJgorKyAgICAgICAgcy0+c3RybS0+YXZhaWxfaW4gPT0gMCAmJiAo bG9uZylzLT5zdHJzdGFydCA9PSBzLT5ibG9ja19zdGFydCkKKysgICAgICAgIHJldHVybiBibG9j a19kb25lOworKworKyAgICAvKiBGaWxsIHRoZSB3aW5kb3cgd2l0aCBhbnkgcmVtYWluaW5nIGlu cHV0LiAqLworKyAgICBoYXZlID0gcy0+d2luZG93X3NpemUgLSBzLT5zdHJzdGFydCAtIDE7Cisr ICAgIGlmIChzLT5zdHJtLT5hdmFpbF9pbiA+IGhhdmUgJiYgcy0+YmxvY2tfc3RhcnQgPj0gKGxv bmcpcy0+d19zaXplKSB7CisrICAgICAgICAvKiBTbGlkZSB0aGUgd2luZG93IGRvd24uICovCisr ICAgICAgICBzLT5ibG9ja19zdGFydCAtPSBzLT53X3NpemU7CisrICAgICAgICBzLT5zdHJzdGFy dCAtPSBzLT53X3NpemU7CisrICAgICAgICB6bWVtY3B5KHMtPndpbmRvdywgcy0+d2luZG93ICsg cy0+d19zaXplLCBzLT5zdHJzdGFydCk7CisrICAgICAgICBpZiAocy0+bWF0Y2hlcyA8IDIpCisr ICAgICAgICAgICAgcy0+bWF0Y2hlcysrOyAgICAgICAgICAgLyogYWRkIGEgcGVuZGluZyBzbGlk ZV9oYXNoKCkgKi8KKysgICAgICAgIGhhdmUgKz0gcy0+d19zaXplOyAgICAgICAgICAvKiBtb3Jl IHNwYWNlIG5vdyAqLworICAgICB9CistICAgIEZMVVNIX0JMT0NLKHMsIGZsdXNoID09IFpfRklO SVNIKTsKKy0gICAgcmV0dXJuIGZsdXNoID09IFpfRklOSVNIID8gZmluaXNoX2RvbmUgOiBibG9j a19kb25lOworKyAgICBpZiAoaGF2ZSA+IHMtPnN0cm0tPmF2YWlsX2luKQorKyAgICAgICAgaGF2 ZSA9IHMtPnN0cm0tPmF2YWlsX2luOworKyAgICBpZiAoaGF2ZSkgeworKyAgICAgICAgcmVhZF9i dWYocy0+c3RybSwgcy0+d2luZG93ICsgcy0+c3Ryc3RhcnQsIGhhdmUpOworKyAgICAgICAgcy0+ c3Ryc3RhcnQgKz0gaGF2ZTsKKysgICAgfQorKyAgICBpZiAocy0+aGlnaF93YXRlciA8IHMtPnN0 cnN0YXJ0KQorKyAgICAgICAgcy0+aGlnaF93YXRlciA9IHMtPnN0cnN0YXJ0OworKworKyAgICAv KiBUaGVyZSB3YXMgbm90IGVub3VnaCBhdmFpbF9vdXQgdG8gd3JpdGUgYSBjb21wbGV0ZSB3b3J0 aHkgb3IgZmx1c2hlZAorKyAgICAgKiBzdG9yZWQgYmxvY2sgdG8gbmV4dF9vdXQuIFdyaXRlIGEg c3RvcmVkIGJsb2NrIHRvIHBlbmRpbmcgaW5zdGVhZCwgaWYgd2UKKysgICAgICogaGF2ZSBlbm91 Z2ggaW5wdXQgZm9yIGEgd29ydGh5IGJsb2NrLCBvciBpZiBmbHVzaGluZyBhbmQgdGhlcmUgaXMg ZW5vdWdoCisrICAgICAqIHJvb20gZm9yIHRoZSByZW1haW5pbmcgaW5wdXQgYXMgYSBzdG9yZWQg YmxvY2sgaW4gdGhlIHBlbmRpbmcgYnVmZmVyLgorKyAgICAgKi8KKysgICAgaGF2ZSA9IChzLT5i aV92YWxpZCArIDQyKSA+PiAzOyAgICAgICAgIC8qIG51bWJlciBvZiBoZWFkZXIgYnl0ZXMgKi8K KysgICAgICAgIC8qIG1heGltdW0gc3RvcmVkIGJsb2NrIGxlbmd0aCB0aGF0IHdpbGwgZml0IGlu IHBlbmRpbmc6ICovCisrICAgIGhhdmUgPSBNSU4ocy0+cGVuZGluZ19idWZfc2l6ZSAtIGhhdmUs IE1BWF9TVE9SRUQpOworKyAgICBtaW5fYmxvY2sgPSBNSU4oaGF2ZSwgcy0+d19zaXplKTsKKysg ICAgbGVmdCA9IHMtPnN0cnN0YXJ0IC0gcy0+YmxvY2tfc3RhcnQ7CisrICAgIGlmIChsZWZ0ID49 IG1pbl9ibG9jayB8fAorKyAgICAgICAgKChsZWZ0IHx8IGZsdXNoID09IFpfRklOSVNIKSAmJiBm bHVzaCAhPSBaX05PX0ZMVVNIICYmCisrICAgICAgICAgcy0+c3RybS0+YXZhaWxfaW4gPT0gMCAm JiBsZWZ0IDw9IGhhdmUpKSB7CisrICAgICAgICBsZW4gPSBNSU4obGVmdCwgaGF2ZSk7CisrICAg ICAgICBsYXN0ID0gZmx1c2ggPT0gWl9GSU5JU0ggJiYgcy0+c3RybS0+YXZhaWxfaW4gPT0gMCAm JgorKyAgICAgICAgICAgICAgIGxlbiA9PSBsZWZ0ID8gMSA6IDA7CisrICAgICAgICBfdHJfc3Rv cmVkX2Jsb2NrKHMsIChjaGFyZiAqKXMtPndpbmRvdyArIHMtPmJsb2NrX3N0YXJ0LCBsZW4sIGxh c3QpOworKyAgICAgICAgcy0+YmxvY2tfc3RhcnQgKz0gbGVuOworKyAgICAgICAgZmx1c2hfcGVu ZGluZyhzLT5zdHJtKTsKKysgICAgfQorKworKyAgICAvKiBXZSd2ZSBkb25lIGFsbCB3ZSBjYW4g d2l0aCB0aGUgYXZhaWxhYmxlIGlucHV0IGFuZCBvdXRwdXQuICovCisrICAgIHJldHVybiBsYXN0 ID8gZmluaXNoX3N0YXJ0ZWQgOiBuZWVkX21vcmU7CisgfQorIAorIC8qID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQorQEAgLTE2MDMsOCArMTkwNywxNCBAQCBsb2NhbCBibG9ja19zdGF0ZSBkZWZsYXRlX2Zh c3QocywgZmx1c2gpCisgICAgICAgICB9CisgICAgICAgICBpZiAoYmZsdXNoKSBGTFVTSF9CTE9D SyhzLCAwKTsKKyAgICAgfQorLSAgICBGTFVTSF9CTE9DSyhzLCBmbHVzaCA9PSBaX0ZJTklTSCk7 CistICAgIHJldHVybiBmbHVzaCA9PSBaX0ZJTklTSCA/IGZpbmlzaF9kb25lIDogYmxvY2tfZG9u ZTsKKysgICAgcy0+aW5zZXJ0ID0gcy0+c3Ryc3RhcnQgPCBNSU5fTUFUQ0gtMSA/IHMtPnN0cnN0 YXJ0IDogTUlOX01BVENILTE7CisrICAgIGlmIChmbHVzaCA9PSBaX0ZJTklTSCkgeworKyAgICAg ICAgRkxVU0hfQkxPQ0socywgMSk7CisrICAgICAgICByZXR1cm4gZmluaXNoX2RvbmU7CisrICAg IH0KKysgICAgaWYgKHMtPmxhc3RfbGl0KQorKyAgICAgICAgRkxVU0hfQkxPQ0socywgMCk7Cisr ICAgIHJldHVybiBibG9ja19kb25lOworIH0KKyAKKyAjaWZuZGVmIEZBU1RFU1QKK0BAIC0xNzI4 LDggKzIwMzgsMTQgQEAgbG9jYWwgYmxvY2tfc3RhdGUgZGVmbGF0ZV9zbG93KHMsIGZsdXNoKQor ICAgICAgICAgX3RyX3RhbGx5X2xpdChzLCBzLT53aW5kb3dbcy0+c3Ryc3RhcnQtMV0sIGJmbHVz aCk7CisgICAgICAgICBzLT5tYXRjaF9hdmFpbGFibGUgPSAwOworICAgICB9CistICAgIEZMVVNI X0JMT0NLKHMsIGZsdXNoID09IFpfRklOSVNIKTsKKy0gICAgcmV0dXJuIGZsdXNoID09IFpfRklO SVNIID8gZmluaXNoX2RvbmUgOiBibG9ja19kb25lOworKyAgICBzLT5pbnNlcnQgPSBzLT5zdHJz dGFydCA8IE1JTl9NQVRDSC0xID8gcy0+c3Ryc3RhcnQgOiBNSU5fTUFUQ0gtMTsKKysgICAgaWYg KGZsdXNoID09IFpfRklOSVNIKSB7CisrICAgICAgICBGTFVTSF9CTE9DSyhzLCAxKTsKKysgICAg ICAgIHJldHVybiBmaW5pc2hfZG9uZTsKKysgICAgfQorKyAgICBpZiAocy0+bGFzdF9saXQpCisr ICAgICAgICBGTFVTSF9CTE9DSyhzLCAwKTsKKysgICAgcmV0dXJuIGJsb2NrX2RvbmU7CisgfQor ICNlbmRpZiAvKiBGQVNURVNUICovCisgCitAQCAtMTc0OSwxMSArMjA2NSwxMSBAQCBsb2NhbCBi bG9ja19zdGF0ZSBkZWZsYXRlX3JsZShzLCBmbHVzaCkKKyAgICAgZm9yICg7OykgeworICAgICAg ICAgLyogTWFrZSBzdXJlIHRoYXQgd2UgYWx3YXlzIGhhdmUgZW5vdWdoIGxvb2thaGVhZCwgZXhj ZXB0CisgICAgICAgICAgKiBhdCB0aGUgZW5kIG9mIHRoZSBpbnB1dCBmaWxlLiBXZSBuZWVkIE1B WF9NQVRDSCBieXRlcworLSAgICAgICAgICogZm9yIHRoZSBsb25nZXN0IGVuY29kYWJsZSBydW4u CisrICAgICAgICAgKiBmb3IgdGhlIGxvbmdlc3QgcnVuLCBwbHVzIG9uZSBmb3IgdGhlIHVucm9s bGVkIGxvb3AuCisgICAgICAgICAgKi8KKy0gICAgICAgIGlmIChzLT5sb29rYWhlYWQgPCBNQVhf TUFUQ0gpIHsKKysgICAgICAgIGlmIChzLT5sb29rYWhlYWQgPD0gTUFYX01BVENIKSB7CisgICAg ICAgICAgICAgZmlsbF93aW5kb3cocyk7CistICAgICAgICAgICAgaWYgKHMtPmxvb2thaGVhZCA8 IE1BWF9NQVRDSCAmJiBmbHVzaCA9PSBaX05PX0ZMVVNIKSB7CisrICAgICAgICAgICAgaWYgKHMt Pmxvb2thaGVhZCA8PSBNQVhfTUFUQ0ggJiYgZmx1c2ggPT0gWl9OT19GTFVTSCkgeworICAgICAg ICAgICAgICAgICByZXR1cm4gbmVlZF9tb3JlOworICAgICAgICAgICAgIH0KKyAgICAgICAgICAg ICBpZiAocy0+bG9va2FoZWFkID09IDApIGJyZWFrOyAvKiBmbHVzaCB0aGUgY3VycmVudCBibG9j ayAqLworQEAgLTE3NzIsMTAgKzIwODgsMTEgQEAgbG9jYWwgYmxvY2tfc3RhdGUgZGVmbGF0ZV9y bGUocywgZmx1c2gpCisgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXYgPT0gKisrc2NhbiAm JiBwcmV2ID09ICorK3NjYW4gJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldiA9PSAq KytzY2FuICYmIHByZXYgPT0gKisrc2NhbiAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICBz Y2FuIDwgc3RyZW5kKTsKKy0gICAgICAgICAgICAgICAgcy0+bWF0Y2hfbGVuZ3RoID0gTUFYX01B VENIIC0gKGludCkoc3RyZW5kIC0gc2Nhbik7CisrICAgICAgICAgICAgICAgIHMtPm1hdGNoX2xl bmd0aCA9IE1BWF9NQVRDSCAtICh1SW50KShzdHJlbmQgLSBzY2FuKTsKKyAgICAgICAgICAgICAg ICAgaWYgKHMtPm1hdGNoX2xlbmd0aCA+IHMtPmxvb2thaGVhZCkKKyAgICAgICAgICAgICAgICAg ICAgIHMtPm1hdGNoX2xlbmd0aCA9IHMtPmxvb2thaGVhZDsKKyAgICAgICAgICAgICB9CisrICAg ICAgICAgICAgQXNzZXJ0KHNjYW4gPD0gcy0+d2luZG93Kyh1SW50KShzLT53aW5kb3dfc2l6ZS0x KSwgIndpbGQgc2NhbiIpOworICAgICAgICAgfQorIAorICAgICAgICAgLyogRW1pdCBtYXRjaCBp ZiBoYXZlIHJ1biBvZiBNSU5fTUFUQ0ggb3IgbG9uZ2VyLCBlbHNlIGVtaXQgbGl0ZXJhbCAqLwor QEAgLTE3OTYsOCArMjExMywxNCBAQCBsb2NhbCBibG9ja19zdGF0ZSBkZWZsYXRlX3JsZShzLCBm bHVzaCkKKyAgICAgICAgIH0KKyAgICAgICAgIGlmIChiZmx1c2gpIEZMVVNIX0JMT0NLKHMsIDAp OworICAgICB9CistICAgIEZMVVNIX0JMT0NLKHMsIGZsdXNoID09IFpfRklOSVNIKTsKKy0gICAg cmV0dXJuIGZsdXNoID09IFpfRklOSVNIID8gZmluaXNoX2RvbmUgOiBibG9ja19kb25lOworKyAg ICBzLT5pbnNlcnQgPSAwOworKyAgICBpZiAoZmx1c2ggPT0gWl9GSU5JU0gpIHsKKysgICAgICAg IEZMVVNIX0JMT0NLKHMsIDEpOworKyAgICAgICAgcmV0dXJuIGZpbmlzaF9kb25lOworKyAgICB9 CisrICAgIGlmIChzLT5sYXN0X2xpdCkKKysgICAgICAgIEZMVVNIX0JMT0NLKHMsIDApOworKyAg ICByZXR1cm4gYmxvY2tfZG9uZTsKKyB9CisgCisgLyogPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitAQCAt MTgyOSw2ICsyMTUyLDEyIEBAIGxvY2FsIGJsb2NrX3N0YXRlIGRlZmxhdGVfaHVmZihzLCBmbHVz aCkKKyAgICAgICAgIHMtPnN0cnN0YXJ0Kys7CisgICAgICAgICBpZiAoYmZsdXNoKSBGTFVTSF9C TE9DSyhzLCAwKTsKKyAgICAgfQorLSAgICBGTFVTSF9CTE9DSyhzLCBmbHVzaCA9PSBaX0ZJTklT SCk7CistICAgIHJldHVybiBmbHVzaCA9PSBaX0ZJTklTSCA/IGZpbmlzaF9kb25lIDogYmxvY2tf ZG9uZTsKKysgICAgcy0+aW5zZXJ0ID0gMDsKKysgICAgaWYgKGZsdXNoID09IFpfRklOSVNIKSB7 CisrICAgICAgICBGTFVTSF9CTE9DSyhzLCAxKTsKKysgICAgICAgIHJldHVybiBmaW5pc2hfZG9u ZTsKKysgICAgfQorKyAgICBpZiAocy0+bGFzdF9saXQpCisrICAgICAgICBGTFVTSF9CTE9DSyhz LCAwKTsKKysgICAgcmV0dXJuIGJsb2NrX2RvbmU7CisgfQorZGlmZiAtLWdpdCBhL2NvbTMyL2xp Yi96bGliL2RlZmxhdGUuaCBiL2NvbTMyL2xpYi96bGliL2RlZmxhdGUuaAoraW5kZXggMDljZjRj NDkuLjIzZWNkZDMxIDEwMDY0NAorLS0tIGEvY29tMzIvbGliL3psaWIvZGVmbGF0ZS5oCisrKysg Yi9jb20zMi9saWIvemxpYi9kZWZsYXRlLmgKK0BAIC0xLDUgKzEsNSBAQAorIC8qIGRlZmxhdGUu aCAtLSBpbnRlcm5hbCBjb21wcmVzc2lvbiBzdGF0ZQorLSAqIENvcHlyaWdodCAoQykgMTk5NS0y MDEwIEplYW4tbG91cCBHYWlsbHkKKysgKiBDb3B5cmlnaHQgKEMpIDE5OTUtMjAxNiBKZWFuLWxv dXAgR2FpbGx5CisgICogRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFuZCB1c2UsIHNl ZSBjb3B5cmlnaHQgbm90aWNlIGluIHpsaWIuaAorICAqLworIAorQEAgLTQ4LDEzICs0OCwxOSBA QAorICNkZWZpbmUgTUFYX0JJVFMgMTUKKyAvKiBBbGwgY29kZXMgbXVzdCBub3QgZXhjZWVkIE1B WF9CSVRTIGJpdHMgKi8KKyAKKy0jZGVmaW5lIElOSVRfU1RBVEUgICAgNDIKKy0jZGVmaW5lIEVY VFJBX1NUQVRFICAgNjkKKy0jZGVmaW5lIE5BTUVfU1RBVEUgICAgNzMKKy0jZGVmaW5lIENPTU1F TlRfU1RBVEUgOTEKKy0jZGVmaW5lIEhDUkNfU1RBVEUgICAxMDMKKy0jZGVmaW5lIEJVU1lfU1RB VEUgICAxMTMKKy0jZGVmaW5lIEZJTklTSF9TVEFURSA2NjYKKysjZGVmaW5lIEJ1Zl9zaXplIDE2 CisrLyogc2l6ZSBvZiBiaXQgYnVmZmVyIGluIGJpX2J1ZiAqLworKworKyNkZWZpbmUgSU5JVF9T VEFURSAgICA0MiAgICAvKiB6bGliIGhlYWRlciAtPiBCVVNZX1NUQVRFICovCisrI2lmZGVmIEda SVAKKysjICBkZWZpbmUgR1pJUF9TVEFURSAgNTcgICAgLyogZ3ppcCBoZWFkZXIgLT4gQlVTWV9T VEFURSB8IEVYVFJBX1NUQVRFICovCisrI2VuZGlmCisrI2RlZmluZSBFWFRSQV9TVEFURSAgIDY5 ICAgIC8qIGd6aXAgZXh0cmEgYmxvY2sgLT4gTkFNRV9TVEFURSAqLworKyNkZWZpbmUgTkFNRV9T VEFURSAgICA3MyAgICAvKiBnemlwIGZpbGUgbmFtZSAtPiBDT01NRU5UX1NUQVRFICovCisrI2Rl ZmluZSBDT01NRU5UX1NUQVRFIDkxICAgIC8qIGd6aXAgY29tbWVudCAtPiBIQ1JDX1NUQVRFICov CisrI2RlZmluZSBIQ1JDX1NUQVRFICAgMTAzICAgIC8qIGd6aXAgaGVhZGVyIENSQyAtPiBCVVNZ X1NUQVRFICovCisrI2RlZmluZSBCVVNZX1NUQVRFICAgMTEzICAgIC8qIGRlZmxhdGUgLT4gRklO SVNIX1NUQVRFICovCisrI2RlZmluZSBGSU5JU0hfU1RBVEUgNjY2ICAgIC8qIHN0cmVhbSBjb21w bGV0ZSAqLworIC8qIFN0cmVhbSBzdGF0dXMgKi8KKyAKKyAKK0BAIC04MCw3ICs4Niw3IEBAIHR5 cGVkZWYgc3RydWN0IHN0YXRpY190cmVlX2Rlc2NfcyAgc3RhdGljX3RyZWVfZGVzYzsKKyB0eXBl ZGVmIHN0cnVjdCB0cmVlX2Rlc2NfcyB7CisgICAgIGN0X2RhdGEgKmR5bl90cmVlOyAgICAgICAg ICAgLyogdGhlIGR5bmFtaWMgdHJlZSAqLworICAgICBpbnQgICAgIG1heF9jb2RlOyAgICAgICAg ICAgIC8qIGxhcmdlc3QgY29kZSB3aXRoIG5vbiB6ZXJvIGZyZXF1ZW5jeSAqLworLSAgICBzdGF0 aWNfdHJlZV9kZXNjICpzdGF0X2Rlc2M7IC8qIHRoZSBjb3JyZXNwb25kaW5nIHN0YXRpYyB0cmVl ICovCisrICAgIGNvbnN0IHN0YXRpY190cmVlX2Rlc2MgKnN0YXRfZGVzYzsgIC8qIHRoZSBjb3Jy ZXNwb25kaW5nIHN0YXRpYyB0cmVlICovCisgfSBGQVIgdHJlZV9kZXNjOworIAorIHR5cGVkZWYg dXNoIFBvczsKK0BAIC05NywxMSArMTAzLDExIEBAIHR5cGVkZWYgc3RydWN0IGludGVybmFsX3N0 YXRlIHsKKyAgICAgQnl0ZWYgKnBlbmRpbmdfYnVmOyAgLyogb3V0cHV0IHN0aWxsIHBlbmRpbmcg Ki8KKyAgICAgdWxnICAgcGVuZGluZ19idWZfc2l6ZTsgLyogc2l6ZSBvZiBwZW5kaW5nX2J1ZiAq LworICAgICBCeXRlZiAqcGVuZGluZ19vdXQ7ICAvKiBuZXh0IHBlbmRpbmcgYnl0ZSB0byBvdXRw dXQgdG8gdGhlIHN0cmVhbSAqLworLSAgICB1SW50ICAgcGVuZGluZzsgICAgICAvKiBuYiBvZiBi eXRlcyBpbiB0aGUgcGVuZGluZyBidWZmZXIgKi8KKysgICAgdWxnICAgcGVuZGluZzsgICAgICAg LyogbmIgb2YgYnl0ZXMgaW4gdGhlIHBlbmRpbmcgYnVmZmVyICovCisgICAgIGludCAgIHdyYXA7 ICAgICAgICAgIC8qIGJpdCAwIHRydWUgZm9yIHpsaWIsIGJpdCAxIHRydWUgZm9yIGd6aXAgKi8K KyAgICAgZ3pfaGVhZGVycCAgZ3poZWFkOyAgLyogZ3ppcCBoZWFkZXIgaW5mb3JtYXRpb24gdG8g d3JpdGUgKi8KKy0gICAgdUludCAgIGd6aW5kZXg7ICAgICAgLyogd2hlcmUgaW4gZXh0cmEsIG5h bWUsIG9yIGNvbW1lbnQgKi8KKy0gICAgQnl0ZSAgbWV0aG9kOyAgICAgICAgLyogU1RPUkVEIChm b3IgemlwIG9ubHkpIG9yIERFRkxBVEVEICovCisrICAgIHVsZyAgIGd6aW5kZXg7ICAgICAgIC8q IHdoZXJlIGluIGV4dHJhLCBuYW1lLCBvciBjb21tZW50ICovCisrICAgIEJ5dGUgIG1ldGhvZDsg ICAgICAgIC8qIGNhbiBvbmx5IGJlIERFRkxBVEVEICovCisgICAgIGludCAgIGxhc3RfZmx1c2g7 ICAgIC8qIHZhbHVlIG9mIGZsdXNoIHBhcmFtIGZvciBwcmV2aW91cyBkZWZsYXRlIGNhbGwgKi8K KyAKKyAgICAgICAgICAgICAgICAgLyogdXNlZCBieSBkZWZsYXRlLmM6ICovCitAQCAtMTg4LDcg KzE5NCw3IEBAIHR5cGVkZWYgc3RydWN0IGludGVybmFsX3N0YXRlIHsKKyAgICAgaW50IG5pY2Vf bWF0Y2g7IC8qIFN0b3Agc2VhcmNoaW5nIHdoZW4gY3VycmVudCBtYXRjaCBleGNlZWRzIHRoaXMg Ki8KKyAKKyAgICAgICAgICAgICAgICAgLyogdXNlZCBieSB0cmVlcy5jOiAqLworLSAgICAvKiBE aWRuJ3QgdXNlIGN0X2RhdGEgdHlwZWRlZiBiZWxvdyB0byBzdXByZXNzIGNvbXBpbGVyIHdhcm5p bmcgKi8KKysgICAgLyogRGlkbid0IHVzZSBjdF9kYXRhIHR5cGVkZWYgYmVsb3cgdG8gc3VwcHJl c3MgY29tcGlsZXIgd2FybmluZyAqLworICAgICBzdHJ1Y3QgY3RfZGF0YV9zIGR5bl9sdHJlZVtI RUFQX1NJWkVdOyAgIC8qIGxpdGVyYWwgYW5kIGxlbmd0aCB0cmVlICovCisgICAgIHN0cnVjdCBj dF9kYXRhX3MgZHluX2R0cmVlWzIqRF9DT0RFUysxXTsgLyogZGlzdGFuY2UgdHJlZSAqLworICAg ICBzdHJ1Y3QgY3RfZGF0YV9zIGJsX3RyZWVbMipCTF9DT0RFUysxXTsgIC8qIEh1ZmZtYW4gdHJl ZSBmb3IgYml0IGxlbmd0aHMgKi8KK0BAIC0yNDQsOSArMjUwLDkgQEAgdHlwZWRlZiBzdHJ1Y3Qg aW50ZXJuYWxfc3RhdGUgeworICAgICB1bGcgb3B0X2xlbjsgICAgICAgIC8qIGJpdCBsZW5ndGgg b2YgY3VycmVudCBibG9jayB3aXRoIG9wdGltYWwgdHJlZXMgKi8KKyAgICAgdWxnIHN0YXRpY19s ZW47ICAgICAvKiBiaXQgbGVuZ3RoIG9mIGN1cnJlbnQgYmxvY2sgd2l0aCBzdGF0aWMgdHJlZXMg Ki8KKyAgICAgdUludCBtYXRjaGVzOyAgICAgICAvKiBudW1iZXIgb2Ygc3RyaW5nIG1hdGNoZXMg aW4gY3VycmVudCBibG9jayAqLworLSAgICBpbnQgbGFzdF9lb2JfbGVuOyAgIC8qIGJpdCBsZW5n dGggb2YgRU9CIGNvZGUgZm9yIGxhc3QgYmxvY2sgKi8KKysgICAgdUludCBpbnNlcnQ7ICAgICAg ICAvKiBieXRlcyBhdCBlbmQgb2Ygd2luZG93IGxlZnQgdG8gaW5zZXJ0ICovCisgCistI2lmZGVm IERFQlVHX1pMSUIKKysjaWZkZWYgWkxJQl9ERUJVRworICAgICB1bGcgY29tcHJlc3NlZF9sZW47 IC8qIHRvdGFsIGJpdCBsZW5ndGggb2YgY29tcHJlc3NlZCBmaWxlIG1vZCAyXjMyICovCisgICAg IHVsZyBiaXRzX3NlbnQ7ICAgICAgLyogYml0IGxlbmd0aCBvZiBjb21wcmVzc2VkIGRhdGEgc2Vu dCBtb2QgMl4zMiAqLworICNlbmRpZgorQEAgLTI3Miw3ICsyNzgsNyBAQCB0eXBlZGVmIHN0cnVj dCBpbnRlcm5hbF9zdGF0ZSB7CisgLyogT3V0cHV0IGEgYnl0ZSBvbiB0aGUgc3RyZWFtLgorICAq IElOIGFzc2VydGlvbjogdGhlcmUgaXMgZW5vdWdoIHJvb20gaW4gcGVuZGluZ19idWYuCisgICov CistI2RlZmluZSBwdXRfYnl0ZShzLCBjKSB7cy0+cGVuZGluZ19idWZbcy0+cGVuZGluZysrXSA9 IChjKTt9CisrI2RlZmluZSBwdXRfYnl0ZShzLCBjKSB7cy0+cGVuZGluZ19idWZbcy0+cGVuZGlu ZysrXSA9IChCeXRlZikoYyk7fQorIAorIAorICNkZWZpbmUgTUlOX0xPT0tBSEVBRCAoTUFYX01B VENIK01JTl9NQVRDSCsxKQorQEAgLTI5NCw2ICszMDAsNyBAQCB2b2lkIFpMSUJfSU5URVJOQUwg X3RyX2luaXQgT0YoKGRlZmxhdGVfc3RhdGUgKnMpKTsKKyBpbnQgWkxJQl9JTlRFUk5BTCBfdHJf dGFsbHkgT0YoKGRlZmxhdGVfc3RhdGUgKnMsIHVuc2lnbmVkIGRpc3QsIHVuc2lnbmVkIGxjKSk7 Cisgdm9pZCBaTElCX0lOVEVSTkFMIF90cl9mbHVzaF9ibG9jayBPRigoZGVmbGF0ZV9zdGF0ZSAq cywgY2hhcmYgKmJ1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICB1bGcgc3RvcmVkX2xlbiwg aW50IGxhc3QpKTsKKyt2b2lkIFpMSUJfSU5URVJOQUwgX3RyX2ZsdXNoX2JpdHMgT0YoKGRlZmxh dGVfc3RhdGUgKnMpKTsKKyB2b2lkIFpMSUJfSU5URVJOQUwgX3RyX2FsaWduIE9GKChkZWZsYXRl X3N0YXRlICpzKSk7Cisgdm9pZCBaTElCX0lOVEVSTkFMIF90cl9zdG9yZWRfYmxvY2sgT0YoKGRl ZmxhdGVfc3RhdGUgKnMsIGNoYXJmICpidWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgdWxn IHN0b3JlZF9sZW4sIGludCBsYXN0KSk7CitAQCAtMzA1LDcgKzMxMiw3IEBAIHZvaWQgWkxJQl9J TlRFUk5BTCBfdHJfc3RvcmVkX2Jsb2NrIE9GKChkZWZsYXRlX3N0YXRlICpzLCBjaGFyZiAqYnVm LAorICAqIHVzZWQuCisgICovCisgCistI2lmbmRlZiBERUJVR19aTElCCisrI2lmbmRlZiBaTElC X0RFQlVHCisgLyogSW5saW5lIHZlcnNpb25zIG9mIF90cl90YWxseSBmb3Igc3BlZWQ6ICovCisg CisgI2lmIGRlZmluZWQoR0VOX1RSRUVTX0gpIHx8ICFkZWZpbmVkKFNUREMpCitAQCAtMzI0LDgg KzMzMSw4IEBAIHZvaWQgWkxJQl9JTlRFUk5BTCBfdHJfc3RvcmVkX2Jsb2NrIE9GKChkZWZsYXRl X3N0YXRlICpzLCBjaGFyZiAqYnVmLAorICAgICBmbHVzaCA9IChzLT5sYXN0X2xpdCA9PSBzLT5s aXRfYnVmc2l6ZS0xKTsgXAorICAgIH0KKyAjIGRlZmluZSBfdHJfdGFsbHlfZGlzdChzLCBkaXN0 YW5jZSwgbGVuZ3RoLCBmbHVzaCkgXAorLSAgeyB1Y2ggbGVuID0gKGxlbmd0aCk7IFwKKy0gICAg dXNoIGRpc3QgPSAoZGlzdGFuY2UpOyBcCisrICB7IHVjaCBsZW4gPSAodWNoKShsZW5ndGgpOyBc CisrICAgIHVzaCBkaXN0ID0gKHVzaCkoZGlzdGFuY2UpOyBcCisgICAgIHMtPmRfYnVmW3MtPmxh c3RfbGl0XSA9IGRpc3Q7IFwKKyAgICAgcy0+bF9idWZbcy0+bGFzdF9saXQrK10gPSBsZW47IFwK KyAgICAgZGlzdC0tOyBcCitkaWZmIC0tZ2l0IGEvY29tMzIvbGliL3psaWIvaW5mYmFjay5jIGIv Y29tMzIvbGliL3psaWIvaW5mYmFjay5jCitpbmRleCBhZjNhOGM5Ni4uNTk2NzllY2IgMTAwNjQ0 CistLS0gYS9jb20zMi9saWIvemxpYi9pbmZiYWNrLmMKKysrKyBiL2NvbTMyL2xpYi96bGliL2lu ZmJhY2suYworQEAgLTEsNSArMSw1IEBACisgLyogaW5mYmFjay5jIC0tIGluZmxhdGUgdXNpbmcg YSBjYWxsLWJhY2sgaW50ZXJmYWNlCistICogQ29weXJpZ2h0IChDKSAxOTk1LTIwMDkgTWFyayBB ZGxlcgorKyAqIENvcHlyaWdodCAoQykgMTk5NS0yMDE2IE1hcmsgQWRsZXIKKyAgKiBGb3IgY29u ZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIGNvcHlyaWdodCBub3RpY2UgaW4g emxpYi5oCisgICovCisgCitAQCAtNDIsMTcgKzQyLDI2IEBAIGludCBzdHJlYW1fc2l6ZTsKKyAg ICAgICAgIHJldHVybiBaX1NUUkVBTV9FUlJPUjsKKyAgICAgc3RybS0+bXNnID0gWl9OVUxMOyAg ICAgICAgICAgICAgICAgLyogaW4gY2FzZSB3ZSByZXR1cm4gYW4gZXJyb3IgKi8KKyAgICAgaWYg KHN0cm0tPnphbGxvYyA9PSAoYWxsb2NfZnVuYykwKSB7CisrI2lmZGVmIFpfU09MTworKyAgICAg ICAgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOworKyNlbHNlCisgICAgICAgICBzdHJtLT56YWxsb2Mg PSB6Y2FsbG9jOworICAgICAgICAgc3RybS0+b3BhcXVlID0gKHZvaWRwZikwOworKyNlbmRpZgor ICAgICB9CistICAgIGlmIChzdHJtLT56ZnJlZSA9PSAoZnJlZV9mdW5jKTApIHN0cm0tPnpmcmVl ID0gemNmcmVlOworKyAgICBpZiAoc3RybS0+emZyZWUgPT0gKGZyZWVfZnVuYykwKQorKyNpZmRl ZiBaX1NPTE8KKysgICAgICAgIHJldHVybiBaX1NUUkVBTV9FUlJPUjsKKysjZWxzZQorKyAgICBz dHJtLT56ZnJlZSA9IHpjZnJlZTsKKysjZW5kaWYKKyAgICAgc3RhdGUgPSAoc3RydWN0IGluZmxh dGVfc3RhdGUgRkFSICopWkFMTE9DKHN0cm0sIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzaXplb2Yoc3RydWN0IGluZmxhdGVfc3RhdGUpKTsKKyAg ICAgaWYgKHN0YXRlID09IFpfTlVMTCkgcmV0dXJuIFpfTUVNX0VSUk9SOworICAgICBUcmFjZXYo KHN0ZGVyciwgImluZmxhdGU6IGFsbG9jYXRlZFxuIikpOworICAgICBzdHJtLT5zdGF0ZSA9IChz dHJ1Y3QgaW50ZXJuYWxfc3RhdGUgRkFSICopc3RhdGU7CisgICAgIHN0YXRlLT5kbWF4ID0gMzI3 NjhVOworLSAgICBzdGF0ZS0+d2JpdHMgPSB3aW5kb3dCaXRzOworKyAgICBzdGF0ZS0+d2JpdHMg PSAodUludCl3aW5kb3dCaXRzOworICAgICBzdGF0ZS0+d3NpemUgPSAxVSA8PCB3aW5kb3dCaXRz OworICAgICBzdGF0ZS0+d2luZG93ID0gd2luZG93OworICAgICBzdGF0ZS0+d25leHQgPSAwOwor QEAgLTI0Niw3ICsyNTUsNyBAQCBvdXRfZnVuYyBvdXQ7Cisgdm9pZCBGQVIgKm91dF9kZXNjOwor IHsKKyAgICAgc3RydWN0IGluZmxhdGVfc3RhdGUgRkFSICpzdGF0ZTsKKy0gICAgdW5zaWduZWQg Y2hhciBGQVIgKm5leHQ7ICAgIC8qIG5leHQgaW5wdXQgKi8KKysgICAgel9jb25zdCB1bnNpZ25l ZCBjaGFyIEZBUiAqbmV4dDsgICAgLyogbmV4dCBpbnB1dCAqLworICAgICB1bnNpZ25lZCBjaGFy IEZBUiAqcHV0OyAgICAgLyogbmV4dCBvdXRwdXQgKi8KKyAgICAgdW5zaWduZWQgaGF2ZSwgbGVm dDsgICAgICAgIC8qIGF2YWlsYWJsZSBpbnB1dCBhbmQgb3V0cHV0ICovCisgICAgIHVuc2lnbmVk IGxvbmcgaG9sZDsgICAgICAgICAvKiBiaXQgYnVmZmVyICovCitAQCAtMzk0LDcgKzQwMyw2IEBA IHZvaWQgRkFSICpvdXRfZGVzYzsKKyAgICAgICAgICAgICAgICAgICAgIFBVTExCWVRFKCk7Cisg ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgaWYgKGhlcmUudmFsIDwgMTYpIHsK Ky0gICAgICAgICAgICAgICAgICAgIE5FRURCSVRTKGhlcmUuYml0cyk7CisgICAgICAgICAgICAg ICAgICAgICBEUk9QQklUUyhoZXJlLmJpdHMpOworICAgICAgICAgICAgICAgICAgICAgc3RhdGUt PmxlbnNbc3RhdGUtPmhhdmUrK10gPSBoZXJlLnZhbDsKKyAgICAgICAgICAgICAgICAgfQorZGlm ZiAtLWdpdCBhL2NvbTMyL2xpYi96bGliL2luZmZhc3QuYyBiL2NvbTMyL2xpYi96bGliL2luZmZh c3QuYworaW5kZXggMmYxZDYwYjQuLjBkYmQxZGJjIDEwMDY0NAorLS0tIGEvY29tMzIvbGliL3ps aWIvaW5mZmFzdC5jCisrKysgYi9jb20zMi9saWIvemxpYi9pbmZmYXN0LmMKK0BAIC0xLDUgKzEs NSBAQAorIC8qIGluZmZhc3QuYyAtLSBmYXN0IGRlY29kaW5nCistICogQ29weXJpZ2h0IChDKSAx OTk1LTIwMDgsIDIwMTAgTWFyayBBZGxlcgorKyAqIENvcHlyaWdodCAoQykgMTk5NS0yMDE3IE1h cmsgQWRsZXIKKyAgKiBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2Vl IGNvcHlyaWdodCBub3RpY2UgaW4gemxpYi5oCisgICovCisgCitAQCAtOCwyNiArOCw5IEBACisg I2luY2x1ZGUgImluZmxhdGUuaCIKKyAjaW5jbHVkZSAiaW5mZmFzdC5oIgorIAorLSNpZm5kZWYg QVNNSU5GCistCistLyogQWxsb3cgbWFjaGluZSBkZXBlbmRlbnQgb3B0aW1pemF0aW9uIGZvciBw b3N0LWluY3JlbWVudCBvciBwcmUtaW5jcmVtZW50LgorLSAgIEJhc2VkIG9uIHRlc3RpbmcgdG8g ZGF0ZSwKKy0gICBQcmUtaW5jcmVtZW50IHByZWZlcnJlZCBmb3I6CistICAgLSBQb3dlclBDIEcz IChBZGxlcikKKy0gICAtIE1JUFMgUjUwMDAgKFJhbmRlcnMtUGVocnNvbikKKy0gICBQb3N0LWlu Y3JlbWVudCBwcmVmZXJyZWQgZm9yOgorLSAgIC0gbm9uZQorLSAgIE5vIG1lYXN1cmFibGUgZGlm ZmVyZW5jZToKKy0gICAtIFBlbnRpdW0gSUlJIChBbmRlcnNvbikKKy0gICAtIE02ODA2MCAoTmlr bCkKKy0gKi8KKy0jaWZkZWYgUE9TVElOQworLSMgIGRlZmluZSBPRkYgMAorLSMgIGRlZmluZSBQ VVAoYSkgKihhKSsrCisrI2lmZGVmIEFTTUlORgorKyMgIHByYWdtYSBtZXNzYWdlKCJBc3NlbWJs ZXIgY29kZSBtYXkgaGF2ZSBidWdzIC0tIHVzZSBhdCB5b3VyIG93biByaXNrIikKKyAjZWxzZQor LSMgIGRlZmluZSBPRkYgMQorLSMgIGRlZmluZSBQVVAoYSkgKisrKGEpCistI2VuZGlmCisgCisg LyoKKyAgICBEZWNvZGUgbGl0ZXJhbCwgbGVuZ3RoLCBhbmQgZGlzdGFuY2UgY29kZXMgYW5kIHdy aXRlIG91dCB0aGUgcmVzdWx0aW5nCitAQCAtNjksOCArNTIsOCBAQCB6X3N0cmVhbXAgc3RybTsK KyB1bnNpZ25lZCBzdGFydDsgICAgICAgICAvKiBpbmZsYXRlKCkncyBzdGFydGluZyB2YWx1ZSBm b3Igc3RybS0+YXZhaWxfb3V0ICovCisgeworICAgICBzdHJ1Y3QgaW5mbGF0ZV9zdGF0ZSBGQVIg KnN0YXRlOworLSAgICB1bnNpZ25lZCBjaGFyIEZBUiAqaW47ICAgICAgLyogbG9jYWwgc3RybS0+ bmV4dF9pbiAqLworLSAgICB1bnNpZ25lZCBjaGFyIEZBUiAqbGFzdDsgICAgLyogd2hpbGUgaW4g PCBsYXN0LCBlbm91Z2ggaW5wdXQgYXZhaWxhYmxlICovCisrICAgIHpfY29uc3QgdW5zaWduZWQg Y2hhciBGQVIgKmluOyAgICAgIC8qIGxvY2FsIHN0cm0tPm5leHRfaW4gKi8KKysgICAgel9jb25z dCB1bnNpZ25lZCBjaGFyIEZBUiAqbGFzdDsgICAgLyogaGF2ZSBlbm91Z2ggaW5wdXQgd2hpbGUg aW4gPCBsYXN0ICovCisgICAgIHVuc2lnbmVkIGNoYXIgRkFSICpvdXQ7ICAgICAvKiBsb2NhbCBz dHJtLT5uZXh0X291dCAqLworICAgICB1bnNpZ25lZCBjaGFyIEZBUiAqYmVnOyAgICAgLyogaW5m bGF0ZSgpJ3MgaW5pdGlhbCBzdHJtLT5uZXh0X291dCAqLworICAgICB1bnNpZ25lZCBjaGFyIEZB UiAqZW5kOyAgICAgLyogd2hpbGUgb3V0IDwgZW5kLCBlbm91Z2ggc3BhY2UgYXZhaWxhYmxlICov CitAQCAtOTYsOSArNzksOSBAQCB1bnNpZ25lZCBzdGFydDsgICAgICAgICAvKiBpbmZsYXRlKCkn cyBzdGFydGluZyB2YWx1ZSBmb3Igc3RybS0+YXZhaWxfb3V0ICovCisgCisgICAgIC8qIGNvcHkg c3RhdGUgdG8gbG9jYWwgdmFyaWFibGVzICovCisgICAgIHN0YXRlID0gKHN0cnVjdCBpbmZsYXRl X3N0YXRlIEZBUiAqKXN0cm0tPnN0YXRlOworLSAgICBpbiA9IHN0cm0tPm5leHRfaW4gLSBPRkY7 CisrICAgIGluID0gc3RybS0+bmV4dF9pbjsKKyAgICAgbGFzdCA9IGluICsgKHN0cm0tPmF2YWls X2luIC0gNSk7CistICAgIG91dCA9IHN0cm0tPm5leHRfb3V0IC0gT0ZGOworKyAgICBvdXQgPSBz dHJtLT5uZXh0X291dDsKKyAgICAgYmVnID0gb3V0IC0gKHN0YXJ0IC0gc3RybS0+YXZhaWxfb3V0 KTsKKyAgICAgZW5kID0gb3V0ICsgKHN0cm0tPmF2YWlsX291dCAtIDI1Nyk7CisgI2lmZGVmIElO RkxBVEVfU1RSSUNUCitAQCAtMTE5LDkgKzEwMiw5IEBAIHVuc2lnbmVkIHN0YXJ0OyAgICAgICAg IC8qIGluZmxhdGUoKSdzIHN0YXJ0aW5nIHZhbHVlIGZvciBzdHJtLT5hdmFpbF9vdXQgKi8KKyAg ICAgICAgaW5wdXQgZGF0YSBvciBvdXRwdXQgc3BhY2UgKi8KKyAgICAgZG8geworICAgICAgICAg aWYgKGJpdHMgPCAxNSkgeworLSAgICAgICAgICAgIGhvbGQgKz0gKHVuc2lnbmVkIGxvbmcpKFBV UChpbikpIDw8IGJpdHM7CisrICAgICAgICAgICAgaG9sZCArPSAodW5zaWduZWQgbG9uZykoKmlu KyspIDw8IGJpdHM7CisgICAgICAgICAgICAgYml0cyArPSA4OworLSAgICAgICAgICAgIGhvbGQg Kz0gKHVuc2lnbmVkIGxvbmcpKFBVUChpbikpIDw8IGJpdHM7CisrICAgICAgICAgICAgaG9sZCAr PSAodW5zaWduZWQgbG9uZykoKmluKyspIDw8IGJpdHM7CisgICAgICAgICAgICAgYml0cyArPSA4 OworICAgICAgICAgfQorICAgICAgICAgaGVyZSA9IGxjb2RlW2hvbGQgJiBsbWFza107CitAQCAt MTM0LDE0ICsxMTcsMTQgQEAgdW5zaWduZWQgc3RhcnQ7ICAgICAgICAgLyogaW5mbGF0ZSgpJ3Mg c3RhcnRpbmcgdmFsdWUgZm9yIHN0cm0tPmF2YWlsX291dCAqLworICAgICAgICAgICAgIFRyYWNl dnYoKHN0ZGVyciwgaGVyZS52YWwgPj0gMHgyMCAmJiBoZXJlLnZhbCA8IDB4N2YgPworICAgICAg ICAgICAgICAgICAgICAgImluZmxhdGU6ICAgICAgICAgbGl0ZXJhbCAnJWMnXG4iIDoKKyAgICAg ICAgICAgICAgICAgICAgICJpbmZsYXRlOiAgICAgICAgIGxpdGVyYWwgMHglMDJ4XG4iLCBoZXJl LnZhbCkpOworLSAgICAgICAgICAgIFBVUChvdXQpID0gKHVuc2lnbmVkIGNoYXIpKGhlcmUudmFs KTsKKysgICAgICAgICAgICAqb3V0KysgPSAodW5zaWduZWQgY2hhcikoaGVyZS52YWwpOworICAg ICAgICAgfQorICAgICAgICAgZWxzZSBpZiAob3AgJiAxNikgeyAgICAgICAgICAgICAgICAgICAg IC8qIGxlbmd0aCBiYXNlICovCisgICAgICAgICAgICAgbGVuID0gKHVuc2lnbmVkKShoZXJlLnZh bCk7CisgICAgICAgICAgICAgb3AgJj0gMTU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyog bnVtYmVyIG9mIGV4dHJhIGJpdHMgKi8KKyAgICAgICAgICAgICBpZiAob3ApIHsKKyAgICAgICAg ICAgICAgICAgaWYgKGJpdHMgPCBvcCkgeworLSAgICAgICAgICAgICAgICAgICAgaG9sZCArPSAo dW5zaWduZWQgbG9uZykoUFVQKGluKSkgPDwgYml0czsKKysgICAgICAgICAgICAgICAgICAgIGhv bGQgKz0gKHVuc2lnbmVkIGxvbmcpKCppbisrKSA8PCBiaXRzOworICAgICAgICAgICAgICAgICAg ICAgYml0cyArPSA4OworICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgIGxlbiAr PSAodW5zaWduZWQpaG9sZCAmICgoMVUgPDwgb3ApIC0gMSk7CitAQCAtMTUwLDkgKzEzMyw5IEBA IHVuc2lnbmVkIHN0YXJ0OyAgICAgICAgIC8qIGluZmxhdGUoKSdzIHN0YXJ0aW5nIHZhbHVlIGZv ciBzdHJtLT5hdmFpbF9vdXQgKi8KKyAgICAgICAgICAgICB9CisgICAgICAgICAgICAgVHJhY2V2 digoc3RkZXJyLCAiaW5mbGF0ZTogICAgICAgICBsZW5ndGggJXVcbiIsIGxlbikpOworICAgICAg ICAgICAgIGlmIChiaXRzIDwgMTUpIHsKKy0gICAgICAgICAgICAgICAgaG9sZCArPSAodW5zaWdu ZWQgbG9uZykoUFVQKGluKSkgPDwgYml0czsKKysgICAgICAgICAgICAgICAgaG9sZCArPSAodW5z aWduZWQgbG9uZykoKmluKyspIDw8IGJpdHM7CisgICAgICAgICAgICAgICAgIGJpdHMgKz0gODsK Ky0gICAgICAgICAgICAgICAgaG9sZCArPSAodW5zaWduZWQgbG9uZykoUFVQKGluKSkgPDwgYml0 czsKKysgICAgICAgICAgICAgICAgaG9sZCArPSAodW5zaWduZWQgbG9uZykoKmluKyspIDw8IGJp dHM7CisgICAgICAgICAgICAgICAgIGJpdHMgKz0gODsKKyAgICAgICAgICAgICB9CisgICAgICAg ICAgICAgaGVyZSA9IGRjb2RlW2hvbGQgJiBkbWFza107CitAQCAtMTY1LDEwICsxNDgsMTAgQEAg dW5zaWduZWQgc3RhcnQ7ICAgICAgICAgLyogaW5mbGF0ZSgpJ3Mgc3RhcnRpbmcgdmFsdWUgZm9y IHN0cm0tPmF2YWlsX291dCAqLworICAgICAgICAgICAgICAgICBkaXN0ID0gKHVuc2lnbmVkKSho ZXJlLnZhbCk7CisgICAgICAgICAgICAgICAgIG9wICY9IDE1OyAgICAgICAgICAgICAgICAgICAg ICAgLyogbnVtYmVyIG9mIGV4dHJhIGJpdHMgKi8KKyAgICAgICAgICAgICAgICAgaWYgKGJpdHMg PCBvcCkgeworLSAgICAgICAgICAgICAgICAgICAgaG9sZCArPSAodW5zaWduZWQgbG9uZykoUFVQ KGluKSkgPDwgYml0czsKKysgICAgICAgICAgICAgICAgICAgIGhvbGQgKz0gKHVuc2lnbmVkIGxv bmcpKCppbisrKSA8PCBiaXRzOworICAgICAgICAgICAgICAgICAgICAgYml0cyArPSA4OworICAg ICAgICAgICAgICAgICAgICAgaWYgKGJpdHMgPCBvcCkgeworLSAgICAgICAgICAgICAgICAgICAg ICAgIGhvbGQgKz0gKHVuc2lnbmVkIGxvbmcpKFBVUChpbikpIDw8IGJpdHM7CisrICAgICAgICAg ICAgICAgICAgICAgICAgaG9sZCArPSAodW5zaWduZWQgbG9uZykoKmluKyspIDw8IGJpdHM7Cisg ICAgICAgICAgICAgICAgICAgICAgICAgYml0cyArPSA4OworICAgICAgICAgICAgICAgICAgICAg fQorICAgICAgICAgICAgICAgICB9CitAQCAtMTk2LDMwICsxNzksMzAgQEAgdW5zaWduZWQgc3Rh cnQ7ICAgICAgICAgLyogaW5mbGF0ZSgpJ3Mgc3RhcnRpbmcgdmFsdWUgZm9yIHN0cm0tPmF2YWls X291dCAqLworICNpZmRlZiBJTkZMQVRFX0FMTE9XX0lOVkFMSURfRElTVEFOQ0VfVE9PRkFSX0FS UlIKKyAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGVuIDw9IG9wIC0gd2hhdmUpIHsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZG8geworLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUFVQKG91dCkgPSAwOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Km91dCsrID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSB3aGlsZSAoLS1sZW4p OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAg ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgbGVuIC09IG9wIC0gd2hhdmU7 CisgICAgICAgICAgICAgICAgICAgICAgICAgZG8geworLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICBQVVAob3V0KSA9IDA7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICpvdXQrKyA9 IDA7CisgICAgICAgICAgICAgICAgICAgICAgICAgfSB3aGlsZSAoLS1vcCA+IHdoYXZlKTsKKyAg ICAgICAgICAgICAgICAgICAgICAgICBpZiAob3AgPT0gMCkgeworICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBmcm9tID0gb3V0IC0gZGlzdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZG8geworLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFVQKG91dCkgPSBQVVAo ZnJvbSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqb3V0KysgPSAqZnJvbSsr OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IHdoaWxlICgtLWxlbik7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICAgICAg IH0KKyAjZW5kaWYKKyAgICAgICAgICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICAgICAgICAg IGZyb20gPSB3aW5kb3cgLSBPRkY7CisrICAgICAgICAgICAgICAgICAgICBmcm9tID0gd2luZG93 OworICAgICAgICAgICAgICAgICAgICAgaWYgKHduZXh0ID09IDApIHsgICAgICAgICAgIC8qIHZl cnkgY29tbW9uIGNhc2UgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tICs9IHdzaXpl IC0gb3A7CisgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9wIDwgbGVuKSB7ICAgICAgICAg Lyogc29tZSBmcm9tIHdpbmRvdyAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4g LT0gb3A7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvIHsKKy0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFBVUChvdXQpID0gUFVQKGZyb20pOworKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKm91dCsrID0gKmZyb20rKzsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfSB3aGlsZSAoLS1vcCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZy b20gPSBvdXQgLSBkaXN0OyAgLyogcmVzdCBmcm9tIG91dHB1dCAqLworICAgICAgICAgICAgICAg ICAgICAgICAgIH0KK0BAIC0yMzAsMTQgKzIxMywxNCBAQCB1bnNpZ25lZCBzdGFydDsgICAgICAg ICAvKiBpbmZsYXRlKCkncyBzdGFydGluZyB2YWx1ZSBmb3Igc3RybS0+YXZhaWxfb3V0ICovCisg ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9wIDwgbGVuKSB7ICAgICAgICAgLyogc29tZSBm cm9tIGVuZCBvZiB3aW5kb3cgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuIC09 IG9wOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbyB7CistICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBQVVAob3V0KSA9IFBVUChmcm9tKTsKKysgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICpvdXQrKyA9ICpmcm9tKys7CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIH0gd2hpbGUgKC0tb3ApOworLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9t ID0gd2luZG93IC0gT0ZGOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tID0gd2lu ZG93OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAod25leHQgPCBsZW4pIHsgIC8q IHNvbWUgZnJvbSBzdGFydCBvZiB3aW5kb3cgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIG9wID0gd25leHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4g LT0gb3A7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbyB7CistICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUFVQKG91dCkgPSBQVVAoZnJvbSk7CisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm91dCsrID0gKmZyb20rKzsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIH0gd2hpbGUgKC0tb3ApOworICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZnJvbSA9IG91dCAtIGRpc3Q7ICAgICAgLyogcmVzdCBmcm9tIG91 dHB1dCAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CitAQCAtMjQ4LDM1ICsyMzEs MzUgQEAgdW5zaWduZWQgc3RhcnQ7ICAgICAgICAgLyogaW5mbGF0ZSgpJ3Mgc3RhcnRpbmcgdmFs dWUgZm9yIHN0cm0tPmF2YWlsX291dCAqLworICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChv cCA8IGxlbikgeyAgICAgICAgIC8qIHNvbWUgZnJvbSB3aW5kb3cgKi8KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgbGVuIC09IG9wOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk byB7CistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQVVAob3V0KSA9IFBVUChmcm9t KTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpvdXQrKyA9ICpmcm9tKys7Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gd2hpbGUgKC0tb3ApOworICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBmcm9tID0gb3V0IC0gZGlzdDsgIC8qIHJlc3QgZnJvbSBvdXRwdXQg Ki8KKyAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICB9Cisg ICAgICAgICAgICAgICAgICAgICB3aGlsZSAobGVuID4gMikgeworLSAgICAgICAgICAgICAgICAg ICAgICAgIFBVUChvdXQpID0gUFVQKGZyb20pOworLSAgICAgICAgICAgICAgICAgICAgICAgIFBV UChvdXQpID0gUFVQKGZyb20pOworLSAgICAgICAgICAgICAgICAgICAgICAgIFBVUChvdXQpID0g UFVQKGZyb20pOworKyAgICAgICAgICAgICAgICAgICAgICAgICpvdXQrKyA9ICpmcm9tKys7Cisr ICAgICAgICAgICAgICAgICAgICAgICAgKm91dCsrID0gKmZyb20rKzsKKysgICAgICAgICAgICAg ICAgICAgICAgICAqb3V0KysgPSAqZnJvbSsrOworICAgICAgICAgICAgICAgICAgICAgICAgIGxl biAtPSAzOworICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgaWYg KGxlbikgeworLSAgICAgICAgICAgICAgICAgICAgICAgIFBVUChvdXQpID0gUFVQKGZyb20pOwor KyAgICAgICAgICAgICAgICAgICAgICAgICpvdXQrKyA9ICpmcm9tKys7CisgICAgICAgICAgICAg ICAgICAgICAgICAgaWYgKGxlbiA+IDEpCistICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBV UChvdXQpID0gUFVQKGZyb20pOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAqb3V0Kysg PSAqZnJvbSsrOworICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICB9Cisg ICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgZnJvbSA9IG91dCAt IGRpc3Q7ICAgICAgICAgIC8qIGNvcHkgZGlyZWN0IGZyb20gb3V0cHV0ICovCisgICAgICAgICAg ICAgICAgICAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgLyogbWluaW11bSBsZW5ndGgg aXMgdGhyZWUgKi8KKy0gICAgICAgICAgICAgICAgICAgICAgICBQVVAob3V0KSA9IFBVUChmcm9t KTsKKy0gICAgICAgICAgICAgICAgICAgICAgICBQVVAob3V0KSA9IFBVUChmcm9tKTsKKy0gICAg ICAgICAgICAgICAgICAgICAgICBQVVAob3V0KSA9IFBVUChmcm9tKTsKKysgICAgICAgICAgICAg ICAgICAgICAgICAqb3V0KysgPSAqZnJvbSsrOworKyAgICAgICAgICAgICAgICAgICAgICAgICpv dXQrKyA9ICpmcm9tKys7CisrICAgICAgICAgICAgICAgICAgICAgICAgKm91dCsrID0gKmZyb20r KzsKKyAgICAgICAgICAgICAgICAgICAgICAgICBsZW4gLT0gMzsKKyAgICAgICAgICAgICAgICAg ICAgIH0gd2hpbGUgKGxlbiA+IDIpOworICAgICAgICAgICAgICAgICAgICAgaWYgKGxlbikgewor LSAgICAgICAgICAgICAgICAgICAgICAgIFBVUChvdXQpID0gUFVQKGZyb20pOworKyAgICAgICAg ICAgICAgICAgICAgICAgICpvdXQrKyA9ICpmcm9tKys7CisgICAgICAgICAgICAgICAgICAgICAg ICAgaWYgKGxlbiA+IDEpCistICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBVUChvdXQpID0g UFVQKGZyb20pOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAqb3V0KysgPSAqZnJvbSsr OworICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg ICAgfQorQEAgLTMxMyw4ICsyOTYsOCBAQCB1bnNpZ25lZCBzdGFydDsgICAgICAgICAvKiBpbmZs YXRlKCkncyBzdGFydGluZyB2YWx1ZSBmb3Igc3RybS0+YXZhaWxfb3V0ICovCisgICAgIGhvbGQg Jj0gKDFVIDw8IGJpdHMpIC0gMTsKKyAKKyAgICAgLyogdXBkYXRlIHN0YXRlIGFuZCByZXR1cm4g Ki8KKy0gICAgc3RybS0+bmV4dF9pbiA9IGluICsgT0ZGOworLSAgICBzdHJtLT5uZXh0X291dCA9 IG91dCArIE9GRjsKKysgICAgc3RybS0+bmV4dF9pbiA9IGluOworKyAgICBzdHJtLT5uZXh0X291 dCA9IG91dDsKKyAgICAgc3RybS0+YXZhaWxfaW4gPSAodW5zaWduZWQpKGluIDwgbGFzdCA/IDUg KyAobGFzdCAtIGluKSA6IDUgLSAoaW4gLSBsYXN0KSk7CisgICAgIHN0cm0tPmF2YWlsX291dCA9 ICh1bnNpZ25lZCkob3V0IDwgZW5kID8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAyNTcgKyAoZW5kIC0gb3V0KSA6IDI1NyAtIChvdXQgLSBlbmQpKTsKK2RpZmYgLS1naXQgYS9j b20zMi9saWIvemxpYi9pbmZmaXhlZC5oIGIvY29tMzIvbGliL3psaWIvaW5mZml4ZWQuaAoraW5k ZXggNzVlZDRiNTkuLmQ2MjgzMjc3IDEwMDY0NAorLS0tIGEvY29tMzIvbGliL3psaWIvaW5mZml4 ZWQuaAorKysrIGIvY29tMzIvbGliL3psaWIvaW5mZml4ZWQuaAorQEAgLTIsOSArMiw5IEBACisg ICAgICAqIEdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IGJ5IG1ha2VmaXhlZCgpLgorICAgICAgKi8K KyAKKy0gICAgLyogV0FSTklORzogdGhpcyBmaWxlIHNob3VsZCAqbm90KiBiZSB1c2VkIGJ5IGFw cGxpY2F0aW9ucy4gSXQKKy0gICAgICAgaXMgcGFydCBvZiB0aGUgaW1wbGVtZW50YXRpb24gb2Yg dGhlIGNvbXByZXNzaW9uIGxpYnJhcnkgYW5kCistICAgICAgIGlzIHN1YmplY3QgdG8gY2hhbmdl LiBBcHBsaWNhdGlvbnMgc2hvdWxkIG9ubHkgdXNlIHpsaWIuaC4KKysgICAgLyogV0FSTklORzog dGhpcyBmaWxlIHNob3VsZCAqbm90KiBiZSB1c2VkIGJ5IGFwcGxpY2F0aW9ucy4KKysgICAgICAg SXQgaXMgcGFydCBvZiB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhpcyBsaWJyYXJ5IGFuZCBpcwor KyAgICAgICBzdWJqZWN0IHRvIGNoYW5nZS4gQXBwbGljYXRpb25zIHNob3VsZCBvbmx5IHVzZSB6 bGliLmguCisgICAgICAqLworIAorICAgICBzdGF0aWMgY29uc3QgY29kZSBsZW5maXhbNTEyXSA9 IHsKK2RpZmYgLS1naXQgYS9jb20zMi9saWIvemxpYi9pbmZsYXRlLmMgYi9jb20zMi9saWIvemxp Yi9pbmZsYXRlLmMKK2luZGV4IGE4NDMxYWJlLi5hYzMzM2U4YyAxMDA2NDQKKy0tLSBhL2NvbTMy L2xpYi96bGliL2luZmxhdGUuYworKysrIGIvY29tMzIvbGliL3psaWIvaW5mbGF0ZS5jCitAQCAt MSw1ICsxLDUgQEAKKyAvKiBpbmZsYXRlLmMgLS0gemxpYiBkZWNvbXByZXNzaW9uCistICogQ29w eXJpZ2h0IChDKSAxOTk1LTIwMTAgTWFyayBBZGxlcgorKyAqIENvcHlyaWdodCAoQykgMTk5NS0y MDE2IE1hcmsgQWRsZXIKKyAgKiBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVz ZSwgc2VlIGNvcHlyaWdodCBub3RpY2UgaW4gemxpYi5oCisgICovCisgCitAQCAtOTIsMzIgKzky LDQ2IEBACisgI2VuZGlmCisgCisgLyogZnVuY3Rpb24gcHJvdG90eXBlcyAqLworK2xvY2FsIGlu dCBpbmZsYXRlU3RhdGVDaGVjayBPRigoel9zdHJlYW1wIHN0cm0pKTsKKyBsb2NhbCB2b2lkIGZp eGVkdGFibGVzIE9GKChzdHJ1Y3QgaW5mbGF0ZV9zdGF0ZSBGQVIgKnN0YXRlKSk7CistbG9jYWwg aW50IHVwZGF0ZXdpbmRvdyBPRigoel9zdHJlYW1wIHN0cm0sIHVuc2lnbmVkIG91dCkpOworK2xv Y2FsIGludCB1cGRhdGV3aW5kb3cgT0YoKHpfc3RyZWFtcCBzdHJtLCBjb25zdCB1bnNpZ25lZCBj aGFyIEZBUiAqZW5kLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNvcHkp KTsKKyAjaWZkZWYgQlVJTERGSVhFRAorICAgIHZvaWQgbWFrZWZpeGVkIE9GKCh2b2lkKSk7Cisg I2VuZGlmCistbG9jYWwgdW5zaWduZWQgc3luY3NlYXJjaCBPRigodW5zaWduZWQgRkFSICpoYXZl LCB1bnNpZ25lZCBjaGFyIEZBUiAqYnVmLAorK2xvY2FsIHVuc2lnbmVkIHN5bmNzZWFyY2ggT0Yo KHVuc2lnbmVkIEZBUiAqaGF2ZSwgY29uc3QgdW5zaWduZWQgY2hhciBGQVIgKmJ1ZiwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsZW4pKTsKKyAKKy1pbnQgWkVYUE9S VCBpbmZsYXRlUmVzZXQoc3RybSkKKytsb2NhbCBpbnQgaW5mbGF0ZVN0YXRlQ2hlY2soc3RybSkK KyB6X3N0cmVhbXAgc3RybTsKKyB7CisgICAgIHN0cnVjdCBpbmZsYXRlX3N0YXRlIEZBUiAqc3Rh dGU7CisrICAgIGlmIChzdHJtID09IFpfTlVMTCB8fAorKyAgICAgICAgc3RybS0+emFsbG9jID09 IChhbGxvY19mdW5jKTAgfHwgc3RybS0+emZyZWUgPT0gKGZyZWVfZnVuYykwKQorKyAgICAgICAg cmV0dXJuIDE7CisrICAgIHN0YXRlID0gKHN0cnVjdCBpbmZsYXRlX3N0YXRlIEZBUiAqKXN0cm0t PnN0YXRlOworKyAgICBpZiAoc3RhdGUgPT0gWl9OVUxMIHx8IHN0YXRlLT5zdHJtICE9IHN0cm0g fHwKKysgICAgICAgIHN0YXRlLT5tb2RlIDwgSEVBRCB8fCBzdGF0ZS0+bW9kZSA+IFNZTkMpCisr ICAgICAgICByZXR1cm4gMTsKKysgICAgcmV0dXJuIDA7CisrfQorIAorLSAgICBpZiAoc3RybSA9 PSBaX05VTEwgfHwgc3RybS0+c3RhdGUgPT0gWl9OVUxMKSByZXR1cm4gWl9TVFJFQU1fRVJST1I7 CisraW50IFpFWFBPUlQgaW5mbGF0ZVJlc2V0S2VlcChzdHJtKQorK3pfc3RyZWFtcCBzdHJtOwor K3sKKysgICAgc3RydWN0IGluZmxhdGVfc3RhdGUgRkFSICpzdGF0ZTsKKysKKysgICAgaWYgKGlu ZmxhdGVTdGF0ZUNoZWNrKHN0cm0pKSByZXR1cm4gWl9TVFJFQU1fRVJST1I7CisgICAgIHN0YXRl ID0gKHN0cnVjdCBpbmZsYXRlX3N0YXRlIEZBUiAqKXN0cm0tPnN0YXRlOworICAgICBzdHJtLT50 b3RhbF9pbiA9IHN0cm0tPnRvdGFsX291dCA9IHN0YXRlLT50b3RhbCA9IDA7CisgICAgIHN0cm0t Pm1zZyA9IFpfTlVMTDsKKy0gICAgc3RybS0+YWRsZXIgPSAxOyAgICAgICAgLyogdG8gc3VwcG9y dCBpbGwtY29uY2VpdmVkIEphdmEgdGVzdCBzdWl0ZSAqLworKyAgICBpZiAoc3RhdGUtPndyYXAp ICAgICAgICAvKiB0byBzdXBwb3J0IGlsbC1jb25jZWl2ZWQgSmF2YSB0ZXN0IHN1aXRlICovCisr ICAgICAgICBzdHJtLT5hZGxlciA9IHN0YXRlLT53cmFwICYgMTsKKyAgICAgc3RhdGUtPm1vZGUg PSBIRUFEOworICAgICBzdGF0ZS0+bGFzdCA9IDA7CisgICAgIHN0YXRlLT5oYXZlZGljdCA9IDA7 CisgICAgIHN0YXRlLT5kbWF4ID0gMzI3NjhVOworICAgICBzdGF0ZS0+aGVhZCA9IFpfTlVMTDsK Ky0gICAgc3RhdGUtPndzaXplID0gMDsKKy0gICAgc3RhdGUtPndoYXZlID0gMDsKKy0gICAgc3Rh dGUtPnduZXh0ID0gMDsKKyAgICAgc3RhdGUtPmhvbGQgPSAwOworICAgICBzdGF0ZS0+Yml0cyA9 IDA7CisgICAgIHN0YXRlLT5sZW5jb2RlID0gc3RhdGUtPmRpc3Rjb2RlID0gc3RhdGUtPm5leHQg PSBzdGF0ZS0+Y29kZXM7CitAQCAtMTI3LDYgKzE0MSwxOSBAQCB6X3N0cmVhbXAgc3RybTsKKyAg ICAgcmV0dXJuIFpfT0s7CisgfQorIAorK2ludCBaRVhQT1JUIGluZmxhdGVSZXNldChzdHJtKQor K3pfc3RyZWFtcCBzdHJtOworK3sKKysgICAgc3RydWN0IGluZmxhdGVfc3RhdGUgRkFSICpzdGF0 ZTsKKysKKysgICAgaWYgKGluZmxhdGVTdGF0ZUNoZWNrKHN0cm0pKSByZXR1cm4gWl9TVFJFQU1f RVJST1I7CisrICAgIHN0YXRlID0gKHN0cnVjdCBpbmZsYXRlX3N0YXRlIEZBUiAqKXN0cm0tPnN0 YXRlOworKyAgICBzdGF0ZS0+d3NpemUgPSAwOworKyAgICBzdGF0ZS0+d2hhdmUgPSAwOworKyAg ICBzdGF0ZS0+d25leHQgPSAwOworKyAgICByZXR1cm4gaW5mbGF0ZVJlc2V0S2VlcChzdHJtKTsK Kyt9CisrCisgaW50IFpFWFBPUlQgaW5mbGF0ZVJlc2V0MihzdHJtLCB3aW5kb3dCaXRzKQorIHpf c3RyZWFtcCBzdHJtOworIGludCB3aW5kb3dCaXRzOworQEAgLTEzNSw3ICsxNjIsNyBAQCBpbnQg d2luZG93Qml0czsKKyAgICAgc3RydWN0IGluZmxhdGVfc3RhdGUgRkFSICpzdGF0ZTsKKyAKKyAg ICAgLyogZ2V0IHRoZSBzdGF0ZSAqLworLSAgICBpZiAoc3RybSA9PSBaX05VTEwgfHwgc3RybS0+ c3RhdGUgPT0gWl9OVUxMKSByZXR1cm4gWl9TVFJFQU1fRVJST1I7CisrICAgIGlmIChpbmZsYXRl U3RhdGVDaGVjayhzdHJtKSkgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOworICAgICBzdGF0ZSA9IChz dHJ1Y3QgaW5mbGF0ZV9zdGF0ZSBGQVIgKilzdHJtLT5zdGF0ZTsKKyAKKyAgICAgLyogZXh0cmFj dCB3cmFwIHJlcXVlc3QgZnJvbSB3aW5kb3dCaXRzIHBhcmFtZXRlciAqLworQEAgLTE0NCw3ICsx NzEsNyBAQCBpbnQgd2luZG93Qml0czsKKyAgICAgICAgIHdpbmRvd0JpdHMgPSAtd2luZG93Qml0 czsKKyAgICAgfQorICAgICBlbHNlIHsKKy0gICAgICAgIHdyYXAgPSAod2luZG93Qml0cyA+PiA0 KSArIDE7CisrICAgICAgICB3cmFwID0gKHdpbmRvd0JpdHMgPj4gNCkgKyA1OworICNpZmRlZiBH VU5aSVAKKyAgICAgICAgIGlmICh3aW5kb3dCaXRzIDwgNDgpCisgICAgICAgICAgICAgd2luZG93 Qml0cyAmPSAxNTsKK0BAIC0xODAsMTYgKzIwNywyNyBAQCBpbnQgc3RyZWFtX3NpemU7CisgICAg IGlmIChzdHJtID09IFpfTlVMTCkgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOworICAgICBzdHJtLT5t c2cgPSBaX05VTEw7ICAgICAgICAgICAgICAgICAvKiBpbiBjYXNlIHdlIHJldHVybiBhbiBlcnJv ciAqLworICAgICBpZiAoc3RybS0+emFsbG9jID09IChhbGxvY19mdW5jKTApIHsKKysjaWZkZWYg Wl9TT0xPCisrICAgICAgICByZXR1cm4gWl9TVFJFQU1fRVJST1I7CisrI2Vsc2UKKyAgICAgICAg IHN0cm0tPnphbGxvYyA9IHpjYWxsb2M7CisgICAgICAgICBzdHJtLT5vcGFxdWUgPSAodm9pZHBm KTA7CisrI2VuZGlmCisgICAgIH0KKy0gICAgaWYgKHN0cm0tPnpmcmVlID09IChmcmVlX2Z1bmMp MCkgc3RybS0+emZyZWUgPSB6Y2ZyZWU7CisrICAgIGlmIChzdHJtLT56ZnJlZSA9PSAoZnJlZV9m dW5jKTApCisrI2lmZGVmIFpfU09MTworKyAgICAgICAgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOwor KyNlbHNlCisrICAgICAgICBzdHJtLT56ZnJlZSA9IHpjZnJlZTsKKysjZW5kaWYKKyAgICAgc3Rh dGUgPSAoc3RydWN0IGluZmxhdGVfc3RhdGUgRkFSICopCisgICAgICAgICAgICAgWkFMTE9DKHN0 cm0sIDEsIHNpemVvZihzdHJ1Y3QgaW5mbGF0ZV9zdGF0ZSkpOworICAgICBpZiAoc3RhdGUgPT0g Wl9OVUxMKSByZXR1cm4gWl9NRU1fRVJST1I7CisgICAgIFRyYWNldigoc3RkZXJyLCAiaW5mbGF0 ZTogYWxsb2NhdGVkXG4iKSk7CisgICAgIHN0cm0tPnN0YXRlID0gKHN0cnVjdCBpbnRlcm5hbF9z dGF0ZSBGQVIgKilzdGF0ZTsKKysgICAgc3RhdGUtPnN0cm0gPSBzdHJtOworICAgICBzdGF0ZS0+ d2luZG93ID0gWl9OVUxMOworKyAgICBzdGF0ZS0+bW9kZSA9IEhFQUQ7ICAgICAvKiB0byBwYXNz IHN0YXRlIHRlc3QgaW4gaW5mbGF0ZVJlc2V0MigpICovCisgICAgIHJldCA9IGluZmxhdGVSZXNl dDIoc3RybSwgd2luZG93Qml0cyk7CisgICAgIGlmIChyZXQgIT0gWl9PSykgeworICAgICAgICAg WkZSRUUoc3RybSwgc3RhdGUpOworQEAgLTIxMywxNyArMjUxLDE3IEBAIGludCB2YWx1ZTsKKyB7 CisgICAgIHN0cnVjdCBpbmZsYXRlX3N0YXRlIEZBUiAqc3RhdGU7CisgCistICAgIGlmIChzdHJt ID09IFpfTlVMTCB8fCBzdHJtLT5zdGF0ZSA9PSBaX05VTEwpIHJldHVybiBaX1NUUkVBTV9FUlJP UjsKKysgICAgaWYgKGluZmxhdGVTdGF0ZUNoZWNrKHN0cm0pKSByZXR1cm4gWl9TVFJFQU1fRVJS T1I7CisgICAgIHN0YXRlID0gKHN0cnVjdCBpbmZsYXRlX3N0YXRlIEZBUiAqKXN0cm0tPnN0YXRl OworICAgICBpZiAoYml0cyA8IDApIHsKKyAgICAgICAgIHN0YXRlLT5ob2xkID0gMDsKKyAgICAg ICAgIHN0YXRlLT5iaXRzID0gMDsKKyAgICAgICAgIHJldHVybiBaX09LOworICAgICB9CistICAg IGlmIChiaXRzID4gMTYgfHwgc3RhdGUtPmJpdHMgKyBiaXRzID4gMzIpIHJldHVybiBaX1NUUkVB TV9FUlJPUjsKKysgICAgaWYgKGJpdHMgPiAxNiB8fCBzdGF0ZS0+Yml0cyArICh1SW50KWJpdHMg PiAzMikgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOworICAgICB2YWx1ZSAmPSAoMUwgPDwgYml0cykg LSAxOworLSAgICBzdGF0ZS0+aG9sZCArPSB2YWx1ZSA8PCBzdGF0ZS0+Yml0czsKKy0gICAgc3Rh dGUtPmJpdHMgKz0gYml0czsKKysgICAgc3RhdGUtPmhvbGQgKz0gKHVuc2lnbmVkKXZhbHVlIDw8 IHN0YXRlLT5iaXRzOworKyAgICBzdGF0ZS0+Yml0cyArPSAodUludCliaXRzOworICAgICByZXR1 cm4gWl9PSzsKKyB9CisgCitAQCAtMzIxLDggKzM1OSw4IEBAIHZvaWQgbWFrZWZpeGVkKCkKKyAg ICAgbG93ID0gMDsKKyAgICAgZm9yICg7OykgeworICAgICAgICAgaWYgKChsb3cgJSA3KSA9PSAw KSBwcmludGYoIlxuICAgICAgICAiKTsKKy0gICAgICAgIHByaW50ZigieyV1LCV1LCVkfSIsIHN0 YXRlLmxlbmNvZGVbbG93XS5vcCwgc3RhdGUubGVuY29kZVtsb3ddLmJpdHMsCistICAgICAgICAg ICAgICAgc3RhdGUubGVuY29kZVtsb3ddLnZhbCk7CisrICAgICAgICBwcmludGYoInsldSwldSwl ZH0iLCAobG93ICYgMTI3KSA9PSA5OSA/IDY0IDogc3RhdGUubGVuY29kZVtsb3ddLm9wLAorKyAg ICAgICAgICAgICAgIHN0YXRlLmxlbmNvZGVbbG93XS5iaXRzLCBzdGF0ZS5sZW5jb2RlW2xvd10u dmFsKTsKKyAgICAgICAgIGlmICgrK2xvdyA9PSBzaXplKSBicmVhazsKKyAgICAgICAgIHB1dGNo YXIoJywnKTsKKyAgICAgfQorQEAgLTM1NSwxMiArMzkzLDEzIEBAIHZvaWQgbWFrZWZpeGVkKCkK KyAgICBvdXRwdXQgd2lsbCBmYWxsIGluIHRoZSBvdXRwdXQgZGF0YSwgbWFraW5nIG1hdGNoIGNv cGllcyBzaW1wbGVyIGFuZCBmYXN0ZXIuCisgICAgVGhlIGFkdmFudGFnZSBtYXkgYmUgZGVwZW5k ZW50IG9uIHRoZSBzaXplIG9mIHRoZSBwcm9jZXNzb3IncyBkYXRhIGNhY2hlcy4KKyAgKi8KKy1s b2NhbCBpbnQgdXBkYXRld2luZG93KHN0cm0sIG91dCkKKytsb2NhbCBpbnQgdXBkYXRld2luZG93 KHN0cm0sIGVuZCwgY29weSkKKyB6X3N0cmVhbXAgc3RybTsKKy11bnNpZ25lZCBvdXQ7CisrY29u c3QgQnl0ZWYgKmVuZDsKKyt1bnNpZ25lZCBjb3B5OworIHsKKyAgICAgc3RydWN0IGluZmxhdGVf c3RhdGUgRkFSICpzdGF0ZTsKKy0gICAgdW5zaWduZWQgY29weSwgZGlzdDsKKysgICAgdW5zaWdu ZWQgZGlzdDsKKyAKKyAgICAgc3RhdGUgPSAoc3RydWN0IGluZmxhdGVfc3RhdGUgRkFSICopc3Ry bS0+c3RhdGU7CisgCitAQCAtMzgwLDE5ICs0MTksMTggQEAgdW5zaWduZWQgb3V0OworICAgICB9 CisgCisgICAgIC8qIGNvcHkgc3RhdGUtPndzaXplIG9yIGxlc3Mgb3V0cHV0IGJ5dGVzIGludG8g dGhlIGNpcmN1bGFyIHdpbmRvdyAqLworLSAgICBjb3B5ID0gb3V0IC0gc3RybS0+YXZhaWxfb3V0 OworICAgICBpZiAoY29weSA+PSBzdGF0ZS0+d3NpemUpIHsKKy0gICAgICAgIHptZW1jcHkoc3Rh dGUtPndpbmRvdywgc3RybS0+bmV4dF9vdXQgLSBzdGF0ZS0+d3NpemUsIHN0YXRlLT53c2l6ZSk7 CisrICAgICAgICB6bWVtY3B5KHN0YXRlLT53aW5kb3csIGVuZCAtIHN0YXRlLT53c2l6ZSwgc3Rh dGUtPndzaXplKTsKKyAgICAgICAgIHN0YXRlLT53bmV4dCA9IDA7CisgICAgICAgICBzdGF0ZS0+ d2hhdmUgPSBzdGF0ZS0+d3NpemU7CisgICAgIH0KKyAgICAgZWxzZSB7CisgICAgICAgICBkaXN0 ID0gc3RhdGUtPndzaXplIC0gc3RhdGUtPnduZXh0OworICAgICAgICAgaWYgKGRpc3QgPiBjb3B5 KSBkaXN0ID0gY29weTsKKy0gICAgICAgIHptZW1jcHkoc3RhdGUtPndpbmRvdyArIHN0YXRlLT53 bmV4dCwgc3RybS0+bmV4dF9vdXQgLSBjb3B5LCBkaXN0KTsKKysgICAgICAgIHptZW1jcHkoc3Rh dGUtPndpbmRvdyArIHN0YXRlLT53bmV4dCwgZW5kIC0gY29weSwgZGlzdCk7CisgICAgICAgICBj b3B5IC09IGRpc3Q7CisgICAgICAgICBpZiAoY29weSkgeworLSAgICAgICAgICAgIHptZW1jcHko c3RhdGUtPndpbmRvdywgc3RybS0+bmV4dF9vdXQgLSBjb3B5LCBjb3B5KTsKKysgICAgICAgICAg ICB6bWVtY3B5KHN0YXRlLT53aW5kb3csIGVuZCAtIGNvcHksIGNvcHkpOworICAgICAgICAgICAg IHN0YXRlLT53bmV4dCA9IGNvcHk7CisgICAgICAgICAgICAgc3RhdGUtPndoYXZlID0gc3RhdGUt PndzaXplOworICAgICAgICAgfQorQEAgLTQ5OSwxMSArNTM3LDYgQEAgdW5zaWduZWQgb3V0Owor ICAgICAgICAgYml0cyAtPSBiaXRzICYgNzsgXAorICAgICB9IHdoaWxlICgwKQorIAorLS8qIFJl dmVyc2UgdGhlIGJ5dGVzIGluIGEgMzItYml0IHZhbHVlICovCistI2RlZmluZSBSRVZFUlNFKHEp IFwKKy0gICAgKCgoKHEpID4+IDI0KSAmIDB4ZmYpICsgKCgocSkgPj4gOCkgJiAweGZmMDApICsg XAorLSAgICAgKCgocSkgJiAweGZmMDApIDw8IDgpICsgKCgocSkgJiAweGZmKSA8PCAyNCkpCist CisgLyoKKyAgICBpbmZsYXRlKCkgdXNlcyBhIHN0YXRlIG1hY2hpbmUgdG8gcHJvY2VzcyBhcyBt dWNoIGlucHV0IGRhdGEgYW5kIGdlbmVyYXRlIGFzCisgICAgbXVjaCBvdXRwdXQgZGF0YSBhcyBw b3NzaWJsZSBiZWZvcmUgcmV0dXJuaW5nLiAgVGhlIHN0YXRlIG1hY2hpbmUgaXMKK0BAIC01OTEs NyArNjI0LDcgQEAgel9zdHJlYW1wIHN0cm07CisgaW50IGZsdXNoOworIHsKKyAgICAgc3RydWN0 IGluZmxhdGVfc3RhdGUgRkFSICpzdGF0ZTsKKy0gICAgdW5zaWduZWQgY2hhciBGQVIgKm5leHQ7 ICAgIC8qIG5leHQgaW5wdXQgKi8KKysgICAgel9jb25zdCB1bnNpZ25lZCBjaGFyIEZBUiAqbmV4 dDsgICAgLyogbmV4dCBpbnB1dCAqLworICAgICB1bnNpZ25lZCBjaGFyIEZBUiAqcHV0OyAgICAg LyogbmV4dCBvdXRwdXQgKi8KKyAgICAgdW5zaWduZWQgaGF2ZSwgbGVmdDsgICAgICAgIC8qIGF2 YWlsYWJsZSBpbnB1dCBhbmQgb3V0cHV0ICovCisgICAgIHVuc2lnbmVkIGxvbmcgaG9sZDsgICAg ICAgICAvKiBiaXQgYnVmZmVyICovCitAQCAtNjA5LDcgKzY0Miw3IEBAIGludCBmbHVzaDsKKyAg ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNob3J0IG9yZGVyWzE5XSA9IC8qIHBlcm11dGF0aW9u IG9mIGNvZGUgbGVuZ3RocyAqLworICAgICAgICAgezE2LCAxNywgMTgsIDAsIDgsIDcsIDksIDYs IDEwLCA1LCAxMSwgNCwgMTIsIDMsIDEzLCAyLCAxNCwgMSwgMTV9OworIAorLSAgICBpZiAoc3Ry bSA9PSBaX05VTEwgfHwgc3RybS0+c3RhdGUgPT0gWl9OVUxMIHx8IHN0cm0tPm5leHRfb3V0ID09 IFpfTlVMTCB8fAorKyAgICBpZiAoaW5mbGF0ZVN0YXRlQ2hlY2soc3RybSkgfHwgc3RybS0+bmV4 dF9vdXQgPT0gWl9OVUxMIHx8CisgICAgICAgICAoc3RybS0+bmV4dF9pbiA9PSBaX05VTEwgJiYg c3RybS0+YXZhaWxfaW4gIT0gMCkpCisgICAgICAgICByZXR1cm4gWl9TVFJFQU1fRVJST1I7Cisg CitAQCAtNjI5LDYgKzY2Miw4IEBAIGludCBmbHVzaDsKKyAgICAgICAgICAgICBORUVEQklUUygx Nik7CisgI2lmZGVmIEdVTlpJUAorICAgICAgICAgICAgIGlmICgoc3RhdGUtPndyYXAgJiAyKSAm JiBob2xkID09IDB4OGIxZikgeyAgLyogZ3ppcCBoZWFkZXIgKi8KKysgICAgICAgICAgICAgICAg aWYgKHN0YXRlLT53Yml0cyA9PSAwKQorKyAgICAgICAgICAgICAgICAgICAgc3RhdGUtPndiaXRz ID0gMTU7CisgICAgICAgICAgICAgICAgIHN0YXRlLT5jaGVjayA9IGNyYzMyKDBMLCBaX05VTEws IDApOworICAgICAgICAgICAgICAgICBDUkMyKHN0YXRlLT5jaGVjaywgaG9sZCk7CisgICAgICAg ICAgICAgICAgIElOSVRCSVRTKCk7CitAQCAtNjU2LDcgKzY5MSw3IEBAIGludCBmbHVzaDsKKyAg ICAgICAgICAgICBsZW4gPSBCSVRTKDQpICsgODsKKyAgICAgICAgICAgICBpZiAoc3RhdGUtPndi aXRzID09IDApCisgICAgICAgICAgICAgICAgIHN0YXRlLT53Yml0cyA9IGxlbjsKKy0gICAgICAg ICAgICBlbHNlIGlmIChsZW4gPiBzdGF0ZS0+d2JpdHMpIHsKKysgICAgICAgICAgICBpZiAobGVu ID4gMTUgfHwgbGVuID4gc3RhdGUtPndiaXRzKSB7CisgICAgICAgICAgICAgICAgIHN0cm0tPm1z ZyA9IChjaGFyICopImludmFsaWQgd2luZG93IHNpemUiOworICAgICAgICAgICAgICAgICBzdGF0 ZS0+bW9kZSA9IEJBRDsKKyAgICAgICAgICAgICAgICAgYnJlYWs7CitAQCAtNjgzLDE0ICs3MTgs MTYgQEAgaW50IGZsdXNoOworICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICBpZiAoc3RhdGUt PmhlYWQgIT0gWl9OVUxMKQorICAgICAgICAgICAgICAgICBzdGF0ZS0+aGVhZC0+dGV4dCA9IChp bnQpKChob2xkID4+IDgpICYgMSk7CistICAgICAgICAgICAgaWYgKHN0YXRlLT5mbGFncyAmIDB4 MDIwMCkgQ1JDMihzdGF0ZS0+Y2hlY2ssIGhvbGQpOworKyAgICAgICAgICAgIGlmICgoc3RhdGUt PmZsYWdzICYgMHgwMjAwKSAmJiAoc3RhdGUtPndyYXAgJiA0KSkKKysgICAgICAgICAgICAgICAg Q1JDMihzdGF0ZS0+Y2hlY2ssIGhvbGQpOworICAgICAgICAgICAgIElOSVRCSVRTKCk7CisgICAg ICAgICAgICAgc3RhdGUtPm1vZGUgPSBUSU1FOworICAgICAgICAgY2FzZSBUSU1FOgorICAgICAg ICAgICAgIE5FRURCSVRTKDMyKTsKKyAgICAgICAgICAgICBpZiAoc3RhdGUtPmhlYWQgIT0gWl9O VUxMKQorICAgICAgICAgICAgICAgICBzdGF0ZS0+aGVhZC0+dGltZSA9IGhvbGQ7CistICAgICAg ICAgICAgaWYgKHN0YXRlLT5mbGFncyAmIDB4MDIwMCkgQ1JDNChzdGF0ZS0+Y2hlY2ssIGhvbGQp OworKyAgICAgICAgICAgIGlmICgoc3RhdGUtPmZsYWdzICYgMHgwMjAwKSAmJiAoc3RhdGUtPndy YXAgJiA0KSkKKysgICAgICAgICAgICAgICAgQ1JDNChzdGF0ZS0+Y2hlY2ssIGhvbGQpOworICAg ICAgICAgICAgIElOSVRCSVRTKCk7CisgICAgICAgICAgICAgc3RhdGUtPm1vZGUgPSBPUzsKKyAg ICAgICAgIGNhc2UgT1M6CitAQCAtNjk5LDcgKzczNiw4IEBAIGludCBmbHVzaDsKKyAgICAgICAg ICAgICAgICAgc3RhdGUtPmhlYWQtPnhmbGFncyA9IChpbnQpKGhvbGQgJiAweGZmKTsKKyAgICAg ICAgICAgICAgICAgc3RhdGUtPmhlYWQtPm9zID0gKGludCkoaG9sZCA+PiA4KTsKKyAgICAgICAg ICAgICB9CistICAgICAgICAgICAgaWYgKHN0YXRlLT5mbGFncyAmIDB4MDIwMCkgQ1JDMihzdGF0 ZS0+Y2hlY2ssIGhvbGQpOworKyAgICAgICAgICAgIGlmICgoc3RhdGUtPmZsYWdzICYgMHgwMjAw KSAmJiAoc3RhdGUtPndyYXAgJiA0KSkKKysgICAgICAgICAgICAgICAgQ1JDMihzdGF0ZS0+Y2hl Y2ssIGhvbGQpOworICAgICAgICAgICAgIElOSVRCSVRTKCk7CisgICAgICAgICAgICAgc3RhdGUt Pm1vZGUgPSBFWExFTjsKKyAgICAgICAgIGNhc2UgRVhMRU46CitAQCAtNzA4LDcgKzc0Niw4IEBA IGludCBmbHVzaDsKKyAgICAgICAgICAgICAgICAgc3RhdGUtPmxlbmd0aCA9ICh1bnNpZ25lZCko aG9sZCk7CisgICAgICAgICAgICAgICAgIGlmIChzdGF0ZS0+aGVhZCAhPSBaX05VTEwpCisgICAg ICAgICAgICAgICAgICAgICBzdGF0ZS0+aGVhZC0+ZXh0cmFfbGVuID0gKHVuc2lnbmVkKWhvbGQ7 CistICAgICAgICAgICAgICAgIGlmIChzdGF0ZS0+ZmxhZ3MgJiAweDAyMDApIENSQzIoc3RhdGUt PmNoZWNrLCBob2xkKTsKKysgICAgICAgICAgICAgICAgaWYgKChzdGF0ZS0+ZmxhZ3MgJiAweDAy MDApICYmIChzdGF0ZS0+d3JhcCAmIDQpKQorKyAgICAgICAgICAgICAgICAgICAgQ1JDMihzdGF0 ZS0+Y2hlY2ssIGhvbGQpOworICAgICAgICAgICAgICAgICBJTklUQklUUygpOworICAgICAgICAg ICAgIH0KKyAgICAgICAgICAgICBlbHNlIGlmIChzdGF0ZS0+aGVhZCAhPSBaX05VTEwpCitAQCAt NzI2LDcgKzc2NSw3IEBAIGludCBmbHVzaDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGxlbiArIGNvcHkgPiBzdGF0ZS0+aGVhZC0+ZXh0cmFfbWF4ID8KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHN0YXRlLT5oZWFkLT5leHRyYV9tYXggLSBsZW4gOiBjb3B5KTsK KyAgICAgICAgICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICAgICAgICAgIGlmIChzdGF0ZS0+ ZmxhZ3MgJiAweDAyMDApCisrICAgICAgICAgICAgICAgICAgICBpZiAoKHN0YXRlLT5mbGFncyAm IDB4MDIwMCkgJiYgKHN0YXRlLT53cmFwICYgNCkpCisgICAgICAgICAgICAgICAgICAgICAgICAg c3RhdGUtPmNoZWNrID0gY3JjMzIoc3RhdGUtPmNoZWNrLCBuZXh0LCBjb3B5KTsKKyAgICAgICAg ICAgICAgICAgICAgIGhhdmUgLT0gY29weTsKKyAgICAgICAgICAgICAgICAgICAgIG5leHQgKz0g Y29weTsKK0BAIC03NDUsOSArNzg0LDkgQEAgaW50IGZsdXNoOworICAgICAgICAgICAgICAgICAg ICAgaWYgKHN0YXRlLT5oZWFkICE9IFpfTlVMTCAmJgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzdGF0ZS0+aGVhZC0+bmFtZSAhPSBaX05VTEwgJiYKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc3RhdGUtPmxlbmd0aCA8IHN0YXRlLT5oZWFkLT5uYW1lX21heCkKKy0gICAgICAg ICAgICAgICAgICAgICAgICBzdGF0ZS0+aGVhZC0+bmFtZVtzdGF0ZS0+bGVuZ3RoKytdID0gbGVu OworKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLT5oZWFkLT5uYW1lW3N0YXRlLT5sZW5n dGgrK10gPSAoQnl0ZWYpbGVuOworICAgICAgICAgICAgICAgICB9IHdoaWxlIChsZW4gJiYgY29w eSA8IGhhdmUpOworLSAgICAgICAgICAgICAgICBpZiAoc3RhdGUtPmZsYWdzICYgMHgwMjAwKQor KyAgICAgICAgICAgICAgICBpZiAoKHN0YXRlLT5mbGFncyAmIDB4MDIwMCkgJiYgKHN0YXRlLT53 cmFwICYgNCkpCisgICAgICAgICAgICAgICAgICAgICBzdGF0ZS0+Y2hlY2sgPSBjcmMzMihzdGF0 ZS0+Y2hlY2ssIG5leHQsIGNvcHkpOworICAgICAgICAgICAgICAgICBoYXZlIC09IGNvcHk7Cisg ICAgICAgICAgICAgICAgIG5leHQgKz0gY29weTsKK0BAIC03NjYsOSArODA1LDkgQEAgaW50IGZs dXNoOworICAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXRlLT5oZWFkICE9IFpfTlVMTCAmJgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS0+aGVhZC0+Y29tbWVudCAhPSBaX05V TEwgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUtPmxlbmd0aCA8IHN0YXRl LT5oZWFkLT5jb21tX21heCkKKy0gICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS0+aGVhZC0+ Y29tbWVudFtzdGF0ZS0+bGVuZ3RoKytdID0gbGVuOworKyAgICAgICAgICAgICAgICAgICAgICAg IHN0YXRlLT5oZWFkLT5jb21tZW50W3N0YXRlLT5sZW5ndGgrK10gPSAoQnl0ZWYpbGVuOworICAg ICAgICAgICAgICAgICB9IHdoaWxlIChsZW4gJiYgY29weSA8IGhhdmUpOworLSAgICAgICAgICAg ICAgICBpZiAoc3RhdGUtPmZsYWdzICYgMHgwMjAwKQorKyAgICAgICAgICAgICAgICBpZiAoKHN0 YXRlLT5mbGFncyAmIDB4MDIwMCkgJiYgKHN0YXRlLT53cmFwICYgNCkpCisgICAgICAgICAgICAg ICAgICAgICBzdGF0ZS0+Y2hlY2sgPSBjcmMzMihzdGF0ZS0+Y2hlY2ssIG5leHQsIGNvcHkpOwor ICAgICAgICAgICAgICAgICBoYXZlIC09IGNvcHk7CisgICAgICAgICAgICAgICAgIG5leHQgKz0g Y29weTsKK0BAIC03ODAsNyArODE5LDcgQEAgaW50IGZsdXNoOworICAgICAgICAgY2FzZSBIQ1JD OgorICAgICAgICAgICAgIGlmIChzdGF0ZS0+ZmxhZ3MgJiAweDAyMDApIHsKKyAgICAgICAgICAg ICAgICAgTkVFREJJVFMoMTYpOworLSAgICAgICAgICAgICAgICBpZiAoaG9sZCAhPSAoc3RhdGUt PmNoZWNrICYgMHhmZmZmKSkgeworKyAgICAgICAgICAgICAgICBpZiAoKHN0YXRlLT53cmFwICYg NCkgJiYgaG9sZCAhPSAoc3RhdGUtPmNoZWNrICYgMHhmZmZmKSkgeworICAgICAgICAgICAgICAg ICAgICAgc3RybS0+bXNnID0gKGNoYXIgKikiaGVhZGVyIGNyYyBtaXNtYXRjaCI7CisgICAgICAg ICAgICAgICAgICAgICBzdGF0ZS0+bW9kZSA9IEJBRDsKKyAgICAgICAgICAgICAgICAgICAgIGJy ZWFrOworQEAgLTc5Nyw3ICs4MzYsNyBAQCBpbnQgZmx1c2g7CisgI2VuZGlmCisgICAgICAgICBj YXNlIERJQ1RJRDoKKyAgICAgICAgICAgICBORUVEQklUUygzMik7CistICAgICAgICAgICAgc3Ry bS0+YWRsZXIgPSBzdGF0ZS0+Y2hlY2sgPSBSRVZFUlNFKGhvbGQpOworKyAgICAgICAgICAgIHN0 cm0tPmFkbGVyID0gc3RhdGUtPmNoZWNrID0gWlNXQVAzMihob2xkKTsKKyAgICAgICAgICAgICBJ TklUQklUUygpOworICAgICAgICAgICAgIHN0YXRlLT5tb2RlID0gRElDVDsKKyAgICAgICAgIGNh c2UgRElDVDoKK0BAIC05MDUsNyArOTQ0LDcgQEAgaW50IGZsdXNoOworICAgICAgICAgICAgIHdo aWxlIChzdGF0ZS0+aGF2ZSA8IDE5KQorICAgICAgICAgICAgICAgICBzdGF0ZS0+bGVuc1tvcmRl cltzdGF0ZS0+aGF2ZSsrXV0gPSAwOworICAgICAgICAgICAgIHN0YXRlLT5uZXh0ID0gc3RhdGUt PmNvZGVzOworLSAgICAgICAgICAgIHN0YXRlLT5sZW5jb2RlID0gKGNvZGUgY29uc3QgRkFSICop KHN0YXRlLT5uZXh0KTsKKysgICAgICAgICAgICBzdGF0ZS0+bGVuY29kZSA9IChjb25zdCBjb2Rl IEZBUiAqKShzdGF0ZS0+bmV4dCk7CisgICAgICAgICAgICAgc3RhdGUtPmxlbmJpdHMgPSA3Owor ICAgICAgICAgICAgIHJldCA9IGluZmxhdGVfdGFibGUoQ09ERVMsIHN0YXRlLT5sZW5zLCAxOSwg JihzdGF0ZS0+bmV4dCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmKHN0YXRl LT5sZW5iaXRzKSwgc3RhdGUtPndvcmspOworQEAgLTkyNSw3ICs5NjQsNiBAQCBpbnQgZmx1c2g7 CisgICAgICAgICAgICAgICAgICAgICBQVUxMQllURSgpOworICAgICAgICAgICAgICAgICB9Cisg ICAgICAgICAgICAgICAgIGlmIChoZXJlLnZhbCA8IDE2KSB7CistICAgICAgICAgICAgICAgICAg ICBORUVEQklUUyhoZXJlLmJpdHMpOworICAgICAgICAgICAgICAgICAgICAgRFJPUEJJVFMoaGVy ZS5iaXRzKTsKKyAgICAgICAgICAgICAgICAgICAgIHN0YXRlLT5sZW5zW3N0YXRlLT5oYXZlKytd ID0gaGVyZS52YWw7CisgICAgICAgICAgICAgICAgIH0KK0BAIC05ODAsNyArMTAxOCw3IEBAIGlu dCBmbHVzaDsKKyAgICAgICAgICAgICAgICB2YWx1ZXMgaGVyZSAoOSBhbmQgNikgd2l0aG91dCBy ZWFkaW5nIHRoZSBjb21tZW50cyBpbiBpbmZ0cmVlcy5oCisgICAgICAgICAgICAgICAgY29uY2Vy bmluZyB0aGUgRU5PVUdIIGNvbnN0YW50cywgd2hpY2ggZGVwZW5kIG9uIHRob3NlIHZhbHVlcyAq LworICAgICAgICAgICAgIHN0YXRlLT5uZXh0ID0gc3RhdGUtPmNvZGVzOworLSAgICAgICAgICAg IHN0YXRlLT5sZW5jb2RlID0gKGNvZGUgY29uc3QgRkFSICopKHN0YXRlLT5uZXh0KTsKKysgICAg ICAgICAgICBzdGF0ZS0+bGVuY29kZSA9IChjb25zdCBjb2RlIEZBUiAqKShzdGF0ZS0+bmV4dCk7 CisgICAgICAgICAgICAgc3RhdGUtPmxlbmJpdHMgPSA5OworICAgICAgICAgICAgIHJldCA9IGlu ZmxhdGVfdGFibGUoTEVOUywgc3RhdGUtPmxlbnMsIHN0YXRlLT5ubGVuLCAmKHN0YXRlLT5uZXh0 KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYoc3RhdGUtPmxlbmJpdHMpLCBz dGF0ZS0+d29yayk7CitAQCAtOTg5LDcgKzEwMjcsNyBAQCBpbnQgZmx1c2g7CisgICAgICAgICAg ICAgICAgIHN0YXRlLT5tb2RlID0gQkFEOworICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg ICAgICAgICB9CistICAgICAgICAgICAgc3RhdGUtPmRpc3Rjb2RlID0gKGNvZGUgY29uc3QgRkFS ICopKHN0YXRlLT5uZXh0KTsKKysgICAgICAgICAgICBzdGF0ZS0+ZGlzdGNvZGUgPSAoY29uc3Qg Y29kZSBGQVIgKikoc3RhdGUtPm5leHQpOworICAgICAgICAgICAgIHN0YXRlLT5kaXN0Yml0cyA9 IDY7CisgICAgICAgICAgICAgcmV0ID0gaW5mbGF0ZV90YWJsZShESVNUUywgc3RhdGUtPmxlbnMg KyBzdGF0ZS0+bmxlbiwgc3RhdGUtPm5kaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAmKHN0YXRlLT5uZXh0KSwgJihzdGF0ZS0+ZGlzdGJpdHMpLCBzdGF0ZS0+d29yayk7CitAQCAt MTE2MiwxNSArMTIwMCwxNSBAQCBpbnQgZmx1c2g7CisgICAgICAgICAgICAgICAgIG91dCAtPSBs ZWZ0OworICAgICAgICAgICAgICAgICBzdHJtLT50b3RhbF9vdXQgKz0gb3V0OworICAgICAgICAg ICAgICAgICBzdGF0ZS0+dG90YWwgKz0gb3V0OworLSAgICAgICAgICAgICAgICBpZiAob3V0KQor KyAgICAgICAgICAgICAgICBpZiAoKHN0YXRlLT53cmFwICYgNCkgJiYgb3V0KQorICAgICAgICAg ICAgICAgICAgICAgc3RybS0+YWRsZXIgPSBzdGF0ZS0+Y2hlY2sgPQorICAgICAgICAgICAgICAg ICAgICAgICAgIFVQREFURShzdGF0ZS0+Y2hlY2ssIHB1dCAtIG91dCwgb3V0KTsKKyAgICAgICAg ICAgICAgICAgb3V0ID0gbGVmdDsKKy0gICAgICAgICAgICAgICAgaWYgKCgKKysgICAgICAgICAg ICAgICAgaWYgKChzdGF0ZS0+d3JhcCAmIDQpICYmICgKKyAjaWZkZWYgR1VOWklQCisgICAgICAg ICAgICAgICAgICAgICAgc3RhdGUtPmZsYWdzID8gaG9sZCA6CisgI2VuZGlmCistICAgICAgICAg ICAgICAgICAgICAgUkVWRVJTRShob2xkKSkgIT0gc3RhdGUtPmNoZWNrKSB7CisrICAgICAgICAg ICAgICAgICAgICAgWlNXQVAzMihob2xkKSkgIT0gc3RhdGUtPmNoZWNrKSB7CisgICAgICAgICAg ICAgICAgICAgICBzdHJtLT5tc2cgPSAoY2hhciAqKSJpbmNvcnJlY3QgZGF0YSBjaGVjayI7Cisg ICAgICAgICAgICAgICAgICAgICBzdGF0ZS0+bW9kZSA9IEJBRDsKKyAgICAgICAgICAgICAgICAg ICAgIGJyZWFrOworQEAgLTEyMTQsOCArMTI1Miw5IEBAIGludCBmbHVzaDsKKyAgICAgICovCisg ICBpbmZfbGVhdmU6CisgICAgIFJFU1RPUkUoKTsKKy0gICAgaWYgKHN0YXRlLT53c2l6ZSB8fCAo c3RhdGUtPm1vZGUgPCBDSEVDSyAmJiBvdXQgIT0gc3RybS0+YXZhaWxfb3V0KSkKKy0gICAgICAg IGlmICh1cGRhdGV3aW5kb3coc3RybSwgb3V0KSkgeworKyAgICBpZiAoc3RhdGUtPndzaXplIHx8 IChvdXQgIT0gc3RybS0+YXZhaWxfb3V0ICYmIHN0YXRlLT5tb2RlIDwgQkFEICYmCisrICAgICAg ICAgICAgKHN0YXRlLT5tb2RlIDwgQ0hFQ0sgfHwgZmx1c2ggIT0gWl9GSU5JU0gpKSkKKysgICAg ICAgIGlmICh1cGRhdGV3aW5kb3coc3RybSwgc3RybS0+bmV4dF9vdXQsIG91dCAtIHN0cm0tPmF2 YWlsX291dCkpIHsKKyAgICAgICAgICAgICBzdGF0ZS0+bW9kZSA9IE1FTTsKKyAgICAgICAgICAg ICByZXR1cm4gWl9NRU1fRVJST1I7CisgICAgICAgICB9CitAQCAtMTIyNCwxMCArMTI2MywxMCBA QCBpbnQgZmx1c2g7CisgICAgIHN0cm0tPnRvdGFsX2luICs9IGluOworICAgICBzdHJtLT50b3Rh bF9vdXQgKz0gb3V0OworICAgICBzdGF0ZS0+dG90YWwgKz0gb3V0OworLSAgICBpZiAoc3RhdGUt PndyYXAgJiYgb3V0KQorKyAgICBpZiAoKHN0YXRlLT53cmFwICYgNCkgJiYgb3V0KQorICAgICAg ICAgc3RybS0+YWRsZXIgPSBzdGF0ZS0+Y2hlY2sgPQorICAgICAgICAgICAgIFVQREFURShzdGF0 ZS0+Y2hlY2ssIHN0cm0tPm5leHRfb3V0IC0gb3V0LCBvdXQpOworLSAgICBzdHJtLT5kYXRhX3R5 cGUgPSBzdGF0ZS0+Yml0cyArIChzdGF0ZS0+bGFzdCA/IDY0IDogMCkgKworKyAgICBzdHJtLT5k YXRhX3R5cGUgPSAoaW50KXN0YXRlLT5iaXRzICsgKHN0YXRlLT5sYXN0ID8gNjQgOiAwKSArCisg ICAgICAgICAgICAgICAgICAgICAgIChzdGF0ZS0+bW9kZSA9PSBUWVBFID8gMTI4IDogMCkgKwor ICAgICAgICAgICAgICAgICAgICAgICAoc3RhdGUtPm1vZGUgPT0gTEVOXyB8fCBzdGF0ZS0+bW9k ZSA9PSBDT1BZXyA/IDI1NiA6IDApOworICAgICBpZiAoKChpbiA9PSAwICYmIG91dCA9PSAwKSB8 fCBmbHVzaCA9PSBaX0ZJTklTSCkgJiYgcmV0ID09IFpfT0spCitAQCAtMTIzOSw3ICsxMjc4LDcg QEAgaW50IFpFWFBPUlQgaW5mbGF0ZUVuZChzdHJtKQorIHpfc3RyZWFtcCBzdHJtOworIHsKKyAg ICAgc3RydWN0IGluZmxhdGVfc3RhdGUgRkFSICpzdGF0ZTsKKy0gICAgaWYgKHN0cm0gPT0gWl9O VUxMIHx8IHN0cm0tPnN0YXRlID09IFpfTlVMTCB8fCBzdHJtLT56ZnJlZSA9PSAoZnJlZV9mdW5j KTApCisrICAgIGlmIChpbmZsYXRlU3RhdGVDaGVjayhzdHJtKSkKKyAgICAgICAgIHJldHVybiBa X1NUUkVBTV9FUlJPUjsKKyAgICAgc3RhdGUgPSAoc3RydWN0IGluZmxhdGVfc3RhdGUgRkFSICop c3RybS0+c3RhdGU7CisgICAgIGlmIChzdGF0ZS0+d2luZG93ICE9IFpfTlVMTCkgWkZSRUUoc3Ry bSwgc3RhdGUtPndpbmRvdyk7CitAQCAtMTI0OSw0MyArMTI4OCw1OSBAQCB6X3N0cmVhbXAgc3Ry bTsKKyAgICAgcmV0dXJuIFpfT0s7CisgfQorIAorK2ludCBaRVhQT1JUIGluZmxhdGVHZXREaWN0 aW9uYXJ5KHN0cm0sIGRpY3Rpb25hcnksIGRpY3RMZW5ndGgpCisrel9zdHJlYW1wIHN0cm07Cisr Qnl0ZWYgKmRpY3Rpb25hcnk7CisrdUludCAqZGljdExlbmd0aDsKKyt7CisrICAgIHN0cnVjdCBp bmZsYXRlX3N0YXRlIEZBUiAqc3RhdGU7CisrCisrICAgIC8qIGNoZWNrIHN0YXRlICovCisrICAg IGlmIChpbmZsYXRlU3RhdGVDaGVjayhzdHJtKSkgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOworKyAg ICBzdGF0ZSA9IChzdHJ1Y3QgaW5mbGF0ZV9zdGF0ZSBGQVIgKilzdHJtLT5zdGF0ZTsKKysKKysg ICAgLyogY29weSBkaWN0aW9uYXJ5ICovCisrICAgIGlmIChzdGF0ZS0+d2hhdmUgJiYgZGljdGlv bmFyeSAhPSBaX05VTEwpIHsKKysgICAgICAgIHptZW1jcHkoZGljdGlvbmFyeSwgc3RhdGUtPndp bmRvdyArIHN0YXRlLT53bmV4dCwKKysgICAgICAgICAgICAgICAgc3RhdGUtPndoYXZlIC0gc3Rh dGUtPnduZXh0KTsKKysgICAgICAgIHptZW1jcHkoZGljdGlvbmFyeSArIHN0YXRlLT53aGF2ZSAt IHN0YXRlLT53bmV4dCwKKysgICAgICAgICAgICAgICAgc3RhdGUtPndpbmRvdywgc3RhdGUtPndu ZXh0KTsKKysgICAgfQorKyAgICBpZiAoZGljdExlbmd0aCAhPSBaX05VTEwpCisrICAgICAgICAq ZGljdExlbmd0aCA9IHN0YXRlLT53aGF2ZTsKKysgICAgcmV0dXJuIFpfT0s7CisrfQorKworIGlu dCBaRVhQT1JUIGluZmxhdGVTZXREaWN0aW9uYXJ5KHN0cm0sIGRpY3Rpb25hcnksIGRpY3RMZW5n dGgpCisgel9zdHJlYW1wIHN0cm07CisgY29uc3QgQnl0ZWYgKmRpY3Rpb25hcnk7CisgdUludCBk aWN0TGVuZ3RoOworIHsKKyAgICAgc3RydWN0IGluZmxhdGVfc3RhdGUgRkFSICpzdGF0ZTsKKy0g ICAgdW5zaWduZWQgbG9uZyBpZDsKKysgICAgdW5zaWduZWQgbG9uZyBkaWN0aWQ7CisrICAgIGlu dCByZXQ7CisgCisgICAgIC8qIGNoZWNrIHN0YXRlICovCistICAgIGlmIChzdHJtID09IFpfTlVM TCB8fCBzdHJtLT5zdGF0ZSA9PSBaX05VTEwpIHJldHVybiBaX1NUUkVBTV9FUlJPUjsKKysgICAg aWYgKGluZmxhdGVTdGF0ZUNoZWNrKHN0cm0pKSByZXR1cm4gWl9TVFJFQU1fRVJST1I7CisgICAg IHN0YXRlID0gKHN0cnVjdCBpbmZsYXRlX3N0YXRlIEZBUiAqKXN0cm0tPnN0YXRlOworICAgICBp ZiAoc3RhdGUtPndyYXAgIT0gMCAmJiBzdGF0ZS0+bW9kZSAhPSBESUNUKQorICAgICAgICAgcmV0 dXJuIFpfU1RSRUFNX0VSUk9SOworIAorLSAgICAvKiBjaGVjayBmb3IgY29ycmVjdCBkaWN0aW9u YXJ5IGlkICovCisrICAgIC8qIGNoZWNrIGZvciBjb3JyZWN0IGRpY3Rpb25hcnkgaWRlbnRpZmll ciAqLworICAgICBpZiAoc3RhdGUtPm1vZGUgPT0gRElDVCkgeworLSAgICAgICAgaWQgPSBhZGxl cjMyKDBMLCBaX05VTEwsIDApOworLSAgICAgICAgaWQgPSBhZGxlcjMyKGlkLCBkaWN0aW9uYXJ5 LCBkaWN0TGVuZ3RoKTsKKy0gICAgICAgIGlmIChpZCAhPSBzdGF0ZS0+Y2hlY2spCisrICAgICAg ICBkaWN0aWQgPSBhZGxlcjMyKDBMLCBaX05VTEwsIDApOworKyAgICAgICAgZGljdGlkID0gYWRs ZXIzMihkaWN0aWQsIGRpY3Rpb25hcnksIGRpY3RMZW5ndGgpOworKyAgICAgICAgaWYgKGRpY3Rp ZCAhPSBzdGF0ZS0+Y2hlY2spCisgICAgICAgICAgICAgcmV0dXJuIFpfREFUQV9FUlJPUjsKKyAg ICAgfQorIAorLSAgICAvKiBjb3B5IGRpY3Rpb25hcnkgdG8gd2luZG93ICovCistICAgIGlmICh1 cGRhdGV3aW5kb3coc3RybSwgc3RybS0+YXZhaWxfb3V0KSkgeworKyAgICAvKiBjb3B5IGRpY3Rp b25hcnkgdG8gd2luZG93IHVzaW5nIHVwZGF0ZXdpbmRvdygpLCB3aGljaCB3aWxsIGFtZW5kIHRo ZQorKyAgICAgICBleGlzdGluZyBkaWN0aW9uYXJ5IGlmIGFwcHJvcHJpYXRlICovCisrICAgIHJl dCA9IHVwZGF0ZXdpbmRvdyhzdHJtLCBkaWN0aW9uYXJ5ICsgZGljdExlbmd0aCwgZGljdExlbmd0 aCk7CisrICAgIGlmIChyZXQpIHsKKyAgICAgICAgIHN0YXRlLT5tb2RlID0gTUVNOworICAgICAg ICAgcmV0dXJuIFpfTUVNX0VSUk9SOworICAgICB9CistICAgIGlmIChkaWN0TGVuZ3RoID4gc3Rh dGUtPndzaXplKSB7CistICAgICAgICB6bWVtY3B5KHN0YXRlLT53aW5kb3csIGRpY3Rpb25hcnkg KyBkaWN0TGVuZ3RoIC0gc3RhdGUtPndzaXplLAorLSAgICAgICAgICAgICAgICBzdGF0ZS0+d3Np emUpOworLSAgICAgICAgc3RhdGUtPndoYXZlID0gc3RhdGUtPndzaXplOworLSAgICB9CistICAg IGVsc2UgeworLSAgICAgICAgem1lbWNweShzdGF0ZS0+d2luZG93ICsgc3RhdGUtPndzaXplIC0g ZGljdExlbmd0aCwgZGljdGlvbmFyeSwKKy0gICAgICAgICAgICAgICAgZGljdExlbmd0aCk7Cist ICAgICAgICBzdGF0ZS0+d2hhdmUgPSBkaWN0TGVuZ3RoOworLSAgICB9CisgICAgIHN0YXRlLT5o YXZlZGljdCA9IDE7CisgICAgIFRyYWNldigoc3RkZXJyLCAiaW5mbGF0ZTogICBkaWN0aW9uYXJ5 IHNldFxuIikpOworICAgICByZXR1cm4gWl9PSzsKK0BAIC0xMjk4LDcgKzEzNTMsNyBAQCBnel9o ZWFkZXJwIGhlYWQ7CisgICAgIHN0cnVjdCBpbmZsYXRlX3N0YXRlIEZBUiAqc3RhdGU7CisgCisg ICAgIC8qIGNoZWNrIHN0YXRlICovCistICAgIGlmIChzdHJtID09IFpfTlVMTCB8fCBzdHJtLT5z dGF0ZSA9PSBaX05VTEwpIHJldHVybiBaX1NUUkVBTV9FUlJPUjsKKysgICAgaWYgKGluZmxhdGVT dGF0ZUNoZWNrKHN0cm0pKSByZXR1cm4gWl9TVFJFQU1fRVJST1I7CisgICAgIHN0YXRlID0gKHN0 cnVjdCBpbmZsYXRlX3N0YXRlIEZBUiAqKXN0cm0tPnN0YXRlOworICAgICBpZiAoKHN0YXRlLT53 cmFwICYgMikgPT0gMCkgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOworIAorQEAgLTEzMjEsNyArMTM3 Niw3IEBAIGd6X2hlYWRlcnAgaGVhZDsKKyAgKi8KKyBsb2NhbCB1bnNpZ25lZCBzeW5jc2VhcmNo KGhhdmUsIGJ1ZiwgbGVuKQorIHVuc2lnbmVkIEZBUiAqaGF2ZTsKKy11bnNpZ25lZCBjaGFyIEZB UiAqYnVmOworK2NvbnN0IHVuc2lnbmVkIGNoYXIgRkFSICpidWY7CisgdW5zaWduZWQgbGVuOwor IHsKKyAgICAgdW5zaWduZWQgZ290OworQEAgLTEzNTEsNyArMTQwNiw3IEBAIHpfc3RyZWFtcCBz dHJtOworICAgICBzdHJ1Y3QgaW5mbGF0ZV9zdGF0ZSBGQVIgKnN0YXRlOworIAorICAgICAvKiBj aGVjayBwYXJhbWV0ZXJzICovCistICAgIGlmIChzdHJtID09IFpfTlVMTCB8fCBzdHJtLT5zdGF0 ZSA9PSBaX05VTEwpIHJldHVybiBaX1NUUkVBTV9FUlJPUjsKKysgICAgaWYgKGluZmxhdGVTdGF0 ZUNoZWNrKHN0cm0pKSByZXR1cm4gWl9TVFJFQU1fRVJST1I7CisgICAgIHN0YXRlID0gKHN0cnVj dCBpbmZsYXRlX3N0YXRlIEZBUiAqKXN0cm0tPnN0YXRlOworICAgICBpZiAoc3RybS0+YXZhaWxf aW4gPT0gMCAmJiBzdGF0ZS0+Yml0cyA8IDgpIHJldHVybiBaX0JVRl9FUlJPUjsKKyAKK0BAIC0x Mzk4LDcgKzE0NTMsNyBAQCB6X3N0cmVhbXAgc3RybTsKKyB7CisgICAgIHN0cnVjdCBpbmZsYXRl X3N0YXRlIEZBUiAqc3RhdGU7CisgCistICAgIGlmIChzdHJtID09IFpfTlVMTCB8fCBzdHJtLT5z dGF0ZSA9PSBaX05VTEwpIHJldHVybiBaX1NUUkVBTV9FUlJPUjsKKysgICAgaWYgKGluZmxhdGVT dGF0ZUNoZWNrKHN0cm0pKSByZXR1cm4gWl9TVFJFQU1fRVJST1I7CisgICAgIHN0YXRlID0gKHN0 cnVjdCBpbmZsYXRlX3N0YXRlIEZBUiAqKXN0cm0tPnN0YXRlOworICAgICByZXR1cm4gc3RhdGUt Pm1vZGUgPT0gU1RPUkVEICYmIHN0YXRlLT5iaXRzID09IDA7CisgfQorQEAgLTE0MTMsOCArMTQ2 OCw3IEBAIHpfc3RyZWFtcCBzb3VyY2U7CisgICAgIHVuc2lnbmVkIHdzaXplOworIAorICAgICAv KiBjaGVjayBpbnB1dCAqLworLSAgICBpZiAoZGVzdCA9PSBaX05VTEwgfHwgc291cmNlID09IFpf TlVMTCB8fCBzb3VyY2UtPnN0YXRlID09IFpfTlVMTCB8fAorLSAgICAgICAgc291cmNlLT56YWxs b2MgPT0gKGFsbG9jX2Z1bmMpMCB8fCBzb3VyY2UtPnpmcmVlID09IChmcmVlX2Z1bmMpMCkKKysg ICAgaWYgKGluZmxhdGVTdGF0ZUNoZWNrKHNvdXJjZSkgfHwgZGVzdCA9PSBaX05VTEwpCisgICAg ICAgICByZXR1cm4gWl9TVFJFQU1fRVJST1I7CisgICAgIHN0YXRlID0gKHN0cnVjdCBpbmZsYXRl X3N0YXRlIEZBUiAqKXNvdXJjZS0+c3RhdGU7CisgCitAQCAtMTQzMyw4ICsxNDg3LDkgQEAgel9z dHJlYW1wIHNvdXJjZTsKKyAgICAgfQorIAorICAgICAvKiBjb3B5IHN0YXRlICovCistICAgIHpt ZW1jcHkoZGVzdCwgc291cmNlLCBzaXplb2Yoel9zdHJlYW0pKTsKKy0gICAgem1lbWNweShjb3B5 LCBzdGF0ZSwgc2l6ZW9mKHN0cnVjdCBpbmZsYXRlX3N0YXRlKSk7CisrICAgIHptZW1jcHkoKHZv aWRwZilkZXN0LCAodm9pZHBmKXNvdXJjZSwgc2l6ZW9mKHpfc3RyZWFtKSk7CisrICAgIHptZW1j cHkoKHZvaWRwZiljb3B5LCAodm9pZHBmKXN0YXRlLCBzaXplb2Yoc3RydWN0IGluZmxhdGVfc3Rh dGUpKTsKKysgICAgY29weS0+c3RybSA9IGRlc3Q7CisgICAgIGlmIChzdGF0ZS0+bGVuY29kZSA+ PSBzdGF0ZS0+Y29kZXMgJiYKKyAgICAgICAgIHN0YXRlLT5sZW5jb2RlIDw9IHN0YXRlLT5jb2Rl cyArIEVOT1VHSCAtIDEpIHsKKyAgICAgICAgIGNvcHktPmxlbmNvZGUgPSBjb3B5LT5jb2RlcyAr IChzdGF0ZS0+bGVuY29kZSAtIHN0YXRlLT5jb2Rlcyk7CitAQCAtMTQ1NiwyNSArMTUxMSw1MSBA QCBpbnQgc3VidmVydDsKKyB7CisgICAgIHN0cnVjdCBpbmZsYXRlX3N0YXRlIEZBUiAqc3RhdGU7 CisgCistICAgIGlmIChzdHJtID09IFpfTlVMTCB8fCBzdHJtLT5zdGF0ZSA9PSBaX05VTEwpIHJl dHVybiBaX1NUUkVBTV9FUlJPUjsKKysgICAgaWYgKGluZmxhdGVTdGF0ZUNoZWNrKHN0cm0pKSBy ZXR1cm4gWl9TVFJFQU1fRVJST1I7CisgICAgIHN0YXRlID0gKHN0cnVjdCBpbmZsYXRlX3N0YXRl IEZBUiAqKXN0cm0tPnN0YXRlOworKyNpZmRlZiBJTkZMQVRFX0FMTE9XX0lOVkFMSURfRElTVEFO Q0VfVE9PRkFSX0FSUlIKKyAgICAgc3RhdGUtPnNhbmUgPSAhc3VidmVydDsKKy0jaWZkZWYgSU5G TEFURV9BTExPV19JTlZBTElEX0RJU1RBTkNFX1RPT0ZBUl9BUlJSCisgICAgIHJldHVybiBaX09L OworICNlbHNlCisrICAgICh2b2lkKXN1YnZlcnQ7CisgICAgIHN0YXRlLT5zYW5lID0gMTsKKyAg ICAgcmV0dXJuIFpfREFUQV9FUlJPUjsKKyAjZW5kaWYKKyB9CisgCisraW50IFpFWFBPUlQgaW5m bGF0ZVZhbGlkYXRlKHN0cm0sIGNoZWNrKQorK3pfc3RyZWFtcCBzdHJtOworK2ludCBjaGVjazsK Kyt7CisrICAgIHN0cnVjdCBpbmZsYXRlX3N0YXRlIEZBUiAqc3RhdGU7CisrCisrICAgIGlmIChp bmZsYXRlU3RhdGVDaGVjayhzdHJtKSkgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOworKyAgICBzdGF0 ZSA9IChzdHJ1Y3QgaW5mbGF0ZV9zdGF0ZSBGQVIgKilzdHJtLT5zdGF0ZTsKKysgICAgaWYgKGNo ZWNrKQorKyAgICAgICAgc3RhdGUtPndyYXAgfD0gNDsKKysgICAgZWxzZQorKyAgICAgICAgc3Rh dGUtPndyYXAgJj0gfjQ7CisrICAgIHJldHVybiBaX09LOworK30KKysKKyBsb25nIFpFWFBPUlQg aW5mbGF0ZU1hcmsoc3RybSkKKyB6X3N0cmVhbXAgc3RybTsKKyB7CisgICAgIHN0cnVjdCBpbmZs YXRlX3N0YXRlIEZBUiAqc3RhdGU7CisgCistICAgIGlmIChzdHJtID09IFpfTlVMTCB8fCBzdHJt LT5zdGF0ZSA9PSBaX05VTEwpIHJldHVybiAtMUwgPDwgMTY7CisrICAgIGlmIChpbmZsYXRlU3Rh dGVDaGVjayhzdHJtKSkKKysgICAgICAgIHJldHVybiAtKDFMIDw8IDE2KTsKKyAgICAgc3RhdGUg PSAoc3RydWN0IGluZmxhdGVfc3RhdGUgRkFSICopc3RybS0+c3RhdGU7CistICAgIHJldHVybiAo KGxvbmcpKHN0YXRlLT5iYWNrKSA8PCAxNikgKworKyAgICByZXR1cm4gKGxvbmcpKCgodW5zaWdu ZWQgbG9uZykoKGxvbmcpc3RhdGUtPmJhY2spKSA8PCAxNikgKworICAgICAgICAgKHN0YXRlLT5t b2RlID09IENPUFkgPyBzdGF0ZS0+bGVuZ3RoIDoKKyAgICAgICAgICAgICAoc3RhdGUtPm1vZGUg PT0gTUFUQ0ggPyBzdGF0ZS0+d2FzIC0gc3RhdGUtPmxlbmd0aCA6IDApKTsKKyB9CisrCisrdW5z aWduZWQgbG9uZyBaRVhQT1JUIGluZmxhdGVDb2Rlc1VzZWQoc3RybSkKKyt6X3N0cmVhbXAgc3Ry bTsKKyt7CisrICAgIHN0cnVjdCBpbmZsYXRlX3N0YXRlIEZBUiAqc3RhdGU7CisrICAgIGlmIChp bmZsYXRlU3RhdGVDaGVjayhzdHJtKSkgcmV0dXJuICh1bnNpZ25lZCBsb25nKS0xOworKyAgICBz dGF0ZSA9IChzdHJ1Y3QgaW5mbGF0ZV9zdGF0ZSBGQVIgKilzdHJtLT5zdGF0ZTsKKysgICAgcmV0 dXJuICh1bnNpZ25lZCBsb25nKShzdGF0ZS0+bmV4dCAtIHN0YXRlLT5jb2Rlcyk7CisrfQorZGlm ZiAtLWdpdCBhL2NvbTMyL2xpYi96bGliL2luZmxhdGUuaCBiL2NvbTMyL2xpYi96bGliL2luZmxh dGUuaAoraW5kZXggOTVmNDk4NmQuLmE0NmNjZTZiIDEwMDY0NAorLS0tIGEvY29tMzIvbGliL3ps aWIvaW5mbGF0ZS5oCisrKysgYi9jb20zMi9saWIvemxpYi9pbmZsYXRlLmgKK0BAIC0xLDUgKzEs NSBAQAorIC8qIGluZmxhdGUuaCAtLSBpbnRlcm5hbCBpbmZsYXRlIHN0YXRlIGRlZmluaXRpb24K Ky0gKiBDb3B5cmlnaHQgKEMpIDE5OTUtMjAwOSBNYXJrIEFkbGVyCisrICogQ29weXJpZ2h0IChD KSAxOTk1LTIwMTYgTWFyayBBZGxlcgorICAqIEZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlv biBhbmQgdXNlLCBzZWUgY29weXJpZ2h0IG5vdGljZSBpbiB6bGliLmgKKyAgKi8KKyAKK0BAIC0x OCw3ICsxOCw3IEBACisgCisgLyogUG9zc2libGUgaW5mbGF0ZSBtb2RlcyBiZXR3ZWVuIGluZmxh dGUoKSBjYWxscyAqLworIHR5cGVkZWYgZW51bSB7CistICAgIEhFQUQsICAgICAgIC8qIGk6IHdh aXRpbmcgZm9yIG1hZ2ljIGhlYWRlciAqLworKyAgICBIRUFEID0gMTYxODAsICAgLyogaTogd2Fp dGluZyBmb3IgbWFnaWMgaGVhZGVyICovCisgICAgIEZMQUdTLCAgICAgIC8qIGk6IHdhaXRpbmcg Zm9yIG1ldGhvZCBhbmQgZmxhZ3MgKGd6aXApICovCisgICAgIFRJTUUsICAgICAgIC8qIGk6IHdh aXRpbmcgZm9yIG1vZGlmaWNhdGlvbiB0aW1lIChnemlwKSAqLworICAgICBPUywgICAgICAgICAv KiBpOiB3YWl0aW5nIGZvciBleHRyYSBmbGFncyBhbmQgb3BlcmF0aW5nIHN5c3RlbSAoZ3ppcCkg Ki8KK0BAIC03NywxMSArNzcsMTQgQEAgdHlwZWRlZiBlbnVtIHsKKyAgICAgICAgIENIRUNLIC0+ IExFTkdUSCAtPiBET05FCisgICovCisgCistLyogc3RhdGUgbWFpbnRhaW5lZCBiZXR3ZWVuIGlu ZmxhdGUoKSBjYWxscy4gIEFwcHJveGltYXRlbHkgMTBLIGJ5dGVzLiAqLworKy8qIFN0YXRlIG1h aW50YWluZWQgYmV0d2VlbiBpbmZsYXRlKCkgY2FsbHMgLS0gYXBwcm94aW1hdGVseSA3SyBieXRl cywgbm90CisrICAgaW5jbHVkaW5nIHRoZSBhbGxvY2F0ZWQgc2xpZGluZyB3aW5kb3csIHdoaWNo IGlzIHVwIHRvIDMySyBieXRlcy4gKi8KKyBzdHJ1Y3QgaW5mbGF0ZV9zdGF0ZSB7CisrICAgIHpf c3RyZWFtcCBzdHJtOyAgICAgICAgICAgICAvKiBwb2ludGVyIGJhY2sgdG8gdGhpcyB6bGliIHN0 cmVhbSAqLworICAgICBpbmZsYXRlX21vZGUgbW9kZTsgICAgICAgICAgLyogY3VycmVudCBpbmZs YXRlIG1vZGUgKi8KKyAgICAgaW50IGxhc3Q7ICAgICAgICAgICAgICAgICAgIC8qIHRydWUgaWYg cHJvY2Vzc2luZyBsYXN0IGJsb2NrICovCistICAgIGludCB3cmFwOyAgICAgICAgICAgICAgICAg ICAvKiBiaXQgMCB0cnVlIGZvciB6bGliLCBiaXQgMSB0cnVlIGZvciBnemlwICovCisrICAgIGlu dCB3cmFwOyAgICAgICAgICAgICAgICAgICAvKiBiaXQgMCB0cnVlIGZvciB6bGliLCBiaXQgMSB0 cnVlIGZvciBnemlwLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYml0IDIg dHJ1ZSB0byB2YWxpZGF0ZSBjaGVjayB2YWx1ZSAqLworICAgICBpbnQgaGF2ZWRpY3Q7ICAgICAg ICAgICAgICAgLyogdHJ1ZSBpZiBkaWN0aW9uYXJ5IHByb3ZpZGVkICovCisgICAgIGludCBmbGFn czsgICAgICAgICAgICAgICAgICAvKiBnemlwIGhlYWRlciBtZXRob2QgYW5kIGZsYWdzICgwIGlm IHpsaWIpICovCisgICAgIHVuc2lnbmVkIGRtYXg7ICAgICAgICAgICAgICAvKiB6bGliIGhlYWRl ciBtYXggZGlzdGFuY2UgKElORkxBVEVfU1RSSUNUKSAqLworZGlmZiAtLWdpdCBhL2NvbTMyL2xp Yi96bGliL2luZnRyZWVzLmMgYi9jb20zMi9saWIvemxpYi9pbmZ0cmVlcy5jCitpbmRleCAxMWU5 YzUyYS4uMmVhMDhmYzEgMTAwNjQ0CistLS0gYS9jb20zMi9saWIvemxpYi9pbmZ0cmVlcy5jCisr KysgYi9jb20zMi9saWIvemxpYi9pbmZ0cmVlcy5jCitAQCAtMSw1ICsxLDUgQEAKKyAvKiBpbmZ0 cmVlcy5jIC0tIGdlbmVyYXRlIEh1ZmZtYW4gdHJlZXMgZm9yIGVmZmljaWVudCBkZWNvZGluZwor LSAqIENvcHlyaWdodCAoQykgMTk5NS0yMDEwIE1hcmsgQWRsZXIKKysgKiBDb3B5cmlnaHQgKEMp IDE5OTUtMjAxNyBNYXJrIEFkbGVyCisgICogRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9u IGFuZCB1c2UsIHNlZSBjb3B5cmlnaHQgbm90aWNlIGluIHpsaWIuaAorICAqLworIAorQEAgLTks NyArOSw3IEBACisgI2RlZmluZSBNQVhCSVRTIDE1CisgCisgY29uc3QgY2hhciBpbmZsYXRlX2Nv cHlyaWdodFtdID0KKy0gICAiIGluZmxhdGUgMS4yLjUgQ29weXJpZ2h0IDE5OTUtMjAxMCBNYXJr IEFkbGVyICI7CisrICAgIiBpbmZsYXRlIDEuMi4xMSBDb3B5cmlnaHQgMTk5NS0yMDE3IE1hcmsg QWRsZXIgIjsKKyAvKgorICAgSWYgeW91IHVzZSB0aGUgemxpYiBsaWJyYXJ5IGluIGEgcHJvZHVj dCwgYW4gYWNrbm93bGVkZ21lbnQgaXMgd2VsY29tZQorICAgaW4gdGhlIGRvY3VtZW50YXRpb24g b2YgeW91ciBwcm9kdWN0LiBJZiBmb3Igc29tZSByZWFzb24geW91IGNhbm5vdAorQEAgLTU0LDcg KzU0LDcgQEAgdW5zaWduZWQgc2hvcnQgRkFSICp3b3JrOworICAgICBjb2RlIEZBUiAqbmV4dDsg ICAgICAgICAgICAgLyogbmV4dCBhdmFpbGFibGUgc3BhY2UgaW4gdGFibGUgKi8KKyAgICAgY29u c3QgdW5zaWduZWQgc2hvcnQgRkFSICpiYXNlOyAgICAgLyogYmFzZSB2YWx1ZSB0YWJsZSB0byB1 c2UgKi8KKyAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgRkFSICpleHRyYTsgICAgLyogZXh0cmEg Yml0cyB0YWJsZSB0byB1c2UgKi8KKy0gICAgaW50IGVuZDsgICAgICAgICAgICAgICAgICAgIC8q IHVzZSBiYXNlIGFuZCBleHRyYSBmb3Igc3ltYm9sID4gZW5kICovCisrICAgIHVuc2lnbmVkIG1h dGNoOyAgICAgICAgICAgICAvKiB1c2UgYmFzZSBhbmQgZXh0cmEgZm9yIHN5bWJvbCA+PSBtYXRj aCAqLworICAgICB1bnNpZ25lZCBzaG9ydCBjb3VudFtNQVhCSVRTKzFdOyAgICAvKiBudW1iZXIg b2YgY29kZXMgb2YgZWFjaCBsZW5ndGggKi8KKyAgICAgdW5zaWduZWQgc2hvcnQgb2Zmc1tNQVhC SVRTKzFdOyAgICAgLyogb2Zmc2V0cyBpbiB0YWJsZSBmb3IgZWFjaCBsZW5ndGggKi8KKyAgICAg c3RhdGljIGNvbnN0IHVuc2lnbmVkIHNob3J0IGxiYXNlWzMxXSA9IHsgLyogTGVuZ3RoIGNvZGVz IDI1Ny4uMjg1IGJhc2UgKi8KK0BAIC02Miw3ICs2Miw3IEBAIHVuc2lnbmVkIHNob3J0IEZBUiAq d29yazsKKyAgICAgICAgIDM1LCA0MywgNTEsIDU5LCA2NywgODMsIDk5LCAxMTUsIDEzMSwgMTYz LCAxOTUsIDIyNywgMjU4LCAwLCAwfTsKKyAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNob3J0 IGxleHRbMzFdID0geyAvKiBMZW5ndGggY29kZXMgMjU3Li4yODUgZXh0cmEgKi8KKyAgICAgICAg IDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTcsIDE3LCAxNywgMTcsIDE4LCAxOCwg MTgsIDE4LAorLSAgICAgICAgMTksIDE5LCAxOSwgMTksIDIwLCAyMCwgMjAsIDIwLCAyMSwgMjEs IDIxLCAyMSwgMTYsIDczLCAxOTV9OworKyAgICAgICAgMTksIDE5LCAxOSwgMTksIDIwLCAyMCwg MjAsIDIwLCAyMSwgMjEsIDIxLCAyMSwgMTYsIDc3LCAyMDJ9OworICAgICBzdGF0aWMgY29uc3Qg dW5zaWduZWQgc2hvcnQgZGJhc2VbMzJdID0geyAvKiBEaXN0YW5jZSBjb2RlcyAwLi4yOSBiYXNl ICovCisgICAgICAgICAxLCAyLCAzLCA0LCA1LCA3LCA5LCAxMywgMTcsIDI1LCAzMywgNDksIDY1 LCA5NywgMTI5LCAxOTMsCisgICAgICAgICAyNTcsIDM4NSwgNTEzLCA3NjksIDEwMjUsIDE1Mzcs IDIwNDksIDMwNzMsIDQwOTcsIDYxNDUsCitAQCAtMTgxLDE5ICsxODEsMTcgQEAgdW5zaWduZWQg c2hvcnQgRkFSICp3b3JrOworICAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICAgY2FzZSBDT0RFUzoK KyAgICAgICAgIGJhc2UgPSBleHRyYSA9IHdvcms7ICAgIC8qIGR1bW15IHZhbHVlLS1ub3QgdXNl ZCAqLworLSAgICAgICAgZW5kID0gMTk7CisrICAgICAgICBtYXRjaCA9IDIwOworICAgICAgICAg YnJlYWs7CisgICAgIGNhc2UgTEVOUzoKKyAgICAgICAgIGJhc2UgPSBsYmFzZTsKKy0gICAgICAg IGJhc2UgLT0gMjU3OworICAgICAgICAgZXh0cmEgPSBsZXh0OworLSAgICAgICAgZXh0cmEgLT0g MjU3OworLSAgICAgICAgZW5kID0gMjU2OworKyAgICAgICAgbWF0Y2ggPSAyNTc7CisgICAgICAg ICBicmVhazsKKy0gICAgZGVmYXVsdDogICAgICAgICAgICAvKiBESVNUUyAqLworKyAgICBkZWZh dWx0OiAgICAvKiBESVNUUyAqLworICAgICAgICAgYmFzZSA9IGRiYXNlOworICAgICAgICAgZXh0 cmEgPSBkZXh0OworLSAgICAgICAgZW5kID0gLTE7CisrICAgICAgICBtYXRjaCA9IDA7CisgICAg IH0KKyAKKyAgICAgLyogaW5pdGlhbGl6ZSBzdGF0ZSBmb3IgbG9vcCAqLworQEAgLTIwOCwyMSAr MjA2LDIxIEBAIHVuc2lnbmVkIHNob3J0IEZBUiAqd29yazsKKyAgICAgbWFzayA9IHVzZWQgLSAx OyAgICAgICAgICAgIC8qIG1hc2sgZm9yIGNvbXBhcmluZyBsb3cgKi8KKyAKKyAgICAgLyogY2hl Y2sgYXZhaWxhYmxlIHRhYmxlIHNwYWNlICovCistICAgIGlmICgodHlwZSA9PSBMRU5TICYmIHVz ZWQgPj0gRU5PVUdIX0xFTlMpIHx8CistICAgICAgICAodHlwZSA9PSBESVNUUyAmJiB1c2VkID49 IEVOT1VHSF9ESVNUUykpCisrICAgIGlmICgodHlwZSA9PSBMRU5TICYmIHVzZWQgPiBFTk9VR0hf TEVOUykgfHwKKysgICAgICAgICh0eXBlID09IERJU1RTICYmIHVzZWQgPiBFTk9VR0hfRElTVFMp KQorICAgICAgICAgcmV0dXJuIDE7CisgCisgICAgIC8qIHByb2Nlc3MgYWxsIGNvZGVzIGFuZCBt YWtlIHRhYmxlIGVudHJpZXMgKi8KKyAgICAgZm9yICg7OykgeworICAgICAgICAgLyogY3JlYXRl IHRhYmxlIGVudHJ5ICovCisgICAgICAgICBoZXJlLmJpdHMgPSAodW5zaWduZWQgY2hhcikobGVu IC0gZHJvcCk7CistICAgICAgICBpZiAoKGludCkod29ya1tzeW1dKSA8IGVuZCkgeworKyAgICAg ICAgaWYgKHdvcmtbc3ltXSArIDFVIDwgbWF0Y2gpIHsKKyAgICAgICAgICAgICBoZXJlLm9wID0g KHVuc2lnbmVkIGNoYXIpMDsKKyAgICAgICAgICAgICBoZXJlLnZhbCA9IHdvcmtbc3ltXTsKKyAg ICAgICAgIH0KKy0gICAgICAgIGVsc2UgaWYgKChpbnQpKHdvcmtbc3ltXSkgPiBlbmQpIHsKKy0g ICAgICAgICAgICBoZXJlLm9wID0gKHVuc2lnbmVkIGNoYXIpKGV4dHJhW3dvcmtbc3ltXV0pOwor LSAgICAgICAgICAgIGhlcmUudmFsID0gYmFzZVt3b3JrW3N5bV1dOworKyAgICAgICAgZWxzZSBp ZiAod29ya1tzeW1dID49IG1hdGNoKSB7CisrICAgICAgICAgICAgaGVyZS5vcCA9ICh1bnNpZ25l ZCBjaGFyKShleHRyYVt3b3JrW3N5bV0gLSBtYXRjaF0pOworKyAgICAgICAgICAgIGhlcmUudmFs ID0gYmFzZVt3b3JrW3N5bV0gLSBtYXRjaF07CisgICAgICAgICB9CisgICAgICAgICBlbHNlIHsK KyAgICAgICAgICAgICBoZXJlLm9wID0gKHVuc2lnbmVkIGNoYXIpKDMyICsgNjQpOyAgICAgICAg IC8qIGVuZCBvZiBibG9jayAqLworQEAgLTI3Nyw4ICsyNzUsOCBAQCB1bnNpZ25lZCBzaG9ydCBG QVIgKndvcms7CisgCisgICAgICAgICAgICAgLyogY2hlY2sgZm9yIGVub3VnaCBzcGFjZSAqLwor ICAgICAgICAgICAgIHVzZWQgKz0gMVUgPDwgY3VycjsKKy0gICAgICAgICAgICBpZiAoKHR5cGUg PT0gTEVOUyAmJiB1c2VkID49IEVOT1VHSF9MRU5TKSB8fAorLSAgICAgICAgICAgICAgICAodHlw ZSA9PSBESVNUUyAmJiB1c2VkID49IEVOT1VHSF9ESVNUUykpCisrICAgICAgICAgICAgaWYgKCh0 eXBlID09IExFTlMgJiYgdXNlZCA+IEVOT1VHSF9MRU5TKSB8fAorKyAgICAgICAgICAgICAgICAo dHlwZSA9PSBESVNUUyAmJiB1c2VkID4gRU5PVUdIX0RJU1RTKSkKKyAgICAgICAgICAgICAgICAg cmV0dXJuIDE7CisgCisgICAgICAgICAgICAgLyogcG9pbnQgZW50cnkgaW4gcm9vdCB0YWJsZSB0 byBzdWItdGFibGUgKi8KK0BAIC0yODksMzggKzI4NywxNCBAQCB1bnNpZ25lZCBzaG9ydCBGQVIg Kndvcms7CisgICAgICAgICB9CisgICAgIH0KKyAKKy0gICAgLyoKKy0gICAgICAgRmlsbCBpbiBy ZXN0IG9mIHRhYmxlIGZvciBpbmNvbXBsZXRlIGNvZGVzLiAgVGhpcyBsb29wIGlzIHNpbWlsYXIg dG8gdGhlCistICAgICAgIGxvb3AgYWJvdmUgaW4gaW5jcmVtZW50aW5nIGh1ZmYgZm9yIHRhYmxl IGluZGljZXMuICBJdCBpcyBhc3N1bWVkIHRoYXQKKy0gICAgICAgbGVuIGlzIGVxdWFsIHRvIGN1 cnIgKyBkcm9wLCBzbyB0aGVyZSBpcyBubyBsb29wIG5lZWRlZCB0byBpbmNyZW1lbnQKKy0gICAg ICAgdGhyb3VnaCBoaWdoIGluZGV4IGJpdHMuICBXaGVuIHRoZSBjdXJyZW50IHN1Yi10YWJsZSBp cyBmaWxsZWQsIHRoZSBsb29wCistICAgICAgIGRyb3BzIGJhY2sgdG8gdGhlIHJvb3QgdGFibGUg dG8gZmlsbCBpbiBhbnkgcmVtYWluaW5nIGVudHJpZXMgdGhlcmUuCistICAgICAqLworLSAgICBo ZXJlLm9wID0gKHVuc2lnbmVkIGNoYXIpNjQ7ICAgICAgICAgICAgICAgIC8qIGludmFsaWQgY29k ZSBtYXJrZXIgKi8KKy0gICAgaGVyZS5iaXRzID0gKHVuc2lnbmVkIGNoYXIpKGxlbiAtIGRyb3Ap OworLSAgICBoZXJlLnZhbCA9ICh1bnNpZ25lZCBzaG9ydCkwOworLSAgICB3aGlsZSAoaHVmZiAh PSAwKSB7CistICAgICAgICAvKiB3aGVuIGRvbmUgd2l0aCBzdWItdGFibGUsIGRyb3AgYmFjayB0 byByb290IHRhYmxlICovCistICAgICAgICBpZiAoZHJvcCAhPSAwICYmIChodWZmICYgbWFzaykg IT0gbG93KSB7CistICAgICAgICAgICAgZHJvcCA9IDA7CistICAgICAgICAgICAgbGVuID0gcm9v dDsKKy0gICAgICAgICAgICBuZXh0ID0gKnRhYmxlOworLSAgICAgICAgICAgIGhlcmUuYml0cyA9 ICh1bnNpZ25lZCBjaGFyKWxlbjsKKy0gICAgICAgIH0KKy0KKy0gICAgICAgIC8qIHB1dCBpbnZh bGlkIGNvZGUgbWFya2VyIGluIHRhYmxlICovCistICAgICAgICBuZXh0W2h1ZmYgPj4gZHJvcF0g PSBoZXJlOworLQorLSAgICAgICAgLyogYmFja3dhcmRzIGluY3JlbWVudCB0aGUgbGVuLWJpdCBj b2RlIGh1ZmYgKi8KKy0gICAgICAgIGluY3IgPSAxVSA8PCAobGVuIC0gMSk7CistICAgICAgICB3 aGlsZSAoaHVmZiAmIGluY3IpCistICAgICAgICAgICAgaW5jciA+Pj0gMTsKKy0gICAgICAgIGlm IChpbmNyICE9IDApIHsKKy0gICAgICAgICAgICBodWZmICY9IGluY3IgLSAxOworLSAgICAgICAg ICAgIGh1ZmYgKz0gaW5jcjsKKy0gICAgICAgIH0KKy0gICAgICAgIGVsc2UKKy0gICAgICAgICAg ICBodWZmID0gMDsKKysgICAgLyogZmlsbCBpbiByZW1haW5pbmcgdGFibGUgZW50cnkgaWYgY29k ZSBpcyBpbmNvbXBsZXRlIChndWFyYW50ZWVkIHRvIGhhdmUKKysgICAgICAgYXQgbW9zdCBvbmUg cmVtYWluaW5nIGVudHJ5LCBzaW5jZSBpZiB0aGUgY29kZSBpcyBpbmNvbXBsZXRlLCB0aGUKKysg ICAgICAgbWF4aW11bSBjb2RlIGxlbmd0aCB0aGF0IHdhcyBhbGxvd2VkIHRvIGdldCB0aGlzIGZh ciBpcyBvbmUgYml0KSAqLworKyAgICBpZiAoaHVmZiAhPSAwKSB7CisrICAgICAgICBoZXJlLm9w ID0gKHVuc2lnbmVkIGNoYXIpNjQ7ICAgICAgICAgICAgLyogaW52YWxpZCBjb2RlIG1hcmtlciAq LworKyAgICAgICAgaGVyZS5iaXRzID0gKHVuc2lnbmVkIGNoYXIpKGxlbiAtIGRyb3ApOworKyAg ICAgICAgaGVyZS52YWwgPSAodW5zaWduZWQgc2hvcnQpMDsKKysgICAgICAgIG5leHRbaHVmZl0g PSBoZXJlOworICAgICB9CisgCisgICAgIC8qIHNldCByZXR1cm4gcGFyYW1ldGVycyAqLworZGlm ZiAtLWdpdCBhL2NvbTMyL2xpYi96bGliL3RyZWVzLmMgYi9jb20zMi9saWIvemxpYi90cmVlcy5j CitpbmRleCBkMWRlM2NkMC4uNTBjZjRiNDUgMTAwNjQ0CistLS0gYS9jb20zMi9saWIvemxpYi90 cmVlcy5jCisrKysgYi9jb20zMi9saWIvemxpYi90cmVlcy5jCitAQCAtMSw1ICsxLDUgQEAKKyAv KiB0cmVlcy5jIC0tIG91dHB1dCBkZWZsYXRlZCBkYXRhIHVzaW5nIEh1ZmZtYW4gY29kaW5nCist ICogQ29weXJpZ2h0IChDKSAxOTk1LTIwMTAgSmVhbi1sb3VwIEdhaWxseQorKyAqIENvcHlyaWdo dCAoQykgMTk5NS0yMDE3IEplYW4tbG91cCBHYWlsbHkKKyAgKiBkZXRlY3RfZGF0YV90eXBlKCkg ZnVuY3Rpb24gcHJvdmlkZWQgZnJlZWx5IGJ5IENvc21pbiBUcnV0YSwgMjAwNgorICAqIEZvciBj b25kaXRpb25zIG9mIGRpc3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgY29weXJpZ2h0IG5vdGljZSBp biB6bGliLmgKKyAgKi8KK0BAIC0zNiw3ICszNiw3IEBACisgCisgI2luY2x1ZGUgImRlZmxhdGUu aCIKKyAKKy0jaWZkZWYgREVCVUdfWkxJQgorKyNpZmRlZiBaTElCX0RFQlVHCisgIyAgaW5jbHVk ZSA8Y3R5cGUuaD4KKyAjZW5kaWYKKyAKK0BAIC03NCwxMSArNzQsNiBAQCBsb2NhbCBjb25zdCB1 Y2ggYmxfb3JkZXJbQkxfQ09ERVNdCisgICogcHJvYmFiaWxpdHksIHRvIGF2b2lkIHRyYW5zbWl0 dGluZyB0aGUgbGVuZ3RocyBmb3IgdW51c2VkIGJpdCBsZW5ndGggY29kZXMuCisgICovCisgCist I2RlZmluZSBCdWZfc2l6ZSAoOCAqIDIqc2l6ZW9mKGNoYXIpKQorLS8qIE51bWJlciBvZiBiaXRz IHVzZWQgd2l0aGluIGJpX2J1Zi4gKGJpX2J1ZiBtaWdodCBiZSBpbXBsZW1lbnRlZCBvbgorLSAq IG1vcmUgdGhhbiAxNiBiaXRzIG9uIHNvbWUgc3lzdGVtcy4pCistICovCistCisgLyogPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CisgICogTG9jYWwgZGF0YS4gVGhlc2UgYXJlIGluaXRpYWxpemVkIG9ubHkg b25jZS4KKyAgKi8KK0BAIC0xMjcsMTMgKzEyMiwxMyBAQCBzdHJ1Y3Qgc3RhdGljX3RyZWVfZGVz Y19zIHsKKyAgICAgaW50ICAgICBtYXhfbGVuZ3RoOyAgICAgICAgICAvKiBtYXggYml0IGxlbmd0 aCBmb3IgdGhlIGNvZGVzICovCisgfTsKKyAKKy1sb2NhbCBzdGF0aWNfdHJlZV9kZXNjICBzdGF0 aWNfbF9kZXNjID0KKytsb2NhbCBjb25zdCBzdGF0aWNfdHJlZV9kZXNjICBzdGF0aWNfbF9kZXNj ID0KKyB7c3RhdGljX2x0cmVlLCBleHRyYV9sYml0cywgTElURVJBTFMrMSwgTF9DT0RFUywgTUFY X0JJVFN9OworIAorLWxvY2FsIHN0YXRpY190cmVlX2Rlc2MgIHN0YXRpY19kX2Rlc2MgPQorK2xv Y2FsIGNvbnN0IHN0YXRpY190cmVlX2Rlc2MgIHN0YXRpY19kX2Rlc2MgPQorIHtzdGF0aWNfZHRy ZWUsIGV4dHJhX2RiaXRzLCAwLCAgICAgICAgICBEX0NPREVTLCBNQVhfQklUU307CisgCistbG9j YWwgc3RhdGljX3RyZWVfZGVzYyAgc3RhdGljX2JsX2Rlc2MgPQorK2xvY2FsIGNvbnN0IHN0YXRp Y190cmVlX2Rlc2MgIHN0YXRpY19ibF9kZXNjID0KKyB7KGNvbnN0IGN0X2RhdGEgKikwLCBleHRy YV9ibGJpdHMsIDAsICAgQkxfQ09ERVMsIE1BWF9CTF9CSVRTfTsKKyAKKyAvKiA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KK0BAIC0xNTEsMjQgKzE0NiwyMiBAQCBsb2NhbCB2b2lkIHNlbmRfdHJlZSAgICAg IE9GKChkZWZsYXRlX3N0YXRlICpzLCBjdF9kYXRhICp0cmVlLCBpbnQgbWF4X2NvZGUpKTsKKyBs b2NhbCBpbnQgIGJ1aWxkX2JsX3RyZWUgIE9GKChkZWZsYXRlX3N0YXRlICpzKSk7CisgbG9jYWwg dm9pZCBzZW5kX2FsbF90cmVlcyBPRigoZGVmbGF0ZV9zdGF0ZSAqcywgaW50IGxjb2RlcywgaW50 IGRjb2RlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYmxjb2RlcykpOwor LWxvY2FsIHZvaWQgY29tcHJlc3NfYmxvY2sgT0YoKGRlZmxhdGVfc3RhdGUgKnMsIGN0X2RhdGEg Kmx0cmVlLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0X2RhdGEgKmR0cmVlKSk7 CisrbG9jYWwgdm9pZCBjb21wcmVzc19ibG9jayBPRigoZGVmbGF0ZV9zdGF0ZSAqcywgY29uc3Qg Y3RfZGF0YSAqbHRyZWUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY3Rf ZGF0YSAqZHRyZWUpKTsKKyBsb2NhbCBpbnQgIGRldGVjdF9kYXRhX3R5cGUgT0YoKGRlZmxhdGVf c3RhdGUgKnMpKTsKKyBsb2NhbCB1bnNpZ25lZCBiaV9yZXZlcnNlIE9GKCh1bnNpZ25lZCB2YWx1 ZSwgaW50IGxlbmd0aCkpOworIGxvY2FsIHZvaWQgYmlfd2luZHVwICAgICAgT0YoKGRlZmxhdGVf c3RhdGUgKnMpKTsKKyBsb2NhbCB2b2lkIGJpX2ZsdXNoICAgICAgIE9GKChkZWZsYXRlX3N0YXRl ICpzKSk7CistbG9jYWwgdm9pZCBjb3B5X2Jsb2NrICAgICBPRigoZGVmbGF0ZV9zdGF0ZSAqcywg Y2hhcmYgKmJ1ZiwgdW5zaWduZWQgbGVuLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGludCBoZWFkZXIpKTsKKyAKKyAjaWZkZWYgR0VOX1RSRUVTX0gKKyBsb2NhbCB2b2lkIGdlbl90 cmVlc19oZWFkZXIgT0YoKHZvaWQpKTsKKyAjZW5kaWYKKyAKKy0jaWZuZGVmIERFQlVHX1pMSUIK KysjaWZuZGVmIFpMSUJfREVCVUcKKyAjICBkZWZpbmUgc2VuZF9jb2RlKHMsIGMsIHRyZWUpIHNl bmRfYml0cyhzLCB0cmVlW2NdLkNvZGUsIHRyZWVbY10uTGVuKQorICAgIC8qIFNlbmQgYSBjb2Rl IG9mIHRoZSBnaXZlbiB0cmVlLiBjIGFuZCB0cmVlIG11c3Qgbm90IGhhdmUgc2lkZSBlZmZlY3Rz ICovCisgCistI2Vsc2UgLyogREVCVUdfWkxJQiAqLworKyNlbHNlIC8qICFaTElCX0RFQlVHICov CisgIyAgZGVmaW5lIHNlbmRfY29kZShzLCBjLCB0cmVlKSBcCisgICAgICB7IGlmICh6X3ZlcmJv c2U+MikgZnByaW50ZihzdGRlcnIsIlxuY2QgJTNkICIsKGMpKTsgXAorICAgICAgICBzZW5kX2Jp dHMocywgdHJlZVtjXS5Db2RlLCB0cmVlW2NdLkxlbik7IH0KK0BAIC0xODcsNyArMTgwLDcgQEAg bG9jYWwgdm9pZCBnZW5fdHJlZXNfaGVhZGVyIE9GKCh2b2lkKSk7CisgICogU2VuZCBhIHZhbHVl IG9uIGEgZ2l2ZW4gbnVtYmVyIG9mIGJpdHMuCisgICogSU4gYXNzZXJ0aW9uOiBsZW5ndGggPD0g MTYgYW5kIHZhbHVlIGZpdHMgaW4gbGVuZ3RoIGJpdHMuCisgICovCistI2lmZGVmIERFQlVHX1pM SUIKKysjaWZkZWYgWkxJQl9ERUJVRworIGxvY2FsIHZvaWQgc2VuZF9iaXRzICAgICAgT0YoKGRl ZmxhdGVfc3RhdGUgKnMsIGludCB2YWx1ZSwgaW50IGxlbmd0aCkpOworIAorIGxvY2FsIHZvaWQg c2VuZF9iaXRzKHMsIHZhbHVlLCBsZW5ndGgpCitAQCAtMjEzLDEyICsyMDYsMTIgQEAgbG9jYWwg dm9pZCBzZW5kX2JpdHMocywgdmFsdWUsIGxlbmd0aCkKKyAgICAgICAgIHMtPmJpX3ZhbGlkICs9 IGxlbmd0aDsKKyAgICAgfQorIH0KKy0jZWxzZSAvKiAhREVCVUdfWkxJQiAqLworKyNlbHNlIC8q ICFaTElCX0RFQlVHICovCisgCisgI2RlZmluZSBzZW5kX2JpdHMocywgdmFsdWUsIGxlbmd0aCkg XAorIHsgaW50IGxlbiA9IGxlbmd0aDtcCisgICBpZiAocy0+YmlfdmFsaWQgPiAoaW50KUJ1Zl9z aXplIC0gbGVuKSB7XAorLSAgICBpbnQgdmFsID0gdmFsdWU7XAorKyAgICBpbnQgdmFsID0gKGlu dCl2YWx1ZTtcCisgICAgIHMtPmJpX2J1ZiB8PSAodXNoKXZhbCA8PCBzLT5iaV92YWxpZDtcCisg ICAgIHB1dF9zaG9ydChzLCBzLT5iaV9idWYpO1wKKyAgICAgcy0+YmlfYnVmID0gKHVzaCl2YWwg Pj4gKEJ1Zl9zaXplIC0gcy0+YmlfdmFsaWQpO1wKK0BAIC0yMjgsNyArMjIxLDcgQEAgbG9jYWwg dm9pZCBzZW5kX2JpdHMocywgdmFsdWUsIGxlbmd0aCkKKyAgICAgcy0+YmlfdmFsaWQgKz0gbGVu O1wKKyAgIH1cCisgfQorLSNlbmRpZiAvKiBERUJVR19aTElCICovCisrI2VuZGlmIC8qIFpMSUJf REVCVUcgKi8KKyAKKyAKKyAvKiB0aGUgYXJndW1lbnRzIG11c3Qgbm90IGhhdmUgc2lkZSBlZmZl Y3RzICovCitAQCAtMzIyLDcgKzMxNSw3IEBAIGxvY2FsIHZvaWQgdHJfc3RhdGljX2luaXQoKQor ICAqIEdlbmVyZXJhdGUgdGhlIGZpbGUgdHJlZXMuaCBkZXNjcmliaW5nIHRoZSBzdGF0aWMgdHJl ZXMuCisgICovCisgI2lmZGVmIEdFTl9UUkVFU19ICistIyAgaWZuZGVmIERFQlVHX1pMSUIKKysj ICBpZm5kZWYgWkxJQl9ERUJVRworICMgICAgaW5jbHVkZSA8c3RkaW8uaD4KKyAjICBlbmRpZgor IAorQEAgLTM5OSw4ICszOTIsNyBAQCB2b2lkIFpMSUJfSU5URVJOQUwgX3RyX2luaXQocykKKyAK KyAgICAgcy0+YmlfYnVmID0gMDsKKyAgICAgcy0+YmlfdmFsaWQgPSAwOworLSAgICBzLT5sYXN0 X2VvYl9sZW4gPSA4OyAvKiBlbm91Z2ggbG9va2FoZWFkIGZvciBpbmZsYXRlICovCistI2lmZGVm IERFQlVHX1pMSUIKKysjaWZkZWYgWkxJQl9ERUJVRworICAgICBzLT5jb21wcmVzc2VkX2xlbiA9 IDBMOworICAgICBzLT5iaXRzX3NlbnQgPSAwTDsKKyAjZW5kaWYKK0BAIC01MjgsMTIgKzUyMCwx MiBAQCBsb2NhbCB2b2lkIGdlbl9iaXRsZW4ocywgZGVzYykKKyAgICAgICAgIHhiaXRzID0gMDsK KyAgICAgICAgIGlmIChuID49IGJhc2UpIHhiaXRzID0gZXh0cmFbbi1iYXNlXTsKKyAgICAgICAg IGYgPSB0cmVlW25dLkZyZXE7CistICAgICAgICBzLT5vcHRfbGVuICs9ICh1bGcpZiAqIChiaXRz ICsgeGJpdHMpOworLSAgICAgICAgaWYgKHN0cmVlKSBzLT5zdGF0aWNfbGVuICs9ICh1bGcpZiAq IChzdHJlZVtuXS5MZW4gKyB4Yml0cyk7CisrICAgICAgICBzLT5vcHRfbGVuICs9ICh1bGcpZiAq ICh1bnNpZ25lZCkoYml0cyArIHhiaXRzKTsKKysgICAgICAgIGlmIChzdHJlZSkgcy0+c3RhdGlj X2xlbiArPSAodWxnKWYgKiAodW5zaWduZWQpKHN0cmVlW25dLkxlbiArIHhiaXRzKTsKKyAgICAg fQorICAgICBpZiAob3ZlcmZsb3cgPT0gMCkgcmV0dXJuOworIAorLSAgICBUcmFjZSgoc3RkZXJy LCJcbmJpdCBsZW5ndGggb3ZlcmZsb3dcbiIpKTsKKysgICAgVHJhY2V2KChzdGRlcnIsIlxuYml0 IGxlbmd0aCBvdmVyZmxvd1xuIikpOworICAgICAvKiBUaGlzIGhhcHBlbnMgZm9yIGV4YW1wbGUg b24gb2JqMiBhbmQgcGljIG9mIHRoZSBDYWxnYXJ5IGNvcnB1cyAqLworIAorICAgICAvKiBGaW5k IHRoZSBmaXJzdCBiaXQgbGVuZ3RoIHdoaWNoIGNvdWxkIGluY3JlYXNlOiAqLworQEAgLTU2MCw5 ICs1NTIsOCBAQCBsb2NhbCB2b2lkIGdlbl9iaXRsZW4ocywgZGVzYykKKyAgICAgICAgICAgICBt ID0gcy0+aGVhcFstLWhdOworICAgICAgICAgICAgIGlmIChtID4gbWF4X2NvZGUpIGNvbnRpbnVl OworICAgICAgICAgICAgIGlmICgodW5zaWduZWQpIHRyZWVbbV0uTGVuICE9ICh1bnNpZ25lZCkg Yml0cykgeworLSAgICAgICAgICAgICAgICBUcmFjZSgoc3RkZXJyLCJjb2RlICVkIGJpdHMgJWQt PiVkXG4iLCBtLCB0cmVlW21dLkxlbiwgYml0cykpOworLSAgICAgICAgICAgICAgICBzLT5vcHRf bGVuICs9ICgobG9uZyliaXRzIC0gKGxvbmcpdHJlZVttXS5MZW4pCistICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKihsb25nKXRyZWVbbV0uRnJlcTsKKysgICAgICAgICAgICAgICAgVHJh Y2V2KChzdGRlcnIsImNvZGUgJWQgYml0cyAlZC0+JWRcbiIsIG0sIHRyZWVbbV0uTGVuLCBiaXRz KSk7CisrICAgICAgICAgICAgICAgIHMtPm9wdF9sZW4gKz0gKCh1bGcpYml0cyAtIHRyZWVbbV0u TGVuKSAqIHRyZWVbbV0uRnJlcTsKKyAgICAgICAgICAgICAgICAgdHJlZVttXS5MZW4gPSAodXNo KWJpdHM7CisgICAgICAgICAgICAgfQorICAgICAgICAgICAgIG4tLTsKK0BAIC01ODQsNyArNTc1 LDcgQEAgbG9jYWwgdm9pZCBnZW5fY29kZXMgKHRyZWUsIG1heF9jb2RlLCBibF9jb3VudCkKKyAg ICAgdXNoZiAqYmxfY291bnQ7ICAgICAgICAgICAgLyogbnVtYmVyIG9mIGNvZGVzIGF0IGVhY2gg Yml0IGxlbmd0aCAqLworIHsKKyAgICAgdXNoIG5leHRfY29kZVtNQVhfQklUUysxXTsgLyogbmV4 dCBjb2RlIHZhbHVlIGZvciBlYWNoIGJpdCBsZW5ndGggKi8KKy0gICAgdXNoIGNvZGUgPSAwOyAg ICAgICAgICAgICAgLyogcnVubmluZyBjb2RlIHZhbHVlICovCisrICAgIHVuc2lnbmVkIGNvZGUg PSAwOyAgICAgICAgIC8qIHJ1bm5pbmcgY29kZSB2YWx1ZSAqLworICAgICBpbnQgYml0czsgICAg ICAgICAgICAgICAgICAvKiBiaXQgaW5kZXggKi8KKyAgICAgaW50IG47ICAgICAgICAgICAgICAg ICAgICAgLyogY29kZSBpbmRleCAqLworIAorQEAgLTU5Miw3ICs1ODMsOCBAQCBsb2NhbCB2b2lk IGdlbl9jb2RlcyAodHJlZSwgbWF4X2NvZGUsIGJsX2NvdW50KQorICAgICAgKiB3aXRob3V0IGJp dCByZXZlcnNhbC4KKyAgICAgICovCisgICAgIGZvciAoYml0cyA9IDE7IGJpdHMgPD0gTUFYX0JJ VFM7IGJpdHMrKykgeworLSAgICAgICAgbmV4dF9jb2RlW2JpdHNdID0gY29kZSA9IChjb2RlICsg YmxfY291bnRbYml0cy0xXSkgPDwgMTsKKysgICAgICAgIGNvZGUgPSAoY29kZSArIGJsX2NvdW50 W2JpdHMtMV0pIDw8IDE7CisrICAgICAgICBuZXh0X2NvZGVbYml0c10gPSAodXNoKWNvZGU7Cisg ICAgIH0KKyAgICAgLyogQ2hlY2sgdGhhdCB0aGUgYml0IGNvdW50cyBpbiBibF9jb3VudCBhcmUg Y29uc2lzdGVudC4gVGhlIGxhc3QgY29kZQorICAgICAgKiBtdXN0IGJlIGFsbCBvbmVzLgorQEAg LTYwNSw3ICs1OTcsNyBAQCBsb2NhbCB2b2lkIGdlbl9jb2RlcyAodHJlZSwgbWF4X2NvZGUsIGJs X2NvdW50KQorICAgICAgICAgaW50IGxlbiA9IHRyZWVbbl0uTGVuOworICAgICAgICAgaWYgKGxl biA9PSAwKSBjb250aW51ZTsKKyAgICAgICAgIC8qIE5vdyByZXZlcnNlIHRoZSBiaXRzICovCist ICAgICAgICB0cmVlW25dLkNvZGUgPSBiaV9yZXZlcnNlKG5leHRfY29kZVtsZW5dKyssIGxlbik7 CisrICAgICAgICB0cmVlW25dLkNvZGUgPSAodXNoKWJpX3JldmVyc2UobmV4dF9jb2RlW2xlbl0r KywgbGVuKTsKKyAKKyAgICAgICAgIFRyYWNlY3YodHJlZSAhPSBzdGF0aWNfbHRyZWUsIChzdGRl cnIsIlxubiAlM2QgJWMgbCAlMmQgYyAlNHggKCV4KSAiLAorICAgICAgICAgICAgICBuLCAoaXNn cmFwaChuKSA/IG4gOiAnICcpLCBsZW4sIHRyZWVbbl0uQ29kZSwgbmV4dF9jb2RlW2xlbl0tMSkp OworQEAgLTgyNyw3ICs4MTksNyBAQCBsb2NhbCBpbnQgYnVpbGRfYmxfdHJlZShzKQorICAgICAg ICAgaWYgKHMtPmJsX3RyZWVbYmxfb3JkZXJbbWF4X2JsaW5kZXhdXS5MZW4gIT0gMCkgYnJlYWs7 CisgICAgIH0KKyAgICAgLyogVXBkYXRlIG9wdF9sZW4gdG8gaW5jbHVkZSB0aGUgYml0IGxlbmd0 aCB0cmVlIGFuZCBjb3VudHMgKi8KKy0gICAgcy0+b3B0X2xlbiArPSAzKihtYXhfYmxpbmRleCsx KSArIDUrNSs0OworKyAgICBzLT5vcHRfbGVuICs9IDMqKCh1bGcpbWF4X2JsaW5kZXgrMSkgKyA1 KzUrNDsKKyAgICAgVHJhY2V2KChzdGRlcnIsICJcbmR5biB0cmVlczogZHluICVsZCwgc3RhdCAl bGQiLAorICAgICAgICAgICAgIHMtPm9wdF9sZW4sIHMtPnN0YXRpY19sZW4pKTsKKyAKK0BAIC04 NzUsNTIgKzg2Nyw0NiBAQCB2b2lkIFpMSUJfSU5URVJOQUwgX3RyX3N0b3JlZF9ibG9jayhzLCBi dWYsIHN0b3JlZF9sZW4sIGxhc3QpCisgICAgIGludCBsYXN0OyAgICAgICAgIC8qIG9uZSBpZiB0 aGlzIGlzIHRoZSBsYXN0IGJsb2NrIGZvciBhIGZpbGUgKi8KKyB7CisgICAgIHNlbmRfYml0cyhz LCAoU1RPUkVEX0JMT0NLPDwxKStsYXN0LCAzKTsgICAgLyogc2VuZCBibG9jayB0eXBlICovCist I2lmZGVmIERFQlVHX1pMSUIKKysgICAgYmlfd2luZHVwKHMpOyAgICAgICAgLyogYWxpZ24gb24g Ynl0ZSBib3VuZGFyeSAqLworKyAgICBwdXRfc2hvcnQocywgKHVzaClzdG9yZWRfbGVuKTsKKysg ICAgcHV0X3Nob3J0KHMsICh1c2gpfnN0b3JlZF9sZW4pOworKyAgICB6bWVtY3B5KHMtPnBlbmRp bmdfYnVmICsgcy0+cGVuZGluZywgKEJ5dGVmICopYnVmLCBzdG9yZWRfbGVuKTsKKysgICAgcy0+ cGVuZGluZyArPSBzdG9yZWRfbGVuOworKyNpZmRlZiBaTElCX0RFQlVHCisgICAgIHMtPmNvbXBy ZXNzZWRfbGVuID0gKHMtPmNvbXByZXNzZWRfbGVuICsgMyArIDcpICYgKHVsZyl+N0w7CisgICAg IHMtPmNvbXByZXNzZWRfbGVuICs9IChzdG9yZWRfbGVuICsgNCkgPDwgMzsKKysgICAgcy0+Yml0 c19zZW50ICs9IDIqMTY7CisrICAgIHMtPmJpdHNfc2VudCArPSBzdG9yZWRfbGVuPDwzOworICNl bmRpZgorLSAgICBjb3B5X2Jsb2NrKHMsIGJ1ZiwgKHVuc2lnbmVkKXN0b3JlZF9sZW4sIDEpOyAv KiB3aXRoIGhlYWRlciAqLworK30KKysKKysvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKysgKiBGbHVz aCB0aGUgYml0cyBpbiB0aGUgYml0IGJ1ZmZlciB0byBwZW5kaW5nIG91dHB1dCAobGVhdmVzIGF0 IG1vc3QgNyBiaXRzKQorKyAqLworK3ZvaWQgWkxJQl9JTlRFUk5BTCBfdHJfZmx1c2hfYml0cyhz KQorKyAgICBkZWZsYXRlX3N0YXRlICpzOworK3sKKysgICAgYmlfZmx1c2gocyk7CisgfQorIAor IC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQorICAqIFNlbmQgb25lIGVtcHR5IHN0YXRpYyBibG9jayB0 byBnaXZlIGVub3VnaCBsb29rYWhlYWQgZm9yIGluZmxhdGUuCisgICogVGhpcyB0YWtlcyAxMCBi aXRzLCBvZiB3aGljaCA3IG1heSByZW1haW4gaW4gdGhlIGJpdCBidWZmZXIuCistICogVGhlIGN1 cnJlbnQgaW5mbGF0ZSBjb2RlIHJlcXVpcmVzIDkgYml0cyBvZiBsb29rYWhlYWQuIElmIHRoZQor LSAqIGxhc3QgdHdvIGNvZGVzIGZvciB0aGUgcHJldmlvdXMgYmxvY2sgKHJlYWwgY29kZSBwbHVz IEVPQikgd2VyZSBjb2RlZAorLSAqIG9uIDUgYml0cyBvciBsZXNzLCBpbmZsYXRlIG1heSBoYXZl IG9ubHkgNSszIGJpdHMgb2YgbG9va2FoZWFkIHRvIGRlY29kZQorLSAqIHRoZSBsYXN0IHJlYWwg Y29kZS4gSW4gdGhpcyBjYXNlIHdlIHNlbmQgdHdvIGVtcHR5IHN0YXRpYyBibG9ja3MgaW5zdGVh ZAorLSAqIG9mIG9uZS4gKFRoZXJlIGFyZSBubyBwcm9ibGVtcyBpZiB0aGUgcHJldmlvdXMgYmxv Y2sgaXMgc3RvcmVkIG9yIGZpeGVkLikKKy0gKiBUbyBzaW1wbGlmeSB0aGUgY29kZSwgd2UgYXNz dW1lIHRoZSB3b3JzdCBjYXNlIG9mIGxhc3QgcmVhbCBjb2RlIGVuY29kZWQKKy0gKiBvbiBvbmUg Yml0IG9ubHkuCisgICovCisgdm9pZCBaTElCX0lOVEVSTkFMIF90cl9hbGlnbihzKQorICAgICBk ZWZsYXRlX3N0YXRlICpzOworIHsKKyAgICAgc2VuZF9iaXRzKHMsIFNUQVRJQ19UUkVFUzw8MSwg Myk7CisgICAgIHNlbmRfY29kZShzLCBFTkRfQkxPQ0ssIHN0YXRpY19sdHJlZSk7CistI2lmZGVm IERFQlVHX1pMSUIKKysjaWZkZWYgWkxJQl9ERUJVRworICAgICBzLT5jb21wcmVzc2VkX2xlbiAr PSAxMEw7IC8qIDMgZm9yIGJsb2NrIHR5cGUsIDcgZm9yIEVPQiAqLworICNlbmRpZgorICAgICBi aV9mbHVzaChzKTsKKy0gICAgLyogT2YgdGhlIDEwIGJpdHMgZm9yIHRoZSBlbXB0eSBibG9jaywg d2UgaGF2ZSBhbHJlYWR5IHNlbnQKKy0gICAgICogKDEwIC0gYmlfdmFsaWQpIGJpdHMuIFRoZSBs b29rYWhlYWQgZm9yIHRoZSBsYXN0IHJlYWwgY29kZSAoYmVmb3JlCistICAgICAqIHRoZSBFT0Ig b2YgdGhlIHByZXZpb3VzIGJsb2NrKSB3YXMgdGh1cyBhdCBsZWFzdCBvbmUgcGx1cyB0aGUgbGVu Z3RoCistICAgICAqIG9mIHRoZSBFT0IgcGx1cyB3aGF0IHdlIGhhdmUganVzdCBzZW50IG9mIHRo ZSBlbXB0eSBzdGF0aWMgYmxvY2suCistICAgICAqLworLSAgICBpZiAoMSArIHMtPmxhc3RfZW9i X2xlbiArIDEwIC0gcy0+YmlfdmFsaWQgPCA5KSB7CistICAgICAgICBzZW5kX2JpdHMocywgU1RB VElDX1RSRUVTPDwxLCAzKTsKKy0gICAgICAgIHNlbmRfY29kZShzLCBFTkRfQkxPQ0ssIHN0YXRp Y19sdHJlZSk7CistI2lmZGVmIERFQlVHX1pMSUIKKy0gICAgICAgIHMtPmNvbXByZXNzZWRfbGVu ICs9IDEwTDsKKy0jZW5kaWYKKy0gICAgICAgIGJpX2ZsdXNoKHMpOworLSAgICB9CistICAgIHMt Pmxhc3RfZW9iX2xlbiA9IDc7CisgfQorIAorIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAqIERl dGVybWluZSB0aGUgYmVzdCBlbmNvZGluZyBmb3IgdGhlIGN1cnJlbnQgYmxvY2s6IGR5bmFtaWMg dHJlZXMsIHN0YXRpYworLSAqIHRyZWVzIG9yIHN0b3JlLCBhbmQgb3V0cHV0IHRoZSBlbmNvZGVk IGJsb2NrIHRvIHRoZSB6aXAgZmlsZS4KKysgKiB0cmVlcyBvciBzdG9yZSwgYW5kIHdyaXRlIG91 dCB0aGUgZW5jb2RlZCBibG9jay4KKyAgKi8KKyB2b2lkIFpMSUJfSU5URVJOQUwgX3RyX2ZsdXNo X2Jsb2NrKHMsIGJ1Ziwgc3RvcmVkX2xlbiwgbGFzdCkKKyAgICAgZGVmbGF0ZV9zdGF0ZSAqczsK K0BAIC05OTAsMTYgKzk3NiwxOCBAQCB2b2lkIFpMSUJfSU5URVJOQUwgX3RyX2ZsdXNoX2Jsb2Nr KHMsIGJ1Ziwgc3RvcmVkX2xlbiwgbGFzdCkKKyAgICAgfSBlbHNlIGlmIChzLT5zdHJhdGVneSA9 PSBaX0ZJWEVEIHx8IHN0YXRpY19sZW5iID09IG9wdF9sZW5iKSB7CisgI2VuZGlmCisgICAgICAg ICBzZW5kX2JpdHMocywgKFNUQVRJQ19UUkVFUzw8MSkrbGFzdCwgMyk7CistICAgICAgICBjb21w cmVzc19ibG9jayhzLCAoY3RfZGF0YSAqKXN0YXRpY19sdHJlZSwgKGN0X2RhdGEgKilzdGF0aWNf ZHRyZWUpOworLSNpZmRlZiBERUJVR19aTElCCisrICAgICAgICBjb21wcmVzc19ibG9jayhzLCAo Y29uc3QgY3RfZGF0YSAqKXN0YXRpY19sdHJlZSwKKysgICAgICAgICAgICAgICAgICAgICAgIChj b25zdCBjdF9kYXRhICopc3RhdGljX2R0cmVlKTsKKysjaWZkZWYgWkxJQl9ERUJVRworICAgICAg ICAgcy0+Y29tcHJlc3NlZF9sZW4gKz0gMyArIHMtPnN0YXRpY19sZW47CisgI2VuZGlmCisgICAg IH0gZWxzZSB7CisgICAgICAgICBzZW5kX2JpdHMocywgKERZTl9UUkVFUzw8MSkrbGFzdCwgMyk7 CisgICAgICAgICBzZW5kX2FsbF90cmVlcyhzLCBzLT5sX2Rlc2MubWF4X2NvZGUrMSwgcy0+ZF9k ZXNjLm1heF9jb2RlKzEsCisgICAgICAgICAgICAgICAgICAgICAgICBtYXhfYmxpbmRleCsxKTsK Ky0gICAgICAgIGNvbXByZXNzX2Jsb2NrKHMsIChjdF9kYXRhICopcy0+ZHluX2x0cmVlLCAoY3Rf ZGF0YSAqKXMtPmR5bl9kdHJlZSk7CistI2lmZGVmIERFQlVHX1pMSUIKKysgICAgICAgIGNvbXBy ZXNzX2Jsb2NrKHMsIChjb25zdCBjdF9kYXRhICopcy0+ZHluX2x0cmVlLAorKyAgICAgICAgICAg ICAgICAgICAgICAgKGNvbnN0IGN0X2RhdGEgKilzLT5keW5fZHRyZWUpOworKyNpZmRlZiBaTElC X0RFQlVHCisgICAgICAgICBzLT5jb21wcmVzc2VkX2xlbiArPSAzICsgcy0+b3B0X2xlbjsKKyAj ZW5kaWYKKyAgICAgfQorQEAgLTEwMTEsNyArOTk5LDcgQEAgdm9pZCBaTElCX0lOVEVSTkFMIF90 cl9mbHVzaF9ibG9jayhzLCBidWYsIHN0b3JlZF9sZW4sIGxhc3QpCisgCisgICAgIGlmIChsYXN0 KSB7CisgICAgICAgICBiaV93aW5kdXAocyk7CistI2lmZGVmIERFQlVHX1pMSUIKKysjaWZkZWYg WkxJQl9ERUJVRworICAgICAgICAgcy0+Y29tcHJlc3NlZF9sZW4gKz0gNzsgIC8qIGFsaWduIG9u IGJ5dGUgYm91bmRhcnkgKi8KKyAjZW5kaWYKKyAgICAgfQorQEAgLTEwNzUsOCArMTA2Myw4IEBA IGludCBaTElCX0lOVEVSTkFMIF90cl90YWxseSAocywgZGlzdCwgbGMpCisgICovCisgbG9jYWwg dm9pZCBjb21wcmVzc19ibG9jayhzLCBsdHJlZSwgZHRyZWUpCisgICAgIGRlZmxhdGVfc3RhdGUg KnM7CistICAgIGN0X2RhdGEgKmx0cmVlOyAvKiBsaXRlcmFsIHRyZWUgKi8KKy0gICAgY3RfZGF0 YSAqZHRyZWU7IC8qIGRpc3RhbmNlIHRyZWUgKi8KKysgICAgY29uc3QgY3RfZGF0YSAqbHRyZWU7 IC8qIGxpdGVyYWwgdHJlZSAqLworKyAgICBjb25zdCBjdF9kYXRhICpkdHJlZTsgLyogZGlzdGFu Y2UgdHJlZSAqLworIHsKKyAgICAgdW5zaWduZWQgZGlzdDsgICAgICAvKiBkaXN0YW5jZSBvZiBt YXRjaGVkIHN0cmluZyAqLworICAgICBpbnQgbGM7ICAgICAgICAgICAgIC8qIG1hdGNoIGxlbmd0 aCBvciB1bm1hdGNoZWQgY2hhciAoaWYgZGlzdCA9PSAwKSAqLworQEAgLTExMDYsNyArMTA5NCw3 IEBAIGxvY2FsIHZvaWQgY29tcHJlc3NfYmxvY2socywgbHRyZWUsIGR0cmVlKQorICAgICAgICAg ICAgIHNlbmRfY29kZShzLCBjb2RlLCBkdHJlZSk7ICAgICAgIC8qIHNlbmQgdGhlIGRpc3RhbmNl IGNvZGUgKi8KKyAgICAgICAgICAgICBleHRyYSA9IGV4dHJhX2RiaXRzW2NvZGVdOworICAgICAg ICAgICAgIGlmIChleHRyYSAhPSAwKSB7CistICAgICAgICAgICAgICAgIGRpc3QgLT0gYmFzZV9k aXN0W2NvZGVdOworKyAgICAgICAgICAgICAgICBkaXN0IC09ICh1bnNpZ25lZCliYXNlX2Rpc3Rb Y29kZV07CisgICAgICAgICAgICAgICAgIHNlbmRfYml0cyhzLCBkaXN0LCBleHRyYSk7ICAgLyog c2VuZCB0aGUgZXh0cmEgZGlzdGFuY2UgYml0cyAqLworICAgICAgICAgICAgIH0KKyAgICAgICAg IH0gLyogbGl0ZXJhbCBvciBtYXRjaCBwYWlyID8gKi8KK0BAIC0xMTE4LDcgKzExMDYsNiBAQCBs b2NhbCB2b2lkIGNvbXByZXNzX2Jsb2NrKHMsIGx0cmVlLCBkdHJlZSkKKyAgICAgfSB3aGlsZSAo bHggPCBzLT5sYXN0X2xpdCk7CisgCisgICAgIHNlbmRfY29kZShzLCBFTkRfQkxPQ0ssIGx0cmVl KTsKKy0gICAgcy0+bGFzdF9lb2JfbGVuID0gbHRyZWVbRU5EX0JMT0NLXS5MZW47CisgfQorIAor IC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQorQEAgLTEyMTAsMzUgKzExOTcsNyBAQCBsb2NhbCB2b2lk IGJpX3dpbmR1cChzKQorICAgICB9CisgICAgIHMtPmJpX2J1ZiA9IDA7CisgICAgIHMtPmJpX3Zh bGlkID0gMDsKKy0jaWZkZWYgREVCVUdfWkxJQgorKyNpZmRlZiBaTElCX0RFQlVHCisgICAgIHMt PmJpdHNfc2VudCA9IChzLT5iaXRzX3NlbnQrNykgJiB+NzsKKyAjZW5kaWYKKyB9CistCistLyog PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CistICogQ29weSBhIHN0b3JlZCBibG9jaywgc3RvcmluZyBmaXJz dCB0aGUgbGVuZ3RoIGFuZCBpdHMKKy0gKiBvbmUncyBjb21wbGVtZW50IGlmIHJlcXVlc3RlZC4K Ky0gKi8KKy1sb2NhbCB2b2lkIGNvcHlfYmxvY2socywgYnVmLCBsZW4sIGhlYWRlcikKKy0gICAg ZGVmbGF0ZV9zdGF0ZSAqczsKKy0gICAgY2hhcmYgICAgKmJ1ZjsgICAgLyogdGhlIGlucHV0IGRh dGEgKi8KKy0gICAgdW5zaWduZWQgbGVuOyAgICAgLyogaXRzIGxlbmd0aCAqLworLSAgICBpbnQg ICAgICBoZWFkZXI7ICAvKiB0cnVlIGlmIGJsb2NrIGhlYWRlciBtdXN0IGJlIHdyaXR0ZW4gKi8K Ky17CistICAgIGJpX3dpbmR1cChzKTsgICAgICAgIC8qIGFsaWduIG9uIGJ5dGUgYm91bmRhcnkg Ki8KKy0gICAgcy0+bGFzdF9lb2JfbGVuID0gODsgLyogZW5vdWdoIGxvb2thaGVhZCBmb3IgaW5m bGF0ZSAqLworLQorLSAgICBpZiAoaGVhZGVyKSB7CistICAgICAgICBwdXRfc2hvcnQocywgKHVz aClsZW4pOworLSAgICAgICAgcHV0X3Nob3J0KHMsICh1c2gpfmxlbik7CistI2lmZGVmIERFQlVH X1pMSUIKKy0gICAgICAgIHMtPmJpdHNfc2VudCArPSAyKjE2OworLSNlbmRpZgorLSAgICB9Cist I2lmZGVmIERFQlVHX1pMSUIKKy0gICAgcy0+Yml0c19zZW50ICs9ICh1bGcpbGVuPDwzOworLSNl bmRpZgorLSAgICB3aGlsZSAobGVuLS0pIHsKKy0gICAgICAgIHB1dF9ieXRlKHMsICpidWYrKyk7 CistICAgIH0KKy19CitkaWZmIC0tZ2l0IGEvY29tMzIvbGliL3psaWIvdW5jb21wci5jIGIvY29t MzIvbGliL3psaWIvdW5jb21wci5jCitpbmRleCBhZDk4YmUzYS4uZjAzYTFhODYgMTAwNjQ0Cist LS0gYS9jb20zMi9saWIvemxpYi91bmNvbXByLmMKKysrKyBiL2NvbTMyL2xpYi96bGliL3VuY29t cHIuYworQEAgLTEsNSArMSw1IEBACisgLyogdW5jb21wci5jIC0tIGRlY29tcHJlc3MgYSBtZW1v cnkgYnVmZmVyCistICogQ29weXJpZ2h0IChDKSAxOTk1LTIwMDMsIDIwMTAgSmVhbi1sb3VwIEdh aWxseS4KKysgKiBDb3B5cmlnaHQgKEMpIDE5OTUtMjAwMywgMjAxMCwgMjAxNCwgMjAxNiBKZWFu LWxvdXAgR2FpbGx5LCBNYXJrIEFkbGVyCisgICogRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0 aW9uIGFuZCB1c2UsIHNlZSBjb3B5cmlnaHQgbm90aWNlIGluIHpsaWIuaAorICAqLworIAorQEAg LTksNTEgKzksODUgQEAKKyAjaW5jbHVkZSAiemxpYi5oIgorIAorIC8qID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQorLSAgICAgRGVjb21wcmVzc2VzIHRoZSBzb3VyY2UgYnVmZmVyIGludG8gdGhlIGRlc3Rp bmF0aW9uIGJ1ZmZlci4gIHNvdXJjZUxlbiBpcworLSAgIHRoZSBieXRlIGxlbmd0aCBvZiB0aGUg c291cmNlIGJ1ZmZlci4gVXBvbiBlbnRyeSwgZGVzdExlbiBpcyB0aGUgdG90YWwKKy0gICBzaXpl IG9mIHRoZSBkZXN0aW5hdGlvbiBidWZmZXIsIHdoaWNoIG11c3QgYmUgbGFyZ2UgZW5vdWdoIHRv IGhvbGQgdGhlCistICAgZW50aXJlIHVuY29tcHJlc3NlZCBkYXRhLiAoVGhlIHNpemUgb2YgdGhl IHVuY29tcHJlc3NlZCBkYXRhIG11c3QgaGF2ZQorLSAgIGJlZW4gc2F2ZWQgcHJldmlvdXNseSBi eSB0aGUgY29tcHJlc3NvciBhbmQgdHJhbnNtaXR0ZWQgdG8gdGhlIGRlY29tcHJlc3NvcgorLSAg IGJ5IHNvbWUgbWVjaGFuaXNtIG91dHNpZGUgdGhlIHNjb3BlIG9mIHRoaXMgY29tcHJlc3Npb24g bGlicmFyeS4pCistICAgVXBvbiBleGl0LCBkZXN0TGVuIGlzIHRoZSBhY3R1YWwgc2l6ZSBvZiB0 aGUgY29tcHJlc3NlZCBidWZmZXIuCisrICAgICBEZWNvbXByZXNzZXMgdGhlIHNvdXJjZSBidWZm ZXIgaW50byB0aGUgZGVzdGluYXRpb24gYnVmZmVyLiAgKnNvdXJjZUxlbiBpcworKyAgIHRoZSBi eXRlIGxlbmd0aCBvZiB0aGUgc291cmNlIGJ1ZmZlci4gVXBvbiBlbnRyeSwgKmRlc3RMZW4gaXMg dGhlIHRvdGFsIHNpemUKKysgICBvZiB0aGUgZGVzdGluYXRpb24gYnVmZmVyLCB3aGljaCBtdXN0 IGJlIGxhcmdlIGVub3VnaCB0byBob2xkIHRoZSBlbnRpcmUKKysgICB1bmNvbXByZXNzZWQgZGF0 YS4gKFRoZSBzaXplIG9mIHRoZSB1bmNvbXByZXNzZWQgZGF0YSBtdXN0IGhhdmUgYmVlbiBzYXZl ZAorKyAgIHByZXZpb3VzbHkgYnkgdGhlIGNvbXByZXNzb3IgYW5kIHRyYW5zbWl0dGVkIHRvIHRo ZSBkZWNvbXByZXNzb3IgYnkgc29tZQorKyAgIG1lY2hhbmlzbSBvdXRzaWRlIHRoZSBzY29wZSBv ZiB0aGlzIGNvbXByZXNzaW9uIGxpYnJhcnkuKSBVcG9uIGV4aXQsCisrICAgKmRlc3RMZW4gaXMg dGhlIHNpemUgb2YgdGhlIGRlY29tcHJlc3NlZCBkYXRhIGFuZCAqc291cmNlTGVuIGlzIHRoZSBu dW1iZXIKKysgICBvZiBzb3VyY2UgYnl0ZXMgY29uc3VtZWQuIFVwb24gcmV0dXJuLCBzb3VyY2Ug KyAqc291cmNlTGVuIHBvaW50cyB0byB0aGUKKysgICBmaXJzdCB1bnVzZWQgaW5wdXQgYnl0ZS4K KyAKKy0gICAgIHVuY29tcHJlc3MgcmV0dXJucyBaX09LIGlmIHN1Y2Nlc3MsIFpfTUVNX0VSUk9S IGlmIHRoZXJlIHdhcyBub3QKKy0gICBlbm91Z2ggbWVtb3J5LCBaX0JVRl9FUlJPUiBpZiB0aGVy ZSB3YXMgbm90IGVub3VnaCByb29tIGluIHRoZSBvdXRwdXQKKy0gICBidWZmZXIsIG9yIFpfREFU QV9FUlJPUiBpZiB0aGUgaW5wdXQgZGF0YSB3YXMgY29ycnVwdGVkLgorKyAgICAgdW5jb21wcmVz cyByZXR1cm5zIFpfT0sgaWYgc3VjY2VzcywgWl9NRU1fRVJST1IgaWYgdGhlcmUgd2FzIG5vdCBl bm91Z2gKKysgICBtZW1vcnksIFpfQlVGX0VSUk9SIGlmIHRoZXJlIHdhcyBub3QgZW5vdWdoIHJv b20gaW4gdGhlIG91dHB1dCBidWZmZXIsIG9yCisrICAgWl9EQVRBX0VSUk9SIGlmIHRoZSBpbnB1 dCBkYXRhIHdhcyBjb3JydXB0ZWQsIGluY2x1ZGluZyBpZiB0aGUgaW5wdXQgZGF0YSBpcworKyAg IGFuIGluY29tcGxldGUgemxpYiBzdHJlYW0uCisgKi8KKy1pbnQgWkVYUE9SVCB1bmNvbXByZXNz IChkZXN0LCBkZXN0TGVuLCBzb3VyY2UsIHNvdXJjZUxlbikKKytpbnQgWkVYUE9SVCB1bmNvbXBy ZXNzMiAoZGVzdCwgZGVzdExlbiwgc291cmNlLCBzb3VyY2VMZW4pCisgICAgIEJ5dGVmICpkZXN0 OworICAgICB1TG9uZ2YgKmRlc3RMZW47CisgICAgIGNvbnN0IEJ5dGVmICpzb3VyY2U7CistICAg IHVMb25nIHNvdXJjZUxlbjsKKysgICAgdUxvbmcgKnNvdXJjZUxlbjsKKyB7CisgICAgIHpfc3Ry ZWFtIHN0cmVhbTsKKyAgICAgaW50IGVycjsKKysgICAgY29uc3QgdUludCBtYXggPSAodUludCkt MTsKKysgICAgdUxvbmcgbGVuLCBsZWZ0OworKyAgICBCeXRlIGJ1ZlsxXTsgICAgLyogZm9yIGRl dGVjdGlvbiBvZiBpbmNvbXBsZXRlIHN0cmVhbSB3aGVuICpkZXN0TGVuID09IDAgKi8KKyAKKy0g ICAgc3RyZWFtLm5leHRfaW4gPSAoQnl0ZWYqKXNvdXJjZTsKKy0gICAgc3RyZWFtLmF2YWlsX2lu ID0gKHVJbnQpc291cmNlTGVuOworLSAgICAvKiBDaGVjayBmb3Igc291cmNlID4gNjRLIG9uIDE2 LWJpdCBtYWNoaW5lOiAqLworLSAgICBpZiAoKHVMb25nKXN0cmVhbS5hdmFpbF9pbiAhPSBzb3Vy Y2VMZW4pIHJldHVybiBaX0JVRl9FUlJPUjsKKy0KKy0gICAgc3RyZWFtLm5leHRfb3V0ID0gZGVz dDsKKy0gICAgc3RyZWFtLmF2YWlsX291dCA9ICh1SW50KSpkZXN0TGVuOworLSAgICBpZiAoKHVM b25nKXN0cmVhbS5hdmFpbF9vdXQgIT0gKmRlc3RMZW4pIHJldHVybiBaX0JVRl9FUlJPUjsKKysg ICAgbGVuID0gKnNvdXJjZUxlbjsKKysgICAgaWYgKCpkZXN0TGVuKSB7CisrICAgICAgICBsZWZ0 ID0gKmRlc3RMZW47CisrICAgICAgICAqZGVzdExlbiA9IDA7CisrICAgIH0KKysgICAgZWxzZSB7 CisrICAgICAgICBsZWZ0ID0gMTsKKysgICAgICAgIGRlc3QgPSBidWY7CisrICAgIH0KKyAKKysg ICAgc3RyZWFtLm5leHRfaW4gPSAoel9jb25zdCBCeXRlZiAqKXNvdXJjZTsKKysgICAgc3RyZWFt LmF2YWlsX2luID0gMDsKKyAgICAgc3RyZWFtLnphbGxvYyA9IChhbGxvY19mdW5jKTA7CisgICAg IHN0cmVhbS56ZnJlZSA9IChmcmVlX2Z1bmMpMDsKKysgICAgc3RyZWFtLm9wYXF1ZSA9ICh2b2lk cGYpMDsKKyAKKyAgICAgZXJyID0gaW5mbGF0ZUluaXQoJnN0cmVhbSk7CisgICAgIGlmIChlcnIg IT0gWl9PSykgcmV0dXJuIGVycjsKKyAKKy0gICAgZXJyID0gaW5mbGF0ZSgmc3RyZWFtLCBaX0ZJ TklTSCk7CistICAgIGlmIChlcnIgIT0gWl9TVFJFQU1fRU5EKSB7CistICAgICAgICBpbmZsYXRl RW5kKCZzdHJlYW0pOworLSAgICAgICAgaWYgKGVyciA9PSBaX05FRURfRElDVCB8fCAoZXJyID09 IFpfQlVGX0VSUk9SICYmIHN0cmVhbS5hdmFpbF9pbiA9PSAwKSkKKy0gICAgICAgICAgICByZXR1 cm4gWl9EQVRBX0VSUk9SOworLSAgICAgICAgcmV0dXJuIGVycjsKKy0gICAgfQorLSAgICAqZGVz dExlbiA9IHN0cmVhbS50b3RhbF9vdXQ7CistCistICAgIGVyciA9IGluZmxhdGVFbmQoJnN0cmVh bSk7CistICAgIHJldHVybiBlcnI7CisrICAgIHN0cmVhbS5uZXh0X291dCA9IGRlc3Q7CisrICAg IHN0cmVhbS5hdmFpbF9vdXQgPSAwOworKworKyAgICBkbyB7CisrICAgICAgICBpZiAoc3RyZWFt LmF2YWlsX291dCA9PSAwKSB7CisrICAgICAgICAgICAgc3RyZWFtLmF2YWlsX291dCA9IGxlZnQg PiAodUxvbmcpbWF4ID8gbWF4IDogKHVJbnQpbGVmdDsKKysgICAgICAgICAgICBsZWZ0IC09IHN0 cmVhbS5hdmFpbF9vdXQ7CisrICAgICAgICB9CisrICAgICAgICBpZiAoc3RyZWFtLmF2YWlsX2lu ID09IDApIHsKKysgICAgICAgICAgICBzdHJlYW0uYXZhaWxfaW4gPSBsZW4gPiAodUxvbmcpbWF4 ID8gbWF4IDogKHVJbnQpbGVuOworKyAgICAgICAgICAgIGxlbiAtPSBzdHJlYW0uYXZhaWxfaW47 CisrICAgICAgICB9CisrICAgICAgICBlcnIgPSBpbmZsYXRlKCZzdHJlYW0sIFpfTk9fRkxVU0gp OworKyAgICB9IHdoaWxlIChlcnIgPT0gWl9PSyk7CisrCisrICAgICpzb3VyY2VMZW4gLT0gbGVu ICsgc3RyZWFtLmF2YWlsX2luOworKyAgICBpZiAoZGVzdCAhPSBidWYpCisrICAgICAgICAqZGVz dExlbiA9IHN0cmVhbS50b3RhbF9vdXQ7CisrICAgIGVsc2UgaWYgKHN0cmVhbS50b3RhbF9vdXQg JiYgZXJyID09IFpfQlVGX0VSUk9SKQorKyAgICAgICAgbGVmdCA9IDE7CisrCisrICAgIGluZmxh dGVFbmQoJnN0cmVhbSk7CisrICAgIHJldHVybiBlcnIgPT0gWl9TVFJFQU1fRU5EID8gWl9PSyA6 CisrICAgICAgICAgICBlcnIgPT0gWl9ORUVEX0RJQ1QgPyBaX0RBVEFfRVJST1IgIDoKKysgICAg ICAgICAgIGVyciA9PSBaX0JVRl9FUlJPUiAmJiBsZWZ0ICsgc3RyZWFtLmF2YWlsX291dCA/IFpf REFUQV9FUlJPUiA6CisrICAgICAgICAgICBlcnI7CisrfQorKworK2ludCBaRVhQT1JUIHVuY29t cHJlc3MgKGRlc3QsIGRlc3RMZW4sIHNvdXJjZSwgc291cmNlTGVuKQorKyAgICBCeXRlZiAqZGVz dDsKKysgICAgdUxvbmdmICpkZXN0TGVuOworKyAgICBjb25zdCBCeXRlZiAqc291cmNlOworKyAg ICB1TG9uZyBzb3VyY2VMZW47CisreworKyAgICByZXR1cm4gdW5jb21wcmVzczIoZGVzdCwgZGVz dExlbiwgc291cmNlLCAmc291cmNlTGVuKTsKKyB9CitkaWZmIC0tZ2l0IGEvY29tMzIvbGliL3ps aWIvemxpYi4zIGIvY29tMzIvbGliL3psaWIvemxpYi4zCitpbmRleCAyN2FkYzRjZC4uYmRhNGVi MDcgMTAwNjQ0CistLS0gYS9jb20zMi9saWIvemxpYi96bGliLjMKKysrKyBiL2NvbTMyL2xpYi96 bGliL3psaWIuMworQEAgLTEsNCArMSw0IEBACistLlRIIFpMSUIgMyAiMTkgQXByIDIwMTAiCisr LlRIIFpMSUIgMyAiMTUgSmFuIDIwMTciCisgLlNIIE5BTUUKKyB6bGliIFwtIGNvbXByZXNzaW9u L2RlY29tcHJlc3Npb24gbGlicmFyeQorIC5TSCBTWU5PUFNJUworQEAgLTM2LDkgKzM2LDkgQEAg QWxsIGZ1bmN0aW9ucyBvZiB0aGUgY29tcHJlc3Npb24gbGlicmFyeSBhcmUgZG9jdW1lbnRlZCBp biB0aGUgZmlsZQorIC5JUiB6bGliLmggLgorIFRoZSBkaXN0cmlidXRpb24gc291cmNlIGluY2x1 ZGVzIGV4YW1wbGVzIG9mIHVzZSBvZiB0aGUgbGlicmFyeQorIGluIHRoZSBmaWxlcworLS5JIGV4 YW1wbGUuYworKy5JIHRlc3QvZXhhbXBsZS5jCisgYW5kCistLklSIG1pbmlnemlwLmMsCisrLklS IHRlc3QvbWluaWd6aXAuYywKKyBhcyB3ZWxsIGFzIG90aGVyIGV4YW1wbGVzIGluIHRoZQorIC5J UiBleGFtcGxlcy8KKyBkaXJlY3RvcnkuCitAQCAtNDgsMzIgKzQ4LDEwIEBAIENoYW5nZXMgdG8g dGhpcyB2ZXJzaW9uIGFyZSBkb2N1bWVudGVkIGluIHRoZSBmaWxlCisgdGhhdCBhY2NvbXBhbmll cyB0aGUgc291cmNlLgorIC5MUAorIC5JIHpsaWIKKy1pcyBhdmFpbGFibGUgaW4gSmF2YSB1c2lu ZyB0aGUgamF2YS51dGlsLnppcCBwYWNrYWdlOgorLS5JUAorLWh0dHA6Ly9qYXZhLnN1bi5jb20v ZGV2ZWxvcGVyL3RlY2huaWNhbEFydGljbGVzL1Byb2dyYW1taW5nL2NvbXByZXNzaW9uLworK2lz IGJ1aWx0IGluIHRvIG1hbnkgbGFuZ3VhZ2VzIGFuZCBvcGVyYXRpbmcgc3lzdGVtcywgaW5jbHVk aW5nIGJ1dCBub3QgbGltaXRlZCB0bworK0phdmEsIFB5dGhvbiwgLk5FVCwgUEhQLCBQZXJsLCBS dWJ5LCBTd2lmdCwgYW5kIEdvLgorIC5MUAorLUEgUGVybCBpbnRlcmZhY2UgdG8KKy0uSVIgemxp YiAsCistd3JpdHRlbiBieSBQYXVsIE1hcnF1ZXNzIChwbXFzQGNwYW4ub3JnKSwKKy1pcyBhdmFp bGFibGUgYXQgQ1BBTiAoQ29tcHJlaGVuc2l2ZSBQZXJsIEFyY2hpdmUgTmV0d29yaykgc2l0ZXMs CistaW5jbHVkaW5nOgorLS5JUAorLWh0dHA6Ly9zZWFyY2guY3Bhbi5vcmcvfnBtcXMvSU8tQ29t cHJlc3MtWmxpYi8KKy0uTFAKKy1BIFB5dGhvbiBpbnRlcmZhY2UgdG8KKy0uSVIgemxpYiAsCist d3JpdHRlbiBieSBBLk0uIEt1Y2hsaW5nIChhbWtAbWFnbmV0LmNvbSksCistaXMgYXZhaWxhYmxl IGluIFB5dGhvbiAxLjUgYW5kIGxhdGVyIHZlcnNpb25zOgorLS5JUAorLWh0dHA6Ly93d3cucHl0 aG9uLm9yZy9kb2MvbGliL21vZHVsZS16bGliLmh0bWwKKy0uTFAKKy0uSSB6bGliCistaXMgYnVp bHQgaW50bworLS5JUiB0Y2w6CistLklQCistaHR0cDovL3dpa2kudGNsLnRrLzQ2MTAKKy0uTFAK Ky1BbiBleHBlcmltZW50YWwgcGFja2FnZSB0byByZWFkIGFuZCB3cml0ZSBmaWxlcyBpbiAuemlw IGZvcm1hdCwKKytBbiBleHBlcmltZW50YWwgcGFja2FnZSB0byByZWFkIGFuZCB3cml0ZSBmaWxl cyBpbiB0aGUgLnppcCBmb3JtYXQsCisgd3JpdHRlbiBvbiB0b3Agb2YKKyAuSSB6bGliCisgYnkg R2lsbGVzIFZvbGxhbnQgKGluZm9Ad2luaW1hZ2UuY29tKSwKK0BAIC05MiwxNCArNzAsMTYgQEAg d2ViIHNpdGUgY2FuIGJlIGZvdW5kIGF0OgorIC5JUAorIGh0dHA6Ly96bGliLm5ldC8KKyAuTFAK Ky1UaGUgZGF0YSBmb3JtYXQgdXNlZCBieSB0aGUgemxpYiBsaWJyYXJ5IGlzIGRlc2NyaWJlZCBi eSBSRkMKKytUaGUgZGF0YSBmb3JtYXQgdXNlZCBieSB0aGUKKysuSSB6bGliCisrbGlicmFyeSBp cyBkZXNjcmliZWQgYnkgUkZDCisgKFJlcXVlc3QgZm9yIENvbW1lbnRzKSAxOTUwIHRvIDE5NTIg aW4gdGhlIGZpbGVzOgorIC5JUAorLWh0dHA6Ly93d3cuaWV0Zi5vcmcvcmZjL3JmYzE5NTAudHh0 IChmb3IgdGhlIHpsaWIgaGVhZGVyIGFuZCB0cmFpbGVyIGZvcm1hdCkKKytodHRwOi8vdG9vbHMu aWV0Zi5vcmcvaHRtbC9yZmMxOTUwIChmb3IgdGhlIHpsaWIgaGVhZGVyIGFuZCB0cmFpbGVyIGZv cm1hdCkKKyAuYnIKKy1odHRwOi8vd3d3LmlldGYub3JnL3JmYy9yZmMxOTUxLnR4dCAoZm9yIHRo ZSBkZWZsYXRlIGNvbXByZXNzZWQgZGF0YSBmb3JtYXQpCisraHR0cDovL3Rvb2xzLmlldGYub3Jn L2h0bWwvcmZjMTk1MSAoZm9yIHRoZSBkZWZsYXRlIGNvbXByZXNzZWQgZGF0YSBmb3JtYXQpCisg LmJyCistaHR0cDovL3d3dy5pZXRmLm9yZy9yZmMvcmZjMTk1Mi50eHQgKGZvciB0aGUgZ3ppcCBo ZWFkZXIgYW5kIHRyYWlsZXIgZm9ybWF0KQorK2h0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3Jm YzE5NTIgKGZvciB0aGUgZ3ppcCBoZWFkZXIgYW5kIHRyYWlsZXIgZm9ybWF0KQorIC5MUAorIE1h cmsgTmVsc29uIHdyb3RlIGFuIGFydGljbGUgYWJvdXQKKyAuSSB6bGliCitAQCAtMTI0LDE3ICsx MDQsMzUgQEAgaHR0cDovL3psaWIubmV0L3psaWJfZmFxLmh0bWwKKyBiZWZvcmUgYXNraW5nIGZv ciBoZWxwLgorIFNlbmQgcXVlc3Rpb25zIGFuZC9vciBjb21tZW50cyB0byB6bGliQGd6aXAub3Jn LAorIG9yIChmb3IgdGhlIFdpbmRvd3MgRExMIHZlcnNpb24pIHRvIEdpbGxlcyBWb2xsYW50IChp bmZvQHdpbmltYWdlLmNvbSkuCistLlNIIEFVVEhPUlMKKy1WZXJzaW9uIDEuMi41CistQ29weXJp Z2h0IChDKSAxOTk1LTIwMTAgSmVhbi1sb3VwIEdhaWxseSAoamxvdXBAZ3ppcC5vcmcpCistYW5k IE1hcmsgQWRsZXIgKG1hZGxlckBhbHVtbmkuY2FsdGVjaC5lZHUpLgorKy5TSCBBVVRIT1JTIEFO RCBMSUNFTlNFCisrVmVyc2lvbiAxLjIuMTEKKyAuTFAKKy1UaGlzIHNvZnR3YXJlIGlzIHByb3Zp ZGVkICJhcy1pcywiCistd2l0aG91dCBhbnkgZXhwcmVzcyBvciBpbXBsaWVkIHdhcnJhbnR5Lgor LUluIG5vIGV2ZW50IHdpbGwgdGhlIGF1dGhvcnMgYmUgaGVsZCBsaWFibGUgZm9yIGFueSBkYW1h Z2VzCisrQ29weXJpZ2h0IChDKSAxOTk1LTIwMTcgSmVhbi1sb3VwIEdhaWxseSBhbmQgTWFyayBB ZGxlcgorKy5MUAorK1RoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgJ2FzLWlzJywgd2l0aG91dCBh bnkgZXhwcmVzcyBvciBpbXBsaWVkCisrd2FycmFudHkuICBJbiBubyBldmVudCB3aWxsIHRoZSBh dXRob3JzIGJlIGhlbGQgbGlhYmxlIGZvciBhbnkgZGFtYWdlcworIGFyaXNpbmcgZnJvbSB0aGUg dXNlIG9mIHRoaXMgc29mdHdhcmUuCistU2VlIHRoZSBkaXN0cmlidXRpb24gZGlyZWN0b3J5IHdp dGggcmVzcGVjdCB0byByZXF1aXJlbWVudHMKKy1nb3Zlcm5pbmcgcmVkaXN0cmlidXRpb24uCisr LkxQCisrUGVybWlzc2lvbiBpcyBncmFudGVkIHRvIGFueW9uZSB0byB1c2UgdGhpcyBzb2Z0d2Fy ZSBmb3IgYW55IHB1cnBvc2UsCisraW5jbHVkaW5nIGNvbW1lcmNpYWwgYXBwbGljYXRpb25zLCBh bmQgdG8gYWx0ZXIgaXQgYW5kIHJlZGlzdHJpYnV0ZSBpdAorK2ZyZWVseSwgc3ViamVjdCB0byB0 aGUgZm9sbG93aW5nIHJlc3RyaWN0aW9uczoKKysuTFAKKysubnIgc3RlcCAxIDEKKysuSVAgXG5b c3RlcF0uIDMKKytUaGUgb3JpZ2luIG9mIHRoaXMgc29mdHdhcmUgbXVzdCBub3QgYmUgbWlzcmVw cmVzZW50ZWQ7IHlvdSBtdXN0IG5vdAorK2NsYWltIHRoYXQgeW91IHdyb3RlIHRoZSBvcmlnaW5h bCBzb2Z0d2FyZS4gSWYgeW91IHVzZSB0aGlzIHNvZnR3YXJlCisraW4gYSBwcm9kdWN0LCBhbiBh Y2tub3dsZWRnbWVudCBpbiB0aGUgcHJvZHVjdCBkb2N1bWVudGF0aW9uIHdvdWxkIGJlCisrYXBw cmVjaWF0ZWQgYnV0IGlzIG5vdCByZXF1aXJlZC4KKysuSVAgXG4rW3N0ZXBdLgorK0FsdGVyZWQg c291cmNlIHZlcnNpb25zIG11c3QgYmUgcGxhaW5seSBtYXJrZWQgYXMgc3VjaCwgYW5kIG11c3Qg bm90IGJlCisrbWlzcmVwcmVzZW50ZWQgYXMgYmVpbmcgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLgor Ky5JUCBcbitbc3RlcF0uCisrVGhpcyBub3RpY2UgbWF5IG5vdCBiZSByZW1vdmVkIG9yIGFsdGVy ZWQgZnJvbSBhbnkgc291cmNlIGRpc3RyaWJ1dGlvbi4KKysuTFAKKytKZWFuLWxvdXAgR2FpbGx5 ICAgICAgICBNYXJrIEFkbGVyCisrLmJyCisramxvdXBAZ3ppcC5vcmcgICAgICAgICAgbWFkbGVy QGFsdW1uaS5jYWx0ZWNoLmVkdQorKy5MUAorIFRoZSBkZWZsYXRlIGZvcm1hdCB1c2VkIGJ5Cisg LkkgemxpYgorIHdhcyBkZWZpbmVkIGJ5IFBoaWwgS2F0ei4KK2RpZmYgLS1naXQgYS9jb20zMi9s aWIvemxpYi96dXRpbC5jIGIvY29tMzIvbGliL3psaWIvenV0aWwuYworaW5kZXggM2NlODk3Njku LmE3NmM2YjBjIDEwMDY0NAorLS0tIGEvY29tMzIvbGliL3psaWIvenV0aWwuYworKysrIGIvY29t MzIvbGliL3psaWIvenV0aWwuYworQEAgLTEsMjcgKzEsMjcgQEAKKyAvKiB6dXRpbC5jIC0tIHRh cmdldCBkZXBlbmRlbnQgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIHRoZSBjb21wcmVzc2lvbiBsaWJy YXJ5CistICogQ29weXJpZ2h0IChDKSAxOTk1LTIwMDUsIDIwMTAgSmVhbi1sb3VwIEdhaWxseS4K KysgKiBDb3B5cmlnaHQgKEMpIDE5OTUtMjAxNyBKZWFuLWxvdXAgR2FpbGx5CisgICogRm9yIGNv bmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFuZCB1c2UsIHNlZSBjb3B5cmlnaHQgbm90aWNlIGlu IHpsaWIuaAorICAqLworIAorIC8qIEAoIykgJElkJCAqLworIAorICNpbmNsdWRlICJ6dXRpbC5o IgorLQorLSNpZm5kZWYgTk9fRFVNTVlfREVDTAorLXN0cnVjdCBpbnRlcm5hbF9zdGF0ZSAgICAg IHtpbnQgZHVtbXk7fTsgLyogZm9yIGJ1Z2d5IGNvbXBpbGVycyAqLworKyNpZm5kZWYgWl9TT0xP CisrIyAgaW5jbHVkZSAiZ3pndXRzLmgiCisgI2VuZGlmCisgCistY29uc3QgY2hhciAqIGNvbnN0 IHpfZXJybXNnWzEwXSA9IHsKKy0ibmVlZCBkaWN0aW9uYXJ5IiwgICAgIC8qIFpfTkVFRF9ESUNU ICAgICAgIDIgICovCistInN0cmVhbSBlbmQiLCAgICAgICAgICAvKiBaX1NUUkVBTV9FTkQgICAg ICAxICAqLworLSIiLCAgICAgICAgICAgICAgICAgICAgLyogWl9PSyAgICAgICAgICAgICAgMCAg Ki8KKy0iZmlsZSBlcnJvciIsICAgICAgICAgIC8qIFpfRVJSTk8gICAgICAgICAoLTEpICovCist InN0cmVhbSBlcnJvciIsICAgICAgICAvKiBaX1NUUkVBTV9FUlJPUiAgKC0yKSAqLworLSJkYXRh IGVycm9yIiwgICAgICAgICAgLyogWl9EQVRBX0VSUk9SICAgICgtMykgKi8KKy0iaW5zdWZmaWNp ZW50IG1lbW9yeSIsIC8qIFpfTUVNX0VSUk9SICAgICAoLTQpICovCistImJ1ZmZlciBlcnJvciIs ICAgICAgICAvKiBaX0JVRl9FUlJPUiAgICAgKC01KSAqLworLSJpbmNvbXBhdGlibGUgdmVyc2lv biIsLyogWl9WRVJTSU9OX0VSUk9SICgtNikgKi8KKy0iIn07Cisrel9jb25zdCBjaGFyICogY29u c3Qgel9lcnJtc2dbMTBdID0geworKyAgICAoel9jb25zdCBjaGFyICopIm5lZWQgZGljdGlvbmFy eSIsICAgICAvKiBaX05FRURfRElDVCAgICAgICAyICAqLworKyAgICAoel9jb25zdCBjaGFyICop InN0cmVhbSBlbmQiLCAgICAgICAgICAvKiBaX1NUUkVBTV9FTkQgICAgICAxICAqLworKyAgICAo el9jb25zdCBjaGFyICopIiIsICAgICAgICAgICAgICAgICAgICAvKiBaX09LICAgICAgICAgICAg ICAwICAqLworKyAgICAoel9jb25zdCBjaGFyICopImZpbGUgZXJyb3IiLCAgICAgICAgICAvKiBa X0VSUk5PICAgICAgICAgKC0xKSAqLworKyAgICAoel9jb25zdCBjaGFyICopInN0cmVhbSBlcnJv ciIsICAgICAgICAvKiBaX1NUUkVBTV9FUlJPUiAgKC0yKSAqLworKyAgICAoel9jb25zdCBjaGFy ICopImRhdGEgZXJyb3IiLCAgICAgICAgICAvKiBaX0RBVEFfRVJST1IgICAgKC0zKSAqLworKyAg ICAoel9jb25zdCBjaGFyICopImluc3VmZmljaWVudCBtZW1vcnkiLCAvKiBaX01FTV9FUlJPUiAg ICAgKC00KSAqLworKyAgICAoel9jb25zdCBjaGFyICopImJ1ZmZlciBlcnJvciIsICAgICAgICAv KiBaX0JVRl9FUlJPUiAgICAgKC01KSAqLworKyAgICAoel9jb25zdCBjaGFyICopImluY29tcGF0 aWJsZSB2ZXJzaW9uIiwvKiBaX1ZFUlNJT05fRVJST1IgKC02KSAqLworKyAgICAoel9jb25zdCBj aGFyICopIiIKKyt9OworIAorIAorIGNvbnN0IGNoYXIgKiBaRVhQT1JUIHpsaWJWZXJzaW9uKCkK K0BAIC01OCw3ICs1OCw3IEBAIHVMb25nIFpFWFBPUlQgemxpYkNvbXBpbGVGbGFncygpCisgICAg IGNhc2UgODogICAgIGZsYWdzICs9IDIgPDwgNjsgICAgICAgIGJyZWFrOworICAgICBkZWZhdWx0 OiAgICBmbGFncyArPSAzIDw8IDY7CisgICAgIH0KKy0jaWZkZWYgREVCVUdfWkxJQgorKyNpZmRl ZiBaTElCX0RFQlVHCisgICAgIGZsYWdzICs9IDEgPDwgODsKKyAjZW5kaWYKKyAjaWYgZGVmaW5l ZChBU01WKSB8fCBkZWZpbmVkKEFTTUlORikKK0BAIC04NSwzNSArODUsMzUgQEAgdUxvbmcgWkVY UE9SVCB6bGliQ29tcGlsZUZsYWdzKCkKKyAjaWZkZWYgRkFTVEVTVAorICAgICBmbGFncyArPSAx TCA8PCAyMTsKKyAjZW5kaWYKKy0jaWZkZWYgU1REQworKyNpZiBkZWZpbmVkKFNUREMpIHx8IGRl ZmluZWQoWl9IQVZFX1NUREFSR19IKQorICMgIGlmZGVmIE5PX3ZzbnByaW50ZgorLSAgICAgICAg ZmxhZ3MgKz0gMUwgPDwgMjU7CisrICAgIGZsYWdzICs9IDFMIDw8IDI1OworICMgICAgaWZkZWYg SEFTX3ZzcHJpbnRmX3ZvaWQKKy0gICAgICAgIGZsYWdzICs9IDFMIDw8IDI2OworKyAgICBmbGFn cyArPSAxTCA8PCAyNjsKKyAjICAgIGVuZGlmCisgIyAgZWxzZQorICMgICAgaWZkZWYgSEFTX3Zz bnByaW50Zl92b2lkCistICAgICAgICBmbGFncyArPSAxTCA8PCAyNjsKKysgICAgZmxhZ3MgKz0g MUwgPDwgMjY7CisgIyAgICBlbmRpZgorICMgIGVuZGlmCisgI2Vsc2UKKy0gICAgICAgIGZsYWdz ICs9IDFMIDw8IDI0OworKyAgICBmbGFncyArPSAxTCA8PCAyNDsKKyAjICBpZmRlZiBOT19zbnBy aW50ZgorLSAgICAgICAgZmxhZ3MgKz0gMUwgPDwgMjU7CisrICAgIGZsYWdzICs9IDFMIDw8IDI1 OworICMgICAgaWZkZWYgSEFTX3NwcmludGZfdm9pZAorLSAgICAgICAgZmxhZ3MgKz0gMUwgPDwg MjY7CisrICAgIGZsYWdzICs9IDFMIDw8IDI2OworICMgICAgZW5kaWYKKyAjICBlbHNlCisgIyAg ICBpZmRlZiBIQVNfc25wcmludGZfdm9pZAorLSAgICAgICAgZmxhZ3MgKz0gMUwgPDwgMjY7Cisr ICAgIGZsYWdzICs9IDFMIDw8IDI2OworICMgICAgZW5kaWYKKyAjICBlbmRpZgorICNlbmRpZgor ICAgICByZXR1cm4gZmxhZ3M7CisgfQorIAorLSNpZmRlZiBERUJVR19aTElCCistCisrI2lmZGVm IFpMSUJfREVCVUcKKysjaW5jbHVkZSA8c3RkbGliLmg+CisgIyAgaWZuZGVmIHZlcmJvc2UKKyAj ICAgIGRlZmluZSB2ZXJib3NlIDAKKyAjICBlbmRpZgorQEAgLTE4MSw2ICsxODEsNyBAQCB2b2lk IFpMSUJfSU5URVJOQUwgem1lbXplcm8oZGVzdCwgbGVuKQorIH0KKyAjZW5kaWYKKyAKKysjaWZu ZGVmIFpfU09MTworIAorICNpZmRlZiBTWVMxNkJJVAorIAorQEAgLTIxNSw5ICsyMTYsMTEgQEAg bG9jYWwgcHRyX3RhYmxlIHRhYmxlW01BWF9QVFJdOworIAorIHZvaWRwZiBaTElCX0lOVEVSTkFM IHpjYWxsb2MgKHZvaWRwZiBvcGFxdWUsIHVuc2lnbmVkIGl0ZW1zLCB1bnNpZ25lZCBzaXplKQor IHsKKy0gICAgdm9pZHBmIGJ1ZiA9IG9wYXF1ZTsgLyoganVzdCB0byBtYWtlIHNvbWUgY29tcGls ZXJzIGhhcHB5ICovCisrICAgIHZvaWRwZiBidWY7CisgICAgIHVsZyBic2l6ZSA9ICh1bGcpaXRl bXMqc2l6ZTsKKyAKKysgICAgKHZvaWQpb3BhcXVlOworKworICAgICAvKiBJZiB3ZSBhbGxvY2F0 ZSBsZXNzIHRoYW4gNjU1MjAgYnl0ZXMsIHdlIGFzc3VtZSB0aGF0IGZhcm1hbGxvYworICAgICAg KiB3aWxsIHJldHVybiBhIHVzYWJsZSBwb2ludGVyIHdoaWNoIGRvZXNuJ3QgaGF2ZSB0byBiZSBu b3JtYWxpemVkLgorICAgICAgKi8KK0BAIC0yNDAsNiArMjQzLDkgQEAgdm9pZHBmIFpMSUJfSU5U RVJOQUwgemNhbGxvYyAodm9pZHBmIG9wYXF1ZSwgdW5zaWduZWQgaXRlbXMsIHVuc2lnbmVkIHNp emUpCisgdm9pZCBaTElCX0lOVEVSTkFMIHpjZnJlZSAodm9pZHBmIG9wYXF1ZSwgdm9pZHBmIHB0 cikKKyB7CisgICAgIGludCBuOworKworKyAgICAodm9pZClvcGFxdWU7CisrCisgICAgIGlmICgq KHVzaCopJnB0ciAhPSAwKSB7IC8qIG9iamVjdCA8IDY0SyAqLworICAgICAgICAgZmFyZnJlZShw dHIpOworICAgICAgICAgcmV0dXJuOworQEAgLTI1NSw3ICsyNjEsNiBAQCB2b2lkIFpMSUJfSU5U RVJOQUwgemNmcmVlICh2b2lkcGYgb3BhcXVlLCB2b2lkcGYgcHRyKQorICAgICAgICAgbmV4dF9w dHItLTsKKyAgICAgICAgIHJldHVybjsKKyAgICAgfQorLSAgICBwdHIgPSBvcGFxdWU7IC8qIGp1 c3QgdG8gbWFrZSBzb21lIGNvbXBpbGVycyBoYXBweSAqLworICAgICBBc3NlcnQoMCwgInpjZnJl ZTogcHRyIG5vdCBmb3VuZCIpOworIH0KKyAKK0BAIC0yNzQsMTMgKzI3OSwxMyBAQCB2b2lkIFpM SUJfSU5URVJOQUwgemNmcmVlICh2b2lkcGYgb3BhcXVlLCB2b2lkcGYgcHRyKQorIAorIHZvaWRw ZiBaTElCX0lOVEVSTkFMIHpjYWxsb2MgKHZvaWRwZiBvcGFxdWUsIHVJbnQgaXRlbXMsIHVJbnQg c2l6ZSkKKyB7CistICAgIGlmIChvcGFxdWUpIG9wYXF1ZSA9IDA7IC8qIHRvIG1ha2UgY29tcGls ZXIgaGFwcHkgKi8KKysgICAgKHZvaWQpb3BhcXVlOworICAgICByZXR1cm4gX2hhbGxvYygobG9u ZylpdGVtcywgc2l6ZSk7CisgfQorIAorIHZvaWQgWkxJQl9JTlRFUk5BTCB6Y2ZyZWUgKHZvaWRw ZiBvcGFxdWUsIHZvaWRwZiBwdHIpCisgeworLSAgICBpZiAob3BhcXVlKSBvcGFxdWUgPSAwOyAv KiB0byBtYWtlIGNvbXBpbGVyIGhhcHB5ICovCisrICAgICh2b2lkKW9wYXF1ZTsKKyAgICAgX2hm cmVlKHB0cik7CisgfQorIAorQEAgLTMwMiw3ICszMDcsNyBAQCB2b2lkcGYgWkxJQl9JTlRFUk5B TCB6Y2FsbG9jIChvcGFxdWUsIGl0ZW1zLCBzaXplKQorICAgICB1bnNpZ25lZCBpdGVtczsKKyAg ICAgdW5zaWduZWQgc2l6ZTsKKyB7CistICAgIGlmIChvcGFxdWUpIGl0ZW1zICs9IHNpemUgLSBz aXplOyAvKiBtYWtlIGNvbXBpbGVyIGhhcHB5ICovCisrICAgICh2b2lkKW9wYXF1ZTsKKyAgICAg cmV0dXJuIHNpemVvZih1SW50KSA+IDIgPyAodm9pZHBmKW1hbGxvYyhpdGVtcyAqIHNpemUpIDoK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZHBmKWNhbGxvYyhpdGVtcywgc2l6 ZSk7CisgfQorQEAgLTMxMSw4ICszMTYsMTAgQEAgdm9pZCBaTElCX0lOVEVSTkFMIHpjZnJlZSAo b3BhcXVlLCBwdHIpCisgICAgIHZvaWRwZiBvcGFxdWU7CisgICAgIHZvaWRwZiBwdHI7Cisgewor KyAgICAodm9pZClvcGFxdWU7CisgICAgIGZyZWUocHRyKTsKKy0gICAgaWYgKG9wYXF1ZSkgcmV0 dXJuOyAvKiBtYWtlIGNvbXBpbGVyIGhhcHB5ICovCisgfQorIAorICNlbmRpZiAvKiBNWV9aQ0FM TE9DICovCisrCisrI2VuZGlmIC8qICFaX1NPTE8gKi8KK2RpZmYgLS1naXQgYS9jb20zMi9saWIv emxpYi96dXRpbC5oIGIvY29tMzIvbGliL3psaWIvenV0aWwuaAoraW5kZXggZWQ2YmQ4MzAuLmIw NzllYTZhIDEwMDY0NAorLS0tIGEvY29tMzIvbGliL3psaWIvenV0aWwuaAorKysrIGIvY29tMzIv bGliL3psaWIvenV0aWwuaAorQEAgLTEsNSArMSw1IEBACisgLyogenV0aWwuaCAtLSBpbnRlcm5h bCBpbnRlcmZhY2UgYW5kIGNvbmZpZ3VyYXRpb24gb2YgdGhlIGNvbXByZXNzaW9uIGxpYnJhcnkK Ky0gKiBDb3B5cmlnaHQgKEMpIDE5OTUtMjAxMCBKZWFuLWxvdXAgR2FpbGx5LgorKyAqIENvcHly aWdodCAoQykgMTk5NS0yMDE2IEplYW4tbG91cCBHYWlsbHksIE1hcmsgQWRsZXIKKyAgKiBGb3Ig Y29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIGNvcHlyaWdodCBub3RpY2Ug aW4gemxpYi5oCisgICovCisgCitAQCAtMTMsNyArMTMsNyBAQAorICNpZm5kZWYgWlVUSUxfSAor ICNkZWZpbmUgWlVUSUxfSAorIAorLSNpZiAoKF9fR05VQ19fLTApICogMTAgKyBfX0dOVUNfTUlO T1JfXy0wID49IDMzKSAmJiAhZGVmaW5lZChOT19WSVopCisrI2lmZGVmIEhBVkVfSElEREVOCisg IyAgZGVmaW5lIFpMSUJfSU5URVJOQUwgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSAoImhpZGRl biIpKSkKKyAjZWxzZQorICMgIGRlZmluZSBaTElCX0lOVEVSTkFMCitAQCAtMjEsNyArMjEsNyBA QAorIAorICNpbmNsdWRlICJ6bGliLmgiCisgCistI2lmZGVmIFNUREMKKysjaWYgZGVmaW5lZChT VERDKSAmJiAhZGVmaW5lZChaX1NPTE8pCisgIyAgaWYgIShkZWZpbmVkKF9XSU4zMl9XQ0UpICYm IGRlZmluZWQoX01TQ19WRVIpKQorICMgICAgaW5jbHVkZSA8c3RkZGVmLmg+CisgIyAgZW5kaWYK K0BAIC0yOSwxMCArMjksMTYgQEAKKyAjICBpbmNsdWRlIDxzdGRsaWIuaD4KKyAjZW5kaWYKKyAK KysjaWZkZWYgWl9TT0xPCisrICAgdHlwZWRlZiBsb25nIHB0cmRpZmZfdDsgIC8qIGd1ZXNzIC0t IHdpbGwgYmUgY2F1Z2h0IGlmIGd1ZXNzIGlzIHdyb25nICovCisrI2VuZGlmCisrCisgI2lmbmRl ZiBsb2NhbAorICMgIGRlZmluZSBsb2NhbCBzdGF0aWMKKyAjZW5kaWYKKy0vKiBjb21waWxlIHdp dGggLURsb2NhbCBpZiB5b3VyIGRlYnVnZ2VyIGNhbid0IGZpbmQgc3RhdGljIHN5bWJvbHMgKi8K KysvKiBzaW5jZSAic3RhdGljIiBpcyB1c2VkIHRvIG1lYW4gdHdvIGNvbXBsZXRlbHkgZGlmZmVy ZW50IHRoaW5ncyBpbiBDLCB3ZQorKyAgIGRlZmluZSAibG9jYWwiIGZvciB0aGUgbm9uLXN0YXRp YyBtZWFuaW5nIG9mICJzdGF0aWMiLCBmb3IgcmVhZGFiaWxpdHkKKysgICAoY29tcGlsZSB3aXRo IC1EbG9jYWwgaWYgeW91ciBkZWJ1Z2dlciBjYW4ndCBmaW5kIHN0YXRpYyBzeW1ib2xzKSAqLwor IAorIHR5cGVkZWYgdW5zaWduZWQgY2hhciAgdWNoOworIHR5cGVkZWYgdWNoIEZBUiB1Y2hmOwor QEAgLTQwLDEzICs0NiwxMyBAQCB0eXBlZGVmIHVuc2lnbmVkIHNob3J0IHVzaDsKKyB0eXBlZGVm IHVzaCBGQVIgdXNoZjsKKyB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgIHVsZzsKKyAKKy1leHRlcm4g Y29uc3QgY2hhciAqIGNvbnN0IHpfZXJybXNnWzEwXTsgLyogaW5kZXhlZCBieSAyLXpsaWJfZXJy b3IgKi8KKytleHRlcm4gel9jb25zdCBjaGFyICogY29uc3Qgel9lcnJtc2dbMTBdOyAvKiBpbmRl eGVkIGJ5IDItemxpYl9lcnJvciAqLworIC8qIChzaXplIGdpdmVuIHRvIGF2b2lkIHNpbGx5IHdh cm5pbmdzIHdpdGggVmlzdWFsIEMrKykgKi8KKyAKKyAjZGVmaW5lIEVSUl9NU0coZXJyKSB6X2Vy cm1zZ1taX05FRURfRElDVC0oZXJyKV0KKyAKKyAjZGVmaW5lIEVSUl9SRVRVUk4oc3RybSxlcnIp IFwKKy0gIHJldHVybiAoc3RybS0+bXNnID0gKGNoYXIqKUVSUl9NU0coZXJyKSwgKGVycikpCisr ICByZXR1cm4gKHN0cm0tPm1zZyA9IEVSUl9NU0coZXJyKSwgKGVycikpCisgLyogVG8gYmUgdXNl ZCBvbmx5IHdoZW4gdGhlIHN0YXRlIGlzIGtub3duIHRvIGJlIHZhbGlkICovCisgCisgICAgICAg ICAvKiBjb21tb24gY29uc3RhbnRzICovCitAQCAtNzgsNjMgKzg0LDgzIEBAIGV4dGVybiBjb25z dCBjaGFyICogY29uc3Qgel9lcnJtc2dbMTBdOyAvKiBpbmRleGVkIGJ5IDItemxpYl9lcnJvciAq LworIAorICNpZiBkZWZpbmVkKE1TRE9TKSB8fCAoZGVmaW5lZChXSU5ET1dTKSAmJiAhZGVmaW5l ZChXSU4zMikpCisgIyAgZGVmaW5lIE9TX0NPREUgIDB4MDAKKy0jICBpZiBkZWZpbmVkKF9fVFVS Qk9DX18pIHx8IGRlZmluZWQoX19CT1JMQU5EQ19fKQorLSMgICAgaWYgKF9fU1REQ19fID09IDEp ICYmIChkZWZpbmVkKF9fTEFSR0VfXykgfHwgZGVmaW5lZChfX0NPTVBBQ1RfXykpCistICAgICAg IC8qIEFsbG93IGNvbXBpbGF0aW9uIHdpdGggQU5TSSBrZXl3b3JkcyBvbmx5IGVuYWJsZWQgKi8K Ky0gICAgICAgdm9pZCBfQ2RlY2wgZmFyZnJlZSggdm9pZCAqYmxvY2sgKTsKKy0gICAgICAgdm9p ZCAqX0NkZWNsIGZhcm1hbGxvYyggdW5zaWduZWQgbG9uZyBuYnl0ZXMgKTsKKy0jICAgIGVsc2UK Ky0jICAgICAgaW5jbHVkZSA8YWxsb2MuaD4KKysjICBpZm5kZWYgWl9TT0xPCisrIyAgICBpZiBk ZWZpbmVkKF9fVFVSQk9DX18pIHx8IGRlZmluZWQoX19CT1JMQU5EQ19fKQorKyMgICAgICBpZiAo X19TVERDX18gPT0gMSkgJiYgKGRlZmluZWQoX19MQVJHRV9fKSB8fCBkZWZpbmVkKF9fQ09NUEFD VF9fKSkKKysgICAgICAgICAvKiBBbGxvdyBjb21waWxhdGlvbiB3aXRoIEFOU0kga2V5d29yZHMg b25seSBlbmFibGVkICovCisrICAgICAgICAgdm9pZCBfQ2RlY2wgZmFyZnJlZSggdm9pZCAqYmxv Y2sgKTsKKysgICAgICAgICB2b2lkICpfQ2RlY2wgZmFybWFsbG9jKCB1bnNpZ25lZCBsb25nIG5i eXRlcyApOworKyMgICAgICBlbHNlCisrIyAgICAgICAgaW5jbHVkZSA8YWxsb2MuaD4KKysjICAg ICAgZW5kaWYKKysjICAgIGVsc2UgLyogTVNDIG9yIERKR1BQICovCisrIyAgICAgIGluY2x1ZGUg PG1hbGxvYy5oPgorICMgICAgZW5kaWYKKy0jICBlbHNlIC8qIE1TQyBvciBESkdQUCAqLworLSMg ICAgaW5jbHVkZSA8bWFsbG9jLmg+CisgIyAgZW5kaWYKKyAjZW5kaWYKKyAKKyAjaWZkZWYgQU1J R0EKKy0jICBkZWZpbmUgT1NfQ09ERSAgMHgwMQorKyMgIGRlZmluZSBPU19DT0RFICAxCisgI2Vu ZGlmCisgCisgI2lmIGRlZmluZWQoVkFYQykgfHwgZGVmaW5lZChWTVMpCistIyAgZGVmaW5lIE9T X0NPREUgIDB4MDIKKysjICBkZWZpbmUgT1NfQ09ERSAgMgorICMgIGRlZmluZSBGX09QRU4obmFt ZSwgbW9kZSkgXAorICAgICAgZm9wZW4oKG5hbWUpLCAobW9kZSksICJtYmM9NjAiLCAiY3R4PXN0 bSIsICJyZm09Zml4IiwgIm1ycz01MTIiKQorICNlbmRpZgorIAorKyNpZmRlZiBfXzM3MF9fCisr IyAgaWYgX19UQVJHRVRfTElCX18gPCAweDIwMDAwMDAwCisrIyAgICBkZWZpbmUgT1NfQ09ERSA0 CisrIyAgZWxpZiBfX1RBUkdFVF9MSUJfXyA8IDB4NDAwMDAwMDAKKysjICAgIGRlZmluZSBPU19D T0RFIDExCisrIyAgZWxzZQorKyMgICAgZGVmaW5lIE9TX0NPREUgOAorKyMgIGVuZGlmCisrI2Vu ZGlmCisrCisgI2lmIGRlZmluZWQoQVRBUkkpIHx8IGRlZmluZWQoYXRhcmlzdCkKKy0jICBkZWZp bmUgT1NfQ09ERSAgMHgwNQorKyMgIGRlZmluZSBPU19DT0RFICA1CisgI2VuZGlmCisgCisgI2lm ZGVmIE9TMgorLSMgIGRlZmluZSBPU19DT0RFICAweDA2CistIyAgaWZkZWYgTV9JODYKKysjICBk ZWZpbmUgT1NfQ09ERSAgNgorKyMgIGlmIGRlZmluZWQoTV9JODYpICYmICFkZWZpbmVkKFpfU09M TykKKyAjICAgIGluY2x1ZGUgPG1hbGxvYy5oPgorICMgIGVuZGlmCisgI2VuZGlmCisgCisgI2lm IGRlZmluZWQoTUFDT1MpIHx8IGRlZmluZWQoVEFSR0VUX09TX01BQykKKy0jICBkZWZpbmUgT1Nf Q09ERSAgMHgwNworLSMgIGlmIGRlZmluZWQoX19NV0VSS1NfXykgJiYgX19kZXN0X29zICE9IF9f YmVfb3MgJiYgX19kZXN0X29zICE9IF9fd2luMzJfb3MKKy0jICAgIGluY2x1ZGUgPHVuaXguaD4g LyogZm9yIGZkb3BlbiAqLworLSMgIGVsc2UKKy0jICAgIGlmbmRlZiBmZG9wZW4KKy0jICAgICAg ZGVmaW5lIGZkb3BlbihmZCxtb2RlKSBOVUxMIC8qIE5vIGZkb3BlbigpICovCisrIyAgZGVmaW5l IE9TX0NPREUgIDcKKysjICBpZm5kZWYgWl9TT0xPCisrIyAgICBpZiBkZWZpbmVkKF9fTVdFUktT X18pICYmIF9fZGVzdF9vcyAhPSBfX2JlX29zICYmIF9fZGVzdF9vcyAhPSBfX3dpbjMyX29zCisr IyAgICAgIGluY2x1ZGUgPHVuaXguaD4gLyogZm9yIGZkb3BlbiAqLworKyMgICAgZWxzZQorKyMg ICAgICBpZm5kZWYgZmRvcGVuCisrIyAgICAgICAgZGVmaW5lIGZkb3BlbihmZCxtb2RlKSBOVUxM IC8qIE5vIGZkb3BlbigpICovCisrIyAgICAgIGVuZGlmCisgIyAgICBlbmRpZgorICMgIGVuZGlm CisgI2VuZGlmCisgCistI2lmZGVmIFRPUFMyMAorLSMgIGRlZmluZSBPU19DT0RFICAweDBhCisr I2lmZGVmIF9fYWNvcm4KKysjICBkZWZpbmUgT1NfQ09ERSAxMworICNlbmRpZgorIAorLSNpZmRl ZiBXSU4zMgorLSMgIGlmbmRlZiBfX0NZR1dJTl9fICAvKiBDeWd3aW4gaXMgVW5peCwgbm90IFdp bjMyICovCistIyAgICBkZWZpbmUgT1NfQ09ERSAgMHgwYgorLSMgIGVuZGlmCisrI2lmIGRlZmlu ZWQoV0lOMzIpICYmICFkZWZpbmVkKF9fQ1lHV0lOX18pCisrIyAgZGVmaW5lIE9TX0NPREUgIDEw CisgI2VuZGlmCisgCistI2lmZGVmIF9fNTBTRVJJRVMgLyogUHJpbWUvUFJJTU9TICovCistIyAg ZGVmaW5lIE9TX0NPREUgIDB4MGYKKysjaWZkZWYgX0JFT1NfCisrIyAgZGVmaW5lIE9TX0NPREUg IDE2CisrI2VuZGlmCisrCisrI2lmZGVmIF9fVE9TX09TNDAwX18KKysjICBkZWZpbmUgT1NfQ09E RSAxOAorKyNlbmRpZgorKworKyNpZmRlZiBfX0FQUExFX18KKysjICBkZWZpbmUgT1NfQ09ERSAx OQorICNlbmRpZgorIAorICNpZiBkZWZpbmVkKF9CRU9TXykgfHwgZGVmaW5lZChSSVNDT1MpCitA QCAtMTUzLDE0ICsxNzksMTUgQEAgZXh0ZXJuIGNvbnN0IGNoYXIgKiBjb25zdCB6X2Vycm1zZ1sx MF07IC8qIGluZGV4ZWQgYnkgMi16bGliX2Vycm9yICovCisgIyAgZW5kaWYKKyAjZW5kaWYKKyAK Ky0jaWYgZGVmaW5lZChfX0JPUkxBTkRDX18pCisrI2lmIGRlZmluZWQoX19CT1JMQU5EQ19fKSAm JiAhZGVmaW5lZChNU0RPUykKKyAgICNwcmFnbWEgd2FybiAtODAwNAorICAgI3ByYWdtYSB3YXJu IC04MDA4CisgICAjcHJhZ21hIHdhcm4gLTgwNjYKKyAjZW5kaWYKKyAKKyAvKiBwcm92aWRlIHBy b3RvdHlwZXMgZm9yIHRoZXNlIHdoZW4gYnVpbGRpbmcgemxpYiB3aXRob3V0IExGUyAqLworLSNp ZiAhZGVmaW5lZChfTEFSR0VGSUxFNjRfU09VUkNFKSB8fCBfTEZTNjRfTEFSR0VGSUxFLTAgPT0g MAorKyNpZiAhZGVmaW5lZChfV0lOMzIpICYmIFwKKysgICAgKCFkZWZpbmVkKF9MQVJHRUZJTEU2 NF9TT1VSQ0UpIHx8IF9MRlM2NF9MQVJHRUZJTEUtMCA9PSAwKQorICAgICBaRVhURVJOIHVMb25n IFpFWFBPUlQgYWRsZXIzMl9jb21iaW5lNjQgT0YoKHVMb25nLCB1TG9uZywgel9vZmZfdCkpOwor ICAgICBaRVhURVJOIHVMb25nIFpFWFBPUlQgY3JjMzJfY29tYmluZTY0IE9GKCh1TG9uZywgdUxv bmcsIHpfb2ZmX3QpKTsKKyAjZW5kaWYKK0BAIC0xNjgsNyArMTk1LDcgQEAgZXh0ZXJuIGNvbnN0 IGNoYXIgKiBjb25zdCB6X2Vycm1zZ1sxMF07IC8qIGluZGV4ZWQgYnkgMi16bGliX2Vycm9yICov CisgICAgICAgICAvKiBjb21tb24gZGVmYXVsdHMgKi8KKyAKKyAjaWZuZGVmIE9TX0NPREUKKy0j ICBkZWZpbmUgT1NfQ09ERSAgMHgwMyAgLyogYXNzdW1lIFVuaXggKi8KKysjICBkZWZpbmUgT1Nf Q09ERSAgMyAgICAgLyogYXNzdW1lIFVuaXggKi8KKyAjZW5kaWYKKyAKKyAjaWZuZGVmIEZfT1BF TgorQEAgLTE3Nyw0MiArMjA0LDcgQEAgZXh0ZXJuIGNvbnN0IGNoYXIgKiBjb25zdCB6X2Vycm1z Z1sxMF07IC8qIGluZGV4ZWQgYnkgMi16bGliX2Vycm9yICovCisgCisgICAgICAgICAgLyogZnVu Y3Rpb25zICovCisgCistI2lmIGRlZmluZWQoU1REQzk5KSB8fCAoZGVmaW5lZChfX1RVUkJPQ19f KSAmJiBfX1RVUkJPQ19fID49IDB4NTUwKQorLSMgIGlmbmRlZiBIQVZFX1ZTTlBSSU5URgorLSMg ICAgZGVmaW5lIEhBVkVfVlNOUFJJTlRGCistIyAgZW5kaWYKKy0jZW5kaWYKKy0jaWYgZGVmaW5l ZChfX0NZR1dJTl9fKQorLSMgIGlmbmRlZiBIQVZFX1ZTTlBSSU5URgorLSMgICAgZGVmaW5lIEhB VkVfVlNOUFJJTlRGCistIyAgZW5kaWYKKy0jZW5kaWYKKy0jaWZuZGVmIEhBVkVfVlNOUFJJTlRG CistIyAgaWZkZWYgTVNET1MKKy0gICAgIC8qIHZzbnByaW50ZiBtYXkgZXhpc3Qgb24gc29tZSBN Uy1ET1MgY29tcGlsZXJzIChESkdQUD8pLAorLSAgICAgICAgYnV0IGZvciBub3cgd2UganVzdCBh c3N1bWUgaXQgZG9lc24ndC4gKi8KKy0jICAgIGRlZmluZSBOT192c25wcmludGYKKy0jICBlbmRp ZgorLSMgIGlmZGVmIF9fVFVSQk9DX18KKy0jICAgIGRlZmluZSBOT192c25wcmludGYKKy0jICBl bmRpZgorLSMgIGlmZGVmIFdJTjMyCistICAgICAvKiBJbiBXaW4zMiwgdnNucHJpbnRmIGlzIGF2 YWlsYWJsZSBhcyB0aGUgIm5vbi1BTlNJIiBfdnNucHJpbnRmLiAqLworLSMgICAgaWYgIWRlZmlu ZWQodnNucHJpbnRmKSAmJiAhZGVmaW5lZChOT192c25wcmludGYpCistIyAgICAgIGlmICFkZWZp bmVkKF9NU0NfVkVSKSB8fCAoIGRlZmluZWQoX01TQ19WRVIpICYmIF9NU0NfVkVSIDwgMTUwMCAp CistIyAgICAgICAgIGRlZmluZSB2c25wcmludGYgX3ZzbnByaW50ZgorLSMgICAgICBlbmRpZgor LSMgICAgZW5kaWYKKy0jICBlbmRpZgorLSMgIGlmZGVmIF9fU0FTQworLSMgICAgZGVmaW5lIE5P X3ZzbnByaW50ZgorLSMgIGVuZGlmCistI2VuZGlmCistI2lmZGVmIFZNUworLSMgIGRlZmluZSBO T192c25wcmludGYKKy0jZW5kaWYKKy0KKy0jaWYgZGVmaW5lZChweXIpCisrI2lmIGRlZmluZWQo cHlyKSB8fCBkZWZpbmVkKFpfU09MTykKKyAjICBkZWZpbmUgTk9fTUVNQ1BZCisgI2VuZGlmCisg I2lmIGRlZmluZWQoU01BTExfTUVESVVNKSAmJiAhZGVmaW5lZChfTVNDX1ZFUikgJiYgIWRlZmlu ZWQoX19TQ19fKQorQEAgLTI0MiwxMCArMjM0LDEwIEBAIGV4dGVybiBjb25zdCBjaGFyICogY29u c3Qgel9lcnJtc2dbMTBdOyAvKiBpbmRleGVkIGJ5IDItemxpYl9lcnJvciAqLworICNlbmRpZgor IAorIC8qIERpYWdub3N0aWMgZnVuY3Rpb25zICovCistI2lmZGVmIERFQlVHX1pMSUIKKysjaWZk ZWYgWkxJQl9ERUJVRworICMgIGluY2x1ZGUgPHN0ZGlvLmg+CisgICAgZXh0ZXJuIGludCBaTElC X0lOVEVSTkFMIHpfdmVyYm9zZTsKKy0gICBleHRlcm4gdm9pZCBaTElCX0lOVEVSTkFMIHpfZXJy b3IgT0YoKGNvbnN0IGNoYXIgKm0pKTsKKysgICBleHRlcm4gdm9pZCBaTElCX0lOVEVSTkFMIHpf ZXJyb3IgT0YoKGNoYXIgKm0pKTsKKyAjICBkZWZpbmUgQXNzZXJ0KGNvbmQsbXNnKSB7aWYoIShj b25kKSkgel9lcnJvcihtc2cpO30KKyAjICBkZWZpbmUgVHJhY2UoeCkge2lmICh6X3ZlcmJvc2U+ PTApIGZwcmludGYgeCA7fQorICMgIGRlZmluZSBUcmFjZXYoeCkge2lmICh6X3ZlcmJvc2U+MCkg ZnByaW50ZiB4IDt9CitAQCAtMjUzLDIyICsyNDUsMjcgQEAgZXh0ZXJuIGNvbnN0IGNoYXIgKiBj b25zdCB6X2Vycm1zZ1sxMF07IC8qIGluZGV4ZWQgYnkgMi16bGliX2Vycm9yICovCisgIyAgZGVm aW5lIFRyYWNlYyhjLHgpIHtpZiAoel92ZXJib3NlPjAgJiYgKGMpKSBmcHJpbnRmIHggO30KKyAj ICBkZWZpbmUgVHJhY2VjdihjLHgpIHtpZiAoel92ZXJib3NlPjEgJiYgKGMpKSBmcHJpbnRmIHgg O30KKyAjZWxzZQorLSMgIGRlZmluZSBBc3NlcnQoY29uZCxtc2cpICgodm9pZCkwKQorLSMgIGRl ZmluZSBUcmFjZSh4KSAoKHZvaWQpMCkKKy0jICBkZWZpbmUgVHJhY2V2KHgpICgodm9pZCkwKQor LSMgIGRlZmluZSBUcmFjZXZ2KHgpICgodm9pZCkwKQorLSMgIGRlZmluZSBUcmFjZWMoYyx4KSAo KHZvaWQpMCkKKy0jICBkZWZpbmUgVHJhY2VjdihjLHgpICgodm9pZCkwKQorKyMgIGRlZmluZSBB c3NlcnQoY29uZCxtc2cpCisrIyAgZGVmaW5lIFRyYWNlKHgpCisrIyAgZGVmaW5lIFRyYWNldih4 KQorKyMgIGRlZmluZSBUcmFjZXZ2KHgpCisrIyAgZGVmaW5lIFRyYWNlYyhjLHgpCisrIyAgZGVm aW5lIFRyYWNlY3YoYyx4KQorICNlbmRpZgorIAorLQorLXZvaWRwZiBaTElCX0lOVEVSTkFMIHpj YWxsb2MgT0YoKHZvaWRwZiBvcGFxdWUsIHVuc2lnbmVkIGl0ZW1zLAorLSAgICAgICAgICAgICAg ICAgICAgICAgIHVuc2lnbmVkIHNpemUpKTsKKy12b2lkIFpMSUJfSU5URVJOQUwgemNmcmVlICBP Rigodm9pZHBmIG9wYXF1ZSwgdm9pZHBmIHB0cikpOworKyNpZm5kZWYgWl9TT0xPCisrICAgdm9p ZHBmIFpMSUJfSU5URVJOQUwgemNhbGxvYyBPRigodm9pZHBmIG9wYXF1ZSwgdW5zaWduZWQgaXRl bXMsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgc2l6ZSkp OworKyAgIHZvaWQgWkxJQl9JTlRFUk5BTCB6Y2ZyZWUgIE9GKCh2b2lkcGYgb3BhcXVlLCB2b2lk cGYgcHRyKSk7CisrI2VuZGlmCisgCisgI2RlZmluZSBaQUxMT0Moc3RybSwgaXRlbXMsIHNpemUp IFwKKyAgICAgICAgICAgICgqKChzdHJtKS0+emFsbG9jKSkoKHN0cm0pLT5vcGFxdWUsIChpdGVt cyksIChzaXplKSkKKyAjZGVmaW5lIFpGUkVFKHN0cm0sIGFkZHIpICAoKigoc3RybSktPnpmcmVl KSkoKHN0cm0pLT5vcGFxdWUsICh2b2lkcGYpKGFkZHIpKQorICNkZWZpbmUgVFJZX0ZSRUUocywg cCkge2lmIChwKSBaRlJFRShzLCBwKTt9CisgCisrLyogUmV2ZXJzZSB0aGUgYnl0ZXMgaW4gYSAz Mi1iaXQgdmFsdWUgKi8KKysjZGVmaW5lIFpTV0FQMzIocSkgKCgoKHEpID4+IDI0KSAmIDB4ZmYp ICsgKCgocSkgPj4gOCkgJiAweGZmMDApICsgXAorKyAgICAgICAgICAgICAgICAgICAgKCgocSkg JiAweGZmMDApIDw8IDgpICsgKCgocSkgJiAweGZmKSA8PCAyNCkpCisrCisgI2VuZGlmIC8qIFpV VElMX0ggKi8KCmRpZmYgLS1naXQgYS9zeXNsaW51eC5zcGVjIGIvc3lzbGludXguc3BlYwppbmRl eCA2ZTVjYzA3Li5kOTYyOGRjIDEwMDY0NAotLS0gYS9zeXNsaW51eC5zcGVjCisrKyBiL3N5c2xp bnV4LnNwZWMKQEAgLTEwLDcgKzEwLDcgQEAgU3VtbWFyeTogU2ltcGxlIGtlcm5lbCBsb2FkZXIg d2hpY2ggYm9vdHMgZnJvbSBhIEZBVCBmaWxlc3lzdGVtCiBOYW1lOiBzeXNsaW51eAogVmVyc2lv bjogNi4wNAogJWRlZmluZSB0YXJiYWxsX3ZlcnNpb24gNi4wNC1wcmUxCi1SZWxlYXNlOiAwLjM1 JXs/ZGlzdH0KK1JlbGVhc2U6IDAuMzYlez9kaXN0fQogTGljZW5zZTogR1BMLTIuMC1vci1sYXRl cgogVVJMOiBodHRwOi8vc3lzbGludXguenl0b3IuY29tL3dpa2kvaW5kZXgucGhwL1RoZV9TeXNs aW51eF9Qcm9qZWN0CiBTb3VyY2UwOiBodHRwOi8vd3d3Lmtlcm5lbC5vcmcvcHViL2xpbnV4L3V0 aWxzL2Jvb3Qvc3lzbGludXgvJXtuYW1lfS0le3RhcmJhbGxfdmVyc2lvbn0udGFyLnh6CkBAIC0y NSw2ICsyNSw3IEBAIFBhdGNoMDAwODogMDAwOC1GaXgtYnVpbGQtd2l0aC1HQ0MtMTQucGF0Y2gK IFBhdGNoMDAwOTogMDAwOS1SZXdyaXRlX0RpZ2VzdF9TSEExX3RvX1NIQS5wYXRjaAogUGF0Y2gw MDEwOiAwMDEwLUZpeC1yZXBvcnRlZC1TQVNULWZpbmRpbmdzLnBhdGNoCiBQYXRjaDAwMTE6IDAw MTEtY29yZS1NYWtlZmlsZS1hbGxvdy1yZWxvY2F0aW9ucy1vbi10ZXh0LXNlY3Rpb25zLnBhdGNo CitQYXRjaDAwMTI6IDAwMTItemxpYi11cGRhdGUtdG8tdmVyc2lvbi0xLjIuMTEucGF0Y2gKIAog IyB0aGlzIGlzIHRvIGtlZXAgcnBtYnVpbGQgZnJvbSB0aGlua2luZyB0aGUgLmMzMiAvIC5jb20g LyAuMCAvIG1lbWRpc2sgZmlsZXMKICMgaW4gbm9hcmNoIHBhY2thZ2VzIGFyZSBhIHJlYXNvbiB0 byBzdG9wIHRoZSBidWlsZC4KQEAgLTI2MCw2ICsyNjEsMTAgQEAgZmkKICVlbmRpZgogCiAlY2hh bmdlbG9nCisqIFdlZCBNYXIgMjUgMjAyNiBKb3N1ZSBIZXJuYW5kZXogPGpvc2hlcm5hQHJlZGhh dC5jb20+IC0gNi4wNC0wLjM2CistIFVwZGF0ZSB6bGliIHZlcnNpb24gdG8gemxpYi0xLjIuMTEK Ky0gUmVzb2x2ZXM6IENWRS0yMDIyLTM3NDM0IENWRS0yMDE4LTI1MDMyIENWRS0yMDE2LTk4NDAg Q1ZFLTIwMTYtOTg0MworCiAqIFdlZCBKYW4gMjggMjAyNiBMZW8gU2FuZG92YWwgPGxzYW5kb3Zh QHJlZGhhdC5jb20+IC0gNi4wNC0wLjM1CiAtIEFsbG93IHJlbG9jYXRpb25zIG9uIHRleHQgc2Vj dGlvbnMKIAo=