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 1wi1ap-000XdU-0M for pgsql-hackers@arkaria.postgresql.org; Fri, 10 Jul 2026 03:07:59 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wi1an-00FYRv-0q for pgsql-hackers@arkaria.postgresql.org; Fri, 10 Jul 2026 03:07:58 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wi1am-00FYRm-2n for pgsql-hackers@lists.postgresql.org; Fri, 10 Jul 2026 03:07:57 +0000 Received: from mail-ej1-x631.google.com ([2a00:1450:4864:20::631]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wi1ak-00000000aJk-2659 for pgsql-hackers@lists.postgresql.org; Fri, 10 Jul 2026 03:07:57 +0000 Received: by mail-ej1-x631.google.com with SMTP id a640c23a62f3a-c15d111ca99so53123466b.0 for ; Thu, 09 Jul 2026 20:07:53 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1783652872; cv=none; d=google.com; s=arc-20260327; b=Q8suaNrNfT0HDiqlCr52HMpDWFNL1jTZYKvQRE95JYIW7Na/oPW03nfqYcyLryv9re hpxuoECXr1m+y6DX05U59JwD8biBhlzZSx+N6KXJ0O1KaWhBL/Mcy1sIobPyR1mjf6OZ VEDRxodS4Fv++RCPEGN32+X2/SBfA4c/9QnEc0pG+4a2OAip8qmR5DyXo8IhrkVPT1FK YVUH9VzmwccYPyjlXwb2ckrrGg8vHHu3yNr9k1maDuSosIDkCSoviywSI7Dv46SasumF xACeOGRaoM/b+yUp4VaAzOoMvyI4Al7BzZYy9khwhwc/Xp9MzfV5/J2Vv7NzCtC3nQJR kA8Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=IYLs4nYwHgiXFTnK1BjAzKK5ebMb2JhYlIkBBGSs+L4=; fh=iRmetz6Vw4OVONMSJ2mh1D+lxxB0rCYilREZxaQ9Iso=; b=Yg5LZ8d/a28mwVBM4WiNPGL6rSj55Sc5hXOCsTPDMuF/8YEzpdQ2NGTjmlZ+bmYeC0 JYJCL2UbQgi7neSG257YpNgRRB6f9Wqui3+ZI6OaW7TO/wG1LUh8momj/95dGNwAf8yj 44WQ/CnDVYHJk2Uurj5c+p9R3EtKlS5ns7bwMTlxmnjeckjwxOauEF657cElmJJyAapR t1yqzvHp+EJdb+VMbK19lBB8o38Tb11PKe6HSlgX50ik5uPFEm+Xb0srjv2RNVXLczeC yBIDmCcIk/RByctstVLnLWh9hRue7KHJ0wo7wMVgvv5DHtb2dFguNizE9l1NYMTYVwBI OCmA==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1783652872; x=1784257672; darn=lists.postgresql.org; h=content-type:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:from:to:cc:subject:date:message-id:reply-to :content-type; bh=IYLs4nYwHgiXFTnK1BjAzKK5ebMb2JhYlIkBBGSs+L4=; b=tHz4bh688RTxSDsndFw4Ro3uWTMJS1OEsoy87eRvX9Z4TbfGVPpUcDuE54rE52IcvB Yp/KKw44Hi62oCIGrKmqQkjdJ4tkD9McOAtTwIU0hIcnsj99X84oOzvTW0eAesT2tmRp a6FnZbib3RKJH9ux0oVd6RJwamYfx88cfEWZgok3jUVfwW4AmcZKm54TueWMzX/SFmbs DMC2N0w+xoVLDJzcjADeyntv2lWrSte/2fepJaXP+VyHu3GZw2DmIdL58+jyATg8Ol8k JcY91Sk7UbpxdUgr7jtG1XJHb6YZNmfrOPuup/ExryZeE5d2djN0FqnN6YKPUwa3ublH 49wg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783652872; x=1784257672; h=content-type: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:content-type; bh=IYLs4nYwHgiXFTnK1BjAzKK5ebMb2JhYlIkBBGSs+L4=; b=Vsspcp2f/k7mYrolRElR/dwF9y3ezpDafgMMpLW0FgePW0irQXtQljTm2sM3gk5nTf HhqmS6W8sYrM+kl/12e+IzLpkh0SEFSi+dNt53KtTpKdLS8SKBHRHArZQfZGBQLyU/YU UIyo5IQvjvx2v0CG3rmQg1LpjTncaAfruHby6CfyGc/eiouaiJNxx96kJE03O+glnud/ GcKhY0iQrF0SONvKFVq4EFtNyG2HAdYGNobLTB9BGa7JrHMfyVHjKvvH2+KKNp10+4jG nOYVS0sFmLjurXFb2lQ61mvXRb70bnUO586etLmLwIAU+uV2qcxgLeKIRaIVxj5DSuP7 YkeQ== X-Gm-Message-State: AOJu0YxJraLx/U32wN8YhbIAgzoeT5eOdDlEHjXnNNS3CwnRe57o15G+ VqSAsh/R3qwW6eE6jARDk4+lNpwdFlusG3Bq/RMtu0qblzs282RwtEC15iDWyZhxXytk/BuPGQy 9QNGm6PG9ULaLwrVrGGxz2bFBSlvFegI= X-Gm-Gg: AfdE7cn69hk2JBUiRSEbDXJyjjpTNsj5deDxFM/Sv6LhovBmWx4Zgzxen9zlEC9WpmB xBQKZgUbarItpGDzx1rWrmq1AH0mBxUgAn4S1Uw1zxqf/facPQAigH2U88o5QKy+DdOLxKABasQ ficS9w7/4V8Yj6MSouxtxKbLwbgq4iGMpMTYv0APyp3tFHtNKzsls+u/cVEPqHhfEbtfNj09HsA 8T0hWoT01a8l/TWMA0DKpPthWqKwo0ioGQkQFujhG2BNORDoLXzJ7Is2lfQoo0gRKJ0ueo+B1U+ uP9sznI9Pl6WkoagnmwT3LmlPPFI+4KPbXeudwIHsm0cVrvaprJHSWzDtiOZ6dryNqDDsw== X-Received: by 2002:a17:907:940a:b0:c15:c1ac:3df5 with SMTP id a640c23a62f3a-c15ce157decmr431821366b.58.1783652871732; Thu, 09 Jul 2026 20:07:51 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Xuneng Zhou Date: Fri, 10 Jul 2026 11:07:39 +0800 X-Gm-Features: AUfX_mxKeMzrwC3Fza4zU-G6QHnO93jsnX-oEjkABXOLmr9ckEXGIeO_53vygUM Message-ID: Subject: Re: Fix Grammar in Buffer Lock Wait Message To: Guoqing Yang Cc: pgsql-hackers@lists.postgresql.org Content-Type: multipart/mixed; boundary="000000000000d2bbf90656390b28" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000d2bbf90656390b28 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi Guoqing, On Wed, Jul 1, 2026 at 9:45=E2=80=AFAM Guoqing Yang wr= ote: > > Fix grammar in buffer lock wait message > > Correct the wait message from "Waiting to acquire a exclusive lock on a b= uffer" > to "Waiting to acquire an exclusive lock on a buffer". > > The word "exclusive" starts with a vowel sound, so the indefinite article > should be "an" instead of "a". This seems to be a typo. I asked Sol to check this kind of issue in the tree, and it found a bunch of them. Do you bother to do a further check? As John suggested, we better fix grammar issues wholesale[1]. [1] https://www.postgresql.org/message-id/CANWCAZaZgQN54ccVheWd%3Dyg2KW_c1v= TPB7hd0CXkqBNLD2-pDA%40mail.gmail.com --=20 Regards, Xuneng Zhou HighGo Software Co., Ltd. --000000000000d2bbf90656390b28 Content-Type: application/octet-stream; name="fix-indefinite-articles.patch" Content-Disposition: attachment; filename="fix-indefinite-articles.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mrecqcy30 ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9ldmVudC10cmlnZ2VyLnNnbWwgYi9kb2Mvc3JjL3Nn bWwvZXZlbnQtdHJpZ2dlci5zZ21sCmluZGV4IGMxMDYyNzU1NGJkLi4wMDQxMjk0ZDMyNSAxMDA2 NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2V2ZW50LXRyaWdnZXIuc2dtbAorKysgYi9kb2Mvc3JjL3Nn bWwvZXZlbnQtdHJpZ2dlci5zZ21sCkBAIC0yMjksOSArMjI5LDkgQEAKICAgIDxwYXJhPgogICAg IFdoZW4gYSBmdW5jdGlvbiBpcyBjYWxsZWQgYnkgdGhlIGV2ZW50IHRyaWdnZXIgbWFuYWdlciwg aXQgaXMgbm90IHBhc3NlZAogICAgIGFueSBub3JtYWwgYXJndW1lbnRzLCBidXQgaXQgaXMgcGFz c2VkIGEgPHF1b3RlPmNvbnRleHQ8L3F1b3RlPiBwb2ludGVyCi0gICAgcG9pbnRpbmcgdG8gYSA8 c3RydWN0bmFtZT5FdmVudFRyaWdnZXJEYXRhPC9zdHJ1Y3RuYW1lPiBzdHJ1Y3R1cmUuIEMgZnVu Y3Rpb25zIGNhbgotICAgIGNoZWNrIHdoZXRoZXIgdGhleSB3ZXJlIGNhbGxlZCBmcm9tIHRoZSBl dmVudCB0cmlnZ2VyIG1hbmFnZXIgb3Igbm90IGJ5Ci0gICAgZXhlY3V0aW5nIHRoZSBtYWNybzoK KyAgICBwb2ludGluZyB0byBhbiA8c3RydWN0bmFtZT5FdmVudFRyaWdnZXJEYXRhPC9zdHJ1Y3Ru YW1lPiBzdHJ1Y3R1cmUuIEMKKyAgICBmdW5jdGlvbnMgY2FuIGNoZWNrIHdoZXRoZXIgdGhleSB3 ZXJlIGNhbGxlZCBmcm9tIHRoZSBldmVudCB0cmlnZ2VyIG1hbmFnZXIKKyAgICBvciBub3QgYnkg ZXhlY3V0aW5nIHRoZSBtYWNybzoKIDxwcm9ncmFtbGlzdGluZz4KIENBTExFRF9BU19FVkVOVF9U UklHR0VSKGZjaW5mbykKIDwvcHJvZ3JhbWxpc3Rpbmc+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3Nn bWwvZnVuYy9mdW5jLWFkbWluLnNnbWwgYi9kb2Mvc3JjL3NnbWwvZnVuYy9mdW5jLWFkbWluLnNn bWwKaW5kZXggMGVhZTFjMWY2MTYuLjg3N2EzMmM2M2UxIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3Nn bWwvZnVuYy9mdW5jLWFkbWluLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2Z1bmMvZnVuYy1hZG1p bi5zZ21sCkBAIC0yMjU3LDEwICsyMjU3LDEwIEBAIFNFTEVDVCBwZ19yZXN0b3JlX2V4dGVuZGVk X3N0YXRzKAogICAgICAgICAgYW5kIDxsaXRlcmFsPm1vc3RfY29tbW9uX2Jhc2VfZnJlcXM8L2xp dGVyYWw+LgogICAgICAgICAgVG8gYWNjZXB0IHN0YXRpc3RpY3MgZm9yIGFueSBleHByZXNzaW9u cyBpbiB0aGUgZXh0ZW5kZWQKICAgICAgICAgIHN0YXRpc3RpY3Mgb2JqZWN0LCB0aGUgcGFyYW1l dGVyIDxsaXRlcmFsPmV4cHJzPC9saXRlcmFsPiB3aXRoIGEgdHlwZQotICAgICAgICAgPHR5cGU+ anNvbmI8L3R5cGU+IGlzIGF2YWlsYWJsZS4gVGhpcyBzaG91bGQgYmUgYW4gb25lLWRpbWVuc2lv biBhcnJheQotICAgICAgICAgd2l0aCBhIG51bWJlciBvZiBleHByZXNzaW9ucyBtYXRjaGluZyB0 aGUgZGVmaW5pdGlvbiBvZiB0aGUgZXh0ZW5kZWQKLSAgICAgICAgIHN0YXRpc3RpY3Mgb2JqZWN0 LCBtYWRlIG9mIGpzb24gZWxlbWVudHMgZm9yIGVhY2ggb2YgdGhlIHN0YXRpc3RpY2FsCi0gICAg ICAgICBjb2x1bW5zIGluCisgICAgICAgICA8dHlwZT5qc29uYjwvdHlwZT4gaXMgYXZhaWxhYmxl LiBUaGlzIHNob3VsZCBiZSBhIG9uZS1kaW1lbnNpb25hbAorICAgICAgICAgYXJyYXkgd2l0aCBh IG51bWJlciBvZiBleHByZXNzaW9ucyBtYXRjaGluZyB0aGUgZGVmaW5pdGlvbiBvZiB0aGUKKyAg ICAgICAgIGV4dGVuZGVkIHN0YXRpc3RpY3Mgb2JqZWN0LCBtYWRlIG9mIGpzb24gZWxlbWVudHMg Zm9yIGVhY2ggb2YgdGhlCisgICAgICAgICBzdGF0aXN0aWNhbCBjb2x1bW5zIGluCiAgICAgICAg ICA8bGluayBsaW5rZW5kPSJ2aWV3LXBnLXN0YXRzLWV4dC1leHBycyI+PHN0cnVjdG5hbWU+cGdf c3RhdHNfZXh0X2V4cHJzPC9zdHJ1Y3RuYW1lPjwvbGluaz4uCiAgICAgICAgIDwvcGFyYT4KICAg ICAgICAgPHBhcmE+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvbGlicHEuc2dtbCBiL2RvYy9z cmMvc2dtbC9saWJwcS5zZ21sCmluZGV4IDdkM2MzYmI2NmQ4Li5iZDQ2MjVmMDJhMiAxMDA2NDQK LS0tIGEvZG9jL3NyYy9zZ21sL2xpYnBxLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2xpYnBxLnNn bWwKQEAgLTQ5MjgsMTAgKzQ5MjgsMTAgQEAgY2hhciAqUFFjbWRUdXBsZXMoUEdyZXN1bHQgKnJl cyk7CiAgICAgICAgUmV0dXJucyB0aGUgT0lEPGluZGV4dGVybT48cHJpbWFyeT5PSUQ8L3ByaW1h cnk+PHNlY29uZGFyeT5pbiBsaWJwcTwvc2Vjb25kYXJ5PjwvaW5kZXh0ZXJtPgogICAgICAgIG9m IHRoZSBpbnNlcnRlZCByb3csIGlmIHRoZSA8YWNyb255bT5TUUw8L2Fjcm9ueW0+IGNvbW1hbmQg d2FzIGFuCiAgICAgICAgPGNvbW1hbmQ+SU5TRVJUPC9jb21tYW5kPiB0aGF0IGluc2VydGVkIGV4 YWN0bHkgb25lIHJvdyBpbnRvIGEgdGFibGUgdGhhdAotICAgICAgIGhhcyBPSURzLCBvciBhIDxj b21tYW5kPkVYRUNVVEU8L2NvbW1hbmQ+IG9mIGEgcHJlcGFyZWQgcXVlcnkgY29udGFpbmluZwot ICAgICAgIGEgc3VpdGFibGUgPGNvbW1hbmQ+SU5TRVJUPC9jb21tYW5kPiBzdGF0ZW1lbnQuICBP dGhlcndpc2UsIHRoaXMgZnVuY3Rpb24KLSAgICAgICByZXR1cm5zIDxsaXRlcmFsPkludmFsaWRP aWQ8L2xpdGVyYWw+LiBUaGlzIGZ1bmN0aW9uIHdpbGwgYWxzbwotICAgICAgIHJldHVybiA8bGl0 ZXJhbD5JbnZhbGlkT2lkPC9saXRlcmFsPiBpZiB0aGUgdGFibGUgYWZmZWN0ZWQgYnkgdGhlCisg ICAgICAgaGFzIE9JRHMsIG9yIGFuIDxjb21tYW5kPkVYRUNVVEU8L2NvbW1hbmQ+IG9mIGEgcHJl cGFyZWQgcXVlcnkKKyAgICAgICBjb250YWluaW5nIGEgc3VpdGFibGUgPGNvbW1hbmQ+SU5TRVJU PC9jb21tYW5kPiBzdGF0ZW1lbnQuICBPdGhlcndpc2UsCisgICAgICAgdGhpcyBmdW5jdGlvbiBy ZXR1cm5zIDxsaXRlcmFsPkludmFsaWRPaWQ8L2xpdGVyYWw+LiBUaGlzIGZ1bmN0aW9uIHdpbGwK KyAgICAgICBhbHNvIHJldHVybiA8bGl0ZXJhbD5JbnZhbGlkT2lkPC9saXRlcmFsPiBpZiB0aGUg dGFibGUgYWZmZWN0ZWQgYnkgdGhlCiAgICAgICAgPGNvbW1hbmQ+SU5TRVJUPC9jb21tYW5kPiBz dGF0ZW1lbnQgZG9lcyBub3QgY29udGFpbiBPSURzLgogPHN5bm9wc2lzPgogT2lkIFBRb2lkVmFs dWUoY29uc3QgUEdyZXN1bHQgKnJlcyk7CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvbG9naWNh bC1yZXBsaWNhdGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dt bAppbmRleCA2OTA1OThiZmY5OC4uMzc0NzNlZWFjNzUgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dt bC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVw bGljYXRpb24uc2dtbApAQCAtMjA4Myw3ICsyMDgzLDcgQEAgSW5jbHVkZWQgaW4gcHVibGljYXRp b25zOgogICAgICAgIDxsaW5rIGxpbmtlbmQ9Imd1Yy10cmFjay1jb21taXQtdGltZXN0YW1wIj48 dmFybmFtZT50cmFja19jb21taXRfdGltZXN0YW1wPC92YXJuYW1lPjwvbGluaz4KICAgICAgICBh bmQgPGxpbmsgbGlua2VuZD0ic3FsLWNyZWF0ZXN1YnNjcmlwdGlvbi1wYXJhbXMtd2l0aC1yZXRh aW4tZGVhZC10dXBsZXMiPjxsaXRlcmFsPnJldGFpbl9kZWFkX3R1cGxlczwvbGl0ZXJhbD48L2xp bms+CiAgICAgICAgYXJlIGVuYWJsZWQuIE5vdGUgdGhhdCBpZiBhIHR1cGxlIGNhbm5vdCBiZSBm b3VuZCBkdWUgdG8gdGhlIHRhYmxlIGJlaW5nCi0gICAgICAgdHJ1bmNhdGVkLCBvbmx5IGEgPGxp dGVyYWw+dXBkYXRlX21pc3Npbmc8L2xpdGVyYWw+IGNvbmZsaWN0IHdpbGwKKyAgICAgICB0cnVu Y2F0ZWQsIG9ubHkgYW4gPGxpdGVyYWw+dXBkYXRlX21pc3Npbmc8L2xpdGVyYWw+IGNvbmZsaWN0 IHdpbGwKICAgICAgICBhcmlzZS4gQWRkaXRpb25hbGx5LCBpZiB0aGUgdHVwbGUgd2FzIGRlbGV0 ZWQgYnkgdGhlIHNhbWUgb3JpZ2luLCBhbgogICAgICAgIDxsaXRlcmFsPnVwZGF0ZV9taXNzaW5n PC9saXRlcmFsPiBjb25mbGljdCB3aWxsIGFyaXNlLgogICAgICAgPC9wYXJhPgpkaWZmIC0tZ2l0 IGEvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl90YWJsZS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9h bHRlcl90YWJsZS5zZ21sCmluZGV4IGZmNzA3MWJlZjViLi43OTBkZjA1YzhiMiAxMDA2NDQKLS0t IGEvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl90YWJsZS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9y ZWYvYWx0ZXJfdGFibGUuc2dtbApAQCAtNjA3LDcgKzYwNyw3IEBAIFdJVEggKCBNT0RVTFVTIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1lcmljX2xpdGVyYWw8L3JlcGxhY2VhYmxl PiwgUkVNCiAgICAgPHRlcm0+PGxpdGVyYWw+QUxURVIgQ09OU1RSQUlOVCAuLi4gTk8gSU5IRVJJ VDwvbGl0ZXJhbD48L3Rlcm0+CiAgICAgPGxpc3RpdGVtPgogICAgICA8cGFyYT4KLSAgICAgIFRo ZXNlIGZvcm1zIG1vZGlmeSBhIGluaGVyaXRhYmxlIGNvbnN0cmFpbnQgc28gdGhhdCBpdCBiZWNv bWVzIG5vdAorICAgICAgVGhlc2UgZm9ybXMgbW9kaWZ5IGFuIGluaGVyaXRhYmxlIGNvbnN0cmFp bnQgc28gdGhhdCBpdCBiZWNvbWVzIG5vdAogICAgICAgaW5oZXJpdGFibGUsIG9yIHZpY2UtdmVy c2EuIE9ubHkgbm90LW51bGwgY29uc3RyYWludHMgbWF5IGJlIGFsdGVyZWQKICAgICAgIGluIHRo aXMgZmFzaGlvbiBhdCBwcmVzZW50LgogICAgICAgSW4gYWRkaXRpb24gdG8gY2hhbmdpbmcgdGhl IGluaGVyaXRhYmlsaXR5IHN0YXR1cyBvZiB0aGUgY29uc3RyYWludCwKZGlmZiAtLWdpdCBhL2Rv Yy9zcmMvc2dtbC9yZWYvcGdfY3JlYXRlc3Vic2NyaWJlci5zZ21sIGIvZG9jL3NyYy9zZ21sL3Jl Zi9wZ19jcmVhdGVzdWJzY3JpYmVyLnNnbWwKaW5kZXggM2IzMDM4ZDE4OTEuLjQwMWY3MWFlN2Zi IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL3BnX2NyZWF0ZXN1YnNjcmliZXIuc2dtbAor KysgYi9kb2Mvc3JjL3NnbWwvcmVmL3BnX2NyZWF0ZXN1YnNjcmliZXIuc2dtbApAQCAtNjA0LDcg KzYwNCw3IEBAIFBvc3RncmVTUUwgZG9jdW1lbnRhdGlvbgogICAgICAgU2V0IHRoZSByZXBsaWNh dGlvbiBwcm9ncmVzcyB0byB0aGUgcmVwbGljYXRpb24gc3RhcnQgcG9pbnQgZm9yIGVhY2gKICAg ICAgIHN1YnNjcmlwdGlvbi4gIFdoZW4gdGhlIHRhcmdldCBzZXJ2ZXIgc3RhcnRzIHRoZSByZWNv dmVyeSBwcm9jZXNzLCBpdAogICAgICAgY2F0Y2hlcyB1cCB0byB0aGUgcmVwbGljYXRpb24gc3Rh cnQgcG9pbnQuICBUaGlzIGlzIHRoZSBleGFjdCBMU04gdG8gYmUKLSAgICAgIHVzZWQgYXMgYSBp bml0aWFsIHJlcGxpY2F0aW9uIGxvY2F0aW9uIGZvciBlYWNoIHN1YnNjcmlwdGlvbi4gIFRoZQor ICAgICAgdXNlZCBhcyBhbiBpbml0aWFsIHJlcGxpY2F0aW9uIGxvY2F0aW9uIGZvciBlYWNoIHN1 YnNjcmlwdGlvbi4gIFRoZQogICAgICAgcmVwbGljYXRpb24gb3JpZ2luIG5hbWUgaXMgb2J0YWlu ZWQgc2luY2UgdGhlIHN1YnNjcmlwdGlvbiB3YXMgY3JlYXRlZC4KICAgICAgIFRoZSByZXBsaWNh dGlvbiBvcmlnaW4gbmFtZSBhbmQgdGhlIHJlcGxpY2F0aW9uIHN0YXJ0IHBvaW50IGFyZSB1c2Vk IGluCiAgICAgICA8bGluawpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi90 aWRzdG9yZS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi90aWRzdG9yZS5jCmluZGV4IGRl M2U0NGQwZjVkLi44MTE1MWFjN2QzMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2Nv bW1vbi90aWRzdG9yZS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vdGlkc3RvcmUu YwpAQCAtMyw3ICszLDcgQEAKICAqIHRpZHN0b3JlLmMKICAqCQlUSUQgKEl0ZW1Qb2ludGVyRGF0 YSkgc3RvcmFnZSBpbXBsZW1lbnRhdGlvbi4KICAqCi0gKiBUaWRTdG9yZSBpcyBhIGluLW1lbW9y eSBkYXRhIHN0cnVjdHVyZSB0byBzdG9yZSBUSURzIChJdGVtUG9pbnRlckRhdGEpLgorICogVGlk U3RvcmUgaXMgYW4gaW4tbWVtb3J5IGRhdGEgc3RydWN0dXJlIHRvIHN0b3JlIFRJRHMgKEl0ZW1Q b2ludGVyRGF0YSkuCiAgKiBJbnRlcm5hbGx5IGl0IHVzZXMgYSByYWRpeCB0cmVlIGFzIHRoZSBz dG9yYWdlIGZvciBUSURzLiBUaGUga2V5IGlzIHRoZQogICogQmxvY2tOdW1iZXIgYW5kIHRoZSB2 YWx1ZSBpcyBhIGJpdG1hcCBvZiBvZmZzZXRzLCBCbG9ja3RhYmxlRW50cnkuCiAgKgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5nZXQuYyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9naW4vZ2luZ2V0LmMKaW5kZXggNmIxNDhlNjlhOGUuLjZkMGU5MGI4ZTY3IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmdldC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9naW4vZ2luZ2V0LmMKQEAgLTEwMjcsNyArMTAyNyw3IEBAIGtleUdldEl0ZW0oR2luU3RhdGUg KmdpbnN0YXRlLCBNZW1vcnlDb250ZXh0IHRlbXBDdHgsIEdpblNjYW5LZXkga2V5LAogCS8qCiAJ ICogRmluZCB0aGUgbWluaW11bSBpdGVtID4gYWR2YW5jZVBhc3QgYW1vbmcgdGhlIGFjdGl2ZSBl bnRyeSBzdHJlYW1zLgogCSAqCi0JICogTm90ZTogYSBsb3NzeS1wYWdlIGVudHJ5IGlzIGVuY29k ZWQgYnkgYSBJdGVtUG9pbnRlciB3aXRoIG1heCB2YWx1ZSBmb3IKKwkgKiBOb3RlOiBhIGxvc3N5 LXBhZ2UgZW50cnkgaXMgZW5jb2RlZCBieSBhbiBJdGVtUG9pbnRlciB3aXRoIG1heCB2YWx1ZSBm b3IKIAkgKiBvZmZzZXQgKDB4ZmZmZiksIHNvIHRoYXQgaXQgd2lsbCBzb3J0IGFmdGVyIGFueSBl eGFjdCBlbnRyaWVzIGZvciB0aGUKIAkgKiBzYW1lIHBhZ2UuICBTbyB3ZSdsbCBwcmVmZXIgdG8g cmV0dXJuIGV4YWN0IHBvaW50ZXJzIG5vdCBsb3NzeQogCSAqIHBvaW50ZXJzLCB3aGljaCBpcyBn b29kLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9oZWFwLmMgYi9zcmMvYmFja2Vu ZC9jYXRhbG9nL2hlYXAuYwppbmRleCA4ODA4NzY1NGRlOS4uNjI2NDE5MTZkMGUgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaGVhcC5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cv aGVhcC5jCkBAIC0zMjU4LDExICszMjU4LDExIEBAIGNoZWNrX25lc3RlZF9nZW5lcmF0ZWQoUGFy c2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpub2RlKQogICogVG8gYWRkcmVzcyB0aGlzLCB0aGlzIHJl c3RyaWN0cyBnZW5lcmF0aW9uIGV4cHJlc3Npb25zIGZvciB2aXJ0dWFsCiAgKiBnZW5lcmF0ZWQg Y29sdW1ucyBhcmUgcmVzdHJpY3RlZCB0byB1c2luZyBidWlsdC1pbiBmdW5jdGlvbnMgYW5kIHR5 cGVzLiAgV2UKICAqIGFzc3VtZSB0aGF0IGJ1aWx0LWluIGZ1bmN0aW9ucyBhbmQgdHlwZXMgY2Fu bm90IGJlIGV4cGxvaXRlZCBmb3IgdGhpcwotICogcHVycG9zZS4gIE5vdGUgdGhlIG92ZXJhbGwg c2VjdXJpdHkgYWxzbyByZXF1aXJlcyB0aGF0IGFsbCBmdW5jdGlvbnMgaW4gdXNlCi0gKiBhIGlt bXV0YWJsZS4gIChGb3IgZXhhbXBsZSwgdGhlcmUgYXJlIHNvbWUgYnVpbHQtaW4gbm9uLWltbXV0 YWJsZSBmdW5jdGlvbnMKLSAqIHRoYXQgY2FuIHJ1biBhcmJpdHJhcnkgU1FMLikgIFRoZSBpbW11 dGFiaWxpdHkgaXMgY2hlY2tlZCBlbHNld2hlcmUsIHNpbmNlCi0gKiB0aGF0IGlzIGEgcHJvcGVy dHkgdGhhdCBuZWVkcyB0byBob2xkIGluZGVwZW5kZW50IG9mIHNlY3VyaXR5Ci0gKiBjb25zaWRl cmF0aW9ucy4KKyAqIHB1cnBvc2UuICBOb3RlIHRoZSBvdmVyYWxsIHNlY3VyaXR5IGFsc28gcmVx dWlyZXMgdGhhdCBhbGwgZnVuY3Rpb25zIGluCisgKiB1c2UgYXJlIGltbXV0YWJsZS4gIChGb3Ig ZXhhbXBsZSwgdGhlcmUgYXJlIHNvbWUgYnVpbHQtaW4gbm9uLWltbXV0YWJsZQorICogZnVuY3Rp b25zIHRoYXQgY2FuIHJ1biBhcmJpdHJhcnkgU1FMLikgIFRoZSBpbW11dGFiaWxpdHkgaXMgY2hl Y2tlZAorICogZWxzZXdoZXJlLCBzaW5jZSB0aGF0IGlzIGEgcHJvcGVydHkgdGhhdCBuZWVkcyB0 byBob2xkIGluZGVwZW5kZW50IG9mCisgKiBzZWN1cml0eSBjb25zaWRlcmF0aW9ucy4KICAqCiAg KiBJbiB0aGUgZnV0dXJlLCB0aGlzIGNvdWxkIGJlIGV4cGFuZGVkIGJ5IHNvbWUgbmV3IG1lY2hh bmlzbSB0byBkZWNsYXJlCiAgKiBvdGhlciBmdW5jdGlvbnMgYW5kIHR5cGVzIGFzIHNhZmUgb3Ig dHJ1c3RlZCBmb3IgdGhpcyBwdXJwb3NlLCBidXQgdGhhdCBpcwpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9w dWJsaWNhdGlvbmNtZHMuYwppbmRleCA0NDBhZGIzNTZhZC4uNjc5MDM0YzQ1MzIgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jCisrKyBiL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jCkBAIC0xNTgzLDcgKzE1ODMsNyBAQCBDaGVj a0FsdGVyUHVibGljYXRpb24oQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsIEhlYXBUdXBsZSB0 dXAsCiAJewogCQkvKgogCQkgKiBJZiB0aGUgcHVibGljYXRpb24gYWxyZWFkeSBjb250YWlucyBz cGVjaWZpYyB0YWJsZXMgb3Igc2NoZW1hcywgd2UKLQkJICogcHJldmVudCBzd2l0Y2hpbmcgdG8g YSBBTEwgc3RhdGUuCisJCSAqIHByZXZlbnQgc3dpdGNoaW5nIHRvIGFuIEFMTCBzdGF0ZS4KIAkJ ICovCiAJCWlmIChpc190YWJsZV9wdWJsaWNhdGlvbihwdWJmb3JtLT5vaWQpIHx8CiAJCQlpc19z Y2hlbWFfcHVibGljYXRpb24ocHViZm9ybS0+b2lkKSkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNFeHByLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwci5jCmlu ZGV4IGNmZWE3ZTE2MGMyLi5jM2ZjM2M5MjAzOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3IvZXhlY0V4cHIuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwci5jCkBA IC0xMzIwLDggKzEzMjAsOCBAQCBFeGVjSW5pdEV4cHJSZWMoRXhwciAqbm9kZSwgRXhwclN0YXRl ICpzdGF0ZSwKIAkJCQkJCQkJCQkgb3BleHByLT5pbnB1dGNvbGxpZCwgTlVMTCwgTlVMTCk7CiAK IAkJCQkvKgotCQkJCSAqIElmIGhhc2hmdW5jaWQgaXMgc2V0LCB3ZSBjcmVhdGUgYSBFRU9QX0hB U0hFRF9TQ0FMQVJBUlJBWU9QCi0JCQkJICogc3RlcCBpbnN0ZWFkIG9mIGEgRUVPUF9TQ0FMQVJB UlJBWU9QLiAgVGhpcyBwcm92aWRlcyBtdWNoCisJCQkJICogSWYgaGFzaGZ1bmNpZCBpcyBzZXQs IHdlIGNyZWF0ZSBhbiBFRU9QX0hBU0hFRF9TQ0FMQVJBUlJBWU9QCisJCQkJICogc3RlcCBpbnN0 ZWFkIG9mIGFuIEVFT1BfU0NBTEFSQVJSQVlPUC4gIFRoaXMgcHJvdmlkZXMgbXVjaAogCQkJCSAq IGZhc3RlciBsb29rdXAgcGVyZm9ybWFuY2UgdGhhbiB0aGUgbm9ybWFsIGxpbmVhciBzZWFyY2gK IAkJCQkgKiB3aGVuIHRoZSBudW1iZXIgb2YgaXRlbXMgaW4gdGhlIGFycmF5IGlzIGFueXRoaW5n IGJ1dCB2ZXJ5CiAJCQkJICogc21hbGwuCkBAIC01MDM5LDcgKzUwMzksNyBAQCBFeGVjSW5pdEpz b25FeHByKEpzb25FeHByICpqc2V4cHIsIEV4cHJTdGF0ZSAqc3RhdGUsCiB9CiAKIC8qCi0gKiBJ bml0aWFsaXplIGEgRUVPUF9KU09ORVhQUl9DT0VSQ0lPTiBzdGVwIHRvIGNvZXJjZSB0aGUgdmFs dWUgZ2l2ZW4gaW4gcmVzdgorICogSW5pdGlhbGl6ZSBhbiBFRU9QX0pTT05FWFBSX0NPRVJDSU9O IHN0ZXAgdG8gY29lcmNlIHRoZSB2YWx1ZSBnaXZlbiBpbiByZXN2CiAgKiB0byB0aGUgZ2l2ZW4g UkVUVVJOSU5HIHR5cGUuCiAgKi8KIHN0YXRpYyB2b2lkCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjRXhwckludGVycC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4 cHJJbnRlcnAuYwppbmRleCAwNjM0YWY5NjRhOS4uYTRlNTQ2ODdlZjEgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHBySW50ZXJwLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3IvZXhlY0V4cHJJbnRlcnAuYwpAQCAtMjQzNyw3ICsyNDM3LDcgQEAgQ2hlY2tWYXJTbG90 Q29tcGF0aWJpbGl0eShUdXBsZVRhYmxlU2xvdCAqc2xvdCwgaW50IGF0dG51bSwgT2lkIHZhcnR5 cGUpCiB9CiAKIC8qCi0gKiBWZXJpZnkgdGhhdCB0aGUgc2xvdCBpcyBjb21wYXRpYmxlIHdpdGgg YSBFRU9QXypfRkVUQ0hTT01FIG9wZXJhdGlvbi4KKyAqIFZlcmlmeSB0aGF0IHRoZSBzbG90IGlz IGNvbXBhdGlibGUgd2l0aCBhbiBFRU9QXypfRkVUQ0hTT01FIG9wZXJhdGlvbi4KICAqLwogc3Rh dGljIHZvaWQKIENoZWNrT3BTbG90Q29tcGF0aWJpbGl0eShFeHByRXZhbFN0ZXAgKm9wLCBUdXBs ZVRhYmxlU2xvdCAqc2xvdCkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2xpYnBxL2hiYS5jIGIv c3JjL2JhY2tlbmQvbGlicHEvaGJhLmMKaW5kZXggZDQ3ZWFiMmNiYTAuLmIzNDkwN2ExZDU1IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9saWJwcS9oYmEuYworKysgYi9zcmMvYmFja2VuZC9saWJw cS9oYmEuYwpAQCAtMjgwLDcgKzI4MCw3IEBAIGZyZWVfYXV0aF90b2tlbihBdXRoVG9rZW4gKnRv a2VuKQogfQogCiAvKgotICogQ29weSBhIEF1dGhUb2tlbiBzdHJ1Y3QgaW50byBmcmVzaGx5IHBh bGxvYydkIG1lbW9yeS4KKyAqIENvcHkgYW4gQXV0aFRva2VuIHN0cnVjdCBpbnRvIGZyZXNobHkg cGFsbG9jJ2QgbWVtb3J5LgogICovCiBzdGF0aWMgQXV0aFRva2VuICoKIGNvcHlfYXV0aF90b2tl bihBdXRoVG9rZW4gKmluKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX29w ZXIuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9vcGVyLmMKaW5kZXggYTdlNWM2ODYzNjIu LmQ5MTQ5ZGUxZDRiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vfb3Blci5j CisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9vcGVyLmMKQEAgLTEzMCw3ICsxMzAsNyBA QCBMb29rdXBPcGVyTmFtZShQYXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKm9wZXJuYW1lLCBPaWQg b3BybGVmdCwgT2lkIG9wcnJpZ2h0LAogLyoKICAqIExvb2t1cE9wZXJXaXRoQXJncwogICoJCUxp a2UgTG9va3VwT3Blck5hbWUsIGJ1dCB0aGUgYXJndW1lbnQgdHlwZXMgYXJlIHNwZWNpZmllZCBi eQotICoJCWEgT2JqZWN0V2l0aEFyZ3Mgbm9kZS4KKyAqCQlhbiBPYmplY3RXaXRoQXJncyBub2Rl LgogICovCiBPaWQKIExvb2t1cE9wZXJXaXRoQXJncyhPYmplY3RXaXRoQXJncyAqb3BlciwgYm9v bCBub0Vycm9yKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9l dmVudF9uYW1lcy50eHQgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50X25h bWVzLnR4dAppbmRleCAxMDE2NTAyZDA0Mi4uY2M5ZTczN2RmNzEgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnRfbmFtZXMudHh0CisrKyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnRfbmFtZXMudHh0CkBAIC0xOTQsNyArMTk0LDcg QEAgQUJJX2NvbXBhdGliaWxpdHk6CiAjCiAjIFdhaXQgRXZlbnRzIC0gSU8KICMKLSMgVXNlIHRo aXMgY2F0ZWdvcnkgd2hlbiBhIHByb2Nlc3MgaXMgd2FpdGluZyBmb3IgYSBJTy4KKyMgVXNlIHRo aXMgY2F0ZWdvcnkgd2hlbiBhIHByb2Nlc3MgaXMgd2FpdGluZyBmb3IgSS9PLgogIwogCiBTZWN0 aW9uOiBDbGFzc05hbWUgLSBXYWl0RXZlbnRJTwpAQCAtMjk0LDcgKzI5NCw3IEBAIFNlY3Rpb246 IENsYXNzTmFtZSAtIFdhaXRFdmVudEJ1ZmZlcgogQlVGRkVSX0NMRUFOVVAJIldhaXRpbmcgdG8g YWNxdWlyZSBhbiBleGNsdXNpdmUgcGluIG9uIGEgYnVmZmVyLiBCdWZmZXIgcGluIHdhaXRzIGNh biBiZSBwcm90cmFjdGVkIGlmIGFub3RoZXIgcHJvY2VzcyBob2xkcyBhbiBvcGVuIGN1cnNvciB0 aGF0IGxhc3QgcmVhZCBkYXRhIGZyb20gdGhlIGJ1ZmZlciBpbiBxdWVzdGlvbi4iCiBCVUZGRVJf U0hBUkVECSJXYWl0aW5nIHRvIGFjcXVpcmUgYSBzaGFyZWQgbG9jayBvbiBhIGJ1ZmZlci4iCiBC VUZGRVJfU0hBUkVfRVhDTFVTSVZFCSJXYWl0aW5nIHRvIGFjcXVpcmUgYSBzaGFyZSBleGNsdXNp dmUgbG9jayBvbiBhIGJ1ZmZlci4iCi1CVUZGRVJfRVhDTFVTSVZFCSJXYWl0aW5nIHRvIGFjcXVp cmUgYSBleGNsdXNpdmUgbG9jayBvbiBhIGJ1ZmZlci4iCitCVUZGRVJfRVhDTFVTSVZFCSJXYWl0 aW5nIHRvIGFjcXVpcmUgYW4gZXhjbHVzaXZlIGxvY2sgb24gYSBidWZmZXIuIgogCiBBQklfY29t cGF0aWJpbGl0eToKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BnX2RlcGVu ZGVuY2llcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BnX2RlcGVuZGVuY2llcy5jCmluZGV4 IDljM2RiMTAzZDQyLi4zYTU3NDMzMDY5MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L3BnX2RlcGVuZGVuY2llcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ19kZXBl bmRlbmNpZXMuYwpAQCAtNDYsNyArNDYsNyBAQCB0eXBlZGVmIHN0cnVjdAogCU5vZGUJICAgKmVz Y29udGV4dDsKIAogCWJvb2wJCWZvdW5kX2F0dHJpYnV0ZXM7CS8qIEl0ZW0gaGFzIGFuIGF0dHJp YnV0ZXMga2V5ICovCi0JYm9vbAkJZm91bmRfZGVwZW5kZW5jeTsJLyogSXRlbSBoYXMgYW4gZGVw ZW5kZW5jeSBrZXkgKi8KKwlib29sCQlmb3VuZF9kZXBlbmRlbmN5OwkvKiBJdGVtIGhhcyBhIGRl cGVuZGVuY3kga2V5ICovCiAJYm9vbAkJZm91bmRfZGVncmVlOwkvKiBJdGVtIGhhcyBkZWdyZWUg a2V5ICovCiAJTGlzdAkgICAqYXR0bnVtX2xpc3Q7CS8qIEFjY3VtdWxhdGVkIGF0dHJpYnV0ZSBu dW1iZXJzICovCiAJQXR0ck51bWJlcglkZXBlbmRlbmN5OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L3V1aWQuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC91dWlkLmMKaW5kZXgg MmQzM2JhMjY0MGIuLjI4MDQ3MTdiMDVjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9h ZHQvdXVpZC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC91dWlkLmMKQEAgLTcwNSwxMCAr NzA1LDEwIEBAIHV1aWR2N19pbnRlcnZhbChQR19GVU5DVElPTl9BUkdTKQogCQkJCQkJCQkJCQkJ IFRpbWVzdGFtcFR6R2V0RGF0dW0odHMpLAogCQkJCQkJCQkJCQkJIEludGVydmFsUEdldERhdHVt KHNoaWZ0KSkpOwogCi0JLyogQ29udmVydCBhIFRpbWVzdGFtcFR6IHZhbHVlIGJhY2sgdG8gYW4g VU5JWCBlcG9jaCB0aW1lc3RhbXAgKi8KKwkvKiBDb252ZXJ0IGEgVGltZXN0YW1wVHogdmFsdWUg YmFjayB0byBhIFVuaXggZXBvY2ggdGltZXN0YW1wICovCiAJdXMgPSB0cyArIChQT1NUR1JFU19F UE9DSF9KREFURSAtIFVOSVhfRVBPQ0hfSkRBVEUpICogU0VDU19QRVJfREFZICogVVNFQ1NfUEVS X1NFQzsKIAotCS8qIEdlbmVyYXRlIGFuIFVVSUR2NyAqLworCS8qIEdlbmVyYXRlIGEgVVVJRHY3 ICovCiAJdXVpZCA9IGdlbmVyYXRlX3V1aWR2Nyh1cyAvIFVTX1BFUl9NUywgKHVzICUgVVNfUEVS X01TKSAqIE5TX1BFUl9VUyArIG5zICUgTlNfUEVSX1VTKTsKIAogCVBHX1JFVFVSTl9VVUlEX1Ao dXVpZCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNjL3F1ZXJ5ZW52aXJvbm1l bnQuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcXVlcnllbnZpcm9ubWVudC5jCmluZGV4IDQ2 YWMxNTRmYjE1Li5iMDgxYzI4NWQ2NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlz Yy9xdWVyeWVudmlyb25tZW50LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9xdWVyeWVu dmlyb25tZW50LmMKQEAgLTExNCw3ICsxMTQsNyBAQCBnZXRfRU5SKFF1ZXJ5RW52aXJvbm1lbnQg KnF1ZXJ5RW52LCBjb25zdCBjaGFyICpuYW1lKQogfQogCiAvKgotICogR2V0cyB0aGUgVHVwbGVE ZXNjIGZvciBhIEVwaGVtZXJhbCBOYW1lZCBSZWxhdGlvbiwgYmFzZWQgb24gd2hpY2ggZmllbGQg d2FzCisgKiBHZXRzIHRoZSBUdXBsZURlc2MgZm9yIGFuIEVwaGVtZXJhbCBOYW1lZCBSZWxhdGlv biwgYmFzZWQgb24gd2hpY2ggZmllbGQgd2FzCiAgKiBmaWxsZWQuCiAgKgogICogV2hlbiB0aGUg VHVwbGVEZXNjIGlzIGJhc2VkIG9uIGEgcmVsYXRpb24gZnJvbSB0aGUgY2F0YWxvZ3MsIHdlIGNv dW50IG9uCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9tbWdyL2FzZXQuYyBiL3NyYy9i YWNrZW5kL3V0aWxzL21tZ3IvYXNldC5jCmluZGV4IDZhOWVhMzY3MTA3Li4zNDM0MWIzODQ5MSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9hc2V0LmMKKysrIGIvc3JjL2JhY2tl bmQvdXRpbHMvbW1nci9hc2V0LmMKQEAgLTEyMSw3ICsxMjEsNyBAQCB0eXBlZGVmIHZvaWQgKkFs bG9jUG9pbnRlcjsKIC8qCiAgKiBBbGxvY0ZyZWVMaXN0TGluawogICoJCVdoZW4gcGZyZWVpbmcg bWVtb3J5LCBpZiB3ZSBtYWludGFpbiBhIGZyZWVsaXN0IGZvciB0aGUgZ2l2ZW4gY2h1bmsncwot ICoJCXNpemUgdGhlbiB3ZSB1c2UgYSBBbGxvY0ZyZWVMaXN0TGluayB0byBwb2ludCB0byB0aGUg Y3VycmVudCBpdGVtIGluCisgKgkJc2l6ZSB0aGVuIHdlIHVzZSBhbiBBbGxvY0ZyZWVMaXN0TGlu ayB0byBwb2ludCB0byB0aGUgY3VycmVudCBpdGVtIGluCiAgKgkJdGhlIEFsbG9jU2V0Q29udGV4 dCdzIGZyZWVsaXN0IGFuZCB0aGVuIHNldCB0aGUgZ2l2ZW4gZnJlZWxpc3QgZWxlbWVudAogICoJ CXRvIHBvaW50IHRvIHRoZSBjaHVuayBiZWluZyBmcmVlZC4KICAqLwpAQCAtMTMxLDcgKzEzMSw3 IEBAIHR5cGVkZWYgc3RydWN0IEFsbG9jRnJlZUxpc3RMaW5rCiB9IEFsbG9jRnJlZUxpc3RMaW5r OwogCiAvKgotICogT2J0YWluIGEgQWxsb2NGcmVlTGlzdExpbmsgZm9yIHRoZSBnaXZlbiBjaHVu ay4gIEFsbG9jYXRpb24gc2l6ZXMgYXJlCisgKiBPYnRhaW4gYW4gQWxsb2NGcmVlTGlzdExpbmsg Zm9yIHRoZSBnaXZlbiBjaHVuay4gIEFsbG9jYXRpb24gc2l6ZXMgYXJlCiAgKiBhbHdheXMgYXQg bGVhc3Qgc2l6ZW9mKEFsbG9jRnJlZUxpc3RMaW5rKSwgc28gd2UgcmV1c2UgdGhlIHBvaW50ZXIn cyBtZW1vcnkKICAqIGl0c2VsZiB0byBzdG9yZSB0aGUgZnJlZWxpc3QgbGluay4KICAqLwpkaWZm IC0tZ2l0IGEvc3JjL2Jpbi9wZ19iYXNlYmFja3VwL2FzdHJlYW1lcl9pbmplY3QuYyBiL3NyYy9i aW4vcGdfYmFzZWJhY2t1cC9hc3RyZWFtZXJfaW5qZWN0LmMKaW5kZXggYTVkZmYwYWMxYzYuLmUx MTdhNmJmOGUyIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2Jhc2ViYWNrdXAvYXN0cmVhbWVyX2lu amVjdC5jCisrKyBiL3NyYy9iaW4vcGdfYmFzZWJhY2t1cC9hc3RyZWFtZXJfaW5qZWN0LmMKQEAg LTQwLDcgKzQwLDcgQEAgc3RhdGljIGNvbnN0IGFzdHJlYW1lcl9vcHMgYXN0cmVhbWVyX3JlY292 ZXJ5X2luamVjdG9yX29wcyA9IHsKIH07CiAKIC8qCi0gKiBDcmVhdGUgYSBhc3RyZWFtZXIgdGhh dCBjYW4gZWRpdCByZWNvdmVyeWRhdGEgaW50byBhbiBhcmNoaXZlIHN0cmVhbS4KKyAqIENyZWF0 ZSBhbiBhc3RyZWFtZXIgdGhhdCBjYW4gZWRpdCByZWNvdmVyeWRhdGEgaW50byBhbiBhcmNoaXZl IHN0cmVhbS4KICAqCiAgKiBUaGUgaW5wdXQgc2hvdWxkIGJlIGEgc2VyaWVzIG9mIHR5cGVkIGNo dW5rcyAobm90IEFTVFJFQU1FUl9VTktOT1dOKSBhcwogICogcGVyIHRoZSBjb252ZW50aW9ucyBk ZXNjcmliZWQgaW4gYXN0cmVhbWVyLmg7IHRoZSBjaHVua3MgZm9yd2FyZGVkIHRvCmRpZmYgLS1n aXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfcmVzdG9yZS5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX3Jl c3RvcmUuYwppbmRleCA4NGI4ZDQxMGM5ZS4uZjUyYWQ4NGUwYjYgMTAwNjQ0Ci0tLSBhL3NyYy9i aW4vcGdfZHVtcC9wZ19yZXN0b3JlLmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX3Jlc3RvcmUu YwpAQCAtMSw3ICsxLDcgQEAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoKICAqIHBnX3Jlc3RvcmUu YwotICoJcGdfcmVzdG9yZSBpcyBhbiB1dGlsaXR5IGV4dHJhY3RpbmcgcG9zdGdyZXMgZGF0YWJh c2UgZGVmaW5pdGlvbnMKKyAqCXBnX3Jlc3RvcmUgaXMgYSB1dGlsaXR5IGV4dHJhY3RpbmcgcG9z dGdyZXMgZGF0YWJhc2UgZGVmaW5pdGlvbnMKICAqCWZyb20gYSBiYWNrdXAgYXJjaGl2ZSBjcmVh dGVkIGJ5IHBnX2R1bXAgdXNpbmcgdGhlIGFyY2hpdmVyCiAgKglpbnRlcmZhY2UuCiAgKgpkaWZm IC0tZ2l0IGEvc3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAvYXN0cmVhbWVyX3ZlcmlmeS5jIGIvc3Jj L2Jpbi9wZ192ZXJpZnliYWNrdXAvYXN0cmVhbWVyX3ZlcmlmeS5jCmluZGV4IDI1Nzg3NjViMGNh Li5iMWRkZWM4MTJhMyAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAvYXN0cmVh bWVyX3ZlcmlmeS5jCisrKyBiL3NyYy9iaW4vcGdfdmVyaWZ5YmFja3VwL2FzdHJlYW1lcl92ZXJp ZnkuYwpAQCAtMTMyLDcgKzEzMiw3IEBAIGFzdHJlYW1lcl92ZXJpZnlfY29udGVudChhc3RyZWFt ZXIgKnN0cmVhbWVyLCBhc3RyZWFtZXJfbWVtYmVyICptZW1iZXIsCiB9CiAKIC8qCi0gKiBFbmQt b2Ytc3RyZWFtIHByb2Nlc3NpbmcgZm9yIGEgYXN0cmVhbWVyX3ZlcmlmeSBzdHJlYW0uCisgKiBF bmQtb2Ytc3RyZWFtIHByb2Nlc3NpbmcgZm9yIGFuIGFzdHJlYW1lcl92ZXJpZnkgc3RyZWFtLgog ICovCiBzdGF0aWMgdm9pZAogYXN0cmVhbWVyX3ZlcmlmeV9maW5hbGl6ZShhc3RyZWFtZXIgKnN0 cmVhbWVyKQpAQCAtMTQxLDcgKzE0MSw3IEBAIGFzdHJlYW1lcl92ZXJpZnlfZmluYWxpemUoYXN0 cmVhbWVyICpzdHJlYW1lcikKIH0KIAogLyoKLSAqIEZyZWUgbWVtb3J5IGFzc29jaWF0ZWQgd2l0 aCBhIGFzdHJlYW1lcl92ZXJpZnkgc3RyZWFtLgorICogRnJlZSBtZW1vcnkgYXNzb2NpYXRlZCB3 aXRoIGFuIGFzdHJlYW1lcl92ZXJpZnkgc3RyZWFtLgogICovCiBzdGF0aWMgdm9pZAogYXN0cmVh bWVyX3ZlcmlmeV9mcmVlKGFzdHJlYW1lciAqc3RyZWFtZXIpCmRpZmYgLS1naXQgYS9zcmMvZmVf dXRpbHMvYXN0cmVhbWVyX2ZpbGUuYyBiL3NyYy9mZV91dGlscy9hc3RyZWFtZXJfZmlsZS5jCmlu ZGV4IGZiMzZjZWNjMjJhLi4wZmJhMzhkYTEzYyAxMDA2NDQKLS0tIGEvc3JjL2ZlX3V0aWxzL2Fz dHJlYW1lcl9maWxlLmMKKysrIGIvc3JjL2ZlX3V0aWxzL2FzdHJlYW1lcl9maWxlLmMKQEAgLTY5 LDcgKzY5LDcgQEAgc3RhdGljIGNvbnN0IGFzdHJlYW1lcl9vcHMgYXN0cmVhbWVyX2V4dHJhY3Rv cl9vcHMgPSB7CiB9OwogCiAvKgotICogQ3JlYXRlIGEgYXN0cmVhbWVyIHRoYXQganVzdCB3cml0 ZXMgZGF0YSB0byBhIGZpbGUuCisgKiBDcmVhdGUgYW4gYXN0cmVhbWVyIHRoYXQganVzdCB3cml0 ZXMgZGF0YSB0byBhIGZpbGUuCiAgKgogICogVGhlIGNhbGxlciBtdXN0IHNwZWNpZnkgYSBwYXRo bmFtZSBhbmQgbWF5IHNwZWNpZnkgYSBmaWxlLiBUaGUgcGF0aG5hbWUgaXMKICAqIHVzZWQgZm9y IGVycm9yLXJlcG9ydGluZyBwdXJwb3NlcyBlaXRoZXIgd2F5LiBJZiBmaWxlIGlzIE5VTEwsIHRo ZSBwYXRobmFtZQpAQCAtMTYzLDcgKzE2Myw3IEBAIGFzdHJlYW1lcl9wbGFpbl93cml0ZXJfZnJl ZShhc3RyZWFtZXIgKnN0cmVhbWVyKQogfQogCiAvKgotICogQ3JlYXRlIGEgYXN0cmVhbWVyIHRo YXQgZXh0cmFjdHMgYW4gYXJjaGl2ZS4KKyAqIENyZWF0ZSBhbiBhc3RyZWFtZXIgdGhhdCBleHRy YWN0cyBhbiBhcmNoaXZlLgogICoKICAqIEFsbCBwYXRobmFtZXMgaW4gdGhlIGFyY2hpdmUgYXJl IGludGVycHJldGVkIHJlbGF0aXZlIHRvIGJhc2VwYXRoLgogICoKZGlmZiAtLWdpdCBhL3NyYy9m ZV91dGlscy9hc3RyZWFtZXJfZ3ppcC5jIGIvc3JjL2ZlX3V0aWxzL2FzdHJlYW1lcl9nemlwLmMK aW5kZXggYmMzZDUzMDc2ZTEuLmRiMDAzNDQ1ZDMwIDEwMDY0NAotLS0gYS9zcmMvZmVfdXRpbHMv YXN0cmVhbWVyX2d6aXAuYworKysgYi9zcmMvZmVfdXRpbHMvYXN0cmVhbWVyX2d6aXAuYwpAQCAt ODEsNyArODEsNyBAQCBzdGF0aWMgY29uc3QgYXN0cmVhbWVyX29wcyBhc3RyZWFtZXJfZ3ppcF9k ZWNvbXByZXNzb3Jfb3BzID0gewogI2VuZGlmCiAKIC8qCi0gKiBDcmVhdGUgYSBhc3RyZWFtZXIg dGhhdCBqdXN0IGNvbXByZXNzZXMgZGF0YSB1c2luZyBnemlwLCBhbmQgdGhlbiB3cml0ZXMKKyAq IENyZWF0ZSBhbiBhc3RyZWFtZXIgdGhhdCBqdXN0IGNvbXByZXNzZXMgZGF0YSB1c2luZyBnemlw LCBhbmQgdGhlbiB3cml0ZXMKICAqIGl0IHRvIGEgZmlsZS4KICAqCiAgKiBUaGUgY2FsbGVyIG11 c3Qgc3BlY2lmeSBhIHBhdGhuYW1lIGFuZCBtYXkgc3BlY2lmeSBhIGZpbGUuIFRoZSBwYXRobmFt ZSBpcwpkaWZmIC0tZ2l0IGEvc3JjL2ZlX3V0aWxzL2FzdHJlYW1lcl90YXIuYyBiL3NyYy9mZV91 dGlscy9hc3RyZWFtZXJfdGFyLmMKaW5kZXggOGFiNTllOTIyMzguLjRhYTZkNzJjMjc0IDEwMDY0 NAotLS0gYS9zcmMvZmVfdXRpbHMvYXN0cmVhbWVyX3Rhci5jCisrKyBiL3NyYy9mZV91dGlscy9h c3RyZWFtZXJfdGFyLmMKQEAgLTgzLDcgKzgzLDcgQEAgc3RhdGljIGNvbnN0IGFzdHJlYW1lcl9v cHMgYXN0cmVhbWVyX3Rhcl90ZXJtaW5hdG9yX29wcyA9IHsKIH07CiAKIC8qCi0gKiBDcmVhdGUg YSBhc3RyZWFtZXIgdGhhdCBjYW4gcGFyc2UgYSBzdHJlYW0gb2YgY29udGVudCBhcyB0YXIgZGF0 YS4KKyAqIENyZWF0ZSBhbiBhc3RyZWFtZXIgdGhhdCBjYW4gcGFyc2UgYSBzdHJlYW0gb2YgY29u dGVudCBhcyB0YXIgZGF0YS4KICAqCiAgKiBUaGUgaW5wdXQgc2hvdWxkIGJlIGEgc2VyaWVzIG9m IEFTVFJFQU1FUl9VTktOT1dOIGNodW5rczsgdGhlIGFzdHJlYW1lcgogICogc3BlY2lmaWVkIGJ5 ICduZXh0JyB3aWxsIHJlY2VpdmUgYSBzZXJpZXMgb2YgdHlwZWQgY2h1bmtzLCBhcyBwZXIgdGhl CkBAIC0zODEsNyArMzgxLDcgQEAgYXN0cmVhbWVyX3Rhcl9wYXJzZXJfZnJlZShhc3RyZWFtZXIg KnN0cmVhbWVyKQogfQogCiAvKgotICogQ3JlYXRlIGEgYXN0cmVhbWVyIHRoYXQgY2FuIGdlbmVy YXRlIGEgdGFyIGFyY2hpdmUuCisgKiBDcmVhdGUgYW4gYXN0cmVhbWVyIHRoYXQgY2FuIGdlbmVy YXRlIGEgdGFyIGFyY2hpdmUuCiAgKgogICogVGhpcyBpcyBpbnRlbmRlZCB0byBiZSB1c2FibGUg ZWl0aGVyIGZvciBnZW5lcmF0aW5nIGEgYnJhbmQtbmV3IHRhciBhcmNoaXZlCiAgKiBvciBmb3Ig bW9kaWZ5aW5nIG9uZSBvbiB0aGUgZmx5LiBUaGUgaW5wdXQgc2hvdWxkIGJlIGEgc2VyaWVzIG9m IHR5cGVkCkBAIC00MDQsNyArNDA0LDcgQEAgYXN0cmVhbWVyX3Rhcl9hcmNoaXZlcl9uZXcoYXN0 cmVhbWVyICpuZXh0KQogLyoKICAqIEZpeCB1cCB0aGUgc3RyZWFtIG9mIGlucHV0IGNodW5rcyB0 byBjcmVhdGUgYSB2YWxpZCB0YXIgZmlsZS4KICAqCi0gKiBJZiBhIEFTVFJFQU1FUl9NRU1CRVJf SEVBREVSIGNodW5rIGlzIG9mIHNpemUgMCwgaXQgaXMgcmVwbGFjZWQgd2l0aCBhCisgKiBJZiBh biBBU1RSRUFNRVJfTUVNQkVSX0hFQURFUiBjaHVuayBpcyBvZiBzaXplIDAsIGl0IGlzIHJlcGxh Y2VkIHdpdGggYQogICogbmV3bHktY29uc3RydWN0ZWQgdGFyIGhlYWRlci4gSWYgaXQgaXMgb2Yg c2l6ZSBUQVJfQkxPQ0tfU0laRSwgaXQgaXMKICAqIHBhc3NlZCB0aHJvdWdoIHdpdGhvdXQgY2hh bmdlLiBBbnkgb3RoZXIgc2l6ZSBpcyBhIGZhdGFsIGVycm9yIChhbmQKICAqIGluZGljYXRlcyBh IGJ1ZykuCkBAIC00OTEsNyArNDkxLDcgQEAgYXN0cmVhbWVyX3Rhcl9hcmNoaXZlcl9mcmVlKGFz dHJlYW1lciAqc3RyZWFtZXIpCiB9CiAKIC8qCi0gKiBDcmVhdGUgYSBhc3RyZWFtZXIgdGhhdCBi bGluZGx5IGFkZHMgdHdvIGJsb2NrcyBvZiBOVUwgYnl0ZXMgdG8gdGhlCisgKiBDcmVhdGUgYW4g YXN0cmVhbWVyIHRoYXQgYmxpbmRseSBhZGRzIHR3byBibG9ja3Mgb2YgTlVMIGJ5dGVzIHRvIHRo ZQogICogZW5kIG9mIGFuIGluY29tcGxldGUgdGFyZmlsZSB0aGF0IHRoZSBzZXJ2ZXIgbWlnaHQg c2VuZCB1cy4KICAqLwogYXN0cmVhbWVyICoKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vz cy9yZWxzY2FuLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvcmVsc2Nhbi5oCmluZGV4IDJlYTA2YTY3 YTYzLi4zMzY5NTY2M2U4NSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3JlbHNjYW4u aAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvcmVsc2Nhbi5oCkBAIC03OSw4ICs3OSw4IEBAIHR5 cGVkZWYgc3RydWN0IFRhYmxlU2NhbkRlc2NEYXRhICpUYWJsZVNjYW5EZXNjOwogICogRWFjaCBi YWNrZW5kIHBhcnRpY2lwYXRpbmcgaW4gYSBwYXJhbGxlbCB0YWJsZSBzY2FuIGhhcyBpdHMgb3du CiAgKiBUYWJsZVNjYW5EZXNjIGluIGJhY2tlbmQtcHJpdmF0ZSBtZW1vcnksIGFuZCB0aG9zZSBv YmplY3RzIGFsbCBjb250YWluIGEKICAqIHBvaW50ZXIgdG8gdGhpcyBzdHJ1Y3R1cmUuICBUaGUg aW5mb3JtYXRpb24gaGVyZSBtdXN0IGJlIHN1ZmZpY2llbnQgdG8KLSAqIHByb3Blcmx5IGluaXRp YWxpemUgZWFjaCBuZXcgVGFibGVTY2FuRGVzYyBhcyB3b3JrZXJzIGpvaW4gdGhlIHNjYW4sIGFu ZCBpdAotICogbXVzdCBhY3QgYXMgYSBpbmZvcm1hdGlvbiB3aGF0IHRvIHNjYW4gZm9yIHRob3Nl IHdvcmtlcnMuCisgKiBwcm9wZXJseSBpbml0aWFsaXplIGVhY2ggbmV3IFRhYmxlU2NhbkRlc2Mg YXMgd29ya2VycyBqb2luIHRoZSBzY2FuIGFuZCB0bworICogdGVsbCB0aG9zZSB3b3JrZXJzIHdo YXQgdG8gc2Nhbi4KICAqLwogdHlwZWRlZiBzdHJ1Y3QgUGFyYWxsZWxUYWJsZVNjYW5EZXNjRGF0 YQogewpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZmVfdXRpbHMvYXN0cmVhbWVyLmggYi9zcmMv aW5jbHVkZS9mZV91dGlscy9hc3RyZWFtZXIuaAppbmRleCA4MzI5ZTRlZmJjNS4uNDM2NTU5MTdm NmMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2ZlX3V0aWxzL2FzdHJlYW1lci5oCisrKyBiL3Ny Yy9pbmNsdWRlL2ZlX3V0aWxzL2FzdHJlYW1lci5oCkBAIC00MSw3ICs0MSw3IEBAIHR5cGVkZWYg c3RydWN0IGFzdHJlYW1lciBhc3RyZWFtZXI7CiB0eXBlZGVmIHN0cnVjdCBhc3RyZWFtZXJfb3Bz IGFzdHJlYW1lcl9vcHM7CiAKIC8qCi0gKiBFYWNoIGNodW5rIG9mIGFyY2hpdmUgZGF0YSBwYXNz ZWQgdG8gYSBhc3RyZWFtZXIgaXMgY2xhc3NpZmllZCBpbnRvIG9uZQorICogRWFjaCBjaHVuayBv ZiBhcmNoaXZlIGRhdGEgcGFzc2VkIHRvIGFuIGFzdHJlYW1lciBpcyBjbGFzc2lmaWVkIGludG8g b25lCiAgKiBvZiB0aGVzZSBjYXRlZ29yaWVzLiBXaGVuIGRhdGEgaXMgaW5pdGlhbGx5IHBhc3Nl ZCB0byBhbiBhcmNoaXZlIHN0cmVhbWVyLAogICogZWFjaCBjaHVuayB3aWxsIGJlIGNhdGVnb3Jp emVkIGFzIEFTVFJFQU1FUl9VTktOT1dOLCBhbmQgdGhlIGNodW5rcyBjYW4KICAqIGJlIG9mIHdo YXRldmVyIHNpemUgdGhlIGNhbGxlciBmaW5kcyBjb252ZW5pZW50LgpAQCAtOTIsNyArOTIsNyBA QCB0eXBlZGVmIHN0cnVjdAogCiAvKgogICogR2VuZXJhbGx5LCBlYWNoIHR5cGUgb2YgYXN0cmVh bWVyIHdpbGwgZGVmaW5lIGl0cyBvd24gc3RydWN0LCBidXQgdGhlCi0gKiBmaXJzdCBlbGVtZW50 IHNob3VsZCBiZSAnYXN0cmVhbWVyIGJhc2UnLiBBIGFzdHJlYW1lciB0aGF0IGRvZXMgbm90Cisg KiBmaXJzdCBlbGVtZW50IHNob3VsZCBiZSAnYXN0cmVhbWVyIGJhc2UnLiBBbiBhc3RyZWFtZXIg dGhhdCBkb2VzIG5vdAogICogcmVxdWlyZSBhbnkgYWRkaXRpb25hbCBwcml2YXRlIGRhdGEgY291 bGQgdXNlIHRoaXMgc3RydWN0dXJlIGRpcmVjdGx5LgogICoKICAqIGJic19vcHMgaXMgYSBwb2lu dGVyIHRvIHRoZSBhc3RyZWFtZXJfb3BzIG9iamVjdCB3aGljaCBjb250YWlucyB0aGUKQEAgLTEx NCw3ICsxMTQsNyBAQCBzdHJ1Y3QgYXN0cmVhbWVyCiB9OwogCiAvKgotICogVGhlcmUgYXJlIHRo cmVlIGNhbGxiYWNrcyBmb3IgYSBhc3RyZWFtZXIuIFRoZSAnY29udGVudCcgY2FsbGJhY2sgaXMK KyAqIFRoZXJlIGFyZSB0aHJlZSBjYWxsYmFja3MgZm9yIGFuIGFzdHJlYW1lci4gVGhlICdjb250 ZW50JyBjYWxsYmFjayBpcwogICogY2FsbGVkIHJlcGVhdGVkbHksIGFzIGRlc2NyaWJlZCBpbiB0 aGUgYXN0cmVhbWVyX2FyY2hpdmVfY29udGV4dCBjb21tZW50cy4KICAqIFRoZW4sIHRoZSAnZmlu YWxpemUnIGNhbGxiYWNrIGlzIGNhbGxlZCBvbmNlIGF0IHRoZSBlbmQsIHRvIGdpdmUgdGhlCiAg KiBhc3RyZWFtZXIgYSBjaGFuY2UgdG8gcGVyZm9ybSBjbGVhbnVwIHN1Y2ggYXMgY2xvc2luZyBm aWxlcy4gRmluYWxseSwKQEAgLTEzMiw3ICsxMzIsNyBAQCBzdHJ1Y3QgYXN0cmVhbWVyX29wcwog CXZvaWQJCSgqZnJlZSkgKGFzdHJlYW1lciAqc3RyZWFtZXIpOwogfTsKIAotLyogU2VuZCBzb21l IGNvbnRlbnQgdG8gYSBhc3RyZWFtZXIuICovCisvKiBTZW5kIHNvbWUgY29udGVudCB0byBhbiBh c3RyZWFtZXIuICovCiBzdGF0aWMgaW5saW5lIHZvaWQKIGFzdHJlYW1lcl9jb250ZW50KGFzdHJl YW1lciAqc3RyZWFtZXIsIGFzdHJlYW1lcl9tZW1iZXIgKm1lbWJlciwKIAkJCQkgIGNvbnN0IGNo YXIgKmRhdGEsIGludCBsZW4sCkBAIC0xNDIsNyArMTQyLDcgQEAgYXN0cmVhbWVyX2NvbnRlbnQo YXN0cmVhbWVyICpzdHJlYW1lciwgYXN0cmVhbWVyX21lbWJlciAqbWVtYmVyLAogCXN0cmVhbWVy LT5iYnNfb3BzLT5jb250ZW50KHN0cmVhbWVyLCBtZW1iZXIsIGRhdGEsIGxlbiwgY29udGV4dCk7 CiB9CiAKLS8qIEZpbmFsaXplIGEgYXN0cmVhbWVyLiAqLworLyogRmluYWxpemUgYW4gYXN0cmVh bWVyLiAqLwogc3RhdGljIGlubGluZSB2b2lkCiBhc3RyZWFtZXJfZmluYWxpemUoYXN0cmVhbWVy ICpzdHJlYW1lcikKIHsKQEAgLTE1MCw3ICsxNTAsNyBAQCBhc3RyZWFtZXJfZmluYWxpemUoYXN0 cmVhbWVyICpzdHJlYW1lcikKIAlzdHJlYW1lci0+YmJzX29wcy0+ZmluYWxpemUoc3RyZWFtZXIp OwogfQogCi0vKiBGcmVlIGEgYXN0cmVhbWVyLiAqLworLyogRnJlZSBhbiBhc3RyZWFtZXIuICov CiBzdGF0aWMgaW5saW5lIHZvaWQKIGFzdHJlYW1lcl9mcmVlKGFzdHJlYW1lciAqc3RyZWFtZXIp CiB7CkBAIC0xNTksNyArMTU5LDcgQEAgYXN0cmVhbWVyX2ZyZWUoYXN0cmVhbWVyICpzdHJlYW1l cikKIH0KIAogLyoKLSAqIFRoaXMgaXMgYSBjb252ZW5pZW5jZSBtZXRob2QgZm9yIHVzZSB3aGVu IGltcGxlbWVudGluZyBhIGFzdHJlYW1lcjsgaXQgaXMKKyAqIFRoaXMgaXMgYSBjb252ZW5pZW5j ZSBtZXRob2QgZm9yIHVzZSB3aGVuIGltcGxlbWVudGluZyBhbiBhc3RyZWFtZXI7IGl0IGlzCiAg KiBub3QgZm9yIHVzZSBieSBvdXRzaWRlIGNhbGxlcnMuIEl0IGFkZHMgdGhlIGFtb3VudCBvZiBk YXRhIHNwZWNpZmllZCBieQogICogJ25ieXRlcycgdG8gdGhlIGFzdHJlYW1lcidzIGJ1ZmZlciBh bmQgYWRqdXN0cyAnKmxlbicgYW5kICcqZGF0YScKICAqIGFjY29yZGluZ2x5LgpAQCAtMTc2LDcg KzE3Niw3IEBAIGFzdHJlYW1lcl9idWZmZXJfYnl0ZXMoYXN0cmVhbWVyICpzdHJlYW1lciwgY29u c3QgY2hhciAqKmRhdGEsIGludCAqbGVuLAogfQogCiAvKgotICogVGhpcyBpcyBhIGNvbnZlbmll bmNlIG1ldGhvZCBmb3IgdXNlIHdoZW4gaW1wbGVtZW50aW5nIGEgYXN0cmVhbWVyOyBpdCBpcwor ICogVGhpcyBpcyBhIGNvbnZlbmllbmNlIG1ldGhvZCBmb3IgdXNlIHdoZW4gaW1wbGVtZW50aW5n IGFuIGFzdHJlYW1lcjsgaXQgaXMKICAqIG5vdCBmb3IgdXNlIGJ5IG91dHNpZGVyIGNhbGxlcnMu IEl0IGF0dGVtcHRzIHRvIGFkZCBlbm91Z2ggZGF0YSB0byB0aGUKICAqIGFzdHJlYW1lcidzIGJ1 ZmZlciB0byByZWFjaCBhIGxlbmd0aCBvZiB0YXJnZXRfYnl0ZXMgYW5kIGFkanVzdHMgJypsZW4n CiAgKiBhbmQgJypkYXRhJyBhY2NvcmRpbmdseS4gSXQgcmV0dXJucyB0cnVlIGlmIHRoZSB0YXJn ZXQgbGVuZ3RoIGhhcyBiZWVuCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9qc29uYi5o IGIvc3JjL2luY2x1ZGUvdXRpbHMvanNvbmIuaAppbmRleCBjYTEzZWZiYTBmYi4uODFjNjJjNjRh MjYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL2pzb25iLmgKKysrIGIvc3JjL2luY2x1 ZGUvdXRpbHMvanNvbmIuaApAQCAtOTUsNyArOTUsNyBAQCB0eXBlZGVmIHN0cnVjdCBKc29uYlBh cnNlU3RhdGUgSnNvbmJQYXJzZVN0YXRlOwogICogaXMgaW1wbGljaXRseSBrbm93biB0aGF0IHRo ZSByb290IG5vZGUgbXVzdCBiZSBhbiBhcnJheSBvciBhbiBvYmplY3QsCiAgKiBzbyB3ZSBjYW4g Z2V0IGF3YXkgd2l0aG91dCB0aGUgdHlwZSBpbmRpY2F0b3IgYXMgbG9uZyBhcyB3ZSBjYW4gZGlz dGluZ3Vpc2gKICAqIHRoZSB0d28uICBGb3IgdGhhdCBwdXJwb3NlLCBib3RoIGFuIGFycmF5IGFu ZCBhbiBvYmplY3QgYmVnaW4gd2l0aCBhIHVpbnQzMgotICogaGVhZGVyIGZpZWxkLCB3aGljaCBj b250YWlucyBhbiBKQl9GT0JKRUNUIG9yIEpCX0ZBUlJBWSBmbGFnLiAgV2hlbiBhIG5ha2VkCisg KiBoZWFkZXIgZmllbGQsIHdoaWNoIGNvbnRhaW5zIGEgSkJfRk9CSkVDVCBvciBKQl9GQVJSQVkg ZmxhZy4gIFdoZW4gYSBuYWtlZAogICogc2NhbGFyIHZhbHVlIG5lZWRzIHRvIGJlIHN0b3JlZCBh cyBhIEpzb25iIHZhbHVlLCB3aGF0IHdlIGFjdHVhbGx5IHN0b3JlIGlzCiAgKiBhbiBhcnJheSB3 aXRoIG9uZSBlbGVtZW50LCB3aXRoIHRoZSBmbGFncyBpbiB0aGUgYXJyYXkncyBoZWFkZXIgZmll bGQgc2V0CiAgKiB0byBKQl9GU0NBTEFSIHwgSkJfRkFSUkFZLgo= --000000000000d2bbf90656390b28 Content-Type: text/x-python-script; charset="US-ASCII"; name="check_indefinite_articles.py" Content-Disposition: attachment; filename="check_indefinite_articles.py" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mrecryhz1 IyEvdXNyL2Jpbi9lbnYgcHl0aG9uMwoKIiIiQ2hlY2sgcHJvc2UgYW5kIG1lc3NhZ2VzIGZvciBs aWtlbHkgaW5jb3JyZWN0IHVzZXMgb2YgImEiIGFuZCAiYW4iLgoKVGhlIGNoZWNrIGlzIGludGVu dGlvbmFsbHkgY29uc2VydmF0aXZlLiAgRW5nbGlzaCBhcnRpY2xlIGNob2ljZSBkZXBlbmRzIG9u CnByb251bmNpYXRpb24gcmF0aGVyIHRoYW4gc3BlbGxpbmcsIHNvIHRoaXMgc2NyaXB0IGlnbm9y ZXMga25vd24gZXhjZXB0aW9ucwphbmQgYW1iaWd1b3VzIGFiYnJldmlhdGlvbi1saWtlIHdvcmRz IGluc3RlYWQgb2YgdHJ5aW5nIHRvIGJlIGEgZ3JhbW1hcgpjaGVja2VyLiAgV2l0aCBubyBwYXRo IGFyZ3VtZW50cywgaXQgc2NhbnMgdHJhY2tlZCBmaWxlcyBpbiB0aGUgcmVwb3NpdG9yeS4KIiIi CgppbXBvcnQgYXJncGFyc2UKaW1wb3J0IG9zCmZyb20gcGF0aGxpYiBpbXBvcnQgUGF0aAppbXBv cnQgcmUKaW1wb3J0IHN1YnByb2Nlc3MKaW1wb3J0IHN5cwoKCkFSVElDTEVfUkUgPSByZS5jb21w aWxlKAogICAgciIoPzwhW0EtWmEtejAtOV88Li8tXSlcYihhfGFuKVsgXHRdezEsM30oW0EtWmEt el1bQS1aYS16MC05Jy1dKikiLAogICAgcmUuSUdOT1JFQ0FTRSwKKQpUQUdfUkUgPSByZS5jb21w aWxlKHIiPFtePl0qPiIpClNHTUxfQkxPQ0tfT1BFTl9SRSA9IHJlLmNvbXBpbGUoCiAgICByIjwo cHJvZ3JhbWxpc3Rpbmd8c2NyZWVufHN5bm9wc2lzfGxpdGVyYWxsYXlvdXR8Y21kc3lub3BzaXMp XGJbXj5dKj4iLAogICAgcmUuSUdOT1JFQ0FTRSwKKQpTR01MX0VNUFRZX1JFID0gcmUuY29tcGls ZShyIjwoW0EtWmEtel1bQS1aYS16MC05Xy1dKilcYltePl0qLz4iKQpNQVJLRE9XTl9DT0RFX1JF ID0gcmUuY29tcGlsZShyImAoW15gXSopYCIpCgpQUk9TRV9TVUZGSVhFUyA9IHsiLmh0bSIsICIu aHRtbCIsICIubWFuIiwgIi5tZCIsICIucnN0IiwgIi50eHQiLCAiLnhtbCIsICIueHNsIn0KQ19T T1VSQ0VfU1VGRklYRVMgPSB7Ii5jIiwgIi5jYyIsICIuY3BwIiwgIi5oIiwgIi5sIiwgIi5wZ2Mi LCAiLnMiLCAiLnkifQpTQ1JJUFRfU1VGRklYRVMgPSB7Ii5wbCIsICIucG0iLCAiLnB5IiwgIi5z aCIsICIudCJ9CkNPTU1FTlRfT05MWV9TVUZGSVhFUyA9IHsiLmJ1aWxkIiwgIi5jb25mIiwgIi5p biIsICIubWsiLCAiLnNhbXBsZSJ9CgojIFRoZXNlIHZvd2VsLWxldHRlciBwcmVmaXhlcyBiZWdp biB3aXRoIGEgY29uc29uYW50IHNvdW5kLgpBX0VYQ0VQVElPTlMgPSAoCiAgICAiZXVjYWx5IiwK ICAgICJldWdlbiIsCiAgICAiZXVsIiwKICAgICJldXAiLAogICAgImV1cm8iLAogICAgImV3ZSIs CiAgICAib25jZSIsCiAgICAib25lIiwKICAgICJ1YmlxdWl0IiwKICAgICJ1LSIsCiAgICAidWNo YXIiLAogICAgInVuaWNhc3QiLAogICAgInVuaWNvZGUiLAogICAgInVuaWNvcm4iLAogICAgInVu aWZvcm0iLAogICAgInVuaWZpIiwKICAgICJ1bmlvbiIsCiAgICAidW5pcXVlIiwKICAgICJ1bml0 IiwKICAgICJ1bml2IiwKICAgICJ1bmlmeSIsCiAgICAidW5pbGF0ZXJhbCIsCiAgICAidW5pcHJv Y2Vzc29yIiwKICAgICJ1bml4IiwKICAgICJ1cGMiLAogICAgInVyaSIsCiAgICAidW5hcnkiLAog ICAgInVtYXNrIiwKICAgICJ1c2FibGUiLAogICAgInVzYWdlIiwKICAgICJ1c2UiLAogICAgInVz ZXIiLAogICAgInVzdWFsIiwKICAgICJ1dGMiLAogICAgInV0ZiIsCiAgICAidXRpbGl0eSIsCiAg ICAidWludCIsCiAgICAidXVpZCIsCikKClNJTEVOVF9IX1BSRUZJWEVTID0gKCJoZWlyIiwgImhl cmIiLCAiaG9uZXN0IiwgImhvbm9yIiwgImhvbm91ciIsICJob3VyIikKCiMgQSBjb25zb25hbnQg aW4gdGhpcyBzZXQgdW5hbWJpZ3VvdXNseSBoYXMgYSBjb25zb25hbnQgc291bmQgaW4gb3JkaW5h cnkKIyB3b3Jkcy4gIE90aGVyIGluaXRpYWwgbGV0dGVycyBhcmUgb2Z0ZW4gc3Bva2VuIGFzIGFi YnJldmlhdGlvbnMgKCJhbiBMU04iLAojICJhbiBYSUQiKSwgc28gdHJlYXRpbmcgdGhlbSBhcyBl cnJvcnMgd291bGQgYmUgdG9vIG5vaXN5LgpVTkFNQklHVU9VU19DT05TT05BTlRTID0gZnJvemVu c2V0KCJiY2RnamtwcXR2d3l6IikKCiMgVGhlc2UgYXJlIGNvbW1vbmx5IGFkamFjZW50IGNvZGUg dG9rZW5zIG9yIHZlcmJzLCBub3QgYXJ0aWNsZS9ub3VuIHBhaXJzLgpOT05fQVJUSUNMRV9GT0xM T1dFUlMgPSBmcm96ZW5zZXQoCiAgICAoCiAgICAgICAgImEiLAogICAgICAgICJhbHJlYWR5IiwK ICAgICAgICAiYW4iLAogICAgICAgICJhbmQiLAogICAgICAgICJhbnllbGVtZW50IiwKICAgICAg ICAiYXJlIiwKICAgICAgICAiYXMiLAogICAgICAgICJhdCIsCiAgICAgICAgImlmIiwKICAgICAg ICAiaW4iLAogICAgICAgICJpbm5lciIsCiAgICAgICAgImludCIsCiAgICAgICAgImludGVnZXIi LAogICAgICAgICJpbnRvIiwKICAgICAgICAiaXMiLAogICAgICAgICJpc251bGwiLAogICAgICAg ICJpbXBsaWVzIiwKICAgICAgICAib2YiLAogICAgICAgICJvbiIsCiAgICAgICAgIm9yIiwKICAg ICAgICAib3ZlcmxhcCIsCiAgICAgICAgIm92ZXJsYXBzIiwKICAgICAgICAidWludCIsCiAgICAg ICAgInVpbnQ4LWFycmF5IiwKICAgICAgICAidXNlZCIsCiAgICAgICAgInVzaW5nIiwKICAgICkK KQoKCmRlZiByZXBvc2l0b3J5X3Jvb3QoKToKICAgIHJldHVybiBQYXRoKF9fZmlsZV9fKS5yZXNv bHZlKCkucGFyZW50c1syXQoKCmRlZiB0cmFja2VkX2ZpbGVzKHJvb3QpOgogICAgcmVzdWx0ID0g c3VicHJvY2Vzcy5ydW4oCiAgICAgICAgWyJnaXQiLCAibHMtZmlsZXMiLCAiLXoiXSwKICAgICAg ICBjd2Q9cm9vdCwKICAgICAgICBjaGVjaz1UcnVlLAogICAgICAgIHN0ZG91dD1zdWJwcm9jZXNz LlBJUEUsCiAgICApCiAgICBuYW1lcyA9IHJlc3VsdC5zdGRvdXQuZGVjb2RlKCJ1dGYtOCIsIGVy cm9ycz0ic3Vycm9nYXRlZXNjYXBlIikuc3BsaXQoIlwwIikKICAgIHJldHVybiBbcm9vdCAvIG5h bWUgZm9yIG5hbWUgaW4gbmFtZXMgaWYgbmFtZV0KCgpkZWYgcmVxdWVzdGVkX2ZpbGVzKHBhdGhz KToKICAgIGZpbGVzID0gW10KICAgIGZvciBwYXRoIGluIHBhdGhzOgogICAgICAgIHBhdGggPSBw YXRoLnJlc29sdmUoKQogICAgICAgIGlmIHBhdGguaXNfZGlyKCk6CiAgICAgICAgICAgIGZvciBk aXJuYW1lLCBkaXJuYW1lcywgZmlsZW5hbWVzIGluIG9zLndhbGsocGF0aCk6CiAgICAgICAgICAg ICAgICBkaXJuYW1lc1s6XSA9IFtuYW1lIGZvciBuYW1lIGluIGRpcm5hbWVzIGlmIG5hbWUgIT0g Ii5naXQiXQogICAgICAgICAgICAgICAgZmlsZXMuZXh0ZW5kKFBhdGgoZGlybmFtZSkgLyBuYW1l IGZvciBuYW1lIGluIGZpbGVuYW1lcykKICAgICAgICBlbHNlOgogICAgICAgICAgICBmaWxlcy5h cHBlbmQocGF0aCkKICAgIHJldHVybiBmaWxlcwoKCmRlZiBmaWxlX21vZGUocGF0aCk6CiAgICBz dWZmaXggPSBwYXRoLnN1ZmZpeC5sb3dlcigpCiAgICBuYW1lID0gcGF0aC5uYW1lCgogICAgaWYg c3VmZml4ID09ICIuc2dtbCI6CiAgICAgICAgcmV0dXJuICJzZ21sIgogICAgaWYgc3VmZml4IGlu IFBST1NFX1NVRkZJWEVTIG9yIG5hbWUuc3RhcnRzd2l0aCgiUkVBRE1FIik6CiAgICAgICAgcmV0 dXJuICJwcm9zZSIKICAgIGlmIHN1ZmZpeCBpbiBDX1NPVVJDRV9TVUZGSVhFUzoKICAgICAgICBy ZXR1cm4gImMtc291cmNlIgogICAgaWYgc3VmZml4IGluIFNDUklQVF9TVUZGSVhFUzoKICAgICAg ICByZXR1cm4gInNjcmlwdCIKICAgIGlmIHN1ZmZpeCBpbiBDT01NRU5UX09OTFlfU1VGRklYRVMg b3IgbmFtZSBpbiB7IkdOVW1ha2VmaWxlIiwgIk1ha2VmaWxlIn06CiAgICAgICAgcmV0dXJuICJj b21tZW50cyIKICAgIHJldHVybiBOb25lCgoKZGVmIHF1b3RlZF9mcmFnbWVudChsaW5lLCBzdGFy dCwgcXVvdGUpOgogICAgaSA9IHN0YXJ0ICsgMQogICAgd2hpbGUgaSA8IGxlbihsaW5lKToKICAg ICAgICBpZiBsaW5lW2ldID09ICJcXCI6CiAgICAgICAgICAgIGkgKz0gMgogICAgICAgIGVsaWYg bGluZVtpXSA9PSBxdW90ZToKICAgICAgICAgICAgcmV0dXJuIGxpbmVbc3RhcnQgKyAxIDogaV0s IGkgKyAxCiAgICAgICAgZWxzZToKICAgICAgICAgICAgaSArPSAxCiAgICByZXR1cm4gbGluZVtz dGFydCArIDEgOl0sIGxlbihsaW5lKQoKCmRlZiBjX3NvdXJjZV9mcmFnbWVudHMobGluZSwgaW5f YmxvY2tfY29tbWVudCk6CiAgICBmcmFnbWVudHMgPSBbXQogICAgaSA9IDAKCiAgICB3aGlsZSBp IDwgbGVuKGxpbmUpOgogICAgICAgIGlmIGluX2Jsb2NrX2NvbW1lbnQ6CiAgICAgICAgICAgIGVu ZCA9IGxpbmUuZmluZCgiKi8iLCBpKQogICAgICAgICAgICBpZiBlbmQgPCAwOgogICAgICAgICAg ICAgICAgZnJhZ21lbnRzLmFwcGVuZChsaW5lW2k6XSkKICAgICAgICAgICAgICAgIHJldHVybiBm cmFnbWVudHMsIFRydWUKICAgICAgICAgICAgZnJhZ21lbnRzLmFwcGVuZChsaW5lW2k6ZW5kXSkK ICAgICAgICAgICAgaSA9IGVuZCArIDIKICAgICAgICAgICAgaW5fYmxvY2tfY29tbWVudCA9IEZh bHNlCiAgICAgICAgZWxpZiBsaW5lLnN0YXJ0c3dpdGgoIi8qIiwgaSk6CiAgICAgICAgICAgIGlu X2Jsb2NrX2NvbW1lbnQgPSBUcnVlCiAgICAgICAgICAgIGkgKz0gMgogICAgICAgIGVsaWYgbGlu ZS5zdGFydHN3aXRoKCIvLyIsIGkpOgogICAgICAgICAgICBmcmFnbWVudHMuYXBwZW5kKGxpbmVb aSArIDIgOl0pCiAgICAgICAgICAgIGJyZWFrCiAgICAgICAgZWxpZiBsaW5lW2ldID09ICciJzoK ICAgICAgICAgICAgZnJhZ21lbnQsIGkgPSBxdW90ZWRfZnJhZ21lbnQobGluZSwgaSwgJyInKQog ICAgICAgICAgICBmcmFnbWVudHMuYXBwZW5kKGZyYWdtZW50KQogICAgICAgIGVsaWYgbGluZVtp XSA9PSAiJyI6CiAgICAgICAgICAgIF8sIGkgPSBxdW90ZWRfZnJhZ21lbnQobGluZSwgaSwgIici KQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGkgKz0gMQoKICAgIHJldHVybiBmcmFnbWVudHMs IGluX2Jsb2NrX2NvbW1lbnQKCgpkZWYgc2NyaXB0X2ZyYWdtZW50cyhsaW5lKToKICAgIGluX3F1 b3RlID0gTm9uZQogICAgaSA9IDAKCiAgICB3aGlsZSBpIDwgbGVuKGxpbmUpOgogICAgICAgIGlm IGluX3F1b3RlOgogICAgICAgICAgICBpZiBsaW5lW2ldID09ICJcXCI6CiAgICAgICAgICAgICAg ICBpICs9IDIKICAgICAgICAgICAgZWxpZiBsaW5lW2ldID09IGluX3F1b3RlOgogICAgICAgICAg ICAgICAgaW5fcXVvdGUgPSBOb25lCiAgICAgICAgICAgICAgICBpICs9IDEKICAgICAgICAgICAg ZWxzZToKICAgICAgICAgICAgICAgIGkgKz0gMQogICAgICAgIGVsaWYgbGluZVtpXSBpbiB7JyIn LCAiJyJ9OgogICAgICAgICAgICBpbl9xdW90ZSA9IGxpbmVbaV0KICAgICAgICAgICAgaSArPSAx CiAgICAgICAgZWxpZiBsaW5lW2ldID09ICIjIjoKICAgICAgICAgICAgcmV0dXJuIFtsaW5lW2kg KyAxIDpdXQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGkgKz0gMQogICAgcmV0dXJuIFtdCgoK ZGVmIGNvbW1lbnRfZnJhZ21lbnQobGluZSk6CiAgICBzdHJpcHBlZCA9IGxpbmUubHN0cmlwKCkK ICAgIGlmIHN0cmlwcGVkLnN0YXJ0c3dpdGgoIiMiKToKICAgICAgICByZXR1cm4gW3N0cmlwcGVk WzE6XV0KICAgIHJldHVybiBbXQoKCmRlZiBzZ21sX2ZyYWdtZW50cyhsaW5lLCBibG9ja2VkX3Rh Zyk6CiAgICBmcmFnbWVudHMgPSBbXQogICAgcG9zID0gMAoKICAgIHdoaWxlIHBvcyA8IGxlbihs aW5lKToKICAgICAgICBpZiBibG9ja2VkX3RhZzoKICAgICAgICAgICAgY2xvc2UgPSByZS5zZWFy Y2goCiAgICAgICAgICAgICAgICByIjwve31ccyo+Ii5mb3JtYXQocmUuZXNjYXBlKGJsb2NrZWRf dGFnKSksCiAgICAgICAgICAgICAgICBsaW5lW3BvczpdLAogICAgICAgICAgICAgICAgcmUuSUdO T1JFQ0FTRSwKICAgICAgICAgICAgKQogICAgICAgICAgICBpZiBjbG9zZSBpcyBOb25lOgogICAg ICAgICAgICAgICAgcmV0dXJuIGZyYWdtZW50cywgYmxvY2tlZF90YWcKICAgICAgICAgICAgcG9z ICs9IGNsb3NlLmVuZCgpCiAgICAgICAgICAgIGJsb2NrZWRfdGFnID0gTm9uZQogICAgICAgICAg ICBjb250aW51ZQoKICAgICAgICBvcGVuaW5nID0gU0dNTF9CTE9DS19PUEVOX1JFLnNlYXJjaChs aW5lLCBwb3MpCiAgICAgICAgZW5kID0gb3BlbmluZy5zdGFydCgpIGlmIG9wZW5pbmcgZWxzZSBs ZW4obGluZSkKICAgICAgICBmcmFnbWVudCA9IGxpbmVbcG9zOmVuZF0KICAgICAgICBmcmFnbWVu dCA9IFNHTUxfRU1QVFlfUkUuc3ViKAogICAgICAgICAgICBsYW1iZGEgbWF0Y2g6ICIge30gIi5m b3JtYXQobWF0Y2guZ3JvdXAoMSkpLCBmcmFnbWVudAogICAgICAgICkKICAgICAgICBmcmFnbWVu dHMuYXBwZW5kKFRBR19SRS5zdWIoIiAiLCBmcmFnbWVudCkpCgogICAgICAgIGlmIG9wZW5pbmcg aXMgTm9uZToKICAgICAgICAgICAgYnJlYWsKICAgICAgICBibG9ja2VkX3RhZyA9IG9wZW5pbmcu Z3JvdXAoMSkKICAgICAgICBwb3MgPSBvcGVuaW5nLmVuZCgpCgogICAgcmV0dXJuIGZyYWdtZW50 cywgYmxvY2tlZF90YWcKCgpkZWYgYV90YWtlc19hbih3b3JkKToKICAgIGxvd2VyID0gd29yZC5s b3dlcigpCiAgICBpZiBsb3dlclswXSBub3QgaW4gImFlaW91IjoKICAgICAgICByZXR1cm4gRmFs c2UKICAgIGlmIGxvd2VyLnN0YXJ0c3dpdGgoQV9FWENFUFRJT05TKToKICAgICAgICByZXR1cm4g RmFsc2UKICAgIGlmIHdvcmRbMF0gPT0gIlUiIGFuZCAobGVuKHdvcmQpID09IDEgb3Igbm90IHdv cmRbMV0uaXNsb3dlcigpKToKICAgICAgICByZXR1cm4gRmFsc2UKICAgIHJldHVybiBUcnVlCgoK ZGVmIGFuX3Rha2VzX2Eod29yZCk6CiAgICBsb3dlciA9IHdvcmQubG93ZXIoKQoKICAgIGlmIGxv d2VyLnN0YXJ0c3dpdGgoQV9FWENFUFRJT05TKToKICAgICAgICByZXR1cm4gVHJ1ZQogICAgaWYg bG93ZXIuc3RhcnRzd2l0aChTSUxFTlRfSF9QUkVGSVhFUyk6CiAgICAgICAgcmV0dXJuIEZhbHNl CiAgICBpZiBsb3dlclswXSBpbiAiYWVpb3UiOgogICAgICAgIHJldHVybiBGYWxzZQogICAgaWYg bG93ZXJbMF0gaW4gVU5BTUJJR1VPVVNfQ09OU09OQU5UUzoKICAgICAgICByZXR1cm4gVHJ1ZQog ICAgcmV0dXJuIEZhbHNlCgoKZGVmIGNoZWNrX2ZyYWdtZW50KGZyYWdtZW50KToKICAgIGZvciBt YXRjaCBpbiBBUlRJQ0xFX1JFLmZpbmRpdGVyKGZyYWdtZW50KToKICAgICAgICByYXdfYXJ0aWNs ZSA9IG1hdGNoLmdyb3VwKDEpCiAgICAgICAgYXJ0aWNsZSA9IHJhd19hcnRpY2xlLmxvd2VyKCkK ICAgICAgICB3b3JkID0gbWF0Y2guZ3JvdXAoMikKICAgICAgICBsb3dlcl93b3JkID0gd29yZC5s b3dlcigpCgogICAgICAgIGlmIGxvd2VyX3dvcmQgaW4gTk9OX0FSVElDTEVfRk9MTE9XRVJTOgog ICAgICAgICAgICBjb250aW51ZQogICAgICAgIGlmIHdvcmRbMF0uaXNsb3dlcigpIGFuZCBhbnko Y2hhci5pc2RpZ2l0KCkgZm9yIGNoYXIgaW4gd29yZCk6CiAgICAgICAgICAgIGNvbnRpbnVlCiAg ICAgICAgaWYgcmF3X2FydGljbGUgPT0gIkEiOgogICAgICAgICAgICBwcmVmaXggPSBmcmFnbWVu dFs6IG1hdGNoLnN0YXJ0KCldLnJzdHJpcCgpCiAgICAgICAgICAgIGlmIHByZWZpeCBhbmQgcHJl Zml4Wy0xXSBub3QgaW4gIi4hPzoiOgogICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICBp ZiBhcnRpY2xlID09ICJhIiBhbmQgYV90YWtlc19hbih3b3JkKToKICAgICAgICAgICAgeWllbGQg ImFuIiwgd29yZAogICAgICAgIGVsaWYgYXJ0aWNsZSA9PSAiYW4iIGFuZCBhbl90YWtlc19hKHdv cmQpOgogICAgICAgICAgICB5aWVsZCAiYSIsIHdvcmQKCgpkZWYgZGlzcGxheV9wYXRoKHBhdGgs IHJvb3QpOgogICAgdHJ5OgogICAgICAgIHJldHVybiBwYXRoLnJlbGF0aXZlX3RvKHJvb3QpCiAg ICBleGNlcHQgVmFsdWVFcnJvcjoKICAgICAgICByZXR1cm4gcGF0aAoKCmRlZiBjaGVja19maWxl KHBhdGgsIHJvb3QpOgogICAgbW9kZSA9IGZpbGVfbW9kZShwYXRoKQogICAgaWYgbW9kZSBpcyBO b25lOgogICAgICAgIHJldHVybiAwCgogICAgdHJ5OgogICAgICAgIGxpbmVzID0gcGF0aC5yZWFk X3RleHQoZW5jb2Rpbmc9InV0Zi04Iikuc3BsaXRsaW5lcygpCiAgICBleGNlcHQgVW5pY29kZURl Y29kZUVycm9yOgogICAgICAgIHJldHVybiAwCiAgICBleGNlcHQgT1NFcnJvciBhcyBlcnJvcjoK ICAgICAgICBwcmludCgKICAgICAgICAgICAgInt9OiBjYW5ub3QgcmVhZDoge30iLmZvcm1hdChk aXNwbGF5X3BhdGgocGF0aCwgcm9vdCksIGVycm9yKSwKICAgICAgICAgICAgZmlsZT1zeXMuc3Rk ZXJyLAogICAgICAgICkKICAgICAgICByZXR1cm4gMAoKICAgIGZpbmRpbmdzID0gMAogICAgaW5f YmxvY2tfY29tbWVudCA9IEZhbHNlCiAgICBibG9ja2VkX3NnbWxfdGFnID0gTm9uZQogICAgZm9y IGxpbmVubywgbGluZSBpbiBlbnVtZXJhdGUobGluZXMsIDEpOgogICAgICAgIGlmIG1vZGUgPT0g InNnbWwiOgogICAgICAgICAgICBmcmFnbWVudHMsIGJsb2NrZWRfc2dtbF90YWcgPSBzZ21sX2Zy YWdtZW50cyhsaW5lLCBibG9ja2VkX3NnbWxfdGFnKQogICAgICAgIGVsaWYgbW9kZSA9PSAicHJv c2UiOgogICAgICAgICAgICBmcmFnbWVudHMgPSBbTUFSS0RPV05fQ09ERV9SRS5zdWIociJcMSIs IGxpbmUpXQogICAgICAgIGVsaWYgbW9kZSA9PSAiYy1zb3VyY2UiOgogICAgICAgICAgICBmcmFn bWVudHMsIGluX2Jsb2NrX2NvbW1lbnQgPSBjX3NvdXJjZV9mcmFnbWVudHMobGluZSwgaW5fYmxv Y2tfY29tbWVudCkKICAgICAgICBlbGlmIG1vZGUgPT0gInNjcmlwdCI6CiAgICAgICAgICAgIGZy YWdtZW50cyA9IHNjcmlwdF9mcmFnbWVudHMobGluZSkKICAgICAgICBlbHNlOgogICAgICAgICAg ICBmcmFnbWVudHMgPSBjb21tZW50X2ZyYWdtZW50KGxpbmUpCgogICAgICAgIGZvciBmcmFnbWVu dCBpbiBmcmFnbWVudHM6CiAgICAgICAgICAgIGZvciByZXBsYWNlbWVudCwgd29yZCBpbiBjaGVj a19mcmFnbWVudChmcmFnbWVudCk6CiAgICAgICAgICAgICAgICBjb250ZXh0ID0gIiAiLmpvaW4o bGluZS5zdHJpcCgpLnNwbGl0KCkpCiAgICAgICAgICAgICAgICBpZiBsZW4oY29udGV4dCkgPiAx NjA6CiAgICAgICAgICAgICAgICAgICAgY29udGV4dCA9IGNvbnRleHRbOjE1N10gKyAiLi4uIgog ICAgICAgICAgICAgICAgcHJpbnQoCiAgICAgICAgICAgICAgICAgICAgJ3t9Ont9OiB1c2UgInt9 IiBiZWZvcmUgInt9Ijoge30nLmZvcm1hdCgKICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxh eV9wYXRoKHBhdGgsIHJvb3QpLCBsaW5lbm8sIHJlcGxhY2VtZW50LCB3b3JkLCBjb250ZXh0CiAg ICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgZmlu ZGluZ3MgKz0gMQogICAgcmV0dXJuIGZpbmRpbmdzCgoKZGVmIHBhcnNlX2FyZ3VtZW50cygpOgog ICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoCiAgICAgICAgZGVzY3JpcHRpb249 ImNoZWNrIGxpa2VseSBhL2FuIGVycm9ycyBpbiB0cmFja2VkIHByb3NlIGFuZCBtZXNzYWdlcyIK ICAgICkKICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCiAgICAgICAgInBhdGhzIiwKICAgICAgICBt ZXRhdmFyPSJQQVRIIiwKICAgICAgICBuYXJncz0iKiIsCiAgICAgICAgdHlwZT1QYXRoLAogICAg ICAgIGhlbHA9ImZpbGVzIG9yIGRpcmVjdG9yaWVzIHRvIHNjYW4gKGRlZmF1bHQ6IHRyYWNrZWQg cmVwb3NpdG9yeSBmaWxlcykiLAogICAgKQogICAgcmV0dXJuIHBhcnNlci5wYXJzZV9hcmdzKCkK CgpkZWYgbWFpbigpOgogICAgYXJncyA9IHBhcnNlX2FyZ3VtZW50cygpCiAgICByb290ID0gcmVw b3NpdG9yeV9yb290KCkKICAgIGZpbGVzID0gcmVxdWVzdGVkX2ZpbGVzKGFyZ3MucGF0aHMpIGlm IGFyZ3MucGF0aHMgZWxzZSB0cmFja2VkX2ZpbGVzKHJvb3QpCgogICAgZmluZGluZ3MgPSBzdW0o Y2hlY2tfZmlsZShwYXRoLCByb290KSBmb3IgcGF0aCBpbiBzb3J0ZWQoc2V0KGZpbGVzKSkpCiAg ICBpZiBmaW5kaW5nczoKICAgICAgICBzeXMuc3Rkb3V0LmZsdXNoKCkKICAgICAgICBwcmludCgi e30gbGlrZWx5IGFydGljbGUgZXJyb3IocykgZm91bmQiLmZvcm1hdChmaW5kaW5ncyksIGZpbGU9 c3lzLnN0ZGVycikKICAgICAgICByZXR1cm4gMQogICAgcmV0dXJuIDAKCgppZiBfX25hbWVfXyA9 PSAiX19tYWluX18iOgogICAgc3lzLmV4aXQobWFpbigpKQo= --000000000000d2bbf90656390b28--