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 1vbo2B-00DXhH-0L for pgsql-hackers@arkaria.postgresql.org; Fri, 02 Jan 2026 22:54:16 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vbo28-00BN77-2i for pgsql-hackers@arkaria.postgresql.org; Fri, 02 Jan 2026 22:54:13 +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.96) (envelope-from ) id 1vbo27-00BN6w-39 for pgsql-hackers@lists.postgresql.org; Fri, 02 Jan 2026 22:54:13 +0000 Received: from mail-oo1-xc2b.google.com ([2607:f8b0:4864:20::c2b]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vbo26-003sm6-24 for pgsql-hackers@lists.postgresql.org; Fri, 02 Jan 2026 22:54:11 +0000 Received: by mail-oo1-xc2b.google.com with SMTP id 006d021491bc7-65d132240acso7473632eaf.1 for ; Fri, 02 Jan 2026 14:54:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1767394449; x=1767999249; darn=lists.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=YmCvTQ++8XLdaF/Hs//JYKUVBEzg+JRPH70ZbKzweIE=; b=cnTDm0yz04gpg23+H9o1J9gwwtK1TsrtBgcfX9bAPGefnqqYZXrw4T50IouKZB3Aop WX21XB+Xlnl4l8hUzQDKPqnaBi5SsZ6ITbg2rb4HVowyURkYQE1cU/D5gLcVclUl6HIu UAsoU+Fec70IAtnTpg1V3T2uyrah0nxa3lGmsrhlxEPix5TxsIqEHeMTTO+tTNQkXP9f q3ihlNklL+ORk3gg0yBtk1deC9Qm6MpbtvDa8gJYS+t1NlU1z2DjyXSoKRSB737DCKgx mZja2+eSU9I9IKG0TSKyVGGLtTOyt8XiVeN8PL/GjFDo3DecXvHXHI6pj7st6W97M8c1 ghtg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767394449; x=1767999249; 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=YmCvTQ++8XLdaF/Hs//JYKUVBEzg+JRPH70ZbKzweIE=; b=OC98+lIXzTjPm6tkUNy0dXE8iSc+jJn2GxwKoDxVrCxeSBEp/s63S29cmi+Hd3nrSo CUheRMkZdKjULbis7ydZNvsit8u1W7iG5XsQC8Fr+3xLCHTPyE9oIEiB7pBvlIpG1q69 bku427D7XeHaPWAlGgnRLLgqlQaAsIXWMFzSrJjaI6ufVukRSwBcgIi8IPUTnOsrv4af IfYexkm8KbI7dMYZ5z2ld+cYaAeLdNGz1CXIcXD+nQ+FW4t1XRnb7p6nxX8RFi2c+8kx SFzuiuXwecNZGrecJP4pl1UT8w5V6qTb1/GDxM6QFQIxl3BrtymO4UtXWbMiZNFimxUt Yi+A== X-Forwarded-Encrypted: i=1; AJvYcCWysfngcTHHbl4CqcWSE8d/CSB0tLkm0y6iOYqoVXUX8V7+iDKW/gt2UzXNwQ/0n8+sIMuRi+olkB1EqMXY@lists.postgresql.org X-Gm-Message-State: AOJu0Yw17E3UKTwLNe+YlPa1Vfn8aUXtPzFCsBLCUbIfQ2i5q7X6mmd7 iyeqXzrdH76xtlKiozFpQAC06iDvpNlQo9Xpj0dtcQpsINR/Zqc99SBkzAKJyG0T1hOQrSZooBo DWw8tk6+YFG8bwcqLYDJEVIVVQTCixR0= X-Gm-Gg: AY/fxX77TdylQNwHqI70dNb7j5esM7Y8Kw0hbIi0gwD9h+m/9rgD3ZWDyIx/sKDfiHi 608tyEUJtl0KfLyaHXe2QR1QSgU5aNiiWDve8fXzq2qUeDdT5Jltv8uXhJ1cSyi4PjaQqo2AdLx n3JfB/w0gjaM7/h1M/it6Qmpn3oNfPFCk/H3plhYYBIwyJdalPffI30IDifspbKUHdRJrfjiPp8 cnp8wmKz7uF9kHrCNQxN3CG74voeSbR2bu6oDRB6fvnlJtB7FE9Ic0bs2SyzwU+khaUo3yKvthC WHWS91kOza2Xc+XxhMZ26S+lhwc77Ess6aYG5p+jVXr4xymwsk4IalM4pXJE2cv0mFizNw== X-Google-Smtp-Source: AGHT+IFaaDmWWPdC69CZVlit2Az6c98BjkEYjgixmVae23/9nFlnFmf8hzobubSygai1zSs2VgUaZea/upfFseH7Cbk= X-Received: by 2002:a05:6820:1626:b0:65d:88b:c00d with SMTP id 006d021491bc7-65d0eaddb6bmr17844412eaf.66.1767394449611; Fri, 02 Jan 2026 14:54:09 -0800 (PST) MIME-Version: 1.0 References: <202601011659.ikh4ku4p3ovb@alvherre.pgsql> In-Reply-To: From: Alexander Korotkov Date: Sat, 3 Jan 2026 00:53:56 +0200 X-Gm-Features: AQt7F2q6dvo09fYxFb9QUmPIhSpeJaXdQoovt9ysBLdxkmIJBA8tY1W9aM4yhkU Message-ID: Subject: Re: Implement waiting for wal lsn replay: reloaded To: Xuneng Zhou Cc: =?UTF-8?Q?=C3=81lvaro_Herrera?= , Chao Li , pgsql-hackers , Andres Freund , Michael Paquier , jian he , Tomas Vondra , Yura Sokolov Content-Type: multipart/mixed; boundary="000000000000592f7106476f9609" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000592f7106476f9609 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi, Xuneng! On Fri, Jan 2, 2026 at 11:17=E2=80=AFAM Xuneng Zhou = wrote: > On Fri, Jan 2, 2026 at 7:42=E2=80=AFAM Alexander Korotkov wrote: > > > > On Thu, Jan 1, 2026 at 7:16=E2=80=AFPM =C3=81lvaro Herrera wrote: > > > In 0002 you have this kind of thing: > > > > > > > ereport(ERROR, > > > > errcode(ERRCODE_QUERY= _CANCELED), > > > > - errmsg("timed out whi= le waiting for target LSN %X/%08X to be replayed; current replay LSN %X/%08= X", > > > > + errmsg("timed out whi= le waiting for target LSN %X/%08X to be %s; current %s LSN %X/%08X", > > > > LSN_FORMAT= _ARGS(lsn), > > > > - LSN_FORMAT= _ARGS(GetXLogReplayRecPtr(NULL)))); > > > > + desc->verb= , > > > > + desc->noun= , > > > > + LSN_FORMAT= _ARGS(currentLSN))); > > > > + } > > > > > > > > > I'm afraid this technique doesn't work, for translatability reasons. > > > Your whole design of having a struct with ->verb and ->noun is not > > > workable (which is a pity, but you can't really fight this.) You need= to > > > spell out the whole messages for each case, something like > > > > > > if (lsntype =3D=3D replay) > > > ereport(ERROR, > > > errcode(ERRCODE_QUERY_CANCELED), > > > errmsg("timed out while waiting for target LSN %X/%08X to = be replayed; current standby_replay LSN %X/%08X", > > > else if (lsntype =3D=3D flush) > > > ereport( ... ) > > > > > > and so on. This means four separate messages for translation for eac= h > > > message your patch is adding, which is IMO the correct approach. > > > > +1 > > Thank you for catching this, Alvaro. Yes, I think we need to get rid > > of WaitLSNTypeDesc. It's nice idea, but we support too many languages > > to have something like this. > > > > Thanks for pointing this out. This approach doesn=E2=80=99t scale to mult= iple > languages. While switch statements are more verbose, the extra clarity > is justified to preserve proper internationalization. Please check the > updated v12. I've corrected the patchset. Mostly changed just comments, formatting etc. I'm going to push it if no objections. ------ Regards, Alexander Korotkov Supabase --000000000000592f7106476f9609 Content-Type: application/octet-stream; name="v13-0001-Extend-xlogwait-infrastructure-with-write-and-fl.patch" Content-Disposition: attachment; filename="v13-0001-Extend-xlogwait-infrastructure-with-write-and-fl.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mjxgzqnx0 RnJvbSAzZjdiMWRlYWFlNTlmNDVkOGUwNDljZjNiOTVhYzc3MTZhYjM4NDcxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBhbHRlcmVnbzY1NSA8ODI0NjYyNTI2QHFxLmNvbT4KRGF0ZTog VHVlLCAxNiBEZWMgMjAyNSAxMDoyMTozNiArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjEzIDEvNF0g RXh0ZW5kIHhsb2d3YWl0IGluZnJhc3RydWN0dXJlIHdpdGggd3JpdGUgYW5kIGZsdXNoCiB3YWl0 IHR5cGVzCgpBZGQgc3VwcG9ydCBmb3Igd2FpdGluZyBvbiBXQUwgd3JpdGUgYW5kIGZsdXNoIExT TnMgaW4gYWRkaXRpb24gdG8gdGhlCmV4aXN0aW5nIHJlcGxheSBMU04gd2FpdCB0eXBlLiBUaGlz IHByb3ZpZGVzIHRoZSBmb3VuZGF0aW9uIGZvcgpleHRlbmRpbmcgdGhlIFdBSVQgRk9SIGNvbW1h bmQgd2l0aCBNT0RFIHBhcmFtZXRlci4KCktleSBjaGFuZ2VzIGFyZSBmb2xsb3dpbmcuCi0gQWRk IFdBSVRfTFNOX1RZUEVfU1RBTkRCWV9XUklURSBhbmQgV0FJVF9MU05fVFlQRV9TVEFOREJZX0ZM VVNIIHRvCiAgV2FpdExTTlR5cGUuCi0gQWRkIEdldEN1cnJlbnRMU05Gb3JXYWl0VHlwZSgpIHRv IHJldHJpZXZlIHRoZSBjdXJyZW50IExTTiBmb3IgZWFjaCB3YWl0CiAgdHlwZS4KLSBBZGQgbmV3 IHdhaXQgZXZlbnRzIFdBSVRfRVZFTlRfV0FJVF9GT1JfV0FMX1dSSVRFIGFuZAogIFdBSVRfRVZF TlRfV0FJVF9GT1JfV0FMX0ZMVVNIIGZvciBwZ19zdGF0X2FjdGl2aXR5IHZpc2liaWxpdHkuCi0g VXBkYXRlIFdhaXRGb3JMU04oKSB0byB1c2UgR2V0Q3VycmVudExTTkZvcldhaXRUeXBlKCkgaW50 ZXJuYWxseS4KCkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vQ0FCUFRGN1VpQXJnVy1z WGo5Q053UnpVaFlPUXJldkx6a1ljZ0J5ZG1YNW9EZXMxc2pnJTQwbWFpbC5nbWFpbC5jb20KQXV0 aG9yOiBYdW5lbmcgWmhvdSA8eHVuZW5nemhvdUBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBBbGV4 YW5kZXIgS29yb3Rrb3YgPGFla29yb3Rrb3ZAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogQ2hhbyBM aSA8bGkuZXZhbi5jaGFvQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IEFsdmFybyBIZXJyZXJhIDxh bHZoZXJyZUBrdXJpbGVtdS5kZT4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9n LmMgICAgICAgICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3Jl Y292ZXJ5LmMgICAgIHwgIDQgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2d3YWl0 LmMgICAgICAgICB8IDk2ICsrKysrKysrKysrKysrKy0tLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRz L3dhaXQuYyAgICAgICAgICAgICAgICAgICB8ICAyICstCiAuLi4vdXRpbHMvYWN0aXZpdHkvd2Fp dF9ldmVudF9uYW1lcy50eHQgICAgICAgfCAgMyArLQogc3JjL2luY2x1ZGUvYWNjZXNzL3hsb2d3 YWl0LmggICAgICAgICAgICAgICAgIHwgMTQgKystCiA2IGZpbGVzIGNoYW5nZWQsIDkzIGluc2Vy dGlvbnMoKyksIDI4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vz cy90cmFuc2FtL3hsb2cuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYwppbmRl eCBlNzFiNmUyMTEyMy4uMDVhYzdjNWY3ZjggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vz cy90cmFuc2FtL3hsb2cuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMK QEAgLTYyODAsNyArNjI4MCw3IEBAIFN0YXJ0dXBYTE9HKHZvaWQpCiAJICogV2FrZSB1cCBhbGwg d2FpdGVycyBmb3IgcmVwbGF5IExTTi4gIFRoZXkgbmVlZCB0byByZXBvcnQgYW4gZXJyb3IgdGhh dAogCSAqIHJlY292ZXJ5IHdhcyBlbmRlZCBiZWZvcmUgcmVhY2hpbmcgdGhlIHRhcmdldCBMU04u CiAJICovCi0JV2FpdExTTldha2V1cChXQUlUX0xTTl9UWVBFX1JFUExBWSwgSW52YWxpZFhMb2dS ZWNQdHIpOworCVdhaXRMU05XYWtldXAoV0FJVF9MU05fVFlQRV9TVEFOREJZX1JFUExBWSwgSW52 YWxpZFhMb2dSZWNQdHIpOwogCiAJLyoKIAkgKiBTaHV0ZG93biB0aGUgcmVjb3ZlcnkgZW52aXJv bm1lbnQuICBUaGlzIG11c3Qgb2NjdXIgYWZ0ZXIKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy90cmFuc2FtL3hsb2dyZWNvdmVyeS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0v eGxvZ3JlY292ZXJ5LmMKaW5kZXggYTIxYWM0OGM5ZmUuLjBiNWY4NzFhYmU3IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ncmVjb3ZlcnkuYworKysgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ncmVjb3ZlcnkuYwpAQCAtMTg1Niw4ICsxODU2LDggQEAg UGVyZm9ybVdhbFJlY292ZXJ5KHZvaWQpCiAJCQkgKi8KIAkJCWlmICh3YWl0TFNOU3RhdGUgJiYK IAkJCQkoWExvZ1JlY292ZXJ5Q3RsLT5sYXN0UmVwbGF5ZWRFbmRSZWNQdHIgPj0KLQkJCQkgcGdf YXRvbWljX3JlYWRfdTY0KCZ3YWl0TFNOU3RhdGUtPm1pbldhaXRlZExTTltXQUlUX0xTTl9UWVBF X1JFUExBWV0pKSkKLQkJCQlXYWl0TFNOV2FrZXVwKFdBSVRfTFNOX1RZUEVfUkVQTEFZLCBYTG9n UmVjb3ZlcnlDdGwtPmxhc3RSZXBsYXllZEVuZFJlY1B0cik7CisJCQkJIHBnX2F0b21pY19yZWFk X3U2NCgmd2FpdExTTlN0YXRlLT5taW5XYWl0ZWRMU05bV0FJVF9MU05fVFlQRV9TVEFOREJZX1JF UExBWV0pKSkKKwkJCQlXYWl0TFNOV2FrZXVwKFdBSVRfTFNOX1RZUEVfU1RBTkRCWV9SRVBMQVks IFhMb2dSZWNvdmVyeUN0bC0+bGFzdFJlcGxheWVkRW5kUmVjUHRyKTsKIAogCQkJLyogRWxzZSwg dHJ5IHRvIGZldGNoIHRoZSBuZXh0IFdBTCByZWNvcmQgKi8KIAkJCXJlY29yZCA9IFJlYWRSZWNv cmQoeGxvZ3ByZWZldGNoZXIsIExPRywgZmFsc2UsIHJlcGxheVRMSSk7CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nd2FpdC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNz L3RyYW5zYW0veGxvZ3dhaXQuYwppbmRleCA2YzJiZGE3NjNlMi4uNTAyMGFlMWU1MmQgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2d3YWl0LmMKKysrIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3dhaXQuYwpAQCAtMTIsMjUgKzEyLDMwIEBACiAgKgkJ VGhpcyBmaWxlIGltcGxlbWVudHMgd2FpdGluZyBmb3IgV0FMIG9wZXJhdGlvbnMgdG8gcmVhY2gg c3BlY2lmaWMgTFNOcwogICoJCW9uIGJvdGggcGh5c2ljYWwgc3RhbmRieSBhbmQgcHJpbWFyeSBz ZXJ2ZXJzLiBUaGUgY29yZSBpZGVhIGlzIHNpbXBsZToKICAqCQlldmVyeSBwcm9jZXNzIHRoYXQg d2FudHMgdG8gd2FpdCBwdWJsaXNoZXMgdGhlIExTTiBpdCBuZWVkcyB0byB0aGUKLSAqCQlzaGFy ZWQgbWVtb3J5LCBhbmQgdGhlIGFwcHJvcHJpYXRlIHByb2Nlc3MgKHN0YXJ0dXAgb24gc3RhbmRi eSwgb3IKLSAqCQlXQUwgd3JpdGVyL2JhY2tlbmQgb24gcHJpbWFyeSkgd2FrZXMgaXQgb25jZSB0 aGF0IExTTiBoYXMgYmVlbiByZWFjaGVkLgorICoJCXNoYXJlZCBtZW1vcnksIGFuZCB0aGUgYXBw cm9wcmlhdGUgcHJvY2VzcyAoc3RhcnR1cCBvbiBzdGFuZGJ5LAorICoJCXdhbHJlY2VpdmVyIG9u IHN0YW5kYnksIG9yIFdBTCB3cml0ZXIvYmFja2VuZCBvbiBwcmltYXJ5KSB3YWtlcyBpdAorICoJ CW9uY2UgdGhhdCBMU04gaGFzIGJlZW4gcmVhY2hlZC4KICAqCiAgKgkJVGhlIHNoYXJlZCBtZW1v cnkgdXNlZCBieSB0aGlzIG1vZHVsZSBjb21wcmlzZXMgYSBwcm9jSW5mb3MKICAqCQlwZXItYmFj a2VuZCBhcnJheSB3aXRoIHRoZSBpbmZvcm1hdGlvbiBvZiB0aGUgYXdhaXRlZCBMU04gZm9yIGVh Y2gKICAqCQlvZiB0aGUgYmFja2VuZCBwcm9jZXNzZXMuICBUaGUgZWxlbWVudHMgb2YgdGhhdCBh cnJheSBhcmUgb3JnYW5pemVkCi0gKgkJaW50byBhIHBhaXJpbmcgaGVhcCB3YWl0ZXJzSGVhcCwg d2hpY2ggYWxsb3dzIGZvciB2ZXJ5IGZhc3QgZmluZGluZwotICoJCW9mIHRoZSBsZWFzdCBhd2Fp dGVkIExTTi4KKyAqCQlpbnRvIHBhaXJpbmcgaGVhcHMgKHdhaXRlcnNIZWFwKSwgb25lIGZvciBl YWNoIFdhaXRMU05UeXBlLCB3aGljaAorICoJCWFsbG93cyBmb3IgdmVyeSBmYXN0IGZpbmRpbmcg b2YgdGhlIGxlYXN0IGF3YWl0ZWQgTFNOIGZvciBlYWNoIHR5cGUuCiAgKgotICoJCUluIGFkZGl0 aW9uLCB0aGUgbGVhc3QtYXdhaXRlZCBMU04gaXMgY2FjaGVkIGFzIG1pbldhaXRlZExTTi4gIFRo ZQotICoJCXdhaXRlciBwcm9jZXNzIHB1Ymxpc2hlcyBpbmZvcm1hdGlvbiBhYm91dCBpdHNlbGYg dG8gdGhlIHNoYXJlZAotICoJCW1lbW9yeSBhbmQgd2FpdHMgb24gdGhlIGxhdGNoIHVudGlsIGl0 IGlzIHdva2VuIHVwIGJ5IHRoZSBhcHByb3ByaWF0ZQotICoJCXByb2Nlc3MsIHN0YW5kYnkgaXMg cHJvbW90ZWQsIG9yIHRoZSBwb3N0bWFzdGVyCWRpZXMuICBUaGVuLCBpdCBjbGVhbnMKLSAqCQlp bmZvcm1hdGlvbiBhYm91dCBpdHNlbGYgaW4gdGhlIHNoYXJlZCBtZW1vcnkuCisgKgkJSW4gYWRk aXRpb24sIHRoZSBsZWFzdC1hd2FpdGVkIExTTiBmb3IgZWFjaCB0eXBlIGlzIGNhY2hlZCBpbiB0 aGUKKyAqCQltaW5XYWl0ZWRMU04gYXJyYXkuICBUaGUgd2FpdGVyIHByb2Nlc3MgcHVibGlzaGVz IGluZm9ybWF0aW9uIGFib3V0CisgKgkJaXRzZWxmIHRvIHRoZSBzaGFyZWQgbWVtb3J5IGFuZCB3 YWl0cyBvbiB0aGUgbGF0Y2ggdW50aWwgaXQgaXMgd29rZW4KKyAqCQl1cCBieSB0aGUgYXBwcm9w cmlhdGUgcHJvY2Vzcywgc3RhbmRieSBpcyBwcm9tb3RlZCwgb3IgdGhlIHBvc3RtYXN0ZXIKKyAq CQlkaWVzLiAgVGhlbiwgaXQgY2xlYW5zIGluZm9ybWF0aW9uIGFib3V0IGl0c2VsZiBpbiB0aGUg c2hhcmVkIG1lbW9yeS4KICAqCi0gKgkJT24gc3RhbmRieSBzZXJ2ZXJzOiBBZnRlciByZXBsYXlp bmcgYSBXQUwgcmVjb3JkLCB0aGUgc3RhcnR1cCBwcm9jZXNzCi0gKgkJZmlyc3QgcGVyZm9ybXMg YSBmYXN0IHBhdGggY2hlY2sgbWluV2FpdGVkTFNOID4gcmVwbGF5TFNOLiAgSWYgdGhpcwotICoJ CWNoZWNrIGlzIG5lZ2F0aXZlLCBpdCBjaGVja3Mgd2FpdGVyc0hlYXAgYW5kIHdha2VzIHVwIHRo ZSBiYWNrZW5kCi0gKgkJd2hvc2UgYXdhaXRlZCBMU05zIGFyZSByZWFjaGVkLgorICoJCU9uIHN0 YW5kYnkgc2VydmVyczoKKyAqCQktIEFmdGVyIHJlcGxheWluZyBhIFdBTCByZWNvcmQsIHRoZSBz dGFydHVwIHByb2Nlc3MgcGVyZm9ybXMgYSBmYXN0CisgKgkJICBwYXRoIGNoZWNrIG1pbldhaXRl ZExTTltSRVBMQVldID4gcmVwbGF5TFNOLiAgSWYgdGhpcyBjaGVjayBpcworICoJCSAgbmVnYXRp dmUsIGl0IGNoZWNrcyB3YWl0ZXJzSGVhcFtSRVBMQVldIGFuZCB3YWtlcyB1cCB0aGUgYmFja2Vu ZHMKKyAqCQkgIHdob3NlIGF3YWl0ZWQgTFNOcyBhcmUgcmVhY2hlZC4KKyAqCQktIEFmdGVyIHJl Y2VpdmluZyBXQUwsIHRoZSB3YWxyZWNlaXZlciBwcm9jZXNzIHBlcmZvcm1zIHNpbWlsYXIgY2hl Y2tzCisgKgkJICBhZ2FpbnN0IHRoZSBmbHVzaCBhbmQgd3JpdGUgTFNOcywgd2FraW5nIHVwIHdh aXRlcnMgaW4gdGhlIEZMVVNICisgKgkJICBhbmQgV1JJVEUgaGVhcHMsIHJlc3BlY3RpdmVseS4K ICAqCiAgKgkJT24gcHJpbWFyeSBzZXJ2ZXJzOiBBZnRlciBmbHVzaGluZyBXQUwsIHRoZSBXQUwg d3JpdGVyIG9yIGJhY2tlbmQKICAqCQlwcm9jZXNzIHBlcmZvcm1zIGEgc2ltaWxhciBjaGVjayBh Z2FpbnN0IHRoZSBmbHVzaCBMU04gYW5kIHdha2VzIHVwCkBAIC00OSw2ICs1NCw3IEBACiAjaW5j bHVkZSAiYWNjZXNzL3hsb2d3YWl0LmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVk ZSAicGdzdGF0LmgiCisjaW5jbHVkZSAicmVwbGljYXRpb24vd2FscmVjZWl2ZXIuaCIKICNpbmNs dWRlICJzdG9yYWdlL2xhdGNoLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCiAjaW5jbHVk ZSAic3RvcmFnZS9zaG1lbS5oIgpAQCAtNjIsNiArNjgsNDcgQEAgc3RhdGljIGludAl3YWl0bHNu X2NtcChjb25zdCBwYWlyaW5naGVhcF9ub2RlICphLCBjb25zdCBwYWlyaW5naGVhcF9ub2RlICpi LAogCiBzdHJ1Y3QgV2FpdExTTlN0YXRlICp3YWl0TFNOU3RhdGUgPSBOVUxMOwogCisvKgorICog V2FpdCBldmVudCBmb3IgZWFjaCBXYWl0TFNOVHlwZSwgdXNlZCB3aXRoIFdhaXRMYXRjaCgpIHRv IHJlcG9ydAorICogdGhlIHdhaXQgaW4gcGdfc3RhdF9hY3Rpdml0eS4KKyAqLworc3RhdGljIGNv bnN0IHVpbnQzMiBXYWl0TFNOV2FpdEV2ZW50c1tdID0geworCVtXQUlUX0xTTl9UWVBFX1NUQU5E QllfUkVQTEFZXSA9IFdBSVRfRVZFTlRfV0FJVF9GT1JfV0FMX1JFUExBWSwKKwlbV0FJVF9MU05f VFlQRV9TVEFOREJZX1dSSVRFXSA9IFdBSVRfRVZFTlRfV0FJVF9GT1JfV0FMX1dSSVRFLAorCVtX QUlUX0xTTl9UWVBFX1NUQU5EQllfRkxVU0hdID0gV0FJVF9FVkVOVF9XQUlUX0ZPUl9XQUxfRkxV U0gsCisJW1dBSVRfTFNOX1RZUEVfUFJJTUFSWV9GTFVTSF0gPSBXQUlUX0VWRU5UX1dBSVRfRk9S X1dBTF9GTFVTSCwKK307CisKK1N0YXRpY0Fzc2VydERlY2wobGVuZ3Rob2YoV2FpdExTTldhaXRF dmVudHMpID09IFdBSVRfTFNOX1RZUEVfQ09VTlQsCisJCQkJICJXYWl0TFNOV2FpdEV2ZW50cyBt dXN0IG1hdGNoIFdhaXRMU05UeXBlIGVudW0iKTsKKworLyoKKyAqIEdldCB0aGUgY3VycmVudCBM U04gZm9yIHRoZSBzcGVjaWZpZWQgd2FpdCB0eXBlLgorICovCitYTG9nUmVjUHRyCitHZXRDdXJy ZW50TFNORm9yV2FpdFR5cGUoV2FpdExTTlR5cGUgbHNuVHlwZSkKK3sKKwlBc3NlcnQobHNuVHlw ZSA+PSAwICYmIGxzblR5cGUgPCBXQUlUX0xTTl9UWVBFX0NPVU5UKTsKKworCXN3aXRjaCAobHNu VHlwZSkKKwl7CisJCWNhc2UgV0FJVF9MU05fVFlQRV9TVEFOREJZX1JFUExBWToKKwkJCXJldHVy biBHZXRYTG9nUmVwbGF5UmVjUHRyKE5VTEwpOworCisJCWNhc2UgV0FJVF9MU05fVFlQRV9TVEFO REJZX1dSSVRFOgorCQkJcmV0dXJuIEdldFdhbFJjdldyaXRlUmVjUHRyKCk7CisKKwkJY2FzZSBX QUlUX0xTTl9UWVBFX1NUQU5EQllfRkxVU0g6CisJCQlyZXR1cm4gR2V0V2FsUmN2Rmx1c2hSZWNQ dHIoTlVMTCwgTlVMTCk7CisKKwkJY2FzZSBXQUlUX0xTTl9UWVBFX1BSSU1BUllfRkxVU0g6CisJ CQlyZXR1cm4gR2V0Rmx1c2hSZWNQdHIoTlVMTCk7CisJfQorCisJZWxvZyhFUlJPUiwgImludmFs aWQgTFNOIHdhaXQgdHlwZTogJWQiLCBsc25UeXBlKTsKKwlwZ191bnJlYWNoYWJsZSgpOworfQor CiAvKiBSZXBvcnQgdGhlIGFtb3VudCBvZiBzaGFyZWQgbWVtb3J5IHNwYWNlIG5lZWRlZCBmb3Ig V2FpdExTTlN0YXRlLiAqLwogU2l6ZQogV2FpdExTTlNobWVtU2l6ZSh2b2lkKQpAQCAtMzAyLDYg KzM0OSwxOSBAQCBXYWl0TFNOQ2xlYW51cCh2b2lkKQogCX0KIH0KIAorLyoKKyAqIENoZWNrIGlm IHRoZSBnaXZlbiBMU04gdHlwZSByZXF1aXJlcyByZWNvdmVyeSB0byBiZSBpbiBwcm9ncmVzcy4K KyAqIFN0YW5kYnkgd2FpdCB0eXBlcyAocmVwbGF5LCB3cml0ZSwgZmx1c2gpIHJlcXVpcmUgcmVj b3Zlcnk7CisgKiBwcmltYXJ5IHdhaXQgdHlwZXMgKGZsdXNoKSBkbyBub3QuCisgKi8KK3N0YXRp YyBpbmxpbmUgYm9vbAorV2FpdExTTlR5cGVSZXF1aXJlc1JlY292ZXJ5KFdhaXRMU05UeXBlIHQp Cit7CisJcmV0dXJuIHQgPT0gV0FJVF9MU05fVFlQRV9TVEFOREJZX1JFUExBWSB8fAorCQl0ID09 IFdBSVRfTFNOX1RZUEVfU1RBTkRCWV9XUklURSB8fAorCQl0ID09IFdBSVRfTFNOX1RZUEVfU1RB TkRCWV9GTFVTSDsKK30KKwogLyoKICAqIFdhaXQgdXNpbmcgTXlMYXRjaCB0aWxsIHRoZSBnaXZl biBMU04gaXMgcmVhY2hlZCwgdGhlIHJlcGxpY2EgZ2V0cwogICogcHJvbW90ZWQsIG9yIHRoZSBw b3N0bWFzdGVyIGRpZXMuCkBAIC0zNDEsMTMgKzQwMSwxMSBAQCBXYWl0Rm9yTFNOKFdhaXRMU05U eXBlIGxzblR5cGUsIFhMb2dSZWNQdHIgdGFyZ2V0TFNOLCBpbnQ2NCB0aW1lb3V0KQogCQlpbnQJ CQlyYzsKIAkJbG9uZwkJZGVsYXlfbXMgPSAtMTsKIAotCQlpZiAobHNuVHlwZSA9PSBXQUlUX0xT Tl9UWVBFX1JFUExBWSkKLQkJCWN1cnJlbnRMU04gPSBHZXRYTG9nUmVwbGF5UmVjUHRyKE5VTEwp OwotCQllbHNlCi0JCQljdXJyZW50TFNOID0gR2V0Rmx1c2hSZWNQdHIoTlVMTCk7CisJCS8qIEdl dCBjdXJyZW50IExTTiBmb3IgdGhlIHdhaXQgdHlwZSAqLworCQljdXJyZW50TFNOID0gR2V0Q3Vy cmVudExTTkZvcldhaXRUeXBlKGxzblR5cGUpOwogCiAJCS8qIENoZWNrIHRoYXQgcmVjb3Zlcnkg aXMgc3RpbGwgaW4tcHJvZ3Jlc3MgKi8KLQkJaWYgKGxzblR5cGUgPT0gV0FJVF9MU05fVFlQRV9S RVBMQVkgJiYgIVJlY292ZXJ5SW5Qcm9ncmVzcygpKQorCQlpZiAoV2FpdExTTlR5cGVSZXF1aXJl c1JlY292ZXJ5KGxzblR5cGUpICYmICFSZWNvdmVyeUluUHJvZ3Jlc3MoKSkKIAkJewogCQkJLyoK IAkJCSAqIFJlY292ZXJ5IHdhcyBlbmRlZCwgYnV0IGNoZWNrIGlmIHRhcmdldCBMU04gd2FzIGFs cmVhZHkKQEAgLTM3Niw3ICs0MzQsNyBAQCBXYWl0Rm9yTFNOKFdhaXRMU05UeXBlIGxzblR5cGUs IFhMb2dSZWNQdHIgdGFyZ2V0TFNOLCBpbnQ2NCB0aW1lb3V0KQogCQlDSEVDS19GT1JfSU5URVJS VVBUUygpOwogCiAJCXJjID0gV2FpdExhdGNoKE15TGF0Y2gsIHdha2VfZXZlbnRzLCBkZWxheV9t cywKLQkJCQkJICAgKGxzblR5cGUgPT0gV0FJVF9MU05fVFlQRV9SRVBMQVkpID8gV0FJVF9FVkVO VF9XQUlUX0ZPUl9XQUxfUkVQTEFZIDogV0FJVF9FVkVOVF9XQUlUX0ZPUl9XQUxfRkxVU0gpOwor CQkJCQkgICBXYWl0TFNOV2FpdEV2ZW50c1tsc25UeXBlXSk7CiAKIAkJLyoKIAkJICogRW1lcmdl bmN5IGJhaWxvdXQgaWYgcG9zdG1hc3RlciBoYXMgZGllZC4gIFRoaXMgaXMgdG8gYXZvaWQgdGhl CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy93YWl0LmMgYi9zcmMvYmFja2VuZC9j b21tYW5kcy93YWl0LmMKaW5kZXggZDQzZGZkNjQyZDYuLjQ4NjdmNTk2OTFlIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9jb21tYW5kcy93YWl0LmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv d2FpdC5jCkBAIC0xNDAsNyArMTQwLDcgQEAgRXhlY1dhaXRTdG10KFBhcnNlU3RhdGUgKnBzdGF0 ZSwgV2FpdFN0bXQgKnN0bXQsIERlc3RSZWNlaXZlciAqZGVzdCkKIAkgKi8KIAlBc3NlcnQoTXlQ cm9jLT54bWluID09IEludmFsaWRUcmFuc2FjdGlvbklkKTsKIAotCXdhaXRMU05SZXN1bHQgPSBX YWl0Rm9yTFNOKFdBSVRfTFNOX1RZUEVfUkVQTEFZLCBsc24sIHRpbWVvdXQpOworCXdhaXRMU05S ZXN1bHQgPSBXYWl0Rm9yTFNOKFdBSVRfTFNOX1RZUEVfU1RBTkRCWV9SRVBMQVksIGxzbiwgdGlt ZW91dCk7CiAKIAkvKgogCSAqIFByb2Nlc3MgdGhlIHJlc3VsdCBvZiBXYWl0Rm9yTFNOKCkuICBU aHJvdyBhcHByb3ByaWF0ZSBlcnJvciBpZiBuZWVkZWQuCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC91dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50X25hbWVzLnR4dCBiL3NyYy9iYWNrZW5kL3V0aWxz L2FjdGl2aXR5L3dhaXRfZXZlbnRfbmFtZXMudHh0CmluZGV4IDQzZDg3MGRiY2YxLi4zMjk5ZGUy M2JiMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudF9u YW1lcy50eHQKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudF9uYW1l cy50eHQKQEAgLTg5LDggKzg5LDkgQEAgTElCUFFXQUxSRUNFSVZFUl9DT05ORUNUCSJXYWl0aW5n IGluIFdBTCByZWNlaXZlciB0byBlc3RhYmxpc2ggY29ubmVjdGlvbiB0byByZW0KIExJQlBRV0FM UkVDRUlWRVJfUkVDRUlWRQkiV2FpdGluZyBpbiBXQUwgcmVjZWl2ZXIgdG8gcmVjZWl2ZSBkYXRh IGZyb20gcmVtb3RlIHNlcnZlci4iCiBTU0xfT1BFTl9TRVJWRVIJIldhaXRpbmcgZm9yIFNTTCB3 aGlsZSBhdHRlbXB0aW5nIGNvbm5lY3Rpb24uIgogV0FJVF9GT1JfU1RBTkRCWV9DT05GSVJNQVRJ T04JIldhaXRpbmcgZm9yIFdBTCB0byBiZSByZWNlaXZlZCBhbmQgZmx1c2hlZCBieSB0aGUgcGh5 c2ljYWwgc3RhbmRieS4iCi1XQUlUX0ZPUl9XQUxfRkxVU0gJIldhaXRpbmcgZm9yIFdBTCBmbHVz aCB0byByZWFjaCBhIHRhcmdldCBMU04gb24gYSBwcmltYXJ5LiIKK1dBSVRfRk9SX1dBTF9GTFVT SAkiV2FpdGluZyBmb3IgV0FMIGZsdXNoIHRvIHJlYWNoIGEgdGFyZ2V0IExTTiBvbiBhIHByaW1h cnkgb3Igc3RhbmRieS4iCiBXQUlUX0ZPUl9XQUxfUkVQTEFZCSJXYWl0aW5nIGZvciBXQUwgcmVw bGF5IHRvIHJlYWNoIGEgdGFyZ2V0IExTTiBvbiBhIHN0YW5kYnkuIgorV0FJVF9GT1JfV0FMX1dS SVRFCSJXYWl0aW5nIGZvciBXQUwgd3JpdGUgdG8gcmVhY2ggYSB0YXJnZXQgTFNOIG9uIGEgc3Rh bmRieS4iCiBXQUxfU0VOREVSX1dBSVRfRk9SX1dBTAkiV2FpdGluZyBmb3IgV0FMIHRvIGJlIGZs dXNoZWQgaW4gV0FMIHNlbmRlciBwcm9jZXNzLiIKIFdBTF9TRU5ERVJfV1JJVEVfREFUQQkiV2Fp dGluZyBmb3IgYW55IGFjdGl2aXR5IHdoZW4gcHJvY2Vzc2luZyByZXBsaWVzIGZyb20gV0FMIHJl Y2VpdmVyIGluIFdBTCBzZW5kZXIgcHJvY2Vzcy4iCiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L2FjY2Vzcy94bG9nd2FpdC5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3hsb2d3YWl0LmgKaW5kZXgg YjVmZDNlNzRmMWMuLmQxMjUzMWQzMmI4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3Mv eGxvZ3dhaXQuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MveGxvZ3dhaXQuaApAQCAtMSw3ICsx LDcgQEAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoKICAqIHhsb2d3YWl0LmgKLSAqCSAgRGVjbGFy YXRpb25zIGZvciBMU04gcmVwbGF5IHdhaXRpbmcgcm91dGluZXMuCisgKgkgIERlY2xhcmF0aW9u cyBmb3IgV0FMIGZsdXNoLCB3cml0ZSwgYW5kIHJlcGxheSB3YWl0aW5nIHJvdXRpbmVzLgogICoK ICAqIENvcHlyaWdodCAoYykgMjAyNS0yMDI2LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVu dCBHcm91cAogICoKQEAgLTM1LDExICszNSwxNiBAQCB0eXBlZGVmIGVudW0KICAqLwogdHlwZWRl ZiBlbnVtIFdhaXRMU05UeXBlCiB7Ci0JV0FJVF9MU05fVFlQRV9SRVBMQVksCQkvKiBXYWl0aW5n IGZvciByZXBsYXkgb24gc3RhbmRieSAqLwotCVdBSVRfTFNOX1RZUEVfRkxVU0gsCQkvKiBXYWl0 aW5nIGZvciBmbHVzaCBvbiBwcmltYXJ5ICovCisJLyogU3RhbmRieSB3YWl0IHR5cGVzICh3YWxy ZWNlaXZlci9zdGFydHVwIHdha2VzKSAqLworCVdBSVRfTFNOX1RZUEVfU1RBTkRCWV9SRVBMQVks CisJV0FJVF9MU05fVFlQRV9TVEFOREJZX1dSSVRFLAorCVdBSVRfTFNOX1RZUEVfU1RBTkRCWV9G TFVTSCwKKworCS8qIFByaW1hcnkgd2FpdCB0eXBlcyAoV0FMIHdyaXRlci9iYWNrZW5kcyB3YWtl KSAqLworCVdBSVRfTFNOX1RZUEVfUFJJTUFSWV9GTFVTSCwKIH0gV2FpdExTTlR5cGU7CiAKLSNk ZWZpbmUgV0FJVF9MU05fVFlQRV9DT1VOVCAoV0FJVF9MU05fVFlQRV9GTFVTSCArIDEpCisjZGVm aW5lIFdBSVRfTFNOX1RZUEVfQ09VTlQgKFdBSVRfTFNOX1RZUEVfUFJJTUFSWV9GTFVTSCArIDEp CiAKIC8qCiAgKiBXYWl0TFNOUHJvY0luZm8gLSB0aGUgc2hhcmVkIG1lbW9yeSBzdHJ1Y3R1cmUg cmVwcmVzZW50aW5nIGluZm9ybWF0aW9uCkBAIC05Nyw2ICsxMDIsNyBAQCBleHRlcm4gUEdETExJ TVBPUlQgV2FpdExTTlN0YXRlICp3YWl0TFNOU3RhdGU7CiAKIGV4dGVybiBTaXplIFdhaXRMU05T aG1lbVNpemUodm9pZCk7CiBleHRlcm4gdm9pZCBXYWl0TFNOU2htZW1Jbml0KHZvaWQpOworZXh0 ZXJuIFhMb2dSZWNQdHIgR2V0Q3VycmVudExTTkZvcldhaXRUeXBlKFdhaXRMU05UeXBlIGxzblR5 cGUpOwogZXh0ZXJuIHZvaWQgV2FpdExTTldha2V1cChXYWl0TFNOVHlwZSBsc25UeXBlLCBYTG9n UmVjUHRyIGN1cnJlbnRMU04pOwogZXh0ZXJuIHZvaWQgV2FpdExTTkNsZWFudXAodm9pZCk7CiBl eHRlcm4gV2FpdExTTlJlc3VsdCBXYWl0Rm9yTFNOKFdhaXRMU05UeXBlIGxzblR5cGUsIFhMb2dS ZWNQdHIgdGFyZ2V0TFNOLAotLSAKMi4zOS41IChBcHBsZSBHaXQtMTU0KQoK --000000000000592f7106476f9609 Content-Type: application/octet-stream; name="v13-0004-Use-WAIT-FOR-LSN-in-PostgreSQL-Test-Cluster-wait.patch" Content-Disposition: attachment; filename="v13-0004-Use-WAIT-FOR-LSN-in-PostgreSQL-Test-Cluster-wait.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mjxgzqob3 RnJvbSA1ODI3YmQyZDk3ODc1N2U5MTBmMmJmMDBmOGUyMDA2YWJjNTYzZDI0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgS29yb3Rrb3YgPGFrb3JvdGtvdkBwb3N0Z3Jl c3FsLm9yZz4KRGF0ZTogU2F0LCAzIEphbiAyMDI2IDAwOjQ5OjEwICswMjAwClN1YmplY3Q6IFtQ QVRDSCB2MTMgNC80XSBVc2UgV0FJVCBGT1IgTFNOIGluCiBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVz dGVyOjp3YWl0X2Zvcl9jYXRjaHVwKCkKCldoZW4gdGhlIHN0YW5kYnkgaXMgcGFzc2VkIGFzIGEg UG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlciBpbnN0YW5jZSwKdXNlIHRoZSBXQUlUIEZPUiBMU04g Y29tbWFuZCBvbiB0aGUgc3RhbmRieSBzZXJ2ZXIgdG8gaW1wbGVtZW50CndhaXRfZm9yX2NhdGNo dXAoKSBmb3IgcmVwbGF5LCB3cml0ZSwgYW5kIGZsdXNoIG1vZGVzLiAgVGhpcyBpcyBtb3JlCmVm ZmljaWVudCB0aGFuIHBvbGxpbmcgcGdfc3RhdF9yZXBsaWNhdGlvbiBvbiB0aGUgdXBzdHJlYW0s IGFzIHRoZQpXQUlUIEZPUiBMU04gY29tbWFuZCB1c2VzIGEgbGF0Y2gtYmFzZWQgd2FrZXVwIG1l Y2hhbmlzbS4KClRoZSBvcHRpbWl6YXRpb24gYXBwbGllcyB3aGVuOgotIFRoZSBzdGFuZGJ5IGlz IHBhc3NlZCBhcyBhIENsdXN0ZXIgb2JqZWN0IChub3QganVzdCBhIG5hbWUgc3RyaW5nKQotIFRo ZSBtb2RlIGlzICdyZXBsYXknLCAnd3JpdGUnLCBvciAnZmx1c2gnIChub3QgJ3NlbnQnKQotIFRo ZSBzdGFuZGJ5IGlzIGluIHJlY292ZXJ5CgpGb3IgJ3NlbnQnIG1vZGUsIHdoZW4gdGhlIHN0YW5k YnkgaXMgcGFzc2VkIGFzIGEgc3RyaW5nIChlLmcuLCBhCnN1YnNjcmlwdGlvbiBuYW1lIGZvciBs b2dpY2FsIHJlcGxpY2F0aW9uKSwgb3Igd2hlbiB0aGUgc3RhbmRieSBoYXMKYmVlbiBwcm9tb3Rl ZCwgdGhlIGZ1bmN0aW9uIGZhbGxzIGJhY2sgdG8gdGhlIG9yaWdpbmFsIHBvbGxpbmctYmFzZWQK YXBwcm9hY2ggdXNpbmcgcGdfc3RhdF9yZXBsaWNhdGlvbiBvbiB0aGUgdXBzdHJlYW0uCgpEaXNj dXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL0NBQlBURjdVaUFyZ1ctc1hqOUNOd1J6VWhZT1Fy ZXZMemtZY2dCeWRtWDVvRGVzMXNqZyU0MG1haWwuZ21haWwuY29tCkF1dGhvcjogWHVuZW5nIFpo b3UgPHh1bmVuZ3pob3VAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogQWxleGFuZGVyIEtvcm90a292 IDxhZWtvcm90a292QGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IENoYW8gTGkgPGxpLmV2YW4uY2hh b0BnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBBbHZhcm8gSGVycmVyYSA8YWx2aGVycmVAa3VyaWxl bXUuZGU+Ci0tLQogc3JjL3Rlc3QvcGVybC9Qb3N0Z3JlU1FML1Rlc3QvQ2x1c3Rlci5wbSB8IDU5 ICsrKysrKysrKysrKysrKysrKysrKysrLQogMSBmaWxlIGNoYW5nZWQsIDU4IGluc2VydGlvbnMo KyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9wZXJsL1Bvc3RncmVTUUwv VGVzdC9DbHVzdGVyLnBtIGIvc3JjL3Rlc3QvcGVybC9Qb3N0Z3JlU1FML1Rlc3QvQ2x1c3Rlci5w bQppbmRleCA5NTVkZmMwZTdmOC4uYTI4ZWE4OWFhMTAgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3Bl cmwvUG9zdGdyZVNRTC9UZXN0L0NsdXN0ZXIucG0KKysrIGIvc3JjL3Rlc3QvcGVybC9Qb3N0Z3Jl U1FML1Rlc3QvQ2x1c3Rlci5wbQpAQCAtMzMyMCw2ICszMzIwLDEzIEBAIElmIHlvdSBwYXNzIGFu IGV4cGxpY2l0IHZhbHVlIG9mIHRhcmdldF9sc24sIGl0IHNob3VsZCBhbG1vc3QgYWx3YXlzIGJl CiB0aGUgcHJpbWFyeSdzIHdyaXRlIExTTjsgc28gdGhpcyBwYXJhbWV0ZXIgaXMgc2VsZG9tIG5l ZWRlZCBleGNlcHQgd2hlbgogcXVlcnlpbmcgc29tZSBpbnRlcm1lZGlhdGUgcmVwbGljYXRpb24g bm9kZSByYXRoZXIgdGhhbiB0aGUgcHJpbWFyeS4KIAorV2hlbiB0aGUgc3RhbmRieSBpcyBwYXNz ZWQgYXMgYSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyIGluc3RhbmNlIGFuZCBpcworaW4gcmVj b3ZlcnksIHRoaXMgZnVuY3Rpb24gdXNlcyB0aGUgV0FJVCBGT1IgTFNOIGNvbW1hbmQgb24gdGhl IHN0YW5kYnkKK2ZvciBtb2RlcyByZXBsYXksIHdyaXRlLCBhbmQgZmx1c2guICBUaGlzIGlzIG1v cmUgZWZmaWNpZW50IHRoYW4gcG9sbGluZworcGdfc3RhdF9yZXBsaWNhdGlvbiBvbiB0aGUgdXBz dHJlYW0sIGFzIFdBSVQgRk9SIExTTiB1c2VzIGEgbGF0Y2gtYmFzZWQKK3dha2V1cCBtZWNoYW5p c20uICBGb3IgJ3NlbnQnIG1vZGUsIG9yIHdoZW4gdGhlIHN0YW5kYnkgaXMgcGFzc2VkIGFzIGEK K3N0cmluZyAoZS5nLiwgYSBzdWJzY3JpcHRpb24gbmFtZSksIGl0IGZhbGxzIGJhY2sgdG8gcG9s bGluZy4KKwogSWYgdGhlcmUgaXMgbm8gYWN0aXZlIHJlcGxpY2F0aW9uIGNvbm5lY3Rpb24gZnJv bSB0aGlzIHBlZXIsIHdhaXRzIHVudGlsCiBwb2xsX3F1ZXJ5X3VudGlsIHRpbWVvdXQuCiAKQEAg LTMzMzksMTAgKzMzNDYsMTMgQEAgc3ViIHdhaXRfZm9yX2NhdGNodXAKIAkgIC4gam9pbignLCAn LCBrZXlzKCV2YWxpZF9tb2RlcykpCiAJICB1bmxlc3MgZXhpc3RzKCR2YWxpZF9tb2Rlc3skbW9k ZX0pOwogCi0JIyBBbGxvdyBwYXNzaW5nIG9mIGEgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlciBp bnN0YW5jZSBhcyBzaG9ydGhhbmQKKwkjIEtlZXAgYSByZWZlcmVuY2UgdG8gdGhlIHN0YW5kYnkg bm9kZSBpZiBwYXNzZWQgYXMgYW4gb2JqZWN0LCBzbyB3ZSBjYW4KKwkjIHVzZSBXQUlUIEZPUiBM U04gb24gaXQgbGF0ZXIuCisJbXkgJHN0YW5kYnlfbm9kZTsKIAlpZiAoYmxlc3NlZCgkc3RhbmRi eV9uYW1lKQogCQkmJiAkc3RhbmRieV9uYW1lLT5pc2EoIlBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0 ZXIiKSkKIAl7CisJCSRzdGFuZGJ5X25vZGUgPSAkc3RhbmRieV9uYW1lOwogCQkkc3RhbmRieV9u YW1lID0gJHN0YW5kYnlfbmFtZS0+bmFtZTsKIAl9CiAJaWYgKCFkZWZpbmVkKCR0YXJnZXRfbHNu KSkKQEAgLTMzNjcsNiArMzM3Nyw1MyBAQCBzdWIgd2FpdF9mb3JfY2F0Y2h1cAogCSAgLiAkc2Vs Zi0+bmFtZSAuICJcbiI7CiAJIyBCZWZvcmUgcmVsZWFzZSAxMiB3YWxyZWNlaXZlciBqdXN0IHNl dCB0aGUgYXBwbGljYXRpb24gbmFtZSB0bwogCSMgIndhbHJlY2VpdmVyIgorCisJIyBVc2UgV0FJ VCBGT1IgTFNOIG9uIHRoZSBzdGFuZGJ5IHdoZW46CisJIyAtIFRoZSBzdGFuZGJ5IHdhcyBwYXNz ZWQgYXMgYSBDbHVzdGVyIG9iamVjdCAoc28gd2UgY2FuIGNvbm5lY3QgdG8gaXQpCisJIyAtIFRo ZSBtb2RlIGlzIHJlcGxheSwgd3JpdGUsIG9yIGZsdXNoIChub3QgJ3NlbnQnKQorCSMgLSBUaGUg c3RhbmRieSBpcyBpbiByZWNvdmVyeQorCSMgVGhpcyBpcyBtb3JlIGVmZmljaWVudCB0aGFuIHBv bGxpbmcgcGdfc3RhdF9yZXBsaWNhdGlvbiBvbiB0aGUgdXBzdHJlYW0sCisJIyBhcyBXQUlUIEZP UiBMU04gdXNlcyBhIGxhdGNoLWJhc2VkIHdha2V1cCBtZWNoYW5pc20uCisJaWYgKGRlZmluZWQo JHN0YW5kYnlfbm9kZSkgJiYgKCRtb2RlIG5lICdzZW50JykpCisJeworCQlteSAkc3RhbmRieV9p bl9yZWNvdmVyeSA9CisJCSAgJHN0YW5kYnlfbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJT RUxFQ1QgcGdfaXNfaW5fcmVjb3ZlcnkoKSIpOworCQljaG9tcCgkc3RhbmRieV9pbl9yZWNvdmVy eSk7CisKKwkJaWYgKCRzdGFuZGJ5X2luX3JlY292ZXJ5IGVxICd0JykKKwkJeworCQkJIyBNYXAg bW9kZSBuYW1lcyB0byBXQUlUIEZPUiBMU04gbW9kZSBuYW1lcworCQkJbXkgJW1vZGVfbWFwID0g KAorCQkJCSdyZXBsYXknID0+ICdzdGFuZGJ5X3JlcGxheScsCisJCQkJJ3dyaXRlJyA9PiAnc3Rh bmRieV93cml0ZScsCisJCQkJJ2ZsdXNoJyA9PiAnc3RhbmRieV9mbHVzaCcsKTsKKwkJCW15ICR3 YWl0X21vZGUgPSAkbW9kZV9tYXB7JG1vZGV9OworCQkJbXkgJHRpbWVvdXQgPSAkUG9zdGdyZVNR TDo6VGVzdDo6VXRpbHM6OnRpbWVvdXRfZGVmYXVsdDsKKwkJCW15ICR3YWl0X3F1ZXJ5ID0KKwkJ CSAgcXFbV0FJVCBGT1IgTFNOICcke3RhcmdldF9sc259JyBXSVRIIChNT0RFICcke3dhaXRfbW9k ZX0nLCB0aW1lb3V0ICcke3RpbWVvdXR9cycsIG5vX3Rocm93KTtdOworCQkJbXkgJG91dHB1dCA9 ICRzdGFuZGJ5X25vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAkd2FpdF9xdWVyeSk7CisJCQlj aG9tcCgkb3V0cHV0KTsKKworCQkJaWYgKCRvdXRwdXQgbmUgJ3N1Y2Nlc3MnKQorCQkJeworCQkJ CSMgRmV0Y2ggYWRkaXRpb25hbCBkZXRhaWwgZm9yIGRlYnVnZ2luZyBwdXJwb3NlcworCQkJCW15 ICRkZXRhaWxzID0gJHNlbGYtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkJCQkiU0VMRUNUICog RlJPTSBwZ19jYXRhbG9nLnBnX3N0YXRfcmVwbGljYXRpb24iKTsKKwkJCQlkaWFnIHFxKFdBSVQg Rk9SIExTTiBmYWlsZWQgd2l0aCBzdGF0dXM6CisJJHtvdXRwdXR9KTsKKwkJCQlkaWFnIHFxKExh c3QgcGdfc3RhdF9yZXBsaWNhdGlvbiBjb250ZW50czoKKwkke2RldGFpbHN9KTsKKwkJCQljcm9h ayAiZmFpbGVkIHdhaXRpbmcgZm9yIGNhdGNodXAiOworCQkJfQorCQkJcHJpbnQgImRvbmVcbiI7 CisJCQlyZXR1cm47CisJCX0KKwl9CisKKwkjIEZhbGwgYmFjayB0byBwb2xsaW5nIHBnX3N0YXRf cmVwbGljYXRpb24gb24gdGhlIHVwc3RyZWFtIGZvcjoKKwkjIC0gJ3NlbnQnIG1vZGUgKG5vIGNv cnJlc3BvbmRpbmcgV0FJVCBGT1IgTFNOIG1vZGUpCisJIyAtIFdoZW4gc3RhbmRieV9uYW1lIGlz IGEgc3RyaW5nIChlLmcuLCBzdWJzY3JpcHRpb24gbmFtZSkKKwkjIC0gV2hlbiB0aGUgc3RhbmRi eSBpcyBubyBsb25nZXIgaW4gcmVjb3ZlcnkgKHdhcyBwcm9tb3RlZCkKIAlteSAkcXVlcnkgPSBx cVtTRUxFQ1QgJyR0YXJnZXRfbHNuJyA8PSAke21vZGV9X2xzbiBBTkQgc3RhdGUgPSAnc3RyZWFt aW5nJwogICAgICAgICAgRlJPTSBwZ19jYXRhbG9nLnBnX3N0YXRfcmVwbGljYXRpb24KICAgICAg ICAgIFdIRVJFIGFwcGxpY2F0aW9uX25hbWUgSU4gKCckc3RhbmRieV9uYW1lJywgJ3dhbHJlY2Vp dmVyJyldOwotLSAKMi4zOS41IChBcHBsZSBHaXQtMTU0KQoK --000000000000592f7106476f9609 Content-Type: application/octet-stream; name="v13-0003-Add-tab-completion-for-the-WAIT-FOR-LSN-MODE-opt.patch" Content-Disposition: attachment; filename="v13-0003-Add-tab-completion-for-the-WAIT-FOR-LSN-MODE-opt.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mjxgzqo82 RnJvbSAxZDFlZTBiZTc5NzVhOTRlMGYwNjJhOTZlNzdiZTExMzIyZjMzNWZhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgS29yb3Rrb3YgPGFrb3JvdGtvdkBwb3N0Z3Jl c3FsLm9yZz4KRGF0ZTogU2F0LCAzIEphbiAyMDI2IDAwOjQyOjMyICswMjAwClN1YmplY3Q6IFtQ QVRDSCB2MTMgMy80XSBBZGQgdGFiIGNvbXBsZXRpb24gZm9yIHRoZSBXQUlUIEZPUiBMU04gTU9E RSBvcHRpb24KClVwZGF0ZSBwc3FsIHRhYiBjb21wbGV0aW9uIHRvIHN1cHBvcnQgdGhlIG9wdGlv bmFsIE1PREUgb3B0aW9uIGluIHRoZQpXQUlUIEZPUiBMU04gY29tbWFuZC4gIEFmdGVyIHNwZWNp ZnlpbmcgYW4gTFNOIHZhbHVlLCBjb21wbGV0aW9uIG5vdyBvZmZlcnMKYm90aCBNT0RFIGFuZCBX SVRIIGtleXdvcmRzLiAgVGhlIE1PREUgb3B0aW9uIHNwZWNpZmllcyB3aGljaCBMU04gdHlwZSB0 byB3YWl0CmZvci4gIEluIHBhcnRpY3VsYXIsIGl0IGNvbnRyb2xzIHdoZXRoZXIgdGhlIHdhaXQg aXMgZXZhbHVhdGVkIGZyb20gdGhlCnN0YW5kYnkgb3IgcHJpbWFyeSBwZXJzcGVjdGl2ZS4KCldo ZW4gTU9ERSBpcyBzcGVjaWZpZWQsIHRoZSBjb21wbGV0aW9uIHN1Z2dlc3RzIHRoZSB2YWxpZCBt b2RlIHZhbHVlczoKc3RhbmRieV9yZXBsYXksIHN0YW5kYnlfd3JpdGUsIHN0YW5kYnlfZmx1c2gs IGFuZCBwcmltYXJ5X2ZsdXNoLgoKRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9DQUJQ VEY3VWlBcmdXLXNYajlDTndSelVoWU9RcmV2THprWWNnQnlkbVg1b0RlczFzamclNDBtYWlsLmdt YWlsLmNvbQpBdXRob3I6IFh1bmVuZyBaaG91IDx4dW5lbmd6aG91QGdtYWlsLmNvbT4KUmV2aWV3 ZWQtYnk6IEFsZXhhbmRlciBLb3JvdGtvdiA8YWVrb3JvdGtvdkBnbWFpbC5jb20+ClJldmlld2Vk LWJ5OiBDaGFvIExpIDxsaS5ldmFuLmNoYW9AZ21haWwuY29tPgpSZXZpZXdlZC1ieTogQWx2YXJv IEhlcnJlcmEgPGFsdmhlcnJlQGt1cmlsZW11LmRlPgotLS0KIHNyYy9iaW4vcHNxbC90YWItY29t cGxldGUuaW4uYyB8IDI4ICsrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFu Z2VkLCAxNyBpbnNlcnRpb25zKCspLCAxMSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMv YmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmlu LmMKaW5kZXggZDgxZjJmY2RiZTYuLjA2ZWRlYTk4ZjA2IDEwMDY0NAotLS0gYS9zcmMvYmluL3Bz cWwvdGFiLWNvbXBsZXRlLmluLmMKKysrIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5j CkBAIC01MzU1LDggKzUzNTUsMTEgQEAgbWF0Y2hfcHJldmlvdXNfd29yZHMoaW50IHBhdHRlcm5f aWQsCiAvKgogICogV0FJVCBGT1IgTFNOICc8bHNuPicgWyBXSVRIICggb3B0aW9uIFssIC4uLl0g KSBdCiAgKiB3aGVyZSBvcHRpb24gY2FuIGJlOgorICogICBNT0RFICc8bW9kZT4nCiAgKiAgIFRJ TUVPVVQgJzx0aW1lb3V0PicKICAqICAgTk9fVEhST1cKKyAqIGFuZCBtb2RlIGNhbiBiZToKKyAq ICAgc3RhbmRieV9yZXBsYXkgfCBzdGFuZGJ5X3dyaXRlIHwgc3RhbmRieV9mbHVzaCB8IHByaW1h cnlfZmx1c2gKICAqLwogCWVsc2UgaWYgKE1hdGNoZXMoIldBSVQiKSkKIAkJQ09NUExFVEVfV0lU SCgiRk9SIik7CkBAIC01MzY5LDIxICs1MzcyLDI0IEBAIG1hdGNoX3ByZXZpb3VzX3dvcmRzKGlu dCBwYXR0ZXJuX2lkLAogCQlDT01QTEVURV9XSVRIKCJXSVRIIik7CiAJZWxzZSBpZiAoTWF0Y2hl cygiV0FJVCIsICJGT1IiLCAiTFNOIiwgTWF0Y2hBbnksICJXSVRIIikpCiAJCUNPTVBMRVRFX1dJ VEgoIigiKTsKKworCS8qCisJICogSGFuZGxlIHBhcmVudGhlc2l6ZWQgb3B0aW9uIGxpc3QuICBU aGlzIGZpcmVzIHdoZW4gd2UncmUgaW4gYW4KKwkgKiB1bmZpbmlzaGVkIHBhcmVudGhlc2l6ZWQg b3B0aW9uIGxpc3QuICBnZXRfcHJldmlvdXNfd29yZHMgdHJlYXRzIGEKKwkgKiBjb21wbGV0ZWQg cGFyZW50aGVzaXplZCBvcHRpb24gbGlzdCBhcyBvbmUgd29yZCwgc28gdGhlIGFib3ZlIHRlc3Qg aXMKKwkgKiBjb3JyZWN0LgorCSAqCisJICogJ21vZGUnIHRha2VzIGEgc3RyaW5nIHZhbHVlIChv bmUgb2YgdGhlIGxpc3RlZCBhYm92ZSksICd0aW1lb3V0JyB0YWtlcworCSAqIGEgc3RyaW5nIHZh bHVlLCBhbmQgJ25vX3Rocm93JyB0YWtlcyBubyB2YWx1ZS4gIFdlIGRvIG5vdCBvZmZlcgorCSAq IGNvbXBsZXRpb25zIGZvciB0aGUgKnZhbHVlcyogb2YgJ3RpbWVvdXQnIG9yICdub190aHJvdycu CisJICovCiAJZWxzZSBpZiAoSGVhZE1hdGNoZXMoIldBSVQiLCAiRk9SIiwgIkxTTiIsIE1hdGNo QW55LCAiV0lUSCIsICIoKiIpICYmCiAJCQkgIUhlYWRNYXRjaGVzKCJXQUlUIiwgIkZPUiIsICJM U04iLCBNYXRjaEFueSwgIldJVEgiLCAiKCopIikpCiAJewotCQkvKgotCQkgKiBUaGlzIGZpcmVz IGlmIHdlJ3JlIGluIGFuIHVuZmluaXNoZWQgcGFyZW50aGVzaXplZCBvcHRpb24gbGlzdC4KLQkJ ICogZ2V0X3ByZXZpb3VzX3dvcmRzIHRyZWF0cyBhIGNvbXBsZXRlZCBwYXJlbnRoZXNpemVkIG9w dGlvbiBsaXN0IGFzCi0JCSAqIG9uZSB3b3JkLCBzbyB0aGUgYWJvdmUgdGVzdCBpcyBjb3JyZWN0 LgotCQkgKi8KIAkJaWYgKGVuZHNfd2l0aChwcmV2X3dkLCAnKCcpIHx8IGVuZHNfd2l0aChwcmV2 X3dkLCAnLCcpKQotCQkJQ09NUExFVEVfV0lUSCgidGltZW91dCIsICJub190aHJvdyIpOwotCi0J CS8qCi0JCSAqIHRpbWVvdXQgdGFrZXMgYSBzdHJpbmcgdmFsdWUsIG5vX3Rocm93IHRha2VzIG5v IHZhbHVlLiBXZSBkb24ndAotCQkgKiBvZmZlciBjb21wbGV0aW9ucyBmb3IgdGhlc2UgdmFsdWVz LgotCQkgKi8KKwkJCUNPTVBMRVRFX1dJVEgoIm1vZGUiLCAidGltZW91dCIsICJub190aHJvdyIp OworCQllbHNlIGlmIChUYWlsTWF0Y2hlcygibW9kZSIpKQorCQkJQ09NUExFVEVfV0lUSCgiJ3N0 YW5kYnlfcmVwbGF5JyIsICInc3RhbmRieV93cml0ZSciLCAiJ3N0YW5kYnlfZmx1c2gnIiwgIidw cmltYXJ5X2ZsdXNoJyIpOwogCX0KIAogLyogV0lUSCBbUkVDVVJTSVZFXSAqLwotLSAKMi4zOS41 IChBcHBsZSBHaXQtMTU0KQoK --000000000000592f7106476f9609 Content-Type: application/octet-stream; name="v13-0002-Add-the-MODE-option-to-the-WAIT-FOR-LSN-command.patch" Content-Disposition: attachment; filename="v13-0002-Add-the-MODE-option-to-the-WAIT-FOR-LSN-command.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mjxgzqo51 RnJvbSA0ZmYzNzM2ZDJiZWNiZmY5OTMxZWM1NzEwOThmOGNhNDQwODFiMThjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgS29yb3Rrb3YgPGFrb3JvdGtvdkBwb3N0Z3Jl c3FsLm9yZz4KRGF0ZTogU2F0LCAzIEphbiAyMDI2IDAwOjM4OjQ3ICswMjAwClN1YmplY3Q6IFtQ QVRDSCB2MTMgMi80XSBBZGQgdGhlIE1PREUgb3B0aW9uIHRvIHRoZSBXQUlUIEZPUiBMU04gY29t bWFuZAoKVGhpcyBjb21taXQgZXh0ZW5kcyB0aGUgV0FJVCBGT1IgTFNOIGNvbW1hbmQgd2l0aCBh biBvcHRpb25hbCBNT0RFIG9wdGlvbiBpbgp0aGUgV0lUSCBjbGF1c2UgdGhhdCBzcGVjaWZpZXMg d2hpY2ggTFNOIHR5cGUgdG8gd2FpdCBmb3I6CgogIFdBSVQgRk9SIExTTiAnPGxzbj4nIFtXSVRI IChNT0RFICc8bW9kZT4nLCAuLi4pXQoKd2hlcmUgbW9kZSBjYW4gYmU6CiAtICdzdGFuZGJ5X3Jl cGxheScgKGRlZmF1bHQpOiBXYWl0IGZvciBXQUwgdG8gYmUgcmVwbGF5ZWQgdG8gdGhlIHNwZWNp ZmllZAogICBMU04sCiAtICdzdGFuZGJ5X3dyaXRlJzogV2FpdCBmb3IgV0FMIHRvIGJlIHdyaXR0 ZW4gKHJlY2VpdmVkKSB0byB0aGUgc3BlY2lmaWVkCiAgIExTTiwKIC0gJ3N0YW5kYnlfZmx1c2gn OiBXYWl0IGZvciBXQUwgdG8gYmUgZmx1c2hlZCB0byBkaXNrIGF0IHRoZSBzcGVjaWZpZWQgTFNO LAogLSAncHJpbWFyeV9mbHVzaCc6IFdhaXQgZm9yIFdBTCB0byBiZSBmbHVzaGVkIHRvIGRpc2sg b24gdGhlIHByaW1hcnkgc2VydmVyLgoKVGhlIGRlZmF1bHQgbW9kZSBpcyAnc3RhbmRieV9yZXBs YXknLCBtYXRjaGluZyB0aGUgb3JpZ2luYWwgYmVoYXZpb3Igd2hlbiBNT0RFCmlzIG5vdCBzcGVj aWZpZWQuIFRoaXMgZm9sbG93cyB0aGUgcGF0dGVybiB1c2VkIGJ5IENPUFkgYW5kIEVYUExBSU4K Y29tbWFuZHMsIHdoZXJlIG9wdGlvbnMgYXJlIHNwZWNpZmllZCBhcyBzdHJpbmcgdmFsdWVzIGlu IHRoZSBXSVRIIGNsYXVzZS4KCk1vZGVzIGFyZSBleHBsaWNpdGx5IG5hbWVkIHRvIGRpc3Rpbmd1 aXNoIGJldHdlZW4gcHJpbWFyeSBhbmQgc3RhbmRieQpvcGVyYXRpb25zOgotIFN0YW5kYnkgbW9k ZXMgKCdzdGFuZGJ5X3JlcGxheScsICdzdGFuZGJ5X3dyaXRlJywgJ3N0YW5kYnlfZmx1c2gnKSBj YW4gb25seQogIGJlIHVzZWQgZHVyaW5nIHJlY292ZXJ5IChvbiBhIHN0YW5kYnkgc2VydmVyKSwK LSBQcmltYXJ5IG1vZGUgKCdwcmltYXJ5X2ZsdXNoJykgY2FuIG9ubHkgYmUgdXNlZCBvbiBhIHBy aW1hcnkgc2VydmVyLgoKVGhlICdzdGFuZGJ5X3dyaXRlJyBhbmQgJ3N0YW5kYnlfZmx1c2gnIG1v ZGVzIGFyZSB1c2VmdWwgZm9yIHNjZW5hcmlvcyB3aGVyZQphcHBsaWNhdGlvbnMgbmVlZCB0byBl bnN1cmUgV0FMIGhhcyBiZWVuIHJlY2VpdmVkIG9yIHBlcnNpc3RlZCBvbiB0aGUgc3RhbmRieQp3 aXRob3V0IG5lY2Vzc2FyaWx5IHdhaXRpbmcgZm9yIHJlcGxheSB0byBjb21wbGV0ZS4gVGhlICdw cmltYXJ5X2ZsdXNoJyBtb2RlCmFsbG93cyB3YWl0aW5nIGZvciBXQUwgdG8gYmUgZmx1c2hlZCBv biB0aGUgcHJpbWFyeSBzZXJ2ZXIuCgpUaGlzIGNvbW1pdCBhbHNvIGluY2x1ZGVzIGluY2x1ZGVz OgotIERvY3VtZW50YXRpb24gdXBkYXRlcyBmb3IgdGhlIG5ldyBzeW50YXggYW5kIG1vZGUgZGVz Y3JpcHRpb25zLAotIFRlc3QgY292ZXJhZ2UgZm9yIGFsbCBmb3VyIG1vZGVzLCBpbmNsdWRpbmcg ZXJyb3IgY2FzZXMgYW5kIGNvbmN1cnJlbnQKICB3YWl0ZXJzLAotIFdha2V1cCBsb2dpYyBpbiB3 YWxyZWNlaXZlciBmb3Igc3RhbmRieSB3cml0ZS9mbHVzaCB3YWl0ZXJzLAotIFdha2V1cCBsb2dp YyBpbiBXQUwgd3JpdGVyIGZvciBwcmltYXJ5IGZsdXNoIHdhaXRlcnMuCgpEaXNjdXNzaW9uOiBo dHRwczovL3Bvc3Rnci5lcy9tL0NBQlBURjdVaUFyZ1ctc1hqOUNOd1J6VWhZT1FyZXZMemtZY2dC eWRtWDVvRGVzMXNqZyU0MG1haWwuZ21haWwuY29tCkF1dGhvcjogWHVuZW5nIFpob3UgPHh1bmVu Z3pob3VAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogQWxleGFuZGVyIEtvcm90a292IDxhZWtvcm90 a292QGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IENoYW8gTGkgPGxpLmV2YW4uY2hhb0BnbWFpbC5j b20+ClJldmlld2VkLWJ5OiBBbHZhcm8gSGVycmVyYSA8YWx2aGVycmVAa3VyaWxlbXUuZGU+Ci0t LQogZG9jL3NyYy9zZ21sL3JlZi93YWl0X2Zvci5zZ21sICAgICAgICAgIHwgMjEzICsrKysrKysr Ky0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jICAgICAgIHwgIDIyICstCiBz cmMvYmFja2VuZC9jb21tYW5kcy93YWl0LmMgICAgICAgICAgICAgfCAxNzQgKysrKysrKystLQog c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2FscmVjZWl2ZXIuYyAgIHwgIDE4ICsrCiBzcmMvdGVz dC9yZWNvdmVyeS90LzA0OV93YWl0X2Zvcl9sc24ucGwgfCA0MTEgKysrKysrKysrKysrKysrKysr KysrKy0tCiA1IGZpbGVzIGNoYW5nZWQsIDc0MSBpbnNlcnRpb25zKCspLCA5NyBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL3dhaXRfZm9yLnNnbWwgYi9kb2Mvc3Jj L3NnbWwvcmVmL3dhaXRfZm9yLnNnbWwKaW5kZXggM2I4ZTg0MmQxZGUuLmRmNzJiMzMyN2M4IDEw MDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL3dhaXRfZm9yLnNnbWwKKysrIGIvZG9jL3NyYy9z Z21sL3JlZi93YWl0X2Zvci5zZ21sCkBAIC0xNiwxNyArMTYsMjMgQEAgUG9zdGdyZVNRTCBkb2N1 bWVudGF0aW9uCiAKICA8cmVmbmFtZWRpdj4KICAgPHJlZm5hbWU+V0FJVCBGT1I8L3JlZm5hbWU+ Ci0gIDxyZWZwdXJwb3NlPndhaXQgZm9yIHRhcmdldCA8YWNyb255bT5MU048L2Fjcm9ueW0+IHRv IGJlIHJlcGxheWVkLCBvcHRpb25hbGx5IHdpdGggYSB0aW1lb3V0PC9yZWZwdXJwb3NlPgorICA8 cmVmcHVycG9zZT53YWl0IGZvciBXQUwgdG8gcmVhY2ggYSB0YXJnZXQgPGFjcm9ueW0+TFNOPC9h Y3JvbnltPjwvcmVmcHVycG9zZT4KICA8L3JlZm5hbWVkaXY+CiAKICA8cmVmc3lub3BzaXNkaXY+ CiA8c3lub3BzaXM+Ci1XQUlUIEZPUiBMU04gJzxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5sc248L3JlcGxhY2VhYmxlPicgWyBXSVRIICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPm9wdGlvbjwvcmVwbGFjZWFibGU+IFssIC4uLl0gKSBdCitXQUlUIEZPUiBMU04gJzxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5sc248L3JlcGxhY2VhYmxlPicKKyAgICBbIFdJVEgg KCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+b3B0aW9uPC9yZXBsYWNlYWJsZT4gWywg Li4uXSApIF0KIAogPHBocmFzZT53aGVyZSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ b3B0aW9uPC9yZXBsYWNlYWJsZT4gY2FuIGJlOjwvcGhyYXNlPgogCisgICAgTU9ERSAnPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm1vZGU8L3JlcGxhY2VhYmxlPicKICAgICBUSU1FT1VU ICc8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGltZW91dDwvcmVwbGFjZWFibGU+Jwog ICAgIE5PX1RIUk9XCisKKzxwaHJhc2U+YW5kIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5tb2RlPC9yZXBsYWNlYWJsZT4gY2FuIGJlOjwvcGhyYXNlPgorCisgICAgc3RhbmRieV9yZXBs YXkgfCBzdGFuZGJ5X3dyaXRlIHwgc3RhbmRieV9mbHVzaCB8IHByaW1hcnlfZmx1c2gKIDwvc3lu b3BzaXM+CiAgPC9yZWZzeW5vcHNpc2Rpdj4KIApAQCAtMzQsMjAgKzQwLDI3IEBAIFdBSVQgRk9S IExTTiAnPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmxzbjwvcmVwbGFjZWFibGU+JyBb IFdJVEggKCA8cmVwbGFjCiAgIDx0aXRsZT5EZXNjcmlwdGlvbjwvdGl0bGU+CiAKICAgPHBhcmE+ Ci0gICAgV2FpdHMgdW50aWwgcmVjb3ZlcnkgcmVwbGF5cyA8cGFyYW1ldGVyPmxzbjwvcGFyYW1l dGVyPi4KLSAgICBJZiBubyA8cGFyYW1ldGVyPnRpbWVvdXQ8L3BhcmFtZXRlcj4gaXMgc3BlY2lm aWVkIG9yIGl0IGlzIHNldCB0bwotICAgIHplcm8sIHRoaXMgY29tbWFuZCB3YWl0cyBpbmRlZmlu aXRlbHkgZm9yIHRoZQotICAgIDxwYXJhbWV0ZXI+bHNuPC9wYXJhbWV0ZXI+LgotICAgIE9uIHRp bWVvdXQsIG9yIGlmIHRoZSBzZXJ2ZXIgaXMgcHJvbW90ZWQgYmVmb3JlCi0gICAgPHBhcmFtZXRl cj5sc248L3BhcmFtZXRlcj4gaXMgcmVhY2hlZCwgYW4gZXJyb3IgaXMgZW1pdHRlZCwKLSAgICB1 bmxlc3MgPGxpdGVyYWw+Tk9fVEhST1c8L2xpdGVyYWw+IGlzIHNwZWNpZmllZCBpbiB0aGUgV0lU SCBjbGF1c2UuCi0gICAgSWYgPHBhcmFtZXRlcj5OT19USFJPVzwvcGFyYW1ldGVyPiBpcyBzcGVj aWZpZWQsIHRoZW4gdGhlIGNvbW1hbmQKLSAgICBkb2Vzbid0IHRocm93IGVycm9ycy4KKyAgIFdh aXRzIHVudGlsIHRoZSBzcGVjaWZpZWQgPHBhcmFtZXRlcj5sc248L3BhcmFtZXRlcj4gaXMgcmVh Y2hlZAorICAgYWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpZWQgPHBhcmFtZXRlcj5tb2RlPC9wYXJh bWV0ZXI+LAorICAgd2hpY2ggZGV0ZXJtaW5lcyB3aGV0aGVyIHRvIHdhaXQgZm9yIFdBTCB0byBi ZSB3cml0dGVuLCBmbHVzaGVkLCBvciByZXBsYXllZC4KKyAgIElmIG5vIDxwYXJhbWV0ZXI+dGlt ZW91dDwvcGFyYW1ldGVyPiBpcyBzcGVjaWZpZWQgb3IgaXQgaXMgc2V0IHRvCisgICB6ZXJvLCB0 aGlzIGNvbW1hbmQgd2FpdHMgaW5kZWZpbml0ZWx5IGZvciB0aGUKKyAgIDxwYXJhbWV0ZXI+bHNu PC9wYXJhbWV0ZXI+LgorICA8L3BhcmE+CisKKyAgPHBhcmE+CisgICBPbiB0aW1lb3V0LCBhbiBl cnJvciBpcyBlbWl0dGVkIHVubGVzcyA8bGl0ZXJhbD5OT19USFJPVzwvbGl0ZXJhbD4KKyAgIGlz IHNwZWNpZmllZCBpbiB0aGUgV0lUSCBjbGF1c2UuIEZvciBzdGFuZGJ5IG1vZGVzCisgICAoPGxp dGVyYWw+c3RhbmRieV9yZXBsYXk8L2xpdGVyYWw+LCA8bGl0ZXJhbD5zdGFuZGJ5X3dyaXRlPC9s aXRlcmFsPiwKKyAgIDxsaXRlcmFsPnN0YW5kYnlfZmx1c2g8L2xpdGVyYWw+KSwgYW4gZXJyb3Ig aXMgYWxzbyBlbWl0dGVkIGlmIHRoZQorICAgc2VydmVyIGlzIHByb21vdGVkIGJlZm9yZSB0aGUg PHBhcmFtZXRlcj5sc248L3BhcmFtZXRlcj4gaXMgcmVhY2hlZC4KKyAgIElmIDxwYXJhbWV0ZXI+ Tk9fVEhST1c8L3BhcmFtZXRlcj4gaXMgc3BlY2lmaWVkLCB0aGUgY29tbWFuZCByZXR1cm5zCisg ICBhIHN0YXR1cyBzdHJpbmcgaW5zdGVhZCBvZiB0aHJvd2luZyBlcnJvcnMuCiAgIDwvcGFyYT4K IAogICA8cGFyYT4KLSAgICBUaGUgcG9zc2libGUgcmV0dXJuIHZhbHVlcyBhcmUgPGxpdGVyYWw+ c3VjY2VzczwvbGl0ZXJhbD4sCi0gICAgPGxpdGVyYWw+dGltZW91dDwvbGl0ZXJhbD4sIGFuZCA8 bGl0ZXJhbD5ub3QgaW4gcmVjb3Zlcnk8L2xpdGVyYWw+LgorICAgVGhlIHBvc3NpYmxlIHJldHVy biB2YWx1ZXMgYXJlIDxsaXRlcmFsPnN1Y2Nlc3M8L2xpdGVyYWw+LAorICAgPGxpdGVyYWw+dGlt ZW91dDwvbGl0ZXJhbD4sIGFuZCA8bGl0ZXJhbD5ub3QgaW4gcmVjb3Zlcnk8L2xpdGVyYWw+Lgog ICA8L3BhcmE+CiAgPC9yZWZzZWN0MT4KIApAQCAtNzIsNiArODUsNjUgQEAgV0FJVCBGT1IgTFNO ICc8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bHNuPC9yZXBsYWNlYWJsZT4nIFsgV0lU SCAoIDxyZXBsYWMKICAgICAgIFRoZSBmb2xsb3dpbmcgcGFyYW1ldGVycyBhcmUgc3VwcG9ydGVk OgogCiAgICAgICA8dmFyaWFibGVsaXN0PgorICAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAg IDx0ZXJtPjxsaXRlcmFsPk1PREU8L2xpdGVyYWw+ICc8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+bW9kZTwvcmVwbGFjZWFibGU+JzwvdGVybT4KKyAgICAgICAgPGxpc3RpdGVtPgorICAg ICAgICAgPHBhcmE+CisgICAgICAgICAgU3BlY2lmaWVzIHRoZSB0eXBlIG9mIExTTiBwcm9jZXNz aW5nIHRvIHdhaXQgZm9yLiBJZiBub3Qgc3BlY2lmaWVkLAorICAgICAgICAgIHRoZSBkZWZhdWx0 IGlzIDxsaXRlcmFsPnN0YW5kYnlfcmVwbGF5PC9saXRlcmFsPi4gVGhlIHZhbGlkIG1vZGVzIGFy ZToKKyAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAg PGxpc3RpdGVtPgorICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIDxsaXRlcmFsPnN0YW5k YnlfcmVwbGF5PC9saXRlcmFsPjogV2FpdCBmb3IgdGhlIExTTiB0byBiZSByZXBsYXllZAorICAg ICAgICAgICAgKGFwcGxpZWQgdG8gdGhlIGRhdGFiYXNlKSBvbiBhIHN0YW5kYnkgc2VydmVyLiBB ZnRlciBzdWNjZXNzZnVsCisgICAgICAgICAgICBjb21wbGV0aW9uLCA8ZnVuY3Rpb24+cGdfbGFz dF93YWxfcmVwbGF5X2xzbigpPC9mdW5jdGlvbj4gd2lsbAorICAgICAgICAgICAgcmV0dXJuIGEg dmFsdWUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSB0YXJnZXQgTFNOLiBUaGlzIG1vZGUK KyAgICAgICAgICAgIGNhbiBvbmx5IGJlIHVzZWQgZHVyaW5nIHJlY292ZXJ5LgorICAgICAgICAg ICA8L3BhcmE+CisgICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgICA8bGlzdGl0ZW0+Cisg ICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgPGxpdGVyYWw+c3RhbmRieV93cml0ZTwvbGl0 ZXJhbD46IFdhaXQgZm9yIHRoZSBXQUwgY29udGFpbmluZyB0aGUKKyAgICAgICAgICAgIExTTiB0 byBiZSByZWNlaXZlZCBmcm9tIHRoZSBwcmltYXJ5IGFuZCB3cml0dGVuIHRvIGRpc2sgb24gYQor ICAgICAgICAgICAgc3RhbmRieSBzZXJ2ZXIsIGJ1dCBub3QgeWV0IGZsdXNoZWQuIFRoaXMgaXMg ZmFzdGVyIHRoYW4KKyAgICAgICAgICAgIDxsaXRlcmFsPnN0YW5kYnlfZmx1c2g8L2xpdGVyYWw+ IGJ1dCBwcm92aWRlcyB3ZWFrZXIgZHVyYWJpbGl0eQorICAgICAgICAgICAgZ3VhcmFudGVlcyBz aW5jZSB0aGUgZGF0YSBtYXkgc3RpbGwgYmUgaW4gb3BlcmF0aW5nIHN5c3RlbQorICAgICAgICAg ICAgYnVmZmVycy4gQWZ0ZXIgc3VjY2Vzc2Z1bCBjb21wbGV0aW9uLCB0aGUKKyAgICAgICAgICAg IDxzdHJ1Y3RmaWVsZD53cml0dGVuX2xzbjwvc3RydWN0ZmllbGQ+IGNvbHVtbiBpbgorICAgICAg ICAgICAgPGxpbmsgbGlua2VuZD0ibW9uaXRvcmluZy1wZy1zdGF0LXdhbC1yZWNlaXZlci12aWV3 Ij4KKyAgICAgICAgICAgIDxzdHJ1Y3RuYW1lPnBnX3N0YXRfd2FsX3JlY2VpdmVyPC9zdHJ1Y3Ru YW1lPjwvbGluaz4gd2lsbCBzaG93CisgICAgICAgICAgICBhIHZhbHVlIGdyZWF0ZXIgdGhhbiBv ciBlcXVhbCB0byB0aGUgdGFyZ2V0IExTTi4gVGhpcyBtb2RlIGNhbgorICAgICAgICAgICAgb25s eSBiZSB1c2VkIGR1cmluZyByZWNvdmVyeS4KKyAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAg IDwvbGlzdGl0ZW0+CisgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICA8cGFyYT4KKyAg ICAgICAgICAgIDxsaXRlcmFsPnN0YW5kYnlfZmx1c2g8L2xpdGVyYWw+OiBXYWl0IGZvciB0aGUg V0FMIGNvbnRhaW5pbmcgdGhlCisgICAgICAgICAgICBMU04gdG8gYmUgcmVjZWl2ZWQgZnJvbSB0 aGUgcHJpbWFyeSBhbmQgZmx1c2hlZCB0byBkaXNrIG9uIGEKKyAgICAgICAgICAgIHN0YW5kYnkg c2VydmVyLiBUaGlzIHByb3ZpZGVzIGEgZHVyYWJpbGl0eSBndWFyYW50ZWUgd2l0aG91dAorICAg ICAgICAgICAgd2FpdGluZyBmb3IgdGhlIFdBTCB0byBiZSBhcHBsaWVkLiBBZnRlciBzdWNjZXNz ZnVsIGNvbXBsZXRpb24sCisgICAgICAgICAgICA8ZnVuY3Rpb24+cGdfbGFzdF93YWxfcmVjZWl2 ZV9sc24oKTwvZnVuY3Rpb24+IHdpbGwgcmV0dXJuIGEKKyAgICAgICAgICAgIHZhbHVlIGdyZWF0 ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgdGFyZ2V0IExTTi4gVGhpcyB2YWx1ZSBpcworICAgICAg ICAgICAgYWxzbyBhdmFpbGFibGUgYXMgdGhlIDxzdHJ1Y3RmaWVsZD5mbHVzaGVkX2xzbjwvc3Ry dWN0ZmllbGQ+CisgICAgICAgICAgICBjb2x1bW4gaW4gPGxpbmsgbGlua2VuZD0ibW9uaXRvcmlu Zy1wZy1zdGF0LXdhbC1yZWNlaXZlci12aWV3Ij4KKyAgICAgICAgICAgIDxzdHJ1Y3RuYW1lPnBn X3N0YXRfd2FsX3JlY2VpdmVyPC9zdHJ1Y3RuYW1lPjwvbGluaz4uIFRoaXMgbW9kZQorICAgICAg ICAgICAgY2FuIG9ubHkgYmUgdXNlZCBkdXJpbmcgcmVjb3ZlcnkuCisgICAgICAgICAgIDwvcGFy YT4KKyAgICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAg ICAgPHBhcmE+CisgICAgICAgICAgICA8bGl0ZXJhbD5wcmltYXJ5X2ZsdXNoPC9saXRlcmFsPjog V2FpdCBmb3IgdGhlIFdBTCBjb250YWluaW5nIHRoZQorICAgICAgICAgICAgTFNOIHRvIGJlIGZs dXNoZWQgdG8gZGlzayBvbiBhIHByaW1hcnkgc2VydmVyLiBBZnRlciBzdWNjZXNzZnVsCisgICAg ICAgICAgICBjb21wbGV0aW9uLCA8ZnVuY3Rpb24+cGdfY3VycmVudF93YWxfZmx1c2hfbHNuKCk8 L2Z1bmN0aW9uPiB3aWxsCisgICAgICAgICAgICByZXR1cm4gYSB2YWx1ZSBncmVhdGVyIHRoYW4g b3IgZXF1YWwgdG8gdGhlIHRhcmdldCBMU04uIFRoaXMgbW9kZQorICAgICAgICAgICAgY2FuIG9u bHkgYmUgdXNlZCBvbiBhIHByaW1hcnkgc2VydmVyIChub3QgZHVyaW5nIHJlY292ZXJ5KS4KKyAg ICAgICAgICAgPC9wYXJhPgorICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgICA8L2l0ZW1p emVkbGlzdD4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICA8L3Zhcmxpc3RlbnRyeT4KKwog ICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgIDx0ZXJtPjxsaXRlcmFsPlRJTUVPVVQ8L2xp dGVyYWw+ICc8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGltZW91dDwvcmVwbGFjZWFi bGU+JzwvdGVybT4KICAgICAgICAgPGxpc3RpdGVtPgpAQCAtMTM1LDkgKzIwNywxMiBAQCBXQUlU IEZPUiBMU04gJzxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5sc248L3JlcGxhY2VhYmxl PicgWyBXSVRIICggPHJlcGxhYwogICAgIDxsaXN0aXRlbT4KICAgICAgPHBhcmE+CiAgICAgICBU aGlzIHJldHVybiB2YWx1ZSBkZW5vdGVzIHRoYXQgdGhlIGRhdGFiYXNlIHNlcnZlciBpcyBub3Qg aW4gYSByZWNvdmVyeQotICAgICAgc3RhdGUuICBUaGlzIG1pZ2h0IG1lYW4gZWl0aGVyIHRoZSBk YXRhYmFzZSBzZXJ2ZXIgd2FzIG5vdCBpbiByZWNvdmVyeQotICAgICAgYXQgdGhlIG1vbWVudCBv ZiByZWNlaXZpbmcgdGhlIGNvbW1hbmQsIG9yIGl0IHdhcyBwcm9tb3RlZCBiZWZvcmUKLSAgICAg IHJlYWNoaW5nIHRoZSB0YXJnZXQgPHBhcmFtZXRlcj5sc248L3BhcmFtZXRlcj4uCisgICAgICBz dGF0ZS4gVGhpcyBtaWdodCBtZWFuIGVpdGhlciB0aGUgZGF0YWJhc2Ugc2VydmVyIHdhcyBub3Qg aW4gcmVjb3ZlcnkKKyAgICAgIGF0IHRoZSBtb21lbnQgb2YgcmVjZWl2aW5nIHRoZSBjb21tYW5k IChpLmUuLCBleGVjdXRlZCBvbiBhIHByaW1hcnkpLAorICAgICAgb3IgaXQgd2FzIHByb21vdGVk IGJlZm9yZSByZWFjaGluZyB0aGUgdGFyZ2V0IDxwYXJhbWV0ZXI+bHNuPC9wYXJhbWV0ZXI+Lgor ICAgICAgSW4gdGhlIHByb21vdGlvbiBjYXNlLCB0aGlzIHN0YXR1cyBpbmRpY2F0ZXMgYSB0aW1l bGluZSBjaGFuZ2Ugb2NjdXJyZWQsCisgICAgICBhbmQgdGhlIGFwcGxpY2F0aW9uIHNob3VsZCBy ZS1ldmFsdWF0ZSB3aGV0aGVyIHRoZSB0YXJnZXQgTFNOIGlzIHN0aWxsCisgICAgICByZWxldmFu dC4KICAgICAgPC9wYXJhPgogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KQEAg LTE0OCwyNSArMjIzLDM0IEBAIFdBSVQgRk9SIExTTiAnPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPmxzbjwvcmVwbGFjZWFibGU+JyBbIFdJVEggKCA8cmVwbGFjCiAgIDx0aXRsZT5Ob3Rl czwvdGl0bGU+CiAKICAgPHBhcmE+Ci0gICAgPGNvbW1hbmQ+V0FJVCBGT1I8L2NvbW1hbmQ+IGNv bW1hbmQgd2FpdHMgdGlsbAotICAgIDxwYXJhbWV0ZXI+bHNuPC9wYXJhbWV0ZXI+IHRvIGJlIHJl cGxheWVkIG9uIHN0YW5kYnkuCi0gICAgVGhhdCBpcywgYWZ0ZXIgdGhpcyBjb21tYW5kIGV4ZWN1 dGlvbiwgdGhlIHZhbHVlIHJldHVybmVkIGJ5Ci0gICAgPGZ1bmN0aW9uPnBnX2xhc3Rfd2FsX3Jl cGxheV9sc248L2Z1bmN0aW9uPiBzaG91bGQgYmUgZ3JlYXRlciBvciBlcXVhbAotICAgIHRvIHRo ZSA8cGFyYW1ldGVyPmxzbjwvcGFyYW1ldGVyPiB2YWx1ZS4gIFRoaXMgaXMgdXNlZnVsIHRvIGFj aGlldmUKLSAgICByZWFkLXlvdXItd3JpdGVzLWNvbnNpc3RlbmN5LCB3aGlsZSB1c2luZyBhc3lu YyByZXBsaWNhIGZvciByZWFkcyBhbmQKLSAgICBwcmltYXJ5IGZvciB3cml0ZXMuICBJbiB0aGF0 IGNhc2UsIHRoZSA8YWNyb255bT5sc248L2Fjcm9ueW0+IG9mIHRoZSBsYXN0Ci0gICAgbW9kaWZp Y2F0aW9uIHNob3VsZCBiZSBzdG9yZWQgb24gdGhlIGNsaWVudCBhcHBsaWNhdGlvbiBzaWRlIG9y IHRoZQotICAgIGNvbm5lY3Rpb24gcG9vbGVyIHNpZGUuCisgICA8Y29tbWFuZD5XQUlUIEZPUjwv Y29tbWFuZD4gd2FpdHMgdW50aWwgdGhlIHNwZWNpZmllZAorICAgPHBhcmFtZXRlcj5sc248L3Bh cmFtZXRlcj4gaXMgcmVhY2hlZCBhY2NvcmRpbmcgdG8gdGhlIHNwZWNpZmllZAorICAgPHBhcmFt ZXRlcj5tb2RlPC9wYXJhbWV0ZXI+LiBUaGUgPGxpdGVyYWw+c3RhbmRieV9yZXBsYXk8L2xpdGVy YWw+IG1vZGUKKyAgIHdhaXRzIGZvciB0aGUgTFNOIHRvIGJlIHJlcGxheWVkIChhcHBsaWVkIHRv IHRoZSBkYXRhYmFzZSksIHdoaWNoIGlzCisgICB1c2VmdWwgdG8gYWNoaWV2ZSByZWFkLXlvdXIt d3JpdGVzIGNvbnNpc3RlbmN5IHdoaWxlIHVzaW5nIGFuIGFzeW5jCisgICByZXBsaWNhIGZvciBy ZWFkcyBhbmQgdGhlIHByaW1hcnkgZm9yIHdyaXRlcy4gVGhlCisgICA8bGl0ZXJhbD5zdGFuZGJ5 X2ZsdXNoPC9saXRlcmFsPiBtb2RlIHdhaXRzIGZvciB0aGUgV0FMIHRvIGJlIGZsdXNoZWQKKyAg IHRvIGR1cmFibGUgc3RvcmFnZSBvbiB0aGUgcmVwbGljYSwgcHJvdmlkaW5nIGEgZHVyYWJpbGl0 eSBndWFyYW50ZWUKKyAgIHdpdGhvdXQgd2FpdGluZyBmb3IgcmVwbGF5LiBUaGUgPGxpdGVyYWw+ c3RhbmRieV93cml0ZTwvbGl0ZXJhbD4gbW9kZQorICAgd2FpdHMgZm9yIHRoZSBXQUwgdG8gYmUg d3JpdHRlbiB0byB0aGUgb3BlcmF0aW5nIHN5c3RlbSwgd2hpY2ggaXMKKyAgIGZhc3RlciB0aGFu IGZsdXNoIGJ1dCBwcm92aWRlcyB3ZWFrZXIgZHVyYWJpbGl0eSBndWFyYW50ZWVzLiBUaGUKKyAg IDxsaXRlcmFsPnByaW1hcnlfZmx1c2g8L2xpdGVyYWw+IG1vZGUgd2FpdHMgZm9yIFdBTCB0byBi ZSBmbHVzaGVkIG9uCisgICBhIHByaW1hcnkgc2VydmVyLiBJbiBhbGwgY2FzZXMsIHRoZSA8YWNy b255bT5MU048L2Fjcm9ueW0+IG9mIHRoZSBsYXN0CisgICBtb2RpZmljYXRpb24gc2hvdWxkIGJl IHN0b3JlZCBvbiB0aGUgY2xpZW50IGFwcGxpY2F0aW9uIHNpZGUgb3IgdGhlCisgICBjb25uZWN0 aW9uIHBvb2xlciBzaWRlLgogICA8L3BhcmE+CiAKICAgPHBhcmE+Ci0gICAgPGNvbW1hbmQ+V0FJ VCBGT1I8L2NvbW1hbmQ+IGNvbW1hbmQgc2hvdWxkIGJlIGNhbGxlZCBvbiBzdGFuZGJ5LgotICAg IElmIGEgdXNlciBydW5zIDxjb21tYW5kPldBSVQgRk9SPC9jb21tYW5kPiBvbiBwcmltYXJ5LCBp dAotICAgIHdpbGwgZXJyb3Igb3V0IHVubGVzcyA8cGFyYW1ldGVyPk5PX1RIUk9XPC9wYXJhbWV0 ZXI+IGlzIHNwZWNpZmllZCBpbiB0aGUgV0lUSCBjbGF1c2UuCi0gICAgSG93ZXZlciwgaWYgPGNv bW1hbmQ+V0FJVCBGT1I8L2NvbW1hbmQ+IGlzCi0gICAgY2FsbGVkIG9uIHByaW1hcnkgcHJvbW90 ZWQgZnJvbSBzdGFuZGJ5IGFuZCA8bGl0ZXJhbD5sc248L2xpdGVyYWw+Ci0gICAgd2FzIGFscmVh ZHkgcmVwbGF5ZWQsIHRoZW4gdGhlIDxjb21tYW5kPldBSVQgRk9SPC9jb21tYW5kPiBjb21tYW5k IGp1c3QKLSAgICBleGl0cyBpbW1lZGlhdGVseS4KKyAgIFRoZSBzdGFuZGJ5IG1vZGVzICg8bGl0 ZXJhbD5zdGFuZGJ5X3JlcGxheTwvbGl0ZXJhbD4sCisgICA8bGl0ZXJhbD5zdGFuZGJ5X3dyaXRl PC9saXRlcmFsPiwgPGxpdGVyYWw+c3RhbmRieV9mbHVzaDwvbGl0ZXJhbD4pCisgICBjYW4gb25s eSBiZSB1c2VkIGR1cmluZyByZWNvdmVyeSwgYW5kIDxsaXRlcmFsPnByaW1hcnlfZmx1c2g8L2xp dGVyYWw+CisgICBjYW4gb25seSBiZSB1c2VkIG9uIGEgcHJpbWFyeSBzZXJ2ZXIuIFVzaW5nIHRo ZSB3cm9uZyBtb2RlIGZvciB0aGUKKyAgIGN1cnJlbnQgc2VydmVyIHN0YXRlIHdpbGwgcmVzdWx0 IGluIGFuIGVycm9yLiBJZiBhIHN0YW5kYnkgaXMgcHJvbW90ZWQKKyAgIHdoaWxlIHdhaXRpbmcg d2l0aCBhIHN0YW5kYnkgbW9kZSwgdGhlIGNvbW1hbmQgd2lsbCByZXR1cm4KKyAgIDxsaXRlcmFs Pm5vdCBpbiByZWNvdmVyeTwvbGl0ZXJhbD4gKG9yIHRocm93IGFuIGVycm9yIGlmCisgICA8bGl0 ZXJhbD5OT19USFJPVzwvbGl0ZXJhbD4gaXMgbm90IHNwZWNpZmllZCkuIFByb21vdGlvbiBjcmVh dGVzIGEgbmV3CisgICB0aW1lbGluZSwgYW5kIHRoZSBMU04gYmVpbmcgd2FpdGVkIGZvciBtYXkg cmVmZXIgdG8gV0FMIGZyb20gdGhlIG9sZAorICAgdGltZWxpbmUuCiAgIDwvcGFyYT4KIAogPC9y ZWZzZWN0MT4KQEAgLTE3NSwyMSArMjU5LDIxIEBAIFdBSVQgRk9SIExTTiAnPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPmxzbjwvcmVwbGFjZWFibGU+JyBbIFdJVEggKCA8cmVwbGFjCiAg IDx0aXRsZT5FeGFtcGxlczwvdGl0bGU+CiAKICAgPHBhcmE+Ci0gICAgWW91IGNhbiB1c2UgPGNv bW1hbmQ+V0FJVCBGT1I8L2NvbW1hbmQ+IGNvbW1hbmQgdG8gd2FpdCBmb3IKLSAgICB0aGUgPHR5 cGU+cGdfbHNuPC90eXBlPiB2YWx1ZS4gIEZvciBleGFtcGxlLCBhbiBhcHBsaWNhdGlvbiBjb3Vs ZCB1cGRhdGUKLSAgICB0aGUgPGxpdGVyYWw+bW92aWU8L2xpdGVyYWw+IHRhYmxlIGFuZCBnZXQg dGhlIDxhY3JvbnltPmxzbjwvYWNyb255bT4gYWZ0ZXIKLSAgICBjaGFuZ2VzIGp1c3QgbWFkZS4g IFRoaXMgZXhhbXBsZSB1c2VzIDxmdW5jdGlvbj5wZ19jdXJyZW50X3dhbF9pbnNlcnRfbHNuPC9m dW5jdGlvbj4KLSAgICBvbiBwcmltYXJ5IHNlcnZlciB0byBnZXQgdGhlIDxhY3JvbnltPmxzbjwv YWNyb255bT4gZ2l2ZW4gdGhhdAotICAgIDx2YXJuYW1lPnN5bmNocm9ub3VzX2NvbW1pdDwvdmFy bmFtZT4gY291bGQgYmUgc2V0IHRvCi0gICAgPGxpdGVyYWw+b2ZmPC9saXRlcmFsPi4KKyAgIFlv dSBjYW4gdXNlIDxjb21tYW5kPldBSVQgRk9SPC9jb21tYW5kPiBjb21tYW5kIHRvIHdhaXQgZm9y CisgICB0aGUgPHR5cGU+cGdfbHNuPC90eXBlPiB2YWx1ZS4gIEZvciBleGFtcGxlLCBhbiBhcHBs aWNhdGlvbiBjb3VsZCB1cGRhdGUKKyAgIHRoZSA8bGl0ZXJhbD5tb3ZpZTwvbGl0ZXJhbD4gdGFi bGUgYW5kIGdldCB0aGUgPGFjcm9ueW0+bHNuPC9hY3JvbnltPiBhZnRlcgorICAgY2hhbmdlcyBq dXN0IG1hZGUuICBUaGlzIGV4YW1wbGUgdXNlcyA8ZnVuY3Rpb24+cGdfY3VycmVudF93YWxfaW5z ZXJ0X2xzbjwvZnVuY3Rpb24+CisgICBvbiBwcmltYXJ5IHNlcnZlciB0byBnZXQgdGhlIDxhY3Jv bnltPmxzbjwvYWNyb255bT4gZ2l2ZW4gdGhhdAorICAgPHZhcm5hbWU+c3luY2hyb25vdXNfY29t bWl0PC92YXJuYW1lPiBjb3VsZCBiZSBzZXQgdG8KKyAgIDxsaXRlcmFsPm9mZjwvbGl0ZXJhbD4u CiAKICAgIDxwcm9ncmFtbGlzdGluZz4KIHBvc3RncmVzPSMgVVBEQVRFIG1vdmllIFNFVCBnZW5y ZSA9ICdEcmFtYXRpYycgV0hFUkUgZ2VucmUgPSAnRHJhbWEnOwogVVBEQVRFIDEwMAogcG9zdGdy ZXM9IyBTRUxFQ1QgcGdfY3VycmVudF93YWxfaW5zZXJ0X2xzbigpOwotcGdfY3VycmVudF93YWxf aW5zZXJ0X2xzbgotLS0tLS0tLS0tLS0tLS0tLS0tLS0KLTAvMzA2RUUyMAorIHBnX2N1cnJlbnRf d2FsX2luc2VydF9sc24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIDAvMzA2RUUyMAog KDEgcm93KQogPC9wcm9ncmFtbGlzdGluZz4KIApAQCAtMjAwLDcgKzI4NCw3IEBAIHBnX2N1cnJl bnRfd2FsX2luc2VydF9sc24KIDxwcm9ncmFtbGlzdGluZz4KIHBvc3RncmVzPSMgV0FJVCBGT1Ig TFNOICcwLzMwNkVFMjAnOwogIHN0YXR1cwotLS0tLS0tLS0KKy0tLS0tLS0tLQogIHN1Y2Nlc3MK ICgxIHJvdykKIHBvc3RncmVzPSMgU0VMRUNUICogRlJPTSBtb3ZpZSBXSEVSRSBnZW5yZSA9ICdE cmFtYSc7CkBAIC0yMTEsNyArMjk1LDQzIEBAIHBvc3RncmVzPSMgU0VMRUNUICogRlJPTSBtb3Zp ZSBXSEVSRSBnZW5yZSA9ICdEcmFtYSc7CiAgIDwvcGFyYT4KIAogICA8cGFyYT4KLSAgICBJZiB0 aGUgdGFyZ2V0IExTTiBpcyBub3QgcmVhY2hlZCBiZWZvcmUgdGhlIHRpbWVvdXQsIHRoZSBlcnJv ciBpcyB0aHJvd24uCisgICBXYWl0IGZvciBmbHVzaCAoZGF0YSBkdXJhYmxlIG9uIHJlcGxpY2Ep OgorCis8cHJvZ3JhbWxpc3Rpbmc+Citwb3N0Z3Jlcz0jIFdBSVQgRk9SIExTTiAnMC8zMDZFRTIw JyBXSVRIIChNT0RFICdzdGFuZGJ5X2ZsdXNoJyk7Cisgc3RhdHVzCistLS0tLS0tLS0KKyBzdWNj ZXNzCisoMSByb3cpCis8L3Byb2dyYW1saXN0aW5nPgorICA8L3BhcmE+CisKKyAgPHBhcmE+Cisg ICBXYWl0IGZvciB3cml0ZSB3aXRoIHRpbWVvdXQ6CisKKzxwcm9ncmFtbGlzdGluZz4KK3Bvc3Rn cmVzPSMgV0FJVCBGT1IgTFNOICcwLzMwNkVFMjAnIFdJVEggKE1PREUgJ3N0YW5kYnlfd3JpdGUn LCBUSU1FT1VUICcxMDBtcycsIE5PX1RIUk9XKTsKKyBzdGF0dXMKKy0tLS0tLS0tLQorIHN1Y2Nl c3MKKygxIHJvdykKKzwvcHJvZ3JhbWxpc3Rpbmc+CisgIDwvcGFyYT4KKworICA8cGFyYT4KKyAg IFdhaXQgZm9yIGZsdXNoIG9uIHByaW1hcnk6CisKKzxwcm9ncmFtbGlzdGluZz4KK3Bvc3RncmVz PSMgV0FJVCBGT1IgTFNOICcwLzMwNkVFMjAnIFdJVEggKE1PREUgJ3ByaW1hcnlfZmx1c2gnKTsK KyBzdGF0dXMKKy0tLS0tLS0tLQorIHN1Y2Nlc3MKKygxIHJvdykKKzwvcHJvZ3JhbWxpc3Rpbmc+ CisgIDwvcGFyYT4KKworICA8cGFyYT4KKyAgIElmIHRoZSB0YXJnZXQgTFNOIGlzIG5vdCByZWFj aGVkIGJlZm9yZSB0aGUgdGltZW91dCwgYW4gZXJyb3IgaXMgdGhyb3duOgogCiA8cHJvZ3JhbWxp c3Rpbmc+CiBwb3N0Z3Jlcz0jIFdBSVQgRk9SIExTTiAnMC8zMDZFRTIwJyBXSVRIIChUSU1FT1VU ICcwLjFzJyk7CkBAIC0yMjEsMTEgKzM0MSwxMiBAQCBFUlJPUjogIHRpbWVkIG91dCB3aGlsZSB3 YWl0aW5nIGZvciB0YXJnZXQgTFNOIDAvMzA2RUUyMCB0byBiZSByZXBsYXllZDsgY3VycmVudAog CiAgIDxwYXJhPgogICAgVGhlIHNhbWUgZXhhbXBsZSB1c2VzIDxjb21tYW5kPldBSVQgRk9SPC9j b21tYW5kPiB3aXRoCi0gICA8cGFyYW1ldGVyPk5PX1RIUk9XPC9wYXJhbWV0ZXI+IG9wdGlvbi4K KyAgIDxwYXJhbWV0ZXI+Tk9fVEhST1c8L3BhcmFtZXRlcj4gb3B0aW9uOgorCiA8cHJvZ3JhbWxp c3Rpbmc+CiBwb3N0Z3Jlcz0jIFdBSVQgRk9SIExTTiAnMC8zMDZFRTIwJyBXSVRIIChUSU1FT1VU ICcxMDBtcycsIE5PX1RIUk9XKTsKICBzdGF0dXMKLS0tLS0tLS0tCistLS0tLS0tLS0KICB0aW1l b3V0CiAoMSByb3cpCiA8L3Byb2dyYW1saXN0aW5nPgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv YWNjZXNzL3RyYW5zYW0veGxvZy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5j CmluZGV4IDA1YWM3YzVmN2Y4Li44MWRjODY4NDdjMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv YWNjZXNzL3RyYW5zYW0veGxvZy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hs b2cuYwpAQCAtMjkxOCw2ICsyOTE4LDE0IEBAIFhMb2dGbHVzaChYTG9nUmVjUHRyIHJlY29yZCkK IAkvKiB3YWtlIHVwIHdhbHNlbmRlcnMgbm93IHRoYXQgd2UndmUgcmVsZWFzZWQgaGVhdmlseSBj b250ZW5kZWQgbG9ja3MgKi8KIAlXYWxTbmRXYWtldXBQcm9jZXNzUmVxdWVzdHModHJ1ZSwgIVJl Y292ZXJ5SW5Qcm9ncmVzcygpKTsKIAorCS8qCisJICogSWYgd2UgZmx1c2hlZCBhbiBMU04gdGhh dCBzb21lb25lIHdhcyB3YWl0aW5nIGZvciwgbm90aWZ5IHRoZSB3YWl0ZXJzLgorCSAqLworCWlm ICh3YWl0TFNOU3RhdGUgJiYKKwkJKExvZ3dydFJlc3VsdC5GbHVzaCA+PQorCQkgcGdfYXRvbWlj X3JlYWRfdTY0KCZ3YWl0TFNOU3RhdGUtPm1pbldhaXRlZExTTltXQUlUX0xTTl9UWVBFX1BSSU1B UllfRkxVU0hdKSkpCisJCVdhaXRMU05XYWtldXAoV0FJVF9MU05fVFlQRV9QUklNQVJZX0ZMVVNI LCBMb2d3cnRSZXN1bHQuRmx1c2gpOworCiAJLyoKIAkgKiBJZiB3ZSBzdGlsbCBoYXZlbid0IGZs dXNoZWQgdG8gdGhlIHJlcXVlc3QgcG9pbnQgdGhlbiB3ZSBoYXZlIGEKIAkgKiBwcm9ibGVtOyBt b3N0IGxpa2VseSwgdGhlIHJlcXVlc3RlZCBmbHVzaCBwb2ludCBpcyBwYXN0IGVuZCBvZiBYTE9H LgpAQCAtMzEwMCw2ICszMTA4LDE0IEBAIFhMb2dCYWNrZ3JvdW5kRmx1c2godm9pZCkKIAkvKiB3 YWtlIHVwIHdhbHNlbmRlcnMgbm93IHRoYXQgd2UndmUgcmVsZWFzZWQgaGVhdmlseSBjb250ZW5k ZWQgbG9ja3MgKi8KIAlXYWxTbmRXYWtldXBQcm9jZXNzUmVxdWVzdHModHJ1ZSwgIVJlY292ZXJ5 SW5Qcm9ncmVzcygpKTsKIAorCS8qCisJICogSWYgd2UgZmx1c2hlZCBhbiBMU04gdGhhdCBzb21l b25lIHdhcyB3YWl0aW5nIGZvciwgbm90aWZ5IHRoZSB3YWl0ZXJzLgorCSAqLworCWlmICh3YWl0 TFNOU3RhdGUgJiYKKwkJKExvZ3dydFJlc3VsdC5GbHVzaCA+PQorCQkgcGdfYXRvbWljX3JlYWRf dTY0KCZ3YWl0TFNOU3RhdGUtPm1pbldhaXRlZExTTltXQUlUX0xTTl9UWVBFX1BSSU1BUllfRkxV U0hdKSkpCisJCVdhaXRMU05XYWtldXAoV0FJVF9MU05fVFlQRV9QUklNQVJZX0ZMVVNILCBMb2d3 cnRSZXN1bHQuRmx1c2gpOworCiAJLyoKIAkgKiBHcmVhdCwgZG9uZS4gVG8gdGFrZSBzb21lIHdv cmsgb2ZmIHRoZSBjcml0aWNhbCBwYXRoLCB0cnkgdG8gaW5pdGlhbGl6ZQogCSAqIGFzIG1hbnkg b2YgdGhlIG5vLWxvbmdlci1uZWVkZWQgV0FMIGJ1ZmZlcnMgZm9yIGZ1dHVyZSB1c2UgYXMgd2Ug Y2FuLgpAQCAtNjI3NywxMCArNjI5MywxMiBAQCBTdGFydHVwWExPRyh2b2lkKQogCVdha2V1cENo ZWNrcG9pbnRlcigpOwogCiAJLyoKLQkgKiBXYWtlIHVwIGFsbCB3YWl0ZXJzIGZvciByZXBsYXkg TFNOLiAgVGhleSBuZWVkIHRvIHJlcG9ydCBhbiBlcnJvciB0aGF0Ci0JICogcmVjb3Zlcnkgd2Fz IGVuZGVkIGJlZm9yZSByZWFjaGluZyB0aGUgdGFyZ2V0IExTTi4KKwkgKiBXYWtlIHVwIGFsbCB3 YWl0ZXJzLiAgVGhleSBuZWVkIHRvIHJlcG9ydCBhbiBlcnJvciB0aGF0IHJlY292ZXJ5IHdhcwor CSAqIGVuZGVkIGJlZm9yZSByZWFjaGluZyB0aGUgdGFyZ2V0IExTTi4KIAkgKi8KIAlXYWl0TFNO V2FrZXVwKFdBSVRfTFNOX1RZUEVfU1RBTkRCWV9SRVBMQVksIEludmFsaWRYTG9nUmVjUHRyKTsK KwlXYWl0TFNOV2FrZXVwKFdBSVRfTFNOX1RZUEVfU1RBTkRCWV9XUklURSwgSW52YWxpZFhMb2dS ZWNQdHIpOworCVdhaXRMU05XYWtldXAoV0FJVF9MU05fVFlQRV9TVEFOREJZX0ZMVVNILCBJbnZh bGlkWExvZ1JlY1B0cik7CiAKIAkvKgogCSAqIFNodXRkb3duIHRoZSByZWNvdmVyeSBlbnZpcm9u bWVudC4gIFRoaXMgbXVzdCBvY2N1ciBhZnRlcgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29t bWFuZHMvd2FpdC5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvd2FpdC5jCmluZGV4IDQ4NjdmNTk2 OTFlLi4yNjRmODE1NzFkNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvd2FpdC5j CisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3dhaXQuYwpAQCAtMiw3ICsyLDcgQEAKICAqCiAg KiB3YWl0LmMKICAqCSAgSW1wbGVtZW50cyBXQUlUIEZPUiwgd2hpY2ggYWxsb3dzIHdhaXRpbmcg Zm9yIGV2ZW50cyBzdWNoIGFzCi0gKgkgIHRpbWUgcGFzc2luZyBvciBMU04gaGF2aW5nIGJlZW4g cmVwbGF5ZWQgb24gcmVwbGljYS4KKyAqCSAgdGltZSBwYXNzaW5nIG9yIExTTiBoYXZpbmcgYmVl biByZXBsYXllZCwgZmx1c2hlZCwgb3Igd3JpdHRlbi4KICAqCiAgKiBQb3J0aW9ucyBDb3B5cmln aHQgKGMpIDIwMjUtMjAyNiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKICAq CkBAIC0xNSw2ICsxNSw3IEBACiAKICNpbmNsdWRlIDxtYXRoLmg+CiAKKyNpbmNsdWRlICJhY2Nl c3MveGxvZy5oIgogI2luY2x1ZGUgImFjY2Vzcy94bG9ncmVjb3ZlcnkuaCIKICNpbmNsdWRlICJh Y2Nlc3MveGxvZ3dhaXQuaCIKICNpbmNsdWRlICJjb21tYW5kcy9kZWZyZW0uaCIKQEAgLTM0LDEy ICszNSwxNCBAQCBFeGVjV2FpdFN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBXYWl0U3RtdCAqc3Rt dCwgRGVzdFJlY2VpdmVyICpkZXN0KQogCVhMb2dSZWNQdHIJbHNuOwogCWludDY0CQl0aW1lb3V0 ID0gMDsKIAlXYWl0TFNOUmVzdWx0IHdhaXRMU05SZXN1bHQ7CisJV2FpdExTTlR5cGUgbHNuVHlw ZSA9IFdBSVRfTFNOX1RZUEVfU1RBTkRCWV9SRVBMQVk7IC8qIGRlZmF1bHQgKi8KIAlib29sCQl0 aHJvdyA9IHRydWU7CiAJVHVwbGVEZXNjCXR1cGRlc2M7CiAJVHVwT3V0cHV0U3RhdGUgKnRzdGF0 ZTsKIAljb25zdCBjaGFyICpyZXN1bHQgPSAiPHVuc2V0PiI7CiAJYm9vbAkJdGltZW91dF9zcGVj aWZpZWQgPSBmYWxzZTsKIAlib29sCQlub190aHJvd19zcGVjaWZpZWQgPSBmYWxzZTsKKwlib29s CQltb2RlX3NwZWNpZmllZCA9IGZhbHNlOwogCiAJLyogUGFyc2UgYW5kIHZhbGlkYXRlIHRoZSBt YW5kYXRvcnkgTFNOICovCiAJbHNuID0gRGF0dW1HZXRMU04oRGlyZWN0RnVuY3Rpb25DYWxsMShw Z19sc25faW4sCkBAIC00Nyw3ICs1MCwzMiBAQCBFeGVjV2FpdFN0bXQoUGFyc2VTdGF0ZSAqcHN0 YXRlLCBXYWl0U3RtdCAqc3RtdCwgRGVzdFJlY2VpdmVyICpkZXN0KQogCiAJZm9yZWFjaF9ub2Rl KERlZkVsZW0sIGRlZmVsLCBzdG10LT5vcHRpb25zKQogCXsKLQkJaWYgKHN0cmNtcChkZWZlbC0+ ZGVmbmFtZSwgInRpbWVvdXQiKSA9PSAwKQorCQlpZiAoc3RyY21wKGRlZmVsLT5kZWZuYW1lLCAi bW9kZSIpID09IDApCisJCXsKKwkJCWNoYXIJICAgKm1vZGVfc3RyOworCisJCQlpZiAobW9kZV9z cGVjaWZpZWQpCisJCQkJZXJyb3JDb25mbGljdGluZ0RlZkVsZW0oZGVmZWwsIHBzdGF0ZSk7CisJ CQltb2RlX3NwZWNpZmllZCA9IHRydWU7CisKKwkJCW1vZGVfc3RyID0gZGVmR2V0U3RyaW5nKGRl ZmVsKTsKKworCQkJaWYgKHBnX3N0cmNhc2VjbXAobW9kZV9zdHIsICJzdGFuZGJ5X3JlcGxheSIp ID09IDApCisJCQkJbHNuVHlwZSA9IFdBSVRfTFNOX1RZUEVfU1RBTkRCWV9SRVBMQVk7CisJCQll bHNlIGlmIChwZ19zdHJjYXNlY21wKG1vZGVfc3RyLCAic3RhbmRieV93cml0ZSIpID09IDApCisJ CQkJbHNuVHlwZSA9IFdBSVRfTFNOX1RZUEVfU1RBTkRCWV9XUklURTsKKwkJCWVsc2UgaWYgKHBn X3N0cmNhc2VjbXAobW9kZV9zdHIsICJzdGFuZGJ5X2ZsdXNoIikgPT0gMCkKKwkJCQlsc25UeXBl ID0gV0FJVF9MU05fVFlQRV9TVEFOREJZX0ZMVVNIOworCQkJZWxzZSBpZiAocGdfc3RyY2FzZWNt cChtb2RlX3N0ciwgInByaW1hcnlfZmx1c2giKSA9PSAwKQorCQkJCWxzblR5cGUgPSBXQUlUX0xT Tl9UWVBFX1BSSU1BUllfRkxVU0g7CisJCQllbHNlCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJ CShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCQkJIGVycm1z ZygidW5yZWNvZ25pemVkIHZhbHVlIGZvciAlcyBvcHRpb24gXCIlc1wiOiBcIiVzXCIiLAorCQkJ CQkJCQkiV0FJVCIsIGRlZmVsLT5kZWZuYW1lLCBtb2RlX3N0ciksCisJCQkJCQkgcGFyc2VyX2Vy cnBvc2l0aW9uKHBzdGF0ZSwgZGVmZWwtPmxvY2F0aW9uKSkpOworCQl9CisJCWVsc2UgaWYgKHN0 cmNtcChkZWZlbC0+ZGVmbmFtZSwgInRpbWVvdXQiKSA9PSAwKQogCQl7CiAJCQljaGFyCSAgICp0 aW1lb3V0X3N0cjsKIAkJCWNvbnN0IGNoYXIgKmhpbnRtc2c7CkBAIC0xMDcsOCArMTM1LDggQEAg RXhlY1dhaXRTdG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwgV2FpdFN0bXQgKnN0bXQsIERlc3RSZWNl aXZlciAqZGVzdCkKIAl9CiAKIAkvKgotCSAqIFdlIGFyZSBnb2luZyB0byB3YWl0IGZvciB0aGUg TFNOIHJlcGxheS4gIFdlIHNob3VsZCBmaXJzdCBjYXJlIHRoYXQgd2UKLQkgKiBkb24ndCBob2xk IGEgc25hcHNob3QgYW5kIGNvcnJlc3BvbmRpbmdseSBvdXIgTXlQcm9jLT54bWluIGlzIGludmFs aWQuCisJICogV2UgYXJlIGdvaW5nIHRvIHdhaXQgZm9yIHRoZSBMU04uICBXZSBzaG91bGQgZmly c3QgY2FyZSB0aGF0IHdlIGRvbid0CisJICogaG9sZCBhIHNuYXBzaG90IGFuZCBjb3JyZXNwb25k aW5nbHkgb3VyIE15UHJvYy0+eG1pbiBpcyBpbnZhbGlkLgogCSAqIE90aGVyd2lzZSwgb3VyIHNu YXBzaG90IGNvdWxkIHByZXZlbnQgdGhlIHJlcGxheSBvZiBXQUwgcmVjb3JkcwogCSAqIGltcGx5 aW5nIGEga2luZCBvZiBzZWxmLWRlYWRsb2NrLiAgVGhpcyBpcyB0aGUgcmVhc29uIHdoeSBXQUlU IEZPUiBpcyBhCiAJICogY29tbWFuZCwgbm90IGEgcHJvY2VkdXJlIG9yIGZ1bmN0aW9uLgpAQCAt MTQwLDcgKzE2OCwyMiBAQCBFeGVjV2FpdFN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBXYWl0U3Rt dCAqc3RtdCwgRGVzdFJlY2VpdmVyICpkZXN0KQogCSAqLwogCUFzc2VydChNeVByb2MtPnhtaW4g PT0gSW52YWxpZFRyYW5zYWN0aW9uSWQpOwogCi0Jd2FpdExTTlJlc3VsdCA9IFdhaXRGb3JMU04o V0FJVF9MU05fVFlQRV9TVEFOREJZX1JFUExBWSwgbHNuLCB0aW1lb3V0KTsKKwkvKgorCSAqIFZh bGlkYXRlIHRoYXQgdGhlIHJlcXVlc3RlZCBtb2RlIG1hdGNoZXMgdGhlIGN1cnJlbnQgc2VydmVy IHN0YXRlLgorCSAqIFByaW1hcnkgbW9kZXMgY2FuIG9ubHkgYmUgdXNlZCBvbiBhIHByaW1hcnku CisJICovCisJaWYgKGxzblR5cGUgPT0gV0FJVF9MU05fVFlQRV9QUklNQVJZX0ZMVVNIKQorCXsK KwkJaWYgKFJlY292ZXJ5SW5Qcm9ncmVzcygpKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVy cmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJCSBl cnJtc2coInJlY292ZXJ5IGlzIGluIHByb2dyZXNzIiksCisJCQkJCSBlcnJoaW50KCJXYWl0aW5n IGZvciBwcmltYXJ5X2ZsdXNoIGNhbiBvbmx5IGJlIGRvbmUgb24gYSBwcmltYXJ5IHNlcnZlci4g IgorCQkJCQkJCSAiVXNlIHN0YW5kYnlfZmx1c2ggbW9kZSBvbiBhIHN0YW5kYnkgc2VydmVyLiIp KSk7CisJfQorCisJLyogTm93IHdhaXQgZm9yIHRoZSBMU04gKi8KKwl3YWl0TFNOUmVzdWx0ID0g V2FpdEZvckxTTihsc25UeXBlLCBsc24sIHRpbWVvdXQpOwogCiAJLyoKIAkgKiBQcm9jZXNzIHRo ZSByZXN1bHQgb2YgV2FpdEZvckxTTigpLiAgVGhyb3cgYXBwcm9wcmlhdGUgZXJyb3IgaWYgbmVl ZGVkLgpAQCAtMTU0LDExICsxOTcsNDggQEAgRXhlY1dhaXRTdG10KFBhcnNlU3RhdGUgKnBzdGF0 ZSwgV2FpdFN0bXQgKnN0bXQsIERlc3RSZWNlaXZlciAqZGVzdCkKIAogCQljYXNlIFdBSVRfTFNO X1JFU1VMVF9USU1FT1VUOgogCQkJaWYgKHRocm93KQotCQkJCWVyZXBvcnQoRVJST1IsCi0JCQkJ CQllcnJjb2RlKEVSUkNPREVfUVVFUllfQ0FOQ0VMRUQpLAotCQkJCQkJZXJybXNnKCJ0aW1lZCBv dXQgd2hpbGUgd2FpdGluZyBmb3IgdGFyZ2V0IExTTiAlWC8lMDhYIHRvIGJlIHJlcGxheWVkOyBj dXJyZW50IHJlcGxheSBMU04gJVgvJTA4WCIsCi0JCQkJCQkJICAgTFNOX0ZPUk1BVF9BUkdTKGxz biksCi0JCQkJCQkJICAgTFNOX0ZPUk1BVF9BUkdTKEdldFhMb2dSZXBsYXlSZWNQdHIoTlVMTCkp KSk7CisJCQl7CisJCQkJWExvZ1JlY1B0cgljdXJyZW50TFNOID0gR2V0Q3VycmVudExTTkZvcldh aXRUeXBlKGxzblR5cGUpOworCisJCQkJc3dpdGNoIChsc25UeXBlKQorCQkJCXsKKwkJCQkJY2Fz ZSBXQUlUX0xTTl9UWVBFX1NUQU5EQllfUkVQTEFZOgorCQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJ CQkJCQkJZXJyY29kZShFUlJDT0RFX1FVRVJZX0NBTkNFTEVEKSwKKwkJCQkJCQkJZXJybXNnKCJ0 aW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3IgdGFyZ2V0IExTTiAlWC8lMDhYIHRvIGJlIHJlcGxh eWVkOyBjdXJyZW50IHN0YW5kYnlfcmVwbGF5IExTTiAlWC8lMDhYIiwKKwkJCQkJCQkJCSAgIExT Tl9GT1JNQVRfQVJHUyhsc24pLAorCQkJCQkJCQkJICAgTFNOX0ZPUk1BVF9BUkdTKGN1cnJlbnRM U04pKSk7CisJCQkJCQlicmVhazsKKworCQkJCQljYXNlIFdBSVRfTFNOX1RZUEVfU1RBTkRCWV9X UklURToKKwkJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJCWVycmNvZGUoRVJSQ09ERV9RVUVS WV9DQU5DRUxFRCksCisJCQkJCQkJCWVycm1zZygidGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9y IHRhcmdldCBMU04gJVgvJTA4WCB0byBiZSB3cml0dGVuOyBjdXJyZW50IHN0YW5kYnlfd3JpdGUg TFNOICVYLyUwOFgiLAorCQkJCQkJCQkJICAgTFNOX0ZPUk1BVF9BUkdTKGxzbiksCisJCQkJCQkJ CQkgICBMU05fRk9STUFUX0FSR1MoY3VycmVudExTTikpKTsKKwkJCQkJCWJyZWFrOworCisJCQkJ CWNhc2UgV0FJVF9MU05fVFlQRV9TVEFOREJZX0ZMVVNIOgorCQkJCQkJZXJlcG9ydChFUlJPUiwK KwkJCQkJCQkJZXJyY29kZShFUlJDT0RFX1FVRVJZX0NBTkNFTEVEKSwKKwkJCQkJCQkJZXJybXNn KCJ0aW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3IgdGFyZ2V0IExTTiAlWC8lMDhYIHRvIGJlIGZs dXNoZWQ7IGN1cnJlbnQgc3RhbmRieV9mbHVzaCBMU04gJVgvJTA4WCIsCisJCQkJCQkJCQkgICBM U05fRk9STUFUX0FSR1MobHNuKSwKKwkJCQkJCQkJCSAgIExTTl9GT1JNQVRfQVJHUyhjdXJyZW50 TFNOKSkpOworCQkJCQkJYnJlYWs7CisKKwkJCQkJY2FzZSBXQUlUX0xTTl9UWVBFX1BSSU1BUllf RkxVU0g6CisJCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCQllcnJjb2RlKEVSUkNPREVfUVVF UllfQ0FOQ0VMRUQpLAorCQkJCQkJCQllcnJtc2coInRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZv ciB0YXJnZXQgTFNOICVYLyUwOFggdG8gYmUgZmx1c2hlZDsgY3VycmVudCBwcmltYXJ5X2ZsdXNo IExTTiAlWC8lMDhYIiwKKwkJCQkJCQkJCSAgIExTTl9GT1JNQVRfQVJHUyhsc24pLAorCQkJCQkJ CQkJICAgTFNOX0ZPUk1BVF9BUkdTKGN1cnJlbnRMU04pKSk7CisJCQkJCQlicmVhazsKKworCQkJ CQlkZWZhdWx0OgorCQkJCQkJZWxvZyhFUlJPUiwgInVuZXhwZWN0ZWQgd2FpdCBMU04gdHlwZSAl ZCIsIGxzblR5cGUpOworCQkJCQkJcGdfdW5yZWFjaGFibGUoKTsKKwkJCQl9CisJCQl9CiAJCQll bHNlCiAJCQkJcmVzdWx0ID0gInRpbWVvdXQiOwogCQkJYnJlYWs7CkBAIC0xNjgsMTggKzI0OCw3 MiBAQCBFeGVjV2FpdFN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBXYWl0U3RtdCAqc3RtdCwgRGVz dFJlY2VpdmVyICpkZXN0KQogCQkJewogCQkJCWlmIChQcm9tb3RlSXNUcmlnZ2VyZWQoKSkKIAkJ CQl7Ci0JCQkJCWVyZXBvcnQoRVJST1IsCi0JCQkJCQkJZXJyY29kZShFUlJDT0RFX09CSkVDVF9O T1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKLQkJCQkJCQllcnJtc2coInJlY292ZXJ5IGlzIG5v dCBpbiBwcm9ncmVzcyIpLAotCQkJCQkJCWVycmRldGFpbCgiUmVjb3ZlcnkgZW5kZWQgYmVmb3Jl IHJlcGxheWluZyB0YXJnZXQgTFNOICVYLyUwOFg7IGxhc3QgcmVwbGF5IExTTiAlWC8lMDhYLiIs Ci0JCQkJCQkJCQkgIExTTl9GT1JNQVRfQVJHUyhsc24pLAotCQkJCQkJCQkJICBMU05fRk9STUFU X0FSR1MoR2V0WExvZ1JlcGxheVJlY1B0cihOVUxMKSkpKTsKKwkJCQkJWExvZ1JlY1B0cgljdXJy ZW50TFNOID0gR2V0Q3VycmVudExTTkZvcldhaXRUeXBlKGxzblR5cGUpOworCisJCQkJCXN3aXRj aCAobHNuVHlwZSkKKwkJCQkJeworCQkJCQkJY2FzZSBXQUlUX0xTTl9UWVBFX1NUQU5EQllfUkVQ TEFZOgorCQkJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJCQllcnJjb2RlKEVSUkNPREVfT0JK RUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCQkJCQkJZXJybXNnKCJyZWNvdmVy eSBpcyBub3QgaW4gcHJvZ3Jlc3MiKSwKKwkJCQkJCQkJCWVycmRldGFpbCgiUmVjb3ZlcnkgZW5k ZWQgYmVmb3JlIHRhcmdldCBMU04gJVgvJTA4WCB3YXMgcmVwbGF5ZWQ7IGxhc3Qgc3RhbmRieV9y ZXBsYXkgTFNOICVYLyUwOFguIiwKKwkJCQkJCQkJCQkJICBMU05fRk9STUFUX0FSR1MobHNuKSwK KwkJCQkJCQkJCQkJICBMU05fRk9STUFUX0FSR1MoY3VycmVudExTTikpKTsKKwkJCQkJCQlicmVh azsKKworCQkJCQkJY2FzZSBXQUlUX0xTTl9UWVBFX1NUQU5EQllfV1JJVEU6CisJCQkJCQkJZXJl cG9ydChFUlJPUiwKKwkJCQkJCQkJCWVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJF UVVJU0lURV9TVEFURSksCisJCQkJCQkJCQllcnJtc2coInJlY292ZXJ5IGlzIG5vdCBpbiBwcm9n cmVzcyIpLAorCQkJCQkJCQkJZXJyZGV0YWlsKCJSZWNvdmVyeSBlbmRlZCBiZWZvcmUgdGFyZ2V0 IExTTiAlWC8lMDhYIHdhcyB3cml0dGVuOyBsYXN0IHN0YW5kYnlfd3JpdGUgTFNOICVYLyUwOFgu IiwKKwkJCQkJCQkJCQkJICBMU05fRk9STUFUX0FSR1MobHNuKSwKKwkJCQkJCQkJCQkJICBMU05f Rk9STUFUX0FSR1MoY3VycmVudExTTikpKTsKKwkJCQkJCQlicmVhazsKKworCQkJCQkJY2FzZSBX QUlUX0xTTl9UWVBFX1NUQU5EQllfRkxVU0g6CisJCQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJ CQkJCWVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJ CQkJCQkJCQllcnJtc2coInJlY292ZXJ5IGlzIG5vdCBpbiBwcm9ncmVzcyIpLAorCQkJCQkJCQkJ ZXJyZGV0YWlsKCJSZWNvdmVyeSBlbmRlZCBiZWZvcmUgdGFyZ2V0IExTTiAlWC8lMDhYIHdhcyBm bHVzaGVkOyBsYXN0IHN0YW5kYnlfZmx1c2ggTFNOICVYLyUwOFguIiwKKwkJCQkJCQkJCQkJICBM U05fRk9STUFUX0FSR1MobHNuKSwKKwkJCQkJCQkJCQkJICBMU05fRk9STUFUX0FSR1MoY3VycmVu dExTTikpKTsKKwkJCQkJCQlicmVhazsKKworCQkJCQkJZGVmYXVsdDoKKwkJCQkJCQllbG9nKEVS Uk9SLCAidW5leHBlY3RlZCB3YWl0IExTTiB0eXBlICVkIiwgbHNuVHlwZSk7CisJCQkJCQkJcGdf dW5yZWFjaGFibGUoKTsKKwkJCQkJfQogCQkJCX0KIAkJCQllbHNlCi0JCQkJCWVyZXBvcnQoRVJS T1IsCi0JCQkJCQkJZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NU QVRFKSwKLQkJCQkJCQllcnJtc2coInJlY292ZXJ5IGlzIG5vdCBpbiBwcm9ncmVzcyIpLAotCQkJ CQkJCWVycmhpbnQoIldhaXRpbmcgZm9yIHRoZSByZXBsYXkgTFNOIGNhbiBvbmx5IGJlIGV4ZWN1 dGVkIGR1cmluZyByZWNvdmVyeS4iKSk7CisJCQkJeworCQkJCQlzd2l0Y2ggKGxzblR5cGUpCisJ CQkJCXsKKwkJCQkJCWNhc2UgV0FJVF9MU05fVFlQRV9TVEFOREJZX1JFUExBWToKKwkJCQkJCQll cmVwb3J0KEVSUk9SLAorCQkJCQkJCQkJZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJF UkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkJCQkJCWVycm1zZygicmVjb3ZlcnkgaXMgbm90IGluIHBy b2dyZXNzIiksCisJCQkJCQkJCQllcnJoaW50KCJXYWl0aW5nIGZvciB0aGUgc3RhbmRieV9yZXBs YXkgTFNOIGNhbiBvbmx5IGJlIGV4ZWN1dGVkIGR1cmluZyByZWNvdmVyeS4iKSk7CisJCQkJCQkJ YnJlYWs7CisKKwkJCQkJCWNhc2UgV0FJVF9MU05fVFlQRV9TVEFOREJZX1dSSVRFOgorCQkJCQkJ CWVyZXBvcnQoRVJST1IsCisJCQkJCQkJCQllcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9Q UkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCQkJCQkJZXJybXNnKCJyZWNvdmVyeSBpcyBub3QgaW4g cHJvZ3Jlc3MiKSwKKwkJCQkJCQkJCWVycmhpbnQoIldhaXRpbmcgZm9yIHRoZSBzdGFuZGJ5X3dy aXRlIExTTiBjYW4gb25seSBiZSBleGVjdXRlZCBkdXJpbmcgcmVjb3ZlcnkuIikpOworCQkJCQkJ CWJyZWFrOworCisJCQkJCQljYXNlIFdBSVRfTFNOX1RZUEVfU1RBTkRCWV9GTFVTSDoKKwkJCQkJ CQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCQkJZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5f UFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkJCQkJCWVycm1zZygicmVjb3ZlcnkgaXMgbm90IGlu IHByb2dyZXNzIiksCisJCQkJCQkJCQllcnJoaW50KCJXYWl0aW5nIGZvciB0aGUgc3RhbmRieV9m bHVzaCBMU04gY2FuIG9ubHkgYmUgZXhlY3V0ZWQgZHVyaW5nIHJlY292ZXJ5LiIpKTsKKwkJCQkJ CQlicmVhazsKKworCQkJCQkJZGVmYXVsdDoKKwkJCQkJCQllbG9nKEVSUk9SLCAidW5leHBlY3Rl ZCB3YWl0IExTTiB0eXBlICVkIiwgbHNuVHlwZSk7CisJCQkJCQkJcGdfdW5yZWFjaGFibGUoKTsK KwkJCQkJfQorCQkJCX0KIAkJCX0KIAkJCWVsc2UKIAkJCQlyZXN1bHQgPSAibm90IGluIHJlY292 ZXJ5IjsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmMg Yi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxyZWNlaXZlci5jCmluZGV4IGFjMDAyZjczMGMz Li5hNDE0NTM1MzBhMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2FscmVj ZWl2ZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxyZWNlaXZlci5jCkBAIC01 Nyw2ICs1Nyw3IEBACiAjaW5jbHVkZSAiYWNjZXNzL3hsb2dfaW50ZXJuYWwuaCIKICNpbmNsdWRl ICJhY2Nlc3MveGxvZ2FyY2hpdmUuaCIKICNpbmNsdWRlICJhY2Nlc3MveGxvZ3JlY292ZXJ5Lmgi CisjaW5jbHVkZSAiYWNjZXNzL3hsb2d3YWl0LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19hdXRo aWQuaCIKICNpbmNsdWRlICJmdW5jYXBpLmgiCiAjaW5jbHVkZSAibGlicHEvcHFmb3JtYXQuaCIK QEAgLTk2NSw2ICs5NjYsMTQgQEAgWExvZ1dhbFJjdldyaXRlKGNoYXIgKmJ1ZiwgU2l6ZSBuYnl0 ZXMsIFhMb2dSZWNQdHIgcmVjcHRyLCBUaW1lTGluZUlEIHRsaSkKIAkvKiBVcGRhdGUgc2hhcmVk LW1lbW9yeSBzdGF0dXMgKi8KIAlwZ19hdG9taWNfd3JpdGVfdTY0KCZXYWxSY3YtPndyaXR0ZW5V cHRvLCBMb2dzdHJlYW1SZXN1bHQuV3JpdGUpOwogCisJLyoKKwkgKiBJZiB3ZSB3cm90ZSBhbiBM U04gdGhhdCBzb21lb25lIHdhcyB3YWl0aW5nIGZvciwgbm90aWZ5IHRoZSB3YWl0ZXJzLgorCSAq LworCWlmICh3YWl0TFNOU3RhdGUgJiYKKwkJKExvZ3N0cmVhbVJlc3VsdC5Xcml0ZSA+PQorCQkg cGdfYXRvbWljX3JlYWRfdTY0KCZ3YWl0TFNOU3RhdGUtPm1pbldhaXRlZExTTltXQUlUX0xTTl9U WVBFX1NUQU5EQllfV1JJVEVdKSkpCisJCVdhaXRMU05XYWtldXAoV0FJVF9MU05fVFlQRV9TVEFO REJZX1dSSVRFLCBMb2dzdHJlYW1SZXN1bHQuV3JpdGUpOworCiAJLyoKIAkgKiBDbG9zZSB0aGUg Y3VycmVudCBzZWdtZW50IGlmIGl0J3MgZnVsbHkgd3JpdHRlbiB1cCBpbiB0aGUgbGFzdCBjeWNs ZSBvZgogCSAqIHRoZSBsb29wLCB0byBjcmVhdGUgaXRzIGFyY2hpdmUgbm90aWZpY2F0aW9uIGZp bGUgc29vbi4gT3RoZXJ3aXNlIFdBTApAQCAtMTAwNCw2ICsxMDEzLDE1IEBAIFhMb2dXYWxSY3ZG bHVzaChib29sIGR5aW5nLCBUaW1lTGluZUlEIHRsaSkKIAkJfQogCQlTcGluTG9ja1JlbGVhc2Uo JndhbHJjdi0+bXV0ZXgpOwogCisJCS8qCisJCSAqIElmIHdlIGZsdXNoZWQgYW4gTFNOIHRoYXQg c29tZW9uZSB3YXMgd2FpdGluZyBmb3IsIG5vdGlmeSB0aGUKKwkJICogd2FpdGVycy4KKwkJICov CisJCWlmICh3YWl0TFNOU3RhdGUgJiYKKwkJCShMb2dzdHJlYW1SZXN1bHQuRmx1c2ggPj0KKwkJ CSBwZ19hdG9taWNfcmVhZF91NjQoJndhaXRMU05TdGF0ZS0+bWluV2FpdGVkTFNOW1dBSVRfTFNO X1RZUEVfU1RBTkRCWV9GTFVTSF0pKSkKKwkJCVdhaXRMU05XYWtldXAoV0FJVF9MU05fVFlQRV9T VEFOREJZX0ZMVVNILCBMb2dzdHJlYW1SZXN1bHQuRmx1c2gpOworCiAJCS8qIFNpZ25hbCB0aGUg c3RhcnR1cCBwcm9jZXNzIGFuZCB3YWxzZW5kZXIgdGhhdCBuZXcgV0FMIGhhcyBhcnJpdmVkICov CiAJCVdha2V1cFJlY292ZXJ5KCk7CiAJCWlmIChBbGxvd0Nhc2NhZGVSZXBsaWNhdGlvbigpKQpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNDlfd2FpdF9mb3JfbHNuLnBsIGIvc3Jj L3Rlc3QvcmVjb3ZlcnkvdC8wNDlfd2FpdF9mb3JfbHNuLnBsCmluZGV4IGUwZGRiMDZhMmYwLi5i NzY3YjQ3NWZmNyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNDlfd2FpdF9mb3Jf bHNuLnBsCisrKyBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDQ5X3dhaXRfZm9yX2xzbi5wbApAQCAt MSw1ICsxLDYgQEAKLSMgQ2hlY2tzIHdhaXRpbmcgZm9yIHRoZSBMU04gcmVwbGF5IG9uIHN0YW5k YnkgdXNpbmcKLSMgdGhlIFdBSVQgRk9SIGNvbW1hbmQuCisjIENoZWNrcyB3YWl0aW5nIGZvciB0 aGUgTFNOIHVzaW5nIHRoZSBXQUlUIEZPUiBjb21tYW5kLgorIyBUZXN0cyBzdGFuZGJ5IG1vZGVz IChzdGFuZGJ5X3JlcGxheS9zdGFuZGJ5X3dyaXRlL3N0YW5kYnlfZmx1c2gpIG9uIHN0YW5kYnkK KyMgYW5kIHByaW1hcnlfZmx1c2ggbW9kZSBvbiBwcmltYXJ5LgogdXNlIHN0cmljdDsKIHVzZSB3 YXJuaW5ncyBGQVRBTCA9PiAnYWxsJzsKIApAQCAtNyw2ICs4LDQyIEBAIHVzZSBQb3N0Z3JlU1FM OjpUZXN0OjpDbHVzdGVyOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6 Ok1vcmU7CiAKKyMgSGVscGVyIGZ1bmN0aW9ucyB0byBjb250cm9sIHdhbHJlY2VpdmVyIGZvciB0 ZXN0aW5nIHdhaXQgY29uZGl0aW9ucy4KKyMgVGhlc2UgYWxsb3cgdXMgdG8gc3RvcCBXQUwgc3Ry ZWFtaW5nIHNvIHdhaXRlcnMgYmxvY2ssIHRoZW4gcmVzdW1lIGl0LgorbXkgJHNhdmVkX3ByaW1h cnlfY29ubmluZm87CisKK3N1YiBzdG9wX3dhbHJlY2VpdmVyCit7CisJbXkgKCRub2RlKSA9IEBf OworCSRzYXZlZF9wcmltYXJ5X2Nvbm5pbmZvID0gJG5vZGUtPnNhZmVfcHNxbCgKKwkJJ3Bvc3Rn cmVzJywgcXFbCisJCVNFTEVDVCBwZ19jYXRhbG9nLnF1b3RlX2xpdGVyYWwoc2V0dGluZykKKwkJ RlJPTSBwZ19zZXR0aW5ncworCQlXSEVSRSBuYW1lID0gJ3ByaW1hcnlfY29ubmluZm8nOworCV0p OworCSRub2RlLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHFxWworCQlBTFRFUiBTWVNURU0g U0VUIHByaW1hcnlfY29ubmluZm8gPSAnJzsKKwkJU0VMRUNUIHBnX3JlbG9hZF9jb25mKCk7CisJ XSk7CisKKwkkbm9kZS0+cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIE5P VCBFWElTVFMgKFNFTEVDVCAqIEZST00gcGdfc3RhdF93YWxfcmVjZWl2ZXIpOyIpOworfQorCitz dWIgcmVzdW1lX3dhbHJlY2VpdmVyCit7CisJbXkgKCRub2RlKSA9IEBfOworCSRub2RlLT5zYWZl X3BzcWwoCisJCSdwb3N0Z3JlcycsIHFxWworCQlBTFRFUiBTWVNURU0gU0VUIHByaW1hcnlfY29u bmluZm8gPSAkc2F2ZWRfcHJpbWFyeV9jb25uaW5mbzsKKwkJU0VMRUNUIHBnX3JlbG9hZF9jb25m KCk7CisJXSk7CisKKwkkbm9kZS0+cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLAorCQkiU0VM RUNUIEVYSVNUUyAoU0VMRUNUICogRlJPTSBwZ19zdGF0X3dhbF9yZWNlaXZlcik7Iik7Cit9CisK ICMgSW5pdGlhbGl6ZSBwcmltYXJ5IG5vZGUKIG15ICRub2RlX3ByaW1hcnkgPSBQb3N0Z3JlU1FM OjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3ByaW1hcnknKTsKICRub2RlX3ByaW1hcnktPmluaXQoYWxs b3dzX3N0cmVhbWluZyA9PiAxKTsKQEAgLTYyLDcgKzk5LDUyIEBAICRvdXRwdXQgPSAkbm9kZV9z dGFuZGJ5LT5zYWZlX3BzcWwoCiBvaygoc3BsaXQoIlxuIiwgJG91dHB1dCkpWy0xXSBlcSAzMCwK IAkic3RhbmRieSByZWFjaGVkIHRoZSBzYW1lIExTTiBhcyBwcmltYXJ5Iik7CiAKLSMgMy4gQ2hl Y2sgdGhhdCB3YWl0aW5nIGZvciB1bnJlYWNoYWJsZSBMU04gdHJpZ2dlcnMgdGhlIHRpbWVvdXQu ICBUaGUKKyMgMy4gQ2hlY2sgdGhhdCBXQUlUIEZPUiB3b3JrcyB3aXRoIHN0YW5kYnlfd3JpdGUs IHN0YW5kYnlfZmx1c2gsIGFuZAorIyBwcmltYXJ5X2ZsdXNoIG1vZGVzLgorJG5vZGVfcHJpbWFy eS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIklOU0VSVCBJTlRPIHdhaXRfdGVzdCBWQUxVRVMg KGdlbmVyYXRlX3NlcmllcygzMSwgNDApKSIpOworbXkgJGxzbl93cml0ZSA9CisgICRub2RlX3By aW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIHBnX2N1cnJlbnRfd2FsX2luc2Vy dF9sc24oKSIpOworJG91dHB1dCA9ICRub2RlX3N0YW5kYnktPnNhZmVfcHNxbCgKKwkncG9zdGdy ZXMnLCBxcVsKKwlXQUlUIEZPUiBMU04gJyR7bHNuX3dyaXRlfScgV0lUSCAoTU9ERSAnc3RhbmRi eV93cml0ZScsIHRpbWVvdXQgJzFkJyk7CisJU0VMRUNUIHBnX2xzbl9jbXAoKFNFTEVDVCB3cml0 dGVuX2xzbiBGUk9NIHBnX3N0YXRfd2FsX3JlY2VpdmVyKSwgJyR7bHNuX3dyaXRlfSc6OnBnX2xz bik7CitdKTsKKworb2soIChzcGxpdCgiXG4iLCAkb3V0cHV0KSlbLTFdID49IDAsCisJInN0YW5k Ynkgd3JvdGUgV0FMIHVwIHRvIHRhcmdldCBMU04gYWZ0ZXIgV0FJVCBGT1Igd2l0aCBNT0RFICdz dGFuZGJ5X3dyaXRlJyIKKyk7CisKKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCSJJTlNFUlQgSU5UTyB3YWl0X3Rlc3QgVkFMVUVTIChnZW5lcmF0ZV9zZXJpZXMoNDEsIDUw KSkiKTsKK215ICRsc25fZmx1c2ggPQorICAkbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywgIlNFTEVDVCBwZ19jdXJyZW50X3dhbF9pbnNlcnRfbHNuKCkiKTsKKyRvdXRwdXQgPSAk bm9kZV9zdGFuZGJ5LT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXFbCisJV0FJVCBGT1IgTFNO ICcke2xzbl9mbHVzaH0nIFdJVEggKE1PREUgJ3N0YW5kYnlfZmx1c2gnLCB0aW1lb3V0ICcxZCcp OworCVNFTEVDVCBwZ19sc25fY21wKHBnX2xhc3Rfd2FsX3JlY2VpdmVfbHNuKCksICcke2xzbl9m bHVzaH0nOjpwZ19sc24pOworXSk7CisKK29rKCAoc3BsaXQoIlxuIiwgJG91dHB1dCkpWy0xXSA+ PSAwLAorCSJzdGFuZGJ5IGZsdXNoZWQgV0FMIHVwIHRvIHRhcmdldCBMU04gYWZ0ZXIgV0FJVCBG T1Igd2l0aCBNT0RFICdzdGFuZGJ5X2ZsdXNoJyIKKyk7CisKKyMgQ2hlY2sgcHJpbWFyeV9mbHVz aCBtb2RlIG9uIHByaW1hcnkKKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAor CSJJTlNFUlQgSU5UTyB3YWl0X3Rlc3QgVkFMVUVTIChnZW5lcmF0ZV9zZXJpZXMoNTEsIDYwKSki KTsKK215ICRsc25fcHJpbWFyeV9mbHVzaCA9CisgICRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgn cG9zdGdyZXMnLCAiU0VMRUNUIHBnX2N1cnJlbnRfd2FsX2luc2VydF9sc24oKSIpOworJG91dHB1 dCA9ICRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcVsKKwlXQUlUIEZP UiBMU04gJyR7bHNuX3ByaW1hcnlfZmx1c2h9JyBXSVRIIChNT0RFICdwcmltYXJ5X2ZsdXNoJywg dGltZW91dCAnMWQnKTsKKwlTRUxFQ1QgcGdfbHNuX2NtcChwZ19jdXJyZW50X3dhbF9mbHVzaF9s c24oKSwgJyR7bHNuX3ByaW1hcnlfZmx1c2h9Jzo6cGdfbHNuKTsKK10pOworCitvayggKHNwbGl0 KCJcbiIsICRvdXRwdXQpKVstMV0gPj0gMCwKKwkicHJpbWFyeSBmbHVzaGVkIFdBTCB1cCB0byB0 YXJnZXQgTFNOIGFmdGVyIFdBSVQgRk9SIHdpdGggTU9ERSAncHJpbWFyeV9mbHVzaCciCispOwor CisjIDQuIENoZWNrIHRoYXQgd2FpdGluZyBmb3IgdW5yZWFjaGFibGUgTFNOIHRyaWdnZXJzIHRo ZSB0aW1lb3V0LiAgVGhlCiAjIHVucmVhY2hhYmxlIExTTiBtdXN0IGJlIHdlbGwgaW4gYWR2YW5j ZS4gIFNvIFdBTCByZWNvcmRzIGlzc3VlZCBieQogIyB0aGUgY29uY3VycmVudCBhdXRvdmFjdXVt IGNvdWxkIG5vdCBhZmZlY3QgdGhhdC4KIG15ICRsc24zID0KQEAgLTg4LDE0ICsxNzAsMjYgQEAg JG91dHB1dCA9ICRub2RlX3N0YW5kYnktPnNhZmVfcHNxbCgKIAlXQUlUIEZPUiBMU04gJyR7bHNu M30nIFdJVEggKHRpbWVvdXQgJzEwbXMnLCBub190aHJvdyk7XSk7CiBvaygkb3V0cHV0IGVxICJ0 aW1lb3V0IiwgIldBSVQgRk9SIHJldHVybnMgY29ycmVjdCBzdGF0dXMgYWZ0ZXIgdGltZW91dCIp OwogCi0jIDQuIENoZWNrIHRoYXQgV0FJVCBGT1IgdHJpZ2dlcnMgYW4gZXJyb3IgaWYgY2FsbGVk IG9uIHByaW1hcnksCi0jIHdpdGhpbiBhbm90aGVyIGZ1bmN0aW9uLCBvciBpbnNpZGUgYSB0cmFu c2FjdGlvbiB3aXRoIGFuIGlzb2xhdGlvbiBsZXZlbAotIyBoaWdoZXIgdGhhbiBSRUFEIENPTU1J VFRFRC4KKyMgNS4gQ2hlY2sgbW9kZSB2YWxpZGF0aW9uOiBzdGFuZGJ5IG1vZGVzIGVycm9yIG9u IHByaW1hcnksIHByaW1hcnkgbW9kZSBlcnJvcnMKKyMgb24gc3RhbmRieSwgYW5kIHByaW1hcnlf Zmx1c2ggd29ya3Mgb24gcHJpbWFyeS4gIEFsc28gY2hlY2sgdGhhdCBXQUlUIEZPUgorIyB0cmln Z2VycyBhbiBlcnJvciBpZiBjYWxsZWQgd2l0aGluIGFub3RoZXIgZnVuY3Rpb24gb3IgaW5zaWRl IGEgdHJhbnNhY3Rpb24KKyMgd2l0aCBhbiBpc29sYXRpb24gbGV2ZWwgaGlnaGVyIHRoYW4gUkVB RCBDT01NSVRURUQuCisKKyMgVGVzdCBzdGFuZGJ5X2ZsdXNoIG9uIHByaW1hcnkgLSBzaG91bGQg ZXJyb3IKKyRub2RlX3ByaW1hcnktPnBzcWwoCisJJ3Bvc3RncmVzJywKKwkiV0FJVCBGT1IgTFNO ICcke2xzbjN9JyBXSVRIIChNT0RFICdzdGFuZGJ5X2ZsdXNoJyk7IiwKKwlzdGRlcnIgPT4gXCRz dGRlcnIpOworb2soJHN0ZGVyciA9fiAvcmVjb3ZlcnkgaXMgbm90IGluIHByb2dyZXNzLywKKwki Z2V0IGFuIGVycm9yIHdoZW4gcnVubmluZyBzdGFuZGJ5X2ZsdXNoIG9uIHRoZSBwcmltYXJ5Iik7 CiAKLSRub2RlX3ByaW1hcnktPnBzcWwoJ3Bvc3RncmVzJywgIldBSVQgRk9SIExTTiAnJHtsc24z fSc7IiwKKyMgVGVzdCBwcmltYXJ5X2ZsdXNoIG9uIHN0YW5kYnkgLSBzaG91bGQgZXJyb3IKKyRu b2RlX3N0YW5kYnktPnBzcWwoCisJJ3Bvc3RncmVzJywKKwkiV0FJVCBGT1IgTFNOICcke2xzbjN9 JyBXSVRIIChNT0RFICdwcmltYXJ5X2ZsdXNoJyk7IiwKIAlzdGRlcnIgPT4gXCRzdGRlcnIpOwot b2soICRzdGRlcnIgPX4gL3JlY292ZXJ5IGlzIG5vdCBpbiBwcm9ncmVzcy8sCi0JImdldCBhbiBl cnJvciB3aGVuIHJ1bm5pbmcgb24gdGhlIHByaW1hcnkiKTsKK29rKCRzdGRlcnIgPX4gL3JlY292 ZXJ5IGlzIGluIHByb2dyZXNzLywKKwkiZ2V0IGFuIGVycm9yIHdoZW4gcnVubmluZyBwcmltYXJ5 X2ZsdXNoIG9uIHRoZSBzdGFuZGJ5Iik7CiAKICRub2RlX3N0YW5kYnktPnBzcWwoCiAJJ3Bvc3Rn cmVzJywKQEAgLTEyNSw3ICsyMTksNyBAQCBvayggJHN0ZGVyciA9fgogCSAgL1dBSVQgRk9SIG11 c3QgYmUgb25seSBjYWxsZWQgd2l0aG91dCBhbiBhY3RpdmUgb3IgcmVnaXN0ZXJlZCBzbmFwc2hv dC8sCiAJImdldCBhbiBlcnJvciB3aGVuIHJ1bm5pbmcgd2l0aGluIGFub3RoZXIgZnVuY3Rpb24i KTsKIAotIyA1LiBDaGVjayBwYXJhbWV0ZXIgdmFsaWRhdGlvbiBlcnJvciBjYXNlcyBvbiBzdGFu ZGJ5IGJlZm9yZSBwcm9tb3Rpb24KKyMgNi4gQ2hlY2sgcGFyYW1ldGVyIHZhbGlkYXRpb24gZXJy b3IgY2FzZXMgb24gc3RhbmRieSBiZWZvcmUgcHJvbW90aW9uCiBteSAkdGVzdF9sc24gPQogICAk bm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBwZ19jdXJyZW50X3dh bF9pbnNlcnRfbHNuKCkiKTsKIApAQCAtMjA4LDEwICszMDIsMjYgQEAgJG5vZGVfc3RhbmRieS0+ cHNxbCgKIG9rKCAkc3RkZXJyID1+IC9vcHRpb24gImludmFsaWRfb3B0aW9uIiBub3QgcmVjb2du aXplZC8sCiAJImdldCBlcnJvciBmb3IgaW52YWxpZCBXSVRIIGNsYXVzZSBvcHRpb24iKTsKIAot IyA2LiBDaGVjayB0aGUgc2NlbmFyaW8gb2YgbXVsdGlwbGUgTFNOIHdhaXRlcnMuICBXZSBtYWtl IDUgYmFja2dyb3VuZAotIyBwc3FsIHNlc3Npb25zIGVhY2ggd2FpdGluZyBmb3IgYSBjb3JyZXNw b25kaW5nIGluc2VydGlvbi4gIFdoZW4gd2FpdGluZyBpcwotIyBmaW5pc2hlZCwgc3RvcmVkIHBy b2NlZHVyZXMgbG9ncyBpZiB0aGVyZSBhcmUgdmlzaWJsZSBhcyBtYW55IHJvd3MgYXMKLSMgc2hv dWxkIGJlLgorIyBUZXN0IGludmFsaWQgTU9ERSB2YWx1ZQorJG5vZGVfc3RhbmRieS0+cHNxbCgK KwkncG9zdGdyZXMnLAorCSJXQUlUIEZPUiBMU04gJyR7dGVzdF9sc259JyBXSVRIIChNT0RFICdp bnZhbGlkJyk7IiwKKwlzdGRlcnIgPT4gXCRzdGRlcnIpOworb2soJHN0ZGVyciA9fiAvdW5yZWNv Z25pemVkIHZhbHVlIGZvciBXQUlUIG9wdGlvbiAibW9kZSI6ICJpbnZhbGlkIi8sCisJImdldCBl cnJvciBmb3IgaW52YWxpZCBNT0RFIHZhbHVlIik7CisKKyMgVGVzdCBkdXBsaWNhdGUgTU9ERSBw YXJhbWV0ZXIKKyRub2RlX3N0YW5kYnktPnBzcWwoCisJJ3Bvc3RncmVzJywKKwkiV0FJVCBGT1Ig TFNOICcke3Rlc3RfbHNufScgV0lUSCAoTU9ERSAnc3RhbmRieV9yZXBsYXknLCBNT0RFICdzdGFu ZGJ5X3dyaXRlJyk7IiwKKwlzdGRlcnIgPT4gXCRzdGRlcnIpOworb2soICRzdGRlcnIgPX4gL2Nv bmZsaWN0aW5nIG9yIHJlZHVuZGFudCBvcHRpb25zLywKKwkiZ2V0IGVycm9yIGZvciBkdXBsaWNh dGUgTU9ERSBwYXJhbWV0ZXIiKTsKKworIyA3YS4gQ2hlY2sgdGhlIHNjZW5hcmlvIG9mIG11bHRp cGxlIHN0YW5kYnlfcmVwbGF5IHdhaXRlcnMuICBXZSBtYWtlIDUKKyMgYmFja2dyb3VuZCBwc3Fs IHNlc3Npb25zIGVhY2ggd2FpdGluZyBmb3IgYSBjb3JyZXNwb25kaW5nIGluc2VydGlvbi4gIFdo ZW4KKyMgd2FpdGluZyBpcyBmaW5pc2hlZCwgc3RvcmVkIHByb2NlZHVyZXMgbG9ncyBpZiB0aGVy ZSBhcmUgdmlzaWJsZSBhcyBtYW55CisjIHJvd3MgYXMgc2hvdWxkIGJlLgogJG5vZGVfcHJpbWFy eS0+c2FmZV9wc3FsKAogCSdwb3N0Z3JlcycsIHFxWwogQ1JFQVRFIEZVTkNUSU9OIGxvZ19jb3Vu dChpIGludCkgUkVUVVJOUyB2b2lkIEFTIFwkXCQKQEAgLTIyNSw4ICszMzUsMTcgQEAgQ1JFQVRF IEZVTkNUSU9OIGxvZ19jb3VudChpIGludCkgUkVUVVJOUyB2b2lkIEFTIFwkXCQKICAgRU5ECiBc JFwkCiBMQU5HVUFHRSBwbHBnc3FsOworCitDUkVBVEUgRlVOQ1RJT04gbG9nX3dhaXRfZG9uZShw cmVmaXggdGV4dCwgaSBpbnQpIFJFVFVSTlMgdm9pZCBBUyBcJFwkCisgIEJFR0lOCisgICAgUkFJ U0UgTE9HICclICUnLCBwcmVmaXgsIGk7CisgIEVORAorXCRcJAorTEFOR1VBR0UgcGxwZ3NxbDsK IF0pOworCiAkbm9kZV9zdGFuZGJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBwZ193 YWxfcmVwbGF5X3BhdXNlKCk7Iik7CisKIG15IEBwc3FsX3Nlc3Npb25zOwogZm9yIChteSAkaSA9 IDA7ICRpIDwgNTsgJGkrKykKIHsKQEAgLTI0Myw2ICszNjIsNyBAQCBmb3IgKG15ICRpID0gMDsg JGkgPCA1OyAkaSsrKQogCQlTRUxFQ1QgbG9nX2NvdW50KCR7aX0pOwogCV0pOwogfQorCiBteSAk bG9nX29mZnNldCA9IC1zICRub2RlX3N0YW5kYnktPmxvZ2ZpbGU7CiAkbm9kZV9zdGFuZGJ5LT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBwZ193YWxfcmVwbGF5X3Jlc3VtZSgpOyIpOwog Zm9yIChteSAkaSA9IDA7ICRpIDwgNTsgJGkrKykKQEAgLTI1MSwyMyArMzcxLDI0NiBAQCBmb3Ig KG15ICRpID0gMDsgJGkgPCA1OyAkaSsrKQogCSRwc3FsX3Nlc3Npb25zWyRpXS0+cXVpdDsKIH0K IAotb2soMSwgJ211bHRpcGxlIExTTiB3YWl0ZXJzIHJlcG9ydGVkIGNvbnNpc3RlbnQgZGF0YScp Oworb2soMSwgJ211bHRpcGxlIHN0YW5kYnlfcmVwbGF5IHdhaXRlcnMgcmVwb3J0ZWQgY29uc2lz dGVudCBkYXRhJyk7CisKKyMgN2IuIENoZWNrIHRoZSBzY2VuYXJpbyBvZiBtdWx0aXBsZSBzdGFu ZGJ5X3dyaXRlIHdhaXRlcnMuCisjIFN0b3Agd2FscmVjZWl2ZXIgdG8gZW5zdXJlIHdhaXRlcnMg YWN0dWFsbHkgYmxvY2suCitzdG9wX3dhbHJlY2VpdmVyKCRub2RlX3N0YW5kYnkpOworCisjIEdl bmVyYXRlIFdBTCBvbiBwcmltYXJ5IChzdGFuZGJ5IHdvbid0IHJlY2VpdmUgaXQgeWV0KQorbXkg QHdyaXRlX2xzbnM7Citmb3IgKG15ICRpID0gMDsgJGkgPCA1OyAkaSsrKQoreworCSRub2RlX3By aW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiSU5TRVJUIElOVE8gd2FpdF90ZXN0IFZB TFVFUyAoMTAwICsgJHtpfSk7Iik7CisJJHdyaXRlX2xzbnNbJGldID0KKwkgICRub2RlX3ByaW1h cnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIHBnX2N1cnJlbnRfd2FsX2luc2Vy dF9sc24oKSIpOworfQorCisjIFN0YXJ0IHN0YW5kYnlfd3JpdGUgd2FpdGVycyAodGhleSB3aWxs IGJsb2NrIHNpbmNlIHdhbHJlY2VpdmVyIGlzIHN0b3BwZWQpCitteSBAd3JpdGVfc2Vzc2lvbnM7 Citmb3IgKG15ICRpID0gMDsgJGkgPCA1OyAkaSsrKQoreworCSR3cml0ZV9zZXNzaW9uc1skaV0g PSAkbm9kZV9zdGFuZGJ5LT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJyk7CisJJHdyaXRlX3Nl c3Npb25zWyRpXS0+cXVlcnlfdW50aWwoCisJCXFyL3N0YXJ0LywgcXFbCisJCVxcZWNobyBzdGFy dAorCQlXQUlUIEZPUiBMU04gJyR3cml0ZV9sc25zWyRpXScgV0lUSCAoTU9ERSAnc3RhbmRieV93 cml0ZScsIHRpbWVvdXQgJzFkJyk7CisJCVNFTEVDVCBsb2dfd2FpdF9kb25lKCd3cml0ZV9kb25l JywgJGkpOworCV0pOworfQorCisjIFZlcmlmeSB3YWl0ZXJzIGFyZSBibG9ja2VkCiskbm9kZV9z dGFuZGJ5LT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBjb3VudCgqKSA9 IDUgRlJPTSBwZ19zdGF0X2FjdGl2aXR5IFdIRVJFIHdhaXRfZXZlbnQgPSAnV2FpdEZvcldhbFdy aXRlJyIKKyk7CisKKyMgUmVzdG9yZSB3YWxyZWNlaXZlciB0byB1bmJsb2NrIHdhaXRlcnMKK215 ICR3cml0ZV9sb2dfb2Zmc2V0ID0gLXMgJG5vZGVfc3RhbmRieS0+bG9nZmlsZTsKK3Jlc3VtZV93 YWxyZWNlaXZlcigkbm9kZV9zdGFuZGJ5KTsKKworIyBXYWl0IGZvciBhbGwgd2FpdGVycyB0byBj b21wbGV0ZSBhbmQgY2xvc2Ugc2Vzc2lvbnMKK2ZvciAobXkgJGkgPSAwOyAkaSA8IDU7ICRpKysp Cit7CisJJG5vZGVfc3RhbmRieS0+d2FpdF9mb3JfbG9nKCJ3cml0ZV9kb25lICRpIiwgJHdyaXRl X2xvZ19vZmZzZXQpOworCSR3cml0ZV9zZXNzaW9uc1skaV0tPnF1aXQ7Cit9CisKKyMgVmVyaWZ5 IG9uIHN0YW5kYnkgdGhhdCBXQUwgd2FzIHdyaXR0ZW4gdXAgdG8gdGhlIHRhcmdldCBMU04KKyRv dXRwdXQgPSAkbm9kZV9zdGFuZGJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBn X2xzbl9jbXAoKFNFTEVDVCB3cml0dGVuX2xzbiBGUk9NIHBnX3N0YXRfd2FsX3JlY2VpdmVyKSwg JyR3cml0ZV9sc25zWzRdJzo6cGdfbHNuKTsiCispOworCitvaygkb3V0cHV0ID49IDAsCisJIm11 bHRpcGxlIHN0YW5kYnlfd3JpdGUgd2FpdGVyczogc3RhbmRieSB3cm90ZSBXQUwgdXAgdG8gdGFy Z2V0IExTTiIpOworCisjIDdjLiBDaGVjayB0aGUgc2NlbmFyaW8gb2YgbXVsdGlwbGUgc3RhbmRi eV9mbHVzaCB3YWl0ZXJzLgorIyBTdG9wIHdhbHJlY2VpdmVyIHRvIGVuc3VyZSB3YWl0ZXJzIGFj dHVhbGx5IGJsb2NrLgorc3RvcF93YWxyZWNlaXZlcigkbm9kZV9zdGFuZGJ5KTsKKworIyBHZW5l cmF0ZSBXQUwgb24gcHJpbWFyeSAoc3RhbmRieSB3b24ndCByZWNlaXZlIGl0IHlldCkKK215IEBm bHVzaF9sc25zOworZm9yIChteSAkaSA9IDA7ICRpIDwgNTsgJGkrKykKK3sKKwkkbm9kZV9wcmlt YXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIklOU0VSVCBJTlRPIHdhaXRfdGVzdCBWQUxV RVMgKDIwMCArICR7aX0pOyIpOworCSRmbHVzaF9sc25zWyRpXSA9CisJICAkbm9kZV9wcmltYXJ5 LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBwZ19jdXJyZW50X3dhbF9pbnNlcnRf bHNuKCkiKTsKK30KKworIyBTdGFydCBzdGFuZGJ5X2ZsdXNoIHdhaXRlcnMgKHRoZXkgd2lsbCBi bG9jayBzaW5jZSB3YWxyZWNlaXZlciBpcyBzdG9wcGVkKQorbXkgQGZsdXNoX3Nlc3Npb25zOwor Zm9yIChteSAkaSA9IDA7ICRpIDwgNTsgJGkrKykKK3sKKwkkZmx1c2hfc2Vzc2lvbnNbJGldID0g JG5vZGVfc3RhbmRieS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycpOworCSRmbHVzaF9zZXNz aW9uc1skaV0tPnF1ZXJ5X3VudGlsKAorCQlxci9zdGFydC8sIHFxWworCQlcXGVjaG8gc3RhcnQK KwkJV0FJVCBGT1IgTFNOICckZmx1c2hfbHNuc1skaV0nIFdJVEggKE1PREUgJ3N0YW5kYnlfZmx1 c2gnLCB0aW1lb3V0ICcxZCcpOworCQlTRUxFQ1QgbG9nX3dhaXRfZG9uZSgnZmx1c2hfZG9uZScs ICRpKTsKKwldKTsKK30KKworIyBWZXJpZnkgd2FpdGVycyBhcmUgYmxvY2tlZAorJG5vZGVfc3Rh bmRieS0+cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgY291bnQoKikgPSA1 IEZST00gcGdfc3RhdF9hY3Rpdml0eSBXSEVSRSB3YWl0X2V2ZW50ID0gJ1dhaXRGb3JXYWxGbHVz aCciCispOworCisjIFJlc3RvcmUgd2FscmVjZWl2ZXIgdG8gdW5ibG9jayB3YWl0ZXJzCitteSAk Zmx1c2hfbG9nX29mZnNldCA9IC1zICRub2RlX3N0YW5kYnktPmxvZ2ZpbGU7CityZXN1bWVfd2Fs cmVjZWl2ZXIoJG5vZGVfc3RhbmRieSk7CisKKyMgV2FpdCBmb3IgYWxsIHdhaXRlcnMgdG8gY29t cGxldGUgYW5kIGNsb3NlIHNlc3Npb25zCitmb3IgKG15ICRpID0gMDsgJGkgPCA1OyAkaSsrKQor eworCSRub2RlX3N0YW5kYnktPndhaXRfZm9yX2xvZygiZmx1c2hfZG9uZSAkaSIsICRmbHVzaF9s b2dfb2Zmc2V0KTsKKwkkZmx1c2hfc2Vzc2lvbnNbJGldLT5xdWl0OworfQorCisjIFZlcmlmeSBv biBzdGFuZGJ5IHRoYXQgV0FMIHdhcyBmbHVzaGVkIHVwIHRvIHRoZSB0YXJnZXQgTFNOCiskb3V0 cHV0ID0gJG5vZGVfc3RhbmRieS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwZ19s c25fY21wKHBnX2xhc3Rfd2FsX3JlY2VpdmVfbHNuKCksICckZmx1c2hfbHNuc1s0XSc6OnBnX2xz bik7IgorKTsKKworb2soJG91dHB1dCA+PSAwLAorCSJtdWx0aXBsZSBzdGFuZGJ5X2ZsdXNoIHdh aXRlcnM6IHN0YW5kYnkgZmx1c2hlZCBXQUwgdXAgdG8gdGFyZ2V0IExTTiIpOworCisjIDdkLiBD aGVjayB0aGUgc2NlbmFyaW8gb2YgbWl4ZWQgc3RhbmRieSBtb2RlIHdhaXRlcnMgKHN0YW5kYnlf cmVwbGF5LAorIyBzdGFuZGJ5X3dyaXRlLCBzdGFuZGJ5X2ZsdXNoKSBydW5uaW5nIGNvbmN1cnJl bnRseS4gIFdlIHN0YXJ0IDYgc2Vzc2lvbnM6CisjIDIgZm9yIGVhY2ggbW9kZSwgYWxsIHdhaXRp bmcgZm9yIHRoZSBzYW1lIHRhcmdldCBMU04uICBXZSBzdG9wIHRoZQorIyB3YWxyZWNlaXZlciBh bmQgcGF1c2UgcmVwbGF5IHRvIGVuc3VyZSBhbGwgd2FpdGVycyBibG9jay4gIFRoZW4gd2UgcmVz dW1lCisjIHJlcGxheSBhbmQgcmVzdGFydCB0aGUgd2FscmVjZWl2ZXIgdG8gdmVyaWZ5IHRoZXkg dW5ibG9jayBhbmQgY29tcGxldGUKKyMgY29ycmVjdGx5LgorCisjIFN0b3Agd2FscmVjZWl2ZXIg Zmlyc3QgdG8gZW5zdXJlIHdlIGNhbiBjb250cm9sIHRoZSBmbG93IHdpdGhvdXQgaGFuZ2luZwor IyAoc3RvcHBpbmcgaXQgYWZ0ZXIgcGF1c2luZyByZXBsYXkgY2FuIGhhbmcgaWYgdGhlIHN0YXJ0 dXAgcHJvY2VzcyBpcyBwYXVzZWQpLgorc3RvcF93YWxyZWNlaXZlcigkbm9kZV9zdGFuZGJ5KTsK KworIyBQYXVzZSByZXBsYXkKKyRub2RlX3N0YW5kYnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAi U0VMRUNUIHBnX3dhbF9yZXBsYXlfcGF1c2UoKTsiKTsKKworIyBHZW5lcmF0ZSBXQUwgb24gcHJp bWFyeQorJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIklOU0VSVCBJTlRP IHdhaXRfdGVzdCBWQUxVRVMgKGdlbmVyYXRlX3NlcmllcygzMDEsIDMxMCkpOyIpOworbXkgJG1p eGVkX3RhcmdldF9sc24gPQorICAkbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywg IlNFTEVDVCBwZ19jdXJyZW50X3dhbF9pbnNlcnRfbHNuKCkiKTsKKworIyBTdGFydCA2IHdhaXRl cnM6IDIgZm9yIGVhY2ggbW9kZQorbXkgQG1peGVkX3Nlc3Npb25zOworbXkgQG1peGVkX21vZGVz ID0gKCdzdGFuZGJ5X3JlcGxheScsICdzdGFuZGJ5X3dyaXRlJywgJ3N0YW5kYnlfZmx1c2gnKTsK K2ZvciAobXkgJGkgPSAwOyAkaSA8IDY7ICRpKyspCit7CisJJG1peGVkX3Nlc3Npb25zWyRpXSA9 ICRub2RlX3N0YW5kYnktPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnKTsKKwkkbWl4ZWRfc2Vz c2lvbnNbJGldLT5xdWVyeV91bnRpbCgKKwkJcXIvc3RhcnQvLCBxcVsKKwkJXFxlY2hvIHN0YXJ0 CisJCVdBSVQgRk9SIExTTiAnJHttaXhlZF90YXJnZXRfbHNufScgV0lUSCAoTU9ERSAnJG1peGVk X21vZGVzWyRpICUgM10nLCB0aW1lb3V0ICcxZCcpOworCQlTRUxFQ1QgbG9nX3dhaXRfZG9uZSgn bWl4ZWRfZG9uZScsICRpKTsKKwldKTsKK30KKworIyBWZXJpZnkgYWxsIHdhaXRlcnMgYXJlIGJs b2NrZWQKKyRub2RlX3N0YW5kYnktPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywKKwkiU0VM RUNUIGNvdW50KCopID0gNiBGUk9NIHBnX3N0YXRfYWN0aXZpdHkgV0hFUkUgd2FpdF9ldmVudCBM SUtFICdXYWl0Rm9yV2FsJSciCispOworCisjIFJlc3VtZSByZXBsYXkgKHdhaXRlcnMgc2hvdWxk IHN0aWxsIGJlIGJsb2NrZWQgYXMgbm8gV0FMIGhhcyBhcnJpdmVkKQorbXkgJG1peGVkX2xvZ19v ZmZzZXQgPSAtcyAkbm9kZV9zdGFuZGJ5LT5sb2dmaWxlOworJG5vZGVfc3RhbmRieS0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgcGdfd2FsX3JlcGxheV9yZXN1bWUoKTsiKTsKKyRub2Rl X3N0YW5kYnktPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIE5PVCBwZ19p c193YWxfcmVwbGF5X3BhdXNlZCgpOyIpOworCisjIFJlc3RvcmUgd2FscmVjZWl2ZXIgdG8gYWxs b3cgV0FMIHRvIGFycml2ZQorcmVzdW1lX3dhbHJlY2VpdmVyKCRub2RlX3N0YW5kYnkpOwogCi0j IDcuIENoZWNrIHRoYXQgdGhlIHN0YW5kYnkgcHJvbW90aW9uIHRlcm1pbmF0ZXMgdGhlIHdhaXQg b24gTFNOLiAgU3RhcnQKLSMgd2FpdGluZyBmb3IgYW4gdW5yZWFjaGFibGUgTFNOIHRoZW4gcHJv bW90ZS4gIENoZWNrIHRoZSBsb2cgZm9yIHRoZSByZWxldmFudAotIyBlcnJvciBtZXNzYWdlLiAg QWxzbywgY2hlY2sgdGhhdCB3YWl0aW5nIGZvciBhbHJlYWR5IHJlcGxheWVkIExTTiBkb2Vzbid0 Ci0jIGNhdXNlIGFuIGVycm9yIGV2ZW4gYWZ0ZXIgcHJvbW90aW9uLgorIyBXYWl0IGZvciBhbGwg c2Vzc2lvbnMgdG8gY29tcGxldGUgYW5kIGNsb3NlIHRoZW0KK2ZvciAobXkgJGkgPSAwOyAkaSA8 IDY7ICRpKyspCit7CisJJG5vZGVfc3RhbmRieS0+d2FpdF9mb3JfbG9nKCJtaXhlZF9kb25lICRp IiwgJG1peGVkX2xvZ19vZmZzZXQpOworCSRtaXhlZF9zZXNzaW9uc1skaV0tPnF1aXQ7Cit9CisK KyMgVmVyaWZ5IGFsbCBtb2RlcyByZWFjaGVkIHRoZSB0YXJnZXQgTFNOCiskb3V0cHV0ID0gJG5v ZGVfc3RhbmRieS0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxWworCVNFTEVDVCBwZ19sc25f Y21wKChTRUxFQ1Qgd3JpdHRlbl9sc24gRlJPTSBwZ19zdGF0X3dhbF9yZWNlaXZlciksICcke21p eGVkX3RhcmdldF9sc259Jzo6cGdfbHNuKSA+PSAwIEFORAorCSAgICAgICBwZ19sc25fY21wKHBn X2xhc3Rfd2FsX3JlY2VpdmVfbHNuKCksICcke21peGVkX3RhcmdldF9sc259Jzo6cGdfbHNuKSA+ PSAwIEFORAorCSAgICAgICBwZ19sc25fY21wKHBnX2xhc3Rfd2FsX3JlcGxheV9sc24oKSwgJyR7 bWl4ZWRfdGFyZ2V0X2xzbn0nOjpwZ19sc24pID49IDA7CitdKTsKKworb2soJG91dHB1dCBlcSAn dCcsCisJIm1peGVkIG1vZGUgd2FpdGVyczogYWxsIG1vZGVzIGNvbXBsZXRlZCBhbmQgcmVhY2hl ZCB0YXJnZXQgTFNOIik7CisKKyMgN2UuIENoZWNrIHRoZSBzY2VuYXJpbyBvZiBtdWx0aXBsZSBw cmltYXJ5X2ZsdXNoIHdhaXRlcnMgb24gcHJpbWFyeS4KKyMgV2Ugc3RhcnQgNSBiYWNrZ3JvdW5k IHNlc3Npb25zIHdhaXRpbmcgZm9yIGRpZmZlcmVudCBMU05zIHdpdGggcHJpbWFyeV9mbHVzaAor IyBtb2RlLiAgRWFjaCB3YWl0ZXIgbG9ncyB3aGVuIGRvbmUuCitteSBAcHJpbWFyeV9mbHVzaF9s c25zOworZm9yIChteSAkaSA9IDA7ICRpIDwgNTsgJGkrKykKK3sKKwkkbm9kZV9wcmltYXJ5LT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIklOU0VSVCBJTlRPIHdhaXRfdGVzdCBWQUxVRVMgKDQw MCArICR7aX0pOyIpOworCSRwcmltYXJ5X2ZsdXNoX2xzbnNbJGldID0KKwkgICRub2RlX3ByaW1h cnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIHBnX2N1cnJlbnRfd2FsX2luc2Vy dF9sc24oKSIpOworfQorCitteSAkcHJpbWFyeV9mbHVzaF9sb2dfb2Zmc2V0ID0gLXMgJG5vZGVf cHJpbWFyeS0+bG9nZmlsZTsKKworIyBTdGFydCBwcmltYXJ5X2ZsdXNoIHdhaXRlcnMKK215IEBw cmltYXJ5X2ZsdXNoX3Nlc3Npb25zOworZm9yIChteSAkaSA9IDA7ICRpIDwgNTsgJGkrKykKK3sK KwkkcHJpbWFyeV9mbHVzaF9zZXNzaW9uc1skaV0gPSAkbm9kZV9wcmltYXJ5LT5iYWNrZ3JvdW5k X3BzcWwoJ3Bvc3RncmVzJyk7CisJJHByaW1hcnlfZmx1c2hfc2Vzc2lvbnNbJGldLT5xdWVyeV91 bnRpbCgKKwkJcXIvc3RhcnQvLCBxcVsKKwkJXFxlY2hvIHN0YXJ0CisJCVdBSVQgRk9SIExTTiAn JHByaW1hcnlfZmx1c2hfbHNuc1skaV0nIFdJVEggKE1PREUgJ3ByaW1hcnlfZmx1c2gnLCB0aW1l b3V0ICcxZCcpOworCQlTRUxFQ1QgbG9nX3dhaXRfZG9uZSgncHJpbWFyeV9mbHVzaF9kb25lJywg JGkpOworCV0pOworfQorCisjIFRoZSBXQUwgc2hvdWxkIGFscmVhZHkgYmUgZmx1c2hlZCwgc28g d2FpdGVycyBzaG91bGQgY29tcGxldGUgcXVpY2tseQorZm9yIChteSAkaSA9IDA7ICRpIDwgNTsg JGkrKykKK3sKKwkkbm9kZV9wcmltYXJ5LT53YWl0X2Zvcl9sb2coInByaW1hcnlfZmx1c2hfZG9u ZSAkaSIsCisJCSRwcmltYXJ5X2ZsdXNoX2xvZ19vZmZzZXQpOworCSRwcmltYXJ5X2ZsdXNoX3Nl c3Npb25zWyRpXS0+cXVpdDsKK30KKworIyBWZXJpZnkgb24gcHJpbWFyeSB0aGF0IFdBTCB3YXMg Zmx1c2hlZCB1cCB0byB0aGUgdGFyZ2V0IExTTgorJG91dHB1dCA9ICRub2RlX3ByaW1hcnktPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGdfbHNuX2NtcChwZ19jdXJyZW50X3dhbF9m bHVzaF9sc24oKSwgJyRwcmltYXJ5X2ZsdXNoX2xzbnNbNF0nOjpwZ19sc24pOyIKKyk7CisKK29r KCRvdXRwdXQgPj0gMCwKKwkibXVsdGlwbGUgcHJpbWFyeV9mbHVzaCB3YWl0ZXJzOiBwcmltYXJ5 IGZsdXNoZWQgV0FMIHVwIHRvIHRhcmdldCBMU04iKTsKKworIyA4LiBDaGVjayB0aGF0IHRoZSBz dGFuZGJ5IHByb21vdGlvbiB0ZXJtaW5hdGVzIGFsbCBzdGFuZGJ5IHdhaXQgbW9kZXMuICBTdGFy dAorIyB3YWl0aW5nIGZvciB1bnJlYWNoYWJsZSBMU05zIHdpdGggc3RhbmRieV9yZXBsYXksIHN0 YW5kYnlfd3JpdGUsIGFuZAorIyBzdGFuZGJ5X2ZsdXNoIG1vZGVzLCB0aGVuIHByb21vdGUuICBD aGVjayB0aGUgbG9nIGZvciB0aGUgcmVsZXZhbnQgZXJyb3IKKyMgbWVzc2FnZXMuICBBbHNvLCBj aGVjayB0aGF0IHdhaXRpbmcgZm9yIGFscmVhZHkgcmVwbGF5ZWQgTFNOIGRvZXNuJ3QgY2F1c2UK KyMgYW4gZXJyb3IgZXZlbiBhZnRlciBwcm9tb3Rpb24uCiBteSAkbHNuNCA9CiAgICRub2RlX3By aW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJTRUxFQ1QgcGdfY3VycmVudF93YWxfaW5z ZXJ0X2xzbigpICsgMTAwMDAwMDAwMDAiKTsKKwogbXkgJGxzbjUgPQogICAkbm9kZV9wcmltYXJ5 LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBwZ19jdXJyZW50X3dhbF9pbnNlcnRfbHNu KCkiKTsKLW15ICRwc3FsX3Nlc3Npb24gPSAkbm9kZV9zdGFuZGJ5LT5iYWNrZ3JvdW5kX3BzcWwo J3Bvc3RncmVzJyk7Ci0kcHNxbF9zZXNzaW9uLT5xdWVyeV91bnRpbCgKLQlxci9zdGFydC8sIHFx WwotCVxcZWNobyBzdGFydAotCVdBSVQgRk9SIExTTiAnJHtsc240fSc7Ci1dKTsKKworIyBTdGFy dCBiYWNrZ3JvdW5kIHNlc3Npb25zIHdhaXRpbmcgZm9yIHVucmVhY2hhYmxlIExTTiB3aXRoIGFs bCBtb2RlcworbXkgQHdhaXRfbW9kZXMgPSAoJ3N0YW5kYnlfcmVwbGF5JywgJ3N0YW5kYnlfd3Jp dGUnLCAnc3RhbmRieV9mbHVzaCcpOworbXkgQHdhaXRfc2Vzc2lvbnM7Citmb3IgKG15ICRpID0g MDsgJGkgPCAzOyAkaSsrKQoreworCSR3YWl0X3Nlc3Npb25zWyRpXSA9ICRub2RlX3N0YW5kYnkt PmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnKTsKKwkkd2FpdF9zZXNzaW9uc1skaV0tPnF1ZXJ5 X3VudGlsKAorCQlxci9zdGFydC8sIHFxWworCQlcXGVjaG8gc3RhcnQKKwkJV0FJVCBGT1IgTFNO ICcke2xzbjR9JyBXSVRIIChNT0RFICckd2FpdF9tb2Rlc1skaV0nKTsKKwldKTsKK30KIAogIyBN YWtlIHN1cmUgc3RhbmRieSB3aWxsIGJlIHByb21vdGVkIGF0IGxlYXN0IGF0IHRoZSBwcmltYXJ5 IGluc2VydCBMU04gd2UKICMgaGF2ZSBqdXN0IG9ic2VydmVkLiAgVXNlIHBnX3N3aXRjaF93YWwo KSB0byBmb3JjZSB0aGUgaW5zZXJ0IExTTiB0byBiZQpAQCAtMjc3LDkgKzYyMCwxNiBAQCAkbm9k ZV9wcmltYXJ5LT53YWl0X2Zvcl9jYXRjaHVwKCRub2RlX3N0YW5kYnkpOwogCiAkbG9nX29mZnNl dCA9IC1zICRub2RlX3N0YW5kYnktPmxvZ2ZpbGU7CiAkbm9kZV9zdGFuZGJ5LT5wcm9tb3RlOwot JG5vZGVfc3RhbmRieS0+d2FpdF9mb3JfbG9nKCdyZWNvdmVyeSBpcyBub3QgaW4gcHJvZ3Jlc3Mn LCAkbG9nX29mZnNldCk7CiAKLW9rKDEsICdnb3QgZXJyb3IgYWZ0ZXIgc3RhbmRieSBwcm9tb3Rl Jyk7CisjIFdhaXQgZm9yIGFsbCB0aHJlZSBzZXNzaW9ucyB0byBnZXQgdGhlIGVycm9yIChlYWNo IG1vZGUgaGFzIGRpc3RpbmN0IG1lc3NhZ2UpCiskbm9kZV9zdGFuZGJ5LT53YWl0X2Zvcl9sb2co cXIvUmVjb3ZlcnkgZW5kZWQgYmVmb3JlIHRhcmdldCBMU04uKndhcyB3cml0dGVuLywKKwkkbG9n X29mZnNldCk7Ciskbm9kZV9zdGFuZGJ5LT53YWl0X2Zvcl9sb2cocXIvUmVjb3ZlcnkgZW5kZWQg YmVmb3JlIHRhcmdldCBMU04uKndhcyBmbHVzaGVkLywKKwkkbG9nX29mZnNldCk7Ciskbm9kZV9z dGFuZGJ5LT53YWl0X2Zvcl9sb2coCisJcXIvUmVjb3ZlcnkgZW5kZWQgYmVmb3JlIHRhcmdldCBM U04uKndhcyByZXBsYXllZC8sICRsb2dfb2Zmc2V0KTsKKworb2soMSwgJ3Byb21vdGlvbiBpbnRl cnJ1cHRlZCBhbGwgd2FpdCBtb2RlcycpOwogCiAkbm9kZV9zdGFuZGJ5LT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywgIldBSVQgRk9SIExTTiAnJHtsc241fSc7Iik7CiAKQEAgLTI5NSw4ICs2NDUsMTEg QEAgb2soJG91dHB1dCBlcSAibm90IGluIHJlY292ZXJ5IiwKICRub2RlX3N0YW5kYnktPnN0b3A7 CiAkbm9kZV9wcmltYXJ5LT5zdG9wOwogCi0jIElmIHdlIHNlbmQgXHEgd2l0aCAkcHNxbF9zZXNz aW9uLT5xdWl0IHRoZSBjb21tYW5kIGNhbiBiZSBzZW50IHRvIHRoZSBzZXNzaW9uCisjIElmIHdl IHNlbmQgXHEgd2l0aCAkc2Vzc2lvbi0+cXVpdCB0aGUgY29tbWFuZCBjYW4gYmUgc2VudCB0byB0 aGUgc2Vzc2lvbgogIyBhbHJlYWR5IGNsb3NlZC4gU28gXHEgaXMgaW4gaW5pdGlhbCBzY3JpcHQs IGhlcmUgd2Ugb25seSBmaW5pc2ggSVBDOjpSdW4uCi0kcHNxbF9zZXNzaW9uLT57cnVufS0+Zmlu aXNoOworZm9yIChteSAkaSA9IDA7ICRpIDwgMzsgJGkrKykKK3sKKwkkd2FpdF9zZXNzaW9uc1sk aV0tPntydW59LT5maW5pc2g7Cit9CiAKIGRvbmVfdGVzdGluZygpOwotLSAKMi4zOS41IChBcHBs ZSBHaXQtMTU0KQoK --000000000000592f7106476f9609--