Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tl7yx-009VfE-K0 for pgsql-hackers@arkaria.postgresql.org; Thu, 20 Feb 2025 14:56:56 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1tl7yu-007tvX-D6 for pgsql-hackers@arkaria.postgresql.org; Thu, 20 Feb 2025 14:56:52 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tl7yt-007tvO-51 for pgsql-hackers@lists.postgresql.org; Thu, 20 Feb 2025 14:56:52 +0000 Received: from mail-vk1-xa2d.google.com ([2607:f8b0:4864:20::a2d]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1tl7yd-001urb-0t for pgsql-hackers@postgresql.org; Thu, 20 Feb 2025 14:56:50 +0000 Received: by mail-vk1-xa2d.google.com with SMTP id 71dfb90a1353d-51eb18130f9so293127e0c.3 for ; Thu, 20 Feb 2025 06:56:35 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1740063394; x=1740668194; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=wfcnrdUzPhYeLwuef2ExrlXu6XjuNRvgqdWBCES1AHw=; b=XPGoKs3Pgn6p55AcpmyvQ2F8DZqvx+w/QVo2NC2DnqSc5m99VZvzcXDnT7KAUlANxQ yUfxOMsxFsny51eTyo1mQZWZiQgeRTODISTTpPcKlxh5qoiar5R7k3b6QdbIB6ugtiQl TayiupNvfBQO36VP4/b0vTlXh+TAi/M0KXGqNHhPV1PiQgX8KsW2GxlRiatLsxKjg0e6 CW5GygvcQfwrhh4XW6b1mZz5fx9KZYBczT9lAF3GDswVBlzx5lWczOmYlZgPOZgzEPj9 p7YIbftMLwMOveowfbtepd+JqEqVg1r7+04jg6J5mpsPV+vAnb4Kk/UrsJEUP5IQlpwy BhxQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740063394; x=1740668194; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=wfcnrdUzPhYeLwuef2ExrlXu6XjuNRvgqdWBCES1AHw=; b=pGEJZw8G7+2TKMS0Wh9BgPa3Z/GlvNe1rNIuJVnK7p5e6qyZwewxwX6b2vA+8p4ZVt Oe4bsbDMwtdx2MfDh/jinoM2wE1fqhWz62txeES3OUEJo0E1A2gWHuuNTHROYNQPoTxO ud/W5vQL6CdVLO4SGDnAxgPTyYie9knKTS3JUSavCvDhTf771OfP/Cu8zt8+IECgPuIy WGCpFjXw8dVZ7+05GpYnZpPEHol/GOmnvVKaBreG/rpOVQ3jYGPzumhbtnrCrZSRFgUV fmDJRHz5NEefXqWDVI5gNuv4JmNpzX+H6Oq0y/w8kGQaxdlkXqKj0s5jMGdBT0kCiXD1 v3og== X-Forwarded-Encrypted: i=1; AJvYcCUSmCNi7mg/mNUNHDn//GeBe4Yz6yxKidmcaCHGwh5s9ftULWqc6WjataVyjykZ/16RylGcnvbnYauMuDEJ@postgresql.org X-Gm-Message-State: AOJu0Yzn3dz7ANXTnCvPhm/501mXZTEAAXlIHZzOElebPkPQG3WtglwE qjAykmriF2rjl+FSt++gWX65B8B7Uxh6Nk35ySFsYA+fGFwUM+pa6W9N3hRMH/Q0kigPoIq8rzw n5anVC3oKYVI7fN8MVD0C421vVLQ= X-Gm-Gg: ASbGncvfcCEC7wixFphPQC2QNKCw8z3zwcQHjuTtbmQCTBLHBlYalbsUD+tNpPsgIVv 7XdDL7/LawwEWeD6CBMWUlT1LJjtz+VSBjLHfsjL5fmxfqcahNZhKaXbXgtQZlOGA5FAPi+e++A == X-Google-Smtp-Source: AGHT+IEL7Nt8661S2PyaUnFUsvIgiGG3iStN6GvJsrkBuTNXwtv6axacEnORe5z11pDGpIKBag1ZzDrVXc1xnCWNueA= X-Received: by 2002:a05:6122:218f:b0:518:a0ac:1f42 with SMTP id 71dfb90a1353d-521df75a0bamr1068762e0c.1.1740063394043; Thu, 20 Feb 2025 06:56:34 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Mihail Nikalayeu Date: Thu, 20 Feb 2025 17:56:20 +0300 X-Gm-Features: AWEUYZmtOt1E_DqP2aBc7_c41C7rc2q0ub43bP31bSB9Zr_k6mG9aa4fl2yJe1Y Message-ID: Subject: Re: Revisiting {CREATE INDEX, REINDEX} CONCURRENTLY improvements To: Michail Nikolaev Cc: alvherre@alvh.no-ip.org, Michael Paquier , PostgreSQL Hackers , Andrey Borodin , Melanie Plageman , Matthias van de Meent Content-Type: multipart/mixed; boundary="0000000000007d5b96062e941445" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000007d5b96062e941445 Content-Type: multipart/alternative; boundary="0000000000007d5b93062e941443" --0000000000007d5b93062e941443 Content-Type: text/plain; charset="UTF-8" Hello, everyone. Just rebased. Also, this is Discord thread: https://discordapp.com/channels/1258108670710124574/1259884843165155471/1334565506149253150 --0000000000007d5b93062e941443 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hello, everyone.

Just rebased.
--0000000000007d5b93062e941443-- --0000000000007d5b96062e941445 Content-Type: text/x-patch; charset="US-ASCII"; name="v15-0005-Allow-snapshot-resets-in-concurrent-unique-index.patch" Content-Disposition: attachment; filename="v15-0005-Allow-snapshot-resets-in-concurrent-unique-index.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m7dgd9ia4 RnJvbSA3MWJlYjczODhjZDM1MDE1ZDdkMWIyZjdjZmM1NTBmMDc1YWZiOGQzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxtaWNoYWlsLm5pa29sYWV2QGdtYWlsLmNvbT4KRGF0 ZTogU2F0LCA3IERlYyAyMDI0IDIzOjI3OjM0ICswMTAwClN1YmplY3Q6IFtQQVRDSCB2MTUgMDUv MTJdIEFsbG93IHNuYXBzaG90IHJlc2V0cyBpbiBjb25jdXJyZW50IHVuaXF1ZSBpbmRleAogYnVp bGRzCgpQcmV2aW91c2x5LCBjb25jdXJyZW50IHVuaXF1ZSBpbmRleCBidWlsZHMgdXNlZCBhIGZp eGVkIHNuYXBzaG90IGZvciB0aGUgZW50aXJlCnNjYW4gdG8gZW5zdXJlIHByb3BlciB1bmlxdWVu ZXNzIGNoZWNrcy4gVGhpcyBjb3VsZCBkZWxheSB2YWN1dW0ncyBhYmlsaXR5IHRvCmNsZWFuIHVw IGRlYWQgdHVwbGVzLgoKTm93IHJlc2V0IHNuYXBzaG90cyBwZXJpb2RpY2FsbHkgZHVyaW5nIGNv bmN1cnJlbnQgdW5pcXVlIGluZGV4IGJ1aWxkcywgd2hpbGUKc3RpbGwgbWFpbnRhaW5pbmcgdW5p cXVlbmVzcyBieToKCjEuIElnbm9yaW5nIGRlYWQgdHVwbGVzIGR1cmluZyB1bmlxdWVuZXNzIGNo ZWNrcyBpbiB0dXBsZXNvcnQKMi4gQWRkaW5nIGEgdW5pcXVlbmVzcyBjaGVjayBpbiBfYnRfbG9h ZCB0aGF0IGRldGVjdHMgbXVsdGlwbGUgYWxpdmUgdHVwbGVzIHdpdGggdGhlIHNhbWUga2V5IHZh bHVlcwoKVGhpcyBpbXByb3ZlcyB2YWN1dW0gZWZmZWN0aXZlbmVzcyBkdXJpbmcgbG9uZy1ydW5u aW5nIGluZGV4IGJ1aWxkcyB3aXRob3V0CmNvbXByb21pc2luZyBpbmRleCB1bmlxdWVuZXNzIGVu Zm9yY2VtZW50LgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QgICAgICAg ICAgICB8ICAxMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYyAg ICAgIHwgICA2ICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idGRlZHVwLmMgICAgICAg ICAgfCAgIDggKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jICAgICAgICAg ICB8IDE5MiArKysrKysrKysrKysrKy0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0 c3BsaXRsb2MuYyAgICAgICB8ICAxMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnR1 dGlscy5jICAgICAgICAgIHwgIDI5ICsrLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jICAg ICAgICAgICAgICAgICAgIHwgICA4ICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMu YyAgICAgICAgICAgICAgfCAgIDQgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL3NvcnQvdHVwbGVzb3J0 dmFyaWFudHMuYyAgICB8ICA2OSArKysrKy0tCiBzcmMvaW5jbHVkZS9hY2Nlc3MvbmJ0cmVlLmgg ICAgICAgICAgICAgICAgICAgfCAgIDQgKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgg ICAgICAgICAgICAgICAgICB8ICAgNSArLQogc3JjL2luY2x1ZGUvdXRpbHMvdHVwbGVzb3J0Lmgg ICAgICAgICAgICAgICAgIHwgICAxICsKIC4uLi9leHBlY3RlZC9jaWNfcmVzZXRfc25hcHNob3Rz Lm91dCAgICAgICAgICB8ICAgNiArCiAxMyBmaWxlcyBjaGFuZ2VkLCAyNjMgaW5zZXJ0aW9ucygr KSwgOTMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv UkVBRE1FLkhPVCBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QKaW5kZXggNzRl NDA3ZjM3NWEuLjgyOWRhZDExOTRlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC9SRUFETUUuSE9UCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QKQEAg LTM4NiwxMiArMzg2LDEyIEBAIGhhdmUgdGhlIEhPVC1zYWZldHkgcHJvcGVydHkgZW5mb3JjZWQg YmVmb3JlIHdlIHN0YXJ0IHRvIGJ1aWxkIHRoZSBuZXcKIGluZGV4LgogCiBBZnRlciB3YWl0aW5n IGZvciB0cmFuc2FjdGlvbnMgd2hpY2ggaGFkIHRoZSB0YWJsZSBvcGVuLCB3ZSBidWlsZCB0aGUg aW5kZXgKLWZvciBhbGwgcm93cyB0aGF0IGFyZSB2YWxpZCBpbiBhIGZyZXNoIHNuYXBzaG90LiAg QW55IHR1cGxlcyB2aXNpYmxlIGluIHRoZQotc25hcHNob3Qgd2lsbCBoYXZlIG9ubHkgdmFsaWQg Zm9yd2FyZC1ncm93aW5nIEhPVCBjaGFpbnMuICAoVGhleSBtaWdodCBoYXZlCi1vbGRlciBIT1Qg dXBkYXRlcyBiZWhpbmQgdGhlbSB3aGljaCBhcmUgYnJva2VuLCBidXQgdGhpcyBpcyBPSyBmb3Ig dGhlIHNhbWUKLXJlYXNvbiBpdCdzIE9LIGluIGEgcmVndWxhciBpbmRleCBidWlsZC4pICBBcyBh Ym92ZSwgd2UgcG9pbnQgdGhlIGluZGV4Ci1lbnRyeSBhdCB0aGUgcm9vdCBvZiB0aGUgSE9ULXVw ZGF0ZSBjaGFpbiBidXQgd2UgdXNlIHRoZSBrZXkgdmFsdWUgZnJvbSB0aGUKLWxpdmUgdHVwbGUu Citmb3IgYWxsIHJvd3MgdGhhdCBhcmUgdmFsaWQgaW4gYSBmcmVzaCBzbmFwc2hvdCwgd2hpY2gg aXMgdXBkYXRlZCBldmVyeSBzbworb2Z0ZW4uIEFueSB0dXBsZXMgdmlzaWJsZSBpbiB0aGUgc25h cHNob3Qgd2lsbCBoYXZlIG9ubHkgdmFsaWQgZm9yd2FyZC1ncm93aW5nCitIT1QgY2hhaW5zLiAg KFRoZXkgbWlnaHQgaGF2ZSBvbGRlciBIT1QgdXBkYXRlcyBiZWhpbmQgdGhlbSB3aGljaCBhcmUg YnJva2VuLAorYnV0IHRoaXMgaXMgT0sgZm9yIHRoZSBzYW1lIHJlYXNvbiBpdCdzIE9LIGluIGEg cmVndWxhciBpbmRleCBidWlsZC4pCitBcyBhYm92ZSwgd2UgcG9pbnQgdGhlIGluZGV4IGVudHJ5 IGF0IHRoZSByb290IG9mIHRoZSBIT1QtdXBkYXRlIGNoYWluIGJ1dCB3ZQordXNlIHRoZSBrZXkg dmFsdWUgZnJvbSB0aGUgbGl2ZSB0dXBsZS4KIAogV2UgbWFyayB0aGUgaW5kZXggb3BlbiBmb3Ig aW5zZXJ0cyAoYnV0IHN0aWxsIG5vdCByZWFkeSBmb3IgcmVhZHMpIHRoZW4KIHdlIGFnYWluIHdh aXQgZm9yIHRyYW5zYWN0aW9ucyB3aGljaCBoYXZlIHRoZSB0YWJsZSBvcGVuLiAgVGhlbiB3ZSB0 YWtlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5j IGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwppbmRleCAyYTYxN2Ew NWY4Yy4uNzY4MzcyMDM2MDEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hl YXBhbV9oYW5kbGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRs ZXIuYwpAQCAtMTIzMiwxNSArMTIzMiwxNSBAQCBoZWFwYW1faW5kZXhfYnVpbGRfcmFuZ2Vfc2Nh bihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJICogcXVhbCBjaGVja3MgKGJlY2F1c2Ugd2UgaGF2 ZSB0byBpbmRleCBSRUNFTlRMWV9ERUFEIHR1cGxlcykuIEluIGEKIAkgKiBjb25jdXJyZW50IGJ1 aWxkLCBvciBkdXJpbmcgYm9vdHN0cmFwLCB3ZSB0YWtlIGEgcmVndWxhciBNVkNDIHNuYXBzaG90 CiAJICogYW5kIGluZGV4IHdoYXRldmVyJ3MgbGl2ZSBhY2NvcmRpbmcgdG8gdGhhdCB3aGlsZSB0 aGF0IHNuYXBzaG90IGlzIHJlc2V0Ci0JICogZXZlcnkgc28gb2Z0ZW4gKGluIGNhc2Ugb2Ygbm9u LXVuaXF1ZSBpbmRleCkuCisJICogZXZlcnkgc28gb2Z0ZW4uCiAJICovCiAJT2xkZXN0WG1pbiA9 IEludmFsaWRUcmFuc2FjdGlvbklkOwogCiAJLyoKLQkgKiBGb3IgdW5pcXVlIGluZGV4IHdlIG5l ZWQgY29uc2lzdGVudCBzbmFwc2hvdCBmb3IgdGhlIHdob2xlIHNjYW4uCisJICogRm9yIGNvbmN1 cnJlbnQgYnVpbGRzIG9mIG5vbi1zeXN0ZW0gaW5kZXhlcywgd2UgbWF5IHdhbnQgdG8gcGVyaW9k aWNhbGx5CisJICogcmVzZXQgc25hcHNob3RzIHRvIGFsbG93IHZhY3V1bSB0byBjbGVhbiB1cCB0 dXBsZXMuCiAJICovCiAJcmVzZXRfc25hcHNob3RzID0gaW5kZXhJbmZvLT5paV9Db25jdXJyZW50 ICYmCi0JCQkJCSAgIWluZGV4SW5mby0+aWlfVW5pcXVlICYmCiAJCQkJCSAgIWlzX3N5c3RlbV9j YXRhbG9nOyAvKiBqdXN0IGZvciB0aGUgY2FzZSAqLwogCiAJLyogb2theSB0byBpZ25vcmUgbGF6 eSBWQUNVVU1zIGhlcmUgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUv bmJ0ZGVkdXAuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0ZGVkdXAuYwppbmRleCBj YmU3MzY3NWY4Ni4uNWRiNmQyMzdjMmMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9u YnRyZWUvbmJ0ZGVkdXAuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idGRlZHVw LmMKQEAgLTE0OCw3ICsxNDgsNyBAQCBfYnRfZGVkdXBfcGFzcyhSZWxhdGlvbiByZWwsIEJ1ZmZl ciBidWYsIEluZGV4VHVwbGUgbmV3aXRlbSwgU2l6ZSBuZXdpdGVtc3osCiAJCQlfYnRfZGVkdXBf c3RhcnRfcGVuZGluZyhzdGF0ZSwgaXR1cCwgb2ZmbnVtKTsKIAkJfQogCQllbHNlIGlmIChzdGF0 ZS0+ZGVkdXBsaWNhdGUgJiYKLQkJCQkgX2J0X2tlZXBfbmF0dHNfZmFzdChyZWwsIHN0YXRlLT5i YXNlLCBpdHVwKSA+IG5rZXlhdHRzICYmCisJCQkJIF9idF9rZWVwX25hdHRzX2Zhc3QocmVsLCBz dGF0ZS0+YmFzZSwgaXR1cCwgTlVMTCkgPiBua2V5YXR0cyAmJgogCQkJCSBfYnRfZGVkdXBfc2F2 ZV9odGlkKHN0YXRlLCBpdHVwKSkKIAkJewogCQkJLyoKQEAgLTM3NCw3ICszNzQsNyBAQCBfYnRf Ym90dG9tdXBkZWxfcGFzcyhSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsIFJlbGF0aW9uIGhlYXBS ZWwsCiAJCQkvKiBpdHVwIHN0YXJ0cyBmaXJzdCBwZW5kaW5nIGludGVydmFsICovCiAJCQlfYnRf ZGVkdXBfc3RhcnRfcGVuZGluZyhzdGF0ZSwgaXR1cCwgb2ZmbnVtKTsKIAkJfQotCQllbHNlIGlm IChfYnRfa2VlcF9uYXR0c19mYXN0KHJlbCwgc3RhdGUtPmJhc2UsIGl0dXApID4gbmtleWF0dHMg JiYKKwkJZWxzZSBpZiAoX2J0X2tlZXBfbmF0dHNfZmFzdChyZWwsIHN0YXRlLT5iYXNlLCBpdHVw LCBOVUxMKSA+IG5rZXlhdHRzICYmCiAJCQkJIF9idF9kZWR1cF9zYXZlX2h0aWQoc3RhdGUsIGl0 dXApKQogCQl7CiAJCQkvKiBUdXBsZSBpcyBlcXVhbDsganVzdCBhZGRlZCBpdHMgVElEcyB0byBw ZW5kaW5nIGludGVydmFsICovCkBAIC03ODksMTIgKzc4OSwxMiBAQCBfYnRfZG9fc2luZ2xldmFs KFJlbGF0aW9uIHJlbCwgUGFnZSBwYWdlLCBCVERlZHVwU3RhdGUgc3RhdGUsCiAJaXRlbWlkID0g UGFnZUdldEl0ZW1JZChwYWdlLCBtaW5vZmYpOwogCWl0dXAgPSAoSW5kZXhUdXBsZSkgUGFnZUdl dEl0ZW0ocGFnZSwgaXRlbWlkKTsKIAotCWlmIChfYnRfa2VlcF9uYXR0c19mYXN0KHJlbCwgbmV3 aXRlbSwgaXR1cCkgPiBua2V5YXR0cykKKwlpZiAoX2J0X2tlZXBfbmF0dHNfZmFzdChyZWwsIG5l d2l0ZW0sIGl0dXAsIE5VTEwpID4gbmtleWF0dHMpCiAJewogCQlpdGVtaWQgPSBQYWdlR2V0SXRl bUlkKHBhZ2UsIFBhZ2VHZXRNYXhPZmZzZXROdW1iZXIocGFnZSkpOwogCQlpdHVwID0gKEluZGV4 VHVwbGUpIFBhZ2VHZXRJdGVtKHBhZ2UsIGl0ZW1pZCk7CiAKLQkJaWYgKF9idF9rZWVwX25hdHRz X2Zhc3QocmVsLCBuZXdpdGVtLCBpdHVwKSA+IG5rZXlhdHRzKQorCQlpZiAoX2J0X2tlZXBfbmF0 dHNfZmFzdChyZWwsIG5ld2l0ZW0sIGl0dXAsIE5VTEwpID4gbmtleWF0dHMpCiAJCQlyZXR1cm4g dHJ1ZTsKIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29y dC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMKaW5kZXggODEwZjgwZmM4 ZTYuLjhiMjM2YzhjY2Q2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25i dHNvcnQuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYwpAQCAtODMs NiArODMsNyBAQCB0eXBlZGVmIHN0cnVjdCBCVFNwb29sCiAJUmVsYXRpb24JaW5kZXg7CiAJYm9v bAkJaXN1bmlxdWU7CiAJYm9vbAkJbnVsbHNfbm90X2Rpc3RpbmN0OworCWJvb2wJCXVuaXF1ZV9k ZWFkX2lnbm9yZWQ7CiB9IEJUU3Bvb2w7CiAKIC8qCkBAIC0xMDEsNiArMTAyLDcgQEAgdHlwZWRl ZiBzdHJ1Y3QgQlRTaGFyZWQKIAlPaWQJCQlpbmRleHJlbGlkOwogCWJvb2wJCWlzdW5pcXVlOwog CWJvb2wJCW51bGxzX25vdF9kaXN0aW5jdDsKKwlib29sCQl1bmlxdWVfZGVhZF9pZ25vcmVkOwog CWJvb2wJCWlzY29uY3VycmVudDsKIAlpbnQJCQlzY2FudHVwbGVzb3J0c3RhdGVzOwogCkBAIC0y MDMsMTUgKzIwNSwxMyBAQCB0eXBlZGVmIHN0cnVjdCBCVExlYWRlcgogICovCiB0eXBlZGVmIHN0 cnVjdCBCVEJ1aWxkU3RhdGUKIHsKLQlib29sCQlpc3VuaXF1ZTsKLQlib29sCQludWxsc19ub3Rf ZGlzdGluY3Q7CiAJYm9vbAkJaGF2ZWRlYWQ7CiAJUmVsYXRpb24JaGVhcDsKIAlCVFNwb29sICAg ICpzcG9vbDsKIAogCS8qCi0JICogc3Bvb2wyIGlzIG5lZWRlZCBvbmx5IHdoZW4gdGhlIGluZGV4 IGlzIGEgdW5pcXVlIGluZGV4LiBEZWFkIHR1cGxlcyBhcmUKLQkgKiBwdXQgaW50byBzcG9vbDIg aW5zdGVhZCBvZiBzcG9vbCBpbiBvcmRlciB0byBhdm9pZCB1bmlxdWVuZXNzIGNoZWNrLgorCSAq IHNwb29sMiBpcyBuZWVkZWQgb25seSB3aGVuIHRoZSBpbmRleCBpcyBhIHVuaXF1ZSBpbmRleCBh bmQgYnVpbGQgbm9uLWNvbmN1cnJlbnRseS4KKwkgKiBEZWFkIHR1cGxlcyBhcmUgcHV0IGludG8g c3Bvb2wyIGluc3RlYWQgb2Ygc3Bvb2wgaW4gb3JkZXIgdG8gYXZvaWQgdW5pcXVlbmVzcyBjaGVj ay4KIAkgKi8KIAlCVFNwb29sICAgICpzcG9vbDI7CiAJZG91YmxlCQlpbmR0dXBsZXM7CkBAIC0y NTgsNyArMjU4LDcgQEAgc3RhdGljIGRvdWJsZSBfYnRfc3Bvb2xzX2hlYXBzY2FuKFJlbGF0aW9u IGhlYXAsIFJlbGF0aW9uIGluZGV4LAogc3RhdGljIHZvaWQgX2J0X3Nwb29sZGVzdHJveShCVFNw b29sICpidHNwb29sKTsKIHN0YXRpYyB2b2lkIF9idF9zcG9vbChCVFNwb29sICpidHNwb29sLCBJ dGVtUG9pbnRlciBzZWxmLAogCQkJCQkgIERhdHVtICp2YWx1ZXMsIGJvb2wgKmlzbnVsbCk7Ci1z dGF0aWMgdm9pZCBfYnRfbGVhZmJ1aWxkKEJUU3Bvb2wgKmJ0c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bv b2wyLCBib29sIHJlc2V0X3NuYXBzaG90cyk7CitzdGF0aWMgdm9pZCBfYnRfbGVhZmJ1aWxkKEJU U3Bvb2wgKmJ0c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyLCBib29sIGlzY29uY3VycmVudCk7CiBz dGF0aWMgdm9pZCBfYnRfYnVpbGRfY2FsbGJhY2soUmVsYXRpb24gaW5kZXgsIEl0ZW1Qb2ludGVy IHRpZCwgRGF0dW0gKnZhbHVlcywKIAkJCQkJCQkgICBib29sICppc251bGwsIGJvb2wgdHVwbGVJ c0FsaXZlLCB2b2lkICpzdGF0ZSk7CiBzdGF0aWMgQnVsa1dyaXRlQnVmZmVyIF9idF9ibG5ld3Bh Z2UoQlRXcml0ZVN0YXRlICp3c3RhdGUsIHVpbnQzMiBsZXZlbCk7CkBAIC0zMDMsOCArMzAzLDYg QEAgYnRidWlsZChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZvICppbmRl eEluZm8pCiAJCVJlc2V0VXNhZ2UoKTsKICNlbmRpZgkJCQkJCQkvKiBCVFJFRV9CVUlMRF9TVEFU UyAqLwogCi0JYnVpbGRzdGF0ZS5pc3VuaXF1ZSA9IGluZGV4SW5mby0+aWlfVW5pcXVlOwotCWJ1 aWxkc3RhdGUubnVsbHNfbm90X2Rpc3RpbmN0ID0gaW5kZXhJbmZvLT5paV9OdWxsc05vdERpc3Rp bmN0OwogCWJ1aWxkc3RhdGUuaGF2ZWRlYWQgPSBmYWxzZTsKIAlidWlsZHN0YXRlLmhlYXAgPSBo ZWFwOwogCWJ1aWxkc3RhdGUuc3Bvb2wgPSBOVUxMOwpAQCAtMzIxLDIwICszMTksMjAgQEAgYnRi dWlsZChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZvICppbmRleEluZm8p CiAJCQkgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUoaW5kZXgpKTsKIAogCXJlbHR1cGxlcyA9IF9i dF9zcG9vbHNfaGVhcHNjYW4oaGVhcCwgaW5kZXgsICZidWlsZHN0YXRlLCBpbmRleEluZm8pOwot CUFzc2VydCghaW5kZXhJbmZvLT5paV9Db25jdXJyZW50IHx8IGluZGV4SW5mby0+aWlfVW5pcXVl IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKKwlBc3NlcnQoIWluZGV4 SW5mby0+aWlfQ29uY3VycmVudCB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWlu KSk7CiAKIAkvKgogCSAqIEZpbmlzaCB0aGUgYnVpbGQgYnkgKDEpIGNvbXBsZXRpbmcgdGhlIHNv cnQgb2YgdGhlIHNwb29sIGZpbGUsICgyKQogCSAqIGluc2VydGluZyB0aGUgc29ydGVkIHR1cGxl cyBpbnRvIGJ0cmVlIHBhZ2VzIGFuZCAoMykgYnVpbGRpbmcgdGhlIHVwcGVyCiAJICogbGV2ZWxz LiAgRmluYWxseSwgaXQgbWF5IGFsc28gYmUgbmVjZXNzYXJ5IHRvIGVuZCB1c2Ugb2YgcGFyYWxs ZWxpc20uCiAJICovCi0JX2J0X2xlYWZidWlsZChidWlsZHN0YXRlLnNwb29sLCBidWlsZHN0YXRl LnNwb29sMiwgIWluZGV4SW5mby0+aWlfVW5pcXVlICYmIGluZGV4SW5mby0+aWlfQ29uY3VycmVu dCk7CisJX2J0X2xlYWZidWlsZChidWlsZHN0YXRlLnNwb29sLCBidWlsZHN0YXRlLnNwb29sMiwg aW5kZXhJbmZvLT5paV9Db25jdXJyZW50KTsKIAlfYnRfc3Bvb2xkZXN0cm95KGJ1aWxkc3RhdGUu c3Bvb2wpOwogCWlmIChidWlsZHN0YXRlLnNwb29sMikKIAkJX2J0X3Nwb29sZGVzdHJveShidWls ZHN0YXRlLnNwb29sMik7CiAJaWYgKGJ1aWxkc3RhdGUuYnRsZWFkZXIpCiAJCV9idF9lbmRfcGFy YWxsZWwoYnVpbGRzdGF0ZS5idGxlYWRlcik7Ci0JQXNzZXJ0KCFpbmRleEluZm8tPmlpX0NvbmN1 cnJlbnQgfHwgaW5kZXhJbmZvLT5paV9VbmlxdWUgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15 UHJvYy0+eG1pbikpOworCUFzc2VydCghaW5kZXhJbmZvLT5paV9Db25jdXJyZW50IHx8ICFUcmFu c2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAogCXJlc3VsdCA9IChJbmRleEJ1aWxk UmVzdWx0ICopIHBhbGxvYyhzaXplb2YoSW5kZXhCdWlsZFJlc3VsdCkpOwogCkBAIC0zODEsNiAr Mzc5LDExIEBAIF9idF9zcG9vbHNfaGVhcHNjYW4oUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5k ZXgsIEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwKIAlidHNwb29sLT5pbmRleCA9IGluZGV4Owog CWJ0c3Bvb2wtPmlzdW5pcXVlID0gaW5kZXhJbmZvLT5paV9VbmlxdWU7CiAJYnRzcG9vbC0+bnVs bHNfbm90X2Rpc3RpbmN0ID0gaW5kZXhJbmZvLT5paV9OdWxsc05vdERpc3RpbmN0OworICAgIC8q CisgICAgICogV2UgbmVlZCB0byBpZ25vcmUgZGVhZCB0dXBsZXMgZm9yIHVuaXF1ZSBjaGVja3Mg aW4gY2FzZSBvZiBjb25jdXJyZW50IGJ1aWxkLgorICAgICAqIEl0IGlzIHJlcXVpcmVkIGJlY2F1 c2Ugb3IgcGVyaW9kaWMgcmVzZXQgb2Ygc25hcHNob3QuCisgICAgICovCisJYnRzcG9vbC0+dW5p cXVlX2RlYWRfaWdub3JlZCA9IGluZGV4SW5mby0+aWlfQ29uY3VycmVudCAmJiBpbmRleEluZm8t PmlpX1VuaXF1ZTsKIAogCS8qIFNhdmUgYXMgcHJpbWFyeSBzcG9vbCAqLwogCWJ1aWxkc3RhdGUt PnNwb29sID0gYnRzcG9vbDsKQEAgLTQyOSw4ICs0MzIsOSBAQCBfYnRfc3Bvb2xzX2hlYXBzY2Fu KFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUs CiAJICogdGhlIHVzZSBvZiBwYXJhbGxlbGlzbSBvciBhbnkgb3RoZXIgZmFjdG9yLgogCSAqLwog CWJ1aWxkc3RhdGUtPnNwb29sLT5zb3J0c3RhdGUgPQotCQl0dXBsZXNvcnRfYmVnaW5faW5kZXhf YnRyZWUoaGVhcCwgaW5kZXgsIGJ1aWxkc3RhdGUtPmlzdW5pcXVlLAotCQkJCQkJCQkJYnVpbGRz dGF0ZS0+bnVsbHNfbm90X2Rpc3RpbmN0LAorCQl0dXBsZXNvcnRfYmVnaW5faW5kZXhfYnRyZWUo aGVhcCwgaW5kZXgsIGJ0c3Bvb2wtPmlzdW5pcXVlLAorCQkJCQkJCQkJYnRzcG9vbC0+bnVsbHNf bm90X2Rpc3RpbmN0LAorCQkJCQkJCQkJYnRzcG9vbC0+dW5pcXVlX2RlYWRfaWdub3JlZCwKIAkJ CQkJCQkJCW1haW50ZW5hbmNlX3dvcmtfbWVtLCBjb29yZGluYXRlLAogCQkJCQkJCQkJVFVQTEVT T1JUX05PTkUpOwogCkBAIC00MzgsOCArNDQyLDEyIEBAIF9idF9zcG9vbHNfaGVhcHNjYW4oUmVs YXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsIEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwKIAkg KiBJZiBidWlsZGluZyBhIHVuaXF1ZSBpbmRleCwgcHV0IGRlYWQgdHVwbGVzIGluIGEgc2Vjb25k IHNwb29sIHRvIGtlZXAKIAkgKiB0aGVtIG91dCBvZiB0aGUgdW5pcXVlbmVzcyBjaGVjay4gIFdl IGV4cGVjdCB0aGF0IHRoZSBzZWNvbmQgc3Bvb2wgKGZvcgogCSAqIGRlYWQgdHVwbGVzKSB3b24n dCBnZXQgdmVyeSBmdWxsLCBzbyB3ZSBnaXZlIGl0IG9ubHkgd29ya19tZW0uCisJICoKKwkgKiBJ biBjYXNlIG9mIGNvbmN1cnJlbnQgYnVpbGQgZGVhZCB0dXBsZXMgYXJlIG5vdCBuZWVkIHRvIGJl IHB1dCBpbnRvIGluZGV4CisJICogc2luY2Ugd2Ugd2FpdCBmb3IgYWxsIHNuYXBzaG90cyBvbGRl ciB0aGFuIHJlZmVyZW5jZSBzbmFwc2hvdCBkdXJpbmcgdGhlCisJICogdmFsaWRhdGlvbiBwaGFz ZS4KIAkgKi8KLQlpZiAoaW5kZXhJbmZvLT5paV9VbmlxdWUpCisJaWYgKGluZGV4SW5mby0+aWlf VW5pcXVlICYmICFpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQpCiAJewogCQlCVFNwb29sICAgICpi dHNwb29sMiA9IChCVFNwb29sICopIHBhbGxvYzAoc2l6ZW9mKEJUU3Bvb2wpKTsKIAkJU29ydENv b3JkaW5hdGUgY29vcmRpbmF0ZTIgPSBOVUxMOwpAQCAtNDcwLDcgKzQ3OCw3IEBAIF9idF9zcG9v bHNfaGVhcHNjYW4oUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsIEJUQnVpbGRTdGF0ZSAq YnVpbGRzdGF0ZSwKIAkJICogZnVsbCwgc28gd2UgZ2l2ZSBpdCBvbmx5IHdvcmtfbWVtCiAJCSAq LwogCQlidWlsZHN0YXRlLT5zcG9vbDItPnNvcnRzdGF0ZSA9Ci0JCQl0dXBsZXNvcnRfYmVnaW5f aW5kZXhfYnRyZWUoaGVhcCwgaW5kZXgsIGZhbHNlLCBmYWxzZSwgd29ya19tZW0sCisJCQl0dXBs ZXNvcnRfYmVnaW5faW5kZXhfYnRyZWUoaGVhcCwgaW5kZXgsIGZhbHNlLCBmYWxzZSwgZmFsc2Us IHdvcmtfbWVtLAogCQkJCQkJCQkJCWNvb3JkaW5hdGUyLCBUVVBMRVNPUlRfTk9ORSk7CiAJfQog CkBAIC00ODMsNyArNDkxLDcgQEAgX2J0X3Nwb29sc19oZWFwc2NhbihSZWxhdGlvbiBoZWFwLCBS ZWxhdGlvbiBpbmRleCwgQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLAogCQlyZWx0dXBsZXMgPSBf YnRfcGFyYWxsZWxfaGVhcHNjYW4oYnVpbGRzdGF0ZSwKIAkJCQkJCQkJCQkgICZpbmRleEluZm8t PmlpX0Jyb2tlbkhvdENoYWluKTsKIAlJbnZhbGlkYXRlQ2F0YWxvZ1NuYXBzaG90KCk7Ci0JQXNz ZXJ0KCFpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgfHwgaW5kZXhJbmZvLT5paV9VbmlxdWUgfHwg IVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOworCUFzc2VydCghaW5kZXhJbmZv LT5paV9Db25jdXJyZW50IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsK IAogCS8qCiAJICogU2V0IHRoZSBwcm9ncmVzcyB0YXJnZXQgZm9yIHRoZSBuZXh0IHBoYXNlLiAg UmVzZXQgdGhlIGJsb2NrIG51bWJlcgpAQCAtNTM5LDcgKzU0Nyw3IEBAIF9idF9zcG9vbChCVFNw b29sICpidHNwb29sLCBJdGVtUG9pbnRlciBzZWxmLCBEYXR1bSAqdmFsdWVzLCBib29sICppc251 bGwpCiAgKiBjcmVhdGUgYW4gZW50aXJlIGJ0cmVlLgogICovCiBzdGF0aWMgdm9pZAotX2J0X2xl YWZidWlsZChCVFNwb29sICpidHNwb29sLCBCVFNwb29sICpidHNwb29sMiwgYm9vbCByZXNldF9z bmFwc2hvdHMpCitfYnRfbGVhZmJ1aWxkKEJUU3Bvb2wgKmJ0c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bv b2wyLCBib29sIGlzY29uY3VycmVudCkKIHsKIAlCVFdyaXRlU3RhdGUgd3N0YXRlOwogCkBAIC01 NjEsNyArNTY5LDcgQEAgX2J0X2xlYWZidWlsZChCVFNwb29sICpidHNwb29sLCBCVFNwb29sICpi dHNwb29sMiwgYm9vbCByZXNldF9zbmFwc2hvdHMpCiAJCQkJCQkJCQkgUFJPR1JFU1NfQlRSRUVf UEhBU0VfUEVSRk9STVNPUlRfMik7CiAJCXR1cGxlc29ydF9wZXJmb3Jtc29ydChidHNwb29sMi0+ c29ydHN0YXRlKTsKIAl9Ci0JQXNzZXJ0KCFyZXNldF9zbmFwc2hvdHMgfHwgIVRyYW5zYWN0aW9u SWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOworCUFzc2VydCghaXNjb25jdXJyZW50IHx8ICFUcmFu c2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAogCXdzdGF0ZS5oZWFwID0gYnRzcG9v bC0+aGVhcDsKIAl3c3RhdGUuaW5kZXggPSBidHNwb29sLT5pbmRleDsKQEAgLTU3NSw3ICs1ODMs NyBAQCBfYnRfbGVhZmJ1aWxkKEJUU3Bvb2wgKmJ0c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyLCBi b29sIHJlc2V0X3NuYXBzaG90cykKIAogCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJP R1JFU1NfQ1JFQVRFSURYX1NVQlBIQVNFLAogCQkJCQkJCQkgUFJPR1JFU1NfQlRSRUVfUEhBU0Vf TEVBRl9MT0FEKTsKLQlBc3NlcnQoIXJlc2V0X3NuYXBzaG90cyB8fCAhVHJhbnNhY3Rpb25JZElz VmFsaWQoTXlQcm9jLT54bWluKSk7CisJQXNzZXJ0KCFpc2NvbmN1cnJlbnQgfHwgIVRyYW5zYWN0 aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCV9idF9sb2FkKCZ3c3RhdGUsIGJ0c3Bvb2ws IGJ0c3Bvb2wyKTsKIH0KIApAQCAtMTE1NCwxMyArMTE2MiwxMTcgQEAgX2J0X2xvYWQoQlRXcml0 ZVN0YXRlICp3c3RhdGUsIEJUU3Bvb2wgKmJ0c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyKQogCVNv cnRTdXBwb3J0IHNvcnRLZXlzOwogCWludDY0CQl0dXBsZXNfZG9uZSA9IDA7CiAJYm9vbAkJZGVk dXBsaWNhdGU7CisJYm9vbAkJZmFpbF9vbl9hbGl2ZV9kdXBsaWNhdGU7CiAKIAl3c3RhdGUtPmJ1 bGtzdGF0ZSA9IHNtZ3JfYnVsa19zdGFydF9yZWwod3N0YXRlLT5pbmRleCwgTUFJTl9GT1JLTlVN KTsKIAogCWRlZHVwbGljYXRlID0gd3N0YXRlLT5pbnNrZXktPmFsbGVxdWFsaW1hZ2UgJiYgIWJ0 c3Bvb2wtPmlzdW5pcXVlICYmCiAJCUJUR2V0RGVkdXBsaWNhdGVJdGVtcyh3c3RhdGUtPmluZGV4 KTsKKwkvKgorCSAqIFRoZSB1bmlxdWVfZGVhZF9pZ25vcmVkIGRvZXMgbm90IGd1YXJhbnRlZSBh YnNlbmNlIG9mIG11bHRpcGxlIGFsaXZlCisJICogdHVwbGVzIHdpdGggc2FtZSB2YWx1ZXMgZXhp c3RzIGluIHRoZSBzcG9vbC4gU3VjaCB0aGluZyBtYXkgaGFwcGVuIGlmCisJICogYWxpdmUgdHVw bGVzIGFyZSBsb2NhdGVkIGJldHdlZW4gYSBmZXcgZGVhZCB0dXBsZXMsIGxpa2UgdGhpczogYWRk ZGEuCisJICovCisJZmFpbF9vbl9hbGl2ZV9kdXBsaWNhdGUgPSBidHNwb29sLT51bmlxdWVfZGVh ZF9pZ25vcmVkOwogCi0JaWYgKG1lcmdlKQorCWlmIChmYWlsX29uX2FsaXZlX2R1cGxpY2F0ZSkK Kwl7CisJCWJvb2wJc2Vlbl9hbGl2ZSA9IGZhbHNlLAorCQkJCXByZXZfdGVzdGVkID0gZmFsc2U7 CisJCUluZGV4VHVwbGUgcHJldiA9IE5VTEw7CisJCVR1cGxlVGFibGVTbG90IAkJKnNsb3QgPSBN YWtlU2luZ2xlVHVwbGVUYWJsZVNsb3QoUmVsYXRpb25HZXREZXNjcih3c3RhdGUtPmhlYXApLAor CQkJCQkJCQkJCQkJCQkJICAgJlRUU09wc0J1ZmZlckhlYXBUdXBsZSk7CisJCUluZGV4RmV0Y2hU YWJsZURhdGEgKmZldGNoID0gdGFibGVfaW5kZXhfZmV0Y2hfYmVnaW4od3N0YXRlLT5oZWFwKTsK KworCQlBc3NlcnQoYnRzcG9vbC0+aXN1bmlxdWUpOworCQlBc3NlcnQoIWJ0c3Bvb2wyKTsKKwor CQl3aGlsZSAoKGl0dXAgPSB0dXBsZXNvcnRfZ2V0aW5kZXh0dXBsZShidHNwb29sLT5zb3J0c3Rh dGUsIHRydWUpKSAhPSBOVUxMKQorCQl7CisJCQlib29sCXR1cGxlc19lcXVhbCA9IGZhbHNlOwor CisJCQkvKiBXaGVuIHdlIHNlZSBmaXJzdCB0dXBsZSwgY3JlYXRlIGZpcnN0IGluZGV4IHBhZ2Ug Ki8KKwkJCWlmIChzdGF0ZSA9PSBOVUxMKQorCQkJCXN0YXRlID0gX2J0X3BhZ2VzdGF0ZSh3c3Rh dGUsIDApOworCisJCQlpZiAocHJldiAhPSBOVUxMKSAvKiBpZiBpcyBub3QgdGhlIGZpcnN0IHR1 cGxlICovCisJCQl7CisJCQkJYm9vbAloYXNfbnVsbHMgPSBmYWxzZSwKKwkJCQkJCWNhbGxfYWdh aW4sIC8qIGp1c3QgdG8gcGFzcyBzb21ldGhpbmcgKi8KKwkJCQkJCWlnbm9yZWQsICAvKiBqdXN0 IHRvIHBhc3Mgc29tZXRoaW5nICovCisJCQkJCQlub3dfYWxpdmU7CisJCQkJSXRlbVBvaW50ZXJE YXRhIHRpZDsKKworCQkJCS8qIGlmIHRoaXMgdHVwbGVzIGVxdWFsIHRvIHByZXZpb3VzZSBvbmU/ ICovCisJCQkJaWYgKHdzdGF0ZS0+aW5za2V5LT5hbGxlcXVhbGltYWdlKQorCQkJCQl0dXBsZXNf ZXF1YWwgPSBfYnRfa2VlcF9uYXR0c19mYXN0KHdzdGF0ZS0+aW5kZXgsIHByZXYsIGl0dXAsICZo YXNfbnVsbHMpID4ga2V5c3o7CisJCQkJZWxzZQorCQkJCQl0dXBsZXNfZXF1YWwgPSBfYnRfa2Vl cF9uYXR0cyh3c3RhdGUtPmluZGV4LCBwcmV2LCBpdHVwLHdzdGF0ZS0+aW5za2V5LCAmaGFzX251 bGxzKSA+IGtleXN6OworCisJCQkJLyogaGFuZGxlIG51bGwgdmFsdWVzIGNvcnJlY3RseSAqLwor CQkJCWlmIChoYXNfbnVsbHMgJiYgIWJ0c3Bvb2wtPm51bGxzX25vdF9kaXN0aW5jdCkKKwkJCQkJ dHVwbGVzX2VxdWFsID0gZmFsc2U7CisKKwkJCQlpZiAodHVwbGVzX2VxdWFsKQorCQkJCXsKKwkJ CQkJLyogY2hlY2sgcHJldmlvdXMgdHVwbGUgaWYgbm90IHlldCAqLworCQkJCQlpZiAoIXByZXZf dGVzdGVkKQorCQkJCQl7CisJCQkJCQljYWxsX2FnYWluID0gZmFsc2U7CisJCQkJCQl0aWQgPSBw cmV2LT50X3RpZDsKKwkJCQkJCXNlZW5fYWxpdmUgPSB0YWJsZV9pbmRleF9mZXRjaF90dXBsZShm ZXRjaCwgJnRpZCwgU25hcHNob3RTZWxmLCBzbG90LCAmY2FsbF9hZ2FpbiwgJmlnbm9yZWQpOwor CQkJCQkJcHJldl90ZXN0ZWQgPSB0cnVlOworCQkJCQl9CisKKwkJCQkJY2FsbF9hZ2FpbiA9IGZh bHNlOworCQkJCQl0aWQgPSBpdHVwLT50X3RpZDsKKwkJCQkJbm93X2FsaXZlID0gdGFibGVfaW5k ZXhfZmV0Y2hfdHVwbGUoZmV0Y2gsICZ0aWQsIFNuYXBzaG90U2VsZiwgc2xvdCwgJmNhbGxfYWdh aW4sICZpZ25vcmVkKTsKKworCQkJCQkvKiBhcmUgbXVsdGlwbGUgYWxpdmUgdHVwbGVzIGRldGVj dGVkIGluIGVxdWFsIGdyb3VwPyAqLworCQkJCQlpZiAoc2Vlbl9hbGl2ZSAmJiBub3dfYWxpdmUp CisJCQkJCXsKKwkJCQkJCWNoYXIgKmtleV9kZXNjOworCQkJCQkJVHVwbGVEZXNjIHR1cERlcyA9 IFJlbGF0aW9uR2V0RGVzY3Iod3N0YXRlLT5pbmRleCk7CisJCQkJCQlib29sIGlzbnVsbFtJTkRF WF9NQVhfS0VZU107CisJCQkJCQlEYXR1bSB2YWx1ZXNbSU5ERVhfTUFYX0tFWVNdOworCisJCQkJ CQlpbmRleF9kZWZvcm1fdHVwbGUoaXR1cCwgdHVwRGVzLCB2YWx1ZXMsIGlzbnVsbCk7CisKKwkJ CQkJCWtleV9kZXNjID0gQnVpbGRJbmRleFZhbHVlRGVzY3JpcHRpb24od3N0YXRlLT5pbmRleCwg dmFsdWVzLCBpc251bGwpOworCisJCQkJCQkvKiBrZWVwIHRoaXMgbWVzc2FnZSBpbiBzeW5jIHdp dGggdGhlIHNhbWUgaW4gY29tcGFyZXR1cF9pbmRleF9idHJlZV90aWVicmVhayAqLworCQkJCQkJ ZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9VTklRVUVfVklPTEFUSU9O KSwKKwkJCQkJCQkJCQllcnJtc2coImNvdWxkIG5vdCBjcmVhdGUgdW5pcXVlIGluZGV4IFwiJXNc IiIsCisJCQkJCQkJCQkJCSAgIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHdzdGF0ZS0+aW5kZXgp KSwKKwkJCQkJCQkJCQlrZXlfZGVzYyA/IGVycmRldGFpbCgiS2V5ICVzIGlzIGR1cGxpY2F0ZWQu Iiwga2V5X2Rlc2MpIDoKKwkJCQkJCQkJCQllcnJkZXRhaWwoIkR1cGxpY2F0ZSBrZXlzIGV4aXN0 LiIpLAorCQkJCQkJCQkJCWVycnRhYmxlY29uc3RyYWludCh3c3RhdGUtPmhlYXAsCisJCQkJCQkJ CQkJCQkJCSAgIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHdzdGF0ZS0+aW5kZXgpKSkpOworCQkJ CQl9CisJCQkJCXNlZW5fYWxpdmUgfD0gbm93X2FsaXZlOworCQkJCX0KKwkJCX0KKworCQkJaWYg KCF0dXBsZXNfZXF1YWwpCisJCQl7CisJCQkJc2Vlbl9hbGl2ZSA9IGZhbHNlOworCQkJCXByZXZf dGVzdGVkID0gZmFsc2U7CisJCQl9CisKKwkJCV9idF9idWlsZGFkZCh3c3RhdGUsIHN0YXRlLCBp dHVwLCAwKTsKKwkJCWlmIChwcmV2KSBwZnJlZShwcmV2KTsKKwkJCXByZXYgPSBDb3B5SW5kZXhU dXBsZShpdHVwKTsKKworCQkJLyogUmVwb3J0IHByb2dyZXNzICovCisJCQlwZ3N0YXRfcHJvZ3Jl c3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NSRUFURUlEWF9UVVBMRVNfRE9ORSwKKwkJCQkJCQkJ CQkgKyt0dXBsZXNfZG9uZSk7CisJCX0KKwkJRXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xvdChz bG90KTsKKwkJdGFibGVfaW5kZXhfZmV0Y2hfZW5kKGZldGNoKTsKKwkJQXNzZXJ0KCFUcmFuc2Fj dGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKKwl9CisJZWxzZSBpZiAobWVyZ2UpCiAJewog CQkvKgogCQkgKiBBbm90aGVyIEJUU3Bvb2wgZm9yIGRlYWQgdHVwbGVzIGV4aXN0cy4gTm93IHdl IGhhdmUgdG8gbWVyZ2UKQEAgLTEzMjEsNyArMTQzMyw3IEBAIF9idF9sb2FkKEJUV3JpdGVTdGF0 ZSAqd3N0YXRlLCBCVFNwb29sICpidHNwb29sLCBCVFNwb29sICpidHNwb29sMikKIAkJCQkJCQkJ CQlJbnZhbGlkT2Zmc2V0TnVtYmVyKTsKIAkJCX0KIAkJCWVsc2UgaWYgKF9idF9rZWVwX25hdHRz X2Zhc3Qod3N0YXRlLT5pbmRleCwgZHN0YXRlLT5iYXNlLAotCQkJCQkJCQkJCSBpdHVwKSA+IGtl eXN6ICYmCisJCQkJCQkJCQkJIGl0dXAsIE5VTEwpID4ga2V5c3ogJiYKIAkJCQkJIF9idF9kZWR1 cF9zYXZlX2h0aWQoZHN0YXRlLCBpdHVwKSkKIAkJCXsKIAkJCQkvKgpAQCAtMTQxOCw3ICsxNTMw LDYgQEAgX2J0X2JlZ2luX3BhcmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBp c2NvbmN1cnJlbnQsIGludCByZXF1ZXN0KQogCUJ1ZmZlclVzYWdlICpidWZmZXJ1c2FnZTsKIAli b29sCQlsZWFkZXJwYXJ0aWNpcGF0ZXMgPSB0cnVlOwogCWJvb2wJCW5lZWRfcG9wX2FjdGl2ZV9z bmFwc2hvdCA9IHRydWU7Ci0JYm9vbAkJcmVzZXRfc25hcHNob3Q7CiAJaW50CQkJcXVlcnlsZW47 CiAKICNpZmRlZiBESVNBQkxFX0xFQURFUl9QQVJUSUNJUEFUSU9OCkBAIC0xNDM2LDIxICsxNTQ3 LDEyIEBAIF9idF9iZWdpbl9wYXJhbGxlbChCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIGJvb2wg aXNjb25jdXJyZW50LCBpbnQgcmVxdWVzdCkKIAogCXNjYW50dXBsZXNvcnRzdGF0ZXMgPSBsZWFk ZXJwYXJ0aWNpcGF0ZXMgPyByZXF1ZXN0ICsgMSA6IHJlcXVlc3Q7CiAKLSAgICAvKgotCSAqIEZv ciBjb25jdXJyZW50IG5vbi11bmlxdWUgaW5kZXggYnVpbGRzLCB3ZSBjYW4gcGVyaW9kaWNhbGx5 IHJlc2V0IHNuYXBzaG90cwotCSAqIHRvIGFsbG93IHRoZSB4bWluIGhvcml6b24gdG8gYWR2YW5j ZS4gVGhpcyBpcyBzYWZlIHNpbmNlIHRoZXNlIGJ1aWxkcyBkb24ndAotCSAqIHJlcXVpcmUgYSBj b25zaXN0ZW50IHZpZXcgYWNyb3NzIHRoZSBlbnRpcmUgc2Nhbi4gVW5pcXVlIGluZGV4ZXMgc3Rp bGwgbmVlZAotCSAqIGEgc3RhYmxlIHNuYXBzaG90IHRvIHByb3Blcmx5IGVuZm9yY2UgdW5pcXVl bmVzcyBjb25zdHJhaW50cy4KLSAgICAgKi8KLQlyZXNldF9zbmFwc2hvdCA9IGlzY29uY3VycmVu dCAmJiAhYnRzcG9vbC0+aXN1bmlxdWU7Ci0KIAkvKgogCSAqIFByZXBhcmUgZm9yIHNjYW4gb2Yg dGhlIGJhc2UgcmVsYXRpb24uICBJbiBhIG5vcm1hbCBpbmRleCBidWlsZCwgd2UgdXNlCiAJICog U25hcHNob3RBbnkgYmVjYXVzZSB3ZSBtdXN0IHJldHJpZXZlIGFsbCB0dXBsZXMgYW5kIGRvIG91 ciBvd24gdGltZQogCSAqIHF1YWwgY2hlY2tzIChiZWNhdXNlIHdlIGhhdmUgdG8gaW5kZXggUkVD RU5UTFlfREVBRCB0dXBsZXMpLiAgSW4gYQogCSAqIGNvbmN1cnJlbnQgYnVpbGQsIHdlIHRha2Ug YSByZWd1bGFyIE1WQ0Mgc25hcHNob3QgYW5kIGluZGV4IHdoYXRldmVyJ3MKLQkgKiBsaXZlIGFj Y29yZGluZyB0byB0aGF0LCB3aGlsZSB0aGF0IHNuYXBzaG90IG1heSBiZSByZXNldCBwZXJpb2Rp Y2FsbHkgaW4KLQkgKiBjYXNlIG9mIG5vbi11bmlxdWUgaW5kZXguCisJICogbGl2ZSBhY2NvcmRp bmcgdG8gdGhhdCwgd2hpbGUgdGhhdCBzbmFwc2hvdCBtYXkgYmUgcmVzZXQgcGVyaW9kaWNhbGx5 LgogCSAqLwogCWlmICghaXNjb25jdXJyZW50KQogCXsKQEAgLTE0NTgsMTYgKzE1NjAsMTYgQEAg X2J0X2JlZ2luX3BhcmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1 cnJlbnQsIGludCByZXF1ZXN0KQogCQlzbmFwc2hvdCA9IFNuYXBzaG90QW55OwogCQluZWVkX3Bv cF9hY3RpdmVfc25hcHNob3QgPSBmYWxzZTsKIAl9Ci0JZWxzZSBpZiAocmVzZXRfc25hcHNob3Qp CisJZWxzZQogCXsKKwkJLyoKKwkJICogRm9yIGNvbmN1cnJlbnQgaW5kZXggYnVpbGRzLCB3ZSBj YW4gcGVyaW9kaWNhbGx5IHJlc2V0IHNuYXBzaG90cyB0byBhbGxvdworCQkgKiB0aGUgeG1pbiBo b3Jpem9uIHRvIGFkdmFuY2UuIFRoaXMgaXMgc2FmZSBzaW5jZSB0aGVzZSBidWlsZHMgZG9uJ3QK KwkJICogcmVxdWlyZSBhIGNvbnNpc3RlbnQgdmlldyBhY3Jvc3MgdGhlIGVudGlyZSBzY2FuLgor CQkgKi8KIAkJc25hcHNob3QgPSBJbnZhbGlkU25hcHNob3Q7CiAJCVB1c2hBY3RpdmVTbmFwc2hv dChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOwogCX0KLQllbHNlCi0JewotCQlzbmFwc2hvdCA9 IFJlZ2lzdGVyU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKLQkJUHVzaEFjdGl2 ZVNuYXBzaG90KHNuYXBzaG90KTsKLQl9CiAKIAkvKgogCSAqIEVzdGltYXRlIHNpemUgZm9yIG91 ciBvd24gUEFSQUxMRUxfS0VZX0JUUkVFX1NIQVJFRCB3b3Jrc3BhY2UsIGFuZApAQCAtMTUzNyw2 ICsxNjM5LDcgQEAgX2J0X2JlZ2luX3BhcmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwg Ym9vbCBpc2NvbmN1cnJlbnQsIGludCByZXF1ZXN0KQogCWJ0c2hhcmVkLT5pbmRleHJlbGlkID0g UmVsYXRpb25HZXRSZWxpZChidHNwb29sLT5pbmRleCk7CiAJYnRzaGFyZWQtPmlzdW5pcXVlID0g YnRzcG9vbC0+aXN1bmlxdWU7CiAJYnRzaGFyZWQtPm51bGxzX25vdF9kaXN0aW5jdCA9IGJ0c3Bv b2wtPm51bGxzX25vdF9kaXN0aW5jdDsKKwlidHNoYXJlZC0+dW5pcXVlX2RlYWRfaWdub3JlZCA9 IGJ0c3Bvb2wtPnVuaXF1ZV9kZWFkX2lnbm9yZWQ7CiAJYnRzaGFyZWQtPmlzY29uY3VycmVudCA9 IGlzY29uY3VycmVudDsKIAlidHNoYXJlZC0+c2NhbnR1cGxlc29ydHN0YXRlcyA9IHNjYW50dXBs ZXNvcnRzdGF0ZXM7CiAJYnRzaGFyZWQtPnF1ZXJ5aWQgPSBwZ3N0YXRfZ2V0X215X3F1ZXJ5X2lk KCk7CkBAIC0xNTUxLDcgKzE2NTQsNyBAQCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRl ICpidWlsZHN0YXRlLCBib29sIGlzY29uY3VycmVudCwgaW50IHJlcXVlc3QpCiAJdGFibGVfcGFy YWxsZWxzY2FuX2luaXRpYWxpemUoYnRzcG9vbC0+aGVhcCwKIAkJCQkJCQkJICBQYXJhbGxlbFRh YmxlU2NhbkZyb21CVFNoYXJlZChidHNoYXJlZCksCiAJCQkJCQkJCSAgc25hcHNob3QsCi0JCQkJ CQkJCSAgcmVzZXRfc25hcHNob3QpOworCQkJCQkJCQkgIGlzY29uY3VycmVudCk7CiAKIAkvKgog CSAqIFN0b3JlIHNoYXJlZCB0dXBsZXNvcnQtcHJpdmF0ZSBzdGF0ZSwgZm9yIHdoaWNoIHdlIHJl c2VydmVkIHNwYWNlLgpAQCAtMTYzMSw3ICsxNzM0LDcgQEAgX2J0X2JlZ2luX3BhcmFsbGVsKEJU QnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1cnJlbnQsIGludCByZXF1ZXN0KQog CSAqIEluIGNhc2Ugb2YgY29uY3VycmVudCBidWlsZCBzbmFwc2hvdHMgYXJlIGdvaW5nIHRvIGJl IHJlc2V0IHBlcmlvZGljYWxseS4KIAkgKiBXYWl0IHVudGlsIGFsbCB3b3JrZXJzIGltcG9ydGVk IGluaXRpYWwgc25hcHNob3QuCiAJICovCi0JaWYgKHJlc2V0X3NuYXBzaG90KQorCWlmIChpc2Nv bmN1cnJlbnQpCiAJCVdhaXRGb3JQYXJhbGxlbFdvcmtlcnNUb0F0dGFjaChwY3h0LCB0cnVlKTsK IAogCS8qIEpvaW4gaGVhcCBzY2FuIG91cnNlbHZlcyAqLwpAQCAtMTY0Miw3ICsxNzQ1LDcgQEAg X2J0X2JlZ2luX3BhcmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1 cnJlbnQsIGludCByZXF1ZXN0KQogCSAqIENhbGxlciBuZWVkcyB0byB3YWl0IGZvciBhbGwgbGF1 bmNoZWQgd29ya2VycyB3aGVuIHdlIHJldHVybi4gIE1ha2UKIAkgKiBzdXJlIHRoYXQgdGhlIGZh aWx1cmUtdG8tc3RhcnQgY2FzZSB3aWxsIG5vdCBoYW5nIGZvcmV2ZXIuCiAJICovCi0JaWYgKCFy ZXNldF9zbmFwc2hvdCkKKwlpZiAoIWlzY29uY3VycmVudCkKIAkJV2FpdEZvclBhcmFsbGVsV29y a2Vyc1RvQXR0YWNoKHBjeHQsIGZhbHNlKTsKIAlpZiAobmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90 KQogCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwpAQCAtMTc0NSw2ICsxODQ4LDcgQEAgX2J0X2xlYWRl cl9wYXJ0aWNpcGF0ZV9hc193b3JrZXIoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlKQogCWxlYWRl cndvcmtlci0+aW5kZXggPSBidWlsZHN0YXRlLT5zcG9vbC0+aW5kZXg7CiAJbGVhZGVyd29ya2Vy LT5pc3VuaXF1ZSA9IGJ1aWxkc3RhdGUtPnNwb29sLT5pc3VuaXF1ZTsKIAlsZWFkZXJ3b3JrZXIt Pm51bGxzX25vdF9kaXN0aW5jdCA9IGJ1aWxkc3RhdGUtPnNwb29sLT5udWxsc19ub3RfZGlzdGlu Y3Q7CisJbGVhZGVyd29ya2VyLT51bmlxdWVfZGVhZF9pZ25vcmVkID0gYnVpbGRzdGF0ZS0+c3Bv b2wtPnVuaXF1ZV9kZWFkX2lnbm9yZWQ7CiAKIAkvKiBJbml0aWFsaXplIHNlY29uZCBzcG9vbCwg aWYgcmVxdWlyZWQgKi8KIAlpZiAoIWJ0bGVhZGVyLT5idHNoYXJlZC0+aXN1bmlxdWUpCkBAIC0x ODQ4LDExICsxOTUyLDEyIEBAIF9idF9wYXJhbGxlbF9idWlsZF9tYWluKGRzbV9zZWdtZW50ICpz ZWcsIHNobV90b2MgKnRvYykKIAlidHNwb29sLT5pbmRleCA9IGluZGV4UmVsOwogCWJ0c3Bvb2wt PmlzdW5pcXVlID0gYnRzaGFyZWQtPmlzdW5pcXVlOwogCWJ0c3Bvb2wtPm51bGxzX25vdF9kaXN0 aW5jdCA9IGJ0c2hhcmVkLT5udWxsc19ub3RfZGlzdGluY3Q7CisJYnRzcG9vbC0+dW5pcXVlX2Rl YWRfaWdub3JlZCA9IGJ0c2hhcmVkLT51bmlxdWVfZGVhZF9pZ25vcmVkOwogCiAJLyogTG9vayB1 cCBzaGFyZWQgc3RhdGUgcHJpdmF0ZSB0byB0dXBsZXNvcnQuYyAqLwogCXNoYXJlZHNvcnQgPSBz aG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVMX0tFWV9UVVBMRVNPUlQsIGZhbHNlKTsKIAl0dXBs ZXNvcnRfYXR0YWNoX3NoYXJlZChzaGFyZWRzb3J0LCBzZWcpOwotCWlmICghYnRzaGFyZWQtPmlz dW5pcXVlKQorCWlmICghYnRzaGFyZWQtPmlzdW5pcXVlIHx8IGJ0c2hhcmVkLT5pc2NvbmN1cnJl bnQpCiAJewogCQlidHNwb29sMiA9IE5VTEw7CiAJCXNoYXJlZHNvcnQyID0gTlVMTDsKQEAgLTE5 MzIsNiArMjAzNyw3IEBAIF9idF9wYXJhbGxlbF9zY2FuX2FuZF9zb3J0KEJUU3Bvb2wgKmJ0c3Bv b2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyLAogCQkJCQkJCQkJCQkJCSBidHNwb29sLT5pbmRleCwKIAkJ CQkJCQkJCQkJCQkgYnRzcG9vbC0+aXN1bmlxdWUsCiAJCQkJCQkJCQkJCQkJIGJ0c3Bvb2wtPm51 bGxzX25vdF9kaXN0aW5jdCwKKwkJCQkJCQkJCQkJCQkgYnRzcG9vbC0+dW5pcXVlX2RlYWRfaWdu b3JlZCwKIAkJCQkJCQkJCQkJCQkgc29ydG1lbSwgY29vcmRpbmF0ZSwKIAkJCQkJCQkJCQkJCQkg VFVQTEVTT1JUX05PTkUpOwogCkBAIC0xOTU0LDE0ICsyMDYwLDEyIEBAIF9idF9wYXJhbGxlbF9z Y2FuX2FuZF9zb3J0KEJUU3Bvb2wgKmJ0c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyLAogCQljb29y ZGluYXRlMi0+blBhcnRpY2lwYW50cyA9IC0xOwogCQljb29yZGluYXRlMi0+c2hhcmVkc29ydCA9 IHNoYXJlZHNvcnQyOwogCQlidHNwb29sMi0+c29ydHN0YXRlID0KLQkJCXR1cGxlc29ydF9iZWdp bl9pbmRleF9idHJlZShidHNwb29sLT5oZWFwLCBidHNwb29sLT5pbmRleCwgZmFsc2UsIGZhbHNl LAorCQkJdHVwbGVzb3J0X2JlZ2luX2luZGV4X2J0cmVlKGJ0c3Bvb2wtPmhlYXAsIGJ0c3Bvb2wt PmluZGV4LCBmYWxzZSwgZmFsc2UsIGZhbHNlLAogCQkJCQkJCQkJCU1pbihzb3J0bWVtLCB3b3Jr X21lbSksIGNvb3JkaW5hdGUyLAogCQkJCQkJCQkJCWZhbHNlKTsKIAl9CiAKIAkvKiBGaWxsIGlu IGJ1aWxkc3RhdGUgZm9yIF9idF9idWlsZF9jYWxsYmFjaygpICovCi0JYnVpbGRzdGF0ZS5pc3Vu aXF1ZSA9IGJ0c2hhcmVkLT5pc3VuaXF1ZTsKLQlidWlsZHN0YXRlLm51bGxzX25vdF9kaXN0aW5j dCA9IGJ0c2hhcmVkLT5udWxsc19ub3RfZGlzdGluY3Q7CiAJYnVpbGRzdGF0ZS5oYXZlZGVhZCA9 IGZhbHNlOwogCWJ1aWxkc3RhdGUuaGVhcCA9IGJ0c3Bvb2wtPmhlYXA7CiAJYnVpbGRzdGF0ZS5z cG9vbCA9IGJ0c3Bvb2w7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25i dHNwbGl0bG9jLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNwbGl0bG9jLmMKaW5k ZXggZTZjOWFhYTA0NTQuLjdjYjFmM2UxYmM2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3MvbmJ0cmVlL25idHNwbGl0bG9jLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9u YnRzcGxpdGxvYy5jCkBAIC02ODcsNyArNjg3LDcgQEAgX2J0X2FmdGVybmV3aXRlbW9mZihGaW5k U3BsaXREYXRhICpzdGF0ZSwgT2Zmc2V0TnVtYmVyIG1heG9mZiwKIAl7CiAJCWl0ZW1pZCA9IFBh Z2VHZXRJdGVtSWQoc3RhdGUtPm9yaWdwYWdlLCBtYXhvZmYpOwogCQl0dXAgPSAoSW5kZXhUdXBs ZSkgUGFnZUdldEl0ZW0oc3RhdGUtPm9yaWdwYWdlLCBpdGVtaWQpOwotCQlrZWVwbmF0dHMgPSBf YnRfa2VlcF9uYXR0c19mYXN0KHN0YXRlLT5yZWwsIHR1cCwgc3RhdGUtPm5ld2l0ZW0pOworCQlr ZWVwbmF0dHMgPSBfYnRfa2VlcF9uYXR0c19mYXN0KHN0YXRlLT5yZWwsIHR1cCwgc3RhdGUtPm5l d2l0ZW0sIE5VTEwpOwogCiAJCWlmIChrZWVwbmF0dHMgPiAxICYmIGtlZXBuYXR0cyA8PSBua2V5 YXR0cykKIAkJewpAQCAtNzE4LDcgKzcxOCw3IEBAIF9idF9hZnRlcm5ld2l0ZW1vZmYoRmluZFNw bGl0RGF0YSAqc3RhdGUsIE9mZnNldE51bWJlciBtYXhvZmYsCiAJCSFfYnRfYWRqYWNlbnRodGlk KCZ0dXAtPnRfdGlkLCAmc3RhdGUtPm5ld2l0ZW0tPnRfdGlkKSkKIAkJcmV0dXJuIGZhbHNlOwog CS8qIENoZWNrIHNhbWUgY29uZGl0aW9ucyBhcyByaWdodG1vc3QgaXRlbSBjYXNlLCB0b28gKi8K LQlrZWVwbmF0dHMgPSBfYnRfa2VlcF9uYXR0c19mYXN0KHN0YXRlLT5yZWwsIHR1cCwgc3RhdGUt Pm5ld2l0ZW0pOworCWtlZXBuYXR0cyA9IF9idF9rZWVwX25hdHRzX2Zhc3Qoc3RhdGUtPnJlbCwg dHVwLCBzdGF0ZS0+bmV3aXRlbSwgTlVMTCk7CiAKIAlpZiAoa2VlcG5hdHRzID4gMSAmJiBrZWVw bmF0dHMgPD0gbmtleWF0dHMpCiAJewpAQCAtOTY3LDcgKzk2Nyw3IEBAIF9idF9zdHJhdGVneShG aW5kU3BsaXREYXRhICpzdGF0ZSwgU3BsaXRQb2ludCAqbGVmdHBhZ2UsCiAJICogYXZvaWQgYXBw ZW5kaW5nIGEgaGVhcCBUSUQgaW4gbmV3IGhpZ2gga2V5LCB3ZSdyZSBkb25lLiAgRmluaXNoIHNw bGl0CiAJICogd2l0aCBkZWZhdWx0IHN0cmF0ZWd5IGFuZCBpbml0aWFsIHNwbGl0IGludGVydmFs LgogCSAqLwotCXBlcmZlY3RwZW5hbHR5ID0gX2J0X2tlZXBfbmF0dHNfZmFzdChzdGF0ZS0+cmVs LCBsZWZ0bW9zdCwgcmlnaHRtb3N0KTsKKwlwZXJmZWN0cGVuYWx0eSA9IF9idF9rZWVwX25hdHRz X2Zhc3Qoc3RhdGUtPnJlbCwgbGVmdG1vc3QsIHJpZ2h0bW9zdCwgTlVMTCk7CiAJaWYgKHBlcmZl Y3RwZW5hbHR5IDw9IGluZG5rZXlhdHRzKQogCQlyZXR1cm4gcGVyZmVjdHBlbmFsdHk7CiAKQEAg LTk4OCw3ICs5ODgsNyBAQCBfYnRfc3RyYXRlZ3koRmluZFNwbGl0RGF0YSAqc3RhdGUsIFNwbGl0 UG9pbnQgKmxlZnRwYWdlLAogCSAqIElmIHBhZ2UgaXMgZW50aXJlbHkgZnVsbCBvZiBkdXBsaWNh dGVzLCBhIHNpbmdsZSB2YWx1ZSBzdHJhdGVneSBzcGxpdAogCSAqIHdpbGwgYmUgcGVyZm9ybWVk LgogCSAqLwotCXBlcmZlY3RwZW5hbHR5ID0gX2J0X2tlZXBfbmF0dHNfZmFzdChzdGF0ZS0+cmVs LCBsZWZ0bW9zdCwgcmlnaHRtb3N0KTsKKwlwZXJmZWN0cGVuYWx0eSA9IF9idF9rZWVwX25hdHRz X2Zhc3Qoc3RhdGUtPnJlbCwgbGVmdG1vc3QsIHJpZ2h0bW9zdCwgTlVMTCk7CiAJaWYgKHBlcmZl Y3RwZW5hbHR5IDw9IGluZG5rZXlhdHRzKQogCXsKIAkJKnN0cmF0ZWd5ID0gU1BMSVRfTUFOWV9E VVBMSUNBVEVTOwpAQCAtMTAyNyw3ICsxMDI3LDcgQEAgX2J0X3N0cmF0ZWd5KEZpbmRTcGxpdERh dGEgKnN0YXRlLCBTcGxpdFBvaW50ICpsZWZ0cGFnZSwKIAkJaXRlbWlkID0gUGFnZUdldEl0ZW1J ZChzdGF0ZS0+b3JpZ3BhZ2UsIFBfSElLRVkpOwogCQloaWtleSA9IChJbmRleFR1cGxlKSBQYWdl R2V0SXRlbShzdGF0ZS0+b3JpZ3BhZ2UsIGl0ZW1pZCk7CiAJCXBlcmZlY3RwZW5hbHR5ID0gX2J0 X2tlZXBfbmF0dHNfZmFzdChzdGF0ZS0+cmVsLCBoaWtleSwKLQkJCQkJCQkJCQkJIHN0YXRlLT5u ZXdpdGVtKTsKKwkJCQkJCQkJCQkJIHN0YXRlLT5uZXdpdGVtLCBOVUxMKTsKIAkJaWYgKHBlcmZl Y3RwZW5hbHR5IDw9IGluZG5rZXlhdHRzKQogCQkJKnN0cmF0ZWd5ID0gU1BMSVRfU0lOR0xFX1ZB TFVFOwogCQllbHNlCkBAIC0xMTQ5LDcgKzExNDksNyBAQCBfYnRfc3BsaXRfcGVuYWx0eShGaW5k U3BsaXREYXRhICpzdGF0ZSwgU3BsaXRQb2ludCAqc3BsaXQpCiAJbGFzdGxlZnQgPSBfYnRfc3Bs aXRfbGFzdGxlZnQoc3RhdGUsIHNwbGl0KTsKIAlmaXJzdHJpZ2h0ID0gX2J0X3NwbGl0X2ZpcnN0 cmlnaHQoc3RhdGUsIHNwbGl0KTsKIAotCXJldHVybiBfYnRfa2VlcF9uYXR0c19mYXN0KHN0YXRl LT5yZWwsIGxhc3RsZWZ0LCBmaXJzdHJpZ2h0KTsKKwlyZXR1cm4gX2J0X2tlZXBfbmF0dHNfZmFz dChzdGF0ZS0+cmVsLCBsYXN0bGVmdCwgZmlyc3RyaWdodCwgTlVMTCk7CiB9CiAKIC8qCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHV0aWxzLmMgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvbmJ0cmVlL25idHV0aWxzLmMKaW5kZXggNjkzZTQzYzY3NGIuLmY5Njk1ZmJhOGI1 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHV0aWxzLmMKKysrIGIv c3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnR1dGlscy5jCkBAIC01MSw4ICs1MSw2IEBAIHN0 YXRpYyBib29sIF9idF9jaGVja19yb3djb21wYXJlKFNjYW5LZXkgc2tleSwKIAkJCQkJCQkJIFNj YW5EaXJlY3Rpb24gZGlyLCBib29sICpjb250aW51ZXNjYW4pOwogc3RhdGljIHZvaWQgX2J0X2No ZWNra2V5c19sb29rX2FoZWFkKEluZGV4U2NhbkRlc2Mgc2NhbiwgQlRSZWFkUGFnZVN0YXRlICpw c3RhdGUsCiAJCQkJCQkJCQkgaW50IHR1cG5hdHRzLCBUdXBsZURlc2MgdHVwZGVzYyk7Ci1zdGF0 aWMgaW50CV9idF9rZWVwX25hdHRzKFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBsZSBsYXN0bGVmdCwK LQkJCQkJCSAgIEluZGV4VHVwbGUgZmlyc3RyaWdodCwgQlRTY2FuSW5zZXJ0IGl0dXBfa2V5KTsK IAogCiAvKgpAQCAtMjgyOCw3ICsyODI2LDcgQEAgX2J0X3RydW5jYXRlKFJlbGF0aW9uIHJlbCwg SW5kZXhUdXBsZSBsYXN0bGVmdCwgSW5kZXhUdXBsZSBmaXJzdHJpZ2h0LAogCUFzc2VydCghQlRy ZWVUdXBsZUlzUGl2b3QobGFzdGxlZnQpICYmICFCVHJlZVR1cGxlSXNQaXZvdChmaXJzdHJpZ2h0 KSk7CiAKIAkvKiBEZXRlcm1pbmUgaG93IG1hbnkgYXR0cmlidXRlcyBtdXN0IGJlIGtlcHQgaW4g dHJ1bmNhdGVkIHR1cGxlICovCi0Ja2VlcG5hdHRzID0gX2J0X2tlZXBfbmF0dHMocmVsLCBsYXN0 bGVmdCwgZmlyc3RyaWdodCwgaXR1cF9rZXkpOworCWtlZXBuYXR0cyA9IF9idF9rZWVwX25hdHRz KHJlbCwgbGFzdGxlZnQsIGZpcnN0cmlnaHQsIGl0dXBfa2V5LCBOVUxMKTsKIAogI2lmZGVmIERF QlVHX05PX1RSVU5DQVRFCiAJLyogRm9yY2UgdHJ1bmNhdGlvbiB0byBiZSBpbmVmZmVjdGl2ZSBm b3IgdGVzdGluZyBwdXJwb3NlcyAqLwpAQCAtMjk0NiwxNyArMjk0NCwyNCBAQCBfYnRfdHJ1bmNh dGUoUmVsYXRpb24gcmVsLCBJbmRleFR1cGxlIGxhc3RsZWZ0LCBJbmRleFR1cGxlIGZpcnN0cmln aHQsCiAvKgogICogX2J0X2tlZXBfbmF0dHMgLSBob3cgbWFueSBrZXkgYXR0cmlidXRlcyB0byBr ZWVwIHdoZW4gdHJ1bmNhdGluZy4KICAqCisgKiBUaGlzIGlzIGV4cG9ydGVkIHRvIGJlIHVzZWQg YXMgY29tcGFyaXNvbiBmdW5jdGlvbiBkdXJpbmcgY29uY3VycmVudAorICogdW5pcXVlIGluZGV4 IGJ1aWxkIGluIGNhc2UgX2J0X2tlZXBfbmF0dHNfZmFzdCBpcyBub3Qgc3VpdGFibGUgYmVjYXVz ZQorICogY29sbGF0aW9uIGlzIG5vdCAiYWxsZXF1YWxpbWFnZSIvZGVkdXBsaWNhdGlvbi1zYWZl LgorICoKICAqIENhbGxlciBwcm92aWRlcyB0d28gdHVwbGVzIHRoYXQgZW5jbG9zZSBhIHNwbGl0 IHBvaW50LiAgQ2FsbGVyJ3MgaW5zZXJ0aW9uCiAgKiBzY2Fua2V5IGlzIHVzZWQgdG8gY29tcGFy ZSB0aGUgdHVwbGVzOyB0aGUgc2NhbmtleSdzIGFyZ3VtZW50IHZhbHVlcyBhcmUKICAqIG5vdCBj b25zaWRlcmVkIGhlcmUuCiAgKgorICogaGFzbnVsbHMgdmFsdWUgc2V0IHRvIHRydWUgaW4gY2Fz ZSBvZiBhbnkgbnVsbCBjb2x1bW4gaW4gYW55IHR1cGxlLgorICoKICAqIFRoaXMgY2FuIHJldHVy biBhIG51bWJlciBvZiBhdHRyaWJ1dGVzIHRoYXQgaXMgb25lIGdyZWF0ZXIgdGhhbiB0aGUKICAq IG51bWJlciBvZiBrZXkgYXR0cmlidXRlcyBmb3IgdGhlIGluZGV4IHJlbGF0aW9uLiAgVGhpcyBp bmRpY2F0ZXMgdGhhdCB0aGUKICAqIGNhbGxlciBtdXN0IHVzZSBhIGhlYXAgVElEIGFzIGEgdW5p cXVlLWlmaWVyIGluIG5ldyBwaXZvdCB0dXBsZS4KICAqLwotc3RhdGljIGludAoraW50CiBfYnRf a2VlcF9uYXR0cyhSZWxhdGlvbiByZWwsIEluZGV4VHVwbGUgbGFzdGxlZnQsIEluZGV4VHVwbGUg Zmlyc3RyaWdodCwKLQkJCSAgIEJUU2Nhbkluc2VydCBpdHVwX2tleSkKKwkJCSAgIEJUU2Nhbklu c2VydCBpdHVwX2tleSwKKwkJCSAgIGJvb2wgKmhhc251bGxzKQogewogCWludAkJCW5rZXlhdHRz ID0gSW5kZXhSZWxhdGlvbkdldE51bWJlck9mS2V5QXR0cmlidXRlcyhyZWwpOwogCVR1cGxlRGVz YwlpdHVwZGVzYyA9IFJlbGF0aW9uR2V0RGVzY3IocmVsKTsKQEAgLTI5ODIsNiArMjk4Nyw4IEBA IF9idF9rZWVwX25hdHRzKFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBsZSBsYXN0bGVmdCwgSW5kZXhU dXBsZSBmaXJzdHJpZ2h0LAogCiAJCWRhdHVtMSA9IGluZGV4X2dldGF0dHIobGFzdGxlZnQsIGF0 dG51bSwgaXR1cGRlc2MsICZpc051bGwxKTsKIAkJZGF0dW0yID0gaW5kZXhfZ2V0YXR0cihmaXJz dHJpZ2h0LCBhdHRudW0sIGl0dXBkZXNjLCAmaXNOdWxsMik7CisJCWlmIChoYXNudWxscykKKwkJ CSgqaGFzbnVsbHMpIHw9IChpc051bGwxIHx8IGlzTnVsbDIpOwogCiAJCWlmIChpc051bGwxICE9 IGlzTnVsbDIpCiAJCQlicmVhazsKQEAgLTMwMDEsNyArMzAwOCw3IEBAIF9idF9rZWVwX25hdHRz KFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBsZSBsYXN0bGVmdCwgSW5kZXhUdXBsZSBmaXJzdHJpZ2h0 LAogCSAqIGV4cGVjdGVkIGluIGFuIGFsbGVxdWFsaW1hZ2UgaW5kZXguCiAJICovCiAJQXNzZXJ0 KCFpdHVwX2tleS0+YWxsZXF1YWxpbWFnZSB8fAotCQkgICBrZWVwbmF0dHMgPT0gX2J0X2tlZXBf bmF0dHNfZmFzdChyZWwsIGxhc3RsZWZ0LCBmaXJzdHJpZ2h0KSk7CisJCSAgIGtlZXBuYXR0cyA9 PSBfYnRfa2VlcF9uYXR0c19mYXN0KHJlbCwgbGFzdGxlZnQsIGZpcnN0cmlnaHQsIE5VTEwpKTsK IAogCXJldHVybiBrZWVwbmF0dHM7CiB9CkBAIC0zMDEyLDcgKzMwMTksOCBAQCBfYnRfa2VlcF9u YXR0cyhSZWxhdGlvbiByZWwsIEluZGV4VHVwbGUgbGFzdGxlZnQsIEluZGV4VHVwbGUgZmlyc3Ry aWdodCwKICAqIFRoaXMgaXMgZXhwb3J0ZWQgc28gdGhhdCBhIGNhbmRpZGF0ZSBzcGxpdCBwb2lu dCBjYW4gaGF2ZSBpdHMgZWZmZWN0IG9uCiAgKiBzdWZmaXggdHJ1bmNhdGlvbiBpbmV4cGVuc2l2 ZWx5IGV2YWx1YXRlZCBhaGVhZCBvZiB0aW1lIHdoZW4gZmluZGluZyBhCiAgKiBzcGxpdCBsb2Nh dGlvbi4gIEEgbmFpdmUgYml0d2lzZSBhcHByb2FjaCB0byBkYXR1bSBjb21wYXJpc29ucyBpcyB1 c2VkIHRvCi0gKiBzYXZlIGN5Y2xlcy4KKyAqIHNhdmUgY3ljbGVzLiBBbHNvLCBpdCBtYXkgYmUg dXNlZCBhcyBjb21wYXJpc29uIGZ1bmN0aW9uIGR1cmluZyBjb25jdXJyZW50CisgKiBidWlsZCBv ZiB1bmlxdWUgaW5kZXguCiAgKgogICogVGhlIGFwcHJvYWNoIHRha2VuIGhlcmUgdXN1YWxseSBw cm92aWRlcyB0aGUgc2FtZSBhbnN3ZXIgYXMgX2J0X2tlZXBfbmF0dHMKICAqIHdpbGwgKGZvciB0 aGUgc2FtZSBwYWlyIG9mIHR1cGxlcyBmcm9tIGEgaGVhcGtleXNwYWNlIGluZGV4KSwgc2luY2Ug dGhlCkBAIC0zMDIxLDYgKzMwMjksOCBAQCBfYnRfa2VlcF9uYXR0cyhSZWxhdGlvbiByZWwsIElu ZGV4VHVwbGUgbGFzdGxlZnQsIEluZGV4VHVwbGUgZmlyc3RyaWdodCwKICAqICJlcXVhbCBpbWFn ZSIgY29sdW1ucywgcm91dGluZSBpcyBndWFyYW50ZWVkIHRvIGdpdmUgdGhlIHNhbWUgcmVzdWx0 IGFzCiAgKiBfYnRfa2VlcF9uYXR0cyB3b3VsZC4KICAqCisgKiBoYXNudWxscyB2YWx1ZSBzZXQg dG8gdHJ1ZSBpbiBjYXNlIG9mIGFueSBudWxsIGNvbHVtbiBpbiBhbnkgdHVwbGUuCisgKgogICog Q2FsbGVycyBjYW4gcmVseSBvbiB0aGUgZmFjdCB0aGF0IGF0dHJpYnV0ZXMgY29uc2lkZXJlZCBl cXVhbCBoZXJlIGFyZQogICogZGVmaW5pdGVseSBhbHNvIGVxdWFsIGFjY29yZGluZyB0byBfYnRf a2VlcF9uYXR0cywgZXZlbiB3aGVuIHRoZSBpbmRleCB1c2VzCiAgKiBhbiBvcGNsYXNzIG9yIGNv bGxhdGlvbiB0aGF0IGlzIG5vdCAiYWxsZXF1YWxpbWFnZSIvZGVkdXBsaWNhdGlvbi1zYWZlLgpA QCAtMzAyOSw3ICszMDM5LDggQEAgX2J0X2tlZXBfbmF0dHMoUmVsYXRpb24gcmVsLCBJbmRleFR1 cGxlIGxhc3RsZWZ0LCBJbmRleFR1cGxlIGZpcnN0cmlnaHQsCiAgKiBtb3JlIGJhbGFuY2VkIHNw bGl0IHBvaW50LgogICovCiBpbnQKLV9idF9rZWVwX25hdHRzX2Zhc3QoUmVsYXRpb24gcmVsLCBJ bmRleFR1cGxlIGxhc3RsZWZ0LCBJbmRleFR1cGxlIGZpcnN0cmlnaHQpCitfYnRfa2VlcF9uYXR0 c19mYXN0KFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBsZSBsYXN0bGVmdCwgSW5kZXhUdXBsZSBmaXJz dHJpZ2h0LAorCQkJCQlib29sICpoYXNudWxscykKIHsKIAlUdXBsZURlc2MJaXR1cGRlc2MgPSBS ZWxhdGlvbkdldERlc2NyKHJlbCk7CiAJaW50CQkJa2V5c3ogPSBJbmRleFJlbGF0aW9uR2V0TnVt YmVyT2ZLZXlBdHRyaWJ1dGVzKHJlbCk7CkBAIC0zMDQ2LDYgKzMwNTcsOCBAQCBfYnRfa2VlcF9u YXR0c19mYXN0KFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBsZSBsYXN0bGVmdCwgSW5kZXhUdXBsZSBm aXJzdHJpZ2h0KQogCiAJCWRhdHVtMSA9IGluZGV4X2dldGF0dHIobGFzdGxlZnQsIGF0dG51bSwg aXR1cGRlc2MsICZpc051bGwxKTsKIAkJZGF0dW0yID0gaW5kZXhfZ2V0YXR0cihmaXJzdHJpZ2h0 LCBhdHRudW0sIGl0dXBkZXNjLCAmaXNOdWxsMik7CisJCWlmIChoYXNudWxscykKKwkJCSpoYXNu dWxscyB8PSAoaXNOdWxsMSB8IGlzTnVsbDIpOwogCQlhdHQgPSBUdXBsZURlc2NDb21wYWN0QXR0 cihpdHVwZGVzYywgYXR0bnVtIC0gMSk7CiAKIAkJaWYgKGlzTnVsbDEgIT0gaXNOdWxsMikKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYyBiL3NyYy9iYWNrZW5kL2NhdGFs b2cvaW5kZXguYwppbmRleCBkYWNmZjk2MDVhZC4uNTNiZTEyNjlhZmYgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4 LmMKQEAgLTE1MzEsNyArMTUzMSw3IEBAIGluZGV4X2NvbmN1cnJlbnRseV9idWlsZChPaWQgaGVh cFJlbGF0aW9uSWQsCiAKIAkvKiBJbnZhbGlkYXRlIGNhdGFsb2cgc25hcHNob3QganVzdCBmb3Ig YXNzZXJ0ICovCiAJSW52YWxpZGF0ZUNhdGFsb2dTbmFwc2hvdCgpOwotCUFzc2VydChpbmRleElu Zm8tPmlpX1VuaXF1ZSB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CisJ QXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAogCS8qIFJvbGwg YmFjayBhbnkgR1VDIGNoYW5nZXMgZXhlY3V0ZWQgYnkgaW5kZXggZnVuY3Rpb25zICovCiAJQXRF T1hhY3RfR1VDKGZhbHNlLCBzYXZlX25lc3RsZXZlbCk7CkBAIC0zMjk2LDkgKzMyOTYsOSBAQCBJ bmRleENoZWNrRXhjbHVzaW9uKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKICAqIGlmIHdlIHVzZWQg SGVhcFR1cGxlU2F0aXNmaWVzVmFjdXVtKS4gIFRoaXMgbGVhdmVzIHVzIHdpdGggYW4gaW5kZXgg dGhhdAogICogZG9lcyBub3QgY29udGFpbiBhbnkgdHVwbGVzIGFkZGVkIHRvIHRoZSB0YWJsZSB3 aGlsZSB3ZSBidWlsdCB0aGUgaW5kZXguCiAgKgotICogRnVydGhlcm1vcmUsIGluIGNhc2Ugb2Yg bm9uLXVuaXF1ZSBpbmRleCB3ZSBzZXQgU09fUkVTRVRfU05BUFNIT1QgZm9yIHRoZQotICogc2Nh biwgd2hpY2ggY2F1c2VzIG5ldyBzbmFwc2hvdCB0byBiZSBzZXQgYXMgYWN0aXZlIGV2ZXJ5IHNv IG9mdGVuLiBUaGUgcmVhc29uCi0gKiBmb3IgdGhhdCBpcyB0byBwcm9wYWdhdGUgdGhlIHhtaW4g aG9yaXpvbiBmb3J3YXJkLgorICogRnVydGhlcm1vcmUsIHdlIHNldCBTT19SRVNFVF9TTkFQU0hP VCBmb3IgdGhlIHNjYW4sIHdoaWNoIGNhdXNlcyBuZXcKKyAqIHNuYXBzaG90IHRvIGJlIHNldCBh cyBhY3RpdmUgZXZlcnkgc28gb2Z0ZW4uIFRoZSByZWFzb24gIGZvciB0aGF0IGlzIHRvCisgKiBw cm9wYWdhdGUgdGhlIHhtaW4gaG9yaXpvbiBmb3J3YXJkLgogICoKICAqIE5leHQsIHdlIG1hcmsg dGhlIGluZGV4ICJpbmRpc3JlYWR5IiAoYnV0IHN0aWxsIG5vdCAiaW5kaXN2YWxpZCIpIGFuZAog ICogY29tbWl0IHRoZSBzZWNvbmQgdHJhbnNhY3Rpb24gYW5kIHN0YXJ0IGEgdGhpcmQuICBBZ2Fp biB3ZSB3YWl0IGZvciBhbGwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4 Y21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKaW5kZXggOWVkZGViOTMz MzguLjVlYmM1MDgzMWJlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNt ZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYwpAQCAtMTcwMCw4ICsx NzAwLDggQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJICogY2hhaW5zIGNhbiBiZSBjcmVh dGVkIHdoZXJlIHRoZSBuZXcgdHVwbGUgYW5kIHRoZSBvbGQgdHVwbGUgaW4gdGhlCiAJICogY2hh aW4gaGF2ZSBkaWZmZXJlbnQgaW5kZXgga2V5cy4KIAkgKgotCSAqIFdlIGJ1aWxkIHRoZSBpbmRl eCB1c2luZyBhbGwgdHVwbGVzIHRoYXQgYXJlIHZpc2libGUgdXNpbmcgc2luZ2xlIG9yCi0JICog bXVsdGlwbGUgcmVmcmVzaGluZyBzbmFwc2hvdHMuIFdlIGNhbiBiZSBzdXJlIHRoYXQgYW55IEhP VCB1cGRhdGVzIHRvCisJICogV2UgYnVpbGQgdGhlIGluZGV4IHVzaW5nIGFsbCB0dXBsZXMgdGhh dCBhcmUgdmlzaWJsZSB1c2luZyBtdWx0aXBsZQorCSAqIHJlZnJlc2hpbmcgc25hcHNob3RzLiBX ZSBjYW4gYmUgc3VyZSB0aGF0IGFueSBIT1QgdXBkYXRlcyB0bwogCSAqIHRoZXNlIHR1cGxlcyB3 aWxsIGJlIGNvbXBhdGlibGUgd2l0aCB0aGUgaW5kZXgsIHNpbmNlIGFueSB1cGRhdGVzIG1hZGUK IAkgKiBieSB0cmFuc2FjdGlvbnMgdGhhdCBkaWRuJ3Qga25vdyBhYm91dCB0aGUgaW5kZXggYXJl IG5vdyBjb21taXR0ZWQgb3IKIAkgKiByb2xsZWQgYmFjay4gIFRodXMsIGVhY2ggdmlzaWJsZSB0 dXBsZSBpcyBlaXRoZXIgdGhlIGVuZCBvZiBpdHMKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0 aWxzL3NvcnQvdHVwbGVzb3J0dmFyaWFudHMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL3NvcnQvdHVw bGVzb3J0dmFyaWFudHMuYwppbmRleCA5MTNjNGVmNDU1ZS4uMGIyNTkyNmJjNTYgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3V0aWxzL3NvcnQvdHVwbGVzb3J0dmFyaWFudHMuYworKysgYi9zcmMv YmFja2VuZC91dGlscy9zb3J0L3R1cGxlc29ydHZhcmlhbnRzLmMKQEAgLTMwLDYgKzMwLDcgQEAK ICNpbmNsdWRlICJ1dGlscy9ndWMuaCIKICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKICNp bmNsdWRlICJ1dGlscy90dXBsZXNvcnQuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKIAog CiAvKiBzb3J0LXR5cGUgY29kZXMgZm9yIHNvcnRfX3N0YXJ0IHByb2JlcyAqLwpAQCAtMTIzLDYg KzEyNCw3IEBAIHR5cGVkZWYgc3RydWN0CiAKIAlib29sCQllbmZvcmNlVW5pcXVlOwkvKiBjb21w bGFpbiBpZiB3ZSBmaW5kIGR1cGxpY2F0ZSB0dXBsZXMgKi8KIAlib29sCQl1bmlxdWVOdWxsc05v dERpc3RpbmN0OyAvKiB1bmlxdWUgY29uc3RyYWludCBudWxsIHRyZWF0bWVudCAqLworCWJvb2wJ CXVuaXF1ZURlYWRJZ25vcmVkOyAvKiBpZ25vcmUgZGVhZCB0dXBsZXMgaW4gdW5pcXVlIGNoZWNr ICovCiB9IFR1cGxlc29ydEluZGV4QlRyZWVBcmc7CiAKIC8qCkBAIC0zNDksNiArMzUxLDcgQEAg dHVwbGVzb3J0X2JlZ2luX2luZGV4X2J0cmVlKFJlbGF0aW9uIGhlYXBSZWwsCiAJCQkJCQkJUmVs YXRpb24gaW5kZXhSZWwsCiAJCQkJCQkJYm9vbCBlbmZvcmNlVW5pcXVlLAogCQkJCQkJCWJvb2wg dW5pcXVlTnVsbHNOb3REaXN0aW5jdCwKKwkJCQkJCQlib29sIHVuaXF1ZURlYWRJZ25vcmVkLAog CQkJCQkJCWludCB3b3JrTWVtLAogCQkJCQkJCVNvcnRDb29yZGluYXRlIGNvb3JkaW5hdGUsCiAJ CQkJCQkJaW50IHNvcnRvcHQpCkBAIC0zOTEsNiArMzk0LDcgQEAgdHVwbGVzb3J0X2JlZ2luX2lu ZGV4X2J0cmVlKFJlbGF0aW9uIGhlYXBSZWwsCiAJYXJnLT5pbmRleC5pbmRleFJlbCA9IGluZGV4 UmVsOwogCWFyZy0+ZW5mb3JjZVVuaXF1ZSA9IGVuZm9yY2VVbmlxdWU7CiAJYXJnLT51bmlxdWVO dWxsc05vdERpc3RpbmN0ID0gdW5pcXVlTnVsbHNOb3REaXN0aW5jdDsKKwlhcmctPnVuaXF1ZURl YWRJZ25vcmVkID0gdW5pcXVlRGVhZElnbm9yZWQ7CiAKIAlpbmRleFNjYW5LZXkgPSBfYnRfbWtz Y2Fua2V5KGluZGV4UmVsLCBOVUxMKTsKIApAQCAtMTUyMCw2ICsxNTI0LDcgQEAgY29tcGFyZXR1 cF9pbmRleF9idHJlZV90aWVicmVhayhjb25zdCBTb3J0VHVwbGUgKmEsIGNvbnN0IFNvcnRUdXBs ZSAqYiwKIAkJRGF0dW0JCXZhbHVlc1tJTkRFWF9NQVhfS0VZU107CiAJCWJvb2wJCWlzbnVsbFtJ TkRFWF9NQVhfS0VZU107CiAJCWNoYXIJICAgKmtleV9kZXNjOworCQlib29sCQl1bmlxdWVDaGVj a0ZhaWwgPSB0cnVlOwogCiAJCS8qCiAJCSAqIFNvbWUgcmF0aGVyIGJyYWluLWRlYWQgaW1wbGVt ZW50YXRpb25zIG9mIHFzb3J0IChzdWNoIGFzIHRoZSBvbmUgaW4KQEAgLTE1MjksMTggKzE1MzQs NTggQEAgY29tcGFyZXR1cF9pbmRleF9idHJlZV90aWVicmVhayhjb25zdCBTb3J0VHVwbGUgKmEs IGNvbnN0IFNvcnRUdXBsZSAqYiwKIAkJICovCiAJCUFzc2VydCh0dXBsZTEgIT0gdHVwbGUyKTsK IAotCQlpbmRleF9kZWZvcm1fdHVwbGUodHVwbGUxLCB0dXBEZXMsIHZhbHVlcywgaXNudWxsKTsK LQotCQlrZXlfZGVzYyA9IEJ1aWxkSW5kZXhWYWx1ZURlc2NyaXB0aW9uKGFyZy0+aW5kZXguaW5k ZXhSZWwsIHZhbHVlcywgaXNudWxsKTsKLQotCQllcmVwb3J0KEVSUk9SLAotCQkJCShlcnJjb2Rl KEVSUkNPREVfVU5JUVVFX1ZJT0xBVElPTiksCi0JCQkJIGVycm1zZygiY291bGQgbm90IGNyZWF0 ZSB1bmlxdWUgaW5kZXggXCIlc1wiIiwKLQkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKGFy Zy0+aW5kZXguaW5kZXhSZWwpKSwKLQkJCQkga2V5X2Rlc2MgPyBlcnJkZXRhaWwoIktleSAlcyBp cyBkdXBsaWNhdGVkLiIsIGtleV9kZXNjKSA6Ci0JCQkJIGVycmRldGFpbCgiRHVwbGljYXRlIGtl eXMgZXhpc3QuIiksCi0JCQkJIGVycnRhYmxlY29uc3RyYWludChhcmctPmluZGV4LmhlYXBSZWws Ci0JCQkJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShhcmctPmluZGV4LmluZGV4UmVsKSkp KTsKKwkJLyogVGhpcyBpcyBmYWlsLWZhc3QgY2hlY2ssIHNlZSBfYnRfbG9hZCBmb3IgZGV0YWls cy4gKi8KKwkJaWYgKGFyZy0+dW5pcXVlRGVhZElnbm9yZWQpCisJCXsKKwkJCWJvb2wJYW55X3R1 cGxlX2RlYWQsCisJCQkJCWNhbGxfYWdhaW4gPSBmYWxzZSwKKwkJCQkJaWdub3JlZDsKKworCQkJ VHVwbGVUYWJsZVNsb3QJKnNsb3QgPSBNYWtlU2luZ2xlVHVwbGVUYWJsZVNsb3QoUmVsYXRpb25H ZXREZXNjcihhcmctPmluZGV4LmhlYXBSZWwpLAorCQkJCQkJCQkJCQkJCQkJICZUVFNPcHNCdWZm ZXJIZWFwVHVwbGUpOworCQkJSXRlbVBvaW50ZXJEYXRhIHRpZCA9IHR1cGxlMS0+dF90aWQ7CisK KwkJCUluZGV4RmV0Y2hUYWJsZURhdGEgKmZldGNoID0gdGFibGVfaW5kZXhfZmV0Y2hfYmVnaW4o YXJnLT5pbmRleC5oZWFwUmVsKTsKKwkJCWFueV90dXBsZV9kZWFkID0gIXRhYmxlX2luZGV4X2Zl dGNoX3R1cGxlKGZldGNoLCAmdGlkLCBTbmFwc2hvdFNlbGYsIHNsb3QsICZjYWxsX2FnYWluLCAm aWdub3JlZCk7CisKKwkJCWlmICghYW55X3R1cGxlX2RlYWQpCisJCQl7CisJCQkJY2FsbF9hZ2Fp biA9IGZhbHNlOworCQkJCXRpZCA9IHR1cGxlMi0+dF90aWQ7CisJCQkJYW55X3R1cGxlX2RlYWQg PSAhdGFibGVfaW5kZXhfZmV0Y2hfdHVwbGUoZmV0Y2gsICZ0dXBsZTItPnRfdGlkLCBTbmFwc2hv dFNlbGYsIHNsb3QsICZjYWxsX2FnYWluLAorCQkJCQkJCQkJCQkJCQkgICZpZ25vcmVkKTsKKwkJ CX0KKworCQkJaWYgKGFueV90dXBsZV9kZWFkKQorCQkJeworCQkJCWVsb2coREVCVUc1LCAic2tp cHBpbmcgZHVwbGljYXRlIHZhbHVlcyBiZWNhdXNlIHNvbWUgb2YgdGhlbSBhcmUgZGVhZDogKCV1 LCV1KSB2cyAoJXUsJXUpIiwKKwkJCQkJIEl0ZW1Qb2ludGVyR2V0QmxvY2tOdW1iZXIoJnR1cGxl MS0+dF90aWQpLAorCQkJCQkgSXRlbVBvaW50ZXJHZXRPZmZzZXROdW1iZXIoJnR1cGxlMS0+dF90 aWQpLAorCQkJCQkgSXRlbVBvaW50ZXJHZXRCbG9ja051bWJlcigmdHVwbGUyLT50X3RpZCksCisJ CQkJCSBJdGVtUG9pbnRlckdldE9mZnNldE51bWJlcigmdHVwbGUyLT50X3RpZCkpOworCisJCQkJ dW5pcXVlQ2hlY2tGYWlsID0gZmFsc2U7CisJCQl9CisJCQlFeGVjRHJvcFNpbmdsZVR1cGxlVGFi bGVTbG90KHNsb3QpOworCQkJdGFibGVfaW5kZXhfZmV0Y2hfZW5kKGZldGNoKTsKKwkJCUFzc2Vy dCghVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CisJCX0KKwkJaWYgKHVuaXF1 ZUNoZWNrRmFpbCkKKwkJeworCQkJaW5kZXhfZGVmb3JtX3R1cGxlKHR1cGxlMSwgdHVwRGVzLCB2 YWx1ZXMsIGlzbnVsbCk7CisKKwkJCWtleV9kZXNjID0gQnVpbGRJbmRleFZhbHVlRGVzY3JpcHRp b24oYXJnLT5pbmRleC5pbmRleFJlbCwgdmFsdWVzLCBpc251bGwpOworCisJCQkvKiBrZWVwIHRo aXMgZXJyb3IgbWVzc2FnZSBpbiBzeW5jIHdpdGggdGhlIHNhbWUgaW4gX2J0X2xvYWQgKi8KKwkJ CWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfVU5JUVVFX1ZJT0xBVElPTiks CisJCQkJCQkJZXJybXNnKCJjb3VsZCBub3QgY3JlYXRlIHVuaXF1ZSBpbmRleCBcIiVzXCIiLAor CQkJCQkJCQkgICBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShhcmctPmluZGV4LmluZGV4UmVsKSks CisJCQkJCQkJa2V5X2Rlc2MgPyBlcnJkZXRhaWwoIktleSAlcyBpcyBkdXBsaWNhdGVkLiIsIGtl eV9kZXNjKSA6CisJCQkJCQkJZXJyZGV0YWlsKCJEdXBsaWNhdGUga2V5cyBleGlzdC4iKSwKKwkJ CQkJCQllcnJ0YWJsZWNvbnN0cmFpbnQoYXJnLT5pbmRleC5oZWFwUmVsLAorCQkJCQkJCQkJCQkg ICBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShhcmctPmluZGV4LmluZGV4UmVsKSkpKTsKKwkJfQog CX0KIAogCS8qCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvbmJ0cmVlLmggYi9zcmMv aW5jbHVkZS9hY2Nlc3MvbmJ0cmVlLmgKaW5kZXggMDAwYzcyODliODAuLmFjN2FiYmY4ZmM1IDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvbmJ0cmVlLmgKKysrIGIvc3JjL2luY2x1ZGUv YWNjZXNzL25idHJlZS5oCkBAIC0xMzE0LDggKzEzMTQsMTAgQEAgZXh0ZXJuIGJvb2wgYnRwcm9w ZXJ0eShPaWQgaW5kZXhfb2lkLCBpbnQgYXR0bm8sCiBleHRlcm4gY2hhciAqYnRidWlsZHBoYXNl bmFtZShpbnQ2NCBwaGFzZW51bSk7CiBleHRlcm4gSW5kZXhUdXBsZSBfYnRfdHJ1bmNhdGUoUmVs YXRpb24gcmVsLCBJbmRleFR1cGxlIGxhc3RsZWZ0LAogCQkJCQkJCSAgIEluZGV4VHVwbGUgZmly c3RyaWdodCwgQlRTY2FuSW5zZXJ0IGl0dXBfa2V5KTsKK2V4dGVybiBpbnQJX2J0X2tlZXBfbmF0 dHMoUmVsYXRpb24gcmVsLCBJbmRleFR1cGxlIGxhc3RsZWZ0LCBJbmRleFR1cGxlIGZpcnN0cmln aHQsCisJCQkJCQkgICBCVFNjYW5JbnNlcnQgaXR1cF9rZXksIGJvb2wgKmhhc251bGxzKTsKIGV4 dGVybiBpbnQJX2J0X2tlZXBfbmF0dHNfZmFzdChSZWxhdGlvbiByZWwsIEluZGV4VHVwbGUgbGFz dGxlZnQsCi0JCQkJCQkJCUluZGV4VHVwbGUgZmlyc3RyaWdodCk7CisJCQkJCQkJCUluZGV4VHVw bGUgZmlyc3RyaWdodCwgYm9vbCAqaGFzbnVsbHMpOwogZXh0ZXJuIGJvb2wgX2J0X2NoZWNrX25h dHRzKFJlbGF0aW9uIHJlbCwgYm9vbCBoZWFwa2V5c3BhY2UsIFBhZ2UgcGFnZSwKIAkJCQkJCQlP ZmZzZXROdW1iZXIgb2ZmbnVtKTsKIGV4dGVybiB2b2lkIF9idF9jaGVja190aGlyZF9wYWdlKFJl bGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcCwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vz cy90YWJsZWFtLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oCmluZGV4IDMxMzM5NGQ5 MmM2Li5iMTkyMDk5OWYxMiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0u aAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oCkBAIC0xODAwLDkgKzE4MDAsOCBA QCB0YWJsZV9zY2FuX2FuYWx5emVfbmV4dF90dXBsZShUYWJsZVNjYW5EZXNjIHNjYW4sIFRyYW5z YWN0aW9uSWQgT2xkZXN0WG1pbiwKICAqIFRoaXMgb25seSByZWFsbHkgbWFrZXMgc2Vuc2UgZm9y IGhlYXAgQU0sIGl0IG1pZ2h0IG5lZWQgdG8gYmUgZ2VuZXJhbGl6ZWQKICAqIGZvciBvdGhlciBB TXMgbGF0ZXIuCiAgKgotICogSW4gY2FzZSBvZiBub24tdW5pcXVlIGNvbmN1cnJlbnQgIGluZGV4 IGJ1aWxkIFNPX1JFU0VUX1NOQVBTSE9UIGlzIGFwcGxpZWQKLSAqIGZvciB0aGUgc2Nhbi4gVGhh dCBsZWFkcyBmb3IgY2hhbmdpbmcgc25hcHNob3RzIG9uIHRoZSBmbHkgdG8gYWxsb3cgeG1pbgot ICogaG9yaXpvbiBwcm9wYWdhdGUuCisgKiBJbiBjYXNlIG9mIGNvbmN1cnJlbnQgaW5kZXggYnVp bGQgU09fUkVTRVRfU05BUFNIT1QgaXMgYXBwbGllZCBmb3IgdGhlIHNjYW4uCisgKiBUaGF0IGxl YWRzIGZvciBjaGFuZ2luZyBzbmFwc2hvdHMgb24gdGhlIGZseSB0byBhbGxvdyB4bWluIGhvcml6 b24gcHJvcGFnYXRlLgogICovCiBzdGF0aWMgaW5saW5lIGRvdWJsZQogdGFibGVfaW5kZXhfYnVp bGRfc2NhbihSZWxhdGlvbiB0YWJsZV9yZWwsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGls cy90dXBsZXNvcnQuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL3R1cGxlc29ydC5oCmluZGV4IGM2M2Yx ZTVkNmRhLi43NjEzMWI2ZjJlMSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvdHVwbGVz b3J0LmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvdHVwbGVzb3J0LmgKQEAgLTQyOCw2ICs0Mjgs NyBAQCBleHRlcm4gVHVwbGVzb3J0c3RhdGUgKnR1cGxlc29ydF9iZWdpbl9pbmRleF9idHJlZShS ZWxhdGlvbiBoZWFwUmVsLAogCQkJCQkJCQkJCQkJICAgUmVsYXRpb24gaW5kZXhSZWwsCiAJCQkJ CQkJCQkJCQkgICBib29sIGVuZm9yY2VVbmlxdWUsCiAJCQkJCQkJCQkJCQkgICBib29sIHVuaXF1 ZU51bGxzTm90RGlzdGluY3QsCisJCQkJCQkJCQkJCQkgICBib29sCXVuaXF1ZURlYWRJZ25vcmVk LAogCQkJCQkJCQkJCQkJICAgaW50IHdvcmtNZW0sIFNvcnRDb29yZGluYXRlIGNvb3JkaW5hdGUs CiAJCQkJCQkJCQkJCQkgICBpbnQgc29ydG9wdCk7CiBleHRlcm4gVHVwbGVzb3J0c3RhdGUgKnR1 cGxlc29ydF9iZWdpbl9pbmRleF9oYXNoKFJlbGF0aW9uIGhlYXBSZWwsCmRpZmYgLS1naXQgYS9z cmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvZXhwZWN0ZWQvY2ljX3Jlc2V0X3NuYXBz aG90cy5vdXQgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvZXhwZWN0ZWQvY2lj X3Jlc2V0X3NuYXBzaG90cy5vdXQKaW5kZXggNTk1YTQwMDBjZTAuLjlmMDNmYTMwMzNjIDEwMDY0 NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvZXhwZWN0ZWQvY2ljX3Jl c2V0X3NuYXBzaG90cy5vdXQKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRz L2V4cGVjdGVkL2NpY19yZXNldF9zbmFwc2hvdHMub3V0CkBAIC00MSw3ICs0MSwxMSBAQCBFTkQ7 ICQkOwogLS0tLS0tLS0tLS0tLS0tLQogQUxURVIgVEFCTEUgY2ljX3Jlc2V0X3NuYXAudGJsIFNF VCAocGFyYWxsZWxfd29ya2Vycz0wKTsKIENSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZ IGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSk7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVk IGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90 cworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBfcmVz ZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUKIFJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNp Y19yZXNldF9zbmFwLmlkeDsKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlv biBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCitOT1RJQ0U6ICBu b3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3NuYXBz aG90X2VmZmVjdGl2ZQogRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4 OwogQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGkp OwogTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX2Jl Z2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMKQEAgLTg2LDcgKzkwLDkgQEAgU0VMRUNUIGlu amVjdGlvbl9wb2ludHNfZGV0YWNoKCdoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZl Jyk7CiAoMSByb3cpCiAKIENSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBj aWNfcmVzZXRfc25hcC50YmwoaSk7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmpl Y3Rpb24gcG9pbnQgdGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUKIFJFSU5ERVggSU5ERVgg Q09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK05PVElDRTogIG5vdGljZSB0cmlnZ2Vy ZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZQogRFJP UCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogQ1JFQVRFIElOREVYIENP TkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGkpOwogTk9USUNFOiAgbm90aWNl IHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFs aXplCi0tIAoyLjQzLjAKCg== --0000000000007d5b96062e941445 Content-Type: text/x-patch; charset="US-ASCII"; name="v15-0001-This-is-https-commitfest.postgresql.org-50-5160-.patch" Content-Disposition: attachment; filename="v15-0001-This-is-https-commitfest.postgresql.org-50-5160-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m7dgd9hk0 RnJvbSA1NjFlMDYxMTBkZTE3YzNhM2Q5NWVhMTM3ZTU3YjEwYzI5NjU3ZjMwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxtaWNoYWlsLm5pa29sYWV2QGdtYWlsLmNvbT4KRGF0 ZTogVHVlLCAzMSBEZWMgMjAyNCAxNDowOTo1MiArMDEwMApTdWJqZWN0OiBbUEFUQ0ggdjE1IDAx LzEyXSBUaGlzIGlzIGh0dHBzOi8vY29tbWl0ZmVzdC5wb3N0Z3Jlc3FsLm9yZy81MC81MTYwLwog bWVyZ2VkIGluIHNpbmdsZSBjb21taXQuIGl0IGlzIHJlcXVpcmVkIGZvciBzdGFiaWxpdHkgb2Yg c3RyZXNzIHRlc3RzLgoKLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYyAgICAg ICB8ICAgNCArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4aW5nLmMgICAgfCAgIDMg Kwogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jICAgfCAxMTkgKysrKysrKysr KysrKysrKysrKy0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMgfCAg IDIgKwogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGxhbmNhdC5jICAgfCAxMzUgKysrKysr KysrKysrKysrKysrLS0tLS0tLQogc3JjL2JhY2tlbmQvdXRpbHMvdGltZS9zbmFwbWdyLmMgICAg ICAgfCAgIDIgKwogNiBmaWxlcyBjaGFuZ2VkLCAyMTYgaW5zZXJ0aW9ucygrKSwgNDkgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMgYi9z cmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYwppbmRleCBmOGQzZWE4MjBlMS4uNDdjNTA5 Y2ViM2UgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCisrKyBi L3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCkBAIC0xNzk2LDYgKzE3OTYsNyBAQCBE ZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAkgKiBiZWZvcmUgdGhlIHJlZmVyZW5jZSBzbmFwIHdh cyB0YWtlbiwgd2UgaGF2ZSB0byB3YWl0IG91dCBhbnkKIAkgKiB0cmFuc2FjdGlvbnMgdGhhdCBt aWdodCBoYXZlIG9sZGVyIHNuYXBzaG90cy4KIAkgKi8KKwlJTkpFQ1RJT05fUE9JTlQoImRlZmlu ZV9pbmRleF9iZWZvcmVfc2V0X3ZhbGlkIik7CiAJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJh bShQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0UsCiAJCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhf UEhBU0VfV0FJVF8zKTsKIAlXYWl0Rm9yT2xkZXJTbmFwc2hvdHMobGltaXRYbWluLCB0cnVlKTsK QEAgLTQyMDEsNyArNDIwMiw3IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBS ZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJICogdGhlIHNh bWUgdGltZSB0byBtYWtlIHN1cmUgd2Ugb25seSBnZXQgY29uc3RyYWludCB2aW9sYXRpb25zIGZy b20gdGhlCiAJICogaW5kZXhlcyB3aXRoIHRoZSBjb3JyZWN0IG5hbWVzLgogCSAqLwotCisJSU5K RUNUSU9OX1BPSU5UKCJyZWluZGV4X3JlbGF0aW9uX2NvbmN1cnJlbnRseV9iZWZvcmVfc3dhcCIp OwogCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAKIAkvKgpAQCAtNDI4MCw2ICs0MjgxLDcg QEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBP aWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkgKiBpbmRleF9kcm9wKCkgZm9yIG1vcmUgZGV0 YWlscy4KIAkgKi8KIAorCUlOSkVDVElPTl9QT0lOVCgicmVpbmRleF9yZWxhdGlvbl9jb25jdXJy ZW50bHlfYmVmb3JlX3NldF9kZWFkIik7CiAJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQ Uk9HUkVTU19DUkVBVEVJRFhfUEhBU0UsCiAJCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhfUEhB U0VfV0FJVF80KTsKIAlXYWl0Rm9yTG9ja2Vyc011bHRpcGxlKGxvY2tUYWdzLCBBY2Nlc3NFeGNs dXNpdmVMb2NrLCB0cnVlKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNJ bmRleGluZy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4aW5nLmMKaW5kZXggNzQy ZjNmOGMwOGQuLmYyYTc0Yjc2NDY1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9l eGVjSW5kZXhpbmcuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjSW5kZXhpbmcuYwpA QCAtMTE3LDYgKzExNyw3IEBACiAjaW5jbHVkZSAidXRpbHMvbXVsdGlyYW5nZXR5cGVzLmgiCiAj aW5jbHVkZSAidXRpbHMvcmFuZ2V0eXBlcy5oIgogI2luY2x1ZGUgInV0aWxzL3NuYXBtZ3IuaCIK KyNpbmNsdWRlICJ1dGlscy9pbmplY3Rpb25fcG9pbnQuaCIKIAogLyogd2FpdE1vZGUgYXJndW1l bnQgdG8gY2hlY2tfZXhjbHVzaW9uX29yX3VuaXF1ZV9jb25zdHJhaW50KCkgKi8KIHR5cGVkZWYg ZW51bQpAQCAtOTQzLDYgKzk0NCw4IEBAIHJldHJ5OgogCWVjb250ZXh0LT5lY3h0X3NjYW50dXBs ZSA9IHNhdmVfc2NhbnR1cGxlOwogCiAJRXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xvdChleGlz dGluZ19zbG90KTsKKwlpZiAoIWNvbmZsaWN0KQorCQlJTkpFQ1RJT05fUE9JTlQoImNoZWNrX2V4 Y2x1c2lvbl9vcl91bmlxdWVfY29uc3RyYWludF9ub19jb25mbGljdCIpOwogCiAJcmV0dXJuICFj b25mbGljdDsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRp b24uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYwppbmRleCA0MzJlZWFm OTAzNC4uNDRjMGU4ZWQyODUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQ YXJ0aXRpb24uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMKQEAg LTQ4Nyw2ICs0ODcsNDggQEAgRXhlY0ZpbmRQYXJ0aXRpb24oTW9kaWZ5VGFibGVTdGF0ZSAqbXRz dGF0ZSwKIAlyZXR1cm4gcnJpOwogfQogCisvKgorICogSXNJbmRleENvbXBhdGlibGVBc0FyYml0 ZXIKKyAqIAkJQ2hlY2tzIGlmIHRoZSBpbmRleGVzIGFyZSBpZGVudGljYWwgaW4gdGVybXMgb2Yg YmVpbmcgdXNlZAorICogCQlhcyBhcmJpdGVycyBmb3IgdGhlIElOU0VSVCBPTiBDT05GTElDVCBv cGVyYXRpb24gYnkgY29tcGFyaW5nCisgKiAJCXRoZW0gdG8gdGhlIHByb3ZpZGVkIGFyYml0ZXIg aW5kZXguCisgKgorICogUmV0dXJucyB0aGUgdHJ1ZSBpZiBpbmRleGVzIGFyZSBjb21wYXRpYmxl LgorICovCitzdGF0aWMgYm9vbAorSXNJbmRleENvbXBhdGlibGVBc0FyYml0ZXIoUmVsYXRpb24J YXJiaXRlckluZGV4UmVsYXRpb24sCisJCQkJCQkgICBJbmRleEluZm8gICphcmJpdGVySW5kZXhJ bmZvLAorCQkJCQkJICAgUmVsYXRpb24JaW5kZXhSZWxhdGlvbiwKKwkJCQkJCSAgIEluZGV4SW5m byAgKmluZGV4SW5mbykKK3sKKwlpbnQgaTsKKworCWlmIChhcmJpdGVySW5kZXhJbmZvLT5paV9V bmlxdWUgIT0gaW5kZXhJbmZvLT5paV9VbmlxdWUpCisJCXJldHVybiBmYWxzZTsKKwkvKiBpdCBp cyBub3Qgc3VwcG9ydGVkIGZvciBjYXNlcyBvZiBleGNsdXNpb24gY29uc3RyYWludHMuICovCisJ aWYgKGFyYml0ZXJJbmRleEluZm8tPmlpX0V4Y2x1c2lvbk9wcyAhPSBOVUxMIHx8IGluZGV4SW5m by0+aWlfRXhjbHVzaW9uT3BzICE9IE5VTEwpCisJCXJldHVybiBmYWxzZTsKKwlpZiAoYXJiaXRl ckluZGV4UmVsYXRpb24tPnJkX2luZGV4LT5pbmRua2V5YXR0cyAhPSBpbmRleFJlbGF0aW9uLT5y ZF9pbmRleC0+aW5kbmtleWF0dHMpCisJCXJldHVybiBmYWxzZTsKKworCWZvciAoaSA9IDA7IGkg PCBpbmRleFJlbGF0aW9uLT5yZF9pbmRleC0+aW5kbmtleWF0dHM7IGkrKykKKwl7CisJCWludAkJ CWFyYml0ZXJBdHRvTm8gPSBhcmJpdGVySW5kZXhSZWxhdGlvbi0+cmRfaW5kZXgtPmluZGtleS52 YWx1ZXNbaV07CisJCWludAkJCWF0dG9ObyA9IGluZGV4UmVsYXRpb24tPnJkX2luZGV4LT5pbmRr ZXkudmFsdWVzW2ldOworCQlpZiAoYXJiaXRlckF0dG9ObyAhPSBhdHRvTm8pCisJCQlyZXR1cm4g ZmFsc2U7CisJfQorCisJaWYgKGxpc3RfZGlmZmVyZW5jZShSZWxhdGlvbkdldEluZGV4RXhwcmVz c2lvbnMoYXJiaXRlckluZGV4UmVsYXRpb24pLAorCQkJCQkJUmVsYXRpb25HZXRJbmRleEV4cHJl c3Npb25zKGluZGV4UmVsYXRpb24pKSAhPSBOSUwpCisJCXJldHVybiBmYWxzZTsKKworCWlmIChs aXN0X2RpZmZlcmVuY2UoUmVsYXRpb25HZXRJbmRleFByZWRpY2F0ZShhcmJpdGVySW5kZXhSZWxh dGlvbiksCisJCQkJCQlSZWxhdGlvbkdldEluZGV4UHJlZGljYXRlKGluZGV4UmVsYXRpb24pKSAh PSBOSUwpCisJCXJldHVybiBmYWxzZTsKKwlyZXR1cm4gdHJ1ZTsKK30KKwogLyoKICAqIEV4ZWNJ bml0UGFydGl0aW9uSW5mbwogICoJCUxvY2sgdGhlIHBhcnRpdGlvbiBhbmQgaW5pdGlhbGl6ZSBS ZXN1bHRSZWxJbmZvLiAgQWxzbyBzZXR1cCBvdGhlcgpAQCAtNjk3LDYgKzczOSw4IEBAIEV4ZWNJ bml0UGFydGl0aW9uSW5mbyhNb2RpZnlUYWJsZVN0YXRlICptdHN0YXRlLCBFU3RhdGUgKmVzdGF0 ZSwKIAkJaWYgKHJvb3RSZXN1bHRSZWxJbmZvLT5yaV9vbkNvbmZsaWN0QXJiaXRlckluZGV4ZXMg IT0gTklMKQogCQl7CiAJCQlMaXN0CSAgICpjaGlsZElkeHM7CisJCQlMaXN0IAkgICAqbm9uQW5j ZXN0b3JJZHhzID0gTklMOworCQkJaW50CQkgICBpLCBqLCBhZGRpdGlvbmFsX2FyYml0ZXJzID0g MDsKIAogCQkJY2hpbGRJZHhzID0gUmVsYXRpb25HZXRJbmRleExpc3QobGVhZl9wYXJ0X3JyaS0+ cmlfUmVsYXRpb25EZXNjKTsKIApAQCAtNzA3LDIzICs3NTEsNzQgQEAgRXhlY0luaXRQYXJ0aXRp b25JbmZvKE1vZGlmeVRhYmxlU3RhdGUgKm10c3RhdGUsIEVTdGF0ZSAqZXN0YXRlLAogCQkJCUxp c3RDZWxsICAgKmxjMjsKIAogCQkJCWFuY2VzdG9ycyA9IGdldF9wYXJ0aXRpb25fYW5jZXN0b3Jz KGNoaWxkSWR4KTsKLQkJCQlmb3JlYWNoKGxjMiwgcm9vdFJlc3VsdFJlbEluZm8tPnJpX29uQ29u ZmxpY3RBcmJpdGVySW5kZXhlcykKKwkJCQlpZiAoYW5jZXN0b3JzKQogCQkJCXsKLQkJCQkJaWYg KGxpc3RfbWVtYmVyX29pZChhbmNlc3RvcnMsIGxmaXJzdF9vaWQobGMyKSkpCi0JCQkJCQlhcmJp dGVySW5kZXhlcyA9IGxhcHBlbmRfb2lkKGFyYml0ZXJJbmRleGVzLCBjaGlsZElkeCk7CisJCQkJ CWZvcmVhY2gobGMyLCByb290UmVzdWx0UmVsSW5mby0+cmlfb25Db25mbGljdEFyYml0ZXJJbmRl eGVzKQorCQkJCQl7CisJCQkJCQlpZiAobGlzdF9tZW1iZXJfb2lkKGFuY2VzdG9ycywgbGZpcnN0 X29pZChsYzIpKSkKKwkJCQkJCQlhcmJpdGVySW5kZXhlcyA9IGxhcHBlbmRfb2lkKGFyYml0ZXJJ bmRleGVzLCBjaGlsZElkeCk7CisJCQkJCX0KIAkJCQl9CisJCQkJZWxzZSAvKiBObyBhbmNlc3Rv ciB3YXMgZm91bmQgZm9yIHRoYXQgaW5kZXguIFNhdmUgaXQgZm9yIHJlY2hlY2tpbmcgbGF0ZXIu ICovCisJCQkJCW5vbkFuY2VzdG9ySWR4cyA9IGxhcHBlbmRfb2lkKG5vbkFuY2VzdG9ySWR4cywg Y2hpbGRJZHgpOwogCQkJCWxpc3RfZnJlZShhbmNlc3RvcnMpOwogCQkJfQorCisJCQkvKgorCQkJ ICogSWYgYW55IG5vbi1hbmNlc3RvciBpbmRleGVzIGFyZSBmb3VuZCwgd2UgbmVlZCB0byBjb21w YXJlIHRoZW0gd2l0aCBvdGhlcgorCQkJICogaW5kZXhlcyBvZiB0aGUgcmVsYXRpb24gdGhhdCB3 aWxsIGJlIHVzZWQgYXMgYXJiaXRlcnMuIFRoaXMgaXMgbmVjZXNzYXJ5CisJCQkgKiB3aGVuIGEg cGFydGl0aW9uZWQgaW5kZXggaXMgcHJvY2Vzc2VkIGJ5IFJFSU5ERVggQ09OQ1VSUkVOVExZLiBC b3RoIGluZGV4ZXMKKwkJCSAqIG11c3QgYmUgY29uc2lkZXJlZCBhcyBhcmJpdGVycyB0byBlbnN1 cmUgdGhhdCBhbGwgY29uY3VycmVudCB0cmFuc2FjdGlvbnMKKwkJCSAqIHVzZSB0aGUgc2FtZSBz ZXQgb2YgYXJiaXRlcnMuCisJCQkgKi8KKwkJCWlmIChub25BbmNlc3RvcklkeHMpCisJCQl7CisJ CQkJZm9yIChpID0gMDsgaSA8IGxlYWZfcGFydF9ycmktPnJpX051bUluZGljZXM7IGkrKykKKwkJ CQl7CisJCQkJCWlmIChsaXN0X21lbWJlcl9vaWQobm9uQW5jZXN0b3JJZHhzLCBsZWFmX3BhcnRf cnJpLT5yaV9JbmRleFJlbGF0aW9uRGVzY3NbaV0tPnJkX2luZGV4LT5pbmRleHJlbGlkKSkKKwkJ CQkJeworCQkJCQkJUmVsYXRpb24gbm9uQW5jZXN0b3JJbmRleFJlbGF0aW9uID0gbGVhZl9wYXJ0 X3JyaS0+cmlfSW5kZXhSZWxhdGlvbkRlc2NzW2ldOworCQkJCQkJSW5kZXhJbmZvICpub25BbmNl c3RvckluZGV4SW5mbyA9IGxlYWZfcGFydF9ycmktPnJpX0luZGV4UmVsYXRpb25JbmZvW2ldOwor CQkJCQkJQXNzZXJ0KCFsaXN0X21lbWJlcl9vaWQoYXJiaXRlckluZGV4ZXMsIG5vbkFuY2VzdG9y SW5kZXhSZWxhdGlvbi0+cmRfaW5kZXgtPmluZGV4cmVsaWQpKTsKKworCQkJCQkJLyogSXQgaXMg dG9vIGVhcmx5IHRvIHVzIG5vbi1yZWFkeSBpbmRleGVzIGFzIGFyYml0ZXJzICovCisJCQkJCQlp ZiAoIW5vbkFuY2VzdG9ySW5kZXhJbmZvLT5paV9SZWFkeUZvckluc2VydHMpCisJCQkJCQkJY29u dGludWU7CisKKwkJCQkJCWZvciAoaiA9IDA7IGogPCBsZWFmX3BhcnRfcnJpLT5yaV9OdW1JbmRp Y2VzOyBqKyspCisJCQkJCQl7CisJCQkJCQkJaWYgKGxpc3RfbWVtYmVyX29pZChhcmJpdGVySW5k ZXhlcywKKwkJCQkJCQkJCQkJCWxlYWZfcGFydF9ycmktPnJpX0luZGV4UmVsYXRpb25EZXNjc1tq XS0+cmRfaW5kZXgtPmluZGV4cmVsaWQpKQorCQkJCQkJCXsKKwkJCQkJCQkJUmVsYXRpb24gYXJi aXRlckluZGV4UmVsYXRpb24gPSBsZWFmX3BhcnRfcnJpLT5yaV9JbmRleFJlbGF0aW9uRGVzY3Nb al07CisJCQkJCQkJCUluZGV4SW5mbyAqYXJiaXRlckluZGV4SW5mbyA9IGxlYWZfcGFydF9ycmkt PnJpX0luZGV4UmVsYXRpb25JbmZvW2pdOworCisJCQkJCQkJCS8qIElmIG5vbi1hbmNlc3RvciBp bmRleCBhcmUgY29tcGF0aWJsZSB0byBhcmJpdGVyIC0gdXNlIGl0IGFzIGFyYml0ZXIgdG9vLiAq LworCQkJCQkJCQlpZiAoSXNJbmRleENvbXBhdGlibGVBc0FyYml0ZXIoYXJiaXRlckluZGV4UmVs YXRpb24sIGFyYml0ZXJJbmRleEluZm8sCisJCQkJCQkJCQkJCQkJCQkgICBub25BbmNlc3Rvcklu ZGV4UmVsYXRpb24sIG5vbkFuY2VzdG9ySW5kZXhJbmZvKSkKKwkJCQkJCQkJeworCQkJCQkJCQkJ YXJiaXRlckluZGV4ZXMgPSBsYXBwZW5kX29pZChhcmJpdGVySW5kZXhlcywKKwkJCQkJCQkJCQkJ CQkJCQkgbm9uQW5jZXN0b3JJbmRleFJlbGF0aW9uLT5yZF9pbmRleC0+aW5kZXhyZWxpZCk7CisJ CQkJCQkJCQlhZGRpdGlvbmFsX2FyYml0ZXJzKys7CisJCQkJCQkJCX0KKwkJCQkJCQl9CisJCQkJ CQl9CisJCQkJCX0KKwkJCQl9CisJCQl9CisJCQlsaXN0X2ZyZWUobm9uQW5jZXN0b3JJZHhzKTsK KworCQkJLyoKKwkJCSAqIElmIHRoZSByZXN1bHRpbmcgbGlzdHMgYXJlIG9mIGluZXF1YWwgbGVu Z3RoLCBzb21ldGhpbmcgaXMgd3JvbmcuCisJCQkgKiAoVGhpcyBzaG91bGRuJ3QgaGFwcGVuLCBz aW5jZSBhcmJpdGVyIGluZGV4IHNlbGVjdGlvbiBzaG91bGQgbm90CisJCQkgKiBwaWNrIHVwIGEg bm9uLXJlYWR5IGluZGV4LikKKwkJCSAqCisJCQkgKiBCdXQgd2UgbmVlZCB0byBjb25zaWRlciBh biBhZGRpdGlvbmFsIGFyYml0ZXIgaW5kZXhlcyBhbHNvLgorCQkJICovCisJCQlpZiAobGlzdF9s ZW5ndGgocm9vdFJlc3VsdFJlbEluZm8tPnJpX29uQ29uZmxpY3RBcmJpdGVySW5kZXhlcykgIT0K KwkJCQlsaXN0X2xlbmd0aChhcmJpdGVySW5kZXhlcykgLSBhZGRpdGlvbmFsX2FyYml0ZXJzKQor CQkJCWVsb2coRVJST1IsICJpbnZhbGlkIGFyYml0ZXIgaW5kZXggbGlzdCIpOwogCQl9Ci0KLQkJ LyoKLQkJICogSWYgdGhlIHJlc3VsdGluZyBsaXN0cyBhcmUgb2YgaW5lcXVhbCBsZW5ndGgsIHNv bWV0aGluZyBpcyB3cm9uZy4KLQkJICogKFRoaXMgc2hvdWxkbid0IGhhcHBlbiwgc2luY2UgYXJi aXRlciBpbmRleCBzZWxlY3Rpb24gc2hvdWxkIG5vdAotCQkgKiBwaWNrIHVwIGFuIGludmFsaWQg aW5kZXguKQotCQkgKi8KLQkJaWYgKGxpc3RfbGVuZ3RoKHJvb3RSZXN1bHRSZWxJbmZvLT5yaV9v bkNvbmZsaWN0QXJiaXRlckluZGV4ZXMpICE9Ci0JCQlsaXN0X2xlbmd0aChhcmJpdGVySW5kZXhl cykpCi0JCQllbG9nKEVSUk9SLCAiaW52YWxpZCBhcmJpdGVyIGluZGV4IGxpc3QiKTsKIAkJbGVh Zl9wYXJ0X3JyaS0+cmlfb25Db25mbGljdEFyYml0ZXJJbmRleGVzID0gYXJiaXRlckluZGV4ZXM7 CiAKIAkJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJs ZS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMKaW5kZXggYjBmZTUw MDc1YWQuLmQ1YWQ3M2Y2ZjY5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl TW9kaWZ5VGFibGUuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUu YwpAQCAtNjksNiArNjksNyBAQAogI2luY2x1ZGUgInV0aWxzL2RhdHVtLmgiCiAjaW5jbHVkZSAi dXRpbHMvcmVsLmgiCiAjaW5jbHVkZSAidXRpbHMvc25hcG1nci5oIgorI2luY2x1ZGUgInV0aWxz L2luamVjdGlvbl9wb2ludC5oIgogCiAKIHR5cGVkZWYgc3RydWN0IE1UVGFyZ2V0UmVsTG9va3Vw CkBAIC0xMTU4LDYgKzExNTksNyBAQCBFeGVjSW5zZXJ0KE1vZGlmeVRhYmxlQ29udGV4dCAqY29u dGV4dCwKIAkJCQkJcmV0dXJuIE5VTEw7CiAJCQkJfQogCQkJfQorCQkJSU5KRUNUSU9OX1BPSU5U KCJleGVjX2luc2VydF9iZWZvcmVfaW5zZXJ0X3NwZWN1bGF0aXZlIik7CiAKIAkJCS8qCiAJCQkg KiBCZWZvcmUgd2Ugc3RhcnQgaW5zZXJ0aW9uIHByb3BlciwgYWNxdWlyZSBvdXIgInNwZWN1bGF0 aXZlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wbGFuY2F0LmMgYi9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wbGFuY2F0LmMKaW5kZXggNzFhYmIwMWY2NTUuLmFm NzU4NmE0MjhmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wbGFuY2F0 LmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGxhbmNhdC5jCkBAIC03MTQsMTIg KzcxNCwxNCBAQCBpbmZlcl9hcmJpdGVyX2luZGV4ZXMoUGxhbm5lckluZm8gKnJvb3QpCiAJTGlz dAkgICAqaW5kZXhMaXN0OwogCUxpc3RDZWxsICAgKmw7CiAKLQkvKiBOb3JtYWxpemVkIGluZmVy ZW5jZSBhdHRyaWJ1dGVzIGFuZCBpbmZlcmVuY2UgZXhwcmVzc2lvbnM6ICovCi0JQml0bWFwc2V0 ICAqaW5mZXJBdHRycyA9IE5VTEw7Ci0JTGlzdAkgICAqaW5mZXJFbGVtcyA9IE5JTDsKKwkvKiBO b3JtYWxpemVkIHJlcXVpcmVkIGF0dHJpYnV0ZXMgYW5kIGV4cHJlc3Npb25zOiAqLworCUJpdG1h cHNldCAgKnJlcXVpcmVkQXJiaXRlckF0dHJzID0gTlVMTDsKKwlMaXN0CSAgICpyZXF1aXJlZEFy Yml0ZXJFbGVtcyA9IE5JTDsKKwlMaXN0CSAgICpyZXF1aXJlZEluZGV4UHJlZEV4cHJzID0gKExp c3QgKikgb25jb25mbGljdC0+YXJiaXRlcldoZXJlOwogCiAJLyogUmVzdWx0cyAqLwogCUxpc3QJ ICAgKnJlc3VsdHMgPSBOSUw7CisJYm9vbAkgICBmb3VuZFZhbGlkID0gZmFsc2U7CiAKIAkvKgog CSAqIFF1aWNrbHkgcmV0dXJuIE5JTCBmb3IgT04gQ09ORkxJQ1QgRE8gTk9USElORyB3aXRob3V0 IGFuIGluZmVyZW5jZQpAQCAtNzU0LDggKzc1Niw4IEBAIGluZmVyX2FyYml0ZXJfaW5kZXhlcyhQ bGFubmVySW5mbyAqcm9vdCkKIAogCQlpZiAoIUlzQShlbGVtLT5leHByLCBWYXIpKQogCQl7Ci0J CQkvKiBJZiBub3QgYSBwbGFpbiBWYXIsIGp1c3Qgc2hvdmUgaXQgaW4gaW5mZXJFbGVtcyBmb3Ig bm93ICovCi0JCQlpbmZlckVsZW1zID0gbGFwcGVuZChpbmZlckVsZW1zLCBlbGVtLT5leHByKTsK KwkJCS8qIElmIG5vdCBhIHBsYWluIFZhciwganVzdCBzaG92ZSBpdCBpbiByZXF1aXJlZEFyYml0 ZXJFbGVtcyBmb3Igbm93ICovCisJCQlyZXF1aXJlZEFyYml0ZXJFbGVtcyA9IGxhcHBlbmQocmVx dWlyZWRBcmJpdGVyRWxlbXMsIGVsZW0tPmV4cHIpOwogCQkJY29udGludWU7CiAJCX0KIApAQCAt NzY3LDMwICs3NjksNzYgQEAgaW5mZXJfYXJiaXRlcl9pbmRleGVzKFBsYW5uZXJJbmZvICpyb290 KQogCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCiAJCQkJCSBl cnJtc2coIndob2xlIHJvdyB1bmlxdWUgaW5kZXggaW5mZXJlbmNlIHNwZWNpZmljYXRpb25zIGFy ZSBub3Qgc3VwcG9ydGVkIikpKTsKIAotCQlpbmZlckF0dHJzID0gYm1zX2FkZF9tZW1iZXIoaW5m ZXJBdHRycywKKwkJcmVxdWlyZWRBcmJpdGVyQXR0cnMgPSBibXNfYWRkX21lbWJlcihyZXF1aXJl ZEFyYml0ZXJBdHRycywKIAkJCQkJCQkJCWF0dG5vIC0gRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJp YnV0ZU51bWJlcik7CiAJfQogCisJaW5kZXhMaXN0ID0gUmVsYXRpb25HZXRJbmRleExpc3QocmVs YXRpb24pOworCiAJLyoKIAkgKiBMb29rdXAgbmFtZWQgY29uc3RyYWludCdzIGluZGV4LiAgVGhp cyBpcyBub3QgaW1tZWRpYXRlbHkgcmV0dXJuZWQKLQkgKiBiZWNhdXNlIHNvbWUgYWRkaXRpb25h bCBzYW5pdHkgY2hlY2tzIGFyZSByZXF1aXJlZC4KKwkgKiBiZWNhdXNlIHNvbWUgYWRkaXRpb25h bCBzYW5pdHkgY2hlY2tzIGFyZSByZXF1aXJlZC4gQWRkaXRpb25hbGx5LCB3ZQorCSAqIG5lZWQg dG8gcHJvY2VzcyBvdGhlciBpbmRleGVzIGFzIHBvdGVudGlhbCBhcmJpdGVycyB0byBhY2NvdW50 IGZvcgorCSAqIGNhc2VzIHdoZXJlIFJFSU5ERVggQ09OQ1VSUkVOVExZIGlzIHByb2Nlc3Npbmcg YW4gaW5kZXggdXNlZCBhcyBhCisJICogbmFtZWQgY29uc3RyYWludC4KIAkgKi8KIAlpZiAob25j b25mbGljdC0+Y29uc3RyYWludCAhPSBJbnZhbGlkT2lkKQogCXsKIAkJaW5kZXhPaWRGcm9tQ29u c3RyYWludCA9IGdldF9jb25zdHJhaW50X2luZGV4KG9uY29uZmxpY3QtPmNvbnN0cmFpbnQpOwog CiAJCWlmIChpbmRleE9pZEZyb21Db25zdHJhaW50ID09IEludmFsaWRPaWQpCisJCXsKIAkJCWVy ZXBvcnQoRVJST1IsCiAJCQkJCShlcnJjb2RlKEVSUkNPREVfV1JPTkdfT0JKRUNUX1RZUEUpLAot CQkJCQkgZXJybXNnKCJjb25zdHJhaW50IGluIE9OIENPTkZMSUNUIGNsYXVzZSBoYXMgbm8gYXNz b2NpYXRlZCBpbmRleCIpKSk7CisJCQkJCWVycm1zZygiY29uc3RyYWludCBpbiBPTiBDT05GTElD VCBjbGF1c2UgaGFzIG5vIGFzc29jaWF0ZWQgaW5kZXgiKSkpOworCQl9CisKKwkJLyoKKwkJICog RmluZCB0aGUgbmFtZWQgY29uc3RyYWludCBpbmRleCB0byBleHRyYWN0IGl0cyBhdHRyaWJ1dGVz IGFuZCBwcmVkaWNhdGVzLgorCQkgKiBXZSBvcGVuIGFsbCBpbmRleGVzIGluIHRoZSBsb29wIHRv IGF2b2lkIGRlYWRsb2NrIG9mIGNoYW5nZWQgb3JkZXIgb2YgbG9ja3MuCisJCSAqICovCisJCWZv cmVhY2gobCwgaW5kZXhMaXN0KQorCQl7CisJCQlPaWQJCQlpbmRleG9pZCA9IGxmaXJzdF9vaWQo bCk7CisJCQlSZWxhdGlvbglpZHhSZWw7CisJCQlGb3JtX3BnX2luZGV4IGlkeEZvcm07CisJCQlB dHRyTnVtYmVyCW5hdHQ7CisKKwkJCWlkeFJlbCA9IGluZGV4X29wZW4oaW5kZXhvaWQsIHJ0ZS0+ cmVsbG9ja21vZGUpOworCQkJaWR4Rm9ybSA9IGlkeFJlbC0+cmRfaW5kZXg7CisKKwkJCWlmIChp ZHhGb3JtLT5pbmRpc3JlYWR5KQorCQkJeworCQkJCWlmIChpbmRleE9pZEZyb21Db25zdHJhaW50 ID09IGlkeEZvcm0tPmluZGV4cmVsaWQpCisJCQkJeworCQkJCQkvKgorCQkJCQkgKiBQcmVwYXJl IHJlcXVpcmVtZW50cyBmb3Igb3RoZXIgaW5kZXhlcyB0byBiZSB1c2VkIGFzIGFyYml0ZXIgdG9n ZXRoZXIKKwkJCQkJICogd2l0aCBpbmRleE9pZEZyb21Db25zdHJhaW50LiBJdCBpcyByZXF1aXJl ZCB0byBpbnZvbHZlIGJvdGggZXF1YWxzIGluZGV4ZXMKKwkJCQkJICogaW4gY2FzZSBvZiBSRUlO REVYIENPTkNVUlJFTlRMWS4KKwkJCQkJICovCisJCQkJCWZvciAobmF0dCA9IDA7IG5hdHQgPCBp ZHhGb3JtLT5pbmRua2V5YXR0czsgbmF0dCsrKQorCQkJCQl7CisJCQkJCQlpbnQJCQlhdHRubyA9 IGlkeFJlbC0+cmRfaW5kZXgtPmluZGtleS52YWx1ZXNbbmF0dF07CisKKwkJCQkJCWlmIChhdHRu byAhPSAwKQorCQkJCQkJCXJlcXVpcmVkQXJiaXRlckF0dHJzID0gYm1zX2FkZF9tZW1iZXIocmVx dWlyZWRBcmJpdGVyQXR0cnMsCisJCQkJCQkJCQkJCQkJCSAgYXR0bm8gLSBGaXJzdExvd0ludmFs aWRIZWFwQXR0cmlidXRlTnVtYmVyKTsKKwkJCQkJfQorCQkJCQlyZXF1aXJlZEFyYml0ZXJFbGVt cyA9IFJlbGF0aW9uR2V0SW5kZXhFeHByZXNzaW9ucyhpZHhSZWwpOworCQkJCQlyZXF1aXJlZElu ZGV4UHJlZEV4cHJzID0gUmVsYXRpb25HZXRJbmRleFByZWRpY2F0ZShpZHhSZWwpOworCQkJCQkv KiBXZSBhcmUgZG9uZSwgc28sIHF1aXRlIHRoZSBsb29wLiAqLworCQkJCQlpbmRleF9jbG9zZShp ZHhSZWwsIE5vTG9jayk7CisJCQkJCWJyZWFrOworCQkJCX0KKwkJCX0KKwkJCWluZGV4X2Nsb3Nl KGlkeFJlbCwgTm9Mb2NrKTsKKwkJfQogCX0KIAogCS8qCiAJICogVXNpbmcgdGhhdCByZXByZXNl bnRhdGlvbiwgaXRlcmF0ZSB0aHJvdWdoIHRoZSBsaXN0IG9mIGluZGV4ZXMgb24gdGhlCiAJICog dGFyZ2V0IHJlbGF0aW9uIHRvIHRyeSBhbmQgZmluZCBhIG1hdGNoCiAJICovCi0JaW5kZXhMaXN0 ID0gUmVsYXRpb25HZXRJbmRleExpc3QocmVsYXRpb24pOwotCiAJZm9yZWFjaChsLCBpbmRleExp c3QpCiAJewogCQlPaWQJCQlpbmRleG9pZCA9IGxmaXJzdF9vaWQobCk7CkBAIC04MTMsNyArODYx LDEzIEBAIGluZmVyX2FyYml0ZXJfaW5kZXhlcyhQbGFubmVySW5mbyAqcm9vdCkKIAkJaWR4UmVs ID0gaW5kZXhfb3BlbihpbmRleG9pZCwgcnRlLT5yZWxsb2NrbW9kZSk7CiAJCWlkeEZvcm0gPSBp ZHhSZWwtPnJkX2luZGV4OwogCi0JCWlmICghaWR4Rm9ybS0+aW5kaXN2YWxpZCkKKwkJLyoKKwkJ ICogV2UgbmVlZCB0byBjb25zaWRlciBib3RoIGluZGlzdmFsaWQgYW5kIGluZGlzcmVhZHkgaW5k ZXhlcyBiZWNhdXNlCisJCSAqIHRoZW0gbWF5IGJlY29tZSBpbmRpc3ZhbGlkIGJlZm9yZSBleGVj dXRpb24gcGhhc2UuIEl0IGlzIHJlcXVpcmVkCisJCSAqIHRvIGtlZXAgc2V0IG9mIGluZGV4ZXMg dXNlZCBhcyBhcmJpdGVyIHRvIGJlIHRoZSBzYW1lIGZvciBhbGwKKwkJICogY29uY3VycmVudCB0 cmFuc2FjdGlvbnMuCisJCSAqLworCQlpZiAoIWlkeEZvcm0tPmluZGlzcmVhZHkpCiAJCQlnb3Rv IG5leHQ7CiAKIAkJLyoKQEAgLTgzMywyNyArODg3LDIzIEBAIGluZmVyX2FyYml0ZXJfaW5kZXhl cyhQbGFubmVySW5mbyAqcm9vdCkKIAkJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkJKGVycmNvZGUo RVJSQ09ERV9XUk9OR19PQkpFQ1RfVFlQRSksCiAJCQkJCQkgZXJybXNnKCJPTiBDT05GTElDVCBE TyBVUERBVEUgbm90IHN1cHBvcnRlZCB3aXRoIGV4Y2x1c2lvbiBjb25zdHJhaW50cyIpKSk7Ci0K LQkJCXJlc3VsdHMgPSBsYXBwZW5kX29pZChyZXN1bHRzLCBpZHhGb3JtLT5pbmRleHJlbGlkKTsK LQkJCWxpc3RfZnJlZShpbmRleExpc3QpOwotCQkJaW5kZXhfY2xvc2UoaWR4UmVsLCBOb0xvY2sp OwotCQkJdGFibGVfY2xvc2UocmVsYXRpb24sIE5vTG9jayk7Ci0JCQlyZXR1cm4gcmVzdWx0czsK KwkJCWdvdG8gZm91bmQ7CiAJCX0KIAkJZWxzZSBpZiAoaW5kZXhPaWRGcm9tQ29uc3RyYWludCAh PSBJbnZhbGlkT2lkKQogCQl7Ci0JCQkvKiBObyBwb2ludCBpbiBmdXJ0aGVyIHdvcmsgZm9yIGlu ZGV4IGluIG5hbWVkIGNvbnN0cmFpbnQgY2FzZSAqLwotCQkJZ290byBuZXh0OworCQkJLyogSW4g dGhlIGNhc2Ugb2YgIk9OIGNvbnN0cmFpbnRfbmFtZSBETyBVUERBVEUiIHdlIG5lZWQgdG8gc2tp cCBub24tdW5pcXVlIGNhbmRpZGF0ZXMuICovCisJCQlpZiAoIWlkeEZvcm0tPmluZGlzdW5pcXVl ICYmIG9uY29uZmxpY3QtPmFjdGlvbiA9PSBPTkNPTkZMSUNUX1VQREFURSkKKwkJCQlnb3RvIG5l eHQ7CisJCX0gIGVsc2UgeworCQkJLyoKKwkJCSAqIE9ubHkgY29uc2lkZXJpbmcgY29udmVudGlv bmFsIGluZmVyZW5jZSBhdCB0aGlzIHBvaW50IChub3QgbmFtZWQKKwkJCSAqIGNvbnN0cmFpbnRz KSwgc28gaW5kZXggdW5kZXIgY29uc2lkZXJhdGlvbiBjYW4gYmUgaW1tZWRpYXRlbHkKKwkJCSAq IHNraXBwZWQgaWYgaXQncyBub3QgdW5pcXVlCisJCQkgKi8KKwkJCWlmICghaWR4Rm9ybS0+aW5k aXN1bmlxdWUpCisJCQkJZ290byBuZXh0OwogCQl9CiAKLQkJLyoKLQkJICogT25seSBjb25zaWRl cmluZyBjb252ZW50aW9uYWwgaW5mZXJlbmNlIGF0IHRoaXMgcG9pbnQgKG5vdCBuYW1lZAotCQkg KiBjb25zdHJhaW50cyksIHNvIGluZGV4IHVuZGVyIGNvbnNpZGVyYXRpb24gY2FuIGJlIGltbWVk aWF0ZWx5Ci0JCSAqIHNraXBwZWQgaWYgaXQncyBub3QgdW5pcXVlCi0JCSAqLwotCQlpZiAoIWlk eEZvcm0tPmluZGlzdW5pcXVlKQotCQkJZ290byBuZXh0OwotCiAJCS8qCiAJCSAqIFNvLWNhbGxl ZCB1bmlxdWUgY29uc3RyYWludHMgd2l0aCBXSVRIT1VUIE9WRVJMQVBTIGFyZSByZWFsbHkKIAkJ ICogZXhjbHVzaW9uIGNvbnN0cmFpbnRzLCBzbyBza2lwIHRob3NlIHRvby4KQEAgLTg3Myw3ICs5 MjMsNyBAQCBpbmZlcl9hcmJpdGVyX2luZGV4ZXMoUGxhbm5lckluZm8gKnJvb3QpCiAJCX0KIAog CQkvKiBOb24tZXhwcmVzc2lvbiBhdHRyaWJ1dGVzIChpZiBhbnkpIG11c3QgbWF0Y2ggKi8KLQkJ aWYgKCFibXNfZXF1YWwoaW5kZXhlZEF0dHJzLCBpbmZlckF0dHJzKSkKKwkJaWYgKCFibXNfZXF1 YWwoaW5kZXhlZEF0dHJzLCByZXF1aXJlZEFyYml0ZXJBdHRycykpCiAJCQlnb3RvIG5leHQ7CiAK IAkJLyogRXhwcmVzc2lvbiBhdHRyaWJ1dGVzIChpZiBhbnkpIG11c3QgbWF0Y2ggKi8KQEAgLTg4 MSw2ICs5MzEsMTAgQEAgaW5mZXJfYXJiaXRlcl9pbmRleGVzKFBsYW5uZXJJbmZvICpyb290KQog CQlpZiAoaWR4RXhwcnMgJiYgdmFybm8gIT0gMSkKIAkJCUNoYW5nZVZhck5vZGVzKChOb2RlICop IGlkeEV4cHJzLCAxLCB2YXJubywgMCk7CiAKKwkJLyoKKwkJICogSWYgYXJiaXRlckVsZW1zIGFy ZSBwcmVzZW50LCBjaGVjayB0aGVtLiBJZiBuYW1lID5jb25zdHJhaW50IGlzCisJCSAqIHByZXNl bnQgYXJiaXRlckVsZW1zID09IE5JTC4KKwkJICovCiAJCWZvcmVhY2goZWwsIG9uY29uZmxpY3Qt PmFyYml0ZXJFbGVtcykKIAkJewogCQkJSW5mZXJlbmNlRWxlbSAqZWxlbSA9IChJbmZlcmVuY2VF bGVtICopIGxmaXJzdChlbCk7CkBAIC05MTgsMjcgKzk3MiwzNSBAQCBpbmZlcl9hcmJpdGVyX2lu ZGV4ZXMoUGxhbm5lckluZm8gKnJvb3QpCiAJCX0KIAogCQkvKgotCQkgKiBOb3cgdGhhdCBhbGwg aW5mZXJlbmNlIGVsZW1lbnRzIHdlcmUgbWF0Y2hlZCwgZW5zdXJlIHRoYXQgdGhlCisJCSAqIElu IGNhc2Ugb2YgdGhlIGNvbnZlbnRpb25hbCBpbmZlcmVuY2UgaW52b2x2ZWQgZW5zdXJlIHRoYXQg dGhlCiAJCSAqIGV4cHJlc3Npb24gZWxlbWVudHMgZnJvbSBpbmZlcmVuY2UgY2xhdXNlIGFyZSBu b3QgbWlzc2luZyBhbnkKIAkJICogY2F0YWxvZ2VkIGV4cHJlc3Npb25zLiAgVGhpcyBkb2VzIHRo ZSByaWdodCB0aGluZyB3aGVuIHVuaXF1ZQogCQkgKiBpbmRleGVzIHJlZHVuZGFudGx5IHJlcGVh dCB0aGUgc2FtZSBhdHRyaWJ1dGUsIG9yIGlmIGF0dHJpYnV0ZXMKIAkJICogcmVkdW5kYW50bHkg YXBwZWFyIG11bHRpcGxlIHRpbWVzIHdpdGhpbiBhbiBpbmZlcmVuY2UgY2xhdXNlLgorCQkgKgor CQkgKiBJbiB0aGUgY2FzZSBvZiBuYW1lZCBjb25zdHJhaW50IGVuc3VyZSBjYW5kaWRhdGUgaGFz IGVxdWFsIHNldAorCQkgKiBvZiBleHByZXNzaW9ucyBhcyB0aGUgbmFtZWQgY29uc3RyYWludCBp bmRleC4KIAkJICovCi0JCWlmIChsaXN0X2RpZmZlcmVuY2UoaWR4RXhwcnMsIGluZmVyRWxlbXMp ICE9IE5JTCkKKwkJaWYgKGxpc3RfZGlmZmVyZW5jZShpZHhFeHBycywgcmVxdWlyZWRBcmJpdGVy RWxlbXMpICE9IE5JTCkKIAkJCWdvdG8gbmV4dDsKIAotCQkvKgotCQkgKiBJZiBpdCdzIGEgcGFy dGlhbCBpbmRleCwgaXRzIHByZWRpY2F0ZSBtdXN0IGJlIGltcGxpZWQgYnkgdGhlIE9OCi0JCSAq IENPTkZMSUNUJ3MgV0hFUkUgY2xhdXNlLgotCQkgKi8KIAkJcHJlZEV4cHJzID0gUmVsYXRpb25H ZXRJbmRleFByZWRpY2F0ZShpZHhSZWwpOwogCQlpZiAocHJlZEV4cHJzICYmIHZhcm5vICE9IDEp CiAJCQlDaGFuZ2VWYXJOb2RlcygoTm9kZSAqKSBwcmVkRXhwcnMsIDEsIHZhcm5vLCAwKTsKIAot CQlpZiAoIXByZWRpY2F0ZV9pbXBsaWVkX2J5KHByZWRFeHBycywgKExpc3QgKikgb25jb25mbGlj dC0+YXJiaXRlcldoZXJlLCBmYWxzZSkpCisJCS8qCisJCSAqIElmIGl0J3MgYSBwYXJ0aWFsIGlu ZGV4IGFuZCBjb252ZW50aW9uYWwgaW5mZXJlbmNlLCBpdHMgcHJlZGljYXRlIG11c3QgYmUgaW1w bGllZAorCQkgKiBieSB0aGUgT04gQ09ORkxJQ1QncyBXSEVSRSBjbGF1c2UuCisJCSAqLworCQlp ZiAoaW5kZXhPaWRGcm9tQ29uc3RyYWludCA9PSBJbnZhbGlkT2lkICYmICFwcmVkaWNhdGVfaW1w bGllZF9ieShwcmVkRXhwcnMsIHJlcXVpcmVkSW5kZXhQcmVkRXhwcnMsIGZhbHNlKSkKKwkJCWdv dG8gbmV4dDsKKwkJLyogSWYgaXQncyBhIHBhcnRpYWwgaW5kZXggYW5kIG5hbWVkIGNvbnN0cmFp bnQgcHJlZGljYXRlcyBtdXN0IGJlIGVxdWFsLiAqLworCQlpZiAoaW5kZXhPaWRGcm9tQ29uc3Ry YWludCAhPSBJbnZhbGlkT2lkICYmIGxpc3RfZGlmZmVyZW5jZShwcmVkRXhwcnMsIHJlcXVpcmVk SW5kZXhQcmVkRXhwcnMpICE9IE5JTCkKIAkJCWdvdG8gbmV4dDsKIAorZm91bmQ6CiAJCXJlc3Vs dHMgPSBsYXBwZW5kX29pZChyZXN1bHRzLCBpZHhGb3JtLT5pbmRleHJlbGlkKTsKKwkJZm91bmRW YWxpZCB8PSBpZHhGb3JtLT5pbmRpc3ZhbGlkOwogbmV4dDoKIAkJaW5kZXhfY2xvc2UoaWR4UmVs LCBOb0xvY2spOwogCX0KQEAgLTk0Niw3ICsxMDA4LDggQEAgbmV4dDoKIAlsaXN0X2ZyZWUoaW5k ZXhMaXN0KTsKIAl0YWJsZV9jbG9zZShyZWxhdGlvbiwgTm9Mb2NrKTsKIAotCWlmIChyZXN1bHRz ID09IE5JTCkKKwkvKiBJdCBpcyByZXF1aXJlZCB0byBoYXZlIGF0IGxlYXN0IG9uZSBpbmRpc3Zh bGlkIGluZGV4IGR1cmluZyB0aGUgcGxhbm5pbmcuICovCisJaWYgKHJlc3VsdHMgPT0gTklMIHx8 ICFmb3VuZFZhbGlkKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfSU5W QUxJRF9DT0xVTU5fUkVGRVJFTkNFKSwKIAkJCQkgZXJybXNnKCJ0aGVyZSBpcyBubyB1bmlxdWUg b3IgZXhjbHVzaW9uIGNvbnN0cmFpbnQgbWF0Y2hpbmcgdGhlIE9OIENPTkZMSUNUIHNwZWNpZmlj YXRpb24iKSkpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvdGltZS9zbmFwbWdyLmMg Yi9zcmMvYmFja2VuZC91dGlscy90aW1lL3NuYXBtZ3IuYwppbmRleCA4ZjE1MDhiMWVlMi4uM2Qw MThjM2ExZTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL3RpbWUvc25hcG1nci5jCisr KyBiL3NyYy9iYWNrZW5kL3V0aWxzL3RpbWUvc25hcG1nci5jCkBAIC02NCw2ICs2NCw3IEBACiAj aW5jbHVkZSAidXRpbHMvcmVzb3duZXIuaCIKICNpbmNsdWRlICJ1dGlscy9zbmFwbWdyLmgiCiAj aW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKKyNpbmNsdWRlICJ1dGlscy9pbmplY3Rpb25fcG9p bnQuaCIKIAogCiAvKgpAQCAtMzg4LDYgKzM4OSw3IEBAIEludmFsaWRhdGVDYXRhbG9nU25hcHNo b3Qodm9pZCkKIAkJcGFpcmluZ2hlYXBfcmVtb3ZlKCZSZWdpc3RlcmVkU25hcHNob3RzLCAmQ2F0 YWxvZ1NuYXBzaG90LT5waF9ub2RlKTsKIAkJQ2F0YWxvZ1NuYXBzaG90ID0gTlVMTDsKIAkJU25h cHNob3RSZXNldFhtaW4oKTsKKwkJSU5KRUNUSU9OX1BPSU5UKCJpbnZhbGlkYXRlX2NhdGFsb2df c25hcHNob3RfZW5kIik7CiAJfQogfQogCi0tIAoyLjQzLjAKCg== --0000000000007d5b96062e941445 Content-Type: text/x-patch; charset="US-ASCII"; name="v15-0002-Add-stress-tests-for-concurrent-index-operations.patch" Content-Disposition: attachment; filename="v15-0002-Add-stress-tests-for-concurrent-index-operations.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m7dgd9hu1 RnJvbSBhZmQ3OTdlN2EwNzMxY2UxYjM1NTExZDJlODcyNGIyMGE3MmU0MTNlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxtaWNoYWlsLm5pa29sYWV2QGdtYWlsLmNvbT4KRGF0 ZTogU2F0LCAzMCBOb3YgMjAyNCAxNjoyNDoyMCArMDEwMApTdWJqZWN0OiBbUEFUQ0ggdjE1IDAy LzEyXSBBZGQgc3RyZXNzIHRlc3RzIGZvciBjb25jdXJyZW50IGluZGV4IG9wZXJhdGlvbnMKCkFk ZCBjb21wcmVoZW5zaXZlIHN0cmVzcyB0ZXN0cyBmb3IgY29uY3VycmVudCBpbmRleCBvcGVyYXRp b25zLCBmb2N1c2luZyBvbjoKKiBUZXN0aW5nIENSRUFURS9SRUlOREVYL0RST1AgSU5ERVggQ09O Q1VSUkVOVExZIHVuZGVyIGhlYXZ5IHdyaXRlIGxvYWQKKiBWZXJpZnlpbmcgaW5kZXggaW50ZWdy aXR5IGR1cmluZyBjb25jdXJyZW50IEhPVCB1cGRhdGVzCiogVGVzdGluZyB2YXJpb3VzIGluZGV4 IHR5cGVzIGluY2x1ZGluZyB1bmlxdWUgYW5kIHBhcnRpYWwgaW5kZXhlcwoqIFZhbGlkYXRpbmcg aW5kZXggY29ycmVjdG5lc3MgdXNpbmcgYW1jaGVjawoqIEV4ZXJjaXNpbmcgcGFyYWxsZWwgd29y a2VyIGNvbmZpZ3VyYXRpb25zCgpUaGVzZSBzdHJlc3MgdGVzdHMgaGVscCBlbnN1cmUgcmVsaWFi aWxpdHkgb2YgY29uY3VycmVudCBpbmRleCBvcGVyYXRpb25zCnVuZGVyIGhlYXZ5IGxvYWQgY29u ZGl0aW9ucy4KLS0tCiBzcmMvYmluL3BnX2FtY2hlY2svbWVzb24uYnVpbGQgIHwgICAxICsKIHNy Yy9iaW4vcGdfYW1jaGVjay90LzAwNl9jaWMucGwgfCAxODkgKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysKIDIgZmlsZXMgY2hhbmdlZCwgMTkwIGluc2VydGlvbnMoKykKIGNyZWF0ZSBt b2RlIDEwMDY0NCBzcmMvYmluL3BnX2FtY2hlY2svdC8wMDZfY2ljLnBsCgpkaWZmIC0tZ2l0IGEv c3JjL2Jpbi9wZ19hbWNoZWNrL21lc29uLmJ1aWxkIGIvc3JjL2Jpbi9wZ19hbWNoZWNrL21lc29u LmJ1aWxkCmluZGV4IDMxNmVhMGQ0MGI4Li43ZGYxNTQzNWZiYiAxMDA2NDQKLS0tIGEvc3JjL2Jp bi9wZ19hbWNoZWNrL21lc29uLmJ1aWxkCisrKyBiL3NyYy9iaW4vcGdfYW1jaGVjay9tZXNvbi5i dWlsZApAQCAtMjgsNiArMjgsNyBAQCB0ZXN0cyArPSB7CiAgICAgICAndC8wMDNfY2hlY2sucGwn LAogICAgICAgJ3QvMDA0X3ZlcmlmeV9oZWFwYW0ucGwnLAogICAgICAgJ3QvMDA1X29wY2xhc3Nf ZGFtYWdlLnBsJywKKyAgICAgICd0LzAwNl9jaWMucGwnLAogICAgIF0sCiAgIH0sCiB9CmRpZmYg LS1naXQgYS9zcmMvYmluL3BnX2FtY2hlY2svdC8wMDZfY2ljLnBsIGIvc3JjL2Jpbi9wZ19hbWNo ZWNrL3QvMDA2X2NpYy5wbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u YTk1NTlkYmUzYWYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvYmluL3BnX2FtY2hlY2svdC8wMDZf Y2ljLnBsCkBAIC0wLDAgKzEsMTg5IEBACisjIENvcHlyaWdodCAoYykgMjAyNCwgUG9zdGdyZVNR TCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKworIyBUZXN0IFJFSU5ERVggQ09OQ1VSUkVOVExZ IHdpdGggY29uY3VycmVudCBtb2RpZmljYXRpb25zIGFuZCBIT1QgdXBkYXRlcwordXNlIHN0cmlj dDsKK3VzZSB3YXJuaW5ncyBGQVRBTCA9PiAnYWxsJzsKKwordXNlIFBvc3RncmVTUUw6OlRlc3Q6 OkNsdXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7Cit1c2UgVGVzdDo6TW9yZTsK KworVGVzdDo6TW9yZS0+YnVpbGRlci0+dG9kb19zdGFydCgnZmlsZXN5c3RlbSBidWcnKQorICBp ZiBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6aGFzX3dhbF9yZWFkX2J1ZzsKKworbXkgKCRub2Rl LCAkcmVzdWx0KTsKKworIworIyBUZXN0IHNldC11cAorIworJG5vZGUgPSBQb3N0Z3JlU1FMOjpU ZXN0OjpDbHVzdGVyLT5uZXcoJ1JDX3Rlc3QnKTsKKyRub2RlLT5pbml0OworJG5vZGUtPmFwcGVu ZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCSdsb2NrX3RpbWVvdXQgPSAnIC4gKDEwMDAgKiAk UG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM6OnRpbWVvdXRfZGVmYXVsdCkpOworJG5vZGUtPmFwcGVu ZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAnZnN5bmMgPSBvZmYnKTsKKyRub2RlLT5zdGFydDsK KyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcShDUkVBVEUgRVhURU5TSU9OIGFtY2hlY2sp KTsKKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcShDUkVBVEUgVEFCTEUgdGJsKGkgaW50 IHByaW1hcnkga2V5LAorCQkJCQkJCQljMSBtb25leSBkZWZhdWx0IDAsIGMyIG1vbmV5IGRlZmF1 bHQgMCwKKwkJCQkJCQkJYzMgbW9uZXkgZGVmYXVsdCAwLCB1cGRhdGVkX2F0IHRpbWVzdGFtcCwK KwkJCQkJCQkJaWEgaW50NFtdLCBwIHBvaW50KSkpOworJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCBxKENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIHRibChpLCB1cGRhdGVkX2F0 KTspKTsKKyMgY3JlYXRlIHNlcXVlbmNlCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHEo Q1JFQVRFIFVOTE9HR0VEIFNFUVVFTkNFIGluX3Jvd19yZWJ1aWxkIFNUQVJUIDEgSU5DUkVNRU5U IDE7KSk7Ciskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHEoU0VMRUNUIG5leHR2YWwoJ2lu X3Jvd19yZWJ1aWxkJyk7KSk7CisKKyMgQ3JlYXRlIGhlbHBlciBmdW5jdGlvbnMgZm9yIHByZWRp Y2F0ZSB0ZXN0cworJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxKAorCUNSRUFURSBGVU5D VElPTiBwcmVkaWNhdGVfc3RhYmxlKCkgUkVUVVJOUyBib29sIElNTVVUQUJMRQorCUxBTkdVQUdF IHBscGdzcWwgQVMgJCQKKwlCRUdJTgorCQlFWEVDVVRFICdTRUxFQ1QgdHhpZF9jdXJyZW50KCkn OworCQlSRVRVUk4gdHJ1ZTsKKwlFTkQ7ICQkOworKSk7CisKKyRub2RlLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywgcSgKKwlDUkVBVEUgRlVOQ1RJT04gcHJlZGljYXRlX2NvbnN0KGludGVnZXIpIFJF VFVSTlMgYm9vbCBJTU1VVEFCTEUKKwlMQU5HVUFHRSBwbHBnc3FsIEFTICQkCisJQkVHSU4KKwkJ UkVUVVJOIE1PRCgkMSwgMikgPSAwOworCUVORDsgJCQ7CispKTsKKworIyBSdW4gQ0lDL1JJQyBp biBkaWZmZXJlbnQgb3B0aW9ucyBjb25jdXJyZW50bHkgd2l0aCB1cHNlcnRzCiskbm9kZS0+cGdi ZW5jaCgKKwknLS1uby12YWN1dW0gLS1jbGllbnQ9MzAgLS1qb2JzPTQgLS1leGl0LW9uLWFib3J0 IC0tdHJhbnNhY3Rpb25zPTI1MDAnLAorCTAsCisJW3Fye2FjdHVhbGx5IHByb2Nlc3NlZH1dLAor CVtxcnteJH1dLAorCSdjb25jdXJyZW50IG9wZXJhdGlvbnMgd2l0aCBSRUlOREVYL0NSRUFURSBJ TkRFWCBDT05DVVJSRU5UTFknLAorCXsKKwkJJ2NvbmN1cnJlbnRfb3BzJyA9PiBxKAorCQkJU0VM RUNUIHBnX3RyeV9hZHZpc29yeV9sb2NrKDQyKTo6aW50ZWdlciBBUyBnb3Rsb2NrIFxnc2V0CisJ CQlcaWYgOmdvdGxvY2sKKwkJCQlTRUxFQ1QgbmV4dHZhbCgnaW5fcm93X3JlYnVpbGQnKSBBUyBs YXN0X3ZhbHVlIFxnc2V0CisJCQkJXHNldCB2YXJpYW50IHJhbmRvbSgwLCA1KQorCQkJCVxzZXQg cGFyYWxsZWxzIHJhbmRvbSgwLCA0KQorCQkJCVxpZiA6bGFzdF92YWx1ZSA8IDMKKwkJCQkJQUxU RVIgVEFCTEUgdGJsIFNFVCAocGFyYWxsZWxfd29ya2Vycz06cGFyYWxsZWxzKTsKKwkJCQkJXGlm IDp2YXJpYW50ID0gMAorCQkJCQkJQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHhfMiBPTiB0 YmwoaSwgdXBkYXRlZF9hdCk7CisJCQkJCVxlbGlmIDp2YXJpYW50ID0gMQorCQkJCQkJQ1JFQVRF IElOREVYIENPTkNVUlJFTlRMWSBpZHhfMiBPTiB0YmwoaSwgdXBkYXRlZF9hdCkgV0hFUkUgcHJl ZGljYXRlX3N0YWJsZSgpOworCQkJCQlcZWxpZiA6dmFyaWFudCA9IDIKKwkJCQkJCUNSRUFURSBJ TkRFWCBDT05DVVJSRU5UTFkgaWR4XzIgT04gdGJsKGksIHVwZGF0ZWRfYXQpIFdIRVJFIE1PRChp LCAyKSA9IDA7CisJCQkJCVxlbGlmIDp2YXJpYW50ID0gMworCQkJCQkJQ1JFQVRFIElOREVYIENP TkNVUlJFTlRMWSBpZHhfMiBPTiB0YmwoaSwgdXBkYXRlZF9hdCkgV0hFUkUgcHJlZGljYXRlX2Nv bnN0KGkpOworCQkJCQlcZWxpZiA6dmFyaWFudCA9IDQKKwkJCQkJCUNSRUFURSBJTkRFWCBDT05D VVJSRU5UTFkgaWR4XzIgT04gdGJsKHByZWRpY2F0ZV9jb25zdChpKSk7CisJCQkJCVxlbGlmIDp2 YXJpYW50ID0gNQorCQkJCQkJQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHhfMiBPTiB0Ymwo aSwgcHJlZGljYXRlX2NvbnN0KGkpLCB1cGRhdGVkX2F0KSBXSEVSRSBwcmVkaWNhdGVfY29uc3Qo aSk7CisJCQkJCVxlbmRpZgorCQkJCQlcc2xlZXAgMTAgbXMKKwkJCQkJU0VMRUNUIGJ0X2luZGV4 X2NoZWNrKCdpZHhfMicsIGhlYXBhbGxpbmRleGVkID0+IHRydWUsIGNoZWNrdW5pcXVlID0+IHRy dWUpOworCQkJCQlSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBpZHhfMjsKKwkJCQkJXHNsZWVw IDEwIG1zCisJCQkJCVNFTEVDVCBidF9pbmRleF9jaGVjaygnaWR4XzInLCBoZWFwYWxsaW5kZXhl ZCA9PiB0cnVlLCBjaGVja3VuaXF1ZSA9PiB0cnVlKTsKKwkJCQkJRFJPUCBJTkRFWCBDT05DVVJS RU5UTFkgaWR4XzI7CisJCQkJXGVuZGlmCisJCQkJU0VMRUNUIHBnX2Fkdmlzb3J5X3VubG9jayg0 Mik7CisJCQlcZWxzZQorCQkJCVxzZXQgbnVtIHJhbmRvbSgxMDAwLCAxMDAwMDApCisJCQkJQkVH SU47CisJCQkJSU5TRVJUIElOVE8gdGJsIFZBTFVFUyhmbG9vcihyYW5kb20oKSo6bnVtKSwwLDAs MCxub3coKSkKKwkJCQkJT04gQ09ORkxJQ1QoaSkgRE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0g bm93KCk7CisJCQkJSU5TRVJUIElOVE8gdGJsIFZBTFVFUyhmbG9vcihyYW5kb20oKSo6bnVtKSww LDAsMCxub3coKSkKKwkJCQkJT04gQ09ORkxJQ1QoaSkgRE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0 ID0gbm93KCk7CisJCQkJSU5TRVJUIElOVE8gdGJsIFZBTFVFUyhmbG9vcihyYW5kb20oKSo6bnVt KSwwLDAsMCxub3coKSkKKwkJCQkJT04gQ09ORkxJQ1QoaSkgRE8gVVBEQVRFIFNFVCB1cGRhdGVk X2F0ID0gbm93KCk7CisJCQkJSU5TRVJUIElOVE8gdGJsIFZBTFVFUyhmbG9vcihyYW5kb20oKSo6 bnVtKSwwLDAsMCxub3coKSkKKwkJCQkJT04gQ09ORkxJQ1QoaSkgRE8gVVBEQVRFIFNFVCB1cGRh dGVkX2F0ID0gbm93KCk7CisJCQkJSU5TRVJUIElOVE8gdGJsIFZBTFVFUyhmbG9vcihyYW5kb20o KSo6bnVtKSwwLDAsMCxub3coKSkKKwkJCQkJT04gQ09ORkxJQ1QoaSkgRE8gVVBEQVRFIFNFVCB1 cGRhdGVkX2F0ID0gbm93KCk7CisJCQkJU0VMRUNUIHNldHZhbCgnaW5fcm93X3JlYnVpbGQnLCAx KTsKKwkJCQlDT01NSVQ7CisJCQlcZW5kaWYKKwkJKQorCX0pOworCiskbm9kZS0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsIHEoVFJVTkNBVEUgVEFCTEUgdGJsOykpOworCisjIFJ1biBDSUMvUklDIGZv ciB1bmlxdWUgaW5kZXggY29uY3VycmVudGx5IHdpdGggdXBzZXJ0cworJG5vZGUtPnBnYmVuY2go CisJJy0tbm8tdmFjdXVtIC0tY2xpZW50PTMwIC0tam9icz00IC0tZXhpdC1vbi1hYm9ydCAtLXRy YW5zYWN0aW9ucz0yNTAwJywKKwkwLAorCVtxcnthY3R1YWxseSBwcm9jZXNzZWR9XSwKKwlbcXJ7 XiR9XSwKKwknY29uY3VycmVudCBvcGVyYXRpb25zIHdpdGggUkVJTkRFWC9DUkVBVEUgSU5ERVgg Q09OQ1VSUkVOVExZIGZvciB1bmlxdWUgQlRSRUUnLAorCXsKKwkJJ2NvbmN1cnJlbnRfb3BzX3Vu aXF1ZV9pZHgnID0+IHEoCisJCQlTRUxFQ1QgcGdfdHJ5X2Fkdmlzb3J5X2xvY2soNDIpOjppbnRl Z2VyIEFTIGdvdGxvY2sgXGdzZXQKKwkJCVxpZiA6Z290bG9jaworCQkJCVNFTEVDVCBuZXh0dmFs KCdpbl9yb3dfcmVidWlsZCcpIEFTIGxhc3RfdmFsdWUgXGdzZXQKKwkJCQlcc2V0IHBhcmFsbGVs cyByYW5kb20oMCwgNCkKKwkJCQlcaWYgOmxhc3RfdmFsdWUgPCAzCisJCQkJCUFMVEVSIFRBQkxF IHRibCBTRVQgKHBhcmFsbGVsX3dvcmtlcnM9OnBhcmFsbGVscyk7CisJCQkJCUNSRUFURSBVTklR VUUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeF8yIE9OIHRibChpKTsKKwkJCQkJXHNsZWVwIDEwIG1z CisJCQkJCVNFTEVDVCBidF9pbmRleF9jaGVjaygnaWR4XzInLCBoZWFwYWxsaW5kZXhlZCA9PiB0 cnVlLCBjaGVja3VuaXF1ZSA9PiB0cnVlKTsKKwkJCQkJUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5U TFkgaWR4XzI7CisJCQkJCVxzbGVlcCAxMCBtcworCQkJCQlTRUxFQ1QgYnRfaW5kZXhfY2hlY2so J2lkeF8yJywgaGVhcGFsbGluZGV4ZWQgPT4gdHJ1ZSwgY2hlY2t1bmlxdWUgPT4gdHJ1ZSk7CisJ CQkJCURST1AgSU5ERVggQ09OQ1VSUkVOVExZIGlkeF8yOworCQkJCVxlbmRpZgorCQkJCVNFTEVD VCBwZ19hZHZpc29yeV91bmxvY2soNDIpOworCQkJXGVsc2UKKwkJCQlcc2V0IG51bSByYW5kb20o MSwgcG93ZXIoMTAsIHJhbmRvbSgxLCA1KSkpCisJCQkJSU5TRVJUIElOVE8gdGJsIFZBTFVFUyhm bG9vcihyYW5kb20oKSo6bnVtKSwwLDAsMCxub3coKSkKKwkJCQkJT04gQ09ORkxJQ1QoaSkgRE8g VVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0gbm93KCk7CisJCQkJU0VMRUNUIHNldHZhbCgnaW5fcm93 X3JlYnVpbGQnLCAxKTsKKwkJCVxlbmRpZgorCQkpCisJfSk7CisKKyRub2RlLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgcShUUlVOQ0FURSBUQUJMRSB0Ymw7KSk7CisKKyMgUnVuIENJQy9SSUMgZm9y ICBHSU4vR0lTVC9CUklOL0hBU0gvU1BHSVNUIGluZGV4IGNvbmN1cnJlbnRseSB3aXRoIHVwc2Vy dHMKKyRub2RlLT5wZ2JlbmNoKAorCSctLW5vLXZhY3V1bSAtLWNsaWVudD0zMCAtLWpvYnM9NCAt LWV4aXQtb24tYWJvcnQgLS10cmFuc2FjdGlvbnM9MjUwMCcsCisJMCwKKwlbcXJ7YWN0dWFsbHkg cHJvY2Vzc2VkfV0sCisJW3Fye14kfV0sCisJJ2NvbmN1cnJlbnQgb3BlcmF0aW9ucyB3aXRoIFJF SU5ERVgvQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBmb3IgR0lOL0dJU1QvQlJJTi9IQVNIL1NQ R0lTVCcsCisJeworCQknY29uY3VycmVudF9vcHNfaWR4JyA9PiBxKAorCQkJU0VMRUNUIHBnX3Ry eV9hZHZpc29yeV9sb2NrKDQyKTo6aW50ZWdlciBBUyBnb3Rsb2NrIFxnc2V0CisJCQlcaWYgOmdv dGxvY2sKKwkJCQlTRUxFQ1QgbmV4dHZhbCgnaW5fcm93X3JlYnVpbGQnKSBBUyBsYXN0X3ZhbHVl IFxnc2V0CisJCQkJXHNldCBwYXJhbGxlbHMgcmFuZG9tKDAsIDQpCisJCQkJXGlmIDpsYXN0X3Zh bHVlIDwgMworCQkJCQlBTFRFUiBUQUJMRSB0YmwgU0VUIChwYXJhbGxlbF93b3JrZXJzPTpwYXJh bGxlbHMpOworCQkJCQlcc2V0IHZhcmlhbnQgcmFuZG9tKDAsIDQpCisJCQkJCVxpZiA6dmFyaWFu dCA9IDAKKwkJCQkJCUNSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4XzIgT04gdGJsIFVTSU5H IEdJTiAoaWEpOworCQkJCQlcZWxpZiA6dmFyaWFudCA9IDEKKwkJCQkJCUNSRUFURSBJTkRFWCBD T05DVVJSRU5UTFkgaWR4XzIgT04gdGJsIFVTSU5HIEdJU1QgKHApOworCQkJCQlcZWxpZiA6dmFy aWFudCA9IDIKKwkJCQkJCUNSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4XzIgT04gdGJsIFVT SU5HIEJSSU4gKHVwZGF0ZWRfYXQpOworCQkJCQlcZWxpZiA6dmFyaWFudCA9IDMKKwkJCQkJCUNS RUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4XzIgT04gdGJsIFVTSU5HIEhBU0ggKHVwZGF0ZWRf YXQpOworCQkJCQlcZWxpZiA6dmFyaWFudCA9IDQKKwkJCQkJCUNSRUFURSBJTkRFWCBDT05DVVJS RU5UTFkgaWR4XzIgT04gdGJsIFVTSU5HIFNQR0lTVCAocCk7CisJCQkJCVxlbmRpZgorCQkJCQlc c2xlZXAgMTAgbXMKKwkJCQkJUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgaWR4XzI7CisJCQkJ CVxzbGVlcCAxMCBtcworCQkJCQlEUk9QIElOREVYIENPTkNVUlJFTlRMWSBpZHhfMjsKKwkJCQlc ZW5kaWYKKwkJCQlTRUxFQ1QgcGdfYWR2aXNvcnlfdW5sb2NrKDQyKTsKKwkJCVxlbHNlCisJCQkJ XHNldCBudW0gcmFuZG9tKDEsIHBvd2VyKDEwLCByYW5kb20oMSwgNSkpKQorCQkJCUlOU0VSVCBJ TlRPIHRibCBWQUxVRVMoZmxvb3IocmFuZG9tKCkqOm51bSksMCwwLDAsbm93KCkpCisJCQkJCU9O IENPTkZMSUNUKGkpIERPIFVQREFURSBTRVQgdXBkYXRlZF9hdCA9IG5vdygpOworCQkJCVNFTEVD VCBzZXR2YWwoJ2luX3Jvd19yZWJ1aWxkJywgMSk7CisJCQlcZW5kaWYKKwkJKQorCX0pOworCisk bm9kZS0+c3RvcDsKK2RvbmVfdGVzdGluZygpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK LS0gCjIuNDMuMAoK --0000000000007d5b96062e941445 Content-Type: text/x-patch; charset="US-ASCII"; name="v15-0003-Allow-advancing-xmin-during-non-unique-non-paral.patch" Content-Disposition: attachment; filename="v15-0003-Allow-advancing-xmin-during-non-unique-non-paral.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m7dgd9i12 RnJvbSAyMDM2MDZlYmJlYjgyNjQyMGNiYTY0OTRhMGE3MmE2YmM5YjhkNjllIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxtaWNoYWlsLm5pa29sYWV2QGdtYWlsLmNvbT4KRGF0 ZTogVHVlLCAzMSBEZWMgMjAyNCAyMToxMDoyMyArMDEwMApTdWJqZWN0OiBbUEFUQ0ggdjE1IDAz LzEyXSBBbGxvdyBhZHZhbmNpbmcgeG1pbiBkdXJpbmcgbm9uLXVuaXF1ZSwKIG5vbi1wYXJhbGxl bCBjb25jdXJyZW50IGluZGV4IGJ1aWxkcyBieSBwZXJpb2RpY2FsbHkgcmVzZXR0aW5nIHNuYXBz aG90cwoKTG9uZy1ydW5uaW5nIHRyYW5zYWN0aW9ucyBsaWtlIHRob3NlIHVzZWQgYnkgQ1JFQVRF IElOREVYIENPTkNVUlJFTlRMWSBhbmQgUkVJTkRFWCBDT05DVVJSRU5UTFkgY2FuIGhvbGQgYmFj ayB0aGUgZ2xvYmFsIHhtaW4gaG9yaXpvbiwgcHJldmVudGluZyBWQUNVVU0gZnJvbSBjbGVhbmlu ZyB1cCBkZWFkIHR1cGxlcyBhbmQgcG90ZW50aWFsbHkgbGVhZGluZyB0byB0cmFuc2FjdGlvbiBJ RCB3cmFwYXJvdW5kIGlzc3Vlcy4gSW4gUG9zdGdyZVNRTCAxNCwgY29tbWl0IGQ5ZDA3NjIyMmY1 YiBhdHRlbXB0ZWQgdG8gYWxsb3cgVkFDVVVNIHRvIGlnbm9yZSBpbmRleGluZyB0cmFuc2FjdGlv bnMgd2l0aCBDT05DVVJSRU5UTFkgdG8gbWl0aWdhdGUgdGhpcyBwcm9ibGVtLiBIb3dldmVyLCB0 aGlzIHdhcyByZXZlcnRlZCBpbiBjb21taXQgZTI4YmI4ODUxOTY5IGJlY2F1c2UgaXQgY291bGQg Y2F1c2UgaW5kZXhlcyB0byBtaXNzIGhlYXAgdHVwbGVzIHRoYXQgd2VyZSBIT1QtdXBkYXRlZCBh bmQgSE9ULXBydW5lZCBkdXJpbmcgdGhlIGluZGV4IGNyZWF0aW9uLCBsZWFkaW5nIHRvIGluZGV4 IGNvcnJ1cHRpb24uCgpUaGlzIHBhdGNoIGludHJvZHVjZXMgYSBzYWZlIGFsdGVybmF0aXZlIGJ5 IHBlcmlvZGljYWxseSByZXNldHRpbmcgdGhlIHNuYXBzaG90IHVzZWQgZHVyaW5nIG5vbi11bmlx dWUsIG5vbi1wYXJhbGxlbCBjb25jdXJyZW50IGluZGV4IGJ1aWxkcy4gQnkgcmVzZXR0aW5nIHRo ZSBzbmFwc2hvdCBldmVyeSBOIHBhZ2VzIGR1cmluZyB0aGUgaGVhcCBzY2FuLCB3ZSBhbGxvdyB0 aGUgeG1pbiBob3Jpem9uIHRvIGFkdmFuY2Ugd2l0aG91dCByaXNraW5nIGluZGV4IGNvcnJ1cHRp b24uIFRoaXMgYXBwcm9hY2ggaXMgc2FmZSBmb3Igbm9uLXVuaXF1ZSBpbmRleCBidWlsZHMgYmVj YXVzZSB0aGV5IGRvIG5vdCBlbmZvcmNlIHVuaXF1ZW5lc3MgY29uc3RyYWludHMgdGhhdCByZXF1 aXJlIGEgY29uc2lzdGVudCBzbmFwc2hvdCBhY3Jvc3MgdGhlIGVudGlyZSBzY2FuLgoKQ3VycmVu dGx5LCB0aGlzIHRlY2huaXF1ZSBpcyBhcHBsaWVkIHRvOgoKTm9uLXBhcmFsbGVsIGluZGV4IGJ1 aWxkczogUGFyYWxsZWwgaW5kZXggYnVpbGRzIGFyZSBub3QgeWV0IHN1cHBvcnRlZCBhbmQgd2ls bCBiZSBhZGRyZXNzZWQgaW4gYSBmdXR1cmUgY29tbWl0LgpOb24tdW5pcXVlIGluZGV4ZXM6IFVu aXF1ZSBpbmRleCBidWlsZHMgc3RpbGwgcmVxdWlyZSBhIGNvbnNpc3RlbnQgc25hcHNob3QgdG8g ZW5mb3JjZSB1bmlxdWVuZXNzIGNvbnN0cmFpbnRzLCBhbmQgc3VwcG9ydCBmb3IgdGhlbSBtYXkg YmUgYWRkZWQgaW4gdGhlIGZ1dHVyZS4KT25seSBkdXJpbmcgdGhlIGZpcnN0IHNjYW4gb2YgdGhl IGhlYXA6IFRoZSBzZWNvbmQgc2NhbiBkdXJpbmcgaW5kZXggdmFsaWRhdGlvbiBzdGlsbCB1c2Vz IGEgc2luZ2xlIHNuYXBzaG90IHRvIGVuc3VyZSBpbmRleCBjb3JyZWN0bmVzcy4KClRvIGltcGxl bWVudCB0aGlzLCBhIG5ldyBzY2FuIG9wdGlvbiBTT19SRVNFVF9TTkFQU0hPVCBpcyBpbnRyb2R1 Y2VkLiBXaGVuIHNldCwgaXQgY2F1c2VzIHRoZSBzbmFwc2hvdCB0byBiZSByZXNldCBldmVyeSBT T19SRVNFVF9TTkFQU0hPVF9FQUNIX05fUEFHRSBwYWdlcyBkdXJpbmcgdGhlIHNjYW4uIFRoZSBo ZWFwIHNjYW4gY29kZSBpcyBhZGp1c3RlZCB0byBzdXBwb3J0IHRoaXMgb3B0aW9uLCBhbmQgdGhl IGluZGV4IGJ1aWxkIGNvZGUgaXMgbW9kaWZpZWQgdG8gdXNlIGl0IGZvciBhcHBsaWNhYmxlIGNv bmN1cnJlbnQgaW5kZXggYnVpbGRzIHRoYXQgYXJlIG5vdCBvbiBzeXN0ZW0gY2F0YWxvZ3MgYW5k IG5vdCB1c2luZyBwYXJhbGxlbCB3b3JrZXJzLgoKVGhpcyBhZGRyZXNzZXMgdGhlIGlzc3VlcyB0 aGF0IGxlZCB0byB0aGUgcmV2ZXJzaW9uIG9mIGNvbW1pdCBkOWQwNzYyMjJmNWIsIHByb3ZpZGlu ZyBhIHNhZmUgd2F5IHRvIGFsbG93IHhtaW4gYWR2YW5jZW1lbnQgZHVyaW5nIGxvbmctcnVubmlu ZyBub24tdW5pcXVlLCBub24tcGFyYWxsZWwgY29uY3VycmVudCBpbmRleCBidWlsZHMgd2hpbGUg ZW5zdXJpbmcgaW5kZXggY29ycmVjdG5lc3MuCgpSZWdyZXNzaW9uIHRlc3RzIGFyZSBhZGRlZCB0 byB2ZXJpZnkgdGhlIGJlaGF2aW9yLgotLS0KIGNvbnRyaWIvYW1jaGVjay92ZXJpZnlfbmJ0cmVl LmMgICAgICAgICAgICAgICB8ICAgMyArLQogY29udHJpYi9wZ3N0YXR0dXBsZS9wZ3N0YXR0dXBs ZS5jICAgICAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMg ICAgICAgICAgICAgICAgfCAgMTYgKysrCiBzcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmluc2Vy dC5jICAgICAgICAgICAgfCAgIDMgKwogc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdGJ1aWxk LmMgICAgICAgICAgIHwgICAzICsKIHNyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2guYyAgICAg ICAgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyAgICAg ICAgICAgICAgfCAgNDUgKysrKysrKysKIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9o YW5kbGVyLmMgICAgICB8ICA1NyArKysrKysrKy0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaW5kZXgv Z2VuYW0uYyAgICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUv bmJ0c29ydC5jICAgICAgICAgICB8ICAzMCArKysrLQogc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lz dC9zcGdpbnNlcnQuYyAgICAgICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXgu YyAgICAgICAgICAgICAgICAgICB8ICAzMCArKysrLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5k ZXhjbWRzLmMgICAgICAgICAgICAgIHwgIDE0ICstLQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3Bs YW4vcGxhbm5lci5jICAgICAgICAgIHwgICA5ICsrCiBzcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFt LmggICAgICAgICAgICAgICAgICAgfCAgIDIgKwogc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0u aCAgICAgICAgICAgICAgICAgIHwgIDI4ICsrKystCiBzcmMvdGVzdC9tb2R1bGVzL2luamVjdGlv bl9wb2ludHMvTWFrZWZpbGUgICAgfCAgIDIgKy0KIC4uLi9leHBlY3RlZC9jaWNfcmVzZXRfc25h cHNob3RzLm91dCAgICAgICAgICB8IDEwNSArKysrKysrKysrKysrKysrKysKIHNyYy90ZXN0L21v ZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9tZXNvbi5idWlsZCB8ICAgMSArCiAuLi4vc3FsL2NpY19y ZXNldF9zbmFwc2hvdHMuc3FsICAgICAgICAgICAgICAgfCAgODYgKysrKysrKysrKysrKysKIDIw IGZpbGVzIGNoYW5nZWQsIDQwNyBpbnNlcnRpb25zKCspLCAzNCBkZWxldGlvbnMoLSkKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvZXhwZWN0ZWQv Y2ljX3Jlc2V0X3NuYXBzaG90cy5vdXQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1 bGVzL2luamVjdGlvbl9wb2ludHMvc3FsL2NpY19yZXNldF9zbmFwc2hvdHMuc3FsCgpkaWZmIC0t Z2l0IGEvY29udHJpYi9hbWNoZWNrL3ZlcmlmeV9uYnRyZWUuYyBiL2NvbnRyaWIvYW1jaGVjay92 ZXJpZnlfbmJ0cmVlLmMKaW5kZXggYWFjOGM3NGY1NDYuLjYzYTA4ZmJlNjE1IDEwMDY0NAotLS0g YS9jb250cmliL2FtY2hlY2svdmVyaWZ5X25idHJlZS5jCisrKyBiL2NvbnRyaWIvYW1jaGVjay92 ZXJpZnlfbmJ0cmVlLmMKQEAgLTY4OSw3ICs2ODksOCBAQCBidF9jaGVja19ldmVyeV9sZXZlbChS ZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwsIGJvb2wgaGVhcGtleXNwYWNlLAogCQkJCQkJ CQkJIDAsIC8qIG51bWJlciBvZiBrZXlzICovCiAJCQkJCQkJCQkgTlVMTCwJLyogc2NhbiBrZXkg Ki8KIAkJCQkJCQkJCSB0cnVlLAkvKiBidWZmZXIgYWNjZXNzIHN0cmF0ZWd5IE9LICovCi0JCQkJ CQkJCQkgdHJ1ZSk7IC8qIHN5bmNzY2FuIE9LPyAqLworCQkJCQkJCQkJIHRydWUsIC8qIHN5bmNz Y2FuIE9LPyAqLworCQkJCQkJCQkJIGZhbHNlKTsKIAogCQkvKgogCQkgKiBTY2FuIHdpbGwgYmVo YXZlIGFzIHRoZSBmaXJzdCBzY2FuIG9mIGEgQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWQpkaWZm IC0tZ2l0IGEvY29udHJpYi9wZ3N0YXR0dXBsZS9wZ3N0YXR0dXBsZS5jIGIvY29udHJpYi9wZ3N0 YXR0dXBsZS9wZ3N0YXR0dXBsZS5jCmluZGV4IDQ4Y2I4ZjU5YzRmLi5mZjdjYzA3ZGY5OSAxMDA2 NDQKLS0tIGEvY29udHJpYi9wZ3N0YXR0dXBsZS9wZ3N0YXR0dXBsZS5jCisrKyBiL2NvbnRyaWIv cGdzdGF0dHVwbGUvcGdzdGF0dHVwbGUuYwpAQCAtMzMyLDcgKzMzMiw3IEBAIHBnc3RhdF9oZWFw KFJlbGF0aW9uIHJlbCwgRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8pCiAJCQkJIGVycm1zZygib25s eSBoZWFwIEFNIGlzIHN1cHBvcnRlZCIpKSk7CiAKIAkvKiBEaXNhYmxlIHN5bmNzY2FuIGJlY2F1 c2Ugd2UgYXNzdW1lIHdlIHNjYW4gZnJvbSBibG9jayB6ZXJvIHVwd2FyZHMgKi8KLQlzY2FuID0g dGFibGVfYmVnaW5zY2FuX3N0cmF0KHJlbCwgU25hcHNob3RBbnksIDAsIE5VTEwsIHRydWUsIGZh bHNlKTsKKwlzY2FuID0gdGFibGVfYmVnaW5zY2FuX3N0cmF0KHJlbCwgU25hcHNob3RBbnksIDAs IE5VTEwsIHRydWUsIGZhbHNlLCBmYWxzZSk7CiAJaHNjYW4gPSAoSGVhcFNjYW5EZXNjKSBzY2Fu OwogCiAJSW5pdERpcnR5U25hcHNob3QoU25hcHNob3REaXJ0eSk7CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmlu LmMKaW5kZXggNjAzMjA0NDBmYzUuLmYxZGJhOWU4MTg1IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvYnJpbi9icmluLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5j CkBAIC0xMjI4LDYgKzEyMjgsNyBAQCBicmluYnVpbGQoUmVsYXRpb24gaGVhcCwgUmVsYXRpb24g aW5kZXgsIEluZGV4SW5mbyAqaW5kZXhJbmZvKQogCQlyZWx0dXBsZXMgPSB0YWJsZV9pbmRleF9i dWlsZF9zY2FuKGhlYXAsIGluZGV4LCBpbmRleEluZm8sIGZhbHNlLCB0cnVlLAogCQkJCQkJCQkJ CSAgIGJyaW5idWlsZENhbGxiYWNrLCBzdGF0ZSwgTlVMTCk7CiAKKwkJSW52YWxpZGF0ZUNhdGFs b2dTbmFwc2hvdCgpOwogCQkvKgogCQkgKiBwcm9jZXNzIHRoZSBmaW5hbCBiYXRjaAogCQkgKgpA QCAtMTI0Nyw2ICsxMjQ4LDcgQEAgYnJpbmJ1aWxkKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGlu ZGV4LCBJbmRleEluZm8gKmluZGV4SW5mbykKIAkJYnJpbl9maWxsX2VtcHR5X3JhbmdlcyhzdGF0 ZSwKIAkJCQkJCQkgICBzdGF0ZS0+YnNfY3VyclJhbmdlU3RhcnQsCiAJCQkJCQkJICAgc3RhdGUt PmJzX21heFJhbmdlU3RhcnQpOworCQlBc3NlcnQoIWluZGV4SW5mby0+aWlfQ29uY3VycmVudCB8 fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiAJfQogCiAJLyogcmVsZWFz ZSByZXNvdXJjZXMgKi8KQEAgLTIzNzAsNiArMjM3Miw3IEBAIF9icmluX2JlZ2luX3BhcmFsbGVs KEJyaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRl eCwKIAlXYWxVc2FnZSAgICp3YWx1c2FnZTsKIAlCdWZmZXJVc2FnZSAqYnVmZmVydXNhZ2U7CiAJ Ym9vbAkJbGVhZGVycGFydGljaXBhdGVzID0gdHJ1ZTsKKwlib29sCQluZWVkX3BvcF9hY3RpdmVf c25hcHNob3QgPSB0cnVlOwogCWludAkJCXF1ZXJ5bGVuOwogCiAjaWZkZWYgRElTQUJMRV9MRUFE RVJfUEFSVElDSVBBVElPTgpAQCAtMjM5NSw5ICsyMzk4LDE2IEBAIF9icmluX2JlZ2luX3BhcmFs bGVsKEJyaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBp bmRleCwKIAkgKiBsaXZlIGFjY29yZGluZyB0byB0aGF0LgogCSAqLwogCWlmICghaXNjb25jdXJy ZW50KQorCXsKKwkJQXNzZXJ0KEFjdGl2ZVNuYXBzaG90U2V0KCkpOwogCQlzbmFwc2hvdCA9IFNu YXBzaG90QW55OworCQluZWVkX3BvcF9hY3RpdmVfc25hcHNob3QgPSBmYWxzZTsKKwl9CiAJZWxz ZQorCXsKIAkJc25hcHNob3QgPSBSZWdpc3RlclNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNo b3QoKSk7CisJCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOwor CX0KIAogCS8qCiAJICogRXN0aW1hdGUgc2l6ZSBmb3Igb3VyIG93biBQQVJBTExFTF9LRVlfQlJJ Tl9TSEFSRUQgd29ya3NwYWNlLgpAQCAtMjQ0MCw2ICsyNDUwLDggQEAgX2JyaW5fYmVnaW5fcGFy YWxsZWwoQnJpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9u IGluZGV4LAogCS8qIElmIG5vIERTTSBzZWdtZW50IHdhcyBhdmFpbGFibGUsIGJhY2sgb3V0IChk byBzZXJpYWwgYnVpbGQpICovCiAJaWYgKHBjeHQtPnNlZyA9PSBOVUxMKQogCXsKKwkJaWYgKG5l ZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCkKKwkJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiAJCWlmIChJ c01WQ0NTbmFwc2hvdChzbmFwc2hvdCkpCiAJCQlVbnJlZ2lzdGVyU25hcHNob3Qoc25hcHNob3Qp OwogCQlEZXN0cm95UGFyYWxsZWxDb250ZXh0KHBjeHQpOwpAQCAtMjUxOSw2ICsyNTMxLDggQEAg X2JyaW5fYmVnaW5fcGFyYWxsZWwoQnJpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9u IGhlYXAsIFJlbGF0aW9uIGluZGV4LAogCS8qIElmIG5vIHdvcmtlcnMgd2VyZSBzdWNjZXNzZnVs bHkgbGF1bmNoZWQsIGJhY2sgb3V0IChkbyBzZXJpYWwgYnVpbGQpICovCiAJaWYgKHBjeHQtPm53 b3JrZXJzX2xhdW5jaGVkID09IDApCiAJeworCQlpZiAobmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90 KQorCQkJUG9wQWN0aXZlU25hcHNob3QoKTsKIAkJX2JyaW5fZW5kX3BhcmFsbGVsKGJyaW5sZWFk ZXIsIE5VTEwpOwogCQlyZXR1cm47CiAJfQpAQCAtMjUzNSw2ICsyNTQ5LDggQEAgX2JyaW5fYmVn aW5fcGFyYWxsZWwoQnJpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJl bGF0aW9uIGluZGV4LAogCSAqIHN1cmUgdGhhdCB0aGUgZmFpbHVyZS10by1zdGFydCBjYXNlIHdp bGwgbm90IGhhbmcgZm9yZXZlci4KIAkgKi8KIAlXYWl0Rm9yUGFyYWxsZWxXb3JrZXJzVG9BdHRh Y2gocGN4dCk7CisJaWYgKG5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCkKKwkJUG9wQWN0aXZlU25h cHNob3QoKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2lu aW5zZXJ0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmluc2VydC5jCmluZGV4IGQxYjVl OGYwZGQxLi5hNTE4NGU3ZDg5ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9n aW5pbnNlcnQuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmluc2VydC5jCkBAIC0y MSw2ICsyMSw3IEBACiAjaW5jbHVkZSAibm9kZXMvZXhlY25vZGVzLmgiCiAjaW5jbHVkZSAic3Rv cmFnZS9idWZtZ3IuaCIKICNpbmNsdWRlICJzdG9yYWdlL3ByZWRpY2F0ZS5oIgorI2luY2x1ZGUg InN0b3JhZ2UvcHJvYy5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAjaW5jbHVkZSAi dXRpbHMvcmVsLmgiCiAKQEAgLTM3NSw2ICszNzYsNyBAQCBnaW5idWlsZChSZWxhdGlvbiBoZWFw LCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZvICppbmRleEluZm8pCiAJYnVpbGRzdGF0ZS5hY2N1 bS5naW5zdGF0ZSA9ICZidWlsZHN0YXRlLmdpbnN0YXRlOwogCWdpbkluaXRCQSgmYnVpbGRzdGF0 ZS5hY2N1bSk7CiAKKwlBc3NlcnQoIWluZGV4SW5mby0+aWlfQ29uY3VycmVudCB8fCAhVHJhbnNh Y3Rpb25JZElzVmFsaWQoTXlQcm9jLT54aWQpKTsKIAkvKgogCSAqIERvIHRoZSBoZWFwIHNjYW4u ICBXZSBkaXNhbGxvdyBzeW5jIHNjYW4gaGVyZSBiZWNhdXNlIGRhdGFQbGFjZVRvUGFnZQogCSAq IHByZWZlcnMgdG8gcmVjZWl2ZSB0dXBsZXMgaW4gVElEIG9yZGVyLgpAQCAtNDIzLDYgKzQyNSw3 IEBAIGdpbmJ1aWxkKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJbmRleEluZm8gKmlu ZGV4SW5mbykKIAlyZXN1bHQtPmhlYXBfdHVwbGVzID0gcmVsdHVwbGVzOwogCXJlc3VsdC0+aW5k ZXhfdHVwbGVzID0gYnVpbGRzdGF0ZS5pbmR0dXBsZXM7CiAKKwlBc3NlcnQoIWluZGV4SW5mby0+ aWlfQ29uY3VycmVudCB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54aWQpKTsKIAly ZXR1cm4gcmVzdWx0OwogfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9n aXN0YnVpbGQuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3RidWlsZC5jCmluZGV4IDll NzA3MTY3ZDk4Li41Njk4MTE0N2FlMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dp c3QvZ2lzdGJ1aWxkLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdGJ1aWxkLmMK QEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJvcHRpbWl6ZXIvb3B0aW1pemVyLmgiCiAjaW5j bHVkZSAic3RvcmFnZS9idWZtZ3IuaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1bGtfd3JpdGUuaCIK KyNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKIAogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgi CiAjaW5jbHVkZSAidXRpbHMvcmVsLmgiCkBAIC0yNTksNiArMjYwLDcgQEAgZ2lzdGJ1aWxkKFJl bGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJbmRleEluZm8gKmluZGV4SW5mbykKIAlidWls ZHN0YXRlLmluZHR1cGxlcyA9IDA7CiAJYnVpbGRzdGF0ZS5pbmR0dXBsZXNTaXplID0gMDsKIAor CUFzc2VydCghaW5kZXhJbmZvLT5paV9Db25jdXJyZW50IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxp ZChNeVByb2MtPnhpZCkpOwogCWlmIChidWlsZHN0YXRlLmJ1aWxkTW9kZSA9PSBHSVNUX1NPUlRF RF9CVUlMRCkKIAl7CiAJCS8qCkBAIC0zNTAsNiArMzUyLDcgQEAgZ2lzdGJ1aWxkKFJlbGF0aW9u IGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJbmRleEluZm8gKmluZGV4SW5mbykKIAogCXJlc3VsdC0+ aGVhcF90dXBsZXMgPSByZWx0dXBsZXM7CiAJcmVzdWx0LT5pbmRleF90dXBsZXMgPSAoZG91Ymxl KSBidWlsZHN0YXRlLmluZHR1cGxlczsKKwlBc3NlcnQoIWluZGV4SW5mby0+aWlfQ29uY3VycmVu dCB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54aWQpKTsKIAogCXJldHVybiByZXN1 bHQ7CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoLmMgYi9zcmMv YmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoLmMKaW5kZXggMDJlYzExMjZhNGMuLmExNzA3MGQ1NjBm IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoLmMKKysrIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hhc2gvaGFzaC5jCkBAIC0xOTQsNiArMTk0LDcgQEAgaGFzaGJ1aWxkKFJl bGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJbmRleEluZm8gKmluZGV4SW5mbykKIAogCXJl c3VsdC0+aGVhcF90dXBsZXMgPSByZWx0dXBsZXM7CiAJcmVzdWx0LT5pbmRleF90dXBsZXMgPSBi dWlsZHN0YXRlLmluZHR1cGxlczsKKwlBc3NlcnQoIWluZGV4SW5mby0+aWlfQ29uY3VycmVudCB8 fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54aWQpKTsKIAogCXJldHVybiByZXN1bHQ7 CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCmluZGV4IGZhNzkzNWEwZWQzLi5kZWY0ZmUyMGQx ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKKysrIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKQEAgLTUzLDYgKzUzLDcgQEAKICNpbmNsdWRl ICJ1dGlscy9pbnZhbC5oIgogI2luY2x1ZGUgInV0aWxzL3NwY2NhY2hlLmgiCiAjaW5jbHVkZSAi dXRpbHMvc3lzY2FjaGUuaCIKKyNpbmNsdWRlICJ1dGlscy9pbmplY3Rpb25fcG9pbnQuaCIKIAog CiBzdGF0aWMgSGVhcFR1cGxlIGhlYXBfcHJlcGFyZV9pbnNlcnQoUmVsYXRpb24gcmVsYXRpb24s IEhlYXBUdXBsZSB0dXAsCkBAIC01NzAsNiArNTcxLDM2IEBAIGhlYXBfcHJlcGFyZV9wYWdlc2Nh bihUYWJsZVNjYW5EZXNjIHNzY2FuKQogCUxvY2tCdWZmZXIoYnVmZmVyLCBCVUZGRVJfTE9DS19V TkxPQ0spOwogfQogCisvKgorICogUmVzZXQgdGhlIGFjdGl2ZSBzbmFwc2hvdCBkdXJpbmcgYSBz Y2FuLgorICogVGhpcyBlbnN1cmVzIHRoZSB4bWluIGhvcml6b24gY2FuIGFkdmFuY2Ugd2hpbGUg bWFpbnRhaW5pbmcgc2FmZSB0dXBsZSB2aXNpYmlsaXR5LgorICogTm90ZTogTm8gb3RoZXIgc25h cHNob3Qgc2hvdWxkIGJlIGFjdGl2ZSBkdXJpbmcgdGhpcyBvcGVyYXRpb24uCisgKi8KK3N0YXRp YyBpbmxpbmUgdm9pZAoraGVhcF9yZXNldF9zY2FuX3NuYXBzaG90KFRhYmxlU2NhbkRlc2Mgc3Nj YW4pCit7CisJLyogTWFrZSBzdXJlIG5vIG90aGVyIHNuYXBzaG90IHdhcyBzZXQgYXMgYWN0aXZl LiAqLworCUFzc2VydChHZXRBY3RpdmVTbmFwc2hvdCgpID09IHNzY2FuLT5yc19zbmFwc2hvdCk7 CisJLyogQW5kIG1ha2Ugc3VyZSBhY3RpdmUgc25hcHNob3QgaXMgbm90IHJlZ2lzdGVyZWQuICov CisJQXNzZXJ0KEdldEFjdGl2ZVNuYXBzaG90KCktPnJlZ2RfY291bnQgPT0gMCk7CisJUG9wQWN0 aXZlU25hcHNob3QoKTsKKworCXNzY2FuLT5yc19zbmFwc2hvdCA9IEludmFsaWRTbmFwc2hvdDsg LyoganVzdCBvdCBiZSB0aWR5ICovCisJQXNzZXJ0KCFIYXZlUmVnaXN0ZXJlZE9yQWN0aXZlU25h cHNob3QoKSk7CisJSW52YWxpZGF0ZUNhdGFsb2dTbmFwc2hvdCgpOworCisJLyogR29hbCBvZiBz bmFwc2hvdCByZXNldCBpcyB0byBhbGxvdyBob3Jpem9uIHRvIGFkdmFuY2UuICovCisJQXNzZXJ0 KCFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKKyNpZiBVU0VfSU5KRUNUSU9O X1BPSU5UUworCS8qIEluIHNvbWUgY2FzZXMgaXQgaXMgc3RpbGwgbm90IHBvc3NpYmxlIGR1ZSB4 aWQgYXNzaWduLiAqLworCWlmICghVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54aWQpKQor CQlJTkpFQ1RJT05fUE9JTlQoImhlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUiKTsK KyNlbmRpZgorCisJUHVzaEFjdGl2ZVNuYXBzaG90KEdldExhdGVzdFNuYXBzaG90KCkpOworCXNz Y2FuLT5yc19zbmFwc2hvdCA9IEdldEFjdGl2ZVNuYXBzaG90KCk7Cit9CisKIC8qCiAgKiBoZWFw X2ZldGNoX25leHRfYnVmZmVyIC0gcmVhZCBhbmQgcGluIHRoZSBuZXh0IGJsb2NrIGZyb20gTUFJ Tl9GT1JLTlVNLgogICoKQEAgLTYxMSw3ICs2NDIsMTIgQEAgaGVhcF9mZXRjaF9uZXh0X2J1ZmZl cihIZWFwU2NhbkRlc2Mgc2NhbiwgU2NhbkRpcmVjdGlvbiBkaXIpCiAKIAlzY2FuLT5yc19jYnVm ID0gcmVhZF9zdHJlYW1fbmV4dF9idWZmZXIoc2Nhbi0+cnNfcmVhZF9zdHJlYW0sIE5VTEwpOwog CWlmIChCdWZmZXJJc1ZhbGlkKHNjYW4tPnJzX2NidWYpKQorCXsKIAkJc2Nhbi0+cnNfY2Jsb2Nr ID0gQnVmZmVyR2V0QmxvY2tOdW1iZXIoc2Nhbi0+cnNfY2J1Zik7CisJCWlmICgoc2Nhbi0+cnNf YmFzZS5yc19mbGFncyAmIFNPX1JFU0VUX1NOQVBTSE9UKSAmJgorCQkJKHNjYW4tPnJzX2NibG9j ayAlIFNPX1JFU0VUX1NOQVBTSE9UX0VBQ0hfTl9QQUdFID09IDApKQorCQkJaGVhcF9yZXNldF9z Y2FuX3NuYXBzaG90KChUYWJsZVNjYW5EZXNjKSBzY2FuKTsKKwl9CiB9CiAKIC8qCkBAIC0xMjU2 LDYgKzEyOTIsMTUgQEAgaGVhcF9lbmRzY2FuKFRhYmxlU2NhbkRlc2Mgc3NjYW4pCiAJaWYgKHNj YW4tPnJzX3BhcmFsbGVsd29ya2VyZGF0YSAhPSBOVUxMKQogCQlwZnJlZShzY2FuLT5yc19wYXJh bGxlbHdvcmtlcmRhdGEpOwogCisJaWYgKHNjYW4tPnJzX2Jhc2UucnNfZmxhZ3MgJiBTT19SRVNF VF9TTkFQU0hPVCkKKwl7CisJCUFzc2VydCghKHNjYW4tPnJzX2Jhc2UucnNfZmxhZ3MgJiBTT19U RU1QX1NOQVBTSE9UKSk7CisJCS8qIE1ha2Ugc3VyZSBubyBvdGhlciBzbmFwc2hvdCB3YXMgc2V0 IGFzIGFjdGl2ZS4gKi8KKwkJQXNzZXJ0KEdldEFjdGl2ZVNuYXBzaG90KCkgPT0gc3NjYW4tPnJz X3NuYXBzaG90KTsKKwkJLyogQW5kIG1ha2Ugc3VyZSBzbmFwc2hvdCBpcyBub3QgcmVnaXN0ZXJl ZC4gKi8KKwkJQXNzZXJ0KEdldEFjdGl2ZVNuYXBzaG90KCktPnJlZ2RfY291bnQgPT0gMCk7CisJ fQorCiAJaWYgKHNjYW4tPnJzX2Jhc2UucnNfZmxhZ3MgJiBTT19URU1QX1NOQVBTSE9UKQogCQlV bnJlZ2lzdGVyU25hcHNob3Qoc2Nhbi0+cnNfYmFzZS5yc19zbmFwc2hvdCk7CiAKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCmluZGV4IGMwYmVjMDE0MTU0Li42ZDRkZTc3 MDM3YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIu YworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCkBAIC0xMTkw LDYgKzExOTAsOCBAQCBoZWFwYW1faW5kZXhfYnVpbGRfcmFuZ2Vfc2NhbihSZWxhdGlvbiBoZWFw UmVsYXRpb24sCiAJRXhwckNvbnRleHQgKmVjb250ZXh0OwogCVNuYXBzaG90CXNuYXBzaG90Owog CWJvb2wJCW5lZWRfdW5yZWdpc3Rlcl9zbmFwc2hvdCA9IGZhbHNlOworCWJvb2wJCW5lZWRfcG9w X2FjdGl2ZV9zbmFwc2hvdCA9IGZhbHNlOworCWJvb2wJCXJlc2V0X3NuYXBzaG90cyA9IGZhbHNl OwogCVRyYW5zYWN0aW9uSWQgT2xkZXN0WG1pbjsKIAlCbG9ja051bWJlciBwcmV2aW91c19ibGtu byA9IEludmFsaWRCbG9ja051bWJlcjsKIAlCbG9ja051bWJlciByb290X2Jsa25vID0gSW52YWxp ZEJsb2NrTnVtYmVyOwpAQCAtMTIyNCw5ICsxMjI2LDYgQEAgaGVhcGFtX2luZGV4X2J1aWxkX3Jh bmdlX3NjYW4oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCS8qIEFycmFuZ2UgZm9yIGVjb250ZXh0 J3Mgc2NhbiB0dXBsZSB0byBiZSB0aGUgdHVwbGUgdW5kZXIgdGVzdCAqLwogCWVjb250ZXh0LT5l Y3h0X3NjYW50dXBsZSA9IHNsb3Q7CiAKLQkvKiBTZXQgdXAgZXhlY3V0aW9uIHN0YXRlIGZvciBw cmVkaWNhdGUsIGlmIGFueS4gKi8KLQlwcmVkaWNhdGUgPSBFeGVjUHJlcGFyZVF1YWwoaW5kZXhJ bmZvLT5paV9QcmVkaWNhdGUsIGVzdGF0ZSk7Ci0KIAkvKgogCSAqIFByZXBhcmUgZm9yIHNjYW4g b2YgdGhlIGJhc2UgcmVsYXRpb24uICBJbiBhIG5vcm1hbCBpbmRleCBidWlsZCwgd2UgdXNlCiAJ ICogU25hcHNob3RBbnkgYmVjYXVzZSB3ZSBtdXN0IHJldHJpZXZlIGFsbCB0dXBsZXMgYW5kIGRv IG91ciBvd24gdGltZQpAQCAtMTIzNiw2ICsxMjM1LDE1IEBAIGhlYXBhbV9pbmRleF9idWlsZF9y YW5nZV9zY2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkgKi8KIAlPbGRlc3RYbWluID0gSW52 YWxpZFRyYW5zYWN0aW9uSWQ7CiAKKwkvKgorCSAqIEZvciB1bmlxdWUgaW5kZXggd2UgbmVlZCBj b25zaXN0ZW50IHNuYXBzaG90IGZvciB0aGUgd2hvbGUgc2Nhbi4KKwkgKiBJbiBjYXNlIG9mIHBh cmFsbGVsIHNjYW4gc29tZSBhZGRpdGlvbmFsIGluZnJhc3RydWN0dXJlIHJlcXVpcmVkCisJICog dG8gcGVyZm9ybSBzY2FuIHdpdGggU09fUkVTRVRfU05BUFNIT1Qgd2hpY2ggaXMgbm90IHlldCBy ZWFkeS4KKwkgKi8KKwlyZXNldF9zbmFwc2hvdHMgPSBpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQg JiYKKwkJCQkJICAhaW5kZXhJbmZvLT5paV9VbmlxdWUgJiYKKwkJCQkJICAhaXNfc3lzdGVtX2Nh dGFsb2c7IC8qIGp1c3QgZm9yIHRoZSBjYXNlICovCisKIAkvKiBva2F5IHRvIGlnbm9yZSBsYXp5 IFZBQ1VVTXMgaGVyZSAqLwogCWlmICghSXNCb290c3RyYXBQcm9jZXNzaW5nTW9kZSgpICYmICFp bmRleEluZm8tPmlpX0NvbmN1cnJlbnQpCiAJCU9sZGVzdFhtaW4gPSBHZXRPbGRlc3ROb25SZW1v dmFibGVUcmFuc2FjdGlvbklkKGhlYXBSZWxhdGlvbik7CkBAIC0xMjQ0LDI0ICsxMjUyLDQxIEBA IGhlYXBhbV9pbmRleF9idWlsZF9yYW5nZV9zY2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAl7 CiAJCS8qCiAJCSAqIFNlcmlhbCBpbmRleCBidWlsZC4KLQkJICoKLQkJICogTXVzdCBiZWdpbiBv dXIgb3duIGhlYXAgc2NhbiBpbiB0aGlzIGNhc2UuICBXZSBtYXkgYWxzbyBuZWVkIHRvCi0JCSAq IHJlZ2lzdGVyIGEgc25hcHNob3Qgd2hvc2UgbGlmZXRpbWUgaXMgdW5kZXIgb3VyIGRpcmVjdCBj b250cm9sLgogCQkgKi8KIAkJaWYgKCFUcmFuc2FjdGlvbklkSXNWYWxpZChPbGRlc3RYbWluKSkK IAkJewotCQkJc25hcHNob3QgPSBSZWdpc3RlclNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNo b3QoKSk7Ci0JCQluZWVkX3VucmVnaXN0ZXJfc25hcHNob3QgPSB0cnVlOworCQkJc25hcHNob3Qg PSBHZXRUcmFuc2FjdGlvblNuYXBzaG90KCk7CisJCQkvKgorCQkJICogTXVzdCBiZWdpbiBvdXIg b3duIGhlYXAgc2NhbiBpbiB0aGlzIGNhc2UuICBXZSBtYXkgYWxzbyBuZWVkIHRvCisJCQkgKiBy ZWdpc3RlciBhIHNuYXBzaG90IHdob3NlIGxpZmV0aW1lIGlzIHVuZGVyIG91ciBkaXJlY3QgY29u dHJvbC4KKwkJCSAqIEluIGNhc2Ugb2YgcmVzZXR0aW5nIG9mIHNuYXBzaG90IGR1cmluZyB0aGUg c2NhbiByZWdpc3RyYXRpb24gaXMKKwkJCSAqIG5vdCBhbGxvd2VkIGJlY2F1c2Ugc25hcHNob3Qg aXMgZ29pbmcgdG8gYmUgY2hhbmdlZCBldmVyeSBzbworCQkJICogb2Z0ZW4uCisJCQkgKi8KKwkJ CWlmICghcmVzZXRfc25hcHNob3RzKQorCQkJeworCQkJCXNuYXBzaG90ID0gUmVnaXN0ZXJTbmFw c2hvdChzbmFwc2hvdCk7CisJCQkJbmVlZF91bnJlZ2lzdGVyX3NuYXBzaG90ID0gdHJ1ZTsKKwkJ CX0KKwkJCUFzc2VydCghQWN0aXZlU25hcHNob3RTZXQoKSk7CisJCQlQdXNoQWN0aXZlU25hcHNo b3Qoc25hcHNob3QpOworCQkJLyogc3RvcmUgbGluayB0byBzbmFwc2hvdCBiZWNhdXNlIGl0IG1h eSBiZSBjb3BpZWQgKi8KKwkJCXNuYXBzaG90ID0gR2V0QWN0aXZlU25hcHNob3QoKTsKKwkJCW5l ZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCA9IHRydWU7CiAJCX0KIAkJZWxzZQorCQl7CisJCQlBc3Nl cnQoIWluZGV4SW5mby0+aWlfQ29uY3VycmVudCk7CiAJCQlzbmFwc2hvdCA9IFNuYXBzaG90QW55 OworCQl9CiAKIAkJc2NhbiA9IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdChoZWFwUmVsYXRpb24sCS8q IHJlbGF0aW9uICovCiAJCQkJCQkJCQkgc25hcHNob3QsCS8qIHNuYXBzaG90ICovCiAJCQkJCQkJ CQkgMCwgLyogbnVtYmVyIG9mIGtleXMgKi8KIAkJCQkJCQkJCSBOVUxMLAkvKiBzY2FuIGtleSAq LwogCQkJCQkJCQkJIHRydWUsCS8qIGJ1ZmZlciBhY2Nlc3Mgc3RyYXRlZ3kgT0sgKi8KLQkJCQkJ CQkJCSBhbGxvd19zeW5jKTsJLyogc3luY3NjYW4gT0s/ICovCisJCQkJCQkJCQkgYWxsb3dfc3lu YywJLyogc3luY3NjYW4gT0s/ICovCisJCQkJCQkJCQkgcmVzZXRfc25hcHNob3RzIC8qIHJlc2V0 IHNuYXBzaG90cz8gKi8pOwogCX0KIAllbHNlCiAJewpAQCAtMTI3NSw2ICsxMzAwLDggQEAgaGVh cGFtX2luZGV4X2J1aWxkX3JhbmdlX3NjYW4oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCQlBc3Nl cnQoIUlzQm9vdHN0cmFwUHJvY2Vzc2luZ01vZGUoKSk7CiAJCUFzc2VydChhbGxvd19zeW5jKTsK IAkJc25hcHNob3QgPSBzY2FuLT5yc19zbmFwc2hvdDsKKwkJUHVzaEFjdGl2ZVNuYXBzaG90KHNu YXBzaG90KTsKKwkJbmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90ID0gdHJ1ZTsKIAl9CiAKIAloc2Nh biA9IChIZWFwU2NhbkRlc2MpIHNjYW47CkBAIC0xMjg5LDYgKzEzMTYsMTMgQEAgaGVhcGFtX2lu ZGV4X2J1aWxkX3JhbmdlX3NjYW4oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCUFzc2VydChzbmFw c2hvdCA9PSBTbmFwc2hvdEFueSA/IFRyYW5zYWN0aW9uSWRJc1ZhbGlkKE9sZGVzdFhtaW4pIDoK IAkJICAgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE9sZGVzdFhtaW4pKTsKIAlBc3NlcnQoc25hcHNo b3QgPT0gU25hcHNob3RBbnkgfHwgIWFueXZpc2libGUpOworCUFzc2VydChzbmFwc2hvdCA9PSBT bmFwc2hvdEFueSB8fCBBY3RpdmVTbmFwc2hvdFNldCgpKTsKKworCS8qIFNldCB1cCBleGVjdXRp b24gc3RhdGUgZm9yIHByZWRpY2F0ZSwgaWYgYW55LiAqLworCXByZWRpY2F0ZSA9IEV4ZWNQcmVw YXJlUXVhbChpbmRleEluZm8tPmlpX1ByZWRpY2F0ZSwgZXN0YXRlKTsKKwkvKiBDbGVhciByZWZl cmVuY2UgdG8gc25hcHNob3Qgc2luY2UgaXQgbWF5IGJlIGNoYW5nZWQgYnkgdGhlIHNjYW4gaXRz ZWxmLiAqLworCWlmIChyZXNldF9zbmFwc2hvdHMpCisJCXNuYXBzaG90ID0gSW52YWxpZFNuYXBz aG90OwogCiAJLyogUHVibGlzaCBudW1iZXIgb2YgYmxvY2tzIHRvIHNjYW4gKi8KIAlpZiAocHJv Z3Jlc3MpCkBAIC0xNzI0LDYgKzE3NTgsOCBAQCBoZWFwYW1faW5kZXhfYnVpbGRfcmFuZ2Vfc2Nh bihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAKIAl0YWJsZV9lbmRzY2FuKHNjYW4pOwogCisJaWYg KG5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCkKKwkJUG9wQWN0aXZlU25hcHNob3QoKTsKIAkvKiB3 ZSBjYW4gbm93IGZvcmdldCBvdXIgc25hcHNob3QsIGlmIHNldCBhbmQgcmVnaXN0ZXJlZCBieSB1 cyAqLwogCWlmIChuZWVkX3VucmVnaXN0ZXJfc25hcHNob3QpCiAJCVVucmVnaXN0ZXJTbmFwc2hv dChzbmFwc2hvdCk7CkBAIC0xNzk2LDcgKzE4MzIsOCBAQCBoZWFwYW1faW5kZXhfdmFsaWRhdGVf c2NhbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJCQkJCQkJCSAwLCAvKiBudW1iZXIgb2Yga2V5 cyAqLwogCQkJCQkJCQkgTlVMTCwJLyogc2NhbiBrZXkgKi8KIAkJCQkJCQkJIHRydWUsCS8qIGJ1 ZmZlciBhY2Nlc3Mgc3RyYXRlZ3kgT0sgKi8KLQkJCQkJCQkJIGZhbHNlKTsJLyogc3luY3NjYW4g bm90IE9LICovCisJCQkJCQkJCSBmYWxzZSwJLyogc3luY3NjYW4gbm90IE9LICovCisJCQkJCQkJ CSBmYWxzZSk7CiAJaHNjYW4gPSAoSGVhcFNjYW5EZXNjKSBzY2FuOwogCiAJcGdzdGF0X3Byb2dy ZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19TQ0FOX0JMT0NLU19UT1RBTCwKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9nZW5hbS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2lu ZGV4L2dlbmFtLmMKaW5kZXggMDdiYWUzNDJlMjUuLjBkMjYyYTQxODhkIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9hY2Nlc3MvaW5kZXgvZ2VuYW0uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv aW5kZXgvZ2VuYW0uYwpAQCAtNDYzLDcgKzQ2Myw3IEBAIHN5c3RhYmxlX2JlZ2luc2NhbihSZWxh dGlvbiBoZWFwUmVsYXRpb24sCiAJCSAqLwogCQlzeXNzY2FuLT5zY2FuID0gdGFibGVfYmVnaW5z Y2FuX3N0cmF0KGhlYXBSZWxhdGlvbiwgc25hcHNob3QsCiAJCQkJCQkJCQkJCSAgbmtleXMsIGtl eSwKLQkJCQkJCQkJCQkJICB0cnVlLCBmYWxzZSk7CisJCQkJCQkJCQkJCSAgdHJ1ZSwgZmFsc2Us IGZhbHNlKTsKIAkJc3lzc2Nhbi0+aXNjYW4gPSBOVUxMOwogCX0KIApkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0 cmVlL25idHNvcnQuYwppbmRleCA3YWJhODUyZGI5MC4uYjQ5MGRhMGVlZWUgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jCisrKyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9uYnRyZWUvbmJ0c29ydC5jCkBAIC0yNTgsNyArMjU4LDcgQEAgc3RhdGljIGRvdWJsZSBf YnRfc3Bvb2xzX2hlYXBzY2FuKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAogc3RhdGlj IHZvaWQgX2J0X3Nwb29sZGVzdHJveShCVFNwb29sICpidHNwb29sKTsKIHN0YXRpYyB2b2lkIF9i dF9zcG9vbChCVFNwb29sICpidHNwb29sLCBJdGVtUG9pbnRlciBzZWxmLAogCQkJCQkgIERhdHVt ICp2YWx1ZXMsIGJvb2wgKmlzbnVsbCk7Ci1zdGF0aWMgdm9pZCBfYnRfbGVhZmJ1aWxkKEJUU3Bv b2wgKmJ0c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyKTsKK3N0YXRpYyB2b2lkIF9idF9sZWFmYnVp bGQoQlRTcG9vbCAqYnRzcG9vbCwgQlRTcG9vbCAqYnRzcG9vbDIsIGJvb2wgcmVzZXRfc25hcHNo b3RzKTsKIHN0YXRpYyB2b2lkIF9idF9idWlsZF9jYWxsYmFjayhSZWxhdGlvbiBpbmRleCwgSXRl bVBvaW50ZXIgdGlkLCBEYXR1bSAqdmFsdWVzLAogCQkJCQkJCSAgIGJvb2wgKmlzbnVsbCwgYm9v bCB0dXBsZUlzQWxpdmUsIHZvaWQgKnN0YXRlKTsKIHN0YXRpYyBCdWxrV3JpdGVCdWZmZXIgX2J0 X2JsbmV3cGFnZShCVFdyaXRlU3RhdGUgKndzdGF0ZSwgdWludDMyIGxldmVsKTsKQEAgLTMyMSwx OCArMzIxLDIyIEBAIGJ0YnVpbGQoUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsIEluZGV4 SW5mbyAqaW5kZXhJbmZvKQogCQkJIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKGluZGV4KSk7CiAK IAlyZWx0dXBsZXMgPSBfYnRfc3Bvb2xzX2hlYXBzY2FuKGhlYXAsIGluZGV4LCAmYnVpbGRzdGF0 ZSwgaW5kZXhJbmZvKTsKKwlBc3NlcnQoaW5kZXhJbmZvLT5paV9QYXJhbGxlbFdvcmtlcnMgfHwg aW5kZXhJbmZvLT5paV9VbmlxdWUgfHwKKwkJICAhaW5kZXhJbmZvLT5paV9Db25jdXJyZW50IHx8 ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAogCS8qCiAJICogRmluaXNo IHRoZSBidWlsZCBieSAoMSkgY29tcGxldGluZyB0aGUgc29ydCBvZiB0aGUgc3Bvb2wgZmlsZSwg KDIpCiAJICogaW5zZXJ0aW5nIHRoZSBzb3J0ZWQgdHVwbGVzIGludG8gYnRyZWUgcGFnZXMgYW5k ICgzKSBidWlsZGluZyB0aGUgdXBwZXIKIAkgKiBsZXZlbHMuICBGaW5hbGx5LCBpdCBtYXkgYWxz byBiZSBuZWNlc3NhcnkgdG8gZW5kIHVzZSBvZiBwYXJhbGxlbGlzbS4KIAkgKi8KLQlfYnRfbGVh ZmJ1aWxkKGJ1aWxkc3RhdGUuc3Bvb2wsIGJ1aWxkc3RhdGUuc3Bvb2wyKTsKKwlfYnRfbGVhZmJ1 aWxkKGJ1aWxkc3RhdGUuc3Bvb2wsIGJ1aWxkc3RhdGUuc3Bvb2wyLCAhaW5kZXhJbmZvLT5paV9Q YXJhbGxlbFdvcmtlcnMgJiYgaW5kZXhJbmZvLT5paV9Db25jdXJyZW50KTsKIAlfYnRfc3Bvb2xk ZXN0cm95KGJ1aWxkc3RhdGUuc3Bvb2wpOwogCWlmIChidWlsZHN0YXRlLnNwb29sMikKIAkJX2J0 X3Nwb29sZGVzdHJveShidWlsZHN0YXRlLnNwb29sMik7CiAJaWYgKGJ1aWxkc3RhdGUuYnRsZWFk ZXIpCiAJCV9idF9lbmRfcGFyYWxsZWwoYnVpbGRzdGF0ZS5idGxlYWRlcik7CisJQXNzZXJ0KGlu ZGV4SW5mby0+aWlfUGFyYWxsZWxXb3JrZXJzIHx8IGluZGV4SW5mby0+aWlfVW5pcXVlIHx8CisJ CSAgIWluZGV4SW5mby0+aWlfQ29uY3VycmVudCB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQ cm9jLT54bWluKSk7CiAKIAlyZXN1bHQgPSAoSW5kZXhCdWlsZFJlc3VsdCAqKSBwYWxsb2Moc2l6 ZW9mKEluZGV4QnVpbGRSZXN1bHQpKTsKIApAQCAtNDgwLDYgKzQ4NCw5IEBAIF9idF9zcG9vbHNf aGVhcHNjYW4oUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsIEJUQnVpbGRTdGF0ZSAqYnVp bGRzdGF0ZSwKIAllbHNlCiAJCXJlbHR1cGxlcyA9IF9idF9wYXJhbGxlbF9oZWFwc2NhbihidWls ZHN0YXRlLAogCQkJCQkJCQkJCSAgJmluZGV4SW5mby0+aWlfQnJva2VuSG90Q2hhaW4pOworCUlu dmFsaWRhdGVDYXRhbG9nU25hcHNob3QoKTsKKwlBc3NlcnQoaW5kZXhJbmZvLT5paV9QYXJhbGxl bFdvcmtlcnMgfHwgaW5kZXhJbmZvLT5paV9VbmlxdWUgfHwKKwkJICAhaW5kZXhJbmZvLT5paV9D b25jdXJyZW50IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAogCS8q CiAJICogU2V0IHRoZSBwcm9ncmVzcyB0YXJnZXQgZm9yIHRoZSBuZXh0IHBoYXNlLiAgUmVzZXQg dGhlIGJsb2NrIG51bWJlcgpAQCAtNTM1LDcgKzU0Miw3IEBAIF9idF9zcG9vbChCVFNwb29sICpi dHNwb29sLCBJdGVtUG9pbnRlciBzZWxmLCBEYXR1bSAqdmFsdWVzLCBib29sICppc251bGwpCiAg KiBjcmVhdGUgYW4gZW50aXJlIGJ0cmVlLgogICovCiBzdGF0aWMgdm9pZAotX2J0X2xlYWZidWls ZChCVFNwb29sICpidHNwb29sLCBCVFNwb29sICpidHNwb29sMikKK19idF9sZWFmYnVpbGQoQlRT cG9vbCAqYnRzcG9vbCwgQlRTcG9vbCAqYnRzcG9vbDIsIGJvb2wgcmVzZXRfc25hcHNob3RzKQog ewogCUJUV3JpdGVTdGF0ZSB3c3RhdGU7CiAKQEAgLTU1NywxOCArNTY0LDIxIEBAIF9idF9sZWFm YnVpbGQoQlRTcG9vbCAqYnRzcG9vbCwgQlRTcG9vbCAqYnRzcG9vbDIpCiAJCQkJCQkJCQkgUFJP R1JFU1NfQlRSRUVfUEhBU0VfUEVSRk9STVNPUlRfMik7CiAJCXR1cGxlc29ydF9wZXJmb3Jtc29y dChidHNwb29sMi0+c29ydHN0YXRlKTsKIAl9CisJQXNzZXJ0KCFyZXNldF9zbmFwc2hvdHMgfHwg IVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCiAJd3N0YXRlLmhlYXAgPSBi dHNwb29sLT5oZWFwOwogCXdzdGF0ZS5pbmRleCA9IGJ0c3Bvb2wtPmluZGV4OwogCXdzdGF0ZS5p bnNrZXkgPSBfYnRfbWtzY2Fua2V5KHdzdGF0ZS5pbmRleCwgTlVMTCk7CiAJLyogX2J0X21rc2Nh bmtleSgpIHdvbid0IHNldCBhbGxlcXVhbGltYWdlIHdpdGhvdXQgbWV0YXBhZ2UgKi8KIAl3c3Rh dGUuaW5za2V5LT5hbGxlcXVhbGltYWdlID0gX2J0X2FsbGVxdWFsaW1hZ2Uod3N0YXRlLmluZGV4 LCB0cnVlKTsKKwlJbnZhbGlkYXRlQ2F0YWxvZ1NuYXBzaG90KCk7CiAKIAkvKiByZXNlcnZlIHRo ZSBtZXRhcGFnZSAqLwogCXdzdGF0ZS5idHdzX3BhZ2VzX2FsbG9jZWQgPSBCVFJFRV9NRVRBUEFH RSArIDE7CiAKIAlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NSRUFURUlE WF9TVUJQSEFTRSwKIAkJCQkJCQkJIFBST0dSRVNTX0JUUkVFX1BIQVNFX0xFQUZfTE9BRCk7CisJ QXNzZXJ0KCFyZXNldF9zbmFwc2hvdHMgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+ eG1pbikpOwogCV9idF9sb2FkKCZ3c3RhdGUsIGJ0c3Bvb2wsIGJ0c3Bvb2wyKTsKIH0KIApAQCAt MTQxMCw2ICsxNDIwLDcgQEAgX2J0X2JlZ2luX3BhcmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRz dGF0ZSwgYm9vbCBpc2NvbmN1cnJlbnQsIGludCByZXF1ZXN0KQogCVdhbFVzYWdlICAgKndhbHVz YWdlOwogCUJ1ZmZlclVzYWdlICpidWZmZXJ1c2FnZTsKIAlib29sCQlsZWFkZXJwYXJ0aWNpcGF0 ZXMgPSB0cnVlOworCWJvb2wJCW5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCA9IHRydWU7CiAJaW50 CQkJcXVlcnlsZW47CiAKICNpZmRlZiBESVNBQkxFX0xFQURFUl9QQVJUSUNJUEFUSU9OCkBAIC0x NDM1LDkgKzE0NDYsMTYgQEAgX2J0X2JlZ2luX3BhcmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRz dGF0ZSwgYm9vbCBpc2NvbmN1cnJlbnQsIGludCByZXF1ZXN0KQogCSAqIGxpdmUgYWNjb3JkaW5n IHRvIHRoYXQuCiAJICovCiAJaWYgKCFpc2NvbmN1cnJlbnQpCisJeworCQlBc3NlcnQoQWN0aXZl U25hcHNob3RTZXQoKSk7CiAJCXNuYXBzaG90ID0gU25hcHNob3RBbnk7CisJCW5lZWRfcG9wX2Fj dGl2ZV9zbmFwc2hvdCA9IGZhbHNlOworCX0KIAllbHNlCisJewogCQlzbmFwc2hvdCA9IFJlZ2lz dGVyU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKKwkJUHVzaEFjdGl2ZVNuYXBz aG90KHNuYXBzaG90KTsKKwl9CiAKIAkvKgogCSAqIEVzdGltYXRlIHNpemUgZm9yIG91ciBvd24g UEFSQUxMRUxfS0VZX0JUUkVFX1NIQVJFRCB3b3Jrc3BhY2UsIGFuZApAQCAtMTQ5MSw2ICsxNTA5 LDggQEAgX2J0X2JlZ2luX3BhcmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBp c2NvbmN1cnJlbnQsIGludCByZXF1ZXN0KQogCS8qIElmIG5vIERTTSBzZWdtZW50IHdhcyBhdmFp bGFibGUsIGJhY2sgb3V0IChkbyBzZXJpYWwgYnVpbGQpICovCiAJaWYgKHBjeHQtPnNlZyA9PSBO VUxMKQogCXsKKwkJaWYgKG5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCkKKwkJCVBvcEFjdGl2ZVNu YXBzaG90KCk7CiAJCWlmIChJc01WQ0NTbmFwc2hvdChzbmFwc2hvdCkpCiAJCQlVbnJlZ2lzdGVy U25hcHNob3Qoc25hcHNob3QpOwogCQlEZXN0cm95UGFyYWxsZWxDb250ZXh0KHBjeHQpOwpAQCAt MTU4NSw2ICsxNjA1LDggQEAgX2J0X2JlZ2luX3BhcmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRz dGF0ZSwgYm9vbCBpc2NvbmN1cnJlbnQsIGludCByZXF1ZXN0KQogCS8qIElmIG5vIHdvcmtlcnMg d2VyZSBzdWNjZXNzZnVsbHkgbGF1bmNoZWQsIGJhY2sgb3V0IChkbyBzZXJpYWwgYnVpbGQpICov CiAJaWYgKHBjeHQtPm53b3JrZXJzX2xhdW5jaGVkID09IDApCiAJeworCQlpZiAobmVlZF9wb3Bf YWN0aXZlX3NuYXBzaG90KQorCQkJUG9wQWN0aXZlU25hcHNob3QoKTsKIAkJX2J0X2VuZF9wYXJh bGxlbChidGxlYWRlcik7CiAJCXJldHVybjsKIAl9CkBAIC0xNjAxLDYgKzE2MjMsOCBAQCBfYnRf YmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLCBib29sIGlzY29uY3VycmVu dCwgaW50IHJlcXVlc3QpCiAJICogc3VyZSB0aGF0IHRoZSBmYWlsdXJlLXRvLXN0YXJ0IGNhc2Ug d2lsbCBub3QgaGFuZyBmb3JldmVyLgogCSAqLwogCVdhaXRGb3JQYXJhbGxlbFdvcmtlcnNUb0F0 dGFjaChwY3h0KTsKKwlpZiAobmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90KQorCQlQb3BBY3RpdmVT bmFwc2hvdCgpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lz dC9zcGdpbnNlcnQuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BnaW5zZXJ0LmMKaW5k ZXggNmE2MWUwOTNmYTAuLjA2YzAxY2YzMzYwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3Mvc3BnaXN0L3NwZ2luc2VydC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3Bn aW5zZXJ0LmMKQEAgLTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlICJub2Rlcy9leGVjbm9kZXMuaCIK ICNpbmNsdWRlICJzdG9yYWdlL2J1Zm1nci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvYnVsa193cml0 ZS5oIgorI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxz LmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsLmgiCiAKQEAgLTE0Myw2ICsxNDQsNyBAQCBzcGdidWls ZChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZvICppbmRleEluZm8pCiAJ cmVzdWx0ID0gKEluZGV4QnVpbGRSZXN1bHQgKikgcGFsbG9jMChzaXplb2YoSW5kZXhCdWlsZFJl c3VsdCkpOwogCXJlc3VsdC0+aGVhcF90dXBsZXMgPSByZWx0dXBsZXM7CiAJcmVzdWx0LT5pbmRl eF90dXBsZXMgPSBidWlsZHN0YXRlLmluZHR1cGxlczsKKwlBc3NlcnQoIWluZGV4SW5mby0+aWlf Q29uY3VycmVudCB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiAKIAly ZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5j IGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCmluZGV4IGNkYWJmNzgwMjQ0Li4yMTBmYzg4 NDMzZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCisrKyBiL3NyYy9i YWNrZW5kL2NhdGFsb2cvaW5kZXguYwpAQCAtNzksNiArNzksNyBAQAogI2luY2x1ZGUgInV0aWxz L3NuYXBtZ3IuaCIKICNpbmNsdWRlICJ1dGlscy9zeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxz L3R1cGxlc29ydC5oIgorI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgogCiAvKiBQb3RlbnRpYWxs eSBzZXQgYnkgcGdfdXBncmFkZV9zdXBwb3J0IGZ1bmN0aW9ucyAqLwogT2lkCQkJYmluYXJ5X3Vw Z3JhZGVfbmV4dF9pbmRleF9wZ19jbGFzc19vaWQgPSBJbnZhbGlkT2lkOwpAQCAtMTQ5MSw4ICsx NDkyLDggQEAgaW5kZXhfY29uY3VycmVudGx5X2J1aWxkKE9pZCBoZWFwUmVsYXRpb25JZCwKIAlS ZWxhdGlvbglpbmRleFJlbGF0aW9uOwogCUluZGV4SW5mbyAgKmluZGV4SW5mbzsKIAotCS8qIFRo aXMgaGFkIGJldHRlciBtYWtlIHN1cmUgdGhhdCBhIHNuYXBzaG90IGlzIGFjdGl2ZSAqLwotCUFz c2VydChBY3RpdmVTbmFwc2hvdFNldCgpKTsKKwlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlk KE15UHJvYy0+eG1pbikpOworCUFzc2VydCghVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54 aWQpKTsKIAogCS8qIE9wZW4gYW5kIGxvY2sgdGhlIHBhcmVudCBoZWFwIHJlbGF0aW9uICovCiAJ aGVhcFJlbCA9IHRhYmxlX29wZW4oaGVhcFJlbGF0aW9uSWQsIFNoYXJlVXBkYXRlRXhjbHVzaXZl TG9jayk7CkBAIC0xNTEwLDE5ICsxNTExLDI4IEBAIGluZGV4X2NvbmN1cnJlbnRseV9idWlsZChP aWQgaGVhcFJlbGF0aW9uSWQsCiAKIAlpbmRleFJlbGF0aW9uID0gaW5kZXhfb3BlbihpbmRleFJl bGF0aW9uSWQsIFJvd0V4Y2x1c2l2ZUxvY2spOwogCisJLyogQnVpbGRJbmRleEluZm8gbWF5IHJl cXVpcmUgYXMgc25hcHNob3QgZm9yIGV4cHJlc3Npb25zIGFuZCBwcmVkaWNhdGVzICovCisJUHVz aEFjdGl2ZVNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CiAJLyoKIAkgKiBXZSBo YXZlIHRvIHJlLWJ1aWxkIHRoZSBJbmRleEluZm8gc3RydWN0LCBzaW5jZSBpdCB3YXMgbG9zdCBp biB0aGUKIAkgKiBjb21taXQgb2YgdGhlIHRyYW5zYWN0aW9uIHdoZXJlIHRoaXMgY29uY3VycmVu dCBpbmRleCB3YXMgY3JlYXRlZCBhdAogCSAqIHRoZSBjYXRhbG9nIGxldmVsLgogCSAqLwogCWlu ZGV4SW5mbyA9IEJ1aWxkSW5kZXhJbmZvKGluZGV4UmVsYXRpb24pOworCS8qIERvbmUgd2l0aCBz bmFwc2hvdCAqLworCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiAJQXNzZXJ0KCFpbmRleEluZm8tPmlp X1JlYWR5Rm9ySW5zZXJ0cyk7CiAJaW5kZXhJbmZvLT5paV9Db25jdXJyZW50ID0gdHJ1ZTsKIAlp bmRleEluZm8tPmlpX0Jyb2tlbkhvdENoYWluID0gZmFsc2U7CisJQXNzZXJ0KCFUcmFuc2FjdGlv bklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAogCS8qIE5vdyBidWlsZCB0aGUgaW5kZXggKi8K IAlpbmRleF9idWlsZChoZWFwUmVsLCBpbmRleFJlbGF0aW9uLCBpbmRleEluZm8sIGZhbHNlLCB0 cnVlKTsKIAorCS8qIEludmFsaWRhdGUgY2F0YWxvZyBzbmFwc2hvdCBqdXN0IGZvciBhc3NlcnQg Ki8KKwlJbnZhbGlkYXRlQ2F0YWxvZ1NuYXBzaG90KCk7CisJQXNzZXJ0KChpbmRleEluZm8tPmlp X1BhcmFsbGVsV29ya2VycyB8fCBpbmRleEluZm8tPmlpX1VuaXF1ZSkgfHwgIVRyYW5zYWN0aW9u SWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOworCiAJLyogUm9sbCBiYWNrIGFueSBHVUMgY2hhbmdl cyBleGVjdXRlZCBieSBpbmRleCBmdW5jdGlvbnMgKi8KIAlBdEVPWGFjdF9HVUMoZmFsc2UsIHNh dmVfbmVzdGxldmVsKTsKIApAQCAtMTUzMywxMiArMTU0MywxOSBAQCBpbmRleF9jb25jdXJyZW50 bHlfYnVpbGQoT2lkIGhlYXBSZWxhdGlvbklkLAogCXRhYmxlX2Nsb3NlKGhlYXBSZWwsIE5vTG9j ayk7CiAJaW5kZXhfY2xvc2UoaW5kZXhSZWxhdGlvbiwgTm9Mb2NrKTsKIAorCS8qCisJICogVXBk YXRpbmcgcGdfaW5kZXggbWlnaHQgaW52b2x2ZSBUT0FTVCB0YWJsZSBhY2Nlc3MsIHNvIGVuc3Vy ZSB3ZQorCSAqIGhhdmUgYSB2YWxpZCBzbmFwc2hvdC4KKwkgKi8KKwlQdXNoQWN0aXZlU25hcHNo b3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKIAkvKgogCSAqIFVwZGF0ZSB0aGUgcGdfaW5k ZXggcm93IHRvIG1hcmsgdGhlIGluZGV4IGFzIHJlYWR5IGZvciBpbnNlcnRzLiBPbmNlIHdlCiAJ ICogY29tbWl0IHRoaXMgdHJhbnNhY3Rpb24sIGFueSBuZXcgdHJhbnNhY3Rpb25zIHRoYXQgb3Bl biB0aGUgdGFibGUgbXVzdAogCSAqIGluc2VydCBuZXcgZW50cmllcyBpbnRvIHRoZSBpbmRleCBm b3IgaW5zZXJ0aW9ucyBhbmQgbm9uLUhPVCB1cGRhdGVzLgogCSAqLwogCWluZGV4X3NldF9zdGF0 ZV9mbGFncyhpbmRleFJlbGF0aW9uSWQsIElOREVYX0NSRUFURV9TRVRfUkVBRFkpOworCS8qIHdl IGNhbiBkbyBhd2F5IHdpdGggb3VyIHNuYXBzaG90ICovCisJUG9wQWN0aXZlU25hcHNob3QoKTsK IH0KIAogLyoKQEAgLTMyMDksNyArMzIyNiw4IEBAIEluZGV4Q2hlY2tFeGNsdXNpb24oUmVsYXRp b24gaGVhcFJlbGF0aW9uLAogCQkJCQkJCQkgMCwgLyogbnVtYmVyIG9mIGtleXMgKi8KIAkJCQkJ CQkJIE5VTEwsCS8qIHNjYW4ga2V5ICovCiAJCQkJCQkJCSB0cnVlLAkvKiBidWZmZXIgYWNjZXNz IHN0cmF0ZWd5IE9LICovCi0JCQkJCQkJCSB0cnVlKTsgLyogc3luY3NjYW4gT0sgKi8KKwkJCQkJ CQkJIHRydWUsIC8qIHN5bmNzY2FuIE9LICovCisJCQkJCQkJCSBmYWxzZSk7CiAKIAl3aGlsZSAo dGFibGVfc2Nhbl9nZXRuZXh0c2xvdChzY2FuLCBGb3J3YXJkU2NhbkRpcmVjdGlvbiwgc2xvdCkp CiAJewpAQCAtMzI3MiwxMiArMzI5MCwxNiBAQCBJbmRleENoZWNrRXhjbHVzaW9uKFJlbGF0aW9u IGhlYXBSZWxhdGlvbiwKICAqIGFzIG9mIHRoZSBzdGFydCBvZiB0aGUgc2NhbiAoc2VlIHRhYmxl X2luZGV4X2J1aWxkX3NjYW4pLCB3aGVyZWFzIGEgbm9ybWFsCiAgKiBidWlsZCB0YWtlcyBjYXJl IHRvIGluY2x1ZGUgcmVjZW50bHktZGVhZCB0dXBsZXMuICBUaGlzIGlzIE9LIGJlY2F1c2UKICAq IHdlIHdvbid0IG1hcmsgdGhlIGluZGV4IHZhbGlkIHVudGlsIGFsbCB0cmFuc2FjdGlvbnMgdGhh dCBtaWdodCBiZSBhYmxlCi0gKiB0byBzZWUgdGhvc2UgdHVwbGVzIGFyZSBnb25lLiAgVGhlIHJl YXNvbiBmb3IgZG9pbmcgdGhhdCBpcyB0byBhdm9pZAorICogdG8gc2VlIHRob3NlIHR1cGxlcyBh cmUgZ29uZS4gIE9uZSBvZiByZWFzb25zIGZvciBkb2luZyB0aGF0IGlzIHRvIGF2b2lkCiAgKiBi b2d1cyB1bmlxdWUtaW5kZXggZmFpbHVyZXMgZHVlIHRvIGNvbmN1cnJlbnQgVVBEQVRFcyAod2Ug bWlnaHQgc2VlCiAgKiBkaWZmZXJlbnQgdmVyc2lvbnMgb2YgdGhlIHNhbWUgcm93IGFzIGJlaW5n IHZhbGlkIHdoZW4gd2UgcGFzcyBvdmVyIHRoZW0sCiAgKiBpZiB3ZSB1c2VkIEhlYXBUdXBsZVNh dGlzZmllc1ZhY3V1bSkuICBUaGlzIGxlYXZlcyB1cyB3aXRoIGFuIGluZGV4IHRoYXQKICAqIGRv ZXMgbm90IGNvbnRhaW4gYW55IHR1cGxlcyBhZGRlZCB0byB0aGUgdGFibGUgd2hpbGUgd2UgYnVp bHQgdGhlIGluZGV4LgogICoKKyAqIEZ1cnRoZXJtb3JlLCBpbiBjYXNlIG9mIG5vbi11bmlxdWUg aW5kZXggd2Ugc2V0IFNPX1JFU0VUX1NOQVBTSE9UIGZvciB0aGUKKyAqIHNjYW4sIHdoaWNoIGNh dXNlcyBuZXcgc25hcHNob3QgdG8gYmUgc2V0IGFzIGFjdGl2ZSBldmVyeSBzbyBvZnRlbi4gVGhl IHJlYXNvbgorICogZm9yIHRoYXQgaXMgdG8gcHJvcGFnYXRlIHRoZSB4bWluIGhvcml6b24gZm9y d2FyZC4KKyAqCiAgKiBOZXh0LCB3ZSBtYXJrIHRoZSBpbmRleCAiaW5kaXNyZWFkeSIgKGJ1dCBz dGlsbCBub3QgImluZGlzdmFsaWQiKSBhbmQKICAqIGNvbW1pdCB0aGUgc2Vjb25kIHRyYW5zYWN0 aW9uIGFuZCBzdGFydCBhIHRoaXJkLiAgQWdhaW4gd2Ugd2FpdCBmb3IgYWxsCiAgKiB0cmFuc2Fj dGlvbnMgdGhhdCBjb3VsZCBoYXZlIGJlZW4gbW9kaWZ5aW5nIHRoZSB0YWJsZSB0byB0ZXJtaW5h dGUuICBOb3cKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKaW5kZXggNDdjNTA5Y2ViM2UuLjllZGRl YjkzMzM4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYworKysg Yi9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYwpAQCAtMTcwMCwyMyArMTcwMCwxNyBA QCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAkgKiBjaGFpbnMgY2FuIGJlIGNyZWF0ZWQgd2hl cmUgdGhlIG5ldyB0dXBsZSBhbmQgdGhlIG9sZCB0dXBsZSBpbiB0aGUKIAkgKiBjaGFpbiBoYXZl IGRpZmZlcmVudCBpbmRleCBrZXlzLgogCSAqCi0JICogV2Ugbm93IHRha2UgYSBuZXcgc25hcHNo b3QsIGFuZCBidWlsZCB0aGUgaW5kZXggdXNpbmcgYWxsIHR1cGxlcyB0aGF0Ci0JICogYXJlIHZp c2libGUgaW4gdGhpcyBzbmFwc2hvdC4gIFdlIGNhbiBiZSBzdXJlIHRoYXQgYW55IEhPVCB1cGRh dGVzIHRvCisJICogV2UgYnVpbGQgdGhlIGluZGV4IHVzaW5nIGFsbCB0dXBsZXMgdGhhdCBhcmUg dmlzaWJsZSB1c2luZyBzaW5nbGUgb3IKKwkgKiBtdWx0aXBsZSByZWZyZXNoaW5nIHNuYXBzaG90 cy4gV2UgY2FuIGJlIHN1cmUgdGhhdCBhbnkgSE9UIHVwZGF0ZXMgdG8KIAkgKiB0aGVzZSB0dXBs ZXMgd2lsbCBiZSBjb21wYXRpYmxlIHdpdGggdGhlIGluZGV4LCBzaW5jZSBhbnkgdXBkYXRlcyBt YWRlCiAJICogYnkgdHJhbnNhY3Rpb25zIHRoYXQgZGlkbid0IGtub3cgYWJvdXQgdGhlIGluZGV4 IGFyZSBub3cgY29tbWl0dGVkIG9yCiAJICogcm9sbGVkIGJhY2suICBUaHVzLCBlYWNoIHZpc2li bGUgdHVwbGUgaXMgZWl0aGVyIHRoZSBlbmQgb2YgaXRzCiAJICogSE9ULWNoYWluIG9yIHRoZSBl eHRlbnNpb24gb2YgdGhlIGNoYWluIGlzIEhPVC1zYWZlIGZvciB0aGlzIGluZGV4LgogCSAqLwog Ci0JLyogU2V0IEFjdGl2ZVNuYXBzaG90IHNpbmNlIGZ1bmN0aW9ucyBpbiB0aGUgaW5kZXhlcyBt YXkgbmVlZCBpdCAqLwotCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90 KCkpOwotCiAJLyogUGVyZm9ybSBjb25jdXJyZW50IGJ1aWxkIG9mIGluZGV4ICovCiAJaW5kZXhf Y29uY3VycmVudGx5X2J1aWxkKHRhYmxlSWQsIGluZGV4UmVsYXRpb25JZCk7CiAKLQkvKiB3ZSBj YW4gZG8gYXdheSB3aXRoIG91ciBzbmFwc2hvdCAqLwotCVBvcEFjdGl2ZVNuYXBzaG90KCk7Ci0K IAkvKgogCSAqIENvbW1pdCB0aGlzIHRyYW5zYWN0aW9uIHRvIG1ha2UgdGhlIGluZGlzcmVhZHkg dXBkYXRlIHZpc2libGUuCiAJICovCkBAIC00MDc5LDkgKzQwNzMsNiBAQCBSZWluZGV4UmVsYXRp b25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwg Y29uc3QgUmVpbgogCQlpZiAobmV3aWR4LT5zYWZlKQogCQkJc2V0X2luZGV4c2FmZV9wcm9jZmxh Z3MoKTsKIAotCQkvKiBTZXQgQWN0aXZlU25hcHNob3Qgc2luY2UgZnVuY3Rpb25zIGluIHRoZSBp bmRleGVzIG1heSBuZWVkIGl0ICovCi0JCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlv blNuYXBzaG90KCkpOwotCiAJCS8qCiAJCSAqIFVwZGF0ZSBwcm9ncmVzcyBmb3IgdGhlIGluZGV4 IHRvIGJ1aWxkLCB3aXRoIHRoZSBjb3JyZWN0IHBhcmVudAogCQkgKiB0YWJsZSBpbnZvbHZlZC4K QEAgLTQwOTYsNyArNDA4Nyw2IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBS ZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJCS8qIFBlcmZv cm0gY29uY3VycmVudCBidWlsZCBvZiBuZXcgaW5kZXggKi8KIAkJaW5kZXhfY29uY3VycmVudGx5 X2J1aWxkKG5ld2lkeC0+dGFibGVJZCwgbmV3aWR4LT5pbmRleElkKTsKIAotCQlQb3BBY3RpdmVT bmFwc2hvdCgpOwogCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAl9CiAKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYyBiL3NyYy9iYWNrZW5kL29w dGltaXplci9wbGFuL3BsYW5uZXIuYwppbmRleCA3YjFhOGEwYTlmMS4uN2QyMzU0MGJmNWMgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYworKysgYi9zcmMv YmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMKQEAgLTYxLDYgKzYxLDcgQEAKICNpbmNs dWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9yZWwuaCIKICNpbmNsdWRl ICJ1dGlscy9zZWxmdW5jcy5oIgorI2luY2x1ZGUgInV0aWxzL3NuYXBtZ3IuaCIKIAogLyogR1VD IHBhcmFtZXRlcnMgKi8KIGRvdWJsZQkJY3Vyc29yX3R1cGxlX2ZyYWN0aW9uID0gREVGQVVMVF9D VVJTT1JfVFVQTEVfRlJBQ1RJT047CkBAIC02NzgxLDYgKzY3ODIsNyBAQCBwbGFuX2NyZWF0ZV9p bmRleF93b3JrZXJzKE9pZCB0YWJsZU9pZCwgT2lkIGluZGV4T2lkKQogCVJlbGF0aW9uCWhlYXA7 CiAJUmVsYXRpb24JaW5kZXg7CiAJUmVsT3B0SW5mbyAqcmVsOworCWJvb2wJCW5lZWRfcG9wX2Fj dGl2ZV9zbmFwc2hvdCA9IGZhbHNlOwogCWludAkJCXBhcmFsbGVsX3dvcmtlcnM7CiAJQmxvY2tO dW1iZXIgaGVhcF9ibG9ja3M7CiAJZG91YmxlCQlyZWx0dXBsZXM7CkBAIC02ODM2LDYgKzY4Mzgs MTEgQEAgcGxhbl9jcmVhdGVfaW5kZXhfd29ya2VycyhPaWQgdGFibGVPaWQsIE9pZCBpbmRleE9p ZCkKIAloZWFwID0gdGFibGVfb3Blbih0YWJsZU9pZCwgTm9Mb2NrKTsKIAlpbmRleCA9IGluZGV4 X29wZW4oaW5kZXhPaWQsIE5vTG9jayk7CiAKKwkvKiBTZXQgQWN0aXZlU25hcHNob3Qgc2luY2Ug ZnVuY3Rpb25zIGluIHRoZSBpbmRleGVzIG1heSBuZWVkIGl0ICovCisJaWYgKCFBY3RpdmVTbmFw c2hvdFNldCgpKSB7CisJCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90 KCkpOworCQluZWVkX3BvcF9hY3RpdmVfc25hcHNob3QgPSB0cnVlOworCX0KIAkvKgogCSAqIERl dGVybWluZSBpZiBpdCdzIHNhZmUgdG8gcHJvY2VlZC4KIAkgKgpAQCAtNjg5Myw2ICs2OTAwLDgg QEAgcGxhbl9jcmVhdGVfaW5kZXhfd29ya2VycyhPaWQgdGFibGVPaWQsIE9pZCBpbmRleE9pZCkK IAkJcGFyYWxsZWxfd29ya2Vycy0tOwogCiBkb25lOgorCWlmIChuZWVkX3BvcF9hY3RpdmVfc25h cHNob3QpCisJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiAJaW5kZXhfY2xvc2UoaW5kZXgsIE5vTG9j ayk7CiAJdGFibGVfY2xvc2UoaGVhcCwgTm9Mb2NrKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvYWNjZXNzL2hlYXBhbS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCmluZGV4IDE2 NDBkOWMzMmY3Li5mNWJiMDRkNWJkMSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hl YXBhbS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaApAQCAtNDIsNiArNDIsOCBA QAogI2RlZmluZSBIRUFQX1BBR0VfUFJVTkVfTUFSS19VTlVTRURfTk9XCQkoMSA8PCAwKQogI2Rl ZmluZSBIRUFQX1BBR0VfUFJVTkVfRlJFRVpFCQkJCSgxIDw8IDEpCiAKKyNkZWZpbmUgU09fUkVT RVRfU05BUFNIT1RfRUFDSF9OX1BBR0UJCTQwOTYKKwogdHlwZWRlZiBzdHJ1Y3QgQnVsa0luc2Vy dFN0YXRlRGF0YSAqQnVsa0luc2VydFN0YXRlOwogc3RydWN0IFR1cGxlVGFibGVTbG90Owogc3Ry dWN0IFZhY3V1bUN1dG9mZnM7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVh bS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaAppbmRleCAxMzFjMDUwYzE1Zi4uNTM5 M2IzMGM1N2UgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKKysrIGIv c3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaApAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUg InN0b3JhZ2UvcmVhZF9zdHJlYW0uaCIKICNpbmNsdWRlICJ1dGlscy9yZWwuaCIKICNpbmNsdWRl ICJ1dGlscy9zbmFwc2hvdC5oIgorI2luY2x1ZGUgInV0aWxzL2luamVjdGlvbl9wb2ludC5oIgog CiAKICNkZWZpbmUgREVGQVVMVF9UQUJMRV9BQ0NFU1NfTUVUSE9ECSJoZWFwIgpAQCAtNjksNiAr NzAsMTcgQEAgdHlwZWRlZiBlbnVtIFNjYW5PcHRpb25zCiAJICogbmVlZGVkLiBJZiB0YWJsZSBk YXRhIG1heSBiZSBuZWVkZWQsIHNldCBTT19ORUVEX1RVUExFUy4KIAkgKi8KIAlTT19ORUVEX1RV UExFUyA9IDEgPDwgMTAsCisJLyoKKwkgKiBSZXNldCBzY2FuIGFuZCBjYXRhbG9nIHNuYXBzaG90 IGV2ZXJ5IHNvIG9mdGVuPyBJZiBzbywgZWFjaAorCSAqIFNPX1JFU0VUX1NOQVBTSE9UX0VBQ0hf Tl9QQUdFIHBhZ2VzIGFjdGl2ZSBzbmFwc2hvdCBpcyBwb3BwZWQsCisJICogY2F0YWxvZyBzbmFw c2hvdCBpbnZhbGlkYXRlZCwgbGF0ZXN0IHNuYXBzaG90IHB1c2hlZCBhcyBhY3RpdmUuCisJICoK KwkgKiBBdCB0aGUgZW5kIG9mIHRoZSBzY2FuIHNuYXBzaG90IGlzIG5vdCBwb3BwZWQuCisJICog R29hbCBvZiBzdWNoIG1vZGUgaXMga2VlcCB4bWluIHByb3BhZ2F0aW5nIGhvcml6b24gZm9yd2Fy ZC4KKwkgKgorCSAqIHNlZSBoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3QgZm9yIGRldGFpbHMuCisJ ICovCisJU09fUkVTRVRfU05BUFNIT1QgPSAxIDw8IDExLAogfQkJCVNjYW5PcHRpb25zOwogCiAv KgpAQCAtOTM2LDcgKzk0OCw4IEBAIGV4dGVybiBUYWJsZVNjYW5EZXNjIHRhYmxlX2JlZ2luc2Nh bl9jYXRhbG9nKFJlbGF0aW9uIHJlbGF0aW9uLCBpbnQgbmtleXMsCiBzdGF0aWMgaW5saW5lIFRh YmxlU2NhbkRlc2MKIHRhYmxlX2JlZ2luc2Nhbl9zdHJhdChSZWxhdGlvbiByZWwsIFNuYXBzaG90 IHNuYXBzaG90LAogCQkJCQkgIGludCBua2V5cywgc3RydWN0IFNjYW5LZXlEYXRhICprZXksCi0J CQkJCSAgYm9vbCBhbGxvd19zdHJhdCwgYm9vbCBhbGxvd19zeW5jKQorCQkJCQkgIGJvb2wgYWxs b3dfc3RyYXQsIGJvb2wgYWxsb3dfc3luYywKKwkJCQkJICBib29sIHJlc2V0X3NuYXBzaG90KQog ewogCXVpbnQzMgkJZmxhZ3MgPSBTT19UWVBFX1NFUVNDQU4gfCBTT19BTExPV19QQUdFTU9ERTsK IApAQCAtOTQ0LDYgKzk1NywxNSBAQCB0YWJsZV9iZWdpbnNjYW5fc3RyYXQoUmVsYXRpb24gcmVs LCBTbmFwc2hvdCBzbmFwc2hvdCwKIAkJZmxhZ3MgfD0gU09fQUxMT1dfU1RSQVQ7CiAJaWYgKGFs bG93X3N5bmMpCiAJCWZsYWdzIHw9IFNPX0FMTE9XX1NZTkM7CisJaWYgKHJlc2V0X3NuYXBzaG90 KQorCXsKKwkJSU5KRUNUSU9OX1BPSU5UKCJ0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25h cHNob3RzIik7CisJCS8qIEFjdGl2ZSBzbmFwc2hvdCBpcyByZXF1aXJlZCBvbiBzdGFydC4gKi8K KwkJQXNzZXJ0KEdldEFjdGl2ZVNuYXBzaG90KCkgPT0gc25hcHNob3QpOworCQkvKiBBY3RpdmUg c25hcHNob3Qgc2hvdWxkIG5vdCBiZSByZWdpc3RlcmVkIHRvIGtlZXAgeG1pbiBwcm9wYWdhdGlu Zy4gKi8KKwkJQXNzZXJ0KEdldEFjdGl2ZVNuYXBzaG90KCktPnJlZ2RfY291bnQgPT0gMCk7CisJ CWZsYWdzIHw9IChTT19SRVNFVF9TTkFQU0hPVCk7CisJfQogCiAJcmV0dXJuIHJlbC0+cmRfdGFi bGVhbS0+c2Nhbl9iZWdpbihyZWwsIHNuYXBzaG90LCBua2V5cywga2V5LCBOVUxMLCBmbGFncyk7 CiB9CkBAIC0xNzc2LDYgKzE3OTgsMTAgQEAgdGFibGVfc2Nhbl9hbmFseXplX25leHRfdHVwbGUo VGFibGVTY2FuRGVzYyBzY2FuLCBUcmFuc2FjdGlvbklkIE9sZGVzdFhtaW4sCiAgKiB2ZXJ5IGhh cmQgdG8gZGV0ZWN0IHdoZXRoZXIgdGhleSdyZSByZWFsbHkgaW5jb21wYXRpYmxlIHdpdGggdGhl IGNoYWluIHRpcC4KICAqIFRoaXMgb25seSByZWFsbHkgbWFrZXMgc2Vuc2UgZm9yIGhlYXAgQU0s IGl0IG1pZ2h0IG5lZWQgdG8gYmUgZ2VuZXJhbGl6ZWQKICAqIGZvciBvdGhlciBBTXMgbGF0ZXIu CisgKgorICogSW4gY2FzZSBvZiBub24tdW5pcXVlIGluZGV4IGFuZCBub24tcGFyYWxsZWwgY29u Y3VycmVudCBidWlsZAorICogU09fUkVTRVRfU05BUFNIT1QgaXMgYXBwbGllZCBmb3IgdGhlIHNj YW4uIFRoYXQgbGVhZHMgZm9yIGNoYW5naW5nIHNuYXBzaG90cworICogb24gdGhlIGZseSB0byBh bGxvdyB4bWluIGhvcml6b24gcHJvcGFnYXRlLgogICovCiBzdGF0aWMgaW5saW5lIGRvdWJsZQog dGFibGVfaW5kZXhfYnVpbGRfc2NhbihSZWxhdGlvbiB0YWJsZV9yZWwsCmRpZmYgLS1naXQgYS9z cmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvTWFrZWZpbGUgYi9zcmMvdGVzdC9tb2R1 bGVzL2luamVjdGlvbl9wb2ludHMvTWFrZWZpbGUKaW5kZXggZTY4MDk5MWY4ZDQuLjE5ZDI2NDA4 YzJhIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvTWFrZWZp bGUKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL01ha2VmaWxlCkBAIC0x MSw3ICsxMSw3IEBAIEVYVEVOU0lPTiA9IGluamVjdGlvbl9wb2ludHMKIERBVEEgPSBpbmplY3Rp b25fcG9pbnRzLS0xLjAuc3FsCiBQR0ZJTEVERVNDID0gImluamVjdGlvbl9wb2ludHMgLSBmYWNp bGl0eSBmb3IgaW5qZWN0aW9uIHBvaW50cyIKIAotUkVHUkVTUyA9IGluamVjdGlvbl9wb2ludHMg aGFzaGFnZyByZWluZGV4X2NvbmMKK1JFR1JFU1MgPSBpbmplY3Rpb25fcG9pbnRzIGhhc2hhZ2cg cmVpbmRleF9jb25jIGNpY19yZXNldF9zbmFwc2hvdHMKIFJFR1JFU1NfT1BUUyA9IC0tZGxwYXRo PSQodG9wX2J1aWxkZGlyKS9zcmMvdGVzdC9yZWdyZXNzCiAKIElTT0xBVElPTiA9IGJhc2ljIGlu cGxhY2Ugc3lzY2FjaGUtdXBkYXRlLXBydW5lZApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxl cy9pbmplY3Rpb25fcG9pbnRzL2V4cGVjdGVkL2NpY19yZXNldF9zbmFwc2hvdHMub3V0IGIvc3Jj L3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL2V4cGVjdGVkL2NpY19yZXNldF9zbmFwc2hv dHMub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi45NDhkMTIzMmFh MAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9l eHBlY3RlZC9jaWNfcmVzZXRfc25hcHNob3RzLm91dApAQCAtMCwwICsxLDEwNSBAQAorQ1JFQVRF IEVYVEVOU0lPTiBpbmplY3Rpb25fcG9pbnRzOworU0VMRUNUIGluamVjdGlvbl9wb2ludHNfc2V0 X2xvY2FsKCk7CisgaW5qZWN0aW9uX3BvaW50c19zZXRfbG9jYWwgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFj aCgnaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZScsICdub3RpY2UnKTsKKyBpbmpl Y3Rpb25fcG9pbnRzX2F0dGFjaCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJv dykKKworU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCd0YWJsZV9iZWdpbnNjYW5fc3Ry YXRfcmVzZXRfc25hcHNob3RzJywgJ25vdGljZScpOworIGluamVjdGlvbl9wb2ludHNfYXR0YWNo IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitDUkVBVEUgU0NIRU1B IGNpY19yZXNldF9zbmFwOworQ1JFQVRFIFRBQkxFIGNpY19yZXNldF9zbmFwLnRibChpIGludCBw cmltYXJ5IGtleSwgaiBpbnQpOworSU5TRVJUIElOVE8gY2ljX3Jlc2V0X3NuYXAudGJsIFNFTEVD VCBpLCBpICogSSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAyMDApIHMoaSk7CitDUkVBVEUgRlVO Q1RJT04gY2ljX3Jlc2V0X3NuYXAucHJlZGljYXRlX3N0YWJsZShpbnRlZ2VyKSBSRVRVUk5TIGJv b2wgSU1NVVRBQkxFCisJCQkJCQkJCQkgIExBTkdVQUdFIHBscGdzcWwgQVMgJCQKK0JFR0lOCisg ICAgRVhFQ1VURSAnU0VMRUNUIHR4aWRfY3VycmVudCgpJzsKKyAgICBSRVRVUk4gTU9EKCQxLCAy KSA9IDA7CitFTkQ7ICQkOworQ1JFQVRFIEZVTkNUSU9OIGNpY19yZXNldF9zbmFwLnByZWRpY2F0 ZV9zdGFibGVfbm9fcGFyYW0oKSBSRVRVUk5TIGJvb2wgSU1NVVRBQkxFCisJCQkJCQkJCQkgIExB TkdVQUdFIHBscGdzcWwgQVMgJCQKK0JFR0lOCisgICAgRVhFQ1VURSAnU0VMRUNUIHR4aWRfY3Vy cmVudCgpJzsKKyAgICBSRVRVUk4gZmFsc2U7CitFTkQ7ICQkOworLS0tLS0tLS0tLS0tLS0tLQor QUxURVIgVEFCTEUgY2ljX3Jlc2V0X3NuYXAudGJsIFNFVCAocGFyYWxsZWxfd29ya2Vycz0wKTsK K0NSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50 YmwoaSk7CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitE Uk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitDUkVBVEUgSU5ERVgg Q09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSk7CitOT1RJQ0U6ICBub3Rp Y2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jl c2V0X3NuYXBzaG90cworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBv aW50IGhlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUKK1JFSU5ERVggSU5ERVggQ09O Q1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQg Zm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3Rz CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNl dF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZQorRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jl c2V0X3NuYXAuaWR4OworQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0 X3NuYXAudGJsKE1PRChpLCAyKSwgaikgV0hFUkUgTU9EKGksIDIpID0gMDsKK05PVElDRTogIG5v dGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRf cmVzZXRfc25hcHNob3RzCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24g cG9pbnQgaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZQorUkVJTkRFWCBJTkRFWCBD T05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJl ZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hv dHMKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwX3Jl c2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZlCitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNf cmVzZXRfc25hcC5pZHg7CitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVz ZXRfc25hcC50YmwoaSwgaikgV0hFUkUgY2ljX3Jlc2V0X3NuYXAucHJlZGljYXRlX3N0YWJsZShp KTsKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9i ZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVk IGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZQor UkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworTk9USUNFOiAg bm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJh dF9yZXNldF9zbmFwc2hvdHMKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlv biBwb2ludCBoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZlCitEUk9QIElOREVYIENP TkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZ IGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSwgaikgV0hFUkUgY2ljX3Jlc2V0X3NuYXAucHJl ZGljYXRlX3N0YWJsZV9ub19wYXJhbSgpOworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3Ig aW5qZWN0aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMKK1JF SU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK05PVElDRTogIG5v dGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRf cmVzZXRfc25hcHNob3RzCitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5p ZHg7CitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50Ymwg VVNJTkcgQlJJTihpKTsKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBw b2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCitOT1RJQ0U6ICBub3Rp Y2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90 X2VmZmVjdGl2ZQorUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4 OworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX2Jl Z2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQg Zm9yIGluamVjdGlvbiBwb2ludCBoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZlCitE Uk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CistLSBUaGUgc2FtZSBp biBwYXJhbGxlbCBtb2RlCitBTFRFUiBUQUJMRSBjaWNfcmVzZXRfc25hcC50YmwgU0VUIChwYXJh bGxlbF93b3JrZXJzPTIpOworQ1JFQVRFIFVOSVFVRSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9O IGNpY19yZXNldF9zbmFwLnRibChpKTsKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19y ZXNldF9zbmFwLmlkeDsKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlk eDsKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChp KTsKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0RST1Ag SU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0NSRUFURSBJTkRFWCBDT05D VVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChNT0QoaSwgMiksIGopIFdIRVJFIE1P RChpLCAyKSA9IDA7CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5p ZHg7CitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitDUkVBVEUg SU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSwgaikgV0hFUkUg Y2ljX3Jlc2V0X3NuYXAucHJlZGljYXRlX3N0YWJsZShpKTsKK05PVElDRTogIG5vdGljZSB0cmln Z2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25h cHNob3RzCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVh cF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZQorUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5U TFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5q ZWN0aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMKK05PVElD RTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwX3Jlc2V0X3NjYW5f c25hcHNob3RfZWZmZWN0aXZlCitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25h cC5pZHg7CitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50 YmwoaSwgaikgV0hFUkUgY2ljX3Jlc2V0X3NuYXAucHJlZGljYXRlX3N0YWJsZV9ub19wYXJhbSgp OworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworRFJPUCBJ TkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworQ1JFQVRFIElOREVYIENPTkNV UlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGkgREVTQyBOVUxMUyBMQVNUKTsKK1JF SU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0RST1AgSU5ERVgg Q09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5U TFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibCBVU0lORyBCUklOKGkpOworUkVJTkRFWCBJTkRF WCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworRFJPUCBJTkRFWCBDT05DVVJSRU5U TFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworRFJPUCBTQ0hFTUEgY2ljX3Jlc2V0X3NuYXAgQ0FTQ0FE RTsKK05PVElDRTogIGRyb3AgY2FzY2FkZXMgdG8gMyBvdGhlciBvYmplY3RzCitERVRBSUw6ICBk cm9wIGNhc2NhZGVzIHRvIHRhYmxlIGNpY19yZXNldF9zbmFwLnRibAorZHJvcCBjYXNjYWRlcyB0 byBmdW5jdGlvbiBjaWNfcmVzZXRfc25hcC5wcmVkaWNhdGVfc3RhYmxlKGludGVnZXIpCitkcm9w IGNhc2NhZGVzIHRvIGZ1bmN0aW9uIGNpY19yZXNldF9zbmFwLnByZWRpY2F0ZV9zdGFibGVfbm9f cGFyYW0oKQorRFJPUCBFWFRFTlNJT04gaW5qZWN0aW9uX3BvaW50czsKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9tZXNvbi5idWlsZCBiL3NyYy90ZXN0L21v ZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9tZXNvbi5idWlsZAppbmRleCBkNjExNDk3MTJmZC4uODQ3 NmJmZTcyYTcgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9t ZXNvbi5idWlsZAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvbWVzb24u YnVpbGQKQEAgLTM3LDYgKzM3LDcgQEAgdGVzdHMgKz0gewogICAgICAgJ2luamVjdGlvbl9wb2lu dHMnLAogICAgICAgJ2hhc2hhZ2cnLAogICAgICAgJ3JlaW5kZXhfY29uYycsCisgICAgICAnY2lj X3Jlc2V0X3NuYXBzaG90cycsCiAgICAgXSwKICAgICAncmVncmVzc19hcmdzJzogWyctLWRscGF0 aCcsIG1lc29uLmJ1aWxkX3Jvb3QoKSAvICdzcmMvdGVzdC9yZWdyZXNzJ10sCiAgICAgIyBUaGUg aW5qZWN0aW9uIHBvaW50cyBhcmUgY2x1c3Rlci13aWRlLCBzbyBkaXNhYmxlIGluc3RhbGxjaGVj awpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL3NxbC9jaWNf cmVzZXRfc25hcHNob3RzLnNxbCBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9z cWwvY2ljX3Jlc2V0X3NuYXBzaG90cy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMDAuLjUwNzI1MzViMzU1Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxl cy9pbmplY3Rpb25fcG9pbnRzL3NxbC9jaWNfcmVzZXRfc25hcHNob3RzLnNxbApAQCAtMCwwICsx LDg2IEBACitDUkVBVEUgRVhURU5TSU9OIGluamVjdGlvbl9wb2ludHM7CisKK1NFTEVDVCBpbmpl Y3Rpb25fcG9pbnRzX3NldF9sb2NhbCgpOworU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNo KCdoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZlJywgJ25vdGljZScpOworU0VMRUNU IGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCd0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25h cHNob3RzJywgJ25vdGljZScpOworCisKK0NSRUFURSBTQ0hFTUEgY2ljX3Jlc2V0X3NuYXA7CitD UkVBVEUgVEFCTEUgY2ljX3Jlc2V0X3NuYXAudGJsKGkgaW50IHByaW1hcnkga2V5LCBqIGludCk7 CitJTlNFUlQgSU5UTyBjaWNfcmVzZXRfc25hcC50YmwgU0VMRUNUIGksIGkgKiBJIEZST00gZ2Vu ZXJhdGVfc2VyaWVzKDEsIDIwMCkgcyhpKTsKKworQ1JFQVRFIEZVTkNUSU9OIGNpY19yZXNldF9z bmFwLnByZWRpY2F0ZV9zdGFibGUoaW50ZWdlcikgUkVUVVJOUyBib29sIElNTVVUQUJMRQorCQkJ CQkJCQkJICBMQU5HVUFHRSBwbHBnc3FsIEFTICQkCitCRUdJTgorICAgIEVYRUNVVEUgJ1NFTEVD VCB0eGlkX2N1cnJlbnQoKSc7CisgICAgUkVUVVJOIE1PRCgkMSwgMikgPSAwOworRU5EOyAkJDsK KworQ1JFQVRFIEZVTkNUSU9OIGNpY19yZXNldF9zbmFwLnByZWRpY2F0ZV9zdGFibGVfbm9fcGFy YW0oKSBSRVRVUk5TIGJvb2wgSU1NVVRBQkxFCisJCQkJCQkJCQkgIExBTkdVQUdFIHBscGdzcWwg QVMgJCQKK0JFR0lOCisgICAgRVhFQ1VURSAnU0VMRUNUIHR4aWRfY3VycmVudCgpJzsKKyAgICBS RVRVUk4gZmFsc2U7CitFTkQ7ICQkOworCistLS0tLS0tLS0tLS0tLS0tCitBTFRFUiBUQUJMRSBj aWNfcmVzZXRfc25hcC50YmwgU0VUIChwYXJhbGxlbF93b3JrZXJzPTApOworCitDUkVBVEUgVU5J UVVFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGkpOworUkVJ TkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworRFJPUCBJTkRFWCBD T05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworCitDUkVBVEUgSU5ERVggQ09OQ1VSUkVO VExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSk7CitSRUlOREVYIElOREVYIENPTkNVUlJF TlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVz ZXRfc25hcC5pZHg7CisKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNl dF9zbmFwLnRibChNT0QoaSwgMiksIGopIFdIRVJFIE1PRChpLCAyKSA9IDA7CitSRUlOREVYIElO REVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitEUk9QIElOREVYIENPTkNVUlJF TlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CisKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4 IE9OIGNpY19yZXNldF9zbmFwLnRibChpLCBqKSBXSEVSRSBjaWNfcmVzZXRfc25hcC5wcmVkaWNh dGVfc3RhYmxlKGkpOworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAu aWR4OworRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworCitDUkVB VEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSwgaikgV0hF UkUgY2ljX3Jlc2V0X3NuYXAucHJlZGljYXRlX3N0YWJsZV9ub19wYXJhbSgpOworUkVJTkRFWCBJ TkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworRFJPUCBJTkRFWCBDT05DVVJS RU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworCitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlk eCBPTiBjaWNfcmVzZXRfc25hcC50YmwgVVNJTkcgQlJJTihpKTsKK1JFSU5ERVggSU5ERVggQ09O Q1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNp Y19yZXNldF9zbmFwLmlkeDsKKworLS0gVGhlIHNhbWUgaW4gcGFyYWxsZWwgbW9kZQorQUxURVIg VEFCTEUgY2ljX3Jlc2V0X3NuYXAudGJsIFNFVCAocGFyYWxsZWxfd29ya2Vycz0yKTsKKworQ1JF QVRFIFVOSVFVRSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChp KTsKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0RST1Ag SU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKKworQ1JFQVRFIElOREVYIENP TkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGkpOworUkVJTkRFWCBJTkRFWCBD T05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkg Y2ljX3Jlc2V0X3NuYXAuaWR4OworCitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBj aWNfcmVzZXRfc25hcC50YmwoTU9EKGksIDIpLCBqKSBXSEVSRSBNT0QoaSwgMikgPSAwOworUkVJ TkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworRFJPUCBJTkRFWCBD T05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworCitDUkVBVEUgSU5ERVggQ09OQ1VSUkVO VExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSwgaikgV0hFUkUgY2ljX3Jlc2V0X3NuYXAu cHJlZGljYXRlX3N0YWJsZShpKTsKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNl dF9zbmFwLmlkeDsKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsK KworQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGks IGopIFdIRVJFIGNpY19yZXNldF9zbmFwLnByZWRpY2F0ZV9zdGFibGVfbm9fcGFyYW0oKTsKK1JF SU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0RST1AgSU5ERVgg Q09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKKworQ1JFQVRFIElOREVYIENPTkNVUlJF TlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGkgREVTQyBOVUxMUyBMQVNUKTsKK1JFSU5E RVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0RST1AgSU5ERVggQ09O Q1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKKworQ1JFQVRFIElOREVYIENPTkNVUlJFTlRM WSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsIFVTSU5HIEJSSU4oaSk7CitSRUlOREVYIElOREVY IENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitEUk9QIElOREVYIENPTkNVUlJFTlRM WSBjaWNfcmVzZXRfc25hcC5pZHg7CisKK0RST1AgU0NIRU1BIGNpY19yZXNldF9zbmFwIENBU0NB REU7CisKK0RST1AgRVhURU5TSU9OIGluamVjdGlvbl9wb2ludHM7Ci0tIAoyLjQzLjAKCg== --0000000000007d5b96062e941445 Content-Type: text/x-patch; charset="US-ASCII"; name="v15-0004-Allow-snapshot-resets-during-parallel-concurrent.patch" Content-Disposition: attachment; filename="v15-0004-Allow-snapshot-resets-during-parallel-concurrent.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m7dgd9i63 RnJvbSAyMjViOTExYTJkNzMzMDMwYTQyZTY4MTUyYWQ0N2Y4NmRiOWE3MTViIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxtaWNoYWlsLm5pa29sYWV2QGdtYWlsLmNvbT4KRGF0 ZTogV2VkLCAxIEphbiAyMDI1IDE1OjI1OjIwICswMTAwClN1YmplY3Q6IFtQQVRDSCB2MTUgMDQv MTJdIEFsbG93IHNuYXBzaG90IHJlc2V0cyBkdXJpbmcgcGFyYWxsZWwgY29uY3VycmVudAogaW5k ZXggYnVpbGRzCgpQcmV2aW91c2x5LCBub24tdW5pcXVlIGNvbmN1cnJlbnQgaW5kZXggYnVpbGRz IGluIHBhcmFsbGVsIG1vZGUgcmVxdWlyZWQgYQpjb25zaXN0ZW50IE1WQ0Mgc25hcHNob3QgdGhy b3VnaG91dCB0aGUgYnVpbGQsIHdoaWNoIGNvdWxkIGhvbGQgYmFjayB0aGUgeG1pbgpob3Jpem9u IGFuZCBwcmV2ZW50IGRlYWQgdHVwbGUgY2xlYW51cC4gVGhpcyBwYXRjaCBleHRlbmRzIHRoZSBw cmV2aW91cyB3b3JrCm9uIHNuYXBzaG90IHJlc2V0cyAoaW50cm9kdWNlZCBmb3Igbm9uLXBhcmFs bGVsIGJ1aWxkcykgdG8gYWxzbyBzdXBwb3J0CnBhcmFsbGVsIGJ1aWxkcy4KCktleSBjaGFuZ2Vz OgotIEFkZCBpbmZyYXN0cnVjdHVyZSB0byB0cmFjayBzbmFwc2hvdCByZXN0b3JhdGlvbiBpbiBw YXJhbGxlbCB3b3JrZXJzCi0gRXh0ZW5kIHBhcmFsbGVsIHNjYW4gaW5pdGlhbGl6YXRpb24gdG8g c3VwcG9ydCBwZXJpb2RpYyBzbmFwc2hvdCByZXNldHMKLSBXYWl0IGZvciBwYXJhbGxlbCB3b3Jr ZXJzIHRvIHJlc3RvcmUgdGhlaXIgaW5pdGlhbCBzbmFwc2hvdHMgYmVmb3JlIHByb2NlZWRpbmcg d2l0aCBzY2FuCi0gQWRkIHJlZ3Jlc3Npb24gdGVzdHMgdG8gdmVyaWZ5IGJlaGF2aW9yIHdpdGgg dmFyaW91cyBpbmRleCB0eXBlcwoKVGhlIHNuYXBzaG90IHJlc2V0IGFwcHJvYWNoIGlzIHNhZmUg Zm9yIG5vbi11bmlxdWUgaW5kZXhlcyBzaW5jZSB0aGV5IGRvbid0Cm5lZWQgc25hcHNob3QgY29u c2lzdGVuY3kgYWNyb3NzIHRoZSBlbnRpcmUgc2Nhbi4gRm9yIHVuaXF1ZSBpbmRleGVzLCB3ZQpj b250aW51ZSB0byBtYWludGFpbiBhIGNvbnNpc3RlbnQgc25hcHNob3QgdG8gcHJvcGVybHkgZW5m b3JjZSB1bmlxdWVuZXNzCmNvbnN0cmFpbnRzLgoKVGhpcyBoZWxwcyByZWR1Y2UgdGhlIHhtaW4g aG9yaXpvbiBpbXBhY3Qgb2YgbG9uZy1ydW5uaW5nIGNvbmN1cnJlbnQgaW5kZXgKYnVpbGRzIGlu IHBhcmFsbGVsIG1vZGUsIGltcHJvdmluZyBWQUNVVU0ncyBhYmlsaXR5IHRvIGNsZWFuIHVwIGRl YWQgdHVwbGVzLgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW4uYyAgICAgICAgICAg ICAgICB8IDQ5ICsrKysrKysrKy0tLS0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBh bV9oYW5kbGVyLmMgICAgICB8IDEyICsrLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0 c29ydC5jICAgICAgICAgICB8IDU3ICsrKysrKysrKysrKysrLS0tLS0KIHNyYy9iYWNrZW5kL2Fj Y2Vzcy90YWJsZS90YWJsZWFtLmMgICAgICAgICAgICB8IDM3ICsrKysrKysrKystLQogc3JjL2Jh Y2tlbmQvYWNjZXNzL3RyYW5zYW0vcGFyYWxsZWwuYyAgICAgICAgIHwgNTAgKysrKysrKysrKysr KystLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jICAgICAgICAgICAgICAgICAgIHwgIDIg Ky0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXFzY2FuLmMgICAgICAgICAgICB8ICAzICst CiBzcmMvYmFja2VuZC91dGlscy90aW1lL3NuYXBtZ3IuYyAgICAgICAgICAgICAgfCAgOCAtLS0K IHNyYy9pbmNsdWRlL2FjY2Vzcy9wYXJhbGxlbC5oICAgICAgICAgICAgICAgICB8ICAzICstCiBz cmMvaW5jbHVkZS9hY2Nlc3MvcmVsc2Nhbi5oICAgICAgICAgICAgICAgICAgfCAgMSArCiBzcmMv aW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oICAgICAgICAgICAgICAgICAgfCAgOSArLS0KIC4uLi9l eHBlY3RlZC9jaWNfcmVzZXRfc25hcHNob3RzLm91dCAgICAgICAgICB8IDI1ICsrKysrKystCiAu Li4vc3FsL2NpY19yZXNldF9zbmFwc2hvdHMuc3FsICAgICAgICAgICAgICAgfCAgNyArKy0KIDEz IGZpbGVzIGNoYW5nZWQsIDE5NiBpbnNlcnRpb25zKCspLCA2NyBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMgYi9zcmMvYmFja2VuZC9hY2Nl c3MvYnJpbi9icmluLmMKaW5kZXggZjFkYmE5ZTgxODUuLmQ4MzE3Nzg3MjUxIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNz L2JyaW4vYnJpbi5jCkBAIC0xNDMsNyArMTQzLDYgQEAgdHlwZWRlZiBzdHJ1Y3QgQnJpbkxlYWRl cgogCSAqLwogCUJyaW5TaGFyZWQgKmJyaW5zaGFyZWQ7CiAJU2hhcmVkc29ydCAqc2hhcmVkc29y dDsKLQlTbmFwc2hvdAlzbmFwc2hvdDsKIAlXYWxVc2FnZSAgICp3YWx1c2FnZTsKIAlCdWZmZXJV c2FnZSAqYnVmZmVydXNhZ2U7CiB9IEJyaW5MZWFkZXI7CkBAIC0yMzEsNyArMjMwLDcgQEAgc3Rh dGljIHZvaWQgYnJpbl9maWxsX2VtcHR5X3JhbmdlcyhCcmluQnVpbGRTdGF0ZSAqc3RhdGUsCiBz dGF0aWMgdm9pZCBfYnJpbl9iZWdpbl9wYXJhbGxlbChCcmluQnVpbGRTdGF0ZSAqYnVpbGRzdGF0 ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJCQkJCQkJCSBib29sIGlzY29uY3Vy cmVudCwgaW50IHJlcXVlc3QpOwogc3RhdGljIHZvaWQgX2JyaW5fZW5kX3BhcmFsbGVsKEJyaW5M ZWFkZXIgKmJyaW5sZWFkZXIsIEJyaW5CdWlsZFN0YXRlICpzdGF0ZSk7Ci1zdGF0aWMgU2l6ZSBf YnJpbl9wYXJhbGxlbF9lc3RpbWF0ZV9zaGFyZWQoUmVsYXRpb24gaGVhcCwgU25hcHNob3Qgc25h cHNob3QpOworc3RhdGljIFNpemUgX2JyaW5fcGFyYWxsZWxfZXN0aW1hdGVfc2hhcmVkKFJlbGF0 aW9uIGhlYXApOwogc3RhdGljIGRvdWJsZSBfYnJpbl9wYXJhbGxlbF9oZWFwc2NhbihCcmluQnVp bGRTdGF0ZSAqc3RhdGUpOwogc3RhdGljIGRvdWJsZSBfYnJpbl9wYXJhbGxlbF9tZXJnZShCcmlu QnVpbGRTdGF0ZSAqc3RhdGUpOwogc3RhdGljIHZvaWQgX2JyaW5fbGVhZGVyX3BhcnRpY2lwYXRl X2FzX3dvcmtlcihCcmluQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwKQEAgLTEyNDgsNyArMTI0Nyw2 IEBAIGJyaW5idWlsZChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZvICpp bmRleEluZm8pCiAJCWJyaW5fZmlsbF9lbXB0eV9yYW5nZXMoc3RhdGUsCiAJCQkJCQkJICAgc3Rh dGUtPmJzX2N1cnJSYW5nZVN0YXJ0LAogCQkJCQkJCSAgIHN0YXRlLT5ic19tYXhSYW5nZVN0YXJ0 KTsKLQkJQXNzZXJ0KCFpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgfHwgIVRyYW5zYWN0aW9uSWRJ c1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCX0KIAogCS8qIHJlbGVhc2UgcmVzb3VyY2VzICovCkBA IC0xMjYzLDYgKzEyNjEsNyBAQCBicmluYnVpbGQoUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5k ZXgsIEluZGV4SW5mbyAqaW5kZXhJbmZvKQogCiAJcmVzdWx0LT5oZWFwX3R1cGxlcyA9IHJlbHR1 cGxlczsKIAlyZXN1bHQtPmluZGV4X3R1cGxlcyA9IGlkeHR1cGxlczsKKwlBc3NlcnQoIWluZGV4 SW5mby0+aWlfQ29uY3VycmVudCB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54aWQp KTsKIAogCXJldHVybiByZXN1bHQ7CiB9CkBAIC0yMzYzLDcgKzIzNjIsNiBAQCBfYnJpbl9iZWdp bl9wYXJhbGxlbChCcmluQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVs YXRpb24gaW5kZXgsCiB7CiAJUGFyYWxsZWxDb250ZXh0ICpwY3h0OwogCWludAkJCXNjYW50dXBs ZXNvcnRzdGF0ZXM7Ci0JU25hcHNob3QJc25hcHNob3Q7CiAJU2l6ZQkJZXN0YnJpbnNoYXJlZDsK IAlTaXplCQllc3Rzb3J0OwogCUJyaW5TaGFyZWQgKmJyaW5zaGFyZWQ7CkBAIC0yMzk0LDI1ICsy MzkyLDI1IEBAIF9icmluX2JlZ2luX3BhcmFsbGVsKEJyaW5CdWlsZFN0YXRlICpidWlsZHN0YXRl LCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIAkgKiBQcmVwYXJlIGZvciBzY2FuIG9m IHRoZSBiYXNlIHJlbGF0aW9uLiAgSW4gYSBub3JtYWwgaW5kZXggYnVpbGQsIHdlIHVzZQogCSAq IFNuYXBzaG90QW55IGJlY2F1c2Ugd2UgbXVzdCByZXRyaWV2ZSBhbGwgdHVwbGVzIGFuZCBkbyBv dXIgb3duIHRpbWUKIAkgKiBxdWFsIGNoZWNrcyAoYmVjYXVzZSB3ZSBoYXZlIHRvIGluZGV4IFJF Q0VOVExZX0RFQUQgdHVwbGVzKS4gIEluIGEKLQkgKiBjb25jdXJyZW50IGJ1aWxkLCB3ZSB0YWtl IGEgcmVndWxhciBNVkNDIHNuYXBzaG90IGFuZCBpbmRleCB3aGF0ZXZlcidzCi0JICogbGl2ZSBh Y2NvcmRpbmcgdG8gdGhhdC4KKwkgKiBjb25jdXJyZW50IGJ1aWxkLCB3ZSB0YWtlIGEgcmVndWxh ciBNVkNDIHNuYXBzaG90IGFuZCBwdXNoIGl0IGFzIGFjdGl2ZS4KKwkgKiBMYXRlciB3ZSBpbmRl eCB3aGF0ZXZlcidzIGxpdmUgYWNjb3JkaW5nIHRvIHRoYXQgc25hcHNob3Qgd2hpbGUgdGhhdAor CSAqIHNuYXBzaG90IGlzIHJlc2V0IHBlcmlvZGljYWxseS4KIAkgKi8KIAlpZiAoIWlzY29uY3Vy cmVudCkKIAl7CiAJCUFzc2VydChBY3RpdmVTbmFwc2hvdFNldCgpKTsKLQkJc25hcHNob3QgPSBT bmFwc2hvdEFueTsKIAkJbmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90ID0gZmFsc2U7CiAJfQogCWVs c2UKIAl7Ci0JCXNuYXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBz aG90KCkpOworCQlBc3NlcnQoIUFjdGl2ZVNuYXBzaG90U2V0KCkpOwogCQlQdXNoQWN0aXZlU25h cHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKIAl9CiAKIAkvKgogCSAqIEVzdGltYXRl IHNpemUgZm9yIG91ciBvd24gUEFSQUxMRUxfS0VZX0JSSU5fU0hBUkVEIHdvcmtzcGFjZS4KIAkg Ki8KLQllc3Ricmluc2hhcmVkID0gX2JyaW5fcGFyYWxsZWxfZXN0aW1hdGVfc2hhcmVkKGhlYXAs IHNuYXBzaG90KTsKKwllc3Ricmluc2hhcmVkID0gX2JyaW5fcGFyYWxsZWxfZXN0aW1hdGVfc2hh cmVkKGhlYXApOwogCXNobV90b2NfZXN0aW1hdGVfY2h1bmsoJnBjeHQtPmVzdGltYXRvciwgZXN0 YnJpbnNoYXJlZCk7CiAJZXN0c29ydCA9IHR1cGxlc29ydF9lc3RpbWF0ZV9zaGFyZWQoc2NhbnR1 cGxlc29ydHN0YXRlcyk7CiAJc2htX3RvY19lc3RpbWF0ZV9jaHVuaygmcGN4dC0+ZXN0aW1hdG9y LCBlc3Rzb3J0KTsKQEAgLTI0NTIsOCArMjQ1MCw2IEBAIF9icmluX2JlZ2luX3BhcmFsbGVsKEJy aW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwK IAl7CiAJCWlmIChuZWVkX3BvcF9hY3RpdmVfc25hcHNob3QpCiAJCQlQb3BBY3RpdmVTbmFwc2hv dCgpOwotCQlpZiAoSXNNVkNDU25hcHNob3Qoc25hcHNob3QpKQotCQkJVW5yZWdpc3RlclNuYXBz aG90KHNuYXBzaG90KTsKIAkJRGVzdHJveVBhcmFsbGVsQ29udGV4dChwY3h0KTsKIAkJRXhpdFBh cmFsbGVsTW9kZSgpOwogCQlyZXR1cm47CkBAIC0yNDc4LDcgKzI0NzQsOCBAQCBfYnJpbl9iZWdp bl9wYXJhbGxlbChCcmluQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVs YXRpb24gaW5kZXgsCiAKIAl0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZShoZWFwLAogCQkJ CQkJCQkgIFBhcmFsbGVsVGFibGVTY2FuRnJvbUJyaW5TaGFyZWQoYnJpbnNoYXJlZCksCi0JCQkJ CQkJCSAgc25hcHNob3QpOworCQkJCQkJCQkgIGlzY29uY3VycmVudCA/IEludmFsaWRTbmFwc2hv dCA6IFNuYXBzaG90QW55LAorCQkJCQkJCQkgIGlzY29uY3VycmVudCk7CiAKIAkvKgogCSAqIFN0 b3JlIHNoYXJlZCB0dXBsZXNvcnQtcHJpdmF0ZSBzdGF0ZSwgZm9yIHdoaWNoIHdlIHJlc2VydmVk IHNwYWNlLgpAQCAtMjUyNCw3ICsyNTIxLDYgQEAgX2JyaW5fYmVnaW5fcGFyYWxsZWwoQnJpbkJ1 aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAogCQli cmlubGVhZGVyLT5ucGFydGljaXBhbnR0dXBsZXNvcnRzKys7CiAJYnJpbmxlYWRlci0+YnJpbnNo YXJlZCA9IGJyaW5zaGFyZWQ7CiAJYnJpbmxlYWRlci0+c2hhcmVkc29ydCA9IHNoYXJlZHNvcnQ7 Ci0JYnJpbmxlYWRlci0+c25hcHNob3QgPSBzbmFwc2hvdDsKIAlicmlubGVhZGVyLT53YWx1c2Fn ZSA9IHdhbHVzYWdlOwogCWJyaW5sZWFkZXItPmJ1ZmZlcnVzYWdlID0gYnVmZmVydXNhZ2U7CiAK QEAgLTI1NDAsNiArMjUzNiwxMyBAQCBfYnJpbl9iZWdpbl9wYXJhbGxlbChCcmluQnVpbGRTdGF0 ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJLyogU2F2ZSBs ZWFkZXIgc3RhdGUgbm93IHRoYXQgaXQncyBjbGVhciBidWlsZCB3aWxsIGJlIHBhcmFsbGVsICov CiAJYnVpbGRzdGF0ZS0+YnNfbGVhZGVyID0gYnJpbmxlYWRlcjsKIAorCS8qCisJICogSW4gY2Fz ZSBvZiBjb25jdXJyZW50IGJ1aWxkIHNuYXBzaG90cyBhcmUgZ29pbmcgdG8gYmUgcmVzZXQgcGVy aW9kaWNhbGx5LgorCSAqIFdlIG5lZWQgdG8gd2FpdCB1bnRpbCBhbGwgd29ya2VycyBpbXBvcnRl ZCBpbml0aWFsIHNuYXBzaG90LgorCSAqLworCWlmIChpc2NvbmN1cnJlbnQpCisJCVdhaXRGb3JQ YXJhbGxlbFdvcmtlcnNUb0F0dGFjaChwY3h0LCB0cnVlKTsKKwogCS8qIEpvaW4gaGVhcCBzY2Fu IG91cnNlbHZlcyAqLwogCWlmIChsZWFkZXJwYXJ0aWNpcGF0ZXMpCiAJCV9icmluX2xlYWRlcl9w YXJ0aWNpcGF0ZV9hc193b3JrZXIoYnVpbGRzdGF0ZSwgaGVhcCwgaW5kZXgpOwpAQCAtMjU0OCw3 ICsyNTUxLDggQEAgX2JyaW5fYmVnaW5fcGFyYWxsZWwoQnJpbkJ1aWxkU3RhdGUgKmJ1aWxkc3Rh dGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAogCSAqIENhbGxlciBuZWVkcyB0byB3 YWl0IGZvciBhbGwgbGF1bmNoZWQgd29ya2VycyB3aGVuIHdlIHJldHVybi4gIE1ha2UKIAkgKiBz dXJlIHRoYXQgdGhlIGZhaWx1cmUtdG8tc3RhcnQgY2FzZSB3aWxsIG5vdCBoYW5nIGZvcmV2ZXIu CiAJICovCi0JV2FpdEZvclBhcmFsbGVsV29ya2Vyc1RvQXR0YWNoKHBjeHQpOworCWlmICghaXNj b25jdXJyZW50KQorCQlXYWl0Rm9yUGFyYWxsZWxXb3JrZXJzVG9BdHRhY2gocGN4dCwgZmFsc2Up OwogCWlmIChuZWVkX3BvcF9hY3RpdmVfc25hcHNob3QpCiAJCVBvcEFjdGl2ZVNuYXBzaG90KCk7 CiB9CkBAIC0yNTcxLDkgKzI1NzUsNiBAQCBfYnJpbl9lbmRfcGFyYWxsZWwoQnJpbkxlYWRlciAq YnJpbmxlYWRlciwgQnJpbkJ1aWxkU3RhdGUgKnN0YXRlKQogCWZvciAoaSA9IDA7IGkgPCBicmlu bGVhZGVyLT5wY3h0LT5ud29ya2Vyc19sYXVuY2hlZDsgaSsrKQogCQlJbnN0ckFjY3VtUGFyYWxs ZWxRdWVyeSgmYnJpbmxlYWRlci0+YnVmZmVydXNhZ2VbaV0sICZicmlubGVhZGVyLT53YWx1c2Fn ZVtpXSk7CiAKLQkvKiBGcmVlIGxhc3QgcmVmZXJlbmNlIHRvIE1WQ0Mgc25hcHNob3QsIGlmIG9u ZSB3YXMgdXNlZCAqLwotCWlmIChJc01WQ0NTbmFwc2hvdChicmlubGVhZGVyLT5zbmFwc2hvdCkp Ci0JCVVucmVnaXN0ZXJTbmFwc2hvdChicmlubGVhZGVyLT5zbmFwc2hvdCk7CiAJRGVzdHJveVBh cmFsbGVsQ29udGV4dChicmlubGVhZGVyLT5wY3h0KTsKIAlFeGl0UGFyYWxsZWxNb2RlKCk7CiB9 CkBAIC0yNzczLDE0ICsyNzc0LDE0IEBAIF9icmluX3BhcmFsbGVsX21lcmdlKEJyaW5CdWlsZFN0 YXRlICpzdGF0ZSkKIAogLyoKICAqIFJldHVybnMgc2l6ZSBvZiBzaGFyZWQgbWVtb3J5IHJlcXVp cmVkIHRvIHN0b3JlIHN0YXRlIGZvciBhIHBhcmFsbGVsCi0gKiBicmluIGluZGV4IGJ1aWxkIGJh c2VkIG9uIHRoZSBzbmFwc2hvdCBpdHMgcGFyYWxsZWwgc2NhbiB3aWxsIHVzZS4KKyAqIGJyaW4g aW5kZXggYnVpbGQuCiAgKi8KIHN0YXRpYyBTaXplCi1fYnJpbl9wYXJhbGxlbF9lc3RpbWF0ZV9z aGFyZWQoUmVsYXRpb24gaGVhcCwgU25hcHNob3Qgc25hcHNob3QpCitfYnJpbl9wYXJhbGxlbF9l c3RpbWF0ZV9zaGFyZWQoUmVsYXRpb24gaGVhcCkKIHsKIAkvKiBjLmYuIHNobV90b2NfYWxsb2Nh dGUgYXMgdG8gd2h5IEJVRkZFUkFMSUdOIGlzIHVzZWQgKi8KIAlyZXR1cm4gYWRkX3NpemUoQlVG RkVSQUxJR04oc2l6ZW9mKEJyaW5TaGFyZWQpKSwKLQkJCQkJdGFibGVfcGFyYWxsZWxzY2FuX2Vz dGltYXRlKGhlYXAsIHNuYXBzaG90KSk7CisJCQkJCXRhYmxlX3BhcmFsbGVsc2Nhbl9lc3RpbWF0 ZShoZWFwLCBJbnZhbGlkU25hcHNob3QpKTsKIH0KIAogLyoKQEAgLTI4MDIsNiArMjgwMyw3IEBA IF9icmluX2xlYWRlcl9wYXJ0aWNpcGF0ZV9hc193b3JrZXIoQnJpbkJ1aWxkU3RhdGUgKmJ1aWxk c3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlCiAJLyogUGVyZm9ybSB3b3JrIGNvbW1vbiB0byBhbGwg cGFydGljaXBhbnRzICovCiAJX2JyaW5fcGFyYWxsZWxfc2Nhbl9hbmRfYnVpbGQoYnVpbGRzdGF0 ZSwgYnJpbmxlYWRlci0+YnJpbnNoYXJlZCwKIAkJCQkJCQkJICBicmlubGVhZGVyLT5zaGFyZWRz b3J0LCBoZWFwLCBpbmRleCwgc29ydG1lbSwgdHJ1ZSk7CisJQXNzZXJ0KCFicmlubGVhZGVyLT5i cmluc2hhcmVkLT5pc2NvbmN1cnJlbnQgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+ eGlkKSk7CiB9CiAKIC8qCkBAIC0yOTQyLDYgKzI5NDQsMTMgQEAgX2JyaW5fcGFyYWxsZWxfYnVp bGRfbWFpbihkc21fc2VnbWVudCAqc2VnLCBzaG1fdG9jICp0b2MpCiAKIAlfYnJpbl9wYXJhbGxl bF9zY2FuX2FuZF9idWlsZChidWlsZHN0YXRlLCBicmluc2hhcmVkLCBzaGFyZWRzb3J0LAogCQkJ CQkJCQkgIGhlYXBSZWwsIGluZGV4UmVsLCBzb3J0bWVtLCBmYWxzZSk7CisJaWYgKGJyaW5zaGFy ZWQtPmlzY29uY3VycmVudCkKKwl7CisJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CisJCUludmFsaWRh dGVDYXRhbG9nU25hcHNob3QoKTsKKwkJQXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVBy b2MtPnhpZCkpOworCQlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgp KTsKKwl9CiAKIAkvKiBSZXBvcnQgV0FML2J1ZmZlciB1c2FnZSBkdXJpbmcgcGFyYWxsZWwgZXhl Y3V0aW9uICovCiAJYnVmZmVydXNhZ2UgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVMX0tF WV9CVUZGRVJfVVNBR0UsIGZhbHNlKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL2hlYXBhbV9oYW5kbGVyLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFu ZGxlci5jCmluZGV4IDZkNGRlNzcwMzdjLi4yYTYxN2EwNWY4YyAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYworKysgYi9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCkBAIC0xMjMxLDE0ICsxMjMxLDEzIEBAIGhlYXBhbV9p bmRleF9idWlsZF9yYW5nZV9zY2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkgKiBTbmFwc2hv dEFueSBiZWNhdXNlIHdlIG11c3QgcmV0cmlldmUgYWxsIHR1cGxlcyBhbmQgZG8gb3VyIG93biB0 aW1lCiAJICogcXVhbCBjaGVja3MgKGJlY2F1c2Ugd2UgaGF2ZSB0byBpbmRleCBSRUNFTlRMWV9E RUFEIHR1cGxlcykuIEluIGEKIAkgKiBjb25jdXJyZW50IGJ1aWxkLCBvciBkdXJpbmcgYm9vdHN0 cmFwLCB3ZSB0YWtlIGEgcmVndWxhciBNVkNDIHNuYXBzaG90Ci0JICogYW5kIGluZGV4IHdoYXRl dmVyJ3MgbGl2ZSBhY2NvcmRpbmcgdG8gdGhhdC4KKwkgKiBhbmQgaW5kZXggd2hhdGV2ZXIncyBs aXZlIGFjY29yZGluZyB0byB0aGF0IHdoaWxlIHRoYXQgc25hcHNob3QgaXMgcmVzZXQKKwkgKiBl dmVyeSBzbyBvZnRlbiAoaW4gY2FzZSBvZiBub24tdW5pcXVlIGluZGV4KS4KIAkgKi8KIAlPbGRl c3RYbWluID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CiAKIAkvKgogCSAqIEZvciB1bmlxdWUgaW5k ZXggd2UgbmVlZCBjb25zaXN0ZW50IHNuYXBzaG90IGZvciB0aGUgd2hvbGUgc2Nhbi4KLQkgKiBJ biBjYXNlIG9mIHBhcmFsbGVsIHNjYW4gc29tZSBhZGRpdGlvbmFsIGluZnJhc3RydWN0dXJlIHJl cXVpcmVkCi0JICogdG8gcGVyZm9ybSBzY2FuIHdpdGggU09fUkVTRVRfU05BUFNIT1Qgd2hpY2gg aXMgbm90IHlldCByZWFkeS4KIAkgKi8KIAlyZXNldF9zbmFwc2hvdHMgPSBpbmRleEluZm8tPmlp X0NvbmN1cnJlbnQgJiYKIAkJCQkJICAhaW5kZXhJbmZvLT5paV9VbmlxdWUgJiYKQEAgLTEzMDAs OCArMTI5OSwxMSBAQCBoZWFwYW1faW5kZXhfYnVpbGRfcmFuZ2Vfc2NhbihSZWxhdGlvbiBoZWFw UmVsYXRpb24sCiAJCUFzc2VydCghSXNCb290c3RyYXBQcm9jZXNzaW5nTW9kZSgpKTsKIAkJQXNz ZXJ0KGFsbG93X3N5bmMpOwogCQlzbmFwc2hvdCA9IHNjYW4tPnJzX3NuYXBzaG90OwotCQlQdXNo QWN0aXZlU25hcHNob3Qoc25hcHNob3QpOwotCQluZWVkX3BvcF9hY3RpdmVfc25hcHNob3QgPSB0 cnVlOworCQlpZiAoIXJlc2V0X3NuYXBzaG90cykKKwkJeworCQkJUHVzaEFjdGl2ZVNuYXBzaG90 KHNuYXBzaG90KTsKKwkJCW5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCA9IHRydWU7CisJCX0KIAl9 CiAKIAloc2NhbiA9IChIZWFwU2NhbkRlc2MpIHNjYW47CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0 c29ydC5jCmluZGV4IGI0OTBkYTBlZWVlLi44MTBmODBmYzhlNiAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25i dHJlZS9uYnRzb3J0LmMKQEAgLTMyMSwyMiArMzIxLDIwIEBAIGJ0YnVpbGQoUmVsYXRpb24gaGVh cCwgUmVsYXRpb24gaW5kZXgsIEluZGV4SW5mbyAqaW5kZXhJbmZvKQogCQkJIFJlbGF0aW9uR2V0 UmVsYXRpb25OYW1lKGluZGV4KSk7CiAKIAlyZWx0dXBsZXMgPSBfYnRfc3Bvb2xzX2hlYXBzY2Fu KGhlYXAsIGluZGV4LCAmYnVpbGRzdGF0ZSwgaW5kZXhJbmZvKTsKLQlBc3NlcnQoaW5kZXhJbmZv LT5paV9QYXJhbGxlbFdvcmtlcnMgfHwgaW5kZXhJbmZvLT5paV9VbmlxdWUgfHwKLQkJICAhaW5k ZXhJbmZvLT5paV9Db25jdXJyZW50IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnht aW4pKTsKKwlBc3NlcnQoIWluZGV4SW5mby0+aWlfQ29uY3VycmVudCB8fCBpbmRleEluZm8tPmlp X1VuaXF1ZSB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiAKIAkvKgog CSAqIEZpbmlzaCB0aGUgYnVpbGQgYnkgKDEpIGNvbXBsZXRpbmcgdGhlIHNvcnQgb2YgdGhlIHNw b29sIGZpbGUsICgyKQogCSAqIGluc2VydGluZyB0aGUgc29ydGVkIHR1cGxlcyBpbnRvIGJ0cmVl IHBhZ2VzIGFuZCAoMykgYnVpbGRpbmcgdGhlIHVwcGVyCiAJICogbGV2ZWxzLiAgRmluYWxseSwg aXQgbWF5IGFsc28gYmUgbmVjZXNzYXJ5IHRvIGVuZCB1c2Ugb2YgcGFyYWxsZWxpc20uCiAJICov Ci0JX2J0X2xlYWZidWlsZChidWlsZHN0YXRlLnNwb29sLCBidWlsZHN0YXRlLnNwb29sMiwgIWlu ZGV4SW5mby0+aWlfUGFyYWxsZWxXb3JrZXJzICYmIGluZGV4SW5mby0+aWlfQ29uY3VycmVudCk7 CisJX2J0X2xlYWZidWlsZChidWlsZHN0YXRlLnNwb29sLCBidWlsZHN0YXRlLnNwb29sMiwgIWlu ZGV4SW5mby0+aWlfVW5pcXVlICYmIGluZGV4SW5mby0+aWlfQ29uY3VycmVudCk7CiAJX2J0X3Nw b29sZGVzdHJveShidWlsZHN0YXRlLnNwb29sKTsKIAlpZiAoYnVpbGRzdGF0ZS5zcG9vbDIpCiAJ CV9idF9zcG9vbGRlc3Ryb3koYnVpbGRzdGF0ZS5zcG9vbDIpOwogCWlmIChidWlsZHN0YXRlLmJ0 bGVhZGVyKQogCQlfYnRfZW5kX3BhcmFsbGVsKGJ1aWxkc3RhdGUuYnRsZWFkZXIpOwotCUFzc2Vy dChpbmRleEluZm8tPmlpX1BhcmFsbGVsV29ya2VycyB8fCBpbmRleEluZm8tPmlpX1VuaXF1ZSB8 fAotCQkgICFpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlk KE15UHJvYy0+eG1pbikpOworCUFzc2VydCghaW5kZXhJbmZvLT5paV9Db25jdXJyZW50IHx8IGlu ZGV4SW5mby0+aWlfVW5pcXVlIHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4p KTsKIAogCXJlc3VsdCA9IChJbmRleEJ1aWxkUmVzdWx0ICopIHBhbGxvYyhzaXplb2YoSW5kZXhC dWlsZFJlc3VsdCkpOwogCkBAIC00ODUsOCArNDgzLDcgQEAgX2J0X3Nwb29sc19oZWFwc2NhbihS ZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLAog CQlyZWx0dXBsZXMgPSBfYnRfcGFyYWxsZWxfaGVhcHNjYW4oYnVpbGRzdGF0ZSwKIAkJCQkJCQkJ CQkgICZpbmRleEluZm8tPmlpX0Jyb2tlbkhvdENoYWluKTsKIAlJbnZhbGlkYXRlQ2F0YWxvZ1Nu YXBzaG90KCk7Ci0JQXNzZXJ0KGluZGV4SW5mby0+aWlfUGFyYWxsZWxXb3JrZXJzIHx8IGluZGV4 SW5mby0+aWlfVW5pcXVlIHx8Ci0JCSAgIWluZGV4SW5mby0+aWlfQ29uY3VycmVudCB8fCAhVHJh bnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CisJQXNzZXJ0KCFpbmRleEluZm8tPmlp X0NvbmN1cnJlbnQgfHwgaW5kZXhJbmZvLT5paV9VbmlxdWUgfHwgIVRyYW5zYWN0aW9uSWRJc1Zh bGlkKE15UHJvYy0+eG1pbikpOwogCiAJLyoKIAkgKiBTZXQgdGhlIHByb2dyZXNzIHRhcmdldCBm b3IgdGhlIG5leHQgcGhhc2UuICBSZXNldCB0aGUgYmxvY2sgbnVtYmVyCkBAIC0xNDIxLDYgKzE0 MTgsNyBAQCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLCBib29s IGlzY29uY3VycmVudCwgaW50IHJlcXVlc3QpCiAJQnVmZmVyVXNhZ2UgKmJ1ZmZlcnVzYWdlOwog CWJvb2wJCWxlYWRlcnBhcnRpY2lwYXRlcyA9IHRydWU7CiAJYm9vbAkJbmVlZF9wb3BfYWN0aXZl X3NuYXBzaG90ID0gdHJ1ZTsKKwlib29sCQlyZXNldF9zbmFwc2hvdDsKIAlpbnQJCQlxdWVyeWxl bjsKIAogI2lmZGVmIERJU0FCTEVfTEVBREVSX1BBUlRJQ0lQQVRJT04KQEAgLTE0MzgsMTIgKzE0 MzYsMjEgQEAgX2J0X2JlZ2luX3BhcmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9v bCBpc2NvbmN1cnJlbnQsIGludCByZXF1ZXN0KQogCiAJc2NhbnR1cGxlc29ydHN0YXRlcyA9IGxl YWRlcnBhcnRpY2lwYXRlcyA/IHJlcXVlc3QgKyAxIDogcmVxdWVzdDsKIAorICAgIC8qCisJICog Rm9yIGNvbmN1cnJlbnQgbm9uLXVuaXF1ZSBpbmRleCBidWlsZHMsIHdlIGNhbiBwZXJpb2RpY2Fs bHkgcmVzZXQgc25hcHNob3RzCisJICogdG8gYWxsb3cgdGhlIHhtaW4gaG9yaXpvbiB0byBhZHZh bmNlLiBUaGlzIGlzIHNhZmUgc2luY2UgdGhlc2UgYnVpbGRzIGRvbid0CisJICogcmVxdWlyZSBh IGNvbnNpc3RlbnQgdmlldyBhY3Jvc3MgdGhlIGVudGlyZSBzY2FuLiBVbmlxdWUgaW5kZXhlcyBz dGlsbCBuZWVkCisJICogYSBzdGFibGUgc25hcHNob3QgdG8gcHJvcGVybHkgZW5mb3JjZSB1bmlx dWVuZXNzIGNvbnN0cmFpbnRzLgorICAgICAqLworCXJlc2V0X3NuYXBzaG90ID0gaXNjb25jdXJy ZW50ICYmICFidHNwb29sLT5pc3VuaXF1ZTsKKwogCS8qCiAJICogUHJlcGFyZSBmb3Igc2NhbiBv ZiB0aGUgYmFzZSByZWxhdGlvbi4gIEluIGEgbm9ybWFsIGluZGV4IGJ1aWxkLCB3ZSB1c2UKIAkg KiBTbmFwc2hvdEFueSBiZWNhdXNlIHdlIG11c3QgcmV0cmlldmUgYWxsIHR1cGxlcyBhbmQgZG8g b3VyIG93biB0aW1lCiAJICogcXVhbCBjaGVja3MgKGJlY2F1c2Ugd2UgaGF2ZSB0byBpbmRleCBS RUNFTlRMWV9ERUFEIHR1cGxlcykuICBJbiBhCiAJICogY29uY3VycmVudCBidWlsZCwgd2UgdGFr ZSBhIHJlZ3VsYXIgTVZDQyBzbmFwc2hvdCBhbmQgaW5kZXggd2hhdGV2ZXIncwotCSAqIGxpdmUg YWNjb3JkaW5nIHRvIHRoYXQuCisJICogbGl2ZSBhY2NvcmRpbmcgdG8gdGhhdCwgd2hpbGUgdGhh dCBzbmFwc2hvdCBtYXkgYmUgcmVzZXQgcGVyaW9kaWNhbGx5IGluCisJICogY2FzZSBvZiBub24t dW5pcXVlIGluZGV4LgogCSAqLwogCWlmICghaXNjb25jdXJyZW50KQogCXsKQEAgLTE0NTEsNiAr MTQ1OCwxMSBAQCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLCBi b29sIGlzY29uY3VycmVudCwgaW50IHJlcXVlc3QpCiAJCXNuYXBzaG90ID0gU25hcHNob3RBbnk7 CiAJCW5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCA9IGZhbHNlOwogCX0KKwllbHNlIGlmIChyZXNl dF9zbmFwc2hvdCkKKwl7CisJCXNuYXBzaG90ID0gSW52YWxpZFNuYXBzaG90OworCQlQdXNoQWN0 aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKKwl9CiAJZWxzZQogCXsKIAkJ c25hcHNob3QgPSBSZWdpc3RlclNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CkBA IC0xNTExLDcgKzE1MjMsNyBAQCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRlICpidWls ZHN0YXRlLCBib29sIGlzY29uY3VycmVudCwgaW50IHJlcXVlc3QpCiAJewogCQlpZiAobmVlZF9w b3BfYWN0aXZlX3NuYXBzaG90KQogCQkJUG9wQWN0aXZlU25hcHNob3QoKTsKLQkJaWYgKElzTVZD Q1NuYXBzaG90KHNuYXBzaG90KSkKKwkJaWYgKHNuYXBzaG90ICE9IEludmFsaWRTbmFwc2hvdCAm JiBJc01WQ0NTbmFwc2hvdChzbmFwc2hvdCkpCiAJCQlVbnJlZ2lzdGVyU25hcHNob3Qoc25hcHNo b3QpOwogCQlEZXN0cm95UGFyYWxsZWxDb250ZXh0KHBjeHQpOwogCQlFeGl0UGFyYWxsZWxNb2Rl KCk7CkBAIC0xNTM4LDcgKzE1NTAsOCBAQCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRl ICpidWlsZHN0YXRlLCBib29sIGlzY29uY3VycmVudCwgaW50IHJlcXVlc3QpCiAJYnRzaGFyZWQt PmJyb2tlbmhvdGNoYWluID0gZmFsc2U7CiAJdGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUo YnRzcG9vbC0+aGVhcCwKIAkJCQkJCQkJICBQYXJhbGxlbFRhYmxlU2NhbkZyb21CVFNoYXJlZChi dHNoYXJlZCksCi0JCQkJCQkJCSAgc25hcHNob3QpOworCQkJCQkJCQkgIHNuYXBzaG90LAorCQkJ CQkJCQkgIHJlc2V0X3NuYXBzaG90KTsKIAogCS8qCiAJICogU3RvcmUgc2hhcmVkIHR1cGxlc29y dC1wcml2YXRlIHN0YXRlLCBmb3Igd2hpY2ggd2UgcmVzZXJ2ZWQgc3BhY2UuCkBAIC0xNjE0LDYg KzE2MjcsMTMgQEAgX2J0X2JlZ2luX3BhcmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwg Ym9vbCBpc2NvbmN1cnJlbnQsIGludCByZXF1ZXN0KQogCS8qIFNhdmUgbGVhZGVyIHN0YXRlIG5v dyB0aGF0IGl0J3MgY2xlYXIgYnVpbGQgd2lsbCBiZSBwYXJhbGxlbCAqLwogCWJ1aWxkc3RhdGUt PmJ0bGVhZGVyID0gYnRsZWFkZXI7CiAKKwkvKgorCSAqIEluIGNhc2Ugb2YgY29uY3VycmVudCBi dWlsZCBzbmFwc2hvdHMgYXJlIGdvaW5nIHRvIGJlIHJlc2V0IHBlcmlvZGljYWxseS4KKwkgKiBX YWl0IHVudGlsIGFsbCB3b3JrZXJzIGltcG9ydGVkIGluaXRpYWwgc25hcHNob3QuCisJICovCisJ aWYgKHJlc2V0X3NuYXBzaG90KQorCQlXYWl0Rm9yUGFyYWxsZWxXb3JrZXJzVG9BdHRhY2gocGN4 dCwgdHJ1ZSk7CisKIAkvKiBKb2luIGhlYXAgc2NhbiBvdXJzZWx2ZXMgKi8KIAlpZiAobGVhZGVy cGFydGljaXBhdGVzKQogCQlfYnRfbGVhZGVyX3BhcnRpY2lwYXRlX2FzX3dvcmtlcihidWlsZHN0 YXRlKTsKQEAgLTE2MjIsNyArMTY0Miw4IEBAIF9idF9iZWdpbl9wYXJhbGxlbChCVEJ1aWxkU3Rh dGUgKmJ1aWxkc3RhdGUsIGJvb2wgaXNjb25jdXJyZW50LCBpbnQgcmVxdWVzdCkKIAkgKiBDYWxs ZXIgbmVlZHMgdG8gd2FpdCBmb3IgYWxsIGxhdW5jaGVkIHdvcmtlcnMgd2hlbiB3ZSByZXR1cm4u ICBNYWtlCiAJICogc3VyZSB0aGF0IHRoZSBmYWlsdXJlLXRvLXN0YXJ0IGNhc2Ugd2lsbCBub3Qg aGFuZyBmb3JldmVyLgogCSAqLwotCVdhaXRGb3JQYXJhbGxlbFdvcmtlcnNUb0F0dGFjaChwY3h0 KTsKKwlpZiAoIXJlc2V0X3NuYXBzaG90KQorCQlXYWl0Rm9yUGFyYWxsZWxXb3JrZXJzVG9BdHRh Y2gocGN4dCwgZmFsc2UpOwogCWlmIChuZWVkX3BvcF9hY3RpdmVfc25hcHNob3QpCiAJCVBvcEFj dGl2ZVNuYXBzaG90KCk7CiB9CkBAIC0xNjQ2LDcgKzE2NjcsNyBAQCBfYnRfZW5kX3BhcmFsbGVs KEJUTGVhZGVyICpidGxlYWRlcikKIAkJSW5zdHJBY2N1bVBhcmFsbGVsUXVlcnkoJmJ0bGVhZGVy LT5idWZmZXJ1c2FnZVtpXSwgJmJ0bGVhZGVyLT53YWx1c2FnZVtpXSk7CiAKIAkvKiBGcmVlIGxh c3QgcmVmZXJlbmNlIHRvIE1WQ0Mgc25hcHNob3QsIGlmIG9uZSB3YXMgdXNlZCAqLwotCWlmIChJ c01WQ0NTbmFwc2hvdChidGxlYWRlci0+c25hcHNob3QpKQorCWlmIChidGxlYWRlci0+c25hcHNo b3QgIT0gSW52YWxpZFNuYXBzaG90ICYmIElzTVZDQ1NuYXBzaG90KGJ0bGVhZGVyLT5zbmFwc2hv dCkpCiAJCVVucmVnaXN0ZXJTbmFwc2hvdChidGxlYWRlci0+c25hcHNob3QpOwogCURlc3Ryb3lQ YXJhbGxlbENvbnRleHQoYnRsZWFkZXItPnBjeHQpOwogCUV4aXRQYXJhbGxlbE1vZGUoKTsKQEAg LTE4OTYsNiArMTkxNyw3IEBAIF9idF9wYXJhbGxlbF9zY2FuX2FuZF9zb3J0KEJUU3Bvb2wgKmJ0 c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyLAogCVNvcnRDb29yZGluYXRlIGNvb3JkaW5hdGU7CiAJ QlRCdWlsZFN0YXRlIGJ1aWxkc3RhdGU7CiAJVGFibGVTY2FuRGVzYyBzY2FuOworCVBhcmFsbGVs VGFibGVTY2FuRGVzYyBwc2NhbjsKIAlkb3VibGUJCXJlbHR1cGxlczsKIAlJbmRleEluZm8gICpp bmRleEluZm87CiAKQEAgLTE5NTAsMTEgKzE5NzIsMTUgQEAgX2J0X3BhcmFsbGVsX3NjYW5fYW5k X3NvcnQoQlRTcG9vbCAqYnRzcG9vbCwgQlRTcG9vbCAqYnRzcG9vbDIsCiAJLyogSm9pbiBwYXJh bGxlbCBzY2FuICovCiAJaW5kZXhJbmZvID0gQnVpbGRJbmRleEluZm8oYnRzcG9vbC0+aW5kZXgp OwogCWluZGV4SW5mby0+aWlfQ29uY3VycmVudCA9IGJ0c2hhcmVkLT5pc2NvbmN1cnJlbnQ7Ci0J c2NhbiA9IHRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbChidHNwb29sLT5oZWFwLAotCQkJCQkJCQkJ UGFyYWxsZWxUYWJsZVNjYW5Gcm9tQlRTaGFyZWQoYnRzaGFyZWQpKTsKKwlwc2NhbiA9IFBhcmFs bGVsVGFibGVTY2FuRnJvbUJUU2hhcmVkKGJ0c2hhcmVkKTsKKwlzY2FuID0gdGFibGVfYmVnaW5z Y2FuX3BhcmFsbGVsKGJ0c3Bvb2wtPmhlYXAsIHBzY2FuKTsKIAlyZWx0dXBsZXMgPSB0YWJsZV9p bmRleF9idWlsZF9zY2FuKGJ0c3Bvb2wtPmhlYXAsIGJ0c3Bvb2wtPmluZGV4LCBpbmRleEluZm8s CiAJCQkJCQkJCQkgICB0cnVlLCBwcm9ncmVzcywgX2J0X2J1aWxkX2NhbGxiYWNrLAogCQkJCQkJ CQkJICAgJmJ1aWxkc3RhdGUsIHNjYW4pOworCUludmFsaWRhdGVDYXRhbG9nU25hcHNob3QoKTsK KwlpZiAocHNjYW4tPnBoc19yZXNldF9zbmFwc2hvdCkKKwkJUG9wQWN0aXZlU25hcHNob3QoKTsK KwlBc3NlcnQoIXBzY2FuLT5waHNfcmVzZXRfc25hcHNob3QgfHwgIVRyYW5zYWN0aW9uSWRJc1Zh bGlkKE15UHJvYy0+eG1pbikpOwogCiAJLyogRXhlY3V0ZSB0aGlzIHdvcmtlcidzIHBhcnQgb2Yg dGhlIHNvcnQgKi8KIAlpZiAocHJvZ3Jlc3MpCkBAIC0xOTkwLDQgKzIwMTYsNyBAQCBfYnRfcGFy YWxsZWxfc2Nhbl9hbmRfc29ydChCVFNwb29sICpidHNwb29sLCBCVFNwb29sICpidHNwb29sMiwK IAl0dXBsZXNvcnRfZW5kKGJ0c3Bvb2wtPnNvcnRzdGF0ZSk7CiAJaWYgKGJ0c3Bvb2wyKQogCQl0 dXBsZXNvcnRfZW5kKGJ0c3Bvb2wyLT5zb3J0c3RhdGUpOworCUFzc2VydCghcHNjYW4tPnBoc19y ZXNldF9zbmFwc2hvdCB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CisJ aWYgKHBzY2FuLT5waHNfcmVzZXRfc25hcHNob3QpCisJCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRU cmFuc2FjdGlvblNuYXBzaG90KCkpOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNz L3RhYmxlL3RhYmxlYW0uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZS90YWJsZWFtLmMKaW5k ZXggYTU2YzVlY2ViMTQuLjI3N2M3OWRkNTU0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3MvdGFibGUvdGFibGVhbS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZS90YWJsZWFt LmMKQEAgLTEzMiwxMCArMTMyLDEwIEBAIHRhYmxlX3BhcmFsbGVsc2Nhbl9lc3RpbWF0ZShSZWxh dGlvbiByZWwsIFNuYXBzaG90IHNuYXBzaG90KQogewogCVNpemUJCXN6ID0gMDsKIAotCWlmIChJ c01WQ0NTbmFwc2hvdChzbmFwc2hvdCkpCisJaWYgKHNuYXBzaG90ICE9IEludmFsaWRTbmFwc2hv dCAmJiBJc01WQ0NTbmFwc2hvdChzbmFwc2hvdCkpCiAJCXN6ID0gYWRkX3NpemUoc3osIEVzdGlt YXRlU25hcHNob3RTcGFjZShzbmFwc2hvdCkpOwogCWVsc2UKLQkJQXNzZXJ0KHNuYXBzaG90ID09 IFNuYXBzaG90QW55KTsKKwkJQXNzZXJ0KHNuYXBzaG90ID09IFNuYXBzaG90QW55IHx8IHNuYXBz aG90ID09IEludmFsaWRTbmFwc2hvdCk7CiAKIAlzeiA9IGFkZF9zaXplKHN6LCByZWwtPnJkX3Rh YmxlYW0tPnBhcmFsbGVsc2Nhbl9lc3RpbWF0ZShyZWwpKTsKIApAQCAtMTQ0LDIxICsxNDQsMzYg QEAgdGFibGVfcGFyYWxsZWxzY2FuX2VzdGltYXRlKFJlbGF0aW9uIHJlbCwgU25hcHNob3Qgc25h cHNob3QpCiAKIHZvaWQKIHRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplKFJlbGF0aW9uIHJl bCwgUGFyYWxsZWxUYWJsZVNjYW5EZXNjIHBzY2FuLAotCQkJCQkJCSAgU25hcHNob3Qgc25hcHNo b3QpCisJCQkJCQkJICBTbmFwc2hvdCBzbmFwc2hvdCwgYm9vbCByZXNldF9zbmFwc2hvdCkKIHsK IAlTaXplCQlzbmFwc2hvdF9vZmYgPSByZWwtPnJkX3RhYmxlYW0tPnBhcmFsbGVsc2Nhbl9pbml0 aWFsaXplKHJlbCwgcHNjYW4pOwogCiAJcHNjYW4tPnBoc19zbmFwc2hvdF9vZmYgPSBzbmFwc2hv dF9vZmY7CiAKLQlpZiAoSXNNVkNDU25hcHNob3Qoc25hcHNob3QpKQorCS8qCisJICogSW5pdGlh bGl6ZSBwYXJhbGxlbCBzY2FuIGRlc2NyaXB0aW9uLiBGb3Igbm9ybWFsIHNjYW5zIHdpdGggYSBy ZWd1bGFyCisJICogTVZDQyBzbmFwc2hvdCwgc2VyaWFsaXplIHRoZSBzbmFwc2hvdCBpbmZvLiBG b3Igc2NhbnMgdGhhdCB1c2UgcGVyaW9kaWMKKwkgKiBzbmFwc2hvdCByZXNldHMsIG1hcmsgdGhl IHNjYW4gYWNjb3JkaW5nbHkuCisJICovCisJaWYgKHJlc2V0X3NuYXBzaG90KQorCXsKKwkJQXNz ZXJ0KHNuYXBzaG90ID09IEludmFsaWRTbmFwc2hvdCk7CisJCXBzY2FuLT5waHNfc25hcHNob3Rf YW55ID0gZmFsc2U7CisJCXBzY2FuLT5waHNfcmVzZXRfc25hcHNob3QgPSB0cnVlOworCQlJTkpF Q1RJT05fUE9JTlQoInRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplIik7CisJfQorCWVsc2Ug aWYgKElzTVZDQ1NuYXBzaG90KHNuYXBzaG90KSkKIAl7CiAJCVNlcmlhbGl6ZVNuYXBzaG90KHNu YXBzaG90LCAoY2hhciAqKSBwc2NhbiArIHBzY2FuLT5waHNfc25hcHNob3Rfb2ZmKTsKIAkJcHNj YW4tPnBoc19zbmFwc2hvdF9hbnkgPSBmYWxzZTsKKwkJcHNjYW4tPnBoc19yZXNldF9zbmFwc2hv dCA9IGZhbHNlOwogCX0KIAllbHNlCiAJewogCQlBc3NlcnQoc25hcHNob3QgPT0gU25hcHNob3RB bnkpOworCQlBc3NlcnQoIXJlc2V0X3NuYXBzaG90KTsKIAkJcHNjYW4tPnBoc19zbmFwc2hvdF9h bnkgPSB0cnVlOworCQlwc2Nhbi0+cGhzX3Jlc2V0X3NuYXBzaG90ID0gZmFsc2U7CiAJfQogfQog CkBAIC0xNzEsNyArMTg2LDE5IEBAIHRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbChSZWxhdGlvbiBy ZWxhdGlvbiwgUGFyYWxsZWxUYWJsZVNjYW5EZXNjIHBzY2FuKQogCiAJQXNzZXJ0KFJlbEZpbGVM b2NhdG9yRXF1YWxzKHJlbGF0aW9uLT5yZF9sb2NhdG9yLCBwc2Nhbi0+cGhzX2xvY2F0b3IpKTsK IAotCWlmICghcHNjYW4tPnBoc19zbmFwc2hvdF9hbnkpCisJLyoKKwkgKiBGb3Igc2NhbnMgdGhh dAorCSAqIHVzZSBwZXJpb2RpYyBzbmFwc2hvdCByZXNldHMsIG1hcmsgdGhlIHNjYW4gYWNjb3Jk aW5nbHkgYW5kIHVzZSB0aGUgYWN0aXZlCisJICogc25hcHNob3QgYXMgdGhlIGluaXRpYWwgc3Rh dGUuCisJICovCisJaWYgKHBzY2FuLT5waHNfcmVzZXRfc25hcHNob3QpCisJeworCQlBc3NlcnQo QWN0aXZlU25hcHNob3RTZXQoKSk7CisJCWZsYWdzIHw9IFNPX1JFU0VUX1NOQVBTSE9UOworCQkv KiBTdGFydCB3aXRoIGN1cnJlbnQgYWN0aXZlIHNuYXBzaG90LiAqLworCQlzbmFwc2hvdCA9IEdl dEFjdGl2ZVNuYXBzaG90KCk7CisJfQorCWVsc2UgaWYgKCFwc2Nhbi0+cGhzX3NuYXBzaG90X2Fu eSkKIAl7CiAJCS8qIFNuYXBzaG90IHdhcyBzZXJpYWxpemVkIC0tIHJlc3RvcmUgaXQgKi8KIAkJ c25hcHNob3QgPSBSZXN0b3JlU25hcHNob3QoKGNoYXIgKikgcHNjYW4gKyBwc2Nhbi0+cGhzX3Nu YXBzaG90X29mZik7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9wYXJh bGxlbC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vcGFyYWxsZWwuYwppbmRleCA0YWI1 ZGY5MjEzMy4uZWMzYzgwZmVmMjcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFu c2FtL3BhcmFsbGVsLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vcGFyYWxsZWwu YwpAQCAtNzYsNiArNzYsNyBAQAogI2RlZmluZSBQQVJBTExFTF9LRVlfUkVMTUFQUEVSX1NUQVRF CQlVSU5UNjRDT05TVCgweEZGRkZGRkZGRkZGRjAwMEQpCiAjZGVmaW5lIFBBUkFMTEVMX0tFWV9V TkNPTU1JVFRFREVOVU1TCQlVSU5UNjRDT05TVCgweEZGRkZGRkZGRkZGRjAwMEUpCiAjZGVmaW5l IFBBUkFMTEVMX0tFWV9DTElFTlRDT05OSU5GTwkJCVVJTlQ2NENPTlNUKDB4RkZGRkZGRkZGRkZG MDAwRikKKyNkZWZpbmUgUEFSQUxMRUxfS0VZX1NOQVBTSE9UX1JFU1RPUkVECQlVSU5UNjRDT05T VCgweEZGRkZGRkZGRkZGRjAwMTApCiAKIC8qIEZpeGVkLXNpemUgcGFyYWxsZWwgc3RhdGUuICov CiB0eXBlZGVmIHN0cnVjdCBGaXhlZFBhcmFsbGVsU3RhdGUKQEAgLTMwMSw2ICszMDIsMTAgQEAg SW5pdGlhbGl6ZVBhcmFsbGVsRFNNKFBhcmFsbGVsQ29udGV4dCAqcGN4dCkKIAkJCQkJCQkJCQlw Y3h0LT5ud29ya2VycykpOwogCQlzaG1fdG9jX2VzdGltYXRlX2tleXMoJnBjeHQtPmVzdGltYXRv ciwgMSk7CiAKKwkJc2htX3RvY19lc3RpbWF0ZV9jaHVuaygmcGN4dC0+ZXN0aW1hdG9yLCBtdWxf c2l6ZShzaXplb2YoYm9vbCksCisJCQkJCQkJICAgcGN4dC0+bndvcmtlcnMpKTsKKwkJc2htX3Rv Y19lc3RpbWF0ZV9rZXlzKCZwY3h0LT5lc3RpbWF0b3IsIDEpOworCiAJCS8qIEVzdGltYXRlIGhv dyBtdWNoIHdlJ2xsIG5lZWQgZm9yIHRoZSBlbnRyeXBvaW50IGluZm8uICovCiAJCXNobV90b2Nf ZXN0aW1hdGVfY2h1bmsoJnBjeHQtPmVzdGltYXRvciwgc3RybGVuKHBjeHQtPmxpYnJhcnlfbmFt ZSkgKwogCQkJCQkJCSAgIHN0cmxlbihwY3h0LT5mdW5jdGlvbl9uYW1lKSArIDIpOwpAQCAtMzcy LDYgKzM3Nyw3IEBAIEluaXRpYWxpemVQYXJhbGxlbERTTShQYXJhbGxlbENvbnRleHQgKnBjeHQp CiAJCWNoYXIJICAgKmVudHJ5cG9pbnRzdGF0ZTsKIAkJY2hhcgkgICAqdW5jb21taXR0ZWRlbnVt c3NwYWNlOwogCQljaGFyCSAgICpjbGllbnRjb25uaW5mb3NwYWNlOworCQlib29sCSAgICpzbmFw c2hvdF9zZXRfZmxhZ19zcGFjZTsKIAkJU2l6ZQkJbG5hbWVsZW47CiAKIAkJLyogU2VyaWFsaXpl IHNoYXJlZCBsaWJyYXJpZXMgd2UgaGF2ZSBsb2FkZWQuICovCkBAIC00ODcsNiArNDkzLDE5IEBA IEluaXRpYWxpemVQYXJhbGxlbERTTShQYXJhbGxlbENvbnRleHQgKnBjeHQpCiAJCXN0cmNweShl bnRyeXBvaW50c3RhdGUsIHBjeHQtPmxpYnJhcnlfbmFtZSk7CiAJCXN0cmNweShlbnRyeXBvaW50 c3RhdGUgKyBsbmFtZWxlbiArIDEsIHBjeHQtPmZ1bmN0aW9uX25hbWUpOwogCQlzaG1fdG9jX2lu c2VydChwY3h0LT50b2MsIFBBUkFMTEVMX0tFWV9FTlRSWVBPSU5ULCBlbnRyeXBvaW50c3RhdGUp OworCisJCS8qCisJCSAqIEVzdGFibGlzaCBkeW5hbWljIHNoYXJlZCBtZW1vcnkgdG8gcGFzcyBp bmZvcm1hdGlvbiBhYm91dCBpbXBvcnRpbmcKKwkJICogb2Ygc25hcHNob3QuCisJCSAqLworCQlz bmFwc2hvdF9zZXRfZmxhZ19zcGFjZSA9CisJCQkJc2htX3RvY19hbGxvY2F0ZShwY3h0LT50b2Ms IG11bF9zaXplKHNpemVvZihib29sKSwgcGN4dC0+bndvcmtlcnMpKTsKKwkJZm9yIChpID0gMDsg aSA8IHBjeHQtPm53b3JrZXJzOyArK2kpCisJCXsKKwkJCXBjeHQtPndvcmtlcltpXS5zbmFwc2hv dF9yZXN0b3JlZCA9IHNuYXBzaG90X3NldF9mbGFnX3NwYWNlICsgaSAqIHNpemVvZihib29sKTsK KwkJCSpwY3h0LT53b3JrZXJbaV0uc25hcHNob3RfcmVzdG9yZWQgPSBmYWxzZTsKKwkJfQorCQlz aG1fdG9jX2luc2VydChwY3h0LT50b2MsIFBBUkFMTEVMX0tFWV9TTkFQU0hPVF9SRVNUT1JFRCwg c25hcHNob3Rfc2V0X2ZsYWdfc3BhY2UpOwogCX0KIAogCS8qIFVwZGF0ZSBud29ya2Vyc190b19s YXVuY2gsIGluIGNhc2Ugd2UgY2hhbmdlZCBud29ya2VycyBhYm92ZS4gKi8KQEAgLTU0Miw2ICs1 NjEsMTcgQEAgUmVpbml0aWFsaXplUGFyYWxsZWxEU00oUGFyYWxsZWxDb250ZXh0ICpwY3h0KQog CQkJcGN4dC0+d29ya2VyW2ldLmVycm9yX21xaCA9IHNobV9tcV9hdHRhY2gobXEsIHBjeHQtPnNl ZywgTlVMTCk7CiAJCX0KIAl9CisKKwkvKiBTZXQgc25hcHNob3QgcmVzdG9yZWQgZmxhZyB0byBm YWxzZS4gKi8KKwlpZiAocGN4dC0+bndvcmtlcnMgPiAwKQorCXsKKwkJYm9vbAkgICAqc25hcHNo b3RfcmVzdG9yZWRfc3BhY2U7CisJCWludAkJCWk7CisJCXNuYXBzaG90X3Jlc3RvcmVkX3NwYWNl ID0KKwkJCQlzaG1fdG9jX2xvb2t1cChwY3h0LT50b2MsIFBBUkFMTEVMX0tFWV9TTkFQU0hPVF9S RVNUT1JFRCwgZmFsc2UpOworCQlmb3IgKGkgPSAwOyBpIDwgcGN4dC0+bndvcmtlcnM7ICsraSkK KwkJCXNuYXBzaG90X3Jlc3RvcmVkX3NwYWNlW2ldID0gZmFsc2U7CisJfQogfQogCiAvKgpAQCAt NjU3LDYgKzY4NywxMCBAQCBMYXVuY2hQYXJhbGxlbFdvcmtlcnMoUGFyYWxsZWxDb250ZXh0ICpw Y3h0KQogICogV2FpdCBmb3IgYWxsIHdvcmtlcnMgdG8gYXR0YWNoIHRvIHRoZWlyIGVycm9yIHF1 ZXVlcywgYW5kIHRocm93IGFuIGVycm9yIGlmCiAgKiBhbnkgd29ya2VyIGZhaWxzIHRvIGRvIHRo aXMuCiAgKgorICogd2FpdF9mb3Jfc25hcHNob3Q6IHRyYWNrIHdoZXRoZXIgZWFjaCBwYXJhbGxl bCB3b3JrZXIgaGFzIHN1Y2Nlc3NmdWxseSByZXN0b3JlZAorICogaXRzIHNuYXBzaG90LiBUaGlz IGlzIG5lZWRlZCB3aGVuIHVzaW5nIHBlcmlvZGljIHNuYXBzaG90IHJlc2V0cyB0byBlbnN1cmUg YWxsCisgKiB3b3JrZXJzIGhhdmUgYSB2YWxpZCBpbml0aWFsIHNuYXBzaG90IGJlZm9yZSBwcm9j ZWVkaW5nIHdpdGggdGhlIHNjYW4uCisgKgogICogQ2FsbGVycyBjYW4gYXNzdW1lIHRoYXQgaWYg dGhpcyBmdW5jdGlvbiByZXR1cm5zIHN1Y2Nlc3NmdWxseSwgdGhlbiB0aGUKICAqIG51bWJlciBv ZiB3b3JrZXJzIGdpdmVuIGJ5IHBjeHQtPm53b3JrZXJzX2xhdW5jaGVkIGhhdmUgaW5pdGlhbGl6 ZWQgYW5kCiAgKiBhdHRhY2hlZCB0byB0aGVpciBlcnJvciBxdWV1ZXMuICBXaGV0aGVyIG9yIG5v dCB0aGVzZSB3b3JrZXJzIGFyZSBndWFyYW50ZWVkCkBAIC02ODYsNyArNzIwLDcgQEAgTGF1bmNo UGFyYWxsZWxXb3JrZXJzKFBhcmFsbGVsQ29udGV4dCAqcGN4dCkKICAqIGNhbGwgdGhpcyBmdW5j dGlvbiBhdCBhbGwuCiAgKi8KIHZvaWQKLVdhaXRGb3JQYXJhbGxlbFdvcmtlcnNUb0F0dGFjaChQ YXJhbGxlbENvbnRleHQgKnBjeHQpCitXYWl0Rm9yUGFyYWxsZWxXb3JrZXJzVG9BdHRhY2goUGFy YWxsZWxDb250ZXh0ICpwY3h0LCBib29sIHdhaXRfZm9yX3NuYXBzaG90KQogewogCWludAkJCWk7 CiAKQEAgLTczMCw5ICs3NjQsMTIgQEAgV2FpdEZvclBhcmFsbGVsV29ya2Vyc1RvQXR0YWNoKFBh cmFsbGVsQ29udGV4dCAqcGN4dCkKIAkJCQltcSA9IHNobV9tcV9nZXRfcXVldWUocGN4dC0+d29y a2VyW2ldLmVycm9yX21xaCk7CiAJCQkJaWYgKHNobV9tcV9nZXRfc2VuZGVyKG1xKSAhPSBOVUxM KQogCQkJCXsKLQkJCQkJLyogWWVzLCBzbyBpdCBpcyBrbm93biB0byBiZSBhdHRhY2hlZC4gKi8K LQkJCQkJcGN4dC0+a25vd25fYXR0YWNoZWRfd29ya2Vyc1tpXSA9IHRydWU7Ci0JCQkJCSsrcGN4 dC0+bmtub3duX2F0dGFjaGVkX3dvcmtlcnM7CisJCQkJCWlmICghd2FpdF9mb3Jfc25hcHNob3Qg fHwgKihwY3h0LT53b3JrZXJbaV0uc25hcHNob3RfcmVzdG9yZWQpKQorCQkJCQl7CisJCQkJCQkv KiBZZXMsIHNvIGl0IGlzIGtub3duIHRvIGJlIGF0dGFjaGVkLiAqLworCQkJCQkJcGN4dC0+a25v d25fYXR0YWNoZWRfd29ya2Vyc1tpXSA9IHRydWU7CisJCQkJCQkrK3BjeHQtPm5rbm93bl9hdHRh Y2hlZF93b3JrZXJzOworCQkJCQl9CiAJCQkJfQogCQkJfQogCQkJZWxzZSBpZiAoc3RhdHVzID09 IEJHV0hfU1RPUFBFRCkKQEAgLTEyOTEsNiArMTMyOCw3IEBAIFBhcmFsbGVsV29ya2VyTWFpbihE YXR1bSBtYWluX2FyZykKIAlzaG1fdG9jICAgICp0b2M7CiAJRml4ZWRQYXJhbGxlbFN0YXRlICpm cHM7CiAJY2hhcgkgICAqZXJyb3JfcXVldWVfc3BhY2U7CisJYm9vbAkgICAqc25hcHNob3RfcmVz dG9yZWRfc3BhY2U7CiAJc2htX21xCSAgICptcTsKIAlzaG1fbXFfaGFuZGxlICptcWg7CiAJY2hh cgkgICAqbGlicmFyeXNwYWNlOwpAQCAtMTQ5NSw2ICsxNTMzLDEwIEBAIFBhcmFsbGVsV29ya2Vy TWFpbihEYXR1bSBtYWluX2FyZykKIAkJCQkJCQkgICBmcHMtPnBhcmFsbGVsX2xlYWRlcl9wZ3By b2MpOwogCVB1c2hBY3RpdmVTbmFwc2hvdChhc25hcHNob3QpOwogCisJLyogU25hcHNob3QgaXMg cmVzdG9yZWQsIHNldCBmbGFnIHRvIG1ha2UgbGVhZGVyIGtub3cgYWJvdXQgaXQuICovCisJc25h cHNob3RfcmVzdG9yZWRfc3BhY2UgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVMX0tFWV9T TkFQU0hPVF9SRVNUT1JFRCwgZmFsc2UpOworCXNuYXBzaG90X3Jlc3RvcmVkX3NwYWNlW1BhcmFs bGVsV29ya2VyTnVtYmVyXSA9IHRydWU7CisKIAkvKgogCSAqIFdlJ3ZlIGNoYW5nZWQgd2hpY2gg dHVwbGVzIHdlIGNhbiBzZWUsIGFuZCBtdXN0IHRoZXJlZm9yZSBpbnZhbGlkYXRlCiAJICogc3lz dGVtIGNhY2hlcy4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYyBiL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwppbmRleCAyMTBmYzg4NDMzZi4uZGFjZmY5NjA1YWQg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYworKysgYi9zcmMvYmFja2Vu ZC9jYXRhbG9nL2luZGV4LmMKQEAgLTE1MzEsNyArMTUzMSw3IEBAIGluZGV4X2NvbmN1cnJlbnRs eV9idWlsZChPaWQgaGVhcFJlbGF0aW9uSWQsCiAKIAkvKiBJbnZhbGlkYXRlIGNhdGFsb2cgc25h cHNob3QganVzdCBmb3IgYXNzZXJ0ICovCiAJSW52YWxpZGF0ZUNhdGFsb2dTbmFwc2hvdCgpOwot CUFzc2VydCgoaW5kZXhJbmZvLT5paV9QYXJhbGxlbFdvcmtlcnMgfHwgaW5kZXhJbmZvLT5paV9V bmlxdWUpIHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKKwlBc3NlcnQo aW5kZXhJbmZvLT5paV9VbmlxdWUgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1p bikpOwogCiAJLyogUm9sbCBiYWNrIGFueSBHVUMgY2hhbmdlcyBleGVjdXRlZCBieSBpbmRleCBm dW5jdGlvbnMgKi8KIAlBdEVPWGFjdF9HVUMoZmFsc2UsIHNhdmVfbmVzdGxldmVsKTsKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXFzY2FuLmMgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlU2Vxc2Nhbi5jCmluZGV4IDZmOWU5OTFlZWFlLi5iYzYzOTk2NGFkYSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4uYworKysgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlU2Vxc2Nhbi5jCkBAIC0zNjcsNyArMzY3LDggQEAgRXhlY1NlcVNj YW5Jbml0aWFsaXplRFNNKFNlcVNjYW5TdGF0ZSAqbm9kZSwKIAlwc2NhbiA9IHNobV90b2NfYWxs b2NhdGUocGN4dC0+dG9jLCBub2RlLT5wc2Nhbl9sZW4pOwogCXRhYmxlX3BhcmFsbGVsc2Nhbl9p bml0aWFsaXplKG5vZGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbiwKIAkJCQkJCQkJICBwc2NhbiwK LQkJCQkJCQkJICBlc3RhdGUtPmVzX3NuYXBzaG90KTsKKwkJCQkJCQkJICBlc3RhdGUtPmVzX3Nu YXBzaG90LAorCQkJCQkJCQkgIGZhbHNlKTsKIAlzaG1fdG9jX2luc2VydChwY3h0LT50b2MsIG5v ZGUtPnNzLnBzLnBsYW4tPnBsYW5fbm9kZV9pZCwgcHNjYW4pOwogCW5vZGUtPnNzLnNzX2N1cnJl bnRTY2FuRGVzYyA9CiAJCXRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbChub2RlLT5zcy5zc19jdXJy ZW50UmVsYXRpb24sIHBzY2FuKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL3RpbWUv c25hcG1nci5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvdGltZS9zbmFwbWdyLmMKaW5kZXggM2QwMThj M2ExZTguLjRjZDUzNmU5ODhjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy90aW1lL3Nu YXBtZ3IuYworKysgYi9zcmMvYmFja2VuZC91dGlscy90aW1lL3NuYXBtZ3IuYwpAQCAtMjgzLDE0 ICsyODMsNiBAQCBHZXRUcmFuc2FjdGlvblNuYXBzaG90KHZvaWQpCiBTbmFwc2hvdAogR2V0TGF0 ZXN0U25hcHNob3Qodm9pZCkKIHsKLQkvKgotCSAqIFdlIG1pZ2h0IGJlIGFibGUgdG8gcmVsYXgg dGhpcywgYnV0IG5vdGhpbmcgdGhhdCBjb3VsZCBvdGhlcndpc2Ugd29yawotCSAqIG5lZWRzIGl0 LgotCSAqLwotCWlmIChJc0luUGFyYWxsZWxNb2RlKCkpCi0JCWVsb2coRVJST1IsCi0JCQkgImNh bm5vdCB1cGRhdGUgU2Vjb25kYXJ5U25hcHNob3QgZHVyaW5nIGEgcGFyYWxsZWwgb3BlcmF0aW9u Iik7Ci0KIAkvKgogCSAqIFNvIGZhciB0aGVyZSBhcmUgbm8gY2FzZXMgcmVxdWlyaW5nIHN1cHBv cnQgZm9yIEdldExhdGVzdFNuYXBzaG90KCkKIAkgKiBkdXJpbmcgbG9naWNhbCBkZWNvZGluZywg YnV0IGl0IHdvdWxkbid0IGJlIGhhcmQgdG8gYWRkIGlmIHJlcXVpcmVkLgpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvYWNjZXNzL3BhcmFsbGVsLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvcGFyYWxs ZWwuaAppbmRleCA4ODExNjE4YWNiNy4uZjVjYWUzOWM4NWYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL2FjY2Vzcy9wYXJhbGxlbC5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9wYXJhbGxlbC5o CkBAIC0yNiw2ICsyNiw3IEBAIHR5cGVkZWYgc3RydWN0IFBhcmFsbGVsV29ya2VySW5mbwogewog CUJhY2tncm91bmRXb3JrZXJIYW5kbGUgKmJnd2hhbmRsZTsKIAlzaG1fbXFfaGFuZGxlICplcnJv cl9tcWg7CisJYm9vbAkJICAqc25hcHNob3RfcmVzdG9yZWQ7CiB9IFBhcmFsbGVsV29ya2VySW5m bzsKIAogdHlwZWRlZiBzdHJ1Y3QgUGFyYWxsZWxDb250ZXh0CkBAIC02NSw3ICs2Niw3IEBAIGV4 dGVybiB2b2lkIEluaXRpYWxpemVQYXJhbGxlbERTTShQYXJhbGxlbENvbnRleHQgKnBjeHQpOwog ZXh0ZXJuIHZvaWQgUmVpbml0aWFsaXplUGFyYWxsZWxEU00oUGFyYWxsZWxDb250ZXh0ICpwY3h0 KTsKIGV4dGVybiB2b2lkIFJlaW5pdGlhbGl6ZVBhcmFsbGVsV29ya2VycyhQYXJhbGxlbENvbnRl eHQgKnBjeHQsIGludCBud29ya2Vyc190b19sYXVuY2gpOwogZXh0ZXJuIHZvaWQgTGF1bmNoUGFy YWxsZWxXb3JrZXJzKFBhcmFsbGVsQ29udGV4dCAqcGN4dCk7Ci1leHRlcm4gdm9pZCBXYWl0Rm9y UGFyYWxsZWxXb3JrZXJzVG9BdHRhY2goUGFyYWxsZWxDb250ZXh0ICpwY3h0KTsKK2V4dGVybiB2 b2lkIFdhaXRGb3JQYXJhbGxlbFdvcmtlcnNUb0F0dGFjaChQYXJhbGxlbENvbnRleHQgKnBjeHQs IGJvb2wgd2FpdF9mb3Jfc25hcHNob3QpOwogZXh0ZXJuIHZvaWQgV2FpdEZvclBhcmFsbGVsV29y a2Vyc1RvRmluaXNoKFBhcmFsbGVsQ29udGV4dCAqcGN4dCk7CiBleHRlcm4gdm9pZCBEZXN0cm95 UGFyYWxsZWxDb250ZXh0KFBhcmFsbGVsQ29udGV4dCAqcGN4dCk7CiBleHRlcm4gYm9vbCBQYXJh bGxlbENvbnRleHRBY3RpdmUodm9pZCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3Mv cmVsc2Nhbi5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3JlbHNjYW4uaAppbmRleCBkYzZlMDE4NDI4 NC4uODUyOWI4MDhhZWQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9yZWxzY2FuLmgK KysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3JlbHNjYW4uaApAQCAtODIsNiArODIsNyBAQCB0eXBl ZGVmIHN0cnVjdCBQYXJhbGxlbFRhYmxlU2NhbkRlc2NEYXRhCiAJUmVsRmlsZUxvY2F0b3IgcGhz X2xvY2F0b3I7IC8qIHBoeXNpY2FsIHJlbGF0aW9uIHRvIHNjYW4gKi8KIAlib29sCQlwaHNfc3lu Y3NjYW47CS8qIHJlcG9ydCBsb2NhdGlvbiB0byBzeW5jc2NhbiBsb2dpYz8gKi8KIAlib29sCQlw aHNfc25hcHNob3RfYW55OwkvKiBTbmFwc2hvdEFueSwgbm90IHBoc19zbmFwc2hvdF9kYXRhPyAq LworCWJvb2wJCXBoc19yZXNldF9zbmFwc2hvdDsgLyogdXNlIFNPX1JFU0VUX1NOQVBTSE9UPyAq LwogCVNpemUJCXBoc19zbmFwc2hvdF9vZmY7CS8qIGRhdGEgZm9yIHNuYXBzaG90ICovCiB9IFBh cmFsbGVsVGFibGVTY2FuRGVzY0RhdGE7CiB0eXBlZGVmIHN0cnVjdCBQYXJhbGxlbFRhYmxlU2Nh bkRlc2NEYXRhICpQYXJhbGxlbFRhYmxlU2NhbkRlc2M7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9hY2Nlc3MvdGFibGVhbS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaAppbmRleCA1 MzkzYjMwYzU3ZS4uMzEzMzk0ZDkyYzYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90 YWJsZWFtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaApAQCAtMTE4MSw3ICsx MTgxLDggQEAgZXh0ZXJuIFNpemUgdGFibGVfcGFyYWxsZWxzY2FuX2VzdGltYXRlKFJlbGF0aW9u IHJlbCwgU25hcHNob3Qgc25hcHNob3QpOwogICovCiBleHRlcm4gdm9pZCB0YWJsZV9wYXJhbGxl bHNjYW5faW5pdGlhbGl6ZShSZWxhdGlvbiByZWwsCiAJCQkJCQkJCQkJICBQYXJhbGxlbFRhYmxl U2NhbkRlc2MgcHNjYW4sCi0JCQkJCQkJCQkJICBTbmFwc2hvdCBzbmFwc2hvdCk7CisJCQkJCQkJ CQkJICBTbmFwc2hvdCBzbmFwc2hvdCwKKwkJCQkJCQkJCQkgIGJvb2wgcmVzZXRfc25hcHNob3Qp OwogCiAvKgogICogQmVnaW4gYSBwYXJhbGxlbCBzY2FuLiBgcHNjYW5gIG5lZWRzIHRvIGhhdmUg YmVlbiBpbml0aWFsaXplZCB3aXRoCkBAIC0xNzk5LDkgKzE4MDAsOSBAQCB0YWJsZV9zY2FuX2Fu YWx5emVfbmV4dF90dXBsZShUYWJsZVNjYW5EZXNjIHNjYW4sIFRyYW5zYWN0aW9uSWQgT2xkZXN0 WG1pbiwKICAqIFRoaXMgb25seSByZWFsbHkgbWFrZXMgc2Vuc2UgZm9yIGhlYXAgQU0sIGl0IG1p Z2h0IG5lZWQgdG8gYmUgZ2VuZXJhbGl6ZWQKICAqIGZvciBvdGhlciBBTXMgbGF0ZXIuCiAgKgot ICogSW4gY2FzZSBvZiBub24tdW5pcXVlIGluZGV4IGFuZCBub24tcGFyYWxsZWwgY29uY3VycmVu dCBidWlsZAotICogU09fUkVTRVRfU05BUFNIT1QgaXMgYXBwbGllZCBmb3IgdGhlIHNjYW4uIFRo YXQgbGVhZHMgZm9yIGNoYW5naW5nIHNuYXBzaG90cwotICogb24gdGhlIGZseSB0byBhbGxvdyB4 bWluIGhvcml6b24gcHJvcGFnYXRlLgorICogSW4gY2FzZSBvZiBub24tdW5pcXVlIGNvbmN1cnJl bnQgIGluZGV4IGJ1aWxkIFNPX1JFU0VUX1NOQVBTSE9UIGlzIGFwcGxpZWQKKyAqIGZvciB0aGUg c2Nhbi4gVGhhdCBsZWFkcyBmb3IgY2hhbmdpbmcgc25hcHNob3RzIG9uIHRoZSBmbHkgdG8gYWxs b3cgeG1pbgorICogaG9yaXpvbiBwcm9wYWdhdGUuCiAgKi8KIHN0YXRpYyBpbmxpbmUgZG91Ymxl CiB0YWJsZV9pbmRleF9idWlsZF9zY2FuKFJlbGF0aW9uIHRhYmxlX3JlbCwKZGlmZiAtLWdpdCBh L3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBlY3RlZC9jaWNfcmVzZXRfc25h cHNob3RzLm91dCBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBlY3RlZC9j aWNfcmVzZXRfc25hcHNob3RzLm91dAppbmRleCA5NDhkMTIzMmFhMC4uNTk1YTQwMDBjZTAgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBlY3RlZC9jaWNf cmVzZXRfc25hcHNob3RzLm91dAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2lu dHMvZXhwZWN0ZWQvY2ljX3Jlc2V0X3NuYXBzaG90cy5vdXQKQEAgLTE3LDYgKzE3LDEyIEBAIFNF TEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgndGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0 X3NuYXBzaG90cycsICdub3RpY2UnCiAgCiAoMSByb3cpCiAKK1NFTEVDVCBpbmplY3Rpb25fcG9p bnRzX2F0dGFjaCgndGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUnLCAnbm90aWNlJyk7Cisg aW5qZWN0aW9uX3BvaW50c19hdHRhY2ggCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCiso MSByb3cpCisKIENSRUFURSBTQ0hFTUEgY2ljX3Jlc2V0X3NuYXA7CiBDUkVBVEUgVEFCTEUgY2lj X3Jlc2V0X3NuYXAudGJsKGkgaW50IHByaW1hcnkga2V5LCBqIGludCk7CiBJTlNFUlQgSU5UTyBj aWNfcmVzZXRfc25hcC50YmwgU0VMRUNUIGksIGkgKiBJIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEs IDIwMCkgcyhpKTsKQEAgLTcyLDMwICs3OCw0NSBAQCBOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVk IGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZQog RFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogLS0gVGhlIHNhbWUg aW4gcGFyYWxsZWwgbW9kZQogQUxURVIgVEFCTEUgY2ljX3Jlc2V0X3NuYXAudGJsIFNFVCAocGFy YWxsZWxfd29ya2Vycz0yKTsKKy0tIERldGFjaCB0byBrZWVwIHRlc3Qgc3RhYmxlLCBzaW5jZSBw YXJhbGxlbCB3b3JrZXIgbWF5IGNvbXBsZXRlIHNjYW4gYmVmb3JlIGxlYWRlcgorU0VMRUNUIGlu amVjdGlvbl9wb2ludHNfZGV0YWNoKCdoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZl Jyk7CisgaW5qZWN0aW9uX3BvaW50c19kZXRhY2ggCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgCisoMSByb3cpCisKIENSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBj aWNfcmVzZXRfc25hcC50YmwoaSk7CiBSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVz ZXRfc25hcC5pZHg7CiBEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7 CiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSk7 CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfcGFy YWxsZWxzY2FuX2luaXRpYWxpemUKIFJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNl dF9zbmFwLmlkeDsKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2lu dCB0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZQogRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkg Y2ljX3Jlc2V0X3NuYXAuaWR4OwogQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2lj X3Jlc2V0X3NuYXAudGJsKE1PRChpLCAyKSwgaikgV0hFUkUgTU9EKGksIDIpID0gMDsKK05PVElD RTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9wYXJhbGxlbHNj YW5faW5pdGlhbGl6ZQogUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAu aWR4OworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxl X3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplCiBEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVz ZXRfc25hcC5pZHg7CiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRf c25hcC50YmwoaSwgaikgV0hFUkUgY2ljX3Jlc2V0X3NuYXAucHJlZGljYXRlX3N0YWJsZShpKTsK IE5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdp bnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCi1OT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZv ciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZQogUkVJ TkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogTk9USUNFOiAgbm90 aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9y ZXNldF9zbmFwc2hvdHMKLU5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBw b2ludCBoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZlCiBEUk9QIElOREVYIENPTkNV UlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlk eCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSwgaikgV0hFUkUgY2ljX3Jlc2V0X3NuYXAucHJlZGlj YXRlX3N0YWJsZV9ub19wYXJhbSgpOworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5q ZWN0aW9uIHBvaW50IHRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplCiBSRUlOREVYIElOREVY IENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dl cmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUKIERS T1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKIENSRUFURSBJTkRFWCBD T05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChpIERFU0MgTlVMTFMgTEFTVCk7 CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfcGFy YWxsZWxzY2FuX2luaXRpYWxpemUKIFJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNl dF9zbmFwLmlkeDsKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2lu dCB0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZQogRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkg Y2ljX3Jlc2V0X3NuYXAuaWR4OwogQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2lj X3Jlc2V0X3NuYXAudGJsIFVTSU5HIEJSSU4oaSk7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVk IGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUKIFJFSU5E RVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK05PVElDRTogIG5vdGlj ZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlh bGl6ZQogRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogRFJPUCBT Q0hFTUEgY2ljX3Jlc2V0X3NuYXAgQ0FTQ0FERTsKIE5PVElDRTogIGRyb3AgY2FzY2FkZXMgdG8g MyBvdGhlciBvYmplY3RzCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9w b2ludHMvc3FsL2NpY19yZXNldF9zbmFwc2hvdHMuc3FsIGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmpl Y3Rpb25fcG9pbnRzL3NxbC9jaWNfcmVzZXRfc25hcHNob3RzLnNxbAppbmRleCA1MDcyNTM1YjM1 NS4uMjk0MWFhN2FlMzggMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3Bv aW50cy9zcWwvY2ljX3Jlc2V0X3NuYXBzaG90cy5zcWwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9p bmplY3Rpb25fcG9pbnRzL3NxbC9jaWNfcmVzZXRfc25hcHNob3RzLnNxbApAQCAtMyw3ICszLDcg QEAgQ1JFQVRFIEVYVEVOU0lPTiBpbmplY3Rpb25fcG9pbnRzOwogU0VMRUNUIGluamVjdGlvbl9w b2ludHNfc2V0X2xvY2FsKCk7CiBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ2hlYXBf cmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUnLCAnbm90aWNlJyk7CiBTRUxFQ1QgaW5qZWN0 aW9uX3BvaW50c19hdHRhY2goJ3RhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMn LCAnbm90aWNlJyk7Ci0KK1NFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgndGFibGVfcGFy YWxsZWxzY2FuX2luaXRpYWxpemUnLCAnbm90aWNlJyk7CiAKIENSRUFURSBTQ0hFTUEgY2ljX3Jl c2V0X3NuYXA7CiBDUkVBVEUgVEFCTEUgY2ljX3Jlc2V0X3NuYXAudGJsKGkgaW50IHByaW1hcnkg a2V5LCBqIGludCk7CkBAIC01Myw2ICs1Myw5IEBAIERST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNp Y19yZXNldF9zbmFwLmlkeDsKIC0tIFRoZSBzYW1lIGluIHBhcmFsbGVsIG1vZGUKIEFMVEVSIFRB QkxFIGNpY19yZXNldF9zbmFwLnRibCBTRVQgKHBhcmFsbGVsX3dvcmtlcnM9Mik7CiAKKy0tIERl dGFjaCB0byBrZWVwIHRlc3Qgc3RhYmxlLCBzaW5jZSBwYXJhbGxlbCB3b3JrZXIgbWF5IGNvbXBs ZXRlIHNjYW4gYmVmb3JlIGxlYWRlcgorU0VMRUNUIGluamVjdGlvbl9wb2ludHNfZGV0YWNoKCdo ZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZlJyk7CisKIENSRUFURSBVTklRVUUgSU5E RVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSk7CiBSRUlOREVYIElO REVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiBEUk9QIElOREVYIENPTkNVUlJF TlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CkBAIC04Myw0ICs4Niw0IEBAIERST1AgSU5ERVggQ09O Q1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKIAogRFJPUCBTQ0hFTUEgY2ljX3Jlc2V0X3Nu YXAgQ0FTQ0FERTsKIAotRFJPUCBFWFRFTlNJT04gaW5qZWN0aW9uX3BvaW50czsKK0RST1AgRVhU RU5TSU9OIGluamVjdGlvbl9wb2ludHM7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQotLSAK Mi40My4wCgo= --0000000000007d5b96062e941445 Content-Type: text/x-patch; charset="US-ASCII"; name="v15-0006-Add-STIR-Short-Term-Index-Replacement-access-met.patch" Content-Disposition: attachment; filename="v15-0006-Add-STIR-Short-Term-Index-Replacement-access-met.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m7dgd9ig5 RnJvbSA3NDNiMDAxODBiNWI0NGY1Nzc5M2E0NTQxZjhkZjY0ODEwNTRiNDMzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxtaWNoYWlsLm5pa29sYWV2QGdtYWlsLmNvbT4KRGF0 ZTogU2F0LCAyMSBEZWMgMjAyNCAxODozNjoxMCArMDEwMApTdWJqZWN0OiBbUEFUQ0ggdjE1IDA2 LzEyXSBBZGQgU1RJUiAoU2hvcnQtVGVybSBJbmRleCBSZXBsYWNlbWVudCkgYWNjZXNzCiBtZXRo b2QKClRoaXMgcGF0Y2ggcHJvdmlkZXMgZm91bmRhdGlvbmFsIGluZnJhc3RydWN0dXJlIGZvciB1 cGNvbWluZyBlbmhhbmNlbWVudHMgdG8KY29uY3VycmVudCBpbmRleCBidWlsZHMgYnkgaW50cm9k dWNpbmc6CgotICoqaWlfQXV4aWxpYXJ5KiogaW4gYEluZGV4SW5mb2A6IEluZGljYXRlcyB0aGF0 IGFuIGluZGV4IGlzIGFuIGF1eGlsaWFyeQogIGluZGV4LCBzcGVjaWZpY2FsbHkgZm9yIHVzZSBk dXJpbmcgY29uY3VycmVudCBpbmRleCBidWlsZHMuCi0gKip2YWxpZGF0ZV9pbmRleCoqIGluIGBJ bmRleFZhY3V1bUluZm9gOiBTaWduYWxzIHdoZW4gYSB2YWN1dW0gb3IgY2xlYW51cAogIG9wZXJh dGlvbiBpcyB2YWxpZGF0aW5nIGEgbmV3bHkgYnVpbHQgaW5kZXggKGUuZy4sIGR1cmluZyBjb25j dXJyZW50IGJ1aWxkKS4KCkFkZGl0aW9uYWxseSwgYSBuZXcgKipTVElSIChTaG9ydC1UZXJtIElu ZGV4IFJlcGxhY2VtZW50KSoqIGFjY2VzcyBtZXRob2QgaXMKaW50cm9kdWNlZCwgaW50ZW5kZWQg c29sZWx5IGZvciBzaG9ydC1saXZlZCwgYXV4aWxpYXJ5IHVzYWdlLiBTVElSIGZ1bmN0aW9ucwph cyBhbiBlcGhlbWVyYWwgaGVscGVyIGR1cmluZyBjb25jdXJyZW50IGluZGV4IGJ1aWxkcywgdGVt cG9yYXJpbHkgc3RvcmluZyBUSURzCndpdGhvdXQgcHJvdmlkaW5nIHRoZSBmdWxsIGZlYXR1cmVz IG9mIGEgdHlwaWNhbCBpbmRleC4gQXMgc3VjaCwgaXQgcmFpc2VzCndhcm5pbmdzIG9yIGVycm9y cyB3aGVuIGFjY2Vzc2VkIG91dHNpZGUgaXRzIHNwZWNpYWxpemVkIHVzYWdlIHBhdGguCgpUaGVz ZSBjaGFuZ2VzIGxheSBlc3NlbnRpYWwgZ3JvdW5kd29yayBmb3IgZnVydGhlciBpbXByb3ZlbWVu dHMgdG8gY29uY3VycmVudAppbmRleCBidWlsZHMuCi0tLQogY29udHJpYi9wZ3N0YXR0dXBsZS9w Z3N0YXR0dXBsZS5jICAgICAgICB8ICAgMyArCiBzcmMvYmFja2VuZC9hY2Nlc3MvTWFrZWZpbGUg ICAgICAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5 LmMgICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL2FjY2Vzcy9tZXNvbi5idWlsZCAgICAgICAgICAg fCAgIDEgKwogc3JjL2JhY2tlbmQvYWNjZXNzL3N0aXIvTWFrZWZpbGUgICAgICAgICB8ICAxOCAr CiBzcmMvYmFja2VuZC9hY2Nlc3Mvc3Rpci9tZXNvbi5idWlsZCAgICAgIHwgICA1ICsKIHNyYy9i YWNrZW5kL2FjY2Vzcy9zdGlyL3N0aXIuYyAgICAgICAgICAgfCA1NzMgKysrKysrKysrKysrKysr KysrKysrKysKIHNyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYyAgICAgICAgICAgICAgfCAgIDEg Kwogc3JjL2JhY2tlbmQvY29tbWFuZHMvYW5hbHl6ZS5jICAgICAgICAgICB8ICAgMSArCiBzcmMv YmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jICAgIHwgICAxICsKIHNyYy9iYWNrZW5k L25vZGVzL21ha2VmdW5jcy5jICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvYWNjZXNz L2dlbmFtLmggICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9hY2Nlc3MvcmVsb3B0 aW9ucy5oICAgICAgICAgIHwgICAzICstCiBzcmMvaW5jbHVkZS9hY2Nlc3Mvc3Rpci5oICAgICAg ICAgICAgICAgIHwgMTE3ICsrKysrCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2FtLmRhdCAgICAg ICAgICAgIHwgICAzICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfb3BjbGFzcy5kYXQgICAgICAg fCAgIDQgKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19vcGZhbWlseS5kYXQgICAgICB8ICAgMiAr CiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAgICAgICAgIHwgICA0ICsKIHNyYy9p bmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oICAgICAgICAgICAgfCAgIDYgKy0KIHNyYy9pbmNsdWRl L3V0aWxzL2luZGV4X3NlbGZ1bmNzLmggICAgICAgfCAgIDggKwogc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9hbXV0aWxzLm91dCAgICB8ICAgOCArLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9vcHJfc2FuaXR5Lm91dCB8ICAgNyArLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wc3Fs Lm91dCAgICAgICB8ICAyNCArLQogMjMgZmlsZXMgY2hhbmdlZCwgNzc3IGluc2VydGlvbnMoKyks IDE4IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9iYWNrZW5kL2FjY2Vzcy9z dGlyL01ha2VmaWxlCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2JhY2tlbmQvYWNjZXNzL3N0aXIv bWVzb24uYnVpbGQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYmFja2VuZC9hY2Nlc3Mvc3Rpci9z dGlyLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvaW5jbHVkZS9hY2Nlc3Mvc3Rpci5oCgpkaWZm IC0tZ2l0IGEvY29udHJpYi9wZ3N0YXR0dXBsZS9wZ3N0YXR0dXBsZS5jIGIvY29udHJpYi9wZ3N0 YXR0dXBsZS9wZ3N0YXR0dXBsZS5jCmluZGV4IGZmN2NjMDdkZjk5Li4wMDdlZmM0ZWQwYyAxMDA2 NDQKLS0tIGEvY29udHJpYi9wZ3N0YXR0dXBsZS9wZ3N0YXR0dXBsZS5jCisrKyBiL2NvbnRyaWIv cGdzdGF0dHVwbGUvcGdzdGF0dHVwbGUuYwpAQCAtMjgyLDYgKzI4Miw5IEBAIHBnc3RhdF9yZWxh dGlvbihSZWxhdGlvbiByZWwsIEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvKQogCQkJY2FzZSBTUEdJ U1RfQU1fT0lEOgogCQkJCWVyciA9ICJzcGdpc3QgaW5kZXgiOwogCQkJCWJyZWFrOworCQkJY2Fz ZSBTVElSX0FNX09JRDoKKwkJCQllcnIgPSAic3RpciBpbmRleCI7CisJCQkJYnJlYWs7CiAJCQlj YXNlIEJSSU5fQU1fT0lEOgogCQkJCWVyciA9ICJicmluIGluZGV4IjsKIAkJCQlicmVhazsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9NYWtlZmlsZSBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9NYWtlZmlsZQppbmRleCAxOTMyZDExZDE1NC4uY2Q2NTI0YTU0YWIgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9NYWtlZmlsZQorKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvTWFrZWZp bGUKQEAgLTksNiArOSw2IEBAIHRvcF9idWlsZGRpciA9IC4uLy4uLy4uCiBpbmNsdWRlICQodG9w X2J1aWxkZGlyKS9zcmMvTWFrZWZpbGUuZ2xvYmFsCiAKIFNVQkRJUlMJICAgID0gYnJpbiBjb21t b24gZ2luIGdpc3QgaGFzaCBoZWFwIGluZGV4IG5idHJlZSBybWdyZGVzYyBzcGdpc3QgXAotCQkJ ICBzZXF1ZW5jZSB0YWJsZSB0YWJsZXNhbXBsZSB0cmFuc2FtCisJCQkgIHN0aXIgc2VxdWVuY2Ug dGFibGUgdGFibGVzYW1wbGUgdHJhbnNhbQogCiBpbmNsdWRlICQodG9wX3NyY2Rpcikvc3JjL2Jh Y2tlbmQvY29tbW9uLm1rCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1 dW1sYXp5LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKaW5kZXggMWFm MThhNzhhMmIuLjYzZDZkMTczOGJiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC92YWN1dW1sYXp5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5j CkBAIC0zMDY0LDYgKzMwNjQsNyBAQCBsYXp5X3ZhY3V1bV9vbmVfaW5kZXgoUmVsYXRpb24gaW5k cmVsLCBJbmRleEJ1bGtEZWxldGVSZXN1bHQgKmlzdGF0LAogCWl2aW5mby5tZXNzYWdlX2xldmVs ID0gREVCVUcyOwogCWl2aW5mby5udW1faGVhcF90dXBsZXMgPSByZWx0dXBsZXM7CiAJaXZpbmZv LnN0cmF0ZWd5ID0gdmFjcmVsLT5ic3RyYXRlZ3k7CisJaXZpbmZvLnZhbGlkYXRlX2luZGV4ID0g ZmFsc2U7CiAKIAkvKgogCSAqIFVwZGF0ZSBlcnJvciB0cmFjZWJhY2sgaW5mb3JtYXRpb24uCkBA IC0zMTE1LDYgKzMxMTYsNyBAQCBsYXp5X2NsZWFudXBfb25lX2luZGV4KFJlbGF0aW9uIGluZHJl bCwgSW5kZXhCdWxrRGVsZXRlUmVzdWx0ICppc3RhdCwKIAogCWl2aW5mby5udW1faGVhcF90dXBs ZXMgPSByZWx0dXBsZXM7CiAJaXZpbmZvLnN0cmF0ZWd5ID0gdmFjcmVsLT5ic3RyYXRlZ3k7CisJ aXZpbmZvLnZhbGlkYXRlX2luZGV4ID0gZmFsc2U7CiAKIAkvKgogCSAqIFVwZGF0ZSBlcnJvciB0 cmFjZWJhY2sgaW5mb3JtYXRpb24uCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvbWVz b24uYnVpbGQgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbWVzb24uYnVpbGQKaW5kZXggN2EyZDBkZGI2 ODkuLmExNTZjZGRmZjM1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvbWVzb24uYnVp bGQKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL21lc29uLmJ1aWxkCkBAIC0xMSw2ICsxMSw3IEBA IHN1YmRpcignbmJ0cmVlJykKIHN1YmRpcigncm1ncmRlc2MnKQogc3ViZGlyKCdzZXF1ZW5jZScp CiBzdWJkaXIoJ3NwZ2lzdCcpCitzdWJkaXIoJ3N0aXInKQogc3ViZGlyKCd0YWJsZScpCiBzdWJk aXIoJ3RhYmxlc2FtcGxlJykKIHN1YmRpcigndHJhbnNhbScpCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9hY2Nlc3Mvc3Rpci9NYWtlZmlsZSBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9zdGlyL01ha2Vm aWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5mYWU1ODk4YjhkNwot LS0gL2Rldi9udWxsCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9zdGlyL01ha2VmaWxlCkBAIC0w LDAgKzEsMTggQEAKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjCisjIE1ha2VmaWxlLS0KKyMgICAgTWFr ZWZpbGUgZm9yIGFjY2Vzcy9zdGlyCisjCisjIElERU5USUZJQ0FUSU9OCisjICAgIHNyYy9iYWNr ZW5kL2FjY2Vzcy9zdGlyL01ha2VmaWxlCisjCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitzdWJkaXIg PSBzcmMvYmFja2VuZC9hY2Nlc3Mvc3RpcgordG9wX2J1aWxkZGlyID0gLi4vLi4vLi4vLi4KK2lu Y2x1ZGUgJCh0b3BfYnVpbGRkaXIpL3NyYy9NYWtlZmlsZS5nbG9iYWwKKworT0JKUyA9IFwKKwlz dGlyLm8KKworaW5jbHVkZSAkKHRvcF9zcmNkaXIpL3NyYy9iYWNrZW5kL2NvbW1vbi5tawpcIE5v IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9z dGlyL21lc29uLmJ1aWxkIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3N0aXIvbWVzb24uYnVpbGQKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjM5YzZlY2E4NDhkCi0tLSAvZGV2 L251bGwKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3N0aXIvbWVzb24uYnVpbGQKQEAgLTAsMCAr MSw1IEBACisjIENvcHlyaWdodCAoYykgMjAyNSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1l bnQgR3JvdXAKKworYmFja2VuZF9zb3VyY2VzICs9IGZpbGVzKAorCSdzdGlyLmMnLAorKQpcIE5v IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9z dGlyL3N0aXIuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9zdGlyL3N0aXIuYwpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMDFmM2I2NjBmNGIKLS0tIC9kZXYvbnVsbAorKysg Yi9zcmMvYmFja2VuZC9hY2Nlc3Mvc3Rpci9zdGlyLmMKQEAgLTAsMCArMSw1NzMgQEAKKy8qLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorICoKKyAqIHN0aXIuYworICoJICBJbXBsZW1lbnRhdGlvbiBvZiBTaG9y dC1UZXJtIEluZGV4IFJlcGxhY2VtZW50LgorICoKKyAqIFNUSVIgaXMgYSBzcGVjaWFsaXplZCBh Y2Nlc3MgbWV0aG9kIHR5cGUgZGVzaWduZWQgZm9yIHRlbXBvcmFyeSBzdG9yYWdlCisgKiBvZiBU SUQgdmFsdWVzIGR1cmluZyBjb25jdXJlcm50IGluZGV4IGJ1aWxkIG9wZXJhdGlvbnMuCisgKgor ICogVGhlIHR5cGljYWwgbGlmZWN5Y2xlIG9mIGEgU1RJUiBpbmRleCBpczoKKyAqIDEuIGNyZWF0 ZWQgYXMgYW4gYXV4aWxpYXJ5IGluZGV4IGZvciBDSUMvUklDCisgKiAyLiBhY2NlcHRzIGluc2Vy dHMgZm9yIGEgcGVyaW9kCisgKiAzLiBzdGlyYnVsa2RlbGV0ZSBjYWxsZWQgZHVyaW5nIGluZGV4 IHZhbGlkYXRpb24gcGhhc2UKKyAqIDUuIGdldHMgZHJvcHBlZAorICoKKyAqIFBvcnRpb25zIENv cHlyaWdodCAoYykgMjAyNSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAq CisgKiBJREVOVElGSUNBVElPTgorICoJICBzcmMvYmFja2VuZC9hY2Nlc3Mvc3Rpci9zdGlyLmMK KyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworI2luY2x1ZGUgInBvc3RncmVzLmgiCisKKyNp bmNsdWRlICJhY2Nlc3Mvc3Rpci5oIgorI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgorI2luY2x1ZGUg ImFjY2Vzcy9hbXZhbGlkYXRlLmgiCisjaW5jbHVkZSAiYWNjZXNzL2h0dXBfZGV0YWlscy5oIgor I2luY2x1ZGUgImFjY2Vzcy90YWJsZWFtLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9pbmRleC5oIgor I2luY2x1ZGUgImNhdGFsb2cvcGdfYW1vcC5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfb3BjbGFz cy5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfb3BmYW1pbHkuaCIKKyNpbmNsdWRlICJjb21tYW5k cy92YWN1dW0uaCIKKyNpbmNsdWRlICJzdG9yYWdlL2J1Zm1nci5oIgorI2luY2x1ZGUgInV0aWxz L2NhdGNhY2hlLmgiCisjaW5jbHVkZSAidXRpbHMvZm1ncnByb3Rvcy5oIgorI2luY2x1ZGUgInV0 aWxzL2luZGV4X3NlbGZ1bmNzLmgiCisjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKKyNpbmNs dWRlICJ1dGlscy9yZWdwcm9jLmgiCisjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKKworLyoK KyAqIFN0aXIgaGFuZGxlciBmdW5jdGlvbjogcmV0dXJuIEluZGV4QW1Sb3V0aW5lIHdpdGggYWNj ZXNzIG1ldGhvZCBwYXJhbWV0ZXJzCisgKiBhbmQgY2FsbGJhY2tzLgorICovCitEYXR1bQorc3Rp cmhhbmRsZXIoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlJbmRleEFtUm91dGluZSAqYW1yb3V0aW5l ID0gbWFrZU5vZGUoSW5kZXhBbVJvdXRpbmUpOworCisJLyogU2V0IFNUSVItc3BlY2lmaWMgc3Ry YXRlZ3kgYW5kIHByb2NlZHVyZSBudW1iZXJzICovCisJYW1yb3V0aW5lLT5hbXN0cmF0ZWdpZXMg PSBTVElSX05TVFJBVEVHSUVTOworCWFtcm91dGluZS0+YW1zdXBwb3J0ID0gU1RJUl9OUFJPQzsK KwlhbXJvdXRpbmUtPmFtb3B0c3Byb2NudW0gPSBTVElSX09QVElPTlNfUFJPQzsKKworCS8qIFNU SVIgZG9lc24ndCBzdXBwb3J0IG1vc3QgaW5kZXggb3BlcmF0aW9ucyAqLworCWFtcm91dGluZS0+ YW1jYW5vcmRlciA9IGZhbHNlOworCWFtcm91dGluZS0+YW1jYW5vcmRlcmJ5b3AgPSBmYWxzZTsK KwlhbXJvdXRpbmUtPmFtY2FuYmFja3dhcmQgPSBmYWxzZTsKKwlhbXJvdXRpbmUtPmFtY2FudW5p cXVlID0gZmFsc2U7CisJYW1yb3V0aW5lLT5hbWNhbm11bHRpY29sID0gdHJ1ZTsKKwlhbXJvdXRp bmUtPmFtb3B0aW9uYWxrZXkgPSB0cnVlOworCWFtcm91dGluZS0+YW1zZWFyY2hhcnJheSA9IGZh bHNlOworCWFtcm91dGluZS0+YW1zZWFyY2hudWxscyA9IGZhbHNlOworCWFtcm91dGluZS0+YW1z dG9yYWdlID0gZmFsc2U7CisJYW1yb3V0aW5lLT5hbWNsdXN0ZXJhYmxlID0gZmFsc2U7CisJYW1y b3V0aW5lLT5hbXByZWRsb2NrcyA9IGZhbHNlOworCWFtcm91dGluZS0+YW1jYW5wYXJhbGxlbCA9 IGZhbHNlOworCWFtcm91dGluZS0+YW1jYW5idWlsZHBhcmFsbGVsID0gZmFsc2U7CisJYW1yb3V0 aW5lLT5hbWNhbmluY2x1ZGUgPSB0cnVlOworCWFtcm91dGluZS0+YW11c2VtYWludGVuYW5jZXdv cmttZW0gPSBmYWxzZTsKKwlhbXJvdXRpbmUtPmFtcGFyYWxsZWx2YWN1dW1vcHRpb25zID0KKwkJ CVZBQ1VVTV9PUFRJT05fUEFSQUxMRUxfQlVMS0RFTCB8IFZBQ1VVTV9PUFRJT05fUEFSQUxMRUxf Q0xFQU5VUDsKKwlhbXJvdXRpbmUtPmFta2V5dHlwZSA9IEludmFsaWRPaWQ7CisKKwkvKiBTZXQg dXAgZnVuY3Rpb24gY2FsbGJhY2tzICovCisJYW1yb3V0aW5lLT5hbWJ1aWxkID0gc3RpcmJ1aWxk OworCWFtcm91dGluZS0+YW1idWlsZGVtcHR5ID0gc3RpcmJ1aWxkZW1wdHk7CisJYW1yb3V0aW5l LT5hbWluc2VydCA9IHN0aXJpbnNlcnQ7CisJYW1yb3V0aW5lLT5hbWluc2VydGNsZWFudXAgPSBO VUxMOworCWFtcm91dGluZS0+YW1idWxrZGVsZXRlID0gc3RpcmJ1bGtkZWxldGU7CisJYW1yb3V0 aW5lLT5hbXZhY3V1bWNsZWFudXAgPSBzdGlydmFjdXVtY2xlYW51cDsKKwlhbXJvdXRpbmUtPmFt Y2FucmV0dXJuID0gTlVMTDsKKwlhbXJvdXRpbmUtPmFtY29zdGVzdGltYXRlID0gc3RpcmNvc3Rl c3RpbWF0ZTsKKwlhbXJvdXRpbmUtPmFtb3B0aW9ucyA9IHN0aXJvcHRpb25zOworCWFtcm91dGlu ZS0+YW1wcm9wZXJ0eSA9IE5VTEw7CisJYW1yb3V0aW5lLT5hbWJ1aWxkcGhhc2VuYW1lID0gTlVM TDsKKwlhbXJvdXRpbmUtPmFtdmFsaWRhdGUgPSBzdGlydmFsaWRhdGU7CisJYW1yb3V0aW5lLT5h bWFkanVzdG1lbWJlcnMgPSBOVUxMOworCWFtcm91dGluZS0+YW1iZWdpbnNjYW4gPSBzdGlyYmVn aW5zY2FuOworCWFtcm91dGluZS0+YW1yZXNjYW4gPSBzdGlycmVzY2FuOworCWFtcm91dGluZS0+ YW1nZXR0dXBsZSA9IE5VTEw7CisJYW1yb3V0aW5lLT5hbWdldGJpdG1hcCA9IE5VTEw7CisJYW1y b3V0aW5lLT5hbWVuZHNjYW4gPSBzdGlyZW5kc2NhbjsKKwlhbXJvdXRpbmUtPmFtbWFya3BvcyA9 IE5VTEw7CisJYW1yb3V0aW5lLT5hbXJlc3RycG9zID0gTlVMTDsKKwlhbXJvdXRpbmUtPmFtZXN0 aW1hdGVwYXJhbGxlbHNjYW4gPSBOVUxMOworCWFtcm91dGluZS0+YW1pbml0cGFyYWxsZWxzY2Fu ID0gTlVMTDsKKwlhbXJvdXRpbmUtPmFtcGFyYWxsZWxyZXNjYW4gPSBOVUxMOworCisJUEdfUkVU VVJOX1BPSU5URVIoYW1yb3V0aW5lKTsKK30KKworLyoKKyAqIFZhbGlkYXRlcyBvcGVyYXRvciBj bGFzcyBmb3IgU1RJUiBpbmRleC4KKyAqCisgKiBTVElSIGlzIG5vdCBhbiByZWFsIGluZGV4LCBz byB2YWxpZGF0aW8gbWF5IGJlIHNraXBwZWQuCisgKiBCdXQgd2UgZG8gaXQganVzdCBmb3IgY29u c2lzdGVuY3kuCisgKi8KK2Jvb2wKK3N0aXJ2YWxpZGF0ZShPaWQgb3BjbGFzc29pZCkKK3sKKwli b29sIHJlc3VsdCA9IHRydWU7CisJSGVhcFR1cGxlIGNsYXNzdHVwOworCUZvcm1fcGdfb3BjbGFz cyBjbGFzc2Zvcm07CisJT2lkIG9wZmFtaWx5b2lkOworCUhlYXBUdXBsZSBmYW1pbHl0dXA7CisJ Rm9ybV9wZ19vcGZhbWlseSBmYW1pbHlmb3JtOworCWNoYXIgKm9wZmFtaWx5bmFtZTsKKwlDYXRD TGlzdCAqcHJvY2xpc3QsCisJCQkqb3BybGlzdDsKKwlpbnQgaTsKKworCS8qIEZldGNoIG9wY2xh c3MgaW5mb3JtYXRpb24gKi8KKwljbGFzc3R1cCA9IFNlYXJjaFN5c0NhY2hlMShDTEFPSUQsIE9i amVjdElkR2V0RGF0dW0ob3BjbGFzc29pZCkpOworCWlmICghSGVhcFR1cGxlSXNWYWxpZChjbGFz c3R1cCkpCisJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBvcGVyYXRvciBj bGFzcyAldSIsIG9wY2xhc3NvaWQpOworCWNsYXNzZm9ybSA9IChGb3JtX3BnX29wY2xhc3MpIEdF VFNUUlVDVChjbGFzc3R1cCk7CisKKwlvcGZhbWlseW9pZCA9IGNsYXNzZm9ybS0+b3BjZmFtaWx5 OworCisKKwkvKiBGZXRjaCBvcGZhbWlseSBpbmZvcm1hdGlvbiAqLworCWZhbWlseXR1cCA9IFNl YXJjaFN5c0NhY2hlMShPUEZBTUlMWU9JRCwgT2JqZWN0SWRHZXREYXR1bShvcGZhbWlseW9pZCkp OworCWlmICghSGVhcFR1cGxlSXNWYWxpZChmYW1pbHl0dXApKQorCQllbG9nKEVSUk9SLCAiY2Fj aGUgbG9va3VwIGZhaWxlZCBmb3Igb3BlcmF0b3IgZmFtaWx5ICV1Iiwgb3BmYW1pbHlvaWQpOwor CWZhbWlseWZvcm0gPSAoRm9ybV9wZ19vcGZhbWlseSkgR0VUU1RSVUNUKGZhbWlseXR1cCk7CisK KwlvcGZhbWlseW5hbWUgPSBOYW1lU3RyKGZhbWlseWZvcm0tPm9wZm5hbWUpOworCisJLyogRmV0 Y2ggYWxsIG9wZXJhdG9ycyBhbmQgc3VwcG9ydCBmdW5jdGlvbnMgb2YgdGhlIG9wZmFtaWx5ICov CisJb3BybGlzdCA9IFNlYXJjaFN5c0NhY2hlTGlzdDEoQU1PUFNUUkFURUdZLCBPYmplY3RJZEdl dERhdHVtKG9wZmFtaWx5b2lkKSk7CisJcHJvY2xpc3QgPSBTZWFyY2hTeXNDYWNoZUxpc3QxKEFN UFJPQ05VTSwgT2JqZWN0SWRHZXREYXR1bShvcGZhbWlseW9pZCkpOworCisJLyogQ2hlY2sgaW5k aXZpZHVhbCBvcGVyYXRvcnMgKi8KKwlmb3IgKGkgPSAwOyBpIDwgb3BybGlzdC0+bl9tZW1iZXJz OyBpKyspCisJeworCQlIZWFwVHVwbGUgb3BydHVwID0gJm9wcmxpc3QtPm1lbWJlcnNbaV0tPnR1 cGxlOworCQlGb3JtX3BnX2Ftb3Agb3ByZm9ybSA9IChGb3JtX3BnX2Ftb3ApIEdFVFNUUlVDVChv cHJ0dXApOworCisJCS8qIENoZWNrIGl0J3MgYWxsb3dlZCBzdHJhdGVneSBmb3Igc3RpciAqLwor CQlpZiAob3ByZm9ybS0+YW1vcHN0cmF0ZWd5IDwgMSB8fAorCQkJb3ByZm9ybS0+YW1vcHN0cmF0 ZWd5ID4gU1RJUl9OU1RSQVRFR0lFUykKKwkJeworCQkJZXJlcG9ydChJTkZPLAorCQkJCQkoZXJy Y29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCQkJCWVycm1zZygi c3RpciBvcGZhbWlseSAlcyBjb250YWlucyBvcGVyYXRvciAlcyB3aXRoIGludmFsaWQgc3RyYXRl Z3kgbnVtYmVyICVkIiwKKwkJCQkJCQkJICAgb3BmYW1pbHluYW1lLAorCQkJCQkJCQkgICBmb3Jt YXRfb3BlcmF0b3Iob3ByZm9ybS0+YW1vcG9wciksCisJCQkJCQkJCSAgIG9wcmZvcm0tPmFtb3Bz dHJhdGVneSkpKTsKKwkJCXJlc3VsdCA9IGZhbHNlOworCQl9CisKKwkJLyogc3RpciBkb2Vzbid0 IHN1cHBvcnQgT1JERVIgQlkgb3BlcmF0b3JzICovCisJCWlmIChvcHJmb3JtLT5hbW9wcHVycG9z ZSAhPSBBTU9QX1NFQVJDSCB8fAorCQkJT2lkSXNWYWxpZChvcHJmb3JtLT5hbW9wc29ydGZhbWls eSkpCisJCXsKKwkJCWVyZXBvcnQoSU5GTywKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElE X09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQkJCQllcnJtc2coInN0aXIgb3BmYW1pbHkgJXMgY29u dGFpbnMgaW52YWxpZCBPUkRFUiBCWSBzcGVjaWZpY2F0aW9uIGZvciBvcGVyYXRvciAlcyIsCisJ CQkJCQkJCSAgIG9wZmFtaWx5bmFtZSwKKwkJCQkJCQkJICAgZm9ybWF0X29wZXJhdG9yKG9wcmZv cm0tPmFtb3BvcHIpKSkpOworCQkJcmVzdWx0ID0gZmFsc2U7CisJCX0KKworCQkvKiBDaGVjayBv cGVyYXRvciBzaWduYXR1cmUgLS0tIHNhbWUgZm9yIGFsbCBzdGlyIHN0cmF0ZWdpZXMgKi8KKwkJ aWYgKCFjaGVja19hbW9wX3NpZ25hdHVyZShvcHJmb3JtLT5hbW9wb3ByLCBCT09MT0lELAorCQkJ CQkJCQkgIG9wcmZvcm0tPmFtb3BsZWZ0dHlwZSwKKwkJCQkJCQkJICBvcHJmb3JtLT5hbW9wcmln aHR0eXBlKSkKKwkJeworCQkJZXJlcG9ydChJTkZPLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0lO VkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCQkJCWVycm1zZygic3RpciBvcGZhbWlseSAl cyBjb250YWlucyBvcGVyYXRvciAlcyB3aXRoIHdyb25nIHNpZ25hdHVyZSIsCisJCQkJCQkJCSAg IG9wZmFtaWx5bmFtZSwKKwkJCQkJCQkJICAgZm9ybWF0X29wZXJhdG9yKG9wcmZvcm0tPmFtb3Bv cHIpKSkpOworCQkJcmVzdWx0ID0gZmFsc2U7CisJCX0KKwl9CisKKworCVJlbGVhc2VDYXRDYWNo ZUxpc3QocHJvY2xpc3QpOworCVJlbGVhc2VDYXRDYWNoZUxpc3Qob3BybGlzdCk7CisJUmVsZWFz ZVN5c0NhY2hlKGZhbWlseXR1cCk7CisJUmVsZWFzZVN5c0NhY2hlKGNsYXNzdHVwKTsKKworCXJl dHVybiByZXN1bHQ7Cit9CisKKworLyoKKyAqIEluaXRpYWxpemUgbWV0YXBhZ2Ugb2YgYSBTVElS IGluZGV4LgorICogVGhlIHNraXBJbnNlcnRzIGZsYWcgZGV0ZXJtaW5lcyBpZiBuZXcgaW5zZXJ0 cyB3aWxsIGJlIGFjY2VwdGVkIG9yIHNraXBwZWQuCisgKi8KK3ZvaWQKK1N0aXJGaWxsTWV0YXBh Z2UoUmVsYXRpb24gaW5kZXgsIFBhZ2UgbWV0YVBhZ2UsIGJvb2wgc2tpcEluc2VydHMpCit7CisJ U3Rpck1ldGFQYWdlRGF0YSAqbWV0YWRhdGE7CisKKwlTdGlySW5pdFBhZ2UobWV0YVBhZ2UsIFNU SVJfTUVUQSk7CisJbWV0YWRhdGEgPSBTdGlyUGFnZUdldE1ldGEobWV0YVBhZ2UpOworCW1lbXNl dChtZXRhZGF0YSwgMCwgc2l6ZW9mKFN0aXJNZXRhUGFnZURhdGEpKTsKKwltZXRhZGF0YS0+bWFn aWNrTnVtYmVyID0gU1RJUl9NQUdJQ0tfTlVNQkVSOworCW1ldGFkYXRhLT5za2lwSW5zZXJ0cyA9 IHNraXBJbnNlcnRzOworCSgoUGFnZUhlYWRlcikgbWV0YVBhZ2UpLT5wZF9sb3dlciArPSBzaXpl b2YoU3Rpck1ldGFQYWdlRGF0YSk7Cit9CisKKy8qCisgKiBDcmVhdGUgYW5kIGluaXRpYWxpemUg dGhlIG1ldGFwYWdlIGZvciBhIFNUSVIgaW5kZXguCisgKiBUaGlzIGlzIGNhbGxlZCBkdXJpbmcg aW5kZXggY3JlYXRpb24uCisgKi8KK3ZvaWQKK1N0aXJJbml0TWV0YXBhZ2UoUmVsYXRpb24gaW5k ZXgsIEZvcmtOdW1iZXIgZm9ya251bSkKK3sKKwlCdWZmZXIgbWV0YUJ1ZmZlcjsKKwlQYWdlIG1l dGFQYWdlOworCisJQXNzZXJ0KCFSZWxhdGlvbk5lZWRzV0FMKGluZGV4KSk7CisJLyoKKwkgKiBN YWtlIGEgbmV3IHBhZ2U7IHNpbmNlIGl0IGlzIGZpcnN0IHBhZ2UgaXQgc2hvdWxkIGJlIGFzc29j aWF0ZWQgd2l0aAorCSAqIGJsb2NrIG51bWJlciAwIChTVElSX01FVEFQQUdFX0JMS05PKS4gIE5v IG5lZWQgdG8gaG9sZCB0aGUgZXh0ZW5zaW9uCisJICogbG9jayBiZWNhdXNlIHRoZXJlIGNhbm5v dCBiZSBjb25jdXJyZW50IGluc2VydGVycyB5ZXQuCisJICovCisJbWV0YUJ1ZmZlciA9IFJlYWRC dWZmZXJFeHRlbmRlZChpbmRleCwgZm9ya251bSwgUF9ORVcsIFJCTV9OT1JNQUwsIE5VTEwpOwor CVNUQVJUX0NSSVRfU0VDVElPTigpOworCUxvY2tCdWZmZXIobWV0YUJ1ZmZlciwgQlVGRkVSX0xP Q0tfRVhDTFVTSVZFKTsKKwlBc3NlcnQoQnVmZmVyR2V0QmxvY2tOdW1iZXIobWV0YUJ1ZmZlcikg PT0gU1RJUl9NRVRBUEFHRV9CTEtOTyk7CisKKwltZXRhUGFnZSA9ICBCdWZmZXJHZXRQYWdlKG1l dGFCdWZmZXIpOworCVN0aXJGaWxsTWV0YXBhZ2UoaW5kZXgsIG1ldGFQYWdlLCBmb3JrbnVtID09 IElOSVRfRk9SS05VTSk7CisKKwlNYXJrQnVmZmVyRGlydHkobWV0YUJ1ZmZlcik7CisJRU5EX0NS SVRfU0VDVElPTigpOworCVVubG9ja1JlbGVhc2VCdWZmZXIobWV0YUJ1ZmZlcik7Cit9CisKKy8q CisgKiBJbml0aWFsaXplIGFueSBwYWdlIG9mIGEgc3RpciBpbmRleC4KKyAqLwordm9pZAorU3Rp ckluaXRQYWdlKFBhZ2UgcGFnZSwgdWludDE2IGZsYWdzKQoreworCVN0aXJQYWdlT3BhcXVlIG9w YXF1ZTsKKworCVBhZ2VJbml0KHBhZ2UsIEJMQ0tTWiwgc2l6ZW9mKFN0aXJQYWdlT3BhcXVlRGF0 YSkpOworCisJb3BhcXVlID0gU3RpclBhZ2VHZXRPcGFxdWUocGFnZSk7CisJb3BhcXVlLT5mbGFn cyA9IGZsYWdzOworCW9wYXF1ZS0+c3Rpcl9wYWdlX2lkID0gU1RJUl9QQUdFX0lEOworfQorCisv KgorICogQWRkIGEgdHVwbGUgdG8gYSBTVElSIHBhZ2UuIFJldHVybnMgZmFsc2UgaWYgdHVwbGUg ZG9lc24ndCBmaXQuCisgKiBUaGUgdHVwbGUgaXMgYWRkZWQgdG8gdGhlIGVuZCBvZiB0aGUgcGFn ZS4KKyAqLworc3RhdGljIGJvb2wKK1N0aXJQYWdlQWRkSXRlbShQYWdlIHBhZ2UsIFN0aXJUdXBs ZSAqdHVwbGUpCit7CisJU3RpclR1cGxlICppdHVwOworCVN0aXJQYWdlT3BhcXVlIG9wYXF1ZTsK KwlQb2ludGVyIHB0cjsKKworCS8qIFdlIHNob3VsZG4ndCBiZSBwb2ludGVkIHRvIGFuIGludmFs aWQgcGFnZSAqLworCUFzc2VydCghUGFnZUlzTmV3KHBhZ2UpKTsKKworCS8qIERvZXMgbmV3IHR1 cGxlIGZpdCBvbiB0aGUgcGFnZT8gKi8KKwlpZiAoU3RpclBhZ2VHZXRGcmVlU3BhY2Uoc3RhdGUs IHBhZ2UpIDwgc2l6ZW9mKFN0aXJUdXBsZSkpCisJCXJldHVybiBmYWxzZTsKKworCS8qIENvcHkg bmV3IHR1cGxlIHRvIHRoZSBlbmQgb2YgcGFnZSAqLworCW9wYXF1ZSA9IFN0aXJQYWdlR2V0T3Bh cXVlKHBhZ2UpOworCWl0dXAgPSBTdGlyUGFnZUdldFR1cGxlKHBhZ2UsIG9wYXF1ZS0+bWF4b2Zm ICsgMSk7CisJbWVtY3B5KChQb2ludGVyKSBpdHVwLCAoUG9pbnRlcikgdHVwbGUsIHNpemVvZihT dGlyVHVwbGUpKTsKKworCS8qIEFkanVzdCBtYXhvZmYgYW5kIHBkX2xvd2VyICovCisJb3BhcXVl LT5tYXhvZmYrKzsKKwlwdHIgPSAoUG9pbnRlcikgU3RpclBhZ2VHZXRUdXBsZShwYWdlLCBvcGFx dWUtPm1heG9mZiArIDEpOworCSgoUGFnZUhlYWRlcikgcGFnZSktPnBkX2xvd2VyID0gcHRyIC0g cGFnZTsKKworCS8qIEFzc2VydCB3ZSBkaWRuJ3Qgb3ZlcnJ1biBhdmFpbGFibGUgc3BhY2UgKi8K KwlBc3NlcnQoKChQYWdlSGVhZGVyKSBwYWdlKS0+cGRfbG93ZXIgPD0gKChQYWdlSGVhZGVyKSBw YWdlKS0+cGRfdXBwZXIpOworCXJldHVybiB0cnVlOworfQorCisvKgorICogSW5zZXJ0IGEgbmV3 IHR1cGxlIGludG8gYSBTVElSIGluZGV4LgorICovCitib29sCitzdGlyaW5zZXJ0KFJlbGF0aW9u IGluZGV4LCBEYXR1bSAqdmFsdWVzLCBib29sICppc251bGwsCisJCSAgSXRlbVBvaW50ZXIgaHRf Y3RpZCwgUmVsYXRpb24gaGVhcFJlbCwKKwkJICBJbmRleFVuaXF1ZUNoZWNrIGNoZWNrVW5pcXVl LAorCQkgIGJvb2wgaW5kZXhVbmNoYW5nZWQsCisJCSAgc3RydWN0IEluZGV4SW5mbyAqaW5kZXhJ bmZvKQoreworCVN0aXJUdXBsZSAqaXR1cDsKKwlNZW1vcnlDb250ZXh0IG9sZEN0eDsKKwlNZW1v cnlDb250ZXh0IGluc2VydEN0eDsKKwlTdGlyTWV0YVBhZ2VEYXRhICptZXRhRGF0YTsKKwlCdWZm ZXIgYnVmZmVyLAorCQkJbWV0YUJ1ZmZlcjsKKwlQYWdlIHBhZ2U7CisJdWludDE2IGJsa05vOwor CisJLyogQ3JlYXRlIHRlbXBvcmFyeSBjb250ZXh0IGZvciBpbnNlcnQgb3BlcmF0aW9uICovCisJ aW5zZXJ0Q3R4ID0gQWxsb2NTZXRDb250ZXh0Q3JlYXRlKEN1cnJlbnRNZW1vcnlDb250ZXh0LAor CQkJCQkJCQkJICAiU3RpciBpbnNlcnQgdGVtcG9yYXJ5IGNvbnRleHQiLAorCQkJCQkJCQkJICBB TExPQ1NFVF9ERUZBVUxUX1NJWkVTKTsKKworCW9sZEN0eCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hU byhpbnNlcnRDdHgpOworCisJLyogQ3JlYXRlIG5ldyB0dXBsZSB3aXRoIGhlYXAgcG9pbnRlciAq LworCWl0dXAgPSAoU3RpclR1cGxlICopIHBhbGxvYzAoc2l6ZW9mKFN0aXJUdXBsZSkpOworCWl0 dXAtPmhlYXBQdHIgPSAqaHRfY3RpZDsKKworCUFzc2VydCghUmVsYXRpb25OZWVkc1dBTChpbmRl eCkpOworCW1ldGFCdWZmZXIgPSBSZWFkQnVmZmVyKGluZGV4LCBTVElSX01FVEFQQUdFX0JMS05P KTsKKworCWZvciAoOzspCisJeworCQlMb2NrQnVmZmVyKG1ldGFCdWZmZXIsIEJVRkZFUl9MT0NL X1NIQVJFKTsKKwkJbWV0YURhdGEgPSBTdGlyUGFnZUdldE1ldGEoQnVmZmVyR2V0UGFnZShtZXRh QnVmZmVyKSk7CisJCS8qIENoZWNrIGlmIGluc2VydHMgYXJlIGFsbG93ZWQgKi8KKwkJaWYgKG1l dGFEYXRhLT5za2lwSW5zZXJ0cykKKwkJeworCQkJVW5sb2NrUmVsZWFzZUJ1ZmZlcihtZXRhQnVm ZmVyKTsKKwkJCXJldHVybiBmYWxzZTsKKwkJfQorCQlibGtObyA9IG1ldGFEYXRhLT5sYXN0Qmxr Tm87CisJCS8qIERvbid0IGhvbGQgbWV0YWJ1ZmZlciBsb2NrIHdoaWxlIGRvaW5nIGluc2VydCAq LworCQlMb2NrQnVmZmVyKG1ldGFCdWZmZXIsIEJVRkZFUl9MT0NLX1VOTE9DSyk7CisKKwkJaWYg KGJsa05vID4gMCkKKwkJeworCQkJYnVmZmVyID0gUmVhZEJ1ZmZlcihpbmRleCwgYmxrTm8pOwor CQkJTG9ja0J1ZmZlcihidWZmZXIsIEJVRkZFUl9MT0NLX0VYQ0xVU0lWRSk7CisJCQlTVEFSVF9D UklUX1NFQ1RJT04oKTsKKworCQkJcGFnZSA9IEJ1ZmZlckdldFBhZ2UoYnVmZmVyKTsKKworCQkJ QXNzZXJ0KCFQYWdlSXNOZXcocGFnZSkpOworCisJCQkvKiBUcnkgdG8gYWRkIHR1cGxlIHRvIGV4 aXN0aW5nIHBhZ2UgKi8KKwkJCWlmIChTdGlyUGFnZUFkZEl0ZW0ocGFnZSwgaXR1cCkpCisJCQl7 CisJCQkJLyogU3VjY2VzcyEgIEFwcGx5IHRoZSBjaGFuZ2UsIGNsZWFuIHVwLCBhbmQgZXhpdCAq LworCQkJCU1hcmtCdWZmZXJEaXJ0eShidWZmZXIpOworCQkJCUVORF9DUklUX1NFQ1RJT04oKTsK KworCQkJCVVubG9ja1JlbGVhc2VCdWZmZXIoYnVmZmVyKTsKKwkJCQlSZWxlYXNlQnVmZmVyKG1l dGFCdWZmZXIpOworCQkJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRDdHgpOworCQkJCU1lbW9y eUNvbnRleHREZWxldGUoaW5zZXJ0Q3R4KTsKKwkJCQlyZXR1cm4gZmFsc2U7CisJCQl9CisKKwkJ CUVORF9DUklUX1NFQ1RJT04oKTsKKwkJCVVubG9ja1JlbGVhc2VCdWZmZXIoYnVmZmVyKTsKKwkJ fQorCisJCS8qIE5lZWQgdG8gYWRkIG5ldyBwYWdlIC0gZ2V0IGV4Y2x1c2l2ZSBsb2NrIG9uIG1l dGEgcGFnZSAqLworCQlMb2NrQnVmZmVyKG1ldGFCdWZmZXIsIEJVRkZFUl9MT0NLX0VYQ0xVU0lW RSk7CisKKwkJbWV0YURhdGEgPSBTdGlyUGFnZUdldE1ldGEoQnVmZmVyR2V0UGFnZShtZXRhQnVm ZmVyKSk7CisJCS8qIENoZWNrIGlmIGFub3RoZXIgYmFja2VuZCBhbHJlYWR5IGV4dGVuZGVkIHRo ZSBpbmRleCAqLworCisJCWlmIChibGtObyAhPSBtZXRhRGF0YS0+bGFzdEJsa05vKQorCQl7CisJ CQlBc3NlcnQoYmxrTm8gPCBtZXRhRGF0YS0+bGFzdEJsa05vKTsKKwkJCS8qIFNvbWVvbmUgZWxz ZSBpbnNlcnRlZCB0aGUgbmV3IHBhZ2UgaW50byB0aGUgaW5kZXgsIGxldHMgdHJ5IGFnYWluICov CisJCQlMb2NrQnVmZmVyKG1ldGFCdWZmZXIsIEJVRkZFUl9MT0NLX1VOTE9DSyk7CisJCQljb250 aW51ZTsKKwkJfQorCQllbHNlCisJCXsKKwkJCS8qIE11c3QgZXh0ZW5kIHRoZSBmaWxlICovCisJ CQlidWZmZXIgPSBFeHRlbmRCdWZmZXJlZFJlbChCTVJfUkVMKGluZGV4KSwgTUFJTl9GT1JLTlVN LCBOVUxMLAorCQkJCQkJCQkJICAgRUJfTE9DS19GSVJTVCk7CisJCQlwYWdlID0gQnVmZmVyR2V0 UGFnZShidWZmZXIpOworCQkJU1RBUlRfQ1JJVF9TRUNUSU9OKCk7CisKKwkJCVN0aXJJbml0UGFn ZShwYWdlLCAwKTsKKworCQkJaWYgKCFTdGlyUGFnZUFkZEl0ZW0ocGFnZSwgaXR1cCkpCisJCQl7 CisJCQkJLyogV2Ugc2hvdWxkbid0IGJlIGhlcmUgc2luY2Ugd2UncmUgaW5zZXJ0aW5nIHRvIGFu IGVtcHR5IHBhZ2UgKi8KKwkJCQllbG9nKEVSUk9SLCAiY291bGQgbm90IGFkZCBuZXcgc3RpciB0 dXBsZSB0byBlbXB0eSBwYWdlIik7CisJCQl9CisKKwkJCS8qIFVwZGF0ZSBtZXRhIHBhZ2Ugd2l0 aCBuZXcgbGFzdCBibG9jayBudW1iZXIgKi8KKwkJCW1ldGFEYXRhLT5sYXN0QmxrTm8gPSBCdWZm ZXJHZXRCbG9ja051bWJlcihidWZmZXIpOworCisJCQlNYXJrQnVmZmVyRGlydHkobWV0YUJ1ZmZl cik7CisJCQlNYXJrQnVmZmVyRGlydHkoYnVmZmVyKTsKKworCQkJRU5EX0NSSVRfU0VDVElPTigp OworCisJCQlVbmxvY2tSZWxlYXNlQnVmZmVyKGJ1ZmZlcik7CisJCQlVbmxvY2tSZWxlYXNlQnVm ZmVyKG1ldGFCdWZmZXIpOworCisJCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkQ3R4KTsKKwkJ CU1lbW9yeUNvbnRleHREZWxldGUoaW5zZXJ0Q3R4KTsKKworCQkJcmV0dXJuIGZhbHNlOworCQl9 CisJfQorfQorCisvKgorICogU1RJUiBkb2Vzbid0IHN1cHBvcnQgc2NhbnMgLSB0aGVzZSBmdW5j dGlvbnMgYWxsIGVycm9yIG91dAorICovCitJbmRleFNjYW5EZXNjIHN0aXJiZWdpbnNjYW4oUmVs YXRpb24gciwgaW50IG5rZXlzLCBpbnQgbm9yZGVyYnlzKQoreworCWVyZXBvcnQoRVJST1IsIChl cnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwgZXJybXNnKCJcIiVzXCIgaXMg bm90IGEgbm90IGltcGxlbWVudGVkIiwgX19mdW5jX18pKSk7Cit9CisKK3ZvaWQKK3N0aXJyZXNj YW4oSW5kZXhTY2FuRGVzYyBzY2FuLCBTY2FuS2V5IHNjYW5rZXksIGludCBuc2NhbmtleXMsCisJ CSAgU2NhbktleSBvcmRlcmJ5cywgaW50IG5vcmRlcmJ5cykKK3sKKwllcmVwb3J0KEVSUk9SLCAo ZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksIGVycm1zZygiXCIlc1wiIGlz IG5vdCBhIG5vdCBpbXBsZW1lbnRlZCIsIF9fZnVuY19fKSkpOworfQorCit2b2lkIHN0aXJlbmRz Y2FuKEluZGV4U2NhbkRlc2Mgc2NhbikKK3sKKwllcmVwb3J0KEVSUk9SLCAoZXJyY29kZShFUlJD T0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksIGVycm1zZygiXCIlc1wiIGlzIG5vdCBhIG5vdCBp bXBsZW1lbnRlZCIsIF9fZnVuY19fKSkpOworfQorCisvKgorICogQnVpbGQgYSBTVElSIGluZGV4 IC0gb25seSBhbGxvd2VkIGZvciBhdXhpbGlhcnkgaW5kZXhlcy4KKyAqIEp1c3QgaW5pdGlhbGl6 ZXMgdGhlIG1ldGEgcGFnZSB3aXRob3V0IGFueSBoZWFwIHNjYW5zLgorICovCitJbmRleEJ1aWxk UmVzdWx0ICpzdGlyYnVpbGQoUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCisJCQkJCQkg ICBzdHJ1Y3QgSW5kZXhJbmZvICppbmRleEluZm8pCit7CisJSW5kZXhCdWlsZFJlc3VsdCAqcmVz dWx0OworCisJaWYgKCFpbmRleEluZm8tPmlpX0F1eGlsaWFyeSkKKwkJZXJlcG9ydChFUlJPUiwg KGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLCBlcnJtc2coIlNUSVIgaW5k ZXhlcyBhcmUgbm90IHN1cHBvcnRlZCB0byBiZSBidWlsdCIpKSk7CisKKwlTdGlySW5pdE1ldGFw YWdlKGluZGV4LCBNQUlOX0ZPUktOVU0pOworCisJcmVzdWx0ID0gKEluZGV4QnVpbGRSZXN1bHQg KikgcGFsbG9jKHNpemVvZihJbmRleEJ1aWxkUmVzdWx0KSk7CisJcmVzdWx0LT5oZWFwX3R1cGxl cyA9IDA7CisJcmVzdWx0LT5pbmRleF90dXBsZXMgPSAwOworCXJldHVybiByZXN1bHQ7Cit9CisK K3ZvaWQgc3RpcmJ1aWxkZW1wdHkoUmVsYXRpb24gaW5kZXgpCit7CisJU3RpckluaXRNZXRhcGFn ZShpbmRleCwgSU5JVF9GT1JLTlVNKTsKK30KKworSW5kZXhCdWxrRGVsZXRlUmVzdWx0ICpzdGly YnVsa2RlbGV0ZShJbmRleFZhY3V1bUluZm8gKmluZm8sCisJCQkJCQkJCQkgSW5kZXhCdWxrRGVs ZXRlUmVzdWx0ICpzdGF0cywKKwkJCQkJCQkJCSBJbmRleEJ1bGtEZWxldGVDYWxsYmFjayBjYWxs YmFjaywKKwkJCQkJCQkJCSB2b2lkICpjYWxsYmFja19zdGF0ZSkKK3sKKwlSZWxhdGlvbiBpbmRl eCA9IGluZm8tPmluZGV4OworCUJsb2NrTnVtYmVyIGJsa25vLCBucGFnZXM7CisJQnVmZmVyIGJ1 ZmZlcjsKKwlQYWdlIHBhZ2U7CisKKwkvKiBGb3Igbm9ybWFsIFZBQ1VVTSwgbWFyayB0byBza2lw IGluc2VydHMgYW5kIHdhcm4gYWJvdXQgaW5kZXggZHJvcCBuZWVkZWQgKi8KKwlpZiAoIWluZm8t PnZhbGlkYXRlX2luZGV4KQorCXsKKwkJU3Rpck1hcmtBc1NraXBJbnNlcnRzKGluZGV4KTsKKwor CQllcmVwb3J0KFdBUk5JTkcsIChlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVE KSwKKwkJCQllcnJtc2coIlwiJXNcIiBpcyBub3QgYSBub3QgaW1wbGVtZW50ZWQsIHNlZW1zIGxp a2UgdGhpcyBpbmRleCBuZWVkIHRvIGJlIGRyb3BwZWQiLCBfX2Z1bmNfXykpKTsKKwkJcmV0dXJu IE5VTEw7CisJfQorCisJaWYgKHN0YXRzID09IE5VTEwpCisJCXN0YXRzID0gKEluZGV4QnVsa0Rl bGV0ZVJlc3VsdCAqKSBwYWxsb2MwKHNpemVvZihJbmRleEJ1bGtEZWxldGVSZXN1bHQpKTsKKwor CS8qCisJICogSXRlcmF0ZSBvdmVyIHRoZSBwYWdlcy4gV2UgZG9uJ3QgY2FyZSBhYm91dCBjb25j dXJyZW50bHkgYWRkZWQgcGFnZXMsCisJICogYmVjYXVzZSBpbmRleCBpcyBtYXJrZWQgYXMgbm90 LXJlYWR5IGZvciB0aGF0IG1vbW1lbnQgYW5kIGluZGV4IG5vdAorCSAqIHVzZWQgZm9yIGluc2Vy dC4KKwkgKi8KKwlucGFnZXMgPSBSZWxhdGlvbkdldE51bWJlck9mQmxvY2tzKGluZGV4KTsKKwlm b3IgKGJsa25vID0gU1RJUl9IRUFEX0JMS05POyBibGtubyA8IG5wYWdlczsgYmxrbm8rKykKKwl7 CisJCVN0aXJUdXBsZSAqaXR1cCwgKml0dXBFbmQ7CisKKwkJdmFjdXVtX2RlbGF5X3BvaW50KGZh bHNlKTsKKworCQlidWZmZXIgPSBSZWFkQnVmZmVyRXh0ZW5kZWQoaW5kZXgsIE1BSU5fRk9SS05V TSwgYmxrbm8sCisJCQkJCQkJCQlSQk1fTk9STUFMLCBpbmZvLT5zdHJhdGVneSk7CisKKwkJTG9j a0J1ZmZlcihidWZmZXIsIEJVRkZFUl9MT0NLX1NIQVJFKTsKKwkJcGFnZSA9IEJ1ZmZlckdldFBh Z2UoYnVmZmVyKTsKKworCQlpZiAoUGFnZUlzTmV3KHBhZ2UpKQorCQl7CisJCQlVbmxvY2tSZWxl YXNlQnVmZmVyKGJ1ZmZlcik7CisJCQljb250aW51ZTsKKwkJfQorCisJCWl0dXAgPSBTdGlyUGFn ZUdldFR1cGxlKHBhZ2UsIEZpcnN0T2Zmc2V0TnVtYmVyKTsKKwkJaXR1cEVuZCA9IFN0aXJQYWdl R2V0VHVwbGUocGFnZSwgT2Zmc2V0TnVtYmVyTmV4dChTdGlyUGFnZUdldE1heE9mZnNldChwYWdl KSkpOworCQl3aGlsZSAoaXR1cCA8IGl0dXBFbmQpCisJCXsKKwkJCS8qIERvIHdlIGhhdmUgdG8g ZGVsZXRlIHRoaXMgdHVwbGU/ICovCisJCQlpZiAoY2FsbGJhY2soJml0dXAtPmhlYXBQdHIsIGNh bGxiYWNrX3N0YXRlKSkKKwkJCXsKKwkJCQllcmVwb3J0KEVSUk9SLCAoZXJyY29kZShFUlJDT0RF X0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksIGVycm1zZygid2UgbmV2ZXIgZGVsZXRlIGluIHN0aXIi KSkpOworCQkJfQorCisJCQlpdHVwID0gU3RpclBhZ2VHZXROZXh0VHVwbGUoaXR1cCk7CisJCX0K KworCQlVbmxvY2tSZWxlYXNlQnVmZmVyKGJ1ZmZlcik7CisJfQorCisJcmV0dXJuIHN0YXRzOwor fQorCisvKgorICogTWFyayBhIFNUSVIgaW5kZXggdG8gc2tpcCBmdXR1cmUgaW5zZXJ0cworICov Cit2b2lkIFN0aXJNYXJrQXNTa2lwSW5zZXJ0cyhSZWxhdGlvbiBpbmRleCkKK3sKKwlTdGlyTWV0 YVBhZ2VEYXRhICptZXRhRGF0YTsKKwlCdWZmZXIgbWV0YUJ1ZmZlcjsKKwlQYWdlIG1ldGFQYWdl OworCisJQXNzZXJ0KCFSZWxhdGlvbk5lZWRzV0FMKGluZGV4KSk7CisJbWV0YUJ1ZmZlciA9IFJl YWRCdWZmZXIoaW5kZXgsIFNUSVJfTUVUQVBBR0VfQkxLTk8pOworCUxvY2tCdWZmZXIobWV0YUJ1 ZmZlciwgQlVGRkVSX0xPQ0tfRVhDTFVTSVZFKTsKKwlTVEFSVF9DUklUX1NFQ1RJT04oKTsKKwor CW1ldGFQYWdlID0gQnVmZmVyR2V0UGFnZShtZXRhQnVmZmVyKTsKKwltZXRhRGF0YSA9IFN0aXJQ YWdlR2V0TWV0YShtZXRhUGFnZSk7CisKKwlpZiAoIW1ldGFEYXRhLT5za2lwSW5zZXJ0cykKKwl7 CisJCW1ldGFEYXRhLT5za2lwSW5zZXJ0cyA9IHRydWU7CisJCU1hcmtCdWZmZXJEaXJ0eShtZXRh QnVmZmVyKTsKKwl9CisJVW5sb2NrUmVsZWFzZUJ1ZmZlcihtZXRhQnVmZmVyKTsKK30KKworSW5k ZXhCdWxrRGVsZXRlUmVzdWx0ICpzdGlydmFjdXVtY2xlYW51cChJbmRleFZhY3V1bUluZm8gKmlu Zm8sCisJCQkJCQkJCQkJSW5kZXhCdWxrRGVsZXRlUmVzdWx0ICpzdGF0cykKK3sKKwlTdGlyTWFy a0FzU2tpcEluc2VydHMoaW5mby0+aW5kZXgpOworCWVyZXBvcnQoV0FSTklORywgKGVycmNvZGUo RVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJZXJybXNnKCJcIiVzXCIgaXMgbm90 IGEgbm90IGltcGxlbWVudGVkLCBzZWVtcyBsaWtlIHRoaXMgaW5kZXggbmVlZCB0byBiZSBkcm9w cGVkIiwgX19mdW5jX18pKSk7CisJcmV0dXJuIE5VTEw7Cit9CisKK2J5dGVhICpzdGlyb3B0aW9u cyhEYXR1bSByZWxvcHRpb25zLCBib29sIHZhbGlkYXRlKQoreworCXJldHVybiBOVUxMOworfQor Cit2b2lkIHN0aXJjb3N0ZXN0aW1hdGUoUGxhbm5lckluZm8gKnJvb3QsIEluZGV4UGF0aCAqcGF0 aCwKKwkJCQkJIGRvdWJsZSBsb29wX2NvdW50LCBDb3N0ICppbmRleFN0YXJ0dXBDb3N0LAorCQkJ CQkgQ29zdCAqaW5kZXhUb3RhbENvc3QsIFNlbGVjdGl2aXR5ICppbmRleFNlbGVjdGl2aXR5LAor CQkJCQkgZG91YmxlICppbmRleENvcnJlbGF0aW9uLCBkb3VibGUgKmluZGV4UGFnZXMpCit7CisJ ZXJlcG9ydChFUlJPUiwgKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLCBl cnJtc2coIlwiJXNcIiBpcyBub3QgYSBub3QgaW1wbGVtZW50ZWQiLCBfX2Z1bmNfXykpKTsKK30K XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRh bG9nL2luZGV4LmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKaW5kZXggNTNiZTEyNjlh ZmYuLjNlMjc1MmMwMjg1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMK KysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCkBAIC0zNDA2LDYgKzM0MDYsNyBAQCB2 YWxpZGF0ZV9pbmRleChPaWQgaGVhcElkLCBPaWQgaW5kZXhJZCwgU25hcHNob3Qgc25hcHNob3Qp CiAJaXZpbmZvLm1lc3NhZ2VfbGV2ZWwgPSBERUJVRzI7CiAJaXZpbmZvLm51bV9oZWFwX3R1cGxl cyA9IGhlYXBSZWxhdGlvbi0+cmRfcmVsLT5yZWx0dXBsZXM7CiAJaXZpbmZvLnN0cmF0ZWd5ID0g TlVMTDsKKwlpdmluZm8udmFsaWRhdGVfaW5kZXggPSB0cnVlOwogCiAJLyoKIAkgKiBFbmNvZGUg VElEcyBhcyBpbnQ4IHZhbHVlcyBmb3IgdGhlIHNvcnQsIHJhdGhlciB0aGFuIGRpcmVjdGx5IHNv cnRpbmcKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FuYWx5emUuYyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2FuYWx5emUuYwppbmRleCBjZDc1OTU0OTUxYi4uYWI3YzY3OGJmOWEg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FuYWx5emUuYworKysgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy9hbmFseXplLmMKQEAgLTcyMCw2ICs3MjAsNyBAQCBkb19hbmFseXplX3Jl bChSZWxhdGlvbiBvbmVyZWwsIFZhY3V1bVBhcmFtcyAqcGFyYW1zLAogCQkJaXZpbmZvLm1lc3Nh Z2VfbGV2ZWwgPSBlbGV2ZWw7CiAJCQlpdmluZm8ubnVtX2hlYXBfdHVwbGVzID0gb25lcmVsLT5y ZF9yZWwtPnJlbHR1cGxlczsKIAkJCWl2aW5mby5zdHJhdGVneSA9IHZhY19zdHJhdGVneTsKKwkJ CWl2aW5mby52YWxpZGF0ZV9pbmRleCA9IGZhbHNlOwogCiAJCQlzdGF0cyA9IGluZGV4X3ZhY3V1 bV9jbGVhbnVwKCZpdmluZm8sIE5VTEwpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21t YW5kcy92YWN1dW1wYXJhbGxlbC5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxs ZWwuYwppbmRleCAyYjlkNTQ4Y2RlYi4uMjg2ZmNjY2VjM2QgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv dmFjdXVtcGFyYWxsZWwuYwpAQCAtODg0LDYgKzg4NCw3IEBAIHBhcmFsbGVsX3ZhY3V1bV9wcm9j ZXNzX29uZV9pbmRleChQYXJhbGxlbFZhY3V1bVN0YXRlICpwdnMsIFJlbGF0aW9uIGluZHJlbCwK IAlpdmluZm8uZXN0aW1hdGVkX2NvdW50ID0gcHZzLT5zaGFyZWQtPmVzdGltYXRlZF9jb3VudDsK IAlpdmluZm8ubnVtX2hlYXBfdHVwbGVzID0gcHZzLT5zaGFyZWQtPnJlbHR1cGxlczsKIAlpdmlu Zm8uc3RyYXRlZ3kgPSBwdnMtPmJzdHJhdGVneTsKKwlpdmluZm8udmFsaWRhdGVfaW5kZXggPSBm YWxzZTsKIAogCS8qIFVwZGF0ZSBlcnJvciB0cmFjZWJhY2sgaW5mb3JtYXRpb24gKi8KIAlwdnMt PmluZG5hbWUgPSBwc3RyZHVwKFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKGluZHJlbCkpOwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMvbWFrZWZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rl cy9tYWtlZnVuY3MuYwppbmRleCAwMDc2MTI1NjNjYS4uYTUwYWZlYWU2NzQgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL25vZGVzL21ha2VmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL21h a2VmdW5jcy5jCkBAIC04MjgsNiArODI4LDcgQEAgbWFrZUluZGV4SW5mbyhpbnQgbnVtYXR0cnMs IGludCBudW1rZXlhdHRycywgT2lkIGFtb2lkLCBMaXN0ICpleHByZXNzaW9ucywKIAkvKiBpbml0 aWFsaXplIGluZGV4LWJ1aWxkIHN0YXRlIHRvIGRlZmF1bHQgKi8KIAluLT5paV9Ccm9rZW5Ib3RD aGFpbiA9IGZhbHNlOwogCW4tPmlpX1BhcmFsbGVsV29ya2VycyA9IDA7CisJbi0+aWlfQXV4aWxp YXJ5ID0gZmFsc2U7CiAKIAkvKiBzZXQgdXAgZm9yIHBvc3NpYmxlIHVzZSBieSBpbmRleCBBTSAq LwogCW4tPmlpX0FtID0gYW1vaWQ7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2Vu YW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9nZW5hbS5oCmluZGV4IDFiZTg3Mzk1NzNmLi40NGY4 YTBkNTYwNiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2dlbmFtLmgKKysrIGIvc3Jj L2luY2x1ZGUvYWNjZXNzL2dlbmFtLmgKQEAgLTUyLDYgKzUyLDcgQEAgdHlwZWRlZiBzdHJ1Y3Qg SW5kZXhWYWN1dW1JbmZvCiAJYm9vbAkJZXN0aW1hdGVkX2NvdW50OwkvKiBudW1faGVhcF90dXBs ZXMgaXMgYW4gZXN0aW1hdGUgKi8KIAlpbnQJCQltZXNzYWdlX2xldmVsOwkvKiBlcmVwb3J0IGxl dmVsIGZvciBwcm9ncmVzcyBtZXNzYWdlcyAqLwogCWRvdWJsZQkJbnVtX2hlYXBfdHVwbGVzOwkv KiB0dXBsZXMgcmVtYWluaW5nIGluIGhlYXAgKi8KKwlib29sCQl2YWxpZGF0ZV9pbmRleDsgLyog dmFsaWRhdGluZyBjb25jdXJyZW50bHkgYnVpbHQgaW5kZXg/ICovCiAJQnVmZmVyQWNjZXNzU3Ry YXRlZ3kgc3RyYXRlZ3k7CS8qIGFjY2VzcyBzdHJhdGVneSBmb3IgcmVhZHMgKi8KIH0gSW5kZXhW YWN1dW1JbmZvOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvcmVsb3B0aW9ucy5o IGIvc3JjL2luY2x1ZGUvYWNjZXNzL3JlbG9wdGlvbnMuaAppbmRleCA0MzQ0NWNkY2M2Yy4uMjZk ZGQ1ZWM1NzcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9yZWxvcHRpb25zLmgKKysr IGIvc3JjL2luY2x1ZGUvYWNjZXNzL3JlbG9wdGlvbnMuaApAQCAtNTEsOCArNTEsOSBAQCB0eXBl ZGVmIGVudW0gcmVsb3B0X2tpbmQKIAlSRUxPUFRfS0lORF9WSUVXID0gKDEgPDwgOSksCiAJUkVM T1BUX0tJTkRfQlJJTiA9ICgxIDw8IDEwKSwKIAlSRUxPUFRfS0lORF9QQVJUSVRJT05FRCA9ICgx IDw8IDExKSwKKwlSRUxPUFRfS0lORF9TVElSID0gKDEgPDwgMTIpLAogCS8qIGlmIHlvdSBhZGQg YSBuZXcga2luZCwgbWFrZSBzdXJlIHlvdSB1cGRhdGUgImxhc3RfZGVmYXVsdCIgdG9vICovCi0J UkVMT1BUX0tJTkRfTEFTVF9ERUZBVUxUID0gUkVMT1BUX0tJTkRfUEFSVElUSU9ORUQsCisJUkVM T1BUX0tJTkRfTEFTVF9ERUZBVUxUID0gUkVMT1BUX0tJTkRfU1RJUiwKIAkvKiBzb21lIGNvbXBp bGVycyB0cmVhdCBlbnVtcyBhcyBzaWduZWQgaW50cywgc28gd2UgY2FuJ3QgdXNlIDEgPDwgMzEg Ki8KIAlSRUxPUFRfS0lORF9NQVggPSAoMSA8PCAzMCkKIH0gcmVsb3B0X2tpbmQ7CmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3Mvc3Rpci5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3N0aXIu aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uOTk0M2M0MmE5N2UKLS0t IC9kZXYvbnVsbAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3Mvc3Rpci5oCkBAIC0wLDAgKzEsMTE3 IEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBzdGlyLmgKKyAqCSAgaGVhZGVyIGZpbGUg Zm9yIHBvc3RncmVzIHN0aXIgYWNjZXNzIG1ldGhvZCBpbXBsZW1lbnRhdGlvbi4KKyAqCisgKgor ICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAyMDI1LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9w bWVudCBHcm91cAorICoKKyAqIHNyYy9pbmNsdWRlL2FjY2Vzcy9zdGlyLmgKKyAqCisgKi0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAqLworI2lmbmRlZiBfU1RJUl9IXworI2RlZmluZSBfU1RJUl9IXworCisj aW5jbHVkZSAiYW1hcGkuaCIKKyNpbmNsdWRlICJ4bG9nLmgiCisjaW5jbHVkZSAiZ2VuZXJpY194 bG9nLmgiCisjaW5jbHVkZSAiaXR1cC5oIgorI2luY2x1ZGUgImZtZ3IuaCIKKyNpbmNsdWRlICJu b2Rlcy9wYXRobm9kZXMuaCIKKworLyogU3VwcG9ydCBwcm9jZWR1cmVzIG51bWJlcnMgKi8KKyNk ZWZpbmUgU1RJUl9OUFJPQwkJCQkwCisKKy8qIFNjYW4gc3RyYXRlZ2llcyAqLworI2RlZmluZSBT VElSX05TVFJBVEVHSUVTCQkxCisKKyNkZWZpbmUgU1RJUl9PUFRJT05TX1BST0MJCQkJMAorCisv KiBNYWNyb3MgZm9yIGFjY2Vzc2luZyBzdGlyIHBhZ2Ugc3RydWN0dXJlcyAqLworI2RlZmluZSBT dGlyUGFnZUdldE9wYXF1ZShwYWdlKSAoKFN0aXJQYWdlT3BhcXVlKSBQYWdlR2V0U3BlY2lhbFBv aW50ZXIocGFnZSkpCisjZGVmaW5lIFN0aXJQYWdlR2V0TWF4T2Zmc2V0KHBhZ2UpIChTdGlyUGFn ZUdldE9wYXF1ZShwYWdlKS0+bWF4b2ZmKQorI2RlZmluZSBTdGlyUGFnZUlzTWV0YShwYWdlKSBc CisJKChTdGlyUGFnZUdldE9wYXF1ZShwYWdlKS0+ZmxhZ3MgJiBTVElSX01FVEEpICE9IDApCisj ZGVmaW5lIFN0aXJQYWdlR2V0RGF0YShwYWdlKQkJKChTdGlyVHVwbGUgKilQYWdlR2V0Q29udGVu dHMocGFnZSkpCisjZGVmaW5lIFN0aXJQYWdlR2V0VHVwbGUocGFnZSwgb2Zmc2V0KSBcCisJKChT dGlyVHVwbGUgKikoUGFnZUdldENvbnRlbnRzKHBhZ2UpIFwKKwkJKyBzaXplb2YoU3RpclR1cGxl KSAqICgob2Zmc2V0KSAtIDEpKSkKKyNkZWZpbmUgU3RpclBhZ2VHZXROZXh0VHVwbGUodHVwbGUp IFwKKwkoKFN0aXJUdXBsZSAqKSgoUG9pbnRlcikodHVwbGUpICsgc2l6ZW9mKFN0aXJUdXBsZSkp KQorCisKKworLyogUHJlc2VydmVkIHBhZ2UgbnVtYmVycyAqLworI2RlZmluZSBTVElSX01FVEFQ QUdFX0JMS05PCSgwKQorI2RlZmluZSBTVElSX0hFQURfQkxLTk8JCSgxKSAvKiBmaXJzdCBkYXRh IHBhZ2UgKi8KKworCisvKiBPcGFxdWUgZm9yIHN0aXIgcGFnZXMgKi8KK3R5cGVkZWYgc3RydWN0 IFN0aXJQYWdlT3BhcXVlRGF0YQoreworCU9mZnNldE51bWJlciBtYXhvZmY7CQkvKiBudW1iZXIg b2YgaW5kZXggdHVwbGVzIG9uIHBhZ2UgKi8KKwl1aW50MTYJCWZsYWdzOwkJCS8qIHNlZSBiaXQg ZGVmaW5pdGlvbnMgYmVsb3cgKi8KKwl1aW50MTYJCXVudXNlZDsJCQkvKiBwbGFjZWhvbGRlciB0 byBmb3JjZSBtYXhhbGlnbmluZyBvZiBzaXplIG9mCisJCQkJCQkJCSAqIFN0aXJQYWdlT3BhcXVl RGF0YSBhbmQgdG8gcGxhY2UKKwkJCQkJCQkJICogc3Rpcl9wYWdlX2lkIGV4YWN0bHkgYXQgdGhl IGVuZCBvZiBwYWdlICovCisJdWludDE2CQlzdGlyX3BhZ2VfaWQ7CS8qIGZvciBpZGVudGlmaWNh dGlvbiBvZiBTVElSIGluZGV4ZXMgKi8KK30gU3RpclBhZ2VPcGFxdWVEYXRhOworCisvKiBTdGly IHBhZ2UgZmxhZ3MgKi8KKyNkZWZpbmUgU1RJUl9NRVRBCQkoMTw8MCkKKwordHlwZWRlZiBTdGly UGFnZU9wYXF1ZURhdGEgKlN0aXJQYWdlT3BhcXVlOworCisjZGVmaW5lIFNUSVJfUEFHRV9JRAkJ MHhGRjg0CisKKy8qIE1ldGFkYXRhIG9mIHN0aXIgaW5kZXggKi8KK3R5cGVkZWYgc3RydWN0IFN0 aXJNZXRhUGFnZURhdGEKK3sKKwl1aW50MzIJCW1hZ2lja051bWJlcjsKKwl1aW50MTYJCWxhc3RC bGtObzsKKwlib29sCQlza2lwSW5zZXJ0czsJLyogc2hvdWxkIHdlIGp1c3QgZXhpdCB3aXRob3V0 IGFueSBpbnNlcnRzICovCit9IFN0aXJNZXRhUGFnZURhdGE7CisKKy8qIE1hZ2ljIG51bWJlciB0 byBkaXN0aW5ndWlzaCBzdGlyIHBhZ2VzIGZyb20gb3RoZXJzICovCisjZGVmaW5lIFNUSVJfTUFH SUNLX05VTUJFUiAoMHhEQkFDMERFRikKKworI2RlZmluZSBTdGlyUGFnZUdldE1ldGEocGFnZSkJ KChTdGlyTWV0YVBhZ2VEYXRhICopIFBhZ2VHZXRDb250ZW50cyhwYWdlKSkKKwordHlwZWRlZiBz dHJ1Y3QgU3RpclR1cGxlCit7CisJSXRlbVBvaW50ZXJEYXRhIGhlYXBQdHI7Cit9IFN0aXJUdXBs ZTsKKworI2RlZmluZSBTdGlyUGFnZUdldEZyZWVTcGFjZShzdGF0ZSwgcGFnZSkgXAorCShCTENL U1ogLSBNQVhBTElHTihTaXplT2ZQYWdlSGVhZGVyRGF0YSkgXAorCQktIFN0aXJQYWdlR2V0TWF4 T2Zmc2V0KHBhZ2UpICogKHNpemVvZihTdGlyVHVwbGUpKSBcCisJCS0gTUFYQUxJR04oc2l6ZW9m KFN0aXJQYWdlT3BhcXVlRGF0YSkpKQorCitleHRlcm4gdm9pZCBTdGlyRmlsbE1ldGFwYWdlKFJl bGF0aW9uIGluZGV4LCBQYWdlIG1ldGFQYWdlLCBib29sIHNraXBJbnNlcnRzKTsKK2V4dGVybiB2 b2lkIFN0aXJJbml0TWV0YXBhZ2UoUmVsYXRpb24gaW5kZXgsIEZvcmtOdW1iZXIgZm9ya251bSk7 CitleHRlcm4gdm9pZCBTdGlySW5pdFBhZ2UoUGFnZSBwYWdlLCB1aW50MTYgZmxhZ3MpOworZXh0 ZXJuIHZvaWQgU3Rpck1hcmtBc1NraXBJbnNlcnRzKFJlbGF0aW9uIGluZGV4KTsKKworLyogaW5k ZXggYWNjZXNzIG1ldGhvZCBpbnRlcmZhY2UgZnVuY3Rpb25zICovCitleHRlcm4gYm9vbCBzdGly dmFsaWRhdGUoT2lkIG9wY2xhc3NvaWQpOworZXh0ZXJuIGJvb2wgc3Rpcmluc2VydChSZWxhdGlv biBpbmRleCwgRGF0dW0gKnZhbHVlcywgYm9vbCAqaXNudWxsLAorCQkJCQkgSXRlbVBvaW50ZXIg aHRfY3RpZCwgUmVsYXRpb24gaGVhcFJlbCwKKwkJCQkJIEluZGV4VW5pcXVlQ2hlY2sgY2hlY2tV bmlxdWUsCisJCQkJCSBib29sIGluZGV4VW5jaGFuZ2VkLAorCQkJCQkgc3RydWN0IEluZGV4SW5m byAqaW5kZXhJbmZvKTsKK2V4dGVybiBJbmRleFNjYW5EZXNjIHN0aXJiZWdpbnNjYW4oUmVsYXRp b24gciwgaW50IG5rZXlzLCBpbnQgbm9yZGVyYnlzKTsKK2V4dGVybiB2b2lkIHN0aXJyZXNjYW4o SW5kZXhTY2FuRGVzYyBzY2FuLCBTY2FuS2V5IHNjYW5rZXksIGludCBuc2NhbmtleXMsCisJCQkJ CSBTY2FuS2V5IG9yZGVyYnlzLCBpbnQgbm9yZGVyYnlzKTsKK2V4dGVybiB2b2lkIHN0aXJlbmRz Y2FuKEluZGV4U2NhbkRlc2Mgc2Nhbik7CitleHRlcm4gSW5kZXhCdWlsZFJlc3VsdCAqc3RpcmJ1 aWxkKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAorCQkJCQkJCQkgc3RydWN0IEluZGV4 SW5mbyAqaW5kZXhJbmZvKTsKK2V4dGVybiB2b2lkIHN0aXJidWlsZGVtcHR5KFJlbGF0aW9uIGlu ZGV4KTsKK2V4dGVybiBJbmRleEJ1bGtEZWxldGVSZXN1bHQgKnN0aXJidWxrZGVsZXRlKEluZGV4 VmFjdXVtSW5mbyAqaW5mbywKKwkJCQkJCQkJCQkgICBJbmRleEJ1bGtEZWxldGVSZXN1bHQgKnN0 YXRzLCBJbmRleEJ1bGtEZWxldGVDYWxsYmFjayBjYWxsYmFjaywKKwkJCQkJCQkJCQkgICB2b2lk ICpjYWxsYmFja19zdGF0ZSk7CitleHRlcm4gSW5kZXhCdWxrRGVsZXRlUmVzdWx0ICpzdGlydmFj dXVtY2xlYW51cChJbmRleFZhY3V1bUluZm8gKmluZm8sCisJCQkJCQkJCQkJCSAgSW5kZXhCdWxr RGVsZXRlUmVzdWx0ICpzdGF0cyk7CitleHRlcm4gYnl0ZWEgKnN0aXJvcHRpb25zKERhdHVtIHJl bG9wdGlvbnMsIGJvb2wgdmFsaWRhdGUpOworCisjZW5kaWYKXCBObyBuZXdsaW5lIGF0IGVuZCBv ZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2FtLmRhdCBiL3NyYy9p bmNsdWRlL2NhdGFsb2cvcGdfYW0uZGF0CmluZGV4IDI2ZDE1OTI4YTE1Li5hNWVjZjkyMDhhZCAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19hbS5kYXQKKysrIGIvc3JjL2luY2x1 ZGUvY2F0YWxvZy9wZ19hbS5kYXQKQEAgLTMzLDUgKzMzLDggQEAKIHsgb2lkID0+ICczNTgwJywg b2lkX3N5bWJvbCA9PiAnQlJJTl9BTV9PSUQnLAogICBkZXNjciA9PiAnYmxvY2sgcmFuZ2UgaW5k ZXggKEJSSU4pIGFjY2VzcyBtZXRob2QnLAogICBhbW5hbWUgPT4gJ2JyaW4nLCBhbWhhbmRsZXIg PT4gJ2JyaW5oYW5kbGVyJywgYW10eXBlID0+ICdpJyB9LAoreyBvaWQgPT4gJzU1NTUnLCBvaWRf c3ltYm9sID0+ICdTVElSX0FNX09JRCcsCisgIGRlc2NyID0+ICdzaG9ydCB0ZXJtIGluZGV4IHJl cGxhY2VtZW50IGFjY2VzcyBtZXRob2QnLAorICBhbW5hbWUgPT4gJ3N0aXInLCBhbWhhbmRsZXIg PT4gJ3N0aXJoYW5kbGVyJywgYW10eXBlID0+ICdpJyB9LAogCiBdCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9jYXRhbG9nL3BnX29wY2xhc3MuZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19v cGNsYXNzLmRhdAppbmRleCA0YTk2MjQ4MDJhYS4uNjIyN2M1NjU4ZmMgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvcGdfb3BjbGFzcy5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19vcGNsYXNzLmRhdApAQCAtNDg4LDQgKzQ4OCw4IEBACiAKICMgbm8gYnJpbiBvcGNsYXNz IGZvciB0aGUgZ2VvbWV0cmljIHR5cGVzIGV4Y2VwdCBib3gKIAorIyBhbGxvdyBhbnkgdHlwZXMg Zm9yIFNUSVIKK3sgb3BjbWV0aG9kID0+ICdzdGlyJywgb2lkX3N5bWJvbCA9PiAnQU5ZX1NUSVJf T1BTX09JRCcsIG9wY25hbWUgPT4gJ3N0aXJfb3BzJywKKyAgb3BjZmFtaWx5ID0+ICdzdGlyL2Fu eV9vcHMnLCBvcGNpbnR5cGUgPT4gJ2FueSd9LAorCiBdCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9jYXRhbG9nL3BnX29wZmFtaWx5LmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfb3BmYW1p bHkuZGF0CmluZGV4IGY3ZGNiOTZiNDNjLi44MzhhZDMyYzkzMiAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvY2F0YWxvZy9wZ19vcGZhbWlseS5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19vcGZhbWlseS5kYXQKQEAgLTMwNCw1ICszMDQsNyBAQAogICBvcGZtZXRob2QgPT4gJ2hhc2gn LCBvcGZuYW1lID0+ICdtdWx0aXJhbmdlX29wcycgfSwKIHsgb2lkID0+ICc2MTU4JywKICAgb3Bm bWV0aG9kID0+ICdnaXN0Jywgb3BmbmFtZSA9PiAnbXVsdGlyYW5nZV9vcHMnIH0sCit7IG9pZCA9 PiAnNTU1OCcsCisgIG9wZm1ldGhvZCA9PiAnc3RpcicsIG9wZm5hbWUgPT4gJ2FueV9vcHMnIH0s CiAKIF0KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgYi9zcmMv aW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CmluZGV4IDllODAzZDYxMGQ3Li4zZjE3ZmJhMWIw NCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAorKysgYi9zcmMv aW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CkBAIC05MzUsNiArOTM1LDEwIEBACiAgIHByb25h bWUgPT4gJ2JyaW5oYW5kbGVyJywgcHJvdm9sYXRpbGUgPT4gJ3YnLAogICBwcm9yZXR0eXBlID0+ ICdpbmRleF9hbV9oYW5kbGVyJywgcHJvYXJndHlwZXMgPT4gJ2ludGVybmFsJywKICAgcHJvc3Jj ID0+ICdicmluaGFuZGxlcicgfSwKK3sgb2lkID0+ICc1NTU2JywgZGVzY3IgPT4gJ3Nob3J0IHRl cm0gaW5kZXggcmVwbGFjZW1lbnQgYWNjZXNzIG1ldGhvZCBoYW5kbGVyJywKKyAgcHJvbmFtZSA9 PiAnc3RpcmhhbmRsZXInLCBwcm92b2xhdGlsZSA9PiAndicsCisgIHByb3JldHR5cGUgPT4gJ2lu ZGV4X2FtX2hhbmRsZXInLCBwcm9hcmd0eXBlcyA9PiAnaW50ZXJuYWwnLAorICBwcm9zcmMgPT4g J3N0aXJoYW5kbGVyJyB9LAogeyBvaWQgPT4gJzM5NTInLCBkZXNjciA9PiAnYnJpbjogc3RhbmRh bG9uZSBzY2FuIG5ldyB0YWJsZSBwYWdlcycsCiAgIHByb25hbWUgPT4gJ2JyaW5fc3VtbWFyaXpl X25ld192YWx1ZXMnLCBwcm92b2xhdGlsZSA9PiAndicsCiAgIHByb3BhcmFsbGVsID0+ICd1Jywg cHJvcmV0dHlwZSA9PiAnaW50NCcsIHByb2FyZ3R5cGVzID0+ICdyZWdjbGFzcycsCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL2V4 ZWNub2Rlcy5oCmluZGV4IGEzMjNmYTk4YmJiLi44YzBhZDk2ZTAyYyAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25v ZGVzLmgKQEAgLTE4MiwxMiArMTgyLDEzIEBAIHR5cGVkZWYgc3RydWN0IEV4cHJTdGF0ZQogICoJ CUJyb2tlbkhvdENoYWluCQlkaWQgd2UgZGV0ZWN0IGFueSBicm9rZW4gSE9UIGNoYWlucz8KICAq CQlTdW1tYXJpemluZwkJCWlzIGl0IGEgc3VtbWFyaXppbmcgaW5kZXg/CiAgKgkJUGFyYWxsZWxX b3JrZXJzCQkjIG9mIHdvcmtlcnMgcmVxdWVzdGVkIChleGNsdWRlcyBsZWFkZXIpCisgKgkJQXV4 aWxpYXJ5CQkJIyBpbmRleC1oZWxwZXIgZm9yIGNvbmN1cnJlbnQgYnVpbGQ/CiAgKgkJQW0JCQkJ CU9pZCBvZiBpbmRleCBBTQogICoJCUFtQ2FjaGUJCQkJcHJpdmF0ZSBjYWNoZSBhcmVhIGZvciBp bmRleCBBTQogICoJCUNvbnRleHQJCQkJbWVtb3J5IGNvbnRleHQgaG9sZGluZyB0aGlzIEluZGV4 SW5mbwogICoKLSAqIGlpX0NvbmN1cnJlbnQsIGlpX0Jyb2tlbkhvdENoYWluLCBhbmQgaWlfUGFy YWxsZWxXb3JrZXJzIGFyZSB1c2VkIG9ubHkKLSAqIGR1cmluZyBpbmRleCBidWlsZDsgdGhleSdy ZSBjb252ZW50aW9uYWxseSB6ZXJvZWQgb3RoZXJ3aXNlLgorICogaWlfQ29uY3VycmVudCwgaWlf QnJva2VuSG90Q2hhaW4sIGlpX0F1eGlsaWFyeSBhbmQgaWlfUGFyYWxsZWxXb3JrZXJzCisgKiBh cmUgdXNlZCBvbmx5IGR1cmluZyBpbmRleCBidWlsZDsgdGhleSdyZSBjb252ZW50aW9uYWxseSB6 ZXJvZWQgb3RoZXJ3aXNlLgogICogLS0tLS0tLS0tLS0tLS0tLQogICovCiB0eXBlZGVmIHN0cnVj dCBJbmRleEluZm8KQEAgLTIxNiw2ICsyMTcsNyBAQCB0eXBlZGVmIHN0cnVjdCBJbmRleEluZm8K IAlib29sCQlpaV9TdW1tYXJpemluZzsKIAlib29sCQlpaV9XaXRob3V0T3ZlcmxhcHM7CiAJaW50 CQkJaWlfUGFyYWxsZWxXb3JrZXJzOworCWJvb2wJCWlpX0F1eGlsaWFyeTsKIAlPaWQJCQlpaV9B bTsKIAl2b2lkCSAgICppaV9BbUNhY2hlOwogCU1lbW9yeUNvbnRleHQgaWlfQ29udGV4dDsKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL2luZGV4X3NlbGZ1bmNzLmggYi9zcmMvaW5jbHVk ZS91dGlscy9pbmRleF9zZWxmdW5jcy5oCmluZGV4IDZjNjRkYjZkNDU2Li5lMGQ5MzlkNjg1NyAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvaW5kZXhfc2VsZnVuY3MuaAorKysgYi9zcmMv aW5jbHVkZS91dGlscy9pbmRleF9zZWxmdW5jcy5oCkBAIC02Miw2ICs2MiwxNCBAQCBleHRlcm4g dm9pZCBzcGdjb3N0ZXN0aW1hdGUoc3RydWN0IFBsYW5uZXJJbmZvICpyb290LAogCQkJCQkJCVNl bGVjdGl2aXR5ICppbmRleFNlbGVjdGl2aXR5LAogCQkJCQkJCWRvdWJsZSAqaW5kZXhDb3JyZWxh dGlvbiwKIAkJCQkJCQlkb3VibGUgKmluZGV4UGFnZXMpOworZXh0ZXJuIHZvaWQgc3RpcmNvc3Rl c3RpbWF0ZShzdHJ1Y3QgUGxhbm5lckluZm8gKnJvb3QsCisJCQkJCQkJc3RydWN0IEluZGV4UGF0 aCAqcGF0aCwKKwkJCQkJCQlkb3VibGUgbG9vcF9jb3VudCwKKwkJCQkJCQlDb3N0ICppbmRleFN0 YXJ0dXBDb3N0LAorCQkJCQkJCUNvc3QgKmluZGV4VG90YWxDb3N0LAorCQkJCQkJCVNlbGVjdGl2 aXR5ICppbmRleFNlbGVjdGl2aXR5LAorCQkJCQkJCWRvdWJsZSAqaW5kZXhDb3JyZWxhdGlvbiwK KwkJCQkJCQlkb3VibGUgKmluZGV4UGFnZXMpOwogZXh0ZXJuIHZvaWQgZ2luY29zdGVzdGltYXRl KHN0cnVjdCBQbGFubmVySW5mbyAqcm9vdCwKIAkJCQkJCQlzdHJ1Y3QgSW5kZXhQYXRoICpwYXRo LAogCQkJCQkJCWRvdWJsZSBsb29wX2NvdW50LApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9hbXV0aWxzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvYW11dGls cy5vdXQKaW5kZXggN2FiNjExM2M2MTkuLjkyYzAzM2EyMDEwIDEwMDY0NAotLS0gYS9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL2FtdXRpbHMub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvYW11dGlscy5vdXQKQEAgLTE3Myw3ICsxNzMsMTMgQEAgc2VsZWN0IGFtbmFtZSwgcHJv cCwgcGdfaW5kZXhhbV9oYXNfcHJvcGVydHkoYS5vaWQsIHByb3ApIGFzIHAKICBzcGdpc3QgfCBj YW5fZXhjbHVkZSAgIHwgdAogIHNwZ2lzdCB8IGNhbl9pbmNsdWRlICAgfCB0CiAgc3BnaXN0IHwg Ym9ndXMgICAgICAgICB8IAotKDM2IHJvd3MpCisgc3RpciAgIHwgY2FuX29yZGVyICAgICB8IGYK KyBzdGlyICAgfCBjYW5fdW5pcXVlICAgIHwgZgorIHN0aXIgICB8IGNhbl9tdWx0aV9jb2wgfCB0 Cisgc3RpciAgIHwgY2FuX2V4Y2x1ZGUgICB8IGYKKyBzdGlyICAgfCBjYW5faW5jbHVkZSAgIHwg dAorIHN0aXIgICB8IGJvZ3VzICAgICAgICAgfCAKKyg0MiByb3dzKQogCiAtLQogLS0gYWRkaXRp b25hbCBjaGVja3MgZm9yIHBnX2luZGV4X2NvbHVtbl9oYXNfcHJvcGVydHkKZGlmZiAtLWdpdCBh L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvb3ByX3Nhbml0eS5vdXQgYi9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL29wcl9zYW5pdHkub3V0CmluZGV4IGI2NzM2NDJhZDFkLi4yNjQ1ZDk3MDYy OSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9vcHJfc2FuaXR5Lm91dAor KysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL29wcl9zYW5pdHkub3V0CkBAIC0yMTE5LDkg KzIxMTksMTAgQEAgRlJPTSBwZ19vcGNsYXNzIEFTIGMxCiBXSEVSRSBOT1QgRVhJU1RTKFNFTEVD VCAxIEZST00gcGdfYW1vcCBBUyBhMQogICAgICAgICAgICAgICAgICBXSEVSRSBhMS5hbW9wZmFt aWx5ID0gYzEub3BjZmFtaWx5CiAgICAgICAgICAgICAgICAgICAgQU5EIGJpbmFyeV9jb2VyY2li bGUoYzEub3BjaW50eXBlLCBhMS5hbW9wbGVmdHR5cGUpKTsKLSBvcGNuYW1lIHwgb3BjZmFtaWx5 IAotLS0tLS0tLS0tKy0tLS0tLS0tLS0tCi0oMCByb3dzKQorIG9wY25hbWUgIHwgb3BjZmFtaWx5 IAorLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIHN0aXJfb3BzIHwgICAgICA1NTU4CisoMSByb3cp CiAKIC0tIENoZWNrIHRoYXQgZWFjaCBvcGVyYXRvciBsaXN0ZWQgaW4gcGdfYW1vcCBoYXMgYW4g YXNzb2NpYXRlZCBvcGNsYXNzLAogLS0gdGhhdCBpcyBvbmUgd2hvc2Ugb3BjaW50eXBlIG1hdGNo ZXMgb3BybGVmdCAocG9zc2libHkgYnkgY29lcmNpb24pLgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9wc3FsLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHNx bC5vdXQKaW5kZXggZjlkYjQwMzJlMWYuLjRlM2RkZDY4MTBlIDEwMDY0NAotLS0gYS9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL3BzcWwub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvcHNxbC5vdXQKQEAgLTUxMzAsNyArNTEzMCw4IEBAIExpc3Qgb2YgYWNjZXNzIG1ldGhvZHMK ICBoZWFwICAgfCBUYWJsZQogIGhlYXAyICB8IFRhYmxlCiAgc3BnaXN0IHwgSW5kZXgKLSg4IHJv d3MpCisgc3RpciAgIHwgSW5kZXgKKyg5IHJvd3MpCiAKIFxkQSAqCiBMaXN0IG9mIGFjY2VzcyBt ZXRob2RzCkBAIC01MTQ0LDcgKzUxNDUsOCBAQCBMaXN0IG9mIGFjY2VzcyBtZXRob2RzCiAgaGVh cCAgIHwgVGFibGUKICBoZWFwMiAgfCBUYWJsZQogIHNwZ2lzdCB8IEluZGV4Ci0oOCByb3dzKQor IHN0aXIgICB8IEluZGV4CisoOSByb3dzKQogCiBcZEEgaCoKIExpc3Qgb2YgYWNjZXNzIG1ldGhv ZHMKQEAgLTUxNjksOSArNTE3MSw5IEBAIExpc3Qgb2YgYWNjZXNzIG1ldGhvZHMKIAogXGRBOiBl eHRyYSBhcmd1bWVudCAiYmFyIiBpZ25vcmVkCiBcZEErCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgIExpc3Qgb2YgYWNjZXNzIG1ldGhvZHMKLSAgTmFtZSAgfCBUeXBlICB8ICAgICAgIEhh bmRsZXIgICAgICAgIHwgICAgICAgICAgICAgIERlc2NyaXB0aW9uICAgICAgICAgICAgICAgCi0t LS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExp c3Qgb2YgYWNjZXNzIG1ldGhvZHMKKyAgTmFtZSAgfCBUeXBlICB8ICAgICAgIEhhbmRsZXIgICAg ICAgIHwgICAgICAgICAgICAgICAgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgIAorLS0tLS0t LS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgYnJpbiAgIHwgSW5kZXggfCBicmluaGFuZGxlciAgICAg ICAgICB8IGJsb2NrIHJhbmdlIGluZGV4IChCUklOKSBhY2Nlc3MgbWV0aG9kCiAgYnRyZWUgIHwg SW5kZXggfCBidGhhbmRsZXIgICAgICAgICAgICB8IGItdHJlZSBpbmRleCBhY2Nlc3MgbWV0aG9k CiAgZ2luICAgIHwgSW5kZXggfCBnaW5oYW5kbGVyICAgICAgICAgICB8IEdJTiBpbmRleCBhY2Nl c3MgbWV0aG9kCkBAIC01MTgwLDEyICs1MTgyLDEzIEBAIExpc3Qgb2YgYWNjZXNzIG1ldGhvZHMK ICBoZWFwICAgfCBUYWJsZSB8IGhlYXBfdGFibGVhbV9oYW5kbGVyIHwgaGVhcCB0YWJsZSBhY2Nl c3MgbWV0aG9kCiAgaGVhcDIgIHwgVGFibGUgfCBoZWFwX3RhYmxlYW1faGFuZGxlciB8IAogIHNw Z2lzdCB8IEluZGV4IHwgc3BnaGFuZGxlciAgICAgICAgICAgfCBTUC1HaVNUIGluZGV4IGFjY2Vz cyBtZXRob2QKLSg4IHJvd3MpCisgc3RpciAgIHwgSW5kZXggfCBzdGlyaGFuZGxlciAgICAgICAg ICB8IHNob3J0IHRlcm0gaW5kZXggcmVwbGFjZW1lbnQgYWNjZXNzIG1ldGhvZAorKDkgcm93cykK IAogXGRBKyAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2YgYWNjZXNzIG1l dGhvZHMKLSAgTmFtZSAgfCBUeXBlICB8ICAgICAgIEhhbmRsZXIgICAgICAgIHwgICAgICAgICAg ICAgIERlc2NyaXB0aW9uICAgICAgICAgICAgICAgCi0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2YgYWNjZXNzIG1ldGhvZHMKKyAg TmFtZSAgfCBUeXBlICB8ICAgICAgIEhhbmRsZXIgICAgICAgIHwgICAgICAgICAgICAgICAgRGVz Y3JpcHRpb24gICAgICAgICAgICAgICAgIAorLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAg YnJpbiAgIHwgSW5kZXggfCBicmluaGFuZGxlciAgICAgICAgICB8IGJsb2NrIHJhbmdlIGluZGV4 IChCUklOKSBhY2Nlc3MgbWV0aG9kCiAgYnRyZWUgIHwgSW5kZXggfCBidGhhbmRsZXIgICAgICAg ICAgICB8IGItdHJlZSBpbmRleCBhY2Nlc3MgbWV0aG9kCiAgZ2luICAgIHwgSW5kZXggfCBnaW5o YW5kbGVyICAgICAgICAgICB8IEdJTiBpbmRleCBhY2Nlc3MgbWV0aG9kCkBAIC01MTk0LDcgKzUx OTcsOCBAQCBMaXN0IG9mIGFjY2VzcyBtZXRob2RzCiAgaGVhcCAgIHwgVGFibGUgfCBoZWFwX3Rh YmxlYW1faGFuZGxlciB8IGhlYXAgdGFibGUgYWNjZXNzIG1ldGhvZAogIGhlYXAyICB8IFRhYmxl IHwgaGVhcF90YWJsZWFtX2hhbmRsZXIgfCAKICBzcGdpc3QgfCBJbmRleCB8IHNwZ2hhbmRsZXIg ICAgICAgICAgIHwgU1AtR2lTVCBpbmRleCBhY2Nlc3MgbWV0aG9kCi0oOCByb3dzKQorIHN0aXIg ICB8IEluZGV4IHwgc3RpcmhhbmRsZXIgICAgICAgICAgfCBzaG9ydCB0ZXJtIGluZGV4IHJlcGxh Y2VtZW50IGFjY2VzcyBtZXRob2QKKyg5IHJvd3MpCiAKIFxkQSsgaCoKICAgICAgICAgICAgICAg ICAgICAgIExpc3Qgb2YgYWNjZXNzIG1ldGhvZHMKLS0gCjIuNDMuMAoK --0000000000007d5b96062e941445 Content-Type: text/x-patch; charset="US-ASCII"; name="v15-0007-tuplestore-add-support-for-storing-Datum-values.patch" Content-Disposition: attachment; filename="v15-0007-tuplestore-add-support-for-storing-Datum-values.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m7dgd9ik6 RnJvbSBhYTAyMzQ3Y2RkZTBiZDc2N2FkODU4OTk4OTkyZWNlMWZmNTdiYmE5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxtaWNoYWlsLm5pa29sYWV2QGdtYWlsLmNvbT4KRGF0 ZTogU2F0LCAyNSBKYW4gMjAyNSAxMzozMzoyMSArMDEwMApTdWJqZWN0OiBbUEFUQ0ggdjE1IDA3 LzEyXSB0dXBsZXN0b3JlOiBhZGQgc3VwcG9ydCBmb3Igc3RvcmluZyBEYXR1bSB2YWx1ZXMKCkFk ZCBhYmlsaXR5IHRvIHN0b3JlIGFuZCByZXRyaWV2ZSBpbmRpdmlkdWFsIERhdHVtIHZhbHVlcyBp biB0dXBsZXN0b3JlLCBvcHRpbWl6aW5nIHN0b3JhZ2UgYmFzZWQgb24gdHlwZToKCi0gRml4ZWQt bGVuZ3RoOiBzdG9yZXMgcmF3IGJ5dGVzIHdpdGhvdXQgbGVuZ3RoIHByZWZpeAotIFZhcmlhYmxl LWxlbmd0aDogaW5jbHVkZXMgbGVuZ3RoIHByZWZpeC9zdWZmaXgKLSBCeS12YWx1ZSB0eXBlcyBo YW5kbGVkIGlubGluZQoKVGhpcyBleHRlbmRzIHR1cGxlc3RvcmUgYmV5b25kIGp1c3QgaGFuZGxp bmcgdHVwbGVzLCBwbGFubmVkIHRvIGJlIHVzZWQgaW4gbmV4dCBwYXRjaC4KLS0tCiBzcmMvYmFj a2VuZC91dGlscy9zb3J0L3R1cGxlc3RvcmUuYyB8IDI3MCArKysrKysrKysrKysrKysrKysrKysr Ky0tLS0tCiBzcmMvaW5jbHVkZS91dGlscy90dXBsZXN0b3JlLmggICAgICB8ICAzMyArKy0tCiAy IGZpbGVzIGNoYW5nZWQsIDI0NCBpbnNlcnRpb25zKCspLCA1OSBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9zb3J0L3R1cGxlc3RvcmUuYyBiL3NyYy9iYWNrZW5k L3V0aWxzL3NvcnQvdHVwbGVzdG9yZS5jCmluZGV4IGQ2MWI2MDEwNTNjLi4wMzQzNGYzZWE0OSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvc29ydC90dXBsZXN0b3JlLmMKKysrIGIvc3Jj L2JhY2tlbmQvdXRpbHMvc29ydC90dXBsZXN0b3JlLmMKQEAgLTEsMTYgKzEsMTkgQEAKIC8qLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQogICoKICAqIHR1cGxlc3RvcmUuYwotICoJICBHZW5lcmFsaXplZCByb3V0 aW5lcyBmb3IgdGVtcG9yYXJ5IHR1cGxlIHN0b3JhZ2UuCisgKgkgIEdlbmVyYWxpemVkIHJvdXRp bmVzIGZvciB0ZW1wb3Jhcnkgc3RvcmFnZSBvZiB0dXBsZXMgYW5kIERhdHVtcy4KKyAqCisgKiBU aGlzIG1vZHVsZSBoYW5kbGVzIHRlbXBvcmFyeSBzdG9yYWdlIG9mIGVpdGhlciB0dXBsZXMgb3Ig c2luZ2xlCisgKiBEYXR1bSB2YWx1ZXMgZm9yIHB1cnBvc2VzIHN1Y2ggYXMgTWF0ZXJpYWxpemUg bm9kZXMsIGhhc2hqb2luIGJhdGNoCisgKiBmaWxlcywgZXRjLiBJdCBpcyBlc3NlbnRpYWxseSBh IGR1bWJlZC1kb3duIHZlcnNpb24gb2YgdHVwbGVzb3J0LmM7CisgKiBpdCBkb2VzIG5vIHNvcnRp bmcgb2YgdHVwbGVzIGJ1dCBjYW4gb25seSBzdG9yZSBhbmQgcmVndXJnaXRhdGUgYSBzZXF1ZW5j ZQorICogb2YgdHVwbGVzLiAgSG93ZXZlciwgYmVjYXVzZSBubyBzb3J0IGlzIHJlcXVpcmVkLCBp dCBpcyBhbGxvd2VkIHRvIHN0YXJ0CisgKiByZWFkaW5nIHRoZSBzZXF1ZW5jZSBiZWZvcmUgaXQg aGFzIGFsbCBiZWVuIHdyaXR0ZW4uCisgKgorICogVGhpcyBpcyBwYXJ0aWN1bGFybHkgdXNlZnVs IGZvciBjdXJzb3JzLCBiZWNhdXNlIGl0IGFsbG93cyByYW5kb20gYWNjZXNzCisgKiB3aXRoaW4g dGhlIGFscmVhZHktc2Nhbm5lZCBwb3J0aW9uIG9mIGEgcXVlcnkgd2l0aG91dCBoYXZpbmcgdG8g cHJvY2VzcworICogdGhlIHVuZGVybHlpbmcgc2NhbiB0byBjb21wbGV0aW9uLgogICoKLSAqIFRo aXMgbW9kdWxlIGhhbmRsZXMgdGVtcG9yYXJ5IHN0b3JhZ2Ugb2YgdHVwbGVzIGZvciBwdXJwb3Nl cyBzdWNoCi0gKiBhcyBNYXRlcmlhbGl6ZSBub2RlcywgaGFzaGpvaW4gYmF0Y2ggZmlsZXMsIGV0 Yy4gIEl0IGlzIGVzc2VudGlhbGx5Ci0gKiBhIGR1bWJlZC1kb3duIHZlcnNpb24gb2YgdHVwbGVz b3J0LmM7IGl0IGRvZXMgbm8gc29ydGluZyBvZiB0dXBsZXMKLSAqIGJ1dCBjYW4gb25seSBzdG9y ZSBhbmQgcmVndXJnaXRhdGUgYSBzZXF1ZW5jZSBvZiB0dXBsZXMuICBIb3dldmVyLAotICogYmVj YXVzZSBubyBzb3J0IGlzIHJlcXVpcmVkLCBpdCBpcyBhbGxvd2VkIHRvIHN0YXJ0IHJlYWRpbmcg dGhlIHNlcXVlbmNlCi0gKiBiZWZvcmUgaXQgaGFzIGFsbCBiZWVuIHdyaXR0ZW4uICBUaGlzIGlz IHBhcnRpY3VsYXJseSB1c2VmdWwgZm9yIGN1cnNvcnMsCi0gKiBiZWNhdXNlIGl0IGFsbG93cyBy YW5kb20gYWNjZXNzIHdpdGhpbiB0aGUgYWxyZWFkeS1zY2FubmVkIHBvcnRpb24gb2YKLSAqIGEg cXVlcnkgd2l0aG91dCBoYXZpbmcgdG8gcHJvY2VzcyB0aGUgdW5kZXJseWluZyBzY2FuIHRvIGNv bXBsZXRpb24uCiAgKiBBbHNvLCBpdCBpcyBwb3NzaWJsZSB0byBzdXBwb3J0IG11bHRpcGxlIGlu ZGVwZW5kZW50IHJlYWQgcG9pbnRlcnMuCiAgKgogICogQSB0ZW1wb3JhcnkgZmlsZSBpcyB1c2Vk IHRvIGhhbmRsZSB0aGUgZGF0YSBpZiBpdCBleGNlZWRzIHRoZQpAQCAtNjEsNiArNjQsOCBAQAog I2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWN1dG9yLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAj aW5jbHVkZSAic3RvcmFnZS9idWZmaWxlLmgiCisjaW5jbHVkZSAidXRpbHMvZGF0dW0uaCIKKyNp bmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgog I2luY2x1ZGUgInV0aWxzL3Jlc293bmVyLmgiCiAKQEAgLTExNSwxNiArMTIwLDE1IEBAIHN0cnVj dCBUdXBsZXN0b3Jlc3RhdGUKIAlCdWZGaWxlICAgICpteWZpbGU7CQkJLyogdW5kZXJseWluZyBm aWxlLCBvciBOVUxMIGlmIG5vbmUgKi8KIAlNZW1vcnlDb250ZXh0IGNvbnRleHQ7CQkvKiBtZW1v cnkgY29udGV4dCBmb3IgaG9sZGluZyB0dXBsZXMgKi8KIAlSZXNvdXJjZU93bmVyIHJlc293bmVy OwkJLyogcmVzb3duZXIgZm9yIGhvbGRpbmcgdGVtcCBmaWxlcyAqLworCU9pZAkJCWRhdHVtVHlw ZTsJCS8qIEludmFsaWRPaWQgb3Igb2lkIG9mIERhdHVtJ3MgdG8gYmUgc3RvcmVkICovCisJaW50 MTYJCWRhdHVtVHlwZUxlbjsJLyogdHlwZWxlbiBvZiB0aGF0IERhdHVtICovCisJYm9vbAkJZGF0 dW1UeXBlQnlWYWw7IC8qIGJ5LXZhbHVlIG9mIHRoYXQgYXR1bSAqLwogCiAJLyoKIAkgKiBUaGVz ZSBmdW5jdGlvbiBwb2ludGVycyBkZWNvdXBsZSB0aGUgcm91dGluZXMgdGhhdCBtdXN0IGtub3cg d2hhdCBraW5kCiAJICogb2YgdHVwbGUgd2UgYXJlIGhhbmRsaW5nIGZyb20gdGhlIHJvdXRpbmVz IHRoYXQgZG9uJ3QgbmVlZCB0byBrbm93IGl0LgogCSAqIFRoZXkgYXJlIHNldCB1cCBieSB0aGUg dHVwbGVzdG9yZV9iZWdpbl94eHggcm91dGluZXMuCiAJICoKLQkgKiAoQWx0aG91Z2ggdHVwbGVz dG9yZS5jIGN1cnJlbnRseSBvbmx5IHN1cHBvcnRzIGhlYXAgdHVwbGVzLCBJJ3ZlIGNvcGllZAot CSAqIHRoaXMgcGFydCBvZiB0dXBsZXNvcnQuYyBzbyB0aGF0IGV4dGVuc2lvbiB0byBvdGhlciBr aW5kcyBvZiBvYmplY3RzCi0JICogd2lsbCBiZSBlYXN5IGlmIGl0J3MgZXZlciBuZWVkZWQuKQot CSAqCiAJICogRnVuY3Rpb24gdG8gY29weSBhIHN1cHBsaWVkIGlucHV0IHR1cGxlIGludG8gcGFs bG9jJ2Qgc3BhY2UuIChOQjogd2UKIAkgKiBhc3N1bWUgdGhhdCBhIHNpbmdsZSBwZnJlZSgpIGlz IGVub3VnaCB0byByZWxlYXNlIHRoZSB0dXBsZSBsYXRlciwgc28KIAkgKiB0aGUgcmVwcmVzZW50 YXRpb24gbXVzdCBiZSAiZmxhdCIgaW4gb25lIHBhbGxvYyBjaHVuay4pIHN0YXRlLT5hdmFpbE1l bQpAQCAtMTQzLDEyICsxNDcsMTggQEAgc3RydWN0IFR1cGxlc3RvcmVzdGF0ZQogCiAJLyoKIAkg KiBGdW5jdGlvbiB0byByZWFkIGEgc3RvcmVkIHR1cGxlIGZyb20gdGFwZSBiYWNrIGludG8gbWVt b3J5LiAnbGVuJyBpcwotCSAqIHRoZSBhbHJlYWR5LXJlYWQgbGVuZ3RoIG9mIHRoZSBzdG9yZWQg dHVwbGUuICBDcmVhdGUgYW5kIHJldHVybiBhCi0JICogcGFsbG9jJ2QgY29weSwgYW5kIGRlY3Jl YXNlIHN0YXRlLT5hdmFpbE1lbSBieSB0aGUgYW1vdW50IG9mIG1lbW9yeQotCSAqIHNwYWNlIGNv bnN1bWVkLgorCSAqIHRoZSBhbHJlYWR5LWtub3duIChyZWFkIG9mIGNvbnN0YW50KSBsZW5ndGgg b2YgdGhlIHN0b3JlZCB0dXBsZS4KKwkgKiBDcmVhdGUgYW5kIHJldHVybiBhIHBhbGxvYydkIGNv cHksIGFuZCBkZWNyZWFzZSBzdGF0ZS0+YXZhaWxNZW0gYnkgdGhlCisJICogYW1vdW50IG9mIG1l bW9yeSBzcGFjZSBjb25zdW1lZC4KIAkgKi8KIAl2b2lkCSAgICooKnJlYWR0dXApIChUdXBsZXN0 b3Jlc3RhdGUgKnN0YXRlLCB1bnNpZ25lZCBpbnQgbGVuKTsKIAorCS8qCisJICogRnVuY3Rpb24g dG8gZ2V0IGxlbmdoIG9mIHR1cGxlIGZyb20gdGFwZS4gVXNlZCB0byBwcm92aWRlICdsZW4nIGFy Z3VtZW50CisJICogZm9yIHJlYWR0dXAgKHNlZSBhYm92ZSkuCisJICovCisJdW5zaWduZWQgaW50 KCpsZW50dXApKFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIGJvb2wgZW9mT0spOworCiAJLyoKIAkg KiBUaGlzIGFycmF5IGhvbGRzIHBvaW50ZXJzIHRvIHR1cGxlcyBpbiBtZW1vcnkgaWYgd2UgYXJl IGluIHN0YXRlIElOTUVNLgogCSAqIEluIHN0YXRlcyBXUklURUZJTEUgYW5kIFJFQURGSUxFIGl0 J3Mgbm90IHVzZWQuCkBAIC0xODUsNiArMTk1LDcgQEAgc3RydWN0IFR1cGxlc3RvcmVzdGF0ZQog I2RlZmluZSBDT1BZVFVQKHN0YXRlLHR1cCkJKCgqKHN0YXRlKS0+Y29weXR1cCkgKHN0YXRlLCB0 dXApKQogI2RlZmluZSBXUklURVRVUChzdGF0ZSx0dXApICgoKihzdGF0ZSktPndyaXRldHVwKSAo c3RhdGUsIHR1cCkpCiAjZGVmaW5lIFJFQURUVVAoc3RhdGUsbGVuKQkoKCooc3RhdGUpLT5yZWFk dHVwKSAoc3RhdGUsIGxlbikpCisjZGVmaW5lIExFTlRVUChzdGF0ZSxlb2ZPSykJKCgqKHN0YXRl KS0+bGVudHVwKSAoc3RhdGUsIGVvZk9LKSkKICNkZWZpbmUgTEFDS01FTShzdGF0ZSkJCSgoc3Rh dGUpLT5hdmFpbE1lbSA8IDApCiAjZGVmaW5lIFVTRU1FTShzdGF0ZSxhbXQpCSgoc3RhdGUpLT5h dmFpbE1lbSAtPSAoYW10KSkKICNkZWZpbmUgRlJFRU1FTShzdGF0ZSxhbXQpCSgoc3RhdGUpLT5h dmFpbE1lbSArPSAoYW10KSkKQEAgLTE5Myw5ICsyMDQsOSBAQCBzdHJ1Y3QgVHVwbGVzdG9yZXN0 YXRlCiAgKgogICogTk9URVMgYWJvdXQgb24tdGFwZSByZXByZXNlbnRhdGlvbiBvZiB0dXBsZXM6 CiAgKgotICogV2UgcmVxdWlyZSB0aGUgZmlyc3QgInVuc2lnbmVkIGludCIgb2YgYSBzdG9yZWQg dHVwbGUgdG8gYmUgdGhlIHRvdGFsIHNpemUKLSAqIG9uLXRhcGUgb2YgdGhlIHR1cGxlLCBpbmNs dWRpbmcgaXRzZWxmIChzbyBpdCBpcyBuZXZlciB6ZXJvKS4KLSAqIFRoZSByZW1haW5kZXIgb2Yg dGhlIHN0b3JlZCB0dXBsZQorICogSW4gY2FzZSBvZiB0dXBsZXMgd2UgdXNlIGZpcnN0ICJ1bnNp Z25lZCBpbnQiIG9mIGEgc3RvcmVkIHR1cGxlCisgKiB0byBiZSB0aGUgdG90YWwgc2l6ZSBvbi10 YXBlIG9mIHRoZSB0dXBsZSwgaW5jbHVkaW5nIGl0c2VsZgorICogKHNvIGl0IGlzIG5ldmVyIHpl cm8pLiBUaGUgcmVtYWluZGVyIG9mIHRoZSBzdG9yZWQgdHVwbGUKICAqIG1heSBvciBtYXkgbm90 IG1hdGNoIHRoZSBpbi1tZW1vcnkgcmVwcmVzZW50YXRpb24gb2YgdGhlIHR1cGxlIC0tLQogICog YW55IGNvbnZlcnNpb24gbmVlZGVkIGlzIHRoZSBqb2Igb2YgdGhlIHdyaXRldHVwIGFuZCByZWFk dHVwIHJvdXRpbmVzLgogICoKQEAgLTIwNiwxMCArMjE3LDEzIEBAIHN0cnVjdCBUdXBsZXN0b3Jl c3RhdGUKICAqIHN0YXRlLT5iYWNrd2FyZCBpcyBub3Qgc2V0LCB0aGUgd3JpdGUvcmVhZCByb3V0 aW5lcyBtYXkgb21pdCB0aGUgZXh0cmEKICAqIGxlbmd0aCB3b3JkLgogICoKKyAqIEluIGNhc2Ug b2YgRGF0dW0gd2l0aCBjb25zdGFudCBsZW5naHQgYm90aCAidW5zaWduZWQgaW50IiBhcmUgb21t aXR0ZWQuCisgKgogICogd3JpdGV0dXAgaXMgZXhwZWN0ZWQgdG8gd3JpdGUgYm90aCBsZW5ndGgg d29yZHMgYXMgd2VsbCBhcyB0aGUgdHVwbGUKICAqIGRhdGEuICBXaGVuIHJlYWR0dXAgaXMgY2Fs bGVkLCB0aGUgdGFwZSBpcyBwb3NpdGlvbmVkIGp1c3QgYWZ0ZXIgdGhlCi0gKiBmcm9udCBsZW5n dGggd29yZDsgcmVhZHR1cCBtdXN0IHJlYWQgdGhlIHR1cGxlIGRhdGEgYW5kIGFkdmFuY2UgcGFz dAotICogdGhlIGJhY2sgbGVuZ3RoIHdvcmQgKGlmIHByZXNlbnQpLgorICogZnJvbnQgbGVuZ3Ro IHdvcmQgKGlmIGl0IG5vdCBvbW1pdHRlZCBsaWtlIGluIGNhc2Ugb2YgY29udGFudC1zaXplIERh dHVtKTsKKyAqIHJlYWR0dXAgbXVzdCByZWFkIHRoZSB0dXBsZSBkYXRhIGFuZCBhZHZhbmNlIHBh c3QgdGhlIGJhY2sgbGVuZ3RoIHdvcmQKKyAqIChpZiBwcmVzZW50KS4KICAqCiAgKiBUaGUgd3Jp dGUvcmVhZCByb3V0aW5lcyBjYW4gbWFrZSB1c2Ugb2YgdGhlIHR1cGxlIGRlc2NyaXB0aW9uIGRh dGEKICAqIHN0b3JlZCBpbiB0aGUgVHVwbGVzdG9yZXN0YXRlIHJlY29yZCwgaWYgbmVlZGVkLiBU aGV5IGFyZSBhbHNvIGV4cGVjdGVkCkBAIC0yNDEsMTEgKzI1NSwxNiBAQCBzdGF0aWMgVHVwbGVz dG9yZXN0YXRlICp0dXBsZXN0b3JlX2JlZ2luX2NvbW1vbihpbnQgZWZsYWdzLAogc3RhdGljIHZv aWQgdHVwbGVzdG9yZV9wdXR0dXBsZV9jb21tb24oVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgdm9p ZCAqdHVwbGUpOwogc3RhdGljIHZvaWQgZHVtcHR1cGxlcyhUdXBsZXN0b3Jlc3RhdGUgKnN0YXRl KTsKIHN0YXRpYyB2b2lkIHR1cGxlc3RvcmVfdXBkYXRlbWF4KFR1cGxlc3RvcmVzdGF0ZSAqc3Rh dGUpOwotc3RhdGljIHVuc2lnbmVkIGludCBnZXRsZW4oVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwg Ym9vbCBlb2ZPSyk7CisKK3N0YXRpYyB1bnNpZ25lZCBpbnQgbGVudHVwX2hlYXAoVHVwbGVzdG9y ZXN0YXRlICpzdGF0ZSwgYm9vbCBlb2ZPSyk7CiBzdGF0aWMgdm9pZCAqY29weXR1cF9oZWFwKFR1 cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIHZvaWQgKnR1cCk7CiBzdGF0aWMgdm9pZCB3cml0ZXR1cF9o ZWFwKFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIHZvaWQgKnR1cCk7CiBzdGF0aWMgdm9pZCAqcmVh ZHR1cF9oZWFwKFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIHVuc2lnbmVkIGludCBsZW4pOwogCitz dGF0aWMgdW5zaWduZWQgaW50IGxlbnR1cF9kYXR1bShUdXBsZXN0b3Jlc3RhdGUgKnN0YXRlLCBi b29sIGVvZk9LKTsKK3N0YXRpYyB2b2lkICpjb3B5dHVwX2RhdHVtKFR1cGxlc3RvcmVzdGF0ZSAq c3RhdGUsIHZvaWQgKmRhdHVtKTsKK3N0YXRpYyB2b2lkIHdyaXRldHVwX2RhdHVtKFR1cGxlc3Rv cmVzdGF0ZSAqc3RhdGUsIHZvaWQgKmRhdHVtKTsKK3N0YXRpYyB2b2lkICpyZWFkdHVwX2RhdHVt KFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIHVuc2lnbmVkIGludCBsZW4pOwogCiAvKgogICoJCXR1 cGxlc3RvcmVfYmVnaW5feHh4CkBAIC0yNjgsNiArMjg3LDEyIEBAIHR1cGxlc3RvcmVfYmVnaW5f Y29tbW9uKGludCBlZmxhZ3MsIGJvb2wgaW50ZXJYYWN0LCBpbnQgbWF4S0J5dGVzKQogCXN0YXRl LT5hbGxvd2VkTWVtID0gbWF4S0J5dGVzICogKGludDY0KSAxMDI0OwogCXN0YXRlLT5hdmFpbE1l bSA9IHN0YXRlLT5hbGxvd2VkTWVtOwogCXN0YXRlLT5teWZpbGUgPSBOVUxMOworCS8qCisJICog U2V0IERhdHVtIHJlbGF0ZWQgZGF0YSB0byBpbnZhbGlkIGJ5IGRlZmF1bHQuCisJICovCisJc3Rh dGUtPmRhdHVtVHlwZSA9IEludmFsaWRPaWQ7CisJc3RhdGUtPmRhdHVtVHlwZUxlbiA9ICAwOwor CXN0YXRlLT5kYXR1bVR5cGVCeVZhbCA9IGZhbHNlOwogCiAJLyoKIAkgKiBUaGUgcGFsbG9jL3Bm cmVlIHBhdHRlcm4gZm9yIHR1cGxlIG1lbW9yeSBpcyBpbiBhIEZJRk8gcGF0dGVybi4gIEEKQEAg LTM0NSw2ICszNzAsMzYgQEAgdHVwbGVzdG9yZV9iZWdpbl9oZWFwKGJvb2wgcmFuZG9tQWNjZXNz LCBib29sIGludGVyWGFjdCwgaW50IG1heEtCeXRlcykKIAlzdGF0ZS0+Y29weXR1cCA9IGNvcHl0 dXBfaGVhcDsKIAlzdGF0ZS0+d3JpdGV0dXAgPSB3cml0ZXR1cF9oZWFwOwogCXN0YXRlLT5yZWFk dHVwID0gcmVhZHR1cF9oZWFwOworCXN0YXRlLT5sZW50dXAgPSBsZW50dXBfaGVhcDsKKworCXJl dHVybiBzdGF0ZTsKK30KKworLyoKKyAqIFRoZSBzYW1lIGFzIHR1cGxlc3RvcmVfYmVnaW5faGVh cCBidXQgY3JlYXRlIHN0b3JlIGZvciBEYXR1bSB2YWx1ZXMuCisgKi8KK1R1cGxlc3RvcmVzdGF0 ZSAqCit0dXBsZXN0b3JlX2JlZ2luX2RhdHVtKE9pZCBkYXR1bVR5cGUsIGJvb2wgcmFuZG9tQWNj ZXNzLCBib29sIGludGVyWGFjdCwgaW50IG1heEtCeXRlcykKK3sKKwlUdXBsZXN0b3Jlc3RhdGUg KnN0YXRlOworCWludAkJCWVmbGFnczsKKworCS8qCisJICogVGhpcyBpbnRlcnByZXRhdGlvbiBv ZiB0aGUgbWVhbmluZyBvZiByYW5kb21BY2Nlc3MgaXMgY29tcGF0aWJsZSB3aXRoCisJICogdGhl IHByZS04LjMgYmVoYXZpb3Igb2YgdHVwbGVzdG9yZXMuCisJICovCisJZWZsYWdzID0gcmFuZG9t QWNjZXNzID8KKwkJKEVYRUNfRkxBR19CQUNLV0FSRCB8IEVYRUNfRkxBR19SRVdJTkQpIDoKKwkJ KEVYRUNfRkxBR19SRVdJTkQpOworCisJc3RhdGUgPSB0dXBsZXN0b3JlX2JlZ2luX2NvbW1vbihl ZmxhZ3MsIGludGVyWGFjdCwgbWF4S0J5dGVzKTsKKwlzdGF0ZS0+ZGF0dW1UeXBlID0gZGF0dW1U eXBlOworCWdldF90eXBsZW5ieXZhbChzdGF0ZS0+ZGF0dW1UeXBlLCAmc3RhdGUtPmRhdHVtVHlw ZUxlbiwgJnN0YXRlLT5kYXR1bVR5cGVCeVZhbCk7CisKKwlzdGF0ZS0+Y29weXR1cCA9IGNvcHl0 dXBfZGF0dW07CisJc3RhdGUtPndyaXRldHVwID0gd3JpdGV0dXBfZGF0dW07CisJc3RhdGUtPnJl YWR0dXAgPSByZWFkdHVwX2RhdHVtOworCXN0YXRlLT5sZW50dXAgPSBsZW50dXBfZGF0dW07CiAK IAlyZXR1cm4gc3RhdGU7CiB9CkBAIC03NzYsNiArODMxLDI1IEBAIHR1cGxlc3RvcmVfcHV0dHVw bGUoVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgSGVhcFR1cGxlIHR1cGxlKQogCU1lbW9yeUNvbnRl eHRTd2l0Y2hUbyhvbGRjeHQpOwogfQogCisvKgorICogTGlrZSB0dXBsZXN0b3JlX3B1dHR1cGxl c2xvdCBidXQgZm9yIHNpbmdsZSBEYXR1bS4KKyAqLwordm9pZAordHVwbGVzdG9yZV9wdXRkYXR1 bShUdXBsZXN0b3Jlc3RhdGUgKnN0YXRlLCBEYXR1bSBkYXR1bSkKK3sKKwlNZW1vcnlDb250ZXh0 IG9sZGN4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhzdGF0ZS0+Y29udGV4dCk7CisKKwkvKgor CSAqIENvcHkgdGhlIERhdHVtLiAgKE11c3QgZG8gdGhpcyBldmVuIGluIFdSSVRFRklMRSBjYXNl LiAgTm90ZSB0aGF0CisJICogQ09QWVRVUCBpbmNsdWRlcyBVU0VNRU0sIHNvIHdlIG5lZWRuJ3Qg ZG8gdGhhdCBoZXJlLikKKwkgKi8KKwlkYXR1bSA9IFBvaW50ZXJHZXREYXR1bShDT1BZVFVQKHN0 YXRlLCBEYXR1bUdldFBvaW50ZXIoZGF0dW0pKSk7CisKKwl0dXBsZXN0b3JlX3B1dHR1cGxlX2Nv bW1vbihzdGF0ZSwgRGF0dW1HZXRQb2ludGVyKGRhdHVtKSk7CisKKwlNZW1vcnlDb250ZXh0U3dp dGNoVG8ob2xkY3h0KTsKK30KKwogLyoKICAqIFNpbWlsYXIgdG8gdHVwbGVzdG9yZV9wdXR0dXBs ZSgpLCBidXQgd29yayBmcm9tIHZhbHVlcyArIG51bGxzIGFycmF5cy4KICAqIFRoaXMgYXZvaWRz IGFuIGV4dHJhIHR1cGxlLWNvbnN0cnVjdGlvbiBvcGVyYXRpb24uCkBAIC0xMDMwLDcgKzExMDQs NyBAQCB0dXBsZXN0b3JlX2dldHR1cGxlKFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIGJvb2wgZm9y d2FyZCwKIAkJCSpzaG91bGRfZnJlZSA9IHRydWU7CiAJCQlpZiAoZm9yd2FyZCkKIAkJCXsKLQkJ CQlpZiAoKHR1cGxlbiA9IGdldGxlbihzdGF0ZSwgdHJ1ZSkpICE9IDApCisJCQkJaWYgKCh0dXBs ZW4gPSBMRU5UVVAoc3RhdGUsIHRydWUpKSAhPSAwKQogCQkJCXsKIAkJCQkJdHVwID0gUkVBRFRV UChzdGF0ZSwgdHVwbGVuKTsKIAkJCQkJcmV0dXJuIHR1cDsKQEAgLTEwNTksNyArMTEzMyw3IEBA IHR1cGxlc3RvcmVfZ2V0dHVwbGUoVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgYm9vbCBmb3J3YXJk LAogCQkJCUFzc2VydCghc3RhdGUtPnRydW5jYXRlZCk7CiAJCQkJcmV0dXJuIE5VTEw7CiAJCQl9 Ci0JCQl0dXBsZW4gPSBnZXRsZW4oc3RhdGUsIGZhbHNlKTsKKwkJCXR1cGxlbiA9IExFTlRVUChz dGF0ZSwgZmFsc2UpOwogCiAJCQlpZiAocmVhZHB0ci0+ZW9mX3JlYWNoZWQpCiAJCQl7CkBAIC0x MDkwLDcgKzExNjQsNyBAQCB0dXBsZXN0b3JlX2dldHR1cGxlKFR1cGxlc3RvcmVzdGF0ZSAqc3Rh dGUsIGJvb2wgZm9yd2FyZCwKIAkJCQkJQXNzZXJ0KCFzdGF0ZS0+dHJ1bmNhdGVkKTsKIAkJCQkJ cmV0dXJuIE5VTEw7CiAJCQkJfQotCQkJCXR1cGxlbiA9IGdldGxlbihzdGF0ZSwgZmFsc2UpOwor CQkJCXR1cGxlbiA9IExFTlRVUChzdGF0ZSwgZmFsc2UpOwogCQkJfQogCiAJCQkvKgpAQCAtMTE1 Miw2ICsxMjI2LDI1IEBAIHR1cGxlc3RvcmVfZ2V0dHVwbGVzbG90KFR1cGxlc3RvcmVzdGF0ZSAq c3RhdGUsIGJvb2wgZm9yd2FyZCwKIAl9CiB9CiAKK2V4dGVybiBib29sIHR1cGxlc3RvcmVfZ2V0 ZGF0dW0oVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgYm9vbCBmb3J3YXJkLAorCQkJCQkJCQlib29s ICpzaG91bGRfZnJlZSwgRGF0dW0gKnJlc3VsdCkKK3sKKwlEYXR1bSBkYXR1bTsKKwkqc2hvdWxk X2ZyZWUgPSBmYWxzZTsKKworCWRhdHVtID0gKERhdHVtKSB0dXBsZXN0b3JlX2dldHR1cGxlKHN0 YXRlLCBmb3J3YXJkLCBzaG91bGRfZnJlZSk7CisJaWYgKGRhdHVtKQorCXsKKwkJKnJlc3VsdCA9 ZGF0dW07CisJCXJldHVybiB0cnVlOworCX0KKwllbHNlCisJeworCQkqcmVzdWx0ID0gUG9pbnRl ckdldERhdHVtKE5VTEwpOworCQlyZXR1cm4gZmFsc2U7CisJfQorfQorCiAvKgogICogdHVwbGVz dG9yZV9hZHZhbmNlIC0gZXhwb3J0ZWQgZnVuY3Rpb24gdG8gYWRqdXN0IHBvc2l0aW9uIHdpdGhv dXQgZmV0Y2hpbmcKICAqCkBAIC0xNTU2LDI1ICsxNjQ5LDYgQEAgdHVwbGVzdG9yZV9pbl9tZW1v cnkoVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSkKIAlyZXR1cm4gKHN0YXRlLT5zdGF0dXMgPT0gVFNT X0lOTUVNKTsKIH0KIAotCi0vKgotICogVGFwZSBpbnRlcmZhY2Ugcm91dGluZXMKLSAqLwotCi1z dGF0aWMgdW5zaWduZWQgaW50Ci1nZXRsZW4oVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgYm9vbCBl b2ZPSykKLXsKLQl1bnNpZ25lZCBpbnQgbGVuOwotCXNpemVfdAkJbmJ5dGVzOwotCi0JbmJ5dGVz ID0gQnVmRmlsZVJlYWRNYXliZUVPRihzdGF0ZS0+bXlmaWxlLCAmbGVuLCBzaXplb2YobGVuKSwg ZW9mT0spOwotCWlmIChuYnl0ZXMgPT0gMCkKLQkJcmV0dXJuIDA7Ci0JZWxzZQotCQlyZXR1cm4g bGVuOwotfQotCi0KIC8qCiAgKiBSb3V0aW5lcyBzcGVjaWFsaXplZCBmb3IgSGVhcFR1cGxlIGNh c2UKICAqCkBAIC0xNTg1LDYgKzE2NTksMTkgQEAgZ2V0bGVuKFR1cGxlc3RvcmVzdGF0ZSAqc3Rh dGUsIGJvb2wgZW9mT0spCiAgKiB0byB3cml0ZSB0aGF0IHNlcGFyYXRlbHkuCiAgKi8KIAorc3Rh dGljIHVuc2lnbmVkIGludAorbGVudHVwX2hlYXAoVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgYm9v bCBlb2ZPSykKK3sKKwl1bnNpZ25lZCBpbnQgbGVuOworCXNpemVfdAkJbmJ5dGVzOworCisJbmJ5 dGVzID0gQnVmRmlsZVJlYWRNYXliZUVPRihzdGF0ZS0+bXlmaWxlLCAmbGVuLCBzaXplb2YobGVu KSwgZW9mT0spOworCWlmIChuYnl0ZXMgPT0gMCkKKwkJcmV0dXJuIDA7CisJZWxzZQorCQlyZXR1 cm4gbGVuOworfQorCiBzdGF0aWMgdm9pZCAqCiBjb3B5dHVwX2hlYXAoVHVwbGVzdG9yZXN0YXRl ICpzdGF0ZSwgdm9pZCAqdHVwKQogewpAQCAtMTYzMSwzICsxNzE4LDk4IEBAIHJlYWR0dXBfaGVh cChUdXBsZXN0b3Jlc3RhdGUgKnN0YXRlLCB1bnNpZ25lZCBpbnQgbGVuKQogCQlCdWZGaWxlUmVh ZEV4YWN0KHN0YXRlLT5teWZpbGUsICZ0dXBsZW4sIHNpemVvZih0dXBsZW4pKTsKIAlyZXR1cm4g dHVwbGU7CiB9CisKKy8qCisgKiBSb3V0aW5lcyBzcGVjaWFsaXplZCBmb3IgRGF0dW0gY2FzZS4K KyAqCisgKiBIYW5kbGVzIGJvdGggZml4ZWQgYW5kIHZhcmlhYmxlLWxlbmd0aCBEYXR1bXMgZWZm aWNpZW50bHk6CisgKiAtIEZpeGVkLWxlbmd0aDogc3RvcmVzIHJhdyBieXRlcyB3aXRob3V0IGxl bmd0aCBwcmVmaXgKKyAqIC0gVmFyaWFibGUtbGVuZ3RoOiBpbmNsdWRlcyBsZW5ndGggcHJlZml4 IChhbmQgc3VmZml4IGlmIGJhY2t3YXJkIHNjYW4pCisgKiAtIEJ5LXZhbHVlIHR5cGVzIGhhbmRs ZWQgaW5saW5lIHdpdGhvdXQgZXh0cmEgY29weWluZworICovCisKK3N0YXRpYyB1bnNpZ25lZCBp bnQKK2xlbnR1cF9kYXR1bShUdXBsZXN0b3Jlc3RhdGUgKnN0YXRlLCBib29sIGVvZk9LKQorewor CXVuc2lnbmVkIGludCBsZW47CisJc2l6ZV90CQluYnl0ZXM7CisKKwlBc3NlcnQoc3RhdGUtPmRh dHVtVHlwZSAhPSBJbnZhbGlkT2lkKTsKKworCWlmIChzdGF0ZS0+ZGF0dW1UeXBlTGVuID4gMCkK KwkJcmV0dXJuIHN0YXRlLT5kYXR1bVR5cGVMZW47CisKKwluYnl0ZXMgPSBCdWZGaWxlUmVhZE1h eWJlRU9GKHN0YXRlLT5teWZpbGUsICZsZW4sIHNpemVvZihsZW4pLCBlb2ZPSyk7CisJaWYgKG5i eXRlcyA9PSAwKQorCQlyZXR1cm4gMDsKKwllbHNlCisJCXJldHVybiBsZW47Cit9CisKK3N0YXRp YyB2b2lkICoKK2NvcHl0dXBfZGF0dW0oVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgdm9pZCogZGF0 dW0pCit7CisJQXNzZXJ0KHN0YXRlLT5kYXR1bVR5cGUgIT0gSW52YWxpZE9pZCk7CisJaWYgKHN0 YXRlLT5kYXR1bVR5cGVCeVZhbCkKKwkJcmV0dXJuIERhdHVtR2V0UG9pbnRlcihQb2ludGVyR2V0 RGF0dW0oZGF0dW0pKTsKKwllbHNlCisJeworCQlEYXR1bSBkID0gZGF0dW1Db3B5KFBvaW50ZXJH ZXREYXR1bShkYXR1bSksIHN0YXRlLT5kYXR1bVR5cGVCeVZhbCwgc3RhdGUtPmRhdHVtVHlwZUxl bik7CisJCVVTRU1FTShzdGF0ZSwgR2V0TWVtb3J5Q2h1bmtTcGFjZShEYXR1bUdldFBvaW50ZXIo ZCkpKTsKKwkJcmV0dXJuIERhdHVtR2V0UG9pbnRlcihkKTsKKwl9Cit9CisKK3N0YXRpYyB2b2lk Cit3cml0ZXR1cF9kYXR1bShUdXBsZXN0b3Jlc3RhdGUgKnN0YXRlLCB2b2lkKiBkYXR1bSkKK3sK KwlBc3NlcnQoc3RhdGUtPmRhdHVtVHlwZSAhPSBJbnZhbGlkT2lkKTsKKwlpZiAoc3RhdGUtPmRh dHVtVHlwZUJ5VmFsKQorCXsKKwkJQXNzZXJ0KHN0YXRlLT5kYXR1bVR5cGVMZW4gPiAwKTsKKwkJ QnVmRmlsZVdyaXRlKHN0YXRlLT5teWZpbGUsIGRhdHVtLCBzdGF0ZS0+ZGF0dW1UeXBlTGVuKTsK Kwl9CisJZWxzZQorCXsKKwkJU2l6ZSBzaXplID0gc3RhdGUtPmRhdHVtVHlwZUxlbjsKKwkJaWYg KHN0YXRlLT5kYXR1bVR5cGVMZW4gPCAwKQorCQl7CisJCQlCdWZGaWxlV3JpdGUoc3RhdGUtPm15 ZmlsZSwgJnNpemUsIHNpemVvZihzaXplKSk7CisJCQlzaXplID0gZGF0dW1HZXRTaXplKFBvaW50 ZXJHZXREYXR1bShkYXR1bSksIHN0YXRlLT5kYXR1bVR5cGVCeVZhbCwgc3RhdGUtPmRhdHVtVHlw ZUxlbik7CisJCX0KKworCQlCdWZGaWxlV3JpdGUoc3RhdGUtPm15ZmlsZSwgZGF0dW0sIHNpemUp OworCisJCS8qIG5lZWQgdHJhaWxpbmcgbGVuZ3RoIHdvcmQ/ICovCisJCWlmIChzdGF0ZS0+YmFj a3dhcmQgJiYgc3RhdGUtPmRhdHVtVHlwZUxlbiA8IDApCisJCQlCdWZGaWxlV3JpdGUoc3RhdGUt Pm15ZmlsZSwgJnNpemUsIHNpemVvZihzaXplKSk7CisKKwkJRlJFRU1FTShzdGF0ZSwgR2V0TWVt b3J5Q2h1bmtTcGFjZShkYXR1bSkpOworCQlwZnJlZShkYXR1bSk7CisJfQorfQorCitzdGF0aWMg dm9pZCoKK3JlYWR0dXBfZGF0dW0oVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgdW5zaWduZWQgaW50 IGxlbikKK3sKKwlBc3NlcnQoc3RhdGUtPmRhdHVtVHlwZSAhPSBJbnZhbGlkT2lkKTsKKwlpZiAo c3RhdGUtPmRhdHVtVHlwZUJ5VmFsKQorCXsKKwkJRGF0dW0gZGF0dW0gPSBQb2ludGVyR2V0RGF0 dW0oTlVMTCk7CisJCUFzc2VydChzdGF0ZS0+ZGF0dW1UeXBlTGVuID4gMCk7CisJCUFzc2VydChs ZW4gPT0gc3RhdGUtPmRhdHVtVHlwZUxlbik7CisJCUJ1ZkZpbGVSZWFkRXhhY3Qoc3RhdGUtPm15 ZmlsZSwgJmRhdHVtLCBzdGF0ZS0+ZGF0dW1UeXBlTGVuKTsKKwkJcmV0dXJuIERhdHVtR2V0UG9p bnRlcihkYXR1bSk7CisJfQorCWVsc2UKKwl7CisJCURhdHVtICpkYXR1bXMgPSBwYWxsb2MobGVu KTsKKwkJQnVmRmlsZVJlYWRFeGFjdChzdGF0ZS0+bXlmaWxlLCAmZGF0dW1zLCBsZW4pOworCisJ CS8qIG5lZWQgdHJhaWxpbmcgbGVuZ3RoIHdvcmQ/ICovCisJCWlmIChzdGF0ZS0+YmFja3dhcmQg JiYgc3RhdGUtPmRhdHVtVHlwZUxlbiA8IDApCisJCQlCdWZGaWxlUmVhZEV4YWN0KHN0YXRlLT5t eWZpbGUsICZsZW4sIHNpemVvZihsZW4pKTsKKworCQlyZXR1cm4gRGF0dW1HZXRQb2ludGVyKCpk YXR1bXMpOworCX0KK30KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3R1cGxlc3RvcmUu aCBiL3NyYy9pbmNsdWRlL3V0aWxzL3R1cGxlc3RvcmUuaAppbmRleCBlZDdjNDU0ZjQ0ZS4uMWY0 MzE4NjMzODcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3R1cGxlc3RvcmUuaAorKysg Yi9zcmMvaW5jbHVkZS91dGlscy90dXBsZXN0b3JlLmgKQEAgLTEsMTcgKzEsMTggQEAKIC8qLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQogICoKICAqIHR1cGxlc3RvcmUuaAotICoJICBHZW5lcmFsaXplZCByb3V0 aW5lcyBmb3IgdGVtcG9yYXJ5IHR1cGxlIHN0b3JhZ2UuCisgKgkgIEdlbmVyYWxpemVkIHJvdXRp bmVzIGZvciB0ZW1wb3Jhcnkgc3RvcmFnZSBvZiB0dXBsZXMgYW5kIERhdHVtcy4KICAqCi0gKiBU aGlzIG1vZHVsZSBoYW5kbGVzIHRlbXBvcmFyeSBzdG9yYWdlIG9mIHR1cGxlcyBmb3IgcHVycG9z ZXMgc3VjaAotICogYXMgTWF0ZXJpYWxpemUgbm9kZXMsIGhhc2hqb2luIGJhdGNoIGZpbGVzLCBl dGMuICBJdCBpcyBlc3NlbnRpYWxseQotICogYSBkdW1iZWQtZG93biB2ZXJzaW9uIG9mIHR1cGxl c29ydC5jOyBpdCBkb2VzIG5vIHNvcnRpbmcgb2YgdHVwbGVzCi0gKiBidXQgY2FuIG9ubHkgc3Rv cmUgYW5kIHJlZ3VyZ2l0YXRlIGEgc2VxdWVuY2Ugb2YgdHVwbGVzLiAgSG93ZXZlciwKLSAqIGJl Y2F1c2Ugbm8gc29ydCBpcyByZXF1aXJlZCwgaXQgaXMgYWxsb3dlZCB0byBzdGFydCByZWFkaW5n IHRoZSBzZXF1ZW5jZQotICogYmVmb3JlIGl0IGhhcyBhbGwgYmVlbiB3cml0dGVuLiAgVGhpcyBp cyBwYXJ0aWN1bGFybHkgdXNlZnVsIGZvciBjdXJzb3JzLAotICogYmVjYXVzZSBpdCBhbGxvd3Mg cmFuZG9tIGFjY2VzcyB3aXRoaW4gdGhlIGFscmVhZHktc2Nhbm5lZCBwb3J0aW9uIG9mCi0gKiBh IHF1ZXJ5IHdpdGhvdXQgaGF2aW5nIHRvIHByb2Nlc3MgdGhlIHVuZGVybHlpbmcgc2NhbiB0byBj b21wbGV0aW9uLgotICogQWxzbywgaXQgaXMgcG9zc2libGUgdG8gc3VwcG9ydCBtdWx0aXBsZSBp bmRlcGVuZGVudCByZWFkIHBvaW50ZXJzLgorICogVGhpcyBtb2R1bGUgaGFuZGxlcyB0ZW1wb3Jh cnkgc3RvcmFnZSBvZiBlaXRoZXIgdHVwbGVzIG9yIHNpbmdsZQorICogRGF0dW0gdmFsdWVzIGZv ciBwdXJwb3NlcyBzdWNoIGFzIE1hdGVyaWFsaXplIG5vZGVzLCBoYXNoam9pbiBiYXRjaAorICog ZmlsZXMsIGV0Yy4gSXQgaXMgZXNzZW50aWFsbHkgYSBkdW1iZWQtZG93biB2ZXJzaW9uIG9mIHR1 cGxlc29ydC5jOworICogaXQgZG9lcyBubyBzb3J0aW5nIG9mIHR1cGxlcyBidXQgY2FuIG9ubHkg c3RvcmUgYW5kIHJlZ3VyZ2l0YXRlIGEgc2VxdWVuY2UKKyAqIG9mIHR1cGxlcy4gIEhvd2V2ZXIs IGJlY2F1c2Ugbm8gc29ydCBpcyByZXF1aXJlZCwgaXQgaXMgYWxsb3dlZCB0byBzdGFydAorICog cmVhZGluZyB0aGUgc2VxdWVuY2UgYmVmb3JlIGl0IGhhcyBhbGwgYmVlbiB3cml0dGVuLgorICoK KyAqIFRoaXMgaXMgcGFydGljdWxhcmx5IHVzZWZ1bCBmb3IgY3Vyc29ycywgYmVjYXVzZSBpdCBh bGxvd3MgcmFuZG9tIGFjY2VzcworICogd2l0aGluIHRoZSBhbHJlYWR5LXNjYW5uZWQgcG9ydGlv biBvZiBhIHF1ZXJ5IHdpdGhvdXQgaGF2aW5nIHRvIHByb2Nlc3MKKyAqIHRoZSB1bmRlcmx5aW5n IHNjYW4gdG8gY29tcGxldGlvbi4KICAqCiAgKiBBIHRlbXBvcmFyeSBmaWxlIGlzIHVzZWQgdG8g aGFuZGxlIHRoZSBkYXRhIGlmIGl0IGV4Y2VlZHMgdGhlCiAgKiBzcGFjZSBsaW1pdCBzcGVjaWZp ZWQgYnkgdGhlIGNhbGxlci4KQEAgLTM5LDE0ICs0MCwxMyBAQAogICovCiB0eXBlZGVmIHN0cnVj dCBUdXBsZXN0b3Jlc3RhdGUgVHVwbGVzdG9yZXN0YXRlOwogCi0vKgotICogQ3VycmVudGx5IHdl IG9ubHkgbmVlZCB0byBzdG9yZSBNaW5pbWFsVHVwbGVzLCBidXQgaXQgd291bGQgYmUgZWFzeQot ICogdG8gc3VwcG9ydCB0aGUgc2FtZSBiZWhhdmlvciBmb3IgSW5kZXhUdXBsZXMgYW5kL29yIGJh cmUgRGF0dW1zLgotICovCi0KIGV4dGVybiBUdXBsZXN0b3Jlc3RhdGUgKnR1cGxlc3RvcmVfYmVn aW5faGVhcChib29sIHJhbmRvbUFjY2VzcywKIAkJCQkJCQkJCQkJICBib29sIGludGVyWGFjdCwK IAkJCQkJCQkJCQkJICBpbnQgbWF4S0J5dGVzKTsKK2V4dGVybiBUdXBsZXN0b3Jlc3RhdGUgKnR1 cGxlc3RvcmVfYmVnaW5fZGF0dW0oT2lkIGRhdHVtVHlwZSwKKwkJCQkJCQkJCQkJIGJvb2wgcmFu ZG9tQWNjZXNzLAorCQkJCQkJCQkJCQkgYm9vbCBpbnRlclhhY3QsCisJCQkJCQkJCQkJCSBpbnQg bWF4S0J5dGVzKTsKIAogZXh0ZXJuIHZvaWQgdHVwbGVzdG9yZV9zZXRfZWZsYWdzKFR1cGxlc3Rv cmVzdGF0ZSAqc3RhdGUsIGludCBlZmxhZ3MpOwogCkBAIC01NSw2ICs1NSw3IEBAIGV4dGVybiB2 b2lkIHR1cGxlc3RvcmVfcHV0dHVwbGVzbG90KFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsCiBleHRl cm4gdm9pZCB0dXBsZXN0b3JlX3B1dHR1cGxlKFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIEhlYXBU dXBsZSB0dXBsZSk7CiBleHRlcm4gdm9pZCB0dXBsZXN0b3JlX3B1dHZhbHVlcyhUdXBsZXN0b3Jl c3RhdGUgKnN0YXRlLCBUdXBsZURlc2MgdGRlc2MsCiAJCQkJCQkJCSBjb25zdCBEYXR1bSAqdmFs dWVzLCBjb25zdCBib29sICppc251bGwpOworZXh0ZXJuIHZvaWQgdHVwbGVzdG9yZV9wdXRkYXR1 bShUdXBsZXN0b3Jlc3RhdGUgKnN0YXRlLCBEYXR1bSBkYXR1bSk7CiAKIGV4dGVybiBpbnQJdHVw bGVzdG9yZV9hbGxvY19yZWFkX3BvaW50ZXIoVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgaW50IGVm bGFncyk7CiAKQEAgLTcyLDYgKzczLDggQEAgZXh0ZXJuIGJvb2wgdHVwbGVzdG9yZV9pbl9tZW1v cnkoVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSk7CiAKIGV4dGVybiBib29sIHR1cGxlc3RvcmVfZ2V0 dHVwbGVzbG90KFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIGJvb2wgZm9yd2FyZCwKIAkJCQkJCQkJ CWJvb2wgY29weSwgVHVwbGVUYWJsZVNsb3QgKnNsb3QpOworZXh0ZXJuIGJvb2wgdHVwbGVzdG9y ZV9nZXRkYXR1bShUdXBsZXN0b3Jlc3RhdGUgKnN0YXRlLCBib29sIGZvcndhcmQsCisJCQkJCQkJ CWJvb2wgKnNob3VsZF9mcmVlLCBEYXR1bSAqcmVzdWx0KTsKIAogZXh0ZXJuIGJvb2wgdHVwbGVz dG9yZV9hZHZhbmNlKFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIGJvb2wgZm9yd2FyZCk7CiAKLS0g CjIuNDMuMAoK --0000000000007d5b96062e941445 Content-Type: text/x-patch; charset="UTF-8"; name="v15-0008-Improve-CREATE-REINDEX-INDEX-CONCURRENTLY-using-.patch" Content-Disposition: attachment; filename="v15-0008-Improve-CREATE-REINDEX-INDEX-CONCURRENTLY-using-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m7dgd9in7 RnJvbSBiOWVkZjViZTQ0NDE5ZjBhNGNhYTc1NWIxMWU2M2YyZTc0ZWJmN2QzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxtaWNoYWlsLm5pa29sYWV2QGdtYWlsLmNvbT4KRGF0 ZTogVHVlLCAzMSBEZWMgMjAyNCAxNTowMzoxMCArMDEwMApTdWJqZWN0OiBbUEFUQ0ggdjE1IDA4 LzEyXSBJbXByb3ZlIENSRUFURS9SRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSB1c2luZwogYXV4 aWxpYXJ5IGluZGV4CgpNb2RpZnkgdGhlIGNvbmN1cnJlbnQgaW5kZXggYnVpbGRpbmcgcHJvY2Vz cyB0byB1c2UgYW4gYXV4aWxpYXJ5IHVubG9nZ2VkIGluZGV4CmR1cmluZyBjb25zdHJ1Y3Rpb24u IFRoaXMgaW1wcm92ZXMgZWZmaWNpZW5jeSBvZiBjb25jdXJyZW50CmluZGV4IG9wZXJhdGlvbnMg Ynk6CgotIENyZWF0aW5nIGFuIGF1eGlsaWFyeSBTVElSIChTaG9ydCBUZXJtIEluZGV4IFJlcGxh Y2VtZW50KSBpbmRleCB0byB0cmFjayBuZXcgdHVwbGVzIGR1cmluZyB0aGUgbWFpbiBpbmRleCBi dWlsZAotIFVzaW5nIHRoZSBhdXhpbGlhcnkgaW5kZXggdG8gY2F0Y2ggYWxsIHR1cGxlcyBpbnNl cnRlZCBkdXJpbmcgdGhlIGJ1aWxkIHBoYXNlIGluc3RlYWQgb2YgcmVseWluZyBvbiBhIHNlY29u ZCBoZWFwIHNjYW4KLSBNZXJnaW5nIHRoZSBhdXhpbGlhcnkgaW5kZXggY29udGVudCB3aXRoIHRo ZSBtYWluIGluZGV4IGR1cmluZyB2YWxpZGF0aW9uCi0gQXV0b21hdGljYWxseSBjbGVhbmluZyB1 cCB0aGUgYXV4aWxpYXJ5IGluZGV4IGFmdGVyIHRoZSBtYWluIGluZGV4IGlzIHJlYWR5CgpUaGlz IGFwcHJvYWNoIGVsaW1pbmF0ZXMgdGhlIG5lZWQgZm9yIGEgc2Vjb25kIGZ1bGwgdGFibGUgc2Nh biBkdXJpbmcgaW5kZXgKdmFsaWRhdGlvbiwgbWFraW5nIHRoZSBwcm9jZXNzIG1vcmUgZWZmaWNp ZW50IGVzcGVjaWFsbHkgZm9yIGxhcmdlIHRhYmxlcy4KVGhlIGF1eGlsaWFyeSBpbmRleCBpcyBh dXRvbWF0aWNhbGx5IGRyb3BwZWQgYWZ0ZXIgdGhlIG1haW4gaW5kZXggYmVjb21lcyB2YWxpZC4K ClRoaXMgY2hhbmdlIGFmZmVjdHMgYm90aCBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGFuZCBS RUlOREVYIElOREVYIENPTkNVUlJFTlRMWQpvcGVyYXRpb25zLiBUaGUgU1RJUiBhY2Nlc3MgbWV0 aG9kIGlzIGFkZGVkIHNwZWNpZmljYWxseSBmb3IgdGhlc2UgYXV4aWxpYXJ5CmluZGV4ZXMgYW5k IGNhbm5vdCBiZSB1c2VkIGRpcmVjdGx5IGJ5IHVzZXJzLgotLS0KIGRvYy9zcmMvc2dtbC9tb25p dG9yaW5nLnNnbWwgICAgICAgICAgICAgICAgICB8ICAyNiArLQogZG9jL3NyYy9zZ21sL3JlZi9j cmVhdGVfaW5kZXguc2dtbCAgICAgICAgICAgIHwgIDMzICstCiBkb2Mvc3JjL3NnbWwvcmVmL3Jl aW5kZXguc2dtbCAgICAgICAgICAgICAgICAgfCAgNDMgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL1JFQURNRS5IT1QgICAgICAgICAgICB8ICAxNSArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvaGVhcGFtX2hhbmRsZXIuYyAgICAgIHwgNTkxICsrKysrKysrKysrKy0tLS0tLQogc3JjL2Jh Y2tlbmQvY2F0YWxvZy9pbmRleC5jICAgICAgICAgICAgICAgICAgIHwgMzEyICsrKysrKystLQog c3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsICAgICAgICAgIHwgIDE3ICstCiBz cmMvYmFja2VuZC9jYXRhbG9nL3RvYXN0aW5nLmMgICAgICAgICAgICAgICAgfCAgIDMgKy0KIHNy Yy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jICAgICAgICAgICAgICB8IDM3NiArKysrKysr Ky0tLQogc3JjL2JhY2tlbmQvbm9kZXMvbWFrZWZ1bmNzLmMgICAgICAgICAgICAgICAgIHwgICA0 ICstCiBzcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oICAgICAgICAgICAgICAgICAgfCAgMzEg Ky0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaCAgICAgICAgICAgICAgICAgICB8ICAxMiAr LQogc3JjL2luY2x1ZGUvY29tbWFuZHMvcHJvZ3Jlc3MuaCAgICAgICAgICAgICAgIHwgIDEzICst CiBzcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCAgICAgICAgICAgICAgICAgfCAgIDQgKy0K IHNyYy9pbmNsdWRlL25vZGVzL21ha2VmdW5jcy5oICAgICAgICAgICAgICAgICB8ICAgMyArLQog Li4uL2V4cGVjdGVkL2NpY19yZXNldF9zbmFwc2hvdHMub3V0ICAgICAgICAgIHwgIDI4ICsKIC4u Li9zcWwvY2ljX3Jlc2V0X3NuYXBzaG90cy5zcWwgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NyZWF0ZV9pbmRleC5vdXQgICAgfCAgNDIgKysKIHNyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaW5kZXhpbmcub3V0ICAgICAgICB8ICAgMyArLQogc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQgICAgICAgICAgIHwgIDE3ICstCiBzcmMvdGVz dC9yZWdyZXNzL3NxbC9jcmVhdGVfaW5kZXguc3FsICAgICAgICAgfCAgMjEgKwogMjEgZmlsZXMg Y2hhbmdlZCwgMTE5MyBpbnNlcnRpb25zKCspLCA0MDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbCBiL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5n LnNnbWwKaW5kZXggNzFjNGY5NmQwNTQuLmFhMTZlMjFlODdhIDEwMDY0NAotLS0gYS9kb2Mvc3Jj L3NnbWwvbW9uaXRvcmluZy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwK QEAgLTYyODgsNiArNjI4OCwxOCBAQCBGUk9NIHBnX3N0YXRfZ2V0X2JhY2tlbmRfaWRzZXQoKSBB UyBiYWNrZW5kaWQ7CiAgICAgICAgaW5mb3JtYXRpb24gZm9yIHRoaXMgcGhhc2UuCiAgICAgICA8 L2VudHJ5PgogICAgICA8L3Jvdz4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeT48bGl0ZXJhbD53 YWl0aW5nIGZvciB3cml0ZXJzIHRvIHVzZSBhdXhpbGlhcnkgaW5kZXg8L2xpdGVyYWw+PC9lbnRy eT4KKyAgICAgIDxlbnRyeT4KKyAgICAgICA8Y29tbWFuZD5DUkVBVEUgSU5ERVggQ09OQ1VSUkVO VExZPC9jb21tYW5kPiBvciA8Y29tbWFuZD5SRUlOREVYIENPTkNVUlJFTlRMWTwvY29tbWFuZD4g aXMgd2FpdGluZyBmb3IgdHJhbnNhY3Rpb25zCisgICAgICAgd2l0aCB3cml0ZSBsb2NrcyB0aGF0 IGNhbiBwb3RlbnRpYWxseSBzZWUgdGhlIHRhYmxlIHRvIGZpbmlzaCwgdG8gZW5zdXJlIHVzZSBv ZiBhdXhpbGlhcnkgaW5kZXggZm9yIG5ldyB0dXBsZXMgaW4KKyAgICAgICBmdXR1cmUgdHJhbnNh Y3Rpb25zLgorICAgICAgIFRoaXMgcGhhc2UgaXMgc2tpcHBlZCB3aGVuIG5vdCBpbiBjb25jdXJy ZW50IG1vZGUuCisgICAgICAgQ29sdW1ucyA8c3RydWN0bmFtZT5sb2NrZXJzX3RvdGFsPC9zdHJ1 Y3RuYW1lPiwgPHN0cnVjdG5hbWU+bG9ja2Vyc19kb25lPC9zdHJ1Y3RuYW1lPgorICAgICAgIGFu ZCA8c3RydWN0bmFtZT5jdXJyZW50X2xvY2tlcl9waWQ8L3N0cnVjdG5hbWU+IGNvbnRhaW4gdGhl IHByb2dyZXNzCisgICAgICAgaW5mb3JtYXRpb24gZm9yIHRoaXMgcGhhc2UuCisgICAgICA8L2Vu dHJ5PgorICAgICA8L3Jvdz4KICAgICAgPHJvdz4KICAgICAgIDxlbnRyeT48bGl0ZXJhbD5idWls ZGluZyBpbmRleDwvbGl0ZXJhbD48L2VudHJ5PgogICAgICAgPGVudHJ5PgpAQCAtNjMyOCwxMyAr NjM0MCwxMiBAQCBGUk9NIHBnX3N0YXRfZ2V0X2JhY2tlbmRfaWRzZXQoKSBBUyBiYWNrZW5kaWQ7 CiAgICAgICA8L2VudHJ5PgogICAgICA8L3Jvdz4KICAgICAgPHJvdz4KLSAgICAgIDxlbnRyeT48 bGl0ZXJhbD5pbmRleCB2YWxpZGF0aW9uOiBzY2FubmluZyB0YWJsZTwvbGl0ZXJhbD48L2VudHJ5 PgorICAgICAgPGVudHJ5PjxsaXRlcmFsPmluZGV4IHZhbGlkYXRpb246IG1lcmdpbmcgaW5kZXhl czwvbGl0ZXJhbD48L2VudHJ5PgogICAgICAgPGVudHJ5PgotICAgICAgIDxjb21tYW5kPkNSRUFU RSBJTkRFWCBDT05DVVJSRU5UTFk8L2NvbW1hbmQ+IGlzIHNjYW5uaW5nIHRoZSB0YWJsZQotICAg ICAgIHRvIHZhbGlkYXRlIHRoZSBpbmRleCB0dXBsZXMgY29sbGVjdGVkIGluIHRoZSBwcmV2aW91 cyB0d28gcGhhc2VzLgorICAgICAgIDxjb21tYW5kPkNSRUFURSBJTkRFWCBDT05DVVJSRU5UTFk8 L2NvbW1hbmQ+IG1lcmdpbmcgY29udGVudCBvZiBhdXhpbGlhcnkgaW5kZXggd2l0aCB0aGUgdGFy Z2V0IGluZGV4LgogICAgICAgIFRoaXMgcGhhc2UgaXMgc2tpcHBlZCB3aGVuIG5vdCBpbiBjb25j dXJyZW50IG1vZGUuCi0gICAgICAgQ29sdW1ucyA8c3RydWN0bmFtZT5ibG9ja3NfdG90YWw8L3N0 cnVjdG5hbWU+IChzZXQgdG8gdGhlIHRvdGFsIHNpemUgb2YgdGhlIHRhYmxlKQotICAgICAgIGFu ZCA8c3RydWN0bmFtZT5ibG9ja3NfZG9uZTwvc3RydWN0bmFtZT4gY29udGFpbiB0aGUgcHJvZ3Jl c3MgaW5mb3JtYXRpb24gZm9yIHRoaXMgcGhhc2UuCisgICAgICAgQ29sdW1ucyA8c3RydWN0bmFt ZT50dXBsZXNfdG90YWw8L3N0cnVjdG5hbWU+IChzZXQgdG8gdGhlIG51bWJlciBvZiB0dXBsZXMg dG8gYmUgbWVyZ2VkKQorICAgICAgIGFuZCA8c3RydWN0bmFtZT50dXBsZXNfZG9uZTwvc3RydWN0 bmFtZT4gY29udGFpbiB0aGUgcHJvZ3Jlc3MgaW5mb3JtYXRpb24gZm9yIHRoaXMgcGhhc2UuCiAg ICAgICA8L2VudHJ5PgogICAgICA8L3Jvdz4KICAgICAgPHJvdz4KQEAgLTYzNTEsOCArNjM2Miw5 IEBAIEZST00gcGdfc3RhdF9nZXRfYmFja2VuZF9pZHNldCgpIEFTIGJhY2tlbmRpZDsKICAgICAg PHJvdz4KICAgICAgIDxlbnRyeT48bGl0ZXJhbD53YWl0aW5nIGZvciByZWFkZXJzIGJlZm9yZSBt YXJraW5nIGRlYWQ8L2xpdGVyYWw+PC9lbnRyeT4KICAgICAgIDxlbnRyeT4KLSAgICAgICA8Y29t bWFuZD5SRUlOREVYIENPTkNVUlJFTlRMWTwvY29tbWFuZD4gaXMgd2FpdGluZyBmb3IgdHJhbnNh Y3Rpb25zCi0gICAgICAgd2l0aCByZWFkIGxvY2tzIG9uIHRoZSB0YWJsZSB0byBmaW5pc2gsIGJl Zm9yZSBtYXJraW5nIHRoZSBvbGQgaW5kZXggZGVhZC4KKyAgICAgICA8Y29tbWFuZD5DUkVBVEUg SU5ERVggQ09OQ1VSUkVOVExZPC9jb21tYW5kPiBpcyB3YWl0aW5nIGZvciB0cmFuc2FjdGlvbnMK KyAgICAgICAgd2l0aCByZWFkIGxvY2tzIG9uIHRoZSB0YWJsZSB0byBmaW5pc2gsIGJlZm9yZSBt YXJraW5nIHRoZSBhdXhpbGlhcnkgaW5kZXggYXMgZGVhZC4KKyAgICAgICA8Y29tbWFuZD5SRUlO REVYIENPTkNVUlJFTlRMWTwvY29tbWFuZD4gaXMgYWxzbyB3YWl0aW5nIGJlZm9yZSBtYXJraW5n IHRoZSBvbGQgaW5kZXggYXMgZGVhZC4KICAgICAgICBUaGlzIHBoYXNlIGlzIHNraXBwZWQgd2hl biBub3QgaW4gY29uY3VycmVudCBtb2RlLgogICAgICAgIENvbHVtbnMgPHN0cnVjdG5hbWU+bG9j a2Vyc190b3RhbDwvc3RydWN0bmFtZT4sIDxzdHJ1Y3RuYW1lPmxvY2tlcnNfZG9uZTwvc3RydWN0 bmFtZT4KICAgICAgICBhbmQgPHN0cnVjdG5hbWU+Y3VycmVudF9sb2NrZXJfcGlkPC9zdHJ1Y3Ru YW1lPiBjb250YWluIHRoZSBwcm9ncmVzcwpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9j cmVhdGVfaW5kZXguc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX2luZGV4LnNnbWwKaW5k ZXggMjA4Mzg5ZTgwMDYuLmUzMzM0NWY2YTM0IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVm L2NyZWF0ZV9pbmRleC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX2luZGV4LnNn bWwKQEAgLTYxNCwyNSArNjE0LDI0IEBAIENSRUFURSBbIFVOSVFVRSBdIElOREVYIFsgQ09OQ1VS UkVOVExZIF0gWyBbIElGIE5PVCBFWElTVFMgXSA8cmVwbGFjZWFibGUgY2xhc3M9CiAgICAgb3V0 IHdyaXRlcy4gIFRoaXMgbWV0aG9kIGlzIGludm9rZWQgYnkgc3BlY2lmeWluZyB0aGUKICAgICA8 bGl0ZXJhbD5DT05DVVJSRU5UTFk8L2xpdGVyYWw+IG9wdGlvbiBvZiA8Y29tbWFuZD5DUkVBVEUg SU5ERVg8L2NvbW1hbmQ+LgogICAgIFdoZW4gdGhpcyBvcHRpb24gaXMgdXNlZCwKLSAgICA8cHJv ZHVjdG5hbWU+UG9zdGdyZVNRTDwvcHJvZHVjdG5hbWU+IG11c3QgcGVyZm9ybSB0d28gc2NhbnMg b2YgdGhlIHRhYmxlLCBhbmQgaW4KLSAgICBhZGRpdGlvbiBpdCBtdXN0IHdhaXQgZm9yIGFsbCBl eGlzdGluZyB0cmFuc2FjdGlvbnMgdGhhdCBjb3VsZCBwb3RlbnRpYWxseQotICAgIG1vZGlmeSBv ciB1c2UgdGhlIGluZGV4IHRvIHRlcm1pbmF0ZS4gIFRodXMKLSAgICB0aGlzIG1ldGhvZCByZXF1 aXJlcyBtb3JlIHRvdGFsIHdvcmsgdGhhbiBhIHN0YW5kYXJkIGluZGV4IGJ1aWxkIGFuZCB0YWtl cwotICAgIHNpZ25pZmljYW50bHkgbG9uZ2VyIHRvIGNvbXBsZXRlLiAgSG93ZXZlciwgc2luY2Ug aXQgYWxsb3dzIG5vcm1hbAorICAgIDxwcm9kdWN0bmFtZT5Qb3N0Z3JlU1FMPC9wcm9kdWN0bmFt ZT4gbXVzdCBwZXJmb3JtIHNldmVyYWwgc3RlcHMgdG8gZW5zdXJlIGRhdGEKKyAgICBjb25zaXN0 ZW5jeSB3aGlsZSBhbGxvd2luZyBub3JtYWwgb3BlcmF0aW9ucyB0byBjb250aW51ZS4KKyAgICBU aGlzIG1ldGhvZCByZXF1aXJlcyBtb3JlIHRvdGFsIHdvcmsgdGhhbiBhIHN0YW5kYXJkIGluZGV4 IGJ1aWxkIGFuZCB0YWtlcworICAgIGxvbmdlciB0byBjb21wbGV0ZS4gIEhvd2V2ZXIsIHNpbmNl IGl0IGFsbG93cyBub3JtYWwKICAgICBvcGVyYXRpb25zIHRvIGNvbnRpbnVlIHdoaWxlIHRoZSBp bmRleCBpcyBidWlsdCwgdGhpcyBtZXRob2QgaXMgdXNlZnVsIGZvcgogICAgIGFkZGluZyBuZXcg aW5kZXhlcyBpbiBhIHByb2R1Y3Rpb24gZW52aXJvbm1lbnQuICBPZiBjb3Vyc2UsIHRoZSBleHRy YSBDUFUKICAgICBhbmQgSS9PIGxvYWQgaW1wb3NlZCBieSB0aGUgaW5kZXggY3JlYXRpb24gbWln aHQgc2xvdyBvdGhlciBvcGVyYXRpb25zLgogICAgPC9wYXJhPgogCiAgICA8cGFyYT4KLSAgICBJ biBhIGNvbmN1cnJlbnQgaW5kZXggYnVpbGQsIHRoZSBpbmRleCBpcyBhY3R1YWxseSBlbnRlcmVk IGFzIGFuCisgICAgSW4gYSBjb25jdXJyZW50IGluZGV4IGJ1aWxkLCB0aGUgbWFpbiBhbmQgYXV4 aWxpYXJ5IGluZGV4ZXMgaXMgYWN0dWFsbHkgZW50ZXJlZCBhcyBhbgogICAgIDxxdW90ZT5pbnZh bGlkPC9xdW90ZT4gaW5kZXggaW50bwotICAgIHRoZSBzeXN0ZW0gY2F0YWxvZ3MgaW4gb25lIHRy YW5zYWN0aW9uLCB0aGVuIHR3byB0YWJsZSBzY2FucyBvY2N1ciBpbgotICAgIHR3byBtb3JlIHRy YW5zYWN0aW9ucy4gIEJlZm9yZSBlYWNoIHRhYmxlIHNjYW4sIHRoZSBpbmRleCBidWlsZCBtdXN0 CisgICAgdGhlIHN5c3RlbSBjYXRhbG9ncyBpbiBvbmUgdHJhbnNhY3Rpb24sIHRoZW4gdHdvIHBo YXNlcyBvY2N1ciBpbgorICAgIG11bHRpcGxlIHRyYW5zYWN0aW9ucy4gIEJlZm9yZSBlYWNoIHBo YXNlLCB0aGUgaW5kZXggYnVpbGQgbXVzdAogICAgIHdhaXQgZm9yIGV4aXN0aW5nIHRyYW5zYWN0 aW9ucyB0aGF0IGhhdmUgbW9kaWZpZWQgdGhlIHRhYmxlIHRvIHRlcm1pbmF0ZS4KLSAgICBBZnRl ciB0aGUgc2Vjb25kIHNjYW4sIHRoZSBpbmRleCBidWlsZCBtdXN0IHdhaXQgZm9yIGFueSB0cmFu c2FjdGlvbnMKKyAgICBBZnRlciB0aGUgc2Vjb25kIHBoYXNlLCB0aGUgaW5kZXggYnVpbGQgbXVz dCB3YWl0IGZvciBhbnkgdHJhbnNhY3Rpb25zCiAgICAgdGhhdCBoYXZlIGEgc25hcHNob3QgKHNl ZSA8eHJlZiBsaW5rZW5kPSJtdmNjIi8+KSBwcmVkYXRpbmcgdGhlIHNlY29uZAotICAgIHNjYW4g dG8gdGVybWluYXRlLCBpbmNsdWRpbmcgdHJhbnNhY3Rpb25zIHVzZWQgYnkgYW55IHBoYXNlIG9m IGNvbmN1cnJlbnQKKyAgICBwaGFzZSB0byB0ZXJtaW5hdGUsIGluY2x1ZGluZyB0cmFuc2FjdGlv bnMgdXNlZCBieSBhbnkgcGhhc2Ugb2YgY29uY3VycmVudAogICAgIGluZGV4IGJ1aWxkcyBvbiBv dGhlciB0YWJsZXMsIGlmIHRoZSBpbmRleGVzIGludm9sdmVkIGFyZSBwYXJ0aWFsIG9yIGhhdmUK ICAgICBjb2x1bW5zIHRoYXQgYXJlIG5vdCBzaW1wbGUgY29sdW1uIHJlZmVyZW5jZXMuCiAgICAg VGhlbiBmaW5hbGx5IHRoZSBpbmRleCBjYW4gYmUgbWFya2VkIDxxdW90ZT52YWxpZDwvcXVvdGU+ IGFuZCByZWFkeSBmb3IgdXNlLApAQCAtNjQ1LDEwICs2NDQsMTEgQEAgQ1JFQVRFIFsgVU5JUVVF IF0gSU5ERVggWyBDT05DVVJSRU5UTFkgXSBbIFsgSUYgTk9UIEVYSVNUUyBdIDxyZXBsYWNlYWJs ZSBjbGFzcz0KICAgIDxwYXJhPgogICAgIElmIGEgcHJvYmxlbSBhcmlzZXMgd2hpbGUgc2Nhbm5p bmcgdGhlIHRhYmxlLCBzdWNoIGFzIGEgZGVhZGxvY2sgb3IgYQogICAgIHVuaXF1ZW5lc3Mgdmlv bGF0aW9uIGluIGEgdW5pcXVlIGluZGV4LCB0aGUgPGNvbW1hbmQ+Q1JFQVRFIElOREVYPC9jb21t YW5kPgotICAgIGNvbW1hbmQgd2lsbCBmYWlsIGJ1dCBsZWF2ZSBiZWhpbmQgYW4gPHF1b3RlPmlu dmFsaWQ8L3F1b3RlPiBpbmRleC4gVGhpcyBpbmRleAotICAgIHdpbGwgYmUgaWdub3JlZCBmb3Ig cXVlcnlpbmcgcHVycG9zZXMgYmVjYXVzZSBpdCBtaWdodCBiZSBpbmNvbXBsZXRlOwotICAgIGhv d2V2ZXIgaXQgd2lsbCBzdGlsbCBjb25zdW1lIHVwZGF0ZSBvdmVyaGVhZC4gVGhlIDxhcHBsaWNh dGlvbj5wc3FsPC9hcHBsaWNhdGlvbj4KLSAgICA8Y29tbWFuZD5cZDwvY29tbWFuZD4gY29tbWFu ZCB3aWxsIHJlcG9ydCBzdWNoIGFuIGluZGV4IGFzIDxsaXRlcmFsPklOVkFMSUQ8L2xpdGVyYWw+ OgorICAgIGNvbW1hbmQgd2lsbCBmYWlsIGJ1dCBsZWF2ZSBiZWhpbmQgYW4gPHF1b3RlPmludmFs aWQ8L3F1b3RlPiBpbmRleCBhbmQgaXRzCisgICAgYXNzb2NpYXRlZCBhdXhpbGlhcnkgaW5kZXgu IFRoZXNlIGluZGV4ZXMKKyAgICB3aWxsIGJlIGlnbm9yZWQgZm9yIHF1ZXJ5aW5nIHB1cnBvc2Vz IGJlY2F1c2UgdGhleSBtaWdodCBiZSBpbmNvbXBsZXRlOworICAgIGhvd2V2ZXIgdGhleSB3aWxs IHN0aWxsIGNvbnN1bWUgdXBkYXRlIG92ZXJoZWFkLiBUaGUgPGFwcGxpY2F0aW9uPnBzcWw8L2Fw cGxpY2F0aW9uPgorICAgIDxjb21tYW5kPlxkPC9jb21tYW5kPiBjb21tYW5kIHdpbGwgcmVwb3J0 IHN1Y2ggaW5kZXhlcyBhcyA8bGl0ZXJhbD5JTlZBTElEPC9saXRlcmFsPjoKIAogPHByb2dyYW1s aXN0aW5nPgogcG9zdGdyZXM9IyBcZCB0YWIKQEAgLTY1OCwxMSArNjU4LDEyIEBAIHBvc3RncmVz PSMgXGQgdGFiCiAgY29sICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwKIElu ZGV4ZXM6CiAgICAgImlkeCIgYnRyZWUgKGNvbCkgSU5WQUxJRAorICAgICJpZHhfY2NhdXgiIHN0 aXIgKGNvbCkgSU5WQUxJRAogPC9wcm9ncmFtbGlzdGluZz4KIAogICAgIFRoZSByZWNvbW1lbmRl ZCByZWNvdmVyeQotICAgIG1ldGhvZCBpbiBzdWNoIGNhc2VzIGlzIHRvIGRyb3AgdGhlIGluZGV4 IGFuZCB0cnkgYWdhaW4gdG8gcGVyZm9ybQotICAgIDxjb21tYW5kPkNSRUFURSBJTkRFWCBDT05D VVJSRU5UTFk8L2NvbW1hbmQ+LiAgKEFub3RoZXIgcG9zc2liaWxpdHkgaXMKKyAgICBtZXRob2Qg aW4gc3VjaCBjYXNlcyBpcyB0byBkcm9wIHRoZXNlIGluZGV4ZXMgYW5kIHRyeSBhZ2FpbiB0byBw ZXJmb3JtCisgICAgPGNvbW1hbmQ+Q1JFQVRFIElOREVYIENPTkNVUlJFTlRMWTwvY29tbWFuZD4u IChBbm90aGVyIHBvc3NpYmlsaXR5IGlzCiAgICAgdG8gcmVidWlsZCB0aGUgaW5kZXggd2l0aCA8 Y29tbWFuZD5SRUlOREVYIElOREVYIENPTkNVUlJFTlRMWTwvY29tbWFuZD4pLgogICAgPC9wYXJh PgogCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL3JlaW5kZXguc2dtbCBiL2RvYy9zcmMv c2dtbC9yZWYvcmVpbmRleC5zZ21sCmluZGV4IDViM2M3Njk4MDBlLi42YTA1NjIwYmQ2NyAxMDA2 NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9yZWluZGV4LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21s L3JlZi9yZWluZGV4LnNnbWwKQEAgLTM2OCwxMSArMzY4LDEwIEBAIFJFSU5ERVggWyAoIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5vcHRpb248L3JlcGxhY2VhYmxlPiBbLCAuLi5dICkg XSB7IERBCiAgICAgPHByb2R1Y3RuYW1lPlBvc3RncmVTUUw8L3Byb2R1Y3RuYW1lPiBzdXBwb3J0 cyByZWJ1aWxkaW5nIGluZGV4ZXMgd2l0aCBtaW5pbXVtIGxvY2tpbmcKICAgICBvZiB3cml0ZXMu ICBUaGlzIG1ldGhvZCBpcyBpbnZva2VkIGJ5IHNwZWNpZnlpbmcgdGhlCiAgICAgPGxpdGVyYWw+ Q09OQ1VSUkVOVExZPC9saXRlcmFsPiBvcHRpb24gb2YgPGNvbW1hbmQ+UkVJTkRFWDwvY29tbWFu ZD4uIFdoZW4gdGhpcyBvcHRpb24KLSAgICBpcyB1c2VkLCA8cHJvZHVjdG5hbWU+UG9zdGdyZVNR TDwvcHJvZHVjdG5hbWU+IG11c3QgcGVyZm9ybSB0d28gc2NhbnMgb2YgdGhlIHRhYmxlCi0gICAg Zm9yIGVhY2ggaW5kZXggdGhhdCBuZWVkcyB0byBiZSByZWJ1aWx0IGFuZCB3YWl0IGZvciB0ZXJt aW5hdGlvbiBvZgotICAgIGFsbCBleGlzdGluZyB0cmFuc2FjdGlvbnMgdGhhdCBjb3VsZCBwb3Rl bnRpYWxseSB1c2UgdGhlIGluZGV4LgorICAgIGlzIHVzZWQsIDxwcm9kdWN0bmFtZT5Qb3N0Z3Jl U1FMPC9wcm9kdWN0bmFtZT4gbXVzdCBwZXJmb3JtIHNldmVyYWwgc3RlcHMgdG8gZW5zdXJlIGRh dGEKKyAgICBjb25zaXN0ZW5jeSB3aGlsZSBhbGxvd2luZyBub3JtYWwgb3BlcmF0aW9ucyB0byBj b250aW51ZS4KICAgICBUaGlzIG1ldGhvZCByZXF1aXJlcyBtb3JlIHRvdGFsIHdvcmsgdGhhbiBh IHN0YW5kYXJkIGluZGV4Ci0gICAgcmVidWlsZCBhbmQgdGFrZXMgc2lnbmlmaWNhbnRseSBsb25n ZXIgdG8gY29tcGxldGUgYXMgaXQgbmVlZHMgdG8gd2FpdAorICAgIHJlYnVpbGQgYW5kIHRha2Vz IGxvbmdlciB0byBjb21wbGV0ZSBhcyBpdCBuZWVkcyB0byB3YWl0CiAgICAgZm9yIHVuZmluaXNo ZWQgdHJhbnNhY3Rpb25zIHRoYXQgbWlnaHQgbW9kaWZ5IHRoZSBpbmRleC4gSG93ZXZlciwgc2lu Y2UKICAgICBpdCBhbGxvd3Mgbm9ybWFsIG9wZXJhdGlvbnMgdG8gY29udGludWUgd2hpbGUgdGhl IGluZGV4IGlzIGJlaW5nIHJlYnVpbHQsIHRoaXMKICAgICBtZXRob2QgaXMgdXNlZnVsIGZvciBy ZWJ1aWxkaW5nIGluZGV4ZXMgaW4gYSBwcm9kdWN0aW9uIGVudmlyb25tZW50LiBPZgpAQCAtMzg4 LDcgKzM4Nyw3IEBAIFJFSU5ERVggWyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5v cHRpb248L3JlcGxhY2VhYmxlPiBbLCAuLi5dICkgXSB7IERBCiAgICAgPG9yZGVyZWRsaXN0Pgog ICAgICA8bGlzdGl0ZW0+CiAgICAgICA8cGFyYT4KLSAgICAgICBBIG5ldyB0cmFuc2llbnQgaW5k ZXggZGVmaW5pdGlvbiBpcyBhZGRlZCB0byB0aGUgY2F0YWxvZworICAgICAgIEEgbmV3IHRyYW5z aWVudCBpbmRleCBkZWZpbml0aW9uIGFuZCBhbiBhdXhpbGlhcnkgaW5kZXggYXJlIGFkZGVkIHRv IHRoZSBjYXRhbG9nCiAgICAgICAgPGxpdGVyYWw+cGdfaW5kZXg8L2xpdGVyYWw+LiAgVGhpcyBk ZWZpbml0aW9uIHdpbGwgYmUgdXNlZCB0byByZXBsYWNlCiAgICAgICAgdGhlIG9sZCBpbmRleC4g IEEgPGxpdGVyYWw+U0hBUkUgVVBEQVRFIEVYQ0xVU0lWRTwvbGl0ZXJhbD4gbG9jayBhdAogICAg ICAgIHNlc3Npb24gbGV2ZWwgaXMgdGFrZW4gb24gdGhlIGluZGV4ZXMgYmVpbmcgcmVpbmRleGVk IGFzIHdlbGwgYXMgdGhlaXIKQEAgLTM5OCw3ICszOTcsMTUgQEAgUkVJTkRFWCBbICggPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm9wdGlvbjwvcmVwbGFjZWFibGU+IFssIC4uLl0gKSBd IHsgREEKIAogICAgICA8bGlzdGl0ZW0+CiAgICAgICA8cGFyYT4KLSAgICAgICBBIGZpcnN0IHBh c3MgdG8gYnVpbGQgdGhlIGluZGV4IGlzIGRvbmUgZm9yIGVhY2ggbmV3IGluZGV4LiAgT25jZSB0 aGUKKyAgICAgICBUaGUgYXV4aWxpYXJ5IGluZGV4IGlzIG1hcmtlZCBhcyAicmVhZHkgZm9yIGlu c2VydHMiLCBtYWtpbmcKKyAgICAgICBpdCB2aXNpYmxlIHRvIG90aGVyIHNlc3Npb25zLiBUaGlz IGluZGV4IGVmZmljaWVudGx5IHRyYWNrcyBhbGwgbmV3CisgICAgICAgdHVwbGVzIGR1cmluZyB0 aGUgcmVpbmRleCBwcm9jZXNzLgorICAgICAgPC9wYXJhPgorICAgICA8L2xpc3RpdGVtPgorCisg ICAgIDxsaXN0aXRlbT4KKyAgICAgIDxwYXJhPgorICAgICAgIFRoZSBuZXcgbWFpbiBpbmRleCBp cyBidWlsdCBieSBzY2FubmluZyB0aGUgdGFibGUuICBPbmNlIHRoZQogICAgICAgIGluZGV4IGlz IGJ1aWx0LCBpdHMgZmxhZyA8bGl0ZXJhbD5wZ19pbmRleC5pbmRpc3JlYWR5PC9saXRlcmFsPiBp cwogICAgICAgIHN3aXRjaGVkIHRvIDxxdW90ZT50cnVlPC9xdW90ZT4gdG8gbWFrZSBpdCByZWFk eSBmb3IgaW5zZXJ0cywgbWFraW5nIGl0CiAgICAgICAgdmlzaWJsZSB0byBvdGhlciBzZXNzaW9u cyBvbmNlIHRoZSB0cmFuc2FjdGlvbiB0aGF0IHBlcmZvcm1lZCB0aGUgYnVpbGQKQEAgLTQwOSw5 ICs0MTYsOSBAQCBSRUlOREVYIFsgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+b3B0 aW9uPC9yZXBsYWNlYWJsZT4gWywgLi4uXSApIF0geyBEQQogCiAgICAgIDxsaXN0aXRlbT4KICAg ICAgIDxwYXJhPgotICAgICAgIFRoZW4gYSBzZWNvbmQgcGFzcyBpcyBwZXJmb3JtZWQgdG8gYWRk IHR1cGxlcyB0aGF0IHdlcmUgYWRkZWQgd2hpbGUgdGhlCi0gICAgICAgZmlyc3QgcGFzcyB3YXMg cnVubmluZy4gIFRoaXMgc3RlcCBpcyBhbHNvIGRvbmUgaW4gYSBzZXBhcmF0ZQotICAgICAgIHRy YW5zYWN0aW9uIGZvciBlYWNoIGluZGV4LgorICAgICAgIEEgdmFsaWRhdGlvbiBwaGFzZSBtZXJn ZXMgYW55IG1pc3NpbmcgZW50cmllcyBmcm9tIHRoZSBhdXhpbGlhcnkgaW5kZXgKKyAgICAgICBp bnRvIHRoZSBtYWluIGluZGV4LCBlbnN1cmluZyBhbGwgY29uY3VycmVudCBjaGFuZ2VzIGFyZSBj YXB0dXJlZC4KKyAgICAgICBUaGlzIHN0ZXAgaXMgYWxzbyBkb25lIGluIGEgc2VwYXJhdGUgdHJh bnNhY3Rpb24gZm9yIGVhY2ggaW5kZXguCiAgICAgICA8L3BhcmE+CiAgICAgIDwvbGlzdGl0ZW0+ CiAKQEAgLTQyOCw3ICs0MzUsNyBAQCBSRUlOREVYIFsgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+b3B0aW9uPC9yZXBsYWNlYWJsZT4gWywgLi4uXSApIF0geyBEQQogCiAgICAgIDxs aXN0aXRlbT4KICAgICAgIDxwYXJhPgotICAgICAgIFRoZSBvbGQgaW5kZXhlcyBoYXZlIDxsaXRl cmFsPnBnX2luZGV4LmluZGlzcmVhZHk8L2xpdGVyYWw+IHN3aXRjaGVkIHRvCisgICAgICAgVGhl IG9sZCBhbmQgYXV4aWxpYXJ5IGluZGV4ZXMgaGF2ZSA8bGl0ZXJhbD5wZ19pbmRleC5pbmRpc3Jl YWR5PC9saXRlcmFsPiBzd2l0Y2hlZCB0bwogICAgICAgIDxxdW90ZT5mYWxzZTwvcXVvdGU+IHRv IHByZXZlbnQgYW55IG5ldyB0dXBsZSBpbnNlcnRpb25zLCBhZnRlciB3YWl0aW5nCiAgICAgICAg Zm9yIHJ1bm5pbmcgcXVlcmllcyB0aGF0IG1pZ2h0IHJlZmVyZW5jZSB0aGUgb2xkIGluZGV4IHRv IGNvbXBsZXRlLgogICAgICAgPC9wYXJhPgpAQCAtNDM2LDcgKzQ0Myw3IEBAIFJFSU5ERVggWyAo IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5vcHRpb248L3JlcGxhY2VhYmxlPiBbLCAu Li5dICkgXSB7IERBCiAKICAgICAgPGxpc3RpdGVtPgogICAgICAgPHBhcmE+Ci0gICAgICAgVGhl IG9sZCBpbmRleGVzIGFyZSBkcm9wcGVkLiAgVGhlIDxsaXRlcmFsPlNIQVJFIFVQREFURQorICAg ICAgIFRoZSBvbGQgYW5kIGF1eGlsaWFyeSBpbmRleGVzIGFyZSBkcm9wcGVkLiAgVGhlIDxsaXRl cmFsPlNIQVJFIFVQREFURQogICAgICAgIEVYQ0xVU0lWRTwvbGl0ZXJhbD4gc2Vzc2lvbiBsb2Nr cyBmb3IgdGhlIGluZGV4ZXMgYW5kIHRoZSB0YWJsZSBhcmUKICAgICAgICByZWxlYXNlZC4KICAg ICAgIDwvcGFyYT4KQEAgLTQ0NywxMSArNDU0LDExIEBAIFJFSU5ERVggWyAoIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5vcHRpb248L3JlcGxhY2VhYmxlPiBbLCAuLi5dICkgXSB7IERB CiAgICA8cGFyYT4KICAgICBJZiBhIHByb2JsZW0gYXJpc2VzIHdoaWxlIHJlYnVpbGRpbmcgdGhl IGluZGV4ZXMsIHN1Y2ggYXMgYQogICAgIHVuaXF1ZW5lc3MgdmlvbGF0aW9uIGluIGEgdW5pcXVl IGluZGV4LCB0aGUgPGNvbW1hbmQ+UkVJTkRFWDwvY29tbWFuZD4KLSAgICBjb21tYW5kIHdpbGwg ZmFpbCBidXQgbGVhdmUgYmVoaW5kIGFuIDxxdW90ZT5pbnZhbGlkPC9xdW90ZT4gbmV3IGluZGV4 IGluIGFkZGl0aW9uIHRvCi0gICAgdGhlIHByZS1leGlzdGluZyBvbmUuIFRoaXMgaW5kZXggd2ls bCBiZSBpZ25vcmVkIGZvciBxdWVyeWluZyBwdXJwb3NlcwotICAgIGJlY2F1c2UgaXQgbWlnaHQg YmUgaW5jb21wbGV0ZTsgaG93ZXZlciBpdCB3aWxsIHN0aWxsIGNvbnN1bWUgdXBkYXRlCisgICAg Y29tbWFuZCB3aWxsIGZhaWwgYnV0IGxlYXZlIGJlaGluZCBhbiA8cXVvdGU+aW52YWxpZDwvcXVv dGU+IG5ldyBpbmRleCBhbmQgaXRzIGF1eGlsaWFyeSBpbmRleCBpbiBhZGRpdGlvbiB0bworICAg IHRoZSBwcmUtZXhpc3Rpbmcgb25lLiBUaGVzZSBpbmRleGVzIHdpbGwgYmUgaWdub3JlZCBmb3Ig cXVlcnlpbmcgcHVycG9zZXMKKyAgICBiZWNhdXNlIHRoZXkgbWlnaHQgYmUgaW5jb21wbGV0ZTsg aG93ZXZlciB0aGV5IHdpbGwgc3RpbGwgY29uc3VtZSB1cGRhdGUKICAgICBvdmVyaGVhZC4gVGhl IDxhcHBsaWNhdGlvbj5wc3FsPC9hcHBsaWNhdGlvbj4gPGNvbW1hbmQ+XGQ8L2NvbW1hbmQ+IGNv bW1hbmQgd2lsbCByZXBvcnQKLSAgICBzdWNoIGFuIGluZGV4IGFzIDxsaXRlcmFsPklOVkFMSUQ8 L2xpdGVyYWw+OgorICAgIHN1Y2ggaW5kZXhlcyBhcyA8bGl0ZXJhbD5JTlZBTElEPC9saXRlcmFs PjoKIAogPHByb2dyYW1saXN0aW5nPgogcG9zdGdyZXM9IyBcZCB0YWIKQEAgLTQ2MiwxMiArNDY5 LDE0IEBAIHBvc3RncmVzPSMgXGQgdGFiCiBJbmRleGVzOgogICAgICJpZHgiIGJ0cmVlIChjb2wp CiAgICAgImlkeF9jY25ldyIgYnRyZWUgKGNvbCkgSU5WQUxJRAorICAgICJpZHhfY2NhdXgiIHN0 aXIgKGNvbCkgSU5WQUxJRAorCiA8L3Byb2dyYW1saXN0aW5nPgogCiAgICAgSWYgdGhlIGluZGV4 IG1hcmtlZCA8bGl0ZXJhbD5JTlZBTElEPC9saXRlcmFsPiBpcyBzdWZmaXhlZAotICAgIDxsaXRl cmFsPmNjbmV3PC9saXRlcmFsPiwgdGhlbiBpdCBjb3JyZXNwb25kcyB0byB0aGUgdHJhbnNpZW50 CisgICAgPGxpdGVyYWw+Y2NuZXc8L2xpdGVyYWwgb3IgPGxpdGVyYWw+Y2NhdXg8L2xpdGVyYWw+ LCB0aGVuIGl0IGNvcnJlc3BvbmRzIHRvIHRoZSB0cmFuc2llbnQgb3IgYXV4aWxpYXJ5CiAgICAg aW5kZXggY3JlYXRlZCBkdXJpbmcgdGhlIGNvbmN1cnJlbnQgb3BlcmF0aW9uLCBhbmQgdGhlIHJl Y29tbWVuZGVkCi0gICAgcmVjb3ZlcnkgbWV0aG9kIGlzIHRvIGRyb3AgaXQgdXNpbmcgPGxpdGVy YWw+RFJPUCBJTkRFWDwvbGl0ZXJhbD4sCisgICAgcmVjb3ZlcnkgbWV0aG9kIGlzIHRvIGRyb3Ag dGhlc2UgaW5kZXhlcyB1c2luZyA8bGl0ZXJhbD5EUk9QIElOREVYPC9saXRlcmFsPiwKICAgICB0 aGVuIGF0dGVtcHQgPGNvbW1hbmQ+UkVJTkRFWCBDT05DVVJSRU5UTFk8L2NvbW1hbmQ+IGFnYWlu LgogICAgIElmIHRoZSBpbnZhbGlkIGluZGV4IGlzIGluc3RlYWQgc3VmZml4ZWQgPGxpdGVyYWw+ Y2NvbGQ8L2xpdGVyYWw+LAogICAgIGl0IGNvcnJlc3BvbmRzIHRvIHRoZSBvcmlnaW5hbCBpbmRl eCB3aGljaCBjb3VsZCBub3QgYmUgZHJvcHBlZDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL1JFQURNRS5IT1QgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9U CmluZGV4IDgyOWRhZDExOTRlLi5kNDE2MDljOTdjZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvUkVBRE1FLkhPVAorKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFE TUUuSE9UCkBAIC0zNzUsNiArMzc1LDExIEBAIGNvbnN0cmFpbnQgb24gd2hpY2ggdXBkYXRlcyBj YW4gYmUgSE9ULiAgT3RoZXIgdHJhbnNhY3Rpb25zIG11c3QgaW5jbHVkZQogc3VjaCBhbiBpbmRl eCB3aGVuIGRldGVybWluaW5nIEhPVC1zYWZldHkgb2YgdXBkYXRlcywgZXZlbiB0aG91Z2ggdGhl eQogbXVzdCBpZ25vcmUgaXQgZm9yIGJvdGggaW5zZXJ0aW9uIGFuZCBzZWFyY2hpbmcgcHVycG9z ZXMuCiAKK0Fsc28sIHNwZWNpYWwgYXV4aWxpYXJ5IGluZGV4IGlzIGNyZWF0ZWQgdGhlIHNhbWUg d2F5LiBJdCBtYXJrZWQgYXMKKyJyZWFkeSBmb3IgaW5zZXJ0cyIgd2l0aG91dCBhbnkgYWN0dWFs IHRhYmxlIHNjYW4uIEl0cyBwdXJwb3NlIGlzIGNvbGxlY3QKK25ldyB0dXBsZXMgaW5zZXJ0ZWQg aW50byB0YWJsZSB3aGlsZSBvdXIgdGFyZ2V0IGluZGV4IGlzIHN0aWxsICJub3QgcmVhZHkKK2Zv ciBpbnNlcnRzIgorCiBXZSBtdXN0IGRvIHRoaXMgdG8gYXZvaWQgbWFraW5nIGluY29ycmVjdCBp bmRleCBlbnRyaWVzLiAgRm9yIGV4YW1wbGUsCiBzdXBwb3NlIHdlIGFyZSBidWlsZGluZyBhbiBp bmRleCBvbiBjb2x1bW4gWCBhbmQgd2UgbWFrZSBhbiBpbmRleCBlbnRyeSBmb3IKIGEgbm9uLUhP VCB0dXBsZSB3aXRoIFg9MS4gIFRoZW4gc29tZSBvdGhlciBiYWNrZW5kLCB1bmF3YXJlIHRoYXQg WCBpcyBhbgpAQCAtMzk0LDE0ICszOTksMTQgQEAgQXMgYWJvdmUsIHdlIHBvaW50IHRoZSBpbmRl eCBlbnRyeSBhdCB0aGUgcm9vdCBvZiB0aGUgSE9ULXVwZGF0ZSBjaGFpbiBidXQgd2UKIHVzZSB0 aGUga2V5IHZhbHVlIGZyb20gdGhlIGxpdmUgdHVwbGUuCiAKIFdlIG1hcmsgdGhlIGluZGV4IG9w ZW4gZm9yIGluc2VydHMgKGJ1dCBzdGlsbCBub3QgcmVhZHkgZm9yIHJlYWRzKSB0aGVuCi13ZSBh Z2FpbiB3YWl0IGZvciB0cmFuc2FjdGlvbnMgd2hpY2ggaGF2ZSB0aGUgdGFibGUgb3Blbi4gIFRo ZW4gd2UgdGFrZQotYSBzZWNvbmQgcmVmZXJlbmNlIHNuYXBzaG90IGFuZCB2YWxpZGF0ZSB0aGUg aW5kZXguICBUaGlzIHNlYXJjaGVzIGZvcgotdHVwbGVzIG1pc3NpbmcgZnJvbSB0aGUgaW5kZXgs IGFuZCBpbnNlcnRzIGFueSBtaXNzaW5nIG9uZXMuICBBZ2FpbiwKLXRoZSBpbmRleCBlbnRyaWVz IGhhdmUgdG8gaGF2ZSBUSURzIGVxdWFsIHRvIEhPVC1jaGFpbiByb290IFRJRHMsIGJ1dAord2Ug YWdhaW4gd2FpdCBmb3IgdHJhbnNhY3Rpb25zIHdoaWNoIGhhdmUgdGhlIHRhYmxlIG9wZW4uICBU aGVuIHZhbGlkYXRlCit0aGUgaW5kZXguICBUaGlzIHNlYXJjaGVzIGZvciB0dXBsZXMgbWlzc2lu ZyBmcm9tIHRoZSBpbmRleCBpbiBhdXhpbGlhcnkKK2luZGV4LCBhbmQgaW5zZXJ0cyBhbnkgbWlz c2luZyBvbmVzIGlmIHRoZW0gdmlzaWJsZSB0byBmcmVzaCBzbmFwc2hvdC4KK0FnYWluLCB0aGUg aW5kZXggZW50cmllcyBoYXZlIHRvIGhhdmUgVElEcyBlcXVhbCB0byBIT1QtY2hhaW4gcm9vdCBU SURzLCBidXQKIHRoZSB2YWx1ZSB0byBiZSBpbnNlcnRlZCBpcyB0aGUgb25lIGZyb20gdGhlIGxp dmUgdHVwbGUuCiAKIFRoZW4gd2Ugd2FpdCB1bnRpbCBldmVyeSB0cmFuc2FjdGlvbiB0aGF0IGNv dWxkIGhhdmUgYSBzbmFwc2hvdCBvbGRlciB0aGFuCi10aGUgc2Vjb25kIHJlZmVyZW5jZSBzbmFw c2hvdCBpcyBmaW5pc2hlZC4gIFRoaXMgZW5zdXJlcyB0aGF0IG5vYm9keSBpcwordGhlIGxhdGVz dCB1c2VkIHNuYXBzaG90IGlzIGZpbmlzaGVkLiAgVGhpcyBlbnN1cmVzIHRoYXQgbm9ib2R5IGlz CiBhbGl2ZSBhbnkgbG9uZ2VyIHdobyBjb3VsZCBuZWVkIHRvIHNlZSBhbnkgdHVwbGVzIHRoYXQg bWlnaHQgYmUgbWlzc2luZwogZnJvbSB0aGUgaW5kZXgsIGFzIHdlbGwgYXMgZW5zdXJpbmcgdGhh dCBubyBvbmUgY2FuIHNlZSBhbnkgaW5jb25zaXN0ZW50CiByb3dzIGluIGEgYnJva2VuIEhPVCBj aGFpbiAodGhlIGZpcnN0IGNvbmRpdGlvbiBpcyBzdHJvbmdlciB0aGFuIHRoZQpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKaW5kZXggNzY4MzcyMDM2MDEuLjdlYmFiMDky MmE5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5j CisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKQEAgLTQxLDYg KzQxLDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL2J1ZnBhZ2UuaCIKICNpbmNsdWRlICJzdG9yYWdl L2xtZ3IuaCIKICNpbmNsdWRlICJzdG9yYWdlL3ByZWRpY2F0ZS5oIgorI2luY2x1ZGUgInN0b3Jh Z2UvcHJvYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY2FycmF5LmgiCiAjaW5jbHVkZSAic3Rv cmFnZS9zbWdyLmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKQEAgLTE3NzcsMjQ2ICsx Nzc4LDQ1MCBAQCBoZWFwYW1faW5kZXhfYnVpbGRfcmFuZ2Vfc2NhbihSZWxhdGlvbiBoZWFwUmVs YXRpb24sCiAJcmV0dXJuIHJlbHR1cGxlczsKIH0KIAotc3RhdGljIHZvaWQKKy8qCisgKiBDYWxj dWxhdGUgc2V0IGRpZmZlcmVuY2UgKHJlbGF0aXZlIGNvbXBsZW1lbnQpIG9mIG1haW4gYW5kIGF1 eAorICogc2V0cy4KKyAqCisgKiBBbGwgcmVjb3JkcyB3aGljaCBhcmUgcHJlc2VudCBpbiBhdXhs aWFyeSB0dXBsZXNvcnQgYnV0IG5vdCBpcworICogbWFpbiBhcmUgYWRkZWQgdG8gdGhlIHN0b3Jl LgorICoKKyAqIEluIHNldCB0aGVvcnkgbm90YXRpb24gc3RvcmUgPSBhdXggLSBtYWluIG9yIHN0 b3JlID0gYXV4IC8gbWFpbi4KKyAqCisgKiByZXR1cm5zIG51bWJlciBvZiBpdGVtcyBhZGRlZCB0 byBzdG9yZQorICovCitzdGF0aWMgaW50CitoZWFwYW1faW5kZXhfdmFsaWRhdGVfdHVwbGVzb3J0 X2RpZmZlcmVuY2UoVHVwbGVzb3J0c3RhdGUgICptYWluLAorCQkJCQkJCQkJCSAgIFR1cGxlc29y dHN0YXRlICAqYXV4LAorCQkJCQkJCQkJCSAgIFR1cGxlc3RvcmVzdGF0ZSAqc3RvcmUpCit7CisJ aW50CQkJCW51bSA9IDA7CisJLyogc3RhdGUgdmFyaWFibGVzIGZvciB0aGUgbWVyZ2UgKi8KKwlJ dGVtUG9pbnRlciAJaW5kZXhjdXJzb3IgPSBOVUxMLAorCQkJCQlhdXhpbmRleGN1cnNvciA9IE5V TEw7CisJSXRlbVBvaW50ZXJEYXRhIGRlY29kZWQsCisJCQkJCWF1eGRlY29kZWQ7CisJYm9vbAkJ CXR1cGxlc29ydF9lbXB0eSA9IGZhbHNlLAorCQkJCQlhdXh0dXBsZXNvcnRfZW1wdHkgPSBmYWxz ZTsKKworCS8qIEluaXRpYWxpemUgcG9pbnRlcnMuICovCisJSXRlbVBvaW50ZXJTZXRJbnZhbGlk KCZkZWNvZGVkKTsKKwlJdGVtUG9pbnRlclNldEludmFsaWQoJmF1eGRlY29kZWQpOworCisJLyoK KwkgKiBNYWluIGxvb3A6IHdlIHN0ZXAgdGhyb3VnaCB0aGUgYXV4aWxpYXJ5IHNvcnQgKGF1eFN0 YXRlLT50dXBsZXNvcnQpLAorCSAqIHdoaWNoIGhvbGRzIFRJRHMgdGhhdCBtdXN0IGNvbXBhcmVk IHRvIHRob3NlIGZyb20gdGhlICJtYWluIiBzb3J0CisJICogKHN0YXRlLT50dXBsZXNvcnQpLgor CSAqLworCXdoaWxlICghYXV4dHVwbGVzb3J0X2VtcHR5KQorCXsKKwkJRGF0dW0JCXRzX3ZhbDsK KwkJYm9vbAkJdHNfaXNudWxsOworCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOworCisJCS8qCisJ CSogQXR0ZW1wdCB0byBmZXRjaCB0aGUgbmV4dCBUSUQgZnJvbSB0aGUgYXV4aWxpYXJ5IHNvcnQu IElmIGl0J3MKKwkJKiBlbXB0eSwgd2Ugc2V0IGF1eGluZGV4Y3Vyc29yIHRvIE5VTEwuCisJCSov CisJCWF1eHR1cGxlc29ydF9lbXB0eSA9ICF0dXBsZXNvcnRfZ2V0ZGF0dW0oYXV4LCB0cnVlLAor CQkJCQkJCQkJCQkJIGZhbHNlLCAmdHNfdmFsLCAmdHNfaXNudWxsLAorCQkJCQkJCQkJCQkJIE5V TEwpOworCQlBc3NlcnQoYXV4dHVwbGVzb3J0X2VtcHR5IHx8ICF0c19pc251bGwpOworCQlpZiAo IWF1eHR1cGxlc29ydF9lbXB0eSkKKwkJeworCQkJaXRlbXB0cl9kZWNvZGUoJmF1eGRlY29kZWQs IERhdHVtR2V0SW50NjQodHNfdmFsKSk7CisJCQlhdXhpbmRleGN1cnNvciA9ICZhdXhkZWNvZGVk OworCQl9CisJCWVsc2UKKwkJeworCQkJYXV4aW5kZXhjdXJzb3IgPSBOVUxMOworCQl9CisKKwkJ LyoKKwkJKiBJZiB0aGUgYXV4aWxpYXJ5IHNvcnQgaXMgbm90IHlldCBlbXB0eSwgd2Ugbm93IHRy eSB0byBzeW5jaHJvbml6ZQorCQkqIHRoZSAibWFpbiIgc29ydCBjdXJzb3IgKGluZGV4Y3Vyc29y KSB3aXRoIGF1eGluZGV4Y3Vyc29yLiBXZSBhZHZhbmNlCisJCSogdGhlIG1haW4gc29ydCBjdXJz b3IgdW50aWwgd2UndmUgcmVhY2hlZCBvciBwYXNzZWQgdGhlIGF1eGlsaWFyeSBUSUQuCisJCSov CisJCWlmICghYXV4dHVwbGVzb3J0X2VtcHR5KQorCQl7CisJCQkvKgorCQkJICogTW92ZSB0aGUg bWFpbiBzb3J0IGZvcndhcmQgd2hpbGU6CisJCQkgKiAgICgxKSBJdCdzIG5vdCBleGhhdXN0ZWQg KHR1cGxlc29ydF9lbXB0eSA9PSBmYWxzZSksIGFuZAorCQkJICogICAoMikgRWl0aGVyIGluZGV4 Y3Vyc29yIGlzIE5VTEwgKGZpcnN0IGl0ZXJhdGlvbikgb3IKKwkJCSAqICAgICAgIGluZGV4Y3Vy c29yIDwgYXV4aW5kZXhjdXJzb3IgaW4gVElEIG9yZGVyLgorCQkJICovCisJCQl3aGlsZSAoIXR1 cGxlc29ydF9lbXB0eSAmJiAoaW5kZXhjdXJzb3IgPT0gTlVMTCB8fCAvKiBudWxsIG9uIGZpcnN0 IHRpbWUgaGVyZSAqLworCQkJCQkJSXRlbVBvaW50ZXJDb21wYXJlKGluZGV4Y3Vyc29yLCBhdXhp bmRleGN1cnNvcikgPCAwKSkKKwkJCXsKKwkJCQkvKgorCQkJCSAqIEdldCB0aGUgbmV4dCBUSUQg ZnJvbSB0aGUgbWFpbiBzb3J0LiBJZiBpdCdzIGVtcHR5LAorCQkJCSAqIHdlIHNldCBpbmRleGN1 cnNvciB0byBOVUxMLgorCQkJCSAqLworCQkJCXR1cGxlc29ydF9lbXB0eSA9ICF0dXBsZXNvcnRf Z2V0ZGF0dW0obWFpbiwgdHJ1ZSwKKwkJCQkJCQkJCQkJCQkgIGZhbHNlLCAmdHNfdmFsLCAmdHNf aXNudWxsLAorCQkJCQkJCQkJCQkJCSAgTlVMTCk7CisJCQkJQXNzZXJ0KHR1cGxlc29ydF9lbXB0 eSB8fCAhdHNfaXNudWxsKTsKKworCQkJCWlmICghdHVwbGVzb3J0X2VtcHR5KQorCQkJCXsKKwkJ CQkJaXRlbXB0cl9kZWNvZGUoJmRlY29kZWQsIERhdHVtR2V0SW50NjQodHNfdmFsKSk7CisJCQkJ CWluZGV4Y3Vyc29yID0gJmRlY29kZWQ7CisJCQkJfQorCQkJCWVsc2UKKwkJCQl7CisJCQkJCWlu ZGV4Y3Vyc29yID0gTlVMTDsKKwkJCQl9CisKKwkJCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwor CQkJfQorCisJCQkvKgorCQkJICogTm93LCBpZiBlaXRoZXI6CisJCQkgKiAgLSB0aGUgbWFpbiBz b3J0IGlzIGVtcHR5LCBvcgorCQkJICogIC0gaW5kZXhjdXJzb3IgPiBhdXhpbmRleGN1cnNvciwK KwkJCSAqCisJCQkgKiB0aGVuIGF1eGluZGV4Y3Vyc29yIGlkZW50aWZpZXMgYSBUSUQgdGhhdCBk b2Vzbid0IGFwcGVhciBpbgorCQkJICogdGhlIG1haW4gc29ydC4gV2UgbGlrZWx5IG5lZWQgdG8g aW5zZXJ0IGl0CisJCQkgKiBpbnRvIHRoZSB0YXJnZXQgaW5kZXggaWYgaXTigJlzIHZpc2libGUg aW4gdGhlIGhlYXAuCisJCQkgKi8KKwkJCWlmICh0dXBsZXNvcnRfZW1wdHkgfHwgSXRlbVBvaW50 ZXJDb21wYXJlKGluZGV4Y3Vyc29yLCBhdXhpbmRleGN1cnNvcikgPiAwKQorCQkJeworCQkJCXR1 cGxlc3RvcmVfcHV0ZGF0dW0oc3RvcmUsIEludDY0R2V0RGF0dW0oaXRlbXB0cl9lbmNvZGUoYXV4 aW5kZXhjdXJzb3IpKSk7CisJCQkJbnVtKys7CisJCQl9CisJCX0KKwl9CisKKwlyZXR1cm4gbnVt OworfQorCit0eXBlZGVmIHN0cnVjdCBWYWxpZGF0ZUluZGV4U2NhblN0YXRlCit7CisJVHVwbGVz dG9yZXN0YXRlCQkqc3RvcmU7CisJQmxvY2tOdW1iZXIJCQlwcmV2X2Jsb2NrX251bWJlcjsKKwlP ZmZzZXROdW1iZXIJCXByZXZfb2ZmX29mZnNldF9udW1iZXI7Cit9IFZhbGlkYXRlSW5kZXhTY2Fu U3RhdGU7CisKKy8qCisgKiBUaGlzIGlzIFJlYWRTdHJlYW1CbG9ja051bWJlckNCIGltcGxlbWVu dGF0aW9uIHdoaWNoIHdvcmtzIGFzIGZvbGxvd3M6CisgKgorICogMSkgSXQgaXRlcmF0ZXMgb3Zl ciBhIHNvcnRlZCB0dXBsZXN0b3JlLCB3aGVyZSBlYWNoIGVsZW1lbnQgaXMgYW4gZW5jb2RlZAor ICogICAgSXRlbVBvaW50ZXIKKyAqCisgKiAyKSBJdCByZXR1cm5zIHRoZSBjdXJyZW50IEJsb2Nr TnVtYmVyIGFuZCBjb2xsZWN0cyBhbGwgT2Zmc2V0TnVtYmVycworICogICAgZm9yIHRoYXQgYmxv Y2sgaW4gcGVyX2J1ZmZlcl9kYXRhLgorICoKKyAqIDMpIE9uY2UgdGhlIGNvZGUgZW5jb3VudGVy cyBhIG5ldyBCbG9ja051bWJlciwgaXQgc3RvcHMgcmVhZGluZyBtb3JlCisgKiAgICBvZmZzZXRz IGFuZCBzYXZlcyB0aGUgT2Zmc2V0TnVtYmVyIG9mIHRoZSBuZXcgYmxvY2sgZm9yIHRoZSBuZXh0 IGNhbGwuCisgKgorICogNCkgVGhlIGxpc3Qgb2Ygb2Zmc2V0cyBmb3IgYSBibG9jayBpcyBhbHdh eXMgdGVybWluYXRlZCB3aXRoIEludmFsaWRPZmZzZXROdW1iZXIuCisgKgorICogVGhpcyBmdW5j dGlvbiBpcyBpbnRlbmRlZCB0byBiZSByZXBlYXRlZGx5IGNhbGxlZCwgZWFjaCB0aW1lIHJldHVy bmluZworICogdGhlIG5leHQgYmxvY2sgYW5kIGl0cyBjb3JyZXNwb25kaW5nIHNldCBvZiBvZmZz ZXRzLgorICovCitzdGF0aWMgQmxvY2tOdW1iZXIKK2hlYXBhbV9pbmRleF92YWxpZGF0ZV9zY2Fu X3JlYWRfc3RyZWFtX25leHQoCisJCQkJCQkJCSAgUmVhZFN0cmVhbSAqc3RyZWFtLAorCQkJCQkJ CQkgIHZvaWQgKnZvaWRfY2FsbGJhY2tfcHJpdmF0ZV9kYXRhLAorCQkJCQkJCQkgIHZvaWQgKnZv aWRfcGVyX2J1ZmZlcl9kYXRhCisJCQkJCQkJCSAgKQoreworCWJvb2wgc2hvdWRfZnJlZTsKKwlE YXR1bSBkYXR1bTsKKwlCbG9ja051bWJlciByZXN1bHQgPSBJbnZhbGlkQmxvY2tOdW1iZXI7CisJ aW50IGkgPSAwOworCisJLyoKKwkgKiBSZXRyaWV2ZSB0aGUgc3BlY2lhbGl6ZWQgY2FsbGJhY2sg c3RhdGUgYW5kIHRoZSBvdXRwdXQgYnVmZmVyLgorCSAqIGNhbGxiYWNrX3ByaXZhdGVfZGF0YSBr ZWVwcyB0cmFjayBvZiB0aGUgcHJldmlvdXMgYmxvY2sgYW5kIG9mZnNldAorCSAqIGZyb20gYSBw cmlvciBpbnZvY2F0aW9uLCBpZiBhbnkuCisJICovCisJVmFsaWRhdGVJbmRleFNjYW5TdGF0ZSAq Y2FsbGJhY2tfcHJpdmF0ZV9kYXRhID0gdm9pZF9jYWxsYmFja19wcml2YXRlX2RhdGE7CisJT2Zm c2V0TnVtYmVyICpwZXJfYnVmZmVyX2RhdGEgPSB2b2lkX3Blcl9idWZmZXJfZGF0YTsKKworCS8q CisJICogSWYgdGhlcmUgaXMgYSAibGVmdG92ZXIiIG9mZnNldCBudW1iZXIgZnJvbSB0aGUgcHJl dmlvdXMgaW52b2NhdGlvbiwKKwkgKiBpdCBtZWFucyB3ZSBoYWQgc3dpdGNoZWQgdG8gYSBuZXcg YmxvY2sgaW4gdGhlIG1pZGRsZSBvZiB0aGUgbGFzdCBjYWxsLgorCSAqIFdlIHBsYWNlIHRoYXQg bGVmdG92ZXIgb2Zmc2V0IG51bWJlciBpbnRvIHRoZSBidWZmZXIgZmlyc3QuCisJICovCisJaWYg KGNhbGxiYWNrX3ByaXZhdGVfZGF0YS0+cHJldl9vZmZfb2Zmc2V0X251bWJlciAhPSBJbnZhbGlk T2Zmc2V0TnVtYmVyKQorCXsKKwkJQXNzZXJ0KGNhbGxiYWNrX3ByaXZhdGVfZGF0YS0+cHJldl9i bG9ja19udW1iZXIgIT0gSW52YWxpZEJsb2NrTnVtYmVyKTsKKwkJLyoKKwkJICogJ3Jlc3VsdCcg aXMgdGhlIGJsb2NrIG51bWJlciB0byByZXR1cm4uIFdlIHNldCBpdCB0byB0aGUgYmxvY2sKKwkJ ICogZnJvbSB0aGUgcHJldmlvdXMgbGVmdG92ZXIgb2Zmc2V0LgorCQkgKi8KKwkJcmVzdWx0ID0g Y2FsbGJhY2tfcHJpdmF0ZV9kYXRhLT5wcmV2X2Jsb2NrX251bWJlcjsKKwkJLyogUGxhY2UgbGVm dG92ZXIgb2Zmc2V0IG51bWJlciBpbiB0aGUgb3V0cHV0IGJ1ZmZlci4gKi8KKwkJcGVyX2J1ZmZl cl9kYXRhW2krK10gPSBjYWxsYmFja19wcml2YXRlX2RhdGEtPnByZXZfb2ZmX29mZnNldF9udW1i ZXI7CisJCS8qCisJCSAqIENsZWFyIHRoZSBsZWZ0b3ZlciBvZmZzZXQgbnVtYmVyIHNvIGl0IHdv bid0IGJlIHJldXNlZCB1bmxlc3MKKwkJICogd2UgZW5jb3VudGVyIGFub3RoZXIgYmxvY2sgY2hh bmdlLgorCQkgKi8KKwkJY2FsbGJhY2tfcHJpdmF0ZV9kYXRhLT5wcmV2X29mZl9vZmZzZXRfbnVt YmVyID0gSW52YWxpZE9mZnNldE51bWJlcjsKKwl9CisKKwkvKgorCSAqIFJlYWQgZnJvbSB0aGUg dHVwbGVzdG9yZSB1bnRpbCB3ZSBlaXRoZXIgcnVuIG91dCBvZiB0dXBsZXMgb3Igd2UKKwkgKiBl bmNvdW50ZXIgYSBibG9jayBjaGFuZ2UuIEZvciBlYWNoIHR1cGxlOgorCSAqCisJICogICAxKSBE ZWNvZGUgaXRzIGJsb2NrL29mZnNldCBmcm9tIHRoZSBEYXR1bS4KKwkgKiAgIDIpIElmIGl0J3Mg dGhlIGZpcnN0IHRpbWUgaW4gdGhpcyBjYWxsIChwcmV2X2Jsb2NrX251bWJlciA9PSBJbnZhbGlk QmxvY2tOdW1iZXIpLAorCSAqICAgICAgaW5pdGlhbGl6ZSBwcmV2X2Jsb2NrX251bWJlci4KKwkg KiAgIDMpIElmIHRoZSBibG9jayBudW1iZXIgbWF0Y2hlcyB0aGUgY3VycmVudCBibG9jaywgY29s bGVjdCB0aGUgb2Zmc2V0LgorCSAqICAgNCkgSWYgdGhlIGJsb2NrIG51bWJlciBkaWZmZXJzLCBz YXZlIHRoYXQgb2Zmc2V0IGFzIGxlZnRvdmVyIGFuZCBicmVhaworCSAqICAgICAgc28gdGhhdCB0 aGUgbmV4dCBjYWxsIGNhbiBoYW5kbGUgdGhlIG5ldyBibG9jay4KKwkgKi8KKwl3aGlsZSAodHVw bGVzdG9yZV9nZXRkYXR1bShjYWxsYmFja19wcml2YXRlX2RhdGEtPnN0b3JlLCB0cnVlLCAmc2hv dWRfZnJlZSwgJmRhdHVtKSkKKwl7CisJCUJsb2NrTnVtYmVyIG5leHRfYmxvY2tfbnVtYmVyOwor CQlJdGVtUG9pbnRlckRhdGEgbmV4dF9kYXRhOworCisJCS8qIERlY29kZSB0aGUgZGF0dW0gaW50 byBhbiBJdGVtUG9pbnRlciAoYmxvY2sgKyBvZmZzZXQpLiAqLworCQlpdGVtcHRyX2RlY29kZSgm bmV4dF9kYXRhLCBEYXR1bUdldEludDY0KGRhdHVtKSk7CisJCW5leHRfYmxvY2tfbnVtYmVyID0g SXRlbVBvaW50ZXJHZXRCbG9ja051bWJlcigmbmV4dF9kYXRhKTsKKworCQkvKgorCQkgKiBJZiB3 ZSBoYXZlbid0IHNldCBhIGJsb2NrIG51bWJlciB5ZXQgdGhpcyByb3VuZCwgaW5pdGlhbGl6ZSBp dAorCQkgKiB1c2luZyB0aGUgZmlyc3QgdHVwbGUgd2UgcmVhZC4KKwkJICovCisJCWlmIChjYWxs YmFja19wcml2YXRlX2RhdGEtPnByZXZfYmxvY2tfbnVtYmVyID09IEludmFsaWRCbG9ja051bWJl cikKKwkJCWNhbGxiYWNrX3ByaXZhdGVfZGF0YS0+cHJldl9ibG9ja19udW1iZXIgPSBuZXh0X2Js b2NrX251bWJlcjsKKworCQkvKgorCQkgKiBBbHdheXMgc2V0IHRoZSByZXN1bHQgdG8gYmUgdGhl ICJjdXJyZW50IiBibG9jayBudW1iZXIKKwkJICogd2UgYXJlIGZpbGxpbmcgb2Zmc2V0cyBmb3Iu CisJCSAqLworCQlyZXN1bHQgPSBjYWxsYmFja19wcml2YXRlX2RhdGEtPnByZXZfYmxvY2tfbnVt YmVyOworCisJCS8qCisJCSAqIElmIHRoaXMgdHVwbGUgaXMgZnJvbSB0aGUgc2FtZSBibG9jaywg anVzdCBzdG9yZSBpdHMgb2Zmc2V0CisJCSAqIGluIG91ciBwZXJfYnVmZmVyX2RhdGEgYXJyYXku CisJCSAqLworCQlpZiAobmV4dF9ibG9ja19udW1iZXIgPT0gY2FsbGJhY2tfcHJpdmF0ZV9kYXRh LT5wcmV2X2Jsb2NrX251bWJlcikKKwkJeworCQkJcGVyX2J1ZmZlcl9kYXRhW2krK10gPSBJdGVt UG9pbnRlckdldE9mZnNldE51bWJlcigmbmV4dF9kYXRhKTsKKworCQkJLyogRnJlZSB0aGUgZGF0 dW0gaWYgbmVlZGVkLiAqLworCQkJaWYgKHNob3VkX2ZyZWUpCisJCQkJcGZyZWUoRGF0dW1HZXRQ b2ludGVyKGRhdHVtKSk7CisJCX0KKwkJZWxzZQorCQl7CisJCQkvKgorCQkJICogSWYgdGhlIGJs b2NrIGp1c3QgY2hhbmdlZCwgc3RvcmUgdGhlIG9mZnNldCBvZiB0aGUgbmV3IGJsb2NrCisJCQkg KiBhcyBsZWZ0b3ZlciBmb3IgdGhlIG5leHQgaW52b2NhdGlvbiBhbmQgYnJlYWsgb3V0LgorCQkJ ICovCisJCQljYWxsYmFja19wcml2YXRlX2RhdGEtPnByZXZfYmxvY2tfbnVtYmVyID0gbmV4dF9i bG9ja19udW1iZXI7CisJCQljYWxsYmFja19wcml2YXRlX2RhdGEtPnByZXZfb2ZmX29mZnNldF9u dW1iZXIgPSAgSXRlbVBvaW50ZXJHZXRPZmZzZXROdW1iZXIoJm5leHRfZGF0YSk7CisKKwkJCS8q IEZyZWUgdGhlIGRhdHVtIGlmIG5lZWRlZC4gKi8KKwkJCWlmIChzaG91ZF9mcmVlKQorCQkJCXBm cmVlKERhdHVtR2V0UG9pbnRlcihkYXR1bSkpOworCisJCQkvKiBCcmVhayB0byBsZXQgdGhlIG5l eHQgY2FsbCBoYW5kbGUgdGhlIG5ldyBibG9jay4gKi8KKwkJCWJyZWFrOworCQl9CisJfQorCisJ LyoKKwkgKiBUZXJtaW5hdGUgdGhlIGxpc3Qgb2Ygb2Zmc2V0cyBmb3IgdGhpcyBibG9jayB3aXRo IGFuIEludmFsaWRPZmZzZXROdW1iZXIuCisJICovCisJcGVyX2J1ZmZlcl9kYXRhW2ldID0gSW52 YWxpZE9mZnNldE51bWJlcjsKKwlyZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgVHJhbnNhY3Rp b25JZAogaGVhcGFtX2luZGV4X3ZhbGlkYXRlX3NjYW4oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAog CQkJCQkJICAgUmVsYXRpb24gaW5kZXhSZWxhdGlvbiwKIAkJCQkJCSAgIEluZGV4SW5mbyAqaW5k ZXhJbmZvLAotCQkJCQkJICAgU25hcHNob3Qgc25hcHNob3QsCi0JCQkJCQkgICBWYWxpZGF0ZUlu ZGV4U3RhdGUgKnN0YXRlKQorCQkJCQkJICAgVmFsaWRhdGVJbmRleFN0YXRlICpzdGF0ZSwKKwkJ CQkJCSAgIFZhbGlkYXRlSW5kZXhTdGF0ZSAqYXV4U3RhdGUpCiB7Ci0JVGFibGVTY2FuRGVzYyBz Y2FuOwotCUhlYXBTY2FuRGVzYyBoc2NhbjsKLQlIZWFwVHVwbGUJaGVhcFR1cGxlOworCVRyYW5z YWN0aW9uSWQgbGltaXRYbWluOworCiAJRGF0dW0JCXZhbHVlc1tJTkRFWF9NQVhfS0VZU107CiAJ Ym9vbAkJaXNudWxsW0lOREVYX01BWF9LRVlTXTsKLQlFeHByU3RhdGUgICpwcmVkaWNhdGU7Ci0J VHVwbGVUYWJsZVNsb3QgKnNsb3Q7Ci0JRVN0YXRlCSAgICplc3RhdGU7Ci0JRXhwckNvbnRleHQg KmVjb250ZXh0OwotCUJsb2NrTnVtYmVyIHJvb3RfYmxrbm8gPSBJbnZhbGlkQmxvY2tOdW1iZXI7 Ci0JT2Zmc2V0TnVtYmVyIHJvb3Rfb2Zmc2V0c1tNYXhIZWFwVHVwbGVzUGVyUGFnZV07Ci0JYm9v bAkJaW5faW5kZXhbTWF4SGVhcFR1cGxlc1BlclBhZ2VdOwotCUJsb2NrTnVtYmVyIHByZXZpb3Vz X2Jsa25vID0gSW52YWxpZEJsb2NrTnVtYmVyOwotCi0JLyogc3RhdGUgdmFyaWFibGVzIGZvciB0 aGUgbWVyZ2UgKi8KLQlJdGVtUG9pbnRlciBpbmRleGN1cnNvciA9IE5VTEw7Ci0JSXRlbVBvaW50 ZXJEYXRhIGRlY29kZWQ7Ci0JYm9vbAkJdHVwbGVzb3J0X2VtcHR5ID0gZmFsc2U7CisKKwlTbmFw c2hvdAkJc25hcHNob3Q7CisJVHVwbGVUYWJsZVNsb3QgICpzbG90OworCUVTdGF0ZQkJCSplc3Rh dGU7CisJRXhwckNvbnRleHQJCSplY29udGV4dDsKKwlCdWZmZXJBY2Nlc3NTdHJhdGVneSBic3Ry YXRlZ3kgPSBHZXRBY2Nlc3NTdHJhdGVneShCQVNfQlVMS1JFQUQpOworCisJaW50CQkJCW51bV90 b19jaGVjazsKKwlUdXBsZXN0b3Jlc3RhdGUgKnR1cGxlc19mb3JfY2hlY2s7CisJVmFsaWRhdGVJ bmRleFNjYW5TdGF0ZSBjYWxsYmFja19wcml2YXRlX2RhdGE7CisKKwlCdWZmZXIgYnVmOworCU9m ZnNldE51bWJlciogdHVwbGVzOworCVJlYWRTdHJlYW0gKnJlYWRfc3RyZWFtOworCisJLyogVXNl IDEwJSBvZiBtZW1vcnkgZm9yIHR1cGxlIHN0b3JlLiAqLworCWludAkJc3RvcmVfd29ya19tZW1f cGFydCA9IG1haW50ZW5hbmNlX3dvcmtfbWVtIC8gMTA7CisKKwkvKgorCSAqIE5vdyB0YWtlIHRo ZSBzbmFwc2hvdCB0aGF0IHdpbGwgYmUgdXNlZCBieSB0byBmaWx0ZXIgY2FuZGlkYXRlCisJICog dHVwbGVzLgorCSAqCisJICogQmV3YXJlISAgVGhlcmUgbWlnaHQgc3RpbGwgYmUgc25hcHNob3Rz IGluIHVzZSB0aGF0IHRyZWF0IHNvbWUgdHJhbnNhY3Rpb24KKwkgKiBhcyBpbi1wcm9ncmVzcyB0 aGF0IG91ciB0ZW1wb3Jhcnkgc25hcHNob3QgdHJlYXRzIGFzIGNvbW1pdHRlZC4KKwkgKgorCSAq IElmIHN1Y2ggYSByZWNlbnRseS1jb21taXR0ZWQgdHJhbnNhY3Rpb24gZGVsZXRlZCB0dXBsZXMg aW4gdGhlIHRhYmxlLAorCSAqIHdlIHdpbGwgbm90IGluY2x1ZGUgdGhlbSBpbiB0aGUgaW5kZXg7 IHlldCB0aG9zZSB0cmFuc2FjdGlvbnMgd2hpY2gKKwkgKiBzZWUgdGhlIGRlbGV0aW5nIG9uZSBh cyBzdGlsbC1pbi1wcm9ncmVzcyB3aWxsIGV4cGVjdCBzdWNoIHR1cGxlcyB0bworCSAqIGJlIHRo ZXJlIG9uY2Ugd2UgbWFyayB0aGUgaW5kZXggYXMgdmFsaWQuCisJICoKKwkgKiBXZSBzb2x2ZSB0 aGlzIGJ5IHdhaXRpbmcgZm9yIGFsbCBlbmRhbmdlcmVkIHRyYW5zYWN0aW9ucyB0byBleGl0IGJl Zm9yZQorCSAqIHdlIG1hcmsgdGhlIGluZGV4IGFzIHZhbGlkLCBmb3IgdGhhdCByZWFzb24gbGlt aXRYbWluIGlzIHN1cHBvcnRlZC4KKwkgKgorCSAqIFdlIGFsc28gc2V0IEFjdGl2ZVNuYXBzaG90 IHRvIHRoaXMgc25hcCwgc2luY2UgZnVuY3Rpb25zIGluIGluZGV4ZXMgbWF5CisJICogbmVlZCBh IHNuYXBzaG90LgorCSAqLworCXNuYXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hvdChHZXRUcmFuc2Fj dGlvblNuYXBzaG90KCkpOworCVB1c2hBY3RpdmVTbmFwc2hvdChzbmFwc2hvdCk7CisJbGltaXRY bWluID0gc25hcHNob3QtPnhtaW47CisKKwkvKgorCSAqIEVuY29kZSBUSURzIGFzIGludDggdmFs dWVzIGZvciB0aGUgc29ydCwgcmF0aGVyIHRoYW4gZGlyZWN0bHkgc29ydGluZworCSAqIGl0ZW0g cG9pbnRlcnMuICBUaGlzIGNhbiBiZSBzaWduaWZpY2FudGx5IGZhc3RlciwgcHJpbWFyaWx5IGJl Y2F1c2UgVElECisJICogaXMgYSBwYXNzLWJ5LXJlZmVyZW5jZSB0eXBlIG9uIGFsbCBwbGF0Zm9y bXMsIHdoZXJlYXMgaW50OCBpcworCSAqIHBhc3MtYnktdmFsdWUgb24gbW9zdCBwbGF0Zm9ybXMu CisJICovCisJdHVwbGVzX2Zvcl9jaGVjayA9ICB0dXBsZXN0b3JlX2JlZ2luX2RhdHVtKElOVDhP SUQsIGZhbHNlLCBmYWxzZSwgc3RvcmVfd29ya19tZW1fcGFydCk7CiAKIAkvKgogCSAqIHNhbml0 eSBjaGVja3MKIAkgKi8KIAlBc3NlcnQoT2lkSXNWYWxpZChpbmRleFJlbGF0aW9uLT5yZF9yZWwt PnJlbGFtKSk7CiAKLQkvKgotCSAqIE5lZWQgYW4gRVN0YXRlIGZvciBldmFsdWF0aW9uIG9mIGlu ZGV4IGV4cHJlc3Npb25zIGFuZCBwYXJ0aWFsLWluZGV4Ci0JICogcHJlZGljYXRlcy4gIEFsc28g YSBzbG90IHRvIGhvbGQgdGhlIGN1cnJlbnQgdHVwbGUuCi0JICovCisJbnVtX3RvX2NoZWNrID0g aGVhcGFtX2luZGV4X3ZhbGlkYXRlX3R1cGxlc29ydF9kaWZmZXJlbmNlKHN0YXRlLT50dXBsZXNv cnQsCisJCQkJCQkJCQkJCQkJCSBhdXhTdGF0ZS0+dHVwbGVzb3J0LAorCQkJCQkJCQkJCQkJCQkg dHVwbGVzX2Zvcl9jaGVjayk7CisKKwkvKiBJdCBpcyBvdXIgcmVzcG9uc2liaWxpdHkgdG8gc2xv ZSB0dXBsZSBzb3J0IGFzIGZhc3QgYXMgd2UgY2FuICovCisJdHVwbGVzb3J0X2VuZChzdGF0ZS0+ dHVwbGVzb3J0KTsKKwl0dXBsZXNvcnRfZW5kKGF1eFN0YXRlLT50dXBsZXNvcnQpOworCisJc3Rh dGUtPnR1cGxlc29ydCA9IGF1eFN0YXRlLT50dXBsZXNvcnQgPSBOVUxMOworCiAJZXN0YXRlID0g Q3JlYXRlRXhlY3V0b3JTdGF0ZSgpOwogCWVjb250ZXh0ID0gR2V0UGVyVHVwbGVFeHByQ29udGV4 dChlc3RhdGUpOwogCXNsb3QgPSBNYWtlU2luZ2xlVHVwbGVUYWJsZVNsb3QoUmVsYXRpb25HZXRE ZXNjcihoZWFwUmVsYXRpb24pLAotCQkJCQkJCQkJJlRUU09wc0hlYXBUdXBsZSk7CisJCQkJCQkJ CQkmVFRTT3BzQnVmZmVySGVhcFR1cGxlKTsKIAogCS8qIEFycmFuZ2UgZm9yIGVjb250ZXh0J3Mg c2NhbiB0dXBsZSB0byBiZSB0aGUgdHVwbGUgdW5kZXIgdGVzdCAqLwogCWVjb250ZXh0LT5lY3h0 X3NjYW50dXBsZSA9IHNsb3Q7CiAKLQkvKiBTZXQgdXAgZXhlY3V0aW9uIHN0YXRlIGZvciBwcmVk aWNhdGUsIGlmIGFueS4gKi8KLQlwcmVkaWNhdGUgPSBFeGVjUHJlcGFyZVF1YWwoaW5kZXhJbmZv LT5paV9QcmVkaWNhdGUsIGVzdGF0ZSk7Ci0KIAkvKgotCSAqIFByZXBhcmUgZm9yIHNjYW4gb2Yg dGhlIGJhc2UgcmVsYXRpb24uICBXZSBuZWVkIGp1c3QgdGhvc2UgdHVwbGVzCi0JICogc2F0aXNm eWluZyB0aGUgcGFzc2VkLWluIHJlZmVyZW5jZSBzbmFwc2hvdC4gIFdlIG11c3QgZGlzYWJsZSBz eW5jc2NhbgotCSAqIGhlcmUsIGJlY2F1c2UgaXQncyBjcml0aWNhbCB0aGF0IHdlIHJlYWQgZnJv bSBibG9jayB6ZXJvIGZvcndhcmQgdG8KLQkgKiBtYXRjaCB0aGUgc29ydGVkIFRJRHMuCisJICog UHJlcGFyZSB0byBmZXRjaCBoZWFwIHR1cGxlcyBpbiBpbmRleCBzdHlsZS4gVGhpcyBoZWxwcyB0 byByZWNvbnN0cnVjdAorCSAqIGEgdHVwbGUgZnJvbSB0aGUgaGVhcCB3aGVuIHdlIG9ubHkgaGF2 ZSBhbiBJdGVtUG9pbnRlci4KIAkgKi8KLQlzY2FuID0gdGFibGVfYmVnaW5zY2FuX3N0cmF0KGhl YXBSZWxhdGlvbiwJLyogcmVsYXRpb24gKi8KLQkJCQkJCQkJIHNuYXBzaG90LAkvKiBzbmFwc2hv dCAqLwotCQkJCQkJCQkgMCwgLyogbnVtYmVyIG9mIGtleXMgKi8KLQkJCQkJCQkJIE5VTEwsCS8q IHNjYW4ga2V5ICovCi0JCQkJCQkJCSB0cnVlLAkvKiBidWZmZXIgYWNjZXNzIHN0cmF0ZWd5IE9L ICovCi0JCQkJCQkJCSBmYWxzZSwJLyogc3luY3NjYW4gbm90IE9LICovCi0JCQkJCQkJCSBmYWxz ZSk7Ci0JaHNjYW4gPSAoSGVhcFNjYW5EZXNjKSBzY2FuOworCWNhbGxiYWNrX3ByaXZhdGVfZGF0 YS5wcmV2X2Jsb2NrX251bWJlciA9IEludmFsaWRCbG9ja051bWJlcjsKKwljYWxsYmFja19wcml2 YXRlX2RhdGEuc3RvcmUgPSB0dXBsZXNfZm9yX2NoZWNrOworCWNhbGxiYWNrX3ByaXZhdGVfZGF0 YS5wcmV2X29mZl9vZmZzZXRfbnVtYmVyID0gSW52YWxpZE9mZnNldE51bWJlcjsKIAotCXBnc3Rh dF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfU0NBTl9CTE9DS1NfVE9UQUwsCi0JCQkJ CQkJCSBoc2Nhbi0+cnNfbmJsb2Nrcyk7CisJcmVhZF9zdHJlYW0gPSByZWFkX3N0cmVhbV9iZWdp bl9yZWxhdGlvbihSRUFEX1NUUkVBTV9NQUlOVEVOQU5DRSwgYnN0cmF0ZWd5LAorCQkJCQkJCQkJ CQkJCQkgaGVhcFJlbGF0aW9uLCBNQUlOX0ZPUktOVU0sCisJCQkJCQkJCQkJCQkJCSBoZWFwYW1f aW5kZXhfdmFsaWRhdGVfc2Nhbl9yZWFkX3N0cmVhbV9uZXh0LAorCQkJCQkJCQkJCQkJCQkgJmNh bGxiYWNrX3ByaXZhdGVfZGF0YSwKKwkJCQkJCQkJCQkJCQkJIChNYXhIZWFwVHVwbGVzUGVyUGFn ZSArIDEpICogc2l6ZW9mKE9mZnNldE51bWJlcikpOwogCi0JLyoKLQkgKiBTY2FuIGFsbCB0dXBs ZXMgbWF0Y2hpbmcgdGhlIHNuYXBzaG90LgotCSAqLwotCXdoaWxlICgoaGVhcFR1cGxlID0gaGVh cF9nZXRuZXh0KHNjYW4sIEZvcndhcmRTY2FuRGlyZWN0aW9uKSkgIT0gTlVMTCkKKwlwZ3N0YXRf cHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NSRUFURUlEWF9UVVBMRVNfVE9UQUwsIG51 bV90b19jaGVjayk7CisJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DUkVB VEVJRFhfVFVQTEVTX0RPTkUsIDApOworCisJd2hpbGUgKChidWYgPSByZWFkX3N0cmVhbV9uZXh0 X2J1ZmZlcihyZWFkX3N0cmVhbSwgKHZvaWQqKSAmdHVwbGVzKSkgIT0gSW52YWxpZEJ1ZmZlcikK IAl7Ci0JCUl0ZW1Qb2ludGVyIGhlYXBjdXJzb3IgPSAmaGVhcFR1cGxlLT50X3NlbGY7Ci0JCUl0 ZW1Qb2ludGVyRGF0YSByb290VHVwbGU7Ci0JCU9mZnNldE51bWJlciByb290X29mZm51bTsKKwkJ SGVhcFR1cGxlRGF0YQloZWFwX3R1cGxlX2RhdGFbTWF4SGVhcFR1cGxlc1BlclBhZ2VdOworCQlp bnQgaTsKKwkJT2Zmc2V0TnVtYmVyIG9mZjsKKwkJQmxvY2tOdW1iZXIgYmxvY2tfbnVtYmVyOwog CiAJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAKLQkJc3RhdGUtPmh0dXBzICs9IDE7CisJCUxv Y2tCdWZmZXIoYnVmLCBCVUZGRVJfTE9DS19TSEFSRSk7CisJCWJsb2NrX251bWJlciA9IEJ1ZmZl ckdldEJsb2NrTnVtYmVyKGJ1Zik7CiAKLQkJaWYgKChwcmV2aW91c19ibGtubyA9PSBJbnZhbGlk QmxvY2tOdW1iZXIpIHx8Ci0JCQkoaHNjYW4tPnJzX2NibG9jayAhPSBwcmV2aW91c19ibGtubykp CisJCWkgPSAwOworCQl3aGlsZSAoKG9mZiA9IHR1cGxlc1tpXSkgIT0gSW52YWxpZE9mZnNldE51 bWJlcikKIAkJewotCQkJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19TQ0FO X0JMT0NLU19ET05FLAotCQkJCQkJCQkJCSBoc2Nhbi0+cnNfY2Jsb2NrKTsKLQkJCXByZXZpb3Vz X2Jsa25vID0gaHNjYW4tPnJzX2NibG9jazsKKwkJCUl0ZW1Qb2ludGVyRGF0YSB0aWQ7CisJCQli b29sCQlhbGxfZGVhZCwgZm91bmQ7CisJCQlJdGVtUG9pbnRlclNldCgmdGlkLCBibG9ja19udW1i ZXIsIG9mZik7CisKKwkJCWZvdW5kID0gaGVhcF9ob3Rfc2VhcmNoX2J1ZmZlcigmdGlkLCBoZWFw UmVsYXRpb24sIGJ1Ziwgc25hcHNob3QsCisJCQkJCQkJCQkJICAgJmhlYXBfdHVwbGVfZGF0YVtp XSwgJmFsbF9kZWFkLCB0cnVlKTsKKwkJCWlmICghZm91bmQpCisJCQkJSXRlbVBvaW50ZXJTZXRJ bnZhbGlkKCZoZWFwX3R1cGxlX2RhdGFbaV0udF9zZWxmKTsKKwkJCWkrKzsKIAkJfQorCQlMb2Nr QnVmZmVyKGJ1ZiwgQlVGRkVSX0xPQ0tfVU5MT0NLKTsKIAotCQkvKgotCQkgKiBBcyBjb21tZW50 ZWQgaW4gdGFibGVfaW5kZXhfYnVpbGRfc2Nhbiwgd2Ugc2hvdWxkIGluZGV4IGhlYXAtb25seQot CQkgKiB0dXBsZXMgdW5kZXIgdGhlIFRJRHMgb2YgdGhlaXIgcm9vdCB0dXBsZXM7IHNvIHdoZW4g d2UgYWR2YW5jZSBvbnRvCi0JCSAqIGEgbmV3IGhlYXAgcGFnZSwgYnVpbGQgYSBtYXAgb2Ygcm9v dCBpdGVtIG9mZnNldHMgb24gdGhlIHBhZ2UuCi0JCSAqCi0JCSAqIFRoaXMgY29tcGxpY2F0ZXMg bWVyZ2luZyBhZ2FpbnN0IHRoZSB0dXBsZXNvcnQgb3V0cHV0OiB3ZSB3aWxsCi0JCSAqIHZpc2l0 IHRoZSBsaXZlIHR1cGxlcyBpbiBvcmRlciBieSB0aGVpciBvZmZzZXRzLCBidXQgdGhlIHJvb3QK LQkJICogb2Zmc2V0cyB0aGF0IHdlIG5lZWQgdG8gY29tcGFyZSBhZ2FpbnN0IHRoZSBpbmRleCBj b250ZW50cyBtaWdodCBiZQotCQkgKiBvcmRlcmVkIGRpZmZlcmVudGx5LiAgU28gd2UgbWlnaHQg aGF2ZSB0byAibG9vayBiYWNrIiB3aXRoaW4gdGhlCi0JCSAqIHR1cGxlc29ydCBvdXRwdXQsIGJ1 dCBvbmx5IHdpdGhpbiB0aGUgY3VycmVudCBwYWdlLiAgV2UgaGFuZGxlIHRoYXQKLQkJICogYnkg a2VlcGluZyBhIGJvb2wgYXJyYXkgaW5faW5kZXhbXSBzaG93aW5nIGFsbCB0aGUKLQkJICogYWxy ZWFkeS1wYXNzZWQtb3ZlciB0dXBsZXNvcnQgb3V0cHV0IFRJRHMgb2YgdGhlIGN1cnJlbnQgcGFn ZS4gV2UKLQkJICogY2xlYXIgdGhhdCBhcnJheSBoZXJlLCB3aGVuIGFkdmFuY2luZyBvbnRvIGEg bmV3IGhlYXAgcGFnZS4KLQkJICovCi0JCWlmIChoc2Nhbi0+cnNfY2Jsb2NrICE9IHJvb3RfYmxr bm8pCisJCWkgPSAwOworCQl3aGlsZSAoKG9mZiA9IHR1cGxlc1tpXSkgIT0gSW52YWxpZE9mZnNl dE51bWJlcikKIAkJewotCQkJUGFnZQkJcGFnZSA9IEJ1ZmZlckdldFBhZ2UoaHNjYW4tPnJzX2Ni dWYpOwotCi0JCQlMb2NrQnVmZmVyKGhzY2FuLT5yc19jYnVmLCBCVUZGRVJfTE9DS19TSEFSRSk7 Ci0JCQloZWFwX2dldF9yb290X3R1cGxlcyhwYWdlLCByb290X29mZnNldHMpOwotCQkJTG9ja0J1 ZmZlcihoc2Nhbi0+cnNfY2J1ZiwgQlVGRkVSX0xPQ0tfVU5MT0NLKTsKLQotCQkJbWVtc2V0KGlu X2luZGV4LCAwLCBzaXplb2YoaW5faW5kZXgpKTsKLQotCQkJcm9vdF9ibGtubyA9IGhzY2FuLT5y c19jYmxvY2s7Ci0JCX0KLQotCQkvKiBDb252ZXJ0IGFjdHVhbCB0dXBsZSBUSUQgdG8gcm9vdCBU SUQgKi8KLQkJcm9vdFR1cGxlID0gKmhlYXBjdXJzb3I7Ci0JCXJvb3Rfb2ZmbnVtID0gSXRlbVBv aW50ZXJHZXRPZmZzZXROdW1iZXIoaGVhcGN1cnNvcik7Ci0KLQkJaWYgKEhlYXBUdXBsZUlzSGVh cE9ubHkoaGVhcFR1cGxlKSkKLQkJewotCQkJcm9vdF9vZmZudW0gPSByb290X29mZnNldHNbcm9v dF9vZmZudW0gLSAxXTsKLQkJCWlmICghT2Zmc2V0TnVtYmVySXNWYWxpZChyb290X29mZm51bSkp Ci0JCQkJZXJlcG9ydChFUlJPUiwKLQkJCQkJCShlcnJjb2RlKEVSUkNPREVfREFUQV9DT1JSVVBU RUQpLAotCQkJCQkJIGVycm1zZ19pbnRlcm5hbCgiZmFpbGVkIHRvIGZpbmQgcGFyZW50IHR1cGxl IGZvciBoZWFwLW9ubHkgdHVwbGUgYXQgKCV1LCV1KSBpbiB0YWJsZSBcIiVzXCIiLAotCQkJCQkJ CQkJCSBJdGVtUG9pbnRlckdldEJsb2NrTnVtYmVyKGhlYXBjdXJzb3IpLAotCQkJCQkJCQkJCSBJ dGVtUG9pbnRlckdldE9mZnNldE51bWJlcihoZWFwY3Vyc29yKSwKLQkJCQkJCQkJCQkgUmVsYXRp b25HZXRSZWxhdGlvbk5hbWUoaGVhcFJlbGF0aW9uKSkpKTsKLQkJCUl0ZW1Qb2ludGVyU2V0T2Zm c2V0TnVtYmVyKCZyb290VHVwbGUsIHJvb3Rfb2ZmbnVtKTsKLQkJfQotCi0JCS8qCi0JCSAqICJt ZXJnZSIgYnkgc2tpcHBpbmcgdGhyb3VnaCB0aGUgaW5kZXggdHVwbGVzIHVudGlsIHdlIGZpbmQg b3IgcGFzcwotCQkgKiB0aGUgY3VycmVudCByb290IHR1cGxlLgotCQkgKi8KLQkJd2hpbGUgKCF0 dXBsZXNvcnRfZW1wdHkgJiYKLQkJCSAgICghaW5kZXhjdXJzb3IgfHwKLQkJCQlJdGVtUG9pbnRl ckNvbXBhcmUoaW5kZXhjdXJzb3IsICZyb290VHVwbGUpIDwgMCkpCi0JCXsKLQkJCURhdHVtCQl0 c192YWw7Ci0JCQlib29sCQl0c19pc251bGw7Ci0KLQkJCWlmIChpbmRleGN1cnNvcikKKwkJCWlm IChJdGVtUG9pbnRlcklzVmFsaWQoJmhlYXBfdHVwbGVfZGF0YVtpXS50X3NlbGYpKQogCQkJewor CQkJCUl0ZW1Qb2ludGVyRGF0YSByb290X3RpZDsKKwkJCQlJdGVtUG9pbnRlclNldCgmcm9vdF90 aWQsIGJsb2NrX251bWJlciwgb2ZmKTsKKworCQkJCS8qIFJlc2V0IHRoZSBwZXItdHVwbGUgbWVt b3J5IGNvbnRleHQgZm9yIHRoZSBuZXh0IGZldGNoLiAqLworCQkJCU1lbW9yeUNvbnRleHRSZXNl dChlY29udGV4dC0+ZWN4dF9wZXJfdHVwbGVfbWVtb3J5KTsKKwkJCQlFeGVjU3RvcmVCdWZmZXJI ZWFwVHVwbGUoJmhlYXBfdHVwbGVfZGF0YVtpXSwgc2xvdCwgYnVmKTsKKworCQkJCS8qIENvbXB1 dGUgdGhlIGtleSB2YWx1ZXMgYW5kIG51bGwgZmxhZ3MgZm9yIHRoaXMgdHVwbGUuICovCisJCQkJ Rm9ybUluZGV4RGF0dW0oaW5kZXhJbmZvLAorCQkJCQkJCSAgIHNsb3QsCisJCQkJCQkJICAgZXN0 YXRlLAorCQkJCQkJCSAgIHZhbHVlcywKKwkJCQkJCQkgICBpc251bGwpOworCiAJCQkJLyoKLQkJ CQkgKiBSZW1lbWJlciBpbmRleCBpdGVtcyBzZWVuIGVhcmxpZXIgb24gdGhlIGN1cnJlbnQgaGVh cCBwYWdlCisJCQkJICogSW5zZXJ0IHRoZSB0dXBsZSBpbnRvIHRoZSB0YXJnZXQgaW5kZXguCiAJ CQkJICovCi0JCQkJaWYgKEl0ZW1Qb2ludGVyR2V0QmxvY2tOdW1iZXIoaW5kZXhjdXJzb3IpID09 IHJvb3RfYmxrbm8pCi0JCQkJCWluX2luZGV4W0l0ZW1Qb2ludGVyR2V0T2Zmc2V0TnVtYmVyKGlu ZGV4Y3Vyc29yKSAtIDFdID0gdHJ1ZTsKLQkJCX0KLQotCQkJdHVwbGVzb3J0X2VtcHR5ID0gIXR1 cGxlc29ydF9nZXRkYXR1bShzdGF0ZS0+dHVwbGVzb3J0LCB0cnVlLAotCQkJCQkJCQkJCQkJICBm YWxzZSwgJnRzX3ZhbCwgJnRzX2lzbnVsbCwKLQkJCQkJCQkJCQkJCSAgTlVMTCk7Ci0JCQlBc3Nl cnQodHVwbGVzb3J0X2VtcHR5IHx8ICF0c19pc251bGwpOwotCQkJaWYgKCF0dXBsZXNvcnRfZW1w dHkpCi0JCQl7Ci0JCQkJaXRlbXB0cl9kZWNvZGUoJmRlY29kZWQsIERhdHVtR2V0SW50NjQodHNf dmFsKSk7Ci0JCQkJaW5kZXhjdXJzb3IgPSAmZGVjb2RlZDsKLQkJCX0KLQkJCWVsc2UKLQkJCXsK LQkJCQkvKiBCZSB0aWR5ICovCi0JCQkJaW5kZXhjdXJzb3IgPSBOVUxMOworCQkJCWluZGV4X2lu c2VydChpbmRleFJlbGF0aW9uLAorCQkJCQkJCSB2YWx1ZXMsCisJCQkJCQkJIGlzbnVsbCwKKwkJ CQkJCQkgJnJvb3RfdGlkLCAvKiBpbnNlcnQgcm9vdCB0dXBsZSAqLworCQkJCQkJCSBoZWFwUmVs YXRpb24sCisJCQkJCQkJIGluZGV4SW5mby0+aWlfVW5pcXVlID8KKwkJCQkJCQkgVU5JUVVFX0NI RUNLX1lFUyA6IFVOSVFVRV9DSEVDS19OTywKKwkJCQkJCQkgZmFsc2UsCisJCQkJCQkJIGluZGV4 SW5mbyk7CiAJCQl9CisJCQlzdGF0ZS0+aHR1cHMgKz0gMTsKKwkJCXBnc3RhdF9wcm9ncmVzc19p bmNyX3BhcmFtKFBST0dSRVNTX0NSRUFURUlEWF9UVVBMRVNfRE9ORSwgMSk7CisJCQlpKys7CiAJ CX0KIAotCQkvKgotCQkgKiBJZiB0aGUgdHVwbGVzb3J0IGhhcyBvdmVyc2hvdCAqYW5kKiB3ZSBk aWRuJ3Qgc2VlIGEgbWF0Y2ggZWFybGllciwKLQkJICogdGhlbiB0aGlzIHR1cGxlIGlzIG1pc3Np bmcgZnJvbSB0aGUgaW5kZXgsIHNvIGluc2VydCBpdC4KLQkJICovCi0JCWlmICgodHVwbGVzb3J0 X2VtcHR5IHx8Ci0JCQkgSXRlbVBvaW50ZXJDb21wYXJlKGluZGV4Y3Vyc29yLCAmcm9vdFR1cGxl KSA+IDApICYmCi0JCQkhaW5faW5kZXhbcm9vdF9vZmZudW0gLSAxXSkKLQkJewotCQkJTWVtb3J5 Q29udGV4dFJlc2V0KGVjb250ZXh0LT5lY3h0X3Blcl90dXBsZV9tZW1vcnkpOwotCi0JCQkvKiBT ZXQgdXAgZm9yIHByZWRpY2F0ZSBvciBleHByZXNzaW9uIGV2YWx1YXRpb24gKi8KLQkJCUV4ZWNT dG9yZUhlYXBUdXBsZShoZWFwVHVwbGUsIHNsb3QsIGZhbHNlKTsKLQotCQkJLyoKLQkJCSAqIElu IGEgcGFydGlhbCBpbmRleCwgZGlzY2FyZCB0dXBsZXMgdGhhdCBkb24ndCBzYXRpc2Z5IHRoZQot CQkJICogcHJlZGljYXRlLgotCQkJICovCi0JCQlpZiAocHJlZGljYXRlICE9IE5VTEwpCi0JCQl7 Ci0JCQkJaWYgKCFFeGVjUXVhbChwcmVkaWNhdGUsIGVjb250ZXh0KSkKLQkJCQkJY29udGludWU7 Ci0JCQl9Ci0KLQkJCS8qCi0JCQkgKiBGb3IgdGhlIGN1cnJlbnQgaGVhcCB0dXBsZSwgZXh0cmFj dCBhbGwgdGhlIGF0dHJpYnV0ZXMgd2UgdXNlCi0JCQkgKiBpbiB0aGlzIGluZGV4LCBhbmQgbm90 ZSB3aGljaCBhcmUgbnVsbC4gIFRoaXMgYWxzbyBwZXJmb3JtcwotCQkJICogZXZhbHVhdGlvbiBv ZiBhbnkgZXhwcmVzc2lvbnMgbmVlZGVkLgotCQkJICovCi0JCQlGb3JtSW5kZXhEYXR1bShpbmRl eEluZm8sCi0JCQkJCQkgICBzbG90LAotCQkJCQkJICAgZXN0YXRlLAotCQkJCQkJICAgdmFsdWVz LAotCQkJCQkJICAgaXNudWxsKTsKLQotCQkJLyoKLQkJCSAqIFlvdSdkIHRoaW5rIHdlIHNob3Vs ZCBnbyBhaGVhZCBhbmQgYnVpbGQgdGhlIGluZGV4IHR1cGxlIGhlcmUsCi0JCQkgKiBidXQgc29t ZSBpbmRleCBBTXMgd2FudCB0byBkbyBmdXJ0aGVyIHByb2Nlc3Npbmcgb24gdGhlIGRhdGEKLQkJ CSAqIGZpcnN0LiBTbyBwYXNzIHRoZSB2YWx1ZXNbXSBhbmQgaXNudWxsW10gYXJyYXlzLCBpbnN0 ZWFkLgotCQkJICovCi0KLQkJCS8qCi0JCQkgKiBJZiB0aGUgdHVwbGUgaXMgYWxyZWFkeSBjb21t aXR0ZWQgZGVhZCwgeW91IG1pZ2h0IHRoaW5rIHdlCi0JCQkgKiBjb3VsZCBzdXBwcmVzcyB1bmlx dWVuZXNzIGNoZWNraW5nLCBidXQgdGhpcyBpcyBubyBsb25nZXIgdHJ1ZQotCQkJICogaW4gdGhl IHByZXNlbmNlIG9mIEhPVCwgYmVjYXVzZSB0aGUgaW5zZXJ0IGlzIGFjdHVhbGx5IGEgcHJveHkK LQkJCSAqIGZvciBhIHVuaXF1ZW5lc3MgY2hlY2sgb24gdGhlIHdob2xlIEhPVC1jaGFpbi4gIFRo YXQgaXMsIHRoZQotCQkJICogdHVwbGUgd2UgaGF2ZSBoZXJlIGNvdWxkIGJlIGRlYWQgYmVjYXVz ZSBpdCB3YXMgYWxyZWFkeQotCQkJICogSE9ULXVwZGF0ZWQsIGFuZCBpZiBzbyB0aGUgdXBkYXRp bmcgdHJhbnNhY3Rpb24gd2lsbCBub3QgaGF2ZQotCQkJICogdGhvdWdodCBpdCBzaG91bGQgaW5z ZXJ0IGluZGV4IGVudHJpZXMuICBUaGUgaW5kZXggQU0gd2lsbAotCQkJICogY2hlY2sgdGhlIHdo b2xlIEhPVC1jaGFpbiBhbmQgY29ycmVjdGx5IGRldGVjdCBhIGNvbmZsaWN0IGlmCi0JCQkgKiB0 aGVyZSBpcyBvbmUuCi0JCQkgKi8KLQotCQkJaW5kZXhfaW5zZXJ0KGluZGV4UmVsYXRpb24sCi0J CQkJCQkgdmFsdWVzLAotCQkJCQkJIGlzbnVsbCwKLQkJCQkJCSAmcm9vdFR1cGxlLAotCQkJCQkJ IGhlYXBSZWxhdGlvbiwKLQkJCQkJCSBpbmRleEluZm8tPmlpX1VuaXF1ZSA/Ci0JCQkJCQkgVU5J UVVFX0NIRUNLX1lFUyA6IFVOSVFVRV9DSEVDS19OTywKLQkJCQkJCSBmYWxzZSwKLQkJCQkJCSBp bmRleEluZm8pOwotCi0JCQlzdGF0ZS0+dHVwc19pbnNlcnRlZCArPSAxOwotCQl9CisJCVJlbGVh c2VCdWZmZXIoYnVmKTsKIAl9CiAKLQl0YWJsZV9lbmRzY2FuKHNjYW4pOwotCiAJRXhlY0Ryb3BT aW5nbGVUdXBsZVRhYmxlU2xvdChzbG90KTsKIAogCUZyZWVFeGVjdXRvclN0YXRlKGVzdGF0ZSk7 CiAKKwlyZWFkX3N0cmVhbV9lbmQocmVhZF9zdHJlYW0pOworCXR1cGxlc3RvcmVfZW5kKHR1cGxl c19mb3JfY2hlY2spOworCisJLyoKKwkgKiBEcm9wIHRoZSBsYXRlc3Qgc25hcHNob3QuICBXZSBt dXN0IGRvIHRoaXMgYmVmb3JlIHdhaXRpbmcgb3V0IG90aGVyCisJICogc25hcHNob3QgaG9sZGVy cywgZWxzZSB3ZSB3aWxsIGRlYWRsb2NrIGFnYWluc3Qgb3RoZXIgcHJvY2Vzc2VzIGFsc28KKwkg KiBkb2luZyBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZLCB3aGljaCB3b3VsZCBzZWUgb3VyIHNu YXBzaG90IGFzIG9uZQorCSAqIHRoZXkgbXVzdCB3YWl0IGZvci4KKwkgKi8KKwlQb3BBY3RpdmVT bmFwc2hvdCgpOworCVVucmVnaXN0ZXJTbmFwc2hvdChzbmFwc2hvdCk7CisJSW52YWxpZGF0ZUNh dGFsb2dTbmFwc2hvdCgpOworCUFzc2VydChNeVByb2MtPnhtaW4gPT0gSW52YWxpZFRyYW5zYWN0 aW9uSWQpOworI2lmIFVTRV9JTkpFQ1RJT05fUE9JTlRTCisJaWYgKE15UHJvYy0+eGlkID09IElu dmFsaWRUcmFuc2FjdGlvbklkKQorCQlJTkpFQ1RJT05fUE9JTlQoImhlYXBhbV9pbmRleF92YWxp ZGF0ZV9zY2FuX25vX3hpZCIpOworI2VuZGlmCiAJLyogVGhlc2UgbWF5IGhhdmUgYmVlbiBwb2lu dGluZyB0byB0aGUgbm93LWdvbmUgZXN0YXRlICovCiAJaW5kZXhJbmZvLT5paV9FeHByZXNzaW9u c1N0YXRlID0gTklMOwogCWluZGV4SW5mby0+aWlfUHJlZGljYXRlU3RhdGUgPSBOVUxMOworCisJ cmV0dXJuIGxpbWl0WG1pbjsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFs b2cvaW5kZXguYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwppbmRleCAzZTI3NTJjMDI4 NS4uZGViNDhlOTdkZDQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwor KysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKQEAgLTcxNCwxMSArNzE0LDE2IEBAIFVw ZGF0ZUluZGV4UmVsYXRpb24oT2lkIGluZGV4b2lkLAogICoJCQlhbHJlYWR5IGV4aXN0cy4KICAq CQlJTkRFWF9DUkVBVEVfUEFSVElUSU9ORUQ6CiAgKgkJCWNyZWF0ZSBhIHBhcnRpdGlvbmVkIGlu ZGV4ICh0YWJsZSBtdXN0IGJlIHBhcnRpdGlvbmVkKQorICoJCUlOREVYX0NSRUFURV9BVVhJTElB Ulk6CisgKgkJCW1hcmsgaW5kZXggYXMgYXV4aWxpYXJ5IGluZGV4CiAgKiBjb25zdHJfZmxhZ3M6 IGZsYWdzIHBhc3NlZCB0byBpbmRleF9jb25zdHJhaW50X2NyZWF0ZQogICoJCShvbmx5IGlmIElO REVYX0NSRUFURV9BRERfQ09OU1RSQUlOVCBpcyBzZXQpCiAgKiBhbGxvd19zeXN0ZW1fdGFibGVf bW9kczogYWxsb3cgdGFibGUgdG8gYmUgYSBzeXN0ZW0gY2F0YWxvZwogICogaXNfaW50ZXJuYWw6 IGlmIHRydWUsIHBvc3QgY3JlYXRpb24gaG9vayBmb3IgbmV3IGluZGV4CiAgKiBjb25zdHJhaW50 SWQ6IGlmIG5vdCBOVUxMLCByZWNlaXZlcyBPSUQgb2YgY3JlYXRlZCBjb25zdHJhaW50CisgKiBy ZWxwZXJzaXN0ZW5jZTogcGVyc2lzdGVuY2UgbGV2ZWwgdG8gdXNlIGZvciBpbmRleC4gSW4gbW9z dCBvZiB0aGUKKyAqCQljYXNlcyBpdCBpcyBzaG91bGQgYmUgZXF1YWwgdG8gcGVyc2lzdGVuY2Ug bGV2ZWwgb2YgdGFibGUsCisgKgkJYXV4aWxpYXJ5IGluZGV4ZXMgYXJlIG9ubHkgZXhjZXB0aW9u IGhlcmUuCiAgKgogICogUmV0dXJucyB0aGUgT0lEIG9mIHRoZSBjcmVhdGVkIGluZGV4LgogICov CkBAIC03NDMsNyArNzQ4LDggQEAgaW5kZXhfY3JlYXRlKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwK IAkJCSBiaXRzMTYgY29uc3RyX2ZsYWdzLAogCQkJIGJvb2wgYWxsb3dfc3lzdGVtX3RhYmxlX21v ZHMsCiAJCQkgYm9vbCBpc19pbnRlcm5hbCwKLQkJCSBPaWQgKmNvbnN0cmFpbnRJZCkKKwkJCSBP aWQgKmNvbnN0cmFpbnRJZCwKKwkJCSBjaGFyIHJlbHBlcnNpc3RlbmNlKQogewogCU9pZAkJCWhl YXBSZWxhdGlvbklkID0gUmVsYXRpb25HZXRSZWxpZChoZWFwUmVsYXRpb24pOwogCVJlbGF0aW9u CXBnX2NsYXNzOwpAQCAtNzU0LDExICs3NjAsMTEgQEAgaW5kZXhfY3JlYXRlKFJlbGF0aW9uIGhl YXBSZWxhdGlvbiwKIAlib29sCQlpc19leGNsdXNpb247CiAJT2lkCQkJbmFtZXNwYWNlSWQ7CiAJ aW50CQkJaTsKLQljaGFyCQlyZWxwZXJzaXN0ZW5jZTsKIAlib29sCQlpc3ByaW1hcnkgPSAoZmxh Z3MgJiBJTkRFWF9DUkVBVEVfSVNfUFJJTUFSWSkgIT0gMDsKIAlib29sCQlpbnZhbGlkID0gKGZs YWdzICYgSU5ERVhfQ1JFQVRFX0lOVkFMSUQpICE9IDA7CiAJYm9vbAkJY29uY3VycmVudCA9IChm bGFncyAmIElOREVYX0NSRUFURV9DT05DVVJSRU5UKSAhPSAwOwogCWJvb2wJCXBhcnRpdGlvbmVk ID0gKGZsYWdzICYgSU5ERVhfQ1JFQVRFX1BBUlRJVElPTkVEKSAhPSAwOworCWJvb2wJCWF1eGls aWFyeSA9IChmbGFncyAmIElOREVYX0NSRUFURV9BVVhJTElBUlkpICE9IDA7CiAJY2hhcgkJcmVs a2luZDsKIAlUcmFuc2FjdGlvbklkIHJlbGZyb3plbnhpZDsKIAlNdWx0aVhhY3RJZCByZWxtaW5t eGlkOwpAQCAtNzg0LDcgKzc5MCw2IEBAIGluZGV4X2NyZWF0ZShSZWxhdGlvbiBoZWFwUmVsYXRp b24sCiAJbmFtZXNwYWNlSWQgPSBSZWxhdGlvbkdldE5hbWVzcGFjZShoZWFwUmVsYXRpb24pOwog CXNoYXJlZF9yZWxhdGlvbiA9IGhlYXBSZWxhdGlvbi0+cmRfcmVsLT5yZWxpc3NoYXJlZDsKIAlt YXBwZWRfcmVsYXRpb24gPSBSZWxhdGlvbklzTWFwcGVkKGhlYXBSZWxhdGlvbik7Ci0JcmVscGVy c2lzdGVuY2UgPSBoZWFwUmVsYXRpb24tPnJkX3JlbC0+cmVscGVyc2lzdGVuY2U7CiAKIAkvKgog CSAqIGNoZWNrIHBhcmFtZXRlcnMKQEAgLTc5Miw2ICs3OTcsMTEgQEAgaW5kZXhfY3JlYXRlKFJl bGF0aW9uIGhlYXBSZWxhdGlvbiwKIAlpZiAoaW5kZXhJbmZvLT5paV9OdW1JbmRleEF0dHJzIDwg MSkKIAkJZWxvZyhFUlJPUiwgIm11c3QgaW5kZXggYXQgbGVhc3Qgb25lIGNvbHVtbiIpOwogCisJ aWYgKGluZGV4SW5mby0+aWlfQW0gPT0gU1RJUl9BTV9PSUQgJiYgIWF1eGlsaWFyeSkKKwkJZXJl cG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCks CisJCQkJIGVycm1zZygidXNlci1kZWZpbmVkIGluZGV4ZXMgd2l0aCBTVElSIGFjY2VzcyBtZXRo b2QgYXJlIG5vdCBzdXBwb3J0ZWQiKSkpOworCiAJaWYgKCFhbGxvd19zeXN0ZW1fdGFibGVfbW9k cyAmJgogCQlJc1N5c3RlbVJlbGF0aW9uKGhlYXBSZWxhdGlvbikgJiYKIAkJSXNOb3JtYWxQcm9j ZXNzaW5nTW9kZSgpKQpAQCAtMTM5Nyw3ICsxNDA3LDggQEAgaW5kZXhfY29uY3VycmVudGx5X2Ny ZWF0ZV9jb3B5KFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwgT2lkIG9sZEluZGV4SWQsCiAJCQkJCQkJ ZmFsc2UsCS8qIG5vdCByZWFkeSBmb3IgaW5zZXJ0cyAqLwogCQkJCQkJCXRydWUsCiAJCQkJCQkJ aW5kZXhSZWxhdGlvbi0+cmRfaW5kYW0tPmFtc3VtbWFyaXppbmcsCi0JCQkJCQkJb2xkSW5mby0+ aWlfV2l0aG91dE92ZXJsYXBzKTsKKwkJCQkJCQlvbGRJbmZvLT5paV9XaXRob3V0T3ZlcmxhcHMs CisJCQkJCQkJZmFsc2UpOwogCiAJLyoKIAkgKiBFeHRyYWN0IHRoZSBsaXN0IG9mIGNvbHVtbiBu YW1lcyBhbmQgdGhlIGNvbHVtbiBudW1iZXJzIGZvciB0aGUgbmV3CkBAIC0xNDYyLDcgKzE0NzMs OCBAQCBpbmRleF9jb25jdXJyZW50bHlfY3JlYXRlX2NvcHkoUmVsYXRpb24gaGVhcFJlbGF0aW9u LCBPaWQgb2xkSW5kZXhJZCwKIAkJCQkJCQkgIDAsCiAJCQkJCQkJICB0cnVlLCAvKiBhbGxvdyB0 YWJsZSB0byBiZSBhIHN5c3RlbSBjYXRhbG9nPyAqLwogCQkJCQkJCSAgZmFsc2UsCS8qIGlzX2lu dGVybmFsPyAqLwotCQkJCQkJCSAgTlVMTCk7CisJCQkJCQkJICBOVUxMLAorCQkJCQkJCSAgaGVh cFJlbGF0aW9uLT5yZF9yZWwtPnJlbHBlcnNpc3RlbmNlKTsKIAogCS8qIENsb3NlIHRoZSByZWxh dGlvbnMgdXNlZCBhbmQgY2xlYW4gdXAgKi8KIAlpbmRleF9jbG9zZShpbmRleFJlbGF0aW9uLCBO b0xvY2spOwpAQCAtMTQ3Miw2ICsxNDg0LDE1NSBAQCBpbmRleF9jb25jdXJyZW50bHlfY3JlYXRl X2NvcHkoUmVsYXRpb24gaGVhcFJlbGF0aW9uLCBPaWQgb2xkSW5kZXhJZCwKIAlyZXR1cm4gbmV3 SW5kZXhJZDsKIH0KIAorLyoKKyAqIGluZGV4X2NvbmN1cnJlbnRseV9jcmVhdGVfYXV4CisgKgor ICogQ3JlYXRlIGNvbmN1cnJlbnRseSBhbiBhdXhpbGlhcnkgaW5kZXggYmFzZWQgb24gdGhlIGRl ZmluaXRpb24gb2YgdGhlIG9uZQorICogcHJvdmlkZWQgYnkgY2FsbGVyLiAgVGhlIGluZGV4IGlz IGluc2VydGVkIGludG8gY2F0YWxvZ3MgYW5kIG5lZWRzIHRvIGJlCisgKiBidWlsdCBsYXRlciBv bi4gVGhpcyBpcyBjYWxsZWQgZHVyaW5nIGNvbmN1cnJlbnQgcmVpbmRleCBwcm9jZXNzaW5nLgor ICoKKyAqICJ0YWJsZXNwYWNlT2lkIiBpcyB0aGUgdGFibGVzcGFjZSB0byB1c2UgZm9yIHRoaXMg aW5kZXguCisgKi8KK09pZAoraW5kZXhfY29uY3VycmVudGx5X2NyZWF0ZV9hdXgoUmVsYXRpb24g aGVhcFJlbGF0aW9uLCBPaWQgbWFpbkluZGV4SWQsCisJCQkJCQkJICAgT2lkIHRhYmxlc3BhY2VP aWQsIGNvbnN0IGNoYXIgKm5ld05hbWUpCit7CisJUmVsYXRpb24JaW5kZXhSZWxhdGlvbjsKKwlJ bmRleEluZm8gICpvbGRJbmZvLAorCQkJKm5ld0luZm87CisJT2lkCQkJbmV3SW5kZXhJZCA9IElu dmFsaWRPaWQ7CisJSGVhcFR1cGxlCWluZGV4VHVwbGU7CisKKwlMaXN0CSAgICppbmRleENvbE5h bWVzID0gTklMOworCUxpc3QJICAgKmluZGV4RXhwcnMgPSBOSUw7CisJTGlzdAkgICAqaW5kZXhQ cmVkcyA9IE5JTDsKKworCU9pZCAqYXV4T3BjbGFzc0lkczsKKwlpbnQxNiAqYXV4Q29sb3B0aW9u czsKKworCWluZGV4UmVsYXRpb24gPSBpbmRleF9vcGVuKG1haW5JbmRleElkLCBSb3dFeGNsdXNp dmVMb2NrKTsKKworCS8qIFRoZSBuZXcgaW5kZXggbmVlZHMgc29tZSBpbmZvcm1hdGlvbiBmcm9t IHRoZSBvbGQgaW5kZXggKi8KKwlvbGRJbmZvID0gQnVpbGRJbmRleEluZm8oaW5kZXhSZWxhdGlv bik7CisKKwkvKgorCSAqIEJ1aWxkIG9mIGFuIGF1eGlsaWFyeSBpbmRleCB3aXRoIGV4Y2x1c2lv biBjb25zdHJhaW50cyBpcyBub3QKKwkgKiBzdXBwb3J0ZWQuCisJICovCisJaWYgKG9sZEluZm8t PmlpX0V4Y2x1c2lvbk9wcyAhPSBOVUxMKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2Rl KEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJCWVycm1zZygiYXV4aWxpYXJ5 IGluZGV4IGNyZWF0aW9uIGZvciBleGNsdXNpb24gY29uc3RyYWludHMgaXMgbm90IHN1cHBvcnRl ZCIpKSk7CisKKwkvKiBHZXQgdGhlIGFycmF5IG9mIGNsYXNzIGFuZCBjb2x1bW4gb3B0aW9ucyBJ RHMgZnJvbSBpbmRleCBpbmZvICovCisJaW5kZXhUdXBsZSA9IFNlYXJjaFN5c0NhY2hlMShJTkRF WFJFTElELCBPYmplY3RJZEdldERhdHVtKG1haW5JbmRleElkKSk7CisJaWYgKCFIZWFwVHVwbGVJ c1ZhbGlkKGluZGV4VHVwbGUpKQorCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBm b3IgaW5kZXggJXUiLCBtYWluSW5kZXhJZCk7CisKKworCS8qCisJICogRmV0Y2ggdGhlIGxpc3Qg b2YgZXhwcmVzc2lvbnMgYW5kIHByZWRpY2F0ZXMgZGlyZWN0bHkgZnJvbSB0aGUKKwkgKiBjYXRh bG9ncy4gIFRoaXMgY2Fubm90IHJlbHkgb24gdGhlIGluZm9ybWF0aW9uIGZyb20gSW5kZXhJbmZv IG9mIHRoZQorCSAqIG9sZCBpbmRleCBhcyB0aGVzZSBoYXZlIGJlZW4gZmxhdHRlbmVkIGZvciB0 aGUgcGxhbm5lci4KKwkgKi8KKwlpZiAob2xkSW5mby0+aWlfRXhwcmVzc2lvbnMgIT0gTklMKQor CXsKKwkJRGF0dW0JCWV4cHJEYXR1bTsKKwkJY2hhcgkgICAqZXhwclN0cmluZzsKKworCQlleHBy RGF0dW0gPSBTeXNDYWNoZUdldEF0dHJOb3ROdWxsKElOREVYUkVMSUQsIGluZGV4VHVwbGUsCisJ CQkJCQkJCQkJICAgQW51bV9wZ19pbmRleF9pbmRleHBycyk7CisJCWV4cHJTdHJpbmcgPSBUZXh0 RGF0dW1HZXRDU3RyaW5nKGV4cHJEYXR1bSk7CisJCWluZGV4RXhwcnMgPSAoTGlzdCAqKSBzdHJp bmdUb05vZGUoZXhwclN0cmluZyk7CisJCXBmcmVlKGV4cHJTdHJpbmcpOworCX0KKwlpZiAob2xk SW5mby0+aWlfUHJlZGljYXRlICE9IE5JTCkKKwl7CisJCURhdHVtCQlwcmVkRGF0dW07CisJCWNo YXIJICAgKnByZWRTdHJpbmc7CisKKwkJcHJlZERhdHVtID0gU3lzQ2FjaGVHZXRBdHRyTm90TnVs bChJTkRFWFJFTElELCBpbmRleFR1cGxlLAorCQkJCQkJCQkJCSAgIEFudW1fcGdfaW5kZXhfaW5k cHJlZCk7CisJCXByZWRTdHJpbmcgPSBUZXh0RGF0dW1HZXRDU3RyaW5nKHByZWREYXR1bSk7CisJ CWluZGV4UHJlZHMgPSAoTGlzdCAqKSBzdHJpbmdUb05vZGUocHJlZFN0cmluZyk7CisKKwkJLyog QWxzbyBjb252ZXJ0IHRvIGltcGxpY2l0LUFORCBmb3JtYXQgKi8KKwkJaW5kZXhQcmVkcyA9IG1h a2VfYW5kc19pbXBsaWNpdCgoRXhwciAqKSBpbmRleFByZWRzKTsKKwkJcGZyZWUocHJlZFN0cmlu Zyk7CisJfQorCisJLyoKKwkgKiBCdWlsZCB0aGUgaW5kZXggaW5mb3JtYXRpb24gZm9yIHRoZSBu ZXcgaW5kZXguICBOb3RlIHRoYXQgcmVidWlsZCBvZgorCSAqIGluZGV4ZXMgd2l0aCBleGNsdXNp b24gY29uc3RyYWludHMgaXMgbm90IHN1cHBvcnRlZCwgaGVuY2UgdGhlcmUgaXMgbm8KKwkgKiBu ZWVkIHRvIGZpbGwgYWxsIHRoZSBpaV9FeGNsdXNpb24qIGZpZWxkcy4KKwkgKi8KKwluZXdJbmZv ID0gbWFrZUluZGV4SW5mbyhvbGRJbmZvLT5paV9OdW1JbmRleEF0dHJzLAorCQkJCQkJCW9sZElu Zm8tPmlpX051bUluZGV4S2V5QXR0cnMsCisJCQkJCQkJU1RJUl9BTV9PSUQsIC8qIHNwZWNpYWwg QU0gZm9yIGF1eCBpbmRleGVzICovCisJCQkJCQkJaW5kZXhFeHBycywKKwkJCQkJCQlpbmRleFBy ZWRzLAorCQkJCQkJCWZhbHNlLAkvKiBhdXggaW5kZXggYXJlIG5vdCB1bmlxdWUgKi8KKwkJCQkJ CQlvbGRJbmZvLT5paV9OdWxsc05vdERpc3RpbmN0LAorCQkJCQkJCWZhbHNlLAkvKiBub3QgcmVh ZHkgZm9yIGluc2VydHMgKi8KKwkJCQkJCQl0cnVlLAorCQkJCQkJCWZhbHNlLAkvKiBhdXggYXJl IG5vdCBzdW1tYXJpemluZyAqLworCQkJCQkJCWZhbHNlLAkvKiBhdXggYXJlIG5vdCB3aXRob3V0 IG92ZXJsYXBzICovCisJCQkJCQkJdHJ1ZQkvKiBhdXhpbGlhcnkgKi8pOworCisJLyoKKwkgKiBF eHRyYWN0IHRoZSBsaXN0IG9mIGNvbHVtbiBuYW1lcyBhbmQgdGhlIGNvbHVtbiBudW1iZXJzIGZv ciB0aGUgbmV3CisJICogaW5kZXggaW5mb3JtYXRpb24uICBBbGwgdGhpcyBpbmZvcm1hdGlvbiB3 aWxsIGJlIHVzZWQgZm9yIHRoZSBpbmRleAorCSAqIGNyZWF0aW9uLgorCSAqLworCWZvciAoaW50 IGkgPSAwOyBpIDwgb2xkSW5mby0+aWlfTnVtSW5kZXhBdHRyczsgaSsrKQorCXsKKwkJVHVwbGVE ZXNjCWluZGV4VHVwRGVzYyA9IFJlbGF0aW9uR2V0RGVzY3IoaW5kZXhSZWxhdGlvbik7CisJCUZv cm1fcGdfYXR0cmlidXRlIGF0dCA9IFR1cGxlRGVzY0F0dHIoaW5kZXhUdXBEZXNjLCBpKTsKKwor CQlpbmRleENvbE5hbWVzID0gbGFwcGVuZChpbmRleENvbE5hbWVzLCBOYW1lU3RyKGF0dC0+YXR0 bmFtZSkpOworCQluZXdJbmZvLT5paV9JbmRleEF0dHJOdW1iZXJzW2ldID0gb2xkSW5mby0+aWlf SW5kZXhBdHRyTnVtYmVyc1tpXTsKKwl9CisKKwlhdXhPcGNsYXNzSWRzID0gcGFsbG9jMChzaXpl b2YoT2lkKSAqIG5ld0luZm8tPmlpX051bUluZGV4QXR0cnMpOworCWF1eENvbG9wdGlvbnMgPSBw YWxsb2MwKHNpemVvZihpbnQxNikgKiBuZXdJbmZvLT5paV9OdW1JbmRleEF0dHJzKTsKKworCS8q IEZpbGwgd2l0aCAiYW55IG9wcyIgKi8KKwlmb3IgKGludCBpID0gMDsgaSA8IG5ld0luZm8tPmlp X051bUluZGV4QXR0cnM7IGkrKykKKwl7CisJCWF1eE9wY2xhc3NJZHNbaV0gPSBBTllfU1RJUl9P UFNfT0lEOworCQlhdXhDb2xvcHRpb25zW2ldID0gMDsKKwl9CisKKwluZXdJbmRleElkID0gaW5k ZXhfY3JlYXRlKGhlYXBSZWxhdGlvbiwKKwkJCQkJCQkgIG5ld05hbWUsCisJCQkJCQkJICBJbnZh bGlkT2lkLCAgICAvKiBpbmRleFJlbGF0aW9uSWQgKi8KKwkJCQkJCQkgIEludmFsaWRPaWQsICAg IC8qIHBhcmVudEluZGV4UmVsaWQgKi8KKwkJCQkJCQkgIEludmFsaWRPaWQsICAgIC8qIHBhcmVu dENvbnN0cmFpbnRJZCAqLworCQkJCQkJCSAgSW52YWxpZFJlbEZpbGVOdW1iZXIsIC8qIHJlbEZp bGVOdW1iZXIgKi8KKwkJCQkJCQkgIG5ld0luZm8sCisJCQkJCQkJICBpbmRleENvbE5hbWVzLAor CQkJCQkJCSAgU1RJUl9BTV9PSUQsCisJCQkJCQkJICB0YWJsZXNwYWNlT2lkLAorCQkJCQkJCSAg aW5kZXhSZWxhdGlvbi0+cmRfaW5kY29sbGF0aW9uLAorCQkJCQkJCSAgYXV4T3BjbGFzc0lkcywK KwkJCQkJCQkgIE5VTEwsCisJCQkJCQkJICBhdXhDb2xvcHRpb25zLAorCQkJCQkJCSAgTlVMTCwK KwkJCQkJCQkgIChEYXR1bSkgMCwKKwkJCQkJCQkgIElOREVYX0NSRUFURV9TS0lQX0JVSUxEIHwg SU5ERVhfQ1JFQVRFX0NPTkNVUlJFTlQgfCBJTkRFWF9DUkVBVEVfQVVYSUxJQVJZLAorCQkJCQkJ CSAgMCwKKwkJCQkJCQkgIHRydWUsIC8qIGFsbG93IHRhYmxlIHRvIGJlIGEgc3lzdGVtIGNhdGFs b2c/ICovCisJCQkJCQkJICBmYWxzZSwgICAgLyogaXNfaW50ZXJuYWw/ICovCisJCQkJCQkJICBO VUxMLAorCQkJCQkJCSAgUkVMUEVSU0lTVEVOQ0VfVU5MT0dHRUQpOyAvKiBhdXggaW5kZXhlcyB1 bmxvZ2dlZCAqLworCisJLyogQ2xvc2UgdGhlIHJlbGF0aW9ucyB1c2VkIGFuZCBjbGVhbiB1cCAq LworCWluZGV4X2Nsb3NlKGluZGV4UmVsYXRpb24sIE5vTG9jayk7CisJUmVsZWFzZVN5c0NhY2hl KGluZGV4VHVwbGUpOworCisJcmV0dXJuIG5ld0luZGV4SWQ7Cit9CisKIC8qCiAgKiBpbmRleF9j b25jdXJyZW50bHlfYnVpbGQKICAqCkBAIC0yNDY4LDcgKzI2MjksOCBAQCBCdWlsZEluZGV4SW5m byhSZWxhdGlvbiBpbmRleCkKIAkJCQkJICAgaW5kZXhTdHJ1Y3QtPmluZGlzcmVhZHksCiAJCQkJ CSAgIGZhbHNlLAogCQkJCQkgICBpbmRleC0+cmRfaW5kYW0tPmFtc3VtbWFyaXppbmcsCi0JCQkJ CSAgIGluZGV4U3RydWN0LT5pbmRpc2V4Y2x1c2lvbiAmJiBpbmRleFN0cnVjdC0+aW5kaXN1bmlx dWUpOworCQkJCQkgICBpbmRleFN0cnVjdC0+aW5kaXNleGNsdXNpb24gJiYgaW5kZXhTdHJ1Y3Qt PmluZGlzdW5pcXVlLAorCQkJCQkgICBpbmRleC0+cmRfcmVsLT5yZWxhbSA9PSBTVElSX0FNX09J RCAvKiBhdXhpbGlhcnkgaWZmIFNUSVIgKi8pOwogCiAJLyogZmlsbCBpbiBhdHRyaWJ1dGUgbnVt YmVycyAqLwogCWZvciAoaSA9IDA7IGkgPCBudW1BdHRzOyBpKyspCkBAIC0yNTI4LDcgKzI2OTAs OCBAQCBCdWlsZER1bW15SW5kZXhJbmZvKFJlbGF0aW9uIGluZGV4KQogCQkJCQkgICBpbmRleFN0 cnVjdC0+aW5kaXNyZWFkeSwKIAkJCQkJICAgZmFsc2UsCiAJCQkJCSAgIGluZGV4LT5yZF9pbmRh bS0+YW1zdW1tYXJpemluZywKLQkJCQkJICAgaW5kZXhTdHJ1Y3QtPmluZGlzZXhjbHVzaW9uICYm IGluZGV4U3RydWN0LT5pbmRpc3VuaXF1ZSk7CisJCQkJCSAgIGluZGV4U3RydWN0LT5pbmRpc2V4 Y2x1c2lvbiAmJiBpbmRleFN0cnVjdC0+aW5kaXN1bmlxdWUsCisJCQkJCSAgIGluZGV4LT5yZF9y ZWwtPnJlbGFtID09IFNUSVJfQU1fT0lEIC8qIGF1eGlsaWFyeSBpZmYgU1RJUiAqLyk7CiAKIAkv KiBmaWxsIGluIGF0dHJpYnV0ZSBudW1iZXJzICovCiAJZm9yIChpID0gMDsgaSA8IG51bUF0dHM7 IGkrKykKQEAgLTMyNzksMTIgKzM0NDIsMjEgQEAgSW5kZXhDaGVja0V4Y2x1c2lvbihSZWxhdGlv biBoZWFwUmVsYXRpb24sCiAgKgogICogV2UgZG8gYSBjb25jdXJyZW50IGluZGV4IGJ1aWxkIGJ5 IGZpcnN0IGluc2VydGluZyB0aGUgY2F0YWxvZyBlbnRyeSBmb3IgdGhlCiAgKiBpbmRleCB2aWEg aW5kZXhfY3JlYXRlKCksIG1hcmtpbmcgaXQgbm90IGluZGlzcmVhZHkgYW5kIG5vdCBpbmRpc3Zh bGlkLgorICogVGhlbiB3ZSBjcmVhdGUgc3BlY2lhbCBhdXhpbGlhcnkgaW5kZXggdGhlIHNhbWUg d2F5LiBJdCBiYXNlZCBvbiBTVElSIEFNLgogICogVGhlbiB3ZSBjb21taXQgb3VyIHRyYW5zYWN0 aW9uIGFuZCBzdGFydCBhIG5ldyBvbmUsIHRoZW4gd2Ugd2FpdCBmb3IgYWxsCiAgKiB0cmFuc2Fj dGlvbnMgdGhhdCBjb3VsZCBoYXZlIGJlZW4gbW9kaWZ5aW5nIHRoZSB0YWJsZSB0byB0ZXJtaW5h dGUuICBOb3cKLSAqIHdlIGtub3cgdGhhdCBhbnkgc3Vic2VxdWVudGx5LXN0YXJ0ZWQgdHJhbnNh Y3Rpb25zIHdpbGwgc2VlIHRoZSBpbmRleCBhbmQKKyAqIHdlIGtub3cgdGhhdCBhbnkgc3Vic2Vx dWVudGx5LXN0YXJ0ZWQgdHJhbnNhY3Rpb25zIHdpbGwgc2VlIGluZGV4ZXMgYW5kCiAgKiBob25v ciBpdHMgY29uc3RyYWludHMgb24gSE9UIHVwZGF0ZXM7IHNvIHdoaWxlIGV4aXN0aW5nIEhPVC1j aGFpbnMgbWlnaHQKICAqIGJlIGJyb2tlbiB3aXRoIHJlc3BlY3QgdG8gdGhlIGluZGV4LCBubyBj dXJyZW50bHkgbGl2ZSB0dXBsZSB3aWxsIGhhdmUgYW4KLSAqIGluY29tcGF0aWJsZSBIT1QgdXBk YXRlIGRvbmUgdG8gaXQuICBXZSBub3cgYnVpbGQgdGhlIGluZGV4IG5vcm1hbGx5IHZpYQorICog aW5jb21wYXRpYmxlIEhPVCB1cGRhdGUgZG9uZSB0byBpdC4KKyAqCisgKiBBZnRlciB3ZSBidWls ZCBhdXhpbGlhcnkgaW5kZXguIEl0IGlzIGZhc3Qgb3BlcmF0aW9uIHdpdGhvdXQgYW55IGFjdHVh bAorICogdGFibGUgc2Nhbi4gQXMgcmVzdWx0LCB3ZSBoYXZlIGVtcHR5IFNUSVIgaW5kZXguIFdl IGNvbW1pdCB0cmFuc2FjdGlvbiBhbmQKKyAqIGFnYWluIHdhaXQgZm9yIGFsbCB0cmFuc2FjdGlv bnMgdGhhdCBjb3VsZCBoYXZlIGJlZW4gbW9kaWZ5aW5nIHRoZSB0YWJsZQorICogdG8gdGVybWlu YXRlLiBBdCB0aGF0IG1vbWVudCBhbGwgbmV3IHR1cGxlcyBhcmUgZ29pbmcgdG8gYmUgaW5zZXJ0 ZWQgaW50bworICogYXV4aWxpYXJ5IGluZGV4LgorICoKKyAqIFdlIG5vdyBidWlsZCB0aGUgaW5k ZXggbm9ybWFsbHkgdmlhCiAgKiBpbmRleF9idWlsZCgpLCB3aGlsZSBob2xkaW5nIGEgd2VhayBs b2NrIHRoYXQgYWxsb3dzIGNvbmN1cnJlbnQKICAqIGluc2VydC91cGRhdGUvZGVsZXRlLiAgQWxz bywgd2UgaW5kZXggb25seSB0dXBsZXMgdGhhdCBhcmUgdmFsaWQKICAqIGFzIG9mIHRoZSBzdGFy dCBvZiB0aGUgc2NhbiAoc2VlIHRhYmxlX2luZGV4X2J1aWxkX3NjYW4pLCB3aGVyZWFzIGEgbm9y bWFsCkBAIC0zMjk0LDE4ICszNDY2LDIxIEBAIEluZGV4Q2hlY2tFeGNsdXNpb24oUmVsYXRpb24g aGVhcFJlbGF0aW9uLAogICogYm9ndXMgdW5pcXVlLWluZGV4IGZhaWx1cmVzIGR1ZSB0byBjb25j dXJyZW50IFVQREFURXMgKHdlIG1pZ2h0IHNlZQogICogZGlmZmVyZW50IHZlcnNpb25zIG9mIHRo ZSBzYW1lIHJvdyBhcyBiZWluZyB2YWxpZCB3aGVuIHdlIHBhc3Mgb3ZlciB0aGVtLAogICogaWYg d2UgdXNlZCBIZWFwVHVwbGVTYXRpc2ZpZXNWYWN1dW0pLiAgVGhpcyBsZWF2ZXMgdXMgd2l0aCBh biBpbmRleCB0aGF0Ci0gKiBkb2VzIG5vdCBjb250YWluIGFueSB0dXBsZXMgYWRkZWQgdG8gdGhl IHRhYmxlIHdoaWxlIHdlIGJ1aWx0IHRoZSBpbmRleC4KKyAqIGRvZXMgbm90IGNvbnRhaW4gYW55 IHR1cGxlcyBhZGRlZCB0byB0aGUgdGFibGUgd2hpbGUgd2UgYnVpbHQgdGhlIGluZGV4CisgKiAo dXQgdGhlc2UgdHVwbGVzIGNvbnRhaW5lZCBpbiBhdXhpbGlhcnkgaW5kZXgpLgogICoKICAqIEZ1 cnRoZXJtb3JlLCB3ZSBzZXQgU09fUkVTRVRfU05BUFNIT1QgZm9yIHRoZSBzY2FuLCB3aGljaCBj YXVzZXMgbmV3CiAgKiBzbmFwc2hvdCB0byBiZSBzZXQgYXMgYWN0aXZlIGV2ZXJ5IHNvIG9mdGVu LiBUaGUgcmVhc29uICBmb3IgdGhhdCBpcyB0bwogICogcHJvcGFnYXRlIHRoZSB4bWluIGhvcml6 b24gZm9yd2FyZC4KICAqCiAgKiBOZXh0LCB3ZSBtYXJrIHRoZSBpbmRleCAiaW5kaXNyZWFkeSIg KGJ1dCBzdGlsbCBub3QgImluZGlzdmFsaWQiKSBhbmQKLSAqIGNvbW1pdCB0aGUgc2Vjb25kIHRy YW5zYWN0aW9uIGFuZCBzdGFydCBhIHRoaXJkLiAgQWdhaW4gd2Ugd2FpdCBmb3IgYWxsCisgKiBj b21taXQgdGhlIHRoaXJkIHRyYW5zYWN0aW9uIGFuZCBzdGFydCBhIGZvdXJ0aC4gIEFnYWluIHdl IHdhaXQgZm9yIGFsbAogICogdHJhbnNhY3Rpb25zIHRoYXQgY291bGQgaGF2ZSBiZWVuIG1vZGlm eWluZyB0aGUgdGFibGUgdG8gdGVybWluYXRlLiAgTm93CiAgKiB3ZSBrbm93IHRoYXQgYW55IHN1 YnNlcXVlbnRseS1zdGFydGVkIHRyYW5zYWN0aW9ucyB3aWxsIHNlZSB0aGUgaW5kZXggYW5kCi0g KiBpbnNlcnQgdGhlaXIgbmV3IHR1cGxlcyBpbnRvIGl0LiAgV2UgdGhlbiB0YWtlIGEgbmV3IHJl ZmVyZW5jZSBzbmFwc2hvdAotICogd2hpY2ggaXMgcGFzc2VkIHRvIHZhbGlkYXRlX2luZGV4KCku ICBBbnkgdHVwbGVzIHRoYXQgYXJlIHZhbGlkIGFjY29yZGluZworICogaW5zZXJ0IHRoZWlyIG5l dyB0dXBsZXMgaW50byBpdC4gQXQgdGhlIHNhbWUgbW9tZW50IHdlIGNsZWFyICJpbmRpc3JlYWR5 IiBmb3IKKyAqIGF1eGlsaWFyeSBpbmRleCwgc2luY2UgaXQgaXMgbm8gbW9yZSByZXF1aXJlZC4K KyAqCisgKiBXZSB0aGVuIHRha2UgYSBuZXcgcmVmZXJlbmNlIHNuYXBzaG90LCBhbnkgdHVwbGVz IHRoYXQgYXJlIHZhbGlkIGFjY29yZGluZwogICogdG8gdGhpcyBzbmFwLCBidXQgYXJlIG5vdCBp biB0aGUgaW5kZXgsIG11c3QgYmUgYWRkZWQgdG8gdGhlIGluZGV4LgogICogKEFueSB0dXBsZXMg Y29tbWl0dGVkIGxpdmUgYWZ0ZXIgdGhlIHNuYXAgd2lsbCBiZSBpbnNlcnRlZCBpbnRvIHRoZQog ICogaW5kZXggYnkgdGhlaXIgb3JpZ2luYXRpbmcgdHJhbnNhY3Rpb24uICBBbnkgdHVwbGVzIGNv bW1pdHRlZCBkZWFkIGJlZm9yZQpAQCAtMzMxMywxMiArMzQ4OCwxNCBAQCBJbmRleENoZWNrRXhj bHVzaW9uKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKICAqIHRoYXQgbWlnaHQgY2FyZSBhYm91dCB0 aGVtIGJlZm9yZSB3ZSBtYXJrIHRoZSBpbmRleCB2YWxpZC4pCiAgKgogICogdmFsaWRhdGVfaW5k ZXgoKSB3b3JrcyBieSBmaXJzdCBnYXRoZXJpbmcgYWxsIHRoZSBUSURzIGN1cnJlbnRseSBpbiB0 aGUKLSAqIGluZGV4LCB1c2luZyBhIGJ1bGtkZWxldGUgY2FsbGJhY2sgdGhhdCBqdXN0IHN0b3Jl cyB0aGUgVElEcyBhbmQgZG9lc24ndAorICogaW5kZXhlcywgdXNpbmcgYSBidWxrZGVsZXRlIGNh bGxiYWNrIHRoYXQganVzdCBzdG9yZXMgdGhlIFRJRHMgYW5kIGRvZXNuJ3QKICAqIGV2ZXIgc2F5 ICJkZWxldGUgaXQiLiAgKFRoaXMgc2hvdWxkIGJlIGZhc3RlciB0aGFuIGEgcGxhaW4gaW5kZXhz Y2FuOwogICogYWxzbywgbm90IGFsbCBpbmRleCBBTXMgc3VwcG9ydCBmdWxsLWluZGV4IGluZGV4 c2Nhbi4pICBUaGVuIHdlIHNvcnQgdGhlCi0gKiBUSURzLCBhbmQgZmluYWxseSBzY2FuIHRoZSB0 YWJsZSBkb2luZyBhICJtZXJnZSBqb2luIiBhZ2FpbnN0IHRoZSBUSUQgbGlzdAotICogdG8gc2Vl IHdoaWNoIHR1cGxlcyBhcmUgbWlzc2luZyBmcm9tIHRoZSBpbmRleC4gIFRodXMgd2Ugd2lsbCBl bnN1cmUgdGhhdAotICogYWxsIHR1cGxlcyB2YWxpZCBhY2NvcmRpbmcgdG8gdGhlIHJlZmVyZW5j ZSBzbmFwc2hvdCBhcmUgaW4gdGhlIGluZGV4LgorICogVElEcyBvZiBib3RoIGF1eGlsaWFyeSBh bmQgdGFyZ2V0IGluZGV4ZXMsIGFuZCBkb2luZyBhICJtZXJnZSBqb2luIiBhZ2FpbnN0CisgKiB0 aGUgVElEIGxpc3RzIHRvIHNlZSB3aGljaCB0dXBsZXMgZnJvbSBhdXhpbGlhcnkgaW5kZXggYXJl IG1pc3NpbmcgZnJvbSB0aGUKKyAqIHRhcmdldCBpbmRleC4gIFRodXMgd2Ugd2lsbCBlbnN1cmUg dGhhdCBhbGwgdHVwbGVzIHZhbGlkIGFjY29yZGluZyB0byB0aGUKKyAqIHJlZmVyZW5jZSBzbmFw c2hvdCBhcmUgaW4gdGhlIGluZGV4LiBOb3RpY2Ugd2UgbmVlZCB0byBkbyBidWxrZGVsZXRlIGlu IHRoZQorICogcGFydGljdWxhciBvcmRlcjogYXV4aWxpYXJ5IGZpcnN0LCB0YXJnZXQgbGFzdC4K ICAqCiAgKiBCdWlsZGluZyBhIHVuaXF1ZSBpbmRleCB0aGlzIHdheSBpcyB0cmlja3k6IHdlIG1p Z2h0IHRyeSB0byBpbnNlcnQgYQogICogdHVwbGUgdGhhdCBpcyBhbHJlYWR5IGRlYWQgb3IgaXMg aW4gcHJvY2VzcyBvZiBiZWluZyBkZWxldGVkLCBhbmQgd2UKQEAgLTMzMzYsMjIgKzM1MTMsMjcg QEAgSW5kZXhDaGVja0V4Y2x1c2lvbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAgKiBub3QgaW5k ZXgpLiAgVGhlbiB3ZSBtYXJrIHRoZSBpbmRleCAiaW5kaXN2YWxpZCIgYW5kIGNvbW1pdC4gIFN1 YnNlcXVlbnQKICAqIHRyYW5zYWN0aW9ucyB3aWxsIGJlIGFibGUgdG8gdXNlIGl0IGZvciBxdWVy aWVzLgogICoKLSAqIERvaW5nIHR3byBmdWxsIHRhYmxlIHNjYW5zIGlzIGEgYnJ1dGUtZm9yY2Ug c3RyYXRlZ3kuICBXZSBjb3VsZCB0cnkgdG8gYmUKLSAqIGNsZXZlcmVyLCBlZyBzdG9yaW5nIG5l dyB0dXBsZXMgaW4gYSBzcGVjaWFsIGFyZWEgb2YgdGhlIHRhYmxlIChwZXJoYXBzCi0gKiBtYWtp bmcgdGhlIHRhYmxlIGFwcGVuZC1vbmx5IGJ5IHNldHRpbmcgdXNlX2ZzbSkuICBIb3dldmVyIHRo YXQgd291bGQKLSAqIGFkZCB5ZXQgbW9yZSBsb2NraW5nIGlzc3Vlcy4KKyAqIEFsc28sIHNvbWUg YWN0aW9ucyB0byBjb25jdXJyZW50IGRyb3AgdGhlIGF1eGlsaWFyeSBpbmRleCBhcmUgcGVyZm9y bWVkLgogICovCi12b2lkCi12YWxpZGF0ZV9pbmRleChPaWQgaGVhcElkLCBPaWQgaW5kZXhJZCwg U25hcHNob3Qgc25hcHNob3QpCitUcmFuc2FjdGlvbklkCit2YWxpZGF0ZV9pbmRleChPaWQgaGVh cElkLCBPaWQgaW5kZXhJZCwgT2lkIGF1eEluZGV4SWQpCiB7CiAJUmVsYXRpb24JaGVhcFJlbGF0 aW9uLAotCQkJCWluZGV4UmVsYXRpb247CisJCQkJaW5kZXhSZWxhdGlvbiwKKwkJCQlhdXhJbmRl eFJlbGF0aW9uOwogCUluZGV4SW5mbyAgKmluZGV4SW5mbzsKLQlJbmRleFZhY3V1bUluZm8gaXZp bmZvOwotCVZhbGlkYXRlSW5kZXhTdGF0ZSBzdGF0ZTsKKwlUcmFuc2FjdGlvbklkIGxpbWl0WG1p bjsKKwlJbmRleFZhY3V1bUluZm8gaXZpbmZvLCBhdXhpdmluZm87CisJVmFsaWRhdGVJbmRleFN0 YXRlIHN0YXRlLCBhdXhTdGF0ZTsKIAlPaWQJCQlzYXZlX3VzZXJpZDsKIAlpbnQJCQlzYXZlX3Nl Y19jb250ZXh0OwogCWludAkJCXNhdmVfbmVzdGxldmVsOworCS8qIFVzZSA4MCUgb2YgbWFpbnRl bmFuY2Vfd29ya19tZW0gdG8gdGFyZ2V0IGluZGV4IHNvcnRpbmcgYW5kCisJICogMTAlIHJlc3Qg Zm9yIGF1eGlsaWFyeS4KKwkgKgorCSAqIFJlc3QgMTAlIHdpbGwgYmUgdXNlZCBmb3IgdHVwbGVz dG9yZSBsYXRlci4gKi8KKwlpbnQ2NAkJbWFpbl93b3JrX21lbV9wYXJ0ID0gKGludDY0KSBtYWlu dGVuYW5jZV93b3JrX21lbSAqIDggLyAxMDsKKwlpbnQJCQlhdXhfd29ya19tZW1fcGFydCA9IG1h aW50ZW5hbmNlX3dvcmtfbWVtIC8gMTA7CiAKIAl7CiAJCWNvbnN0IGludAlwcm9ncmVzc19pbmRl eFtdID0gewpAQCAtMzM4NCwxMiArMzU2NiwxNiBAQCB2YWxpZGF0ZV9pbmRleChPaWQgaGVhcElk LCBPaWQgaW5kZXhJZCwgU25hcHNob3Qgc25hcHNob3QpCiAJUmVzdHJpY3RTZWFyY2hQYXRoKCk7 CiAKIAlpbmRleFJlbGF0aW9uID0gaW5kZXhfb3BlbihpbmRleElkLCBSb3dFeGNsdXNpdmVMb2Nr KTsKKwlhdXhJbmRleFJlbGF0aW9uID0gaW5kZXhfb3BlbihhdXhJbmRleElkLCBSb3dFeGNsdXNp dmVMb2NrKTsKIAogCS8qCiAJICogRmV0Y2ggaW5mbyBuZWVkZWQgZm9yIGluZGV4X2luc2VydC4g IChZb3UgbWlnaHQgdGhpbmsgdGhpcyBzaG91bGQgYmUKIAkgKiBwYXNzZWQgaW4gZnJvbSBEZWZp bmVJbmRleCwgYnV0IGl0cyBjb3B5IGlzIGxvbmcgZ29uZSBkdWUgdG8gaGF2aW5nCiAJICogYmVl biBidWlsdCBpbiBhIHByZXZpb3VzIHRyYW5zYWN0aW9uLikKKwkgKgorCSAqIFdlIG1pZ2h0IG5l ZWQgc25hcHNob3QgZm9yIGluZGV4IGV4cHJlc3Npb25zIG9yIHByZWRpY2F0ZXMuCiAJICovCisJ UHVzaEFjdGl2ZVNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CiAJaW5kZXhJbmZv ID0gQnVpbGRJbmRleEluZm8oaW5kZXhSZWxhdGlvbik7CiAKIAkvKiBtYXJrIGJ1aWxkIGlzIGNv bmN1cnJlbnQganVzdCBmb3IgY29uc2lzdGVuY3kgKi8KQEAgLTM0MDgsMTUgKzM1OTQsMzAgQEAg dmFsaWRhdGVfaW5kZXgoT2lkIGhlYXBJZCwgT2lkIGluZGV4SWQsIFNuYXBzaG90IHNuYXBzaG90 KQogCWl2aW5mby5zdHJhdGVneSA9IE5VTEw7CiAJaXZpbmZvLnZhbGlkYXRlX2luZGV4ID0gdHJ1 ZTsKIAorCS8qCisJICogQ29weSBhbGwgaW5mbyB0byBhdXhpbGlhcnkgaW5mbywgY2hhbmdpbmcg b25seSByZWxhdGlvbi4KKwkgKi8KKwlhdXhpdmluZm8gPSBpdmluZm87CisJYXV4aXZpbmZvLmlu ZGV4ID0gYXV4SW5kZXhSZWxhdGlvbjsKKwogCS8qCiAJICogRW5jb2RlIFRJRHMgYXMgaW50OCB2 YWx1ZXMgZm9yIHRoZSBzb3J0LCByYXRoZXIgdGhhbiBkaXJlY3RseSBzb3J0aW5nCiAJICogaXRl bSBwb2ludGVycy4gIFRoaXMgY2FuIGJlIHNpZ25pZmljYW50bHkgZmFzdGVyLCBwcmltYXJpbHkg YmVjYXVzZSBUSUQKIAkgKiBpcyBhIHBhc3MtYnktcmVmZXJlbmNlIHR5cGUgb24gYWxsIHBsYXRm b3Jtcywgd2hlcmVhcyBpbnQ4IGlzCiAJICogcGFzcy1ieS12YWx1ZSBvbiBtb3N0IHBsYXRmb3Jt cy4KIAkgKi8KKwlhdXhTdGF0ZS50dXBsZXNvcnQgPSB0dXBsZXNvcnRfYmVnaW5fZGF0dW0oSU5U OE9JRCwgSW50OExlc3NPcGVyYXRvciwKKwkJCQkJCQkJCQkgICBJbnZhbGlkT2lkLCBmYWxzZSwK KwkJCQkJCQkJCQkgICBhdXhfd29ya19tZW1fcGFydCwKKwkJCQkJCQkJCQkgICBOVUxMLCBUVVBM RVNPUlRfTk9ORSk7CisJYXV4U3RhdGUuaHR1cHMgPSBhdXhTdGF0ZS5pdHVwcyA9IGF1eFN0YXRl LnR1cHNfaW5zZXJ0ZWQgPSAwOworCisJKHZvaWQpIGluZGV4X2J1bGtfZGVsZXRlKCZhdXhpdmlu Zm8sIE5VTEwsCisJCQkJCQkJIHZhbGlkYXRlX2luZGV4X2NhbGxiYWNrLCAmYXV4U3RhdGUpOwor CiAJc3RhdGUudHVwbGVzb3J0ID0gdHVwbGVzb3J0X2JlZ2luX2RhdHVtKElOVDhPSUQsIEludDhM ZXNzT3BlcmF0b3IsCiAJCQkJCQkJCQkJCUludmFsaWRPaWQsIGZhbHNlLAotCQkJCQkJCQkJCQlt YWludGVuYW5jZV93b3JrX21lbSwKKwkJCQkJCQkJCQkJKGludCkgbWFpbl93b3JrX21lbV9wYXJ0 LAogCQkJCQkJCQkJCQlOVUxMLCBUVVBMRVNPUlRfTk9ORSk7CiAJc3RhdGUuaHR1cHMgPSBzdGF0 ZS5pdHVwcyA9IHN0YXRlLnR1cHNfaW5zZXJ0ZWQgPSAwOwogCkBAIC0zNDM5LDI3ICszNjQwLDMz IEBAIHZhbGlkYXRlX2luZGV4KE9pZCBoZWFwSWQsIE9pZCBpbmRleElkLCBTbmFwc2hvdCBzbmFw c2hvdCkKIAkJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9tdWx0aV9wYXJhbSgzLCBwcm9ncmVzc19p bmRleCwgcHJvZ3Jlc3NfdmFscyk7CiAJfQogCXR1cGxlc29ydF9wZXJmb3Jtc29ydChzdGF0ZS50 dXBsZXNvcnQpOworCXR1cGxlc29ydF9wZXJmb3Jtc29ydChhdXhTdGF0ZS50dXBsZXNvcnQpOwor CisJUG9wQWN0aXZlU25hcHNob3QoKTsKKwlJbnZhbGlkYXRlQ2F0YWxvZ1NuYXBzaG90KCk7CisJ QXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAogCS8qCi0JICog Tm93IHNjYW4gdGhlIGhlYXAgYW5kICJtZXJnZSIgaXQgd2l0aCB0aGUgaW5kZXgKKwkgKiBOb3cg bWVyZ2UgYm90aCBpbmRleGVzCiAJICovCiAJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQ Uk9HUkVTU19DUkVBVEVJRFhfUEhBU0UsCi0JCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhfUEhB U0VfVkFMSURBVEVfVEFCTEVTQ0FOKTsKLQl0YWJsZV9pbmRleF92YWxpZGF0ZV9zY2FuKGhlYXBS ZWxhdGlvbiwKLQkJCQkJCQkgIGluZGV4UmVsYXRpb24sCi0JCQkJCQkJICBpbmRleEluZm8sCi0J CQkJCQkJICBzbmFwc2hvdCwKLQkJCQkJCQkgICZzdGF0ZSk7CisJCQkJCQkJCSBQUk9HUkVTU19D UkVBVEVJRFhfUEhBU0VfVkFMSURBVEVfSURYTUVSR0UpOworCWxpbWl0WG1pbiA9IHRhYmxlX2lu ZGV4X3ZhbGlkYXRlX3NjYW4oaGVhcFJlbGF0aW9uLAorCQkJCQkJCQkJCSAgaW5kZXhSZWxhdGlv biwKKwkJCQkJCQkJCQkgIGluZGV4SW5mbywKKwkJCQkJCQkJCQkgICZzdGF0ZSwKKwkJCQkJCQkJ CQkgICZhdXhTdGF0ZSk7CiAKLQkvKiBEb25lIHdpdGggdHVwbGVzb3J0IG9iamVjdCAqLwotCXR1 cGxlc29ydF9lbmQoc3RhdGUudHVwbGVzb3J0KTsKKwkvKiBUdXBsZSBzb3J0IGNsb3NlZCBieSB0 YWJsZV9pbmRleF92YWxpZGF0ZV9zY2FuICovCisJQXNzZXJ0KHN0YXRlLnR1cGxlc29ydCA9PSBO VUxMICYmIGF1eFN0YXRlLnR1cGxlc29ydCA9PSBOVUxMKTsKIAogCS8qIE1ha2Ugc3VyZSB0byBy ZWxlYXNlIHJlc291cmNlcyBjYWNoZWQgaW4gaW5kZXhJbmZvIChpZiBuZWVkZWQpLiAqLwogCWlu ZGV4X2luc2VydF9jbGVhbnVwKGluZGV4UmVsYXRpb24sIGluZGV4SW5mbyk7CiAKIAllbG9nKERF QlVHMiwKLQkJICJ2YWxpZGF0ZV9pbmRleCBmb3VuZCAlLjBmIGhlYXAgdHVwbGVzLCAlLjBmIGlu ZGV4IHR1cGxlczsgaW5zZXJ0ZWQgJS4wZiBtaXNzaW5nIHR1cGxlcyIsCi0JCSBzdGF0ZS5odHVw cywgc3RhdGUuaXR1cHMsIHN0YXRlLnR1cHNfaW5zZXJ0ZWQpOworCQkgInZhbGlkYXRlX2luZGV4 IGZldGNoZWQgJS4wZiBoZWFwIHR1cGxlcywgJS4wZiBpbmRleCB0dXBsZXM7IgorCQkJCQkJIiAl LjBmIGF1eCBpbmRleCB0dXBsZXM7IGluc2VydGVkICUuMGYgbWlzc2luZyB0dXBsZXMiLAorCQkg c3RhdGUuaHR1cHMsIHN0YXRlLml0dXBzLCBhdXhTdGF0ZS5pdHVwcywgc3RhdGUudHVwc19pbnNl cnRlZCk7CiAKIAkvKiBSb2xsIGJhY2sgYW55IEdVQyBjaGFuZ2VzIGV4ZWN1dGVkIGJ5IGluZGV4 IGZ1bmN0aW9ucyAqLwogCUF0RU9YYWN0X0dVQyhmYWxzZSwgc2F2ZV9uZXN0bGV2ZWwpOwpAQCAt MzQ2OCw4ICszNjc1LDEyIEBAIHZhbGlkYXRlX2luZGV4KE9pZCBoZWFwSWQsIE9pZCBpbmRleElk LCBTbmFwc2hvdCBzbmFwc2hvdCkKIAlTZXRVc2VySWRBbmRTZWNDb250ZXh0KHNhdmVfdXNlcmlk LCBzYXZlX3NlY19jb250ZXh0KTsKIAogCS8qIENsb3NlIHJlbHMsIGJ1dCBrZWVwIGxvY2tzICov CisJaW5kZXhfY2xvc2UoYXV4SW5kZXhSZWxhdGlvbiwgTm9Mb2NrKTsKIAlpbmRleF9jbG9zZShp bmRleFJlbGF0aW9uLCBOb0xvY2spOwogCXRhYmxlX2Nsb3NlKGhlYXBSZWxhdGlvbiwgTm9Mb2Nr KTsKKworCUFzc2VydCghVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CisJcmV0 dXJuIGxpbWl0WG1pbjsKIH0KIAogLyoKQEAgLTM1MjgsNiArMzczOSwxMSBAQCBpbmRleF9zZXRf c3RhdGVfZmxhZ3MoT2lkIGluZGV4SWQsIEluZGV4U3RhdGVGbGFnc0FjdGlvbiBhY3Rpb24pCiAJ CQlBc3NlcnQoIWluZGV4Rm9ybS0+aW5kaXN2YWxpZCk7CiAJCQlpbmRleEZvcm0tPmluZGlzdmFs aWQgPSB0cnVlOwogCQkJYnJlYWs7CisJCWNhc2UgSU5ERVhfRFJPUF9DTEVBUl9SRUFEWToKKwkJ CS8qIENsZWFyIGluZGlzcmVhZHkgZHVyaW5nIGEgQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBz ZXF1ZW5jZSAqLworCQkJQXNzZXJ0KCFpbmRleEZvcm0tPmluZGlzdmFsaWQpOworCQkJaW5kZXhG b3JtLT5pbmRpc3JlYWR5ID0gZmFsc2U7CisJCQlicmVhazsKIAkJY2FzZSBJTkRFWF9EUk9QX0NM RUFSX1ZBTElEOgogCiAJCQkvKgpAQCAtMzc5OSw2ICs0MDE1LDEzIEBAIHJlaW5kZXhfaW5kZXgo Y29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCBpbmRleElkLAogCQlpbmRleEluZm8tPmlpX0V4 Y2x1c2lvblN0cmF0cyA9IE5VTEw7CiAJfQogCisJLyogQXV4aWxpYXJ5IGluZGV4ZXMgYXJlIG5v dCBhbGxvd2VkIHRvIGJlIHJlYnVpbHQgKi8KKwlpZiAoaW5kZXhJbmZvLT5paV9BdXhpbGlhcnkp CisJCWVyZXBvcnQoRVJST1IsCisJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBP UlRFRCksCisJCQkgZXJybXNnKCJyZWluZGV4IG9mIGF1eGlsaWFyeSBpbmRleCBcIiVzXCIgbm90 IHN1cHBvcnRlZCIsCisJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKGlSZWwpKSkpOworCiAJ LyogU3VwcHJlc3MgdXNlIG9mIHRoZSB0YXJnZXQgaW5kZXggd2hpbGUgcmVidWlsZGluZyBpdCAq LwogCVNldFJlaW5kZXhQcm9jZXNzaW5nKGhlYXBJZCwgaW5kZXhJZCk7CiAKQEAgLTQwNDEsNiAr NDI2NCw3IEBAIHJlaW5kZXhfcmVsYXRpb24oY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCBy ZWxpZCwgaW50IGZsYWdzLAogCXsKIAkJT2lkCQkJaW5kZXhPaWQgPSBsZmlyc3Rfb2lkKGluZGV4 SWQpOwogCQlPaWQJCQlpbmRleE5hbWVzcGFjZUlkID0gZ2V0X3JlbF9uYW1lc3BhY2UoaW5kZXhP aWQpOworCQlPaWQJCQlpbmRleEFtID0gZ2V0X3JlbF9yZWxhbShpbmRleE9pZCk7CiAKIAkJLyoK IAkJICogU2tpcCBhbnkgaW52YWxpZCBpbmRleGVzIG9uIGEgVE9BU1QgdGFibGUuICBUaGVzZSBj YW4gb25seSBiZQpAQCAtNDA2Niw2ICs0MjkwLDE4IEBAIHJlaW5kZXhfcmVsYXRpb24oY29uc3Qg UmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxpZCwgaW50IGZsYWdzLAogCQkJY29udGludWU7CiAJ CX0KIAorCQlpZiAoaW5kZXhBbSA9PSBTVElSX0FNX09JRCkKKwkJeworCQkJZXJlcG9ydChXQVJO SU5HLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJ CSBlcnJtc2coInNraXBwaW5nIHJlaW5kZXggb2YgYXV4aWxpYXJ5IGluZGV4IFwiJXMuJXNcIiIs CisJCQkJCQkJZ2V0X25hbWVzcGFjZV9uYW1lKGluZGV4TmFtZXNwYWNlSWQpLAorCQkJCQkJCWdl dF9yZWxfbmFtZShpbmRleE9pZCkpKSk7CisJCQlpZiAoZmxhZ3MgJiBSRUlOREVYX1JFTF9TVVBQ UkVTU19JTkRFWF9VU0UpCisJCQkJUmVtb3ZlUmVpbmRleFBlbmRpbmcoaW5kZXhPaWQpOworCQkJ Y29udGludWU7CisJCX0KKwogCQlyZWluZGV4X2luZGV4KHN0bXQsIGluZGV4T2lkLCAhKGZsYWdz ICYgUkVJTkRFWF9SRUxfQ0hFQ0tfQ09OU1RSQUlOVFMpLAogCQkJCQkgIHBlcnNpc3RlbmNlLCBw YXJhbXMpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5z cWwgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwKaW5kZXggZWZmMDk5MDk1 N2UuLjBmZWRmNzRhMTJkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92 aWV3cy5zcWwKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCkBAIC0x Mjc4LDE2ICsxMjc4LDE3IEBAIENSRUFURSBWSUVXIHBnX3N0YXRfcHJvZ3Jlc3NfY3JlYXRlX2lu ZGV4IEFTCiAgICAgICAgICAgICAgICAgICAgICAgRU5EIEFTIGNvbW1hbmQsCiAgICAgICAgIENB U0UgUy5wYXJhbTEwIFdIRU4gMCBUSEVOICdpbml0aWFsaXppbmcnCiAgICAgICAgICAgICAgICAg ICAgICAgIFdIRU4gMSBUSEVOICd3YWl0aW5nIGZvciB3cml0ZXJzIGJlZm9yZSBidWlsZCcKLSAg ICAgICAgICAgICAgICAgICAgICAgV0hFTiAyIFRIRU4gJ2J1aWxkaW5nIGluZGV4JyB8fAorICAg ICAgICAgICAgICAgICAgICAgICBXSEVOIDIgVEhFTiAnd2FpdGluZyBmb3Igd3JpdGVycyB0byB1 c2UgYXV4aWxpYXJ5IGluZGV4JworICAgICAgICAgICAgICAgICAgICAgICBXSEVOIDMgVEhFTiAn YnVpbGRpbmcgaW5kZXgnIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT0FMRVNDRSgo JzogJyB8fCBwZ19pbmRleGFtX3Byb2dyZXNzX3BoYXNlbmFtZShTLnBhcmFtOTo6b2lkLCBTLnBh cmFtMTEpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnKQotICAgICAg ICAgICAgICAgICAgICAgICBXSEVOIDMgVEhFTiAnd2FpdGluZyBmb3Igd3JpdGVycyBiZWZvcmUg dmFsaWRhdGlvbicKLSAgICAgICAgICAgICAgICAgICAgICAgV0hFTiA0IFRIRU4gJ2luZGV4IHZh bGlkYXRpb246IHNjYW5uaW5nIGluZGV4JwotICAgICAgICAgICAgICAgICAgICAgICBXSEVOIDUg VEhFTiAnaW5kZXggdmFsaWRhdGlvbjogc29ydGluZyB0dXBsZXMnCi0gICAgICAgICAgICAgICAg ICAgICAgIFdIRU4gNiBUSEVOICdpbmRleCB2YWxpZGF0aW9uOiBzY2FubmluZyB0YWJsZScKLSAg ICAgICAgICAgICAgICAgICAgICAgV0hFTiA3IFRIRU4gJ3dhaXRpbmcgZm9yIG9sZCBzbmFwc2hv dHMnCi0gICAgICAgICAgICAgICAgICAgICAgIFdIRU4gOCBUSEVOICd3YWl0aW5nIGZvciByZWFk ZXJzIGJlZm9yZSBtYXJraW5nIGRlYWQnCi0gICAgICAgICAgICAgICAgICAgICAgIFdIRU4gOSBU SEVOICd3YWl0aW5nIGZvciByZWFkZXJzIGJlZm9yZSBkcm9wcGluZycKKyAgICAgICAgICAgICAg ICAgICAgICAgV0hFTiA0IFRIRU4gJ3dhaXRpbmcgZm9yIHdyaXRlcnMgYmVmb3JlIHZhbGlkYXRp b24nCisgICAgICAgICAgICAgICAgICAgICAgIFdIRU4gNSBUSEVOICdpbmRleCB2YWxpZGF0aW9u OiBzY2FubmluZyBpbmRleCcKKyAgICAgICAgICAgICAgICAgICAgICAgV0hFTiA2IFRIRU4gJ2lu ZGV4IHZhbGlkYXRpb246IHNvcnRpbmcgdHVwbGVzJworICAgICAgICAgICAgICAgICAgICAgICBX SEVOIDcgVEhFTiAnaW5kZXggdmFsaWRhdGlvbjogbWVyZ2luZyBpbmRleGVzJworICAgICAgICAg ICAgICAgICAgICAgICBXSEVOIDggVEhFTiAnd2FpdGluZyBmb3Igb2xkIHNuYXBzaG90cycKKyAg ICAgICAgICAgICAgICAgICAgICAgV0hFTiA5IFRIRU4gJ3dhaXRpbmcgZm9yIHJlYWRlcnMgYmVm b3JlIG1hcmtpbmcgZGVhZCcKKyAgICAgICAgICAgICAgICAgICAgICAgV0hFTiAxMCBUSEVOICd3 YWl0aW5nIGZvciByZWFkZXJzIGJlZm9yZSBkcm9wcGluZycKICAgICAgICAgICAgICAgICAgICAg ICAgRU5EIGFzIHBoYXNlLAogICAgICAgICBTLnBhcmFtNCBBUyBsb2NrZXJzX3RvdGFsLAogICAg ICAgICBTLnBhcmFtNSBBUyBsb2NrZXJzX2RvbmUsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9j YXRhbG9nL3RvYXN0aW5nLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3RvYXN0aW5nLmMKaW5kZXgg ODc0YThmYzg5YWQuLjBlZTJmZDVlN2RlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9n L3RvYXN0aW5nLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy90b2FzdGluZy5jCkBAIC0zMjUs NyArMzI1LDggQEAgY3JlYXRlX3RvYXN0X3RhYmxlKFJlbGF0aW9uIHJlbCwgT2lkIHRvYXN0T2lk LCBPaWQgdG9hc3RJbmRleE9pZCwKIAkJCQkgQlRSRUVfQU1fT0lELAogCQkJCSByZWwtPnJkX3Jl bC0+cmVsdGFibGVzcGFjZSwKIAkJCQkgY29sbGF0aW9uSWRzLCBvcGNsYXNzSWRzLCBOVUxMLCBj b2xvcHRpb25zLCBOVUxMLCAoRGF0dW0pIDAsCi0JCQkJIElOREVYX0NSRUFURV9JU19QUklNQVJZ LCAwLCB0cnVlLCB0cnVlLCBOVUxMKTsKKwkJCQkgSU5ERVhfQ1JFQVRFX0lTX1BSSU1BUlksIDAs IHRydWUsIHRydWUsIE5VTEwsCisJCQkJIHRvYXN0X3JlbC0+cmRfcmVsLT5yZWxwZXJzaXN0ZW5j ZSk7CiAKIAl0YWJsZV9jbG9zZSh0b2FzdF9yZWwsIE5vTG9jayk7CiAKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5k ZXhjbWRzLmMKaW5kZXggNWViYzUwODMxYmUuLjYzZWQ0N2NmYjI1IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9p bmRleGNtZHMuYwpAQCAtMTgyLDYgKzE4Miw3IEBAIENoZWNrSW5kZXhDb21wYXRpYmxlKE9pZCBv bGRJZCwKIAkJCQkJIGJvb2wgaXNXaXRob3V0T3ZlcmxhcHMpCiB7CiAJYm9vbAkJaXNjb25zdHJh aW50OworCWJvb2wJCWlzYXV4aWxpYXJ5OwogCU9pZAkJICAgKnR5cGVJZHM7CiAJT2lkCQkgICAq Y29sbGF0aW9uSWRzOwogCU9pZAkJICAgKm9wY2xhc3NJZHM7CkBAIC0yMzIsNiArMjMzLDcgQEAg Q2hlY2tJbmRleENvbXBhdGlibGUoT2lkIG9sZElkLAogCiAJYW1jYW5vcmRlciA9IGFtUm91dGlu ZS0+YW1jYW5vcmRlcjsKIAlhbXN1bW1hcml6aW5nID0gYW1Sb3V0aW5lLT5hbXN1bW1hcml6aW5n OworCWlzYXV4aWxpYXJ5ID0gYWNjZXNzTWV0aG9kSWQgPT0gU1RJUl9BTV9PSUQ7CiAKIAkvKgog CSAqIENvbXB1dGUgdGhlIG9wZXJhdG9yIGNsYXNzZXMsIGNvbGxhdGlvbnMsIGFuZCBleGNsdXNp b24gb3BlcmF0b3JzIGZvcgpAQCAtMjQzLDcgKzI0NSw4IEBAIENoZWNrSW5kZXhDb21wYXRpYmxl KE9pZCBvbGRJZCwKIAkgKi8KIAlpbmRleEluZm8gPSBtYWtlSW5kZXhJbmZvKG51bWJlck9mQXR0 cmlidXRlcywgbnVtYmVyT2ZBdHRyaWJ1dGVzLAogCQkJCQkJCSAgYWNjZXNzTWV0aG9kSWQsIE5J TCwgTklMLCBmYWxzZSwgZmFsc2UsCi0JCQkJCQkJICBmYWxzZSwgZmFsc2UsIGFtc3VtbWFyaXpp bmcsIGlzV2l0aG91dE92ZXJsYXBzKTsKKwkJCQkJCQkgIGZhbHNlLCBmYWxzZSwgYW1zdW1tYXJp emluZywKKwkJCQkJCQkgIGlzV2l0aG91dE92ZXJsYXBzLCBpc2F1eGlsaWFyeSk7CiAJdHlwZUlk cyA9IHBhbGxvY19hcnJheShPaWQsIG51bWJlck9mQXR0cmlidXRlcyk7CiAJY29sbGF0aW9uSWRz ID0gcGFsbG9jX2FycmF5KE9pZCwgbnVtYmVyT2ZBdHRyaWJ1dGVzKTsKIAlvcGNsYXNzSWRzID0g cGFsbG9jX2FycmF5KE9pZCwgbnVtYmVyT2ZBdHRyaWJ1dGVzKTsKQEAgLTU1Myw2ICs1NTYsNyBA QCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIHsKIAlib29sCQljb25jdXJyZW50OwogCWNoYXIJ ICAgKmluZGV4UmVsYXRpb25OYW1lOworCWNoYXIJICAgKmF1eEluZGV4UmVsYXRpb25OYW1lID0g TlVMTDsKIAljaGFyCSAgICphY2Nlc3NNZXRob2ROYW1lOwogCU9pZAkJICAgKnR5cGVJZHM7CiAJ T2lkCQkgICAqY29sbGF0aW9uSWRzOwpAQCAtNTYyLDYgKzU2Niw3IEBAIERlZmluZUluZGV4KE9p ZCB0YWJsZUlkLAogCU9pZAkJCW5hbWVzcGFjZUlkOwogCU9pZAkJCXRhYmxlc3BhY2VJZDsKIAlP aWQJCQljcmVhdGVkQ29uc3RyYWludElkID0gSW52YWxpZE9pZDsKKwlPaWQJCQlhdXhJbmRleFJl bGF0aW9uSWQgPSBJbnZhbGlkT2lkOwogCUxpc3QJICAgKmluZGV4Q29sTmFtZXM7CiAJTGlzdAkg ICAqYWxsSW5kZXhQYXJhbXM7CiAJUmVsYXRpb24JcmVsOwpAQCAtNTgzLDEwICs1ODgsMTAgQEAg RGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJaW50CQkJbnVtYmVyT2ZLZXlBdHRyaWJ1dGVzOwog CVRyYW5zYWN0aW9uSWQgbGltaXRYbWluOwogCU9iamVjdEFkZHJlc3MgYWRkcmVzczsKKwlPYmpl Y3RBZGRyZXNzIGF1eEFkZHJlc3M7CiAJTG9ja1JlbElkCWhlYXByZWxpZDsKIAlMT0NLVEFHCQlo ZWFwbG9ja3RhZzsKIAlMT0NLTU9ERQlsb2NrbW9kZTsKLQlTbmFwc2hvdAlzbmFwc2hvdDsKIAlP aWQJCQlyb290X3NhdmVfdXNlcmlkOwogCWludAkJCXJvb3Rfc2F2ZV9zZWNfY29udGV4dDsKIAlp bnQJCQlyb290X3NhdmVfbmVzdGxldmVsOwpAQCAtODMzLDYgKzgzOCwxNSBAQCBEZWZpbmVJbmRl eChPaWQgdGFibGVJZCwKIAkJCQkJCQkJCQkJc3RtdC0+ZXhjbHVkZU9wTmFtZXMsCiAJCQkJCQkJ CQkJCXN0bXQtPnByaW1hcnksCiAJCQkJCQkJCQkJCXN0bXQtPmlzY29uc3RyYWludCk7CisJLyoK KwkgKiBTZWxlY3QgbmFtZSBmb3IgYXV4aWxpYXJ5IGluZGV4CisJICovCisJaWYgKGNvbmN1cnJl bnQpCisJCWF1eEluZGV4UmVsYXRpb25OYW1lID0gQ2hvb3NlUmVsYXRpb25OYW1lKGluZGV4UmVs YXRpb25OYW1lLAorCQkJCQkJCQkJCQkJICBOVUxMLAorCQkJCQkJCQkJCQkJICAiY2NhdXgiLAor CQkJCQkJCQkJCQkJICBuYW1lc3BhY2VJZCwKKwkJCQkJCQkJCQkJCSAgZmFsc2UpOwogCiAJLyoK IAkgKiBsb29rIHVwIHRoZSBhY2Nlc3MgbWV0aG9kLCB2ZXJpZnkgaXQgY2FuIGhhbmRsZSB0aGUg cmVxdWVzdGVkIGZlYXR1cmVzCkBAIC05MjgsNyArOTQyLDggQEAgRGVmaW5lSW5kZXgoT2lkIHRh YmxlSWQsCiAJCQkJCQkJICAhY29uY3VycmVudCwKIAkJCQkJCQkgIGNvbmN1cnJlbnQsCiAJCQkJ CQkJICBhbWlzc3VtbWFyaXppbmcsCi0JCQkJCQkJICBzdG10LT5pc3dpdGhvdXRvdmVybGFwcyk7 CisJCQkJCQkJICBzdG10LT5pc3dpdGhvdXRvdmVybGFwcywKKwkJCQkJCQkgIGZhbHNlKTsKIAog CXR5cGVJZHMgPSBwYWxsb2NfYXJyYXkoT2lkLCBudW1iZXJPZkF0dHJpYnV0ZXMpOwogCWNvbGxh dGlvbklkcyA9IHBhbGxvY19hcnJheShPaWQsIG51bWJlck9mQXR0cmlidXRlcyk7CkBAIC0xMjU3 LDcgKzEyNzIsOCBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAkJCQkJIGNvbG9wdGlvbnMs IE5VTEwsIHJlbG9wdGlvbnMsCiAJCQkJCSBmbGFncywgY29uc3RyX2ZsYWdzLAogCQkJCQkgYWxs b3dTeXN0ZW1UYWJsZU1vZHMsICFjaGVja19yaWdodHMsCi0JCQkJCSAmY3JlYXRlZENvbnN0cmFp bnRJZCk7CisJCQkJCSAmY3JlYXRlZENvbnN0cmFpbnRJZCwKKwkJCQkJIHJlbC0+cmRfcmVsLT5y ZWxwZXJzaXN0ZW5jZSk7CiAKIAlPYmplY3RBZGRyZXNzU2V0KGFkZHJlc3MsIFJlbGF0aW9uUmVs YXRpb25JZCwgaW5kZXhSZWxhdGlvbklkKTsKIApAQCAtMTU5OSw2ICsxNjE1LDE2IEBAIERlZmlu ZUluZGV4KE9pZCB0YWJsZUlkLAogCQlyZXR1cm4gYWRkcmVzczsKIAl9CiAKKwkvKgorCSAqIElu IGNhc2Ugb2YgY29uY3VycmVudCBidWlsZCAtIGNyZWF0ZSBhdXhpbGlhcnkgaW5kZXggcmVjb3Jk LgorCSAqLworCWlmIChjb25jdXJyZW50KQorCXsKKwkJYXV4SW5kZXhSZWxhdGlvbklkID0gaW5k ZXhfY29uY3VycmVudGx5X2NyZWF0ZV9hdXgocmVsLCBpbmRleFJlbGF0aW9uSWQsCisJCQkJCQkJ CQkJCXRhYmxlc3BhY2VJZCwgYXV4SW5kZXhSZWxhdGlvbk5hbWUpOworCQlPYmplY3RBZGRyZXNz U2V0KGF1eEFkZHJlc3MsIFJlbGF0aW9uUmVsYXRpb25JZCwgYXV4SW5kZXhSZWxhdGlvbklkKTsK Kwl9CisKIAlBdEVPWGFjdF9HVUMoZmFsc2UsIHJvb3Rfc2F2ZV9uZXN0bGV2ZWwpOwogCVNldFVz ZXJJZEFuZFNlY0NvbnRleHQocm9vdF9zYXZlX3VzZXJpZCwgcm9vdF9zYXZlX3NlY19jb250ZXh0 KTsKIApAQCAtMTYyNywxMSArMTY1MywxMSBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAkv KgogCSAqIEZvciBhIGNvbmN1cnJlbnQgYnVpbGQsIGl0J3MgaW1wb3J0YW50IHRvIG1ha2UgdGhl IGNhdGFsb2cgZW50cmllcwogCSAqIHZpc2libGUgdG8gb3RoZXIgdHJhbnNhY3Rpb25zIGJlZm9y ZSB3ZSBzdGFydCB0byBidWlsZCB0aGUgaW5kZXguIFRoYXQKLQkgKiB3aWxsIHByZXZlbnQgdGhl bSBmcm9tIG1ha2luZyBpbmNvbXBhdGlibGUgSE9UIHVwZGF0ZXMuICBUaGUgbmV3IGluZGV4Ci0J ICogd2lsbCBiZSBtYXJrZWQgbm90IGluZGlzcmVhZHkgYW5kIG5vdCBpbmRpc3ZhbGlkLCBzbyB0 aGF0IG5vIG9uZSBlbHNlCi0JICogdHJpZXMgdG8gZWl0aGVyIGluc2VydCBpbnRvIGl0IG9yIHVz ZSBpdCBmb3IgcXVlcmllcy4KKwkgKiB3aWxsIHByZXZlbnQgdGhlbSBmcm9tIG1ha2luZyBpbmNv bXBhdGlibGUgSE9UIHVwZGF0ZXMuIE5ldyBpbmRleGVzCisJICogKG1haW4gYW5kIGF1eGlsaWFy eSkgd2lsbCBiZSBtYXJrZWQgbm90IGluZGlzcmVhZHkgYW5kIG5vdCBpbmRpc3ZhbGlkLAorCSAq IHNvIHRoYXQgbm8gb25lIGVsc2UgdHJpZXMgdG8gZWl0aGVyIGluc2VydCBpbnRvIGl0IG9yIHVz ZSBpdCBmb3IgcXVlcmllcy4KIAkgKgotCSAqIFdlIG11c3QgY29tbWl0IG91ciBjdXJyZW50IHRy YW5zYWN0aW9uIHNvIHRoYXQgdGhlIGluZGV4IGJlY29tZXMKKwkgKiBXZSBtdXN0IGNvbW1pdCBv dXIgY3VycmVudCB0cmFuc2FjdGlvbiBzbyB0aGF0IHRoZSBpbmRleGVzIGJlY29tZXMKIAkgKiB2 aXNpYmxlOyB0aGVuIHN0YXJ0IGFub3RoZXIuICBOb3RlIHRoYXQgYWxsIHRoZSBkYXRhIHN0cnVj dHVyZXMgd2UganVzdAogCSAqIGJ1aWx0IGFyZSBsb3N0IGluIHRoZSBjb21taXQuICBUaGUgb25s eSBkYXRhIHdlIGtlZXAgcGFzdCBoZXJlIGFyZSB0aGUKIAkgKiByZWxhdGlvbiBJRHMuCkBAIC0x NjQxLDcgKzE2NjcsNyBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAkgKiBjYW5ub3QgYmxv Y2ssIGV2ZW4gaWYgc29tZW9uZSBlbHNlIGlzIHdhaXRpbmcgZm9yIGFjY2VzcywgYmVjYXVzZSB3 ZQogCSAqIGFscmVhZHkgaGF2ZSB0aGUgc2FtZSBsb2NrIHdpdGhpbiBvdXIgdHJhbnNhY3Rpb24u CiAJICoKLQkgKiBOb3RlOiB3ZSBkb24ndCBjdXJyZW50bHkgYm90aGVyIHdpdGggYSBzZXNzaW9u IGxvY2sgb24gdGhlIGluZGV4LAorCSAqIE5vdGU6IHdlIGRvbid0IGN1cnJlbnRseSBib3RoZXIg d2l0aCBhIHNlc3Npb24gbG9jayBvbiB0aGUgaW5kZXhlcywKIAkgKiBiZWNhdXNlIHRoZXJlIGFy ZSBubyBvcGVyYXRpb25zIHRoYXQgY291bGQgY2hhbmdlIGl0cyBzdGF0ZSB3aGlsZSB3ZQogCSAq IGhvbGQgbG9jayBvbiB0aGUgcGFyZW50IHRhYmxlLiAgVGhpcyBtaWdodCBuZWVkIHRvIGNoYW5n ZSBsYXRlci4KIAkgKi8KQEAgLTE2ODAsNyArMTcwNiw3IEBAIERlZmluZUluZGV4KE9pZCB0YWJs ZUlkLAogCSAqIHdpdGggdGhlIG9sZCBsaXN0IG9mIGluZGV4ZXMuICBVc2UgU2hhcmVMb2NrIHRv IGNvbnNpZGVyIHJ1bm5pbmcKIAkgKiB0cmFuc2FjdGlvbnMgdGhhdCBob2xkIGxvY2tzIHRoYXQg cGVybWl0IHdyaXRpbmcgdG8gdGhlIHRhYmxlLiAgTm90ZSB3ZQogCSAqIGRvIG5vdCBuZWVkIHRv IHdvcnJ5IGFib3V0IHhhY3RzIHRoYXQgb3BlbiB0aGUgdGFibGUgZm9yIHdyaXRpbmcgYWZ0ZXIK LQkgKiB0aGlzIHBvaW50OyB0aGV5IHdpbGwgc2VlIHRoZSBuZXcgaW5kZXggd2hlbiB0aGV5IG9w ZW4gaXQuCisJICogdGhpcyBwb2ludDsgdGhleSB3aWxsIHNlZSB0aGUgbmV3IGluZGV4ZXMgd2hl biB0aGV5IG9wZW4gaXQuCiAJICoKIAkgKiBOb3RlOiB0aGUgcmVhc29uIHdlIHVzZSBhY3R1YWwg bG9jayBhY3F1aXNpdGlvbiBoZXJlLCByYXRoZXIgdGhhbiBqdXN0CiAJICogY2hlY2tpbmcgdGhl IFByb2NBcnJheSBhbmQgc2xlZXBpbmcsIGlzIHRoYXQgZGVhZGxvY2sgaXMgcG9zc2libGUgaWYK QEAgLTE2OTIsMTUgKzE3MTgsMzkgQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAKIAkvKgog CSAqIEF0IHRoaXMgbW9tZW50IHdlIGFyZSBzdXJlIHRoYXQgdGhlcmUgYXJlIG5vIHRyYW5zYWN0 aW9ucyB3aXRoIHRoZQotCSAqIHRhYmxlIG9wZW4gZm9yIHdyaXRlIHRoYXQgZG9uJ3QgaGF2ZSB0 aGlzIG5ldyBpbmRleCBpbiB0aGVpciBsaXN0IG9mCisJICogdGFibGUgb3BlbiBmb3Igd3JpdGUg dGhhdCBkb24ndCBoYXZlIHRoaXMgbmV3IGluZGV4ZXMgaW4gdGhlaXIgbGlzdCBvZgogCSAqIGlu ZGV4ZXMuICBXZSBoYXZlIHdhaXRlZCBvdXQgYWxsIHRoZSBleGlzdGluZyB0cmFuc2FjdGlvbnMg YW5kIGFueSBuZXcKLQkgKiB0cmFuc2FjdGlvbiB3aWxsIGhhdmUgdGhlIG5ldyBpbmRleCBpbiBp dHMgbGlzdCwgYnV0IHRoZSBpbmRleCBpcyBzdGlsbAotCSAqIG1hcmtlZCBhcyAibm90LXJlYWR5 LWZvci1pbnNlcnRzIi4gIFRoZSBpbmRleCBpcyBjb25zdWx0ZWQgd2hpbGUKKwkgKiB0cmFuc2Fj dGlvbiB3aWxsIGhhdmUgYm90aCBuZXcgaW5kZXhlcyBpbiBpdHMgbGlzdCwgYnV0IGluZGV4ZXMg YXJlIHN0aWxsCisJICogbWFya2VkIGFzICJub3QtcmVhZHktZm9yLWluc2VydHMiLiBUaGUgaW5k ZXhlcyBhcmUgY29uc3VsdGVkIHdoaWxlCiAJICogZGVjaWRpbmcgSE9ULXNhZmV0eSB0aG91Z2gu ICBUaGlzIGFycmFuZ2VtZW50IGVuc3VyZXMgdGhhdCBubyBuZXcgSE9UCiAJICogY2hhaW5zIGNh biBiZSBjcmVhdGVkIHdoZXJlIHRoZSBuZXcgdHVwbGUgYW5kIHRoZSBvbGQgdHVwbGUgaW4gdGhl CiAJICogY2hhaW4gaGF2ZSBkaWZmZXJlbnQgaW5kZXgga2V5cy4KIAkgKgotCSAqIFdlIGJ1aWxk IHRoZSBpbmRleCB1c2luZyBhbGwgdHVwbGVzIHRoYXQgYXJlIHZpc2libGUgdXNpbmcgbXVsdGlw bGUKKwkgKiBOb3cgY2FsbCBidWlsZCBvbiBhdXhpbGlhcnkgaW5kZXguIEluZGV4IHdpbGwgYmUg Y3JlYXRlZCBlbXB0eSB3aXRob3V0CisJICogYW55IGFjdHVhbCBoZWFwIHNjYW4sIGJ1dCBtYXJr ZWQgYXMgInJlYWR5LWZvci1pbnNlcnRzIi4gVGhlIGdvYWwgb2YKKwkgKiB0aGF0IGluZGV4IGlz IGFjY3VtdWxhdGUgbmV3IHR1cGxlcyB3aGlsZSBtYWluIGluZGV4IGlzIGFjdHVhbGx5IGJ1aWx0 LgorCSAqLworCWluZGV4X2NvbmN1cnJlbnRseV9idWlsZCh0YWJsZUlkLCBhdXhJbmRleFJlbGF0 aW9uSWQpOworCisJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJU3RhcnRUcmFuc2FjdGlv bkNvbW1hbmQoKTsKKworCS8qIFRlbGwgY29uY3VycmVudCBpbmRleCBidWlsZHMgdG8gaWdub3Jl IHVzLCBpZiBpbmRleCBxdWFsaWZpZXMgKi8KKwlpZiAoc2FmZV9pbmRleCkKKwkJc2V0X2luZGV4 c2FmZV9wcm9jZmxhZ3MoKTsKKwlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNT X0NSRUFURUlEWF9QSEFTRSwKKwkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRf Mik7CisJLyoKKwkgKiBOb3cgd2UgbmVlZCB0byBlbnN1cmUgYXJlIG5vIHRyYW5zYWN0aW9ucyB3 aXRoIHRoZSB3aXRoIGF1eGlsaWFyeSBpbmRleAorCSAqIG1hcmtlZCBhcyAibm90LXJlYWR5LWZv ci1pbnNlcnRzIi4KKwkgKi8KKwlXYWl0Rm9yTG9ja2VycyhoZWFwbG9ja3RhZywgU2hhcmVMb2Nr LCB0cnVlKTsKKworCS8qCisJICogQXQgdGhpcyBtb21lbnQgd2UgYXJlIHN1cmUgd2hhdCBhbGwg bmV3IHR1cGxlcyBpbiB0YWJsZSBhcmUgaW5zZXJ0ZWQgaW50bworCSAqIGF1eGlsaWFyeSBpbmRl eC4gTm93IGl0IGlzIHRpbWUgdG8gYnVpbGQgdGhlIHRhcmdldCBpbmRleCBpdHNlbGYuCisJICoK KwkgKiBXZSBidWlsZCB0aGF0IGluZGV4IHVzaW5nIGFsbCB0dXBsZXMgdGhhdCBhcmUgdmlzaWJs ZSB1c2luZyBtdWx0aXBsZQogCSAqIHJlZnJlc2hpbmcgc25hcHNob3RzLiBXZSBjYW4gYmUgc3Vy ZSB0aGF0IGFueSBIT1QgdXBkYXRlcyB0bwogCSAqIHRoZXNlIHR1cGxlcyB3aWxsIGJlIGNvbXBh dGlibGUgd2l0aCB0aGUgaW5kZXgsIHNpbmNlIGFueSB1cGRhdGVzIG1hZGUKIAkgKiBieSB0cmFu c2FjdGlvbnMgdGhhdCBkaWRuJ3Qga25vdyBhYm91dCB0aGUgaW5kZXggYXJlIG5vdyBjb21taXR0 ZWQgb3IKQEAgLTE3MjgsNDMgKzE3NzgsMzEgQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJ ICogdGhlIGluZGV4IG1hcmtlZCBhcyByZWFkLW9ubHkgZm9yIHVwZGF0ZXMuCiAJICovCiAJcGdz dGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0UsCi0JCQkJ CQkJCSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF8yKTsKKwkJCQkJCQkJIFBST0dSRVNT X0NSRUFURUlEWF9QSEFTRV9XQUlUXzMpOwogCVdhaXRGb3JMb2NrZXJzKGhlYXBsb2NrdGFnLCBT aGFyZUxvY2ssIHRydWUpOwogCiAJLyoKLQkgKiBOb3cgdGFrZSB0aGUgInJlZmVyZW5jZSBzbmFw c2hvdCIgdGhhdCB3aWxsIGJlIHVzZWQgYnkgdmFsaWRhdGVfaW5kZXgoKQotCSAqIHRvIGZpbHRl ciBjYW5kaWRhdGUgdHVwbGVzLiAgQmV3YXJlISAgVGhlcmUgbWlnaHQgc3RpbGwgYmUgc25hcHNo b3RzIGluCi0JICogdXNlIHRoYXQgdHJlYXQgc29tZSB0cmFuc2FjdGlvbiBhcyBpbi1wcm9ncmVz cyB0aGF0IG91ciByZWZlcmVuY2UKLQkgKiBzbmFwc2hvdCB0cmVhdHMgYXMgY29tbWl0dGVkLiAg SWYgc3VjaCBhIHJlY2VudGx5LWNvbW1pdHRlZCB0cmFuc2FjdGlvbgotCSAqIGRlbGV0ZWQgdHVw bGVzIGluIHRoZSB0YWJsZSwgd2Ugd2lsbCBub3QgaW5jbHVkZSB0aGVtIGluIHRoZSBpbmRleDsg eWV0Ci0JICogdGhvc2UgdHJhbnNhY3Rpb25zIHdoaWNoIHNlZSB0aGUgZGVsZXRpbmcgb25lIGFz IHN0aWxsLWluLXByb2dyZXNzIHdpbGwKLQkgKiBleHBlY3Qgc3VjaCB0dXBsZXMgdG8gYmUgdGhl cmUgb25jZSB3ZSBtYXJrIHRoZSBpbmRleCBhcyB2YWxpZC4KLQkgKgotCSAqIFdlIHNvbHZlIHRo aXMgYnkgd2FpdGluZyBmb3IgYWxsIGVuZGFuZ2VyZWQgdHJhbnNhY3Rpb25zIHRvIGV4aXQgYmVm b3JlCi0JICogd2UgbWFyayB0aGUgaW5kZXggYXMgdmFsaWQuCi0JICoKLQkgKiBXZSBhbHNvIHNl dCBBY3RpdmVTbmFwc2hvdCB0byB0aGlzIHNuYXAsIHNpbmNlIGZ1bmN0aW9ucyBpbiBpbmRleGVz IG1heQotCSAqIG5lZWQgYSBzbmFwc2hvdC4KKwkgKiBVcGRhdGluZyBwZ19pbmRleCBtaWdodCBp bnZvbHZlIFRPQVNUIHRhYmxlIGFjY2Vzcywgc28gZW5zdXJlIHdlCisJICogaGF2ZSBhIHZhbGlk IHNuYXBzaG90LgogCSAqLwotCXNuYXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hvdChHZXRUcmFuc2Fj dGlvblNuYXBzaG90KCkpOwotCVB1c2hBY3RpdmVTbmFwc2hvdChzbmFwc2hvdCk7Ci0KKwlQdXNo QWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKIAkvKgotCSAqIFNjYW4g dGhlIGluZGV4IGFuZCB0aGUgaGVhcCwgaW5zZXJ0IGFueSBtaXNzaW5nIGluZGV4IGVudHJpZXMu CisJICogTm93IHRhcmdldCBpbmRleCBpcyBtYXJrZWQgYXMgInJlYWR5IiBmb3IgYWxsIHRyYW5z YWN0aW9ucy4gU28sIGF1eGlsaWFyeQorCSAqIGluZGV4IGlzIG5vdCBtb3JlIG5lZWRlZC4gU28s IHN0YXJ0IHJlbW92aW5nIHByb2Nlc3MgYnkgcmV2ZXJ0aW5nICJyZWFkeSIKKwkgKiBmbGFnLgog CSAqLwotCXZhbGlkYXRlX2luZGV4KHRhYmxlSWQsIGluZGV4UmVsYXRpb25JZCwgc25hcHNob3Qp OwotCi0JLyoKLQkgKiBEcm9wIHRoZSByZWZlcmVuY2Ugc25hcHNob3QuICBXZSBtdXN0IGRvIHRo aXMgYmVmb3JlIHdhaXRpbmcgb3V0IG90aGVyCi0JICogc25hcHNob3QgaG9sZGVycywgZWxzZSB3 ZSB3aWxsIGRlYWRsb2NrIGFnYWluc3Qgb3RoZXIgcHJvY2Vzc2VzIGFsc28KLQkgKiBkb2luZyBD UkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZLCB3aGljaCB3b3VsZCBzZWUgb3VyIHNuYXBzaG90IGFz IG9uZQotCSAqIHRoZXkgbXVzdCB3YWl0IGZvci4gIEJ1dCBmaXJzdCwgc2F2ZSB0aGUgc25hcHNo b3QncyB4bWluIHRvIHVzZSBhcwotCSAqIGxpbWl0WG1pbiBmb3IgR2V0Q3VycmVudFZpcnR1YWxY SURzKCkuCi0JICovCi0JbGltaXRYbWluID0gc25hcHNob3QtPnhtaW47Ci0KKwlpbmRleF9zZXRf c3RhdGVfZmxhZ3MoYXV4SW5kZXhSZWxhdGlvbklkLCBJTkRFWF9EUk9QX0NMRUFSX1JFQURZKTsK IAlQb3BBY3RpdmVTbmFwc2hvdCgpOwotCVVucmVnaXN0ZXJTbmFwc2hvdChzbmFwc2hvdCk7CisK KwlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgp OworCS8qIFRlbGwgY29uY3VycmVudCBpbmRleCBidWlsZHMgdG8gaWdub3JlIHVzLCBpZiBpbmRl eCBxdWFsaWZpZXMgKi8KKwlpZiAoc2FmZV9pbmRleCkKKwkJc2V0X2luZGV4c2FmZV9wcm9jZmxh Z3MoKTsKKwkvKgorCSAqIE1lcmdlIGNvbnRlbnQgb2YgYXV4aWxpYXJ5IGFuZCB0YXJnZXQgaW5k ZXhlcyAtIGluc2VydCBhbnkgbWlzc2luZyBpbmRleCBlbnRyaWVzLgorCSAqLworCWxpbWl0WG1p biA9IHZhbGlkYXRlX2luZGV4KHRhYmxlSWQsIGluZGV4UmVsYXRpb25JZCwgYXV4SW5kZXhSZWxh dGlvbklkKTsKIAogCS8qCiAJICogVGhlIHNuYXBzaG90IHN1YnN5c3RlbSBjb3VsZCBzdGlsbCBj b250YWluIHJlZ2lzdGVyZWQgc25hcHNob3RzIHRoYXQKQEAgLTE3ODcsMTIgKzE4MjUsMTIgQEAg RGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJLyoKIAkgKiBUaGUgaW5kZXggaXMgbm93IHZhbGlk IGluIHRoZSBzZW5zZSB0aGF0IGl0IGNvbnRhaW5zIGFsbCBjdXJyZW50bHkKIAkgKiBpbnRlcmVz dGluZyB0dXBsZXMuICBCdXQgc2luY2UgaXQgbWlnaHQgbm90IGNvbnRhaW4gdHVwbGVzIGRlbGV0 ZWQganVzdAotCSAqIGJlZm9yZSB0aGUgcmVmZXJlbmNlIHNuYXAgd2FzIHRha2VuLCB3ZSBoYXZl IHRvIHdhaXQgb3V0IGFueQotCSAqIHRyYW5zYWN0aW9ucyB0aGF0IG1pZ2h0IGhhdmUgb2xkZXIg c25hcHNob3RzLgorCSAqIGJlZm9yZSB0aGUgbGFzdCBzbmFwc2hvdCBkdXJpbmcgdmFsaWRhdGlu ZyB3YXMgdGFrZW4sIHdlIGhhdmUgdG8gd2FpdAorCSAqIG91dCBhbnkgdHJhbnNhY3Rpb25zIHRo YXQgbWlnaHQgaGF2ZSBvbGRlciBzbmFwc2hvdHMuCiAJICovCiAJSU5KRUNUSU9OX1BPSU5UKCJk ZWZpbmVfaW5kZXhfYmVmb3JlX3NldF92YWxpZCIpOwogCXBnc3RhdF9wcm9ncmVzc191cGRhdGVf cGFyYW0oUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFLAotCQkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRF SURYX1BIQVNFX1dBSVRfMyk7CisJCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJ VF80KTsKIAlXYWl0Rm9yT2xkZXJTbmFwc2hvdHMobGltaXRYbWluLCB0cnVlKTsKIAogCS8qCkBA IC0xODE3LDYgKzE4NTUsNTMgQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJICogdG8gcmVw bGFuOyBzbyByZWxjYWNoZSBmbHVzaCBvbiB0aGUgaW5kZXggaXRzZWxmIHdhcyBzdWZmaWNpZW50 LikKIAkgKi8KIAlDYWNoZUludmFsaWRhdGVSZWxjYWNoZUJ5UmVsaWQoaGVhcHJlbGlkLnJlbElk KTsKKwlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwlTdGFydFRyYW5zYWN0aW9uQ29tbWFu ZCgpOworCisJLyogVGVsbCBjb25jdXJyZW50IGluZGV4IGJ1aWxkcyB0byBpZ25vcmUgdXMsIGlm IGluZGV4IHF1YWxpZmllcyAqLworCWlmIChzYWZlX2luZGV4KQorCQlzZXRfaW5kZXhzYWZlX3By b2NmbGFncygpOworCisJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DUkVB VEVJRFhfUEhBU0UsCisJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzUpOwor CS8qIE5vdyB3YWl0IGZvciBhbGwgdHJhbnNhY3Rpb24gdG8gc2VlIGF1eGlsaWFyeSBhcyAibm9u LXJlYWR5IGZvciBpbnNlcnRzIiAqLworCVdhaXRGb3JMb2NrZXJzKGhlYXBsb2NrdGFnLCBBY2Nl c3NFeGNsdXNpdmVMb2NrLCB0cnVlKTsKKworCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwor CVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisKKwkvKgorCSAqIFVwZGF0aW5nIHBnX2luZGV4 IG1pZ2h0IGludm9sdmUgVE9BU1QgdGFibGUgYWNjZXNzLCBzbyBlbnN1cmUgd2UKKwkgKiBoYXZl IGEgdmFsaWQgc25hcHNob3QuCisJICovCisJUHVzaEFjdGl2ZVNuYXBzaG90KEdldFRyYW5zYWN0 aW9uU25hcHNob3QoKSk7CisJLyogTm93IGl0IGlzIHRpbWUgdG8gbWFyayBhdXhpbGlhcnkgaW5k ZXggYXMgZGVhZCAqLworCWluZGV4X2NvbmN1cnJlbnRseV9zZXRfZGVhZCh0YWJsZUlkLCBhdXhJ bmRleFJlbGF0aW9uSWQpOworCVBvcEFjdGl2ZVNuYXBzaG90KCk7CisKKwlDb21taXRUcmFuc2Fj dGlvbkNvbW1hbmQoKTsKKwlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCisJLyogVGVsbCBj b25jdXJyZW50IGluZGV4IGJ1aWxkcyB0byBpZ25vcmUgdXMsIGlmIGluZGV4IHF1YWxpZmllcyAq LworCWlmIChzYWZlX2luZGV4KQorCQlzZXRfaW5kZXhzYWZlX3Byb2NmbGFncygpOworCisJcGdz dGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0UsCisJCQkJ CQkJIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzYpOworCS8qIE5vdyB3YWl0IGZvciBh bGwgdHJhbnNhY3Rpb24gdG8gaWdub3JlIGF1eGlsaWFyeSBiZWNhdXNlIGl0IGlzIGRlYWQgKi8K KwlXYWl0Rm9yTG9ja2VycyhoZWFwbG9ja3RhZywgQWNjZXNzRXhjbHVzaXZlTG9jaywgdHJ1ZSk7 CisKKwlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwlTdGFydFRyYW5zYWN0aW9uQ29tbWFu ZCgpOworCisJLyoKKwkgKiBEcm9wIGF1eGlsaWFyeSBpbmRleC4KKwkgKgorCSAqIFVzZSBQRVJG T1JNX0RFTEVUSU9OX0NPTkNVUlJFTlRfTE9DSyBzbyB0aGF0IGluZGV4X2Ryb3AoKSB1c2VzIHRo ZQorCSAqIHJpZ2h0IGxvY2sgbGV2ZWwuCisJICovCisJcGVyZm9ybURlbGV0aW9uKCZhdXhBZGRy ZXNzLCBEUk9QX1JFU1RSSUNULAorCQkJCQkJCSBQRVJGT1JNX0RFTEVUSU9OX0NPTkNVUlJFTlRf TE9DSyB8IFBFUkZPUk1fREVMRVRJT05fSU5URVJOQUwpOwogCiAJLyoKIAkgKiBMYXN0IHRoaW5n IHRvIGRvIGlzIHJlbGVhc2UgdGhlIHNlc3Npb24tbGV2ZWwgbG9jayBvbiB0aGUgcGFyZW50IHRh YmxlLgpAQCAtMzUzNyw2ICszNjIyLDcgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNv bnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAl0eXBl ZGVmIHN0cnVjdCBSZWluZGV4SW5kZXhJbmZvCiAJewogCQlPaWQJCQlpbmRleElkOworCQlPaWQJ CQlhdXhJbmRleElkOwogCQlPaWQJCQl0YWJsZUlkOwogCQlPaWQJCQlhbUlkOwogCQlib29sCQlz YWZlOwkJLyogZm9yIHNldF9pbmRleHNhZmVfcHJvY2ZsYWdzICovCkBAIC0zNjQyLDggKzM3Mjgs MTUgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10 LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkJCQkJT2lkCQkJY2VsbE9pZCA9IGxmaXJz dF9vaWQobGMpOwogCQkJCQlSZWxhdGlvbglpbmRleFJlbGF0aW9uID0gaW5kZXhfb3BlbihjZWxs T2lkLAogCQkJCQkJCQkJCQkJCQkgICBTaGFyZVVwZGF0ZUV4Y2x1c2l2ZUxvY2spOworCQkJCQlJ bmRleEluZm8qCWluZGV4SW5mbyA9IEJ1aWxkRHVtbXlJbmRleEluZm8oaW5kZXhSZWxhdGlvbik7 CiAKLQkJCQkJaWYgKCFpbmRleFJlbGF0aW9uLT5yZF9pbmRleC0+aW5kaXN2YWxpZCkKKworCQkJ CQlpZiAoaW5kZXhJbmZvLT5paV9BdXhpbGlhcnkpCisJCQkJCQllcmVwb3J0KFdBUk5JTkcsKGVy cmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCQkJCSBlcnJtc2coInNr aXBwaW5nIHJlaW5kZXggb2YgYXV4aWxpYXJ5IGluZGV4IFwiJXMuJXNcIiIsCisJCQkJCQkJCQln ZXRfbmFtZXNwYWNlX25hbWUoZ2V0X3JlbF9uYW1lc3BhY2UoY2VsbE9pZCkpLAorCQkJCQkJCQkJ Z2V0X3JlbF9uYW1lKGNlbGxPaWQpKSkpOworCQkJCQllbHNlIGlmICghaW5kZXhSZWxhdGlvbi0+ cmRfaW5kZXgtPmluZGlzdmFsaWQpCiAJCQkJCQllcmVwb3J0KFdBUk5JTkcsCiAJCQkJCQkJCShl cnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAogCQkJCQkJ CQkgZXJybXNnKCJza2lwcGluZyByZWluZGV4IG9mIGludmFsaWQgaW5kZXggXCIlcy4lc1wiIiwK QEAgLTM2OTUsOCArMzc4OCwxNSBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3Qg UmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCQkJCQkJT2lk CQkJY2VsbE9pZCA9IGxmaXJzdF9vaWQobGMyKTsKIAkJCQkJCVJlbGF0aW9uCWluZGV4UmVsYXRp b24gPSBpbmRleF9vcGVuKGNlbGxPaWQsCiAJCQkJCQkJCQkJCQkJCQkgICBTaGFyZVVwZGF0ZUV4 Y2x1c2l2ZUxvY2spOworCQkJCQkJSW5kZXhJbmZvKglpbmRleEluZm8gPSBCdWlsZER1bW15SW5k ZXhJbmZvKGluZGV4UmVsYXRpb24pOwogCi0JCQkJCQlpZiAoIWluZGV4UmVsYXRpb24tPnJkX2lu ZGV4LT5pbmRpc3ZhbGlkKQorCQkJCQkJaWYgKGluZGV4SW5mby0+aWlfQXV4aWxpYXJ5KQorCQkJ CQkJCWVyZXBvcnQoV0FSTklORywKKwkJCQkJCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9O T1RfU1VQUE9SVEVEKSwKKwkJCQkJCQkJCSBlcnJtc2coInNraXBwaW5nIHJlaW5kZXggb2YgYXV4 aWxpYXJ5IGluZGV4IFwiJXMuJXNcIiIsCisJCQkJCQkJCQkJCWdldF9uYW1lc3BhY2VfbmFtZShn ZXRfcmVsX25hbWVzcGFjZShjZWxsT2lkKSksCisJCQkJCQkJCQkJCWdldF9yZWxfbmFtZShjZWxs T2lkKSkpKTsKKwkJCQkJCWVsc2UgaWYgKCFpbmRleFJlbGF0aW9uLT5yZF9pbmRleC0+aW5kaXN2 YWxpZCkKIAkJCQkJCQllcmVwb3J0KFdBUk5JTkcsCiAJCQkJCQkJCQkoZXJyY29kZShFUlJDT0RF X09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKIAkJCQkJCQkJCSBlcnJtc2coInNr aXBwaW5nIHJlaW5kZXggb2YgaW52YWxpZCBpbmRleCBcIiVzLiVzXCIiLApAQCAtMzc1Nyw2ICsz ODU3LDEzIEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAq c3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJCQkJCQkJKGVycmNvZGUoRVJSQ09E RV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAogCQkJCQkJCSBlcnJtc2coImNhbm5vdCByZWluZGV4 IGludmFsaWQgaW5kZXggb24gVE9BU1QgdGFibGUiKSkpOwogCisJCQkJLyogQXV4aWxpYXJ5IGlu ZGV4ZXMgYXJlIG5vdCBhbGxvd2VkIHRvIGJlIHJlYnVpbHQgKi8KKwkJCQlpZiAoZ2V0X3JlbF9y ZWxhbShyZWxhdGlvbk9pZCkgPT0gU1RJUl9BTV9PSUQpCisJCQkJCWVyZXBvcnQoRVJST1IsCisJ CQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJCQkgZXJy bXNnKCJyZWluZGV4IG9mIGF1eGlsaWFyeSBpbmRleCBcIiVzXCIgbm90IHN1cHBvcnRlZCIsCisJ CQkJCQkJCWdldF9yZWxfbmFtZShyZWxhdGlvbk9pZCkpKSk7CisKIAkJCQkvKgogCQkJCSAqIENo ZWNrIGlmIHBhcmVudCByZWxhdGlvbiBjYW4gYmUgbG9ja2VkIGFuZCBpZiBpdCBleGlzdHMsCiAJ CQkJICogdGhpcyBuZWVkcyB0byBiZSBkb25lIGF0IHRoaXMgc3RhZ2UgYXMgdGhlIGxpc3Qgb2Yg aW5kZXhlcwpAQCAtMzg2MCwxNSArMzk2NywxOCBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50 bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgog CWZvcmVhY2gobGMsIGluZGV4SWRzKQogCXsKIAkJY2hhcgkgICAqY29uY3VycmVudE5hbWU7CisJ CWNoYXIJICAgKmF1eENvbmN1cnJlbnROYW1lOwogCQlSZWluZGV4SW5kZXhJbmZvICppZHggPSBs Zmlyc3QobGMpOwogCQlSZWluZGV4SW5kZXhJbmZvICpuZXdpZHg7CiAJCU9pZAkJCW5ld0luZGV4 SWQ7CisJCU9pZAkJCWF1eEluZGV4SWQ7CiAJCVJlbGF0aW9uCWluZGV4UmVsOwogCQlSZWxhdGlv bgloZWFwUmVsOwogCQlPaWQJCQlzYXZlX3VzZXJpZDsKIAkJaW50CQkJc2F2ZV9zZWNfY29udGV4 dDsKIAkJaW50CQkJc2F2ZV9uZXN0bGV2ZWw7CiAJCVJlbGF0aW9uCW5ld0luZGV4UmVsOworCQlS ZWxhdGlvbglhdXhJbmRleFJlbDsKIAkJTG9ja1JlbElkICAqbG9ja3JlbGlkOwogCQlPaWQJCQl0 YWJsZXNwYWNlaWQ7CiAKQEAgLTM5MTksNiArNDAyOSwxMSBAQCBSZWluZGV4UmVsYXRpb25Db25j dXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3Qg UmVpbgogCQkJCQkJCQkJCQkiY2NuZXciLAogCQkJCQkJCQkJCQlnZXRfcmVsX25hbWVzcGFjZShp bmRleFJlbC0+cmRfaW5kZXgtPmluZHJlbGlkKSwKIAkJCQkJCQkJCQkJZmFsc2UpOworCQlhdXhD b25jdXJyZW50TmFtZSA9IENob29zZVJlbGF0aW9uTmFtZShnZXRfcmVsX25hbWUoaWR4LT5pbmRl eElkKSwKKwkJCQkJCQkJCQkJTlVMTCwKKwkJCQkJCQkJCQkJImNjYXV4IiwKKwkJCQkJCQkJCQkJ Z2V0X3JlbF9uYW1lc3BhY2UoaW5kZXhSZWwtPnJkX2luZGV4LT5pbmRyZWxpZCksCisJCQkJCQkJ CQkJCWZhbHNlKTsKIAogCQkvKiBDaG9vc2UgdGhlIG5ldyB0YWJsZXNwYWNlLCBpbmRleGVzIG9m IHRvYXN0IHRhYmxlcyBhcmUgbm90IG1vdmVkICovCiAJCWlmIChPaWRJc1ZhbGlkKHBhcmFtcy0+ dGFibGVzcGFjZU9pZCkgJiYKQEAgLTM5MzIsMTIgKzQwNDcsMTcgQEAgUmVpbmRleFJlbGF0aW9u Q29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNv bnN0IFJlaW4KIAkJCQkJCQkJCQkJCQlpZHgtPmluZGV4SWQsCiAJCQkJCQkJCQkJCQkJdGFibGVz cGFjZWlkLAogCQkJCQkJCQkJCQkJCWNvbmN1cnJlbnROYW1lKTsKKwkJYXV4SW5kZXhJZCA9IGlu ZGV4X2NvbmN1cnJlbnRseV9jcmVhdGVfYXV4KGhlYXBSZWwsCisJCQkJCQkJCQkJCQkgICBuZXdJ bmRleElkLAorCQkJCQkJCQkJCQkJICAgdGFibGVzcGFjZWlkLAorCQkJCQkJCQkJCQkJICAgYXV4 Q29uY3VycmVudE5hbWUpOwogCiAJCS8qCiAJCSAqIE5vdyBvcGVuIHRoZSByZWxhdGlvbiBvZiB0 aGUgbmV3IGluZGV4LCBhIHNlc3Npb24tbGV2ZWwgbG9jayBpcwogCQkgKiBhbHNvIG5lZWRlZCBv biBpdC4KIAkJICovCiAJCW5ld0luZGV4UmVsID0gaW5kZXhfb3BlbihuZXdJbmRleElkLCBTaGFy ZVVwZGF0ZUV4Y2x1c2l2ZUxvY2spOworCQlhdXhJbmRleFJlbCA9IGluZGV4X29wZW4oYXV4SW5k ZXhJZCwgU2hhcmVVcGRhdGVFeGNsdXNpdmVMb2NrKTsKIAogCQkvKgogCQkgKiBTYXZlIHRoZSBs aXN0IG9mIE9JRHMgYW5kIGxvY2tzIGluIHByaXZhdGUgY29udGV4dApAQCAtMzk0Niw2ICs0MDY2 LDcgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10 LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAogCQluZXdpZHggPSBwYWxsb2Nfb2JqZWN0 KFJlaW5kZXhJbmRleEluZm8pOwogCQluZXdpZHgtPmluZGV4SWQgPSBuZXdJbmRleElkOworCQlu ZXdpZHgtPmF1eEluZGV4SWQgPSBhdXhJbmRleElkOwogCQluZXdpZHgtPnNhZmUgPSBpZHgtPnNh ZmU7CiAJCW5ld2lkeC0+dGFibGVJZCA9IGlkeC0+dGFibGVJZDsKIAkJbmV3aWR4LT5hbUlkID0g aWR4LT5hbUlkOwpAQCAtMzk2NCwxMCArNDA4NSwxNCBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJy ZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVp bgogCQlsb2NrcmVsaWQgPSBwYWxsb2Nfb2JqZWN0KExvY2tSZWxJZCk7CiAJCSpsb2NrcmVsaWQg PSBuZXdJbmRleFJlbC0+cmRfbG9ja0luZm8ubG9ja1JlbElkOwogCQlyZWxhdGlvbkxvY2tzID0g bGFwcGVuZChyZWxhdGlvbkxvY2tzLCBsb2NrcmVsaWQpOworCQlsb2NrcmVsaWQgPSBwYWxsb2Nf b2JqZWN0KExvY2tSZWxJZCk7CisJCSpsb2NrcmVsaWQgPSBhdXhJbmRleFJlbC0+cmRfbG9ja0lu Zm8ubG9ja1JlbElkOworCQlyZWxhdGlvbkxvY2tzID0gbGFwcGVuZChyZWxhdGlvbkxvY2tzLCBs b2NrcmVsaWQpOwogCiAJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKIAogCQlp bmRleF9jbG9zZShpbmRleFJlbCwgTm9Mb2NrKTsKKwkJaW5kZXhfY2xvc2UoYXV4SW5kZXhSZWws IE5vTG9jayk7CiAJCWluZGV4X2Nsb3NlKG5ld0luZGV4UmVsLCBOb0xvY2spOwogCiAJCS8qIFJv bGwgYmFjayBhbnkgR1VDIGNoYW5nZXMgZXhlY3V0ZWQgYnkgaW5kZXggZnVuY3Rpb25zICovCkBA IC00MDQ4LDEzICs0MTczLDU1IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBS ZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJICogZG9pbmcg dGhhdCwgd2FpdCB1bnRpbCBubyBydW5uaW5nIHRyYW5zYWN0aW9ucyBjb3VsZCBoYXZlIHRoZSB0 YWJsZSBvZgogCSAqIHRoZSBpbmRleCBvcGVuIHdpdGggdGhlIG9sZCBsaXN0IG9mIGluZGV4ZXMu ICBTZWUgInBoYXNlIDIiIGluCiAJICogRGVmaW5lSW5kZXgoKSBmb3IgbW9yZSBkZXRhaWxzLgor CSovCisJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DUkVBVEVJRFhfUEhB U0UsCisJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzEpOworCVdhaXRGb3JM b2NrZXJzTXVsdGlwbGUobG9ja1RhZ3MsIFNoYXJlTG9jaywgdHJ1ZSk7CisJQ29tbWl0VHJhbnNh Y3Rpb25Db21tYW5kKCk7CisKKwkvKgorCSAqIE5vdyBidWlsZCBhbGwgYXV4aWxpYXJ5IGluZGV4 ZXMgYW5kIG1hcmsgdGhlbSBhcyAicmVhZHktZm9yLWluc2VydHMiLgorCSAqLworCWZvcmVhY2go bGMsIG5ld0luZGV4SWRzKQorCXsKKwkJUmVpbmRleEluZGV4SW5mbyAqbmV3aWR4ID0gbGZpcnN0 KGxjKTsKKworCQlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCisJCS8qCisJCSAqIENoZWNr IGZvciB1c2VyLXJlcXVlc3RlZCBhYm9ydC4gIFRoaXMgaXMgaW5zaWRlIGEgdHJhbnNhY3Rpb24g c28gYXMKKwkJICogeGFjdC5jIGRvZXMgbm90IGlzc3VlIGEgdXNlbGVzcyBXQVJOSU5HLCBhbmQg ZW5zdXJlcyB0aGF0CisJCSAqIHNlc3Npb24tbGV2ZWwgbG9ja3MgYXJlIGNsZWFuZWQgdXAgb24g YWJvcnQuCisJCSAqLworCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOworCisJCS8qIFRlbGwgY29u Y3VycmVudCBpbmRleGluZyB0byBpZ25vcmUgdXMsIGlmIGluZGV4IHF1YWxpZmllcyAqLworCQlp ZiAobmV3aWR4LT5zYWZlKQorCQkJc2V0X2luZGV4c2FmZV9wcm9jZmxhZ3MoKTsKKworCQkvKiBC dWlsZCBhdXhpbGlhcnkgaW5kZXgsIGl0IGlzIGZhc3QgLSB3aXRob3V0IGFueSBhY3R1YWwgaGVh cCBzY2FuLCBqdXN0IGFuIGVtcHR5IGluZGV4LiAqLworCQlpbmRleF9jb25jdXJyZW50bHlfYnVp bGQobmV3aWR4LT50YWJsZUlkLCBuZXdpZHgtPmF1eEluZGV4SWQpOworCisJCUNvbW1pdFRyYW5z YWN0aW9uQ29tbWFuZCgpOworCX0KKworCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisKKwkv KgorCSAqIEJlY2F1c2Ugd2UgZG9uJ3QgdGFrZSBhIHNuYXBzaG90IGluIHRoaXMgdHJhbnNhY3Rp b24sIHRoZXJlJ3Mgbm8gbmVlZAorCSAqIHRvIHNldCB0aGUgUFJPQ19JTl9TQUZFX0lDIGZsYWcg aGVyZS4KIAkgKi8KIAogCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ1JF QVRFSURYX1BIQVNFLAotCQkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRfMSk7 CisJCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF8yKTsKKwkvKgorCSAqIFdh aXQgdW50aWwgYWxsIGF1eGlsaWFyeSBpbmRleGVzIGFyZSB0YWtlbiBpbnRvIGFjY291bnQgYnkg YWxsCisJICogdHJhbnNhY3Rpb25zLgorCSAqLwogCVdhaXRGb3JMb2NrZXJzTXVsdGlwbGUobG9j a1RhZ3MsIFNoYXJlTG9jaywgdHJ1ZSk7CiAJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAK KwkvKiBOb3cgaXQgaXMgdGltZSB0byBwZXJmb3JtIHRhcmdldCBpbmRleCBidWlsZC4gKi8KIAlm b3JlYWNoKGxjLCBuZXdJbmRleElkcykKIAl7CiAJCVJlaW5kZXhJbmRleEluZm8gKm5ld2lkeCA9 IGxmaXJzdChsYyk7CkBAIC00MDk3LDI0ICs0MjY0LDUyIEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1 cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBS ZWluCiAJICogbmVlZCB0byBzZXQgdGhlIFBST0NfSU5fU0FGRV9JQyBmbGFnIGhlcmUuCiAJICov CiAKKwlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NSRUFURUlEWF9QSEFT RSwKKwkJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzMpOworCVdhaXRGb3JM b2NrZXJzTXVsdGlwbGUobG9ja1RhZ3MsIFNoYXJlTG9jaywgdHJ1ZSk7CisJQ29tbWl0VHJhbnNh Y3Rpb25Db21tYW5kKCk7CisKKwkvKgorCSAqIEF0IHRoaXMgbW9tZW50IGFsbCB0YXJnZXQgaW5k ZXhlcyBhcmUgbWFya2VkIGFzICJyZWFkeS10by1pbnNlcnQiLiBTbywKKwkgKiB3ZSBhcmUgZnJl ZSB0byBzdGFydCBwcm9jZXNzIG9mIGRyb3BwaW5nIGF1eGlsaWFyeSBpbmRleGVzLgorCSAqLwor CWZvcmVhY2gobGMsIG5ld0luZGV4SWRzKQorCXsKKwkJUmVpbmRleEluZGV4SW5mbyAqbmV3aWR4 ID0gbGZpcnN0KGxjKTsKKwkJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwkJLyoKKwkJICog Q2hlY2sgZm9yIHVzZXItcmVxdWVzdGVkIGFib3J0LiAgVGhpcyBpcyBpbnNpZGUgYSB0cmFuc2Fj dGlvbiBzbyBhcworCQkgKiB4YWN0LmMgZG9lcyBub3QgaXNzdWUgYSB1c2VsZXNzIFdBUk5JTkcs IGFuZCBlbnN1cmVzIHRoYXQKKwkJICogc2Vzc2lvbi1sZXZlbCBsb2NrcyBhcmUgY2xlYW5lZCB1 cCBvbiBhYm9ydC4KKwkJICovCisJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisKKwkJLyogVGVs bCBjb25jdXJyZW50IGluZGV4aW5nIHRvIGlnbm9yZSB1cywgaWYgaW5kZXggcXVhbGlmaWVzICov CisJCWlmIChuZXdpZHgtPnNhZmUpCisJCQlzZXRfaW5kZXhzYWZlX3Byb2NmbGFncygpOworCisJ CS8qCisJCSAqIFVwZGF0aW5nIHBnX2luZGV4IG1pZ2h0IGludm9sdmUgVE9BU1QgdGFibGUgYWNj ZXNzLCBzbyBlbnN1cmUgd2UKKwkJICogaGF2ZSBhIHZhbGlkIHNuYXBzaG90LgorCQkgKi8KKwkJ UHVzaEFjdGl2ZVNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CisJCWluZGV4X3Nl dF9zdGF0ZV9mbGFncyhuZXdpZHgtPmF1eEluZGV4SWQsIElOREVYX0RST1BfQ0xFQVJfUkVBRFkp OworCQlQb3BBY3RpdmVTbmFwc2hvdCgpOworCisJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgp OworCX0KKwogCS8qCiAJICogUGhhc2UgMyBvZiBSRUlOREVYIENPTkNVUlJFTlRMWQogCSAqCi0J ICogRHVyaW5nIHRoaXMgcGhhc2UgdGhlIG9sZCBpbmRleGVzIGNhdGNoIHVwIHdpdGggYW55IG5l dyB0dXBsZXMgdGhhdAorCSAqIER1cmluZyB0aGlzIHBoYXNlIHRoZSBuZXcgaW5kZXhlcyBjYXRj aCB1cCB3aXRoIGFueSBuZXcgdHVwbGVzIHRoYXQKIAkgKiB3ZXJlIGNyZWF0ZWQgZHVyaW5nIHRo ZSBwcmV2aW91cyBwaGFzZS4gIFNlZSAicGhhc2UgMyIgaW4gRGVmaW5lSW5kZXgoKQogCSAqIGZv ciBtb3JlIGRldGFpbHMuCiAJICovCi0KLQlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBS T0dSRVNTX0NSRUFURUlEWF9QSEFTRSwKLQkJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlEWF9QSEFT RV9XQUlUXzIpOwotCVdhaXRGb3JMb2NrZXJzTXVsdGlwbGUobG9ja1RhZ3MsIFNoYXJlTG9jaywg dHJ1ZSk7Ci0JQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7Ci0KIAlmb3JlYWNoKGxjLCBuZXdJ bmRleElkcykKIAl7CiAJCVJlaW5kZXhJbmRleEluZm8gKm5ld2lkeCA9IGxmaXJzdChsYyk7CiAJ CVRyYW5zYWN0aW9uSWQgbGltaXRYbWluOwotCQlTbmFwc2hvdAlzbmFwc2hvdDsKIAogCQlTdGFy dFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCkBAIC00MTI5LDEzICs0MzI0LDYgQEAgUmVpbmRleFJl bGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25P aWQsIGNvbnN0IFJlaW4KIAkJaWYgKG5ld2lkeC0+c2FmZSkKIAkJCXNldF9pbmRleHNhZmVfcHJv Y2ZsYWdzKCk7CiAKLQkJLyoKLQkJICogVGFrZSB0aGUgInJlZmVyZW5jZSBzbmFwc2hvdCIgdGhh dCB3aWxsIGJlIHVzZWQgYnkgdmFsaWRhdGVfaW5kZXgoKQotCQkgKiB0byBmaWx0ZXIgY2FuZGlk YXRlIHR1cGxlcy4KLQkJICovCi0JCXNuYXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hvdChHZXRUcmFu c2FjdGlvblNuYXBzaG90KCkpOwotCQlQdXNoQWN0aXZlU25hcHNob3Qoc25hcHNob3QpOwotCiAJ CS8qCiAJCSAqIFVwZGF0ZSBwcm9ncmVzcyBmb3IgdGhlIGluZGV4IHRvIGJ1aWxkLCB3aXRoIHRo ZSBjb3JyZWN0IHBhcmVudAogCQkgKiB0YWJsZSBpbnZvbHZlZC4KQEAgLTQxNDcsMTYgKzQzMzUs OCBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQs IE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCQlwcm9ncmVzc192YWxzWzNdID0gbmV3aWR4 LT5hbUlkOwogCQlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX211bHRpX3BhcmFtKDQsIHByb2dyZXNz X2luZGV4LCBwcm9ncmVzc192YWxzKTsKIAotCQl2YWxpZGF0ZV9pbmRleChuZXdpZHgtPnRhYmxl SWQsIG5ld2lkeC0+aW5kZXhJZCwgc25hcHNob3QpOwotCi0JCS8qCi0JCSAqIFdlIGNhbiBub3cg ZG8gYXdheSB3aXRoIG91ciBhY3RpdmUgc25hcHNob3QsIHdlIHN0aWxsIG5lZWQgdG8gc2F2ZQot CQkgKiB0aGUgeG1pbiBsaW1pdCB0byB3YWl0IGZvciBvbGRlciBzbmFwc2hvdHMuCi0JCSAqLwot CQlsaW1pdFhtaW4gPSBzbmFwc2hvdC0+eG1pbjsKLQotCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwot CQlVbnJlZ2lzdGVyU25hcHNob3Qoc25hcHNob3QpOworCQlsaW1pdFhtaW4gPSB2YWxpZGF0ZV9p bmRleChuZXdpZHgtPnRhYmxlSWQsIG5ld2lkeC0+aW5kZXhJZCwgbmV3aWR4LT5hdXhJbmRleElk KTsKKwkJQXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAogCQkv KgogCQkgKiBUbyBlbnN1cmUgbm8gZGVhZGxvY2tzLCB3ZSBtdXN0IGNvbW1pdCBhbmQgc3RhcnQg eWV0IGFub3RoZXIKQEAgLTQxNzYsNyArNDM1Niw3IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJl bnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWlu CiAJCSAqIHRoZXJlJ3Mgbm8gbmVlZCB0byBzZXQgdGhlIFBST0NfSU5fU0FGRV9JQyBmbGFnIGhl cmUuCiAJCSAqLwogCQlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NSRUFU RUlEWF9QSEFTRSwKLQkJCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF8zKTsK KwkJCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF80KTsKIAkJV2FpdEZvck9s ZGVyU25hcHNob3RzKGxpbWl0WG1pbiwgdHJ1ZSk7CiAKIAkJQ29tbWl0VHJhbnNhY3Rpb25Db21t YW5kKCk7CkBAIC00MjY2LDE0ICs0NDQ2LDE0IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRs eShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJ LyoKIAkgKiBQaGFzZSA1IG9mIFJFSU5ERVggQ09OQ1VSUkVOVExZCiAJICoKLQkgKiBNYXJrIHRo ZSBvbGQgaW5kZXhlcyBhcyBkZWFkLiAgRmlyc3Qgd2UgbXVzdCB3YWl0IHVudGlsIG5vIHJ1bm5p bmcKLQkgKiB0cmFuc2FjdGlvbiBjb3VsZCBiZSB1c2luZyB0aGUgaW5kZXggZm9yIGEgcXVlcnku ICBTZWUgYWxzbworCSAqIE1hcmsgdGhlIG9sZCBhbmQgYXV4aWxpYXJ5IGluZGV4ZXMgYXMgZGVh ZC4gRmlyc3Qgd2UgbXVzdCB3YWl0IHVudGlsIG5vCisJICogcnVubmluZyB0cmFuc2FjdGlvbiBj b3VsZCBiZSB1c2luZyB0aGUgaW5kZXggZm9yIGEgcXVlcnkuICBTZWUgYWxzbwogCSAqIGluZGV4 X2Ryb3AoKSBmb3IgbW9yZSBkZXRhaWxzLgogCSAqLwogCiAJSU5KRUNUSU9OX1BPSU5UKCJyZWlu ZGV4X3JlbGF0aW9uX2NvbmN1cnJlbnRseV9iZWZvcmVfc2V0X2RlYWQiKTsKIAlwZ3N0YXRfcHJv Z3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRSwKLQkJCQkJCQkJIFBS T0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzQpOworCQkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRF SURYX1BIQVNFX1dBSVRfNSk7CiAJV2FpdEZvckxvY2tlcnNNdWx0aXBsZShsb2NrVGFncywgQWNj ZXNzRXhjbHVzaXZlTG9jaywgdHJ1ZSk7CiAKIAlmb3JlYWNoKGxjLCBpbmRleElkcykKQEAgLTQy OTgsNiArNDQ3OCwyOCBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRl eFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCQlQb3BBY3RpdmVTbmFw c2hvdCgpOwogCX0KIAorCWZvcmVhY2gobGMsIG5ld0luZGV4SWRzKQorCXsKKwkJUmVpbmRleElu ZGV4SW5mbyAqbmV3aWR4ID0gbGZpcnN0KGxjKTsKKworCQkvKgorCQkgKiBDaGVjayBmb3IgdXNl ci1yZXF1ZXN0ZWQgYWJvcnQuICBUaGlzIGlzIGluc2lkZSBhIHRyYW5zYWN0aW9uIHNvIGFzCisJ CSAqIHhhY3QuYyBkb2VzIG5vdCBpc3N1ZSBhIHVzZWxlc3MgV0FSTklORywgYW5kIGVuc3VyZXMg dGhhdAorCQkgKiBzZXNzaW9uLWxldmVsIGxvY2tzIGFyZSBjbGVhbmVkIHVwIG9uIGFib3J0Lgor CQkgKi8KKwkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKKworCQkvKgorCQkgKiBVcGRhdGluZyBw Z19pbmRleCBtaWdodCBpbnZvbHZlIFRPQVNUIHRhYmxlIGFjY2Vzcywgc28gZW5zdXJlIHdlCisJ CSAqIGhhdmUgYSB2YWxpZCBzbmFwc2hvdC4KKwkJICovCisJCVB1c2hBY3RpdmVTbmFwc2hvdChH ZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOworCisJCWluZGV4X2NvbmN1cnJlbnRseV9zZXRfZGVh ZChuZXdpZHgtPnRhYmxlSWQsIG5ld2lkeC0+YXV4SW5kZXhJZCk7CisKKwkJUG9wQWN0aXZlU25h cHNob3QoKTsKKwl9CisKIAkvKiBDb21taXQgdGhpcyB0cmFuc2FjdGlvbiB0byBtYWtlIHRoZSB1 cGRhdGVzIHZpc2libGUuICovCiAJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAJU3RhcnRU cmFuc2FjdGlvbkNvbW1hbmQoKTsKQEAgLTQzMTEsMTEgKzQ1MTMsMTEgQEAgUmVpbmRleFJlbGF0 aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQs IGNvbnN0IFJlaW4KIAkvKgogCSAqIFBoYXNlIDYgb2YgUkVJTkRFWCBDT05DVVJSRU5UTFkKIAkg KgotCSAqIERyb3AgdGhlIG9sZCBpbmRleGVzLgorCSAqIERyb3AgdGhlIG9sZCBhbmQgYXV4aWxp YXJ5IGluZGV4ZXMuCiAJICovCiAKIAlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dS RVNTX0NSRUFURUlEWF9QSEFTRSwKLQkJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9X QUlUXzUpOworCQkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRfNik7CiAJV2Fp dEZvckxvY2tlcnNNdWx0aXBsZShsb2NrVGFncywgQWNjZXNzRXhjbHVzaXZlTG9jaywgdHJ1ZSk7 CiAKIAlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKQEAgLTQz MzUsNiArNDUzNywxOCBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRl eFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCQkJYWRkX2V4YWN0X29i amVjdF9hZGRyZXNzKCZvYmplY3QsIG9iamVjdHMpOwogCQl9CiAKKwkJZm9yZWFjaChsYywgbmV3 SW5kZXhJZHMpCisJCXsKKwkJCVJlaW5kZXhJbmRleEluZm8gKmlkeCA9IGxmaXJzdChsYyk7CisJ CQlPYmplY3RBZGRyZXNzIG9iamVjdDsKKworCQkJb2JqZWN0LmNsYXNzSWQgPSBSZWxhdGlvblJl bGF0aW9uSWQ7CisJCQlvYmplY3Qub2JqZWN0SWQgPSBpZHgtPmF1eEluZGV4SWQ7CisJCQlvYmpl Y3Qub2JqZWN0U3ViSWQgPSAwOworCisJCQlhZGRfZXhhY3Rfb2JqZWN0X2FkZHJlc3MoJm9iamVj dCwgb2JqZWN0cyk7CisJCX0KKwogCQkvKgogCQkgKiBVc2UgUEVSRk9STV9ERUxFVElPTl9DT05D VVJSRU5UX0xPQ0sgc28gdGhhdCBpbmRleF9kcm9wKCkgdXNlcyB0aGUKIAkJICogcmlnaHQgbG9j ayBsZXZlbC4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL21ha2VmdW5jcy5jIGIvc3Jj L2JhY2tlbmQvbm9kZXMvbWFrZWZ1bmNzLmMKaW5kZXggYTUwYWZlYWU2NzQuLjk5OTA3MzNlYThl IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9tYWtlZnVuY3MuYworKysgYi9zcmMvYmFj a2VuZC9ub2Rlcy9tYWtlZnVuY3MuYwpAQCAtNzg3LDcgKzc4Nyw3IEBAIEluZGV4SW5mbyAqCiBt YWtlSW5kZXhJbmZvKGludCBudW1hdHRycywgaW50IG51bWtleWF0dHJzLCBPaWQgYW1vaWQsIExp c3QgKmV4cHJlc3Npb25zLAogCQkJICBMaXN0ICpwcmVkaWNhdGVzLCBib29sIHVuaXF1ZSwgYm9v bCBudWxsc19ub3RfZGlzdGluY3QsCiAJCQkgIGJvb2wgaXNyZWFkeSwgYm9vbCBjb25jdXJyZW50 LCBib29sIHN1bW1hcml6aW5nLAotCQkJICBib29sIHdpdGhvdXRvdmVybGFwcykKKwkJCSAgYm9v bCB3aXRob3V0b3ZlcmxhcHMsIGJvb2wgYXV4aWxpYXJ5KQogewogCUluZGV4SW5mbyAgKm4gPSBt YWtlTm9kZShJbmRleEluZm8pOwogCkBAIC04MDMsNiArODAzLDcgQEAgbWFrZUluZGV4SW5mbyhp bnQgbnVtYXR0cnMsIGludCBudW1rZXlhdHRycywgT2lkIGFtb2lkLCBMaXN0ICpleHByZXNzaW9u cywKIAluLT5paV9Db25jdXJyZW50ID0gY29uY3VycmVudDsKIAluLT5paV9TdW1tYXJpemluZyA9 IHN1bW1hcml6aW5nOwogCW4tPmlpX1dpdGhvdXRPdmVybGFwcyA9IHdpdGhvdXRvdmVybGFwczsK KwluLT5paV9BdXhpbGlhcnkgPSBhdXhpbGlhcnk7CiAKIAkvKiBzdW1tYXJpemluZyBpbmRleGVz IGNhbm5vdCBjb250YWluIG5vbi1rZXkgYXR0cmlidXRlcyAqLwogCUFzc2VydCghc3VtbWFyaXpp bmcgfHwgKG51bWtleWF0dHJzID09IG51bWF0dHJzKSk7CkBAIC04MjgsNyArODI5LDYgQEAgbWFr ZUluZGV4SW5mbyhpbnQgbnVtYXR0cnMsIGludCBudW1rZXlhdHRycywgT2lkIGFtb2lkLCBMaXN0 ICpleHByZXNzaW9ucywKIAkvKiBpbml0aWFsaXplIGluZGV4LWJ1aWxkIHN0YXRlIHRvIGRlZmF1 bHQgKi8KIAluLT5paV9Ccm9rZW5Ib3RDaGFpbiA9IGZhbHNlOwogCW4tPmlpX1BhcmFsbGVsV29y a2VycyA9IDA7Ci0Jbi0+aWlfQXV4aWxpYXJ5ID0gZmFsc2U7CiAKIAkvKiBzZXQgdXAgZm9yIHBv c3NpYmxlIHVzZSBieSBpbmRleCBBTSAqLwogCW4tPmlpX0FtID0gYW1vaWQ7CmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxl YW0uaAppbmRleCBiMTkyMDk5OWYxMi4uMWIyZWY4ZjgwMDIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL2FjY2Vzcy90YWJsZWFtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaApA QCAtNzE1LDExICs3MTUsMTEgQEAgdHlwZWRlZiBzdHJ1Y3QgVGFibGVBbVJvdXRpbmUKIAkJCQkJ CQkJCQkgICBUYWJsZVNjYW5EZXNjIHNjYW4pOwogCiAJLyogc2VlIHRhYmxlX2luZGV4X3ZhbGlk YXRlX3NjYW4gZm9yIHJlZmVyZW5jZSBhYm91dCBwYXJhbWV0ZXJzICovCi0Jdm9pZAkJKCppbmRl eF92YWxpZGF0ZV9zY2FuKSAoUmVsYXRpb24gdGFibGVfcmVsLAotCQkJCQkJCQkJCVJlbGF0aW9u IGluZGV4X3JlbCwKLQkJCQkJCQkJCQlzdHJ1Y3QgSW5kZXhJbmZvICppbmRleF9pbmZvLAotCQkJ CQkJCQkJCVNuYXBzaG90IHNuYXBzaG90LAotCQkJCQkJCQkJCXN0cnVjdCBWYWxpZGF0ZUluZGV4 U3RhdGUgKnN0YXRlKTsKKwlUcmFuc2FjdGlvbklkIAkJKCppbmRleF92YWxpZGF0ZV9zY2FuKSAo UmVsYXRpb24gdGFibGVfcmVsLAorCQkJCQkJCQkJCQkJUmVsYXRpb24gaW5kZXhfcmVsLAorCQkJ CQkJCQkJCQkJc3RydWN0IEluZGV4SW5mbyAqaW5kZXhfaW5mbywKKwkJCQkJCQkJCQkJCXN0cnVj dCBWYWxpZGF0ZUluZGV4U3RhdGUgKnN0YXRlLAorCQkJCQkJCQkJCQkJc3RydWN0IFZhbGlkYXRl SW5kZXhTdGF0ZSAqYXV4X3N0YXRlKTsKIAogCiAJLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xODYz LDIyICsxODYzLDI1IEBAIHRhYmxlX2luZGV4X2J1aWxkX3JhbmdlX3NjYW4oUmVsYXRpb24gdGFi bGVfcmVsLAogfQogCiAvKgotICogdGFibGVfaW5kZXhfdmFsaWRhdGVfc2NhbiAtIHNlY29uZCB0 YWJsZSBzY2FuIGZvciBjb25jdXJyZW50IGluZGV4IGJ1aWxkCisgKiB0YWJsZV9pbmRleF92YWxp ZGF0ZV9zY2FuIC0gdmFsaWRhdGlvbiBzY2FuIGZvciBjb25jdXJyZW50IGluZGV4IGJ1aWxkCiAg KgogICogU2VlIHZhbGlkYXRlX2luZGV4KCkgZm9yIGFuIGV4cGxhbmF0aW9uLgorICoKKyAqIE5v dGU6IGl0IGlzIHJlc3BvbnNpYmlsaXR5IG9mIHRoYXQgZnVuY3Rpb24gdG8gY2xvc2Ugc29ydHN0 YXRlcyBpbgorICogYm90aCBzdGF0ZSBhbmQgYXV4c3RhdGUuCiAgKi8KLXN0YXRpYyBpbmxpbmUg dm9pZAorc3RhdGljIGlubGluZSBUcmFuc2FjdGlvbklkCiB0YWJsZV9pbmRleF92YWxpZGF0ZV9z Y2FuKFJlbGF0aW9uIHRhYmxlX3JlbCwKIAkJCQkJCSAgUmVsYXRpb24gaW5kZXhfcmVsLAogCQkJ CQkJICBzdHJ1Y3QgSW5kZXhJbmZvICppbmRleF9pbmZvLAotCQkJCQkJICBTbmFwc2hvdCBzbmFw c2hvdCwKLQkJCQkJCSAgc3RydWN0IFZhbGlkYXRlSW5kZXhTdGF0ZSAqc3RhdGUpCisJCQkJCQkg IHN0cnVjdCBWYWxpZGF0ZUluZGV4U3RhdGUgKnN0YXRlLAorCQkJCQkJICBzdHJ1Y3QgVmFsaWRh dGVJbmRleFN0YXRlICphdXhzdGF0ZSkKIHsKLQl0YWJsZV9yZWwtPnJkX3RhYmxlYW0tPmluZGV4 X3ZhbGlkYXRlX3NjYW4odGFibGVfcmVsLAotCQkJCQkJCQkJCQkgICBpbmRleF9yZWwsCi0JCQkJ CQkJCQkJCSAgIGluZGV4X2luZm8sCi0JCQkJCQkJCQkJCSAgIHNuYXBzaG90LAotCQkJCQkJCQkJ CQkgICBzdGF0ZSk7CisJcmV0dXJuIHRhYmxlX3JlbC0+cmRfdGFibGVhbS0+aW5kZXhfdmFsaWRh dGVfc2Nhbih0YWJsZV9yZWwsCisJCQkJCQkJCQkJCQkJICBpbmRleF9yZWwsCisJCQkJCQkJCQkJ CQkJICBpbmRleF9pbmZvLAorCQkJCQkJCQkJCQkJCSAgc3RhdGUsCisJCQkJCQkJCQkJCQkJICBh dXhzdGF0ZSk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5o IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5oCmluZGV4IDRkYWE4YmVmNWVlLi4wMWY4NWU1 N2VhMiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5oCisrKyBiL3NyYy9p bmNsdWRlL2NhdGFsb2cvaW5kZXguaApAQCAtMjUsNiArMjUsNyBAQCB0eXBlZGVmIGVudW0KIHsK IAlJTkRFWF9DUkVBVEVfU0VUX1JFQURZLAogCUlOREVYX0NSRUFURV9TRVRfVkFMSUQsCisJSU5E RVhfRFJPUF9DTEVBUl9SRUFEWSwKIAlJTkRFWF9EUk9QX0NMRUFSX1ZBTElELAogCUlOREVYX0RS T1BfU0VUX0RFQUQsCiB9IEluZGV4U3RhdGVGbGFnc0FjdGlvbjsKQEAgLTY1LDYgKzY2LDcgQEAg ZXh0ZXJuIHZvaWQgaW5kZXhfY2hlY2tfcHJpbWFyeV9rZXkoUmVsYXRpb24gaGVhcFJlbCwKICNk ZWZpbmUJSU5ERVhfQ1JFQVRFX0lGX05PVF9FWElTVFMJCQkoMSA8PCA0KQogI2RlZmluZQlJTkRF WF9DUkVBVEVfUEFSVElUSU9ORUQJCQkoMSA8PCA1KQogI2RlZmluZSBJTkRFWF9DUkVBVEVfSU5W QUxJRAkJCQkoMSA8PCA2KQorI2RlZmluZSBJTkRFWF9DUkVBVEVfQVVYSUxJQVJZCQkJCSgxIDw8 IDcpCiAKIGV4dGVybiBPaWQJaW5kZXhfY3JlYXRlKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkJ CQkJCSBjb25zdCBjaGFyICppbmRleFJlbGF0aW9uTmFtZSwKQEAgLTg2LDcgKzg4LDggQEAgZXh0 ZXJuIE9pZAlpbmRleF9jcmVhdGUoUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCQkJCQkJIGJpdHMx NiBjb25zdHJfZmxhZ3MsCiAJCQkJCQkgYm9vbCBhbGxvd19zeXN0ZW1fdGFibGVfbW9kcywKIAkJ CQkJCSBib29sIGlzX2ludGVybmFsLAotCQkJCQkJIE9pZCAqY29uc3RyYWludElkKTsKKwkJCQkJ CSBPaWQgKmNvbnN0cmFpbnRJZCwKKwkJCQkJCSBjaGFyIHJlbHBlcnNpc3RlbmNlKTsKIAogI2Rl ZmluZQlJTkRFWF9DT05TVFJfQ1JFQVRFX01BUktfQVNfUFJJTUFSWQkoMSA8PCAwKQogI2RlZmlu ZQlJTkRFWF9DT05TVFJfQ1JFQVRFX0RFRkVSUkFCTEUJCSgxIDw8IDEpCkBAIC0xMDAsNiArMTAz LDExIEBAIGV4dGVybiBPaWQJaW5kZXhfY29uY3VycmVudGx5X2NyZWF0ZV9jb3B5KFJlbGF0aW9u IGhlYXBSZWxhdGlvbiwKIAkJCQkJCQkJCQkgICBPaWQgdGFibGVzcGFjZU9pZCwKIAkJCQkJCQkJ CQkgICBjb25zdCBjaGFyICpuZXdOYW1lKTsKIAorZXh0ZXJuIE9pZAlpbmRleF9jb25jdXJyZW50 bHlfY3JlYXRlX2F1eChSZWxhdGlvbiBoZWFwUmVsYXRpb24sCisJCQkJCQkJCQkJICBPaWQgbWFp bkluZGV4SWQsCisJCQkJCQkJCQkJICBPaWQgdGFibGVzcGFjZU9pZCwKKwkJCQkJCQkJCQkgIGNv bnN0IGNoYXIgKm5ld05hbWUpOworCiBleHRlcm4gdm9pZCBpbmRleF9jb25jdXJyZW50bHlfYnVp bGQoT2lkIGhlYXBSZWxhdGlvbklkLAogCQkJCQkJCQkJIE9pZCBpbmRleFJlbGF0aW9uSWQpOwog CkBAIC0xNDUsNyArMTUzLDcgQEAgZXh0ZXJuIHZvaWQgaW5kZXhfYnVpbGQoUmVsYXRpb24gaGVh cFJlbGF0aW9uLAogCQkJCQkJYm9vbCBpc3JlaW5kZXgsCiAJCQkJCQlib29sIHBhcmFsbGVsKTsK IAotZXh0ZXJuIHZvaWQgdmFsaWRhdGVfaW5kZXgoT2lkIGhlYXBJZCwgT2lkIGluZGV4SWQsIFNu YXBzaG90IHNuYXBzaG90KTsKK2V4dGVybiBUcmFuc2FjdGlvbklkIHZhbGlkYXRlX2luZGV4KE9p ZCBoZWFwSWQsIE9pZCBpbmRleElkLCBPaWQgYXV4SW5kZXhJZCk7CiAKIGV4dGVybiB2b2lkIGlu ZGV4X3NldF9zdGF0ZV9mbGFncyhPaWQgaW5kZXhJZCwgSW5kZXhTdGF0ZUZsYWdzQWN0aW9uIGFj dGlvbik7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3Byb2dyZXNzLmggYi9z cmMvaW5jbHVkZS9jb21tYW5kcy9wcm9ncmVzcy5oCmluZGV4IDdjNzM2ZTdiMDNiLi42ZTE0NTc3 ZWY5YiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvcHJvZ3Jlc3MuaAorKysgYi9z cmMvaW5jbHVkZS9jb21tYW5kcy9wcm9ncmVzcy5oCkBAIC05NCwxNCArOTQsMTUgQEAKIAogLyog UGhhc2VzIG9mIENSRUFURSBJTkRFWCAoYXMgYWR2ZXJ0aXNlZCB2aWEgUFJPR1JFU1NfQ1JFQVRF SURYX1BIQVNFKSAqLwogI2RlZmluZSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF8xCQkJ MQotI2RlZmluZSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfQlVJTEQJCQkyCi0jZGVmaW5lIFBS T0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzIJCQkzCi0jZGVmaW5lIFBST0dSRVNTX0NSRUFU RUlEWF9QSEFTRV9WQUxJREFURV9JRFhTQ0FOCTQKLSNkZWZpbmUgUFJPR1JFU1NfQ1JFQVRFSURY X1BIQVNFX1ZBTElEQVRFX1NPUlQJCTUKLSNkZWZpbmUgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNF X1ZBTElEQVRFX1RBQkxFU0NBTgk2Ci0jZGVmaW5lIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9X QUlUXzMJCQk3CisjZGVmaW5lIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzIJCQkyCisj ZGVmaW5lIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9CVUlMRAkJCTMKKyNkZWZpbmUgUFJPR1JF U1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRfMwkJCTQKKyNkZWZpbmUgUFJPR1JFU1NfQ1JFQVRFSURY X1BIQVNFX1ZBTElEQVRFX0lEWFNDQU4JNQorI2RlZmluZSBQUk9HUkVTU19DUkVBVEVJRFhfUEhB U0VfVkFMSURBVEVfU09SVAkJNgorI2RlZmluZSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfVkFM SURBVEVfSURYTUVSR0UJNwogI2RlZmluZSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF80 CQkJOAogI2RlZmluZSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF81CQkJOQorI2RlZmlu ZSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF82CQkJMTAKIAogLyoKICAqIFN1YnBoYXNl cyBvZiBDUkVBVEUgSU5ERVgsIGZvciBpbmRleF9idWlsZC4KZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL25vZGVzL2V4ZWNub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKaW5k ZXggOGMwYWQ5NmUwMmMuLjQ4MjZjMWE1NTM4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rl cy9leGVjbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaApAQCAtMTg3 LDggKzE4Nyw4IEBAIHR5cGVkZWYgc3RydWN0IEV4cHJTdGF0ZQogICoJCUFtQ2FjaGUJCQkJcHJp dmF0ZSBjYWNoZSBhcmVhIGZvciBpbmRleCBBTQogICoJCUNvbnRleHQJCQkJbWVtb3J5IGNvbnRl eHQgaG9sZGluZyB0aGlzIEluZGV4SW5mbwogICoKLSAqIGlpX0NvbmN1cnJlbnQsIGlpX0Jyb2tl bkhvdENoYWluLCBpaV9BdXhpbGlhcnkgYW5kIGlpX1BhcmFsbGVsV29ya2VycwotICogYXJlIHVz ZWQgb25seSBkdXJpbmcgaW5kZXggYnVpbGQ7IHRoZXkncmUgY29udmVudGlvbmFsbHkgemVyb2Vk IG90aGVyd2lzZS4KKyAqIGlpX0NvbmN1cnJlbnQsIGlpX0Jyb2tlbkhvdENoYWluLCBhbmQgaWlf UGFyYWxsZWxXb3JrZXJzIGFyZSB1c2VkIG9ubHkKKyAqIGR1cmluZyBpbmRleCBidWlsZDsgdGhl eSdyZSBjb252ZW50aW9uYWxseSB6ZXJvZWQgb3RoZXJ3aXNlLgogICogLS0tLS0tLS0tLS0tLS0t LQogICovCiB0eXBlZGVmIHN0cnVjdCBJbmRleEluZm8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L25vZGVzL21ha2VmdW5jcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvbWFrZWZ1bmNzLmgKaW5kZXgg NTQ3M2NlOWEyODguLjQ5MDQ3NDhmNWZjIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9t YWtlZnVuY3MuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9tYWtlZnVuY3MuaApAQCAtOTksNyAr OTksOCBAQCBleHRlcm4gSW5kZXhJbmZvICptYWtlSW5kZXhJbmZvKGludCBudW1hdHRycywgaW50 IG51bWtleWF0dHJzLCBPaWQgYW1vaWQsCiAJCQkJCQkJCUxpc3QgKmV4cHJlc3Npb25zLCBMaXN0 ICpwcmVkaWNhdGVzLAogCQkJCQkJCQlib29sIHVuaXF1ZSwgYm9vbCBudWxsc19ub3RfZGlzdGlu Y3QsCiAJCQkJCQkJCWJvb2wgaXNyZWFkeSwgYm9vbCBjb25jdXJyZW50LAotCQkJCQkJCQlib29s IHN1bW1hcml6aW5nLCBib29sIHdpdGhvdXRvdmVybGFwcyk7CisJCQkJCQkJCWJvb2wgc3VtbWFy aXppbmcsIGJvb2wgd2l0aG91dG92ZXJsYXBzLAorCQkJCQkJCQlib29sIGF1eGlsaWFyeSk7CiAK IGV4dGVybiBOb2RlICptYWtlU3RyaW5nQ29uc3QoY2hhciAqc3RyLCBpbnQgbG9jYXRpb24pOwog ZXh0ZXJuIERlZkVsZW0gKm1ha2VEZWZFbGVtKGNoYXIgKm5hbWUsIE5vZGUgKmFyZywgaW50IGxv Y2F0aW9uKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9l eHBlY3RlZC9jaWNfcmVzZXRfc25hcHNob3RzLm91dCBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0 aW9uX3BvaW50cy9leHBlY3RlZC9jaWNfcmVzZXRfc25hcHNob3RzLm91dAppbmRleCA5ZjAzZmEz MDMzYy4uNzgwMzEzZjQ3N2IgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9u X3BvaW50cy9leHBlY3RlZC9jaWNfcmVzZXRfc25hcHNob3RzLm91dAorKysgYi9zcmMvdGVzdC9t b2R1bGVzL2luamVjdGlvbl9wb2ludHMvZXhwZWN0ZWQvY2ljX3Jlc2V0X3NuYXBzaG90cy5vdXQK QEAgLTIzLDYgKzIzLDEyIEBAIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgndGFibGVf cGFyYWxsZWxzY2FuX2luaXRpYWxpemUnLCAnbm90aWNlJyk7CiAgCiAoMSByb3cpCiAKK1NFTEVD VCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgnaGVhcGFtX2luZGV4X3ZhbGlkYXRlX3NjYW5fbm9f eGlkJywgJ25vdGljZScpOworIGluamVjdGlvbl9wb2ludHNfYXR0YWNoIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCiBDUkVBVEUgU0NIRU1BIGNpY19yZXNldF9zbmFw OwogQ1JFQVRFIFRBQkxFIGNpY19yZXNldF9zbmFwLnRibChpIGludCBwcmltYXJ5IGtleSwgaiBp bnQpOwogSU5TRVJUIElOVE8gY2ljX3Jlc2V0X3NuYXAudGJsIFNFTEVDVCBpLCBpICogSSBGUk9N IGdlbmVyYXRlX3NlcmllcygxLCAyMDApIHMoaSk7CkBAIC00MywzMCArNDksMzggQEAgQUxURVIg VEFCTEUgY2ljX3Jlc2V0X3NuYXAudGJsIFNFVCAocGFyYWxsZWxfd29ya2Vycz0wKTsKIENSRUFU RSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSk7 CiBOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfYmVn aW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cwogTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBm b3IgaW5qZWN0aW9uIHBvaW50IGhlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUKK05P VElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwYW1faW5kZXhf dmFsaWRhdGVfc2Nhbl9ub194aWQKIFJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNl dF9zbmFwLmlkeDsKIE5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2lu dCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCiBOT1RJQ0U6ICBub3RpY2Ug dHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2Vm ZmVjdGl2ZQorTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhl YXBhbV9pbmRleF92YWxpZGF0ZV9zY2FuX25vX3hpZAogRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkg Y2ljX3Jlc2V0X3NuYXAuaWR4OwogQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2lj X3Jlc2V0X3NuYXAudGJsKGkpOwogTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0 aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMKIE5PVElDRTog IG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwX3Jlc2V0X3NjYW5fc25h cHNob3RfZWZmZWN0aXZlCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24g cG9pbnQgaGVhcGFtX2luZGV4X3ZhbGlkYXRlX3NjYW5fbm9feGlkCiBSRUlOREVYIElOREVYIENP TkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiBOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVk IGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90 cwogTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBfcmVz ZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9y IGluamVjdGlvbiBwb2ludCBoZWFwYW1faW5kZXhfdmFsaWRhdGVfc2Nhbl9ub194aWQKIERST1Ag SU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKIENSRUFURSBJTkRFWCBDT05D VVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChNT0QoaSwgMiksIGopIFdIRVJFIE1P RChpLCAyKSA9IDA7CiBOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9p bnQgdGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cwogTk9USUNFOiAgbm90aWNl IHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9l ZmZlY3RpdmUKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBo ZWFwYW1faW5kZXhfdmFsaWRhdGVfc2Nhbl9ub194aWQKIFJFSU5ERVggSU5ERVggQ09OQ1VSUkVO VExZIGNpY19yZXNldF9zbmFwLmlkeDsKIE5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGlu amVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCiBOT1RJ Q0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2Fu X3NuYXBzaG90X2VmZmVjdGl2ZQorTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0 aW9uIHBvaW50IGhlYXBhbV9pbmRleF92YWxpZGF0ZV9zY2FuX25vX3hpZAogRFJPUCBJTkRFWCBD T05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogQ1JFQVRFIElOREVYIENPTkNVUlJFTlRM WSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGksIGopIFdIRVJFIGNpY19yZXNldF9zbmFwLnBy ZWRpY2F0ZV9zdGFibGUoaSk7CiBOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rp b24gcG9pbnQgdGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cwogTk9USUNFOiAg bm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBfcmVzZXRfc2Nhbl9zbmFw c2hvdF9lZmZlY3RpdmUKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBw b2ludCBoZWFwYW1faW5kZXhfdmFsaWRhdGVfc2Nhbl9ub194aWQKIFJFSU5ERVggSU5ERVggQ09O Q1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKIE5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQg Zm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3Rz CiBOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNl dF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZQorTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3Ig aW5qZWN0aW9uIHBvaW50IGhlYXBhbV9pbmRleF92YWxpZGF0ZV9zY2FuX25vX3hpZAogRFJPUCBJ TkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogQ1JFQVRFIElOREVYIENPTkNV UlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGksIGopIFdIRVJFIGNpY19yZXNldF9z bmFwLnByZWRpY2F0ZV9zdGFibGVfbm9fcGFyYW0oKTsKIE5PVElDRTogIG5vdGljZSB0cmlnZ2Vy ZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNo b3RzCkBAIC03Niw5ICs5MCwxMSBAQCBEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRf c25hcC5pZHg7CiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25h cC50YmwgVVNJTkcgQlJJTihpKTsKIE5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVj dGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCiBOT1RJQ0U6 ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3Nu YXBzaG90X2VmZmVjdGl2ZQorTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9u IHBvaW50IGhlYXBhbV9pbmRleF92YWxpZGF0ZV9zY2FuX25vX3hpZAogUkVJTkRFWCBJTkRFWCBD T05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogTk9USUNFOiAgbm90aWNlIHRyaWdnZXJl ZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hv dHMKIE5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwX3Jl c2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZlCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZv ciBpbmplY3Rpb24gcG9pbnQgaGVhcGFtX2luZGV4X3ZhbGlkYXRlX3NjYW5fbm9feGlkCiBEUk9Q IElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiAtLSBUaGUgc2FtZSBpbiBw YXJhbGxlbCBtb2RlCiBBTFRFUiBUQUJMRSBjaWNfcmVzZXRfc25hcC50YmwgU0VUIChwYXJhbGxl bF93b3JrZXJzPTIpOwpAQCAtOTEsMjMgKzEwNywzMSBAQCBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50 c19kZXRhY2goJ2hlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUnKTsKIAogQ1JFQVRF IFVOSVFVRSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChpKTsK IE5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9wYXJh bGxlbHNjYW5faW5pdGlhbGl6ZQorTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0 aW9uIHBvaW50IGhlYXBhbV9pbmRleF92YWxpZGF0ZV9zY2FuX25vX3hpZAogUkVJTkRFWCBJTkRF WCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogTk9USUNFOiAgbm90aWNlIHRyaWdn ZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplCitO T1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcGFtX2luZGV4 X3ZhbGlkYXRlX3NjYW5fbm9feGlkCiBEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRf c25hcC5pZHg7CiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25h cC50YmwoaSk7CiBOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQg dGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQg Zm9yIGluamVjdGlvbiBwb2ludCBoZWFwYW1faW5kZXhfdmFsaWRhdGVfc2Nhbl9ub194aWQKIFJF SU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKIE5PVElDRTogIG5v dGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9wYXJhbGxlbHNjYW5faW5p dGlhbGl6ZQorTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhl YXBhbV9pbmRleF92YWxpZGF0ZV9zY2FuX25vX3hpZAogRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkg Y2ljX3Jlc2V0X3NuYXAuaWR4OwogQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2lj X3Jlc2V0X3NuYXAudGJsKE1PRChpLCAyKSwgaikgV0hFUkUgTU9EKGksIDIpID0gMDsKIE5PVElD RTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9wYXJhbGxlbHNj YW5faW5pdGlhbGl6ZQorTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBv aW50IGhlYXBhbV9pbmRleF92YWxpZGF0ZV9zY2FuX25vX3hpZAogUkVJTkRFWCBJTkRFWCBDT05D VVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBm b3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplCitOT1RJQ0U6 ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcGFtX2luZGV4X3ZhbGlk YXRlX3NjYW5fbm9feGlkCiBEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5p ZHg7CiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50Ymwo aSwgaikgV0hFUkUgY2ljX3Jlc2V0X3NuYXAucHJlZGljYXRlX3N0YWJsZShpKTsKIE5PVElDRTog IG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3Ry YXRfcmVzZXRfc25hcHNob3RzCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rp b24gcG9pbnQgaGVhcGFtX2luZGV4X3ZhbGlkYXRlX3NjYW5fbm9feGlkCiBSRUlOREVYIElOREVY IENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiBOT1RJQ0U6ICBub3RpY2UgdHJpZ2dl cmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBz aG90cworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBh bV9pbmRleF92YWxpZGF0ZV9zY2FuX25vX3hpZAogRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2lj X3Jlc2V0X3NuYXAuaWR4OwogQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jl c2V0X3NuYXAudGJsKGksIGopIFdIRVJFIGNpY19yZXNldF9zbmFwLnByZWRpY2F0ZV9zdGFibGVf bm9fcGFyYW0oKTsKIE5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2lu dCB0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZQpAQCAtMTE2LDEzICsxNDAsMTcgQEAgTk9U SUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX3BhcmFsbGVs c2Nhbl9pbml0aWFsaXplCiBEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5p ZHg7CiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50Ymwo aSBERVNDIE5VTExTIExBU1QpOwogTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0 aW9uIHBvaW50IHRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplCitOT1RJQ0U6ICBub3RpY2Ug dHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcGFtX2luZGV4X3ZhbGlkYXRlX3NjYW5f bm9feGlkCiBSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiBO T1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfcGFyYWxs ZWxzY2FuX2luaXRpYWxpemUKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlv biBwb2ludCBoZWFwYW1faW5kZXhfdmFsaWRhdGVfc2Nhbl9ub194aWQKIERST1AgSU5ERVggQ09O Q1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKIENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkg aWR4IE9OIGNpY19yZXNldF9zbmFwLnRibCBVU0lORyBCUklOKGkpOwogTk9USUNFOiAgbm90aWNl IHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFs aXplCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcGFt X2luZGV4X3ZhbGlkYXRlX3NjYW5fbm9feGlkCiBSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBj aWNfcmVzZXRfc25hcC5pZHg7CiBOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rp b24gcG9pbnQgdGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUKK05PVElDRTogIG5vdGljZSB0 cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwYW1faW5kZXhfdmFsaWRhdGVfc2Nhbl9u b194aWQKIERST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKIERST1Ag U0NIRU1BIGNpY19yZXNldF9zbmFwIENBU0NBREU7CiBOT1RJQ0U6ICBkcm9wIGNhc2NhZGVzIHRv IDMgb3RoZXIgb2JqZWN0cwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25f cG9pbnRzL3NxbC9jaWNfcmVzZXRfc25hcHNob3RzLnNxbCBiL3NyYy90ZXN0L21vZHVsZXMvaW5q ZWN0aW9uX3BvaW50cy9zcWwvY2ljX3Jlc2V0X3NuYXBzaG90cy5zcWwKaW5kZXggMjk0MWFhN2Fl MzguLjI0OWQxMDYxYWRhIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9w b2ludHMvc3FsL2NpY19yZXNldF9zbmFwc2hvdHMuc3FsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMv aW5qZWN0aW9uX3BvaW50cy9zcWwvY2ljX3Jlc2V0X3NuYXBzaG90cy5zcWwKQEAgLTQsNiArNCw3 IEBAIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3NldF9sb2NhbCgpOwogU0VMRUNUIGluamVjdGlv bl9wb2ludHNfYXR0YWNoKCdoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZlJywgJ25v dGljZScpOwogU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCd0YWJsZV9iZWdpbnNjYW5f c3RyYXRfcmVzZXRfc25hcHNob3RzJywgJ25vdGljZScpOwogU0VMRUNUIGluamVjdGlvbl9wb2lu dHNfYXR0YWNoKCd0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZScsICdub3RpY2UnKTsKK1NF TEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgnaGVhcGFtX2luZGV4X3ZhbGlkYXRlX3NjYW5f bm9feGlkJywgJ25vdGljZScpOwogCiBDUkVBVEUgU0NIRU1BIGNpY19yZXNldF9zbmFwOwogQ1JF QVRFIFRBQkxFIGNpY19yZXNldF9zbmFwLnRibChpIGludCBwcmltYXJ5IGtleSwgaiBpbnQpOwpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfaW5kZXgub3V0IGIv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfaW5kZXgub3V0CmluZGV4IGJkNWYwMDJj ZjIwLi4zNDM2MmUzZDg3NSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9j cmVhdGVfaW5kZXgub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX2lu ZGV4Lm91dApAQCAtMTQyMyw2ICsxNDIzLDcgQEAgREVUQUlMOiAgS2V5IChmMSk9KGIpIGFscmVh ZHkgZXhpc3RzLgogQ1JFQVRFIFVOSVFVRSBJTkRFWCBDT05DVVJSRU5UTFkgY29uY3VyX2luZGV4 MyBPTiBjb25jdXJfaGVhcChmMik7CiBFUlJPUjogIGNvdWxkIG5vdCBjcmVhdGUgdW5pcXVlIGlu ZGV4ICJjb25jdXJfaW5kZXgzIgogREVUQUlMOiAgS2V5IChmMik9KGIpIGlzIGR1cGxpY2F0ZWQu CitEUk9QIElOREVYIGNvbmN1cl9pbmRleDNfY2NhdXg7CiAtLSB0ZXN0IHRoYXQgZXhwcmVzc2lv biBpbmRleGVzIGFuZCBwYXJ0aWFsIGluZGV4ZXMgd29yayBjb25jdXJyZW50bHkKIENSRUFURSBJ TkRFWCBDT05DVVJSRU5UTFkgY29uY3VyX2luZGV4NCBvbiBjb25jdXJfaGVhcChmMikgV0hFUkUg ZjE9J2EnOwogQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBjb25jdXJfaW5kZXg1IG9uIGNvbmN1 cl9oZWFwKGYyKSBXSEVSRSBmMT0neCc7CkBAIC0zMDQ5LDYgKzMwNTAsNyBAQCBJTlNFUlQgSU5U TyBjb25jdXJfcmVpbmRleF90YWI0IFZBTFVFUyAoMSksICgxKSwgKDIpOwogQ1JFQVRFIFVOSVFV RSBJTkRFWCBDT05DVVJSRU5UTFkgY29uY3VyX3JlaW5kZXhfaW5kNSBPTiBjb25jdXJfcmVpbmRl eF90YWI0IChjMSk7CiBFUlJPUjogIGNvdWxkIG5vdCBjcmVhdGUgdW5pcXVlIGluZGV4ICJjb25j dXJfcmVpbmRleF9pbmQ1IgogREVUQUlMOiAgS2V5IChjMSk9KDEpIGlzIGR1cGxpY2F0ZWQuCitE Uk9QIElOREVYIGNvbmN1cl9yZWluZGV4X2luZDVfY2NhdXg7CiAtLSBSZWluZGV4aW5nIGNvbmN1 cnJlbnRseSB0aGlzIGluZGV4IGZhaWxzIHdpdGggdGhlIHNhbWUgZmFpbHVyZS4KIC0tIFRoZSBl eHRyYSBpbmRleCBjcmVhdGVkIGlzIGl0c2VsZiBpbnZhbGlkLCBhbmQgY2FuIGJlIGRyb3BwZWQu CiBSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjb25jdXJfcmVpbmRleF9pbmQ1OwpAQCAtMzA2 MSw4ICszMDYzLDEwIEBAIERFVEFJTDogIEtleSAoYzEpPSgxKSBpcyBkdXBsaWNhdGVkLgogIGMx ICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IAogSW5kZXhlczoKICAgICAi Y29uY3VyX3JlaW5kZXhfaW5kNSIgVU5JUVVFLCBidHJlZSAoYzEpIElOVkFMSUQKKyAgICAiY29u Y3VyX3JlaW5kZXhfaW5kNV9jY2F1eCIgc3RpciAoYzEpIElOVkFMSUQKICAgICAiY29uY3VyX3Jl aW5kZXhfaW5kNV9jY25ldyIgVU5JUVVFLCBidHJlZSAoYzEpIElOVkFMSUQKIAorRFJPUCBJTkRF WCBjb25jdXJfcmVpbmRleF9pbmQ1X2NjYXV4OwogRFJPUCBJTkRFWCBjb25jdXJfcmVpbmRleF9p bmQ1X2NjbmV3OwogLS0gVGhpcyBtYWtlcyB0aGUgcHJldmlvdXMgZmFpbHVyZSBnbyBhd2F5LCBz byB0aGUgaW5kZXggY2FuIGJlY29tZSB2YWxpZC4KIERFTEVURSBGUk9NIGNvbmN1cl9yZWluZGV4 X3RhYjQgV0hFUkUgYzEgPSAxOwpAQCAtMzA5MCw2ICszMDk0LDQ0IEBAIEluZGV4ZXM6CiAgICAg ImNvbmN1cl9yZWluZGV4X2luZDUiIFVOSVFVRSwgYnRyZWUgKGMxKQogCiBEUk9QIFRBQkxFIGNv bmN1cl9yZWluZGV4X3RhYjQ7CistLSBDaGVjayBoYW5kbGluZyBvZiBhdXhpbGlhcnkgaW5kZXhl cworQ1JFQVRFIFRBQkxFIGF1eF9pbmRleF90YWI1IChjMSBpbnQpOworSU5TRVJUIElOVE8gYXV4 X2luZGV4X3RhYjUgVkFMVUVTICgxKSwgKDEpLCAoMik7CistLSBUaGlzIHRyaWNrIGNyZWF0ZXMg YW4gaW52YWxpZCBpbmRleCBhbmQgYXV4aWxpYXJ5IGluZGV4IGZvciBpdAorQ1JFQVRFIFVOSVFV RSBJTkRFWCBDT05DVVJSRU5UTFkgYXV4X2luZGV4X2luZDYgT04gYXV4X2luZGV4X3RhYjUgKGMx KTsKK0VSUk9SOiAgY291bGQgbm90IGNyZWF0ZSB1bmlxdWUgaW5kZXggImF1eF9pbmRleF9pbmQ2 IgorREVUQUlMOiAgS2V5IChjMSk9KDEpIGlzIGR1cGxpY2F0ZWQuCitcZCBhdXhfaW5kZXhfdGFi NQorICAgICAgICAgICBUYWJsZSAicHVibGljLmF1eF9pbmRleF90YWI1IgorIENvbHVtbiB8ICBU eXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1bHQgCistLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0KKyBjMSAgICAgfCBpbnRlZ2VyIHwg ICAgICAgICAgIHwgICAgICAgICAgfCAKK0luZGV4ZXM6CisgICAgImF1eF9pbmRleF9pbmQ2IiBV TklRVUUsIGJ0cmVlIChjMSkgSU5WQUxJRAorICAgICJhdXhfaW5kZXhfaW5kNl9jY2F1eCIgc3Rp ciAoYzEpIElOVkFMSUQKKworLS0gTm90IGFsbG93ZWQgdG8gcmVpbmRleCBhdXhpbGlhcnkgaW5k ZXgKK1JFSU5ERVggSU5ERVggYXV4X2luZGV4X2luZDZfY2NhdXg7CitFUlJPUjogIHJlaW5kZXgg b2YgYXV4aWxpYXJ5IGluZGV4ICJhdXhfaW5kZXhfaW5kNl9jY2F1eCIgbm90IHN1cHBvcnRlZAor LS0gQ29uY3VycmVudGx5IGFsc28KK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGF1eF9pbmRl eF9pbmQ2X2NjYXV4OworRVJST1I6ICByZWluZGV4IG9mIGF1eGlsaWFyeSBpbmRleCAiYXV4X2lu ZGV4X2luZDZfY2NhdXgiIG5vdCBzdXBwb3J0ZWQKKy0tIFRoaXMgbWFrZXMgdGhlIHByZXZpb3Vz IGZhaWx1cmUgZ28gYXdheSwgc28gdGhlIGluZGV4IGNhbiBiZWNvbWUgdmFsaWQuCitERUxFVEUg RlJPTSBjb25jdXJfcmVpbmRleF90YWI0IFdIRVJFIGMxID0gMTsKK0VSUk9SOiAgcmVsYXRpb24g ImNvbmN1cl9yZWluZGV4X3RhYjQiIGRvZXMgbm90IGV4aXN0CitMSU5FIDE6IERFTEVURSBGUk9N IGNvbmN1cl9yZWluZGV4X3RhYjQgV0hFUkUgYzEgPSAxOworICAgICAgICAgICAgICAgICAgICBe CistLSBTaG91bGQgYmUgc2tpcHBlZCBkdXJpbmcgcmVpbmRleAorUkVJTkRFWCBUQUJMRSBhdXhf aW5kZXhfdGFiNTsKK0VSUk9SOiAgY291bGQgbm90IGNyZWF0ZSB1bmlxdWUgaW5kZXggImF1eF9p bmRleF9pbmQ2IgorREVUQUlMOiAgS2V5IChjMSk9KDEpIGlzIGR1cGxpY2F0ZWQuCistLSBTaG91 bGQgYmUgc2tpcHBlZCBkdXJpbmcgY29uY3VycmVudCByZWluZGV4CitSRUlOREVYIFRBQkxFIENP TkNVUlJFTlRMWSBhdXhfaW5kZXhfdGFiNTsKK1dBUk5JTkc6ICBza2lwcGluZyByZWluZGV4IG9m IGludmFsaWQgaW5kZXggInB1YmxpYy5hdXhfaW5kZXhfaW5kNiIKK0hJTlQ6ICBVc2UgRFJPUCBJ TkRFWCBvciBSRUlOREVYIElOREVYLgorV0FSTklORzogIHNraXBwaW5nIHJlaW5kZXggb2YgYXV4 aWxpYXJ5IGluZGV4ICJwdWJsaWMuYXV4X2luZGV4X2luZDZfY2NhdXgiCitOT1RJQ0U6ICB0YWJs ZSAiYXV4X2luZGV4X3RhYjUiIGhhcyBubyBpbmRleGVzIHRoYXQgY2FuIGJlIHJlaW5kZXhlZCBj b25jdXJyZW50bHkKK0RST1AgVEFCTEUgYXV4X2luZGV4X3RhYjU7CiAtLSBDaGVjayBoYW5kbGlu ZyBvZiBpbmRleGVzIHdpdGggZXhwcmVzc2lvbnMgYW5kIHByZWRpY2F0ZXMuICBUaGUKIC0tIGRl ZmluaXRpb25zIG9mIHRoZSByZWJ1aWx0IGluZGV4ZXMgc2hvdWxkIG1hdGNoIHRoZSBvcmlnaW5h bAogLS0gZGVmaW5pdGlvbnMuCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L2luZGV4aW5nLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaW5kZXhpbmcub3V0Cmlu ZGV4IGJjZjFkYjExZDczLi4zZmVjYWEzODg1MCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9pbmRleGluZy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9p bmRleGluZy5vdXQKQEAgLTE1ODUsMTAgKzE1ODUsMTEgQEAgc2VsZWN0IGluZGV4cmVsaWQ6OnJl Z2NsYXNzLCBpbmRpc3ZhbGlkLAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KICBwYXJ0ZWRfaXN2YWxpZF9pZHggICAgICAgICAgICAgfCBmICAgICAgICAgIHwg cGFydGVkX2lzdmFsaWRfdGFiICAgIHwgCiAgcGFydGVkX2lzdmFsaWRfaWR4XzExICAgICAgICAg IHwgZiAgICAgICAgICB8IHBhcnRlZF9pc3ZhbGlkX3RhYl8xMSB8IHBhcnRlZF9pc3ZhbGlkX3Rh Yl8xX2V4cHJfaWR4CisgcGFydGVkX2lzdmFsaWRfaWR4XzExX2NjYXV4ICAgIHwgZiAgICAgICAg ICB8IHBhcnRlZF9pc3ZhbGlkX3RhYl8xMSB8IAogIHBhcnRlZF9pc3ZhbGlkX3RhYl8xMl9leHBy X2lkeCB8IHQgICAgICAgICAgfCBwYXJ0ZWRfaXN2YWxpZF90YWJfMTIgfCBwYXJ0ZWRfaXN2YWxp ZF90YWJfMV9leHByX2lkeAogIHBhcnRlZF9pc3ZhbGlkX3RhYl8xX2V4cHJfaWR4ICB8IGYgICAg ICAgICAgfCBwYXJ0ZWRfaXN2YWxpZF90YWJfMSAgfCBwYXJ0ZWRfaXN2YWxpZF9pZHgKICBwYXJ0 ZWRfaXN2YWxpZF90YWJfMl9leHByX2lkeCAgfCB0ICAgICAgICAgIHwgcGFydGVkX2lzdmFsaWRf dGFiXzIgIHwgcGFydGVkX2lzdmFsaWRfaWR4Ci0oNSByb3dzKQorKDYgcm93cykKIAogZHJvcCB0 YWJsZSBwYXJ0ZWRfaXN2YWxpZF90YWI7CiAtLSBDaGVjayBzdGF0ZSBvZiByZXBsaWNhIGluZGV4 ZXMgd2hlbiBhdHRhY2hpbmcgYSBwYXJ0aXRpb24uCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL3J1bGVzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMu b3V0CmluZGV4IDViYWJhOGQzOWZmLi40MzZjNzM2ZTY0YyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9ydWxlcy5vdXQKQEAgLTIwMjAsMTQgKzIwMjAsMTUgQEAgcGdfc3RhdF9wcm9ncmVzc19jcmVh dGVfaW5kZXh8IFNFTEVDVCBzLnBpZCwKICAgICAgICAgQ0FTRSBzLnBhcmFtMTAKICAgICAgICAg ICAgIFdIRU4gMCBUSEVOICdpbml0aWFsaXppbmcnOjp0ZXh0CiAgICAgICAgICAgICBXSEVOIDEg VEhFTiAnd2FpdGluZyBmb3Igd3JpdGVycyBiZWZvcmUgYnVpbGQnOjp0ZXh0Ci0gICAgICAgICAg ICBXSEVOIDIgVEhFTiAoJ2J1aWxkaW5nIGluZGV4Jzo6dGV4dCB8fCBDT0FMRVNDRSgoJzogJzo6 dGV4dCB8fCBwZ19pbmRleGFtX3Byb2dyZXNzX3BoYXNlbmFtZSgocy5wYXJhbTkpOjpvaWQsIHMu cGFyYW0xMSkpLCAnJzo6dGV4dCkpCi0gICAgICAgICAgICBXSEVOIDMgVEhFTiAnd2FpdGluZyBm b3Igd3JpdGVycyBiZWZvcmUgdmFsaWRhdGlvbic6OnRleHQKLSAgICAgICAgICAgIFdIRU4gNCBU SEVOICdpbmRleCB2YWxpZGF0aW9uOiBzY2FubmluZyBpbmRleCc6OnRleHQKLSAgICAgICAgICAg IFdIRU4gNSBUSEVOICdpbmRleCB2YWxpZGF0aW9uOiBzb3J0aW5nIHR1cGxlcyc6OnRleHQKLSAg ICAgICAgICAgIFdIRU4gNiBUSEVOICdpbmRleCB2YWxpZGF0aW9uOiBzY2FubmluZyB0YWJsZSc6 OnRleHQKLSAgICAgICAgICAgIFdIRU4gNyBUSEVOICd3YWl0aW5nIGZvciBvbGQgc25hcHNob3Rz Jzo6dGV4dAotICAgICAgICAgICAgV0hFTiA4IFRIRU4gJ3dhaXRpbmcgZm9yIHJlYWRlcnMgYmVm b3JlIG1hcmtpbmcgZGVhZCc6OnRleHQKLSAgICAgICAgICAgIFdIRU4gOSBUSEVOICd3YWl0aW5n IGZvciByZWFkZXJzIGJlZm9yZSBkcm9wcGluZyc6OnRleHQKKyAgICAgICAgICAgIFdIRU4gMiBU SEVOICd3YWl0aW5nIGZvciB3cml0ZXJzIHRvIHVzZSBhdXhpbGlhcnkgaW5kZXgnOjp0ZXh0Cisg ICAgICAgICAgICBXSEVOIDMgVEhFTiAoJ2J1aWxkaW5nIGluZGV4Jzo6dGV4dCB8fCBDT0FMRVND RSgoJzogJzo6dGV4dCB8fCBwZ19pbmRleGFtX3Byb2dyZXNzX3BoYXNlbmFtZSgocy5wYXJhbTkp OjpvaWQsIHMucGFyYW0xMSkpLCAnJzo6dGV4dCkpCisgICAgICAgICAgICBXSEVOIDQgVEhFTiAn d2FpdGluZyBmb3Igd3JpdGVycyBiZWZvcmUgdmFsaWRhdGlvbic6OnRleHQKKyAgICAgICAgICAg IFdIRU4gNSBUSEVOICdpbmRleCB2YWxpZGF0aW9uOiBzY2FubmluZyBpbmRleCc6OnRleHQKKyAg ICAgICAgICAgIFdIRU4gNiBUSEVOICdpbmRleCB2YWxpZGF0aW9uOiBzb3J0aW5nIHR1cGxlcyc6 OnRleHQKKyAgICAgICAgICAgIFdIRU4gNyBUSEVOICdpbmRleCB2YWxpZGF0aW9uOiBtZXJnaW5n IGluZGV4ZXMnOjp0ZXh0CisgICAgICAgICAgICBXSEVOIDggVEhFTiAnd2FpdGluZyBmb3Igb2xk IHNuYXBzaG90cyc6OnRleHQKKyAgICAgICAgICAgIFdIRU4gOSBUSEVOICd3YWl0aW5nIGZvciBy ZWFkZXJzIGJlZm9yZSBtYXJraW5nIGRlYWQnOjp0ZXh0CisgICAgICAgICAgICBXSEVOIDEwIFRI RU4gJ3dhaXRpbmcgZm9yIHJlYWRlcnMgYmVmb3JlIGRyb3BwaW5nJzo6dGV4dAogICAgICAgICAg ICAgRUxTRSBOVUxMOjp0ZXh0CiAgICAgICAgIEVORCBBUyBwaGFzZSwKICAgICBzLnBhcmFtNCBB UyBsb2NrZXJzX3RvdGFsLApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRl X2luZGV4LnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NyZWF0ZV9pbmRleC5zcWwKaW5kZXgg YmU1NzBkYTA4YTAuLmZjZmY1ZDE5OTk4IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3Nx bC9jcmVhdGVfaW5kZXguc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NyZWF0ZV9pbmRl eC5zcWwKQEAgLTQ5OSw2ICs0OTksNyBAQCBDUkVBVEUgVU5JUVVFIElOREVYIENPTkNVUlJFTlRM WSBJRiBOT1QgRVhJU1RTIGNvbmN1cl9pbmRleDIgT04gY29uY3VyX2hlYXAoZjEpOwogSU5TRVJU IElOVE8gY29uY3VyX2hlYXAgVkFMVUVTICgnYicsJ3gnKTsKIC0tIGNoZWNrIGlmIGNvbnN0cmFp bnQgaXMgZW5mb3JjZWQgcHJvcGVybHkgYXQgYnVpbGQgdGltZQogQ1JFQVRFIFVOSVFVRSBJTkRF WCBDT05DVVJSRU5UTFkgY29uY3VyX2luZGV4MyBPTiBjb25jdXJfaGVhcChmMik7CitEUk9QIElO REVYIGNvbmN1cl9pbmRleDNfY2NhdXg7CiAtLSB0ZXN0IHRoYXQgZXhwcmVzc2lvbiBpbmRleGVz IGFuZCBwYXJ0aWFsIGluZGV4ZXMgd29yayBjb25jdXJyZW50bHkKIENSRUFURSBJTkRFWCBDT05D VVJSRU5UTFkgY29uY3VyX2luZGV4NCBvbiBjb25jdXJfaGVhcChmMikgV0hFUkUgZjE9J2EnOwog Q1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBjb25jdXJfaW5kZXg1IG9uIGNvbmN1cl9oZWFwKGYy KSBXSEVSRSBmMT0neCc7CkBAIC0xMjUwLDEwICsxMjUxLDEyIEBAIENSRUFURSBUQUJMRSBjb25j dXJfcmVpbmRleF90YWI0IChjMSBpbnQpOwogSU5TRVJUIElOVE8gY29uY3VyX3JlaW5kZXhfdGFi NCBWQUxVRVMgKDEpLCAoMSksICgyKTsKIC0tIFRoaXMgdHJpY2sgY3JlYXRlcyBhbiBpbnZhbGlk IGluZGV4LgogQ1JFQVRFIFVOSVFVRSBJTkRFWCBDT05DVVJSRU5UTFkgY29uY3VyX3JlaW5kZXhf aW5kNSBPTiBjb25jdXJfcmVpbmRleF90YWI0IChjMSk7CitEUk9QIElOREVYIGNvbmN1cl9yZWlu ZGV4X2luZDVfY2NhdXg7CiAtLSBSZWluZGV4aW5nIGNvbmN1cnJlbnRseSB0aGlzIGluZGV4IGZh aWxzIHdpdGggdGhlIHNhbWUgZmFpbHVyZS4KIC0tIFRoZSBleHRyYSBpbmRleCBjcmVhdGVkIGlz IGl0c2VsZiBpbnZhbGlkLCBhbmQgY2FuIGJlIGRyb3BwZWQuCiBSRUlOREVYIElOREVYIENPTkNV UlJFTlRMWSBjb25jdXJfcmVpbmRleF9pbmQ1OwogXGQgY29uY3VyX3JlaW5kZXhfdGFiNAorRFJP UCBJTkRFWCBjb25jdXJfcmVpbmRleF9pbmQ1X2NjYXV4OwogRFJPUCBJTkRFWCBjb25jdXJfcmVp bmRleF9pbmQ1X2NjbmV3OwogLS0gVGhpcyBtYWtlcyB0aGUgcHJldmlvdXMgZmFpbHVyZSBnbyBh d2F5LCBzbyB0aGUgaW5kZXggY2FuIGJlY29tZSB2YWxpZC4KIERFTEVURSBGUk9NIGNvbmN1cl9y ZWluZGV4X3RhYjQgV0hFUkUgYzEgPSAxOwpAQCAtMTI2NSw2ICsxMjY4LDI0IEBAIFJFSU5ERVgg SU5ERVggQ09OQ1VSUkVOVExZIGNvbmN1cl9yZWluZGV4X2luZDU7CiBcZCBjb25jdXJfcmVpbmRl eF90YWI0CiBEUk9QIFRBQkxFIGNvbmN1cl9yZWluZGV4X3RhYjQ7CiAKKy0tIENoZWNrIGhhbmRs aW5nIG9mIGF1eGlsaWFyeSBpbmRleGVzCitDUkVBVEUgVEFCTEUgYXV4X2luZGV4X3RhYjUgKGMx IGludCk7CitJTlNFUlQgSU5UTyBhdXhfaW5kZXhfdGFiNSBWQUxVRVMgKDEpLCAoMSksICgyKTsK Ky0tIFRoaXMgdHJpY2sgY3JlYXRlcyBhbiBpbnZhbGlkIGluZGV4IGFuZCBhdXhpbGlhcnkgaW5k ZXggZm9yIGl0CitDUkVBVEUgVU5JUVVFIElOREVYIENPTkNVUlJFTlRMWSBhdXhfaW5kZXhfaW5k NiBPTiBhdXhfaW5kZXhfdGFiNSAoYzEpOworXGQgYXV4X2luZGV4X3RhYjUKKy0tIE5vdCBhbGxv d2VkIHRvIHJlaW5kZXggYXV4aWxpYXJ5IGluZGV4CitSRUlOREVYIElOREVYIGF1eF9pbmRleF9p bmQ2X2NjYXV4OworLS0gQ29uY3VycmVudGx5IGFsc28KK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVO VExZIGF1eF9pbmRleF9pbmQ2X2NjYXV4OworLS0gVGhpcyBtYWtlcyB0aGUgcHJldmlvdXMgZmFp bHVyZSBnbyBhd2F5LCBzbyB0aGUgaW5kZXggY2FuIGJlY29tZSB2YWxpZC4KK0RFTEVURSBGUk9N IGNvbmN1cl9yZWluZGV4X3RhYjQgV0hFUkUgYzEgPSAxOworLS0gU2hvdWxkIGJlIHNraXBwZWQg ZHVyaW5nIHJlaW5kZXgKK1JFSU5ERVggVEFCTEUgYXV4X2luZGV4X3RhYjU7CistLSBTaG91bGQg YmUgc2tpcHBlZCBkdXJpbmcgY29uY3VycmVudCByZWluZGV4CitSRUlOREVYIFRBQkxFIENPTkNV UlJFTlRMWSBhdXhfaW5kZXhfdGFiNTsKK0RST1AgVEFCTEUgYXV4X2luZGV4X3RhYjU7CisKIC0t IENoZWNrIGhhbmRsaW5nIG9mIGluZGV4ZXMgd2l0aCBleHByZXNzaW9ucyBhbmQgcHJlZGljYXRl cy4gIFRoZQogLS0gZGVmaW5pdGlvbnMgb2YgdGhlIHJlYnVpbHQgaW5kZXhlcyBzaG91bGQgbWF0 Y2ggdGhlIG9yaWdpbmFsCiAtLSBkZWZpbml0aW9ucy4KLS0gCjIuNDMuMAoK --0000000000007d5b96062e941445 Content-Type: text/x-patch; charset="US-ASCII"; name="v15-0009-Concurrently-built-index-validation-uses-fresh-s.patch" Content-Disposition: attachment; filename="v15-0009-Concurrently-built-index-validation-uses-fresh-s.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m7dgd9ir8 RnJvbSA5Y2JmMGI2OWE3Yjk3ZTIyMjMzNWY2ZDIyNjVhYTEzYWRmOWNhYjI5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxtaWNoYWlsLm5pa29sYWV2QGdtYWlsLmNvbT4KRGF0 ZTogU2F0LCAyNSBKYW4gMjAyNSAxNzoyMToyOSArMDEwMApTdWJqZWN0OiBbUEFUQ0ggdjE1IDA5 LzEyXSBDb25jdXJyZW50bHkgYnVpbHQgaW5kZXggdmFsaWRhdGlvbiB1c2VzIGZyZXNoCiBzbmFw c2hvdHMKClRoaXMgY29tbWl0IG1vZGlmaWVzIHRoZSB2YWxpZGF0aW9uIHByb2Nlc3MgZm9yIGNv bmN1cnJlbnRseSBidWlsdCBpbmRleGVzIHRvIHVzZSBmcmVzaCBzbmFwc2hvdHMgaW5zdGVhZCBv ZiBhIHNpbmdsZSByZWZlcmVuY2Ugc25hcHNob3QuCgpUaGUgcHJldmlvdXMgYXBwcm9hY2ggb2Yg dXNpbmcgYSBzaW5nbGUgcmVmZXJlbmNlIHNuYXBzaG90IGNvdWxkIGxlYWQgdG8gaXNzdWVzIHdp dGggeG1pbiBwcm9wYWdhdGlvbi4gU3BlY2lmaWNhbGx5LCBpZiB0aGUgaW5kZXggYnVpbGQgdG9v ayBhIGxvbmcgdGltZSwgdGhlIHJlZmVyZW5jZSBzbmFwc2hvdCdzIHhtaW4gY291bGQgYmVjb21l IG91dGRhdGVkLCBjYXVzaW5nIHRoZSBpbmRleCB0byBtaXNzIHR1cGxlcyB0aGF0IHdlcmUgZGVs ZXRlZCBieSB0cmFuc2FjdGlvbnMgdGhhdCBjb21taXR0ZWQgYWZ0ZXIgdGhlIHJlZmVyZW5jZSBz bmFwc2hvdCB3YXMgdGFrZW4uCgpUbyBhZGRyZXNzIHRoaXMsIHRoZSB2YWxpZGF0aW9uIHByb2Nl c3Mgbm93IHBlcmlvZGljYWxseSByZXBsYWNlcyB0aGUgc25hcHNob3Qgd2l0aCBhIG5ld2VyIG9u ZS4gVGhpcyBlbnN1cmVzIHRoYXQgdGhlIGluZGV4J3MgeG1pbiBpcyBrZXB0IHVwLXRvLWRhdGUg YW5kIHRoYXQgYWxsIHJlbGV2YW50IHR1cGxlcyBhcmUgaW5jbHVkZWQgaW4gdGhlIGluZGV4Lgot LS0KIGRvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX2luZGV4LnNnbWwgICAgICAgfCAxMSArKystCiBk b2Mvc3JjL3NnbWwvcmVmL3JlaW5kZXguc2dtbCAgICAgICAgICAgIHwgMTEgKystLQogc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYyB8IDc3ICsrKysrKysrKysrKysrKy0t LS0tLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMgICAgICB8ICAyICst CiBzcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3ZhY3V1bS5jICAgIHwgMTIgKysrLQogc3Jj L2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jICAgICAgICAgICAgICB8IDE0ICsrKy0tCiBzcmMvYmFj a2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYyAgICAgICAgIHwgIDIgKy0KIHNyYy9pbmNsdWRlL2Fj Y2Vzcy90cmFuc2FtLmggICAgICAgICAgICAgfCAxNSArKysrKwogOCBmaWxlcyBjaGFuZ2VkLCA5 NyBpbnNlcnRpb25zKCspLCA0NyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3Nn bWwvcmVmL2NyZWF0ZV9pbmRleC5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfaW5kZXgu c2dtbAppbmRleCBlMzMzNDVmNmEzNC4uNTQ1NjYyMjNjYjAgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMv c2dtbC9yZWYvY3JlYXRlX2luZGV4LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVf aW5kZXguc2dtbApAQCAtODY4LDkgKzg2OCwxNCBAQCBJbmRleGVzOgogICA8L3BhcmE+CiAKICAg PHBhcmE+Ci0gICBMaWtlIGFueSBsb25nLXJ1bm5pbmcgdHJhbnNhY3Rpb24sIDxjb21tYW5kPkNS RUFURSBJTkRFWDwvY29tbWFuZD4gb24gYQotICAgdGFibGUgY2FuIGFmZmVjdCB3aGljaCB0dXBs ZXMgY2FuIGJlIHJlbW92ZWQgYnkgY29uY3VycmVudAotICAgPGNvbW1hbmQ+VkFDVVVNPC9jb21t YW5kPiBvbiBhbnkgb3RoZXIgdGFibGUuCisgICBEdWUgdG8gdGhlIGltcHJvdmVkIGltcGxlbWVu dGF0aW9uIHVzaW5nIHBlcmlvZGljYWxseSByZWZyZXNoZWQgc25hcHNob3RzIGFuZAorICAgYXV4 aWxpYXJ5IGluZGV4ZXMsIGNvbmN1cnJlbnQgaW5kZXggYnVpbGRzIGhhdmUgbWluaW1hbCBpbXBh Y3Qgb24gY29uY3VycmVudAorICAgPGNvbW1hbmQ+VkFDVVVNPC9jb21tYW5kPiBvcGVyYXRpb25z LiBUaGUgc3lzdGVtIGF1dG9tYXRpY2FsbHkgYWR2YW5jZXMgaXRzCisgICBpbnRlcm5hbCB0cmFu c2FjdGlvbiBob3Jpem9uIGR1cmluZyB0aGUgYnVpbGQgcHJvY2VzcywgYWxsb3dpbmcKKyAgIDxj b21tYW5kPlZBQ1VVTTwvY29tbWFuZD4gdG8gcmVtb3ZlIGRlYWQgdHVwbGVzIG9uIG90aGVyIHRh YmxlcyB3aXRob3V0CisgICBoYXZpbmcgdG8gd2FpdCBmb3IgdGhlIGVudGlyZSBpbmRleCBidWls ZCB0byBjb21wbGV0ZS4gT25seSBkdXJpbmcgdmVyeSBicmllZgorICAgcGVyaW9kcyB3aGVuIHNu YXBzaG90cyBhcmUgYmVpbmcgcmVmcmVzaGVkIG1pZ2h0IHRoZXJlIGJlIGFueSB0ZW1wb3Jhcnkg ZWZmZWN0CisgICBvbiBjb25jdXJyZW50IDxjb21tYW5kPlZBQ1VVTTwvY29tbWFuZD4gb3BlcmF0 aW9ucy4KICAgPC9wYXJhPgogCiAgIDxwYXJhPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3Jl Zi9yZWluZGV4LnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL3JlaW5kZXguc2dtbAppbmRleCA2YTA1 NjIwYmQ2Ny4uNjRjNjMzZTAzOTggMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvcmVpbmRl eC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvcmVpbmRleC5zZ21sCkBAIC00OTUsMTAgKzQ5 NSwxMyBAQCBJbmRleGVzOgogICAgPC9wYXJhPgogCiAgICA8cGFyYT4KLSAgICBMaWtlIGFueSBs b25nLXJ1bm5pbmcgdHJhbnNhY3Rpb24sIDxjb21tYW5kPlJFSU5ERVg8L2NvbW1hbmQ+IG9uIGEg dGFibGUKLSAgICBjYW4gYWZmZWN0IHdoaWNoIHR1cGxlcyBjYW4gYmUgcmVtb3ZlZCBieSBjb25j dXJyZW50Ci0gICAgPGNvbW1hbmQ+VkFDVVVNPC9jb21tYW5kPiBvbiBhbnkgb3RoZXIgdGFibGUu Ci0gICA8L3BhcmE+CisgICAgPGNvbW1hbmQ+UkVJTkRFWCBDT05DVVJSRU5UTFk8L2NvbW1hbmQ+ IGhhcyBtaW5pbWFsCisgICAgaW1wYWN0IG9uIHdoaWNoIHR1cGxlcyBjYW4gYmUgcmVtb3ZlZCBi eSBjb25jdXJyZW50IDxjb21tYW5kPlZBQ1VVTTwvY29tbWFuZD4KKyAgICBvcGVyYXRpb25zIG9u IG90aGVyIHRhYmxlcy4gVGhpcyBpcyBhY2hpZXZlZCB0aHJvdWdoIHBlcmlvZGljIHNuYXBzaG90 CisgICAgcmVmcmVzaGVzIGFuZCB0aGUgdXNlIG9mIGF1eGlsaWFyeSBpbmRleGVzIGR1cmluZyB0 aGUgcmVidWlsZCBwcm9jZXNzLAorICAgIGFsbG93aW5nIHRoZSBzeXN0ZW0gdG8gYWR2YW5jZSBp dHMgdHJhbnNhY3Rpb24gaG9yaXpvbiByZWd1bGFybHkgcmF0aGVyIHRoYW4KKyAgICBtYWludGFp bmluZyBhIHNpbmdsZSBsb25nLXJ1bm5pbmcgc25hcHNob3QuCisgIDwvcGFyYT4KIAogICAgPHBh cmE+CiAgICAgPGNvbW1hbmQ+UkVJTkRFWCBTWVNURU08L2NvbW1hbmQ+IGRvZXMgbm90IHN1cHBv cnQKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCmluZGV4IDdlYmFiMDky MmE5Li41OWZmYzljZjRmNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVh cGFtX2hhbmRsZXIuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxl ci5jCkBAIC0xNzkxLDggKzE3OTEsOCBAQCBoZWFwYW1faW5kZXhfYnVpbGRfcmFuZ2Vfc2NhbihS ZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAgKi8KIHN0YXRpYyBpbnQKIGhlYXBhbV9pbmRleF92YWxp ZGF0ZV90dXBsZXNvcnRfZGlmZmVyZW5jZShUdXBsZXNvcnRzdGF0ZSAgKm1haW4sCi0JCQkJCQkJ CQkJICAgVHVwbGVzb3J0c3RhdGUgICphdXgsCi0JCQkJCQkJCQkJICAgVHVwbGVzdG9yZXN0YXRl ICpzdG9yZSkKKwkJCQkJCQkJCSAgVHVwbGVzb3J0c3RhdGUgICphdXgsCisJCQkJCQkJCQkgIFR1 cGxlc3RvcmVzdGF0ZSAqc3RvcmUpCiB7CiAJaW50CQkJCW51bSA9IDA7CiAJLyogc3RhdGUgdmFy aWFibGVzIGZvciB0aGUgbWVyZ2UgKi8KQEAgLTIwNDgsNyArMjA0OCw4IEBAIGhlYXBhbV9pbmRl eF92YWxpZGF0ZV9zY2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAlFeHByQ29udGV4dAkJKmVj b250ZXh0OwogCUJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IGJzdHJhdGVneSA9IEdldEFjY2Vzc1N0cmF0 ZWd5KEJBU19CVUxLUkVBRCk7CiAKLQlpbnQJCQkJbnVtX3RvX2NoZWNrOworCWludAkJCQludW1f dG9fY2hlY2ssCisJCQkJCXBhZ2VfcmVhZF9jb3VudGVyID0gMTsgLyogc2V0IHRvIDEgdG8gc2tp cCBzbmFwc2hvdCByZXNlcnQgYXQgc3RhcnQgKi8KIAlUdXBsZXN0b3Jlc3RhdGUgKnR1cGxlc19m b3JfY2hlY2s7CiAJVmFsaWRhdGVJbmRleFNjYW5TdGF0ZSBjYWxsYmFja19wcml2YXRlX2RhdGE7 CiAKQEAgLTIwNTksOSArMjA2MCwzNSBAQCBoZWFwYW1faW5kZXhfdmFsaWRhdGVfc2NhbihSZWxh dGlvbiBoZWFwUmVsYXRpb24sCiAJLyogVXNlIDEwJSBvZiBtZW1vcnkgZm9yIHR1cGxlIHN0b3Jl LiAqLwogCWludAkJc3RvcmVfd29ya19tZW1fcGFydCA9IG1haW50ZW5hbmNlX3dvcmtfbWVtIC8g MTA7CiAKKwlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKKwor CXR1cGxlc19mb3JfY2hlY2sgPSAgdHVwbGVzdG9yZV9iZWdpbl9kYXR1bShJTlQ4T0lELCBmYWxz ZSwgZmFsc2UsIHN0b3JlX3dvcmtfbWVtX3BhcnQpOworCisJUG9wQWN0aXZlU25hcHNob3QoKTsK KwlJbnZhbGlkYXRlQ2F0YWxvZ1NuYXBzaG90KCk7CisKKwlBc3NlcnQoIUhhdmVSZWdpc3RlcmVk T3JBY3RpdmVTbmFwc2hvdCgpKTsKKwlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJv Yy0+eG1pbikpOworCiAJLyoKLQkgKiBOb3cgdGFrZSB0aGUgc25hcHNob3QgdGhhdCB3aWxsIGJl IHVzZWQgYnkgdG8gZmlsdGVyIGNhbmRpZGF0ZQotCSAqIHR1cGxlcy4KKwkgKiBzYW5pdHkgY2hl Y2tzCisJICovCisJQXNzZXJ0KE9pZElzVmFsaWQoaW5kZXhSZWxhdGlvbi0+cmRfcmVsLT5yZWxh bSkpOworCisJbnVtX3RvX2NoZWNrID0gaGVhcGFtX2luZGV4X3ZhbGlkYXRlX3R1cGxlc29ydF9k aWZmZXJlbmNlKHN0YXRlLT50dXBsZXNvcnQsCisJCQkJCQkJCQkJCQkJCQkgIGF1eFN0YXRlLT50 dXBsZXNvcnQsCisJCQkJCQkJCQkJCQkJCQkgIHR1cGxlc19mb3JfY2hlY2spOworCisJLyogSXQg aXMgb3VyIHJlc3BvbnNpYmlsaXR5IHRvIHNsb2UgdHVwbGUgc29ydCBhcyBmYXN0IGFzIHdlIGNh biAqLworCXR1cGxlc29ydF9lbmQoc3RhdGUtPnR1cGxlc29ydCk7CisJdHVwbGVzb3J0X2VuZChh dXhTdGF0ZS0+dHVwbGVzb3J0KTsKKworCXN0YXRlLT50dXBsZXNvcnQgPSBhdXhTdGF0ZS0+dHVw bGVzb3J0ID0gTlVMTDsKKworCS8qCisJICogTm93IHRha2UgdGhlIGZpcnN0IHNuYXBzaG90IHRo YXQgd2lsbCBiZSB1c2VkIGJ5IHRvIGZpbHRlciBjYW5kaWRhdGUKKwkgKiB0dXBsZXMuIFdlIGFy ZSBnb2luZyB0byByZXBsYWNlIGl0IGJ5IG5ld2VyIHNuYXBzaG90IGV2ZXJ5IHNvIG9mdGVuCisJ ICogdG8gcHJvcGFnYXRlIGhvcml6b24uCiAJICoKIAkgKiBCZXdhcmUhICBUaGVyZSBtaWdodCBz dGlsbCBiZSBzbmFwc2hvdHMgaW4gdXNlIHRoYXQgdHJlYXQgc29tZSB0cmFuc2FjdGlvbgogCSAq IGFzIGluLXByb2dyZXNzIHRoYXQgb3VyIHRlbXBvcmFyeSBzbmFwc2hvdCB0cmVhdHMgYXMgY29t bWl0dGVkLgpAQCAtMjA3NywzMyArMjEwNCwxMCBAQCBoZWFwYW1faW5kZXhfdmFsaWRhdGVfc2Nh bihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJICogV2UgYWxzbyBzZXQgQWN0aXZlU25hcHNob3Qg dG8gdGhpcyBzbmFwLCBzaW5jZSBmdW5jdGlvbnMgaW4gaW5kZXhlcyBtYXkKIAkgKiBuZWVkIGEg c25hcHNob3QuCiAJICovCi0Jc25hcHNob3QgPSBSZWdpc3RlclNuYXBzaG90KEdldFRyYW5zYWN0 aW9uU25hcHNob3QoKSk7CisJc25hcHNob3QgPSBSZWdpc3RlclNuYXBzaG90KEdldExhdGVzdFNu YXBzaG90KCkpOwogCVB1c2hBY3RpdmVTbmFwc2hvdChzbmFwc2hvdCk7CiAJbGltaXRYbWluID0g c25hcHNob3QtPnhtaW47CiAKLQkvKgotCSAqIEVuY29kZSBUSURzIGFzIGludDggdmFsdWVzIGZv ciB0aGUgc29ydCwgcmF0aGVyIHRoYW4gZGlyZWN0bHkgc29ydGluZwotCSAqIGl0ZW0gcG9pbnRl cnMuICBUaGlzIGNhbiBiZSBzaWduaWZpY2FudGx5IGZhc3RlciwgcHJpbWFyaWx5IGJlY2F1c2Ug VElECi0JICogaXMgYSBwYXNzLWJ5LXJlZmVyZW5jZSB0eXBlIG9uIGFsbCBwbGF0Zm9ybXMsIHdo ZXJlYXMgaW50OCBpcwotCSAqIHBhc3MtYnktdmFsdWUgb24gbW9zdCBwbGF0Zm9ybXMuCi0JICov Ci0JdHVwbGVzX2Zvcl9jaGVjayA9ICB0dXBsZXN0b3JlX2JlZ2luX2RhdHVtKElOVDhPSUQsIGZh bHNlLCBmYWxzZSwgc3RvcmVfd29ya19tZW1fcGFydCk7Ci0KLQkvKgotCSAqIHNhbml0eSBjaGVj a3MKLQkgKi8KLQlBc3NlcnQoT2lkSXNWYWxpZChpbmRleFJlbGF0aW9uLT5yZF9yZWwtPnJlbGFt KSk7Ci0KLQludW1fdG9fY2hlY2sgPSBoZWFwYW1faW5kZXhfdmFsaWRhdGVfdHVwbGVzb3J0X2Rp ZmZlcmVuY2Uoc3RhdGUtPnR1cGxlc29ydCwKLQkJCQkJCQkJCQkJCQkJIGF1eFN0YXRlLT50dXBs ZXNvcnQsCi0JCQkJCQkJCQkJCQkJCSB0dXBsZXNfZm9yX2NoZWNrKTsKLQotCS8qIEl0IGlzIG91 ciByZXNwb25zaWJpbGl0eSB0byBzbG9lIHR1cGxlIHNvcnQgYXMgZmFzdCBhcyB3ZSBjYW4gKi8K LQl0dXBsZXNvcnRfZW5kKHN0YXRlLT50dXBsZXNvcnQpOwotCXR1cGxlc29ydF9lbmQoYXV4U3Rh dGUtPnR1cGxlc29ydCk7Ci0KLQlzdGF0ZS0+dHVwbGVzb3J0ID0gYXV4U3RhdGUtPnR1cGxlc29y dCA9IE5VTEw7Ci0KIAllc3RhdGUgPSBDcmVhdGVFeGVjdXRvclN0YXRlKCk7CiAJZWNvbnRleHQg PSBHZXRQZXJUdXBsZUV4cHJDb250ZXh0KGVzdGF0ZSk7CiAJc2xvdCA9IE1ha2VTaW5nbGVUdXBs ZVRhYmxlU2xvdChSZWxhdGlvbkdldERlc2NyKGhlYXBSZWxhdGlvbiksCkBAIC0yMTQwLDYgKzIx NDQsNyBAQCBoZWFwYW1faW5kZXhfdmFsaWRhdGVfc2NhbihSZWxhdGlvbiBoZWFwUmVsYXRpb24s CiAKIAkJTG9ja0J1ZmZlcihidWYsIEJVRkZFUl9MT0NLX1NIQVJFKTsKIAkJYmxvY2tfbnVtYmVy ID0gQnVmZmVyR2V0QmxvY2tOdW1iZXIoYnVmKTsKKwkJcGFnZV9yZWFkX2NvdW50ZXIrKzsKIAog CQlpID0gMDsKIAkJd2hpbGUgKChvZmYgPSB0dXBsZXNbaV0pICE9IEludmFsaWRPZmZzZXROdW1i ZXIpCkBAIC0yMTk0LDYgKzIxOTksMjAgQEAgaGVhcGFtX2luZGV4X3ZhbGlkYXRlX3NjYW4oUmVs YXRpb24gaGVhcFJlbGF0aW9uLAogCQl9CiAKIAkJUmVsZWFzZUJ1ZmZlcihidWYpOworCisJCWlm IChwYWdlX3JlYWRfY291bnRlciAlIFNPX1JFU0VUX1NOQVBTSE9UX0VBQ0hfTl9QQUdFID09IDAp CisJCXsKKwkJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CisJCQlVbnJlZ2lzdGVyU25hcHNob3Qoc25h cHNob3QpOworCQkJLyogdG8gbWFrZSBzdXJlIHdlIHByb3BhZ2F0ZSB4bWluICovCisJCQlJbnZh bGlkYXRlQ2F0YWxvZ1NuYXBzaG90KCk7CisJCQlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlk KE15UHJvYy0+eG1pbikpOworCisJCQlzbmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3QoR2V0TGF0 ZXN0U25hcHNob3QoKSk7CisJCQlQdXNoQWN0aXZlU25hcHNob3Qoc25hcHNob3QpOworCQkJLyog eG1pbiBzaG91bGQgbm90IGdvIGJhY2t3YXJkcywgYnV0IGp1c3QgZm9yIHRoZSBjYXNlKi8KKwkJ CWxpbWl0WG1pbiA9IFRyYW5zYWN0aW9uSWROZXdlcihsaW1pdFhtaW4sIHNuYXBzaG90LT54bWlu KTsKKwkJfQogCX0KIAogCUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3Qoc2xvdCk7CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jCmluZGV4IDhiMjM2YzhjY2Q2Li42MmU5NzUwMTZhZCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMKKysrIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMKQEAgLTQ0NCw3ICs0NDQsNyBAQCBfYnRf c3Bvb2xzX2hlYXBzY2FuKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBCVEJ1aWxkU3Rh dGUgKmJ1aWxkc3RhdGUsCiAJICogZGVhZCB0dXBsZXMpIHdvbid0IGdldCB2ZXJ5IGZ1bGwsIHNv IHdlIGdpdmUgaXQgb25seSB3b3JrX21lbS4KIAkgKgogCSAqIEluIGNhc2Ugb2YgY29uY3VycmVu dCBidWlsZCBkZWFkIHR1cGxlcyBhcmUgbm90IG5lZWQgdG8gYmUgcHV0IGludG8gaW5kZXgKLQkg KiBzaW5jZSB3ZSB3YWl0IGZvciBhbGwgc25hcHNob3RzIG9sZGVyIHRoYW4gcmVmZXJlbmNlIHNu YXBzaG90IGR1cmluZyB0aGUKKwkgKiBzaW5jZSB3ZSB3YWl0IGZvciBhbGwgc25hcHNob3RzIG9s ZGVyIHRoYW4gbGF0ZXN0IHNuYXBzaG90IGR1cmluZyB0aGUKIAkgKiB2YWxpZGF0aW9uIHBoYXNl LgogCSAqLwogCWlmIChpbmRleEluZm8tPmlpX1VuaXF1ZSAmJiAhaW5kZXhJbmZvLT5paV9Db25j dXJyZW50KQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd2YWN1dW0u YyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BndmFjdXVtLmMKaW5kZXggZWVkZGFjZDBk NTIuLjQxMzBlNDlkZDk4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3Nw Z3ZhY3V1bS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BndmFjdXVtLmMKQEAg LTE5MCwxNCArMTkwLDE2IEBAIHZhY3V1bUxlYWZQYWdlKHNwZ0J1bGtEZWxldGVTdGF0ZSAqYmRz LCBSZWxhdGlvbiBpbmRleCwgQnVmZmVyIGJ1ZmZlciwKIAkJCSAqIEFkZCB0YXJnZXQgVElEIHRv IHBlbmRpbmcgbGlzdCBpZiB0aGUgcmVkaXJlY3Rpb24gY291bGQgaGF2ZQogCQkJICogaGFwcGVu ZWQgc2luY2UgVkFDVVVNIHN0YXJ0ZWQuICAoSWYgeGlkIGlzIGludmFsaWQsIGFzc3VtZSBpdAog CQkJICogbXVzdCBoYXZlIGhhcHBlbmVkIGJlZm9yZSBWQUNVVU0gc3RhcnRlZCwgc2luY2UgUkVJ TkRFWAotCQkJICogQ09OQ1VSUkVOVExZIGxvY2tzIG91dCBWQUNVVU0uKQorCQkJICogQ09OQ1VS UkVOVExZIGxvY2tzIG91dCBWQUNVVU0sIGlmIG15WG1pbiBpcyBpbnZhbGlkIGl0IGlzCisJCQkg KiB2YWxpZGF0aW9uIHNjYW4uKQogCQkJICoKIAkJCSAqIE5vdGU6IHdlIGNvdWxkIG1ha2UgYSB0 aWdodGVyIHRlc3QgYnkgc2VlaW5nIGlmIHRoZSB4aWQgaXMKIAkJCSAqICJydW5uaW5nIiBhY2Nv cmRpbmcgdG8gdGhlIGFjdGl2ZSBzbmFwc2hvdDsgYnV0IHNuYXBtZ3IuYwogCQkJICogZG9lc24n dCBjdXJyZW50bHkgZXhwb3J0IGEgc3VpdGFibGUgQVBJLCBhbmQgaXQncyBub3QgZW50aXJlbHkK IAkJCSAqIGNsZWFyIHRoYXQgYSB0aWdodGVyIHRlc3QgaXMgd29ydGggdGhlIGN5Y2xlcyBhbnl3 YXkuCiAJCQkgKi8KLQkJCWlmIChUcmFuc2FjdGlvbklkRm9sbG93c09yRXF1YWxzKGR0LT54aWQs IGJkcy0+bXlYbWluKSkKKwkJCWlmICghVHJhbnNhY3Rpb25JZElzVmFsaWQoYmRzLT5teVhtaW4p IHx8CisJCQkJCVRyYW5zYWN0aW9uSWRGb2xsb3dzT3JFcXVhbHMoZHQtPnhpZCwgYmRzLT5teVht aW4pKQogCQkJCXNwZ0FkZFBlbmRpbmdUSUQoYmRzLCAmZHQtPnBvaW50ZXIpOwogCQl9CiAJCWVs c2UKQEAgLTgxMSw3ICs4MTMsNiBAQCBzcGd2YWN1dW1zY2FuKHNwZ0J1bGtEZWxldGVTdGF0ZSAq YmRzKQogCS8qIEZpbmlzaCBzZXR0aW5nIHVwIHNwZ0J1bGtEZWxldGVTdGF0ZSAqLwogCWluaXRT cEdpc3RTdGF0ZSgmYmRzLT5zcGdzdGF0ZSwgaW5kZXgpOwogCWJkcy0+cGVuZGluZ0xpc3QgPSBO VUxMOwotCWJkcy0+bXlYbWluID0gR2V0QWN0aXZlU25hcHNob3QoKS0+eG1pbjsKIAliZHMtPmxh c3RGaWxsZWRCbG9jayA9IFNQR0lTVF9MQVNUX0ZJWEVEX0JMS05POwogCiAJLyoKQEAgLTkyNSw2 ICs5MjYsMTAgQEAgc3BnYnVsa2RlbGV0ZShJbmRleFZhY3V1bUluZm8gKmluZm8sIEluZGV4QnVs a0RlbGV0ZVJlc3VsdCAqc3RhdHMsCiAJYmRzLnN0YXRzID0gc3RhdHM7CiAJYmRzLmNhbGxiYWNr ID0gY2FsbGJhY2s7CiAJYmRzLmNhbGxiYWNrX3N0YXRlID0gY2FsbGJhY2tfc3RhdGU7CisJaWYg KGluZm8tPnZhbGlkYXRlX2luZGV4KQorCQliZHMubXlYbWluID0gSW52YWxpZFRyYW5zYWN0aW9u SWQ7CisJZWxzZQorCQliZHMubXlYbWluID0gR2V0QWN0aXZlU25hcHNob3QoKS0+eG1pbjsKIAog CXNwZ3ZhY3V1bXNjYW4oJmJkcyk7CiAKQEAgLTk2NSw2ICs5NzAsNyBAQCBzcGd2YWN1dW1jbGVh bnVwKEluZGV4VmFjdXVtSW5mbyAqaW5mbywgSW5kZXhCdWxrRGVsZXRlUmVzdWx0ICpzdGF0cykK IAkJYmRzLnN0YXRzID0gc3RhdHM7CiAJCWJkcy5jYWxsYmFjayA9IGR1bW15X2NhbGxiYWNrOwog CQliZHMuY2FsbGJhY2tfc3RhdGUgPSBOVUxMOworCQliZHMubXlYbWluID0gR2V0QWN0aXZlU25h cHNob3QoKS0+eG1pbjsKIAogCQlzcGd2YWN1dW1zY2FuKCZiZHMpOwogCX0KZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXgu YwppbmRleCBkZWI0OGU5N2RkNC4uY2NhNjE2NTMzOWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2NhdGFsb2cvaW5kZXguYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKQEAgLTM0 ODAsOCArMzQ4MCw5IEBAIEluZGV4Q2hlY2tFeGNsdXNpb24oUmVsYXRpb24gaGVhcFJlbGF0aW9u LAogICogaW5zZXJ0IHRoZWlyIG5ldyB0dXBsZXMgaW50byBpdC4gQXQgdGhlIHNhbWUgbW9tZW50 IHdlIGNsZWFyICJpbmRpc3JlYWR5IiBmb3IKICAqIGF1eGlsaWFyeSBpbmRleCwgc2luY2UgaXQg aXMgbm8gbW9yZSByZXF1aXJlZC4KICAqCi0gKiBXZSB0aGVuIHRha2UgYSBuZXcgcmVmZXJlbmNl IHNuYXBzaG90LCBhbnkgdHVwbGVzIHRoYXQgYXJlIHZhbGlkIGFjY29yZGluZwotICogdG8gdGhp cyBzbmFwLCBidXQgYXJlIG5vdCBpbiB0aGUgaW5kZXgsIG11c3QgYmUgYWRkZWQgdG8gdGhlIGlu ZGV4LgorICogV2UgdGhlbiB0YWtlIGEgbmV3IHNuYXBzaG90LCBhbnkgdHVwbGVzIHRoYXQgYXJl IHZhbGlkIGFjY29yZGluZworICogdG8gdGhpcyBzbmFwLCBidXQgYXJlIG5vdCBpbiB0aGUgaW5k ZXgsIG11c3QgYmUgYWRkZWQgdG8gdGhlIGluZGV4LiBJbgorICogb3JkZXIgdG8gcHJvcGFnYXRl IHhtaW4gd2UgcmVzZXQgdGhhdCBzbmFwc2hvdCBldmVyeSBmZXcgc28gb2Z0ZW4uCiAgKiAoQW55 IHR1cGxlcyBjb21taXR0ZWQgbGl2ZSBhZnRlciB0aGUgc25hcCB3aWxsIGJlIGluc2VydGVkIGlu dG8gdGhlCiAgKiBpbmRleCBieSB0aGVpciBvcmlnaW5hdGluZyB0cmFuc2FjdGlvbi4gIEFueSB0 dXBsZXMgY29tbWl0dGVkIGRlYWQgYmVmb3JlCiAgKiB0aGUgc25hcCBuZWVkIG5vdCBiZSBpbmRl eGVkLCBiZWNhdXNlIHdlIHdpbGwgd2FpdCBvdXQgYWxsIHRyYW5zYWN0aW9ucwpAQCAtMzQ5NCw3 ICszNDk1LDcgQEAgSW5kZXhDaGVja0V4Y2x1c2lvbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAg KiBUSURzIG9mIGJvdGggYXV4aWxpYXJ5IGFuZCB0YXJnZXQgaW5kZXhlcywgYW5kIGRvaW5nIGEg Im1lcmdlIGpvaW4iIGFnYWluc3QKICAqIHRoZSBUSUQgbGlzdHMgdG8gc2VlIHdoaWNoIHR1cGxl cyBmcm9tIGF1eGlsaWFyeSBpbmRleCBhcmUgbWlzc2luZyBmcm9tIHRoZQogICogdGFyZ2V0IGlu ZGV4LiAgVGh1cyB3ZSB3aWxsIGVuc3VyZSB0aGF0IGFsbCB0dXBsZXMgdmFsaWQgYWNjb3JkaW5n IHRvIHRoZQotICogcmVmZXJlbmNlIHNuYXBzaG90IGFyZSBpbiB0aGUgaW5kZXguIE5vdGljZSB3 ZSBuZWVkIHRvIGRvIGJ1bGtkZWxldGUgaW4gdGhlCisgKiBsYXRlc3Qgc25hcHNob3QgYXJlIGlu IHRoZSBpbmRleC4gTm90aWNlIHdlIG5lZWQgdG8gZG8gYnVsa2RlbGV0ZSBpbiB0aGUKICAqIHBh cnRpY3VsYXIgb3JkZXI6IGF1eGlsaWFyeSBmaXJzdCwgdGFyZ2V0IGxhc3QuCiAgKgogICogQnVp bGRpbmcgYSB1bmlxdWUgaW5kZXggdGhpcyB3YXkgaXMgdHJpY2t5OiB3ZSBtaWdodCB0cnkgdG8g aW5zZXJ0IGEKQEAgLTM1NzcsNiArMzU3OCw3IEBAIHZhbGlkYXRlX2luZGV4KE9pZCBoZWFwSWQs IE9pZCBpbmRleElkLCBPaWQgYXV4SW5kZXhJZCkKIAkgKi8KIAlQdXNoQWN0aXZlU25hcHNob3Qo R2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKIAlpbmRleEluZm8gPSBCdWlsZEluZGV4SW5mbyhp bmRleFJlbGF0aW9uKTsKKwlQb3BBY3RpdmVTbmFwc2hvdCgpOwogCiAJLyogbWFyayBidWlsZCBp cyBjb25jdXJyZW50IGp1c3QgZm9yIGNvbnNpc3RlbmN5ICovCiAJaW5kZXhJbmZvLT5paV9Db25j dXJyZW50ID0gdHJ1ZTsKQEAgLTM2MTIsNiArMzYxNCw5IEBAIHZhbGlkYXRlX2luZGV4KE9pZCBo ZWFwSWQsIE9pZCBpbmRleElkLCBPaWQgYXV4SW5kZXhJZCkKIAkJCQkJCQkJCQkgICBOVUxMLCBU VVBMRVNPUlRfTk9ORSk7CiAJYXV4U3RhdGUuaHR1cHMgPSBhdXhTdGF0ZS5pdHVwcyA9IGF1eFN0 YXRlLnR1cHNfaW5zZXJ0ZWQgPSAwOwogCisJLyogdHVwbGVzb3J0X2JlZ2luX2RhdHVtIG1heSBy ZXF1aXJlIGNhdGFsb2cgc25hcHNob3QgKi8KKwlJbnZhbGlkYXRlQ2F0YWxvZ1NuYXBzaG90KCk7 CisKIAkodm9pZCkgaW5kZXhfYnVsa19kZWxldGUoJmF1eGl2aW5mbywgTlVMTCwKIAkJCQkJCQkg dmFsaWRhdGVfaW5kZXhfY2FsbGJhY2ssICZhdXhTdGF0ZSk7CiAKQEAgLTM2NDEsOSArMzY0Niw2 IEBAIHZhbGlkYXRlX2luZGV4KE9pZCBoZWFwSWQsIE9pZCBpbmRleElkLCBPaWQgYXV4SW5kZXhJ ZCkKIAl9CiAJdHVwbGVzb3J0X3BlcmZvcm1zb3J0KHN0YXRlLnR1cGxlc29ydCk7CiAJdHVwbGVz b3J0X3BlcmZvcm1zb3J0KGF1eFN0YXRlLnR1cGxlc29ydCk7Ci0KLQlQb3BBY3RpdmVTbmFwc2hv dCgpOwotCUludmFsaWRhdGVDYXRhbG9nU25hcHNob3QoKTsKIAlBc3NlcnQoIVRyYW5zYWN0aW9u SWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2NvbW1hbmRzL2luZGV4Y21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMK aW5kZXggNjNlZDQ3Y2ZiMjUuLjc4MDVlNDMxNzhmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9j b21tYW5kcy9pbmRleGNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMu YwpAQCAtNDM0OSw3ICs0MzQ5LDcgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0 IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkJLyoKIAkJ ICogVGhlIGluZGV4IGlzIG5vdyB2YWxpZCBpbiB0aGUgc2Vuc2UgdGhhdCBpdCBjb250YWlucyBh bGwgY3VycmVudGx5CiAJCSAqIGludGVyZXN0aW5nIHR1cGxlcy4gIEJ1dCBzaW5jZSBpdCBtaWdo dCBub3QgY29udGFpbiB0dXBsZXMgZGVsZXRlZAotCQkgKiBqdXN0IGJlZm9yZSB0aGUgcmVmZXJl bmNlIHNuYXAgd2FzIHRha2VuLCB3ZSBoYXZlIHRvIHdhaXQgb3V0IGFueQorCQkgKiBqdXN0IGJl Zm9yZSB0aGUgbGF0ZXN0IHNuYXAgd2FzIHRha2VuLCB3ZSBoYXZlIHRvIHdhaXQgb3V0IGFueQog CQkgKiB0cmFuc2FjdGlvbnMgdGhhdCBtaWdodCBoYXZlIG9sZGVyIHNuYXBzaG90cy4KIAkJICoK IAkJICogQmVjYXVzZSB3ZSBkb24ndCB0YWtlIGEgc25hcHNob3Qgb3IgWGlkIGluIHRoaXMgdHJh bnNhY3Rpb24sCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdHJhbnNhbS5oIGIvc3Jj L2luY2x1ZGUvYWNjZXNzL3RyYW5zYW0uaAppbmRleCA3ZDgyY2QyZWI1Ni4uMTVlMzQ1YzdhMTkg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90cmFuc2FtLmgKKysrIGIvc3JjL2luY2x1 ZGUvYWNjZXNzL3RyYW5zYW0uaApAQCAtMzU1LDYgKzM1NSwyMSBAQCBOb3JtYWxUcmFuc2FjdGlv bklkT2xkZXIoVHJhbnNhY3Rpb25JZCBhLCBUcmFuc2FjdGlvbklkIGIpCiAJcmV0dXJuIGI7CiB9 CiAKKy8qIHJldHVybiB0aGUgbmV3ZXIgb2YgdGhlIHR3byBJRHMgKi8KK3N0YXRpYyBpbmxpbmUg VHJhbnNhY3Rpb25JZAorVHJhbnNhY3Rpb25JZE5ld2VyKFRyYW5zYWN0aW9uSWQgYSwgVHJhbnNh Y3Rpb25JZCBiKQoreworCWlmICghVHJhbnNhY3Rpb25JZElzVmFsaWQoYSkpCisJCXJldHVybiBi OworCisJaWYgKCFUcmFuc2FjdGlvbklkSXNWYWxpZChiKSkKKwkJcmV0dXJuIGE7CisKKwlpZiAo VHJhbnNhY3Rpb25JZEZvbGxvd3MoYSwgYikpCisJCXJldHVybiBhOworCXJldHVybiBiOworfQor CiAvKiByZXR1cm4gdGhlIG5ld2VyIG9mIHRoZSB0d28gSURzICovCiBzdGF0aWMgaW5saW5lIEZ1 bGxUcmFuc2FjdGlvbklkCiBGdWxsVHJhbnNhY3Rpb25JZE5ld2VyKEZ1bGxUcmFuc2FjdGlvbklk IGEsIEZ1bGxUcmFuc2FjdGlvbklkIGIpCi0tIAoyLjQzLjAKCg== --0000000000007d5b96062e941445 Content-Type: text/x-patch; charset="US-ASCII"; name="v15-0011-Add-proper-handling-of-auxiliary-indexes-during-.patch" Content-Disposition: attachment; filename="v15-0011-Add-proper-handling-of-auxiliary-indexes-during-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m7dgd9j010 RnJvbSA5Y2I0YTA4ODRiNTk2NzIzMDA3MDc1Y2Y2ZjhmZDk4NmMzZmJlNjE0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxtaWNoYWlsLm5pa29sYWV2QGdtYWlsLmNvbT4KRGF0 ZTogVHVlLCAzMSBEZWMgMjAyNCAxNDozNjozMSArMDEwMApTdWJqZWN0OiBbUEFUQ0ggdjE1IDEx LzEyXSBBZGQgcHJvcGVyIGhhbmRsaW5nIG9mIGF1eGlsaWFyeSBpbmRleGVzIGR1cmluZwogRFJP UC9SRUlOREVYIG9wZXJhdGlvbnMKCkR1cmluZyBjb25jdXJyZW50IGluZGV4IG9wZXJhdGlvbnMs IGFuIGF1eGlsaWFyeSBpbmRleCBtYXkgYmUgY3JlYXRlZCB0byBoZWxwCndpdGggdGhlIHByb2Nl c3MuIEluIGNhc2Ugb2YgZXJyb3IgZHVyaW5nIHRoZSBidWlsZGluZyBwcm9jZXNzIChmb3IgZXhh bXBsZSBpbiBjYXNlIG9mIGluZGV4IGNvbnN0cmFpbnQgdmlvbGF0aW9uKSBzdWNoIGluZGV4ZXMg YmVjYW1lIGp1bmstaW5kZXhlcyB3aXRob3V0IGFueSBmdW5jdGlvbi4gVGhpcyBwYXRjaCBpbXBy b3ZlcyB0aGUgaGFuZGxpbmcgb2Ygc3VjaCBhdXhpbGlhcnkgaW5kZXhlczoKCiogQWRkIGF1eGls aWFyeUZvckluZGV4SWQgcGFyYW1ldGVyIHRvIGluZGV4X2NyZWF0ZSgpIHRvIHRyYWNrIGRlcGVu ZGVuY2llcwoqIEF1dG9tYXRpY2FsbHkgZHJvcCBhdXhpbGlhcnkgaW5kZXhlcyB3aGVuIHRoZSBt YWluIGluZGV4IGlzIGRyb3BwZWQKKiBEZWxldGUganVuayBhdXhpbGlhcnkgaW5kZXhlcyBwcm9w ZXJseSBkdXJpbmcgUkVJTkRFWCBvcGVyYXRpb25zCiogQWRkIHJlZ3Jlc3Npb24gdGVzdHMgdG8g dmVyaWZ5IG5ldyBiZWhhdmlvdXIKLS0tCiBkb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9pbmRleC5z Z21sICAgICAgICAgfCAgMTQgKystCiBkb2Mvc3JjL3NnbWwvcmVmL3JlaW5kZXguc2dtbCAgICAg ICAgICAgICAgfCAgMTkgKystLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9kZXBlbmRlbmN5LmMgICAg ICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMgICAgICAgICAgICAg ICAgfCAgNjQgKysrKysrKysrKy0tLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19kZXBlbmQuYyAg ICAgICAgICAgIHwgIDU3ICsrKysrKysrKysrCiBzcmMvYmFja2VuZC9jYXRhbG9nL3RvYXN0aW5n LmMgICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5j ICAgICAgICAgICB8ICAzNSArKysrKystCiBzcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMu YyAgICAgICAgICAgfCAgNDggKysrKysrKysrLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9kZXBlbmRl bmN5LmggICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaCAgICAg ICAgICAgICAgICB8ICAgMSArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NyZWF0ZV9pbmRl eC5vdXQgfCAxMDUgKysrKysrKysrKysrKysrKysrKy0tCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9j cmVhdGVfaW5kZXguc3FsICAgICAgfCAgNTcgKysrKysrKysrKy0KIDEyIGZpbGVzIGNoYW5nZWQs IDM2MyBpbnNlcnRpb25zKCspLCA0MiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3Jj L3NnbWwvcmVmL2NyZWF0ZV9pbmRleC5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfaW5k ZXguc2dtbAppbmRleCA1NDU2NjIyM2NiMC4uZmI3Y2QxNWY1ZmUgMTAwNjQ0Ci0tLSBhL2RvYy9z cmMvc2dtbC9yZWYvY3JlYXRlX2luZGV4LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVh dGVfaW5kZXguc2dtbApAQCAtNjYxLDEwICs2NjEsMTYgQEAgSW5kZXhlczoKICAgICAiaWR4X2Nj YXV4IiBzdGlyIChjb2wpIElOVkFMSUQKIDwvcHJvZ3JhbWxpc3Rpbmc+CiAKLSAgICBUaGUgcmVj b21tZW5kZWQgcmVjb3ZlcnkKLSAgICBtZXRob2QgaW4gc3VjaCBjYXNlcyBpcyB0byBkcm9wIHRo ZXNlIGluZGV4ZXMgYW5kIHRyeSBhZ2FpbiB0byBwZXJmb3JtCi0gICAgPGNvbW1hbmQ+Q1JFQVRF IElOREVYIENPTkNVUlJFTlRMWTwvY29tbWFuZD4uIChBbm90aGVyIHBvc3NpYmlsaXR5IGlzCi0g ICAgdG8gcmVidWlsZCB0aGUgaW5kZXggd2l0aCA8Y29tbWFuZD5SRUlOREVYIElOREVYIENPTkNV UlJFTlRMWTwvY29tbWFuZD4pLgorICAgIFRoZSByZWNvbW1lbmRlZCByZWNvdmVyeSBtZXRob2Qg aW4gc3VjaCBjYXNlcyBpcyB0byBkcm9wIHRoZSBpbmRleCB3aXRoCisgICAgPGNvbW1hbmQ+RFJP UCBJTkRFWDwvY29tbWFuZD4uIFRoZSBhdXhpbGlhcnkgaW5kZXggKHN1ZmZpeGVkIHdpdGgKKyAg ICA8bGl0ZXJhbD5jY2F1eDwvbGl0ZXJhbD4pIHdpbGwgYmUgYXV0b21hdGljYWxseSBkcm9wcGVk IHdoZW4gdGhlIG1haW4KKyAgICBpbmRleCBpcyBkcm9wcGVkLiBBZnRlciBkcm9wcGluZyB0aGUg aW5kZXhlcywgeW91IGNhbiB0cnkgYWdhaW4gdG8gcGVyZm9ybQorICAgIDxjb21tYW5kPkNSRUFU RSBJTkRFWCBDT05DVVJSRU5UTFk8L2NvbW1hbmQ+LiAoQW5vdGhlciBwb3NzaWJpbGl0eSBpcyB0 bworICAgIHJlYnVpbGQgdGhlIGluZGV4IHdpdGggPGNvbW1hbmQ+UkVJTkRFWCBJTkRFWCBDT05D VVJSRU5UTFk8L2NvbW1hbmQ+LAorICAgIHdoaWNoIHdpbGwgYWxzbyBoYW5kbGUgY2xlYW51cCBv ZiBhbnkgaW52YWxpZCBhdXhpbGlhcnkgaW5kZXhlcy4pCisgICAgSWYgdGhlIG9ubHkgaW52YWxp ZCBpbmRleCBpcyBvbmUgc3VmZml4ZWQgPGxpdGVyYWw+Y2NhdXg8L2xpdGVyYWw+CisgICAgcmVj b21tZW5kZWQgcmVjb3ZlcnkgbWV0aG9kIGlzIGp1c3QgPGxpdGVyYWw+RFJPUCBJTkRFWDwvbGl0 ZXJhbD4KKyAgICBmb3IgdGhhdCBpbmRleC4KICAgIDwvcGFyYT4KIAogICAgPHBhcmE+CmRpZmYg LS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL3JlaW5kZXguc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYv cmVpbmRleC5zZ21sCmluZGV4IDY0YzYzM2UwMzk4Li5jNmRiNWQ1NzE2NyAxMDA2NDQKLS0tIGEv ZG9jL3NyYy9zZ21sL3JlZi9yZWluZGV4LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9yZWlu ZGV4LnNnbWwKQEAgLTQ3NCwxNCArNDc0LDE3IEBAIEluZGV4ZXM6CiA8L3Byb2dyYW1saXN0aW5n PgogCiAgICAgSWYgdGhlIGluZGV4IG1hcmtlZCA8bGl0ZXJhbD5JTlZBTElEPC9saXRlcmFsPiBp cyBzdWZmaXhlZAotICAgIDxsaXRlcmFsPmNjbmV3PC9saXRlcmFsIG9yIDxsaXRlcmFsPmNjYXV4 PC9saXRlcmFsPiwgdGhlbiBpdCBjb3JyZXNwb25kcyB0byB0aGUgdHJhbnNpZW50IG9yIGF1eGls aWFyeQotICAgIGluZGV4IGNyZWF0ZWQgZHVyaW5nIHRoZSBjb25jdXJyZW50IG9wZXJhdGlvbiwg YW5kIHRoZSByZWNvbW1lbmRlZAotICAgIHJlY292ZXJ5IG1ldGhvZCBpcyB0byBkcm9wIHRoZXNl IGluZGV4ZXMgdXNpbmcgPGxpdGVyYWw+RFJPUCBJTkRFWDwvbGl0ZXJhbD4sCi0gICAgdGhlbiBh dHRlbXB0IDxjb21tYW5kPlJFSU5ERVggQ09OQ1VSUkVOVExZPC9jb21tYW5kPiBhZ2Fpbi4KLSAg ICBJZiB0aGUgaW52YWxpZCBpbmRleCBpcyBpbnN0ZWFkIHN1ZmZpeGVkIDxsaXRlcmFsPmNjb2xk PC9saXRlcmFsPiwKLSAgICBpdCBjb3JyZXNwb25kcyB0byB0aGUgb3JpZ2luYWwgaW5kZXggd2hp Y2ggY291bGQgbm90IGJlIGRyb3BwZWQ7Ci0gICAgdGhlIHJlY29tbWVuZGVkIHJlY292ZXJ5IG1l dGhvZCBpcyB0byBqdXN0IGRyb3Agc2FpZCBpbmRleCwgc2luY2UgdGhlCi0gICAgcmVidWlsZCBw cm9wZXIgaGFzIGJlZW4gc3VjY2Vzc2Z1bC4KKyAgICA8bGl0ZXJhbD5jY25ldzwvbGl0ZXJhbD4s IHRoZW4gaXQgY29ycmVzcG9uZHMgdG8gdGhlIHRyYW5zaWVudCBpbmRleAorICAgIGNyZWF0ZWQg ZHVyaW5nIHRoZSBjb25jdXJyZW50IG9wZXJhdGlvbi4gVGhlIHJlY29tbWVuZGVkIHJlY292ZXJ5 CisgICAgbWV0aG9kIGlzIHRvIGRyb3AgaXQgdXNpbmcgPGxpdGVyYWw+RFJPUCBJTkRFWDwvbGl0 ZXJhbD4sIHRoZW4gYXR0ZW1wdAorICAgIDxjb21tYW5kPlJFSU5ERVggQ09OQ1VSUkVOVExZPC9j b21tYW5kPiBhZ2Fpbi4gVGhlIGF1eGlsaWFyeSBpbmRleAorICAgIChzdWZmaXhlZCB3aXRoIDxs aXRlcmFsPmNjYXV4PC9saXRlcmFsPikgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IGRyb3BwZWQKKyAg ICBhbG9uZyB3aXRoIGl0cyBtYWluIGluZGV4LiBJZiB0aGUgaW52YWxpZCBpbmRleCBpcyBpbnN0 ZWFkIHN1ZmZpeGVkCisgICAgPGxpdGVyYWw+Y2NvbGQ8L2xpdGVyYWw+LCBpdCBjb3JyZXNwb25k cyB0byB0aGUgb3JpZ2luYWwgaW5kZXggd2hpY2gKKyAgICBjb3VsZCBub3QgYmUgZHJvcHBlZDsg dGhlIHJlY29tbWVuZGVkIHJlY292ZXJ5IG1ldGhvZCBpcyB0byBqdXN0IGRyb3AKKyAgICBzYWlk IGluZGV4LCBzaW5jZSB0aGUgcmVidWlsZCBwcm9wZXIgaGFzIGJlZW4gc3VjY2Vzc2Z1bC4gSWYg dGhlIG9ubHkKKyAgICBpbnZhbGlkIGluZGV4IGlzIG9uZSBzdWZmaXhlZCA8bGl0ZXJhbD5jY2F1 eDwvbGl0ZXJhbD4gcmVjb21tZW5kZWQKKyAgICByZWNvdmVyeSBtZXRob2QgaXMganVzdCA8bGl0 ZXJhbD5EUk9QIElOREVYPC9saXRlcmFsPiBmb3IgdGhhdCBpbmRleC4KICAgIDwvcGFyYT4KIAog ICAgPHBhcmE+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL2RlcGVuZGVuY3kuYyBi L3NyYy9iYWNrZW5kL2NhdGFsb2cvZGVwZW5kZW5jeS5jCmluZGV4IDE4MzE2YTM5NjhiLi5hYjRj M2UyZmI0YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9kZXBlbmRlbmN5LmMKKysr IGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9kZXBlbmRlbmN5LmMKQEAgLTI4Niw3ICsyODYsNyBAQCBw ZXJmb3JtRGVsZXRpb24oY29uc3QgT2JqZWN0QWRkcmVzcyAqb2JqZWN0LAogCSAqIEFjcXVpcmUg ZGVsZXRpb24gbG9jayBvbiB0aGUgdGFyZ2V0IG9iamVjdC4gIChJZGVhbGx5IHRoZSBjYWxsZXIg aGFzCiAJICogZG9uZSB0aGlzIGFscmVhZHksIGJ1dCBtYW55IHBsYWNlcyBhcmUgc2xvcHB5IGFi b3V0IGl0LikKIAkgKi8KLQlBY3F1aXJlRGVsZXRpb25Mb2NrKG9iamVjdCwgMCk7CisJQWNxdWly ZURlbGV0aW9uTG9jayhvYmplY3QsIGZsYWdzKTsKIAogCS8qCiAJICogQ29uc3RydWN0IGEgbGlz dCBvZiBvYmplY3RzIHRvIGRlbGV0ZSAoaWUsIHRoZSBnaXZlbiBvYmplY3QgcGx1cwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9p bmRleC5jCmluZGV4IGNjYTYxNjUzMzliLi4xOTIwMWQyNjIxMSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvY2F0YWxvZy9pbmRleC5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwpA QCAtNjg3LDYgKzY4Nyw4IEBAIFVwZGF0ZUluZGV4UmVsYXRpb24oT2lkIGluZGV4b2lkLAogICoJ CXBhcmVudCBpbmRleDsgb3RoZXJ3aXNlIEludmFsaWRPaWQuCiAgKiBwYXJlbnRDb25zdHJhaW50 SWQ6IGlmIGNyZWF0aW5nIGEgY29uc3RyYWludCBvbiBhIHBhcnRpdGlvbiwgdGhlIE9JRAogICoJ CW9mIHRoZSBjb25zdHJhaW50IGluIHRoZSBwYXJlbnQ7IG90aGVyd2lzZSBJbnZhbGlkT2lkLgor ICogYXV4aWxpYXJ5Rm9ySW5kZXhJZDogaWYgY3JlYXRpbmcgYXV4aWxpYXJ5IGluZGV4LCB0aGUg T0lEIG9mIHRoZSBtYWluCisgKgkJaW5kZXg7IG90aGVyd2lzZSBJbnZhbGlkT2lkLgogICogcmVs RmlsZU51bWJlcjogbm9ybWFsbHksIHBhc3MgSW52YWxpZFJlbEZpbGVOdW1iZXIgdG8gZ2V0IG5l dyBzdG9yYWdlLgogICoJCU1heSBiZSBub256ZXJvIHRvIGF0dGFjaCBhbiBleGlzdGluZyB2YWxp ZCBidWlsZC4KICAqIGluZGV4SW5mbzogc2FtZSBpbmZvIGV4ZWN1dG9yIHVzZXMgdG8gaW5zZXJ0 IGludG8gdGhlIGluZGV4CkBAIC03MzMsNiArNzM1LDcgQEAgaW5kZXhfY3JlYXRlKFJlbGF0aW9u IGhlYXBSZWxhdGlvbiwKIAkJCSBPaWQgaW5kZXhSZWxhdGlvbklkLAogCQkJIE9pZCBwYXJlbnRJ bmRleFJlbGlkLAogCQkJIE9pZCBwYXJlbnRDb25zdHJhaW50SWQsCisJCQkgT2lkIGF1eGlsaWFy eUZvckluZGV4SWQsCiAJCQkgUmVsRmlsZU51bWJlciByZWxGaWxlTnVtYmVyLAogCQkJIEluZGV4 SW5mbyAqaW5kZXhJbmZvLAogCQkJIGNvbnN0IExpc3QgKmluZGV4Q29sTmFtZXMsCkBAIC03NzUs NiArNzc4LDggQEAgaW5kZXhfY3JlYXRlKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkJICAgKChm bGFncyAmIElOREVYX0NSRUFURV9BRERfQ09OU1RSQUlOVCkgIT0gMCkpOwogCS8qIHBhcnRpdGlv bmVkIGluZGV4ZXMgbXVzdCBuZXZlciBiZSAiYnVpbHQiIGJ5IHRoZW1zZWx2ZXMgKi8KIAlBc3Nl cnQoIXBhcnRpdGlvbmVkIHx8IChmbGFncyAmIElOREVYX0NSRUFURV9TS0lQX0JVSUxEKSk7CisJ LyogYXV4aWxpYXJ5Rm9ySW5kZXhJZCBhbmQgSU5ERVhfQ1JFQVRFX0FVWElMSUFSWSBhcmUgcmVx dWlyZWQgYm90aCBvciBuZWl0aGVyICovCisJQXNzZXJ0KE9pZElzVmFsaWQoYXV4aWxpYXJ5Rm9y SW5kZXhJZCkgPT0gYXV4aWxpYXJ5KTsKIAogCXJlbGtpbmQgPSBwYXJ0aXRpb25lZCA/IFJFTEtJ TkRfUEFSVElUSU9ORURfSU5ERVggOiBSRUxLSU5EX0lOREVYOwogCWlzX2V4Y2x1c2lvbiA9IChp bmRleEluZm8tPmlpX0V4Y2x1c2lvbk9wcyAhPSBOVUxMKTsKQEAgLTExNzYsNiArMTE4MSwxNSBA QCBpbmRleF9jcmVhdGUoUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCQkJcmVjb3JkRGVwZW5kZW5j eU9uKCZteXNlbGYsICZyZWZlcmVuY2VkLCBERVBFTkRFTkNZX1BBUlRJVElPTl9TRUMpOwogCQl9 CiAKKwkJLyoKKwkJICogUmVjb3JkIGRlcGVuZGVuY3kgb24gdGhlIG1haW4gaW5kZXggaW4gY2Fz ZSBvZiBhdXhpbGlhcnkgaW5kZXguCisJCSAqLworCQlpZiAoT2lkSXNWYWxpZChhdXhpbGlhcnlG b3JJbmRleElkKSkKKwkJeworCQkJT2JqZWN0QWRkcmVzc1NldChyZWZlcmVuY2VkLCBSZWxhdGlv blJlbGF0aW9uSWQsIGF1eGlsaWFyeUZvckluZGV4SWQpOworCQkJcmVjb3JkRGVwZW5kZW5jeU9u KCZteXNlbGYsICZyZWZlcmVuY2VkLCBERVBFTkRFTkNZX0FVVE8pOworCQl9CisKIAkJLyogcGxh Y2Vob2xkZXIgZm9yIG5vcm1hbCBkZXBlbmRlbmNpZXMgKi8KIAkJYWRkcnMgPSBuZXdfb2JqZWN0 X2FkZHJlc3NlcygpOwogCkBAIC0xNDU4LDYgKzE0NzIsNyBAQCBpbmRleF9jb25jdXJyZW50bHlf Y3JlYXRlX2NvcHkoUmVsYXRpb24gaGVhcFJlbGF0aW9uLCBPaWQgb2xkSW5kZXhJZCwKIAkJCQkJ CQkgIEludmFsaWRPaWQsCS8qIGluZGV4UmVsYXRpb25JZCAqLwogCQkJCQkJCSAgSW52YWxpZE9p ZCwJLyogcGFyZW50SW5kZXhSZWxpZCAqLwogCQkJCQkJCSAgSW52YWxpZE9pZCwJLyogcGFyZW50 Q29uc3RyYWludElkICovCisJCQkJCQkJICBJbnZhbGlkT2lkLAkvKiBhdXhpbGlhcnlGb3JJbmRl eElkICovCiAJCQkJCQkJICBJbnZhbGlkUmVsRmlsZU51bWJlciwgLyogcmVsRmlsZU51bWJlciAq LwogCQkJCQkJCSAgbmV3SW5mbywKIAkJCQkJCQkgIGluZGV4Q29sTmFtZXMsCkBAIC0xNjA4LDYg KzE2MjMsNyBAQCBpbmRleF9jb25jdXJyZW50bHlfY3JlYXRlX2F1eChSZWxhdGlvbiBoZWFwUmVs YXRpb24sIE9pZCBtYWluSW5kZXhJZCwKIAkJCQkJCQkgIEludmFsaWRPaWQsICAgIC8qIGluZGV4 UmVsYXRpb25JZCAqLwogCQkJCQkJCSAgSW52YWxpZE9pZCwgICAgLyogcGFyZW50SW5kZXhSZWxp ZCAqLwogCQkJCQkJCSAgSW52YWxpZE9pZCwgICAgLyogcGFyZW50Q29uc3RyYWludElkICovCisJ CQkJCQkJICBtYWluSW5kZXhJZCwgICAvKiBhdXhpbGlhcnlGb3JJbmRleElkICovCiAJCQkJCQkJ ICBJbnZhbGlkUmVsRmlsZU51bWJlciwgLyogcmVsRmlsZU51bWJlciAqLwogCQkJCQkJCSAgbmV3 SW5mbywKIAkJCQkJCQkgIGluZGV4Q29sTmFtZXMsCkBAIC0zODI3LDYgKzM4NDMsNyBAQCByZWlu ZGV4X2luZGV4KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgaW5kZXhJZCwKIAkJCQloZWFw UmVsYXRpb247CiAJT2lkCQkJaGVhcElkOwogCU9pZAkJCXNhdmVfdXNlcmlkOworCU9pZAkJCWp1 bmtBdXhJbmRleElkOwogCWludAkJCXNhdmVfc2VjX2NvbnRleHQ7CiAJaW50CQkJc2F2ZV9uZXN0 bGV2ZWw7CiAJSW5kZXhJbmZvICAqaW5kZXhJbmZvOwpAQCAtMzg4Myw2ICszOTAwLDE5IEBAIHJl aW5kZXhfaW5kZXgoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCBpbmRleElkLAogCQlwZ3N0 YXRfcHJvZ3Jlc3NfdXBkYXRlX211bHRpX3BhcmFtKDIsIHByb2dyZXNzX2NvbHMsIHByb2dyZXNz X3ZhbHMpOwogCX0KIAorCS8qIENoZWNrIGZvciB0aGUgYXV4aWxpYXJ5IGluZGV4IGZvciB0aGF0 IGluZGV4LCBpdCBuZWVkcyB0byBkcm9wcGVkICovCisJanVua0F1eEluZGV4SWQgPSBnZXRfYXV4 aWxpYXJ5X2luZGV4KGluZGV4SWQpOworCWlmIChPaWRJc1ZhbGlkKGp1bmtBdXhJbmRleElkKSkK Kwl7CisJCU9iamVjdEFkZHJlc3Mgb2JqZWN0OworCQlvYmplY3QuY2xhc3NJZCA9IFJlbGF0aW9u UmVsYXRpb25JZDsKKwkJb2JqZWN0Lm9iamVjdElkID0ganVua0F1eEluZGV4SWQ7CisJCW9iamVj dC5vYmplY3RTdWJJZCA9IDA7CisJCXBlcmZvcm1EZWxldGlvbigmb2JqZWN0LCBEUk9QX1JFU1RS SUNULAorCQkJCQkJCQkgUEVSRk9STV9ERUxFVElPTl9JTlRFUk5BTCB8CisJCQkJCQkJCSBQRVJG T1JNX0RFTEVUSU9OX1FVSUVUTFkpOworCX0KKwogCS8qCiAJICogT3BlbiB0aGUgdGFyZ2V0IGlu ZGV4IHJlbGF0aW9uIGFuZCBnZXQgYW4gZXhjbHVzaXZlIGxvY2sgb24gaXQsIHRvCiAJICogZW5z dXJlIHRoYXQgbm8gb25lIGVsc2UgaXMgdG91Y2hpbmcgdGhpcyBwYXJ0aWN1bGFyIGluZGV4LgpA QCAtNDE3MSw3ICs0MjAxLDggQEAgcmVpbmRleF9yZWxhdGlvbihjb25zdCBSZWluZGV4U3RtdCAq c3RtdCwgT2lkIHJlbGlkLCBpbnQgZmxhZ3MsCiB7CiAJUmVsYXRpb24JcmVsOwogCU9pZAkJCXRv YXN0X3JlbGlkOwotCUxpc3QJICAgKmluZGV4SWRzOworCUxpc3QJICAgKmluZGV4SWRzLAorCQkJ ICAgKmF1eEluZGV4SWRzID0gTklMOwogCWNoYXIJCXBlcnNpc3RlbmNlOwogCWJvb2wJCXJlc3Vs dCA9IGZhbHNlOwogCUxpc3RDZWxsICAgKmluZGV4SWQ7CkBAIC00MjYwLDEzICs0MjkxLDMwIEBA IHJlaW5kZXhfcmVsYXRpb24oY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxpZCwgaW50 IGZsYWdzLAogCWVsc2UKIAkJcGVyc2lzdGVuY2UgPSByZWwtPnJkX3JlbC0+cmVscGVyc2lzdGVu Y2U7CiAKKwlmb3JlYWNoKGluZGV4SWQsIGluZGV4SWRzKQorCXsKKwkJT2lkCQkJaW5kZXhPaWQg PSBsZmlyc3Rfb2lkKGluZGV4SWQpOworCQlPaWQJCQlpbmRleEFtID0gZ2V0X3JlbF9yZWxhbShp bmRleE9pZCk7CisKKwkJLyogQWxsIFNUSVIgaW5kZXhlcyBhcmUgYXV4aWxpYXJ5IGluZGV4ZXMg Ki8KKwkJaWYgKGluZGV4QW0gPT0gU1RJUl9BTV9PSUQpCisJCXsKKwkJCWlmIChmbGFncyAmIFJF SU5ERVhfUkVMX1NVUFBSRVNTX0lOREVYX1VTRSkKKwkJCQlSZW1vdmVSZWluZGV4UGVuZGluZyhp bmRleE9pZCk7CisJCQlhdXhJbmRleElkcyA9IGxhcHBlbmRfb2lkKGF1eEluZGV4SWRzLCBpbmRl eE9pZCk7CisJCX0KKwl9CisKIAkvKiBSZWluZGV4IGFsbCB0aGUgaW5kZXhlcy4gKi8KIAlpID0g MTsKIAlmb3JlYWNoKGluZGV4SWQsIGluZGV4SWRzKQogCXsKIAkJT2lkCQkJaW5kZXhPaWQgPSBs Zmlyc3Rfb2lkKGluZGV4SWQpOwogCQlPaWQJCQlpbmRleE5hbWVzcGFjZUlkID0gZ2V0X3JlbF9u YW1lc3BhY2UoaW5kZXhPaWQpOwotCQlPaWQJCQlpbmRleEFtID0gZ2V0X3JlbF9yZWxhbShpbmRl eE9pZCk7CisKKwkJLyogQXV4aWxpYXJ5IGluZGV4ZXMgYXJlIGdvaW5nIHRvIGJlIGRyb3BwZWQg ZHVyaW5nIG1haW4gaW5kZXggcmVidWlsZCAqLworCQlpZiAobGlzdF9tZW1iZXJfb2lkKGF1eElu ZGV4SWRzLCBpbmRleE9pZCkpCisJCQljb250aW51ZTsKIAogCQkvKgogCQkgKiBTa2lwIGFueSBp bnZhbGlkIGluZGV4ZXMgb24gYSBUT0FTVCB0YWJsZS4gIFRoZXNlIGNhbiBvbmx5IGJlCkBAIC00 MjkyLDE4ICs0MzQwLDYgQEAgcmVpbmRleF9yZWxhdGlvbihjb25zdCBSZWluZGV4U3RtdCAqc3Rt dCwgT2lkIHJlbGlkLCBpbnQgZmxhZ3MsCiAJCQljb250aW51ZTsKIAkJfQogCi0JCWlmIChpbmRl eEFtID09IFNUSVJfQU1fT0lEKQotCQl7Ci0JCQllcmVwb3J0KFdBUk5JTkcsCi0JCQkJCShlcnJj b2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKLQkJCQkJIGVycm1zZygic2tpcHBp bmcgcmVpbmRleCBvZiBhdXhpbGlhcnkgaW5kZXggXCIlcy4lc1wiIiwKLQkJCQkJCQlnZXRfbmFt ZXNwYWNlX25hbWUoaW5kZXhOYW1lc3BhY2VJZCksCi0JCQkJCQkJZ2V0X3JlbF9uYW1lKGluZGV4 T2lkKSkpKTsKLQkJCWlmIChmbGFncyAmIFJFSU5ERVhfUkVMX1NVUFBSRVNTX0lOREVYX1VTRSkK LQkJCQlSZW1vdmVSZWluZGV4UGVuZGluZyhpbmRleE9pZCk7Ci0JCQljb250aW51ZTsKLQkJfQot CiAJCXJlaW5kZXhfaW5kZXgoc3RtdCwgaW5kZXhPaWQsICEoZmxhZ3MgJiBSRUlOREVYX1JFTF9D SEVDS19DT05TVFJBSU5UUyksCiAJCQkJCSAgcGVyc2lzdGVuY2UsIHBhcmFtcyk7CiAKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfZGVwZW5kLmMgYi9zcmMvYmFja2VuZC9jYXRh bG9nL3BnX2RlcGVuZC5jCmluZGV4IGM4YjExZjg4N2UyLi4xYzI3NWVmMzczZiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19kZXBlbmQuYworKysgYi9zcmMvYmFja2VuZC9jYXRh bG9nL3BnX2RlcGVuZC5jCkBAIC0xMDM1LDYgKzEwMzUsNjMgQEAgZ2V0X2luZGV4X2NvbnN0cmFp bnQoT2lkIGluZGV4SWQpCiAJcmV0dXJuIGNvbnN0cmFpbnRJZDsKIH0KIAorLyoKKyAqIGdldF9h dXhpbGlhcnlfaW5kZXgKKyAqCQlHaXZlbiB0aGUgT0lEIG9mIGFuIGluZGV4LCByZXR1cm4gdGhl IE9JRCBvZiBpdHMgYXV4aWxpYXJ5CisgKgkJaW5kZXgsIG9yIEludmFsaWRPaWQgaWYgdGhlcmUg aXMgbm8gYXV4aWxpYXJ5IGluZGV4LgorICovCitPaWQKK2dldF9hdXhpbGlhcnlfaW5kZXgoT2lk IGluZGV4SWQpCit7CisJT2lkCQkJYXV4aWxpYXJ5SW5kZXhPaWQgPSBJbnZhbGlkT2lkOworCVJl bGF0aW9uCWRlcFJlbDsKKwlTY2FuS2V5RGF0YSBrZXlbM107CisJU3lzU2NhbkRlc2Mgc2NhbjsK KwlIZWFwVHVwbGUJdHVwOworCisJLyogU2VhcmNoIHRoZSBkZXBlbmRlbmN5IHRhYmxlIGZvciB0 aGUgaW5kZXggKi8KKwlkZXBSZWwgPSB0YWJsZV9vcGVuKERlcGVuZFJlbGF0aW9uSWQsIEFjY2Vz c1NoYXJlTG9jayk7CisKKwlTY2FuS2V5SW5pdCgma2V5WzBdLAorCQkJCUFudW1fcGdfZGVwZW5k X3JlZmNsYXNzaWQsCisJCQkJQlRFcXVhbFN0cmF0ZWd5TnVtYmVyLCBGX09JREVRLAorCQkJCU9i amVjdElkR2V0RGF0dW0oUmVsYXRpb25SZWxhdGlvbklkKSk7CisJU2NhbktleUluaXQoJmtleVsx XSwKKwkJCQlBbnVtX3BnX2RlcGVuZF9yZWZvYmppZCwKKwkJCQlCVEVxdWFsU3RyYXRlZ3lOdW1i ZXIsIEZfT0lERVEsCisJCQkJT2JqZWN0SWRHZXREYXR1bShpbmRleElkKSk7CisJU2NhbktleUlu aXQoJmtleVsyXSwKKwkJCQlBbnVtX3BnX2RlcGVuZF9yZWZvYmpzdWJpZCwKKwkJCQlCVEVxdWFs U3RyYXRlZ3lOdW1iZXIsIEZfSU5UNEVRLAorCQkJCUludDMyR2V0RGF0dW0oMCkpOworCisJc2Nh biA9IHN5c3RhYmxlX2JlZ2luc2NhbihkZXBSZWwsIERlcGVuZFJlZmVyZW5jZUluZGV4SWQsIHRy dWUsCisJCQkJCQkJICBOVUxMLCAzLCBrZXkpOworCisKKwl3aGlsZSAoSGVhcFR1cGxlSXNWYWxp ZCh0dXAgPSBzeXN0YWJsZV9nZXRuZXh0KHNjYW4pKSkKKwl7CisJCUZvcm1fcGdfZGVwZW5kIGRl cHJlYyA9IChGb3JtX3BnX2RlcGVuZCkgR0VUU1RSVUNUKHR1cCk7CisKKwkJLyoKKwkJICogV2Ug YXNzdW1lIGFueSBBVVRPIGRlcGVuZGVuY3kgb24gaW5kZXggd2l0aCByZWxfa2luZAorCQkgKiBv ZiBSRUxLSU5EX0lOREVYIGlzIHRoYXQgd2UgYXJlIGxvb2tpbmcgZm9yLgorCQkgKi8KKwkJaWYg KGRlcHJlYy0+Y2xhc3NpZCA9PSBSZWxhdGlvblJlbGF0aW9uSWQgJiYKKwkJCShkZXByZWMtPmRl cHR5cGUgPT0gREVQRU5ERU5DWV9BVVRPKSAmJgorCQkJZ2V0X3JlbF9yZWxraW5kKGRlcHJlYy0+ b2JqaWQpID09IFJFTEtJTkRfSU5ERVgpCisJCXsKKwkJCWF1eGlsaWFyeUluZGV4T2lkID0gZGVw cmVjLT5vYmppZDsKKwkJCWJyZWFrOworCQl9CisJfQorCisJc3lzdGFibGVfZW5kc2NhbihzY2Fu KTsKKwl0YWJsZV9jbG9zZShkZXBSZWwsIEFjY2Vzc1NoYXJlTG9jayk7CisKKwlyZXR1cm4gYXV4 aWxpYXJ5SW5kZXhPaWQ7Cit9CisKIC8qCiAgKiBnZXRfaW5kZXhfcmVmX2NvbnN0cmFpbnRzCiAg KgkJR2l2ZW4gdGhlIE9JRCBvZiBhbiBpbmRleCwgcmV0dXJuIHRoZSBPSUQgb2YgYWxsIGZvcmVp Z24ga2V5CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3RvYXN0aW5nLmMgYi9zcmMv YmFja2VuZC9jYXRhbG9nL3RvYXN0aW5nLmMKaW5kZXggMGVlMmZkNWU3ZGUuLjBlZThjYmY0Y2E2 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3RvYXN0aW5nLmMKKysrIGIvc3JjL2Jh Y2tlbmQvY2F0YWxvZy90b2FzdGluZy5jCkBAIC0zMTksNyArMzE5LDcgQEAgY3JlYXRlX3RvYXN0 X3RhYmxlKFJlbGF0aW9uIHJlbCwgT2lkIHRvYXN0T2lkLCBPaWQgdG9hc3RJbmRleE9pZCwKIAlj b2xvcHRpb25zWzFdID0gMDsKIAogCWluZGV4X2NyZWF0ZSh0b2FzdF9yZWwsIHRvYXN0X2lkeG5h bWUsIHRvYXN0SW5kZXhPaWQsIEludmFsaWRPaWQsCi0JCQkJIEludmFsaWRPaWQsIEludmFsaWRP aWQsCisJCQkJIEludmFsaWRPaWQsIEludmFsaWRPaWQsIEludmFsaWRPaWQsCiAJCQkJIGluZGV4 SW5mbywKIAkJCQkgbGlzdF9tYWtlMigiY2h1bmtfaWQiLCAiY2h1bmtfc2VxIiksCiAJCQkJIEJU UkVFX0FNX09JRCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5j IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKaW5kZXggMTQ2N2NkODk5MzAuLjQ0 NjZmN2U2MjYxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYwor KysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYwpAQCAtMTI1NCw3ICsxMjU0LDcg QEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAKIAlpbmRleFJlbGF0aW9uSWQgPQogCQlpbmRl eF9jcmVhdGUocmVsLCBpbmRleFJlbGF0aW9uTmFtZSwgaW5kZXhSZWxhdGlvbklkLCBwYXJlbnRJ bmRleElkLAotCQkJCQkgcGFyZW50Q29uc3RyYWludElkLAorCQkJCQkgcGFyZW50Q29uc3RyYWlu dElkLCBJbnZhbGlkT2lkLAogCQkJCQkgc3RtdC0+b2xkTnVtYmVyLCBpbmRleEluZm8sIGluZGV4 Q29sTmFtZXMsCiAJCQkJCSBhY2Nlc3NNZXRob2RJZCwgdGFibGVzcGFjZUlkLAogCQkJCQkgY29s bGF0aW9uSWRzLCBvcGNsYXNzSWRzLCBvcGNsYXNzT3B0aW9ucywKQEAgLTM1ODgsNiArMzU4OCw3 IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwg T2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJewogCQlPaWQJCQlpbmRleElkOwogCQlPaWQJ CQlhdXhJbmRleElkOworCQlPaWQJCQlqdW5rQXV4SW5kZXhJZDsKIAkJT2lkCQkJdGFibGVJZDsK IAkJT2lkCQkJYW1JZDsKIAl9IFJlaW5kZXhJbmRleEluZm87CkBAIC0zOTM2LDYgKzM5MzcsNyBA QCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9p ZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCQlSZWluZGV4SW5kZXhJbmZvICpuZXdpZHg7CiAJ CU9pZAkJCW5ld0luZGV4SWQ7CiAJCU9pZAkJCWF1eEluZGV4SWQ7CisJCU9pZAkJCWp1bmtBdXhJ bmRleElkOwogCQlSZWxhdGlvbglpbmRleFJlbDsKIAkJUmVsYXRpb24JaGVhcFJlbDsKIAkJT2lk CQkJc2F2ZV91c2VyaWQ7CkBAIC0zOTQzLDYgKzM5NDUsNyBAQCBSZWluZGV4UmVsYXRpb25Db25j dXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3Qg UmVpbgogCQlpbnQJCQlzYXZlX25lc3RsZXZlbDsKIAkJUmVsYXRpb24JbmV3SW5kZXhSZWw7CiAJ CVJlbGF0aW9uCWF1eEluZGV4UmVsOworCQlSZWxhdGlvbglqdW5rQXV4SW5kZXhSZWw7CiAJCUxv Y2tSZWxJZCAgKmxvY2tyZWxpZDsKIAkJT2lkCQkJdGFibGVzcGFjZWlkOwogCkBAIC00MDA1LDEy ICs0MDA4LDE3IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3Rt dCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJCQkJCQkJCQkJCQkgICB0YWJs ZXNwYWNlaWQsCiAJCQkJCQkJCQkJCQkgICBhdXhDb25jdXJyZW50TmFtZSk7CiAKKwkJLyogU2Vh cmNoIGZvciBhdXhpbGlhcnkgaW5kZXggZm9yIHJlaW5kZXhlZCBpbmRleCwgdG8gZHJvcCBpdCAq LworCQlqdW5rQXV4SW5kZXhJZCA9IGdldF9hdXhpbGlhcnlfaW5kZXgoaWR4LT5pbmRleElkKTsK KwogCQkvKgogCQkgKiBOb3cgb3BlbiB0aGUgcmVsYXRpb24gb2YgdGhlIG5ldyBpbmRleCwgYSBz ZXNzaW9uLWxldmVsIGxvY2sgaXMKIAkJICogYWxzbyBuZWVkZWQgb24gaXQuCiAJCSAqLwogCQlu ZXdJbmRleFJlbCA9IGluZGV4X29wZW4obmV3SW5kZXhJZCwgU2hhcmVVcGRhdGVFeGNsdXNpdmVM b2NrKTsKIAkJYXV4SW5kZXhSZWwgPSBpbmRleF9vcGVuKGF1eEluZGV4SWQsIFNoYXJlVXBkYXRl RXhjbHVzaXZlTG9jayk7CisJCWlmIChPaWRJc1ZhbGlkKGp1bmtBdXhJbmRleElkKSkKKwkJCWp1 bmtBdXhJbmRleFJlbCA9IGluZGV4X29wZW4oanVua0F1eEluZGV4SWQsIFNoYXJlVXBkYXRlRXhj bHVzaXZlTG9jayk7CiAKIAkJLyoKIAkJICogU2F2ZSB0aGUgbGlzdCBvZiBPSURzIGFuZCBsb2Nr cyBpbiBwcml2YXRlIGNvbnRleHQKQEAgLTQwMjAsNiArNDAyOCw3IEBAIFJlaW5kZXhSZWxhdGlv bkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBj b25zdCBSZWluCiAJCW5ld2lkeCA9IHBhbGxvY19vYmplY3QoUmVpbmRleEluZGV4SW5mbyk7CiAJ CW5ld2lkeC0+aW5kZXhJZCA9IG5ld0luZGV4SWQ7CiAJCW5ld2lkeC0+YXV4SW5kZXhJZCA9IGF1 eEluZGV4SWQ7CisJCW5ld2lkeC0+anVua0F1eEluZGV4SWQgPSBqdW5rQXV4SW5kZXhJZDsKIAkJ bmV3aWR4LT50YWJsZUlkID0gaWR4LT50YWJsZUlkOwogCQluZXdpZHgtPmFtSWQgPSBpZHgtPmFt SWQ7CiAKQEAgLTQwNDAsMTAgKzQwNDksMTggQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5 KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkJ bG9ja3JlbGlkID0gcGFsbG9jX29iamVjdChMb2NrUmVsSWQpOwogCQkqbG9ja3JlbGlkID0gYXV4 SW5kZXhSZWwtPnJkX2xvY2tJbmZvLmxvY2tSZWxJZDsKIAkJcmVsYXRpb25Mb2NrcyA9IGxhcHBl bmQocmVsYXRpb25Mb2NrcywgbG9ja3JlbGlkKTsKKwkJaWYgKE9pZElzVmFsaWQoanVua0F1eElu ZGV4SWQpKQorCQl7CisJCQlsb2NrcmVsaWQgPSBwYWxsb2Nfb2JqZWN0KExvY2tSZWxJZCk7CisJ CQkqbG9ja3JlbGlkID0ganVua0F1eEluZGV4UmVsLT5yZF9sb2NrSW5mby5sb2NrUmVsSWQ7CisJ CQlyZWxhdGlvbkxvY2tzID0gbGFwcGVuZChyZWxhdGlvbkxvY2tzLCBsb2NrcmVsaWQpOworCQl9 CiAKIAkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOwogCiAJCWluZGV4X2Nsb3Nl KGluZGV4UmVsLCBOb0xvY2spOworCQlpZiAoT2lkSXNWYWxpZChqdW5rQXV4SW5kZXhJZCkpCisJ CQlpbmRleF9jbG9zZShqdW5rQXV4SW5kZXhSZWwsIE5vTG9jayk7CiAJCWluZGV4X2Nsb3NlKGF1 eEluZGV4UmVsLCBOb0xvY2spOwogCQlpbmRleF9jbG9zZShuZXdJbmRleFJlbCwgTm9Mb2NrKTsK IApAQCAtNDIwMCw3ICs0MjE3LDggQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0 IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAogCS8qCiAJ ICogQXQgdGhpcyBtb21lbnQgYWxsIHRhcmdldCBpbmRleGVzIGFyZSBtYXJrZWQgYXMgInJlYWR5 LXRvLWluc2VydCIuIFNvLAotCSAqIHdlIGFyZSBmcmVlIHRvIHN0YXJ0IHByb2Nlc3Mgb2YgZHJv cHBpbmcgYXV4aWxpYXJ5IGluZGV4ZXMuCisJICogd2UgYXJlIGZyZWUgdG8gc3RhcnQgcHJvY2Vz cyBvZiBkcm9wcGluZyBhdXhpbGlhcnkgaW5kZXhlcyAtIGluY2x1ZGluZworCSAqIGp1c3QgaW5k ZXhlcyBkZXRlY3RlZCBlYXJsaWVyLgogCSAqLwogCWZvcmVhY2gobGMsIG5ld0luZGV4SWRzKQog CXsKQEAgLTQyMTksNiArNDIzNyw5IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25z dCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJCSAqLwog CQlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKIAkJaW5kZXhf c2V0X3N0YXRlX2ZsYWdzKG5ld2lkeC0+YXV4SW5kZXhJZCwgSU5ERVhfRFJPUF9DTEVBUl9SRUFE WSk7CisJCS8qIEVuc3VyZSBqdXN0IGluZGV4IGlzIG1hcmtlZCBhcyBub24tcmVhZHkgKi8KKwkJ aWYgKE9pZElzVmFsaWQobmV3aWR4LT5qdW5rQXV4SW5kZXhJZCkpCisJCQlpbmRleF9zZXRfc3Rh dGVfZmxhZ3MobmV3aWR4LT5qdW5rQXV4SW5kZXhJZCwgSU5ERVhfRFJPUF9DTEVBUl9SRUFEWSk7 CiAJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiAKIAkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7 CkBAIC00NDAxLDYgKzQ0MjIsOCBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3Qg UmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCQlQdXNoQWN0 aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKIAogCQlpbmRleF9jb25jdXJy ZW50bHlfc2V0X2RlYWQobmV3aWR4LT50YWJsZUlkLCBuZXdpZHgtPmF1eEluZGV4SWQpOworCQlp ZiAoT2lkSXNWYWxpZChuZXdpZHgtPmp1bmtBdXhJbmRleElkKSkKKwkJCWluZGV4X2NvbmN1cnJl bnRseV9zZXRfZGVhZChuZXdpZHgtPnRhYmxlSWQsIG5ld2lkeC0+anVua0F1eEluZGV4SWQpOwog CiAJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiAJfQpAQCAtNDQ0Niw2ICs0NDY5LDE0IEBAIFJlaW5k ZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0 aW9uT2lkLCBjb25zdCBSZWluCiAJCQlvYmplY3Qub2JqZWN0U3ViSWQgPSAwOwogCiAJCQlhZGRf ZXhhY3Rfb2JqZWN0X2FkZHJlc3MoJm9iamVjdCwgb2JqZWN0cyk7CisKKwkJCWlmIChPaWRJc1Zh bGlkKGlkeC0+anVua0F1eEluZGV4SWQpKQorCQkJeworCisJCQkJb2JqZWN0Lm9iamVjdElkID0g aWR4LT5qdW5rQXV4SW5kZXhJZDsKKwkJCQlvYmplY3Qub2JqZWN0U3ViSWQgPSAwOworCQkJCWFk ZF9leGFjdF9vYmplY3RfYWRkcmVzcygmb2JqZWN0LCBvYmplY3RzKTsKKwkJCX0KIAkJfQogCiAJ CS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCmluZGV4IDlkODc1NGJlN2U1Li4wYTEzOTdjNzAw NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKKysrIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKQEAgLTE1MDIsNiArMTUwMiw4IEBAIFJlbW92 ZVJlbGF0aW9ucyhEcm9wU3RtdCAqZHJvcCkKIAlMaXN0Q2VsbCAgICpjZWxsOwogCWludAkJCWZs YWdzID0gMDsKIAlMT0NLTU9ERQlsb2NrbW9kZSA9IEFjY2Vzc0V4Y2x1c2l2ZUxvY2s7CisJTWVt b3J5Q29udGV4dCBwcml2YXRlX2NvbnRleHQsCisJCQkJICBvbGRjb250ZXh0OwogCiAJLyogRFJP UCBDT05DVVJSRU5UTFkgdXNlcyBhIHdlYWtlciBsb2NrLCBhbmQgaGFzIHNvbWUgcmVzdHJpY3Rp b25zICovCiAJaWYgKGRyb3AtPmNvbmN1cnJlbnQpCkBAIC0xNTYyLDkgKzE1NjQsMjAgQEAgUmVt b3ZlUmVsYXRpb25zKERyb3BTdG10ICpkcm9wKQogCQkJcmVsa2luZCA9IDA7CQkvKiBrZWVwIGNv bXBpbGVyIHF1aWV0ICovCiAJCQlicmVhazsKIAl9CisJLyoKKwkgKiBDcmVhdGUgYSBtZW1vcnkg Y29udGV4dCB0aGF0IHdpbGwgc3Vydml2ZSBmb3JjZWQgdHJhbnNhY3Rpb24gY29tbWl0cyB3ZQor CSAqIG1heSBuZWVkIHRvIGRvIGJlbG93IChpbiBjYXNlIG9mIGNvbmN1cnJlbnQgaW5kZXggZHJv cCkuCisJICogU2luY2UgaXQgaXMgYSBjaGlsZCBvZiBQb3J0YWxDb250ZXh0LCBpdCB3aWxsIGdv IGF3YXkgZXZlbnR1YWxseSBldmVuIGlmCisJICogd2Ugc3VmZmVyIGFuIGVycm9yOyB0aGVyZSdz IG5vIG5lZWQgZm9yIHNwZWNpYWwgYWJvcnQgY2xlYW51cCBsb2dpYy4KKwkgKi8KKwlwcml2YXRl X2NvbnRleHQgPSBBbGxvY1NldENvbnRleHRDcmVhdGUoUG9ydGFsQ29udGV4dCwKKwkJCQkJCQkJ CQkJIlJlbW92ZVJlbGF0aW9ucyIsCisJCQkJCQkJCQkJCUFMTE9DU0VUX1NNQUxMX1NJWkVTKTsK IAorCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8ocHJpdmF0ZV9jb250ZXh0KTsK IAkvKiBMb2NrIGFuZCB2YWxpZGF0ZSBlYWNoIHJlbGF0aW9uOyBidWlsZCBhIGxpc3Qgb2Ygb2Jq ZWN0IGFkZHJlc3NlcyAqLwogCW9iamVjdHMgPSBuZXdfb2JqZWN0X2FkZHJlc3NlcygpOworCU1l bW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKIAogCWZvcmVhY2goY2VsbCwgZHJvcC0+ b2JqZWN0cykKIAl7CkBAIC0xNjE2LDYgKzE2MjksMzQgQEAgUmVtb3ZlUmVsYXRpb25zKERyb3BT dG10ICpkcm9wKQogCQkJZmxhZ3MgfD0gUEVSRk9STV9ERUxFVElPTl9DT05DVVJSRU5UTFk7CiAJ CX0KIAorCQkvKgorCQkgKiBDb25jdXJyZW50IGluZGV4IGRyb3AgcmVxdWlyZXMgdG8gYmUgdGhl IGZpcnN0IHRyYW5zYWN0aW9uLiBCdXQgaW4KKwkJICogY2FzZSB3ZSBoYXZlIGp1bmsgYXV4aWxp YXJ5IGluZGV4IC0gd2Ugd2FudCB0byBkcm9wIGl0IHRvbyAoYW5kIGFsc28KKwkJICogaW4gYSBj b25jdXJyZW50IHdheSkuIEluIHRoaXMgY2FzZSBwZXJmb3JtIHNpbGVudCBpbnRlcm5hbCBkZWxl dGlvbgorCQkgKiBvZiBhdXhpbGlhcnkgaW5kZXgsIGFuZCByZXN0b3JlIHRyYW5zYWN0aW9uIHN0 YXRlLiBJdCBpcyBmaW5lIHRvIGRvIGl0CisJCSAqIGluIHRoZSBsb29wIGJlY2F1c2UgdGhlcmUg aXMgb25seSBzaW5nbGUgZWxlbWVudCBpbiBkcm9wLT5vYmplY3RzLgorCQkgKi8KKwkJaWYgKChm bGFncyAmIFBFUkZPUk1fREVMRVRJT05fQ09OQ1VSUkVOVExZKSAhPSAwICYmCisJCQlzdGF0ZS5h Y3R1YWxfcmVsa2luZCA9PSBSRUxLSU5EX0lOREVYKQorCQl7CisJCQlPaWQganVua0F1eEluZGV4 T2lkID0gZ2V0X2F1eGlsaWFyeV9pbmRleChyZWxPaWQpOworCQkJaWYgKE9pZElzVmFsaWQoanVu a0F1eEluZGV4T2lkKSkKKwkJCXsKKwkJCQlPYmplY3RBZGRyZXNzIG9iamVjdDsKKwkJCQlvYmpl Y3QuY2xhc3NJZCA9IFJlbGF0aW9uUmVsYXRpb25JZDsKKwkJCQlvYmplY3Qub2JqZWN0SWQgPSBq dW5rQXV4SW5kZXhPaWQ7CisJCQkJb2JqZWN0Lm9iamVjdFN1YklkID0gMDsKKwkJCQlwZXJmb3Jt RGVsZXRpb24oJm9iamVjdCwgRFJPUF9SRVNUUklDVCwKKwkJCQkJCQkJCQkgUEVSRk9STV9ERUxF VElPTl9DT05DVVJSRU5UTFkgfAorCQkJCQkJCQkJCSBQRVJGT1JNX0RFTEVUSU9OX0lOVEVSTkFM IHwKKwkJCQkJCQkJCQkgUEVSRk9STV9ERUxFVElPTl9RVUlFVExZKTsKKwkJCQlDb21taXRUcmFu c2FjdGlvbkNvbW1hbmQoKTsKKwkJCQlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCQkJCVB1 c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOworCQkJCVByZXZlbnRJ blRyYW5zYWN0aW9uQmxvY2sodHJ1ZSwgIkRST1AgSU5ERVggQ09OQ1VSUkVOVExZIik7CisJCQl9 CisJCX0KKwogCQkvKgogCQkgKiBDb25jdXJyZW50IGluZGV4IGRyb3AgY2Fubm90IGJlIHVzZWQg d2l0aCBwYXJ0aXRpb25lZCBpbmRleGVzLAogCQkgKiBlaXRoZXIuCkBAIC0xNjQ0LDEyICsxNjg1 LDE3IEBAIFJlbW92ZVJlbGF0aW9ucyhEcm9wU3RtdCAqZHJvcCkKIAkJb2JqLm9iamVjdElkID0g cmVsT2lkOwogCQlvYmoub2JqZWN0U3ViSWQgPSAwOwogCisJCW9sZGNvbnRleHQgPSBNZW1vcnlD b250ZXh0U3dpdGNoVG8ocHJpdmF0ZV9jb250ZXh0KTsKIAkJYWRkX2V4YWN0X29iamVjdF9hZGRy ZXNzKCZvYmosIG9iamVjdHMpOworCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7 CiAJfQogCisJLyogRGVsZXRpb24gbWF5IGludm9sdmUgbXVsdGlwbGUgY29tbWl0cywgc28sIHN3 aXRjaCB0byBtZW1vcnkgY29udGV4dCAqLworCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dp dGNoVG8ocHJpdmF0ZV9jb250ZXh0KTsKIAlwZXJmb3JtTXVsdGlwbGVEZWxldGlvbnMob2JqZWN0 cywgZHJvcC0+YmVoYXZpb3IsIGZsYWdzKTsKKwlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29u dGV4dCk7CiAKLQlmcmVlX29iamVjdF9hZGRyZXNzZXMob2JqZWN0cyk7CisJTWVtb3J5Q29udGV4 dERlbGV0ZShwcml2YXRlX2NvbnRleHQpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvY2F0YWxvZy9kZXBlbmRlbmN5LmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL2RlcGVuZGVuY3ku aAppbmRleCAwZWE3Y2NmNTI0My4uMDJiY2Y1ZTkzMTUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L2NhdGFsb2cvZGVwZW5kZW5jeS5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvZGVwZW5kZW5j eS5oCkBAIC0xODAsNiArMTgwLDcgQEAgZXh0ZXJuIExpc3QgKmdldE93bmVkU2VxdWVuY2VzKE9p ZCByZWxpZCk7CiBleHRlcm4gT2lkCWdldElkZW50aXR5U2VxdWVuY2UoUmVsYXRpb24gcmVsLCBB dHRyTnVtYmVyIGF0dG51bSwgYm9vbCBtaXNzaW5nX29rKTsKIAogZXh0ZXJuIE9pZAlnZXRfaW5k ZXhfY29uc3RyYWludChPaWQgaW5kZXhJZCk7CitleHRlcm4gT2lkCWdldF9hdXhpbGlhcnlfaW5k ZXgoT2lkIGluZGV4SWQpOwogCiBleHRlcm4gTGlzdCAqZ2V0X2luZGV4X3JlZl9jb25zdHJhaW50 cyhPaWQgaW5kZXhJZCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXgu aCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaAppbmRleCAwMWY4NWU1N2VhMi4uOGZlMGFj YzFlNmIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaAorKysgYi9zcmMv aW5jbHVkZS9jYXRhbG9nL2luZGV4LmgKQEAgLTczLDYgKzczLDcgQEAgZXh0ZXJuIE9pZAlpbmRl eF9jcmVhdGUoUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCQkJCQkJIE9pZCBpbmRleFJlbGF0aW9u SWQsCiAJCQkJCQkgT2lkIHBhcmVudEluZGV4UmVsaWQsCiAJCQkJCQkgT2lkIHBhcmVudENvbnN0 cmFpbnRJZCwKKwkJCQkJCSBPaWQgYXV4aWxpYXJ5Rm9ySW5kZXhJZCwKIAkJCQkJCSBSZWxGaWxl TnVtYmVyIHJlbEZpbGVOdW1iZXIsCiAJCQkJCQkgSW5kZXhJbmZvICppbmRleEluZm8sCiAJCQkJ CQkgY29uc3QgTGlzdCAqaW5kZXhDb2xOYW1lcywKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvY3JlYXRlX2luZGV4Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv Y3JlYXRlX2luZGV4Lm91dAppbmRleCAzNDM2MmUzZDg3NS4uOGFhNjgxNWIzN2MgMTAwNjQ0Ci0t LSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX2luZGV4Lm91dAorKysgYi9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NyZWF0ZV9pbmRleC5vdXQKQEAgLTMxMTcsMjAgKzMxMTcs MTA5IEBAIEVSUk9SOiAgcmVpbmRleCBvZiBhdXhpbGlhcnkgaW5kZXggImF1eF9pbmRleF9pbmQ2 X2NjYXV4IiBub3Qgc3VwcG9ydGVkCiBSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBhdXhfaW5k ZXhfaW5kNl9jY2F1eDsKIEVSUk9SOiAgcmVpbmRleCBvZiBhdXhpbGlhcnkgaW5kZXggImF1eF9p bmRleF9pbmQ2X2NjYXV4IiBub3Qgc3VwcG9ydGVkCiAtLSBUaGlzIG1ha2VzIHRoZSBwcmV2aW91 cyBmYWlsdXJlIGdvIGF3YXksIHNvIHRoZSBpbmRleCBjYW4gYmVjb21lIHZhbGlkLgotREVMRVRF IEZST00gY29uY3VyX3JlaW5kZXhfdGFiNCBXSEVSRSBjMSA9IDE7Ci1FUlJPUjogIHJlbGF0aW9u ICJjb25jdXJfcmVpbmRleF90YWI0IiBkb2VzIG5vdCBleGlzdAotTElORSAxOiBERUxFVEUgRlJP TSBjb25jdXJfcmVpbmRleF90YWI0IFdIRVJFIGMxID0gMTsKLSAgICAgICAgICAgICAgICAgICAg XgorREVMRVRFIEZST00gYXV4X2luZGV4X3RhYjUgV0hFUkUgYzEgPSAxOworLS0gU2hvdWxkIGJl IHNraXBwZWQgZHVyaW5nIHJlaW5kZXggYW5kIGRyb3BwZWQKK1JFSU5ERVggSU5ERVggYXV4X2lu ZGV4X2luZDY7CistLSBNYWtlIHN1cmUgYXV4IGluZGV4IGlzIGRyb3BwZWQKK1xkIGF1eF9pbmRl eF90YWI1CisgICAgICAgICAgIFRhYmxlICJwdWJsaWMuYXV4X2luZGV4X3RhYjUiCisgQ29sdW1u IHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgRGVmYXVsdCAKKy0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLQorIGMxICAgICB8IGludGVn ZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IAorSW5kZXhlczoKKyAgICAiYXV4X2luZGV4X2lu ZDYiIFVOSVFVRSwgYnRyZWUgKGMxKQorCitEUk9QIElOREVYIGF1eF9pbmRleF9pbmQ2OworLS0g SW5zZXJ0IGR1cGxpY2F0ZXMgYWdhaW4KK0lOU0VSVCBJTlRPIGF1eF9pbmRleF90YWI1IFZBTFVF UyAoMSksICgxKTsKKy0tIENyZWF0ZSBpbnZhbGlkIGluZGV4IGFnYWluCitDUkVBVEUgVU5JUVVF IElOREVYIENPTkNVUlJFTlRMWSBhdXhfaW5kZXhfaW5kNiBPTiBhdXhfaW5kZXhfdGFiNSAoYzEp OworRVJST1I6ICBjb3VsZCBub3QgY3JlYXRlIHVuaXF1ZSBpbmRleCAiYXV4X2luZGV4X2luZDYi CitERVRBSUw6ICBLZXkgKGMxKT0oMSkgaXMgZHVwbGljYXRlZC4KKy0tIFRoaXMgbWFrZXMgdGhl IHByZXZpb3VzIGZhaWx1cmUgZ28gYXdheSwgc28gdGhlIGluZGV4IGNhbiBiZWNvbWUgdmFsaWQu CitERUxFVEUgRlJPTSBhdXhfaW5kZXhfdGFiNSBXSEVSRSBjMSA9IDE7CiAtLSBTaG91bGQgYmUg c2tpcHBlZCBkdXJpbmcgcmVpbmRleAotUkVJTkRFWCBUQUJMRSBhdXhfaW5kZXhfdGFiNTsKLUVS Uk9SOiAgY291bGQgbm90IGNyZWF0ZSB1bmlxdWUgaW5kZXggImF1eF9pbmRleF9pbmQ2IgotREVU QUlMOiAgS2V5IChjMSk9KDEpIGlzIGR1cGxpY2F0ZWQuCi0tLSBTaG91bGQgYmUgc2tpcHBlZCBk dXJpbmcgY29uY3VycmVudCByZWluZGV4CiBSRUlOREVYIFRBQkxFIENPTkNVUlJFTlRMWSBhdXhf aW5kZXhfdGFiNTsKIFdBUk5JTkc6ICBza2lwcGluZyByZWluZGV4IG9mIGludmFsaWQgaW5kZXgg InB1YmxpYy5hdXhfaW5kZXhfaW5kNiIKIEhJTlQ6ICBVc2UgRFJPUCBJTkRFWCBvciBSRUlOREVY IElOREVYLgogV0FSTklORzogIHNraXBwaW5nIHJlaW5kZXggb2YgYXV4aWxpYXJ5IGluZGV4ICJw dWJsaWMuYXV4X2luZGV4X2luZDZfY2NhdXgiCiBOT1RJQ0U6ICB0YWJsZSAiYXV4X2luZGV4X3Rh YjUiIGhhcyBubyBpbmRleGVzIHRoYXQgY2FuIGJlIHJlaW5kZXhlZCBjb25jdXJyZW50bHkKKy0t IE1ha2Ugc3VyZSBpdCBpcyBzdGlsbCBleGlzdHMKK1xkIGF1eF9pbmRleF90YWI1CisgICAgICAg ICAgIFRhYmxlICJwdWJsaWMuYXV4X2luZGV4X3RhYjUiCisgQ29sdW1uIHwgIFR5cGUgICB8IENv bGxhdGlvbiB8IE51bGxhYmxlIHwgRGVmYXVsdCAKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLQorIGMxICAgICB8IGludGVnZXIgfCAgICAgICAgICAg fCAgICAgICAgICB8IAorSW5kZXhlczoKKyAgICAiYXV4X2luZGV4X2luZDYiIFVOSVFVRSwgYnRy ZWUgKGMxKSBJTlZBTElECisgICAgImF1eF9pbmRleF9pbmQ2X2NjYXV4IiBzdGlyIChjMSkgSU5W QUxJRAorCistLSBTaG91bGQgYmUgc2tpcHBlZCBkdXJpbmcgcmVpbmRleCBhbmQgZHJvcHBlZAor UkVJTkRFWCBUQUJMRSBhdXhfaW5kZXhfdGFiNTsKKy0tIE1ha2Ugc3VyZSBhdXggaW5kZXggaXMg ZHJvcHBlZAorXGQgYXV4X2luZGV4X3RhYjUKKyAgICAgICAgICAgVGFibGUgInB1YmxpYy5hdXhf aW5kZXhfdGFiNSIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBE ZWZhdWx0IAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0t LS0tCisgYzEgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCitJbmRleGVz OgorICAgICJhdXhfaW5kZXhfaW5kNiIgVU5JUVVFLCBidHJlZSAoYzEpCisKK0RST1AgSU5ERVgg YXV4X2luZGV4X2luZDY7CistLSBJbnNlcnQgZHVwbGljYXRlcyBhZ2FpbgorSU5TRVJUIElOVE8g YXV4X2luZGV4X3RhYjUgVkFMVUVTICgxKSwgKDEpOworLS0gQ3JlYXRlIGludmFsaWQgaW5kZXgg YWdhaW4KK0NSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIGF1eF9pbmRleF9pbmQ2IE9O IGF1eF9pbmRleF90YWI1IChjMSk7CitFUlJPUjogIGNvdWxkIG5vdCBjcmVhdGUgdW5pcXVlIGlu ZGV4ICJhdXhfaW5kZXhfaW5kNiIKK0RFVEFJTDogIEtleSAoYzEpPSgxKSBpcyBkdXBsaWNhdGVk LgorLS0gVGhpcyBtYWtlcyB0aGUgcHJldmlvdXMgZmFpbHVyZSBnbyBhd2F5LCBzbyB0aGUgaW5k ZXggY2FuIGJlY29tZSB2YWxpZC4KK0RFTEVURSBGUk9NIGF1eF9pbmRleF90YWI1IFdIRVJFIGMx ID0gMTsKKy0tIFNob3VsZCBiZSBza2lwcGVkIGR1cmluZyByZWluZGV4IGFuZCBkcm9wcGVkCitS RUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBhdXhfaW5kZXhfaW5kNjsKKy0tIE1ha2Ugc3VyZSBh dXggaW5kZXggaXMgZHJvcHBlZAorXGQgYXV4X2luZGV4X3RhYjUKKyAgICAgICAgICAgVGFibGUg InB1YmxpYy5hdXhfaW5kZXhfdGFiNSIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwg TnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0rLS0tLS0tLS0tCisgYzEgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAg IHwgCitJbmRleGVzOgorICAgICJhdXhfaW5kZXhfaW5kNiIgVU5JUVVFLCBidHJlZSAoYzEpCisK K0RST1AgSU5ERVggYXV4X2luZGV4X2luZDY7CistLSBJbnNlcnQgZHVwbGljYXRlcyBhZ2Fpbgor SU5TRVJUIElOVE8gYXV4X2luZGV4X3RhYjUgVkFMVUVTICgxKSwgKDEpOworLS0gQ3JlYXRlIGlu dmFsaWQgaW5kZXggYWdhaW4KK0NSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIGF1eF9p bmRleF9pbmQ2IE9OIGF1eF9pbmRleF90YWI1IChjMSk7CitFUlJPUjogIGNvdWxkIG5vdCBjcmVh dGUgdW5pcXVlIGluZGV4ICJhdXhfaW5kZXhfaW5kNiIKK0RFVEFJTDogIEtleSAoYzEpPSgxKSBp cyBkdXBsaWNhdGVkLgorLS0gVGhpcyBtYWtlcyB0aGUgcHJldmlvdXMgZmFpbHVyZSBnbyBhd2F5 LCBzbyB0aGUgaW5kZXggY2FuIGJlY29tZSB2YWxpZC4KK0RFTEVURSBGUk9NIGF1eF9pbmRleF90 YWI1IFdIRVJFIGMxID0gMTsKKy0tIERyb3AgbWFpbiBpbmRleCBDT05DVVJSRU5UTFkKK0RST1Ag SU5ERVggQ09OQ1VSUkVOVExZIGF1eF9pbmRleF9pbmQ2OworLS0gTWFrZSBzdXJlIGF1eGlsaWFy eSBpbmRleCBkcm9wcGVkIHRvbworXGQgYXV4X2luZGV4X3RhYjUKKyAgICAgICAgICAgVGFibGUg InB1YmxpYy5hdXhfaW5kZXhfdGFiNSIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwg TnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0rLS0tLS0tLS0tCisgYzEgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAg IHwgCisKK0RST1AgSU5ERVggYXV4X2luZGV4X2luZDY7CitFUlJPUjogIGluZGV4ICJhdXhfaW5k ZXhfaW5kNiIgZG9lcyBub3QgZXhpc3QKKy0tIEluc2VydCBkdXBsaWNhdGVzIGFnYWluCitJTlNF UlQgSU5UTyBhdXhfaW5kZXhfdGFiNSBWQUxVRVMgKDEpLCAoMSk7CistLSBDcmVhdGUgaW52YWxp ZCBpbmRleCBhZ2FpbgorQ1JFQVRFIFVOSVFVRSBJTkRFWCBDT05DVVJSRU5UTFkgYXV4X2luZGV4 X2luZDYgT04gYXV4X2luZGV4X3RhYjUgKGMxKTsKK0VSUk9SOiAgY291bGQgbm90IGNyZWF0ZSB1 bmlxdWUgaW5kZXggImF1eF9pbmRleF9pbmQ2IgorREVUQUlMOiAgS2V5IChjMSk9KDEpIGlzIGR1 cGxpY2F0ZWQuCistLSBEcm9wIG1haW4gaW5kZXgKK0RST1AgSU5ERVggYXV4X2luZGV4X2luZDY7 CistLSBNYWtlIHN1cmUgYXV4aWxpYXJ5IGluZGV4IGRyb3BwZWQgdG9vCitcZCBhdXhfaW5kZXhf dGFiNQorICAgICAgICAgICBUYWJsZSAicHVibGljLmF1eF9pbmRleF90YWI1IgorIENvbHVtbiB8 ICBUeXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1bHQgCistLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0KKyBjMSAgICAgfCBpbnRlZ2Vy IHwgICAgICAgICAgIHwgICAgICAgICAgfCAKKwogRFJPUCBUQUJMRSBhdXhfaW5kZXhfdGFiNTsK IC0tIENoZWNrIGhhbmRsaW5nIG9mIGluZGV4ZXMgd2l0aCBleHByZXNzaW9ucyBhbmQgcHJlZGlj YXRlcy4gIFRoZQogLS0gZGVmaW5pdGlvbnMgb2YgdGhlIHJlYnVpbHQgaW5kZXhlcyBzaG91bGQg bWF0Y2ggdGhlIG9yaWdpbmFsCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jcmVh dGVfaW5kZXguc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX2luZGV4LnNxbAppbmRl eCBmY2ZmNWQxOTk5OC4uNWU1Y2YyM2Q5N2QgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL2NyZWF0ZV9pbmRleC5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX2lu ZGV4LnNxbApAQCAtMTI3OSwxMSArMTI3OSw2MiBAQCBSRUlOREVYIElOREVYIGF1eF9pbmRleF9p bmQ2X2NjYXV4OwogLS0gQ29uY3VycmVudGx5IGFsc28KIFJFSU5ERVggSU5ERVggQ09OQ1VSUkVO VExZIGF1eF9pbmRleF9pbmQ2X2NjYXV4OwogLS0gVGhpcyBtYWtlcyB0aGUgcHJldmlvdXMgZmFp bHVyZSBnbyBhd2F5LCBzbyB0aGUgaW5kZXggY2FuIGJlY29tZSB2YWxpZC4KLURFTEVURSBGUk9N IGNvbmN1cl9yZWluZGV4X3RhYjQgV0hFUkUgYzEgPSAxOworREVMRVRFIEZST00gYXV4X2luZGV4 X3RhYjUgV0hFUkUgYzEgPSAxOworLS0gU2hvdWxkIGJlIHNraXBwZWQgZHVyaW5nIHJlaW5kZXgg YW5kIGRyb3BwZWQKK1JFSU5ERVggSU5ERVggYXV4X2luZGV4X2luZDY7CistLSBNYWtlIHN1cmUg YXV4IGluZGV4IGlzIGRyb3BwZWQKK1xkIGF1eF9pbmRleF90YWI1CitEUk9QIElOREVYIGF1eF9p bmRleF9pbmQ2OworCistLSBJbnNlcnQgZHVwbGljYXRlcyBhZ2FpbgorSU5TRVJUIElOVE8gYXV4 X2luZGV4X3RhYjUgVkFMVUVTICgxKSwgKDEpOworLS0gQ3JlYXRlIGludmFsaWQgaW5kZXggYWdh aW4KK0NSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIGF1eF9pbmRleF9pbmQ2IE9OIGF1 eF9pbmRleF90YWI1IChjMSk7CistLSBUaGlzIG1ha2VzIHRoZSBwcmV2aW91cyBmYWlsdXJlIGdv IGF3YXksIHNvIHRoZSBpbmRleCBjYW4gYmVjb21lIHZhbGlkLgorREVMRVRFIEZST00gYXV4X2lu ZGV4X3RhYjUgV0hFUkUgYzEgPSAxOwogLS0gU2hvdWxkIGJlIHNraXBwZWQgZHVyaW5nIHJlaW5k ZXgKLVJFSU5ERVggVEFCTEUgYXV4X2luZGV4X3RhYjU7Ci0tLSBTaG91bGQgYmUgc2tpcHBlZCBk dXJpbmcgY29uY3VycmVudCByZWluZGV4CiBSRUlOREVYIFRBQkxFIENPTkNVUlJFTlRMWSBhdXhf aW5kZXhfdGFiNTsKKy0tIE1ha2Ugc3VyZSBpdCBpcyBzdGlsbCBleGlzdHMKK1xkIGF1eF9pbmRl eF90YWI1CistLSBTaG91bGQgYmUgc2tpcHBlZCBkdXJpbmcgcmVpbmRleCBhbmQgZHJvcHBlZAor UkVJTkRFWCBUQUJMRSBhdXhfaW5kZXhfdGFiNTsKKy0tIE1ha2Ugc3VyZSBhdXggaW5kZXggaXMg ZHJvcHBlZAorXGQgYXV4X2luZGV4X3RhYjUKK0RST1AgSU5ERVggYXV4X2luZGV4X2luZDY7CisK Ky0tIEluc2VydCBkdXBsaWNhdGVzIGFnYWluCitJTlNFUlQgSU5UTyBhdXhfaW5kZXhfdGFiNSBW QUxVRVMgKDEpLCAoMSk7CistLSBDcmVhdGUgaW52YWxpZCBpbmRleCBhZ2FpbgorQ1JFQVRFIFVO SVFVRSBJTkRFWCBDT05DVVJSRU5UTFkgYXV4X2luZGV4X2luZDYgT04gYXV4X2luZGV4X3RhYjUg KGMxKTsKKy0tIFRoaXMgbWFrZXMgdGhlIHByZXZpb3VzIGZhaWx1cmUgZ28gYXdheSwgc28gdGhl IGluZGV4IGNhbiBiZWNvbWUgdmFsaWQuCitERUxFVEUgRlJPTSBhdXhfaW5kZXhfdGFiNSBXSEVS RSBjMSA9IDE7CistLSBTaG91bGQgYmUgc2tpcHBlZCBkdXJpbmcgcmVpbmRleCBhbmQgZHJvcHBl ZAorUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgYXV4X2luZGV4X2luZDY7CistLSBNYWtlIHN1 cmUgYXV4IGluZGV4IGlzIGRyb3BwZWQKK1xkIGF1eF9pbmRleF90YWI1CitEUk9QIElOREVYIGF1 eF9pbmRleF9pbmQ2OworCistLSBJbnNlcnQgZHVwbGljYXRlcyBhZ2FpbgorSU5TRVJUIElOVE8g YXV4X2luZGV4X3RhYjUgVkFMVUVTICgxKSwgKDEpOworLS0gQ3JlYXRlIGludmFsaWQgaW5kZXgg YWdhaW4KK0NSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIGF1eF9pbmRleF9pbmQ2IE9O IGF1eF9pbmRleF90YWI1IChjMSk7CistLSBUaGlzIG1ha2VzIHRoZSBwcmV2aW91cyBmYWlsdXJl IGdvIGF3YXksIHNvIHRoZSBpbmRleCBjYW4gYmVjb21lIHZhbGlkLgorREVMRVRFIEZST00gYXV4 X2luZGV4X3RhYjUgV0hFUkUgYzEgPSAxOworLS0gRHJvcCBtYWluIGluZGV4IENPTkNVUlJFTlRM WQorRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgYXV4X2luZGV4X2luZDY7CistLSBNYWtlIHN1cmUg YXV4aWxpYXJ5IGluZGV4IGRyb3BwZWQgdG9vCitcZCBhdXhfaW5kZXhfdGFiNQorRFJPUCBJTkRF WCBhdXhfaW5kZXhfaW5kNjsKKworLS0gSW5zZXJ0IGR1cGxpY2F0ZXMgYWdhaW4KK0lOU0VSVCBJ TlRPIGF1eF9pbmRleF90YWI1IFZBTFVFUyAoMSksICgxKTsKKy0tIENyZWF0ZSBpbnZhbGlkIGlu ZGV4IGFnYWluCitDUkVBVEUgVU5JUVVFIElOREVYIENPTkNVUlJFTlRMWSBhdXhfaW5kZXhfaW5k NiBPTiBhdXhfaW5kZXhfdGFiNSAoYzEpOworLS0gRHJvcCBtYWluIGluZGV4CitEUk9QIElOREVY IGF1eF9pbmRleF9pbmQ2OworLS0gTWFrZSBzdXJlIGF1eGlsaWFyeSBpbmRleCBkcm9wcGVkIHRv bworXGQgYXV4X2luZGV4X3RhYjUKKwogRFJPUCBUQUJMRSBhdXhfaW5kZXhfdGFiNTsKIAogLS0g Q2hlY2sgaGFuZGxpbmcgb2YgaW5kZXhlcyB3aXRoIGV4cHJlc3Npb25zIGFuZCBwcmVkaWNhdGVz LiAgVGhlCi0tIAoyLjQzLjAKCg== --0000000000007d5b96062e941445 Content-Type: text/x-patch; charset="US-ASCII"; name="v15-0012-Updates-index-insert-and-value-computation-logic.patch" Content-Disposition: attachment; filename="v15-0012-Updates-index-insert-and-value-computation-logic.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m7dgd9j411 RnJvbSAyMmZjYzU1N2U3MzMyMGU1OTI0M2Q5YWU3ZGVjODYzYzZlMjgzZWNlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxua2V5QHRvbG9rYS5haT4KRGF0ZTogTW9uLCAzMCBE ZWMgMjAyNCAxNjozNzoxMiArMDEwMApTdWJqZWN0OiBbUEFUQ0ggdjE1IDEyLzEyXSBVcGRhdGVz IGluZGV4IGluc2VydCBhbmQgdmFsdWUgY29tcHV0YXRpb24gbG9naWMgdG8KIG9wdGltaXplIGF1 eGlsaWFyeSBpbmRleCBoYW5kbGluZy4KCiogU2tpcCBpbmRleCB2YWx1ZSBjb21wdXRhdGlvbiBm b3IgYXV4aWxpYXJ5IGluZGljZXMgc2luY2UgdGhleSBhcmUgbm90IG5lZWRlZAoqIFNldCBpbmRl eFVuY2hhbmdlZD1mYWxzZSBmb3IgYXV4aWxpYXJ5IGluZGljZXMgdG8gYXZvaWQgdW5uZWNlc3Nh cnkgY2hlY2tzCi0tLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jICAgICAgICAgfCAxMSAr KysrKysrKysrKwogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4aW5nLmMgfCAxMSArKysr KysrLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCAxOCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYyBiL3NyYy9iYWNrZW5k L2NhdGFsb2cvaW5kZXguYwppbmRleCAxOTIwMWQyNjIxMS4uZmY4YThhMjczMWUgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9n L2luZGV4LmMKQEAgLTI5MzIsNiArMjkzMiwxNyBAQCBGb3JtSW5kZXhEYXR1bShJbmRleEluZm8g KmluZGV4SW5mbywKIAlMaXN0Q2VsbCAgICppbmRleHByX2l0ZW07CiAJaW50CQkJaTsKIAorCS8q IEF1eGlsaWFyeSBpbmRleCBkb2VzIG5vdCBuZWVkIGFueSB2YWx1ZXMgdG8gYmUgY29tcHV0ZWQg Ki8KKwlpZiAodW5saWtlbHkoaW5kZXhJbmZvLT5paV9BdXhpbGlhcnkpKQorCXsKKwkJZm9yIChp ID0gMDsgaSA8IGluZGV4SW5mby0+aWlfTnVtSW5kZXhBdHRyczsgaSsrKQorCQl7CisJCQl2YWx1 ZXNbaV0gPSBQb2ludGVyR2V0RGF0dW0oTlVMTCk7CisJCQlpc251bGxbaV0gPSB0cnVlOworCQl9 CisJCXJldHVybjsKKwl9CisKIAlpZiAoaW5kZXhJbmZvLT5paV9FeHByZXNzaW9ucyAhPSBOSUwg JiYKIAkJaW5kZXhJbmZvLT5paV9FeHByZXNzaW9uc1N0YXRlID09IE5JTCkKIAl7CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjSW5kZXhpbmcuYyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNJbmRleGluZy5jCmluZGV4IGYyYTc0Yjc2NDY1Li5lZWYxYjM1ZTY4YyAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4aW5nLmMKKysrIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4aW5nLmMKQEAgLTQ0MSwxMSArNDQxLDE0IEBAIEV4ZWNJ bnNlcnRJbmRleFR1cGxlcyhSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLAogCQkgKiBUaGVy ZSdzIGRlZmluaXRlbHkgZ29pbmcgdG8gYmUgYW4gaW5kZXhfaW5zZXJ0KCkgY2FsbCBmb3IgdGhp cwogCQkgKiBpbmRleC4gIElmIHdlJ3JlIGJlaW5nIGNhbGxlZCBhcyBwYXJ0IG9mIGFuIFVQREFU RSBzdGF0ZW1lbnQsCiAJCSAqIGNvbnNpZGVyIGlmIHRoZSAnaW5kZXhVbmNoYW5nZWQnID0gdHJ1 ZSBoaW50IHNob3VsZCBiZSBwYXNzZWQuCisJCSAqCisJCSAqIEluIGNhc2Ugb2YgYXV4aWxpYXJ5 IGluZGV4IGFsd2F5cyBwYXNzIGZhbHNlIGFzIG9wdGltaXNhdGlvbi4KIAkJICovCi0JCWluZGV4 VW5jaGFuZ2VkID0gdXBkYXRlICYmIGluZGV4X3VuY2hhbmdlZF9ieV91cGRhdGUocmVzdWx0UmVs SW5mbywKLQkJCQkJCQkJCQkJCQkJCSBlc3RhdGUsCi0JCQkJCQkJCQkJCQkJCQkgaW5kZXhJbmZv LAotCQkJCQkJCQkJCQkJCQkJIGluZGV4UmVsYXRpb24pOworCQlpbmRleFVuY2hhbmdlZCA9IHVw ZGF0ZSAmJiBsaWtlbHkoIWluZGV4SW5mby0+aWlfQXV4aWxpYXJ5KSAmJgorCQkJCQkJCQkJaW5k ZXhfdW5jaGFuZ2VkX2J5X3VwZGF0ZShyZXN1bHRSZWxJbmZvLAorCQkJCQkJCQkJCQkJCQkJICBl c3RhdGUsCisJCQkJCQkJCQkJCQkJCQkgIGluZGV4SW5mbywKKwkJCQkJCQkJCQkJCQkJCSAgaW5k ZXhSZWxhdGlvbik7CiAKIAkJc2F0aXNmaWVzQ29uc3RyYWludCA9CiAJCQlpbmRleF9pbnNlcnQo aW5kZXhSZWxhdGlvbiwgLyogaW5kZXggcmVsYXRpb24gKi8KLS0gCjIuNDMuMAoK --0000000000007d5b96062e941445 Content-Type: text/x-patch; charset="US-ASCII"; name="v15-0010-Remove-PROC_IN_SAFE_IC-optimization.patch" Content-Disposition: attachment; filename="v15-0010-Remove-PROC_IN_SAFE_IC-optimization.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m7dgd9iw9 RnJvbSBjOTJiZTQ3NjYxZTU1MWY2OTMzMGJmYmM4NTQwN2QwZjQ5ODk3ZWQwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxtaWNoYWlsLm5pa29sYWV2QGdtYWlsLmNvbT4KRGF0 ZTogVHVlLCAzMSBEZWMgMjAyNCAxNDoyNDo0OCArMDEwMApTdWJqZWN0OiBbUEFUQ0ggdjE1IDEw LzEyXSBSZW1vdmUgUFJPQ19JTl9TQUZFX0lDIG9wdGltaXphdGlvbgoKUmVtb3ZlIHRoZSBvcHRp bWl6YXRpb24gdGhhdCBhbGxvd2VkIGNvbmN1cnJlbnQgaW5kZXggYnVpbGRzIHRvIGlnbm9yZSBv dGhlcgpjb25jdXJyZW50IGJ1aWxkcyBvZiAic2FmZSIgaW5kZXhlcyAodGhvc2Ugd2l0aG91dCBl eHByZXNzaW9ucyBvciBwcmVkaWNhdGVzKS4KVGhpcyBvcHRpbWl6YXRpb24gaXMgbm8gbG9uZ2Vy IG5lZWRlZCB3aXRoIHRoZSBuZXcgc25hcHNob3QgaGFuZGxpbmcgYXBwcm9hY2gKdGhhdCB1c2Vz IHBlcmlvZGljYWxseSByZWZyZXNoZWQgc25hcHNob3RzIGluc3RlYWQgb2YgYSBzaW5nbGUgcmVm ZXJlbmNlCnNuYXBzaG90LgoKVGhlIGNoYW5nZSBncmVhdGx5IHNpbXBsaWZpZXMgdGhlIGNvbmN1 cnJlbnQgaW5kZXggYnVpbGQgY29kZSBieToKLSBSZW1vdmluZyB0aGUgUFJPQ19JTl9TQUZFX0lD IHByb2Nlc3Mgc3RhdHVzIGZsYWcKLSBSZW1vdmluZyBhbGwgc2V0X2luZGV4c2FmZV9wcm9jZmxh Z3MoKSBjYWxscyBhbmQgcmVsYXRlZCBsb2dpYwotIFJlbW92aW5nIHNwZWNpYWwgY2FzZSBoYW5k bGluZyBpbiBHZXRDdXJyZW50VmlydHVhbFhJRHMoKQotIFJlbW92aW5nIHJlbGF0ZWQgdGVzdCBj YXNlcyBhbmQgaW5qZWN0aW9uIHBvaW50cwoKVGhpcyBpcyBwYXJ0IG9mIGltcHJvdmluZyBjb25j dXJyZW50IGluZGV4IGJ1aWxkcyB0byBiZXR0ZXIgaGFuZGxlIHhtaW4KcHJvcGFnYXRpb24gZHVy aW5nIGxvbmctcnVubmluZyBvcGVyYXRpb25zLgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9icmlu L2JyaW4uYyAgICAgICAgICAgICAgICB8ICAgNiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL25idHJl ZS9uYnRzb3J0LmMgICAgICAgICAgIHwgICA2ICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9pbmRl eGNtZHMuYyAgICAgICAgICAgICAgfCAxNDIgKy0tLS0tLS0tLS0tLS0tLS0tCiBzcmMvaW5jbHVk ZS9zdG9yYWdlL3Byb2MuaCAgICAgICAgICAgICAgICAgICAgfCAgIDggKy0KIHNyYy90ZXN0L21v ZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9NYWtlZmlsZSAgICB8ICAgMiArLQogLi4uL2V4cGVjdGVk L3JlaW5kZXhfY29uYy5vdXQgICAgICAgICAgICAgICAgIHwgIDUxIC0tLS0tLS0KIHNyYy90ZXN0 L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9tZXNvbi5idWlsZCB8ICAgMSAtCiAuLi4vaW5qZWN0 aW9uX3BvaW50cy9zcWwvcmVpbmRleF9jb25jLnNxbCAgICAgfCAgMjggLS0tLQogOCBmaWxlcyBj aGFuZ2VkLCAxMSBpbnNlcnRpb25zKCspLCAyMzMgZGVsZXRpb25zKC0pCiBkZWxldGUgbW9kZSAx MDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL2V4cGVjdGVkL3JlaW5kZXhf Y29uYy5vdXQKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9w b2ludHMvc3FsL3JlaW5kZXhfY29uYy5zcWwKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nl c3MvYnJpbi9icmluLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMKaW5kZXggZDgz MTc3ODcyNTEuLjBmODM5Mzk1Yzc4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvYnJp bi9icmluLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jCkBAIC0yODg5LDEx ICsyODg5LDkgQEAgX2JyaW5fcGFyYWxsZWxfYnVpbGRfbWFpbihkc21fc2VnbWVudCAqc2VnLCBz aG1fdG9jICp0b2MpCiAJaW50CQkJc29ydG1lbTsKIAogCS8qCi0JICogVGhlIG9ubHkgcG9zc2li bGUgc3RhdHVzIGZsYWcgdGhhdCBjYW4gYmUgc2V0IHRvIHRoZSBwYXJhbGxlbCB3b3JrZXIgaXMK LQkgKiBQUk9DX0lOX1NBRkVfSUMuCisJICogVGhlcmUgYXJlIG5vIHBvc3NpYmxlIHN0YXR1cyBm bGFnIHRoYXQgY2FuIGJlIHNldCB0byB0aGUgcGFyYWxsZWwgd29ya2VyLgogCSAqLwotCUFzc2Vy dCgoTXlQcm9jLT5zdGF0dXNGbGFncyA9PSAwKSB8fAotCQkgICAoTXlQcm9jLT5zdGF0dXNGbGFn cyA9PSBQUk9DX0lOX1NBRkVfSUMpKTsKKwlBc3NlcnQoTXlQcm9jLT5zdGF0dXNGbGFncyA9PSAw KTsKIAogCS8qIFNldCBkZWJ1Z19xdWVyeV9zdHJpbmcgZm9yIGluZGl2aWR1YWwgd29ya2VycyBm aXJzdCAqLwogCXNoYXJlZHF1ZXJ5ID0gc2htX3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9LRVlf UVVFUllfVEVYVCwgdHJ1ZSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVl L25idHNvcnQuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jCmluZGV4IDYy ZTk3NTAxNmFkLi4xZWI0Mjk5ODI2ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL25i dHJlZS9uYnRzb3J0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMK QEAgLTE5MTEsMTEgKzE5MTEsOSBAQCBfYnRfcGFyYWxsZWxfYnVpbGRfbWFpbihkc21fc2VnbWVu dCAqc2VnLCBzaG1fdG9jICp0b2MpCiAjZW5kaWYJCQkJCQkJLyogQlRSRUVfQlVJTERfU1RBVFMg Ki8KIAogCS8qCi0JICogVGhlIG9ubHkgcG9zc2libGUgc3RhdHVzIGZsYWcgdGhhdCBjYW4gYmUg c2V0IHRvIHRoZSBwYXJhbGxlbCB3b3JrZXIgaXMKLQkgKiBQUk9DX0lOX1NBRkVfSUMuCisJICog VGhlcmUgYXJlIG5vIHBvc3NpYmxlIHN0YXR1cyBmbGFnIHRoYXQgY2FuIGJlIHNldCB0byB0aGUg cGFyYWxsZWwgd29ya2VyLgogCSAqLwotCUFzc2VydCgoTXlQcm9jLT5zdGF0dXNGbGFncyA9PSAw KSB8fAotCQkgICAoTXlQcm9jLT5zdGF0dXNGbGFncyA9PSBQUk9DX0lOX1NBRkVfSUMpKTsKKwlB c3NlcnQoTXlQcm9jLT5zdGF0dXNGbGFncyA9PSAwKTsKIAogCS8qIFNldCBkZWJ1Z19xdWVyeV9z dHJpbmcgZm9yIGluZGl2aWR1YWwgd29ya2VycyBmaXJzdCAqLwogCXNoYXJlZHF1ZXJ5ID0gc2ht X3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9LRVlfUVVFUllfVEVYVCwgdHJ1ZSk7CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1h bmRzL2luZGV4Y21kcy5jCmluZGV4IDc4MDVlNDMxNzhmLi4xNDY3Y2Q4OTkzMCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvaW5kZXhjbWRzLmMKQEAgLTExNSw3ICsxMTUsNiBAQCBzdGF0aWMgYm9vbCBSZWluZGV4 UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsCiAJCQkJCQkJCQkJ T2lkIHJlbGF0aW9uT2lkLAogCQkJCQkJCQkJCWNvbnN0IFJlaW5kZXhQYXJhbXMgKnBhcmFtcyk7 CiBzdGF0aWMgdm9pZCB1cGRhdGVfcmVsaXNwYXJ0aXRpb24oT2lkIHJlbGF0aW9uSWQsIGJvb2wg bmV3dmFsKTsKLXN0YXRpYyBpbmxpbmUgdm9pZCBzZXRfaW5kZXhzYWZlX3Byb2NmbGFncyh2b2lk KTsKIAogLyoKICAqIGNhbGxiYWNrIGFyZ3VtZW50IHR5cGUgZm9yIFJhbmdlVmFyQ2FsbGJhY2tG b3JSZWluZGV4SW5kZXgoKQpAQCAtNDE4LDEwICs0MTcsNyBAQCBDb21wYXJlT3BjbGFzc09wdGlv bnMoY29uc3QgRGF0dW0gKm9wdHMxLCBjb25zdCBEYXR1bSAqb3B0czIsIGludCBuYXR0cykKICAq IGxhenkgVkFDVVVNcywgYmVjYXVzZSB0aGV5IHdvbid0IGJlIGZhemVkIGJ5IG1pc3NpbmcgaW5k ZXggZW50cmllcwogICogZWl0aGVyLiAgKE1hbnVhbCBBTkFMWVpFcywgaG93ZXZlciwgY2FuJ3Qg YmUgZXhjbHVkZWQgYmVjYXVzZSB0aGV5CiAgKiBtaWdodCBiZSB3aXRoaW4gdHJhbnNhY3Rpb25z IHRoYXQgYXJlIGdvaW5nIHRvIGRvIGFyYml0cmFyeSBvcGVyYXRpb25zCi0gKiBsYXRlci4pICBQ cm9jZXNzZXMgcnVubmluZyBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIG9yIFJFSU5ERVggQ09O Q1VSUkVOVExZCi0gKiBvbiBpbmRleGVzIHRoYXQgYXJlIG5laXRoZXIgZXhwcmVzc2lvbmFsIG5v ciBwYXJ0aWFsIGFyZSBhbHNvIHNhZmUgdG8KLSAqIGlnbm9yZSwgc2luY2Ugd2Uga25vdyB0aGF0 IHRob3NlIHByb2Nlc3NlcyB3b24ndCBleGFtaW5lIGFueSBkYXRhCi0gKiBvdXRzaWRlIHRoZSB0 YWJsZSB0aGV5J3JlIGluZGV4aW5nLgorICogbGF0ZXIuKQogICoKICAqIEFsc28sIEdldEN1cnJl bnRWaXJ0dWFsWElEcyBuZXZlciByZXBvcnRzIG91ciBvd24gdnhpZCwgc28gd2UgbmVlZCBub3QK ICAqIGNoZWNrIGZvciB0aGF0LgpAQCAtNDQyLDggKzQzOCw3IEBAIFdhaXRGb3JPbGRlclNuYXBz aG90cyhUcmFuc2FjdGlvbklkIGxpbWl0WG1pbiwgYm9vbCBwcm9ncmVzcykKIAlWaXJ0dWFsVHJh bnNhY3Rpb25JZCAqb2xkX3NuYXBzaG90czsKIAogCW9sZF9zbmFwc2hvdHMgPSBHZXRDdXJyZW50 VmlydHVhbFhJRHMobGltaXRYbWluLCB0cnVlLCBmYWxzZSwKLQkJCQkJCQkJCQkgIFBST0NfSVNf QVVUT1ZBQ1VVTSB8IFBST0NfSU5fVkFDVVVNCi0JCQkJCQkJCQkJICB8IFBST0NfSU5fU0FGRV9J QywKKwkJCQkJCQkJCQkgIFBST0NfSVNfQVVUT1ZBQ1VVTSB8IFBST0NfSU5fVkFDVVVNLAogCQkJ CQkJCQkJCSAgJm5fb2xkX3NuYXBzaG90cyk7CiAJaWYgKHByb2dyZXNzKQogCQlwZ3N0YXRfcHJv Z3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX1dBSVRGT1JfVE9UQUwsIG5fb2xkX3NuYXBzaG90 cyk7CkBAIC00NjMsOCArNDU4LDcgQEAgV2FpdEZvck9sZGVyU25hcHNob3RzKFRyYW5zYWN0aW9u SWQgbGltaXRYbWluLCBib29sIHByb2dyZXNzKQogCiAJCQluZXdlcl9zbmFwc2hvdHMgPSBHZXRD dXJyZW50VmlydHVhbFhJRHMobGltaXRYbWluLAogCQkJCQkJCQkJCQkJCXRydWUsIGZhbHNlLAot CQkJCQkJCQkJCQkJCVBST0NfSVNfQVVUT1ZBQ1VVTSB8IFBST0NfSU5fVkFDVVVNCi0JCQkJCQkJ CQkJCQkJfCBQUk9DX0lOX1NBRkVfSUMsCisJCQkJCQkJCQkJCQkJUFJPQ19JU19BVVRPVkFDVVVN IHwgUFJPQ19JTl9WQUNVVU0sCiAJCQkJCQkJCQkJCQkJJm5fbmV3ZXJfc25hcHNob3RzKTsKIAkJ CWZvciAoaiA9IGk7IGogPCBuX29sZF9zbmFwc2hvdHM7IGorKykKIAkJCXsKQEAgLTU3OCw3ICs1 NzIsNiBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAlhbW9wdGlvbnNfZnVuY3Rpb24gYW1v cHRpb25zOwogCWJvb2wJCWV4Y2x1c2lvbjsKIAlib29sCQlwYXJ0aXRpb25lZDsKLQlib29sCQlz YWZlX2luZGV4OwogCURhdHVtCQlyZWxvcHRpb25zOwogCWludDE2CSAgICpjb2xvcHRpb25zOwog CUluZGV4SW5mbyAgKmluZGV4SW5mbzsKQEAgLTExODcsMTAgKzExODAsNiBAQCBEZWZpbmVJbmRl eChPaWQgdGFibGVJZCwKIAkJfQogCX0KIAotCS8qIElzIGluZGV4IHNhZmUgZm9yIG90aGVycyB0 byBpZ25vcmU/ICBTZWUgc2V0X2luZGV4c2FmZV9wcm9jZmxhZ3MoKSAqLwotCXNhZmVfaW5kZXgg PSBpbmRleEluZm8tPmlpX0V4cHJlc3Npb25zID09IE5JTCAmJgotCQlpbmRleEluZm8tPmlpX1By ZWRpY2F0ZSA9PSBOSUw7Ci0KIAkvKgogCSAqIFJlcG9ydCBpbmRleCBjcmVhdGlvbiBpZiBhcHBy b3ByaWF0ZSAoZGVsYXkgdGhpcyB0aWxsIGFmdGVyIG1vc3Qgb2YgdGhlCiAJICogZXJyb3IgY2hl Y2tzKQpAQCAtMTY3NywxMCArMTY2Niw2IEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCUNv bW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAK LQkvKiBUZWxsIGNvbmN1cnJlbnQgaW5kZXggYnVpbGRzIHRvIGlnbm9yZSB1cywgaWYgaW5kZXgg cXVhbGlmaWVzICovCi0JaWYgKHNhZmVfaW5kZXgpCi0JCXNldF9pbmRleHNhZmVfcHJvY2ZsYWdz KCk7Ci0KIAkvKgogCSAqIFRoZSBpbmRleCBpcyBub3cgdmlzaWJsZSwgc28gd2UgY2FuIHJlcG9y dCB0aGUgT0lELiAgV2hpbGUgb24gaXQsCiAJICogaW5jbHVkZSB0aGUgcmVwb3J0IGZvciB0aGUg YmVnaW5uaW5nIG9mIHBoYXNlIDIuCkBAIC0xNzM1LDkgKzE3MjAsNiBAQCBEZWZpbmVJbmRleChP aWQgdGFibGVJZCwKIAlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAlTdGFydFRyYW5zYWN0 aW9uQ29tbWFuZCgpOwogCi0JLyogVGVsbCBjb25jdXJyZW50IGluZGV4IGJ1aWxkcyB0byBpZ25v cmUgdXMsIGlmIGluZGV4IHF1YWxpZmllcyAqLwotCWlmIChzYWZlX2luZGV4KQotCQlzZXRfaW5k ZXhzYWZlX3Byb2NmbGFncygpOwogCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JF U1NfQ1JFQVRFSURYX1BIQVNFLAogCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJ VF8yKTsKIAkvKgpAQCAtMTc2NywxMCArMTc0OSw2IEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlk LAogCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5k KCk7CiAKLQkvKiBUZWxsIGNvbmN1cnJlbnQgaW5kZXggYnVpbGRzIHRvIGlnbm9yZSB1cywgaWYg aW5kZXggcXVhbGlmaWVzICovCi0JaWYgKHNhZmVfaW5kZXgpCi0JCXNldF9pbmRleHNhZmVfcHJv Y2ZsYWdzKCk7Ci0KIAkvKgogCSAqIFBoYXNlIDMgb2YgY29uY3VycmVudCBpbmRleCBidWlsZAog CSAqCkBAIC0xNzk2LDkgKzE3NzQsNyBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAogCUNv bW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7Ci0J LyogVGVsbCBjb25jdXJyZW50IGluZGV4IGJ1aWxkcyB0byBpZ25vcmUgdXMsIGlmIGluZGV4IHF1 YWxpZmllcyAqLwotCWlmIChzYWZlX2luZGV4KQotCQlzZXRfaW5kZXhzYWZlX3Byb2NmbGFncygp OworCiAJLyoKIAkgKiBNZXJnZSBjb250ZW50IG9mIGF1eGlsaWFyeSBhbmQgdGFyZ2V0IGluZGV4 ZXMgLSBpbnNlcnQgYW55IG1pc3NpbmcgaW5kZXggZW50cmllcy4KIAkgKi8KQEAgLTE4MTUsOSAr MTc5MSw2IEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCUNvbW1pdFRyYW5zYWN0aW9uQ29t bWFuZCgpOwogCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAKLQkvKiBUZWxsIGNvbmN1cnJl bnQgaW5kZXggYnVpbGRzIHRvIGlnbm9yZSB1cywgaWYgaW5kZXggcXVhbGlmaWVzICovCi0JaWYg KHNhZmVfaW5kZXgpCi0JCXNldF9pbmRleHNhZmVfcHJvY2ZsYWdzKCk7CiAKIAkvKiBXZSBzaG91 bGQgbm93IGRlZmluaXRlbHkgbm90IGJlIGFkdmVydGlzaW5nIGFueSB4bWluLiAqLwogCUFzc2Vy dChNeVByb2MtPnhtaW4gPT0gSW52YWxpZFRyYW5zYWN0aW9uSWQpOwpAQCAtMTg1OCwxMCArMTgz MSw2IEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFu ZCgpOwogCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAKLQkvKiBUZWxsIGNvbmN1cnJlbnQg aW5kZXggYnVpbGRzIHRvIGlnbm9yZSB1cywgaWYgaW5kZXggcXVhbGlmaWVzICovCi0JaWYgKHNh ZmVfaW5kZXgpCi0JCXNldF9pbmRleHNhZmVfcHJvY2ZsYWdzKCk7Ci0KIAlwZ3N0YXRfcHJvZ3Jl c3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRSwKIAkJCQkJCQkgUFJPR1JF U1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRfNSk7CiAJLyogTm93IHdhaXQgZm9yIGFsbCB0cmFuc2Fj dGlvbiB0byBzZWUgYXV4aWxpYXJ5IGFzICJub24tcmVhZHkgZm9yIGluc2VydHMiICovCkBAIC0x ODgyLDEwICsxODUxLDYgQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJQ29tbWl0VHJhbnNh Y3Rpb25Db21tYW5kKCk7CiAJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAotCS8qIFRlbGwg Y29uY3VycmVudCBpbmRleCBidWlsZHMgdG8gaWdub3JlIHVzLCBpZiBpbmRleCBxdWFsaWZpZXMg Ki8KLQlpZiAoc2FmZV9pbmRleCkKLQkJc2V0X2luZGV4c2FmZV9wcm9jZmxhZ3MoKTsKLQogCXBn c3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFLAogCQkJ CQkJCSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF82KTsKIAkvKiBOb3cgd2FpdCBmb3Ig YWxsIHRyYW5zYWN0aW9uIHRvIGlnbm9yZSBhdXhpbGlhcnkgYmVjYXVzZSBpdCBpcyBkZWFkICov CkBAIC0zNjI1LDcgKzM1OTAsNiBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3Qg UmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCQlPaWQJCQlh dXhJbmRleElkOwogCQlPaWQJCQl0YWJsZUlkOwogCQlPaWQJCQlhbUlkOwotCQlib29sCQlzYWZl OwkJLyogZm9yIHNldF9pbmRleHNhZmVfcHJvY2ZsYWdzICovCiAJfSBSZWluZGV4SW5kZXhJbmZv OwogCUxpc3QJICAgKmhlYXBSZWxhdGlvbklkcyA9IE5JTDsKIAlMaXN0CSAgICppbmRleElkcyA9 IE5JTDsKQEAgLTM5OTcsMTcgKzM5NjEsNiBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHko Y29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCQlz YXZlX25lc3RsZXZlbCA9IE5ld0dVQ05lc3RMZXZlbCgpOwogCQlSZXN0cmljdFNlYXJjaFBhdGgo KTsKIAotCQkvKiBkZXRlcm1pbmUgc2FmZXR5IG9mIHRoaXMgaW5kZXggZm9yIHNldF9pbmRleHNh ZmVfcHJvY2ZsYWdzICovCi0JCWlkeC0+c2FmZSA9IChSZWxhdGlvbkdldEluZGV4RXhwcmVzc2lv bnMoaW5kZXhSZWwpID09IE5JTCAmJgotCQkJCQkgUmVsYXRpb25HZXRJbmRleFByZWRpY2F0ZShp bmRleFJlbCkgPT0gTklMKTsKLQotI2lmZGVmIFVTRV9JTkpFQ1RJT05fUE9JTlRTCi0JCWlmIChp ZHgtPnNhZmUpCi0JCQlJTkpFQ1RJT05fUE9JTlQoInJlaW5kZXgtY29uYy1pbmRleC1zYWZlIik7 Ci0JCWVsc2UKLQkJCUlOSkVDVElPTl9QT0lOVCgicmVpbmRleC1jb25jLWluZGV4LW5vdC1zYWZl Iik7Ci0jZW5kaWYKLQogCQlpZHgtPnRhYmxlSWQgPSBSZWxhdGlvbkdldFJlbGlkKGhlYXBSZWwp OwogCQlpZHgtPmFtSWQgPSBpbmRleFJlbC0+cmRfcmVsLT5yZWxhbTsKIApAQCAtNDA2Nyw3ICs0 MDIwLDYgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpz dG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkJbmV3aWR4ID0gcGFsbG9jX29iamVj dChSZWluZGV4SW5kZXhJbmZvKTsKIAkJbmV3aWR4LT5pbmRleElkID0gbmV3SW5kZXhJZDsKIAkJ bmV3aWR4LT5hdXhJbmRleElkID0gYXV4SW5kZXhJZDsKLQkJbmV3aWR4LT5zYWZlID0gaWR4LT5z YWZlOwogCQluZXdpZHgtPnRhYmxlSWQgPSBpZHgtPnRhYmxlSWQ7CiAJCW5ld2lkeC0+YW1JZCA9 IGlkeC0+YW1JZDsKIApAQCAtNDE2MCwxMSArNDExMiw2IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1 cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBS ZWluCiAJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAJU3RhcnRUcmFuc2FjdGlvbkNvbW1h bmQoKTsKIAotCS8qCi0JICogQmVjYXVzZSB3ZSBkb24ndCB0YWtlIGEgc25hcHNob3QgaW4gdGhp cyB0cmFuc2FjdGlvbiwgdGhlcmUncyBubyBuZWVkCi0JICogdG8gc2V0IHRoZSBQUk9DX0lOX1NB RkVfSUMgZmxhZyBoZXJlLgotCSAqLwotCiAJLyoKIAkgKiBQaGFzZSAyIG9mIFJFSU5ERVggQ09O Q1VSUkVOVExZCiAJICoKQEAgLTQxOTUsMTAgKzQxNDIsNiBAQCBSZWluZGV4UmVsYXRpb25Db25j dXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3Qg UmVpbgogCQkgKi8KIAkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIAotCQkvKiBUZWxsIGNvbmN1 cnJlbnQgaW5kZXhpbmcgdG8gaWdub3JlIHVzLCBpZiBpbmRleCBxdWFsaWZpZXMgKi8KLQkJaWYg KG5ld2lkeC0+c2FmZSkKLQkJCXNldF9pbmRleHNhZmVfcHJvY2ZsYWdzKCk7Ci0KIAkJLyogQnVp bGQgYXV4aWxpYXJ5IGluZGV4LCBpdCBpcyBmYXN0IC0gd2l0aG91dCBhbnkgYWN0dWFsIGhlYXAg c2NhbiwganVzdCBhbiBlbXB0eSBpbmRleC4gKi8KIAkJaW5kZXhfY29uY3VycmVudGx5X2J1aWxk KG5ld2lkeC0+dGFibGVJZCwgbmV3aWR4LT5hdXhJbmRleElkKTsKIApAQCAtNDIwNywxMSArNDE1 MCw2IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3Rt dCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAKIAlTdGFydFRyYW5zYWN0aW9uQ29tbWFu ZCgpOwogCi0JLyoKLQkgKiBCZWNhdXNlIHdlIGRvbid0IHRha2UgYSBzbmFwc2hvdCBpbiB0aGlz IHRyYW5zYWN0aW9uLCB0aGVyZSdzIG5vIG5lZWQKLQkgKiB0byBzZXQgdGhlIFBST0NfSU5fU0FG RV9JQyBmbGFnIGhlcmUuCi0JICovCi0KIAlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBS T0dSRVNTX0NSRUFURUlEWF9QSEFTRSwKIAkJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlEWF9QSEFT RV9XQUlUXzIpOwogCS8qCkBAIC00MjM2LDEwICs0MTc0LDYgQEAgUmVpbmRleFJlbGF0aW9uQ29u Y3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0 IFJlaW4KIAkJICovCiAJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAKLQkJLyogVGVsbCBjb25j dXJyZW50IGluZGV4aW5nIHRvIGlnbm9yZSB1cywgaWYgaW5kZXggcXVhbGlmaWVzICovCi0JCWlm IChuZXdpZHgtPnNhZmUpCi0JCQlzZXRfaW5kZXhzYWZlX3Byb2NmbGFncygpOwotCiAJCS8qCiAJ CSAqIFVwZGF0ZSBwcm9ncmVzcyBmb3IgdGhlIGluZGV4IHRvIGJ1aWxkLCB3aXRoIHRoZSBjb3Jy ZWN0IHBhcmVudAogCQkgKiB0YWJsZSBpbnZvbHZlZC4KQEAgLTQyNTksMTEgKzQxOTMsNiBAQCBS ZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCBy ZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCiAJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAot CS8qCi0JICogQmVjYXVzZSB3ZSBkb24ndCB0YWtlIGEgc25hcHNob3Qgb3IgWGlkIGluIHRoaXMg dHJhbnNhY3Rpb24sIHRoZXJlJ3Mgbm8KLQkgKiBuZWVkIHRvIHNldCB0aGUgUFJPQ19JTl9TQUZF X0lDIGZsYWcgaGVyZS4KLQkgKi8KLQogCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJP R1JFU1NfQ1JFQVRFSURYX1BIQVNFLAogCQkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNF X1dBSVRfMyk7CiAJV2FpdEZvckxvY2tlcnNNdWx0aXBsZShsb2NrVGFncywgU2hhcmVMb2NrLCB0 cnVlKTsKQEAgLTQyODQsMTAgKzQyMTMsNiBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHko Y29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCQkg Ki8KIAkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIAotCQkvKiBUZWxsIGNvbmN1cnJlbnQgaW5k ZXhpbmcgdG8gaWdub3JlIHVzLCBpZiBpbmRleCBxdWFsaWZpZXMgKi8KLQkJaWYgKG5ld2lkeC0+ c2FmZSkKLQkJCXNldF9pbmRleHNhZmVfcHJvY2ZsYWdzKCk7Ci0KIAkJLyoKIAkJICogVXBkYXRp bmcgcGdfaW5kZXggbWlnaHQgaW52b2x2ZSBUT0FTVCB0YWJsZSBhY2Nlc3MsIHNvIGVuc3VyZSB3 ZQogCQkgKiBoYXZlIGEgdmFsaWQgc25hcHNob3QuCkBAIC00MzIwLDEwICs0MjQ1LDYgQEAgUmVp bmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVs YXRpb25PaWQsIGNvbnN0IFJlaW4KIAkJICovCiAJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAK LQkJLyogVGVsbCBjb25jdXJyZW50IGluZGV4aW5nIHRvIGlnbm9yZSB1cywgaWYgaW5kZXggcXVh bGlmaWVzICovCi0JCWlmIChuZXdpZHgtPnNhZmUpCi0JCQlzZXRfaW5kZXhzYWZlX3Byb2NmbGFn cygpOwotCiAJCS8qCiAJCSAqIFVwZGF0ZSBwcm9ncmVzcyBmb3IgdGhlIGluZGV4IHRvIGJ1aWxk LCB3aXRoIHRoZSBjb3JyZWN0IHBhcmVudAogCQkgKiB0YWJsZSBpbnZvbHZlZC4KQEAgLTQzNTEs OSArNDI3Miw2IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3Rt dCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJCSAqIGludGVyZXN0aW5nIHR1 cGxlcy4gIEJ1dCBzaW5jZSBpdCBtaWdodCBub3QgY29udGFpbiB0dXBsZXMgZGVsZXRlZAogCQkg KiBqdXN0IGJlZm9yZSB0aGUgbGF0ZXN0IHNuYXAgd2FzIHRha2VuLCB3ZSBoYXZlIHRvIHdhaXQg b3V0IGFueQogCQkgKiB0cmFuc2FjdGlvbnMgdGhhdCBtaWdodCBoYXZlIG9sZGVyIHNuYXBzaG90 cy4KLQkJICoKLQkJICogQmVjYXVzZSB3ZSBkb24ndCB0YWtlIGEgc25hcHNob3Qgb3IgWGlkIGlu IHRoaXMgdHJhbnNhY3Rpb24sCi0JCSAqIHRoZXJlJ3Mgbm8gbmVlZCB0byBzZXQgdGhlIFBST0Nf SU5fU0FGRV9JQyBmbGFnIGhlcmUuCiAJCSAqLwogCQlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3Bh cmFtKFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRSwKIAkJCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJ RFhfUEhBU0VfV0FJVF80KTsKQEAgLTQzNzUsMTMgKzQyOTMsNiBAQCBSZWluZGV4UmVsYXRpb25D b25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29u c3QgUmVpbgogCUlOSkVDVElPTl9QT0lOVCgicmVpbmRleF9yZWxhdGlvbl9jb25jdXJyZW50bHlf YmVmb3JlX3N3YXAiKTsKIAlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCi0JLyoKLQkgKiBC ZWNhdXNlIHRoaXMgdHJhbnNhY3Rpb24gb25seSBkb2VzIGNhdGFsb2cgbWFuaXB1bGF0aW9ucyBh bmQgZG9lc24ndCBkbwotCSAqIGFueSBpbmRleCBvcGVyYXRpb25zLCB3ZSBjYW4gc2V0IHRoZSBQ Uk9DX0lOX1NBRkVfSUMgZmxhZyBoZXJlCi0JICogdW5jb25kaXRpb25hbGx5LgotCSAqLwotCXNl dF9pbmRleHNhZmVfcHJvY2ZsYWdzKCk7Ci0KIAlmb3Jib3RoKGxjLCBpbmRleElkcywgbGMyLCBu ZXdJbmRleElkcykKIAl7CiAJCVJlaW5kZXhJbmRleEluZm8gKm9sZGlkeCA9IGxmaXJzdChsYyk7 CkBAIC00NDM3LDEyICs0MzQ4LDYgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0 IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAlDb21taXRU cmFuc2FjdGlvbkNvbW1hbmQoKTsKIAlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCi0JLyoK LQkgKiBXaGlsZSB3ZSBjb3VsZCBzZXQgUFJPQ19JTl9TQUZFX0lDIGlmIGFsbCBpbmRleGVzIHF1 YWxpZmllZCwgdGhlcmUncyBubwotCSAqIHJlYWwgbmVlZCBmb3IgdGhhdCwgYmVjYXVzZSB3ZSBv bmx5IGFjcXVpcmUgYW4gWGlkIGFmdGVyIHRoZSB3YWl0IGlzCi0JICogZG9uZSwgYW5kIHRoYXQg bGFzdHMgZm9yIGEgdmVyeSBzaG9ydCBwZXJpb2QuCi0JICovCi0KIAkvKgogCSAqIFBoYXNlIDUg b2YgUkVJTkRFWCBDT05DVVJSRU5UTFkKIAkgKgpAQCAtNDUwNCwxMiArNDQwOSw2IEBAIFJlaW5k ZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0 aW9uT2lkLCBjb25zdCBSZWluCiAJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAJU3RhcnRU cmFuc2FjdGlvbkNvbW1hbmQoKTsKIAotCS8qCi0JICogV2hpbGUgd2UgY291bGQgc2V0IFBST0Nf SU5fU0FGRV9JQyBpZiBhbGwgaW5kZXhlcyBxdWFsaWZpZWQsIHRoZXJlJ3Mgbm8KLQkgKiByZWFs IG5lZWQgZm9yIHRoYXQsIGJlY2F1c2Ugd2Ugb25seSBhY3F1aXJlIGFuIFhpZCBhZnRlciB0aGUg d2FpdCBpcwotCSAqIGRvbmUsIGFuZCB0aGF0IGxhc3RzIGZvciBhIHZlcnkgc2hvcnQgcGVyaW9k LgotCSAqLwotCiAJLyoKIAkgKiBQaGFzZSA2IG9mIFJFSU5ERVggQ09OQ1VSUkVOVExZCiAJICoK QEAgLTQ3NjksMzYgKzQ2NjgsMyBAQCB1cGRhdGVfcmVsaXNwYXJ0aXRpb24oT2lkIHJlbGF0aW9u SWQsIGJvb2wgbmV3dmFsKQogCXRhYmxlX2Nsb3NlKGNsYXNzUmVsLCBSb3dFeGNsdXNpdmVMb2Nr KTsKIH0KIAotLyoKLSAqIFNldCB0aGUgUFJPQ19JTl9TQUZFX0lDIGZsYWcgaW4gTXlQcm9jLT5z dGF0dXNGbGFncy4KLSAqCi0gKiBXaGVuIGRvaW5nIGNvbmN1cnJlbnQgaW5kZXggYnVpbGRzLCB3 ZSBjYW4gc2V0IHRoaXMgZmxhZwotICogdG8gdGVsbCBvdGhlciBwcm9jZXNzZXMgY29uY3VycmVu dGx5IHJ1bm5pbmcgQ1JFQVRFCi0gKiBJTkRFWCBDT05DVVJSRU5UTFkgb3IgUkVJTkRFWCBDT05D VVJSRU5UTFkgdG8gaWdub3JlIHVzIHdoZW4KLSAqIGRvaW5nIHRoZWlyIHdhaXRzIGZvciBjb25j dXJyZW50IHNuYXBzaG90cy4gIE9uIG9uZSBoYW5kIGl0Ci0gKiBhdm9pZHMgcG9pbnRsZXNzbHkg d2FpdGluZyBmb3IgYSBwcm9jZXNzIHRoYXQncyBub3QgaW50ZXJlc3RpbmcKLSAqIGFueXdheTsg YnV0IG1vcmUgaW1wb3J0YW50bHkgaXQgYXZvaWRzIGRlYWRsb2NrcyBpbiBzb21lIGNhc2VzLgot ICoKLSAqIFRoaXMgY2FuIGJlIGRvbmUgc2FmZWx5IG9ubHkgZm9yIGluZGV4ZXMgdGhhdCBkb24n dCBleGVjdXRlIGFueQotICogZXhwcmVzc2lvbnMgdGhhdCBjb3VsZCBhY2Nlc3Mgb3RoZXIgdGFi bGVzLCBzbyBpbmRleCBtdXN0IG5vdCBiZQotICogZXhwcmVzc2lvbmFsIG5vciBwYXJ0aWFsLiAg Q2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciBvbmx5IGNhbGxpbmcKLSAqIHRoaXMgcm91dGluZSB3 aGVuIHRoYXQgYXNzdW1wdGlvbiBob2xkcyB0cnVlLgotICoKLSAqIChUaGUgZmxhZyBpcyByZXNl dCBhdXRvbWF0aWNhbGx5IGF0IHRyYW5zYWN0aW9uIGVuZCwgc28gaXQgbXVzdCBiZQotICogc2V0 IGZvciBlYWNoIHRyYW5zYWN0aW9uLikKLSAqLwotc3RhdGljIGlubGluZSB2b2lkCi1zZXRfaW5k ZXhzYWZlX3Byb2NmbGFncyh2b2lkKQotewotCS8qCi0JICogVGhpcyBzaG91bGQgb25seSBiZSBj YWxsZWQgYmVmb3JlIGluc3RhbGxpbmcgeGlkIG9yIHhtaW4gaW4gTXlQcm9jOwotCSAqIG90aGVy d2lzZSwgY29uY3VycmVudCBwcm9jZXNzZXMgY291bGQgc2VlIGFuIFhtaW4gdGhhdCBtb3ZlcyBi YWNrd2FyZHMuCi0JICovCi0JQXNzZXJ0KE15UHJvYy0+eGlkID09IEludmFsaWRUcmFuc2FjdGlv bklkICYmCi0JCSAgIE15UHJvYy0+eG1pbiA9PSBJbnZhbGlkVHJhbnNhY3Rpb25JZCk7Ci0KLQlM V0xvY2tBY3F1aXJlKFByb2NBcnJheUxvY2ssIExXX0VYQ0xVU0lWRSk7Ci0JTXlQcm9jLT5zdGF0 dXNGbGFncyB8PSBQUk9DX0lOX1NBRkVfSUM7Ci0JUHJvY0dsb2JhbC0+c3RhdHVzRmxhZ3NbTXlQ cm9jLT5wZ3hhY3RvZmZdID0gTXlQcm9jLT5zdGF0dXNGbGFnczsKLQlMV0xvY2tSZWxlYXNlKFBy b2NBcnJheUxvY2spOwotfQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jLmgg Yi9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2MuaAppbmRleCAyMDc3N2Y3ZDVhZS4uNGJkMjRiYzAy ZDQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvYy5oCisrKyBiL3NyYy9pbmNs dWRlL3N0b3JhZ2UvcHJvYy5oCkBAIC01NiwxMCArNTYsNiBAQCBzdHJ1Y3QgWGlkQ2FjaGUKICAq LwogI2RlZmluZQkJUFJPQ19JU19BVVRPVkFDVVVNCTB4MDEJLyogaXMgaXQgYW4gYXV0b3ZhYyB3 b3JrZXI/ICovCiAjZGVmaW5lCQlQUk9DX0lOX1ZBQ1VVTQkJMHgwMgkvKiBjdXJyZW50bHkgcnVu bmluZyBsYXp5IHZhY3V1bSAqLwotI2RlZmluZQkJUFJPQ19JTl9TQUZFX0lDCQkweDA0CS8qIGN1 cnJlbnRseSBydW5uaW5nIENSRUFURSBJTkRFWAotCQkJCQkJCQkJCSAqIENPTkNVUlJFTlRMWSBv ciBSRUlOREVYCi0JCQkJCQkJCQkJICogQ09OQ1VSUkVOVExZIG9uIG5vbi1leHByZXNzaW9uYWws Ci0JCQkJCQkJCQkJICogbm9uLXBhcnRpYWwgaW5kZXggKi8KICNkZWZpbmUJCVBST0NfVkFDVVVN X0ZPUl9XUkFQQVJPVU5ECTB4MDgJLyogc2V0IGJ5IGF1dG92YWMgb25seSAqLwogI2RlZmluZQkJ UFJPQ19JTl9MT0dJQ0FMX0RFQ09ESU5HCTB4MTAJLyogY3VycmVudGx5IGRvaW5nIGxvZ2ljYWwK IAkJCQkJCQkJCQkJCSAqIGRlY29kaW5nIG91dHNpZGUgeGFjdCAqLwpAQCAtNjksMTMgKzY1LDEz IEBAIHN0cnVjdCBYaWRDYWNoZQogCiAvKiBmbGFncyByZXNldCBhdCBFT1hhY3QgKi8KICNkZWZp bmUJCVBST0NfVkFDVVVNX1NUQVRFX01BU0sgXAotCShQUk9DX0lOX1ZBQ1VVTSB8IFBST0NfSU5f U0FGRV9JQyB8IFBST0NfVkFDVVVNX0ZPUl9XUkFQQVJPVU5EKQorCShQUk9DX0lOX1ZBQ1VVTSB8 IFBST0NfVkFDVVVNX0ZPUl9XUkFQQVJPVU5EKQogCiAvKgogICogWG1pbi1yZWxhdGVkIGZsYWdz LiBNYWtlIHN1cmUgYW55IGZsYWdzIHRoYXQgYWZmZWN0IGhvdyB0aGUgcHJvY2VzcycgWG1pbgog ICogdmFsdWUgaXMgaW50ZXJwcmV0ZWQgYnkgVkFDVVVNIGFyZSBpbmNsdWRlZCBoZXJlLgogICov Ci0jZGVmaW5lCQlQUk9DX1hNSU5fRkxBR1MgKFBST0NfSU5fVkFDVVVNIHwgUFJPQ19JTl9TQUZF X0lDKQorI2RlZmluZQkJUFJPQ19YTUlOX0ZMQUdTIChQUk9DX0lOX1ZBQ1VVTSkKIAogLyoKICAq IFdlIGFsbG93IGEgbGltaXRlZCBudW1iZXIgb2YgIndlYWsiIHJlbGF0aW9uIGxvY2tzIChBY2Nl c3NTaGFyZUxvY2ssCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2lu dHMvTWFrZWZpbGUgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvTWFrZWZpbGUK aW5kZXggMTlkMjY0MDhjMmEuLjgyYWNmMzAwNmJkIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1 bGVzL2luamVjdGlvbl9wb2ludHMvTWFrZWZpbGUKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmpl Y3Rpb25fcG9pbnRzL01ha2VmaWxlCkBAIC0xMSw3ICsxMSw3IEBAIEVYVEVOU0lPTiA9IGluamVj dGlvbl9wb2ludHMKIERBVEEgPSBpbmplY3Rpb25fcG9pbnRzLS0xLjAuc3FsCiBQR0ZJTEVERVND ID0gImluamVjdGlvbl9wb2ludHMgLSBmYWNpbGl0eSBmb3IgaW5qZWN0aW9uIHBvaW50cyIKIAot UkVHUkVTUyA9IGluamVjdGlvbl9wb2ludHMgaGFzaGFnZyByZWluZGV4X2NvbmMgY2ljX3Jlc2V0 X3NuYXBzaG90cworUkVHUkVTUyA9IGluamVjdGlvbl9wb2ludHMgaGFzaGFnZyBjaWNfcmVzZXRf c25hcHNob3RzCiBSRUdSRVNTX09QVFMgPSAtLWRscGF0aD0kKHRvcF9idWlsZGRpcikvc3JjL3Rl c3QvcmVncmVzcwogCiBJU09MQVRJT04gPSBiYXNpYyBpbnBsYWNlIHN5c2NhY2hlLXVwZGF0ZS1w cnVuZWQKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBl Y3RlZC9yZWluZGV4X2NvbmMub3V0IGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRz L2V4cGVjdGVkL3JlaW5kZXhfY29uYy5vdXQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IGRiOGRlNGJiZTg1Li4wMDAwMDAwMDAwMAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlv bl9wb2ludHMvZXhwZWN0ZWQvcmVpbmRleF9jb25jLm91dAorKysgL2Rldi9udWxsCkBAIC0xLDUx ICswLDAgQEAKLS0tIFRlc3RzIGZvciBSRUlOREVYIENPTkNVUlJFTlRMWQotQ1JFQVRFIEVYVEVO U0lPTiBpbmplY3Rpb25fcG9pbnRzOwotLS0gQ2hlY2sgc2FmZXR5IG9mIGluZGV4ZXMgd2l0aCBw cmVkaWNhdGVzIGFuZCBleHByZXNzaW9ucy4KLVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3NldF9s b2NhbCgpOwotIGluamVjdGlvbl9wb2ludHNfc2V0X2xvY2FsIAotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQotIAotKDEgcm93KQotCi1TRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2go J3JlaW5kZXgtY29uYy1pbmRleC1zYWZlJywgJ25vdGljZScpOwotIGluamVjdGlvbl9wb2ludHNf YXR0YWNoIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIAotKDEgcm93KQotCi1TRUxFQ1Qg aW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ3JlaW5kZXgtY29uYy1pbmRleC1ub3Qtc2FmZScsICdu b3RpY2UnKTsKLSBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KLSAKLSgxIHJvdykKLQotQ1JFQVRFIFNDSEVNQSByZWluZGV4X2luajsKLUNSRUFURSBU QUJMRSByZWluZGV4X2luai50YmwoaSBpbnQgcHJpbWFyeSBrZXksIHVwZGF0ZWRfYXQgdGltZXN0 YW1wKTsKLUNSRUFURSBVTklRVUUgSU5ERVggaW5kX3NpbXBsZSBPTiByZWluZGV4X2luai50Ymwo aSk7Ci1DUkVBVEUgVU5JUVVFIElOREVYIGluZF9leHByIE9OIHJlaW5kZXhfaW5qLnRibChBQlMo aSkpOwotQ1JFQVRFIFVOSVFVRSBJTkRFWCBpbmRfcHJlZCBPTiByZWluZGV4X2luai50YmwoaSkg V0hFUkUgbW9kKGksIDIpID0gMDsKLUNSRUFURSBVTklRVUUgSU5ERVggaW5kX2V4cHJfcHJlZCBP TiByZWluZGV4X2luai50YmwoYWJzKGkpKSBXSEVSRSBtb2QoaSwgMikgPSAwOwotUkVJTkRFWCBJ TkRFWCBDT05DVVJSRU5UTFkgcmVpbmRleF9pbmouaW5kX3NpbXBsZTsKLU5PVElDRTogIG5vdGlj ZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCByZWluZGV4LWNvbmMtaW5kZXgtc2FmZQot UkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgcmVpbmRleF9pbmouaW5kX2V4cHI7Ci1OT1RJQ0U6 ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgcmVpbmRleC1jb25jLWluZGV4 LW5vdC1zYWZlCi1SRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSByZWluZGV4X2luai5pbmRfcHJl ZDsKLU5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCByZWluZGV4 LWNvbmMtaW5kZXgtbm90LXNhZmUKLVJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIHJlaW5kZXhf aW5qLmluZF9leHByX3ByZWQ7Ci1OT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rp b24gcG9pbnQgcmVpbmRleC1jb25jLWluZGV4LW5vdC1zYWZlCi0tLSBDbGVhbnVwCi1TRUxFQ1Qg aW5qZWN0aW9uX3BvaW50c19kZXRhY2goJ3JlaW5kZXgtY29uYy1pbmRleC1zYWZlJyk7Ci0gaW5q ZWN0aW9uX3BvaW50c19kZXRhY2ggCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gCi0oMSBy b3cpCi0KLVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2RldGFjaCgncmVpbmRleC1jb25jLWluZGV4 LW5vdC1zYWZlJyk7Ci0gaW5qZWN0aW9uX3BvaW50c19kZXRhY2ggCi0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCi0gCi0oMSByb3cpCi0KLURST1AgVEFCTEUgcmVpbmRleF9pbmoudGJsOwotRFJP UCBTQ0hFTUEgcmVpbmRleF9pbmo7Ci1EUk9QIEVYVEVOU0lPTiBpbmplY3Rpb25fcG9pbnRzOwpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL21lc29uLmJ1aWxk IGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL21lc29uLmJ1aWxkCmluZGV4IDg0 NzZiZmU3MmE3Li5iZGRmMjJkZjNhYyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy9pbmpl Y3Rpb25fcG9pbnRzL21lc29uLmJ1aWxkCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9u X3BvaW50cy9tZXNvbi5idWlsZApAQCAtMzYsNyArMzYsNiBAQCB0ZXN0cyArPSB7CiAgICAgJ3Nx bCc6IFsKICAgICAgICdpbmplY3Rpb25fcG9pbnRzJywKICAgICAgICdoYXNoYWdnJywKLSAgICAg ICdyZWluZGV4X2NvbmMnLAogICAgICAgJ2NpY19yZXNldF9zbmFwc2hvdHMnLAogICAgIF0sCiAg ICAgJ3JlZ3Jlc3NfYXJncyc6IFsnLS1kbHBhdGgnLCBtZXNvbi5idWlsZF9yb290KCkgLyAnc3Jj L3Rlc3QvcmVncmVzcyddLApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25f cG9pbnRzL3NxbC9yZWluZGV4X2NvbmMuc3FsIGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25f cG9pbnRzL3NxbC9yZWluZGV4X2NvbmMuc3FsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCA2Y2YyMTFlNmQ1ZC4uMDAwMDAwMDAwMDAKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rp b25fcG9pbnRzL3NxbC9yZWluZGV4X2NvbmMuc3FsCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAs MCBAQAotLS0gVGVzdHMgZm9yIFJFSU5ERVggQ09OQ1VSUkVOVExZCi1DUkVBVEUgRVhURU5TSU9O IGluamVjdGlvbl9wb2ludHM7Ci0KLS0tIENoZWNrIHNhZmV0eSBvZiBpbmRleGVzIHdpdGggcHJl ZGljYXRlcyBhbmQgZXhwcmVzc2lvbnMuCi1TRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19zZXRfbG9j YWwoKTsKLVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgncmVpbmRleC1jb25jLWluZGV4 LXNhZmUnLCAnbm90aWNlJyk7Ci1TRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ3JlaW5k ZXgtY29uYy1pbmRleC1ub3Qtc2FmZScsICdub3RpY2UnKTsKLQotQ1JFQVRFIFNDSEVNQSByZWlu ZGV4X2luajsKLUNSRUFURSBUQUJMRSByZWluZGV4X2luai50YmwoaSBpbnQgcHJpbWFyeSBrZXks IHVwZGF0ZWRfYXQgdGltZXN0YW1wKTsKLQotQ1JFQVRFIFVOSVFVRSBJTkRFWCBpbmRfc2ltcGxl IE9OIHJlaW5kZXhfaW5qLnRibChpKTsKLUNSRUFURSBVTklRVUUgSU5ERVggaW5kX2V4cHIgT04g cmVpbmRleF9pbmoudGJsKEFCUyhpKSk7Ci1DUkVBVEUgVU5JUVVFIElOREVYIGluZF9wcmVkIE9O IHJlaW5kZXhfaW5qLnRibChpKSBXSEVSRSBtb2QoaSwgMikgPSAwOwotQ1JFQVRFIFVOSVFVRSBJ TkRFWCBpbmRfZXhwcl9wcmVkIE9OIHJlaW5kZXhfaW5qLnRibChhYnMoaSkpIFdIRVJFIG1vZChp LCAyKSA9IDA7Ci0KLVJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIHJlaW5kZXhfaW5qLmluZF9z aW1wbGU7Ci1SRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSByZWluZGV4X2luai5pbmRfZXhwcjsK LVJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIHJlaW5kZXhfaW5qLmluZF9wcmVkOwotUkVJTkRF WCBJTkRFWCBDT05DVVJSRU5UTFkgcmVpbmRleF9pbmouaW5kX2V4cHJfcHJlZDsKLQotLS0gQ2xl YW51cAotU0VMRUNUIGluamVjdGlvbl9wb2ludHNfZGV0YWNoKCdyZWluZGV4LWNvbmMtaW5kZXgt c2FmZScpOwotU0VMRUNUIGluamVjdGlvbl9wb2ludHNfZGV0YWNoKCdyZWluZGV4LWNvbmMtaW5k ZXgtbm90LXNhZmUnKTsKLURST1AgVEFCTEUgcmVpbmRleF9pbmoudGJsOwotRFJPUCBTQ0hFTUEg cmVpbmRleF9pbmo7Ci0KLURST1AgRVhURU5TSU9OIGluamVjdGlvbl9wb2ludHM7Ci0tIAoyLjQz LjAKCg== --0000000000007d5b96062e941445--