Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rpSLM-006pDn-Jy for pgsql-hackers@arkaria.postgresql.org; Wed, 27 Mar 2024 12:25:25 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1rpSLL-00E7f2-6S for pgsql-hackers@arkaria.postgresql.org; Wed, 27 Mar 2024 12:25:23 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rpSLK-00E7eu-Kq for pgsql-hackers@lists.postgresql.org; Wed, 27 Mar 2024 12:25:22 +0000 Received: from mail-lj1-x231.google.com ([2a00:1450:4864:20::231]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1rpSLG-006hW9-Pt for pgsql-hackers@lists.postgresql.org; Wed, 27 Mar 2024 12:25:21 +0000 Received: by mail-lj1-x231.google.com with SMTP id 38308e7fff4ca-2d228a132acso89387521fa.0 for ; Wed, 27 Mar 2024 05:25:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1711542318; x=1712147118; 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=3YDL8tlEuW4RIwfbBbk7sLt65XnDGOu1jR2kCjBfj5A=; b=HNwmcbnfn0mzHkMZWsolet7y2b4eY9b5E3tXoErzqg6mr+HI0ySjfn4w6gbCbrw/wU ITRe3EHvP1d/91neczKt3QVzxTf2L8q4JxOte+upCb1WW2AQxcKO9cg/u99uzQkDuihX UotM0Rjcvruo0LQzQu2w/geJpSnEXelas2ekX5iIAtKRQ7XwvHJ1wfJI4GKoiAsoEkcu BKqHMKAJabRyvvStsGcgIgqqgjoHDZNrAgQnW3NzH29gpLWP0fP7NhgiNzplcFcf4nO/ NKJLw7Z69o5M7D1g9Sm2NAPI6R+MdFPxq1PirvcInmSYvOmYWDKIA/r08hAuUY6yx0Oa kzrg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1711542318; x=1712147118; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=3YDL8tlEuW4RIwfbBbk7sLt65XnDGOu1jR2kCjBfj5A=; b=qehLD2Z41IYUNOo7DdULHChoKkhzCI1FrvgFXTTUe9nhx/fqSFOVgEbDekbuOUzrek vid0BPlRNId+kaKfyJrdLeErCxjdzWjErZxDfcy2nNRm8dxGma4cv0sBg3TbiRl3nkP5 sIuztHj2/4mqx80CDpzJEc6d/n0RlXANwSYwPYOfOhgj4v2979tggexOepG371E8b4vl ivCe/kF3LvTT4C6wMp0VpNnIydWr3Bf+dyDPr4wyR/KM7413Cl7dkxWLvBauw1esxxNl xme0qU1VyrT5aaAA0+mPWeIrsKvLdEA1AHLYB/cCfgYgjBwqdwt1fDgFHsvG0cZyBE49 4sdA== X-Forwarded-Encrypted: i=1; AJvYcCUtSk660TNUDLZ0yO88+EtVhg4jCgx3NkFwqWb4DSKVaBz8yZzVuRr13nPkbPi8vP4YnKW8gvK1dO+BuVM4J1BlrXQXKYUTWfWqL0RF2+96ysMR X-Gm-Message-State: AOJu0YyuLZc1uG3vf9PL23c67mCqXiXGWVHVCxXx/VmZk3BZH57dmt+L ZHt1mfUMbIa0sewqrJkr719kosbGhQAVtvRFxV/fYXVaMieC9YYUSIqlFV1gKgi8jpDZPW1IQAV EpMfYX19SP2H+u/D9p6pt0EZrPXo= X-Google-Smtp-Source: AGHT+IEuwp8vU5sS9qDyLfFaTwqe/ZwnUWH0ffnRHQEyM+DuJfLdobFgd8R+yfY5/glCMb7Z4ifYPLiYV73sHeZZ1m0= X-Received: by 2002:a2e:b0ce:0:b0:2d4:69bd:77b2 with SMTP id g14-20020a2eb0ce000000b002d469bd77b2mr854942ljl.36.1711542317971; Wed, 27 Mar 2024 05:25:17 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Bharath Rupireddy Date: Wed, 27 Mar 2024 17:55:05 +0530 Message-ID: Subject: Re: Introduce XID age and inactive timeout based replication slot invalidation To: shveta malik Cc: Bertrand Drouvot , Amit Kapila , Nathan Bossart , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="000000000000e32c230614a37f63" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000e32c230614a37f63 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, Mar 27, 2024 at 3:42=E2=80=AFPM Bertrand Drouvot wrote: > > 1 =3D=3D=3D > > My proposal (in text) but feel free to reword it: > > Note that the slots on the standbys that are being synced from a > primary server (whose synced field is true), will get the inactive_since = value > from the corresponding remote slot on the primary. Also, after the standb= y starts > up, the inactive_since (for such synced slots) will remain zero until the= next > synchronization. WFM. > 2 =3D=3D=3D > > +=3Ditem $node->create_logical_slot_on_standby(self, primary, slot_name, = dbname) > > get_slot_inactive_since_value instead? Ugh. Changed. > 3 =3D=3D=3D > > +against given reference time. > > s/given reference/optional given reference/? Done. > Apart from the above, LGTM. Thanks for reviewing. On Wed, Mar 27, 2024 at 3:43=E2=80=AFPM shveta malik wrote: > > Thanks for the patch. Regarding doc, I have few comments. Thanks for reviewing. > a) "inactive_since will remain zero" > Since it is user exposed info and the user finds it NULL in > pg_replication_slots, shall we mention NULL instead of 0? Right. Changed. > b) Since we are referring to the sync cycle here, I feel it will be > good to give a link to that page. > + zero until the next slot sync cycle (see > + for > + slot synchronization details). WFM. Please see the attached v28 patch. --=20 Bharath Rupireddy PostgreSQL Contributors Team RDS Open Source Databases Amazon Web Services: https://aws.amazon.com --000000000000e32c230614a37f63 Content-Type: application/octet-stream; name="v28-0001-Maintain-inactive_since-for-synced-slots-correct.patch" Content-Disposition: attachment; filename="v28-0001-Maintain-inactive_since-for-synced-slots-correct.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lu9s3dgo0 RnJvbSA3NjllZDU3YmFkMGNiMTU0ZTk4ODljNDgxNDFlYzk3ZWUxOGViNzkwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCaGFyYXRoIFJ1cGlyZWRkeSA8YmhhcmF0aC5ydXBpcmVkZHlm b3Jwb3N0Z3Jlc0BnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjcgTWFyIDIwMjQgMTE6NTc6MTMgKzAw MDAKU3ViamVjdDogW1BBVENIIHYyOF0gTWFpbnRhaW4gaW5hY3RpdmVfc2luY2UgZm9yIHN5bmNl ZCBzbG90cyBjb3JyZWN0bHkuCgpUaGUgc2xvdCdzIGluYWN0aXZlX3NpbmNlIGlzbid0IGN1cnJl bnRseSBtYWludGFpbmVkIGZvcgpzeW5jZWQgc2xvdHMgb24gdGhlIHN0YW5kYnkuIFRoZSBjb21t aXQgYTExZjMzMGI1NSBwcmV2ZW50cwp1cGRhdGluZyBpbmFjdGl2ZV9zaW5jZSB3aXRoIFJlY292 ZXJ5SW5Qcm9ncmVzcygpIGNoZWNrIGluClJlc3RvcmVTbG90RnJvbURpc2soKS4gQnV0LCB0aGUg aXNzdWUgaXMgdGhhdApSZWNvdmVyeUluUHJvZ3Jlc3MoKSBhbHdheXMgcmV0dXJucyB0cnVlIGlu ClJlc3RvcmVTbG90RnJvbURpc2soKSBhcyAneGxvZ2N0bC0+U2hhcmVkUmVjb3ZlcnlTdGF0ZScg aXMKYWx3YXlzICdSRUNPVkVSWV9TVEFURV9DUkFTSCcgYXQgdGhhdCB0aW1lLiBCZWNhdXNlIG9m IHRoaXMsCmluYWN0aXZlX3NpbmNlIGlzIGFsd2F5cyBOVUxMIG9uIGEgcHJvbW90ZWQgc3RhbmRi eSBmb3IgYWxsCnN5bmNlZCBzbG90cyBldmVuIGFmdGVyIHNlcnZlciByZXN0YXJ0LgoKQWJvdmUg aXNzdWUgbGVkIHVzIHRvIGEgcXVlc3Rpb24gYXMgdG8gd2h5IHdlIGNhbid0IGp1c3QgdXBkYXRl CmluYWN0aXZlX3NpbmNlIGZvciBzeW5jZWQgc2xvdHMgb24gdGhlIHN0YW5kYnkgd2l0aCB0aGUg dmFsdWUKcmVjZWl2ZWQgZnJvbSByZW1vdGUgc2xvdCBvbiB0aGUgcHJpbWFyeS4gVGhpcyBpcyBj b25zaXN0ZW50IHdpdGgKYW55IG90aGVyIHNsb3QgcGFyYW1ldGVyIGkuZS4gYWxsIG9mIHRoZW0g YXJlIHN5bmNlZCBmcm9tIHRoZQpwcmltYXJ5LgoKVGhpcyBjb21taXQgZG9lcyB0d28gdGhpbmdz OgoxKSBVcGRhdGVzIGluYWN0aXZlX3NpbmNlIGZvciBzeW5jIHNsb3RzIHdpdGggdGhlIHZhbHVl CnJlY2VpdmVkIGZyb20gdGhlIHByaW1hcnkncyBzbG90LgoKMikgRW5zdXJlcyB0aGUgdmFsdWUg aXMgc2V0IHRvIGN1cnJlbnQgdGltZXN0YW1wIGR1cmluZyB0aGUKc2h1dGRvd24gb2Ygc2xvdCBz eW5jIG1hY2hpbmVyeSB0byBoZWxwIGNvcnJlY3RseSBpbnRlcnByZXQgdGhlCnRpbWUgaWYgdGhl IHN0YW5kYnkgZ2V0cyBwcm9tb3RlZCB3aXRob3V0IGEgcmVzdGFydC4KCkF1dGhvcjogQmhhcmF0 aCBSdXBpcmVkZHkKUmV2aWV3ZWQtYnk6IEJlcnRyYW5kIERyb3V2b3QsIEFtaXQgS2FwaWxhLCBT aHZldGEgTWFsaWsKRGlzY3Vzc2lvbjogaHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvbWVzc2Fn ZS1pZC9DQUxqMkFDV0xjdG9pSC1wU2pXbkVwUjU0cTRERUQ2cndfQlJKbTVwQ3g4Nl9ZMDFNb1El NDBtYWlsLmdtYWlsLmNvbQotLS0KIGRvYy9zcmMvc2dtbC9zeXN0ZW0tdmlld3Muc2dtbCAgICAg ICAgICAgICAgICB8ICA5ICsrKwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9zbG90 c3luYy5jICAgIHwgNjEgKysrKysrKysrKysrKysrKysrLQogc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vc2xvdC5jICAgICAgICAgICAgICAgIHwgNDEgKysrKysrKysrLS0tLQogc3JjL3Rlc3QvcGVy bC9Qb3N0Z3JlU1FML1Rlc3QvQ2x1c3Rlci5wbSAgICAgIHwgMzQgKysrKysrKysrKysKIHNyYy90 ZXN0L3JlY292ZXJ5L3QvMDE5X3JlcGxzbG90X2xpbWl0LnBsICAgICB8IDI2ICstLS0tLS0tCiAu Li4vdC8wNDBfc3RhbmRieV9mYWlsb3Zlcl9zbG90c19zeW5jLnBsICAgICAgfCA0MyArKysrKysr KysrKysrCiA2IGZpbGVzIGNoYW5nZWQsIDE3NSBpbnNlcnRpb25zKCspLCAzOSBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvc3lzdGVtLXZpZXdzLnNnbWwgYi9kb2Mvc3Jj L3NnbWwvc3lzdGVtLXZpZXdzLnNnbWwKaW5kZXggM2M4ZGNhOGNhMy4uYzhkOTdhYjM3NSAxMDA2 NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3N5c3RlbS12aWV3cy5zZ21sCisrKyBiL2RvYy9zcmMvc2dt bC9zeXN0ZW0tdmlld3Muc2dtbApAQCAtMjUzMCw2ICsyNTMwLDE1IEBAIFNFTEVDVCAqIEZST00g cGdfbG9ja3MgcGwgTEVGVCBKT0lOIHBnX3ByZXBhcmVkX3hhY3RzIHBweAogICAgICAgPHBhcmE+ CiAgICAgICAgIFRoZSB0aW1lIHNpbmNlIHRoZSBzbG90IGhhcyBiZWNvbWUgaW5hY3RpdmUuCiAg ICAgICAgIDxsaXRlcmFsPk5VTEw8L2xpdGVyYWw+IGlmIHRoZSBzbG90IGlzIGN1cnJlbnRseSBi ZWluZyB1c2VkLgorICAgICAgICBOb3RlIHRoYXQgdGhlIHNsb3RzIG9uIHRoZSBzdGFuZGJ5cyB0 aGF0IGFyZSBiZWluZyBzeW5jZWQgZnJvbSBhCisgICAgICAgIHByaW1hcnkgc2VydmVyICh3aG9z ZSA8c3RydWN0ZmllbGQ+c3luY2VkPC9zdHJ1Y3RmaWVsZD4gZmllbGQgaXMKKyAgICAgICAgPGxp dGVyYWw+dHJ1ZTwvbGl0ZXJhbD4pLCB3aWxsIGdldCB0aGUKKyAgICAgICAgPHN0cnVjdGZpZWxk PmluYWN0aXZlX3NpbmNlPC9zdHJ1Y3RmaWVsZD4gdmFsdWUgZnJvbSB0aGUKKyAgICAgICAgY29y cmVzcG9uZGluZyByZW1vdGUgc2xvdCBvbiB0aGUgcHJpbWFyeS4gQWxzbywgYWZ0ZXIgdGhlIHN0 YW5kYnkKKyAgICAgICAgc3RhcnRzIHVwLCB0aGUgPHN0cnVjdGZpZWxkPmluYWN0aXZlX3NpbmNl PC9zdHJ1Y3RmaWVsZD4gdmFsdWUKKyAgICAgICAgKGZvciBzdWNoIHN5bmNlZCBzbG90cykgd2ls bCByZW1haW4gPGxpdGVyYWw+TlVMTDwvbGl0ZXJhbD4gdW50aWwKKyAgICAgICAgdGhlIG5leHQg c3luY2hyb25pemF0aW9uIChzZWUKKyAgICAgICAgPHhyZWYgbGlua2VuZD0ibG9naWNhbGRlY29k aW5nLXJlcGxpY2F0aW9uLXNsb3RzLXN5bmNocm9uaXphdGlvbiIvPikuCiAgICAgICA8L3BhcmE+ PC9lbnRyeT4KICAgICAgPC9yb3c+CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvc2xvdHN5bmMuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwv c2xvdHN5bmMuYwppbmRleCAzMDQ4MDk2MGM1Li45Yzk1YTRiMDYyIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Nsb3RzeW5jLmMKKysrIGIvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC9zbG90c3luYy5jCkBAIC0xMzcsOSArMTM3LDEyIEBAIHR5cGVk ZWYgc3RydWN0IFJlbW90ZVNsb3QKIAogCS8qIFJTX0lOVkFMX05PTkUgaWYgdmFsaWQsIG9yIHRo ZSByZWFzb24gb2YgaW52YWxpZGF0aW9uICovCiAJUmVwbGljYXRpb25TbG90SW52YWxpZGF0aW9u Q2F1c2UgaW52YWxpZGF0ZWQ7CisKKwlUaW1lc3RhbXBUeiBpbmFjdGl2ZV9zaW5jZTsgLyogaW4g c2Vjb25kcyAqLwogfSBSZW1vdGVTbG90OwogCiBzdGF0aWMgdm9pZCBzbG90c3luY19mYWlsdXJl X2NhbGxiYWNrKGludCBjb2RlLCBEYXR1bSBhcmcpOworc3RhdGljIHZvaWQgdXBkYXRlX3N5bmNl ZF9zbG90c19pbmFjdGl2ZV9zaW5jZSh2b2lkKTsKIAogLyoKICAqIElmIG5lY2Vzc2FyeSwgdXBk YXRlIHRoZSBsb2NhbCBzeW5jZWQgc2xvdCdzIG1ldGFkYXRhIGJhc2VkIG9uIHRoZSBkYXRhCkBA IC0xNjcsNiArMTcwLDcgQEAgdXBkYXRlX2xvY2FsX3N5bmNlZF9zbG90KFJlbW90ZVNsb3QgKnJl bW90ZV9zbG90LCBPaWQgcmVtb3RlX2RiaWQpCiAJCXJlbW90ZV9zbG90LT50d29fcGhhc2UgPT0g c2xvdC0+ZGF0YS50d29fcGhhc2UgJiYKIAkJcmVtb3RlX3Nsb3QtPmZhaWxvdmVyID09IHNsb3Qt PmRhdGEuZmFpbG92ZXIgJiYKIAkJcmVtb3RlX3Nsb3QtPmNvbmZpcm1lZF9sc24gPT0gc2xvdC0+ ZGF0YS5jb25maXJtZWRfZmx1c2ggJiYKKwkJcmVtb3RlX3Nsb3QtPmluYWN0aXZlX3NpbmNlID09 IHNsb3QtPmluYWN0aXZlX3NpbmNlICYmCiAJCXN0cmNtcChyZW1vdGVfc2xvdC0+cGx1Z2luLCBO YW1lU3RyKHNsb3QtPmRhdGEucGx1Z2luKSkgPT0gMCkKIAkJcmV0dXJuIGZhbHNlOwogCkBAIC0x ODIsNiArMTg2LDcgQEAgdXBkYXRlX2xvY2FsX3N5bmNlZF9zbG90KFJlbW90ZVNsb3QgKnJlbW90 ZV9zbG90LCBPaWQgcmVtb3RlX2RiaWQpCiAJc2xvdC0+ZGF0YS5jb25maXJtZWRfZmx1c2ggPSBy ZW1vdGVfc2xvdC0+Y29uZmlybWVkX2xzbjsKIAlzbG90LT5kYXRhLmNhdGFsb2dfeG1pbiA9IHJl bW90ZV9zbG90LT5jYXRhbG9nX3htaW47CiAJc2xvdC0+ZWZmZWN0aXZlX2NhdGFsb2dfeG1pbiA9 IHJlbW90ZV9zbG90LT5jYXRhbG9nX3htaW47CisJc2xvdC0+aW5hY3RpdmVfc2luY2UgPSByZW1v dGVfc2xvdC0+aW5hY3RpdmVfc2luY2U7CiAJU3BpbkxvY2tSZWxlYXNlKCZzbG90LT5tdXRleCk7 CiAKIAlpZiAoeG1pbl9jaGFuZ2VkKQpAQCAtNjUyLDkgKzY1Nyw5IEBAIHN5bmNocm9uaXplX29u ZV9zbG90KFJlbW90ZVNsb3QgKnJlbW90ZV9zbG90LCBPaWQgcmVtb3RlX2RiaWQpCiBzdGF0aWMg Ym9vbAogc3luY2hyb25pemVfc2xvdHMoV2FsUmVjZWl2ZXJDb25uICp3cmNvbm4pCiB7Ci0jZGVm aW5lIFNMT1RTWU5DX0NPTFVNTl9DT1VOVCA5CisjZGVmaW5lIFNMT1RTWU5DX0NPTFVNTl9DT1VO VCAxMAogCU9pZAkJCXNsb3RSb3dbU0xPVFNZTkNfQ09MVU1OX0NPVU5UXSA9IHtURVhUT0lELCBU RVhUT0lELCBMU05PSUQsCi0JTFNOT0lELCBYSURPSUQsIEJPT0xPSUQsIEJPT0xPSUQsIFRFWFRP SUQsIFRFWFRPSUR9OworCUxTTk9JRCwgWElET0lELCBCT09MT0lELCBCT09MT0lELCBURVhUT0lE LCBURVhUT0lELCBUSU1FU1RBTVBUWk9JRH07CiAKIAlXYWxSY3ZFeGVjUmVzdWx0ICpyZXM7CiAJ VHVwbGVUYWJsZVNsb3QgKnR1cHNsb3Q7CkBAIC02NjMsNyArNjY4LDcgQEAgc3luY2hyb25pemVf c2xvdHMoV2FsUmVjZWl2ZXJDb25uICp3cmNvbm4pCiAJYm9vbAkJc3RhcnRlZF90eCA9IGZhbHNl OwogCWNvbnN0IGNoYXIgKnF1ZXJ5ID0gIlNFTEVDVCBzbG90X25hbWUsIHBsdWdpbiwgY29uZmly bWVkX2ZsdXNoX2xzbiwiCiAJCSIgcmVzdGFydF9sc24sIGNhdGFsb2dfeG1pbiwgdHdvX3BoYXNl LCBmYWlsb3ZlciwiCi0JCSIgZGF0YWJhc2UsIGludmFsaWRhdGlvbl9yZWFzb24iCisJCSIgZGF0 YWJhc2UsIGludmFsaWRhdGlvbl9yZWFzb24sIGluYWN0aXZlX3NpbmNlIgogCQkiIEZST00gcGdf Y2F0YWxvZy5wZ19yZXBsaWNhdGlvbl9zbG90cyIKIAkJIiBXSEVSRSBmYWlsb3ZlciBhbmQgTk9U IHRlbXBvcmFyeSI7CiAKQEAgLTc0Myw2ICs3NDgsMTMgQEAgc3luY2hyb25pemVfc2xvdHMoV2Fs UmVjZWl2ZXJDb25uICp3cmNvbm4pCiAJCXJlbW90ZV9zbG90LT5pbnZhbGlkYXRlZCA9IGlzbnVs bCA/IFJTX0lOVkFMX05PTkUgOgogCQkJR2V0U2xvdEludmFsaWRhdGlvbkNhdXNlKFRleHREYXR1 bUdldENTdHJpbmcoZCkpOwogCisJCS8qCisJCSAqIEl0IGlzIHBvc3NpYmxlIHRvIGdldCBudWxs IHZhbHVlIGZvciBpbmFjdGl2ZV9zaW5jZSBpZiB0aGUgc2xvdCBpcworCQkgKiBhY3RpdmUgb24g dGhlIHByaW1hcnkgc2VydmVyLCBzbyBoYW5kbGUgYWNjb3JkaW5nbHkuCisJCSAqLworCQlkID0g c2xvdF9nZXRhdHRyKHR1cHNsb3QsICsrY29sLCAmaXNudWxsKTsKKwkJcmVtb3RlX3Nsb3QtPmlu YWN0aXZlX3NpbmNlID0gaXNudWxsID8gMCA6IERhdHVtR2V0VGltZXN0YW1wVHooZCk7CisKIAkJ LyogU2FuaXR5IGNoZWNrICovCiAJCUFzc2VydChjb2wgPT0gU0xPVFNZTkNfQ09MVU1OX0NPVU5U KTsKIApAQCAtMTI5Niw2ICsxMzA4LDQ2IEBAIFJlcGxTbG90U3luY1dvcmtlck1haW4oY2hhciAq c3RhcnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1cF9kYXRhX2xlbikKIAlBc3NlcnQoZmFsc2UpOwog fQogCisvKgorICogVXBkYXRlIHRoZSBpbmFjdGl2ZV9zaW5jZSBwcm9wZXJ0eSBmb3Igc3luY2Vk IHNsb3RzLgorICovCitzdGF0aWMgdm9pZAordXBkYXRlX3N5bmNlZF9zbG90c19pbmFjdGl2ZV9z aW5jZSh2b2lkKQoreworCVRpbWVzdGFtcFR6IG5vdyA9IDA7CisKKwlMV0xvY2tBY3F1aXJlKFJl cGxpY2F0aW9uU2xvdENvbnRyb2xMb2NrLCBMV19TSEFSRUQpOworCisJZm9yIChpbnQgaSA9IDA7 IGkgPCBtYXhfcmVwbGljYXRpb25fc2xvdHM7IGkrKykKKwl7CisJCVJlcGxpY2F0aW9uU2xvdCAq cyA9ICZSZXBsaWNhdGlvblNsb3RDdGwtPnJlcGxpY2F0aW9uX3Nsb3RzW2ldOworCisJCS8qIENo ZWNrIGlmIGl0IGlzIGEgc3luY2hyb25pemVkIHNsb3QgKi8KKwkJaWYgKHMtPmluX3VzZSAmJiBz LT5kYXRhLnN5bmNlZCkKKwkJeworCQkJQXNzZXJ0KFNsb3RJc0xvZ2ljYWwocykpOworCisJCQkv KgorCQkJICogV2UgZ2V0IHRoZSBjdXJyZW50IHRpbWUgYmVmb3JlaGFuZCBhbmQgb25seSBvbmNl IHRvIGF2b2lkCisJCQkgKiBzeXN0ZW0gY2FsbHMgb3ZlcmhlYWQgd2hpbGUgaG9sZGluZyB0aGUg bG9jay4KKwkJCSAqLworCQkJaWYgKG5vdyA9PSAwKQorCQkJCW5vdyA9IEdldEN1cnJlbnRUaW1l c3RhbXAoKTsKKworCQkJLyoKKwkJCSAqIFNldCB0aGUgdGltZSBzaW5jZSB0aGUgc2xvdCBoYXMg YmVjb21lIGluYWN0aXZlIGFmdGVyIHNodXR0aW5nCisJCQkgKiBkb3duIHNsb3Qgc3luYyBtYWNo aW5lcnkuIFRoaXMgaGVscHMgY29ycmVjdGx5IGludGVycHJldCB0aGUKKwkJCSAqIHRpbWUgaWYg dGhlIHN0YW5kYnkgZ2V0cyBwcm9tb3RlZCB3aXRob3V0IGEgcmVzdGFydC4KKwkJCSAqLworCQkJ U3BpbkxvY2tBY3F1aXJlKCZzLT5tdXRleCk7CisJCQlzLT5pbmFjdGl2ZV9zaW5jZSA9IG5vdzsK KwkJCVNwaW5Mb2NrUmVsZWFzZSgmcy0+bXV0ZXgpOworCQl9CisJfQorCisJTFdMb2NrUmVsZWFz ZShSZXBsaWNhdGlvblNsb3RDb250cm9sTG9jayk7Cit9CisKIC8qCiAgKiBTaHV0IGRvd24gdGhl IHNsb3Qgc3luYyB3b3JrZXIuCiAgKi8KQEAgLTEzMDksNiArMTM2MSw3IEBAIFNodXREb3duU2xv dFN5bmModm9pZCkKIAlpZiAoU2xvdFN5bmNDdHgtPnBpZCA9PSBJbnZhbGlkUGlkKQogCXsKIAkJ U3BpbkxvY2tSZWxlYXNlKCZTbG90U3luY0N0eC0+bXV0ZXgpOworCQl1cGRhdGVfc3luY2VkX3Ns b3RzX2luYWN0aXZlX3NpbmNlKCk7CiAJCXJldHVybjsKIAl9CiAJU3BpbkxvY2tSZWxlYXNlKCZT bG90U3luY0N0eC0+bXV0ZXgpOwpAQCAtMTM0MSw2ICsxMzk0LDggQEAgU2h1dERvd25TbG90U3lu Yyh2b2lkKQogCX0KIAogCVNwaW5Mb2NrUmVsZWFzZSgmU2xvdFN5bmNDdHgtPm11dGV4KTsKKwor CXVwZGF0ZV9zeW5jZWRfc2xvdHNfaW5hY3RpdmVfc2luY2UoKTsKIH0KIAogLyoKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL3Nsb3QuYwppbmRleCBkNzc4YzBiOTIxLi41ZDY4ODJlNGRiIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9zbG90LmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v c2xvdC5jCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiYWNjZXNzL3RyYW5zYW0uaCIKICNp bmNsdWRlICJhY2Nlc3MveGxvZ19pbnRlcm5hbC5oIgogI2luY2x1ZGUgImFjY2Vzcy94bG9ncmVj b3ZlcnkuaCIKKyNpbmNsdWRlICJhY2Nlc3MveGxvZ3V0aWxzLmgiCiAjaW5jbHVkZSAiY29tbW9u L2ZpbGVfdXRpbHMuaCIKICNpbmNsdWRlICJjb21tb24vc3RyaW5nLmgiCiAjaW5jbHVkZSAibWlz Y2FkbWluLmgiCkBAIC02NTUsNiArNjU2LDcgQEAgUmVwbGljYXRpb25TbG90UmVsZWFzZSh2b2lk KQogCWNoYXIJICAgKnNsb3RuYW1lID0gTlVMTDsJLyoga2VlcCBjb21waWxlciBxdWlldCAqLwog CWJvb2wJCWlzX2xvZ2ljYWwgPSBmYWxzZTsgLyoga2VlcCBjb21waWxlciBxdWlldCAqLwogCVRp bWVzdGFtcFR6IG5vdyA9IDA7CisJYm9vbAkJdXBkYXRlX2luYWN0aXZlX3NpbmNlOwogCiAJQXNz ZXJ0KHNsb3QgIT0gTlVMTCAmJiBzbG90LT5hY3RpdmVfcGlkICE9IDApOwogCkBAIC02OTAsMTMg KzY5MiwxOSBAQCBSZXBsaWNhdGlvblNsb3RSZWxlYXNlKHZvaWQpCiAJfQogCiAJLyoKLQkgKiBT ZXQgdGhlIGxhc3QgaW5hY3RpdmUgdGltZSBhZnRlciBtYXJraW5nIHRoZSBzbG90IGluYWN0aXZl LiBXZSBkb24ndAotCSAqIHNldCBpdCBmb3IgdGhlIHNsb3RzIGN1cnJlbnRseSBiZWluZyBzeW5j ZWQgZnJvbSB0aGUgcHJpbWFyeSB0byB0aGUKLQkgKiBzdGFuZGJ5IGJlY2F1c2Ugc3VjaCBzbG90 cyBhcmUgdHlwaWNhbGx5IGluYWN0aXZlIGFzIGRlY29kaW5nIGlzIG5vdAotCSAqIGFsbG93ZWQg b24gdGhvc2UuCisJICogU2V0IHRoZSB0aW1lIHNpbmNlIHRoZSBzbG90IGhhcyBiZWNvbWUgaW5h Y3RpdmUuCisJICoKKwkgKiBOb3RlIHRoYXQgd2UgZG9uJ3Qgc2V0IGl0IGZvciB0aGUgc2xvdHMg Y3VycmVudGx5IGJlaW5nIHN5bmNlZCBmcm9tIHRoZQorCSAqIHByaW1hcnkgdG8gdGhlIHN0YW5k YnksIGJlY2F1c2Ugc3VjaCBzbG90cyB0eXBpY2FsbHkgc3luYyB0aGUgZGF0YSBmcm9tCisJICog dGhlIHJlbW90ZSBzbG90LgogCSAqLwogCWlmICghKFJlY292ZXJ5SW5Qcm9ncmVzcygpICYmIHNs b3QtPmRhdGEuc3luY2VkKSkKKwl7CiAJCW5vdyA9IEdldEN1cnJlbnRUaW1lc3RhbXAoKTsKKwkJ dXBkYXRlX2luYWN0aXZlX3NpbmNlID0gdHJ1ZTsKKwl9CisJZWxzZQorCQl1cGRhdGVfaW5hY3Rp dmVfc2luY2UgPSBmYWxzZTsKIAogCWlmIChzbG90LT5kYXRhLnBlcnNpc3RlbmN5ID09IFJTX1BF UlNJU1RFTlQpCiAJewpAQCAtNzA2LDExICs3MTQsMTIgQEAgUmVwbGljYXRpb25TbG90UmVsZWFz ZSh2b2lkKQogCQkgKi8KIAkJU3BpbkxvY2tBY3F1aXJlKCZzbG90LT5tdXRleCk7CiAJCXNsb3Qt PmFjdGl2ZV9waWQgPSAwOwotCQlzbG90LT5pbmFjdGl2ZV9zaW5jZSA9IG5vdzsKKwkJaWYgKHVw ZGF0ZV9pbmFjdGl2ZV9zaW5jZSkKKwkJCXNsb3QtPmluYWN0aXZlX3NpbmNlID0gbm93OwogCQlT cGluTG9ja1JlbGVhc2UoJnNsb3QtPm11dGV4KTsKIAkJQ29uZGl0aW9uVmFyaWFibGVCcm9hZGNh c3QoJnNsb3QtPmFjdGl2ZV9jdik7CiAJfQotCWVsc2UKKwllbHNlIGlmICh1cGRhdGVfaW5hY3Rp dmVfc2luY2UpCiAJewogCQlTcGluTG9ja0FjcXVpcmUoJnNsb3QtPm11dGV4KTsKIAkJc2xvdC0+ aW5hY3RpdmVfc2luY2UgPSBub3c7CkBAIC0yMzY5LDEzICsyMzc4LDIxIEBAIFJlc3RvcmVTbG90 RnJvbURpc2soY29uc3QgY2hhciAqbmFtZSkKIAkJc2xvdC0+YWN0aXZlX3BpZCA9IDA7CiAKIAkJ LyoKLQkJICogV2Ugc2V0IHRoZSBsYXN0IGluYWN0aXZlIHRpbWUgYWZ0ZXIgbG9hZGluZyB0aGUg c2xvdCBmcm9tIHRoZSBkaXNrCi0JCSAqIGludG8gbWVtb3J5LiBXaG9ldmVyIGFjcXVpcmVzIHRo ZSBzbG90IGkuZS4gbWFrZXMgdGhlIHNsb3QgYWN0aXZlCi0JCSAqIHdpbGwgcmVzZXQgaXQuIFdl IGRvbid0IHNldCBpdCBmb3IgdGhlIHNsb3RzIGN1cnJlbnRseSBiZWluZyBzeW5jZWQKLQkJICog ZnJvbSB0aGUgcHJpbWFyeSB0byB0aGUgc3RhbmRieSBiZWNhdXNlIHN1Y2ggc2xvdHMgYXJlIHR5 cGljYWxseQotCQkgKiBpbmFjdGl2ZSBhcyBkZWNvZGluZyBpcyBub3QgYWxsb3dlZCBvbiB0aG9z ZS4KKwkJICogU2V0IHRoZSB0aW1lIHNpbmNlIHRoZSBzbG90IGhhcyBiZWNvbWUgaW5hY3RpdmUg YWZ0ZXIgbG9hZGluZyB0aGUKKwkJICogc2xvdCBmcm9tIHRoZSBkaXNrIGludG8gbWVtb3J5LiBX aG9ldmVyIGFjcXVpcmVzIHRoZSBzbG90IGkuZS4KKwkJICogbWFrZXMgdGhlIHNsb3QgYWN0aXZl IHdpbGwgcmVzZXQgaXQuCisJCSAqCisJCSAqIE5vdGUgdGhhdCB3ZSBkb24ndCBzZXQgaXQgZm9y IHRoZSBzbG90cyBjdXJyZW50bHkgYmVpbmcgc3luY2VkIGZyb20KKwkJICogdGhlIHByaW1hcnkg dG8gdGhlIHN0YW5kYnksIGJlY2F1c2Ugc3VjaCBzbG90cyB0eXBpY2FsbHkgc3luYyB0aGUKKwkJ ICogZGF0YSBmcm9tIHRoZSByZW1vdGUgc2xvdC4gV2UgdXNlIEluUmVjb3ZlcnkgZmxhZyBpbnN0 ZWFkIG9mCisJCSAqIFJlY292ZXJ5SW5Qcm9ncmVzcygpIGFzIHRoZSBsYXR0ZXIgYWx3YXlzIHJl dHVybnMgdHJ1ZSBhdCB0aGlzIHRpbWUKKwkJICogZXZlbiBvbiBwcmltYXJ5LgorCQkgKgorCQkg KiBOb3RlIHRoYXQgZm9yIHN5bmNlZCBzbG90cyBhZnRlciB0aGUgc3RhbmRieSBzdGFydHMgdXAg KGkuZS4gYWZ0ZXIKKwkJICogdGhlIHNsb3RzIGFyZSBsb2FkZWQgZnJvbSB0aGUgZGlzayksIHRo ZSBpbmFjdGl2ZV9zaW5jZSB3aWxsIHJlbWFpbgorCQkgKiB6ZXJvIHVudGlsIHRoZSBuZXh0IHNs b3Qgc3luYyBjeWNsZS4KIAkJICovCi0JCWlmICghKFJlY292ZXJ5SW5Qcm9ncmVzcygpICYmIHNs b3QtPmRhdGEuc3luY2VkKSkKKwkJaWYgKCEoSW5SZWNvdmVyeSAmJiBzbG90LT5kYXRhLnN5bmNl ZCkpCiAJCQlzbG90LT5pbmFjdGl2ZV9zaW5jZSA9IEdldEN1cnJlbnRUaW1lc3RhbXAoKTsKIAkJ ZWxzZQogCQkJc2xvdC0+aW5hY3RpdmVfc2luY2UgPSAwOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv cGVybC9Qb3N0Z3JlU1FML1Rlc3QvQ2x1c3Rlci5wbSBiL3NyYy90ZXN0L3BlcmwvUG9zdGdyZVNR TC9UZXN0L0NsdXN0ZXIucG0KaW5kZXggYjA4Mjk2NjA1Yy4uMjM2YjIxMjVlNCAxMDA2NDQKLS0t IGEvc3JjL3Rlc3QvcGVybC9Qb3N0Z3JlU1FML1Rlc3QvQ2x1c3Rlci5wbQorKysgYi9zcmMvdGVz dC9wZXJsL1Bvc3RncmVTUUwvVGVzdC9DbHVzdGVyLnBtCkBAIC0zMjc2LDYgKzMyNzYsNDAgQEAg c3ViIGNyZWF0ZV9sb2dpY2FsX3Nsb3Rfb25fc3RhbmRieQogCiA9cG9kCiAKKz1pdGVtICRub2Rl LT5nZXRfc2xvdF9pbmFjdGl2ZV9zaW5jZV92YWx1ZShzZWxmLCBwcmltYXJ5LCBzbG90X25hbWUs IGRibmFtZSkKKworR2V0IGluYWN0aXZlX3NpbmNlIGNvbHVtbiB2YWx1ZSBmb3IgYSBnaXZlbiBy ZXBsaWNhdGlvbiBzbG90IHZhbGlkYXRpbmcgaXQKK2FnYWluc3Qgb3B0aW9uYWwgcmVmZXJlbmNl IHRpbWUuCisKKz1jdXQKKworc3ViIGdldF9zbG90X2luYWN0aXZlX3NpbmNlX3ZhbHVlCit7CisJ bXkgKCRzZWxmLCAkc2xvdF9uYW1lLCAkcmVmZXJlbmNlX3RpbWUpID0gQF87CisJbXkgJG5hbWUg PSAkc2VsZi0+bmFtZTsKKworCW15ICRpbmFjdGl2ZV9zaW5jZSA9ICRzZWxmLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKKwkJcXEoU0VMRUNUIGluYWN0aXZlX3NpbmNlIEZST00gcGdfcmVwbGljYXRp b25fc2xvdHMKKwkJCVdIRVJFIHNsb3RfbmFtZSA9ICckc2xvdF9uYW1lJyBBTkQgaW5hY3RpdmVf c2luY2UgSVMgTk9UIE5VTEw7KQorCQkpOworCisJIyBDaGVjayB0aGF0IHRoZSBjYXB0dXJlZCB0 aW1lIGlzIHNhbmUKKwlpZiAoZGVmaW5lZCAkcmVmZXJlbmNlX3RpbWUpCisJeworCQlpcygkc2Vs Zi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCQlxcVtTRUxFQ1QgJyRpbmFjdGl2ZV9zaW5jZSc6 OnRpbWVzdGFtcHR6ID4gdG9fdGltZXN0YW1wKDApIEFORAorCQkJCQknJGluYWN0aXZlX3NpbmNl Jzo6dGltZXN0YW1wdHogPj0gJyRyZWZlcmVuY2VfdGltZSc6OnRpbWVzdGFtcHR6O10KKwkJCSks CisJCQkndCcsCisJCQkibGFzdCBpbmFjdGl2ZSB0aW1lIGZvciBzbG90ICRzbG90X25hbWUgaXMg dmFsaWQgb24gbm9kZSAkbmFtZSIpCisJCQlvciBkaWUgImNvdWxkIG5vdCB2YWxpZGF0ZSBjYXB0 dXJlZCBpbmFjdGl2ZV9zaW5jZSBmb3Igc2xvdCAkc2xvdF9uYW1lIjsKKwl9CisKKwlyZXR1cm4g JGluYWN0aXZlX3NpbmNlOworfQorCis9cG9kCisKID1pdGVtICRub2RlLT5hZHZhbmNlX3dhbChu dW0pCiAKIEFkdmFuY2UgV0FMIG9mIG5vZGUgYnkgZ2l2ZW4gbnVtYmVyIG9mIHNlZ21lbnRzLgpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMTlfcmVwbHNsb3RfbGltaXQucGwgYi9z cmMvdGVzdC9yZWNvdmVyeS90LzAxOV9yZXBsc2xvdF9saW1pdC5wbAppbmRleCAzYjlhMzA2YThi Li5jOGU1ZTUwNTRkIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWNvdmVyeS90LzAxOV9yZXBsc2xv dF9saW1pdC5wbAorKysgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzAxOV9yZXBsc2xvdF9saW1pdC5w bApAQCAtNDQzLDcgKzQ0Myw3IEBAICRwcmltYXJ5NC0+c2FmZV9wc3FsKAogIyBHZXQgaW5hY3Rp dmVfc2luY2UgdmFsdWUgYWZ0ZXIgdGhlIHNsb3QncyBjcmVhdGlvbi4gTm90ZSB0aGF0IHRoZSBz bG90IGlzCiAjIHN0aWxsIGluYWN0aXZlIHRpbGwgaXQncyB1c2VkIGJ5IHRoZSBzdGFuZGJ5IGJl bG93LgogbXkgJGluYWN0aXZlX3NpbmNlID0KLQljYXB0dXJlX2FuZF92YWxpZGF0ZV9zbG90X2lu YWN0aXZlX3NpbmNlKCRwcmltYXJ5NCwgJHNiNF9zbG90LCAkc2xvdF9jcmVhdGlvbl90aW1lKTsK KwkkcHJpbWFyeTQtPmdldF9zbG90X2luYWN0aXZlX3NpbmNlX3ZhbHVlKCRzYjRfc2xvdCwgJHNs b3RfY3JlYXRpb25fdGltZSk7CiAKICRzdGFuZGJ5NC0+c3RhcnQ7CiAKQEAgLTUwMiw3ICs1MDIs NyBAQCAkcHVibGlzaGVyNC0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAjIEdldCBpbmFjdGl2ZV9z aW5jZSB2YWx1ZSBhZnRlciB0aGUgc2xvdCdzIGNyZWF0aW9uLiBOb3RlIHRoYXQgdGhlIHNsb3Qg aXMKICMgc3RpbGwgaW5hY3RpdmUgdGlsbCBpdCdzIHVzZWQgYnkgdGhlIHN1YnNjcmliZXIgYmVs b3cuCiAkaW5hY3RpdmVfc2luY2UgPQotCWNhcHR1cmVfYW5kX3ZhbGlkYXRlX3Nsb3RfaW5hY3Rp dmVfc2luY2UoJHB1Ymxpc2hlcjQsICRsc3ViNF9zbG90LCAkc2xvdF9jcmVhdGlvbl90aW1lKTsK KwkkcHVibGlzaGVyNC0+Z2V0X3Nsb3RfaW5hY3RpdmVfc2luY2VfdmFsdWUoJGxzdWI0X3Nsb3Qs ICRzbG90X2NyZWF0aW9uX3RpbWUpOwogCiAkc3Vic2NyaWJlcjQtPnN0YXJ0OwogJHN1YnNjcmli ZXI0LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKQEAgLTU0MCwyNiArNTQwLDQgQEAgaXMoICRwdWJs aXNoZXI0LT5zYWZlX3BzcWwoCiAkcHVibGlzaGVyNC0+c3RvcDsKICRzdWJzY3JpYmVyNC0+c3Rv cDsKIAotIyBDYXB0dXJlIGFuZCB2YWxpZGF0ZSBpbmFjdGl2ZV9zaW5jZSBvZiBhIGdpdmVuIHNs b3QuCi1zdWIgY2FwdHVyZV9hbmRfdmFsaWRhdGVfc2xvdF9pbmFjdGl2ZV9zaW5jZQotewotCW15 ICgkbm9kZSwgJHNsb3RfbmFtZSwgJHNsb3RfY3JlYXRpb25fdGltZSkgPSBAXzsKLQotCW15ICRp bmFjdGl2ZV9zaW5jZSA9ICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkJcXEoU0VMRUNU IGluYWN0aXZlX3NpbmNlIEZST00gcGdfcmVwbGljYXRpb25fc2xvdHMKLQkJCVdIRVJFIHNsb3Rf bmFtZSA9ICckc2xvdF9uYW1lJyBBTkQgaW5hY3RpdmVfc2luY2UgSVMgTk9UIE5VTEw7KQotCQkp OwotCi0JIyBDaGVjayB0aGF0IHRoZSBjYXB0dXJlZCB0aW1lIGlzIHNhbmUKLQlpcyggJG5vZGUt PnNhZmVfcHNxbCgKLQkJCSdwb3N0Z3JlcycsCi0JCQlxcVtTRUxFQ1QgJyRpbmFjdGl2ZV9zaW5j ZSc6OnRpbWVzdGFtcHR6ID4gdG9fdGltZXN0YW1wKDApIEFORAotCQkJCSckaW5hY3RpdmVfc2lu Y2UnOjp0aW1lc3RhbXB0eiA+PSAnJHNsb3RfY3JlYXRpb25fdGltZSc6OnRpbWVzdGFtcHR6O10K LQkJKSwKLQkJJ3QnLAotCQkibGFzdCBpbmFjdGl2ZSB0aW1lIGZvciBhbiBhY3RpdmUgc2xvdCAk c2xvdF9uYW1lIGlzIHNhbmUiKTsKLQotCXJldHVybiAkaW5hY3RpdmVfc2luY2U7Ci19Ci0KIGRv bmVfdGVzdGluZygpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNDBfc3RhbmRi eV9mYWlsb3Zlcl9zbG90c19zeW5jLnBsIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNDBfc3RhbmRi eV9mYWlsb3Zlcl9zbG90c19zeW5jLnBsCmluZGV4IGY0N2JmZDc4ZWIuLjMzZTNhOGRjZjAgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDQwX3N0YW5kYnlfZmFpbG92ZXJfc2xvdHNf c3luYy5wbAorKysgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzA0MF9zdGFuZGJ5X2ZhaWxvdmVyX3Ns b3RzX3N5bmMucGwKQEAgLTM1LDYgKzM1LDEzIEBAIG15ICRzdWJzY3JpYmVyMSA9IFBvc3RncmVT UUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnc3Vic2NyaWJlcjEnKTsKICRzdWJzY3JpYmVyMS0+aW5p dDsKICRzdWJzY3JpYmVyMS0+c3RhcnQ7CiAKKyMgQ2FwdHVyZSB0aGUgdGltZSBiZWZvcmUgdGhl IGxvZ2ljYWwgZmFpbG92ZXIgc2xvdCBpcyBjcmVhdGVkIG9uIHRoZQorIyBwcmltYXJ5LiBXZSBs YXRlciBjYWxsIHRoaXMgcHVibGlzaGVyIGFzIHByaW1hcnkgYW55d2F5LgorbXkgJHNsb3RfY3Jl YXRpb25fdGltZV9vbl9wcmltYXJ5ID0gJHB1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3Jl cycsIHFxWworICAgIFNFTEVDVCBjdXJyZW50X3RpbWVzdGFtcDsKK10pOworCiAjIENyZWF0ZSBh IHNsb3Qgb24gdGhlIHB1Ymxpc2hlciB3aXRoIGZhaWxvdmVyIGRpc2FibGVkCiAkcHVibGlzaGVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiU0VMRUNUICdpbml0JyBGUk9NIHBnX2NyZWF0ZV9s b2dpY2FsX3JlcGxpY2F0aW9uX3Nsb3QoJ2xzdWIxX3Nsb3QnLCAncGdvdXRwdXQnLCBmYWxzZSwg ZmFsc2UsIGZhbHNlKTsiCkBAIC0xNzQsNiArMTgxLDEwIEBAICRwcmltYXJ5LT5wb2xsX3F1ZXJ5 X3VudGlsKAogCSJTRUxFQ1QgQ09VTlQoKikgRlJPTSBwZ19jYXRhbG9nLnBnX3JlcGxpY2F0aW9u X3Nsb3RzIFdIRVJFIHNsb3RfbmFtZSA9ICdsc3ViMV9zbG90JyBBTkQgYWN0aXZlID0gJ2YnIiwK IAkxKTsKIAorIyBDYXB0dXJlIHRoZSBpbmFjdGl2ZV9zaW5jZSBvZiB0aGUgc2xvdCBmcm9tIHRo ZSBwcmltYXJ5CitteSAkaW5hY3RpdmVfc2luY2Vfb25fcHJpbWFyeSA9CisJJHByaW1hcnktPmdl dF9zbG90X2luYWN0aXZlX3NpbmNlX3ZhbHVlKCdsc3ViMV9zbG90JywgJHNsb3RfY3JlYXRpb25f dGltZV9vbl9wcmltYXJ5KTsKKwogIyBXYWl0IGZvciB0aGUgc3RhbmRieSB0byBjYXRjaCB1cCBz byB0aGF0IHRoZSBzdGFuZGJ5IGlzIG5vdCBsYWdnaW5nIGJlaGluZAogIyB0aGUgc3Vic2NyaWJl ci4KICRwcmltYXJ5LT53YWl0X2Zvcl9yZXBsYXlfY2F0Y2h1cCgkc3RhbmRieTEpOwpAQCAtMTkw LDYgKzIwMSwxOCBAQCBpcyggJHN0YW5kYnkxLT5zYWZlX3BzcWwoCiAJInQiLAogCSdsb2dpY2Fs IHNsb3RzIGhhdmUgc3luY2VkIGFzIHRydWUgb24gc3RhbmRieScpOwogCisjIENhcHR1cmUgdGhl IGluYWN0aXZlX3NpbmNlIG9mIHRoZSBzeW5jZWQgc2xvdCBvbiB0aGUgc3RhbmRieQorbXkgJGlu YWN0aXZlX3NpbmNlX29uX3N0YW5kYnkgPQorCSRzdGFuZGJ5MS0+Z2V0X3Nsb3RfaW5hY3RpdmVf c2luY2VfdmFsdWUoJ2xzdWIxX3Nsb3QnLCAkc2xvdF9jcmVhdGlvbl90aW1lX29uX3ByaW1hcnkp OworCisjIFN5bmNlZCBzbG90cyBvbiB0aGUgc3RhbmRieSBtdXN0IGdldCB0aGUgaW5hY3RpdmVf c2luY2UgZnJvbSB0aGUgcHJpbWFyeS4KK2lzKCAkc3RhbmRieTEtPnNhZmVfcHNxbCgKKwkJJ3Bv c3RncmVzJywKKwkJIlNFTEVDVCAnJGluYWN0aXZlX3NpbmNlX29uX3ByaW1hcnknOjp0aW1lc3Rh bXB0eiA9ICckaW5hY3RpdmVfc2luY2Vfb25fc3RhbmRieSc6OnRpbWVzdGFtcHR6OyIKKwkpLAor CSJ0IiwKKwknc3luY2hyb25pemVkIHNsb3QgaGFzIGdvdCB0aGUgaW5hY3RpdmVfc2luY2UgZnJv bSB0aGUgcHJpbWFyeScpOworCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIwogIyBUZXN0IHRoYXQgdGhlIHN5bmNocm9uaXplZCBzbG90IHdpbGwgYmUg ZHJvcHBlZCBpZiB0aGUgY29ycmVzcG9uZGluZyByZW1vdGUKICMgc2xvdCBvbiB0aGUgcHJpbWFy eSBzZXJ2ZXIgaGFzIGJlZW4gZHJvcHBlZC4KQEAgLTc1MCw4ICs3NzMsMjggQEAgJHByaW1hcnkt PnJlbG9hZDsKICRzdGFuZGJ5MS0+c3RhcnQ7CiAkcHJpbWFyeS0+d2FpdF9mb3JfcmVwbGF5X2Nh dGNodXAoJHN0YW5kYnkxKTsKIAorIyBDYXB0dXJlIHRoZSB0aW1lIGJlZm9yZSB0aGUgc3RhbmRi eSBpcyBwcm9tb3RlZAorbXkgJHByb21vdGlvbl90aW1lX29uX3ByaW1hcnkgPSAkc3RhbmRieTEt PnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcVsKKyAgICBTRUxFQ1QgY3VycmVudF90aW1lc3Rh bXA7CitdKTsKKwogJHN0YW5kYnkxLT5wcm9tb3RlOwogCisjIENhcHR1cmUgdGhlIGluYWN0aXZl X3NpbmNlIG9mIHRoZSBzeW5jZWQgc2xvdCBhZnRlciB0aGUgcHJvbW90aW9uLgorIyBFeHBlY3Rh dGlvbiBoZXJlIGlzIHRoYXQgdGhlIHNsb3QgZ2V0cyBpdHMgb3duIGluYWN0aXZlX3NpbmNlIGFz IHBhcnQgb2YgdGhlCisjIHByb21vdGlvbi4gV2UgZG8gdGhpcyBjaGVjayBiZWZvcmUgdGhlIHNs b3QgaXMgZW5hYmxlZCBvbiB0aGUgbmV3IHByaW1hcnkKKyMgYmVsb3csIG90aGVyd2lzZSB0aGUg c2xvdCBnZXRzIGFjdGl2ZSBzZXR0aW5nIGluYWN0aXZlX3NpbmNlIHRvIE5VTEwuCitteSAkaW5h Y3RpdmVfc2luY2Vfb25fbmV3X3ByaW1hcnkgPQorCSRzdGFuZGJ5MS0+Z2V0X3Nsb3RfaW5hY3Rp dmVfc2luY2VfdmFsdWUoJ2xzdWIxX3Nsb3QnLCAkcHJvbW90aW9uX3RpbWVfb25fcHJpbWFyeSk7 CisKK2lzKCAkc3RhbmRieTEtPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCAn JGluYWN0aXZlX3NpbmNlX29uX25ld19wcmltYXJ5Jzo6dGltZXN0YW1wdHogPiAnJGluYWN0aXZl X3NpbmNlX29uX3ByaW1hcnknOjp0aW1lc3RhbXB0eiIKKwkpLAorCSJ0IiwKKwknc3luY2hyb25p emVkIHNsb3QgaGFzIGdvdCBpdHMgb3duIGluYWN0aXZlX3NpbmNlIG9uIHRoZSBuZXcgcHJpbWFy eScpOworCiAjIFVwZGF0ZSBzdWJzY3JpcHRpb24gd2l0aCB0aGUgbmV3IHByaW1hcnkncyBjb25u ZWN0aW9uIGluZm8KIG15ICRzdGFuZGJ5MV9jb25uaW5mbyA9ICRzdGFuZGJ5MS0+Y29ubnN0ciAu ICcgZGJuYW1lPXBvc3RncmVzJzsKICRzdWJzY3JpYmVyMS0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs Ci0tIAoyLjM0LjEKCg== --000000000000e32c230614a37f63--