Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mG6Lb-0007UW-P5 for pgsql-hackers@arkaria.postgresql.org; Tue, 17 Aug 2021 21:10:12 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1mG6La-00081z-EC for pgsql-hackers@arkaria.postgresql.org; Tue, 17 Aug 2021 21:10:10 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mG6La-00080w-14 for pgsql-hackers@lists.postgresql.org; Tue, 17 Aug 2021 21:10:10 +0000 Received: from smtp-fw-80006.amazon.com ([99.78.197.217]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mG6LV-0006vQ-VL for pgsql-hackers@postgresql.org; Tue, 17 Aug 2021 21:10:09 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209; t=1629234607; x=1660770607; h=from:to:cc:date:message-id:references:in-reply-to: mime-version:subject; bh=mz2FZct9P0W9roB8fCd4131ckabOxixisD3pmZFIJaE=; b=cs/hvtYnbM2eFi4PiZR7jfghqRrMt4yXrXdJVpmTA7cUcBNARrS9luA+ yG0uZpijO7WIYloaNRVw2LC8MLFk04E8iTFMFot9wBv6oRDCHP+BGVoc6 nH6q6NazY0UziZpKs2lMfcphkPma2+ZXu37qOVa2PYzz+jfbUn+dHLMSk 0=; X-Amazon-filename: v8-0001-Avoid-creating-archive-status-.ready-files-too-ea.patch X-IronPort-AV: E=Sophos;i="5.84,329,1620691200"; d="scan'208,223";a="19899396" Subject: Re: archive status ".ready" files may be created too early Thread-Topic: archive status ".ready" files may be created too early Received: from pdx4-co-svc-p1-lb2-vlan3.amazon.com (HELO email-inbound-relay-1e-c7c08562.us-east-1.amazon.com) ([10.25.36.214]) by smtp-border-fw-80006.pdx80.corp.amazon.com with ESMTP; 17 Aug 2021 21:09:56 +0000 Received: from EX13MTAUWB001.ant.amazon.com (iad55-ws-svc-p15-lb9-vlan3.iad.amazon.com [10.40.159.166]) by email-inbound-relay-1e-c7c08562.us-east-1.amazon.com (Postfix) with ESMTPS id 773A224086F; Tue, 17 Aug 2021 21:09:54 +0000 (UTC) Received: from EX13D03UWC004.ant.amazon.com (10.43.162.49) by EX13MTAUWB001.ant.amazon.com (10.43.161.249) with Microsoft SMTP Server (TLS) id 15.0.1497.23; Tue, 17 Aug 2021 21:09:54 +0000 Received: from EX13D03UWC004.ant.amazon.com (10.43.162.49) by EX13D03UWC004.ant.amazon.com (10.43.162.49) with Microsoft SMTP Server (TLS) id 15.0.1497.23; Tue, 17 Aug 2021 21:09:53 +0000 Received: from EX13D03UWC004.ant.amazon.com ([10.43.162.49]) by EX13D03UWC004.ant.amazon.com ([10.43.162.49]) with mapi id 15.00.1497.023; Tue, 17 Aug 2021 21:09:53 +0000 From: "Bossart, Nathan" To: "alvherre@alvh.no-ip.org" CC: Kyotaro Horiguchi , "x4mmm@yandex-team.ru" , "a.lubennikova@postgrespro.ru" , "hlinnaka@iki.fi" , "matsumura.ryo@fujitsu.com" , "masao.fujii@gmail.com" , "pgsql-hackers@postgresql.org" Thread-Index: AQHXBlOcCCTzqq5m7Uma04zSuWx/6atYjIMA//+aBICABK+JgP//qfYAgACvAID//9F4gAAoArgA//+nPACAA9nigP//qHQAgACqMwCAAMe5AIACUeaAgAAjTwD//55qgIAAm8IAgACkkoCAAPBOAIAAPr4AgBHfpID//5e8AA== Date: Tue, 17 Aug 2021 21:09:52 +0000 Message-ID: <2A53AFB0-9A44-4EFE-BA83-072D000D9319@amazon.com> References: <867B852E-E892-4DD7-8E29-CE74FDBBA234@amazon.com> <202108172023.b52p6convvvd@alvherre.pgsql> In-Reply-To: <202108172023.b52p6convvvd@alvherre.pgsql> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: x-ms-exchange-messagesentrepresentingtype: 1 x-ms-exchange-transport-fromentityheader: Hosted x-originating-ip: [10.43.162.164] Content-Type: multipart/mixed; boundary="_002_2A53AFB09A444EFEBA83072D000D9319amazoncom_" MIME-Version: 1.0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_002_2A53AFB09A444EFEBA83072D000D9319amazoncom_ Content-Type: text/plain; charset="utf-8" Content-ID: <76C418F1BD3BBB46B42BBEB92F800452@amazon.com> Content-Transfer-Encoding: base64 T24gOC8xNy8yMSwgMToyNCBQTSwgImFsdmhlcnJlQGFsdmgubm8taXAub3JnIiA8YWx2aGVycmVA YWx2aC5uby1pcC5vcmc+IHdyb3RlOg0KPiBUaGUgdGhpbmcgSSBzdGlsbCBkb24ndCB1bmRlcnN0 YW5kIGFib3V0IHRoaXMgcGF0Y2ggaXMgd2h5IHdlIGNhbGwNCj4gUmVnaXN0ZXJTZWdtZW50Qm91 bmRhcnlFbnRyeSBhbmQgTm90aWZ5U2VnbWVudHNSZWFkeUZvckFyY2hpdmUgaW4NCj4gWExvZ0lu c2VydFJlY29yZC4NCj4NCj4gTXkgbW9kZWwgY29uY2VwdCBvZiB0aGlzIHdvdWxkIGhhdmUgdGhl c2Ugcm91dGluZXMgY2FsbGVkIG9ubHkgaW4NCj4gWExvZ0ZsdXNoIC8gWExvZ1dyaXRlLCB3aGlj aCBhcmUgY29uY2VwdHVhbGx5IGFib3V0IHRyYW5zZmVycmluZyBkYXRhDQo+IGZyb20gaW4tbWVt b3J5IFdBTCBidWZmZXJzIGludG8gdGhlIG9uLWRpc2sgV0FMIHN0b3JlIChwZ194bG9nIGZpbGVz KS4NCj4gQXMgSSB1bmRlcnN0YW5kLCBYTG9nSW5zZXJ0UmVjb3JkIGlzIGFib3V0IGNvcHlpbmcg Ynl0ZXMgZnJvbSB0aGUNCj4gaGlnaC1sZXZlbCBvcGVyYXRpb24gKGhlYXAgaW5zZXJ0IGV0Yykg aW50byBXQUwgYnVmZmVycy4gIFNvIGRvaW5nIHRoZQ0KPiByZWdpc3Rlci9ub3RpZnkgZGFuY2Ug aW4gYm90aCBwbGFjZXMgc2hvdWxkIGJlIHJlZHVuZGFudCBhbmQNCj4gdW5uZWNlc3NhcnkuDQoN ClRoZSBtYWluIHJlYXNvbiBmb3IgcmVnaXN0ZXJpbmcgdGhlIGJvdW5kYXJpZXMgaW4gWExvZ0lu c2VydFJlY29yZCgpDQppcyB0aGF0IGl0IGhhcyB0aGUgcmVxdWlyZWQgaW5mb3JtYXRpb24gYWJv dXQgdGhlIFdBTCByZWNvcmQNCmJvdW5kYXJpZXMuICBJIGRvIG5vdCB0aGluayB0aGF0IFhMb2dX cml0ZSgpIGhhcyB0aGlzIGluZm9ybWF0aW9uLg0KSWYgd2UgYXNzdW1lZCB0aGF0IHdyaXRlIHJl cXVlc3RzIGFsd2F5cyBwb2ludGVkIHRvIHJlY29yZCBib3VuZGFyaWVzLA0Kd2UgY291bGQgcHJv YmFibHkganVzdCBtb3ZlIHRoZSBYTG9nQXJjaGl2ZU5vdGlmeVNlZygpIGNhbGxzIHRvIHRoZQ0K ZW5kIG9mIFhMb2dXcml0ZSgpLCB3aGljaCBpcyB3aGF0IG15IG9yaWdpbmFsIHBhdGNoIFswXSBk aWQuDQoNCj4gSW4gdGhlIE5vdGlmeVNlZ21lbnRzUmVhZHlGb3JBcmNoaXZlKCkgY2FsbCBhdCB0 aGUgYm90dG9tIG9mIFhMb2dXcml0ZSwNCj4gd2UgdXNlIGZsdXNoZWQ9SW52YWxpZFhMb2dSZWNQ dHIuICBXaHkgaXMgdGhhdD8gIFN1cmVseSB3ZSBjYW4gdXNlDQo+IExvZ3dydFJlc3VsdC5GbHVz aCwganVzdCBsaWtlIGluIHRoZSBvdGhlciBjYWxsc2l0ZSB0aGVyZT8gIChJZiB3ZSdyZQ0KPiBj b3ZlcmluZyBmb3Igc29tZWJvZHkgYWR2YW5jaW5nIEZsdXNoUmVjUHRyIGNvbmN1cnJlbnRseSwg SSB0aGluayB3ZQ0KPiBhZGQgYSBjb21tZW50IHRvIGV4cGxhaW4gdGhhdC4gIEJ1dCB3aHkgZG8g d2UgbmVlZCB0byBkbyB0aGF0IGluIHRoZQ0KPiBmaXJzdCBwbGFjZT8pDQoNCkdvb2QgcG9pbnQu ICBJIGRpZCB0aGlzIGluIHRoZSBuZXcgdmVyc2lvbiBvZiB0aGUgcGF0Y2guDQoNCk5hdGhhbg0K DQpbMF0gaHR0cHM6Ly9wb3N0Z3IuZXMvbS9DQkRERkEwMS02RTQwLTQ2QkItOUY5OC05MzQwRjQz Nzk1MDUlNDBhbWF6b24uY29tDQoNCg== --_002_2A53AFB09A444EFEBA83072D000D9319amazoncom_ Content-Type: application/octet-stream; name="v8-0001-Avoid-creating-archive-status-.ready-files-too-ea.patch" Content-Description: v8-0001-Avoid-creating-archive-status-.ready-files-too-ea.patch Content-Disposition: attachment; filename="v8-0001-Avoid-creating-archive-status-.ready-files-too-ea.patch"; size=19433; creation-date="Tue, 17 Aug 2021 21:09:52 GMT"; modification-date="Tue, 17 Aug 2021 21:09:52 GMT" Content-ID: <953A843678B7AB409BF9BFD3FCC2B35D@amazon.com> Content-Transfer-Encoding: base64 RnJvbSBjN2E4MWViYzAxOGRkMWU1Y2I4ZmI4OTlkNGIyMjkzMjk5N2NiNzZmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOYXRoYW4gQm9zc2FydCA8Ym9zc2FydG5AYW1hem9uLmNvbT4K RGF0ZTogVHVlLCAxNyBBdWcgMjAyMSAyMDo1Mjo1MSArMDAwMApTdWJqZWN0OiBbUEFUQ0ggdjgg MS8xXSBBdm9pZCBjcmVhdGluZyBhcmNoaXZlIHN0YXR1cyAiLnJlYWR5IiBmaWxlcyB0b28KIGVh cmx5LgoKV0FMIHJlY29yZHMgbWF5IHNwYW4gbXVsdGlwbGUgc2VnbWVudHMsIGJ1dCBYTG9nV3Jp dGUoKSBkb2VzIG5vdAp3YWl0IGZvciB0aGUgZW50aXJlIHJlY29yZCB0byBiZSB3cml0dGVuIG91 dCB0byBkaXNrIGJlZm9yZQpjcmVhdGluZyBhcmNoaXZlIHN0YXR1cyBmaWxlcy4gIEluc3RlYWQs IGFzIHNvb24gYXMgdGhlIGxhc3QgV0FMCnBhZ2Ugb2YgdGhlIHNlZ21lbnQgaXMgd3JpdHRlbiwg dGhlIGFyY2hpdmUgc3RhdHVzIGZpbGUgd2lsbCBiZQpjcmVhdGVkLiAgSWYgUG9zdGdyZVNRTCBj cmFzaGVzIGJlZm9yZSBpdCBpcyBhYmxlIHRvIHdyaXRlIHRoZSByZXN0Cm9mIHRoZSByZWNvcmQs IGl0IHdpbGwgZW5kIHVwIHJldXNpbmcgc2VnbWVudHMgdGhhdCBoYXZlIGFscmVhZHkKYmVlbiBt YXJrZWQgYXMgcmVhZHktZm9yLWFyY2hpdmFsLiAgSG93ZXZlciwgdGhlIGFyY2hpdmVyIHByb2Nl c3MKbWF5IGhhdmUgYWxyZWFkeSBwcm9jZXNzZWQgdGhlIG9sZCB2ZXJzaW9uIG9mIHRoZSBzZWdt ZW50LCBzbyB0aGUKd3JvbmcgdmVyc2lvbiBvZiB0aGUgc2VnbWVudCBtYXkgYmUgYmFja2VkLXVw LiAgVGhpcyBiYWNrZWQtdXAKc2VnbWVudCB3aWxsIGNhdXNlIG9wZXJhdGlvbnMgc3VjaCBhcyBw b2ludC1pbi10aW1lIHJlc3RvcmVzIHRvCmZhaWwuCgpUbyBmaXggdGhpcywgd2Uga2VlcCB0cmFj ayBvZiByZWNvcmRzIHRoYXQgc3BhbiBhY3Jvc3Mgc2VnbWVudHMgYW5kCmVuc3VyZSB0aGF0IHNl Z21lbnRzIGFyZSBvbmx5IG1hcmtlZCByZWFkeS1mb3ItYXJjaGl2YWwgb25jZSBzdWNoCnJlY29y ZHMgaGF2ZSBiZWVuIGNvbXBsZXRlbHkgd3JpdHRlbiB0byBkaXNrLgotLS0KIHNyYy9iYWNrZW5k L2FjY2Vzcy90cmFuc2FtL3RpbWVsaW5lLmMgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2FjY2Vz cy90cmFuc2FtL3hsb2cuYyAgICAgICAgfCAyODYgKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ2FyY2hpdmUuYyB8ICAxNCArLQog c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2FscmVjZWl2ZXIuYyAgICB8ICAgNiArLQogc3JjL2Jh Y2tlbmQvc3RvcmFnZS9sbWdyL2x3bG9ja25hbWVzLnR4dCB8ICAgMSArCiBzcmMvaW5jbHVkZS9h Y2Nlc3MveGxvZ2FyY2hpdmUuaCAgICAgICAgIHwgICA0ICstCiBzcmMvaW5jbHVkZS9hY2Nlc3Mv eGxvZ2RlZnMuaCAgICAgICAgICAgIHwgICAxICsKIDcgZmlsZXMgY2hhbmdlZCwgMjkyIGluc2Vy dGlvbnMoKyksIDIyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vz cy90cmFuc2FtL3RpbWVsaW5lLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS90aW1lbGlu ZS5jCmluZGV4IDhkMDkwM2MxNzUuLmFjZDVjMjQzMWQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2FjY2Vzcy90cmFuc2FtL3RpbWVsaW5lLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5z YW0vdGltZWxpbmUuYwpAQCAtNDUyLDcgKzQ1Miw3IEBAIHdyaXRlVGltZUxpbmVIaXN0b3J5KFRp bWVMaW5lSUQgbmV3VExJLCBUaW1lTGluZUlEIHBhcmVudFRMSSwKIAlpZiAoWExvZ0FyY2hpdmlu Z0FjdGl2ZSgpKQogCXsKIAkJVExIaXN0b3J5RmlsZU5hbWUoaGlzdGZuYW1lLCBuZXdUTEkpOwot CQlYTG9nQXJjaGl2ZU5vdGlmeShoaXN0Zm5hbWUpOworCQlYTG9nQXJjaGl2ZU5vdGlmeShoaXN0 Zm5hbWUsIHRydWUpOwogCX0KIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3Ry YW5zYW0veGxvZy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jCmluZGV4IGU1 MWE3YTc0OWQuLmVhZjJkZDhhYjEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFu c2FtL3hsb2cuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMKQEAgLTUx Miw2ICs1MTIsMTMgQEAgdHlwZWRlZiBlbnVtIEV4Y2x1c2l2ZUJhY2t1cFN0YXRlCiAgKi8KIHN0 YXRpYyBTZXNzaW9uQmFja3VwU3RhdGUgc2Vzc2lvbkJhY2t1cFN0YXRlID0gU0VTU0lPTl9CQUNL VVBfTk9ORTsKIAorLyogZW50cmllcyBmb3IgU2VnbWVudEJvdW5kYXJ5TWFwLCB1c2VkIHRvIG1h cmsgc2VnbWVudHMgcmVhZHkgZm9yIGFyY2hpdmFsICovCit0eXBlZGVmIHN0cnVjdCBTZWdtZW50 Qm91bmRhcnlFbnRyeQoreworCVhMb2dTZWdObyBzZWc7CS8qIG11c3QgYmUgZmlyc3QgKi8KKwlY TG9nUmVjUHRyIHBvczsKK30gU2VnbWVudEJvdW5kYXJ5RW50cnk7CisKIC8qCiAgKiBTaGFyZWQg c3RhdGUgZGF0YSBmb3IgV0FMIGluc2VydGlvbi4KICAqLwpAQCAtNzIzLDYgKzczMCwxMiBAQCB0 eXBlZGVmIHN0cnVjdCBYTG9nQ3RsRGF0YQogCSAqLwogCVhMb2dSZWNQdHIJbGFzdEZwd0Rpc2Fi bGVSZWNQdHI7CiAKKwkvKgorCSAqIFRoZSBsYXN0IHNlZ21lbnQgd2UndmUgbWFya2VkIHJlYWR5 IGZvciBhcmNoaXZhbC4gIFByb3RlY3RlZCBieQorCSAqIGluZm9fbGNrLgorCSAqLworCVhMb2dT ZWdObyBsYXN0Tm90aWZpZWRTZWc7CisKIAlzbG9ja190CQlpbmZvX2xjazsJCS8qIGxvY2tzIHNo YXJlZCB2YXJpYWJsZXMgc2hvd24gYWJvdmUgKi8KIH0gWExvZ0N0bERhdGE7CiAKQEAgLTczNiw2 ICs3NDksMTIgQEAgc3RhdGljIFdBTEluc2VydExvY2tQYWRkZWQgKldBTEluc2VydExvY2tzID0g TlVMTDsKICAqLwogc3RhdGljIENvbnRyb2xGaWxlRGF0YSAqQ29udHJvbEZpbGUgPSBOVUxMOwog CisvKgorICogU2VnbWVudCBib3VuZGFyeSBtYXAsIHVzZWQgZm9yIG1hcmtpbmcgc2VnbWVudHMg YXMgcmVhZHkgZm9yIGFyY2hpdmFsLgorICogUHJvdGVjdGVkIGJ5IFNlZ21lbnRCb3VuZGFyeUxv Y2suCisgKi8KK3N0YXRpYyBIVEFCICpTZWdtZW50Qm91bmRhcnlNYXAgPSBOVUxMOworCiAvKgog ICogQ2FsY3VsYXRlIHRoZSBhbW91bnQgb2Ygc3BhY2UgbGVmdCBvbiB0aGUgcGFnZSBhZnRlciAn ZW5kcHRyJy4gQmV3YXJlCiAgKiBtdWx0aXBsZSBldmFsdWF0aW9uIQpAQCAtOTYyLDYgKzk4MSwx NCBAQCBzdGF0aWMgWExvZ1JlY1B0ciBYTG9nQnl0ZVBvc1RvUmVjUHRyKHVpbnQ2NCBieXRlcG9z KTsKIHN0YXRpYyBYTG9nUmVjUHRyIFhMb2dCeXRlUG9zVG9FbmRSZWNQdHIodWludDY0IGJ5dGVw b3MpOwogc3RhdGljIHVpbnQ2NCBYTG9nUmVjUHRyVG9CeXRlUG9zKFhMb2dSZWNQdHIgcHRyKTsK IHN0YXRpYyB2b2lkIGNoZWNrWExvZ0NvbnNpc3RlbmN5KFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3Jk KTsKK3N0YXRpYyB2b2lkIFJlZ2lzdGVyU2VnbWVudEJvdW5kYXJ5RW50cnkoWExvZ1NlZ05vIHNl ZywgWExvZ1JlY1B0ciBwb3MpOworc3RhdGljIHZvaWQgTm90aWZ5U2VnbWVudHNSZWFkeUZvckFy Y2hpdmUoWExvZ1JlY1B0ciBmbHVzaFJlY1B0cik7CitzdGF0aWMgWExvZ1NlZ05vIEdldExhc3RO b3RpZmllZFNlZ21lbnQodm9pZCk7CitzdGF0aWMgdm9pZCBTZXRMYXN0Tm90aWZpZWRTZWdtZW50 KFhMb2dTZWdObyBzZWcpOworc3RhdGljIGJvb2wgR2V0TGF0ZXN0U2VnbWVudEJvdW5kYXJ5KFhM b2dTZWdObyBsYXN0X25vdGlmaWVkLAorCQkJCQkJCQkJIFhMb2dSZWNQdHIgZmx1c2hlZCwKKwkJ CQkJCQkJCSBYTG9nU2VnTm8gKmxhdGVzdF9ib3VuZGFyeV9zZWcpOworc3RhdGljIHZvaWQgUmVt b3ZlU2VnbWVudEJvdW5kYXJpZXNVcFRvKFhMb2dTZWdObyBzZWcpOwogCiBzdGF0aWMgdm9pZCBX QUxJbnNlcnRMb2NrQWNxdWlyZSh2b2lkKTsKIHN0YXRpYyB2b2lkIFdBTEluc2VydExvY2tBY3F1 aXJlRXhjbHVzaXZlKHZvaWQpOwpAQCAtMTE1OCw2ICsxMTg1LDkgQEAgWExvZ0luc2VydFJlY29y ZChYTG9nUmVjRGF0YSAqcmRhdGEsCiAJICovCiAJaWYgKFN0YXJ0UG9zIC8gWExPR19CTENLU1og IT0gRW5kUG9zIC8gWExPR19CTENLU1opCiAJeworCQlYTG9nU2VnTm8gU3RhcnRTZWc7CisJCVhM b2dTZWdObyBFbmRTZWc7CisKIAkJU3BpbkxvY2tBY3F1aXJlKCZYTG9nQ3RsLT5pbmZvX2xjayk7 CiAJCS8qIGFkdmFuY2UgZ2xvYmFsIHJlcXVlc3QgdG8gaW5jbHVkZSBuZXcgYmxvY2socykgKi8K IAkJaWYgKFhMb2dDdGwtPkxvZ3dydFJxc3QuV3JpdGUgPCBFbmRQb3MpCkBAIC0xMTY1LDEyICsx MTk1LDM2IEBAIFhMb2dJbnNlcnRSZWNvcmQoWExvZ1JlY0RhdGEgKnJkYXRhLAogCQkvKiB1cGRh dGUgbG9jYWwgcmVzdWx0IGNvcHkgd2hpbGUgSSBoYXZlIHRoZSBjaGFuY2UgKi8KIAkJTG9nd3J0 UmVzdWx0ID0gWExvZ0N0bC0+TG9nd3J0UmVzdWx0OwogCQlTcGluTG9ja1JlbGVhc2UoJlhMb2dD dGwtPmluZm9fbGNrKTsKKworCQkvKgorCQkgKiBJZiB3ZSBjcm9zc2VkIHRoZSBzZWdtZW50IGJv dW5kYXJ5LCByZWNvcmQgaXQuICBUaGlzIGlzIHVzZWQgdG8KKwkJICogZW5zdXJlIHRoYXQgc2Vn bWVudHMgYXJlIG5vdCBtYXJrZWQgcmVhZHkgZm9yIGFyY2hpdmFsIGJlZm9yZSB0aGUKKwkJICog ZW50aXJlIHJlY29yZCBoYXMgYmVlbiBmbHVzaGVkIHRvIGRpc2suCisJCSAqCisJCSAqIE5vdGUg dGhhdCB3ZSBkbyBub3QgdXNlIFhMQnl0ZVRvUHJldlNlZygpIGZvciBkZXRlcm1pbmluZyB0aGUg ZW5kaW5nCisJCSAqIHNlZ21lbnQuICBUaGlzIGlzIGRvbmUgc28gdGhhdCBhIHJlY29yZCB0aGF0 IGZpdHMgcGVyZmVjdGx5IGludG8gdGhlCisJCSAqIGVuZCBvZiB0aGUgc2VnbWVudCBpcyBtYXJr ZWQgcmVhZHkgZm9yIGFyY2hpdmFsIGFzIHNvb24gYXMgdGhlCisJCSAqIGZsdXNoZWQgcG9pbnRl ciBqdW1wcyB0byB0aGUgbmV4dCBzZWdtZW50LgorCQkgKi8KKwkJWExCeXRlVG9TZWcoU3RhcnRQ b3MsIFN0YXJ0U2VnLCB3YWxfc2VnbWVudF9zaXplKTsKKwkJWExCeXRlVG9TZWcoRW5kUG9zLCBF bmRTZWcsIHdhbF9zZWdtZW50X3NpemUpOworCisJCWlmIChTdGFydFNlZyAhPSBFbmRTZWcgJiYg WExvZ0FyY2hpdmluZ0FjdGl2ZSgpKQorCQl7CisJCQlSZWdpc3RlclNlZ21lbnRCb3VuZGFyeUVu dHJ5KEVuZFNlZywgRW5kUG9zKTsKKworCQkJLyoKKwkJCSAqIFRoZXJlJ3MgYSBjaGFuY2UgdGhh dCB0aGUgcmVjb3JkIHdhcyBhbHJlYWR5IGZsdXNoZWQgdG8gZGlzayBhbmQKKwkJCSAqIHdlIG1p c3NlZCBtYXJraW5nIHNlZ21lbnRzIGFzIHJlYWR5IGZvciBhcmNoaXZlLCBzbyB0cnkgdG8gZG8K KwkJCSAqIHRoYXQgbm93LgorCQkJICovCisJCQlOb3RpZnlTZWdtZW50c1JlYWR5Rm9yQXJjaGl2 ZShHZXRGbHVzaFJlY1B0cigpKTsKKwkJfQogCX0KIAogCS8qCiAJICogSWYgdGhpcyB3YXMgYW4g WExPR19TV0lUQ0ggcmVjb3JkLCBmbHVzaCB0aGUgcmVjb3JkIGFuZCB0aGUgZW1wdHkKLQkgKiBw YWRkaW5nIHNwYWNlIHRoYXQgZmlsbHMgdGhlIHJlc3Qgb2YgdGhlIHNlZ21lbnQsIGFuZCBwZXJm b3JtCi0JICogZW5kLW9mLXNlZ21lbnQgYWN0aW9ucyAoZWcsIG5vdGlmeWluZyBhcmNoaXZlciku CisJICogcGFkZGluZyBzcGFjZSB0aGF0IGZpbGxzIHRoZSByZXN0IG9mIHRoZSBzZWdtZW50Lgog CSAqLwogCWlmIChpc0xvZ1N3aXRjaCkKIAl7CkBAIC0xMjY0LDYgKzEzMTgsMTkyIEBAIFhMb2dJ bnNlcnRSZWNvcmQoWExvZ1JlY0RhdGEgKnJkYXRhLAogCXJldHVybiBFbmRQb3M7CiB9CiAKKy8q CisgKiBSZWdpc3RlclNlZ21lbnRCb3VuZGFyeUVudHJ5CisgKgorICogVGhpcyBlbnRlcnMgYSBu ZXcgZW50cnkgaW50byB0aGUgc2VnbWVudCBib3VuZGFyeSBtYXAsIHdoaWNoIGlzIHVzZWQgZm9y CisgKiBkZXRlcm1pbmcgd2hlbiBpdCBpcyBzYWZlIHRvIG1hcmsgYSBzZWdtZW50IGFzIHJlYWR5 IGZvciBhcmNoaXZhbC4gIEFuIGVudHJ5CisgKiB3aXRoIHRoZSBnaXZlbiBrZXkgKHRoZSBzZWdt ZW50IG51bWJlcikgbXVzdCBub3QgYWxyZWFkeSBleGlzdCBpbiB0aGUgbWFwLgorICogQWxzbywg dGhlIGNhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgZW5zdXJpbmcgdGhhdCBYTEJ5dGVUb1NlZygp IHdvdWxkIHJldHVybgorICogdGhlIHNhbWUgc2VnbWVudCBudW1iZXIgZm9yIHRoZSBnaXZlbiBy ZWNvcmQgcG9pbnRlci4KKyAqLworc3RhdGljIHZvaWQKK1JlZ2lzdGVyU2VnbWVudEJvdW5kYXJ5 RW50cnkoWExvZ1NlZ05vIHNlZywgWExvZ1JlY1B0ciBwb3MpCit7CisJU2VnbWVudEJvdW5kYXJ5 RW50cnkgKmVudHJ5OworCWJvb2wgZm91bmQ7CisKKwlMV0xvY2tBY3F1aXJlKFNlZ21lbnRCb3Vu ZGFyeUxvY2ssIExXX0VYQ0xVU0lWRSk7CisKKwllbnRyeSA9IChTZWdtZW50Qm91bmRhcnlFbnRy eSAqKSBoYXNoX3NlYXJjaChTZWdtZW50Qm91bmRhcnlNYXAsCisJCQkJCQkJCQkJCQkgKHZvaWQg KikgJnNlZywgSEFTSF9FTlRFUiwKKwkJCQkJCQkJCQkJCSAmZm91bmQpOworCWlmIChmb3VuZCkK KwkJZWxvZyhFUlJPUiwgImVudHJ5IGZvciBzZWdtZW50IGFscmVhZHkgZXhpc3RzIik7CisKKwll bnRyeS0+cG9zID0gcG9zOworCisJTFdMb2NrUmVsZWFzZShTZWdtZW50Qm91bmRhcnlMb2NrKTsK K30KKworLyoKKyAqIE5vdGlmeVNlZ21lbnRzUmVhZHlGb3JBcmNoaXZlCisgKgorICogVGhpcyBm dW5jdGlvbiBtYXJrcyBzZWdtZW50cyBhcyByZWFkeSBmb3IgYXJjaGl2YWwsIGdpdmVuIHRoYXQg aXQgaXMgc2FmZSB0bworICogZG8gc28uICBJdCBpcyBzYWZlIHRvIGNhbGwgdGhpcyBmdW5jdGlv biByZXBlYXRlZGx5LCBldmVuIGlmIG5vdGhpbmcgaGFzCisgKiBjaGFuZ2VkIHNpbmNlIHRoZSBs YXN0IHRpbWUgaXQgd2FzIGNhbGxlZC4KKyAqLworc3RhdGljIHZvaWQKK05vdGlmeVNlZ21lbnRz UmVhZHlGb3JBcmNoaXZlKFhMb2dSZWNQdHIgZmx1c2hSZWNQdHIpCit7CisJWExvZ1NlZ05vCWZs dXNoZWRfc2VnOworCVhMb2dTZWdObwlsYXRlc3RfYm91bmRhcnlfc2VnOworCVhMb2dTZWdObwls YXN0X25vdGlmaWVkOworCisJLyoKKwkgKiBXZSBmaXJzdCBkbyBhIHF1aWNrIHNhbml0eSBjaGVj ayB0byBzZWUgaWYgd2UgY2FuIGJhaWwgb3V0IHdpdGhvdXQgdGFraW5nCisJICogdGhlIFNlZ21l bnRCb3VuZGFyeUxvY2sgYXQgYWxsLiAgSXQgaXMgZXhwZWN0ZWQgdGhhdCB0aGlzIGZ1bmN0aW9u IHdpbGwKKwkgKiBydW4gZnJlcXVlbnRseSBhbmQgdGhhdCBpdCB3aWxsIG5lZWQgdG8gZG8gbm90 aGluZyB0aGUgdmFzdCBtYWpvcml0eSBvZgorCSAqIHRoZSB0aW1lLgorCSAqCisJICogU3BlY2lm aWNhbGx5LCB3ZSBiYWlsIG91dCBpZiB3ZSd2ZSBhbHJlYWR5IG1hcmtlZCB0aGUgc2VnbWVudCBw cmlvciB0bworCSAqIHRoZSBzZWdtZW50IHRoYXQgY29udGFpbnMgZmx1c2hSZWNQdHIgYXMgcmVh ZHkgZm9yIGFyY2hpdmFsLiAgV2UKKwkgKiBpbnRlbnRpb25hbGx5IHVzZSBYTEJ5dGVUb1NlZygp IGluc3RlYWQgb2YgWExCeXRlVG9QcmV2U2VnKCkgc28gdGhhdCB3ZQorCSAqIGRvbid0IHNraXAg bm90aWZ5aW5nIHdoZW4gYSByZWNvcmQgZml0cyBwZXJmZWN0bHkgaW50byB0aGUgZW5kIG9mIGEK KwkgKiBzZWdtZW50LiAgKGZsdXNoUmVjUHRyIHNob3VsZCBwb2ludCB0byB0aGUgZmlyc3QgYnl0 ZSBvZiB0aGUgcmVjb3JkCisJICogX2FmdGVyXyB0aGUgb25lIHRoYXQgaXMga25vd24gdG8gYmUg Zmx1c2hlZCB0byBkaXNrLikKKwkgKi8KKwlsYXN0X25vdGlmaWVkID0gR2V0TGFzdE5vdGlmaWVk U2VnbWVudCgpOworCVhMQnl0ZVRvU2VnKGZsdXNoUmVjUHRyLCBmbHVzaGVkX3NlZywgd2FsX3Nl Z21lbnRfc2l6ZSk7CisJaWYgKGxhc3Rfbm90aWZpZWQgPj0gZmx1c2hlZF9zZWcgLSAxKQorCQly ZXR1cm47CisKKwlMV0xvY2tBY3F1aXJlKFNlZ21lbnRCb3VuZGFyeUxvY2ssIExXX0VYQ0xVU0lW RSk7CisKKwkvKiBSZW9idGFpbiBsYXN0Tm90aWZpZWRTZWcgaW4gY2FzZSBzb21lb25lIGVsc2Ug Y2hhbmdlZCBpdC4gKi8KKwlsYXN0X25vdGlmaWVkID0gR2V0TGFzdE5vdGlmaWVkU2VnbWVudCgp OworCisJLyogUmV0cmlldmUgdGhlIGxhdGVzdCBzZWdtZW50IGJvdW5kYXJ5IHRvIHVzZSBmb3Ig bm90aWZ5aW5nIHNlZ21lbnRzLiAqLworCWlmIChHZXRMYXRlc3RTZWdtZW50Qm91bmRhcnkobGFz dF9ub3RpZmllZCwgZmx1c2hSZWNQdHIsICZsYXRlc3RfYm91bmRhcnlfc2VnKSkKKwl7CisJCS8q CisJCSAqIFVwZGF0ZSBzaGFyZWQgbWVtb3J5IGFuZCBkaXNjYXJkIHNlZ21lbnQgYm91bmRhcmll cyB0aGF0IGFyZSBubworCQkgKiBsb25nZXIgbmVlZGVkLgorCQkgKgorCQkgKiBJdCBpcyBzYWZl IHRvIHVwZGF0ZSBzaGFyZWQgbWVtb3J5IGJlZm9yZSB3ZSBhdHRlbXB0IHRvIGNyZWF0ZSB0aGUK KwkJICogLnJlYWR5IGZpbGVzLiAgSWYgb3VyIGNhbGxzIHRvIFhMb2dBcmNoaXZlTm90aWZ5U2Vn KCkgZmFpbCwKKwkJICogUmVtb3ZlT2xkWGxvZ0ZpbGVzKCkgd2lsbCByZXRyeSBpdCBhcyBuZWVk ZWQuCisJCSAqLworCQlTZXRMYXN0Tm90aWZpZWRTZWdtZW50KGxhdGVzdF9ib3VuZGFyeV9zZWcg LSAxKTsKKwkJUmVtb3ZlU2VnbWVudEJvdW5kYXJpZXNVcFRvKGxhdGVzdF9ib3VuZGFyeV9zZWcp OworCisJCUxXTG9ja1JlbGVhc2UoU2VnbWVudEJvdW5kYXJ5TG9jayk7CisKKwkJLyoKKwkJICog Tm90aWZ5IGFyY2hpdmVyIGFib3V0IHNlZ21lbnRzIHRoYXQgYXJlIHJlYWR5IGZvciBhcmNoaXZh bCAoYnkKKwkJICogY3JlYXRpbmcgdGhlIGNvcnJlc3BvbmRpbmcgLnJlYWR5IGZpbGVzKS4KKwkJ ICovCisJCWZvciAoWExvZ1NlZ05vIHNlZyA9IGxhc3Rfbm90aWZpZWQgKyAxOyBzZWcgPCBsYXRl c3RfYm91bmRhcnlfc2VnOyBzZWcrKykKKwkJCVhMb2dBcmNoaXZlTm90aWZ5U2VnKHNlZywgZmFs c2UpOworCisJCVBnQXJjaFdha2V1cCgpOworCX0KKwllbHNlCisJCUxXTG9ja1JlbGVhc2UoU2Vn bWVudEJvdW5kYXJ5TG9jayk7Cit9CisKKy8qCisgKiBHZXRMYXRlc3RTZWdtZW50Qm91bmRhcnkK KyAqCisgKiBUaGlzIGZ1bmN0aW9uIGZpbmRzIHRoZSBsYXRlc3Qgc2VnbWVudCBib3VuZGFyeSBp biBTZWdtZW50Qm91bmRhcnlNYXAgdGhhdCBpcworICogbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRo ZSBnaXZlbiAiZmx1c2hlZCIgcG9pbnRlciBhbmQgYmV5b25kIHRoZSBsYXN0CisgKiBub3RpZmll ZCBzZWdtZW50LiAgSWYgc3VjaCBhIHNlZ21lbnQgaXMgZm91bmQsIGxhdGVzdF9ib3VuZGFyeV9z ZWcgaXMKKyAqIHBvcHVsYXRlZCBhbmQgdHJ1ZSBpcyByZXR1cm5lZC4gIE90aGVyd2lzZSwgZmFs c2UgaXMgcmV0dXJuZWQuCisgKi8KK3N0YXRpYyBib29sCitHZXRMYXRlc3RTZWdtZW50Qm91bmRh cnkoWExvZ1NlZ05vIGxhc3Rfbm90aWZpZWQsIFhMb2dSZWNQdHIgZmx1c2hlZCwKKwkJCQkJCSBY TG9nU2VnTm8gKmxhdGVzdF9ib3VuZGFyeV9zZWcpCit7CisJWExvZ1NlZ05vCWZsdXNoZWRfc2Vn OworCVhMb2dTZWdObwlzZWc7CisKKwlBc3NlcnQoTFdMb2NrSGVsZEJ5TWUoU2VnbWVudEJvdW5k YXJ5TG9jaykpOworCUFzc2VydChsYXRlc3RfYm91bmRhcnlfc2VnICE9IE5VTEwpOworCisJWExC eXRlVG9TZWcoZmx1c2hlZCwgZmx1c2hlZF9zZWcsIHdhbF9zZWdtZW50X3NpemUpOworCisJZm9y IChzZWcgPSBmbHVzaGVkX3NlZzsgc2VnID4gbGFzdF9ub3RpZmllZDsgc2VnLS0pCisJeworCQlT ZWdtZW50Qm91bmRhcnlFbnRyeSAqZW50cnk7CisKKwkJZW50cnkgPSAoU2VnbWVudEJvdW5kYXJ5 RW50cnkgKikgaGFzaF9zZWFyY2goU2VnbWVudEJvdW5kYXJ5TWFwLAorCQkJCQkJCQkJCQkJCSAo dm9pZCAqKSAmc2VnLCBIQVNIX0ZJTkQsCisJCQkJCQkJCQkJCQkJIE5VTEwpOworCisJCWlmIChl bnRyeSAhPSBOVUxMICYmIGZsdXNoZWQgPj0gZW50cnktPnBvcykKKwkJeworCQkJKmxhdGVzdF9i b3VuZGFyeV9zZWcgPSBlbnRyeS0+c2VnOworCQkJcmV0dXJuIHRydWU7CisJCX0KKwl9CisKKwly ZXR1cm4gZmFsc2U7Cit9CisKKy8qCisgKiBSZW1vdmVTZWdtZW50Qm91bmRhcmllc1VwVG8KKyAq CisgKiBUaGlzIGZ1bmN0aW9uIHJlbW92ZXMgYWxsIGVudHJpZXMgaW4gdGhlIFNlZ21lbnRCb3Vu ZGFyeU1hcCB3aXRoIHNlZ21lbnQKKyAqIG51bWJlcnMgdXAgdG8gYW5kIGluY2x1ZGluZyBzZWcu CisgKi8KK3N0YXRpYyB2b2lkCitSZW1vdmVTZWdtZW50Qm91bmRhcmllc1VwVG8oWExvZ1NlZ05v IHNlZykKK3sKKwlTZWdtZW50Qm91bmRhcnlFbnRyeSAqZW50cnk7CisJSEFTSF9TRVFfU1RBVFVT IHN0YXR1czsKKworCUFzc2VydChMV0xvY2tIZWxkQnlNZUluTW9kZShTZWdtZW50Qm91bmRhcnlM b2NrLCBMV19FWENMVVNJVkUpKTsKKworCWhhc2hfc2VxX2luaXQoJnN0YXR1cywgU2VnbWVudEJv dW5kYXJ5TWFwKTsKKworCXdoaWxlICgoZW50cnkgPSAoU2VnbWVudEJvdW5kYXJ5RW50cnkgKikg aGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorCXsKKwkJaWYgKGVudHJ5LT5zZWcg PD0gc2VnKQorCQkJKHZvaWQpIGhhc2hfc2VhcmNoKFNlZ21lbnRCb3VuZGFyeU1hcCwgKHZvaWQg KikgJmVudHJ5LT5zZWcsCisJCQkJCQkJICAgSEFTSF9SRU1PVkUsIE5VTEwpOworCX0KK30KKwor LyoKKyAqIEdldExhc3ROb3RpZmllZFNlZ21lbnQKKyAqCisgKiBSZXRyaWV2ZXMgbGFzdCBub3Rp ZmllZCBzZWdtZW50IGZyb20gc2hhcmVkIG1lbW9yeS4KKyAqLworWExvZ1NlZ05vCitHZXRMYXN0 Tm90aWZpZWRTZWdtZW50KHZvaWQpCit7CisJWExvZ1NlZ05vIHNlZzsKKworCVNwaW5Mb2NrQWNx dWlyZSgmWExvZ0N0bC0+aW5mb19sY2spOworCXNlZyA9IFhMb2dDdGwtPmxhc3ROb3RpZmllZFNl ZzsKKwlTcGluTG9ja1JlbGVhc2UoJlhMb2dDdGwtPmluZm9fbGNrKTsKKworCXJldHVybiBzZWc7 Cit9CisKKy8qCisgKiBTZXRMYXN0Tm90aWZpZWRTZWdtZW50CisgKgorICogU2V0cyBsYXN0IG5v dGlmaWVkIHNlZ21lbnQgaW4gc2hhcmVkIG1lbW9yeS4KKyAqLworc3RhdGljIHZvaWQKK1NldExh c3ROb3RpZmllZFNlZ21lbnQoWExvZ1NlZ05vIHNlZykKK3sKKwlTcGluTG9ja0FjcXVpcmUoJlhM b2dDdGwtPmluZm9fbGNrKTsKKwlYTG9nQ3RsLT5sYXN0Tm90aWZpZWRTZWcgPSBzZWc7CisJU3Bp bkxvY2tSZWxlYXNlKCZYTG9nQ3RsLT5pbmZvX2xjayk7Cit9CisKIC8qCiAgKiBSZXNlcnZlcyB0 aGUgcmlnaHQgYW1vdW50IG9mIHNwYWNlIGZvciBhIHJlY29yZCBvZiBnaXZlbiBzaXplIGZyb20g dGhlIFdBTC4KICAqICpTdGFydFBvcyBpcyBzZXQgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgcmVz ZXJ2ZWQgc2VjdGlvbiwgKkVuZFBvcyB0bwpAQCAtMjU4NiwxMSArMjgyNiwxMyBAQCBYTG9nV3Jp dGUoWExvZ3dydFJxc3QgV3JpdGVScXN0LCBib29sIGZsZXhpYmxlKQogCQkJICogbGF0ZXIuIERv aW5nIGl0IGhlcmUgZW5zdXJlcyB0aGF0IG9uZSBhbmQgb25seSBvbmUgYmFja2VuZCB3aWxsCiAJ CQkgKiBwZXJmb3JtIHRoaXMgZnN5bmMuCiAJCQkgKgotCQkJICogVGhpcyBpcyBhbHNvIHRoZSBy aWdodCBwbGFjZSB0byBub3RpZnkgdGhlIEFyY2hpdmVyIHRoYXQgdGhlCi0JCQkgKiBzZWdtZW50 IGlzIHJlYWR5IHRvIGNvcHkgdG8gYXJjaGl2YWwgc3RvcmFnZSwgYW5kIHRvIHVwZGF0ZSB0aGUK LQkJCSAqIHRpbWVyIGZvciBhcmNoaXZlX3RpbWVvdXQsIGFuZCB0byBzaWduYWwgZm9yIGEgY2hl Y2twb2ludCBpZgotCQkJICogdG9vIG1hbnkgbG9nZmlsZSBzZWdtZW50cyBoYXZlIGJlZW4gdXNl ZCBzaW5jZSB0aGUgbGFzdAotCQkJICogY2hlY2twb2ludC4KKwkJCSAqIElmIFdBTCBhcmNoaXZp bmcgaXMgYWN0aXZlLCB3ZSBhdHRlbXB0IHRvIG5vdGlmeSB0aGUgYXJjaGl2ZXIgb2YKKwkJCSAq IGFueSBzZWdtZW50cyB0aGF0IGFyZSBub3cgcmVhZHkgZm9yIGFyY2hpdmFsLgorCQkJICoKKwkJ CSAqIFRoaXMgaXMgYWxzbyB0aGUgcmlnaHQgcGxhY2UgdG8gdXBkYXRlIHRoZSB0aW1lciBmb3IK KwkJCSAqIGFyY2hpdmVfdGltZW91dCBhbmQgdG8gc2lnbmFsIGZvciBhIGNoZWNrcG9pbnQgaWYg dG9vIG1hbnkKKwkJCSAqIGxvZ2ZpbGUgc2VnbWVudHMgaGF2ZSBiZWVuIHVzZWQgc2luY2UgdGhl IGxhc3QgY2hlY2twb2ludC4KKwkJCSAqCiAJCQkgKi8KIAkJCWlmIChmaW5pc2hpbmdfc2VnKQog CQkJewpAQCAtMjYwMiw3ICsyODQ0LDcgQEAgWExvZ1dyaXRlKFhMb2d3cnRScXN0IFdyaXRlUnFz dCwgYm9vbCBmbGV4aWJsZSkKIAkJCQlMb2d3cnRSZXN1bHQuRmx1c2ggPSBMb2d3cnRSZXN1bHQu V3JpdGU7CS8qIGVuZCBvZiBwYWdlICovCiAKIAkJCQlpZiAoWExvZ0FyY2hpdmluZ0FjdGl2ZSgp KQotCQkJCQlYTG9nQXJjaGl2ZU5vdGlmeVNlZyhvcGVuTG9nU2VnTm8pOworCQkJCQlOb3RpZnlT ZWdtZW50c1JlYWR5Rm9yQXJjaGl2ZShMb2d3cnRSZXN1bHQuRmx1c2gpOwogCiAJCQkJWExvZ0N0 bC0+bGFzdFNlZ1N3aXRjaFRpbWUgPSAocGdfdGltZV90KSB0aW1lKE5VTEwpOwogCQkJCVhMb2dD dGwtPmxhc3RTZWdTd2l0Y2hMU04gPSBMb2d3cnRSZXN1bHQuRmx1c2g7CkBAIC0yNjkwLDYgKzI5 MzIsOSBAQCBYTG9nV3JpdGUoWExvZ3dydFJxc3QgV3JpdGVScXN0LCBib29sIGZsZXhpYmxlKQog CQkJWExvZ0N0bC0+TG9nd3J0UnFzdC5GbHVzaCA9IExvZ3dydFJlc3VsdC5GbHVzaDsKIAkJU3Bp bkxvY2tSZWxlYXNlKCZYTG9nQ3RsLT5pbmZvX2xjayk7CiAJfQorCisJaWYgKFhMb2dBcmNoaXZp bmdBY3RpdmUoKSkKKwkJTm90aWZ5U2VnbWVudHNSZWFkeUZvckFyY2hpdmUoTG9nd3J0UmVzdWx0 LkZsdXNoKTsKIH0KIAogLyoKQEAgLTUxMTcsNiArNTM2Miw5IEBAIFhMT0dTaG1lbVNpemUodm9p ZCkKIAkvKiBhbmQgdGhlIGJ1ZmZlcnMgdGhlbXNlbHZlcyAqLwogCXNpemUgPSBhZGRfc2l6ZShz aXplLCBtdWxfc2l6ZShYTE9HX0JMQ0tTWiwgWExPR2J1ZmZlcnMpKTsKIAorCS8qIHN0dWZmIGZv ciBtYXJraW5nIHNlZ21lbnRzIGFzIHJlYWR5IGZvciBhcmNoaXZhbCAqLworCXNpemUgPSBhZGRf c2l6ZShzaXplLCBoYXNoX2VzdGltYXRlX3NpemUoMTYsIHNpemVvZihTZWdtZW50Qm91bmRhcnlF bnRyeSkpKTsKKwogCS8qCiAJICogTm90ZTogd2UgZG9uJ3QgY291bnQgQ29udHJvbEZpbGVEYXRh LCBpdCBjb21lcyBvdXQgb2YgdGhlICJzbG9wIGZhY3RvciIKIAkgKiBhZGRlZCBieSBDcmVhdGVT aGFyZWRNZW1vcnlBbmRTZW1hcGhvcmVzLiAgVGhpcyBsZXRzIHVzIHVzZSB0aGlzCkBAIC01MTM0 LDYgKzUzODIsNyBAQCBYTE9HU2htZW1Jbml0KHZvaWQpCiAJY2hhcgkgICAqYWxsb2NwdHI7CiAJ aW50CQkJaTsKIAlDb250cm9sRmlsZURhdGEgKmxvY2FsQ29udHJvbEZpbGU7CisJSEFTSENUTAkJ aW5mbzsKIAogI2lmZGVmIFdBTF9ERUJVRwogCkBAIC01MjI3LDEyICs1NDc2LDIwIEBAIFhMT0dT aG1lbUluaXQodm9pZCkKIAlYTG9nQ3RsLT5JbnN0YWxsWExvZ0ZpbGVTZWdtZW50QWN0aXZlID0g ZmFsc2U7CiAJWExvZ0N0bC0+U2hhcmVkUHJvbW90ZUlzVHJpZ2dlcmVkID0gZmFsc2U7CiAJWExv Z0N0bC0+V2FsV3JpdGVyU2xlZXBpbmcgPSBmYWxzZTsKKwlYTG9nQ3RsLT5sYXN0Tm90aWZpZWRT ZWcgPSBNYXhYTG9nU2VnTm87CiAKIAlTcGluTG9ja0luaXQoJlhMb2dDdGwtPkluc2VydC5pbnNl cnRwb3NfbGNrKTsKIAlTcGluTG9ja0luaXQoJlhMb2dDdGwtPmluZm9fbGNrKTsKIAlTcGluTG9j a0luaXQoJlhMb2dDdGwtPnVsc25fbGNrKTsKIAlJbml0U2hhcmVkTGF0Y2goJlhMb2dDdGwtPnJl Y292ZXJ5V2FrZXVwTGF0Y2gpOwogCUNvbmRpdGlvblZhcmlhYmxlSW5pdCgmWExvZ0N0bC0+cmVj b3ZlcnlOb3RQYXVzZWRDVik7CisKKwkvKiBJbml0aWFsaXplIHN0dWZmIGZvciBtYXJraW5nIHNl Z21lbnRzIGFzIHJlYWR5IGZvciBhcmNoaXZhbC4gKi8KKwltZW1zZXQoJmluZm8sIDAsIHNpemVv ZihpbmZvKSk7CisJaW5mby5rZXlzaXplID0gc2l6ZW9mKFhMb2dTZWdObyk7CisJaW5mby5lbnRy eXNpemUgPSBzaXplb2YoU2VnbWVudEJvdW5kYXJ5RW50cnkpOworCVNlZ21lbnRCb3VuZGFyeU1h cCA9IFNobWVtSW5pdEhhc2goIlNlZ21lbnQgQm91bmRhcnkgVGFibGUiLCAxNiwgMTYsICZpbmZv LAorCQkJCQkJCQkJICAgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyk7CiB9CiAKIC8qCkBAIC03ODcz LDYgKzgxMzAsMTcgQEAgU3RhcnR1cFhMT0codm9pZCkKIAlYTG9nQ3RsLT5Mb2d3cnRScXN0Lldy aXRlID0gRW5kT2ZMb2c7CiAJWExvZ0N0bC0+TG9nd3J0UnFzdC5GbHVzaCA9IEVuZE9mTG9nOwog CisJLyoKKwkgKiBJbml0aWFsaXplIFhMb2dDdGwtPmxhc3ROb3RpZmllZFNlZyB0byB0aGUgcHJl dmlvdXMgV0FMIGZpbGUuCisJICovCisJaWYgKFhMb2dBcmNoaXZpbmdBY3RpdmUoKSkKKwl7CisJ CVhMb2dTZWdObyBFbmRPZkxvZ1NlZzsKKworCQlYTEJ5dGVUb1NlZyhFbmRPZkxvZywgRW5kT2ZM b2dTZWcsIHdhbF9zZWdtZW50X3NpemUpOworCQlTZXRMYXN0Tm90aWZpZWRTZWdtZW50KEVuZE9m TG9nU2VnIC0gMSk7CisJfQorCiAJLyoKIAkgKiBVcGRhdGUgZnVsbF9wYWdlX3dyaXRlcyBpbiBz aGFyZWQgbWVtb3J5IGFuZCB3cml0ZSBhbiBYTE9HX0ZQV19DSEFOR0UKIAkgKiByZWNvcmQgYmVm b3JlIHJlc291cmNlIG1hbmFnZXIgd3JpdGVzIGNsZWFudXAgV0FMIHJlY29yZHMgb3IgY2hlY2tw b2ludApAQCAtODAwMCw3ICs4MjY4LDcgQEAgU3RhcnR1cFhMT0codm9pZCkKIAkJCQlYTG9nQXJj aGl2ZUNsZWFudXAocGFydGlhbGZuYW1lKTsKIAogCQkJCWR1cmFibGVfcmVuYW1lKG9yaWdwYXRo LCBwYXJ0aWFscGF0aCwgRVJST1IpOwotCQkJCVhMb2dBcmNoaXZlTm90aWZ5KHBhcnRpYWxmbmFt ZSk7CisJCQkJWExvZ0FyY2hpdmVOb3RpZnkocGFydGlhbGZuYW1lLCB0cnVlKTsKIAkJCX0KIAkJ fQogCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dhcmNoaXZl LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nYXJjaGl2ZS5jCmluZGV4IDI2YjAy M2U3NTQuLmU5Y2FjOTBiNGEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2Ft L3hsb2dhcmNoaXZlLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ2FyY2hp dmUuYwpAQCAtNDMzLDcgKzQzMyw3IEBAIEtlZXBGaWxlUmVzdG9yZWRGcm9tQXJjaGl2ZShjb25z dCBjaGFyICpwYXRoLCBjb25zdCBjaGFyICp4bG9nZm5hbWUpCiAJaWYgKFhMb2dBcmNoaXZlTW9k ZSAhPSBBUkNISVZFX01PREVfQUxXQVlTKQogCQlYTG9nQXJjaGl2ZUZvcmNlRG9uZSh4bG9nZm5h bWUpOwogCWVsc2UKLQkJWExvZ0FyY2hpdmVOb3RpZnkoeGxvZ2ZuYW1lKTsKKwkJWExvZ0FyY2hp dmVOb3RpZnkoeGxvZ2ZuYW1lLCB0cnVlKTsKIAogCS8qCiAJICogSWYgdGhlIGV4aXN0aW5nIGZp bGUgd2FzIHJlcGxhY2VkLCBzaW5jZSB3YWxzZW5kZXJzIG1pZ2h0IGhhdmUgaXQgb3BlbiwKQEAg LTQ2NCw3ICs0NjQsNyBAQCBLZWVwRmlsZVJlc3RvcmVkRnJvbUFyY2hpdmUoY29uc3QgY2hhciAq cGF0aCwgY29uc3QgY2hhciAqeGxvZ2ZuYW1lKQogICogdGhlbiB3aGVuIGNvbXBsZXRlLCByZW5h bWUgaXQgdG8gMDAwMDAwMDEwMDAwMDAwMTAwMDAwMEM2LmRvbmUKICAqLwogdm9pZAotWExvZ0Fy Y2hpdmVOb3RpZnkoY29uc3QgY2hhciAqeGxvZykKK1hMb2dBcmNoaXZlTm90aWZ5KGNvbnN0IGNo YXIgKnhsb2csIGJvb2wgbm90aWZ5KQogewogCWNoYXIJCWFyY2hpdmVTdGF0dXNQYXRoW01BWFBH UEFUSF07CiAJRklMRQkgICAqZmQ7CkBAIC00ODksOCArNDg5LDggQEAgWExvZ0FyY2hpdmVOb3Rp ZnkoY29uc3QgY2hhciAqeGxvZykKIAkJcmV0dXJuOwogCX0KIAotCS8qIE5vdGlmeSBhcmNoaXZl ciB0aGF0IGl0J3MgZ290IHNvbWV0aGluZyB0byBkbyAqLwotCWlmIChJc1VuZGVyUG9zdG1hc3Rl cikKKwkvKiBJZiBjYWxsZXIgcmVxdWVzdGVkLCBub3RpZnkgYXJjaGl2ZXIgdGhhdCBpdCdzIGdv dCBzb21ldGhpbmcgdG8gZG8gKi8KKwlpZiAobm90aWZ5KQogCQlQZ0FyY2hXYWtldXAoKTsKIH0K IApAQCAtNDk4LDEyICs0OTgsMTIgQEAgWExvZ0FyY2hpdmVOb3RpZnkoY29uc3QgY2hhciAqeGxv ZykKICAqIENvbnZlbmllbmNlIHJvdXRpbmUgdG8gbm90aWZ5IHVzaW5nIHNlZ21lbnQgbnVtYmVy IHJlcHJlc2VudGF0aW9uIG9mIGZpbGVuYW1lCiAgKi8KIHZvaWQKLVhMb2dBcmNoaXZlTm90aWZ5 U2VnKFhMb2dTZWdObyBzZWdubykKK1hMb2dBcmNoaXZlTm90aWZ5U2VnKFhMb2dTZWdObyBzZWdu bywgYm9vbCBub3RpZnkpCiB7CiAJY2hhcgkJeGxvZ1tNQVhGTkFNRUxFTl07CiAKIAlYTG9nRmls ZU5hbWUoeGxvZywgVGhpc1RpbWVMaW5lSUQsIHNlZ25vLCB3YWxfc2VnbWVudF9zaXplKTsKLQlY TG9nQXJjaGl2ZU5vdGlmeSh4bG9nKTsKKwlYTG9nQXJjaGl2ZU5vdGlmeSh4bG9nLCBub3RpZnkp OwogfQogCiAvKgpAQCAtNjA4LDcgKzYwOCw3IEBAIFhMb2dBcmNoaXZlQ2hlY2tEb25lKGNvbnN0 IGNoYXIgKnhsb2cpCiAJCXJldHVybiB0cnVlOwogCiAJLyogUmV0cnkgY3JlYXRpb24gb2YgdGhl IC5yZWFkeSBmaWxlICovCi0JWExvZ0FyY2hpdmVOb3RpZnkoeGxvZyk7CisJWExvZ0FyY2hpdmVO b3RpZnkoeGxvZywgdHJ1ZSk7CiAJcmV0dXJuIGZhbHNlOwogfQogCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi93YWxyZWNlaXZlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vd2FscmVjZWl2ZXIuYwppbmRleCA5YTJiYzM3ZmQ3Li42MGRlM2JlOTJjIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxyZWNlaXZlci5jCisrKyBiL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmMKQEAgLTYyMiw3ICs2MjIsNyBAQCBXYWxSZWNlaXZl ck1haW4odm9pZCkKIAkJCWlmIChYTG9nQXJjaGl2ZU1vZGUgIT0gQVJDSElWRV9NT0RFX0FMV0FZ UykKIAkJCQlYTG9nQXJjaGl2ZUZvcmNlRG9uZSh4bG9nZm5hbWUpOwogCQkJZWxzZQotCQkJCVhM b2dBcmNoaXZlTm90aWZ5KHhsb2dmbmFtZSk7CisJCQkJWExvZ0FyY2hpdmVOb3RpZnkoeGxvZ2Zu YW1lLCB0cnVlKTsKIAkJfQogCQlyZWN2RmlsZSA9IC0xOwogCkBAIC03NjAsNyArNzYwLDcgQEAg V2FsUmN2RmV0Y2hUaW1lTGluZUhpc3RvcnlGaWxlcyhUaW1lTGluZUlEIGZpcnN0LCBUaW1lTGlu ZUlEIGxhc3QpCiAJCQlpZiAoWExvZ0FyY2hpdmVNb2RlICE9IEFSQ0hJVkVfTU9ERV9BTFdBWVMp CiAJCQkJWExvZ0FyY2hpdmVGb3JjZURvbmUoZm5hbWUpOwogCQkJZWxzZQotCQkJCVhMb2dBcmNo aXZlTm90aWZ5KGZuYW1lKTsKKwkJCQlYTG9nQXJjaGl2ZU5vdGlmeShmbmFtZSwgdHJ1ZSk7CiAK IAkJCXBmcmVlKGZuYW1lKTsKIAkJCXBmcmVlKGNvbnRlbnQpOwpAQCAtOTE1LDcgKzkxNSw3IEBA IFhMb2dXYWxSY3ZXcml0ZShjaGFyICpidWYsIFNpemUgbmJ5dGVzLCBYTG9nUmVjUHRyIHJlY3B0 cikKIAkJCQlpZiAoWExvZ0FyY2hpdmVNb2RlICE9IEFSQ0hJVkVfTU9ERV9BTFdBWVMpCiAJCQkJ CVhMb2dBcmNoaXZlRm9yY2VEb25lKHhsb2dmbmFtZSk7CiAJCQkJZWxzZQotCQkJCQlYTG9nQXJj aGl2ZU5vdGlmeSh4bG9nZm5hbWUpOworCQkJCQlYTG9nQXJjaGl2ZU5vdGlmeSh4bG9nZm5hbWUs IHRydWUpOwogCQkJfQogCQkJcmVjdkZpbGUgPSAtMTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvc3RvcmFnZS9sbWdyL2x3bG9ja25hbWVzLnR4dCBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1n ci9sd2xvY2tuYW1lcy50eHQKaW5kZXggNmM3Y2Y2YzI5NS4uMTRhNzQyZDY1NSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2x3bG9ja25hbWVzLnR4dAorKysgYi9zcmMvYmFj a2VuZC9zdG9yYWdlL2xtZ3IvbHdsb2NrbmFtZXMudHh0CkBAIC01MywzICs1Myw0IEBAIFhhY3RU cnVuY2F0aW9uTG9jawkJCQkJNDQKICMgNDUgd2FzIFhhY3RUcnVuY2F0aW9uTG9jayB1bnRpbCBy ZW1vdmFsIG9mIEJhY2tlbmRSYW5kb21Mb2NrCiBXcmFwTGltaXRzVmFjdXVtTG9jawkJCQk0Ngog Tm90aWZ5UXVldWVUYWlsTG9jawkJCQkJNDcKK1NlZ21lbnRCb3VuZGFyeUxvY2sJCQkJCTQ4CmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MveGxvZ2FyY2hpdmUuaCBiL3NyYy9pbmNsdWRl L2FjY2Vzcy94bG9nYXJjaGl2ZS5oCmluZGV4IDNlZGQxYTk3NmMuLmUyNWMzZDgxMTcgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy94bG9nYXJjaGl2ZS5oCisrKyBiL3NyYy9pbmNsdWRl L2FjY2Vzcy94bG9nYXJjaGl2ZS5oCkBAIC0yMyw4ICsyMyw4IEBAIGV4dGVybiBib29sIFJlc3Rv cmVBcmNoaXZlZEZpbGUoY2hhciAqcGF0aCwgY29uc3QgY2hhciAqeGxvZ2ZuYW1lLAogZXh0ZXJu IHZvaWQgRXhlY3V0ZVJlY292ZXJ5Q29tbWFuZChjb25zdCBjaGFyICpjb21tYW5kLCBjb25zdCBj aGFyICpjb21tYW5kTmFtZSwKIAkJCQkJCQkJICAgYm9vbCBmYWlsT25TaWduYWwpOwogZXh0ZXJu IHZvaWQgS2VlcEZpbGVSZXN0b3JlZEZyb21BcmNoaXZlKGNvbnN0IGNoYXIgKnBhdGgsIGNvbnN0 IGNoYXIgKnhsb2dmbmFtZSk7Ci1leHRlcm4gdm9pZCBYTG9nQXJjaGl2ZU5vdGlmeShjb25zdCBj aGFyICp4bG9nKTsKLWV4dGVybiB2b2lkIFhMb2dBcmNoaXZlTm90aWZ5U2VnKFhMb2dTZWdObyBz ZWdubyk7CitleHRlcm4gdm9pZCBYTG9nQXJjaGl2ZU5vdGlmeShjb25zdCBjaGFyICp4bG9nLCBi b29sIG5vdGlmeSk7CitleHRlcm4gdm9pZCBYTG9nQXJjaGl2ZU5vdGlmeVNlZyhYTG9nU2VnTm8g c2Vnbm8sIGJvb2wgbm90aWZ5KTsKIGV4dGVybiB2b2lkIFhMb2dBcmNoaXZlRm9yY2VEb25lKGNv bnN0IGNoYXIgKnhsb2cpOwogZXh0ZXJuIGJvb2wgWExvZ0FyY2hpdmVDaGVja0RvbmUoY29uc3Qg Y2hhciAqeGxvZyk7CiBleHRlcm4gYm9vbCBYTG9nQXJjaGl2ZUlzQnVzeShjb25zdCBjaGFyICp4 bG9nKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy94bG9nZGVmcy5oIGIvc3JjL2lu Y2x1ZGUvYWNjZXNzL3hsb2dkZWZzLmgKaW5kZXggNjAzNDhkMTg1MC4uMzEzYzc3NWU4NSAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3hsb2dkZWZzLmgKKysrIGIvc3JjL2luY2x1ZGUv YWNjZXNzL3hsb2dkZWZzLmgKQEAgLTQ2LDYgKzQ2LDcgQEAgdHlwZWRlZiB1aW50NjQgWExvZ1Jl Y1B0cjsKICAqIFhMb2dTZWdObyAtIHBoeXNpY2FsIGxvZyBmaWxlIHNlcXVlbmNlIG51bWJlci4K ICAqLwogdHlwZWRlZiB1aW50NjQgWExvZ1NlZ05vOworI2RlZmluZSBNYXhYTG9nU2VnTm8gKDB4 RkZGRkZGRkZGRkZGRkZGRikKIAogLyoKICAqIFRpbWVMaW5lSUQgKFRMSSkgLSBpZGVudGlmaWVz IGRpZmZlcmVudCBkYXRhYmFzZSBoaXN0b3JpZXMgdG8gcHJldmVudAotLSAKMi4xNi42Cgo= --_002_2A53AFB09A444EFEBA83072D000D9319amazoncom_--