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 1uCwy4-004R4p-UU for pgsql-hackers@arkaria.postgresql.org; Thu, 08 May 2025 08:51:01 +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 1uCwy2-0022T6-S6 for pgsql-hackers@arkaria.postgresql.org; Thu, 08 May 2025 08:50:58 +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 1uCwy2-0022Rw-8T for pgsql-hackers@lists.postgresql.org; Thu, 08 May 2025 08:50:58 +0000 Received: from mail-pl1-x62d.google.com ([2607:f8b0:4864:20::62d]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1uCwxz-000jp5-2n for pgsql-hackers@lists.postgresql.org; Thu, 08 May 2025 08:50:57 +0000 Received: by mail-pl1-x62d.google.com with SMTP id d9443c01a7336-22e6880d106so5574135ad.1 for ; Thu, 08 May 2025 01:50:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1746694255; x=1747299055; 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=IiUdkdox2MD+NBO5t0CVPUZn/NXOy9/onqr8QpibuiU=; b=g0SpSD97L0OJw1mirxuaE98MYzR2wRyoYTrjV4pj2T6GdNBpLpAh06zoALjrPZD7RS N4p4sld7r7iMIwrJtIBHGJKbmcFMtRQVvAIxGB8NtMfix1w0GKFwSENdI6A1K7trc7sj lcJOTWLspkp/FbEsiz0V9JpgDSUxF2iNgc+f+ZmwcZiKKn++4mGoTmbEtrhkgrFTf4M0 uZ+KwFRwg3xTbqdhxx4+3/Iwowebgnl/peq8NPFKZar0UFMbAEHXUC3Yoc7RNkWYNMvL eqnwVZ1UBYKe6dx1PnVm8fuI2GIbnxA77DUN8HXlYQpo6cOWe1jjU/N++EUV/hwySm8b 0OAg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746694255; x=1747299055; 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=IiUdkdox2MD+NBO5t0CVPUZn/NXOy9/onqr8QpibuiU=; b=QM0XhJYUxNwcGtzR+fugItCthwwwK0ulzS6E9y2tIguuvDXuYK0iu1Jzw8hTGaPcQK NjPBf6RH4ycLSTYCpvrdHtN2VRjCpdxtHHwxeEjy2pttIiUPEdIaslLThD1EiBGq+Clq d75u0RQmByl/0xl83W+PF2bxRb6t8KOew1p9+ENFerSlxUB9l4BXyWIZStBQC98l9gNX SOndJ3Ea3iX/pkOVLV7HaTdt3FOSTqvdi1Gtv4joni5abI8ZJbL+e84NEwyXyOKTr2KW gRzVxJj4L0DVTlcpAyGYZ8OpFyUStiU7XV7Vd1VPN46XkWuL2fWchRxidzoIJO3HjSd7 W1eQ== X-Forwarded-Encrypted: i=1; AJvYcCV+0FBWa7XhNKxygGvQ/XDfMH5Mei5ZNv5ayd8pN0ByF5j1ALYfqwkMjjAir4ihetv761C9yK9tVWVOlxHv@lists.postgresql.org X-Gm-Message-State: AOJu0YzkmUFeX68WVJ7i1poFNI7HNxAAKM/R8UldTgNIW1+h/Q94EMJt gRE0rt7ECcF+YI7SIR+/rn3qqc41wcNJDE0yamuQrlKJz2jLkTIAArbsJsqTgw+kGR+iEd3+Cok Gg81I5KlzvJBg96g8cMW37i6epbs= X-Gm-Gg: ASbGncuNGKdH6XdXkEg9Q7BXG7hMknTWhEFgabroR41S7Bcq9bKdWjNJ/n4viMj0bk+ cPEIJC+5+pttsfgg/KfGmjSbpAYsXE2Wes3rZYUM0jS83k1ND91NYd9Uatm5UuzgFQbeRcPb5FN fRt8XZfU1tkzPayn6NFqWSKFhablkYnBM4BkCgmLiMa61y1ih1TFUk8yFu X-Google-Smtp-Source: AGHT+IHrJvktLKrLIzAyq2KXunYh9Laxr58K1++v0T7KY/t8ugkGE+e9nCvNF2+urGLJt6+v2JUg9v/0JbZ/G1FhmSQ= X-Received: by 2002:a17:902:e950:b0:224:18bb:44c2 with SMTP id d9443c01a7336-22e5ea64dc6mr83088465ad.6.1746694255395; Thu, 08 May 2025 01:50:55 -0700 (PDT) MIME-Version: 1.0 References: <3660951.1741016970@sss.pgh.pa.us> In-Reply-To: From: Etsuro Fujita Date: Thu, 8 May 2025 17:50:43 +0900 X-Gm-Features: ATxdqUEAvIbkB7aU3EogdsZveFTUOAy27enFjR685fO4L-KY_7LnTz9YZbv-X34 Message-ID: Subject: =?UTF-8?Q?Re=3A_Options_to_control_remote_transactions=E2=80=99_access?= =?UTF-8?Q?=2Fdeferrable_modes_in_postgres=5Ffdw?= To: Ashutosh Bapat Cc: Tom Lane , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="0000000000009fd90d06349bf271" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000009fd90d06349bf271 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Sun, May 4, 2025 at 9:30=E2=80=AFPM Etsuro Fujita wrote: > As read-only > subtransactions can=E2=80=99t change to read-write, and a read-only > main-transaction can=E2=80=99t change to read-write after first snapshot, > either (note: begin_remote_xact is called after it), all we need to do > is track the nesting level of the outermost read-only transaction in > the local transaction and control the access mode of remote > transactions based on it so that they have the same access mode as the > local transaction at each subtransaction level, like the attached. I noticed that an assertion I added to pgfdw_subxact_callback fails when running some transactions. To fix, I just removed the assertion. Attached is an updated version of the patch. I also added a test case that was causing the failure, and tweaked some comments/docs a little bit. Best regards, Etsuro Fujita --0000000000009fd90d06349bf271 Content-Type: application/octet-stream; name="Inherit-xact-properties-in-postgres-fdw-v4.patch" Content-Disposition: attachment; filename="Inherit-xact-properties-in-postgres-fdw-v4.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_maf4n3mu0 ZGlmZiAtLWdpdCBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2Nvbm5lY3Rpb24uYyBiL2NvbnRyaWIv cG9zdGdyZXNfZmR3L2Nvbm5lY3Rpb24uYwppbmRleCA5ZmE3ZjdlOTVjZC4uZmU4NmJmNTNhMzcg MTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2Nvbm5lY3Rpb24uYworKysgYi9jb250 cmliL3Bvc3RncmVzX2Zkdy9jb25uZWN0aW9uLmMKQEAgLTU4LDYgKzU4LDcgQEAgdHlwZWRlZiBz dHJ1Y3QgQ29ubkNhY2hlRW50cnkKIAkvKiBSZW1haW5pbmcgZmllbGRzIGFyZSBpbnZhbGlkIHdo ZW4gY29ubiBpcyBOVUxMOiAqLwogCWludAkJCXhhY3RfZGVwdGg7CQkvKiAwID0gbm8geGFjdCBv cGVuLCAxID0gbWFpbiB4YWN0IG9wZW4sIDIgPQogCQkJCQkJCQkgKiBvbmUgbGV2ZWwgb2Ygc3Vi eGFjdCBvcGVuLCBldGMgKi8KKwlib29sCQl4YWN0X3JlYWRfb25seTsgLyogeGFjdCByL28gc3Rh dGUgKi8KIAlib29sCQloYXZlX3ByZXBfc3RtdDsgLyogaGF2ZSB3ZSBwcmVwYXJlZCBhbnkgc3Rt dHMgaW4gdGhpcyB4YWN0PyAqLwogCWJvb2wJCWhhdmVfZXJyb3I7CQkvKiBoYXZlIGFueSBzdWJ4 YWN0cyBhYm9ydGVkIGluIHRoaXMgeGFjdD8gKi8KIAlib29sCQljaGFuZ2luZ194YWN0X3N0YXRl OwkvKiB4YWN0IHN0YXRlIGNoYW5nZSBpbiBwcm9jZXNzICovCkBAIC04NCw2ICs4NSwxMiBAQCBz dGF0aWMgdW5zaWduZWQgaW50IHByZXBfc3RtdF9udW1iZXIgPSAwOwogLyogdHJhY2tzIHdoZXRo ZXIgYW55IHdvcmsgaXMgbmVlZGVkIGluIGNhbGxiYWNrIGZ1bmN0aW9ucyAqLwogc3RhdGljIGJv b2wgeGFjdF9nb3RfY29ubmVjdGlvbiA9IGZhbHNlOwogCisvKgorICogdHJhY2tzIHRoZSBuZXN0 aW5nIGxldmVsIG9mIHRoZSB0b3Btb3N0IHJlYWQtb25seSB0cmFuc2FjdGlvbiBkZXRlcm1pbmVk CisgKiBieSBHZXRUb3BSZWFkT25seVRyYW5zYWN0aW9uTmVzdExldmVsKCkKKyAqLworc3RhdGlj IGludCB0b3BfcmVhZF9vbmx5X2xldmVsID0gMDsKKwogLyogY3VzdG9tIHdhaXQgZXZlbnQgdmFs dWVzLCByZXRyaWV2ZWQgZnJvbSBzaGFyZWQgbWVtb3J5ICovCiBzdGF0aWMgdWludDMyIHBnZmR3 X3dlX2NsZWFudXBfcmVzdWx0ID0gMDsKIHN0YXRpYyB1aW50MzIgcGdmZHdfd2VfY29ubmVjdCA9 IDA7CkBAIC0zNzIsNiArMzc5LDcgQEAgbWFrZV9uZXdfY29ubmVjdGlvbihDb25uQ2FjaGVFbnRy eSAqZW50cnksIFVzZXJNYXBwaW5nICp1c2VyKQogCiAJLyogUmVzZXQgYWxsIHRyYW5zaWVudCBz dGF0ZSBmaWVsZHMsIHRvIGJlIHN1cmUgYWxsIGFyZSBjbGVhbiAqLwogCWVudHJ5LT54YWN0X2Rl cHRoID0gMDsKKwllbnRyeS0+eGFjdF9yZWFkX29ubHkgPSBmYWxzZTsKIAllbnRyeS0+aGF2ZV9w cmVwX3N0bXQgPSBmYWxzZTsKIAllbnRyeS0+aGF2ZV9lcnJvciA9IGZhbHNlOwogCWVudHJ5LT5j aGFuZ2luZ194YWN0X3N0YXRlID0gZmFsc2U7CkBAIC04NDMsMjkgKzg1MSw4MSBAQCBkb19zcWxf Y29tbWFuZF9lbmQoUEdjb25uICpjb25uLCBjb25zdCBjaGFyICpzcWwsIGJvb2wgY29uc3VtZV9p bnB1dCkKICAqIHRob3NlIHNjYW5zLiAgQSBkaXNhZHZhbnRhZ2UgaXMgdGhhdCB3ZSBjYW4ndCBw cm92aWRlIHNhbmUgZW11bGF0aW9uIG9mCiAgKiBSRUFEIENPTU1JVFRFRCBiZWhhdmlvciAtLS0g aXQgd291bGQgYmUgbmljZSBpZiB3ZSBoYWQgc29tZSBvdGhlciB3YXkgdG8KICAqIGNvbnRyb2wg d2hpY2ggcmVtb3RlIHF1ZXJpZXMgc2hhcmUgYSBzbmFwc2hvdC4KKyAqCisgKiBOb3RlIGFsc28g dGhhdCB3ZSBhbHdheXMgc3RhcnQgdGhlIHJlbW90ZSB0cmFuc2FjdGlvbiB3aXRoIHRoZSBzYW1l CisgKiByZWFkL3dyaXRlIGFuZCBkZWZlcnJhYmxlIHByb3BlcnRpZXMgYXMgdGhlIGxvY2FsIHRy YW5zYWN0aW9uLCBhbmQgc3RhcnQKKyAqIHRoZSByZW1vdGUgc3VidHJhbnNhY3Rpb24gd2l0aCB0 aGUgc2FtZSByZWFkL3dyaXRlIHByb3BlcnR5IGFzIHRoZSBsb2NhbAorICogc3VidHJhbnNhY3Rp b24uCiAgKi8KIHN0YXRpYyB2b2lkCiBiZWdpbl9yZW1vdGVfeGFjdChDb25uQ2FjaGVFbnRyeSAq ZW50cnkpCiB7CiAJaW50CQkJY3VybGV2ZWwgPSBHZXRDdXJyZW50VHJhbnNhY3Rpb25OZXN0TGV2 ZWwoKTsKIAotCS8qIFN0YXJ0IG1haW4gdHJhbnNhY3Rpb24gaWYgd2UgaGF2ZW4ndCB5ZXQgKi8K KwkvKgorCSAqIFNldCB0aGUgbmVzdGluZyBsZXZlbCBvZiB0aGUgdG9wbW9zdCByZWFkLW9ubHkg dHJhbnNhY3Rpb24gaWYgdGhlCisJICogY3VycmVudCB0cmFuc2FjdGlvbiBpcyByZWFkLW9ubHkg YW5kIHdlIGhhdmVuJ3QgeWV0LiAgT25jZSBpdCdzIHNldCwKKwkgKiBpdCdzIHJldGFpbmVkIHVu dGlsIHRoYXQgdHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkL2Fib3J0ZWQsIGFuZCB0aGVuCisJICog cmVzZXQgKHNlZSBwZ2Zkd194YWN0X2NhbGxiYWNrIGFuZCBwZ2Zkd19zdWJ4YWN0X2NhbGxiYWNr KS4KKwkgKi8KKwlpZiAoWGFjdFJlYWRPbmx5KQorCXsKKwkJaWYgKHRvcF9yZWFkX29ubHlfbGV2 ZWwgPT0gMCkKKwkJCXRvcF9yZWFkX29ubHlfbGV2ZWwgPSBHZXRUb3BSZWFkT25seVRyYW5zYWN0 aW9uTmVzdExldmVsKCk7CisJCUFzc2VydCh0b3BfcmVhZF9vbmx5X2xldmVsID4gMCk7CisJfQor CWVsc2UKKwkJQXNzZXJ0KHRvcF9yZWFkX29ubHlfbGV2ZWwgPT0gMCk7CisKKwkvKgorCSAqIFN0 YXJ0IG1haW4gdHJhbnNhY3Rpb24gaWYgd2UgaGF2ZW4ndCB5ZXQ7IG90aGVyd2lzZSwgY2hhbmdl IHRoZQorCSAqIGFscmVhZHktc3RhcnRlZCByZW1vdGUgdHJhbnNhY3Rpb24vc3VidHJhbnNhY3Rp b24gdG8gcmVhZC1vbmx5IGlmIHRoZQorCSAqIGxvY2FsIHRyYW5zYWN0aW9uL3N1YnRyYW5zYWN0 aW9uIGhhdmUgYmVlbiBkb25lIHNvIGFmdGVyIHN0YXJ0aW5nIHRoZW0KKwkgKiBhbmQgd2UgaGF2 ZW4ndCB5ZXQuCisJICovCiAJaWYgKGVudHJ5LT54YWN0X2RlcHRoIDw9IDApCiAJewotCQljb25z dCBjaGFyICpzcWw7CisJCVN0cmluZ0luZm9EYXRhIHNxbDsKKwkJYm9vbAkJcm8gPSAodG9wX3Jl YWRfb25seV9sZXZlbCA9PSAxKTsKIAogCQllbG9nKERFQlVHMywgInN0YXJ0aW5nIHJlbW90ZSB0 cmFuc2FjdGlvbiBvbiBjb25uZWN0aW9uICVwIiwKIAkJCSBlbnRyeS0+Y29ubik7CiAKKwkJaW5p dFN0cmluZ0luZm8oJnNxbCk7CisJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJnNxbCwgIlNUQVJU IFRSQU5TQUNUSU9OIElTT0xBVElPTiBMRVZFTCAiKTsKIAkJaWYgKElzb2xhdGlvbklzU2VyaWFs aXphYmxlKCkpCi0JCQlzcWwgPSAiU1RBUlQgVFJBTlNBQ1RJT04gSVNPTEFUSU9OIExFVkVMIFNF UklBTElaQUJMRSI7CisJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZzcWwsICJTRVJJQUxJWkFC TEUiKTsKIAkJZWxzZQotCQkJc3FsID0gIlNUQVJUIFRSQU5TQUNUSU9OIElTT0xBVElPTiBMRVZF TCBSRVBFQVRBQkxFIFJFQUQiOworCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmc3FsLCAiUkVQ RUFUQUJMRSBSRUFEIik7CisJCWlmIChybykKKwkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJnNx bCwgIiBSRUFEIE9OTFkiKTsKKwkJaWYgKFhhY3REZWZlcnJhYmxlKQorCQkJYXBwZW5kU3RyaW5n SW5mb1N0cmluZygmc3FsLCAiIERFRkVSUkFCTEUiKTsKIAkJZW50cnktPmNoYW5naW5nX3hhY3Rf c3RhdGUgPSB0cnVlOwotCQlkb19zcWxfY29tbWFuZChlbnRyeS0+Y29ubiwgc3FsKTsKKwkJZG9f c3FsX2NvbW1hbmQoZW50cnktPmNvbm4sIHNxbC5kYXRhKTsKIAkJZW50cnktPnhhY3RfZGVwdGgg PSAxOworCQlpZiAocm8pCisJCXsKKwkJCUFzc2VydCghZW50cnktPnhhY3RfcmVhZF9vbmx5KTsK KwkJCWVudHJ5LT54YWN0X3JlYWRfb25seSA9IHRydWU7CisJCX0KIAkJZW50cnktPmNoYW5naW5n X3hhY3Rfc3RhdGUgPSBmYWxzZTsKIAl9CisJZWxzZSBpZiAoIWVudHJ5LT54YWN0X3JlYWRfb25s eSkKKwl7CisJCUFzc2VydCh0b3BfcmVhZF9vbmx5X2xldmVsID09IDAgfHwKKwkJCSAgIGVudHJ5 LT54YWN0X2RlcHRoIDw9IHRvcF9yZWFkX29ubHlfbGV2ZWwpOworCQlpZiAoZW50cnktPnhhY3Rf ZGVwdGggPT0gdG9wX3JlYWRfb25seV9sZXZlbCkKKwkJeworCQkJZW50cnktPmNoYW5naW5nX3hh Y3Rfc3RhdGUgPSB0cnVlOworCQkJZG9fc3FsX2NvbW1hbmQoZW50cnktPmNvbm4sICJTRVQgdHJh bnNhY3Rpb25fcmVhZF9vbmx5ID0gb24iKTsKKwkJCWVudHJ5LT54YWN0X3JlYWRfb25seSA9IHRy dWU7CisJCQllbnRyeS0+Y2hhbmdpbmdfeGFjdF9zdGF0ZSA9IGZhbHNlOworCQl9CisJfQorCWVs c2UKKwkJQXNzZXJ0KHRvcF9yZWFkX29ubHlfbGV2ZWwgPiAwICYmCisJCQkgICBlbnRyeS0+eGFj dF9kZXB0aCA+PSB0b3BfcmVhZF9vbmx5X2xldmVsKTsKIAogCS8qCiAJICogSWYgd2UncmUgaW4g YSBzdWJ0cmFuc2FjdGlvbiwgc3RhY2sgdXAgc2F2ZXBvaW50cyB0byBtYXRjaCBvdXIgbGV2ZWwu CkBAIC04NzQsMTIgKzkzNCwyMSBAQCBiZWdpbl9yZW1vdGVfeGFjdChDb25uQ2FjaGVFbnRyeSAq ZW50cnkpCiAJICovCiAJd2hpbGUgKGVudHJ5LT54YWN0X2RlcHRoIDwgY3VybGV2ZWwpCiAJewot CQljaGFyCQlzcWxbNjRdOworCQlTdHJpbmdJbmZvRGF0YSBzcWw7CisJCWJvb2wJCXJvID0gKGVu dHJ5LT54YWN0X2RlcHRoICsgMSA9PSB0b3BfcmVhZF9vbmx5X2xldmVsKTsKIAotCQlzbnByaW50 ZihzcWwsIHNpemVvZihzcWwpLCAiU0FWRVBPSU5UIHMlZCIsIGVudHJ5LT54YWN0X2RlcHRoICsg MSk7CisJCWluaXRTdHJpbmdJbmZvKCZzcWwpOworCQlhcHBlbmRTdHJpbmdJbmZvKCZzcWwsICJT QVZFUE9JTlQgcyVkIiwgZW50cnktPnhhY3RfZGVwdGggKyAxKTsKKwkJaWYgKHJvKQorCQkJYXBw ZW5kU3RyaW5nSW5mb1N0cmluZygmc3FsLCAiOyBTRVQgdHJhbnNhY3Rpb25fcmVhZF9vbmx5ID0g b24iKTsKIAkJZW50cnktPmNoYW5naW5nX3hhY3Rfc3RhdGUgPSB0cnVlOwotCQlkb19zcWxfY29t bWFuZChlbnRyeS0+Y29ubiwgc3FsKTsKKwkJZG9fc3FsX2NvbW1hbmQoZW50cnktPmNvbm4sIHNx bC5kYXRhKTsKIAkJZW50cnktPnhhY3RfZGVwdGgrKzsKKwkJaWYgKHJvKQorCQl7CisJCQlBc3Nl cnQoIWVudHJ5LT54YWN0X3JlYWRfb25seSk7CisJCQllbnRyeS0+eGFjdF9yZWFkX29ubHkgPSB0 cnVlOworCQl9CiAJCWVudHJ5LT5jaGFuZ2luZ194YWN0X3N0YXRlID0gZmFsc2U7CiAJfQogfQpA QCAtMTE3NCw2ICsxMjQzLDkgQEAgcGdmZHdfeGFjdF9jYWxsYmFjayhYYWN0RXZlbnQgZXZlbnQs IHZvaWQgKmFyZykKIAogCS8qIEFsc28gcmVzZXQgY3Vyc29yIG51bWJlcmluZyBmb3IgbmV4dCB0 cmFuc2FjdGlvbiAqLwogCWN1cnNvcl9udW1iZXIgPSAwOworCisJLyogTGlrZXdpc2UgZm9yIHRv cF9yZWFkX29ubHlfbGV2ZWwgKi8KKwl0b3BfcmVhZF9vbmx5X2xldmVsID0gMDsKIH0KIAogLyoK QEAgLTEyNzIsNiArMTM0NCwxMCBAQCBwZ2Zkd19zdWJ4YWN0X2NhbGxiYWNrKFN1YlhhY3RFdmVu dCBldmVudCwgU3ViVHJhbnNhY3Rpb25JZCBteVN1YmlkLAogCQkJCQkJCQkJICAgZmFsc2UpOwog CQl9CiAJfQorCisJLyogSWYgaW4gdGhlIHRvcG1vc3QgcmVhZC1vbmx5IHRyYW5zYWN0aW9uLCBy ZXNldCB0b3BfcmVhZF9vbmx5X2xldmVsICovCisJaWYgKGN1cmxldmVsID09IHRvcF9yZWFkX29u bHlfbGV2ZWwpCisJCXRvcF9yZWFkX29ubHlfbGV2ZWwgPSAwOwogfQogCiAvKgpAQCAtMTM3NCw2 ICsxNDUwLDkgQEAgcGdmZHdfcmVzZXRfeGFjdF9zdGF0ZShDb25uQ2FjaGVFbnRyeSAqZW50cnks IGJvb2wgdG9wbGV2ZWwpCiAJCS8qIFJlc2V0IHN0YXRlIHRvIHNob3cgd2UncmUgb3V0IG9mIGEg dHJhbnNhY3Rpb24gKi8KIAkJZW50cnktPnhhY3RfZGVwdGggPSAwOwogCisJCS8qIFJlc2V0IHhh Y3Qgci9vIHN0YXRlICovCisJCWVudHJ5LT54YWN0X3JlYWRfb25seSA9IGZhbHNlOworCiAJCS8q CiAJCSAqIElmIHRoZSBjb25uZWN0aW9uIGlzbid0IGluIGEgZ29vZCBpZGxlIHN0YXRlLCBpdCBp cyBtYXJrZWQgYXMKIAkJICogaW52YWxpZCBvciBrZWVwX2Nvbm5lY3Rpb25zIG9wdGlvbiBvZiBp dHMgc2VydmVyIGlzIGRpc2FibGVkLCB0aGVuCkBAIC0xMzk0LDYgKzE0NzMsMTAgQEAgcGdmZHdf cmVzZXRfeGFjdF9zdGF0ZShDb25uQ2FjaGVFbnRyeSAqZW50cnksIGJvb2wgdG9wbGV2ZWwpCiAJ ewogCQkvKiBSZXNldCBzdGF0ZSB0byBzaG93IHdlJ3JlIG91dCBvZiBhIHN1YnRyYW5zYWN0aW9u ICovCiAJCWVudHJ5LT54YWN0X2RlcHRoLS07CisKKwkJLyogSWYgaW4gdGhlIHRvcG1vc3QgcmVh ZC1vbmx5IHRyYW5zYWN0aW9uLCByZXNldCB4YWN0IHIvbyBzdGF0ZSAqLworCQlpZiAoZW50cnkt PnhhY3RfZGVwdGggKyAxID09IHRvcF9yZWFkX29ubHlfbGV2ZWwpCisJCQllbnRyeS0+eGFjdF9y ZWFkX29ubHkgPSBmYWxzZTsKIAl9CiB9CiAKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcG9zdGdyZXNf ZmR3L2V4cGVjdGVkL3Bvc3RncmVzX2Zkdy5vdXQgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9leHBl Y3RlZC9wb3N0Z3Jlc19mZHcub3V0CmluZGV4IDI0ZmY1ZjcwY2NlLi45NjlkMzU3ZWYwOCAxMDA2 NDQKLS0tIGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvZXhwZWN0ZWQvcG9zdGdyZXNfZmR3Lm91dAor KysgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9leHBlY3RlZC9wb3N0Z3Jlc19mZHcub3V0CkBAIC0x MjMyMCw2ICsxMjMyMCwxNDAgQEAgU0VMRUNUIGNvdW50KCopIEZST00gcmVtb3RlX2FwcGxpY2F0 aW9uX25hbWUKIERST1AgRk9SRUlHTiBUQUJMRSByZW1vdGVfYXBwbGljYXRpb25fbmFtZTsKIERS T1AgVklFVyBteV9hcHBsaWNhdGlvbl9uYW1lOwogLS0gPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gdGVzdCByZWFk LW9ubHkgYW5kL29yIGRlZmVycmFibGUgdHJhbnNhY3Rpb25zCistLSA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDUkVB VEUgVEFCTEUgbG9jdCAoZjEgaW50LCBmMiB0ZXh0KTsKK0NSRUFURSBGVU5DVElPTiBsb2NmKCkg UkVUVVJOUyBTRVRPRiBsb2N0IExBTkdVQUdFIFNRTCBBUworICAnVVBEQVRFIHB1YmxpYy5sb2N0 IFNFVCBmMiA9IGYyIHx8IGYyIFJFVFVSTklORyAqJzsKK0NSRUFURSBWSUVXIGxvY3YgQVMgU0VM RUNUIHQuKiBGUk9NIGxvY2YoKSB0OworQ1JFQVRFIEZPUkVJR04gVEFCTEUgcmVtdCAoZjEgaW50 LCBmMiB0ZXh0KQorICBTRVJWRVIgbG9vcGJhY2sgT1BUSU9OUyAodGFibGVfbmFtZSAnbG9jdicp OworQ1JFQVRFIEZPUkVJR04gVEFCTEUgcmVtdDIgKGYxIGludCwgZjIgdGV4dCkKKyAgU0VSVkVS IGxvb3BiYWNrMiBPUFRJT05TICh0YWJsZV9uYW1lICdsb2N2Jyk7CitJTlNFUlQgSU5UTyBsb2N0 IFZBTFVFUyAoMSwgJ2ZvbycpLCAoMiwgJ2JhcicpOworU1RBUlQgVFJBTlNBQ1RJT04gUkVBRCBP TkxZOworU0FWRVBPSU5UIHM7CitTRUxFQ1QgKiBGUk9NIHJlbXQ7ICAtLSBzaG91bGQgZmFpbAor RVJST1I6ICBjYW5ub3QgZXhlY3V0ZSBVUERBVEUgaW4gYSByZWFkLW9ubHkgdHJhbnNhY3Rpb24K K0NPTlRFWFQ6ICBTUUwgZnVuY3Rpb24gImxvY2YiIHN0YXRlbWVudCAxCityZW1vdGUgU1FMIGNv bW1hbmQ6IFNFTEVDVCBmMSwgZjIgRlJPTSBwdWJsaWMubG9jdgorUk9MTEJBQ0sgVE8gczsKK1JF TEVBU0UgU0FWRVBPSU5UIHM7CitTRUxFQ1QgKiBGUk9NIHJlbXQ7ICAtLSBzaG91bGQgZmFpbAor RVJST1I6ICBjYW5ub3QgZXhlY3V0ZSBVUERBVEUgaW4gYSByZWFkLW9ubHkgdHJhbnNhY3Rpb24K K0NPTlRFWFQ6ICBTUUwgZnVuY3Rpb24gImxvY2YiIHN0YXRlbWVudCAxCityZW1vdGUgU1FMIGNv bW1hbmQ6IFNFTEVDVCBmMSwgZjIgRlJPTSBwdWJsaWMubG9jdgorUk9MTEJBQ0s7CitTVEFSVCBU UkFOU0FDVElPTjsKK1NBVkVQT0lOVCBzOworU0VUIHRyYW5zYWN0aW9uX3JlYWRfb25seSA9IG9u OworU0VMRUNUICogRlJPTSByZW10OyAgLS0gc2hvdWxkIGZhaWwKK0VSUk9SOiAgY2Fubm90IGV4 ZWN1dGUgVVBEQVRFIGluIGEgcmVhZC1vbmx5IHRyYW5zYWN0aW9uCitDT05URVhUOiAgU1FMIGZ1 bmN0aW9uICJsb2NmIiBzdGF0ZW1lbnQgMQorcmVtb3RlIFNRTCBjb21tYW5kOiBTRUxFQ1QgZjEs IGYyIEZST00gcHVibGljLmxvY3YKK1JPTExCQUNLIFRPIHM7CitSRUxFQVNFIFNBVkVQT0lOVCBz OworU0VUIHRyYW5zYWN0aW9uX3JlYWRfb25seSA9IG9uOworU0VMRUNUICogRlJPTSByZW10OyAg LS0gc2hvdWxkIGZhaWwKK0VSUk9SOiAgY2Fubm90IGV4ZWN1dGUgVVBEQVRFIGluIGEgcmVhZC1v bmx5IHRyYW5zYWN0aW9uCitDT05URVhUOiAgU1FMIGZ1bmN0aW9uICJsb2NmIiBzdGF0ZW1lbnQg MQorcmVtb3RlIFNRTCBjb21tYW5kOiBTRUxFQ1QgZjEsIGYyIEZST00gcHVibGljLmxvY3YKK1JP TExCQUNLOworU1RBUlQgVFJBTlNBQ1RJT047CitTQVZFUE9JTlQgczsKK1NFTEVDVCAqIEZST00g cmVtdDsgIC0tIHNob3VsZCB3b3JrCisgZjEgfCAgIGYyICAgCistLS0tKy0tLS0tLS0tCisgIDEg fCBmb29mb28KKyAgMiB8IGJhcmJhcgorKDIgcm93cykKKworU0VUIHRyYW5zYWN0aW9uX3JlYWRf b25seSA9IG9uOworU0VMRUNUICogRlJPTSByZW10OyAgLS0gc2hvdWxkIGZhaWwKK0VSUk9SOiAg Y2Fubm90IGV4ZWN1dGUgVVBEQVRFIGluIGEgcmVhZC1vbmx5IHRyYW5zYWN0aW9uCitDT05URVhU OiAgU1FMIGZ1bmN0aW9uICJsb2NmIiBzdGF0ZW1lbnQgMQorcmVtb3RlIFNRTCBjb21tYW5kOiBT RUxFQ1QgZjEsIGYyIEZST00gcHVibGljLmxvY3YKK1JPTExCQUNLIFRPIHM7CitSRUxFQVNFIFNB VkVQT0lOVCBzOworU0VMRUNUICogRlJPTSByZW10OyAgLS0gc2hvdWxkIHdvcmsKKyBmMSB8ICAg ZjIgICAKKy0tLS0rLS0tLS0tLS0KKyAgMSB8IGZvb2ZvbworICAyIHwgYmFyYmFyCisoMiByb3dz KQorCitTRVQgdHJhbnNhY3Rpb25fcmVhZF9vbmx5ID0gb247CitTRUxFQ1QgKiBGUk9NIHJlbXQ7 ICAtLSBzaG91bGQgZmFpbAorRVJST1I6ICBjYW5ub3QgZXhlY3V0ZSBVUERBVEUgaW4gYSByZWFk LW9ubHkgdHJhbnNhY3Rpb24KK0NPTlRFWFQ6ICBTUUwgZnVuY3Rpb24gImxvY2YiIHN0YXRlbWVu dCAxCityZW1vdGUgU1FMIGNvbW1hbmQ6IFNFTEVDVCBmMSwgZjIgRlJPTSBwdWJsaWMubG9jdgor Uk9MTEJBQ0s7CitTVEFSVCBUUkFOU0FDVElPTjsKK1NBVkVQT0lOVCBzOworU0VMRUNUICogRlJP TSByZW10OyAgLS0gc2hvdWxkIHdvcmsKKyBmMSB8ICAgZjIgICAKKy0tLS0rLS0tLS0tLS0KKyAg MSB8IGZvb2ZvbworICAyIHwgYmFyYmFyCisoMiByb3dzKQorCitTRVQgdHJhbnNhY3Rpb25fcmVh ZF9vbmx5ID0gb247CitTRUxFQ1QgKiBGUk9NIHJlbXQyOyAgLS0gc2hvdWxkIGZhaWwKK0VSUk9S OiAgY2Fubm90IGV4ZWN1dGUgVVBEQVRFIGluIGEgcmVhZC1vbmx5IHRyYW5zYWN0aW9uCitDT05U RVhUOiAgU1FMIGZ1bmN0aW9uICJsb2NmIiBzdGF0ZW1lbnQgMQorcmVtb3RlIFNRTCBjb21tYW5k OiBTRUxFQ1QgZjEsIGYyIEZST00gcHVibGljLmxvY3YKK1JPTExCQUNLIFRPIHM7CitSRUxFQVNF IFNBVkVQT0lOVCBzOworU0VMRUNUICogRlJPTSByZW10OyAgLS0gc2hvdWxkIHdvcmsKKyBmMSB8 ICAgZjIgICAKKy0tLS0rLS0tLS0tLS0KKyAgMSB8IGZvb2ZvbworICAyIHwgYmFyYmFyCisoMiBy b3dzKQorCitTRVQgdHJhbnNhY3Rpb25fcmVhZF9vbmx5ID0gb247CitTRUxFQ1QgKiBGUk9NIHJl bXQyOyAgLS0gc2hvdWxkIGZhaWwKK0VSUk9SOiAgY2Fubm90IGV4ZWN1dGUgVVBEQVRFIGluIGEg cmVhZC1vbmx5IHRyYW5zYWN0aW9uCitDT05URVhUOiAgU1FMIGZ1bmN0aW9uICJsb2NmIiBzdGF0 ZW1lbnQgMQorcmVtb3RlIFNRTCBjb21tYW5kOiBTRUxFQ1QgZjEsIGYyIEZST00gcHVibGljLmxv Y3YKK1JPTExCQUNLOworRFJPUCBGT1JFSUdOIFRBQkxFIHJlbXQ7CitDUkVBVEUgRk9SRUlHTiBU QUJMRSByZW10IChmMSBpbnQsIGYyIHRleHQpCisgIFNFUlZFUiBsb29wYmFjayBPUFRJT05TICh0 YWJsZV9uYW1lICdsb2N0Jyk7CitTVEFSVCBUUkFOU0FDVElPTiBJU09MQVRJT04gTEVWRUwgU0VS SUFMSVpBQkxFIFJFQUQgT05MWTsKK1NFTEVDVCAqIEZST00gcmVtdDsKKyBmMSB8IGYyICAKKy0t LS0rLS0tLS0KKyAgMSB8IGZvbworICAyIHwgYmFyCisoMiByb3dzKQorCitDT01NSVQ7CitTVEFS VCBUUkFOU0FDVElPTiBJU09MQVRJT04gTEVWRUwgU0VSSUFMSVpBQkxFIERFRkVSUkFCTEU7CitT RUxFQ1QgKiBGUk9NIHJlbXQ7CisgZjEgfCBmMiAgCistLS0tKy0tLS0tCisgIDEgfCBmb28KKyAg MiB8IGJhcgorKDIgcm93cykKKworQ09NTUlUOworU1RBUlQgVFJBTlNBQ1RJT04gSVNPTEFUSU9O IExFVkVMIFNFUklBTElaQUJMRSBSRUFEIE9OTFkgREVGRVJSQUJMRTsKK1NFTEVDVCAqIEZST00g cmVtdDsKKyBmMSB8IGYyICAKKy0tLS0rLS0tLS0KKyAgMSB8IGZvbworICAyIHwgYmFyCisoMiBy b3dzKQorCitDT01NSVQ7CistLSBDbGVhbiB1cAorRFJPUCBGT1JFSUdOIFRBQkxFIHJlbXQ7CitE Uk9QIEZPUkVJR04gVEFCTEUgcmVtdDI7CitEUk9QIFZJRVcgbG9jdjsKK0RST1AgRlVOQ1RJT04g bG9jZigpOworRFJPUCBUQUJMRSBsb2N0OworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0gdGVzdCBwYXJhbGxl bCBjb21taXQgYW5kIHBhcmFsbGVsIGFib3J0CiAtLSA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiBBTFRFUiBTRVJWRVIg bG9vcGJhY2sgT1BUSU9OUyAoQUREIHBhcmFsbGVsX2NvbW1pdCAndHJ1ZScpOwpkaWZmIC0tZ2l0 IGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvc3FsL3Bvc3RncmVzX2Zkdy5zcWwgYi9jb250cmliL3Bv c3RncmVzX2Zkdy9zcWwvcG9zdGdyZXNfZmR3LnNxbAppbmRleCAxZjI3MjYwYmFmZS4uMDk5YzZj ZGU0YjggMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3NxbC9wb3N0Z3Jlc19mZHcu c3FsCisrKyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3NxbC9wb3N0Z3Jlc19mZHcuc3FsCkBAIC00 MTk1LDYgKzQxOTUsODQgQEAgU0VMRUNUIGNvdW50KCopIEZST00gcmVtb3RlX2FwcGxpY2F0aW9u X25hbWUKIERST1AgRk9SRUlHTiBUQUJMRSByZW1vdGVfYXBwbGljYXRpb25fbmFtZTsKIERST1Ag VklFVyBteV9hcHBsaWNhdGlvbl9uYW1lOwogCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSB0ZXN0IHJlYWQt b25seSBhbmQvb3IgZGVmZXJyYWJsZSB0cmFuc2FjdGlvbnMKKy0tID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NSRUFU RSBUQUJMRSBsb2N0IChmMSBpbnQsIGYyIHRleHQpOworQ1JFQVRFIEZVTkNUSU9OIGxvY2YoKSBS RVRVUk5TIFNFVE9GIGxvY3QgTEFOR1VBR0UgU1FMIEFTCisgICdVUERBVEUgcHVibGljLmxvY3Qg U0VUIGYyID0gZjIgfHwgZjIgUkVUVVJOSU5HIConOworQ1JFQVRFIFZJRVcgbG9jdiBBUyBTRUxF Q1QgdC4qIEZST00gbG9jZigpIHQ7CitDUkVBVEUgRk9SRUlHTiBUQUJMRSByZW10IChmMSBpbnQs IGYyIHRleHQpCisgIFNFUlZFUiBsb29wYmFjayBPUFRJT05TICh0YWJsZV9uYW1lICdsb2N2Jyk7 CitDUkVBVEUgRk9SRUlHTiBUQUJMRSByZW10MiAoZjEgaW50LCBmMiB0ZXh0KQorICBTRVJWRVIg bG9vcGJhY2syIE9QVElPTlMgKHRhYmxlX25hbWUgJ2xvY3YnKTsKK0lOU0VSVCBJTlRPIGxvY3Qg VkFMVUVTICgxLCAnZm9vJyksICgyLCAnYmFyJyk7CisKK1NUQVJUIFRSQU5TQUNUSU9OIFJFQUQg T05MWTsKK1NBVkVQT0lOVCBzOworU0VMRUNUICogRlJPTSByZW10OyAgLS0gc2hvdWxkIGZhaWwK K1JPTExCQUNLIFRPIHM7CitSRUxFQVNFIFNBVkVQT0lOVCBzOworU0VMRUNUICogRlJPTSByZW10 OyAgLS0gc2hvdWxkIGZhaWwKK1JPTExCQUNLOworCitTVEFSVCBUUkFOU0FDVElPTjsKK1NBVkVQ T0lOVCBzOworU0VUIHRyYW5zYWN0aW9uX3JlYWRfb25seSA9IG9uOworU0VMRUNUICogRlJPTSBy ZW10OyAgLS0gc2hvdWxkIGZhaWwKK1JPTExCQUNLIFRPIHM7CitSRUxFQVNFIFNBVkVQT0lOVCBz OworU0VUIHRyYW5zYWN0aW9uX3JlYWRfb25seSA9IG9uOworU0VMRUNUICogRlJPTSByZW10OyAg LS0gc2hvdWxkIGZhaWwKK1JPTExCQUNLOworCitTVEFSVCBUUkFOU0FDVElPTjsKK1NBVkVQT0lO VCBzOworU0VMRUNUICogRlJPTSByZW10OyAgLS0gc2hvdWxkIHdvcmsKK1NFVCB0cmFuc2FjdGlv bl9yZWFkX29ubHkgPSBvbjsKK1NFTEVDVCAqIEZST00gcmVtdDsgIC0tIHNob3VsZCBmYWlsCitS T0xMQkFDSyBUTyBzOworUkVMRUFTRSBTQVZFUE9JTlQgczsKK1NFTEVDVCAqIEZST00gcmVtdDsg IC0tIHNob3VsZCB3b3JrCitTRVQgdHJhbnNhY3Rpb25fcmVhZF9vbmx5ID0gb247CitTRUxFQ1Qg KiBGUk9NIHJlbXQ7ICAtLSBzaG91bGQgZmFpbAorUk9MTEJBQ0s7CisKK1NUQVJUIFRSQU5TQUNU SU9OOworU0FWRVBPSU5UIHM7CitTRUxFQ1QgKiBGUk9NIHJlbXQ7ICAtLSBzaG91bGQgd29yawor U0VUIHRyYW5zYWN0aW9uX3JlYWRfb25seSA9IG9uOworU0VMRUNUICogRlJPTSByZW10MjsgIC0t IHNob3VsZCBmYWlsCitST0xMQkFDSyBUTyBzOworUkVMRUFTRSBTQVZFUE9JTlQgczsKK1NFTEVD VCAqIEZST00gcmVtdDsgIC0tIHNob3VsZCB3b3JrCitTRVQgdHJhbnNhY3Rpb25fcmVhZF9vbmx5 ID0gb247CitTRUxFQ1QgKiBGUk9NIHJlbXQyOyAgLS0gc2hvdWxkIGZhaWwKK1JPTExCQUNLOwor CitEUk9QIEZPUkVJR04gVEFCTEUgcmVtdDsKK0NSRUFURSBGT1JFSUdOIFRBQkxFIHJlbXQgKGYx IGludCwgZjIgdGV4dCkKKyAgU0VSVkVSIGxvb3BiYWNrIE9QVElPTlMgKHRhYmxlX25hbWUgJ2xv Y3QnKTsKKworU1RBUlQgVFJBTlNBQ1RJT04gSVNPTEFUSU9OIExFVkVMIFNFUklBTElaQUJMRSBS RUFEIE9OTFk7CitTRUxFQ1QgKiBGUk9NIHJlbXQ7CitDT01NSVQ7CisKK1NUQVJUIFRSQU5TQUNU SU9OIElTT0xBVElPTiBMRVZFTCBTRVJJQUxJWkFCTEUgREVGRVJSQUJMRTsKK1NFTEVDVCAqIEZS T00gcmVtdDsKK0NPTU1JVDsKKworU1RBUlQgVFJBTlNBQ1RJT04gSVNPTEFUSU9OIExFVkVMIFNF UklBTElaQUJMRSBSRUFEIE9OTFkgREVGRVJSQUJMRTsKK1NFTEVDVCAqIEZST00gcmVtdDsKK0NP TU1JVDsKKworLS0gQ2xlYW4gdXAKK0RST1AgRk9SRUlHTiBUQUJMRSByZW10OworRFJPUCBGT1JF SUdOIFRBQkxFIHJlbXQyOworRFJPUCBWSUVXIGxvY3Y7CitEUk9QIEZVTkNUSU9OIGxvY2YoKTsK K0RST1AgVEFCTEUgbG9jdDsKKwogLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0gdGVzdCBwYXJhbGxlbCBjb21t aXQgYW5kIHBhcmFsbGVsIGFib3J0CiAtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CmRpZmYgLS1naXQgYS9kb2Mvc3Jj L3NnbWwvcG9zdGdyZXMtZmR3LnNnbWwgYi9kb2Mvc3JjL3NnbWwvcG9zdGdyZXMtZmR3LnNnbWwK aW5kZXggNzgxYTAxMDY3ZjcuLmM0NjQ3MTZlM2NlIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwv cG9zdGdyZXMtZmR3LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3Bvc3RncmVzLWZkdy5zZ21sCkBA IC0xMDc3LDYgKzEwNzcsMjEgQEAgcG9zdGdyZXM9IyBTRUxFQ1QgcG9zdGdyZXNfZmR3X2Rpc2Nv bm5lY3RfYWxsKCk7CiAgICA8cHJvZHVjdG5hbWU+UG9zdGdyZVNRTDwvcHJvZHVjdG5hbWU+IHJl bGVhc2UgbWlnaHQgbW9kaWZ5IHRoZXNlIHJ1bGVzLgogICA8L3BhcmE+CiAKKyAgPHBhcmE+Cisg ICBUaGUgcmVtb3RlIHRyYW5zYWN0aW9uIGlzIG9wZW5lZCBpbiB0aGUgc2FtZSByZWFkL3dyaXRl IG1vZGUgYXMgdGhlIGxvY2FsCisgICB0cmFuc2FjdGlvbjogaWYgdGhlIGxvY2FsIHRyYW5zYWN0 aW9uIGlzIDxsaXRlcmFsPlJFQUQgT05MWTwvbGl0ZXJhbD4sCisgICB0aGUgcmVtb3RlIHRyYW5z YWN0aW9uIGlzIG9wZW5lZCBpbiA8bGl0ZXJhbD5SRUFEIE9OTFk8L2xpdGVyYWw+IG1vZGUsCisg ICBvdGhlcndpc2UgaXQgaXMgb3BlbmVkIGluIDxsaXRlcmFsPlJFQUQgV1JJVEU8L2xpdGVyYWw+ IG1vZGUuCisgICAoVGhpcyBydWxlIGlzIGFsc28gYXBwbGllZCB0byByZW1vdGUgYW5kIGxvY2Fs IHN1YnRyYW5zYWN0aW9ucy4pCisgIDwvcGFyYT4KKworICA8cGFyYT4KKyAgIFRoZSByZW1vdGUg dHJhbnNhY3Rpb24gaXMgYWxzbyBvcGVuZWQgaW4gdGhlIHNhbWUgZGVmZXJyYWJsZSBtb2RlIGFz IHRoZQorICAgbG9jYWwgdHJhbnNhY3Rpb246IGlmIHRoZSBsb2NhbCB0cmFuc2FjdGlvbiBpcyA8 bGl0ZXJhbD5ERUZFUlJBQkxFPC9saXRlcmFsPiwKKyAgIHRoZSByZW1vdGUgdHJhbnNhY3Rpb24g aXMgb3BlbmVkIGluIDxsaXRlcmFsPkRFRkVSUkFCTEU8L2xpdGVyYWw+IG1vZGUsCisgICBvdGhl cndpc2UgaXQgaXMgb3BlbmVkIGluIDxsaXRlcmFsPk5PVCBERUZFUlJBQkxFPC9saXRlcmFsPiBt b2RlLgorICA8L3BhcmE+CisKICAgPHBhcmE+CiAgICBOb3RlIHRoYXQgaXQgaXMgY3VycmVudGx5 IG5vdCBzdXBwb3J0ZWQgYnkKICAgIDxmaWxlbmFtZT5wb3N0Z3Jlc19mZHc8L2ZpbGVuYW1lPiB0 byBwcmVwYXJlIHRoZSByZW1vdGUgdHJhbnNhY3Rpb24gZm9yCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9hY2Nlc3MvdHJhbnNhbS94YWN0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94 YWN0LmMKaW5kZXggYjg4NTUxM2Y3NjUuLjI5NGQxZWVhMjE4IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9hY2Nlc3MvdHJhbnNhbS94YWN0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5z YW0veGFjdC5jCkBAIC0xMDQ0LDYgKzEwNDQsMzAgQEAgVHJhbnNhY3Rpb25TdGFydGVkRHVyaW5n UmVjb3Zlcnkodm9pZCkKIAlyZXR1cm4gQ3VycmVudFRyYW5zYWN0aW9uU3RhdGUtPnN0YXJ0ZWRJ blJlY292ZXJ5OwogfQogCisvKgorICoJR2V0VG9wUmVhZE9ubHlUcmFuc2FjdGlvbk5lc3RMZXZl bAorICoKKyAqIE5vdGU6IHRoaXMgd2lsbCByZXR1cm4gemVybyB3aGVuIG5vdCBpbnNpZGUgYW55 IHRyYW5zYWN0aW9uIG9yIHdoZW4gbmVpdGhlcgorICogYSB0b3AtbGV2ZWwgdHJhbnNhY3Rpb24g bm9yIHN1YnRyYW5zYWN0aW9ucyBhcmUgcmVhZC1vbmx5LCBvbmUgd2hlbiB0aGUKKyAqIHRvcC1s ZXZlbCB0cmFuc2FjdGlvbiBpcyByZWFkLW9ubHksIHR3byB3aGVuIG9uZSBsZXZlbCBvZiBzdWJ0 cmFuc2FjdGlvbiBpcworICogcmVhZC1vbmx5LCBldGMuCisgKi8KK2ludAorR2V0VG9wUmVhZE9u bHlUcmFuc2FjdGlvbk5lc3RMZXZlbCh2b2lkKQoreworCVRyYW5zYWN0aW9uU3RhdGUgcyA9IEN1 cnJlbnRUcmFuc2FjdGlvblN0YXRlOworCisJaWYgKCFYYWN0UmVhZE9ubHkpCisJCXJldHVybiAw OworCXdoaWxlIChzLT5uZXN0aW5nTGV2ZWwgPiAxKQorCXsKKwkJaWYgKCFzLT5wcmV2WGFjdFJl YWRPbmx5KQorCQkJcmV0dXJuIHMtPm5lc3RpbmdMZXZlbDsKKwkJcyA9IHMtPnBhcmVudDsKKwl9 CisJcmV0dXJuIHMtPm5lc3RpbmdMZXZlbDsKK30KKwogLyoKICAqCUVudGVyUGFyYWxsZWxNb2Rl CiAgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy94YWN0LmggYi9zcmMvaW5jbHVk ZS9hY2Nlc3MveGFjdC5oCmluZGV4IGIyYmMxMGVlMDQxLi43ZjExYjkxOTc5OSAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3hhY3QuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MveGFj dC5oCkBAIC00NTgsNiArNDU4LDcgQEAgZXh0ZXJuIFRpbWVzdGFtcFR6IEdldEN1cnJlbnRUcmFu c2FjdGlvblN0b3BUaW1lc3RhbXAodm9pZCk7CiBleHRlcm4gdm9pZCBTZXRDdXJyZW50U3RhdGVt ZW50U3RhcnRUaW1lc3RhbXAodm9pZCk7CiBleHRlcm4gaW50CUdldEN1cnJlbnRUcmFuc2FjdGlv bk5lc3RMZXZlbCh2b2lkKTsKIGV4dGVybiBib29sIFRyYW5zYWN0aW9uSWRJc0N1cnJlbnRUcmFu c2FjdGlvbklkKFRyYW5zYWN0aW9uSWQgeGlkKTsKK2V4dGVybiBpbnQJR2V0VG9wUmVhZE9ubHlU cmFuc2FjdGlvbk5lc3RMZXZlbCh2b2lkKTsKIGV4dGVybiB2b2lkIENvbW1hbmRDb3VudGVySW5j cmVtZW50KHZvaWQpOwogZXh0ZXJuIHZvaWQgRm9yY2VTeW5jQ29tbWl0KHZvaWQpOwogZXh0ZXJu IHZvaWQgU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQodm9pZCk7Cg== --0000000000009fd90d06349bf271--