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.96) (envelope-from ) id 1wFyWb-005lAl-03 for pgsql-hackers@arkaria.postgresql.org; Thu, 23 Apr 2026 18:11:41 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wFyWZ-002ivS-07 for pgsql-hackers@arkaria.postgresql.org; Thu, 23 Apr 2026 18:11:39 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wFyWY-002iti-1x for pgsql-hackers@lists.postgresql.org; Thu, 23 Apr 2026 18:11:38 +0000 Received: from mail-oo1-xc33.google.com ([2607:f8b0:4864:20::c33]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wFyWQ-00000002h9t-0UW6 for pgsql-hackers@postgresql.org; Thu, 23 Apr 2026 18:11:33 +0000 Received: by mail-oo1-xc33.google.com with SMTP id 006d021491bc7-69486849135so1629845eaf.2 for ; Thu, 23 Apr 2026 11:11:29 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1776967886; cv=none; d=google.com; s=arc-20240605; b=EW9QOUB+0h36ruayJD4FYtCUG2Lc+8HxNUQsmQ3G5Y3F32Ftb6ODGcuw0yObwpGOQl ZeRa6d4/7VbTjxTUHzHtOT1eSfSDQSVW+zFgbSa20MNpMpTjZ9QJyeofH3+LtDpRDZf+ /wc7asmki8IwXmGdI7vrrNUGF0GREmf7gbSypfCDGBisInEDYwtOEv/uktO43tkRU5od p7jFHDhvhtnJ0dWuCliWGyeSs3C/CEx073HWUOw8T2O311Mzh7qIN8q4Kah60XdmGsS4 Ga5Edv/ny2jrqlAdTN7ReX0tKHtTybD8whK1Fjr9bFiAZawuv8Zwr6qRQqpUYFE0gHkc cqOw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=8mTK9lizJMJjmK1HLa/JusKXLguCM7mjWythIpIDodo=; fh=0NHZ9sMxIbeIaGB6SoFik4b1jpEjSwJ4McDSUddO5LQ=; b=d23iWy/qK/12i7iuK47xPQdmh35COUe/BP091YA9vu9AhBtnhWGxPL7p4sprOMEdAN 2BZYhx64sDS33aHB8doCNSfKiNjeAKknPUoFxcb4H4dO8M0BxwSI7edJ5Ohwsz8bdArh 56bSsucedDPgAUUydDISpLNdQi7Gx1PEh7mVRYt8T2XBPYYP0GEGCdHZKyZCtl4p3xy+ ZztERbkls5kP90xWJzhpisPkibJ15/cjovrohTE4qjnNZfvf6dAylBPARIDOOw9y/RtK 198yUZ94VVRiz9IHymru0RjGJuOYecM6oX5CskRX7fdngE7D2HkUnSyYgBFlxHkvTJn2 Q11g==; darn=postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1776967886; x=1777572686; 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=8mTK9lizJMJjmK1HLa/JusKXLguCM7mjWythIpIDodo=; b=jU0gM8yFMT6oNYSHK6Ch1b+rd4HnyMe5YH1Te4PcJpAFYaJupGMsnQoxs4oq6gQ6oZ Rha80a7LSC1Jr8H9CgHL55Zd/0+bLIHMD959uN4qb4eGlbAuBmgFc6WTbyYrp/5if7eZ JeL0DUhzsRFRbzgmCxog7znHgsEWvsnegXc/F8fB4XcKL7biitBAIn+clOHEphNuaK0E QdqIVDHwBafjSQde7FFtqU4Ab4o+N+aZPrebwbxeiR1cCEt5UHouDu0K7NFUg4TldhV9 FUr4qJ2qP1DlUuzKrydHLe0ZXWkSeF4ZNQuvQ0NmTw8GW1gYrYHkFURpZ3/blb1MOoGi +9CQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776967886; x=1777572686; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=8mTK9lizJMJjmK1HLa/JusKXLguCM7mjWythIpIDodo=; b=LWwucvjFP8SCddyHgBVM+QyJzD7crxdicAQGfF0oQrclMG7ON1tr0QRnmUQuHaMps6 yo2XJJ9b/p5Np6g7RXOTy1PPSEYBPHT4tjhwef/w9AdmTzjakC0J9LCZ0ReqGuc2oWzF A8igwKHZQ9ywKv4cGvxapBKhbCEJYaORtXEw3yI+jEpJ17bG+yquVswB+SDWiZyzGje1 YZjdZBranxIltroMJMCo8Rr8Ipl/wkrlGCIoFmRmquGjAW2ycmITDKYELAxTDADgGeqT dji6+ud7q/4EEpbHfP4qoNzJz/qAeA/Y36MYuW6WM+SpQnfUuM1LN1ncgFef4YwCCWKF AuUQ== X-Forwarded-Encrypted: i=1; AFNElJ+BDN1cu/Ou26/Tu2eKaP38YvIOUpIkI+ShvG3Pq5CBZ3a/W26LU+Xradgr7mIZdWsoK6oLKJu3o0q6QN7D@postgresql.org X-Gm-Message-State: AOJu0YxEg9Z19VYW20pyTd9X6/08DR+F9fZQfbk9yWSk3EkSpXyN3asu emUlmKPi9Lq64Rr0at+U1qYt17QW74Ii1CMVXvfqOt1L9J5gooNjoDY//mpMsQnMqB6j3xqGlG1 2uRE4rvd7Ms39jwsuZvpnC4T0pZyZlzE= X-Gm-Gg: AeBDievm7WuDgpZm1lnOnHgOO7wU5ZNx5TupLxvTrwTzSrRnBa0SnaiwJfEdyYSLriY zhkxKDRV9rM4kn6mJ0xtUD9ByuEIl+Pyd4a5m2fLL2QvDqEBSgL26qloC8L6VdITMymIqNg3tU4 q5sK7L4OHtv2Gbe0ipP0It2cuX93EMT1aL97nPDJBoYzr/EvxF5enfR921qbQYSbiVmigH22ip3 gAWTHxTYMpei1tLcNlfHsrLeSe+PX164FLikh3I0FFOj8/SIP1LHnjVWFCt/UPaVD8vUaScWYKh xMpWSEIcDGZTVp8elMdL+rKMQXMoOSuYyfWmUhItIDTFkAzNdQ4NIdei7fBhPA== X-Received: by 2002:a05:6820:6ac8:b0:694:852a:28b4 with SMTP id 006d021491bc7-694852a2f25mr10195386eaf.58.1776967886266; Thu, 23 Apr 2026 11:11:26 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Bharath Rupireddy Date: Thu, 23 Apr 2026 11:11:14 -0700 X-Gm-Features: AQROBzCgK_wKt5lQjlRASlEA6qgR7lEf6CuHxOzbb8KHECbVaWMwDVCCwSqNBd8 Message-ID: Subject: Re: Introduce XID age based replication slot invalidation To: Masahiko Sawada Cc: Srinath Reddy Sadipiralla , SATYANARAYANA NARLAPURAM , "Hayato Kuroda (Fujitsu)" , John H , PostgreSQL-development Content-Type: multipart/mixed; boundary="000000000000a38d8c06502493c9" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000a38d8c06502493c9 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi, On Wed, Apr 15, 2026 at 10:03=E2=80=AFPM Bharath Rupireddy wrote: > > Hi, > > On Mon, Apr 6, 2026 at 10:42=E2=80=AFAM Bharath Rupireddy > wrote: > > > > On Mon, Apr 6, 2026 at 1:45=E2=80=AFAM Masahiko Sawada wrote: > > > > > > > I took a look at the v10 patch and it LGTM. I tested it - make > > > > check-world passes, pgindent doesn't complain. > > > > > > While reviewing the patch, I found that with this patch, backend > > > processes and autovacuum workers can simultaneously attempt to > > > invalidate the same slot for the same reason. When invalidating a > > > slot, we send a signal to the process owning the slot and wait for it > > > to exit and release the slot. If the process takes a long time to exi= t > > > for some reason, subsequent autovacuum workers attempting to > > > invalidate the same slot will also send a SIGTERM and get stuck at > > > InvalidatePossiblyObsoleteSlot(). In the worst case, this could resul= t > > > in all autovacuum activity being blocked. I think we need to address > > > this problem. > > > > Thank you! > > > > You're right that multiple autovacuum workers can wait on the same > > slot for SIGTERM to take effect on the process (mainly walsenders) > > holding the slot. Once the process holding the slot exits, one worker > > finishes the invalidation and the others see it's done and move on. > > > > However, IMHO, this is unlikely to be a problem in practice. > > > > First, SIGTERM must take a long time to terminate the process holding > > the slot. This seems unlikely unless I'm missing some cases. > > > > Second, the slot's xmin must be very old (past XID age) while the > > process is still running but slow to exit. If we set max_slot_xid_age > > close to vacuum_failsafe_age (e.g., 1.6 billion. I've added this note > > in the docs), it seems unlikely that the replication connection would > > still be active at that point. > > > > Also, concurrent invalidation can already happen today between the > > startup process and checkpointer on standby. > > > > If needed, we could add a flag to skip extra invalidation attempts > > based on field experience. Since this feature is off by default, I'd > > prefer to keep things simple, but I'm open to other approaches. > > > > Thoughts? > > Thank you Sawada-san. I've been thinking more about it and I agree we > need to address this. While I still think the scenario is unlikely in > practice (SIGTERM would have to take a long time, the slot's xmin > would have to be very old while the walsender is still running, etc.), > I think it's worth handling. > > I can think of a couple of approaches: > > 1. Use ConditionVariableTimedSleep instead of ConditionVariableSleep > when called from an autovacuum worker. Workers don't block forever, > but they still wait for the timeout duration, still send redundant > SIGTERMs, and a correct timeout value needs to be chosen. When it > expires, the worker either retries (still stuck) or gives up (same as > approach 2). > > 2. Make the vacuum path non-blocking when another process is already > invalidating the same slot. The first process to attempt invalidation > proceeds normally: it sends SIGTERM and waits on > ConditionVariableSleep for the process holding the slot to exit. But > if a subsequent autovacuum worker finds that another process has > already initiated invalidation of this slot, it skips the slot and > proceeds with vacuum instead of waiting on the same > ConditionVariableSleep. > > I think approach 2 is simple. If another process is already > invalidating the slot, there's no reason for the autovacuum worker to > also block. The tradeoff is that this vacuum cycle's OldestXmin won't > move forward and it will need another cycle for this relation. But > that's fine given that the scenario as explained above is unlikely to > happen in practice. > > Please let me know if my thinking sounds reasonable. I'm open to other > ideas too. > > Thoughts? I implemented the approach 2 (patch 0003). I added an injection point to mimic the walsender taking time to process SIGTERM, so that the process invalidating the slot waits on the slot's CV. Please have a look and share your thoughts. Thank you! -- Bharath Rupireddy Amazon Web Services: https://aws.amazon.com --000000000000a38d8c06502493c9 Content-Type: application/x-patch; name="v11-0001-Introduce-max_slot_xid_age-to-invalidate-old-rep.patch" Content-Disposition: attachment; filename="v11-0001-Introduce-max_slot_xid_age-to-invalidate-old-rep.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mo3ew0vv0 RnJvbSAwZDg3OWQ0ZGMyODEyZWQ1YzA3MWQ1M2EwNmQ5MzZiMDliZDYyOTU3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCaGFyYXRoIFJ1cGlyZWRkeSA8YmhhcmF0aC5ydXBpcmVkZHlm b3Jwb3N0Z3Jlc0BnbWFpbC5jb20+CkRhdGU6IEZyaSwgMTcgQXByIDIwMjYgMTg6Mjk6NDEgKzAw MDAKU3ViamVjdDogW1BBVENIIHYxMSAxLzNdIEludHJvZHVjZSBtYXhfc2xvdF94aWRfYWdlIHRv IGludmFsaWRhdGUgb2xkCiByZXBsaWNhdGlvbiBzbG90cwoKVGhpcyBjb21taXQgaW50cm9kdWNl cyBhIG5ldyBHVUMgcGFyYW1ldGVyLCBtYXhfc2xvdF94aWRfYWdlLiBJdAppbnZhbGlkYXRlcyBy ZXBsaWNhdGlvbiBzbG90cyB3aG9zZSB4bWluIG9yIGNhdGFsb2dfeG1pbiBhZ2UgZXhjZWVkcwp0 aGUgY29uZmlndXJlZCBsaW1pdC4gV2hpbGUgdGltZS1iYXNlZCBzbG90IGludmFsaWRhdGlvbiBp cyB1c2VmdWwKZm9yIGNsZWFuaW5nIHVwIGluYWN0aXZlIHNsb3RzLCBhbiBYSUQtYWdlLWJhc2Vk IGxpbWl0IGFjdHMgYXMgYQpjcml0aWNhbCBiYWNrc3RvcCB0byBkaXJlY3RseSBwcmV2ZW50IHRy YW5zYWN0aW9uIElEIHdyYXBhcm91bmQgYW5kCnNldmVyZSBibG9hdCBjYXVzZWQgYnkgb3JwaGFu ZWQgc2xvdHMuCgpUaGUgaW52YWxpZGF0aW9uIGNoZWNrIG9jY3VycyBkdXJpbmcgYm90aCBWQUNV VU0gKG1hbnVhbCBhbmQKYXV0b3ZhY3V1bSkgYW5kIGNoZWNrcG9pbnRzLiBEdXJpbmcgdmFjdXVt LCB0aGUgY2hlY2sgaXMgcGVyZm9ybWVkCm9uIGEgcGVyLXJlbGF0aW9uIGJhc2lzLiBDcnVjaWFs bHksIHRoZSBYSUQtYWdlIGJhc2VkIHNsb3QKaW52YWxpZGF0aW9uIGlzIGNvbnNpZGVyZWQgb25s eSB3aGVuIHNsb3RzJyBYSURzIGFyZSBhY3RpdmVseQpob2xkaW5nIGJhY2sgdGhlIE9sZGVzdFht aW4gZm9yIHRoZSBjdXJyZW50IHJlbGF0aW9uLiBJbiBvdGhlcgp3b3Jkcywgd2Ugb25seSBpbnZh bGlkYXRlIHNsb3RzIHdoZW4gZG9pbmcgc28gaGFzIHRoZSBwb3RlbnRpYWwgdG8KYWR2YW5jZSB0 aGUgdmFjdXVtIGN1dG9mZiBhbmQgYWxsb3cgZGVhZCB0dXBsZSByZWNsYW1hdGlvbi4KCkNoZWNr aW5nIHNsb3QgWElEcyBwZXIgcmVsYXRpb24gY291bGQgaW50cm9kdWNlIHNpZ25pZmljYW50CnBl cmZvcm1hbmNlIG92ZXJoZWFkIGlmIGl0IHJlcXVpcmVkIGFjcXVpcmluZyBQcm9jQXJyYXlMb2Nr CnJlcGVhdGVkbHkgdG8gZ2V0IHJlcGxpY2F0aW9uIHNsb3QgeG1pbiB2YWx1ZXMgKHhtaW4gYW5k CmNhdGFsb2dfeG1pbiBpbiBwcm9jQXJyYXkpLiBUbyBhdm9pZCB0aGlzLCB0aGUgdmFjdXVtIGN1 dG9mZgpjYWxjdWxhdGlvbiBoYXMgYmVlbiBvcHRpbWl6ZWQuIEEgbmV3IGZ1bmN0aW9uCkdldE9s ZGVzdE5vblJlbW92YWJsZVRyYW5zYWN0aW9uSWRXaXRoU2xvdFhpZHMoKSBpcyBpbnRyb2R1Y2Vk IHRvCnJldHVybiB0aGUgZ2xvYmFsIE9sZGVzdFhtaW4gYWxvbmcgd2l0aCB0aGUgb2xkZXN0IHNs b3QgeG1pbiBhbmQKY2F0YWxvZ194bWluIHZhbHVlcy4gVGhpcyBhbGxvd3MgdGhlIHBlci1yZWxh dGlvbiBpbnZhbGlkYXRpb24KY2hlY2sgdG8gYmUgcGVyZm9ybWVkIHdpdGggemVybyBhZGRpdGlv bmFsIGxvY2sgYWNxdWlzaXRpb25zLgoKSW4gYWRkaXRpb24gdG8gdmFjdXVtLCBzbG90cyBhcmUg YWxzbyBjaGVja2VkIGFuZCBpbnZhbGlkYXRlZApkdXJpbmcgY2hlY2twb2ludHMuIFRoaXMgaXMg cGFydGljdWxhcmx5IGltcG9ydGFudCBmb3Igc3RhbmRieQpzZXJ2ZXJzIHdoZXJlIHZhY3V1bSBk b2VzIG5vdCBydW4uIE5vdGUgdGhhdCBvbiBzdGFuZGJ5cywgc2xvdHMKdGhhdCBhcmUgY3VycmVu dGx5IGJlaW5nIHN5bmNlZCBmcm9tIHRoZSBwcmltYXJ5IChpLmUuLApzeW5jZWQgPSB0cnVlKSBh cmUgZXhlbXB0IGZyb20gdGhpcyBpbnZhbGlkYXRpb24gbWVjaGFuaXNtLgoKQXV0aG9yOiBCaGFy YXRoIFJ1cGlyZWRkeSA8YmhhcmF0aC5ydXBpcmVkZHlmb3Jwb3N0Z3Jlc0BnbWFpbC5jb20+CkNv LWF1dGhvcmVkLWJ5OiBKb2huIEhzdSA8am9obmh5dnJAZ21haWwuY29tPgpSZXZpZXdlZC1ieTog TWFzYWhpa28gU2F3YWRhIDxzYXdhZGEubXNoa0BnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBCZXJ0 cmFuZCBEcm91dm90IDxiZXJ0cmFuZGRyb3V2b3QucGdAZ21haWwuY29tPgpSZXZpZXdlZC1ieTog c2h2ZXRhIG1hbGlrIDxzaHZldGEubWFsaWtAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogQW1pdCBL YXBpbGEgPGFtaXQua2FwaWxhMTZAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogU0FUWUFOQVJBWUFO QSBOQVJMQVBVUkFNIDxzYXR5YW5hcmxhcHVyYW1AZ21haWwuY29tPgpEaXNjdXNzaW9uOiBodHRw czovL3Bvc3Rnci5lcy9tL0NBTGoyQUNXNGFVZS1fdUZRT2pkV0NFTi14WG9MR2htdlJGbkw4U053 X1RaNW5KZSthd0BtYWlsLmdtYWlsLmNvbQpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9t L0NBKy1KdkZzTUhja0JNenN1NU92OUhDRzNBRmJNaDA1NmhIeTFGaVhhekJSdFo5cEZCZ0BtYWls LmdtYWlsLmNvbQotLS0KIGRvYy9zcmMvc2dtbC9jb25maWcuc2dtbCAgICAgICAgICAgICAgICAg ICAgICB8ICA1NCArKysrKysKIGRvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwg ICAgICAgICB8ICAgNCArLQogZG9jL3NyYy9zZ21sL3N5c3RlbS12aWV3cy5zZ21sICAgICAgICAg ICAgICAgIHwgICA4ICsKIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyAgICAg ICAgICB8ICAxOCArKwogc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jICAgICAgICAg ICAgIHwgIDM0ICsrKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bS5jICAgICAgICAgICAg ICAgICB8ICA4MCArKysrKysrLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwu YyAgICAgICAgIHwgIDI2ICsrKwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5jICAgICAg ICAgICAgICAgIHwgIDgyICsrKysrKystCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jYXJy YXkuYyAgICAgICAgICAgfCAgNjEgKysrKy0tCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zdGFu ZGJ5LmMgICAgICAgICAgICAgfCAgIDMgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3Bh cmFtZXRlcnMuZGF0ICAgICB8ICAgOCArCiBzcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVz cWwuY29uZi5zYW1wbGUgfCAgIDIgKwogc3JjL2Jpbi9wZ19iYXNlYmFja3VwL3BnX2NyZWF0ZXN1 YnNjcmliZXIuYyAgIHwgICAyICstCiBzcmMvaW5jbHVkZS9jb21tYW5kcy92YWN1dW0uaCAgICAg ICAgICAgICAgICAgfCAgMTAgKwogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vc2xvdC5oICAgICAg ICAgICAgICAgIHwgICA4ICstCiBzcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NhcnJheS5oICAgICAg ICAgICAgICAgfCAgIDMgKwogc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMTlfcmVwbHNsb3RfbGltaXQu cGwgICAgIHwgMTc1ICsrKysrKysrKysrKysrKysrKwogMTcgZmlsZXMgY2hhbmdlZCwgNTUwIGlu c2VydGlvbnMoKyksIDI4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9j b25maWcuc2dtbCBiL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbAppbmRleCA2N2RhOWExZGU2Ni4u ZmYyNGUyNTlhNDMgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbAorKysgYi9k b2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKQEAgLTQ5NDgsNiArNDk0OCw2MCBAQCByZXN0b3JlX2Nv bW1hbmQgPSAnY29weSAiQzpcXHNlcnZlclxcYXJjaGl2ZWRpclxcJWYiICIlcCInICAjIFdpbmRv d3MKICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgIDwvdmFybGlzdGVudHJ5PgogCisgICAgIDx2YXJs aXN0ZW50cnkgaWQ9Imd1Yy1tYXgtc2xvdC14aWQtYWdlIiB4cmVmbGFiZWw9Im1heF9zbG90X3hp ZF9hZ2UiPgorICAgICAgPHRlcm0+PHZhcm5hbWU+bWF4X3Nsb3RfeGlkX2FnZTwvdmFybmFtZT4g KDx0eXBlPmludGVnZXI8L3R5cGU+KQorICAgICAgPGluZGV4dGVybT4KKyAgICAgICA8cHJpbWFy eT48dmFybmFtZT5tYXhfc2xvdF94aWRfYWdlPC92YXJuYW1lPiBjb25maWd1cmF0aW9uIHBhcmFt ZXRlcjwvcHJpbWFyeT4KKyAgICAgIDwvaW5kZXh0ZXJtPgorICAgICAgPC90ZXJtPgorICAgICAg PGxpc3RpdGVtPgorICAgICAgIDxwYXJhPgorICAgICAgICBJbnZhbGlkYXRlIHJlcGxpY2F0aW9u IHNsb3RzIHdob3NlIDxzdHJ1Y3RmaWVsZD54bWluPC9zdHJ1Y3RmaWVsZD4gYWdlCisgICAgICAg IG9yIDxzdHJ1Y3RmaWVsZD5jYXRhbG9nX3htaW48L3N0cnVjdGZpZWxkPiBhZ2UgaW4gdGhlCisg ICAgICAgIDxsaW5rIGxpbmtlbmQ9InZpZXctcGctcmVwbGljYXRpb24tc2xvdHMiPnBnX3JlcGxp Y2F0aW9uX3Nsb3RzPC9saW5rPgorICAgICAgICB2aWV3IGhhcyBleGNlZWRlZCB0aGUgYWdlIHNw ZWNpZmllZCBieSB0aGlzIHNldHRpbmcuIFNsb3QgaW52YWxpZGF0aW9uCisgICAgICAgIGR1ZSB0 byB0aGlzIGxpbWl0IG9jY3VycyBkdXJpbmcgdmFjdXVtIChib3RoIDxjb21tYW5kPlZBQ1VVTTwv Y29tbWFuZD4KKyAgICAgICAgY29tbWFuZCBhbmQgYXV0b3ZhY3V1bSkgYW5kIGR1cmluZyBjaGVj a3BvaW50LgorICAgICAgICBBIHZhbHVlIG9mIHplcm8gKHRoZSBkZWZhdWx0KSBkaXNhYmxlcyB0 aGlzIGZlYXR1cmUuIFVzZXJzIGNhbiBzZXQKKyAgICAgICAgdGhpcyB2YWx1ZSBhbnl3aGVyZSBm cm9tIHplcm8gdG8gdHdvIGJpbGxpb24gdHJhbnNhY3Rpb25zLiBUaGlzIHBhcmFtZXRlcgorICAg ICAgICBjYW4gb25seSBiZSBzZXQgaW4gdGhlIDxmaWxlbmFtZT5wb3N0Z3Jlc3FsLmNvbmY8L2Zp bGVuYW1lPiBmaWxlIG9yIG9uCisgICAgICAgIHRoZSBzZXJ2ZXIgY29tbWFuZCBsaW5lLgorICAg ICAgIDwvcGFyYT4KKworICAgICAgIDxwYXJhPgorICAgICAgICBUaGUgY3VycmVudCBhZ2Ugb2Yg YSBzbG90J3MgPGxpdGVyYWw+eG1pbjwvbGl0ZXJhbD4gYW5kCisgICAgICAgIDxsaXRlcmFsPmNh dGFsb2dfeG1pbjwvbGl0ZXJhbD4gY2FuIGJlIG1vbml0b3JlZCBieSBhcHBseWluZyB0aGUKKyAg ICAgICAgPGZ1bmN0aW9uPmFnZTwvZnVuY3Rpb24+IGZ1bmN0aW9uIHRvIHRoZSBjb3JyZXNwb25k aW5nIGNvbHVtbnMgaW4gdGhlCisgICAgICAgIDxsaW5rIGxpbmtlbmQ9InZpZXctcGctcmVwbGlj YXRpb24tc2xvdHMiPnBnX3JlcGxpY2F0aW9uX3Nsb3RzPC9saW5rPgorICAgICAgICB2aWV3Lgor ICAgICAgIDwvcGFyYT4KKworICAgICAgIDxwYXJhPgorICAgICAgICBJZGxlIG9yIGZvcmdvdHRl biByZXBsaWNhdGlvbiBzbG90cyBjYW4gaG9sZCBiYWNrIHZhY3V1bSwgbGVhZGluZyB0bworICAg ICAgICBibG9hdCBhbmQgZXZlbnR1YWxseSB0cmFuc2FjdGlvbiBJRCB3cmFwYXJvdW5kLiBUaGlz IHNldHRpbmcgYXZvaWRzCisgICAgICAgIHRoYXQgYnkgaW52YWxpZGF0aW5nIHNsb3RzIHRoYXQg aGF2ZSBmYWxsZW4gdG9vIGZhciBiZWhpbmQuCisgICAgICAgIFNlZSA8eHJlZiBsaW5rZW5kPSJy b3V0aW5lLXZhY3V1bWluZyIvPiBmb3IgbW9yZSBkZXRhaWxzLgorICAgICAgIDwvcGFyYT4KKwor ICAgICAgIDxwYXJhPgorICAgICAgICBJdCBpcyByZWNvbW1lbmRlZCB0byBzZXQgPHZhcm5hbWU+ bWF4X3Nsb3RfeGlkX2FnZTwvdmFybmFtZT4KKyAgICAgICAgdG8gYSB2YWx1ZSBlcXVhbCB0byBv ciBzbGlnaHRseSBsZXNzIHRoYW4KKyAgICAgICAgPHhyZWYgbGlua2VuZD0iZ3VjLXZhY3V1bS1m YWlsc2FmZS1hZ2UiLz4sIHNvIHRoYXQgdGhlIHNsb3QgaG9sZGluZyB0aGUKKyAgICAgICAgdmFj dXVtIGJhY2sgaXMgaW52YWxpZGF0ZWQgYmVmb3JlIHZhY3V1bSBlbnRlcnMgZmFpbHNhZmUgbW9k ZS4KKyAgICAgICA8L3BhcmE+CisKKyAgICAgICA8cGFyYT4KKyAgICAgICAgTm90ZSB0aGF0IHRo aXMgaW52YWxpZGF0aW9uIG1lY2hhbmlzbSBpcyBub3QgYXBwbGljYWJsZSBmb3Igc2xvdHMKKyAg ICAgICAgb24gdGhlIHN0YW5kYnkgc2VydmVyIHRoYXQgYXJlIGJlaW5nIHN5bmNlZCBmcm9tIHRo ZSBwcmltYXJ5IHNlcnZlcgorICAgICAgICAoaS5lLiwgc3RhbmRieSBzbG90cyBoYXZpbmcKKyAg ICAgICAgPGxpbmsgbGlua2VuZD0idmlldy1wZy1yZXBsaWNhdGlvbi1zbG90cyI+cGdfcmVwbGlj YXRpb25fc2xvdHM8L2xpbms+LjxzdHJ1Y3RmaWVsZD5zeW5jZWQ8L3N0cnVjdGZpZWxkPgorICAg ICAgICB2YWx1ZSA8bGl0ZXJhbD50cnVlPC9saXRlcmFsPikuIFN5bmNlZCBzbG90cyBhcmUgYWx3 YXlzIGNvbnNpZGVyZWQgdG8KKyAgICAgICAgYmUgaW5hY3RpdmUgYmVjYXVzZSB0aGV5IGRvbid0 IHBlcmZvcm0gbG9naWNhbCBkZWNvZGluZyB0byBwcm9kdWNlCisgICAgICAgIGNoYW5nZXMuCisg ICAgICAgPC9wYXJhPgorICAgICAgPC9saXN0aXRlbT4KKyAgICAgPC92YXJsaXN0ZW50cnk+CisK ICAgICAgPHZhcmxpc3RlbnRyeSBpZD0iZ3VjLXdhbC1zZW5kZXItdGltZW91dCIgeHJlZmxhYmVs PSJ3YWxfc2VuZGVyX3RpbWVvdXQiPgogICAgICAgPHRlcm0+PHZhcm5hbWU+d2FsX3NlbmRlcl90 aW1lb3V0PC92YXJuYW1lPiAoPHR5cGU+aW50ZWdlcjwvdHlwZT4pCiAgICAgICA8aW5kZXh0ZXJt PgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbCBiL2Rv Yy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwKaW5kZXggNTk4ZTIzYWQ0ZjUuLmIy MGYyMTMzZDk5IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5z Z21sCisrKyBiL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwKQEAgLTI2NDks NyArMjY0OSw5IEBAIENPTlRFWFQ6ICBwcm9jZXNzaW5nIHJlbW90ZSBkYXRhIGZvciByZXBsaWNh dGlvbiBvcmlnaW4gInBnXzE2Mzk1IiBkdXJpbmcgIklOU0VSCiAKICAgIDxwYXJhPgogICAgIExv Z2ljYWwgcmVwbGljYXRpb24gc2xvdHMgYXJlIGFsc28gYWZmZWN0ZWQgYnkKLSAgICA8bGluayBs aW5rZW5kPSJndWMtaWRsZS1yZXBsaWNhdGlvbi1zbG90LXRpbWVvdXQiPjx2YXJuYW1lPmlkbGVf cmVwbGljYXRpb25fc2xvdF90aW1lb3V0PC92YXJuYW1lPjwvbGluaz4uCisgICAgPGxpbmsgbGlu a2VuZD0iZ3VjLWlkbGUtcmVwbGljYXRpb24tc2xvdC10aW1lb3V0Ij48dmFybmFtZT5pZGxlX3Jl cGxpY2F0aW9uX3Nsb3RfdGltZW91dDwvdmFybmFtZT48L2xpbms+CisgICAgYW5kCisgICAgPGxp bmsgbGlua2VuZD0iZ3VjLW1heC1zbG90LXhpZC1hZ2UiPjx2YXJuYW1lPm1heF9zbG90X3hpZF9h Z2U8L3Zhcm5hbWU+PC9saW5rPi4KICAgIDwvcGFyYT4KIAogICAgPHBhcmE+CmRpZmYgLS1naXQg YS9kb2Mvc3JjL3NnbWwvc3lzdGVtLXZpZXdzLnNnbWwgYi9kb2Mvc3JjL3NnbWwvc3lzdGVtLXZp ZXdzLnNnbWwKaW5kZXggMmViZWM2OTI4ZDUuLjU4NjJmOTg0MWMwIDEwMDY0NAotLS0gYS9kb2Mv c3JjL3NnbWwvc3lzdGVtLXZpZXdzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3N5c3RlbS12aWV3 cy5zZ21sCkBAIC0zMTAyLDYgKzMxMDIsMTQgQEAgU0VMRUNUICogRlJPTSBwZ19sb2NrcyBwbCBM RUZUIEpPSU4gcGdfcHJlcGFyZWRfeGFjdHMgcHB4CiAgICAgICAgICAgPHhyZWYgbGlua2VuZD0i Z3VjLWlkbGUtcmVwbGljYXRpb24tc2xvdC10aW1lb3V0Ii8+IGR1cmF0aW9uLgogICAgICAgICAg PC9wYXJhPgogICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAg ICA8cGFyYT4KKyAgICAgICAgICA8bGl0ZXJhbD54aWRfYWdlZDwvbGl0ZXJhbD4gbWVhbnMgdGhh dCB0aGUgc2xvdCdzCisgICAgICAgICAgPGxpdGVyYWw+eG1pbjwvbGl0ZXJhbD4gb3IgPGxpdGVy YWw+Y2F0YWxvZ194bWluPC9saXRlcmFsPgorICAgICAgICAgIGhhcyByZWFjaGVkIHRoZSBhZ2Ug c3BlY2lmaWVkIGJ5CisgICAgICAgICAgPHhyZWYgbGlua2VuZD0iZ3VjLW1heC1zbG90LXhpZC1h Z2UiLz4gcGFyYW1ldGVyLgorICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVtPgog ICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgIDwvcm93 PgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCmluZGV4IDM5Mzk1YWVkMGQ1Li4xOWIx MDdhOWI3MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5j CisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwpAQCAtODAwLDYgKzgw MCwyNCBAQCBoZWFwX3ZhY3V1bV9yZWwoUmVsYXRpb24gcmVsLCBjb25zdCBWYWN1dW1QYXJhbXMg KnBhcmFtcywKIAkgKiB0byBpbmNyZWFzZSB0aGUgbnVtYmVyIG9mIGRlYWQgdHVwbGVzIGl0IGNh biBwcnVuZSBhd2F5LikKIAkgKi8KIAl2YWNyZWwtPmFnZ3Jlc3NpdmUgPSB2YWN1dW1fZ2V0X2N1 dG9mZnMocmVsLCBwYXJhbXMsICZ2YWNyZWwtPmN1dG9mZnMpOworCisJLyoKKwkgKiBJZiB0aGUg Y3VycmVudCB2YWN1dW0gY3V0b2ZmIChPbGRlc3RYbWluKSBpcyBiZWluZyBoZWxkIGJhY2sgYnkg YQorCSAqIHJlcGxpY2F0aW9uIHNsb3QgdGhhdCBoYXMgZXhjZWVkZWQgbWF4X3Nsb3RfeGlkX2Fn ZSwgYXR0ZW1wdCB0bworCSAqIGludmFsaWRhdGUgc3VjaCBzbG90cy4KKwkgKi8KKwlpZiAobWF5 YmVfaW52YWxpZGF0ZV94aWRfYWdlZF9zbG90cyh2YWNyZWwtPmN1dG9mZnMuT2xkZXN0WG1pbiwK KwkJCQkJCQkJCQl2YWNyZWwtPmN1dG9mZnMuT2xkZXN0U2xvdFhtaW4sCisJCQkJCQkJCQkJdmFj cmVsLT5jdXRvZmZzLk9sZGVzdFNsb3RDYXRhbG9nWG1pbikpCisJeworCQkvKgorCQkgKiBTb21l IHNsb3RzIGhhdmUgYmVlbiBpbnZhbGlkYXRlZDsgcmUtY29tcHV0ZSB0aGUgdmFjdXVtIGN1dG9m ZnMgYW5kCisJCSAqIGFnZ3Jlc3NpdmVuZXNzLgorCQkgKi8KKwkJdmFjcmVsLT5hZ2dyZXNzaXZl ID0gdmFjdXVtX2dldF9jdXRvZmZzKHJlbCwgcGFyYW1zLAorCQkJCQkJCQkJCQkJJnZhY3JlbC0+ Y3V0b2Zmcyk7CisJfQorCiAJdmFjcmVsLT5yZWxfcGFnZXMgPSBvcmlnX3JlbF9wYWdlcyA9IFJl bGF0aW9uR2V0TnVtYmVyT2ZCbG9ja3MocmVsKTsKIAl2YWNyZWwtPnZpc3Rlc3QgPSBHbG9iYWxW aXNUZXN0Rm9yKHJlbCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2Ft L3hsb2cuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYwppbmRleCBmODViNTI4 NjA4Ni4uODIzZWJhZGFiNjIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2Ft L3hsb2cuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMKQEAgLTc0MDUs NiArNzQwNSw4IEBAIENyZWF0ZUNoZWNrUG9pbnQoaW50IGZsYWdzKQogCVZpcnR1YWxUcmFuc2Fj dGlvbklkICp2eGlkczsKIAlpbnQJCQludnhpZHM7CiAJaW50CQkJb2xkWExvZ0FsbG93ZWQgPSAw OworCXVpbnQzMgkJc2xvdEludmFsaWRhdGlvbkNhdXNlczsKKwlUcmFuc2FjdGlvbklkIHNsb3RY aWRMaW1pdDsKIAogCS8qCiAJICogQW4gZW5kLW9mLXJlY292ZXJ5IGNoZWNrcG9pbnQgaXMgcmVh bGx5IGEgc2h1dGRvd24gY2hlY2twb2ludCwganVzdApAQCAtNzg0OSw5ICs3ODUxLDIwIEBAIENy ZWF0ZUNoZWNrUG9pbnQoaW50IGZsYWdzKQogCSAqLwogCVhMQnl0ZVRvU2VnKFJlZG9SZWNQdHIs IF9sb2dTZWdObywgd2FsX3NlZ21lbnRfc2l6ZSk7CiAJS2VlcExvZ1NlZyhyZWNwdHIsICZfbG9n U2VnTm8pOwotCWlmIChJbnZhbGlkYXRlT2Jzb2xldGVSZXBsaWNhdGlvblNsb3RzKFJTX0lOVkFM X1dBTF9SRU1PVkVEIHwgUlNfSU5WQUxfSURMRV9USU1FT1VULAorCisJc2xvdEludmFsaWRhdGlv bkNhdXNlcyA9IFJTX0lOVkFMX1dBTF9SRU1PVkVEIHwgUlNfSU5WQUxfSURMRV9USU1FT1VUOwor CXNsb3RYaWRMaW1pdCA9IEludmFsaWRUcmFuc2FjdGlvbklkOworCWlmIChtYXhfc2xvdF94aWRf YWdlID4gMCkKKwl7CisJCXNsb3RJbnZhbGlkYXRpb25DYXVzZXMgfD0gUlNfSU5WQUxfWElEX0FH RTsKKwkJc2xvdFhpZExpbWl0ID0gVHJhbnNhY3Rpb25JZFJldHJlYXRlZEJ5KFJlYWROZXh0VHJh bnNhY3Rpb25JZCgpLAorCQkJCQkJCQkJCQkJbWF4X3Nsb3RfeGlkX2FnZSk7CisJfQorCisJaWYg KEludmFsaWRhdGVPYnNvbGV0ZVJlcGxpY2F0aW9uU2xvdHMoc2xvdEludmFsaWRhdGlvbkNhdXNl cywKIAkJCQkJCQkJCQkgICBfbG9nU2VnTm8sIEludmFsaWRPaWQsCi0JCQkJCQkJCQkJICAgSW52 YWxpZFRyYW5zYWN0aW9uSWQpKQorCQkJCQkJCQkJCSAgIEludmFsaWRUcmFuc2FjdGlvbklkLAor CQkJCQkJCQkJCSAgIHNsb3RYaWRMaW1pdCkpCiAJewogCQkvKgogCQkgKiBTb21lIHNsb3RzIGhh dmUgYmVlbiBpbnZhbGlkYXRlZDsgcmVjYWxjdWxhdGUgdGhlIG9sZC1zZWdtZW50CkBAIC04MTM4 LDYgKzgxNTEsOCBAQCBDcmVhdGVSZXN0YXJ0UG9pbnQoaW50IGZsYWdzKQogCVhMb2dSZWNQdHIJ ZW5kcHRyOwogCVhMb2dTZWdObwlfbG9nU2VnTm87CiAJVGltZXN0YW1wVHogeHRpbWU7CisJdWlu dDMyCQlzbG90SW52YWxpZGF0aW9uQ2F1c2VzOworCVRyYW5zYWN0aW9uSWQgc2xvdFhpZExpbWl0 OwogCiAJLyogQ29uY3VycmVudCBjaGVja3BvaW50L3Jlc3RhcnRwb2ludCBjYW5ub3QgaGFwcGVu ICovCiAJQXNzZXJ0KCFJc1VuZGVyUG9zdG1hc3RlciB8fCBNeUJhY2tlbmRUeXBlID09IEJfQ0hF Q0tQT0lOVEVSKTsKQEAgLTgzMTYsOSArODMzMSwxOSBAQCBDcmVhdGVSZXN0YXJ0UG9pbnQoaW50 IGZsYWdzKQogCiAJSU5KRUNUSU9OX1BPSU5UKCJyZXN0YXJ0cG9pbnQtYmVmb3JlLXNsb3QtaW52 YWxpZGF0aW9uIiwgTlVMTCk7CiAKLQlpZiAoSW52YWxpZGF0ZU9ic29sZXRlUmVwbGljYXRpb25T bG90cyhSU19JTlZBTF9XQUxfUkVNT1ZFRCB8IFJTX0lOVkFMX0lETEVfVElNRU9VVCwKKwlzbG90 SW52YWxpZGF0aW9uQ2F1c2VzID0gUlNfSU5WQUxfV0FMX1JFTU9WRUQgfCBSU19JTlZBTF9JRExF X1RJTUVPVVQ7CisJc2xvdFhpZExpbWl0ID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CisJaWYgKG1h eF9zbG90X3hpZF9hZ2UgPiAwKQorCXsKKwkJc2xvdEludmFsaWRhdGlvbkNhdXNlcyB8PSBSU19J TlZBTF9YSURfQUdFOworCQlzbG90WGlkTGltaXQgPSBUcmFuc2FjdGlvbklkUmV0cmVhdGVkQnko UmVhZE5leHRUcmFuc2FjdGlvbklkKCksCisJCQkJCQkJCQkJCQltYXhfc2xvdF94aWRfYWdlKTsK Kwl9CisKKwlpZiAoSW52YWxpZGF0ZU9ic29sZXRlUmVwbGljYXRpb25TbG90cyhzbG90SW52YWxp ZGF0aW9uQ2F1c2VzLAogCQkJCQkJCQkJCSAgIF9sb2dTZWdObywgSW52YWxpZE9pZCwKLQkJCQkJ CQkJCQkgICBJbnZhbGlkVHJhbnNhY3Rpb25JZCkpCisJCQkJCQkJCQkJICAgSW52YWxpZFRyYW5z YWN0aW9uSWQsCisJCQkJCQkJCQkJICAgc2xvdFhpZExpbWl0KSkKIAl7CiAJCS8qCiAJCSAqIFNv bWUgc2xvdHMgaGF2ZSBiZWVuIGludmFsaWRhdGVkOyByZWNhbGN1bGF0ZSB0aGUgb2xkLXNlZ21l bnQKQEAgLTkyMzQsNiArOTI1OSw3IEBAIHhsb2dfcmVkbyhYTG9nUmVhZGVyU3RhdGUgKnJlY29y ZCkKIAkJCQkgKi8KIAkJCQlJbnZhbGlkYXRlT2Jzb2xldGVSZXBsaWNhdGlvblNsb3RzKFJTX0lO VkFMX1dBTF9MRVZFTCwKIAkJCQkJCQkJCQkJCSAgIDAsIEludmFsaWRPaWQsCisJCQkJCQkJCQkJ CQkgICBJbnZhbGlkVHJhbnNhY3Rpb25JZCwKIAkJCQkJCQkJCQkJCSAgIEludmFsaWRUcmFuc2Fj dGlvbklkKTsKIAkJCX0KIAkJCWVsc2UgaWYgKHN5bmNfcmVwbGljYXRpb25fc2xvdHMpCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW0uYyBiL3NyYy9iYWNrZW5kL2NvbW1h bmRzL3ZhY3V1bS5jCmluZGV4IDk5ZDBkYjgyZWQ3Li43MzQzOWExNjNlZiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv dmFjdXVtLmMKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJwb3N0bWFzdGVyL2F1dG92YWN1 dW0uaCIKICNpbmNsdWRlICJwb3N0bWFzdGVyL2Jnd29ya2VyX2ludGVybmFscy5oIgogI2luY2x1 ZGUgInBvc3RtYXN0ZXIvaW50ZXJydXB0LmgiCisjaW5jbHVkZSAicmVwbGljYXRpb24vc2xvdC5o IgogI2luY2x1ZGUgInN0b3JhZ2UvYnVmbWdyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sbWdyLmgi CiAjaW5jbHVkZSAic3RvcmFnZS9wbXNpZ25hbC5oIgpAQCAtMTEzNCw3ICsxMTM1LDEwIEBAIHZh Y3V1bV9nZXRfY3V0b2ZmcyhSZWxhdGlvbiByZWwsIGNvbnN0IFZhY3V1bVBhcmFtcyAqcGFyYW1z LAogCSAqIHRoYXQgb25seSBvbmUgdmFjdXVtIHByb2Nlc3MgY2FuIGJlIHdvcmtpbmcgb24gYSBw YXJ0aWN1bGFyIHRhYmxlIGF0CiAJICogYW55IHRpbWUsIGFuZCB0aGF0IGVhY2ggdmFjdXVtIGlz IGFsd2F5cyBhbiBpbmRlcGVuZGVudCB0cmFuc2FjdGlvbi4KIAkgKi8KLQljdXRvZmZzLT5PbGRl c3RYbWluID0gR2V0T2xkZXN0Tm9uUmVtb3ZhYmxlVHJhbnNhY3Rpb25JZChyZWwpOworCWN1dG9m ZnMtPk9sZGVzdFhtaW4gPQorCQlHZXRPbGRlc3ROb25SZW1vdmFibGVUcmFuc2FjdGlvbklkV2l0 aFNsb3RYaWRzKHJlbCwKKwkJCQkJCQkJCQkJCQkgICAmY3V0b2Zmcy0+T2xkZXN0U2xvdFhtaW4s CisJCQkJCQkJCQkJCQkJICAgJmN1dG9mZnMtPk9sZGVzdFNsb3RDYXRhbG9nWG1pbik7CiAKIAlB c3NlcnQoVHJhbnNhY3Rpb25JZElzTm9ybWFsKGN1dG9mZnMtPk9sZGVzdFhtaW4pKTsKIApAQCAt MjcwOCwzICsyNzEyLDc3IEBAIHZhY190aWRfcmVhcGVkKEl0ZW1Qb2ludGVyIGl0ZW1wdHIsIHZv aWQgKnN0YXRlKQogCiAJcmV0dXJuIFRpZFN0b3JlSXNNZW1iZXIoZGVhZF9pdGVtcywgaXRlbXB0 cik7CiB9CisKKy8qCisgKiBJbnZhbGlkYXRlIHJlcGxpY2F0aW9uIHNsb3RzIHdob3NlIFhJRCBh Z2UgZXhjZWVkcyBtYXhfc2xvdF94aWRfYWdlLgorICoKKyAqIFRoZSBjYWxsZXIgcHJvdmlkZXMg dGhlIG92ZXJhbGwgb2xkZXN0IHhtaW4gYWxvbmcgd2l0aCB0aGUgb2xkZXN0CisgKiBzbG90IGFu ZCBjYXRhbG9nX3htaW4sIHR5cGljYWxseSBhbGwgb2J0YWluZWQgZnJvbSBhIHNpbmdsZSBjb25z aXN0ZW50CisgKiBzbmFwc2hvdCB2aWEgQ29tcHV0ZVhpZEhvcml6b25zKCkuIFRoZXNlIHZhbHVl cyBhcmUgdXNlZCB0byBhdm9pZAorICogdW5uZWNlc3Nhcnkgd29yazogaWYgdGhlIGdsb2JhbCBv bGRlc3RfeG1pbiBpcyBoZWxkIGJhY2sgYnkgc29tZXRoaW5nCisgKiBvdGhlciB0aGFuIGEgcmVw bGljYXRpb24gc2xvdCAoZS5nLiwgYSBsb25nLXJ1bm5pbmcgdHJhbnNhY3Rpb24pLAorICogaW52 YWxpZGF0aW5nIHNsb3RzIHdvdWxkIG5vdCBhZHZhbmNlIHRoZSBob3Jpem9uIGFuZCBpcyB0aGVy ZWZvcmUKKyAqIHNraXBwZWQuIFNpbWlsYXJseSwgbm8gYWN0aW9uIGlzIHRha2VuIGlmIHRoZSBj dXJyZW50IGhvcml6b25zIGhhdmUKKyAqIG5vdCB5ZXQgZXhjZWVkZWQgdGhlIHRocmVzaG9sZC4K KyAqCisgKiBSZXR1cm5zIHRydWUgaWYgYXQgbGVhc3Qgb25lIHNsb3Qgd2FzIGludmFsaWRhdGVk LgorICovCitib29sCittYXliZV9pbnZhbGlkYXRlX3hpZF9hZ2VkX3Nsb3RzKFRyYW5zYWN0aW9u SWQgb2xkZXN0X3htaW4sCisJCQkJCQkJCVRyYW5zYWN0aW9uSWQgb2xkZXN0X3Nsb3RfeG1pbiwK KwkJCQkJCQkJVHJhbnNhY3Rpb25JZCBvbGRlc3Rfc2xvdF9jYXRhbG9nX3htaW4pCit7CisJVHJh bnNhY3Rpb25JZCB4aWRfbGltaXQ7CisJYm9vbAkJc2xvdF9ob2xkc19vbGRlc3RfeG1pbjsKKwor CWlmIChtYXhfc2xvdF94aWRfYWdlID09IDApCisJCXJldHVybiBmYWxzZTsKKworCUFzc2VydChU cmFuc2FjdGlvbklkSXNOb3JtYWwob2xkZXN0X3htaW4pKTsKKworCS8qCisJICogQ2hlY2sgaWYg YSByZXBsaWNhdGlvbiBzbG90J3MgeG1pbiBvciBjYXRhbG9nX3htaW4gaXMgd2hhdCdzIGhvbGRp bmcKKwkgKiBiYWNrIG9sZGVzdF94bWluLiBJZiBub3QsIHNraXAgdGhlIHVubmVjZXNzYXJ5IHdv cmsuCisJICovCisJc2xvdF9ob2xkc19vbGRlc3RfeG1pbiA9CisJCShUcmFuc2FjdGlvbklkSXNW YWxpZChvbGRlc3Rfc2xvdF94bWluKSAmJgorCQkgVHJhbnNhY3Rpb25JZEVxdWFscyhvbGRlc3Rf eG1pbiwgb2xkZXN0X3Nsb3RfeG1pbikpIHx8CisJCShUcmFuc2FjdGlvbklkSXNWYWxpZChvbGRl c3Rfc2xvdF9jYXRhbG9nX3htaW4pICYmCisJCSBUcmFuc2FjdGlvbklkRXF1YWxzKG9sZGVzdF94 bWluLCBvbGRlc3Rfc2xvdF9jYXRhbG9nX3htaW4pKTsKKworCWlmICghc2xvdF9ob2xkc19vbGRl c3RfeG1pbikKKwkJcmV0dXJuIGZhbHNlOworCisJeGlkX2xpbWl0ID0gVHJhbnNhY3Rpb25JZFJl dHJlYXRlZEJ5KFJlYWROZXh0VHJhbnNhY3Rpb25JZCgpLAorCQkJCQkJCQkJCSBtYXhfc2xvdF94 aWRfYWdlKTsKKworCS8qCisJICogQSByZXBsaWNhdGlvbiBzbG90IGlzIGhvbGRpbmcgYmFjayBv bGRlc3RfeG1pbi4gV2UgaW52YWxpZGF0ZSBzbG90cworCSAqIHRoYXQgaGF2ZSBleGNlZWRlZCB0 aGUgWElEIGFnZSBsaW1pdC4KKwkgKgorCSAqIE5vdGUgdGhhdCB3aGlsZSBhIG5vbi1jYXRhbG9n IHZhY3V1bSBpcyB0ZWNobmljYWxseSBvbmx5IGJsb2NrZWQgYnkKKwkgKiBwaHlzaWNhbCBzbG90 cycgeG1pbiB2YWx1ZXMsIHdlIGludmFsaWRhdGUgbG9naWNhbCBzbG90cyB0b28gdGhhdAorCSAq IGV4Y2VlZCB0aGUgWElEIGFnZSBsaW1pdCBpZiB3ZSB0cmlnZ2VyIHRoZSBYSUQtYWdlIGJhc2Vk IHNsb3QKKwkgKiBpbnZhbGlkYXRpb24uIE9uZSBtaWdodCB0aGluayB0aGF0IHRoaXMgaXMgdW5u ZWNlc3NhcnkgZm9yIG5vbi1jYXRhbG9nCisJICogdGFibGVzIGFzIGludmFsaWRhdGluZyBsb2dp Y2FsIHNsb3RzIHdoaWxlIHZhY3V1bWluZyBhIG5vbi1jYXRhbG9nCisJICogdGFibGUgZG9lc24n dCBoZWxwIGFkdmFuY2UgdmFjdXVtIGN1dG9mZnMuIEJ1dCBwZXJmb3JtaW5nIGludmFsaWRhdGlv bgorCSAqIHRyaWFscyBmb3IgcGh5c2ljYWwgYW5kIGxvZ2ljYWwgc2xvdHMgd291bGQgYWRkIGNv bXBsZXhpdHkuCisJICoKKwkgKiBJbiBwcmFjdGljZSwgWElELWFnZS1iYXNlZCBpbnZhbGlkYXRp b24gaXMgbGlnaHR3ZWlnaHQgKGUuZy4sIGl0IGRvZXMKKwkgKiBub3QgcmVxdWlyZSBwcm9jZXNz IHRlcm1pbmF0aW9uKS4gVGhpcyB1bmlmaWVkIGFwcHJvYWNoIGtlZXBzIHRoZSBBUEkKKwkgKiBz aW1wbGUgYnkgYXZvaWRpbmcgdGhlIG5lZWQgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiBjYXRhbG9n IGFuZAorCSAqIG5vbi1jYXRhbG9nIHRhYmxlcyBoZXJlLgorCSAqCisJICogTm90ZTogSW52YWxp ZGF0aW5nIGEgc2xvdCBkb2VzIG5vdCBndWFyYW50ZWUgdGhhdCB0aGUgb2xkZXN0IHhtaW4gd2ls bAorCSAqIGFkdmFuY2UuIER1ZSB0byBhIHJhY2UgY29uZGl0aW9uLCBhIGxvbmctcnVubmluZyB0 cmFuc2FjdGlvbiBtaWdodCBiZQorCSAqIGhvbGRpbmcgdGhlIHNhbWUgeG1pbiBhcyB0aGUgc2xv dC4gSW4gc3VjaCBjYXNlcywgdGhlIHNsb3QgaXMKKwkgKiBpbnZhbGlkYXRlZCwgYnV0IHRoZSBn bG9iYWwgaG9yaXpvbiByZW1haW5zIHVuY2hhbmdlZC4KKwkgKi8KKwlpZiAoVHJhbnNhY3Rpb25J ZFByZWNlZGVzKG9sZGVzdF94bWluLCB4aWRfbGltaXQpKQorCQlyZXR1cm4gSW52YWxpZGF0ZU9i c29sZXRlUmVwbGljYXRpb25TbG90cyhSU19JTlZBTF9YSURfQUdFLAorCQkJCQkJCQkJCQkJICAw LCBJbnZhbGlkT2lkLAorCQkJCQkJCQkJCQkJICBJbnZhbGlkVHJhbnNhY3Rpb25JZCwKKwkJCQkJ CQkJCQkJCSAgeGlkX2xpbWl0KTsKKworCXJldHVybiBmYWxzZTsKK30KZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMgYi9zcmMvYmFja2VuZC9jb21tYW5k cy92YWN1dW1wYXJhbGxlbC5jCmluZGV4IDk3OWMyYmU0YWJkLi5kZWZmYzUzNzI2OSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYworKysgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jCkBAIC00Nyw2ICs0Nyw3IEBACiAjaW5jbHVk ZSAic3RvcmFnZS9wcm9jLmgiCiAjaW5jbHVkZSAidGNvcC90Y29wcHJvdC5oIgogI2luY2x1ZGUg InV0aWxzL2xzeXNjYWNoZS5oIgorI2luY2x1ZGUgInV0aWxzL3BzX3N0YXR1cy5oIgogI2luY2x1 ZGUgInV0aWxzL3JlbC5oIgogCiAvKgpAQCAtMTA5Nyw2ICsxMDk4LDI4IEBAIHBhcmFsbGVsX3Zh Y3V1bV9wcm9jZXNzX29uZV9pbmRleChQYXJhbGxlbFZhY3V1bVN0YXRlICpwdnMsIFJlbGF0aW9u IGluZHJlbCwKIAlwdnMtPmluZG5hbWUgPSBwc3RyZHVwKFJlbGF0aW9uR2V0UmVsYXRpb25OYW1l KGluZHJlbCkpOwogCXB2cy0+c3RhdHVzID0gaW5kc3RhdHMtPnN0YXR1czsKIAorCS8qCisJICog VXBkYXRlIHRoZSBwcyBkaXNwbGF5IHRvIHNob3cgd2hpY2ggaW5kZXggdGhpcyB3b3JrZXIgaXMg Y3VycmVudGx5CisJICogcHJvY2Vzc2luZywgYWxvbmcgd2l0aCB0aGUgdGFibGUgYW5kIGluZGV4 IE9JRHMuICBUaGlzIG1ha2VzIGl0IGVhc3kKKwkgKiB0byBpZGVudGlmeSB3aGljaCBpbmRleCBh IHBhcmFsbGVsIHZhY3V1bSB3b3JrZXIgaXMgc3R1Y2sgb24gdmlhCisJICogInBzIC1lZiIuICBG b3IgZXhhbXBsZToKKwkgKiAgICJwYXJhbGxlbCB3b3JrZXIgZm9yIFBJRCAxMjM0NTogdmFjdXVt aW5nIGluZGV4IGlkeF9mb28gKHRhYmxlIE9JRCAxNjM4NCwgaW5kZXggT0lEIDE2Mzg1KSIKKwkg Ki8KKwl7CisJCWNoYXIJCXBzX3N1ZmZpeFsxMjhdOworCQljb25zdCBjaGFyICpwaGFzZTsKKwor CQlwaGFzZSA9IChpbmRzdGF0cy0+c3RhdHVzID09IFBBUkFMTEVMX0lORFZBQ19TVEFUVVNfTkVF RF9CVUxLREVMRVRFKQorCQkJPyAidmFjdXVtaW5nIiA6ICJjbGVhbmluZyB1cCI7CisJCXNucHJp bnRmKHBzX3N1ZmZpeCwgc2l6ZW9mKHBzX3N1ZmZpeCksCisJCQkJICI6ICVzIGluZGV4IFwiJXNc IiAodGFibGUgT0lEICV1LCBpbmRleCBPSUQgJXUpIiwKKwkJCQkgcGhhc2UsCisJCQkJIFJlbGF0 aW9uR2V0UmVsYXRpb25OYW1lKGluZHJlbCksCisJCQkJIFJlbGF0aW9uR2V0UmVsaWQocHZzLT5o ZWFwcmVsKSwKKwkJCQkgUmVsYXRpb25HZXRSZWxpZChpbmRyZWwpKTsKKwkJc2V0X3BzX2Rpc3Bs YXlfc3VmZml4KHBzX3N1ZmZpeCk7CisJfQorCiAJc3dpdGNoIChpbmRzdGF0cy0+c3RhdHVzKQog CXsKIAkJY2FzZSBQQVJBTExFTF9JTkRWQUNfU1RBVFVTX05FRURfQlVMS0RFTEVURToKQEAgLTEx NDQsNiArMTE2Nyw5IEBAIHBhcmFsbGVsX3ZhY3V1bV9wcm9jZXNzX29uZV9pbmRleChQYXJhbGxl bFZhY3V1bVN0YXRlICpwdnMsIFJlbGF0aW9uIGluZHJlbCwKIAlwZnJlZShwdnMtPmluZG5hbWUp OwogCXB2cy0+aW5kbmFtZSA9IE5VTEw7CiAKKwkvKiBDbGVhciB0aGUgcHMgZGlzcGxheSBzdWZm aXggbm93IHRoYXQgdGhpcyBpbmRleCBpcyBkb25lICovCisJc2V0X3BzX2Rpc3BsYXlfc3VmZml4 KCIiKTsKKwogCS8qCiAJICogQ2FsbCB0aGUgcGFyYWxsZWwgdmFyaWFudCBvZiBwZ3N0YXRfcHJv Z3Jlc3NfaW5jcl9wYXJhbSBzbyB3b3JrZXJzIGNhbgogCSAqIHJlcG9ydCBwcm9ncmVzcyBvZiBp bmRleCB2YWN1dW0gdG8gdGhlIGxlYWRlci4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL3Nsb3QuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYwppbmRleCA4M2Zj ZGU3NDcxOC4uZmU0M2Y1Yzg4MjAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L3Nsb3QuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90LmMKQEAgLTExOCw2ICsx MTgsNyBAQCBzdGF0aWMgY29uc3QgU2xvdEludmFsaWRhdGlvbkNhdXNlTWFwIFNsb3RJbnZhbGlk YXRpb25DYXVzZXNbXSA9IHsKIAl7UlNfSU5WQUxfSE9SSVpPTiwgInJvd3NfcmVtb3ZlZCJ9LAog CXtSU19JTlZBTF9XQUxfTEVWRUwsICJ3YWxfbGV2ZWxfaW5zdWZmaWNpZW50In0sCiAJe1JTX0lO VkFMX0lETEVfVElNRU9VVCwgImlkbGVfdGltZW91dCJ9LAorCXtSU19JTlZBTF9YSURfQUdFLCAi eGlkX2FnZWQifSwKIH07CiAKIC8qCkBAIC0xNjksNiArMTcwLDEyIEBAIGludAkJCW1heF9yZXBh Y2tfcmVwbGljYXRpb25fc2xvdHMgPSA1OwkvKiB0aGUgbWF4aW11bSBudW1iZXIgb2Ygc2xvdHMK ICAqLwogaW50CQkJaWRsZV9yZXBsaWNhdGlvbl9zbG90X3RpbWVvdXRfc2VjcyA9IDA7CiAKKy8q CisgKiBJbnZhbGlkYXRlIHJlcGxpY2F0aW9uIHNsb3RzIHRoYXQgaGF2ZSB4bWluIG9yIGNhdGFs b2dfeG1pbiBvbGRlcgorICogdGhhbiB0aGUgc3BlY2lmaWVkIGFnZTsgJzAnIGRpc2FibGVzIGl0 LgorICovCitpbnQJCQltYXhfc2xvdF94aWRfYWdlID0gMDsKKwogLyoKICAqIFRoaXMgR1VDIGxp c3RzIHN0cmVhbWluZyByZXBsaWNhdGlvbiBzdGFuZGJ5IHNlcnZlciBzbG90IG5hbWVzIHRoYXQK ICAqIGxvZ2ljYWwgV0FMIHNlbmRlciBwcm9jZXNzZXMgd2lsbCB3YWl0IGZvci4KQEAgLTE3OTQs NyArMTgwMSwxMCBAQCBSZXBvcnRTbG90SW52YWxpZGF0aW9uKFJlcGxpY2F0aW9uU2xvdEludmFs aWRhdGlvbkNhdXNlIGNhdXNlLAogCQkJCQkgICBYTG9nUmVjUHRyIHJlc3RhcnRfbHNuLAogCQkJ CQkgICBYTG9nUmVjUHRyIG9sZGVzdExTTiwKIAkJCQkJICAgVHJhbnNhY3Rpb25JZCBzbmFwc2hv dENvbmZsaWN0SG9yaXpvbiwKLQkJCQkJICAgbG9uZyBzbG90X2lkbGVfc2Vjb25kcykKKwkJCQkJ ICAgbG9uZyBzbG90X2lkbGVfc2Vjb25kcywKKwkJCQkJICAgVHJhbnNhY3Rpb25JZCB4bWluLAor CQkJCQkgICBUcmFuc2FjdGlvbklkIGNhdGFsb2dfeG1pbiwKKwkJCQkJICAgVHJhbnNhY3Rpb25J ZCB4aWRMaW1pdCkKIHsKIAlTdHJpbmdJbmZvRGF0YSBlcnJfZGV0YWlsOwogCVN0cmluZ0luZm9E YXRhIGVycl9oaW50OwpAQCAtMTgzOSw2ICsxODQ5LDI5IEBAIFJlcG9ydFNsb3RJbnZhbGlkYXRp b24oUmVwbGljYXRpb25TbG90SW52YWxpZGF0aW9uQ2F1c2UgY2F1c2UsCiAJCQkJCQkJCSAiaWRs ZV9yZXBsaWNhdGlvbl9zbG90X3RpbWVvdXQiKTsKIAkJCQlicmVhazsKIAkJCX0KKworCQljYXNl IFJTX0lOVkFMX1hJRF9BR0U6CisJCQl7CisJCQkJVHJhbnNhY3Rpb25JZCBzbG90X3hpZCA9IFRy YW5zYWN0aW9uSWRJc1ZhbGlkKHhtaW4pID8geG1pbiA6IGNhdGFsb2dfeG1pbjsKKwkJCQlpbnQz MgkJZXhjZWVkZWRfYnkgPSAoaW50MzIpICh4aWRMaW1pdCAtIHNsb3RfeGlkKTsKKwkJCQlpbnQz MgkJc2xvdF9hZ2UgPSAoaW50MzIpIG1heF9zbG90X3hpZF9hZ2UgKyBleGNlZWRlZF9ieTsKKwor CQkJCS8qIEVpdGhlciB0aGUgc2xvdCdzIHhtaW4gb3IgY2F0YWxvZ194bWluIG11c3QgYmUgdmFs aWQgKi8KKwkJCQlBc3NlcnQoVHJhbnNhY3Rpb25JZElzVmFsaWQoc2xvdF94aWQpKTsKKworCQkJ CS8qIHRyYW5zbGF0b3I6ICVzIGlzIGEgR1VDIHZhcmlhYmxlIG5hbWUgKi8KKwkJCQlhcHBlbmRT dHJpbmdJbmZvKCZlcnJfZGV0YWlsLAorCQkJCQkJCQkgVHJhbnNhY3Rpb25JZElzVmFsaWQoeG1p bikKKwkJCQkJCQkJID8gXygiVGhlIHNsb3QncyB4bWluIGFnZSBvZiAlZCBleGNlZWRzIHRoZSBj b25maWd1cmVkIFwiJXNcIiBvZiAlZCBieSAlZCB0cmFuc2FjdGlvbnMiKQorCQkJCQkJCQkgOiBf KCJUaGUgc2xvdCdzIGNhdGFsb2cgeG1pbiBhZ2Ugb2YgJWQgZXhjZWVkcyB0aGUgY29uZmlndXJl ZCBcIiVzXCIgb2YgJWQgYnkgJWQgdHJhbnNhY3Rpb25zIiksCisJCQkJCQkJCSBzbG90X2FnZSwg Im1heF9zbG90X3hpZF9hZ2UiLCBtYXhfc2xvdF94aWRfYWdlLCBleGNlZWRlZF9ieSk7CisKKwkJ CQkvKiB0cmFuc2xhdG9yOiAlcyBpcyBhIEdVQyB2YXJpYWJsZSBuYW1lICovCisJCQkJYXBwZW5k U3RyaW5nSW5mbygmZXJyX2hpbnQsIF8oIllvdSBtaWdodCBuZWVkIHRvIGluY3JlYXNlIFwiJXNc Ii4iKSwKKwkJCQkJCQkJICJtYXhfc2xvdF94aWRfYWdlIik7CisJCQkJYnJlYWs7CisJCQl9CisK IAkJY2FzZSBSU19JTlZBTF9OT05FOgogCQkJcGdfdW5yZWFjaGFibGUoKTsKIAl9CkBAIC0xODc3 LDYgKzE5MTAsMjUgQEAgQ2FuSW52YWxpZGF0ZUlkbGVTbG90KFJlcGxpY2F0aW9uU2xvdCAqcykK IAkJCSEoUmVjb3ZlcnlJblByb2dyZXNzKCkgJiYgcy0+ZGF0YS5zeW5jZWQpKTsKIH0KIAorLyoK KyAqIENhbiB3ZSBpbnZhbGlkYXRlIGFuIFhJRC1hZ2VkIHJlcGxpY2F0aW9uIHNsb3Q/CisgKgor ICogWElELWFnZWQgYmFzZWQgaW52YWxpZGF0aW9uIGlzIGFsbG93ZWQgdG8gdGhlIGdpdmVuIHNs b3Qgd2hlbjoKKyAqCisgKiAxLiBNYXggWElELWFnZSBpcyBzZXQKKyAqIDIuIFNsb3QgaGFzIHZh bGlkIHhtaW4gb3IgY2F0YWxvZ194bWluCisgKiAzLiBUaGUgc2xvdCBpcyBub3QgYmVpbmcgc3lu Y2VkIGZyb20gdGhlIHByaW1hcnkgd2hpbGUgdGhlIHNlcnZlciBpcyBpbgorICoJICByZWNvdmVy eS4KKyAqLworc3RhdGljIGlubGluZSBib29sCitDYW5JbnZhbGlkYXRlWGlkQWdlZFNsb3QoUmVw bGljYXRpb25TbG90ICpzKQoreworCXJldHVybiAobWF4X3Nsb3RfeGlkX2FnZSAhPSAwICYmCisJ CQkoVHJhbnNhY3Rpb25JZElzVmFsaWQocy0+ZGF0YS54bWluKSB8fAorCQkJIFRyYW5zYWN0aW9u SWRJc1ZhbGlkKHMtPmRhdGEuY2F0YWxvZ194bWluKSkgJiYKKwkJCSEoUmVjb3ZlcnlJblByb2dy ZXNzKCkgJiYgcy0+ZGF0YS5zeW5jZWQpKTsKK30KKwogLyoKICAqIERldGVybWluZVNsb3RJbnZh bGlkYXRpb25DYXVzZSAtIERldGVybWluZSB0aGUgY2F1c2UgZm9yIHdoaWNoIGEgc2xvdAogICog YmVjb21lcyBpbnZhbGlkIGFtb25nIHRoZSBnaXZlbiBwb3NzaWJsZSBjYXVzZXMuCkBAIC0xODg4 LDYgKzE5NDAsNyBAQCBzdGF0aWMgUmVwbGljYXRpb25TbG90SW52YWxpZGF0aW9uQ2F1c2UKIERl dGVybWluZVNsb3RJbnZhbGlkYXRpb25DYXVzZSh1aW50MzIgcG9zc2libGVfY2F1c2VzLCBSZXBs aWNhdGlvblNsb3QgKnMsCiAJCQkJCQkJICAgWExvZ1JlY1B0ciBvbGRlc3RMU04sIE9pZCBkYm9p ZCwKIAkJCQkJCQkgICBUcmFuc2FjdGlvbklkIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uLAorCQkJ CQkJCSAgIFRyYW5zYWN0aW9uSWQgeGlkTGltaXQsCiAJCQkJCQkJICAgVGltZXN0YW1wVHogKmlu YWN0aXZlX3NpbmNlLCBUaW1lc3RhbXBUeiBub3cpCiB7CiAJQXNzZXJ0KHBvc3NpYmxlX2NhdXNl cyAhPSBSU19JTlZBTF9OT05FKTsKQEAgLTE5NTksNiArMjAxMiwxOCBAQCBEZXRlcm1pbmVTbG90 SW52YWxpZGF0aW9uQ2F1c2UodWludDMyIHBvc3NpYmxlX2NhdXNlcywgUmVwbGljYXRpb25TbG90 ICpzLAogCQl9CiAJfQogCisJLyogQ2hlY2sgaWYgdGhlIHNsb3QgbmVlZHMgdG8gYmUgaW52YWxp ZGF0ZWQgZHVlIHRvIG1heF9zbG90X3hpZF9hZ2UgR1VDICovCisJaWYgKChwb3NzaWJsZV9jYXVz ZXMgJiBSU19JTlZBTF9YSURfQUdFKSAmJiBDYW5JbnZhbGlkYXRlWGlkQWdlZFNsb3QocykpCisJ eworCQlBc3NlcnQoVHJhbnNhY3Rpb25JZElzVmFsaWQoeGlkTGltaXQpKTsKKworCQlpZiAoKFRy YW5zYWN0aW9uSWRJc1ZhbGlkKHMtPmRhdGEueG1pbikgJiYKKwkJCSBUcmFuc2FjdGlvbklkUHJl Y2VkZXMocy0+ZGF0YS54bWluLCB4aWRMaW1pdCkpIHx8CisJCQkoVHJhbnNhY3Rpb25JZElzVmFs aWQocy0+ZGF0YS5jYXRhbG9nX3htaW4pICYmCisJCQkgVHJhbnNhY3Rpb25JZFByZWNlZGVzKHMt PmRhdGEuY2F0YWxvZ194bWluLCB4aWRMaW1pdCkpKQorCQkJcmV0dXJuIFJTX0lOVkFMX1hJRF9B R0U7CisJfQorCiAJcmV0dXJuIFJTX0lOVkFMX05PTkU7CiB9CiAKQEAgLTE5ODEsNiArMjA0Niw3 IEBAIEludmFsaWRhdGVQb3NzaWJseU9ic29sZXRlU2xvdCh1aW50MzIgcG9zc2libGVfY2F1c2Vz LAogCQkJCQkJCSAgIFJlcGxpY2F0aW9uU2xvdCAqcywKIAkJCQkJCQkgICBYTG9nUmVjUHRyIG9s ZGVzdExTTiwKIAkJCQkJCQkgICBPaWQgZGJvaWQsIFRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25m bGljdEhvcml6b24sCisJCQkJCQkJICAgVHJhbnNhY3Rpb25JZCB4aWRMaW1pdCwKIAkJCQkJCQkg ICBib29sICpyZWxlYXNlZF9sb2NrX291dCkKIHsKIAlpbnQJCQlsYXN0X3NpZ25hbGVkX3BpZCA9 IDA7CkBAIC0yMDMzLDYgKzIwOTksNyBAQCBJbnZhbGlkYXRlUG9zc2libHlPYnNvbGV0ZVNsb3Qo dWludDMyIHBvc3NpYmxlX2NhdXNlcywKIAkJCQkJCQkJCQkJCQkJCQlzLCBvbGRlc3RMU04sCiAJ CQkJCQkJCQkJCQkJCQkJZGJvaWQsCiAJCQkJCQkJCQkJCQkJCQkJc25hcHNob3RDb25mbGljdEhv cml6b24sCisJCQkJCQkJCQkJCQkJCQkJeGlkTGltaXQsCiAJCQkJCQkJCQkJCQkJCQkJJmluYWN0 aXZlX3NpbmNlLAogCQkJCQkJCQkJCQkJCQkJCW5vdyk7CiAKQEAgLTIxMjYsNyArMjE5Myw4IEBA IEludmFsaWRhdGVQb3NzaWJseU9ic29sZXRlU2xvdCh1aW50MzIgcG9zc2libGVfY2F1c2VzLAog CQkJCVJlcG9ydFNsb3RJbnZhbGlkYXRpb24oaW52YWxpZGF0aW9uX2NhdXNlLCB0cnVlLCBhY3Rp dmVfcGlkLAogCQkJCQkJCQkJICAgc2xvdG5hbWUsIHJlc3RhcnRfbHNuLAogCQkJCQkJCQkJICAg b2xkZXN0TFNOLCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwKLQkJCQkJCQkJCSAgIHNsb3RfaWRs ZV9zZWNzKTsKKwkJCQkJCQkJCSAgIHNsb3RfaWRsZV9zZWNzLCBzLT5kYXRhLnhtaW4sCisJCQkJ CQkJCQkgICBzLT5kYXRhLmNhdGFsb2dfeG1pbiwgeGlkTGltaXQpOwogCiAJCQkJaWYgKE15QmFj a2VuZFR5cGUgPT0gQl9TVEFSVFVQKQogCQkJCQkodm9pZCkgU2lnbmFsUmVjb3ZlcnlDb25mbGlj dChHZXRQR1Byb2NCeU51bWJlcihhY3RpdmVfcHJvYyksCkBAIC0yMTc5LDcgKzIyNDcsOCBAQCBJ bnZhbGlkYXRlUG9zc2libHlPYnNvbGV0ZVNsb3QodWludDMyIHBvc3NpYmxlX2NhdXNlcywKIAkJ CVJlcG9ydFNsb3RJbnZhbGlkYXRpb24oaW52YWxpZGF0aW9uX2NhdXNlLCBmYWxzZSwgYWN0aXZl X3BpZCwKIAkJCQkJCQkJICAgc2xvdG5hbWUsIHJlc3RhcnRfbHNuLAogCQkJCQkJCQkgICBvbGRl c3RMU04sIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uLAotCQkJCQkJCQkgICBzbG90X2lkbGVfc2Vj cyk7CisJCQkJCQkJCSAgIHNsb3RfaWRsZV9zZWNzLCBzLT5kYXRhLnhtaW4sCisJCQkJCQkJCSAg IHMtPmRhdGEuY2F0YWxvZ194bWluLCB4aWRMaW1pdCk7CiAKIAkJCS8qIGRvbmUgd2l0aCB0aGlz IHNsb3QgZm9yIG5vdyAqLwogCQkJYnJlYWs7CkBAIC0yMjA2LDYgKzIyNzUsOCBAQCBJbnZhbGlk YXRlUG9zc2libHlPYnNvbGV0ZVNsb3QodWludDMyIHBvc3NpYmxlX2NhdXNlcywKICAqICAgbG9n aWNhbC4KICAqIC0gUlNfSU5WQUxfSURMRV9USU1FT1VUOiBoYXMgYmVlbiBpZGxlIGxvbmdlciB0 aGFuIHRoZSBjb25maWd1cmVkCiAgKiAgICJpZGxlX3JlcGxpY2F0aW9uX3Nsb3RfdGltZW91dCIg ZHVyYXRpb24uCisgKiAtIFJTX0lOVkFMX1hJRF9BR0U6IHNsb3QgeGlkIGFnZSBpcyBvbGRlciB0 aGFuIHRoZSBjb25maWd1cmVkCisgKiAgICJtYXhfc2xvdF94aWRfYWdlIiBhZ2UuCiAgKgogICog Tm90ZTogVGhpcyBmdW5jdGlvbiBhdHRlbXB0cyB0byBpbnZhbGlkYXRlIHRoZSBzbG90IGZvciBt dWx0aXBsZSBwb3NzaWJsZQogICogY2F1c2VzIGluIGEgc2luZ2xlIHBhc3MsIG1pbmltaXppbmcg cmVkdW5kYW50IGl0ZXJhdGlvbnMuIFRoZSAiY2F1c2UiCkBAIC0yMjE5LDcgKzIyOTAsOCBAQCBJ bnZhbGlkYXRlUG9zc2libHlPYnNvbGV0ZVNsb3QodWludDMyIHBvc3NpYmxlX2NhdXNlcywKIGJv b2wKIEludmFsaWRhdGVPYnNvbGV0ZVJlcGxpY2F0aW9uU2xvdHModWludDMyIHBvc3NpYmxlX2Nh dXNlcywKIAkJCQkJCQkJICAgWExvZ1NlZ05vIG9sZGVzdFNlZ25vLCBPaWQgZGJvaWQsCi0JCQkJ CQkJCSAgIFRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhvcml6b24pCisJCQkJCQkJCSAg IFRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhvcml6b24sCisJCQkJCQkJCSAgIFRyYW5z YWN0aW9uSWQgeGlkTGltaXQpCiB7CiAJWExvZ1JlY1B0cglvbGRlc3RMU047CiAJYm9vbAkJaW52 YWxpZGF0ZWQgPSBmYWxzZTsKQEAgLTIyNTgsNyArMjMzMCw3IEBAIHJlc3RhcnQ6CiAKIAkJaWYg KEludmFsaWRhdGVQb3NzaWJseU9ic29sZXRlU2xvdChwb3NzaWJsZV9jYXVzZXMsIHMsIG9sZGVz dExTTiwKIAkJCQkJCQkJCQkgICBkYm9pZCwgc25hcHNob3RDb25mbGljdEhvcml6b24sCi0JCQkJ CQkJCQkJICAgJnJlbGVhc2VkX2xvY2spKQorCQkJCQkJCQkJCSAgIHhpZExpbWl0LCAmcmVsZWFz ZWRfbG9jaykpCiAJCXsKIAkJCUFzc2VydChyZWxlYXNlZF9sb2NrKTsKIApkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY2FycmF5LmMgYi9zcmMvYmFja2VuZC9zdG9yYWdl L2lwYy9wcm9jYXJyYXkuYwppbmRleCA5Mjk5YmNlYmJkYS4uYTM1MmZkN2ZmM2EgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NhcnJheS5jCisrKyBiL3NyYy9iYWNrZW5k L3N0b3JhZ2UvaXBjL3Byb2NhcnJheS5jCkBAIC0xOTI5LDYgKzE5MjksMzEgQEAgR2xvYmFsVmlz SG9yaXpvbktpbmRGb3JSZWwoUmVsYXRpb24gcmVsKQogCQlyZXR1cm4gVklTSE9SSVpPTl9URU1Q OwogfQogCisvKgorICogQSBoZWxwZXIgZnVuY3Rpb24gdG8gcmV0dXJuIHRoZSBhcHByb3ByaWF0 ZSBvbGRlc3Qgbm9uLXJlbW92YWJsZQorICogVHJhbnNhY3Rpb25JZCBmcm9tIHRoZSBwcmUtY29t cHV0ZWQgaG9yaXpvbnMsIGJhc2VkIG9uIHRoZSByZWxhdGlvbgorICogdHlwZS4KKyAqLworc3Rh dGljIHBnX2F0dHJpYnV0ZV9hbHdheXNfaW5saW5lIFRyYW5zYWN0aW9uSWQKK0dldE9sZGVzdE5v blJlbW92YWJsZVRyYW5zYWN0aW9uSWRGcm9tSG9yaXpvbnMoQ29tcHV0ZVhpZEhvcml6b25zUmVz dWx0ICpob3Jpem9ucywKKwkJCQkJCQkJCQkJICAgUmVsYXRpb24gcmVsKQoreworCXN3aXRjaCAo R2xvYmFsVmlzSG9yaXpvbktpbmRGb3JSZWwocmVsKSkKKwl7CisJCWNhc2UgVklTSE9SSVpPTl9T SEFSRUQ6CisJCQlyZXR1cm4gaG9yaXpvbnMtPnNoYXJlZF9vbGRlc3Rfbm9ucmVtb3ZhYmxlOwor CQljYXNlIFZJU0hPUklaT05fQ0FUQUxPRzoKKwkJCXJldHVybiBob3Jpem9ucy0+Y2F0YWxvZ19v bGRlc3Rfbm9ucmVtb3ZhYmxlOworCQljYXNlIFZJU0hPUklaT05fREFUQToKKwkJCXJldHVybiBo b3Jpem9ucy0+ZGF0YV9vbGRlc3Rfbm9ucmVtb3ZhYmxlOworCQljYXNlIFZJU0hPUklaT05fVEVN UDoKKwkJCXJldHVybiBob3Jpem9ucy0+dGVtcF9vbGRlc3Rfbm9ucmVtb3ZhYmxlOworCX0KKwor CS8qIGp1c3QgdG8gcHJldmVudCBjb21waWxlciB3YXJuaW5ncyAqLworCXJldHVybiBJbnZhbGlk VHJhbnNhY3Rpb25JZDsKK30KKwogLyoKICAqIFJldHVybiB0aGUgb2xkZXN0IFhJRCBmb3Igd2hp Y2ggZGVsZXRlZCB0dXBsZXMgbXVzdCBiZSBwcmVzZXJ2ZWQgaW4gdGhlCiAgKiBwYXNzZWQgdGFi bGUuCkBAIC0xOTQ3LDIwICsxOTcyLDMwIEBAIEdldE9sZGVzdE5vblJlbW92YWJsZVRyYW5zYWN0 aW9uSWQoUmVsYXRpb24gcmVsKQogCiAJQ29tcHV0ZVhpZEhvcml6b25zKCZob3Jpem9ucyk7CiAK LQlzd2l0Y2ggKEdsb2JhbFZpc0hvcml6b25LaW5kRm9yUmVsKHJlbCkpCi0JewotCQljYXNlIFZJ U0hPUklaT05fU0hBUkVEOgotCQkJcmV0dXJuIGhvcml6b25zLnNoYXJlZF9vbGRlc3Rfbm9ucmVt b3ZhYmxlOwotCQljYXNlIFZJU0hPUklaT05fQ0FUQUxPRzoKLQkJCXJldHVybiBob3Jpem9ucy5j YXRhbG9nX29sZGVzdF9ub25yZW1vdmFibGU7Ci0JCWNhc2UgVklTSE9SSVpPTl9EQVRBOgotCQkJ cmV0dXJuIGhvcml6b25zLmRhdGFfb2xkZXN0X25vbnJlbW92YWJsZTsKLQkJY2FzZSBWSVNIT1JJ Wk9OX1RFTVA6Ci0JCQlyZXR1cm4gaG9yaXpvbnMudGVtcF9vbGRlc3Rfbm9ucmVtb3ZhYmxlOwot CX0KKwlyZXR1cm4gR2V0T2xkZXN0Tm9uUmVtb3ZhYmxlVHJhbnNhY3Rpb25JZEZyb21Ib3Jpem9u cygmaG9yaXpvbnMsIHJlbCk7Cit9CiAKLQkvKiBqdXN0IHRvIHByZXZlbnQgY29tcGlsZXIgd2Fy bmluZ3MgKi8KLQlyZXR1cm4gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CisvKgorICogU2FtZSBhcyBH ZXRPbGRlc3ROb25SZW1vdmFibGVUcmFuc2FjdGlvbklkKCksIGJ1dCBhbHNvIHJldHVybnMgdGhl CisgKiByZXBsaWNhdGlvbiBzbG90IHhtaW4gYW5kIGNhdGFsb2dfeG1pbiBmcm9tIHRoZSBzYW1l IENvbXB1dGVYaWRIb3Jpem9ucygpCisgKiBjYWxsLiAgVGhpcyBhdm9pZHMgYSBzZXBhcmF0ZSBQ cm9jQXJyYXlMb2NrIGFjcXVpc2l0aW9uIHdoZW4gdGhlIGNhbGxlcgorICogbmVlZHMgYm90aCB2 YWx1ZXMuCisgKi8KK1RyYW5zYWN0aW9uSWQKK0dldE9sZGVzdE5vblJlbW92YWJsZVRyYW5zYWN0 aW9uSWRXaXRoU2xvdFhpZHMoUmVsYXRpb24gcmVsLAorCQkJCQkJCQkJCQkgICBUcmFuc2FjdGlv bklkICpzbG90X3htaW4sCisJCQkJCQkJCQkJCSAgIFRyYW5zYWN0aW9uSWQgKnNsb3RfY2F0YWxv Z194bWluKQoreworCUNvbXB1dGVYaWRIb3Jpem9uc1Jlc3VsdCBob3Jpem9uczsKKworCUNvbXB1 dGVYaWRIb3Jpem9ucygmaG9yaXpvbnMpOworCisJaWYgKHNsb3RfeG1pbikKKwkJKnNsb3RfeG1p biA9IGhvcml6b25zLnNsb3RfeG1pbjsKKwlpZiAoc2xvdF9jYXRhbG9nX3htaW4pCisJCSpzbG90 X2NhdGFsb2dfeG1pbiA9IGhvcml6b25zLnNsb3RfY2F0YWxvZ194bWluOworCisJcmV0dXJuIEdl dE9sZGVzdE5vblJlbW92YWJsZVRyYW5zYWN0aW9uSWRGcm9tSG9yaXpvbnMoJmhvcml6b25zLCBy ZWwpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRi eS5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5jCmluZGV4IDI5YWY3NzMzOTQ4 Li5kNTRkNmNjNzU0NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRi eS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnkuYwpAQCAtNTA0LDcgKzUw NCw4IEBAIFJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90KFRyYW5zYWN0aW9uSWQg c25hcHNob3RDb25mbGljdEhvcml6b24sCiAJICovCiAJaWYgKElzTG9naWNhbERlY29kaW5nRW5h YmxlZCgpICYmIGlzQ2F0YWxvZ1JlbCkKIAkJSW52YWxpZGF0ZU9ic29sZXRlUmVwbGljYXRpb25T bG90cyhSU19JTlZBTF9IT1JJWk9OLCAwLCBsb2NhdG9yLmRiT2lkLAotCQkJCQkJCQkJCSAgIHNu YXBzaG90Q29uZmxpY3RIb3Jpem9uKTsKKwkJCQkJCQkJCQkgICBzbmFwc2hvdENvbmZsaWN0SG9y aXpvbiwKKwkJCQkJCQkJCQkgICBJbnZhbGlkVHJhbnNhY3Rpb25JZCk7CiB9CiAKIC8qCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y19wYXJhbWV0ZXJzLmRhdCBiL3NyYy9i YWNrZW5kL3V0aWxzL21pc2MvZ3VjX3BhcmFtZXRlcnMuZGF0CmluZGV4IDgzYWY1OTRkNGFmLi40 NzM4Yzg0YzZjNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfcGFyYW1l dGVycy5kYXQKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfcGFyYW1ldGVycy5kYXQK QEAgLTIxMzIsNiArMjEzMiwxNCBAQAogICBtYXggPT4gJ01BWF9LSUxPQllURVMnLAogfSwKIAor eyBuYW1lID0+ICdtYXhfc2xvdF94aWRfYWdlJywgdHlwZSA9PiAnaW50JywgY29udGV4dCA9PiAn UEdDX1NJR0hVUCcsIGdyb3VwID0+ICdSRVBMSUNBVElPTl9TRU5ESU5HJywKKyAgc2hvcnRfZGVz YyA9PiAnQWdlIG9mIHRoZSB0cmFuc2FjdGlvbiBJRCBhdCB3aGljaCBhIHJlcGxpY2F0aW9uIHNs b3QgZ2V0cyBpbnZhbGlkYXRlZC4nLAorICB2YXJpYWJsZSA9PiAnbWF4X3Nsb3RfeGlkX2FnZScs CisgIGJvb3RfdmFsID0+ICcwJywKKyAgbWluID0+ICcwJywKKyAgbWF4ID0+ICcyMTAwMDAwMDAw JywKK30sCisKICMgV2UgdXNlIHRoZSBob3BlZnVsbHktc2FmZWx5LXNtYWxsIHZhbHVlIG9mIDEw MGtCIGFzIHRoZSBjb21waWxlZC1pbgogIyBkZWZhdWx0IGZvciBtYXhfc3RhY2tfZGVwdGguICBJ bml0aWFsaXplR1VDT3B0aW9ucyB3aWxsIGluY3JlYXNlIGl0CiAjIGlmIHBvc3NpYmxlLCBkZXBl bmRpbmcgb24gdGhlIGFjdHVhbCBwbGF0Zm9ybS1zcGVjaWZpYyBzdGFjayBsaW1pdC4KZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZSBiL3Ny Yy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQppbmRleCBhYzM4Y2Rk YWFmOS4uMzU4YjZlZGM5ZjEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9z dGdyZXNxbC5jb25mLnNhbXBsZQorKysgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVz cWwuY29uZi5zYW1wbGUKQEAgLTM2MSw2ICszNjEsOCBAQAogI3dhbF9rZWVwX3NpemUgPSAwICAg ICAgICAgICAgICAjIGluIG1lZ2FieXRlczsgMCBkaXNhYmxlcwogI21heF9zbG90X3dhbF9rZWVw X3NpemUgPSAtMSAgICAjIGluIG1lZ2FieXRlczsgLTEgZGlzYWJsZXMKICNpZGxlX3JlcGxpY2F0 aW9uX3Nsb3RfdGltZW91dCA9IDAgICAgICAjIGluIHNlY29uZHM7IDAgZGlzYWJsZXMKKyNtYXhf c2xvdF94aWRfYWdlID0gMCAgICAgICAgICAgIyBtYXhpbXVtIFhJRCBhZ2UgYmVmb3JlIGEgcmVw bGljYXRpb24gc2xvdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGdldHMgaW52 YWxpZGF0ZWQ7IDAgZGlzYWJsZXMKICN3YWxfc2VuZGVyX3RpbWVvdXQgPSA2MHMgICAgICAgIyBp biBtaWxsaXNlY29uZHM7IDAgZGlzYWJsZXMKICN3YWxfc2VuZGVyX3NodXRkb3duX3RpbWVvdXQg PSAtMSAgICAgICMgaW4gbWlsbGlzZWNvbmRzOyAtMSBkaXNhYmxlcwogI3RyYWNrX2NvbW1pdF90 aW1lc3RhbXAgPSBvZmYgICAjIGNvbGxlY3QgdGltZXN0YW1wIG9mIHRyYW5zYWN0aW9uIGNvbW1p dApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19iYXNlYmFja3VwL3BnX2NyZWF0ZXN1YnNjcmliZXIu YyBiL3NyYy9iaW4vcGdfYmFzZWJhY2t1cC9wZ19jcmVhdGVzdWJzY3JpYmVyLmMKaW5kZXggMTVl MDZlNTY4NmUuLmY3NWRjNzlmYzAzIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2Jhc2ViYWNrdXAv cGdfY3JlYXRlc3Vic2NyaWJlci5jCisrKyBiL3NyYy9iaW4vcGdfYmFzZWJhY2t1cC9wZ19jcmVh dGVzdWJzY3JpYmVyLmMKQEAgLTE2NzgsNyArMTY3OCw3IEBAIHN0YXJ0X3N0YW5kYnlfc2VydmVy KGNvbnN0IHN0cnVjdCBDcmVhdGVTdWJzY3JpYmVyT3B0aW9ucyAqb3B0LCBib29sIHJlc3RyaWN0 ZWRfCiAJYXBwZW5kUFFFeHBCdWZmZXJTdHIocGdfY3RsX2NtZCwgIiAtcyAtbyBcIi1jIHN5bmNf cmVwbGljYXRpb25fc2xvdHM9b2ZmXCIiKTsKIAogCS8qIFByZXZlbnQgdW5pbnRlbmRlZCBzbG90 IGludmFsaWRhdGlvbiAqLwotCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHBnX2N0bF9jbWQsICIgLW8g XCItYyBpZGxlX3JlcGxpY2F0aW9uX3Nsb3RfdGltZW91dD0wXCIiKTsKKwlhcHBlbmRQUUV4cEJ1 ZmZlclN0cihwZ19jdGxfY21kLCAiIC1vIFwiLWMgaWRsZV9yZXBsaWNhdGlvbl9zbG90X3RpbWVv dXQ9MCAtYyBtYXhfc2xvdF94aWRfYWdlPTBcIiIpOwogCiAJaWYgKHJlc3RyaWN0ZWRfYWNjZXNz KQogCXsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3ZhY3V1bS5oIGIvc3JjL2lu Y2x1ZGUvY29tbWFuZHMvdmFjdXVtLmgKaW5kZXggOTU2ZDljZWEzNmQuLjdkODFlM2QxOTA2IDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy92YWN1dW0uaAorKysgYi9zcmMvaW5jbHVk ZS9jb21tYW5kcy92YWN1dW0uaApAQCAtMjg3LDYgKzI4NywxMyBAQCBzdHJ1Y3QgVmFjdXVtQ3V0 b2ZmcwogCSAqLwogCVRyYW5zYWN0aW9uSWQgRnJlZXplTGltaXQ7CiAJTXVsdGlYYWN0SWQgTXVs dGlYYWN0Q3V0b2ZmOworCisJLyoKKwkgKiBPbGRlc3QgeG1pbiBhbmQgY2F0YWxvZyB4bWluIG9m IGFueSByZXBsaWNhdGlvbiBzbG90IG9idGFpbmVkIGZyb20gdGhlCisJICogc2FtZSBDb21wdXRl WGlkSG9yaXpvbnMoKSBjYWxsIHRoYXQgY29tcHV0ZWQgT2xkZXN0WG1pbi4KKwkgKi8KKwlUcmFu c2FjdGlvbklkIE9sZGVzdFNsb3RYbWluOworCVRyYW5zYWN0aW9uSWQgT2xkZXN0U2xvdENhdGFs b2dYbWluOwogfTsKIAogLyoKQEAgLTM5OSw2ICs0MDYsOSBAQCBleHRlcm4gSW5kZXhCdWxrRGVs ZXRlUmVzdWx0ICp2YWNfYnVsa2RlbF9vbmVfaW5kZXgoSW5kZXhWYWN1dW1JbmZvICppdmluZm8s CiAJCQkJCQkJCQkJCQkJVmFjRGVhZEl0ZW1zSW5mbyAqZGVhZF9pdGVtc19pbmZvKTsKIGV4dGVy biBJbmRleEJ1bGtEZWxldGVSZXN1bHQgKnZhY19jbGVhbnVwX29uZV9pbmRleChJbmRleFZhY3V1 bUluZm8gKml2aW5mbywKIAkJCQkJCQkJCQkJCQlJbmRleEJ1bGtEZWxldGVSZXN1bHQgKmlzdGF0 KTsKK2V4dGVybiBib29sIG1heWJlX2ludmFsaWRhdGVfeGlkX2FnZWRfc2xvdHMoVHJhbnNhY3Rp b25JZCBvbGRlc3RfeG1pbiwKKwkJCQkJCQkJCQkJVHJhbnNhY3Rpb25JZCBvbGRlc3Rfc2xvdF94 bWluLAorCQkJCQkJCQkJCQlUcmFuc2FjdGlvbklkIG9sZGVzdF9zbG90X2NhdGFsb2dfeG1pbik7 CiAKIC8qIEluIHBvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5jICovCiBleHRlcm4gdm9pZCBBdXRvVmFj dXVtVXBkYXRlQ29zdExpbWl0KHZvaWQpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGlj YXRpb24vc2xvdC5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vc2xvdC5oCmluZGV4IDc3Yzhk MDk3NWI2Li5jYWQxZDg5YjA1YiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24v c2xvdC5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Nsb3QuaApAQCAtNjYsMTAgKzY2 LDEyIEBAIHR5cGVkZWYgZW51bSBSZXBsaWNhdGlvblNsb3RJbnZhbGlkYXRpb25DYXVzZQogCVJT X0lOVkFMX1dBTF9MRVZFTCA9ICgxIDw8IDIpLAogCS8qIGlkbGUgc2xvdCB0aW1lb3V0IGhhcyBv Y2N1cnJlZCAqLwogCVJTX0lOVkFMX0lETEVfVElNRU9VVCA9ICgxIDw8IDMpLAorCS8qIHNsb3Qn cyB4bWluIG9yIGNhdGFsb2dfeG1pbiBoYXMgcmVhY2hlZCBtYXggeGlkIGFnZSAqLworCVJTX0lO VkFMX1hJRF9BR0UgPSAoMSA8PCA0KSwKIH0gUmVwbGljYXRpb25TbG90SW52YWxpZGF0aW9uQ2F1 c2U7CiAKIC8qIE1heGltdW0gbnVtYmVyIG9mIGludmFsaWRhdGlvbiBjYXVzZXMgKi8KLSNkZWZp bmUJUlNfSU5WQUxfTUFYX0NBVVNFUyA0CisjZGVmaW5lCVJTX0lOVkFMX01BWF9DQVVTRVMgNQog CiAvKgogICogV2hlbiB0aGUgc2xvdCBzeW5jaHJvbml6YXRpb24gd29ya2VyIGlzIHJ1bm5pbmcs IG9yIHdoZW4KQEAgLTMyNyw2ICszMjksNyBAQCBleHRlcm4gUEdETExJTVBPUlQgaW50IG1heF9y ZXBsaWNhdGlvbl9zbG90czsKIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgbWF4X3JlcGFja19yZXBs aWNhdGlvbl9zbG90czsKIGV4dGVybiBQR0RMTElNUE9SVCBjaGFyICpzeW5jaHJvbml6ZWRfc3Rh bmRieV9zbG90czsKIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgaWRsZV9yZXBsaWNhdGlvbl9zbG90 X3RpbWVvdXRfc2VjczsKK2V4dGVybiBQR0RMTElNUE9SVCBpbnQgbWF4X3Nsb3RfeGlkX2FnZTsK IAogLyogbWFuYWdlbWVudCBvZiBpbmRpdmlkdWFsIHNsb3RzICovCiBleHRlcm4gdm9pZCBSZXBs aWNhdGlvblNsb3RDcmVhdGUoY29uc3QgY2hhciAqbmFtZSwgYm9vbCBkYl9zcGVjaWZpYywKQEAg LTM2NCw3ICszNjcsOCBAQCBleHRlcm4gdm9pZCBSZXBsaWNhdGlvblNsb3RzRHJvcERCU2xvdHMo T2lkIGRib2lkKTsKIGV4dGVybiBib29sIEludmFsaWRhdGVPYnNvbGV0ZVJlcGxpY2F0aW9uU2xv dHModWludDMyIHBvc3NpYmxlX2NhdXNlcywKIAkJCQkJCQkJCQkJICAgWExvZ1NlZ05vIG9sZGVz dFNlZ25vLAogCQkJCQkJCQkJCQkgICBPaWQgZGJvaWQsCi0JCQkJCQkJCQkJCSAgIFRyYW5zYWN0 aW9uSWQgc25hcHNob3RDb25mbGljdEhvcml6b24pOworCQkJCQkJCQkJCQkgICBUcmFuc2FjdGlv bklkIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uLAorCQkJCQkJCQkJCQkgICBUcmFuc2FjdGlvbklk IHhpZExpbWl0KTsKIGV4dGVybiBSZXBsaWNhdGlvblNsb3QgKlNlYXJjaE5hbWVkUmVwbGljYXRp b25TbG90KGNvbnN0IGNoYXIgKm5hbWUsIGJvb2wgbmVlZF9sb2NrKTsKIGV4dGVybiBpbnQJUmVw bGljYXRpb25TbG90SW5kZXgoUmVwbGljYXRpb25TbG90ICpzbG90KTsKIGV4dGVybiBib29sIFJl cGxpY2F0aW9uU2xvdE5hbWUoaW50IGluZGV4LCBOYW1lIG5hbWUpOwpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvc3RvcmFnZS9wcm9jYXJyYXkuaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY2Fy cmF5LmgKaW5kZXggZWM4OWM0NDgyMjAuLmIxZGVlNGFkODg5IDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9zdG9yYWdlL3Byb2NhcnJheS5oCisrKyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY2Fy cmF5LmgKQEAgLTUxLDYgKzUxLDkgQEAgZXh0ZXJuIFJ1bm5pbmdUcmFuc2FjdGlvbnMgR2V0UnVu bmluZ1RyYW5zYWN0aW9uRGF0YShPaWQgZGJpZCk7CiAKIGV4dGVybiBib29sIFRyYW5zYWN0aW9u SWRJc0luUHJvZ3Jlc3MoVHJhbnNhY3Rpb25JZCB4aWQpOwogZXh0ZXJuIFRyYW5zYWN0aW9uSWQg R2V0T2xkZXN0Tm9uUmVtb3ZhYmxlVHJhbnNhY3Rpb25JZChSZWxhdGlvbiByZWwpOworZXh0ZXJu IFRyYW5zYWN0aW9uSWQgR2V0T2xkZXN0Tm9uUmVtb3ZhYmxlVHJhbnNhY3Rpb25JZFdpdGhTbG90 WGlkcyhSZWxhdGlvbiByZWwsCisJCQkJCQkJCQkJCQkJCQkJCVRyYW5zYWN0aW9uSWQgKnNsb3Rf eG1pbiwKKwkJCQkJCQkJCQkJCQkJCQkJVHJhbnNhY3Rpb25JZCAqc2xvdF9jYXRhbG9nX3htaW4p OwogZXh0ZXJuIFRyYW5zYWN0aW9uSWQgR2V0T2xkZXN0VHJhbnNhY3Rpb25JZENvbnNpZGVyZWRS dW5uaW5nKHZvaWQpOwogZXh0ZXJuIFRyYW5zYWN0aW9uSWQgR2V0T2xkZXN0QWN0aXZlVHJhbnNh Y3Rpb25JZChib29sIGluQ29tbWl0T25seSwKIAkJCQkJCQkJCQkJCSAgYm9vbCBhbGxEYnMpOwpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMTlfcmVwbHNsb3RfbGltaXQucGwgYi9z cmMvdGVzdC9yZWNvdmVyeS90LzAxOV9yZXBsc2xvdF9saW1pdC5wbAppbmRleCA3YjI1M2U2NGQ5 Yy4uNmI3ZTQ4MThiZjQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDE5X3JlcGxz bG90X2xpbWl0LnBsCisrKyBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDE5X3JlcGxzbG90X2xpbWl0 LnBsCkBAIC01NDAsNCArNTQwLDE3OSBAQCBpcyggJHB1Ymxpc2hlcjQtPnNhZmVfcHNxbCgKICRw dWJsaXNoZXI0LT5zdG9wOwogJHN1YnNjcmliZXI0LT5zdG9wOwogCisjIFdhaXQgZm9yIHRoZSBn aXZlbiBzbG90IHRvIGJlIGludmFsaWRhdGVkIHdpdGggcmVhc29uICd4aWRfYWdlZCcKK3N1YiB3 YWl0X2Zvcl94aWRfYWdlZF9pbnZhbGlkYXRpb24KK3sKKwlteSAoJG5vZGUsICRzbG90X25hbWUp ID0gQF87CisJJG5vZGUtPnBvbGxfcXVlcnlfdW50aWwoCisJCSdwb3N0Z3JlcycsIHFxWworCQlT RUxFQ1QgQ09VTlQoc2xvdF9uYW1lKSA9IDEgRlJPTSBwZ19yZXBsaWNhdGlvbl9zbG90cworCQkJ V0hFUkUgc2xvdF9uYW1lID0gJyRzbG90X25hbWUnIEFORAorCQkJYWN0aXZlID0gZmFsc2UgQU5E CisJCQlpbnZhbGlkYXRpb25fcmVhc29uID0gJ3hpZF9hZ2VkJzsKKwldKSBvciBkaWUgIlRpbWVk IG91dCB3YWl0aW5nIGZvciBzbG90ICRzbG90X25hbWUgdG8gYmUgaW52YWxpZGF0ZWQiOworfQor CisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQorIyBUZXN0Y2FzZSBzdGFydDogSW52YWxpZGF0ZSBwaHlzaWNhbCBz bG90IGR1ZSB0byBtYXhfc2xvdF94aWRfYWdlIEdVQworCisjIEluaXRpYWxpemUgcHJpbWFyeSBu b2RlIGZvciBYSUQgYWdlIHRlc3RzCitteSAkcHJpbWFyeTUgPSBQb3N0Z3JlU1FMOjpUZXN0OjpD bHVzdGVyLT5uZXcoJ3ByaW1hcnk1Jyk7CiskcHJpbWFyeTUtPmluaXQoYWxsb3dzX3N0cmVhbWlu ZyA9PiAnbG9naWNhbCcpOworCisjIERpc2FibGUgYXV0b3ZhY3V1bSBzbyBjaGVja3BvaW50ZXIg dHJpZ2dlcnMgdGhlIGludmFsaWRhdGlvbgorbXkgJG1heF9zbG90X3hpZF9hZ2UgPSAxMDA7Cisk cHJpbWFyeTUtPmFwcGVuZF9jb25mKAorCSdwb3N0Z3Jlc3FsLmNvbmYnLCBxcXsKK21heF9zbG90 X3hpZF9hZ2UgPSAkbWF4X3Nsb3RfeGlkX2FnZQorYXV0b3ZhY3V1bSA9IG9mZgorfSk7CisKKyRw cmltYXJ5NS0+c3RhcnQ7CisKKyMgQ3JlYXRlIGEgcHJvY2VkdXJlIHRvIGNvbnN1bWUgWElEcwor JHByaW1hcnk1LT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXF7CisJQ1JFQVRFIFBST0NFRFVS RSBjb25zdW1lX3hpZChjbnQgaW50KQorCUFTIFwkXCQKKwlERUNMQVJFCisJICAgIGkgaW50Owor CUJFR0lOCisJICAgIEZPUiBpIElOIDEuLmNudCBMT09QCisJICAgICAgICBFWEVDVVRFICdTRUxF Q1QgcGdfY3VycmVudF94YWN0X2lkKCknOworCSAgICAgICAgQ09NTUlUOworCSAgICBFTkQgTE9P UDsKKwlFTkQ7CisJXCRcJCBMQU5HVUFHRSBwbHBnc3FsOworfSk7CisKKyMgVGFrZSBhIGJhY2t1 cCBmb3IgY3JlYXRpbmcgc3RhbmRieQorJGJhY2t1cF9uYW1lID0gJ2JhY2t1cDUnOworJHByaW1h cnk1LT5iYWNrdXAoJGJhY2t1cF9uYW1lKTsKKworIyBDcmVhdGUgc3RhbmRieSB3aXRoIEhTIGZl ZWRiYWNrIHNvIHRoZSBzbG90IGdhaW5zIGFuIHhtaW4KK215ICRzdGFuZGJ5NSA9IFBvc3RncmVT UUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnc3RhbmRieTUnKTsKKyRzdGFuZGJ5NS0+aW5pdF9mcm9t X2JhY2t1cCgkcHJpbWFyeTUsICRiYWNrdXBfbmFtZSwgaGFzX3N0cmVhbWluZyA9PiAxKTsKKyRz dGFuZGJ5NS0+YXBwZW5kX2NvbmYoCisJJ3Bvc3RncmVzcWwuY29uZicsIHF7CitwcmltYXJ5X3Ns b3RfbmFtZSA9ICdzYjVfc2xvdCcKK2hvdF9zdGFuZGJ5X2ZlZWRiYWNrID0gb24KK3dhbF9yZWNl aXZlcl9zdGF0dXNfaW50ZXJ2YWwgPSAxCit9KTsKKyRwcmltYXJ5NS0+c2FmZV9wc3FsKAorCSdw b3N0Z3JlcycsIHFxWworICAgIFNFTEVDVCBwZ19jcmVhdGVfcGh5c2ljYWxfcmVwbGljYXRpb25f c2xvdChzbG90X25hbWUgOj0gJ3NiNV9zbG90JywgaW1tZWRpYXRlbHlfcmVzZXJ2ZSA6PSB0cnVl KTsKK10pOworJHN0YW5kYnk1LT5zdGFydDsKKworIyBDcmVhdGUgc29tZSBjb250ZW50IG9uIHBy aW1hcnkgdG8gbW92ZSB4bWluCiskcHJpbWFyeTUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJD UkVBVEUgVEFCTEUgdGFiX2ludDUgQVMgU0VMRUNUIGdlbmVyYXRlX3NlcmllcygxLDEwKSBBUyBh Iik7CiskcHJpbWFyeTUtPndhaXRfZm9yX2NhdGNodXAoJHN0YW5kYnk1KTsKKworIyBXYWl0IGZv ciB0aGUgcGh5c2ljYWwgc2xvdCB0byBnZXQgeG1pbiB2aWEgaG90X3N0YW5kYnlfZmVlZGJhY2sK KyRwcmltYXJ5NS0+cG9sbF9xdWVyeV91bnRpbCgKKwkncG9zdGdyZXMnLCBxcVsKKwlTRUxFQ1Qg eG1pbiBJUyBOT1QgTlVMTAorCQlGUk9NIHBnX2NhdGFsb2cucGdfcmVwbGljYXRpb25fc2xvdHMK KwkJV0hFUkUgc2xvdF9uYW1lID0gJ3NiNV9zbG90JzsKK10pIG9yIGRpZSAiVGltZWQgb3V0IHdh aXRpbmcgZm9yIHNsb3Qgc2I1X3Nsb3QgeG1pbiBmcm9tIEhTIGZlZWRiYWNrIjsKKworIyBTdG9w IHN0YW5kYnkgc28gdGhlIHNsb3QgYmVjb21lcyBpbmFjdGl2ZSB3aXRoIGl0cyB4bWluIGZyb3pl bgorJHN0YW5kYnk1LT5zdG9wOworCisjIEFkdmFuY2UgWElEcyBwYXN0IDJ4IG1heF9zbG90X3hp ZF9hZ2Ugc28gdGhlIHNsb3QncyB4bWluIGlzIHN0YWxlIGVub3VnaAorJHByaW1hcnk1LT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgcXF7Q0FMTCBjb25zdW1lX3hpZCgyICogJG1heF9zbG90X3hpZF9h Z2UpfSk7CiskcHJpbWFyeTUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ0hFQ0tQT0lOVCIpOwor d2FpdF9mb3JfeGlkX2FnZWRfaW52YWxpZGF0aW9uKCRwcmltYXJ5NSwgJ3NiNV9zbG90Jyk7Citv aygxLCAicGh5c2ljYWwgc2xvdCBpbnZhbGlkYXRlZCBkdWUgdG8gWElEIGFnZSAodmlhIGNoZWNr cG9pbnQpIik7CisKKyMgVGVzdGNhc2UgZW5kOiBJbnZhbGlkYXRlIHBoeXNpY2FsIHNsb3QgZHVl IHRvIG1heF9zbG90X3hpZF9hZ2UgR1VDCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworIyA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQor IyBUZXN0Y2FzZSBzdGFydDogSW52YWxpZGF0ZSBsb2dpY2FsIHNsb3QgZHVlIHRvIG1heF9zbG90 X3hpZF9hZ2UgR1VDCisKKyMgQ3JlYXRlIGEgbG9naWNhbCBzbG90IGRpcmVjdGx5IG9uIHRoZSBw cmltYXJ5IChubyBzdWJzY3JpYmVyIG5lZWRlZCkuCisjIFRoZSBzbG90IGdldHMgYSBjYXRhbG9n X3htaW4gaW1tZWRpYXRlbHkgdXBvbiBjcmVhdGlvbi4KKyRwcmltYXJ5NS0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJIlNFTEVDVCBwZ19jcmVhdGVfbG9naWNhbF9yZXBsaWNhdGlvbl9zbG90KCds c3ViNV9zbG90JywgJ3Bnb3V0cHV0JykiKTsKKworJHByaW1hcnk1LT5wb2xsX3F1ZXJ5X3VudGls KAorCSdwb3N0Z3JlcycsIHFxWworCVNFTEVDVCBjYXRhbG9nX3htaW4gSVMgTk9UIE5VTEwKKwlG Uk9NIHBnX2NhdGFsb2cucGdfcmVwbGljYXRpb25fc2xvdHMKKwlXSEVSRSBzbG90X25hbWUgPSAn bHN1YjVfc2xvdCc7CitdKSBvciBkaWUgIlRpbWVkIG91dCB3YWl0aW5nIGZvciBzbG90IGxzdWI1 X3Nsb3QgY2F0YWxvZ194bWluIjsKKworIyBBZHZhbmNlIFhJRHMgcGFzdCAyeCBtYXhfc2xvdF94 aWRfYWdlIHNvIHRoZSBzbG90J3MgY2F0YWxvZ194bWluIGlzIHN0YWxlIGVub3VnaAorJHByaW1h cnk1LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXF7Q0FMTCBjb25zdW1lX3hpZCgyICogJG1heF9z bG90X3hpZF9hZ2UpfSk7CisKKyMgVmFjdXVtIGEgdXNlciB0YWJsZSBzbyBPbGRlc3RYbWluIGRv ZXMgbm90IGluY2x1ZGUgdGhlIHNsb3QncyBjYXRhbG9nX3htaW4sCisjIHNraXBwaW5nIHRoZSBp bnZhbGlkYXRpb24gb2YgdGhlIHNsb3QuCiskcHJpbWFyeTUtPnNhZmVfcHNxbCgncG9zdGdyZXMn LCAiVkFDVVVNIHRhYl9pbnQ1Iik7CitpcyggJHByaW1hcnk1LT5zYWZlX3BzcWwoCisJCSdwb3N0 Z3JlcycsCisJCXFxW1NFTEVDVCBpbnZhbGlkYXRpb25fcmVhc29uIElTIE5VTEwgRlJPTSBwZ19y ZXBsaWNhdGlvbl9zbG90cyBXSEVSRSBzbG90X25hbWUgPSAnbHN1YjVfc2xvdCc7XQorCSksCisJ J3QnLAorCSdsb2dpY2FsIHNsb3Qgbm90IGludmFsaWRhdGVkIGFmdGVyIHZhY3V1bWluZyBhIGRh dGEgdGFibGUnKTsKKworIyBWYWN1dW0gYSBjYXRhbG9nIHRhYmxlIHNvIE9sZGVzdFhtaW4gaW5j bHVkZXMgdGhlIHNsb3QncyBjYXRhbG9nX3htaW4sCisjIHRyaWdnZXJpbmcgaW52YWxpZGF0aW9u IG9mIHRoZSBzbG90LgorJHByaW1hcnk1LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlZBQ1VVTSBw Z19jbGFzcyIpOword2FpdF9mb3JfeGlkX2FnZWRfaW52YWxpZGF0aW9uKCRwcmltYXJ5NSwgJ2xz dWI1X3Nsb3QnKTsKK29rKDEsICJsb2dpY2FsIHNsb3QgaW52YWxpZGF0ZWQgZHVlIHRvIFhJRCBh Z2UgKHZpYSB2YWN1dW0pIik7CisKKyMgVGVzdGNhc2UgZW5kOiBJbnZhbGlkYXRlIGxvZ2ljYWwg c2xvdCBkdWUgdG8gbWF4X3Nsb3RfeGlkX2FnZSBHVUMKKyMgPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyMgPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQorIyBUZXN0Y2FzZSBzdGFydDogSW52YWxpZGF0ZSBsb2dpY2FsIHNs b3Qgb24gc3RhbmRieSBkdWUgdG8gbWF4X3Nsb3RfeGlkX2FnZSBHVUMKKworIyBEaXNhYmxlIG1h eF9zbG90X3hpZF9hZ2Ugb24gcHJpbWFyeSBhbmQgcmVjcmVhdGUgdGhlIHN0cmVhbWluZyBzbG90 CiskcHJpbWFyeTUtPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLAorCXF7CitBTFRFUiBTWVNURU0g U0VUIG1heF9zbG90X3hpZF9hZ2UgPSAwOworU0VMRUNUIHBnX3JlbG9hZF9jb25mKCk7Cit9KTsK KyRwcmltYXJ5NS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwZ19kcm9wX3JlcGxp Y2F0aW9uX3Nsb3QoJ3NiNV9zbG90JykiKTsKKyRwcmltYXJ5NS0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCisJIlNFTEVDVCBwZ19jcmVhdGVfcGh5c2ljYWxfcmVwbGljYXRpb25fc2xvdCgnc2I1X3Ns b3QnLCB0cnVlKSIpOworJHN0YW5kYnk1LT5hcHBlbmRfY29uZigKKwkncG9zdGdyZXNxbC5jb25m JywgcXF7CittYXhfc2xvdF94aWRfYWdlID0gJG1heF9zbG90X3hpZF9hZ2UKK2F1dG92YWN1dW0g PSBvZmYKK30pOworJHN0YW5kYnk1LT5zdGFydDsKKworJHByaW1hcnk1LT53YWl0X2Zvcl9jYXRj aHVwKCRzdGFuZGJ5NSk7CisKKyRzdGFuZGJ5NS0+Y3JlYXRlX2xvZ2ljYWxfc2xvdF9vbl9zdGFu ZGJ5KCRwcmltYXJ5NSwgJ3NiNV9sb2dpY2FsX3Nsb3QnLAorCSdwb3N0Z3JlcycpOworCiskc3Rh bmRieTUtPnBvbGxfcXVlcnlfdW50aWwoCisJJ3Bvc3RncmVzJywgcXFbCisJU0VMRUNUIGNhdGFs b2dfeG1pbiBJUyBOT1QgTlVMTAorCUZST00gcGdfY2F0YWxvZy5wZ19yZXBsaWNhdGlvbl9zbG90 cworCVdIRVJFIHNsb3RfbmFtZSA9ICdzYjVfbG9naWNhbF9zbG90JzsKK10pIG9yIGRpZSAiVGlt ZWQgb3V0IHdhaXRpbmcgZm9yIHNiNV9sb2dpY2FsX3Nsb3QgY2F0YWxvZ194bWluIjsKKworIyBB ZHZhbmNlIFhJRHMgb24gcHJpbWFyeSwgcmVwbGF5IG9uIHN0YW5kYnksIHRoZW4gcmVzdGFydHBv aW50IHRvIGludmFsaWRhdGUKKyRwcmltYXJ5NS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxe0NB TEwgY29uc3VtZV94aWQoMiAqICRtYXhfc2xvdF94aWRfYWdlKX0pOworJHByaW1hcnk1LT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgIkNIRUNLUE9JTlQiKTsKKyRwcmltYXJ5NS0+d2FpdF9mb3JfcmVw bGF5X2NhdGNodXAoJHN0YW5kYnk1KTsKKyRzdGFuZGJ5NS0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs ICJDSEVDS1BPSU5UIik7CisKK3dhaXRfZm9yX3hpZF9hZ2VkX2ludmFsaWRhdGlvbigkc3RhbmRi eTUsICdzYjVfbG9naWNhbF9zbG90Jyk7CitvaygxLCAibG9naWNhbCAoc3RhbmRieSkgc2xvdCBp bnZhbGlkYXRlZCBkdWUgdG8gWElEIGFnZSAodmlhIHJlc3RhcnRwb2ludCkiKTsKKworJHN0YW5k Ynk1LT5zdG9wOworJHByaW1hcnk1LT5zdG9wOworCisjIFRlc3RjYXNlIGVuZDogSW52YWxpZGF0 ZSBsb2dpY2FsIHNsb3Qgb24gc3RhbmRieSBkdWUgdG8gbWF4X3Nsb3RfeGlkX2FnZSBHVUMKKyMg PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KKwogZG9uZV90ZXN0aW5nKCk7Ci0tIAoyLjQ3LjMKCg== --000000000000a38d8c06502493c9 Content-Type: application/x-patch; name="v11-0002-Add-more-tests-for-XID-age-slot-invalidation.patch" Content-Disposition: attachment; filename="v11-0002-Add-more-tests-for-XID-age-slot-invalidation.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mo3ew0w31 RnJvbSA2MDA4NGE0ZDU0Mjg0YzRhNjdkNTQ4ODMwOTAwYTUzZGRkMTA0NTBiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCaGFyYXRoIFJ1cGlyZWRkeSA8YmhhcmF0aC5ydXBpcmVkZHlm b3Jwb3N0Z3Jlc0BnbWFpbC5jb20+CkRhdGU6IEZyaSwgMTcgQXByIDIwMjYgMTg6MzE6MTAgKzAw MDAKU3ViamVjdDogW1BBVENIIHYxMSAyLzNdIEFkZCBtb3JlIHRlc3RzIGZvciBYSUQgYWdlIHNs b3QgaW52YWxpZGF0aW9uCgpDb25zdW1lIFhJRHMgdXAgdG8gd3JhcGFyb3VuZCBXQVJOSU5HIGxp bWl0cyB3aXRoCm1heF9zbG90X3hpZF9hZ2UgbWF0Y2hpbmcgdmFjdXVtX2ZhaWxzYWZlX2FnZSAo MS42QikuIFZlcmlmeSB0aGF0CmF1dG92YWN1dW0gaW52YWxpZGF0ZXMgdGhlIGluYWN0aXZlIHJl cGxpY2F0aW9uIHNsb3QKKFhJRC1hZ2UtYmFzZWQgaW52YWxpZGF0aW9uKSwgdW5ibG9ja3MgZGF0 ZnJvemVueGlkIGFkdmFuY2VtZW50LAphbmQgcHJldmVudHMgd3JhcGFyb3VuZCB3aXRob3V0IGFu eSBpbnRlcnZlbnRpb24uCi0tLQogc3JjL3Rlc3QvcmVjb3ZlcnkvTWFrZWZpbGUgICAgICAgICAg ICAgICAgfCAgIDMgKy0KIHNyYy90ZXN0L3JlY292ZXJ5L3QvMDE5X3JlcGxzbG90X2xpbWl0LnBs IHwgMTMwICsrKysrKysrKysrKysrKysrKysrKysKIDIgZmlsZXMgY2hhbmdlZCwgMTMyIGluc2Vy dGlvbnMoKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWNvdmVyeS9N YWtlZmlsZSBiL3NyYy90ZXN0L3JlY292ZXJ5L01ha2VmaWxlCmluZGV4IGQ0MWFhYWY4YWUxLi41 YzNkMmM4OTk0MSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVjb3ZlcnkvTWFrZWZpbGUKKysrIGIv c3JjL3Rlc3QvcmVjb3ZlcnkvTWFrZWZpbGUKQEAgLTEyLDcgKzEyLDggQEAKIEVYVFJBX0lOU1RB TEw9Y29udHJpYi9wZ19wcmV3YXJtIFwKIAljb250cmliL3BnX3N0YXRfc3RhdGVtZW50cyBcCiAJ Y29udHJpYi90ZXN0X2RlY29kaW5nIFwKLQlzcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2lu dHMKKwlzcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMgXAorCXNyYy90ZXN0L21vZHVs ZXMveGlkX3dyYXBhcm91bmQKIAogc3ViZGlyID0gc3JjL3Rlc3QvcmVjb3ZlcnkKIHRvcF9idWls ZGRpciA9IC4uLy4uLy4uCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWNvdmVyeS90LzAxOV9yZXBs c2xvdF9saW1pdC5wbCBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDE5X3JlcGxzbG90X2xpbWl0LnBs CmluZGV4IDZiN2U0ODE4YmY0Li42ZjkyMDM0ZjNkNSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVj b3ZlcnkvdC8wMTlfcmVwbHNsb3RfbGltaXQucGwKKysrIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8w MTlfcmVwbHNsb3RfbGltaXQucGwKQEAgLTcxNSw0ICs3MTUsMTM0IEBAICRwcmltYXJ5NS0+c3Rv cDsKICMgVGVzdGNhc2UgZW5kOiBJbnZhbGlkYXRlIGxvZ2ljYWwgc2xvdCBvbiBzdGFuZGJ5IGR1 ZSB0byBtYXhfc2xvdF94aWRfYWdlIEdVQwogIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCisjID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQorIyBUZXN0Y2FzZSBzdGFydDogWElELWFnZS1iYXNlZCBz bG90IGludmFsaWRhdGlvbiB3aXRoIGF1dG92YWN1dW0gKHByb2R1Y3Rpb24tbGlrZSkKKworIyBT dGFuZGJ5IHNldHMgc2xvdCB4bWluIHZpYSBIUyBmZWVkYmFjaywgZGlzY29ubmVjdHMsIFhJRHMg YXJlIGNvbnN1bWVkLgorIyBtYXhfc2xvdF94aWRfYWdlIGlzIHNldCB0byB2YWN1dW1fZmFpbHNh ZmVfYWdlICgxLjZCKSBzbyBhdXRvdmFjdXVtCisjIGludmFsaWRhdGVzIHRoZSBzbG90IGJlZm9y ZSBlbnRlcmluZyBmYWlsc2FmZSBtb2RlLCB1bmJsb2NraW5nCisjIGRhdGZyb3plbnhpZCBhZHZh bmNlbWVudCBhbmQgYXZvaWRpbmcgWElEIHdyYXBhcm91bmQgd2l0aG91dCBtYW51YWwKKyMgVkFD VVVNIG9yIGRvd250aW1lLgorCisjIFZlcmlmeSBzZXJ2ZXIgbG9nIHNob3dzIHNsb3QgaW52YWxp ZGF0aW9uIGJ5IGF1dG92YWN1dW0gd29ya2VyCitzdWIgdmVyaWZ5X3Nsb3RfeGlkX2FnZWRfaW52 YWxpZGF0aW9uX2luX3NlcnZlcl9sb2cKK3sKKwlteSAoJG5vZGUsICRzbG90X25hbWUsICRtYXhf YWdlLCAkY29uc3VtZWRfeGlkcykgPSBAXzsKKworCW15ICRsb2cgPSBzbHVycF9maWxlKCRub2Rl LT5sb2dmaWxlKTsKKworCSMgVmVyaWZ5IHRoZSBpbnZhbGlkYXRpb24gd2FzIHBlcmZvcm1lZCBi eSBhbiBhdXRvdmFjdXVtIHdvcmtlcgorCWxpa2UoJGxvZywKKwkJcXIvYXV0b3ZhY3V1bSB3b3Jr ZXJcW1xkK1xdIExPRzpccytpbnZhbGlkYXRpbmcgb2Jzb2xldGUgcmVwbGljYXRpb24gc2xvdCAi JHNsb3RfbmFtZSIvLAorCQkic2VydmVyIGxvZzogJHNsb3RfbmFtZSBpbnZhbGlkYXRlZCBieSBh dXRvdmFjdXVtIHdvcmtlciIpOworCisJIyBWZXJpZnkgREVUQUlMIHNob3dzIHRoZSB4bWluIGFn ZSBleGNlZWRpbmcgbWF4X3Nsb3RfeGlkX2FnZQorCWxpa2UoJGxvZywKKwkJcXIvYXV0b3ZhY3V1 bSB3b3JrZXJcW1xkK1xdIERFVEFJTDpccytUaGUgc2xvdCdzICg/OmNhdGFsb2cgKT94bWluIGFn ZSBvZiAoXGQrKSBleGNlZWRzIHRoZSBjb25maWd1cmVkICJtYXhfc2xvdF94aWRfYWdlIiBvZiAk bWF4X2FnZSBieSAoXGQrKSB0cmFuc2FjdGlvbnMvLAorCQkic2VydmVyIGxvZzogREVUQUlMIHNo b3dzIHhtaW4gYWdlIGV4Y2VlZHMgbWF4X3Nsb3RfeGlkX2FnZSAkbWF4X2FnZSIpOworCisJIyBF eHRyYWN0IHhpZCBhZ2UgZnJvbSB0aGUgbG9nIGFuZCByZXBvcnQgZm9yIGRpYWdub3N0aWNzCisJ JGxvZyA9fgorCSAgL1RoZSBzbG90J3MgKD86Y2F0YWxvZyApP3htaW4gYWdlIG9mIChcZCspIGV4 Y2VlZHMgdGhlIGNvbmZpZ3VyZWQgIm1heF9zbG90X3hpZF9hZ2UiIG9mICRtYXhfYWdlIGJ5IChc ZCspLzsKKwlteSAkbG9nX3hpZF9hZ2UgPSAkMSAvLyAnTi9BJzsKKwlteSAkZXhjZWVkZWRfYnkg PSAkMiAvLyAnTi9BJzsKKwlkaWFnICJ4aWRfYWdlIGZyb20gc2VydmVyIGxvZz0kbG9nX3hpZF9h Z2UsIGV4Y2VlZGVkX2J5PSRleGNlZWRlZF9ieSwgbWF4X3Nsb3RfeGlkX2FnZT0kbWF4X2FnZSwg Y29uc3VtZWQ9JGNvbnN1bWVkX3hpZHMgWElEcyI7Cit9CisKKyMgVmVyaWZ5IHNsb3QgaW52YWxp ZGF0aW9uIGFuZCB3YWl0IGZvciBhdXRvdmFjdXVtIHRvIGFkdmFuY2UgZGF0ZnJvemVueGlkCitz dWIgdmVyaWZ5X2ludmFsaWRhdGlvbl9hbmRfcmVjb3ZlcnkKK3sKKwlteSAoJG5vZGUsICRzbG90 X25hbWUsICRtYXhfYWdlLCAkY29uc3VtZWRfeGlkcykgPSBAXzsKKworCXJldHVybiBpZiAkbWF4 X2FnZSA9PSAwOworCisJd2FpdF9mb3JfeGlkX2FnZWRfaW52YWxpZGF0aW9uKCRub2RlLCAkc2xv dF9uYW1lKTsKKwlvaygxLCAnYXV0b3ZhY3V1bSBpbnZhbGlkYXRlZCBzbG90IGR1ZSB0byB4aWRf YWdlZCcpOworCisJdmVyaWZ5X3Nsb3RfeGlkX2FnZWRfaW52YWxpZGF0aW9uX2luX3NlcnZlcl9s b2coJG5vZGUsICRzbG90X25hbWUsCisJCSRtYXhfYWdlLCAkY29uc3VtZWRfeGlkcyk7CisKKwkj IFdhaXQgZm9yIGF1dG92YWN1dW0gdG8gYWR2YW5jZSBkYXRmcm96ZW54aWQgaW4gYWxsIGRhdGFi YXNlcyBwYXN0IHRoZQorCSMgd3JhcGFyb3VuZCB0aHJlc2hvbGQuCisJJG5vZGUtPnBvbGxfcXVl cnlfdW50aWwoCisJCSdwb3N0Z3JlcycsIHFxWworCQlTRUxFQ1QgTk9UIEVYSVNUUyAoCisJCQlT RUxFQ1QgMSBGUk9NIHBnX2RhdGFiYXNlCisJCQlXSEVSRSBhZ2UoZGF0ZnJvemVueGlkKSA+IDIw MDAwMDAwMDAKKwkJKTsKKwldKSBvciBkaWUgIlRpbWVkIG91dCB3YWl0aW5nIGZvciBhdXRvdmFj dXVtIHRvIGFkdmFuY2UgZGF0ZnJvemVueGlkIGluIGFsbCBkYXRhYmFzZXMiOworfQorCitteSAk cHJpbWFyeTYgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3ByaW1hcnk2Jyk7Cisk cHJpbWFyeTYtPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAnbG9naWNhbCcpOworCiskbWF4X3Ns b3RfeGlkX2FnZSA9IDE2MDAwMDAwMDA7ICAgICMgbWF0Y2hlcyB2YWN1dW1fZmFpbHNhZmVfYWdl IGRlZmF1bHQKKyRwcmltYXJ5Ni0+YXBwZW5kX2NvbmYoCisJJ3Bvc3RncmVzcWwuY29uZicsIHFx eworbWF4X3Nsb3RfeGlkX2FnZSA9ICRtYXhfc2xvdF94aWRfYWdlCithdXRvdmFjdXVtX25hcHRp bWUgPSAxcworfSk7CisKKyRwcmltYXJ5Ni0+c3RhcnQ7CiskcHJpbWFyeTYtPnNhZmVfcHNxbCgn cG9zdGdyZXMnLCAiQ1JFQVRFIEVYVEVOU0lPTiB4aWRfd3JhcGFyb3VuZCIpOworCiskYmFja3Vw X25hbWUgPSAnYmFja3VwNic7CiskcHJpbWFyeTYtPmJhY2t1cCgkYmFja3VwX25hbWUpOworCitt eSAkc3RhbmRieTYgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3N0YW5kYnk2Jyk7 Ciskc3RhbmRieTYtPmluaXRfZnJvbV9iYWNrdXAoJHByaW1hcnk2LCAkYmFja3VwX25hbWUsIGhh c19zdHJlYW1pbmcgPT4gMSk7Ciskc3RhbmRieTYtPmFwcGVuZF9jb25mKAorCSdwb3N0Z3Jlc3Fs LmNvbmYnLCBxeworcHJpbWFyeV9zbG90X25hbWUgPSAnc2I2X3Nsb3QnCitob3Rfc3RhbmRieV9m ZWVkYmFjayA9IG9uCit3YWxfcmVjZWl2ZXJfc3RhdHVzX2ludGVydmFsID0gMQorfSk7CisKKyRw cmltYXJ5Ni0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwZ19jcmVhdGVfcGh5c2lj YWxfcmVwbGljYXRpb25fc2xvdCgnc2I2X3Nsb3QnLCB0cnVlKSIpOworCiskc3RhbmRieTYtPnN0 YXJ0OworCiskcHJpbWFyeTYtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgVEFCTEUg dGFiX2ludDYgQVMgU0VMRUNUIGdlbmVyYXRlX3NlcmllcygxLDEwKSBBUyBhIik7CiskcHJpbWFy eTYtPndhaXRfZm9yX2NhdGNodXAoJHN0YW5kYnk2KTsKKworJHByaW1hcnk2LT5wb2xsX3F1ZXJ5 X3VudGlsKAorCSdwb3N0Z3JlcycsIHFxWworCVNFTEVDVCB4bWluIElTIE5PVCBOVUxMIEZST00g cGdfcmVwbGljYXRpb25fc2xvdHMKKwkJV0hFUkUgc2xvdF9uYW1lID0gJ3NiNl9zbG90JzsKK10p IG9yIGRpZSAiVGltZWQgb3V0IHdhaXRpbmcgZm9yIHNiNl9zbG90IHhtaW4gZnJvbSBIUyBmZWVk YmFjayI7CisKKyMgU3RvcCBzdGFuZGJ5OyBzbG90IHhtaW4gcGVyc2lzdHMgYW5kIGhvbGRzIGJh Y2sgZGF0ZnJvemVueGlkCiskc3RhbmRieTYtPnN0b3A7CisKKyMgQ29uc3VtZSBYSURzIGluIDUw TSBjaHVua3M7IGF1dG92YWN1dW0gKG5hcHRpbWU9MXMpIHdpbGwgaW52YWxpZGF0ZSB0aGUKKyMg c2xvdCBvbmNlIHhtaW4gYWdlIGV4Y2VlZHMgbWF4X3Nsb3RfeGlkX2FnZS4KK215ICRsb2dzdGFy dDYgPSAtcyAkcHJpbWFyeTYtPmxvZ2ZpbGU7CitteSAkY2h1bmsgPSA1MF8wMDBfMDAwOworbXkg JG1heF94aWRzID0gMl8yMDBfMDAwXzAwMDsKK215ICRjb25zdW1lZCA9IDA7CisKK3doaWxlICgk Y29uc3VtZWQgPCAkbWF4X3hpZHMpCit7CisJJHByaW1hcnk2LT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywgIlNFTEVDVCBjb25zdW1lX3hpZHMoJGNodW5rKSIpOworCSRjb25zdW1lZCArPSAkY2h1bms7 CisJbXkgJHJlbWFpbmluZyA9ICRtYXhfeGlkcyAtICRjb25zdW1lZDsKKwlkaWFnICJjb25zdW1l ZCAkY29uc3VtZWQgLyAkbWF4X3hpZHMgWElEcyAoJHJlbWFpbmluZyByZW1haW5pbmcpIjsKK30K KwordmVyaWZ5X2ludmFsaWRhdGlvbl9hbmRfcmVjb3ZlcnkoJHByaW1hcnk2LCAnc2I2X3Nsb3Qn LAorCSRtYXhfc2xvdF94aWRfYWdlLCAkY29uc3VtZWQpOworCisjIENvbnN1bWUgMUIgbW9yZSBY SURzIOKAlCBjb21iaW5pbmcgd2l0aCB0aGUgMi4yQiBjb25zdW1lZCBhYm92ZSwgdGhlIHRvdGFs CisjIG9mIDMuMkIgZXhjZWVkcyB0aGUgMl4zMSAofjIuMUIpIHVzYWJsZSBYSUQgc3BhY2UgKHhp ZFN0b3BMaW1pdCksIGkuZS4KKyMgbW9yZSB0aGFuIG9uZSBmdWxsIHdyYXBhcm91bmQgY3ljbGUs IHByb3ZpbmcgdGhlIHN5c3RlbSBpcyBoZWFsdGh5LgorJHByaW1hcnk2LT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywgIlNFTEVDVCBjb25zdW1lX3hpZHMoMTAwMDAwMDAwMCkiKTsKK29rKDEsICd3cml0 ZXMgc3VjY2VlZCBhZnRlciBhdXRvdmFjdXVtIGludmFsaWRhdGVkIHRoZSBzbG90Jyk7CisKKyRw cmltYXJ5Ni0+c3RvcDsKKworIyBUZXN0Y2FzZSBlbmQ6IFhJRC1hZ2UtYmFzZWQgc2xvdCBpbnZh bGlkYXRpb24gd2l0aCBhdXRvdmFjdXVtIChwcm9kdWN0aW9uLWxpa2UpCisjID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CisKIGRvbmVfdGVzdGluZygpOwotLSAKMi40Ny4zCgo= --000000000000a38d8c06502493c9 Content-Type: application/x-patch; name="v11-0003-Avoid-concurrent-XID-age-slot-invalidation-attem.patch" Content-Disposition: attachment; filename="v11-0003-Avoid-concurrent-XID-age-slot-invalidation-attem.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mo3ew0w72 RnJvbSA3ZTE3NTQzNTk0NzIyMDU0YTkzMTBhMTVkYTliMjUwZDQ3NmU0MzZlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCaGFyYXRoIFJ1cGlyZWRkeSA8YmhhcmF0aC5ydXBpcmVkZHlm b3Jwb3N0Z3Jlc0BnbWFpbC5jb20+CkRhdGU6IEZyaSwgMTcgQXByIDIwMjYgMTg6MzE6MzUgKzAw MDAKU3ViamVjdDogW1BBVENIIHYxMSAzLzNdIEF2b2lkIGNvbmN1cnJlbnQgWElELWFnZSBzbG90 IGludmFsaWRhdGlvbiBhdHRlbXB0cwoKTXVsdGlwbGUgcHJvY2Vzc2VzIChhdXRvdmFjdXVtIHdv cmtlcnMsIGJhY2tlbmRzIHJ1bm5pbmcgVkFDVVVNKQpjYW4gY29uY3VycmVudGx5IGF0dGVtcHQg dG8gaW52YWxpZGF0ZSB0aGUgc2FtZSByZXBsaWNhdGlvbiBzbG90CmR1ZSB0byBYSUQgYWdlLCBj YXVzaW5nIHRoZW0gdG8gd2FpdCBvbiB0aGUgc2FtZSBDb25kaXRpb25WYXJpYWJsZQp3aGlsZSB3 YWl0aW5nIGZvciBhIHNsb3cgd2Fsc2VuZGVyIHRvIHJlbGVhc2UgdGhlIHNsb3QuCgpBZGQgYW4g aW52YWxpZGF0aW5nX3Byb2MgZmllbGQgdG8gUmVwbGljYXRpb25TbG90IHRvIHRyYWNrIHdoaWNo CnByb2Nlc3MgaXMgY3VycmVudGx5IGF0dGVtcHRpbmcgaW52YWxpZGF0aW9uLiBXaGVuIGEgcHJv Y2VzcyBzZWVzCnRoYXQgYW5vdGhlciBsaXZlIHByb2Nlc3MgaXMgYWxyZWFkeSB3b3JraW5nIG9u IGEgc2xvdCwgaXQgc2tpcHMKdGhlIHNsb3QgYW5kIGRlZmVycyB0byBhIHN1YnNlcXVlbnQgY3lj bGUuIFRoaXMgcHJldmVudHMKdW5uZWNlc3NhcnkgYmxvY2tpbmcgZHVyaW5nIFhJRC1hZ2UgYmFz ZWQgc2xvdCBpbnZhbGlkYXRpb24uCgpBZGRlZCBhbiBpbmplY3Rpb24gcG9pbnQgaW4gdGhlIHdh bHNlbmRlciB0byBtaW1pYyBzbG93IFNJR1RFUk0KcHJvY2Vzc2luZyBhbmQgYSBUQVAgdGVzdCBm b3IgdGhlIGNvbmN1cnJlbnQgc2xvdCBpbnZhbGlkYXRpb24uCi0tLQogc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vc2xvdC5jICAgICAgICAgICAgfCAgNzUgKysrKysrKysrKwogc3JjL2JhY2tlbmQv dGNvcC9wb3N0Z3Jlcy5jICAgICAgICAgICAgICAgfCAgMTEgKysKIHNyYy9pbmNsdWRlL3JlcGxp Y2F0aW9uL3Nsb3QuaCAgICAgICAgICAgIHwgICA3ICsKIHNyYy90ZXN0L3JlY292ZXJ5L3QvMDE5 X3JlcGxzbG90X2xpbWl0LnBsIHwgMTYxICsrKysrKysrKysrKysrKysrKysrKysKIDQgZmlsZXMg Y2hhbmdlZCwgMjU0IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9zbG90LmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90LmMKaW5kZXggZmU0 M2Y1Yzg4MjAuLjdjZWYzMjVhODg4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9zbG90LmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5jCkBAIC0yMzMsNiAr MjMzLDcgQEAgUmVwbGljYXRpb25TbG90c1NobWVtSW5pdCh2b2lkICphcmcpCiAKIAkJLyogZXZl cnl0aGluZyBlbHNlIGlzIHplcm9lZCBieSB0aGUgbWVtc2V0IGFib3ZlICovCiAJCXNsb3QtPmFj dGl2ZV9wcm9jID0gSU5WQUxJRF9QUk9DX05VTUJFUjsKKwkJc2xvdC0+aW52YWxpZGF0aW5nX3By b2MgPSBJTlZBTElEX1BST0NfTlVNQkVSOwogCQlTcGluTG9ja0luaXQoJnNsb3QtPm11dGV4KTsK IAkJTFdMb2NrSW5pdGlhbGl6ZSgmc2xvdC0+aW9faW5fcHJvZ3Jlc3NfbG9jaywKIAkJCQkJCSBM V1RSQU5DSEVfUkVQTElDQVRJT05fU0xPVF9JTyk7CkBAIC01MDEsNiArNTAyLDcgQEAgUmVwbGlj YXRpb25TbG90Q3JlYXRlKGNvbnN0IGNoYXIgKm5hbWUsIGJvb2wgZGJfc3BlY2lmaWMsCiAJc2xv dC0+bGFzdF9zYXZlZF9yZXN0YXJ0X2xzbiA9IEludmFsaWRYTG9nUmVjUHRyOwogCXNsb3QtPmlu YWN0aXZlX3NpbmNlID0gMDsKIAlzbG90LT5zbG90c3luY19za2lwX3JlYXNvbiA9IFNTX1NLSVBf Tk9ORTsKKwlzbG90LT5pbnZhbGlkYXRpbmdfcHJvYyA9IElOVkFMSURfUFJPQ19OVU1CRVI7CiAK IAkvKgogCSAqIENyZWF0ZSB0aGUgc2xvdCBvbiBkaXNrLiAgV2UgaGF2ZW4ndCBhY3R1YWxseSBt YXJrZWQgdGhlIHNsb3QgYWxsb2NhdGVkCkBAIC0yMDUyLDYgKzIwNTQsNyBAQCBJbnZhbGlkYXRl UG9zc2libHlPYnNvbGV0ZVNsb3QodWludDMyIHBvc3NpYmxlX2NhdXNlcywKIAlpbnQJCQlsYXN0 X3NpZ25hbGVkX3BpZCA9IDA7CiAJYm9vbAkJcmVsZWFzZWRfbG9jayA9IGZhbHNlOwogCWJvb2wJ CWludmFsaWRhdGVkID0gZmFsc2U7CisJYm9vbAkJYW1faW52YWxpZGF0aW5nID0gZmFsc2U7CiAJ VGltZXN0YW1wVHogaW5hY3RpdmVfc2luY2UgPSAwOwogCiAJZm9yICg7OykKQEAgLTIxMTIsNiAr MjExNSw1OSBAQCBJbnZhbGlkYXRlUG9zc2libHlPYnNvbGV0ZVNsb3QodWludDMyIHBvc3NpYmxl X2NhdXNlcywKIAkJCWJyZWFrOwogCQl9CiAKKwkJLyoKKwkJICogU2tpcCBYSUQtYWdlIGludmFs aWRhdGlvbiBpZiBhbm90aGVyIHByb2Nlc3MgaXMgYWxyZWFkeQorCQkgKiBpbnZhbGlkYXRpbmcg dGhpcyBzbG90LgorCQkgKgorCQkgKiBDaGVjayBpZiBhbm90aGVyIHByb2Nlc3MgaXMgYWxyZWFk eSB0cnlpbmcgdG8gaW52YWxpZGF0ZSB0aGlzIHNsb3QuCisJCSAqIElmIHNvLCBza2lwIGl0IHRv IGF2b2lkIG11bHRpcGxlIHByb2Nlc3NlcyBibG9ja2luZyBvbiB0aGUgc2FtZSBDVgorCQkgKiBz bGVlcC4gVGhlIGZpcnN0IHByb2Nlc3Mgd2lsbCBjb21wbGV0ZSB0aGUgaW52YWxpZGF0aW9uIGF0 dGVtcHQ7CisJCSAqIG90aGVycyBkZWZlciB0byBhIHN1YnNlcXVlbnQgY3ljbGUuCisJCSAqCisJ CSAqIFdlIGhhbmRsZSB0aGlzIG9ubHkgZm9yIFhJRC1hZ2UgaW52YWxpZGF0aW9uIGJlY2F1c2Ug bXVsdGlwbGUKKwkJICogcHJvY2Vzc2VzIChhdXRvdmFjdXVtIHdvcmtlcnMsIGJhY2tlbmRzIHJ1 bm5pbmcgVkFDVVVNLCB0aGUKKwkJICogY2hlY2twb2ludGVyKSBjYW4gYXR0ZW1wdCBpdCBjb25j dXJyZW50bHksIG1ha2luZyBpdCBsaWtlbHkgdGhhdAorCQkgKiBzZXZlcmFsIGVuZCB1cCBibG9j a2luZyBvbiB0aGUgc2FtZSBDb25kaXRpb25WYXJpYWJsZSB3aGlsZSB3YWl0aW5nCisJCSAqIGZv ciBhIHNsb3cgd2Fsc2VuZGVyIHRvIHJlbGVhc2UgdGhlIHNsb3QuIEludmFsaWRhdGlvbiBkdWUg dG8gb3RoZXIKKwkJICogY2F1c2VzIGNhbiBhbHNvIGludm9sdmUgbXVsdGlwbGUgcHJvY2Vzc2Vz IChlLmcuLCBvbiBhIHN0YW5kYnksIHRoZQorCQkgKiBjaGVja3BvaW50ZXIgYW5kIHRoZSBzdGFy dHVwIHByb2Nlc3MgbWF5IGF0dGVtcHQgdG8gaW52YWxpZGF0ZSBhCisJCSAqIHNsb3QgZm9yIFJT X0lOVkFMX1dBTF9MRVZFTCBhbmQgUlNfSU5WQUxfSE9SSVpPTiByZXNwZWN0aXZlbHkpLCBidXQK KwkJICogc3VjaCBjb25jdXJyZW50IGF0dGVtcHRzIGFyZSByYXJlIGluIHByYWN0aWNlLgorCQkg Ki8KKwkJaWYgKGludmFsaWRhdGlvbl9jYXVzZSA9PSBSU19JTlZBTF9YSURfQUdFICYmCisJCQlz LT5pbnZhbGlkYXRpbmdfcHJvYyAhPSBJTlZBTElEX1BST0NfTlVNQkVSKQorCQl7CisJCQlpbnQJ CQlpbnZhbGlkYXRpbmdfcGlkOworCisJCQlpbnZhbGlkYXRpbmdfcGlkID0gR2V0UEdQcm9jQnlO dW1iZXIocy0+aW52YWxpZGF0aW5nX3Byb2MpLT5waWQ7CisKKwkJCWlmIChpbnZhbGlkYXRpbmdf cGlkICE9IDAgJiYKKwkJCQlzLT5pbnZhbGlkYXRpbmdfcHJvYyAhPSBNeVByb2NOdW1iZXIpCisJ CQl7CisJCQkJLyogQW5vdGhlciBsaXZlIHByb2Nlc3MgaXMgYWxyZWFkeSBpbnZhbGlkYXRpbmcg dGhpcyBzbG90ICovCisJCQkJU3BpbkxvY2tSZWxlYXNlKCZzLT5tdXRleCk7CisJCQkJaWYgKHJl bGVhc2VkX2xvY2spCisJCQkJCUxXTG9ja1JlbGVhc2UoUmVwbGljYXRpb25TbG90Q29udHJvbExv Y2spOworCQkJCWJyZWFrOworCQkJfQorCisJCQkvKgorCQkJICogVGhlIHByZXZpb3VzbHkgcmVj b3JkZWQgcHJvY2VzcyBoYXMgZXhpdGVkIChwaWQgPT0gMCkgb3IgaXQncworCQkJICogdXMuIFJl c2V0IGFuZCBwcm9jZWVkIHdpdGggaW52YWxpZGF0aW9uLgorCQkJICovCisJCQlzLT5pbnZhbGlk YXRpbmdfcHJvYyA9IElOVkFMSURfUFJPQ19OVU1CRVI7CisJCX0KKworCQkvKgorCQkgKiBJZiB0 aGUgc2xvdCBpcyBhY3RpdmUgKHdlJ2xsIG5lZWQgdG8gc2lnbmFsIGFuZCB3YWl0KSwgcmVjb3Jk CisJCSAqIG91cnNlbHZlcyBhcyB0aGUgaW52YWxpZGF0aW5nIHByb2Nlc3MuCisJCSAqLworCQlp ZiAocy0+YWN0aXZlX3Byb2MgIT0gSU5WQUxJRF9QUk9DX05VTUJFUikKKwkJeworCQkJcy0+aW52 YWxpZGF0aW5nX3Byb2MgPSBNeVByb2NOdW1iZXI7CisJCQlhbV9pbnZhbGlkYXRpbmcgPSB0cnVl OworCQl9CisKIAkJc2xvdG5hbWUgPSBzLT5kYXRhLm5hbWU7CiAJCWFjdGl2ZV9wcm9jID0gcy0+ YWN0aXZlX3Byb2M7CiAKQEAgLTIxMzEsNiArMjE4NywxMiBAQCBJbnZhbGlkYXRlUG9zc2libHlP YnNvbGV0ZVNsb3QodWludDMyIHBvc3NpYmxlX2NhdXNlcywKIAkJCXMtPmFjdGl2ZV9wcm9jID0g TXlQcm9jTnVtYmVyOwogCQkJcy0+ZGF0YS5pbnZhbGlkYXRlZCA9IGludmFsaWRhdGlvbl9jYXVz ZTsKIAorCQkJLyoKKwkJCSAqIENsZWFyIHRoZSBpbnZhbGlkYXRpbmcgcHJvY2VzcyBzaW5jZSB3 ZSBoYXZlIGNvbXBsZXRlZCB0aGUKKwkJCSAqIGludmFsaWRhdGlvbiAoYWNxdWlyZWQgdGhlIHNs b3QgYW5kIG1hcmtlZCBpdCBpbnZhbGlkKS4KKwkJCSAqLworCQkJcy0+aW52YWxpZGF0aW5nX3By b2MgPSBJTlZBTElEX1BST0NfTlVNQkVSOworCiAJCQkvKgogCQkJICogWFhYOiBXZSBzaG91bGQg Y29uc2lkZXIgbm90IG92ZXJ3cml0aW5nIHJlc3RhcnRfbHNuIGFuZCBpbnN0ZWFkCiAJCQkgKiBq dXN0IHJlbHkgb24gLmludmFsaWRhdGVkLgpAQCAtMjI1NSw2ICsyMzE3LDE5IEBAIEludmFsaWRh dGVQb3NzaWJseU9ic29sZXRlU2xvdCh1aW50MzIgcG9zc2libGVfY2F1c2VzLAogCQl9CiAJfQog CisJLyoKKwkgKiBJZiB3ZSBzZXQgaW52YWxpZGF0aW5nX3Byb2MgYnV0IGV4aXRlZCB3aXRob3V0 IGNvbXBsZXRpbmcgdGhlCisJICogaW52YWxpZGF0aW9uIChlLmcuLCB0aGUgc2xvdCBjYXVnaHQg dXAgd2hpbGUgd2Ugd2VyZSB3YWl0aW5nLCBvciB0aGUKKwkgKiBzbG90IHdhcyBkcm9wcGVkKSwg Y2xlYXIgaXQgc28gb3RoZXIgcHJvY2Vzc2VzIGRvbid0IHNraXAgdGhpcyBzbG90LgorCSAqLwor CWlmIChhbV9pbnZhbGlkYXRpbmcgJiYgIWludmFsaWRhdGVkKQorCXsKKwkJU3BpbkxvY2tBY3F1 aXJlKCZzLT5tdXRleCk7CisJCWlmIChzLT5pbnZhbGlkYXRpbmdfcHJvYyA9PSBNeVByb2NOdW1i ZXIpCisJCQlzLT5pbnZhbGlkYXRpbmdfcHJvYyA9IElOVkFMSURfUFJPQ19OVU1CRVI7CisJCVNw aW5Mb2NrUmVsZWFzZSgmcy0+bXV0ZXgpOworCX0KKwogCUFzc2VydChyZWxlYXNlZF9sb2NrID09 ICFMV0xvY2tIZWxkQnlNZShSZXBsaWNhdGlvblNsb3RDb250cm9sTG9jaykpOwogCiAJKnJlbGVh c2VkX2xvY2tfb3V0ID0gcmVsZWFzZWRfbG9jazsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Rj b3AvcG9zdGdyZXMuYyBiL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYwppbmRleCAyYzFmMTRi Nzg4OS4uODQ2ZWU2MTMyNDMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMu YworKysgYi9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKQEAgLTMzNzUsNiArMzM3NSwxNyBA QCBQcm9jZXNzSW50ZXJydXB0cyh2b2lkKQogCQlQcm9jRGllU2VuZGVyVWlkID0gMDsKIAkJUXVl cnlDYW5jZWxQZW5kaW5nID0gZmFsc2U7IC8qIFByb2NEaWUgdHJ1bXBzIFF1ZXJ5Q2FuY2VsICov CiAJCUxvY2tFcnJvckNsZWFudXAoKTsKKworI2lmZGVmIFVTRV9JTkpFQ1RJT05fUE9JTlRTCisJ CS8qCisJCSAqIEluamVjdGlvbiBwb2ludCB1c2VkIHRvIHNpbXVsYXRlIGEgd2Fsc2VuZGVyIHRo YXQgaXMgc2xvdyB0bworCQkgKiByZXNwb25kIHRvIFNJR1RFUk0sIGFsbG93aW5nIHRlc3RzIHRv IHZlcmlmeSBjb25jdXJyZW50IHNsb3QKKwkJICogaW52YWxpZGF0aW9uIGJlaGF2aW9yLgorCQkg Ki8KKwkJaWYgKGFtX3dhbHNlbmRlcikKKwkJCUlOSkVDVElPTl9QT0lOVCgid2Fsc2VuZGVyLWJl Zm9yZS1zaWd0ZXJtLWV4aXQiLCBOVUxMKTsKKyNlbmRpZgorCiAJCS8qIEFzIGluIHF1aWNrZGll LCBkb24ndCByaXNrIHNlbmRpbmcgdG8gY2xpZW50IGR1cmluZyBhdXRoICovCiAJCWlmIChDbGll bnRBdXRoSW5Qcm9ncmVzcyAmJiB3aGVyZVRvU2VuZE91dHB1dCA9PSBEZXN0UmVtb3RlKQogCQkJ d2hlcmVUb1NlbmRPdXRwdXQgPSBEZXN0Tm9uZTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Jl cGxpY2F0aW9uL3Nsb3QuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Nsb3QuaAppbmRleCBj YWQxZDg5YjA1Yi4uZmIwODU0NDdkMjMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0 aW9uL3Nsb3QuaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9zbG90LmgKQEAgLTI4NCw2 ICsyODQsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QgUmVwbGljYXRpb25TbG90CiAJICogc2xvdHN5bmNf c2tpcF9yZWFzb24gcHJvdmlkZXMgbm8gcHJhY3RpY2FsIGJlbmVmaXQuCiAJICovCiAJU2xvdFN5 bmNTa2lwUmVhc29uIHNsb3RzeW5jX3NraXBfcmVhc29uOworCisJLyoKKwkgKiBQcm9jZXNzIGN1 cnJlbnRseSBhdHRlbXB0aW5nIHRvIGludmFsaWRhdGUgdGhpcyBzbG90LgorCSAqIElOVkFMSURf UFJPQ19OVU1CRVIgbWVhbnMgbm8gaW52YWxpZGF0aW9uIGlzIGluIHByb2dyZXNzLiBQcm90ZWN0 ZWQgYnkKKwkgKiB0aGUgc2xvdCdzIG11dGV4LgorCSAqLworCVByb2NOdW1iZXIJaW52YWxpZGF0 aW5nX3Byb2M7CiB9IFJlcGxpY2F0aW9uU2xvdDsKIAogI2RlZmluZSBTbG90SXNQaHlzaWNhbChz bG90KSAoKHNsb3QpLT5kYXRhLmRhdGFiYXNlID09IEludmFsaWRPaWQpCmRpZmYgLS1naXQgYS9z cmMvdGVzdC9yZWNvdmVyeS90LzAxOV9yZXBsc2xvdF9saW1pdC5wbCBiL3NyYy90ZXN0L3JlY292 ZXJ5L3QvMDE5X3JlcGxzbG90X2xpbWl0LnBsCmluZGV4IDZmOTIwMzRmM2Q1Li4wODk3ZjQzODhk NyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMTlfcmVwbHNsb3RfbGltaXQucGwK KysrIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMTlfcmVwbHNsb3RfbGltaXQucGwKQEAgLTg0NSw0 ICs4NDUsMTY1IEBAICRwcmltYXJ5Ni0+c3RvcDsKICMgVGVzdGNhc2UgZW5kOiBYSUQtYWdlLWJh c2VkIHNsb3QgaW52YWxpZGF0aW9uIHdpdGggYXV0b3ZhY3V1bSAocHJvZHVjdGlvbi1saWtlKQog IyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQogCisjID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMg VGVzdGNhc2Ugc3RhcnQ6IENvbmN1cnJlbnQgc2xvdCBpbnZhbGlkYXRpb24gZHVlIHRvIG1heF9z bG90X3hpZF9hZ2UgR1VDCisjCisjIFR3byBjb25jdXJyZW50IFZBQ1VVTXMgYm90aCB0cnkgdG8g aW52YWxpZGF0ZSB0aGUgc2FtZSBhY3RpdmUgbG9naWNhbCBzbG90LgorIyBBbiBpbmplY3Rpb24g cG9pbnQgZGVsYXlzIHRoZSB3YWxzZW5kZXIncyBTSUdURVJNIHByb2Nlc3Npbmcgc28gdGhhdCB2 YWN1dW0xCisjIGJsb2NrcyBvbiB0aGUgQ1Ygd2FpdGluZyBmb3IgdGhlIHNsb3QgdG8gYmUgcmVs ZWFzZWQuICBXaGVuIHZhY3V1bTIgcnVucywgaXQKKyMgc2VlcyB0aGF0IHZhY3V1bTEgaXMgYWxy ZWFkeSBpbnZhbGlkYXRpbmcgdGhlIHNhbWUgc2xvdCBhbmQgc2tpcHMgd2l0aG91dAorIyBibG9j a2luZy4gQWZ0ZXIgdGhlIHdhbHNlbmRlciBpcyB3b2tlbiwgdmFjdXVtMSBjb21wbGV0ZXMgdGhl IGludmFsaWRhdGlvbi4KKworIyBTa2lwIGlmIGluamVjdGlvbiBwb2ludHMgYXJlIG5vdCBhdmFp bGFibGUuCitpZiAoJEVOVntlbmFibGVfaW5qZWN0aW9uX3BvaW50c30gbmUgJ3llcycpCit7CisJ ZG9uZV90ZXN0aW5nKCk7CisJZXhpdDsKK30KKworbXkgJHByaW1hcnk3ID0gUG9zdGdyZVNRTDo6 VGVzdDo6Q2x1c3Rlci0+bmV3KCdwcmltYXJ5NycpOworJHByaW1hcnk3LT5pbml0KGFsbG93c19z dHJlYW1pbmcgPT4gJ2xvZ2ljYWwnKTsKKworbXkgJG1heF9zbG90X3hpZF9hZ2U3ID0gMTAwOwor JHByaW1hcnk3LT5hcHBlbmRfY29uZigKKwkncG9zdGdyZXNxbC5jb25mJywgcXF7CittYXhfc2xv dF94aWRfYWdlID0gJG1heF9zbG90X3hpZF9hZ2U3CithdXRvdmFjdXVtID0gb2ZmCitzaGFyZWRf cHJlbG9hZF9saWJyYXJpZXMgPSAnaW5qZWN0aW9uX3BvaW50cycKK30pOworCiskcHJpbWFyeTct PnN0YXJ0OworCisjIENoZWNrIGlmIGluamVjdGlvbl9wb2ludHMgZXh0ZW5zaW9uIGlzIGF2YWls YWJsZS4KK2lmICghJHByaW1hcnk3LT5jaGVja19leHRlbnNpb24oJ2luamVjdGlvbl9wb2ludHMn KSkKK3sKKwkkcHJpbWFyeTctPnN0b3A7CisJZG9uZV90ZXN0aW5nKCk7CisJZXhpdDsKK30KKwor JHByaW1hcnk3LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ0NSRUFURSBFWFRFTlNJT04gaW5qZWN0 aW9uX3BvaW50cycpOworCisjIEhlbHBlciB0byBjb25zdW1lIFhJRHMuCiskcHJpbWFyeTctPnNh ZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcXsKKwlDUkVBVEUgUFJPQ0VEVVJFIGNvbnN1bWVfeGlk KGNudCBpbnQpCisJQVMgXCRcJAorCURFQ0xBUkUKKwkgICAgaSBpbnQ7CisJQkVHSU4KKwkgICAg Rk9SIGkgSU4gMS4uY250IExPT1AKKwkgICAgICAgIEVYRUNVVEUgJ1NFTEVDVCBwZ19jdXJyZW50 X3hhY3RfaWQoKSc7CisJICAgICAgICBDT01NSVQ7CisJICAgIEVORCBMT09QOworCUVORDsKKwlc JFwkIExBTkdVQUdFIHBscGdzcWw7Cit9KTsKKworCisjIENyZWF0ZSBhIGxvZ2ljYWwgc2xvdCAo Z2V0cyBjYXRhbG9nX3htaW4gaW1tZWRpYXRlbHkpLgorJHByaW1hcnk3LT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKKwkiU0VMRUNUIHBnX2NyZWF0ZV9sb2dpY2FsX3JlcGxpY2F0aW9uX3Nsb3QoJ2xz bG90NycsICd0ZXN0X2RlY29kaW5nJykiKTsKKworIyBIb2xkIHRoZSBzbG90IGFjdGl2ZSB2aWEg cGdfcmVjdmxvZ2ljYWwuCitteSAkcGdfcmVjdmxvZ19zdGRvdXQ3ID0gJyc7CitteSAkcGdfcmVj dmxvZ19zdGRlcnI3ID0gJyc7CitteSAkY29ubnN0cjcgPSAkcHJpbWFyeTctPmNvbm5zdHIoJ3Bv c3RncmVzJyk7CitteSAkcGdfcmVjdmxvZ2ljYWxfaGFuZGxlNyA9IElQQzo6UnVuOjpzdGFydCgK KwlbCisJCSdwZ19yZWN2bG9naWNhbCcsICctZCcsICRjb25uc3RyNywKKwkJJy0tc2xvdCcsICds c2xvdDcnLCAnLS1zdGFydCcsCisJCSctZicsICcvZGV2L251bGwnLCAnLS1uby1sb29wJworCV0s CisJJz4nLCBcJHBnX3JlY3Zsb2dfc3Rkb3V0NywKKwknMj4nLCBcJHBnX3JlY3Zsb2dfc3RkZXJy Nyk7CisKKyMgV2FpdCBmb3IgdGhlIHNsb3QgdG8gYmVjb21lIGFjdGl2ZS4KKyRwcmltYXJ5Ny0+ cG9sbF9xdWVyeV91bnRpbCgKKwkncG9zdGdyZXMnLCBxcVsKKwlTRUxFQ1QgYWN0aXZlIEZST00g cGdfcmVwbGljYXRpb25fc2xvdHMgV0hFUkUgc2xvdF9uYW1lID0gJ2xzbG90Nyc7CitdKSBvciBk aWUgIlRpbWVkIG91dCB3YWl0aW5nIGZvciBzbG90IGxzbG90NyB0byBiZWNvbWUgYWN0aXZlIjsK KworIyBNYWtlIHRoZSB3YWxzZW5kZXIgYmxvY2sgYmVmb3JlIHByb2Nlc3NpbmcgU0lHVEVSTS4K KyRwcmltYXJ5Ny0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBpbmplY3Rpb25fcG9p bnRzX2F0dGFjaCgnd2Fsc2VuZGVyLWJlZm9yZS1zaWd0ZXJtLWV4aXQnLCAnd2FpdCcpIik7CisK KyMgTWFrZSB0aGUgc2xvdCdzIGNhdGFsb2dfeG1pbiBzdGFsZS4KKyRwcmltYXJ5Ny0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJcXF7Q0FMTCBjb25zdW1lX3hpZCgyICogJG1heF9zbG90X3hpZF9h Z2U3KX0pOworCisjIExhdW5jaCB2YWN1dW0xIG9uIGEgY2F0YWxvZyB0YWJsZTogdGhlIGxvZ2lj YWwgc2xvdCBob2xkcyBjYXRhbG9nX3htaW4sCisjIHNvIG9ubHkgY2F0YWxvZyBWQUNVVU1zIHNl ZSBpdCBhcyBPbGRlc3RYbWluIGFuZCB0cmlnZ2VyIGludmFsaWRhdGlvbi4KKyMgdmFjdXVtMSB3 aWxsIFNJR1RFUk0gdGhlIHdhbHNlbmRlciwgdGhlbiBibG9jayBvbiB0aGUgQ1YuCitteSAkdmFj dXVtMSA9ICRwcmltYXJ5Ny0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycpOworbXkgJHZhY3V1 bTIgPSAkcHJpbWFyeTctPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnKTsKKworJHZhY3V1bTEt PnF1ZXJ5X3VudGlsKAorCXFyL3N0YXJ0aW5nX3ZhY3V1bS8sCisJcShcZWNobyBzdGFydGluZ192 YWN1dW0KK1ZBQ1VVTSBwZ19jbGFzczsKK1xlY2hvIHZhY3V1bTFfZG9uZQorKSk7CisKKyMgV2Fp dCBmb3IgdGhlIHdhbHNlbmRlciB0byBoaXQgdGhlIGluamVjdGlvbiBwb2ludC4KKyRwcmltYXJ5 Ny0+d2FpdF9mb3JfZXZlbnQoJ3dhbHNlbmRlcicsICd3YWxzZW5kZXItYmVmb3JlLXNpZ3Rlcm0t ZXhpdCcpOworCisjIFZlcmlmeSB2YWN1dW0xIGlzIGJsb2NrZWQgb24gdGhlIENWLgorJHByaW1h cnk3LT5wb2xsX3F1ZXJ5X3VudGlsKAorCSdwb3N0Z3JlcycsIHFxWworCVNFTEVDVCBjb3VudCgq KSA9IDEgRlJPTSBwZ19zdGF0X2FjdGl2aXR5CisJCVdIRVJFIHdhaXRfZXZlbnQgPSAnUmVwbGlj YXRpb25TbG90RHJvcCcKKwkJQU5EIGJhY2tlbmRfdHlwZSA9ICdjbGllbnQgYmFja2VuZCc7Citd KSBvciBkaWUgIlRpbWVkIG91dCB3YWl0aW5nIGZvciB2YWN1dW0xIHRvIGJsb2NrIG9uIHNsb3Qg Q1YiOworCisjIExhdW5jaCB2YWN1dW0yIG9uIGEgZGlmZmVyZW50IGNhdGFsb2cgdGFibGU6IGl0 IGFsc28gY29tcHV0ZXMgdGhlIGNhdGFsb2cKKyMgaG9yaXpvbiBhbmQgc2VlcyB0aGUgc2xvdCBu ZWVkcyBpbnZhbGlkYXRpb24sIGJ1dCBmaW5kcyB2YWN1dW0xIGlzIGFscmVhZHkKKyMgaW52YWxp ZGF0aW5nIHRoZSBzYW1lIHNsb3QgKHZpYSBpbnZhbGlkYXRpbmdfcHJvYykgYW5kIHNraXBzLgor JHZhY3V1bTItPnF1ZXJ5X3VudGlsKAorCXFyL3N0YXJ0aW5nX3ZhY3V1bS8sCisJcShcZWNobyBz dGFydGluZ192YWN1dW0KK1ZBQ1VVTSBwZ190eXBlOworXGVjaG8gdmFjdXVtMl9kb25lCispKTsK KworIyB2YWN1dW0yIGNvbXBsZXRlcyB3aXRob3V0IGJsb2NraW5nLgorJHZhY3V1bTItPnF1ZXJ5 X3VudGlsKHFyL3ZhY3V1bTJfZG9uZS8sICcnKTsKKworIyBWZXJpZnkgb25seSB2YWN1dW0xIGlz IHdhaXRpbmcgb24gUmVwbGljYXRpb25TbG90RHJvcC4KKyRyZXN1bHQgPSAkcHJpbWFyeTctPnNh ZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcVsKKwlTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19zdGF0 X2FjdGl2aXR5CisJCVdIRVJFIHdhaXRfZXZlbnQgPSAnUmVwbGljYXRpb25TbG90RHJvcCcKKwkJ QU5EIGJhY2tlbmRfdHlwZSA9ICdjbGllbnQgYmFja2VuZCc7CitdKTsKK2lzKCRyZXN1bHQsICcx JywKKwknb25seSB2YWN1dW0xIGJsb2NrcyBvbiBDVjsgdmFjdXVtMiBza2lwcyB2aWEgaW52YWxp ZGF0aW5nX3Byb2MnKTsKKworIyBXYWtlIHVwIHRoZSB3YWxzZW5kZXIgc28gaXQgY2FuIGV4aXQg YW5kIHJlbGVhc2UgdGhlIHNsb3QuCiskcHJpbWFyeTctPnNhZmVfcHNxbCgncG9zdGdyZXMnLAor CSJTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c193YWtldXAoJ3dhbHNlbmRlci1iZWZvcmUtc2lndGVy bS1leGl0JykiKTsKKworIyBEZXRhY2ggdGhlIGluamVjdGlvbiBwb2ludC4KKyRwcmltYXJ5Ny0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2RldGFjaCgn d2Fsc2VuZGVyLWJlZm9yZS1zaWd0ZXJtLWV4aXQnKSIpOworCisjIFdhaXQgZm9yIHBnX3JlY3Zs b2dpY2FsIHRvIGV4aXQuCiskcGdfcmVjdmxvZ2ljYWxfaGFuZGxlNy0+ZmluaXNoOworCisjIFdh aXQgZm9yIHZhY3V1bTEgdG8gY29tcGxldGUgbm93IHRoYXQgdGhlIHdhbHNlbmRlciBoYXMgcmVs ZWFzZWQgdGhlIHNsb3QuCiskdmFjdXVtMS0+cXVlcnlfdW50aWwocXIvdmFjdXVtMV9kb25lLywg JycpOworCisjIFZlcmlmeSB0aGUgc2xvdCB3YXMgaW52YWxpZGF0ZWQuCit3YWl0X2Zvcl94aWRf YWdlZF9pbnZhbGlkYXRpb24oJHByaW1hcnk3LCAnbHNsb3Q3Jyk7CitvaygxLAorCSJjb25jdXJy ZW50IFZBQ1VVTTogdmFjdXVtMSBibG9ja3Mgb24gQ1YsIHZhY3V1bTIgc2tpcHMgdmlhIGludmFs aWRhdGluZ19wcm9jIgorKTsKKworJHZhY3V1bTEtPnF1aXQ7CiskdmFjdXVtMi0+cXVpdDsKKyRw cmltYXJ5Ny0+c3RvcDsKKworIyBUZXN0Y2FzZSBlbmQ6IENvbmN1cnJlbnQgc2xvdCBpbnZhbGlk YXRpb24gZHVlIHRvIG1heF9zbG90X3hpZF9hZ2UgR1VDCisjID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KKwogZG9uZV90ZXN0aW5nKCk7Ci0tIAoyLjQ3LjMKCg== --000000000000a38d8c06502493c9--