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 1w000o-001W3F-1Z for pgsql-hackers@arkaria.postgresql.org; Tue, 10 Mar 2026 16:32:51 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w000m-004ZxV-2o for pgsql-hackers@arkaria.postgresql.org; Tue, 10 Mar 2026 16:32:49 +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 1w000m-004ZxM-1F for pgsql-hackers@lists.postgresql.org; Tue, 10 Mar 2026 16:32:49 +0000 Received: from mail-qv1-xf29.google.com ([2607:f8b0:4864:20::f29]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w000j-00000001znD-3BpI for pgsql-hackers@postgresql.org; Tue, 10 Mar 2026 16:32:48 +0000 Received: by mail-qv1-xf29.google.com with SMTP id 6a1803df08f44-89a1d7cc7f0so57058836d6.1 for ; Tue, 10 Mar 2026 09:32:45 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1773160363; cv=none; d=google.com; s=arc-20240605; b=QGf/0E6RUQoWP6gvG77RBe4y/tCQKsVUipg6P3IwIIe8Ud7F50kFygiiVJ0SW4fYH0 RhQCdQ1/ewB1aO8DP8JBZwn0rHvrjWGCUlf7TFEoNQtdMek/Yb7YntM0zENLkrZK7ov6 hAaXwsEma3XIHvO7h/75qwPgg8Uzki6HVJmG6UwuOMF3pAb208l8oFSb9REqbN9oVFv7 uxI5SD4gaeMvrB0hPneeRsY43CkthHvFh8TayLRylnJ5PcxhA00bDSNGfMm85zhHwz88 3BBEEP5JE8hT3Y6f6IflEUSWhQoD2EmDq0PvqKs9YcludlYYssP3JA/Lntq1NnVHZgSF IooQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=zUpJBFntHFKUQ3XB+4G4oAtcLC3oAUR6HhWKyqj0uSM=; fh=pfkmzW6GKlJ0l1fsmHrQ2YGNtR4HiNVrGovoMNulRlY=; b=h97hHqY7T49dI5c6ltL+8mBA7LqpoxShGV9P5tYNsT1oFECqzlGcrSK9MvTSp70eNT zSdoyQKKz5qdinmY4qccyn6TP2Ki5li0kR+ebHxuYkrKeAaT+ybFBQc9nrnOY4XV1670 0NN5SvCANYXAHNqph59NpsLot9LW4SxO7YEdC4O+/gRzDUBCRjDTu3472KHbZMR0bH/0 K33SYn7ywnXPjanWkwUTWoefnV+C1z7HZYsXJG+cihHqNt1HUPLXu08fLFgbTk2ju61a kBgAAV52P4fyPSVUAk1CHTaTKLlny8ZqoIp+iXjgpNfasPtxubK+Xok2sr21WeeDII8C SXVw==; darn=postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb.com; s=google; t=1773160363; x=1773765163; darn=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=zUpJBFntHFKUQ3XB+4G4oAtcLC3oAUR6HhWKyqj0uSM=; b=jRb24x0um8xExzT15AFxZK+PLNZvSs4caUOTh1KEgKmEgbzARtYBkCYLqXgHQaBHJe 9cKDBpVwKZ0CnOvTx2bL6KvyLSZ2Bx3siQ2ZAt7wSq1lkcBIYOttqXUxp4+cX/uOf89n hCTflSwxQd1Sfdci3l2TiAnrL2CqDnzlvmWpE8rKgCx+v09WuoFrBZ/ax1P17WoRj7i9 1Is1YBt4XqdqZKWkIaWXQ7zBvSiSYf3Bowjl4wcRvdslYFLCJzBl4hYmHLQ5lizU7L0a JZZRtw+EWPakHqEWpl8DvMUIycT45Q1XSmpSElDfriA2AfHk/TEG26sl4qr3Tei6foYZ fohA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1773160363; x=1773765163; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=zUpJBFntHFKUQ3XB+4G4oAtcLC3oAUR6HhWKyqj0uSM=; b=mnRIy1/3Z7zLzhHjT2yTPSgnnyhx7rSffMxfkWh5UjwL9MpBsPfRPKDp6ySWhsCxK8 jxXRb0wo0HQ2ikNIl1ya3UIwNNNhW8YguOajwjryed5YQj62p64uBYVSYLj8Nv4Z6E/J At7Ss0JF7zfo7tXpQyahc39FXTrl23b+xRtGRpnkB1abZLjJYbm1F6VG+gbwDNTAl8NT p1fDIvRQutph1EbZzhNusH4hVhpBKrw8BvAjynysw+Zr8e3uwuKORuhj3Psk37D9Fnnc q0z6EQEox5jPt9jpmYVEK+oUuL4j9ApWLrVxZwdcLhS6gGbKV4hug58J4m1Rc+9iL1We FU3Q== X-Gm-Message-State: AOJu0YwuNliL2I8SpGSrWsDhaDfOM6iVQoUo+JvjRbfSvKudzHvfvB3f vvtxinyk+P8/150Z5QurYD5zGeVQcX5GveISMYsJezp1rnSO5g+fLbXP2Qoa+O+dHctVdChOdPL 9BERiNqxGE/JCfnE9jBc+pAC8rDgusANqIHYqlLpW X-Gm-Gg: ATEYQzyemBeQQiCER//uVqlmCIgAWMlVO35ts/rtVTQGQEKxV1GIVSzjy13i3dul6om 1U3pNauLdRnKmATy3O4O189OIkE3vlKDOjNY9peMSDKbi3Sb+1OV+QkqHO2ZroVM5WCwZCdZ/lW 8ng7a5V+/oA6m6uIMZiW+t4yOaIJc9CCwZuklawWyFHvWRrV3DKHgpuhQXnmbFWr+PERbhWQMFL wBbZm2/2PJoQ/Q7AYLHXFy+fsG0Jh/pwFYYV5v6dB38AGlq/WOT1rpOR+ulN2zNL4Vfq6hBjPv9 uFdKPTWf8Q== X-Received: by 2002:a05:6214:da7:b0:899:ea9e:31c4 with SMTP id 6a1803df08f44-89a30acdb41mr231728006d6.51.1773160363125; Tue, 10 Mar 2026 09:32:43 -0700 (PDT) MIME-Version: 1.0 References: <3720B2E1-0B96-4063-8D63-B5AE6AFEA159@gmail.com> In-Reply-To: From: Jacob Champion Date: Tue, 10 Mar 2026 09:32:30 -0700 X-Gm-Features: AaiRm500Q8o-1alqBQCe5CxB6yQ_ZdwkCsFG400Q78hMueplMOonmZFGbbYv_FU Message-ID: Subject: Re: [oauth] Stabilize the libpq-oauth ABI (and allow alternative implementations?) To: Zsolt Parragi Cc: PostgreSQL Hackers , Chao Li Content-Type: multipart/mixed; boundary="00000000000093b953064cae118a" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000093b953064cae118a Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Fri, Mar 6, 2026 at 4:27=E2=80=AFPM Jacob Champion wrote: > I'll cherry-pick some of the -1 handling backwards in the patchset to > handle this. Done in v7-0001. Some of the improvements in the WIP patch were also cherry-picked, and I fixed a stray comment bug. -0001 and -0002 are next up for commit. -0003 fills out the commit message and should be generally reviewable now. -0004 adds the ability to LD_LIBRARY_PATH your way into flow plugin development for the v20 cycle. -0005 becomes pretty much useless other than for testing (and it should possible to adapt those tests to -0004's implementation at some point). Thanks, --Jacob --00000000000093b953064cae118a Content-Type: text/plain; charset="US-ASCII"; name="since-v6.diff.txt" Content-Disposition: attachment; filename="since-v6.diff.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmktv2ov0 MTogIDkwZjA1YzVkOTYzIDwgLTogIC0tLS0tLS0tLS0tIGxpYnBxOiBJbnRyb2R1Y2UgUFFBVVRI REFUQV9PQVVUSF9CRUFSRVJfVE9LRU5fVjIKMjogIGQ4ZmJmYzhmN2EwICEgMTogIGY1Yjg2MWY3 ZWZkIGxpYnBxLW9hdXRoOiBVc2UgdGhlIFBHb2F1dGhCZWFyZXJSZXF1ZXN0VjIgQVBJCiAgICBA QCBzcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1hdXRoLW9hdXRoLmM6IHJ1bl91c2VyX29hdXRoX2Zs b3coUEdjb25uICpjb25uKQogICAgICAvKgogICAgIC0gKiBDbGVhbnVwIGNhbGxiYWNrIGZvciB0 aGUgYXN5bmMgdXNlciBmbG93LiBEZWxlZ2F0ZXMgbW9zdCBvZiBpdHMgam9iIHRvCiAgICAgKyAq IENsZWFudXAgY2FsbGJhY2sgZm9yIHRoZSBhc3luYyBmbG93LiBEZWxlZ2F0ZXMgbW9zdCBvZiBp dHMgam9iIHRvCiAgICAtICAqIFBHb2F1dGhCZWFyZXJSZXF1ZXN0VjIuY2xlYW51cCgpLCB0aGVu IGRpc2Nvbm5lY3RzIHRoZSBhbHRzb2NrIGFuZCBmcmVlcyB0aGUKICAgICsgICogUEdvYXV0aEJl YXJlclJlcXVlc3QuY2xlYW51cCgpLCB0aGVuIGRpc2Nvbm5lY3RzIHRoZSBhbHRzb2NrIGFuZCBm cmVlcyB0aGUKICAgICAgICogcmVxdWVzdCBpdHNlbGYuCiAgICAgKyAqCiAgICAgKyAqIFRoaXMg aXMgY2FsbGVkIGVpdGhlciBhdCB0aGUgZW5kIG9mIGEgc3VjY2Vzc2Z1bCBhdXRoZW50aWNhdGlv biwgb3IgZHVyaW5nCiAgICBAQCBzcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1hdXRoLW9hdXRoLmM6 IHVzZV9idWlsdGluX2Zsb3coUEdjb25uICpjb25uLCBmZV9vYXV0aF9zdAogICAgICsJCXx8IChz dGFydF9mbG93ID0gZGxzeW0oc3RhdGUtPmJ1aWx0aW5fZmxvdywgInBnX3N0YXJ0X29hdXRoYmVh cmVyIikpID09IE5VTEwpCiAgICAgIAl7CiAgICAgIAkJLyoKICAgIC0gCQkgKiBUaGlzIGlzIG1v cmUgb2YgYW4gZXJyb3IgY29uZGl0aW9uIHRoYW4gdGhlIG9uZSBhYm92ZSwgYnV0IGR1ZSB0bwog ICAgLUBAIHNyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWF1dGgtb2F1dGguYzogdXNlX2J1aWx0aW5f ZmxvdyhQR2Nvbm4gKmNvbm4sIGZlX29hdXRoX3N0YXRlICpzdGF0ZSkKICAgICstCQkgKiBUaGlz IGlzIG1vcmUgb2YgYW4gZXJyb3IgY29uZGl0aW9uIHRoYW4gdGhlIG9uZSBhYm92ZSwgYnV0IGR1 ZSB0bwogICAgKy0JCSAqIHRoZSBkbGVycm9yKCkgdGhyZWFkc2FmZXR5IGlzc3VlLCBsb2NrIGl0 IGJlaGluZCBQR09BVVRIREVCVUcgdG9vLgogICAgKysJCSAqIFRoaXMgaXMgbW9yZSBvZiBhbiBl cnJvciBjb25kaXRpb24gdGhhbiB0aGUgb25lIGFib3ZlLCBidXQgdGhlCiAgICArKwkJICogY2F1 c2UgaXMgc3RpbGwgbG9ja2VkIGJlaGluZCBQR09BVVRIREVCVUcgZHVlIHRvIHRoZSBkbGVycm9y KCkKICAgICsrCQkgKiB0aHJlYWRzYWZldHkgaXNzdWUuCiAgICArIAkJICovCiAgICArIAkJaWYg KG9hdXRoX3Vuc2FmZV9kZWJ1Z2dpbmdfZW5hYmxlZCgpKQogICAgICAJCQlmcHJpbnRmKHN0ZGVy ciwgImZhaWxlZCBkbHN5bSBmb3IgbGlicHEtb2F1dGg6ICVzXG4iLCBkbGVycm9yKCkpOwogICAg ICAKICAgICAgCQlkbGNsb3NlKHN0YXRlLT5idWlsdGluX2Zsb3cpOwogICAgIC0JCXJldHVybiBm YWxzZTsKICAgIC0rCQlyZXR1cm4gMDsKICAgICsrCQlzdGF0ZS0+YnVpbHRpbl9mbG93ID0gTlVM TDsKICAgICsrCiAgICArKwkJcmVxdWVzdC0+ZXJyb3IgPSBsaWJwcV9nZXR0ZXh0KCJjb3VsZCBu b3QgZmluZCBlbnRyeSBwb2ludCBmb3IgbGlicHEtb2F1dGgiKTsKICAgICsrCQlyZXR1cm4gLTE7 CiAgICAgIAl9CiAgICAgIAogICAgICAJLyoKICAgICBAQCBzcmMvaW50ZXJmYWNlcy9saWJwcS9m ZS1hdXRoLW9hdXRoLmM6IHVzZV9idWlsdGluX2Zsb3coUEdjb25uICpjb25uLCBmZV9vYXV0aF9z dGF0ZSAqc3RhdGUpCiAgICArIAkJLyogU2hvdWxkIG5vdCBoYXBwZW4uLi4gYnV0IGRvbid0IGNv bnRpbnVlIGlmIGl0IGRvZXMuICovCiAgICAgIAkJQXNzZXJ0KGZhbHNlKTsKICAgICAgCiAgICAt IAkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgImZhaWxlZCB0byBsb2NrIG11dGV4ICgl ZCkiLCBsb2NrZXJyKTsKICAgICstCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAiZmFp bGVkIHRvIGxvY2sgbXV0ZXggKCVkKSIsIGxvY2tlcnIpOwogICAgIC0JCXJldHVybiBmYWxzZTsK ICAgIC0rCQlyZXR1cm4gMDsKICAgICsrCQlhcHBlbmRQUUV4cEJ1ZmZlcigmY29ubi0+ZXJyb3JN ZXNzYWdlLAogICAgKysJCQkJCQkgICJ1c2VfYnVpbHRpbl9mbG93OiBmYWlsZWQgdG8gbG9jayBt dXRleCAoJWQpXG4iLAogICAgKysJCQkJCQkgIGxvY2tlcnIpOwogICAgKysKICAgICsrCQlyZXF1 ZXN0LT5lcnJvciA9ICIiOwkvKiBzYXRpc2Z5IHJlcG9ydF9mbG93X2Vycm9yKCkgKi8KICAgICsr CQlyZXR1cm4gLTE7CiAgICAgIAl9CiAgICAgIAogICAgICAJaWYgKCFpbml0aWFsaXplZCkKICAg IEBAIHNyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWF1dGgtb2F1dGguYzogc2V0dXBfdG9rZW5fcmVx dWVzdChQR2Nvbm4gKmNvbm4sIGZlX29hdXRoCiAgICAgKwkJY29ubi0+YXN5bmNfYXV0aCA9IHJ1 bl9vYXV0aF9mbG93OwogICAgICsJCWNvbm4tPmNsZWFudXBfYXN5bmNfYXV0aCA9IGNsZWFudXBf b2F1dGhfZmxvdzsKICAgICAgCQlzdGF0ZS0+YXN5bmNfY3R4ID0gcmVxdWVzdF9jb3B5OwogICAg LSAJfQogICAgLSAJZWxzZSBpZiAocmVzIDwgMCkKICAgIC0gCXsKICAgICstCX0KICAgICstCWVs c2UgaWYgKHJlcyA8IDApCiAgICArLQl7CiAgICAgLQkJcmVwb3J0X3VzZXJfZmxvd19lcnJvcihj b25uLCAmcmVxdWVzdCk7CiAgICAtKwkJcmVwb3J0X2Zsb3dfZXJyb3IoY29ubiwgJnJlcXVlc3Qp OwogICAgLSAJCWdvdG8gZmFpbDsKICAgIC0gCX0KICAgICstCQlnb3RvIGZhaWw7CiAgICArLQl9 CiAgICAgLQllbHNlIGlmICghdXNlX2J1aWx0aW5fZmxvdyhjb25uLCBzdGF0ZSkpCiAgICArLQl7 CiAgICArLQkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgIm5vIE9BdXRoIGZsb3dzIGFy ZSBhdmFpbGFibGUgKHRyeSBpbnN0YWxsaW5nIHRoZSBsaWJwcS1vYXV0aCBwYWNrYWdlKSIpOwog ICAgKy0JCWdvdG8gZmFpbDsKICAgICsrCiAgICArKwkJcmV0dXJuIHRydWU7CiAgICArIAl9CiAg ICArIAogICAgKy0JcmV0dXJuIHRydWU7CiAgICArKwkvKgogICAgKysJICogRmFpbHVyZSBjYXNl czogZWl0aGVyIHdlIHRyaWVkIHRvIHNldCB1cCBhIGZsb3cgYW5kIGZhaWxlZCwgb3IgdGhlcmUK ICAgICsrCSAqIHdhcyBubyBmbG93IHRvIHRyeS4KICAgICsrCSAqLwogICAgKysJaWYgKHJlcyA8 IDApCiAgICArKwkJcmVwb3J0X2Zsb3dfZXJyb3IoY29ubiwgJnJlcXVlc3QpOwogICAgICsJZWxz ZQogICAgLSAJewogICAgLSAJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJubyBPQXV0 aCBmbG93cyBhcmUgYXZhaWxhYmxlICh0cnkgaW5zdGFsbGluZyB0aGUgbGlicHEtb2F1dGggcGFj a2FnZSkiKTsKICAgIC0gCQlnb3RvIGZhaWw7CiAgICArKwkJbGlicHFfYXBwZW5kX2Nvbm5fZXJy b3IoY29ubiwgIm5vIE9BdXRoIGZsb3dzIGFyZSBhdmFpbGFibGUgKHRyeSBpbnN0YWxsaW5nIHRo ZSBsaWJwcS1vYXV0aCBwYWNrYWdlKSIpOwogICAgKyAKICAgICsgZmFpbDoKICAgICsgCWlmIChy ZXF1ZXN0LnYxLmNsZWFudXApCjM6ICA5NmJkNTk3MDY2OCA9IDI6ICBmNTlkNjQzMWIwNCBsaWJw cS1vYXV0aDogTmV2ZXIgbGluayBhZ2FpbnN0IGxpYnBxJ3MgZW5jb2RpbmcgZnVuY3Rpb25zCjQ6 ICAwZTdmYWUxZTE1MiAhIDM6ICA3NWFjN2RkYzEyMCBXSVA6IHRlc3Qgb3V0IHBvaXNvbmluZwog ICAgQEAgTWV0YWRhdGEKICAgICBBdXRob3I6IEphY29iIENoYW1waW9uIDxqYWNvYi5jaGFtcGlv bkBlbnRlcnByaXNlZGIuY29tPgogICAgIAogICAgICAjIyBDb21taXQgbWVzc2FnZSAjIwogICAg LSAgICBXSVA6IHRlc3Qgb3V0IHBvaXNvbmluZwogICAgKyAgICBsaWJwcTogUG9pc29uIHRoZSB2 MiBwYXJ0IG9mIGEgdjEgQmVhcmVyIHJlcXVlc3QKICAgICsKICAgICsgICAgVGhlIG5ldyBQR29h dXRoQmVhcmVyUmVxdWVzdFYyIEFQSSAod2hpY2ggaGFzIHNpbWlsYXJpdGllcyB0byB0aGUKICAg ICsgICAgInN1YmNsYXNzIiBwb2ludGVyIGFyY2hpdGVjdHVyZSBpbiB1c2UgYnkgdGhlIGJhY2tl bmQsIGZvciBOb2RlcykKICAgICsgICAgY2FycmllcyB0aGUgcmlzayBvZiBhIGRldmVsb3BlciBp Z25vcmluZyB0aGUgdHlwZSBvZiBob29rIGluIHVzZSBhbmQKICAgICsgICAganVzdCBjYXN0aW5n IGRpcmVjdGx5IHRvIHRoZSBWMiBzdHJ1Y3QuIFRoaXMgd2lsbCBhcHBlYXIgdG8gd29yayBmaW5l IGluCiAgICArICAgIDE5LCBidXQgY3Jhc2ggKG9yIHdvcnNlKSB3aGVuIHNwZWFraW5nIHRvIGxp YnBxIDE4LgogICAgKwogICAgKyAgICBIb3dldmVyLCB3ZSdyZSBpbiBhIHVuaXF1ZSBwb3NpdGlv biB0byBjYXRjaCB0aGlzIHByb2JsZW0sIGJlY2F1c2Ugd2UKICAgICsgICAgaGF2ZSB0aWdodCBj b250cm9sIG92ZXIgdGhlIHN0cnVjdC4gQWRkIHBvaXNvbmluZyBjb2RlIHRvIHRoZSB2MSBwYXRo CiAgICArICAgIHdoaWNoIGRvZXMgdGhlIGZvbGxvd2luZzoKICAgICsKICAgICsgICAgLSBtYXNr cyB0aGUgdjIgcmVxdWVzdC0+aXNzdWVyIHBvaW50ZXIsIHRvIGhvcGVmdWxseSBwb2ludCBhdCBu b25zZW5zZQogICAgKyAgICAgIG1lbW9yeQogICAgKyAgICAtIGFib3J0KClzIGlmIHRoZSB2MiBy ZXF1ZXN0LT5lcnJvciBpcyBhc3NpZ25lZCBieSB0aGUgaG9vawogICAgKyAgICAtIGF0dGVtcHRz IHRvIGNvdmVyIGJvdGggd2l0aCBWQUxHUklORF9NQUtFX01FTV9OT0FDQ0VTUyBmb3IgdGhlCiAg ICArICAgICAgZHVyYXRpb24gb2YgdGhlIGNhbGxiYWNrIChhIHBvdGVudGlhbCBBZGRyZXNzU2Fu aXRpemVyIGltcGxlbWVudGF0aW9uCiAgICArICAgICAgaXMgbGVmdCBmb3IgZnV0dXJlIHdvcmsp CiAgICArCiAgICArICAgIFRoZSBzdHJ1Y3QgaXMgdW5wb2lzb25lZCBhZnRlciB0aGUgY2FsbCwg c28gd2UgY2FuIHN3aXRjaCBiYWNrIHRvIHRoZSB2MgogICAgKyAgICBpbnRlcm5hbCBpbXBsZW1l bnRhdGlvbiB3aGVuIG5lY2Vzc2FyeS4KICAgICsKICAgICsgICAgRGlzY3Vzc2lvbjogaHR0cHM6 Ly9wb3N0Z3IuZXMvbS9DQU9ZbWklMkJtckdnJTJCbl9YMk1PTGdlV2NqM3ZfTTAwZ1I4dXpfRDdt TTh6JTNEZFgxSllWYmclNDBtYWlsLmdtYWlsLmNvbQogICAgIAogICAgICAjIyBzcmMvaW50ZXJm YWNlcy9saWJwcS9mZS1hdXRoLW9hdXRoLmggIyMKICAgICBAQCBzcmMvaW50ZXJmYWNlcy9saWJw cS9mZS1hdXRoLW9hdXRoLmg6IHR5cGVkZWYgc3RydWN0CiAgICBAQCBzcmMvaW50ZXJmYWNlcy9s aWJwcS9mZS1hdXRoLW9hdXRoLmM6IHNldHVwX3Rva2VuX3JlcXVlc3QoUEdjb25uICpjb25uLCBm ZV9vYXV0aAogICAgICAJCX0KICAgICAgCiAgICAgQEAgc3JjL2ludGVyZmFjZXMvbGlicHEvZmUt YXV0aC1vYXV0aC5jOiBzZXR1cF90b2tlbl9yZXF1ZXN0KFBHY29ubiAqY29ubiwgZmVfb2F1dGhf c3RhdGUgKnN0YXRlKQogICAgLSAJcmV0dXJuIHRydWU7CiAgICArIAkJbGlicHFfYXBwZW5kX2Nv bm5fZXJyb3IoY29ubiwgIm5vIE9BdXRoIGZsb3dzIGFyZSBhdmFpbGFibGUgKHRyeSBpbnN0YWxs aW5nIHRoZSBsaWJwcS1vYXV0aCBwYWNrYWdlKSIpOwogICAgICAKICAgICAgZmFpbDoKICAgICAt CWlmIChyZXF1ZXN0LnYxLmNsZWFudXApCi06ICAtLS0tLS0tLS0tLSA+IDQ6ICA3YTQzMzk4Yzkw YSBsaWJwcTogQWxsb3cgZGV2ZWxvcGVycyB0byByZWltcGxlbWVudCBsaWJwcS1vYXV0aAo1OiAg ZmJiODliY2Q5ODAgISA1OiAgYjNkYWYzMTQwZjggV0lQOiBJbnRyb2R1Y2UgdGhpcmQtcGFydHkg T0F1dGggZmxvdyBwbHVnaW5zPwogICAgQEAgQ29tbWl0IG1lc3NhZ2UKICAgICAgICAgVGhpcyBl eHBlcmltZW50YWwgY29tbWl0IHByb21vdGVzIHRoZSBwZ19zdGFydF9vYXV0aGJlYXJlciBBUEkg dG8gYQogICAgICAgICBwdWJsaWMgaGVhZGVyIChsaWJwcS1vYXV0aC5oKSBhbmQgYWRkcyBhIFBH T0FVVEhNT0RVTEUgZW52aXJvbm1lbnQKICAgICAgICAgdmFyaWFibGUgdGhhdCBvdmVycmlkZXMg dGhlIGxvYWQgcGF0aCBmb3IgdGhlIHBsdWdpbiwgYWxsb3dpbmcgdXNlcnMgdG8KICAgIC0gICAg cHJvdmlkZSB0aGVpciBvd24uIFRoZSBsaWJwcV9vYXV0aF9pbml0IGZ1bmN0aW9uIGlzIG5vdyBv cHRpb25hbCwgYW5kCiAgICAtICAgIHdpbGwgcmVtYWluIHVuZG9jdW1lbnRlZC4gKE1vZHVsZXMg dGhhdCBkb24ndCBwcm92aWRlIGl0IGFyZSBtYXJrZWQgYXMKICAgIC0gICAgdXNlci1kZWZpbmVk LikKICAgICsgICAgcHJvdmlkZSB0aGVpciBvd24uIEl0J3MgcHJvYmFibHkgbm90IGEgZ29vZCBz b2x1dGlvbjsgaXQgcHJvdmlkZXMgYWxtb3N0CiAgICArICAgIG5vdGhpbmcgb3ZlciBMRF9MSUJS QVJZX1BBVEggKG90aGVyIHRoYW4gbm90IGJlaW5nIExEX0xJQlJBUllfUEFUSCkuCiAgICAgCiAg ICAgICAgIFRoaXMgaXMgYSByZWxhdGl2ZWx5IHNtYWxsIGFtb3VudCBvZiBpbXBsZW1lbnRhdGlv biBjaGFuZ2UsIGJ1dAogICAgICAgICB1bmZvcnR1bmF0ZWx5IHRoZSB0ZXN0cyBoYXZlIGEgbGFy Z2UgYW1vdW50IG9mIGNvZGUgbW90aW9uIHRvIGJlIGFibGUgdG8KICAgIEBAIHNyYy9pbnRlcmZh Y2VzL2xpYnBxLW9hdXRoL29hdXRoLWN1cmwuaCAoZGVsZXRlZCkKICAgICAtCiAgICAgLSNlbmRp ZgkJCQkJCQkvKiBPQVVUSF9DVVJMX0ggKi8KICAgICAKICAgIC0gIyMgc3JjL2ludGVyZmFjZXMv bGlicHEvZmUtYXV0aC1vYXV0aC5oICMjCiAgICAtQEAgc3JjL2ludGVyZmFjZXMvbGlicHEvZmUt YXV0aC1vYXV0aC5oOiB0eXBlZGVmIHN0cnVjdAogICAgLSAKICAgIC0gCWJvb2wJCXYxOwogICAg LSAJYm9vbAkJYnVpbHRpbjsKICAgIC0tCXZvaWQJICAgKmJ1aWx0aW5fZmxvdzsKICAgIC0rCXZv aWQJICAgKmZsb3dfbW9kdWxlOwogICAgLSB9IGZlX29hdXRoX3N0YXRlOwogICAgLSAKICAgIC0g ZXh0ZXJuIHZvaWQgcHFDbGVhck9BdXRoVG9rZW4oUEdjb25uICpjb25uKTsKICAgIC0KICAgICAg IyMgc3JjL2ludGVyZmFjZXMvbGlicHEvbGlicHEtb2F1dGguaCAobmV3KSAjIwogICAgIEBACiAg ICAgKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgQEAgc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtYXV0 aC1vYXV0aC5jOiB1c2VfYnVpbHRpbl9mbG93KFBHY29ubiAqY29ubiwgZmVfb2F1dGhfc3QKICAg ICAgCQkibGlicHEtb2F1dGgiIERMU1VGRklYOwogICAgICAjZW5kaWYKICAgICAgCiAgICAtLQlz dGF0ZS0+YnVpbHRpbl9mbG93ID0gZGxvcGVuKG1vZHVsZV9uYW1lLCBSVExEX05PVyB8IFJUTERf TE9DQUwpOwogICAgLS0JaWYgKCFzdGF0ZS0+YnVpbHRpbl9mbG93KQogICAgICsJLyotCiAgICAg KwkgKiBBZGRpdGlvbmFsbHksIHRoZSB1c2VyIG1heSBvdmVycmlkZSB0aGUgbW9kdWxlIHBhdGgg ZXhwbGljaXRseSB0byBiZQogICAgICsJICogYWJsZSB0byBwcm92aWRlIHRoZWlyIG93biBtb2R1 bGUsIHZpYSBQR09BVVRITU9EVUxFLgogICAgQEAgc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtYXV0 aC1vYXV0aC5jOiB1c2VfYnVpbHRpbl9mbG93KFBHY29ubiAqY29ubiwgZmVfb2F1dGhfc3QKICAg ICArCWVsc2UKICAgICArCQlzdGF0ZS0+YnVpbHRpbiA9IHRydWU7CiAgICAgKwogICAgLSsJc3Rh dGUtPmZsb3dfbW9kdWxlID0gZGxvcGVuKG1vZHVsZV9uYW1lLCBSVExEX05PVyB8IFJUTERfTE9D QUwpOwogICAgLSsJaWYgKCFzdGF0ZS0+Zmxvd19tb2R1bGUpCiAgICArIAlzdGF0ZS0+Zmxvd19t b2R1bGUgPSBkbG9wZW4obW9kdWxlX25hbWUsIFJUTERfTk9XIHwgUlRMRF9MT0NBTCk7CiAgICAr IAlpZiAoIXN0YXRlLT5mbG93X21vZHVsZSkKICAgICAgCXsKICAgICAgCQkvKgogICAgICAJCSAq IEZvciBlbmQgdXNlcnMsIHRoaXMgcHJvYmFibHkgaXNuJ3QgYW4gZXJyb3IgY29uZGl0aW9uLCBp dCBqdXN0CiAgICBAQCBzcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1hdXRoLW9hdXRoLmM6IHVzZV9i dWlsdGluX2Zsb3coUEdjb25uICpjb25uLCBmZV9vYXV0aF9zdAogICAgICsJCXJldHVybiAtMTsK ICAgICAgCX0KICAgICAgCiAgICAtLQlpZiAoKGluaXQgPSBkbHN5bShzdGF0ZS0+YnVpbHRpbl9m bG93LCAibGlicHFfb2F1dGhfaW5pdCIpKSA9PSBOVUxMCiAgICAtLQkJfHwgKHN0YXJ0X2Zsb3cg PSBkbHN5bShzdGF0ZS0+YnVpbHRpbl9mbG93LCAicGdfc3RhcnRfb2F1dGhiZWFyZXIiKSkgPT0g TlVMTCkKICAgIC0rCWlmICgoc3RhcnRfZmxvdyA9IGRsc3ltKHN0YXRlLT5mbG93X21vZHVsZSwg InBnX3N0YXJ0X29hdXRoYmVhcmVyIikpID09IE5VTEwpCiAgICAtIAl7CiAgICAtIAkJLyoKICAg IC0gCQkgKiBUaGlzIGlzIG1vcmUgb2YgYW4gZXJyb3IgY29uZGl0aW9uIHRoYW4gdGhlIG9uZSBh Ym92ZSwgYnV0IGR1ZSB0bwogICAgLSAJCSAqIHRoZSBkbGVycm9yKCkgdGhyZWFkc2FmZXR5IGlz c3VlLCBsb2NrIGl0IGJlaGluZCBQR09BVVRIREVCVUcgdG9vLgogICAgLSAJCSAqLwogICAgLSAJ CWlmIChvYXV0aF91bnNhZmVfZGVidWdnaW5nX2VuYWJsZWQoKSkKICAgIC0tCQkJZnByaW50Zihz dGRlcnIsICJmYWlsZWQgZGxzeW0gZm9yIGxpYnBxLW9hdXRoOiAlc1xuIiwgZGxlcnJvcigpKTsK ICAgIC0rCQkJZnByaW50ZihzdGRlcnIsICJmYWlsZWQgZGxzeW0gZm9yICVzOiAlc1xuIiwgbW9k dWxlX25hbWUsIGRsZXJyb3IoKSk7CiAgICAtKwogICAgLSsJCWRsY2xvc2Uoc3RhdGUtPmZsb3df bW9kdWxlKTsKICAgIC0rCQlzdGF0ZS0+Zmxvd19tb2R1bGUgPSBOVUxMOwogICAgLSsKICAgIC0r CQlpZiAoc3RhdGUtPmJ1aWx0aW4pCiAgICAtKwkJCXJldHVybiAwOwogICAgLSAKICAgIC0tCQlk bGNsb3NlKHN0YXRlLT5idWlsdGluX2Zsb3cpOwogICAgLS0JCXJldHVybiAwOwogICAgLSsJCXJl cXVlc3QtPmVycm9yID0gbGlicHFfZ2V0dGV4dCgicGx1Z2luIGVudHJ5IHBvaW50IGNvdWxkIG5v dCBiZSBsb2NhdGVkIik7CiAgICAtKwkJcmV0dXJuIC0xOwogICAgLSAJfQogICAgLSAKICAgIC0g CS8qCiAgICAtQEAgc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtYXV0aC1vYXV0aC5jOiB1c2VfYnVp bHRpbl9mbG93KFBHY29ubiAqY29ubiwgZmVfb2F1dGhfc3RhdGUgKnN0YXRlLCBQR29hdXRoQmVh cmVyUmVxdWVzdFYyICpyZQogICAgLSAJICovCiAgICAtIAogICAgICAJLyoKICAgIC0tCSAqIFdl IG5lZWQgdG8gaW5qZWN0IG5lY2Vzc2FyeSBmdW5jdGlvbiBwb2ludGVycyBpbnRvIHRoZSBtb2R1 bGUuIFRoaXMKICAgIC0tCSAqIG9ubHkgbmVlZHMgdG8gYmUgZG9uZSBvbmNlIC0tIGV2ZW4gaWYg dGhlIHBvaW50ZXJzIGFyZSBjb25zdGFudCwKICAgIC0tCSAqIGFzc2lnbmluZyB0aGVtIHdoaWxl IGFub3RoZXIgdGhyZWFkIGlzIGV4ZWN1dGluZyB0aGUgZmxvd3MgZmVlbHMgbGlrZQogICAgLS0J ICogdGVtcHRpbmcgZmF0ZS4KICAgIC0rCSAqIE91ciBsaWJwcS1vYXV0aC5zbyBwcm92aWRlcyBh IHNwZWNpYWwgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24gZm9yIGxpYnBxCiAgICArIAkgKiBPdXIg bGlicHEtb2F1dGguc28gcHJvdmlkZXMgYSBzcGVjaWFsIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9u IGZvciBsaWJwcQogICAgKy0JICogaW50ZWdyYXRpb24uIElmIHdlIGRvbid0IGZpbmQgdGhpcywg YXNzdW1lIHRoYXQgYSBjdXN0b20gbW9kdWxlIGlzIGluCiAgICArLQkgKiB1c2UgaW5zdGVhZC4K ICAgICArCSAqIGludGVncmF0aW9uLiBJdCdzIG5vdCBhIHByb2JsZW0gaWYgd2UgZG9uJ3QgZmlu ZCB0aGlzOyBpdCBqdXN0IG1lYW5zCiAgICAgKwkgKiB0aGF0IGEgdXNlci1kZWZpbmVkIG1vZHVs ZSBpcyBiZWluZyB1c2VkLgogICAgICAJICovCiAgICAtLQlpZiAoKGxvY2tlcnIgPSBwdGhyZWFk X211dGV4X2xvY2soJmluaXRfbXV0ZXgpKSAhPSAwKQogICAgLSsJaW5pdCA9IGRsc3ltKHN0YXRl LT5mbG93X21vZHVsZSwgImxpYnBxX29hdXRoX2luaXQiKTsKICAgIC0rCiAgICAtKwlpZiAoIWlu aXQpCiAgICAtKwkJc3RhdGUtPmJ1aWx0aW4gPSBmYWxzZTsgLyogYWRqdXN0IG91ciBlcnJvciBt ZXNzYWdlcyAqLwogICAgLSsJZWxzZQogICAgLSAJewogICAgLS0JCS8qIFNob3VsZCBub3QgaGFw cGVuLi4uIGJ1dCBkb24ndCBjb250aW51ZSBpZiBpdCBkb2VzLiAqLwogICAgLS0JCUFzc2VydChm YWxzZSk7CiAgICAtKwkJLyoKICAgIC0rCQkgKiBXZSBuZWVkIHRvIGluamVjdCBuZWNlc3Nhcnkg ZnVuY3Rpb24gcG9pbnRlcnMgaW50byB0aGUgbW9kdWxlLiBUaGlzCiAgICAtKwkJICogb25seSBu ZWVkcyB0byBiZSBkb25lIG9uY2UgLS0gZXZlbiBpZiB0aGUgcG9pbnRlcnMgYXJlIGNvbnN0YW50 LAogICAgLSsJCSAqIGFzc2lnbmluZyB0aGVtIHdoaWxlIGFub3RoZXIgdGhyZWFkIGlzIGV4ZWN1 dGluZyB0aGUgZmxvd3MgZmVlbHMKICAgIC0rCQkgKiBsaWtlIHRlbXB0aW5nIGZhdGUuCiAgICAt KwkJICovCiAgICAtKwkJaWYgKChsb2NrZXJyID0gcHRocmVhZF9tdXRleF9sb2NrKCZpbml0X211 dGV4KSkgIT0gMCkKICAgIC0rCQl7CiAgICAtKwkJCS8qIFNob3VsZCBub3QgaGFwcGVuLi4uIGJ1 dCBkb24ndCBjb250aW51ZSBpZiBpdCBkb2VzLiAqLwogICAgLSsJCQlBc3NlcnQoZmFsc2UpOwog ICAgLSAKICAgIC0tCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAiZmFpbGVkIHRvIGxv Y2sgbXV0ZXggKCVkKSIsIGxvY2tlcnIpOwogICAgLS0JCXJldHVybiAwOwogICAgLS0JfQogICAg LSsJCQlhcHBlbmRQUUV4cEJ1ZmZlcigmY29ubi0+ZXJyb3JNZXNzYWdlLAogICAgLSsJCQkJCQkJ ICAidXNlX2J1aWx0aW5fZmxvdzogZmFpbGVkIHRvIGxvY2sgbXV0ZXggKCVkKVxuIiwKICAgIC0r CQkJCQkJCSAgbG9ja2Vycik7CiAgICAtIAogICAgLS0JaWYgKCFpbml0aWFsaXplZCkKICAgIC0t CXsKICAgIC0tCQlpbml0KAogICAgLSsJCQlyZXF1ZXN0LT5lcnJvciA9ICIiOwkvKiBzYXRpc2Z5 IHJlcG9ydF9mbG93X2Vycm9yKCkgKi8KICAgIC0rCQkJcmV0dXJuIC0xOwogICAgLSsJCX0KICAg IC0rCiAgICAtKwkJaWYgKCFpbml0aWFsaXplZCkKICAgIC0rCQl7CiAgICAtKwkJCWluaXQoCiAg ICAtICNpZmRlZiBFTkFCTEVfTkxTCiAgICAtLQkJCSBsaWJwcV9nZXR0ZXh0CiAgICAtKwkJCQkg bGlicHFfZ2V0dGV4dAogICAgLSAjZWxzZQogICAgLS0JCQkgTlVMTAogICAgLSsJCQkJIE5VTEwK ICAgIC0gI2VuZGlmCiAgICAtLQkJCSk7CiAgICAtKwkJCQkpOwogICAgKyAJaW5pdCA9IGRsc3lt KHN0YXRlLT5mbG93X21vZHVsZSwgImxpYnBxX29hdXRoX2luaXQiKTsKICAgICsgCWlmICghaW5p dCkKICAgICtAQCBzcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1hdXRoLW9hdXRoLmM6IHVzZV9idWls dGluX2Zsb3coUEdjb25uICpjb25uLCBmZV9vYXV0aF9zdGF0ZSAqc3RhdGUsIFBHb2F1dGhCZWFy ZXJSZXF1ZXN0VjIgKnJlCiAgICArIAkJICogdGhyZWFkc2FmZXR5IGlzc3VlLgogICAgKyAJCSAq LwogICAgKyAJCWlmIChvYXV0aF91bnNhZmVfZGVidWdnaW5nX2VuYWJsZWQoKSkKICAgICstCQkJ ZnByaW50ZihzdGRlcnIsICJmYWlsZWQgZGxzeW0gZm9yIGxpYnBxLW9hdXRoOiAlc1xuIiwgZGxl cnJvcigpKTsKICAgICsrCQkJZnByaW50ZihzdGRlcnIsICJmYWlsZWQgZGxzeW0gZm9yICVzOiAl c1xuIiwgbW9kdWxlX25hbWUsIGRsZXJyb3IoKSk7CiAgICAgIAogICAgLS0JCWluaXRpYWxpemVk ID0gdHJ1ZTsKICAgIC0tCX0KICAgIC0rCQkJaW5pdGlhbGl6ZWQgPSB0cnVlOwogICAgLSsJCX0K ICAgICsgCQlkbGNsb3NlKHN0YXRlLT5mbG93X21vZHVsZSk7CiAgICArIAkJc3RhdGUtPmZsb3df bW9kdWxlID0gTlVMTDsKICAgICAgCiAgICAtLQlwdGhyZWFkX211dGV4X3VubG9jaygmaW5pdF9t dXRleCk7CiAgICAtKwkJcHRocmVhZF9tdXRleF91bmxvY2soJmluaXRfbXV0ZXgpOwogICAgLSsJ fQogICAgKy0JCXJlcXVlc3QtPmVycm9yID0gbGlicHFfZ2V0dGV4dCgiY291bGQgbm90IGZpbmQg ZW50cnkgcG9pbnQgZm9yIGxpYnBxLW9hdXRoIik7CiAgICArKwkJcmVxdWVzdC0+ZXJyb3IgPSBz dGF0ZS0+YnVpbHRpbiA/CiAgICArKwkJCWxpYnBxX2dldHRleHQoImNvdWxkIG5vdCBmaW5kIGVu dHJ5IHBvaW50IGZvciBsaWJwcS1vYXV0aCIpIDoKICAgICsrCQkJbGlicHFfZ2V0dGV4dCgiY291 bGQgbm90IGZpbmQgZW50cnkgcG9pbnQgZm9yIGN1c3RvbSBwbHVnaW4iKTsKICAgICsgCQlyZXR1 cm4gLTE7CiAgICArIAl9CiAgICAgIAogICAgLSAJcmV0dXJuIChzdGFydF9mbG93KGNvbm4sIHJl cXVlc3QpID09IDApID8gMSA6IC0xOwogICAgLSB9CiAgICAgQEAgc3JjL2ludGVyZmFjZXMvbGli cHEvZmUtYXV0aC1vYXV0aC5jOiBleHRlcm4gaW50CXBnX3N0YXJ0X29hdXRoYmVhcmVyKFBHY29u biAqY29ubiwgUEdvYXV0aEJlYXJlclJlcXVlc3RWMiAqcmVxdWVzdCk7CiAgICAgIHN0YXRpYyBp bnQKICAgICAgdXNlX2J1aWx0aW5fZmxvdyhQR2Nvbm4gKmNvbm4sIGZlX29hdXRoX3N0YXRlICpz dGF0ZSwgUEdvYXV0aEJlYXJlclJlcXVlc3RWMiAqcmVxdWVzdCkKICAgIEBAIHNyYy9pbnRlcmZh Y2VzL2xpYnBxL2ZlLWF1dGgtb2F1dGguYzogc2V0dXBfdG9rZW5fcmVxdWVzdChQR2Nvbm4gKmNv bm4sIGZlX29hdXRoCiAgICAgIAogICAgICAJaWYgKHJlcyA+IDApCiAgICAgIAl7CiAgICAtQEAg c3JjL2ludGVyZmFjZXMvbGlicHEvZmUtYXV0aC1vYXV0aC5jOiBzZXR1cF90b2tlbl9yZXF1ZXN0 KFBHY29ubiAqY29ubiwgZmVfb2F1dGhfc3RhdGUgKnN0YXRlKQogICAgLSAJCWNvbm4tPmFzeW5j X2F1dGggPSBydW5fb2F1dGhfZmxvdzsKICAgIC0gCQljb25uLT5jbGVhbnVwX2FzeW5jX2F1dGgg PSBjbGVhbnVwX29hdXRoX2Zsb3c7CiAgICAtIAkJc3RhdGUtPmFzeW5jX2N0eCA9IHJlcXVlc3Rf Y29weTsKICAgIC0rCiAgICAtKwkJcmV0dXJuIHRydWU7CiAgICAtIAl9CiAgICAtLQllbHNlIGlm IChyZXMgPCAwKQogICAgLS0JewogICAgLSsKICAgIC0rCS8qCiAgICAtKwkgKiBGYWlsdXJlIGNh c2VzOiBlaXRoZXIgd2UgdHJpZWQgdG8gc2V0IHVwIGEgZmxvdyBhbmQgZmFpbGVkLCBvciB0aGVy ZQogICAgLSsJICogd2FzIG5vIGZsb3cgdG8gdHJ5LgogICAgLSsJICovCiAgICAtKwlpZiAocmVz IDwgMCkKICAgIC0gCQlyZXBvcnRfZmxvd19lcnJvcihjb25uLCAmcmVxdWVzdCk7CiAgICAtLQkJ Z290byBmYWlsOwogICAgLS0JfQogICAgLSAJZWxzZQogICAgLS0JewogICAgLSAJCWxpYnBxX2Fw cGVuZF9jb25uX2Vycm9yKGNvbm4sICJubyBPQXV0aCBmbG93cyBhcmUgYXZhaWxhYmxlICh0cnkg aW5zdGFsbGluZyB0aGUgbGlicHEtb2F1dGggcGFja2FnZSkiKTsKICAgIC0tCQlnb3RvIGZhaWw7 CiAgICAtLQl9CiAgICAtLQogICAgLS0JcmV0dXJuIHRydWU7CiAgICAtIAogICAgLSBmYWlsOgog ICAgLSAJZG9fY2xlYW51cChzdGF0ZSwgJnJlcXVlc3QpOwogICAgIAogICAgICAjIyBzcmMvdGVz dC9tb2R1bGVzL29hdXRoX3ZhbGlkYXRvci9tZXNvbi5idWlsZCAjIwogICAgIEBAIHNyYy90ZXN0 L21vZHVsZXMvb2F1dGhfdmFsaWRhdG9yL21lc29uLmJ1aWxkOiB0ZXN0X2luc3RhbGxfbGlicyAr PSBtYWdpY192YWxpZGF0b3IKICAgIEBAIHNyYy90ZXN0L21vZHVsZXMvb2F1dGhfdmFsaWRhdG9y L3QvMDAyX2NsaWVudC5wbDogc3ViIHRlc3QKICAgICAgfQogICAgICAKICAgICAgdGVzdCgKICAg IC1AQCBzcmMvdGVzdC9tb2R1bGVzL29hdXRoX3ZhbGlkYXRvci90LzAwMl9jbGllbnQucGw6IHRl c3QoCiAgICArQEAgc3JjL3Rlc3QvbW9kdWxlcy9vYXV0aF92YWxpZGF0b3IvdC8wMDJfY2xpZW50 LnBsOiAkY29tbW9uX2Nvbm5zdHIgPSAiJGJhc2VfY29ubnN0ciBvYXV0aF9pc3N1ZXI9JGlzc3Vl ciBvYXV0aF9jbGllbnRfaWQ9bXlJRCI7CiAgICAgICMgTWFrZSBzdXJlIHRoZSB2MSBob29rIGNv bnRpbnVlcyB0byB3b3JrLgogICAgICB0ZXN0KAogICAgICAJInYxIHN5bmNocm9ub3VzIGhvb2sg Y2FuIHByb3ZpZGUgYSB0b2tlbiIsCg== --00000000000093b953064cae118a Content-Type: application/octet-stream; name="v7-0001-libpq-oauth-Use-the-PGoauthBearerRequestV2-API.patch" Content-Disposition: attachment; filename="v7-0001-libpq-oauth-Use-the-PGoauthBearerRequestV2-API.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmktv5tq1 RnJvbSBmNWI4NjFmN2VmZDUzMjhmZTdhNGEyZDAzNGFkNTQxMGZmYjUwOGI4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWNvYiBDaGFtcGlvbiA8amFjb2IuY2hhbXBpb25AZW50ZXJw cmlzZWRiLmNvbT4KRGF0ZTogVGh1LCAyMyBPY3QgMjAyNSAxMjoyNDoyMCAtMDcwMApTdWJqZWN0 OiBbUEFUQ0ggdjcgMS81XSBsaWJwcS1vYXV0aDogVXNlIHRoZSBQR29hdXRoQmVhcmVyUmVxdWVz dFYyIEFQSQoKU3dpdGNoIHRoZSBwcml2YXRlIGxpYnBxLW9hdXRoIEFCSSB0byB0aGUgcHVibGlj IFBHb2F1dGhCZWFyZXJSZXF1ZXN0VjIKQVBJLiBBIGh1Z2UgYW1vdW50IG9mIGdsdWUgY29kZSBj YW4gYmUgcmVtb3ZlZCBhcyBwYXJ0IG9mIHRoaXMsIGFuZCBzZXZlcmFsCmNvZGUgcGF0aHMgY2Fu IGJlIGRlZHVwbGljYXRlZC4gQWRkaXRpb25hbGx5LCB0aGUgc2hhcmVkIGxpYnJhcnkgbm8KbG9u Z2VyIG5lZWRzIHRvIGNoYW5nZSBpdHMgbmFtZSBmb3IgZXZlcnkgbWFqb3IgcmVsZWFzZTsgaXQn cyBub3cganVzdAoibGlicHEtb2F1dGguc28iLgoKUmV2aWV3ZWQtYnk6IENoYW8gTGkgPGxpLmV2 YW4uY2hhb0BnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBac29sdCBQYXJyYWdpIDx6c29sdC5wYXJy YWdpQHBlcmNvbmEuY29tPgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL0NBT1ltaSUy Qm1yR2clMkJuX1gyTU9MZ2VXY2ozdl9NMDBnUjh1el9EN21NOHolM0RkWDFKWVZiZyU0MG1haWwu Z21haWwuY29tCi0tLQogc3JjL2ludGVyZmFjZXMvbGlicHEtb2F1dGgvUkVBRE1FICAgICAgICB8 ICA2NyArKy0tLQogc3JjL2ludGVyZmFjZXMvbGlicHEtb2F1dGgvZXhwb3J0cy50eHQgICB8ICAg MyArLQogc3JjL2ludGVyZmFjZXMvbGlicHEtb2F1dGgvbWVzb24uYnVpbGQgICB8ICAgNCArLQog c3JjL2ludGVyZmFjZXMvbGlicHEtb2F1dGgvTWFrZWZpbGUgICAgICB8ICAgOSArLQogc3JjL2lu dGVyZmFjZXMvbGlicHEtb2F1dGgvb2F1dGgtY3VybC5oICB8ICAgNiArLQogc3JjL2ludGVyZmFj ZXMvbGlicHEtb2F1dGgvb2F1dGgtdXRpbHMuaCB8ICA0MyArLS0KIHNyYy9pbnRlcmZhY2VzL2xp YnBxL2ZlLWF1dGgtb2F1dGguaCAgICAgfCAgIDcgKy0KIHNyYy9pbnRlcmZhY2VzL2xpYnBxLW9h dXRoL29hdXRoLWN1cmwuYyAgfCAzMzYgKysrKysrKysrKysrKystLS0tLS0tLS0KIHNyYy9pbnRl cmZhY2VzL2xpYnBxLW9hdXRoL29hdXRoLXV0aWxzLmMgfCAgNzcgKy0tLS0tCiBzcmMvaW50ZXJm YWNlcy9saWJwcS9mZS1hdXRoLW9hdXRoLmMgICAgIHwgMjI5ICsrKysrKysrLS0tLS0tLQogMTAg ZmlsZXMgY2hhbmdlZCwgMzUzIGluc2VydGlvbnMoKyksIDQyOCBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9zcmMvaW50ZXJmYWNlcy9saWJwcS1vYXV0aC9SRUFETUUgYi9zcmMvaW50ZXJmYWNl cy9saWJwcS1vYXV0aC9SRUFETUUKaW5kZXggNTUzOTYyZDY0NGUuLmEyN2E4MjM4ZDRiIDEwMDY0 NAotLS0gYS9zcmMvaW50ZXJmYWNlcy9saWJwcS1vYXV0aC9SRUFETUUKKysrIGIvc3JjL2ludGVy ZmFjZXMvbGlicHEtb2F1dGgvUkVBRE1FCkBAIC0xMCw0OCArMTAsMzMgQEAgcmVzdWx0cyBpbiBh IGZhaWxlZCBjb25uZWN0aW9uLgogCiA9IExvYWQtVGltZSBBQkkgPQogCi1UaGlzIG1vZHVsZSBB QkkgaXMgYW4gaW50ZXJuYWwgaW1wbGVtZW50YXRpb24gZGV0YWlsLCBzbyBpdCdzIHN1YmplY3Qg dG8gY2hhbmdlCi1hY3Jvc3MgbWFqb3IgcmVsZWFzZXM7IHRoZSBuYW1lIG9mIHRoZSBtb2R1bGUg KGxpYnBxLW9hdXRoLU1BSk9SKSByZWZsZWN0cyB0aGlzLgotVGhlIG1vZHVsZSBleHBvcnRzIHRo ZSBmb2xsb3dpbmcgc3ltYm9sczoKLQotLSBQb3N0Z3Jlc1BvbGxpbmdTdGF0dXNUeXBlIHBnX2Zl X3J1bl9vYXV0aF9mbG93KFBHY29ubiAqY29ubik7Ci0tIHZvaWQgcGdfZmVfY2xlYW51cF9vYXV0 aF9mbG93KFBHY29ubiAqY29ubik7Ci0KLXBnX2ZlX3J1bl9vYXV0aF9mbG93IGFuZCBwZ19mZV9j bGVhbnVwX29hdXRoX2Zsb3cgYXJlIGltcGxlbWVudGF0aW9ucyBvZgotY29ubi0+YXN5bmNfYXV0 aCBhbmQgY29ubi0+Y2xlYW51cF9hc3luY19hdXRoLCByZXNwZWN0aXZlbHkuCi0KLUF0IHRoZSBt b21lbnQsIHBnX2ZlX3J1bl9vYXV0aF9mbG93KCkgcmVsaWVzIG9uIGxpYnBxJ3MgcGdfZ190aHJl YWRsb2NrIGFuZAotbGlicHFfZ2V0dGV4dCgpLCB3aGljaCBtdXN0IGJlIGluamVjdGVkIGJ5IGxp YnBxIHVzaW5nIHRoaXMgaW5pdGlhbGl6YXRpb24KLWZ1bmN0aW9uIGJlZm9yZSB0aGUgZmxvdyBp cyBydW46Ci0KLS0gdm9pZCBsaWJwcV9vYXV0aF9pbml0KHBndGhyZWFkbG9ja190IHRocmVhZGxv Y2ssCi0JCQkJCQlsaWJwcV9nZXR0ZXh0X2Z1bmMgZ2V0dGV4dF9pbXBsLAotCQkJCQkJY29ubl9l cnJvck1lc3NhZ2VfZnVuYyBlcnJtc2dfaW1wbCwKLQkJCQkJCWNvbm5fb2F1dGhfY2xpZW50X2lk X2Z1bmMgY2xpZW50aWRfaW1wbCwKLQkJCQkJCWNvbm5fb2F1dGhfY2xpZW50X3NlY3JldF9mdW5j IGNsaWVudHNlY3JldF9pbXBsLAotCQkJCQkJY29ubl9vYXV0aF9kaXNjb3ZlcnlfdXJpX2Z1bmMg ZGlzY292ZXJ5dXJpX2ltcGwsCi0JCQkJCQljb25uX29hdXRoX2lzc3Vlcl9pZF9mdW5jIGlzc3Vl cmlkX2ltcGwsCi0JCQkJCQljb25uX29hdXRoX3Njb3BlX2Z1bmMgc2NvcGVfaW1wbCwKLQkJCQkJ CWNvbm5fc2FzbF9zdGF0ZV9mdW5jIHNhc2xzdGF0ZV9pbXBsLAotCQkJCQkJc2V0X2Nvbm5fYWx0 c29ja19mdW5jIHNldGFsdHNvY2tfaW1wbCwKLQkJCQkJCXNldF9jb25uX29hdXRoX3Rva2VuX2Z1 bmMgc2V0dG9rZW5faW1wbCk7Ci0KLUl0IGFsc28gcmVsaWVzIG9uIGFjY2VzcyB0byBzZXZlcmFs IG1lbWJlcnMgb2YgdGhlIFBHY29ubiBzdHJ1Y3QuIE5vdCBvbmx5IGNhbgotdGhlc2UgY2hhbmdl IHBvc2l0aW9ucyBhY3Jvc3MgbWlub3IgdmVyc2lvbnMsIGJ1dCB0aGUgb2Zmc2V0cyBhcmVuJ3Qg bmVjZXNzYXJpbHkKLXN0YWJsZSB3aXRoaW4gYSBzaW5nbGUgbWlub3IgcmVsZWFzZSAoY29ubi0+ ZXJyb3JNZXNzYWdlLCBmb3IgaW5zdGFuY2UsIGNhbgotY2hhbmdlIG9mZnNldHMgZGVwZW5kaW5n IG9uIGNvbmZpZ3VyZS10aW1lIG9wdGlvbnMpLiBUaGVyZWZvcmUgdGhlIG5lY2Vzc2FyeQotYWNj ZXNzb3JzIChuYW1lZCBjb25uXyopIGFuZCBtdXRhdG9ycyAoc2V0X2Nvbm5fKikgYXJlIGluamVj dGVkIGhlcmUuIFdpdGggdGhpcwotYXBwcm9hY2gsIHdlIGNhbiBzYWZlbHkgc2VhcmNoIHRoZSBz dGFuZGFyZCBkbG9wZW4oKSBwYXRocyAoZS5nLiBSUEFUSCwKLUxEX0xJQlJBUllfUEFUSCwgdGhl IFNPIGNhY2hlKSBmb3IgYW4gaW1wbGVtZW50YXRpb24gbW9kdWxlIHRvIHVzZSwgZXZlbiBpZiB0 aGF0Ci1tb2R1bGUgd2Fzbid0IGNvbXBpbGVkIGF0IHRoZSBzYW1lIHRpbWUgYXMgbGlicHEgLS0g d2hpY2ggYmVjb21lcyBlc3BlY2lhbGx5Ci1pbXBvcnRhbnQgZHVyaW5nICJsaXZlIHVwZ3JhZGUi IHNpdHVhdGlvbnMgd2hlcmUgYSBydW5uaW5nIGxpYnBxIGFwcGxpY2F0aW9uIGhhcwotdGhlIGxp YnBxLW9hdXRoIG1vZHVsZSB1cGRhdGVkIG91dCBmcm9tIHVuZGVyIGl0IGJlZm9yZSBpdCdzIGZp cnN0IGxvYWRlZCBmcm9tCi1kaXNrLgorQXMgb2YgdjE5LCB0aGlzIG1vZHVsZSBBQkkgaXMgcHVi bGljIGFuZCBjYW5ub3QgY2hhbmdlIGluY29tcGF0aWJseSB3aXRob3V0IGFsc28KK2NoYW5naW5n IHRoZSBlbnRyeSBwb2ludHMuIEJvdGggbGlicHEgYW5kIGxpYnBxLW9hdXRoIG11c3QgZ3JhY2Vm dWxseSBoYW5kbGUKK3NpdHVhdGlvbnMgd2hlcmUgdGhlIG90aGVyIGxpYnJhcnkgaXMgb2YgYSBk aWZmZXJlbnQgcmVsZWFzZSB2ZXJzaW9uLCBwYXN0IG9yCitmdXR1cmUsIHNpbmNlIHVwZ3JhZGVz IHRvIHRoZSBsaWJyYXJpZXMgbWF5IGhhcHBlbiBpbiBlaXRoZXIgb3JkZXIuCisKKyhEb24ndCBh c3N1bWUgdGhhdCBwYWNrYWdlIHZlcnNpb24gZGVwZW5kZW5jaWVzIGZyb20gbGlicHEtb2F1dGgg dG8gbGlicHEgd2lsbAorc2ltcGxpZnkgdGhlIHNpdHVhdGlvbiEgU2luY2UgbGlicHEgZGVsYXkt bG9hZHMgbGlicHEtb2F1dGgsIHdlIHN0aWxsIGhhdmUgdG8KK2hhbmRsZSBjYXNlcyB3aGVyZSBh IGxvbmctcnVubmluZyBjbGllbnQgYXBwbGljYXRpb24gaGFzIGEgbGlicHEgdGhhdCdzIG9sZGVy Cit0aGFuIGEgbmV3bHkgdXBncmFkZWQgcGx1Z2luLikKKworVGhlIG1vZHVsZSBleHBvcnRzIHRo ZSBmb2xsb3dpbmcgc3ltYm9sOgorCistIGludCBwZ19zdGFydF9vYXV0aGJlYXJlcihQR2Nvbm4g KmNvbm4sIFBHb2F1dGhCZWFyZXJSZXF1ZXN0VjIgKnJlcXVlc3QpOworCitUaGUgbW9kdWxlIHRo ZW4gYmVoYXZlcyBhcyBpZiBpdCBoYWQgcmVjZWl2ZWQgYSBQUUFVVEhEQVRBX09BVVRIX0JFQVJF Ul9UT0tFTl9WMgorcmVxdWVzdCB2aWEgdGhlIFBRYXV0aERhdGFIb29rIEFQSSwgYW5kIGl0IGVp dGhlciBmaWxscyBpbiBhbiBleGlzdGluZyB0b2tlbiBvcgorcG9wdWxhdGVzIHRoZSBuZWNlc3Nh cnkgY2FsbGJhY2tzIGZvciBhIHRva2VuIHRvIGJlIG9idGFpbmVkIGFzeW5jaHJvbm91c2x5Lgor KFNlZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgUEdvYXV0aEJlYXJlclJlcXVlc3QuKSBUaGUgZnVu Y3Rpb24gcmV0dXJucyB6ZXJvIG9uCitzdWNjZXNzIGFuZCBub256ZXJvIG9uIGZhaWx1cmUuCisK K0FkZGl0aW9uYWxseSwgbGlicHEtb2F1dGggcmVsaWVzIG9uIGxpYnBxJ3MgbGlicHFfZ2V0dGV4 dCgpLCB3aGljaCBtdXN0IGJlCitpbmplY3RlZCBieSBsaWJwcSB1c2luZyB0aGlzIGluaXRpYWxp emF0aW9uIGZ1bmN0aW9uIGJlZm9yZSB0aGUgZmxvdyBpcyBydW46CisKKy0gdm9pZCBsaWJwcV9v YXV0aF9pbml0KGxpYnBxX2dldHRleHRfZnVuYyBnZXR0ZXh0X2ltcGwpOwogCiA9IFN0YXRpYyBC dWlsZCA9CiAKIFRoZSBzdGF0aWMgbGlicmFyeSBsaWJwcS5hIGRvZXMgbm90IHBlcmZvcm0gYW55 IGR5bmFtaWMgbG9hZGluZy4gSWYgdGhlIGJ1aWx0aW4KLWZsb3cgaXMgZW5hYmxlZCwgdGhlIGFw cGxpY2F0aW9uIGlzIGV4cGVjdGVkIHRvIGxpbmsgYWdhaW5zdCBsaWJwcS1vYXV0aC5hCi1kaXJl Y3RseSB0byBwcm92aWRlIHRoZSBuZWNlc3Nhcnkgc3ltYm9scy4gKGxpYnBxLmEgYW5kIGxpYnBx LW9hdXRoLmEgbXVzdCBiZQotcGFydCBvZiB0aGUgc2FtZSBidWlsZC4gVW5saWtlIHRoZSBkeW5h bWljIG1vZHVsZSwgdGhlcmUgYXJlIG5vIHRyYW5zbGF0aW9uCi1zaGltcyBwcm92aWRlZC4pCitm bG93IGlzIGVuYWJsZWQsIHRoZSBhcHBsaWNhdGlvbiBpcyBleHBlY3RlZCB0byBsaW5rIGFnYWlu c3QgbGlicHEtb2F1dGguYSB0bworcHJvdmlkZSB0aGUgbmVjZXNzYXJ5IHN5bWJvbCwgb3IgZWxz ZSBpbXBsZW1lbnQgcGdfc3RhcnRfb2F1dGhiZWFyZXIoKSBpdHNlbGYuCmRpZmYgLS1naXQgYS9z cmMvaW50ZXJmYWNlcy9saWJwcS1vYXV0aC9leHBvcnRzLnR4dCBiL3NyYy9pbnRlcmZhY2VzL2xp YnBxLW9hdXRoL2V4cG9ydHMudHh0CmluZGV4IDY4OTFhODNkYmY5Li43YmMxMmI4NjBkNyAxMDA2 NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvbGlicHEtb2F1dGgvZXhwb3J0cy50eHQKKysrIGIvc3Jj L2ludGVyZmFjZXMvbGlicHEtb2F1dGgvZXhwb3J0cy50eHQKQEAgLTEsNCArMSwzIEBACiAjIHNy Yy9pbnRlcmZhY2VzL2xpYnBxLW9hdXRoL2V4cG9ydHMudHh0CiBsaWJwcV9vYXV0aF9pbml0ICAg ICAgICAgIDEKLXBnX2ZlX3J1bl9vYXV0aF9mbG93ICAgICAgMgotcGdfZmVfY2xlYW51cF9vYXV0 aF9mbG93ICAzCitwZ19zdGFydF9vYXV0aGJlYXJlciAgICAgIDIKZGlmZiAtLWdpdCBhL3NyYy9p bnRlcmZhY2VzL2xpYnBxLW9hdXRoL21lc29uLmJ1aWxkIGIvc3JjL2ludGVyZmFjZXMvbGlicHEt b2F1dGgvbWVzb24uYnVpbGQKaW5kZXggMjdhY2EyYmMzMjQuLjY4NWEwMGFjZjdhIDEwMDY0NAot LS0gYS9zcmMvaW50ZXJmYWNlcy9saWJwcS1vYXV0aC9tZXNvbi5idWlsZAorKysgYi9zcmMvaW50 ZXJmYWNlcy9saWJwcS1vYXV0aC9tZXNvbi5idWlsZApAQCAtMzgsMTAgKzM4LDggQEAgZW5kaWYK IAogIyBUaGlzIGlzIGFuIGludGVybmFsIG1vZHVsZTsgd2UgZG9uJ3Qgd2FudCBhbiBTT05BTUUg YW5kIHRoZXJlZm9yZSBkbyBub3Qgc2V0CiAjIFNPX01BSk9SX1ZFUlNJT04uCi1saWJwcV9vYXV0 aF9uYW1lID0gJ2xpYnBxLW9hdXRoLUAwQCcuZm9ybWF0KHBnX3ZlcnNpb25fbWFqb3IpCi0KIGlm IGJ1aWxkX3NoYXJlZF9saWIKLWxpYnBxX29hdXRoX3NvID0gc2hhcmVkX21vZHVsZShsaWJwcV9v YXV0aF9uYW1lLAorbGlicHFfb2F1dGhfc28gPSBzaGFyZWRfbW9kdWxlKCdsaWJwcS1vYXV0aCcs CiAgIGxpYnBxX29hdXRoX3NvdXJjZXMgKyBsaWJwcV9vYXV0aF9zb19zb3VyY2VzLAogICBpbmNs dWRlX2RpcmVjdG9yaWVzOiBbbGlicHFfb2F1dGhfaW5jLCBwb3N0Z3Jlc19pbmNdLAogICBjX2Fy Z3M6IGxpYnBxX29hdXRoX3NvX2NfYXJncywKZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2xp YnBxLW9hdXRoL01ha2VmaWxlIGIvc3JjL2ludGVyZmFjZXMvbGlicHEtb2F1dGgvTWFrZWZpbGUK aW5kZXggYTVmMmQ2NWZjYWQuLmU5MDQ4MjU2NmIxIDEwMDY0NAotLS0gYS9zcmMvaW50ZXJmYWNl cy9saWJwcS1vYXV0aC9NYWtlZmlsZQorKysgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS1vYXV0aC9N YWtlZmlsZQpAQCAtMTYsMTMgKzE2LDEwIEBAIGluY2x1ZGUgJCh0b3BfYnVpbGRkaXIpL3NyYy9N YWtlZmlsZS5nbG9iYWwKIFBHRklMRURFU0MgPSAibGlicHEtb2F1dGggLSBkZXZpY2UgYXV0aG9y aXphdGlvbiBPQXV0aCBzdXBwb3J0IgogCiAjIFRoaXMgaXMgYW4gaW50ZXJuYWwgbW9kdWxlOyB3 ZSBkb24ndCB3YW50IGFuIFNPTkFNRSBhbmQgdGhlcmVmb3JlIGRvIG5vdCBzZXQKLSMgU09fTUFK T1JfVkVSU0lPTi4KLU5BTUUgPSBwcS1vYXV0aC0kKE1BSk9SVkVSU0lPTikKLQotIyBGb3JjZSB0 aGUgbmFtZSAibGlicHEtb2F1dGgiIGZvciBib3RoIHRoZSBzdGF0aWMgYW5kIHNoYXJlZCBsaWJy YXJpZXMuIFRoZQotIyBzdGF0aWNsaWIgZG9lc24ndCBuZWVkIHZlcnNpb24gaW5mb3JtYXRpb24g aW4gaXRzIG5hbWUuCisjIFNPX01BSk9SX1ZFUlNJT04uIFRoaXMgcmVxdWlyZXMgYW4gZXhwbGlj aXQgb3ZlcnJpZGUgZm9yIHRoZSBzaGFyZWQgbGlicmFyeQorIyBuYW1lLgorTkFNRSA9IHBxLW9h dXRoCiBvdmVycmlkZSBzaGxpYiA6PSBsaWIkKE5BTUUpJChETFNVRkZJWCkKLW92ZXJyaWRlIHN0 bGliIDo9IGxpYnBxLW9hdXRoLmEKIAogb3ZlcnJpZGUgQ1BQRkxBR1MgOj0gLUkkKGxpYnBxX3Ny Y2RpcikgLUkkKHRvcF9idWlsZGRpcikvc3JjL3BvcnQgJChDUFBGTEFHUykgJChMSUJDVVJMX0NQ UEZMQUdTKQogb3ZlcnJpZGUgQ0ZMQUdTICs9ICQoUFRIUkVBRF9DRkxBR1MpCmRpZmYgLS1naXQg YS9zcmMvaW50ZXJmYWNlcy9saWJwcS1vYXV0aC9vYXV0aC1jdXJsLmggYi9zcmMvaW50ZXJmYWNl cy9saWJwcS1vYXV0aC9vYXV0aC1jdXJsLmgKaW5kZXggNjg2ZTdiNGRmM2YuLjFkNGRkNzY2MjE3 IDEwMDY0NAotLS0gYS9zcmMvaW50ZXJmYWNlcy9saWJwcS1vYXV0aC9vYXV0aC1jdXJsLmgKKysr IGIvc3JjL2ludGVyZmFjZXMvbGlicHEtb2F1dGgvb2F1dGgtY3VybC5oCkBAIC0xNyw4ICsxNyw4 IEBACiAKICNpbmNsdWRlICJsaWJwcS1mZS5oIgogCi0vKiBFeHBvcnRlZCBhc3luYy1hdXRoIGNh bGxiYWNrcy4gKi8KLWV4dGVybiBQR0RMTEVYUE9SVCBQb3N0Z3Jlc1BvbGxpbmdTdGF0dXNUeXBl IHBnX2ZlX3J1bl9vYXV0aF9mbG93KFBHY29ubiAqY29ubik7Ci1leHRlcm4gUEdETExFWFBPUlQg dm9pZCBwZ19mZV9jbGVhbnVwX29hdXRoX2Zsb3coUEdjb25uICpjb25uKTsKKy8qIEV4cG9ydGVk IGZsb3cgY2FsbGJhY2suICovCitleHRlcm4gUEdETExFWFBPUlQgaW50IHBnX3N0YXJ0X29hdXRo YmVhcmVyKFBHY29ubiAqY29ubiwKKwkJCQkJCQkJCQkJUEdvYXV0aEJlYXJlclJlcXVlc3RWMiAq cmVxdWVzdCk7CiAKICNlbmRpZgkJCQkJCQkvKiBPQVVUSF9DVVJMX0ggKi8KZGlmZiAtLWdpdCBh L3NyYy9pbnRlcmZhY2VzL2xpYnBxLW9hdXRoL29hdXRoLXV0aWxzLmggYi9zcmMvaW50ZXJmYWNl cy9saWJwcS1vYXV0aC9vYXV0aC11dGlscy5oCmluZGV4IDlmNGQ1YjY5MmQyLi4yOTNlOTkzNjk4 OSAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvbGlicHEtb2F1dGgvb2F1dGgtdXRpbHMuaAor KysgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS1vYXV0aC9vYXV0aC11dGlscy5oCkBAIC0xNSw1MyAr MTUsMTMgQEAKICNpZm5kZWYgT0FVVEhfVVRJTFNfSAogI2RlZmluZSBPQVVUSF9VVElMU19ICiAK LSNpbmNsdWRlICJmZS1hdXRoLW9hdXRoLmgiCiAjaW5jbHVkZSAibGlicHEtZmUuaCIKICNpbmNs dWRlICJwcWV4cGJ1ZmZlci5oIgogCi0vKgotICogQSBiYW5rIG9mIGNhbGxiYWNrcyB0byBzYWZl bHkgYWNjZXNzIG1lbWJlcnMgb2YgUEdjb25uLCB3aGljaCBhcmUgYWxsIHBhc3NlZAotICogdG8g bGlicHFfb2F1dGhfaW5pdCgpIGJ5IGxpYnBxLgotICoKLSAqIEtlZXAgdGhlc2UgYWxpZ25lZCB3 aXRoIHRoZSBkZWZpbml0aW9ucyBpbiBmZS1hdXRoLW9hdXRoLmMgYXMgd2VsbCBhcyB0aGUKLSAq IHN0YXRpYyBkZWNsYXJhdGlvbnMgaW4gb2F1dGgtY3VybC5jLgotICovCi0jZGVmaW5lIERFQ0xB UkVfR0VUVEVSKFRZUEUsIE1FTUJFUikgXAotCXR5cGVkZWYgVFlQRSAoKmNvbm5fICMjIE1FTUJF UiAjIyBfZnVuYykgKFBHY29ubiAqY29ubik7IFwKLQlleHRlcm4gY29ubl8gIyMgTUVNQkVSICMj IF9mdW5jIGNvbm5fICMjIE1FTUJFUjsKLQotI2RlZmluZSBERUNMQVJFX1NFVFRFUihUWVBFLCBN RU1CRVIpIFwKLQl0eXBlZGVmIHZvaWQgKCpzZXRfY29ubl8gIyMgTUVNQkVSICMjIF9mdW5jKSAo UEdjb25uICpjb25uLCBUWVBFIHZhbCk7IFwKLQlleHRlcm4gc2V0X2Nvbm5fICMjIE1FTUJFUiAj IyBfZnVuYyBzZXRfY29ubl8gIyMgTUVNQkVSOwotCi1ERUNMQVJFX0dFVFRFUihQUUV4cEJ1ZmZl ciwgZXJyb3JNZXNzYWdlKTsKLURFQ0xBUkVfR0VUVEVSKGNoYXIgKiwgb2F1dGhfY2xpZW50X2lk KTsKLURFQ0xBUkVfR0VUVEVSKGNoYXIgKiwgb2F1dGhfY2xpZW50X3NlY3JldCk7Ci1ERUNMQVJF X0dFVFRFUihjaGFyICosIG9hdXRoX2Rpc2NvdmVyeV91cmkpOwotREVDTEFSRV9HRVRURVIoY2hh ciAqLCBvYXV0aF9pc3N1ZXJfaWQpOwotREVDTEFSRV9HRVRURVIoY2hhciAqLCBvYXV0aF9zY29w ZSk7Ci1ERUNMQVJFX0dFVFRFUihmZV9vYXV0aF9zdGF0ZSAqLCBzYXNsX3N0YXRlKTsKLQotREVD TEFSRV9TRVRURVIocGdzb2NrZXQsIGFsdHNvY2spOwotREVDTEFSRV9TRVRURVIoY2hhciAqLCBv YXV0aF90b2tlbik7Ci0KLSN1bmRlZiBERUNMQVJFX0dFVFRFUgotI3VuZGVmIERFQ0xBUkVfU0VU VEVSCi0KIHR5cGVkZWYgY2hhciAqKCpsaWJwcV9nZXR0ZXh0X2Z1bmMpIChjb25zdCBjaGFyICpt c2dpZCk7CiAKIC8qIEluaXRpYWxpemVzIGxpYnBxLW9hdXRoLiAqLwotZXh0ZXJuIFBHRExMRVhQ T1JUIHZvaWQgbGlicHFfb2F1dGhfaW5pdChwZ3RocmVhZGxvY2tfdCB0aHJlYWRsb2NrLAotCQkJ CQkJCQkJCSBsaWJwcV9nZXR0ZXh0X2Z1bmMgZ2V0dGV4dF9pbXBsLAotCQkJCQkJCQkJCSBjb25u X2Vycm9yTWVzc2FnZV9mdW5jIGVycm1zZ19pbXBsLAotCQkJCQkJCQkJCSBjb25uX29hdXRoX2Ns aWVudF9pZF9mdW5jIGNsaWVudGlkX2ltcGwsCi0JCQkJCQkJCQkJIGNvbm5fb2F1dGhfY2xpZW50 X3NlY3JldF9mdW5jIGNsaWVudHNlY3JldF9pbXBsLAotCQkJCQkJCQkJCSBjb25uX29hdXRoX2Rp c2NvdmVyeV91cmlfZnVuYyBkaXNjb3Zlcnl1cmlfaW1wbCwKLQkJCQkJCQkJCQkgY29ubl9vYXV0 aF9pc3N1ZXJfaWRfZnVuYyBpc3N1ZXJpZF9pbXBsLAotCQkJCQkJCQkJCSBjb25uX29hdXRoX3Nj b3BlX2Z1bmMgc2NvcGVfaW1wbCwKLQkJCQkJCQkJCQkgY29ubl9zYXNsX3N0YXRlX2Z1bmMgc2Fz bHN0YXRlX2ltcGwsCi0JCQkJCQkJCQkJIHNldF9jb25uX2FsdHNvY2tfZnVuYyBzZXRhbHRzb2Nr X2ltcGwsCi0JCQkJCQkJCQkJIHNldF9jb25uX29hdXRoX3Rva2VuX2Z1bmMgc2V0dG9rZW5faW1w bCk7CitleHRlcm4gUEdETExFWFBPUlQgdm9pZCBsaWJwcV9vYXV0aF9pbml0KGxpYnBxX2dldHRl eHRfZnVuYyBnZXR0ZXh0X2ltcGwpOwogCiAvKgogICogRHVwbGljYXRlZCBBUElzLCBjb3BpZWQg ZnJvbSBsaWJwcSAocHJpbWFyaWx5IGxpYnBxLWludC5oLCB3aGljaCB3ZSBjYW5ub3QKQEAgLTc1 LDcgKzM1LDYgQEAgdHlwZWRlZiBlbnVtCiAJUEdfQk9PTF9OTwkJCQkJLyogTm8gKGZhbHNlKSAq LwogfSBQR1Rlcm5hcnlCb29sOwogCi1leHRlcm4gdm9pZCBsaWJwcV9hcHBlbmRfY29ubl9lcnJv cihQR2Nvbm4gKmNvbm4sIGNvbnN0IGNoYXIgKmZtdCwuLi4pIHBnX2F0dHJpYnV0ZV9wcmludGYo MiwgMyk7CiBleHRlcm4gYm9vbCBvYXV0aF91bnNhZmVfZGVidWdnaW5nX2VuYWJsZWQodm9pZCk7 CiBleHRlcm4gaW50CXBxX2Jsb2NrX3NpZ3BpcGUoc2lnc2V0X3QgKm9zaWdzZXQsIGJvb2wgKnNp Z3BpcGVfcGVuZGluZyk7CiBleHRlcm4gdm9pZCBwcV9yZXNldF9zaWdwaXBlKHNpZ3NldF90ICpv c2lnc2V0LCBib29sIHNpZ3BpcGVfcGVuZGluZywgYm9vbCBnb3RfZXBpcGUpOwpkaWZmIC0tZ2l0 IGEvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtYXV0aC1vYXV0aC5oIGIvc3JjL2ludGVyZmFjZXMv bGlicHEvZmUtYXV0aC1vYXV0aC5oCmluZGV4IDVjOGEyNGI3NmZhLi41MTEyODQ2MTRmNyAxMDA2 NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtYXV0aC1vYXV0aC5oCisrKyBiL3NyYy9p bnRlcmZhY2VzL2xpYnBxL2ZlLWF1dGgtb2F1dGguaApAQCAtMjcsMTEgKzI3LDYgQEAgZW51bSBm ZV9vYXV0aF9zdGVwCiAJRkVfT0FVVEhfU0VSVkVSX0VSUk9SLAogfTsKIAotLyoKLSAqIFRoaXMg c3RydWN0IGlzIGV4cG9ydGVkIHRvIHRoZSBsaWJwcS1vYXV0aCBtb2R1bGUuIElmIGNoYW5nZXMg YXJlIG5lZWRlZAotICogZHVyaW5nIGJhY2twb3J0cyB0byBzdGFibGUgYnJhbmNoZXMsIHBsZWFz ZSBrZWVwIEFCSSBjb21wYXRpYmlsaXR5IChubwotICogY2hhbmdlcyB0byBleGlzdGluZyBtZW1i ZXJzLCBhZGQgbmV3IG1lbWJlcnMgYXQgdGhlIGVuZCwgZXRjLikuCi0gKi8KIHR5cGVkZWYgc3Ry dWN0CiB7CiAJZW51bSBmZV9vYXV0aF9zdGVwIHN0ZXA7CkBAIC0zOSwxMiArMzQsMTIgQEAgdHlw ZWRlZiBzdHJ1Y3QKIAlQR2Nvbm4JICAgKmNvbm47CiAJdm9pZAkgICAqYXN5bmNfY3R4OwogCisJ Ym9vbAkJYnVpbHRpbjsKIAl2b2lkCSAgICpidWlsdGluX2Zsb3c7CiB9IGZlX29hdXRoX3N0YXRl OwogCiBleHRlcm4gdm9pZCBwcUNsZWFyT0F1dGhUb2tlbihQR2Nvbm4gKmNvbm4pOwogZXh0ZXJu IGJvb2wgb2F1dGhfdW5zYWZlX2RlYnVnZ2luZ19lbmFibGVkKHZvaWQpOwotZXh0ZXJuIGJvb2wg dXNlX2J1aWx0aW5fZmxvdyhQR2Nvbm4gKmNvbm4sIGZlX29hdXRoX3N0YXRlICpzdGF0ZSk7CiAK IC8qIE1lY2hhbmlzbXMgaW4gZmUtYXV0aC1vYXV0aC5jICovCiBleHRlcm4gY29uc3QgcGdfZmVf c2FzbF9tZWNoIHBnX29hdXRoX21lY2g7CmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9saWJw cS1vYXV0aC9vYXV0aC1jdXJsLmMgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS1vYXV0aC9vYXV0aC1j dXJsLmMKaW5kZXggMmMxNDdmOThkMGQuLjA1MmVjZDMyZGEyIDEwMDY0NAotLS0gYS9zcmMvaW50 ZXJmYWNlcy9saWJwcS1vYXV0aC9vYXV0aC1jdXJsLmMKKysrIGIvc3JjL2ludGVyZmFjZXMvbGli cHEtb2F1dGgvb2F1dGgtY3VybC5jCkBAIC0yOSw3ICsyOSw2IEBACiAjZW5kaWYKIAogI2luY2x1 ZGUgImNvbW1vbi9qc29uYXBpLmgiCi0jaW5jbHVkZSAiZmUtYXV0aC1vYXV0aC5oIgogI2luY2x1 ZGUgIm1iL3BnX3djaGFyLmgiCiAjaW5jbHVkZSAib2F1dGgtY3VybC5oIgogCkBAIC00NCwyMyAr NDMsMTAgQEAKIAogI2Vsc2UJCQkJCQkJLyogIVVTRV9EWU5BTUlDX09BVVRIICovCiAKLS8qCi0g KiBTdGF0aWMgYnVpbGRzIG1heSByZWx5IG9uIFBHY29ubiBvZmZzZXRzIGRpcmVjdGx5LiBLZWVw IHRoZXNlIGFsaWduZWQgd2l0aAotICogdGhlIGJhbmsgb2YgY2FsbGJhY2tzIGluIG9hdXRoLXV0 aWxzLmguCi0gKi8KKy8qIFN0YXRpYyBidWlsZHMgbWF5IG1ha2UgdXNlIG9mIGxpYnBxIGludGVy bmFscyBkaXJlY3RseS4gKi8KKyNpbmNsdWRlICJmZS1hdXRoLW9hdXRoLmgiCiAjaW5jbHVkZSAi bGlicHEtaW50LmgiCiAKLSNkZWZpbmUgY29ubl9lcnJvck1lc3NhZ2UoQ09OTikgKCZDT05OLT5l cnJvck1lc3NhZ2UpCi0jZGVmaW5lIGNvbm5fb2F1dGhfY2xpZW50X2lkKENPTk4pIChDT05OLT5v YXV0aF9jbGllbnRfaWQpCi0jZGVmaW5lIGNvbm5fb2F1dGhfY2xpZW50X3NlY3JldChDT05OKSAo Q09OTi0+b2F1dGhfY2xpZW50X3NlY3JldCkKLSNkZWZpbmUgY29ubl9vYXV0aF9kaXNjb3Zlcnlf dXJpKENPTk4pIChDT05OLT5vYXV0aF9kaXNjb3ZlcnlfdXJpKQotI2RlZmluZSBjb25uX29hdXRo X2lzc3Vlcl9pZChDT05OKSAoQ09OTi0+b2F1dGhfaXNzdWVyX2lkKQotI2RlZmluZSBjb25uX29h dXRoX3Njb3BlKENPTk4pIChDT05OLT5vYXV0aF9zY29wZSkKLSNkZWZpbmUgY29ubl9zYXNsX3N0 YXRlKENPTk4pIChDT05OLT5zYXNsX3N0YXRlKQotCi0jZGVmaW5lIHNldF9jb25uX2FsdHNvY2so Q09OTiwgVkFMKSBkbyB7IENPTk4tPmFsdHNvY2sgPSBWQUw7IH0gd2hpbGUgKDApCi0jZGVmaW5l IHNldF9jb25uX29hdXRoX3Rva2VuKENPTk4sIFZBTCkgZG8geyBDT05OLT5vYXV0aF90b2tlbiA9 IFZBTDsgfSB3aGlsZSAoMCkKLQogI2VuZGlmCQkJCQkJCS8qIFVTRV9EWU5BTUlDX09BVVRIICov CiAKIC8qIE9uZSBmaW5hbCBndWFyZHJhaWwgYWdhaW5zdCBhY2NpZGVudGFsIGluY2x1c2lvbi4u LiAqLwpAQCAtMjI3LDYgKzIxMywxNSBAQCBlbnVtIE9BdXRoU3RlcAogICovCiBzdHJ1Y3QgYXN5 bmNfY3R4CiB7CisJLyogcmVsZXZhbnQgY29ubmVjdGlvbiBvcHRpb25zIGNhY2hlZCBmcm9tIHRo ZSBQR2Nvbm4gKi8KKwljaGFyCSAgICpjbGllbnRfaWQ7CQkvKiBvYXV0aF9jbGllbnRfaWQgKi8K KwljaGFyCSAgICpjbGllbnRfc2VjcmV0OwkvKiBvYXV0aF9jbGllbnRfc2VjcmV0IChtYXkgYmUg TlVMTCkgKi8KKworCS8qIG9wdGlvbnMgY2FjaGVkIGZyb20gdGhlIFBHb2F1dGhCZWFyZXJSZXF1 ZXN0ICh3ZSBkb24ndCBvd24gdGhlc2UpICovCisJY29uc3QgY2hhciAqZGlzY292ZXJ5X3VyaTsK Kwljb25zdCBjaGFyICppc3N1ZXJfaWQ7CisJY29uc3QgY2hhciAqc2NvcGU7CisKIAllbnVtIE9B dXRoU3RlcCBzdGVwOwkJLyogd2hlcmUgYXJlIHdlIGluIHRoZSBmbG93PyAqLwogCiAJaW50CQkJ dGltZXJmZDsJCS8qIGRlc2NyaXB0b3IgZm9yIHNpZ25hbGluZyBhc3luYyB0aW1lb3V0cyAqLwpA QCAtMzM5LDI5ICszMzQsNzIgQEAgZnJlZV9hc3luY19jdHgoc3RydWN0IGFzeW5jX2N0eCAqYWN0 eCkKIAlpZiAoYWN0eC0+dGltZXJmZCA+PSAwKQogCQljbG9zZShhY3R4LT50aW1lcmZkKTsKIAor CWZyZWUoYWN0eC0+Y2xpZW50X2lkKTsKKwlmcmVlKGFjdHgtPmNsaWVudF9zZWNyZXQpOworCiAJ ZnJlZShhY3R4KTsKIH0KIAogLyoKLSAqIFJlbGVhc2UgcmVzb3VyY2VzIHVzZWQgZm9yIHRoZSBh c3luY2hyb25vdXMgZXhjaGFuZ2UgYW5kIGRpc2Nvbm5lY3QgdGhlCi0gKiBhbHRzb2NrLgotICoK LSAqIFRoaXMgaXMgY2FsbGVkIGVpdGhlciBhdCB0aGUgZW5kIG9mIGEgc3VjY2Vzc2Z1bCBhdXRo ZW50aWNhdGlvbiwgb3IgZHVyaW5nCi0gKiBwcURyb3BDb25uZWN0aW9uKCksIHNvIHdlIHdvbid0 IGxlYWsgcmVzb3VyY2VzIGV2ZW4gaWYgUFFjb25uZWN0UG9sbCgpIG5ldmVyCi0gKiBjYWxscyB1 cyBiYWNrLgorICogUmVsZWFzZSByZXNvdXJjZXMgdXNlZCBmb3IgdGhlIGFzeW5jaHJvbm91cyBl eGNoYW5nZS4KICAqLwotdm9pZAotcGdfZmVfY2xlYW51cF9vYXV0aF9mbG93KFBHY29ubiAqY29u bikKK3N0YXRpYyB2b2lkCitwZ19mZV9jbGVhbnVwX29hdXRoX2Zsb3coUEdjb25uICpjb25uLCBQ R29hdXRoQmVhcmVyUmVxdWVzdCAqcmVxdWVzdCkKIHsKLQlmZV9vYXV0aF9zdGF0ZSAqc3RhdGUg PSBjb25uX3Nhc2xfc3RhdGUoY29ubik7CisJc3RydWN0IGFzeW5jX2N0eCAqYWN0eCA9IHJlcXVl c3QtPnVzZXI7CisKKwkvKiByZXF1ZXN0LT5jbGVhbnVwIGlzIG9ubHkgc2V0IGFmdGVyIGFjdHgg aGFzIGJlZW4gYWxsb2NhdGVkLiAqLworCUFzc2VydChhY3R4KTsKIAotCWlmIChzdGF0ZS0+YXN5 bmNfY3R4KQorCWZyZWVfYXN5bmNfY3R4KGFjdHgpOworCXJlcXVlc3QtPnVzZXIgPSBOVUxMOwor CisJLyogbGlicHEgaGFzIG1hZGUgaXRzIG93biBjb3B5IG9mIHRoZSB0b2tlbjsgY2xlYXIgb3Vy cyBub3cuICovCisJaWYgKHJlcXVlc3QtPnRva2VuKQogCXsKLQkJZnJlZV9hc3luY19jdHgoc3Rh dGUtPmFzeW5jX2N0eCk7Ci0JCXN0YXRlLT5hc3luY19jdHggPSBOVUxMOworCQlleHBsaWNpdF9i emVybyhyZXF1ZXN0LT50b2tlbiwgc3RybGVuKHJlcXVlc3QtPnRva2VuKSk7CisJCWZyZWUocmVx dWVzdC0+dG9rZW4pOworCQlyZXF1ZXN0LT50b2tlbiA9IE5VTEw7CiAJfQorfQogCi0Jc2V0X2Nv bm5fYWx0c29jayhjb25uLCBQR0lOVkFMSURfU09DS0VUKTsKKy8qCisgKiBCdWlsZHMgYW4gZXJy b3IgbWVzc2FnZSBmcm9tIGFjdHggYW5kIHN0b3JlcyBpdCBpbiByZXEtPmVycm9yLiBUaGUgYWxs b2NhdGlvbgorICogaXMgYmFja2VkIGJ5IGFjdHgtPndvcmtfZGF0YSAod2hpY2ggd2lsbCBiZSBy ZXNldCBmaXJzdCkuCisgKi8KK3N0YXRpYyB2b2lkCithcHBlbmRfYWN0eF9lcnJvcihQR29hdXRo QmVhcmVyUmVxdWVzdFYyICpyZXEsIHN0cnVjdCBhc3luY19jdHggKmFjdHgpCit7CisJUFFFeHBC dWZmZXIgZXJyYnVmID0gJmFjdHgtPndvcmtfZGF0YTsKKworCXJlc2V0UFFFeHBCdWZmZXIoZXJy YnVmKTsKKworCS8qCisJICogQXNzZW1ibGUgdGhlIHRocmVlIHBhcnRzIG9mIG91ciBlcnJvcjog Y29udGV4dCwgYm9keSwgYW5kIGRldGFpbC4gU2VlCisJICogYWxzbyB0aGUgZG9jdW1lbnRhdGlv biBmb3Igc3RydWN0IGFzeW5jX2N0eC4KKwkgKi8KKwlpZiAoYWN0eC0+ZXJyY3R4KQorCQlhcHBl bmRQUUV4cEJ1ZmZlcihlcnJidWYsICIlczogIiwgYWN0eC0+ZXJyY3R4KTsKKworCWlmIChQUUV4 cEJ1ZmZlckRhdGFCcm9rZW4oYWN0eC0+ZXJyYnVmKSkKKwkJYXBwZW5kUFFFeHBCdWZmZXJTdHIo ZXJyYnVmLCBsaWJwcV9nZXR0ZXh0KCJvdXQgb2YgbWVtb3J5IikpOworCWVsc2UKKwkJYXBwZW5k UFFFeHBCdWZmZXJTdHIoZXJyYnVmLCBhY3R4LT5lcnJidWYuZGF0YSk7CisKKwlpZiAoYWN0eC0+ Y3VybF9lcnJbMF0pCisJeworCQlhcHBlbmRQUUV4cEJ1ZmZlcihlcnJidWYsICIgKGxpYmN1cmw6 ICVzKSIsIGFjdHgtPmN1cmxfZXJyKTsKKworCQkvKiBTb21ldGltZXMgbGliY3VybCBhZGRzIGEg bmV3bGluZSB0byB0aGUgZXJyb3IgYnVmZmVyLiA6KCAqLworCQlpZiAoZXJyYnVmLT5sZW4gPj0g MiAmJiBlcnJidWYtPmRhdGFbZXJyYnVmLT5sZW4gLSAyXSA9PSAnXG4nKQorCQl7CisJCQllcnJi dWYtPmRhdGFbZXJyYnVmLT5sZW4gLSAyXSA9ICcpJzsKKwkJCWVycmJ1Zi0+ZGF0YVtlcnJidWYt PmxlbiAtIDFdID0gJ1wwJzsKKwkJCWVycmJ1Zi0+bGVuLS07CisJCX0KKwl9CisKKwlyZXEtPmVy cm9yID0gZXJyYnVmLT5kYXRhOwogfQogCiAvKgpAQCAtMjE5Nyw3ICsyMjM1LDcgQEAgc3RhdGlj IGJvb2wKIGNoZWNrX2lzc3VlcihzdHJ1Y3QgYXN5bmNfY3R4ICphY3R4LCBQR2Nvbm4gKmNvbm4p CiB7CiAJY29uc3Qgc3RydWN0IHByb3ZpZGVyICpwcm92aWRlciA9ICZhY3R4LT5wcm92aWRlcjsK LQljb25zdCBjaGFyICpvYXV0aF9pc3N1ZXJfaWQgPSBjb25uX29hdXRoX2lzc3Vlcl9pZChjb25u KTsKKwljb25zdCBjaGFyICpvYXV0aF9pc3N1ZXJfaWQgPSBhY3R4LT5pc3N1ZXJfaWQ7CiAKIAlB c3NlcnQob2F1dGhfaXNzdWVyX2lkKTsJLyogZW5zdXJlZCBieSBzZXR1cF9vYXV0aF9wYXJhbWV0 ZXJzKCkgKi8KIAlBc3NlcnQocHJvdmlkZXItPmlzc3Vlcik7CS8qIGVuc3VyZWQgYnkgcGFyc2Vf cHJvdmlkZXIoKSAqLwpAQCAtMjMwMCw4ICsyMzM4LDggQEAgY2hlY2tfZm9yX2RldmljZV9mbG93 KHN0cnVjdCBhc3luY19jdHggKmFjdHgpCiBzdGF0aWMgYm9vbAogYWRkX2NsaWVudF9pZGVudGlm aWNhdGlvbihzdHJ1Y3QgYXN5bmNfY3R4ICphY3R4LCBQUUV4cEJ1ZmZlciByZXFib2R5LCBQR2Nv bm4gKmNvbm4pCiB7Ci0JY29uc3QgY2hhciAqb2F1dGhfY2xpZW50X2lkID0gY29ubl9vYXV0aF9j bGllbnRfaWQoY29ubik7Ci0JY29uc3QgY2hhciAqb2F1dGhfY2xpZW50X3NlY3JldCA9IGNvbm5f b2F1dGhfY2xpZW50X3NlY3JldChjb25uKTsKKwljb25zdCBjaGFyICpvYXV0aF9jbGllbnRfaWQg PSBhY3R4LT5jbGllbnRfaWQ7CisJY29uc3QgY2hhciAqb2F1dGhfY2xpZW50X3NlY3JldCA9IGFj dHgtPmNsaWVudF9zZWNyZXQ7CiAKIAlib29sCQlzdWNjZXNzID0gZmFsc2U7CiAJY2hhcgkgICAq dXNlcm5hbWUgPSBOVUxMOwpAQCAtMjM4NCwxMSArMjQyMiwxMCBAQCBjbGVhbnVwOgogc3RhdGlj IGJvb2wKIHN0YXJ0X2RldmljZV9hdXRoeihzdHJ1Y3QgYXN5bmNfY3R4ICphY3R4LCBQR2Nvbm4g KmNvbm4pCiB7Ci0JY29uc3QgY2hhciAqb2F1dGhfc2NvcGUgPSBjb25uX29hdXRoX3Njb3BlKGNv bm4pOworCWNvbnN0IGNoYXIgKm9hdXRoX3Njb3BlID0gYWN0eC0+c2NvcGU7CiAJY29uc3QgY2hh ciAqZGV2aWNlX2F1dGh6X3VyaSA9IGFjdHgtPnByb3ZpZGVyLmRldmljZV9hdXRob3JpemF0aW9u X2VuZHBvaW50OwogCVBRRXhwQnVmZmVyIHdvcmtfYnVmZmVyID0gJmFjdHgtPndvcmtfZGF0YTsK IAotCUFzc2VydChjb25uX29hdXRoX2NsaWVudF9pZChjb25uKSk7IC8qIGVuc3VyZWQgYnkgc2V0 dXBfb2F1dGhfcGFyYW1ldGVycygpICovCiAJQXNzZXJ0KGRldmljZV9hdXRoel91cmkpOwkvKiBl bnN1cmVkIGJ5IGNoZWNrX2Zvcl9kZXZpY2VfZmxvdygpICovCiAKIAkvKiBDb25zdHJ1Y3Qgb3Vy IHJlcXVlc3QgYm9keS4gKi8KQEAgLTI0NzYsNyArMjUxMyw2IEBAIHN0YXJ0X3Rva2VuX3JlcXVl c3Qoc3RydWN0IGFzeW5jX2N0eCAqYWN0eCwgUEdjb25uICpjb25uKQogCWNvbnN0IGNoYXIgKmRl dmljZV9jb2RlID0gYWN0eC0+YXV0aHouZGV2aWNlX2NvZGU7CiAJUFFFeHBCdWZmZXIgd29ya19i dWZmZXIgPSAmYWN0eC0+d29ya19kYXRhOwogCi0JQXNzZXJ0KGNvbm5fb2F1dGhfY2xpZW50X2lk KGNvbm4pKTsgLyogZW5zdXJlZCBieSBzZXR1cF9vYXV0aF9wYXJhbWV0ZXJzKCkgKi8KIAlBc3Nl cnQodG9rZW5fdXJpKTsJCQkvKiBlbnN1cmVkIGJ5IHBhcnNlX3Byb3ZpZGVyKCkgKi8KIAlBc3Nl cnQoZGV2aWNlX2NvZGUpOwkJLyogZW5zdXJlZCBieSBwYXJzZV9kZXZpY2VfYXV0aHooKSAqLwog CkBAIC0yNjU1LDcgKzI2OTEsNyBAQCBwcm9tcHRfdXNlcihzdHJ1Y3QgYXN5bmNfY3R4ICphY3R4 LCBQR2Nvbm4gKmNvbm4pCiAgKiBmdW5jdGlvbiB3aWxsIG5vdCB0cnkgdG8gcmVpbml0aWFsaXpl IEN1cmwgb24gc3VjY2Vzc2l2ZSBjYWxscy4KICAqLwogc3RhdGljIGJvb2wKLWluaXRpYWxpemVf Y3VybChQR2Nvbm4gKmNvbm4pCitpbml0aWFsaXplX2N1cmwoUEdvYXV0aEJlYXJlclJlcXVlc3RW MiAqcmVxKQogewogCS8qCiAJICogRG9uJ3QgbGV0IHRoZSBjb21waWxlciBwbGF5IHRyaWNrcyB3 aXRoIHRoaXMgdmFyaWFibGUuIEluIHRoZQpAQCAtMjY4OSw4ICsyNzI1LDcgQEAgaW5pdGlhbGl6 ZV9jdXJsKFBHY29ubiAqY29ubikKIAkJZ290byBkb25lOwogCWVsc2UgaWYgKGluaXRfc3VjY2Vz c2Z1bCA9PSBQR19CT09MX05PKQogCXsKLQkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwK LQkJCQkJCQkJImN1cmxfZ2xvYmFsX2luaXQgcHJldmlvdXNseSBmYWlsZWQgZHVyaW5nIE9BdXRo IHNldHVwIik7CisJCXJlcS0+ZXJyb3IgPSBsaWJwcV9nZXR0ZXh0KCJjdXJsX2dsb2JhbF9pbml0 IHByZXZpb3VzbHkgZmFpbGVkIGR1cmluZyBPQXV0aCBzZXR1cCIpOwogCQlnb3RvIGRvbmU7CiAJ fQogCkBAIC0yNzA4LDggKzI3NDMsNyBAQCBpbml0aWFsaXplX2N1cmwoUEdjb25uICpjb25uKQog CSAqLwogCWlmIChjdXJsX2dsb2JhbF9pbml0KENVUkxfR0xPQkFMX0FMTCAmIH5DVVJMX0dMT0JB TF9XSU4zMikgIT0gQ1VSTEVfT0spCiAJewotCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25u LAotCQkJCQkJCQkiY3VybF9nbG9iYWxfaW5pdCBmYWlsZWQgZHVyaW5nIE9BdXRoIHNldHVwIik7 CisJCXJlcS0+ZXJyb3IgPSBsaWJwcV9nZXR0ZXh0KCJjdXJsX2dsb2JhbF9pbml0IGZhaWxlZCBk dXJpbmcgT0F1dGggc2V0dXAiKTsKIAkJaW5pdF9zdWNjZXNzZnVsID0gUEdfQk9PTF9OTzsKIAkJ Z290byBkb25lOwogCX0KQEAgLTI3MzAsMTEgKzI3NjQsMTEgQEAgaW5pdGlhbGl6ZV9jdXJsKFBH Y29ubiAqY29ubikKIAkJICogSW4gYSBkb3duZ3JhZGUgc2l0dWF0aW9uLCB0aGUgZGFtYWdlIGlz IGFscmVhZHkgZG9uZS4gQ3VybCBnbG9iYWwKIAkJICogc3RhdGUgbWF5IGJlIGNvcnJ1cHRlZC4g QmUgbm9pc3kuCiAJCSAqLwotCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAibGliY3Vy bCBpcyBubyBsb25nZXIgdGhyZWFkLXNhZmVcbiIKLQkJCQkJCQkJIlx0Q3VybCBpbml0aWFsaXph dGlvbiB3YXMgcmVwb3J0ZWQgdGhyZWFkLXNhZmUgd2hlbiBsaWJwcVxuIgotCQkJCQkJCQkiXHR3 YXMgY29tcGlsZWQsIGJ1dCB0aGUgY3VycmVudGx5IGluc3RhbGxlZCB2ZXJzaW9uIG9mXG4iCi0J CQkJCQkJCSJcdGxpYmN1cmwgcmVwb3J0cyB0aGF0IGl0IGlzIG5vdC4gUmVjb21waWxlIGxpYnBx IGFnYWluc3RcbiIKLQkJCQkJCQkJIlx0dGhlIGluc3RhbGxlZCB2ZXJzaW9uIG9mIGxpYmN1cmwu Iik7CisJCXJlcS0+ZXJyb3IgPSBsaWJwcV9nZXR0ZXh0KCJsaWJjdXJsIGlzIG5vIGxvbmdlciB0 aHJlYWQtc2FmZVxuIgorCQkJCQkJCQkgICAiXHRDdXJsIGluaXRpYWxpemF0aW9uIHdhcyByZXBv cnRlZCB0aHJlYWQtc2FmZSB3aGVuIGxpYnBxXG4iCisJCQkJCQkJCSAgICJcdHdhcyBjb21waWxl ZCwgYnV0IHRoZSBjdXJyZW50bHkgaW5zdGFsbGVkIHZlcnNpb24gb2ZcbiIKKwkJCQkJCQkJICAg Ilx0bGliY3VybCByZXBvcnRzIHRoYXQgaXQgaXMgbm90LiBSZWNvbXBpbGUgbGlicHEgYWdhaW5z dFxuIgorCQkJCQkJCQkgICAiXHR0aGUgaW5zdGFsbGVkIHZlcnNpb24gb2YgbGliY3VybC4iKTsK IAkJaW5pdF9zdWNjZXNzZnVsID0gUEdfQk9PTF9OTzsKIAkJZ290byBkb25lOwogCX0KQEAgLTI3 NjQsNTQgKzI3OTgsMTYgQEAgZG9uZToKICAqIHByb3ZpZGVyLgogICovCiBzdGF0aWMgUG9zdGdy ZXNQb2xsaW5nU3RhdHVzVHlwZQotcGdfZmVfcnVuX29hdXRoX2Zsb3dfaW1wbChQR2Nvbm4gKmNv bm4pCitwZ19mZV9ydW5fb2F1dGhfZmxvd19pbXBsKFBHY29ubiAqY29ubiwgUEdvYXV0aEJlYXJl clJlcXVlc3RWMiAqcmVxdWVzdCwKKwkJCQkJCSAgaW50ICphbHRzb2NrKQogewotCWZlX29hdXRo X3N0YXRlICpzdGF0ZSA9IGNvbm5fc2FzbF9zdGF0ZShjb25uKTsKLQlzdHJ1Y3QgYXN5bmNfY3R4 ICphY3R4OworCXN0cnVjdCBhc3luY19jdHggKmFjdHggPSByZXF1ZXN0LT52MS51c2VyOwogCWNo YXIJICAgKm9hdXRoX3Rva2VuID0gTlVMTDsKLQlQUUV4cEJ1ZmZlciBlcnJidWY7Ci0KLQlpZiAo IWluaXRpYWxpemVfY3VybChjb25uKSkKLQkJcmV0dXJuIFBHUkVTX1BPTExJTkdfRkFJTEVEOwot Ci0JaWYgKCFzdGF0ZS0+YXN5bmNfY3R4KQotCXsKLQkJLyoKLQkJICogQ3JlYXRlIG91ciBhc3lu Y2hyb25vdXMgc3RhdGUsIGFuZCBob29rIGl0IGludG8gdGhlIHVwcGVyLWxldmVsCi0JCSAqIE9B dXRoIHN0YXRlIGltbWVkaWF0ZWx5LCBzbyBhbnkgZmFpbHVyZXMgYmVsb3cgd29uJ3QgbGVhayB0 aGUKLQkJICogY29udGV4dCBhbGxvY2F0aW9uLgotCQkgKi8KLQkJYWN0eCA9IGNhbGxvYygxLCBz aXplb2YoKmFjdHgpKTsKLQkJaWYgKCFhY3R4KQotCQl7Ci0JCQlsaWJwcV9hcHBlbmRfY29ubl9l cnJvcihjb25uLCAib3V0IG9mIG1lbW9yeSIpOwotCQkJcmV0dXJuIFBHUkVTX1BPTExJTkdfRkFJ TEVEOwotCQl9Ci0KLQkJYWN0eC0+bXV4ID0gUEdJTlZBTElEX1NPQ0tFVDsKLQkJYWN0eC0+dGlt ZXJmZCA9IC0xOwotCi0JCS8qIFNob3VsZCB3ZSBlbmFibGUgdW5zYWZlIGZlYXR1cmVzPyAqLwot CQlhY3R4LT5kZWJ1Z2dpbmcgPSBvYXV0aF91bnNhZmVfZGVidWdnaW5nX2VuYWJsZWQoKTsKLQot CQlzdGF0ZS0+YXN5bmNfY3R4ID0gYWN0eDsKLQotCQlpbml0UFFFeHBCdWZmZXIoJmFjdHgtPndv cmtfZGF0YSk7Ci0JCWluaXRQUUV4cEJ1ZmZlcigmYWN0eC0+ZXJyYnVmKTsKLQotCQlpZiAoIXNl dHVwX211bHRpcGxleGVyKGFjdHgpKQotCQkJZ290byBlcnJvcl9yZXR1cm47Ci0KLQkJaWYgKCFz ZXR1cF9jdXJsX2hhbmRsZXMoYWN0eCkpCi0JCQlnb3RvIGVycm9yX3JldHVybjsKLQl9Ci0KLQlh Y3R4ID0gc3RhdGUtPmFzeW5jX2N0eDsKIAogCWRvCiAJewogCQkvKiBCeSBkZWZhdWx0LCB0aGUg bXVsdGlwbGV4ZXIgaXMgdGhlIGFsdHNvY2suIFJlYXNzaWduIGFzIGRlc2lyZWQuICovCi0JCXNl dF9jb25uX2FsdHNvY2soY29ubiwgYWN0eC0+bXV4KTsKKwkJKmFsdHNvY2sgPSBhY3R4LT5tdXg7 CiAKIAkJc3dpdGNoIChhY3R4LT5zdGVwKQogCQl7CkBAIC0yODc2LDcgKzI4NzIsNyBAQCBwZ19m ZV9ydW5fb2F1dGhfZmxvd19pbXBsKFBHY29ubiAqY29ubikKIAogCQkJCQlpZiAoIWV4cGlyZWQp CiAJCQkJCXsKLQkJCQkJCXNldF9jb25uX2FsdHNvY2soY29ubiwgYWN0eC0+dGltZXJmZCk7CisJ CQkJCQkqYWx0c29jayA9IGFjdHgtPnRpbWVyZmQ7CiAJCQkJCQlyZXR1cm4gUEdSRVNfUE9MTElO R19SRUFESU5HOwogCQkJCQl9CiAKQEAgLTI4OTMsNyArMjg4OSw3IEBAIHBnX2ZlX3J1bl9vYXV0 aF9mbG93X2ltcGwoUEdjb25uICpjb25uKQogCQl7CiAJCQljYXNlIE9BVVRIX1NURVBfSU5JVDoK IAkJCQlhY3R4LT5lcnJjdHggPSBsaWJwcV9nZXR0ZXh0KCJmYWlsZWQgdG8gZmV0Y2ggT3BlbklE IGRpc2NvdmVyeSBkb2N1bWVudCIpOwotCQkJCWlmICghc3RhcnRfZGlzY292ZXJ5KGFjdHgsIGNv bm5fb2F1dGhfZGlzY292ZXJ5X3VyaShjb25uKSkpCisJCQkJaWYgKCFzdGFydF9kaXNjb3Zlcnko YWN0eCwgYWN0eC0+ZGlzY292ZXJ5X3VyaSkpCiAJCQkJCWdvdG8gZXJyb3JfcmV0dXJuOwogCiAJ CQkJYWN0eC0+c3RlcCA9IE9BVVRIX1NURVBfRElTQ09WRVJZOwpAQCAtMjkzMywxMCArMjkyOSwx MCBAQCBwZ19mZV9ydW5fb2F1dGhfZmxvd19pbXBsKFBHY29ubiAqY29ubikKIAkJCQkJZ290byBl cnJvcl9yZXR1cm47CiAKIAkJCQkvKgotCQkJCSAqIEhvb2sgYW55IG9hdXRoX3Rva2VuIGludG8g dGhlIFBHY29ubiBpbW1lZGlhdGVseSBzbyB0aGF0Ci0JCQkJICogdGhlIGFsbG9jYXRpb24gaXNu J3QgbG9zdCBpbiBjYXNlIG9mIGFuIGVycm9yLgorCQkJCSAqIEhvb2sgYW55IG9hdXRoX3Rva2Vu IGludG8gdGhlIHJlcXVlc3Qgc3RydWN0IGltbWVkaWF0ZWx5IHNvCisJCQkJICogdGhhdCB0aGUg YWxsb2NhdGlvbiBpc24ndCBsb3N0IGluIGNhc2Ugb2YgYW4gZXJyb3IuCiAJCQkJICovCi0JCQkJ c2V0X2Nvbm5fb2F1dGhfdG9rZW4oY29ubiwgb2F1dGhfdG9rZW4pOworCQkJCXJlcXVlc3QtPnYx LnRva2VuID0gb2F1dGhfdG9rZW47CiAKIAkJCQlpZiAoIWFjdHgtPnVzZXJfcHJvbXB0ZWQpCiAJ CQkJewpAQCAtMjk2NSw3ICsyOTYxLDcgQEAgcGdfZmVfcnVuX29hdXRoX2Zsb3dfaW1wbChQR2Nv bm4gKmNvbm4pCiAJCQkJICogdGhlIGNsaWVudCB3YWl0IGRpcmVjdGx5IG9uIHRoZSB0aW1lcmZk IHJhdGhlciB0aGFuIHRoZQogCQkJCSAqIG11bHRpcGxleGVyLgogCQkJCSAqLwotCQkJCXNldF9j b25uX2FsdHNvY2soY29ubiwgYWN0eC0+dGltZXJmZCk7CisJCQkJKmFsdHNvY2sgPSBhY3R4LT50 aW1lcmZkOwogCiAJCQkJYWN0eC0+c3RlcCA9IE9BVVRIX1NURVBfV0FJVF9JTlRFUlZBTDsKIAkJ CQlhY3R4LT5ydW5uaW5nID0gMTsKQEAgLTI5OTEsNDggKzI5ODcsMjEgQEAgcGdfZmVfcnVuX29h dXRoX2Zsb3dfaW1wbChQR2Nvbm4gKmNvbm4pCiAJcmV0dXJuIG9hdXRoX3Rva2VuID8gUEdSRVNf UE9MTElOR19PSyA6IFBHUkVTX1BPTExJTkdfUkVBRElORzsKIAogZXJyb3JfcmV0dXJuOgotCWVy cmJ1ZiA9IGNvbm5fZXJyb3JNZXNzYWdlKGNvbm4pOwotCi0JLyoKLQkgKiBBc3NlbWJsZSB0aGUg dGhyZWUgcGFydHMgb2Ygb3VyIGVycm9yOiBjb250ZXh0LCBib2R5LCBhbmQgZGV0YWlsLiBTZWUK LQkgKiBhbHNvIHRoZSBkb2N1bWVudGF0aW9uIGZvciBzdHJ1Y3QgYXN5bmNfY3R4LgotCSAqLwot CWlmIChhY3R4LT5lcnJjdHgpCi0JCWFwcGVuZFBRRXhwQnVmZmVyKGVycmJ1ZiwgIiVzOiAiLCBh Y3R4LT5lcnJjdHgpOwotCi0JaWYgKFBRRXhwQnVmZmVyRGF0YUJyb2tlbihhY3R4LT5lcnJidWYp KQotCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihlcnJidWYsIGxpYnBxX2dldHRleHQoIm91dCBvZiBt ZW1vcnkiKSk7Ci0JZWxzZQotCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihlcnJidWYsIGFjdHgtPmVy cmJ1Zi5kYXRhKTsKLQotCWlmIChhY3R4LT5jdXJsX2VyclswXSkKLQl7Ci0JCWFwcGVuZFBRRXhw QnVmZmVyKGVycmJ1ZiwgIiAobGliY3VybDogJXMpIiwgYWN0eC0+Y3VybF9lcnIpOwotCi0JCS8q IFNvbWV0aW1lcyBsaWJjdXJsIGFkZHMgYSBuZXdsaW5lIHRvIHRoZSBlcnJvciBidWZmZXIuIDoo ICovCi0JCWlmIChlcnJidWYtPmxlbiA+PSAyICYmIGVycmJ1Zi0+ZGF0YVtlcnJidWYtPmxlbiAt IDJdID09ICdcbicpCi0JCXsKLQkJCWVycmJ1Zi0+ZGF0YVtlcnJidWYtPmxlbiAtIDJdID0gJykn OwotCQkJZXJyYnVmLT5kYXRhW2VycmJ1Zi0+bGVuIC0gMV0gPSAnXDAnOwotCQkJZXJyYnVmLT5s ZW4tLTsKLQkJfQotCX0KLQotCWFwcGVuZFBRRXhwQnVmZmVyQ2hhcihlcnJidWYsICdcbicpOwor CWFwcGVuZF9hY3R4X2Vycm9yKHJlcXVlc3QsIGFjdHgpOwogCiAJcmV0dXJuIFBHUkVTX1BPTExJ TkdfRkFJTEVEOwogfQogCiAvKgotICogVGhlIHRvcC1sZXZlbCBlbnRyeSBwb2ludC4gVGhpcyBp cyBhIGNvbnZlbmllbnQgcGxhY2UgdG8gcHV0IG5lY2Vzc2FyeQotICogd3JhcHBlciBsb2dpYyBi ZWZvcmUgaGFuZGluZyBvZmYgdG8gdGhlIHRydWUgaW1wbGVtZW50YXRpb24sIGFib3ZlLgorICog VGhlIHRvcC1sZXZlbCBlbnRyeSBwb2ludCBmb3IgdGhlIGZsb3cuIFRoaXMgaXMgYSBjb252ZW5p ZW50IHBsYWNlIHRvIHB1dAorICogbmVjZXNzYXJ5IHdyYXBwZXIgbG9naWMgYmVmb3JlIGhhbmRp bmcgb2ZmIHRvIHRoZSB0cnVlIGltcGxlbWVudGF0aW9uLCBhYm92ZS4KICAqLwotUG9zdGdyZXNQ b2xsaW5nU3RhdHVzVHlwZQotcGdfZmVfcnVuX29hdXRoX2Zsb3coUEdjb25uICpjb25uKQorc3Rh dGljIFBvc3RncmVzUG9sbGluZ1N0YXR1c1R5cGUKK3BnX2ZlX3J1bl9vYXV0aF9mbG93KFBHY29u biAqY29ubiwgc3RydWN0IFBHb2F1dGhCZWFyZXJSZXF1ZXN0ICpyZXF1ZXN0LAorCQkJCQkgaW50 ICphbHRzb2NrKQogewogCVBvc3RncmVzUG9sbGluZ1N0YXR1c1R5cGUgcmVzdWx0OwotCWZlX29h dXRoX3N0YXRlICpzdGF0ZSA9IGNvbm5fc2FzbF9zdGF0ZShjb25uKTsKLQlzdHJ1Y3QgYXN5bmNf Y3R4ICphY3R4OworCXN0cnVjdCBhc3luY19jdHggKmFjdHggPSByZXF1ZXN0LT51c2VyOwogI2lm bmRlZiBXSU4zMgogCXNpZ3NldF90CW9zaWdzZXQ7CiAJYm9vbAkJc2lncGlwZV9wZW5kaW5nOwpA QCAtMzA1OSwyMCArMzAyOCwxNiBAQCBwZ19mZV9ydW5fb2F1dGhfZmxvdyhQR2Nvbm4gKmNvbm4p CiAJbWFza2VkID0gKHBxX2Jsb2NrX3NpZ3BpcGUoJm9zaWdzZXQsICZzaWdwaXBlX3BlbmRpbmcp ID09IDApOwogI2VuZGlmCiAKLQlyZXN1bHQgPSBwZ19mZV9ydW5fb2F1dGhfZmxvd19pbXBsKGNv bm4pOworCXJlc3VsdCA9IHBnX2ZlX3J1bl9vYXV0aF9mbG93X2ltcGwoY29ubiwKKwkJCQkJCQkJ CSAgIChQR29hdXRoQmVhcmVyUmVxdWVzdFYyICopIHJlcXVlc3QsCisJCQkJCQkJCQkgICBhbHRz b2NrKTsKIAogCS8qCiAJICogVG8gYXNzaXN0IHdpdGggZmluZGluZyBidWdzIGluIGNvbWJfbXVs dGlwbGV4ZXIoKSBhbmQKIAkgKiBkcmFpbl90aW1lcl9ldmVudHMoKSwgd2hlbiB3ZSdyZSBpbiBk ZWJ1ZyBtb2RlLCB0cmFjayB0aGUgdG90YWwgbnVtYmVyCiAJICogb2YgY2FsbHMgdG8gdGhpcyBm dW5jdGlvbiBhbmQgcHJpbnQgdGhhdCBhdCB0aGUgZW5kIG9mIHRoZSBmbG93LgotCSAqCi0JICog QmUgY2FyZWZ1bCB0aGF0IHN0YXRlLT5hc3luY19jdHggY291bGQgYmUgTlVMTCBpZiBlYXJseSBp bml0aWFsaXphdGlvbgotCSAqIGZhaWxzIGR1cmluZyB0aGUgZmlyc3QgY2FsbC4KIAkgKi8KLQlh Y3R4ID0gc3RhdGUtPmFzeW5jX2N0eDsKLQlBc3NlcnQoYWN0eCB8fCByZXN1bHQgPT0gUEdSRVNf UE9MTElOR19GQUlMRUQpOwotCi0JaWYgKGFjdHggJiYgYWN0eC0+ZGVidWdnaW5nKQorCWlmIChh Y3R4LT5kZWJ1Z2dpbmcpCiAJewogCQlhY3R4LT5kYmdfbnVtX2NhbGxzKys7CiAJCWlmIChyZXN1 bHQgPT0gUEdSRVNfUE9MTElOR19PSyB8fCByZXN1bHQgPT0gUEdSRVNfUE9MTElOR19GQUlMRUQp CkBAIC0zMDkzLDMgKzMwNTgsMTA0IEBAIHBnX2ZlX3J1bl9vYXV0aF9mbG93KFBHY29ubiAqY29u bikKIAogCXJldHVybiByZXN1bHQ7CiB9CisKKy8qCisgKiBDYWxsYmFjayByZWdpc3RyYXRpb24g Zm9yIE9BVVRIQkVBUkVSLiBsaWJwcSBjYWxscyB0aGlzIG9uY2UgcGVyIE9BdXRoCisgKiBjb25u ZWN0aW9uLgorICovCitpbnQKK3BnX3N0YXJ0X29hdXRoYmVhcmVyKFBHY29ubiAqY29ubiwgUEdv YXV0aEJlYXJlclJlcXVlc3RWMiAqcmVxdWVzdCkKK3sKKwlzdHJ1Y3QgYXN5bmNfY3R4ICphY3R4 OworCVBRY29ubmluZm9PcHRpb24gKmNvbm5pbmZvID0gTlVMTDsKKworCWlmICghaW5pdGlhbGl6 ZV9jdXJsKHJlcXVlc3QpKQorCQlyZXR1cm4gLTE7CisKKwkvKgorCSAqIENyZWF0ZSBvdXIgYXN5 bmNocm9ub3VzIHN0YXRlLCBhbmQgaG9vayBpdCBpbnRvIHRoZSB1cHBlci1sZXZlbCBPQXV0aAor CSAqIHN0YXRlIGltbWVkaWF0ZWx5LCBzbyBhbnkgZmFpbHVyZXMgYmVsb3cgd29uJ3QgbGVhayB0 aGUgY29udGV4dAorCSAqIGFsbG9jYXRpb24uCisJICovCisJYWN0eCA9IGNhbGxvYygxLCBzaXpl b2YoKmFjdHgpKTsKKwlpZiAoIWFjdHgpCisJCWdvdG8gb29tOworCisJYWN0eC0+bXV4ID0gUEdJ TlZBTElEX1NPQ0tFVDsKKwlhY3R4LT50aW1lcmZkID0gLTE7CisKKwkvKgorCSAqIE5vdyB3ZSBo YXZlIGEgdmFsaWQgKGJ1dCBzdGlsbCB1c2VsZXNzKSBhY3R4LCBzbyB3ZSBjYW4gZmlsbCBpbiB0 aGUKKwkgKiByZXF1ZXN0IG9iamVjdC4gRnJvbSB0aGlzIHBvaW50IG9ud2FyZCwgZmFpbHVyZXMg d2lsbCByZXN1bHQgaW4gYSBjYWxsCisJICogdG8gcGdfZmVfY2xlYW51cF9vYXV0aF9mbG93KCku IEZ1cnRoZXIgY2xlYW51cCBsb2dpYyBiZWxvbmdzIHRoZXJlLgorCSAqLworCXJlcXVlc3QtPnYx LmFzeW5jID0gcGdfZmVfcnVuX29hdXRoX2Zsb3c7CisJcmVxdWVzdC0+djEuY2xlYW51cCA9IHBn X2ZlX2NsZWFudXBfb2F1dGhfZmxvdzsKKwlyZXF1ZXN0LT52MS51c2VyID0gYWN0eDsKKworCS8q CisJICogTm93IGZpbmlzaCBmaWxsaW5nIGluIHRoZSBhY3R4LgorCSAqLworCisJLyogU2hvdWxk IHdlIGVuYWJsZSB1bnNhZmUgZmVhdHVyZXM/ICovCisJYWN0eC0+ZGVidWdnaW5nID0gb2F1dGhf dW5zYWZlX2RlYnVnZ2luZ19lbmFibGVkKCk7CisKKwlpbml0UFFFeHBCdWZmZXIoJmFjdHgtPndv cmtfZGF0YSk7CisJaW5pdFBRRXhwQnVmZmVyKCZhY3R4LT5lcnJidWYpOworCisJLyogUHVsbCBy ZWxldmFudCBjb25uZWN0aW9uIG9wdGlvbnMuICovCisJY29ubmluZm8gPSBQUWNvbm5pbmZvKGNv bm4pOworCWlmICghY29ubmluZm8pCisJCWdvdG8gb29tOworCisJZm9yIChQUWNvbm5pbmZvT3B0 aW9uICpvcHQgPSBjb25uaW5mbzsgb3B0LT5rZXl3b3JkOyBvcHQrKykKKwl7CisJCWlmICghb3B0 LT52YWwpCisJCQljb250aW51ZTsJCQkvKiBzaW1wbGlmaWVzIHRoZSBzdHJkdXAgbG9naWMgYmVs b3cgKi8KKworCQlpZiAoc3RyY21wKG9wdC0+a2V5d29yZCwgIm9hdXRoX2NsaWVudF9pZCIpID09 IDApCisJCXsKKwkJCWFjdHgtPmNsaWVudF9pZCA9IHN0cmR1cChvcHQtPnZhbCk7CisJCQlpZiAo IWFjdHgtPmNsaWVudF9pZCkKKwkJCQlnb3RvIG9vbTsKKwkJfQorCQllbHNlIGlmIChzdHJjbXAo b3B0LT5rZXl3b3JkLCAib2F1dGhfY2xpZW50X3NlY3JldCIpID09IDApCisJCXsKKwkJCWFjdHgt PmNsaWVudF9zZWNyZXQgPSBzdHJkdXAob3B0LT52YWwpOworCQkJaWYgKCFhY3R4LT5jbGllbnRf c2VjcmV0KQorCQkJCWdvdG8gb29tOworCQl9CisJfQorCisJUFFjb25uaW5mb0ZyZWUoY29ubmlu Zm8pOworCWNvbm5pbmZvID0gTlVMTDsJCQkvKiBrZWVwcyBgZ290byBvb21gIHNhZmUgKi8KKwor CWFjdHgtPmRpc2NvdmVyeV91cmkgPSByZXF1ZXN0LT52MS5vcGVuaWRfY29uZmlndXJhdGlvbjsK KwlhY3R4LT5pc3N1ZXJfaWQgPSByZXF1ZXN0LT5pc3N1ZXI7CisJYWN0eC0+c2NvcGUgPSByZXF1 ZXN0LT52MS5zY29wZTsKKworCUFzc2VydChhY3R4LT5jbGllbnRfaWQpOwkvKiBlbnN1cmVkIGJ5 IHNldHVwX29hdXRoX3BhcmFtZXRlcnMoKSAqLworCUFzc2VydChhY3R4LT5pc3N1ZXJfaWQpOwkv KiBlbnN1cmVkIGJ5IHNldHVwX29hdXRoX3BhcmFtZXRlcnMoKSAqLworCUFzc2VydChhY3R4LT5k aXNjb3ZlcnlfdXJpKTsJLyogZW5zdXJlZCBieSBvYXV0aF9leGNoYW5nZSgpICovCisKKwlpZiAo IXNldHVwX211bHRpcGxleGVyKGFjdHgpKQorCXsKKwkJYXBwZW5kX2FjdHhfZXJyb3IocmVxdWVz dCwgYWN0eCk7CisJCXJldHVybiAtMTsKKwl9CisKKwlpZiAoIXNldHVwX2N1cmxfaGFuZGxlcyhh Y3R4KSkKKwl7CisJCWFwcGVuZF9hY3R4X2Vycm9yKHJlcXVlc3QsIGFjdHgpOworCQlyZXR1cm4g LTE7CisJfQorCisJcmV0dXJuIDA7CisKK29vbToKKwlpZiAoY29ubmluZm8pCisJCVBRY29ubmlu Zm9GcmVlKGNvbm5pbmZvKTsKKworCXJlcXVlc3QtPmVycm9yID0gbGlicHFfZ2V0dGV4dCgib3V0 IG9mIG1lbW9yeSIpOworCXJldHVybiAtMTsKK30KZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2Vz L2xpYnBxLW9hdXRoL29hdXRoLXV0aWxzLmMgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS1vYXV0aC9v YXV0aC11dGlscy5jCmluZGV4IDRlYmU3ZDA5NDhjLi5jY2IwZDliZjJjNSAxMDA2NDQKLS0tIGEv c3JjL2ludGVyZmFjZXMvbGlicHEtb2F1dGgvb2F1dGgtdXRpbHMuYworKysgYi9zcmMvaW50ZXJm YWNlcy9saWJwcS1vYXV0aC9vYXV0aC11dGlscy5jCkBAIC0zNSw4NSArMzUsMTggQEAKIHBndGhy ZWFkbG9ja190IHBnX2dfdGhyZWFkbG9jazsKIHN0YXRpYyBsaWJwcV9nZXR0ZXh0X2Z1bmMgbGli cHFfZ2V0dGV4dF9pbXBsOwogCi1jb25uX2Vycm9yTWVzc2FnZV9mdW5jIGNvbm5fZXJyb3JNZXNz YWdlOwotY29ubl9vYXV0aF9jbGllbnRfaWRfZnVuYyBjb25uX29hdXRoX2NsaWVudF9pZDsKLWNv bm5fb2F1dGhfY2xpZW50X3NlY3JldF9mdW5jIGNvbm5fb2F1dGhfY2xpZW50X3NlY3JldDsKLWNv bm5fb2F1dGhfZGlzY292ZXJ5X3VyaV9mdW5jIGNvbm5fb2F1dGhfZGlzY292ZXJ5X3VyaTsKLWNv bm5fb2F1dGhfaXNzdWVyX2lkX2Z1bmMgY29ubl9vYXV0aF9pc3N1ZXJfaWQ7Ci1jb25uX29hdXRo X3Njb3BlX2Z1bmMgY29ubl9vYXV0aF9zY29wZTsKLWNvbm5fc2FzbF9zdGF0ZV9mdW5jIGNvbm5f c2FzbF9zdGF0ZTsKLQotc2V0X2Nvbm5fYWx0c29ja19mdW5jIHNldF9jb25uX2FsdHNvY2s7Ci1z ZXRfY29ubl9vYXV0aF90b2tlbl9mdW5jIHNldF9jb25uX29hdXRoX3Rva2VuOwotCiAvKi0KICAq IEluaXRpYWxpemVzIGxpYnBxLW9hdXRoIGJ5IHNldHRpbmcgbmVjZXNzYXJ5IGNhbGxiYWNrcy4K ICAqCi0gKiBUaGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiByZWxpZXMgb24gdGhlIGZvbGxvd2lu ZyBwcml2YXRlIGltcGxlbWVudGF0aW9uCi0gKiBkZXRhaWxzIG9mIGxpYnBxOgotICoKLSAqIC0g cGdfZ190aHJlYWRsb2NrOiBwcm90ZWN0cyBsaWJjdXJsIGluaXRpYWxpemF0aW9uIGlmIHRoZSB1 bmRlcmx5aW5nIEN1cmwKLSAqICAgaW5zdGFsbGF0aW9uIGlzIG5vdCB0aHJlYWRzYWZlCi0gKgot ICogLSBsaWJwcV9nZXR0ZXh0OiB0cmFuc2xhdGVzIGVycm9yIG1lc3NhZ2VzIHVzaW5nIGxpYnBx J3MgbWVzc2FnZSBkb21haW4KLSAqCi0gKiBUaGUgaW1wbGVtZW50YXRpb24gYWxzbyBuZWVkcyBh Y2Nlc3MgdG8gc2V2ZXJhbCBtZW1iZXJzIG9mIHRoZSBQR2Nvbm4gc3RydWN0LAotICogd2hpY2gg YXJlIG5vdCBndWFyYW50ZWVkIHRvIHN0YXkgaW4gcGxhY2UgYWNyb3NzIG1pbm9yIHZlcnNpb25z LiBBY2Nlc3NvcnMKLSAqIChuYW1lZCBjb25uXyopIGFuZCBtdXRhdG9ycyAobmFtZWQgc2V0X2Nv bm5fKikgYXJlIGluamVjdGVkIGhlcmUuCisgKiBUaGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBy ZWxpZXMgb24gbGlicHFfZ2V0dGV4dCB0byB0cmFuc2xhdGUgZXJyb3IKKyAqIG1lc3NhZ2VzIHVz aW5nIGxpYnBxJ3MgbWVzc2FnZSBkb21haW4sIHNvIGxpYnBxIGluamVjdHMgaXQgaGVyZS4gV2Ug YWxzbyB1c2UKKyAqIHRoaXMgY2hhbmNlIHRvIGluaXRpYWxpemUgb3VyIHRocmVhZGxvY2suCiAg Ki8KIHZvaWQKLWxpYnBxX29hdXRoX2luaXQocGd0aHJlYWRsb2NrX3QgdGhyZWFkbG9ja19pbXBs LAotCQkJCSBsaWJwcV9nZXR0ZXh0X2Z1bmMgZ2V0dGV4dF9pbXBsLAotCQkJCSBjb25uX2Vycm9y TWVzc2FnZV9mdW5jIGVycm1zZ19pbXBsLAotCQkJCSBjb25uX29hdXRoX2NsaWVudF9pZF9mdW5j IGNsaWVudGlkX2ltcGwsCi0JCQkJIGNvbm5fb2F1dGhfY2xpZW50X3NlY3JldF9mdW5jIGNsaWVu dHNlY3JldF9pbXBsLAotCQkJCSBjb25uX29hdXRoX2Rpc2NvdmVyeV91cmlfZnVuYyBkaXNjb3Zl cnl1cmlfaW1wbCwKLQkJCQkgY29ubl9vYXV0aF9pc3N1ZXJfaWRfZnVuYyBpc3N1ZXJpZF9pbXBs LAotCQkJCSBjb25uX29hdXRoX3Njb3BlX2Z1bmMgc2NvcGVfaW1wbCwKLQkJCQkgY29ubl9zYXNs X3N0YXRlX2Z1bmMgc2FzbHN0YXRlX2ltcGwsCi0JCQkJIHNldF9jb25uX2FsdHNvY2tfZnVuYyBz ZXRhbHRzb2NrX2ltcGwsCi0JCQkJIHNldF9jb25uX29hdXRoX3Rva2VuX2Z1bmMgc2V0dG9rZW5f aW1wbCkKK2xpYnBxX29hdXRoX2luaXQobGlicHFfZ2V0dGV4dF9mdW5jIGdldHRleHRfaW1wbCkK IHsKLQlwZ19nX3RocmVhZGxvY2sgPSB0aHJlYWRsb2NrX2ltcGw7CisJcGdfZ190aHJlYWRsb2Nr ID0gUFFnZXRUaHJlYWRMb2NrKCk7CiAJbGlicHFfZ2V0dGV4dF9pbXBsID0gZ2V0dGV4dF9pbXBs OwotCWNvbm5fZXJyb3JNZXNzYWdlID0gZXJybXNnX2ltcGw7Ci0JY29ubl9vYXV0aF9jbGllbnRf aWQgPSBjbGllbnRpZF9pbXBsOwotCWNvbm5fb2F1dGhfY2xpZW50X3NlY3JldCA9IGNsaWVudHNl Y3JldF9pbXBsOwotCWNvbm5fb2F1dGhfZGlzY292ZXJ5X3VyaSA9IGRpc2NvdmVyeXVyaV9pbXBs OwotCWNvbm5fb2F1dGhfaXNzdWVyX2lkID0gaXNzdWVyaWRfaW1wbDsKLQljb25uX29hdXRoX3Nj b3BlID0gc2NvcGVfaW1wbDsKLQljb25uX3Nhc2xfc3RhdGUgPSBzYXNsc3RhdGVfaW1wbDsKLQlz ZXRfY29ubl9hbHRzb2NrID0gc2V0YWx0c29ja19pbXBsOwotCXNldF9jb25uX29hdXRoX3Rva2Vu ID0gc2V0dG9rZW5faW1wbDsKLX0KLQotLyoKLSAqIEFwcGVuZCBhIGZvcm1hdHRlZCBzdHJpbmcg dG8gdGhlIGVycm9yIG1lc3NhZ2UgYnVmZmVyIG9mIHRoZSBnaXZlbgotICogY29ubmVjdGlvbiwg YWZ0ZXIgdHJhbnNsYXRpbmcgaXQuICBUaGlzIGlzIGEgY29weSBvZiBsaWJwcSdzIGludGVybmFs IEFQSS4KLSAqLwotdm9pZAotbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoUEdjb25uICpjb25uLCBj b25zdCBjaGFyICpmbXQsLi4uKQotewotCWludAkJCXNhdmVfZXJybm8gPSBlcnJubzsKLQlib29s CQlkb25lOwotCXZhX2xpc3QJCWFyZ3M7Ci0JUFFFeHBCdWZmZXIgZXJyb3JNZXNzYWdlID0gY29u bl9lcnJvck1lc3NhZ2UoY29ubik7Ci0KLQlBc3NlcnQoZm10W3N0cmxlbihmbXQpIC0gMV0gIT0g J1xuJyk7Ci0KLQlpZiAoUFFFeHBCdWZmZXJCcm9rZW4oZXJyb3JNZXNzYWdlKSkKLQkJcmV0dXJu OwkJCQkJLyogYWxyZWFkeSBmYWlsZWQgKi8KLQotCS8qIExvb3AgaW4gY2FzZSB3ZSBoYXZlIHRv IHJldHJ5IGFmdGVyIGVubGFyZ2luZyB0aGUgYnVmZmVyLiAqLwotCWRvCi0JewotCQllcnJubyA9 IHNhdmVfZXJybm87Ci0JCXZhX3N0YXJ0KGFyZ3MsIGZtdCk7Ci0JCWRvbmUgPSBhcHBlbmRQUUV4 cEJ1ZmZlclZBKGVycm9yTWVzc2FnZSwgbGlicHFfZ2V0dGV4dChmbXQpLCBhcmdzKTsKLQkJdmFf ZW5kKGFyZ3MpOwotCX0gd2hpbGUgKCFkb25lKTsKLQotCWFwcGVuZFBRRXhwQnVmZmVyQ2hhcihl cnJvck1lc3NhZ2UsICdcbicpOwogfQogCiAjaWZkZWYgRU5BQkxFX05MUwpkaWZmIC0tZ2l0IGEv c3JjL2ludGVyZmFjZXMvbGlicHEvZmUtYXV0aC1vYXV0aC5jIGIvc3JjL2ludGVyZmFjZXMvbGli cHEvZmUtYXV0aC1vYXV0aC5jCmluZGV4IDJhZWYzMjdjNjhiLi5mOTMxODRmMDRkYiAxMDA2NDQK LS0tIGEvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtYXV0aC1vYXV0aC5jCisrKyBiL3NyYy9pbnRl cmZhY2VzL2xpYnBxL2ZlLWF1dGgtb2F1dGguYwpAQCAtNzgsNyArNzgsNyBAQCBvYXV0aF9pbml0 KFBHY29ubiAqY29ubiwgY29uc3QgY2hhciAqcGFzc3dvcmQsCiAgKiBUaGlzIGhhbmRsZXMgb25s eSBtZWNoYW5pc20gc3RhdGUgdGllZCB0byB0aGUgY29ubmVjdGlvbiBsaWZldGltZTsgc3RhdGUK ICAqIHN0b3JlZCBpbiBzdGF0ZS0+YXN5bmNfY3R4IGlzIGZyZWVkIHVwIGVpdGhlciBpbW1lZGlh dGVseSBhZnRlciB0aGUKICAqIGF1dGhlbnRpY2F0aW9uIGhhbmRzaGFrZSBzdWNjZWVkcywgb3Ig YmVmb3JlIHRoZSBtZWNoYW5pc20gaXMgY2xlYW5lZCB1cCBvbgotICogZmFpbHVyZS4gU2VlIHBn X2ZlX2NsZWFudXBfb2F1dGhfZmxvdygpIGFuZCBjbGVhbnVwX3VzZXJfb2F1dGhfZmxvdygpLgor ICogZmFpbHVyZS4gU2VlIHBnX2ZlX2NsZWFudXBfb2F1dGhfZmxvdygpIGFuZCBjbGVhbnVwX29h dXRoX2Zsb3coKS4KICAqLwogc3RhdGljIHZvaWQKIG9hdXRoX2ZyZWUodm9pZCAqb3BhcSkKQEAg LTY4MCwzMCArNjgwLDU0IEBAIGNsZWFudXA6CiAgKiBpdCdzIGFkZGVkIHRvIGNvbm4tPmVycm9y TWVzc2FnZSBoZXJlLgogICovCiBzdGF0aWMgdm9pZAotcmVwb3J0X3VzZXJfZmxvd19lcnJvcihQ R2Nvbm4gKmNvbm4sIGNvbnN0IFBHb2F1dGhCZWFyZXJSZXF1ZXN0VjIgKnJlcXVlc3QpCityZXBv cnRfZmxvd19lcnJvcihQR2Nvbm4gKmNvbm4sIGNvbnN0IFBHb2F1dGhCZWFyZXJSZXF1ZXN0VjIg KnJlcXVlc3QpCiB7Ci0JYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmNvbm4tPmVycm9yTWVzc2FnZSwK LQkJCQkJCSBsaWJwcV9nZXR0ZXh0KCJ1c2VyLWRlZmluZWQgT0F1dGggZmxvdyBmYWlsZWQiKSk7 CisJZmVfb2F1dGhfc3RhdGUgKnN0YXRlID0gY29ubi0+c2FzbF9zdGF0ZTsKKwljb25zdCBjaGFy ICplcnJtc2cgPSByZXF1ZXN0LT5lcnJvcjsKKworCS8qCisJICogVXNlci1kZWZpbmVkIGZsb3dz IGFyZSBjYWxsZWQgb3V0IGV4cGxpY2l0bHkgc28gdGhhdCB0aGUgdXNlciBrbm93cyB3aG8KKwkg KiB0byBibGFtZS4gQnVpbHRpbiBmbG93cyBkb24ndCBuZWVkIHRoYXQgZXh0cmEgbWVzc2FnZSBs ZW5ndGg7IHdlIGV4cGVjdAorCSAqIHRoZW0gdG8gYWx3YXlzIGZpbGwgaW4gcmVxdWVzdC0+ZXJy b3Igb24gZmFpbHVyZSBhbnl3YXkuCisJICovCisJaWYgKHN0YXRlLT5idWlsdGluKQorCXsKKwkJ aWYgKCFlcnJtc2cpCisJCXsKKwkJCS8qCisJCQkgKiBEb24ndCB0dXJuIGEgYnVnIGhlcmUgaW50 byBhIGNyYXNoIGluIHByb2R1Y3Rpb24sIGJ1dCBkb24ndAorCQkJICogYm90aGVyIHRyYW5zbGF0 aW5nIGVpdGhlci4KKwkJCSAqLworCQkJQXNzZXJ0KGZhbHNlKTsKKwkJCWVycm1zZyA9ICJidWls dGluIGZsb3cgZmFpbGVkIGJ1dCBkaWQgbm90IHByb3ZpZGUgYW4gZXJyb3IgbWVzc2FnZSI7CisJ CX0KIAotCWlmIChyZXF1ZXN0LT5lcnJvcikKKwkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmNvbm4t PmVycm9yTWVzc2FnZSwgZXJybXNnKTsKKwl9CisJZWxzZQogCXsKLQkJYXBwZW5kUFFFeHBCdWZm ZXJTdHIoJmNvbm4tPmVycm9yTWVzc2FnZSwgIjogIik7Ci0JCWFwcGVuZFBRRXhwQnVmZmVyU3Ry KCZjb25uLT5lcnJvck1lc3NhZ2UsIHJlcXVlc3QtPmVycm9yKTsKKwkJYXBwZW5kUFFFeHBCdWZm ZXJTdHIoJmNvbm4tPmVycm9yTWVzc2FnZSwKKwkJCQkJCQkgbGlicHFfZ2V0dGV4dCgidXNlci1k ZWZpbmVkIE9BdXRoIGZsb3cgZmFpbGVkIikpOworCQlpZiAoZXJybXNnKQorCQl7CisJCQlhcHBl bmRQUUV4cEJ1ZmZlclN0cigmY29ubi0+ZXJyb3JNZXNzYWdlLCAiOiAiKTsKKwkJCWFwcGVuZFBR RXhwQnVmZmVyU3RyKCZjb25uLT5lcnJvck1lc3NhZ2UsIGVycm1zZyk7CisJCX0KIAl9CiAKIAlh cHBlbmRQUUV4cEJ1ZmZlckNoYXIoJmNvbm4tPmVycm9yTWVzc2FnZSwgJ1xuJyk7CiB9CiAKIC8q Ci0gKiBDYWxsYmFjayBpbXBsZW1lbnRhdGlvbiBvZiBjb25uLT5hc3luY19hdXRoKCkgZm9yIGEg dXNlci1kZWZpbmVkIE9BdXRoIGZsb3cuCi0gKiBEZWxlZ2F0ZXMgdGhlIHJldHJpZXZhbCBvZiB0 aGUgdG9rZW4gdG8gdGhlIGFwcGxpY2F0aW9uJ3MgYXN5bmMgY2FsbGJhY2suCisgKiBDYWxsYmFj ayBpbXBsZW1lbnRhdGlvbiBvZiBjb25uLT5hc3luY19hdXRoKCkgZm9yIE9BdXRoIGZsb3dzLiBE ZWxlZ2F0ZXMgdGhlCisgKiByZXRyaWV2YWwgb2YgdGhlIHRva2VuIHRvIHRoZSBQR29hdXRoQmVh cmVyUmVxdWVzdFYyLmFzeW5jKCkgY2FsbGJhY2suCiAgKgotICogVGhpcyB3aWxsIGJlIGNhbGxl ZCBtdWx0aXBsZSB0aW1lcyBhcyBuZWVkZWQ7IHRoZSBhcHBsaWNhdGlvbiBpcyByZXNwb25zaWJs ZQotICogZm9yIHNldHRpbmcgYW4gYWx0c29jayB0byBzaWduYWwgYW5kIHJldHVybmluZyB0aGUg Y29ycmVjdCBQR1JFU19QT0xMSU5HXyoKKyAqIFRoaXMgd2lsbCBiZSBjYWxsZWQgbXVsdGlwbGUg dGltZXMgYXMgbmVlZGVkOyB0aGUgY2FsbGJhY2sgaXMgcmVzcG9uc2libGUgZm9yCisgKiBzZXR0 aW5nIGFuIGFsdHNvY2sgdG8gc2lnbmFsIGFuZCByZXR1cm5pbmcgdGhlIGNvcnJlY3QgUEdSRVNf UE9MTElOR18qCiAgKiBzdGF0dXNlcyBmb3IgdXNlIGJ5IFBRY29ubmVjdFBvbGwoKS4KICAqLwog c3RhdGljIFBvc3RncmVzUG9sbGluZ1N0YXR1c1R5cGUKLXJ1bl91c2VyX29hdXRoX2Zsb3coUEdj b25uICpjb25uKQorcnVuX29hdXRoX2Zsb3coUEdjb25uICpjb25uKQogewogCWZlX29hdXRoX3N0 YXRlICpzdGF0ZSA9IGNvbm4tPnNhc2xfc3RhdGU7CiAJUEdvYXV0aEJlYXJlclJlcXVlc3RWMiAq cmVxdWVzdCA9IHN0YXRlLT5hc3luY19jdHg7CkBAIC03MTEsNiArNzM1LDcgQEAgcnVuX3VzZXJf b2F1dGhfZmxvdyhQR2Nvbm4gKmNvbm4pCiAKIAlpZiAoIXJlcXVlc3QtPnYxLmFzeW5jKQogCXsK KwkJQXNzZXJ0KCFzdGF0ZS0+YnVpbHRpbik7CS8qIGJlIHZlcnkgbm9pc3kgaWYgb3VyIGNvZGUg ZG9lcyB0aGlzICovCiAJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sCiAJCQkJCQkJCSJ1 c2VyLWRlZmluZWQgT0F1dGggZmxvdyBwcm92aWRlZCBuZWl0aGVyIGEgdG9rZW4gbm9yIGFuIGFz eW5jIGNhbGxiYWNrIik7CiAJCXJldHVybiBQR1JFU19QT0xMSU5HX0ZBSUxFRDsKQEAgLTcyMiw3 ICs3NDcsNyBAQCBydW5fdXNlcl9vYXV0aF9mbG93KFBHY29ubiAqY29ubikKIAogCWlmIChzdGF0 dXMgPT0gUEdSRVNfUE9MTElOR19GQUlMRUQpCiAJewotCQlyZXBvcnRfdXNlcl9mbG93X2Vycm9y KGNvbm4sIHJlcXVlc3QpOworCQlyZXBvcnRfZmxvd19lcnJvcihjb25uLCByZXF1ZXN0KTsKIAkJ cmV0dXJuIHN0YXR1czsKIAl9CiAJZWxzZSBpZiAoc3RhdHVzID09IFBHUkVTX1BPTExJTkdfT0sp CkBAIC03MzQsNiArNzU5LDcgQEAgcnVuX3VzZXJfb2F1dGhfZmxvdyhQR2Nvbm4gKmNvbm4pCiAJ CSAqLwogCQlpZiAoIXJlcXVlc3QtPnYxLnRva2VuKQogCQl7CisJCQlBc3NlcnQoIXN0YXRlLT5i dWlsdGluKTsKIAkJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sCiAJCQkJCQkJCQkidXNl ci1kZWZpbmVkIE9BdXRoIGZsb3cgZGlkIG5vdCBwcm92aWRlIGEgdG9rZW4iKTsKIAkJCXJldHVy biBQR1JFU19QT0xMSU5HX0ZBSUxFRDsKQEAgLTc1Miw2ICs3NzgsNyBAQCBydW5fdXNlcl9vYXV0 aF9mbG93KFBHY29ubiAqY29ubikKIAkvKiBUaGUgaG9vayB3YW50cyB0aGUgY2xpZW50IHRvIHBv bGwgdGhlIGFsdHNvY2suIE1ha2Ugc3VyZSBpdCBzZXQgb25lLiAqLwogCWlmIChjb25uLT5hbHRz b2NrID09IFBHSU5WQUxJRF9TT0NLRVQpCiAJeworCQlBc3NlcnQoIXN0YXRlLT5idWlsdGluKTsK IAkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwKIAkJCQkJCQkJInVzZXItZGVmaW5lZCBP QXV0aCBmbG93IGRpZCBub3QgcHJvdmlkZSBhIHNvY2tldCBmb3IgcG9sbGluZyIpOwogCQlyZXR1 cm4gUEdSRVNfUE9MTElOR19GQUlMRUQ7CkBAIC03NjEsMTIgKzc4OCwxNiBAQCBydW5fdXNlcl9v YXV0aF9mbG93KFBHY29ubiAqY29ubikKIH0KIAogLyoKLSAqIENsZWFudXAgY2FsbGJhY2sgZm9y IHRoZSBhc3luYyB1c2VyIGZsb3cuIERlbGVnYXRlcyBtb3N0IG9mIGl0cyBqb2IgdG8KKyAqIENs ZWFudXAgY2FsbGJhY2sgZm9yIHRoZSBhc3luYyBmbG93LiBEZWxlZ2F0ZXMgbW9zdCBvZiBpdHMg am9iIHRvCiAgKiBQR29hdXRoQmVhcmVyUmVxdWVzdC5jbGVhbnVwKCksIHRoZW4gZGlzY29ubmVj dHMgdGhlIGFsdHNvY2sgYW5kIGZyZWVzIHRoZQogICogcmVxdWVzdCBpdHNlbGYuCisgKgorICog VGhpcyBpcyBjYWxsZWQgZWl0aGVyIGF0IHRoZSBlbmQgb2YgYSBzdWNjZXNzZnVsIGF1dGhlbnRp Y2F0aW9uLCBvciBkdXJpbmcKKyAqIHBxRHJvcENvbm5lY3Rpb24oKSwgc28gd2Ugd29uJ3QgbGVh ayByZXNvdXJjZXMgZXZlbiBpZiBQUWNvbm5lY3RQb2xsKCkgbmV2ZXIKKyAqIGNhbGxzIHVzIGJh Y2suCiAgKi8KIHN0YXRpYyB2b2lkCi1jbGVhbnVwX3VzZXJfb2F1dGhfZmxvdyhQR2Nvbm4gKmNv bm4pCitjbGVhbnVwX29hdXRoX2Zsb3coUEdjb25uICpjb25uKQogewogCWZlX29hdXRoX3N0YXRl ICpzdGF0ZSA9IGNvbm4tPnNhc2xfc3RhdGU7CiAJUEdvYXV0aEJlYXJlclJlcXVlc3RWMiAqcmVx dWVzdCA9IHN0YXRlLT5hc3luY19jdHg7CkBAIC03ODYsMTIgKzgxNywxNiBAQCBjbGVhbnVwX3Vz ZXJfb2F1dGhfZmxvdyhQR2Nvbm4gKmNvbm4pCiAgKgogICogVGhlcmUgYXJlIHRocmVlIHBvdGVu dGlhbCBpbXBsZW1lbnRhdGlvbnMgb2YgdXNlX2J1aWx0aW5fZmxvdzoKICAqCi0gKiAxKSBJZiB0 aGUgT0F1dGggY2xpZW50IGlzIGRpc2FibGVkIGF0IGNvbmZpZ3VyYXRpb24gdGltZSwgcmV0dXJu IGZhbHNlLgorICogMSkgSWYgdGhlIE9BdXRoIGNsaWVudCBpcyBkaXNhYmxlZCBhdCBjb25maWd1 cmF0aW9uIHRpbWUsIHJldHVybiB6ZXJvLgogICogICAgRGVwZW5kZW50IGNsaWVudHMgbXVzdCBw cm92aWRlIHRoZWlyIG93biBmbG93LgogICogMikgSWYgdGhlIE9BdXRoIGNsaWVudCBpcyBlbmFi bGVkIGFuZCBVU0VfRFlOQU1JQ19PQVVUSCBpcyBkZWZpbmVkLCBkbG9wZW4oKQogICogICAgdGhl IGxpYnBxLW9hdXRoIHBsdWdpbiBhbmQgdXNlIGl0cyBpbXBsZW1lbnRhdGlvbi4KICAqIDMpIE90 aGVyd2lzZSwgdXNlIGZsb3cgY2FsbGJhY2tzIHRoYXQgYXJlIHN0YXRpY2FsbHkgbGlua2VkIGlu dG8gdGhlCiAgKiAgICBleGVjdXRhYmxlLgorICoKKyAqIEZvciBjYWxsZXIgY29udmVuaWVuY2Us IHRoZSByZXR1cm4gdmFsdWUgZm9sbG93cyB0aGUgY29udmVudGlvbiBvZgorICogUFFhdXRoRGF0 YUhvb2s6IHplcm8gbWVhbnMgbm8gaW1wbGVtZW50YXRpb24gaXMgcHJvdmlkZWQsIG5lZ2F0aXZl IGluZGljYXRlcworICogZmFpbHVyZSwgYW5kIHBvc2l0aXZlIGluZGljYXRlcyBzdWNjZXNzLgog ICovCiAKICNpZiAhZGVmaW5lZChVU0VfTElCQ1VSTCkKQEAgLTgwMCwxMCArODM1LDEwIEBAIGNs ZWFudXBfdXNlcl9vYXV0aF9mbG93KFBHY29ubiAqY29ubikKICAqIFRoaXMgY29uZmlndXJhdGlv biBkb2Vzbid0IHN1cHBvcnQgdGhlIGJ1aWx0aW4gZmxvdy4KICAqLwogCi1ib29sCi11c2VfYnVp bHRpbl9mbG93KFBHY29ubiAqY29ubiwgZmVfb2F1dGhfc3RhdGUgKnN0YXRlKQorc3RhdGljIGlu dAordXNlX2J1aWx0aW5fZmxvdyhQR2Nvbm4gKmNvbm4sIGZlX29hdXRoX3N0YXRlICpzdGF0ZSwg UEdvYXV0aEJlYXJlclJlcXVlc3RWMiAqcmVxdWVzdCkKIHsKLQlyZXR1cm4gZmFsc2U7CisJcmV0 dXJuIDA7CiB9CiAKICNlbGlmIGRlZmluZWQoVVNFX0RZTkFNSUNfT0FVVEgpCkBAIC04MTQsMzYg Kzg0OSw2IEBAIHVzZV9idWlsdGluX2Zsb3coUEdjb25uICpjb25uLCBmZV9vYXV0aF9zdGF0ZSAq c3RhdGUpCiAKIHR5cGVkZWYgY2hhciAqKCpsaWJwcV9nZXR0ZXh0X2Z1bmMpIChjb25zdCBjaGFy ICptc2dpZCk7CiAKLS8qCi0gKiBEZWZpbmUgYWNjZXNzb3IvbXV0YXRvciBzaGltcyB0byBpbmpl Y3QgaW50byBsaWJwcS1vYXV0aCwgc28gdGhhdCBpdCBkb2Vzbid0Ci0gKiBkZXBlbmQgb24gdGhl IG9mZnNldHMgd2l0aGluIFBHY29ubi4gKFRoZXNlIGhhdmUgY2hhbmdlZCBkdXJpbmcgbWlub3Ig dmVyc2lvbgotICogdXBkYXRlcyBpbiB0aGUgcGFzdC4pCi0gKi8KLQotI2RlZmluZSBERUZJTkVf R0VUVEVSKFRZUEUsIE1FTUJFUikgXAotCXR5cGVkZWYgVFlQRSAoKmNvbm5fICMjIE1FTUJFUiAj IyBfZnVuYykgKFBHY29ubiAqY29ubik7IFwKLQlzdGF0aWMgVFlQRSBjb25uXyAjIyBNRU1CRVIo UEdjb25uICpjb25uKSB7IHJldHVybiBjb25uLT5NRU1CRVI7IH0KLQotLyogTGlrZSBERUZJTkVf R0VUVEVSLCBidXQgcmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIG1lbWJlci4gKi8KLSNkZWZpbmUg REVGSU5FX0dFVFRFUl9QKFRZUEUsIE1FTUJFUikgXAotCXR5cGVkZWYgVFlQRSAoKmNvbm5fICMj IE1FTUJFUiAjIyBfZnVuYykgKFBHY29ubiAqY29ubik7IFwKLQlzdGF0aWMgVFlQRSBjb25uXyAj IyBNRU1CRVIoUEdjb25uICpjb25uKSB7IHJldHVybiAmY29ubi0+TUVNQkVSOyB9Ci0KLSNkZWZp bmUgREVGSU5FX1NFVFRFUihUWVBFLCBNRU1CRVIpIFwKLQl0eXBlZGVmIHZvaWQgKCpzZXRfY29u bl8gIyMgTUVNQkVSICMjIF9mdW5jKSAoUEdjb25uICpjb25uLCBUWVBFIHZhbCk7IFwKLQlzdGF0 aWMgdm9pZCBzZXRfY29ubl8gIyMgTUVNQkVSKFBHY29ubiAqY29ubiwgVFlQRSB2YWwpIHsgY29u bi0+TUVNQkVSID0gdmFsOyB9Ci0KLURFRklORV9HRVRURVJfUChQUUV4cEJ1ZmZlciwgZXJyb3JN ZXNzYWdlKTsKLURFRklORV9HRVRURVIoY2hhciAqLCBvYXV0aF9jbGllbnRfaWQpOwotREVGSU5F X0dFVFRFUihjaGFyICosIG9hdXRoX2NsaWVudF9zZWNyZXQpOwotREVGSU5FX0dFVFRFUihjaGFy ICosIG9hdXRoX2Rpc2NvdmVyeV91cmkpOwotREVGSU5FX0dFVFRFUihjaGFyICosIG9hdXRoX2lz c3Vlcl9pZCk7Ci1ERUZJTkVfR0VUVEVSKGNoYXIgKiwgb2F1dGhfc2NvcGUpOwotREVGSU5FX0dF VFRFUihmZV9vYXV0aF9zdGF0ZSAqLCBzYXNsX3N0YXRlKTsKLQotREVGSU5FX1NFVFRFUihwZ3Nv Y2tldCwgYWx0c29jayk7Ci1ERUZJTkVfU0VUVEVSKGNoYXIgKiwgb2F1dGhfdG9rZW4pOwotCiAv KgogICogTG9hZHMgdGhlIGxpYnBxLW9hdXRoIHBsdWdpbiB2aWEgZGxvcGVuKCksIGluaXRpYWxp emVzIGl0LCBhbmQgcGx1Z3MgaXRzCiAgKiBjYWxsYmFja3MgaW50byB0aGUgY29ubmVjdGlvbidz IGFzeW5jIGF1dGggaGFuZGxlcnMuCkBAIC04NTIsMjcgKzg1NywxOSBAQCBERUZJTkVfU0VUVEVS KGNoYXIgKiwgb2F1dGhfdG9rZW4pOwogICogaGFuZGxlIHRoZSB1c2UgY2FzZSB3aGVyZSB0aGUg YnVpbGQgc3VwcG9ydHMgbG9hZGluZyBhIGZsb3cgYnV0IGEgdXNlciBkb2VzCiAgKiBub3Qgd2Fu dCB0byBpbnN0YWxsIGl0LiBUcm91Ymxlc2hvb3Rpbmcgb2YgbGlua2VyL2xvYWRlciBmYWlsdXJl cyBjYW4gYmUgZG9uZQogICogdmlhIFBHT0FVVEhERUJVRy4KKyAqCisgKiBUaGUgbGlmZXRpbWUg b2YgKnJlcXVlc3QgZW5kcyBzaG9ydGx5IGFmdGVyIHRoaXMgY2FsbCwgc28gaXQgbXVzdCBiZSBj b3BpZWQKKyAqIHRvIGxvbmdlci1saXZlZCBzdG9yYWdlLgogICovCi1ib29sCi11c2VfYnVpbHRp bl9mbG93KFBHY29ubiAqY29ubiwgZmVfb2F1dGhfc3RhdGUgKnN0YXRlKQorc3RhdGljIGludAor dXNlX2J1aWx0aW5fZmxvdyhQR2Nvbm4gKmNvbm4sIGZlX29hdXRoX3N0YXRlICpzdGF0ZSwgUEdv YXV0aEJlYXJlclJlcXVlc3RWMiAqcmVxdWVzdCkKIHsKIAlzdGF0aWMgYm9vbCBpbml0aWFsaXpl ZCA9IGZhbHNlOwogCXN0YXRpYyBwdGhyZWFkX211dGV4X3QgaW5pdF9tdXRleCA9IFBUSFJFQURf TVVURVhfSU5JVElBTElaRVI7CiAJaW50CQkJbG9ja2VycjsKIAotCXZvaWQJCSgqaW5pdCkgKHBn dGhyZWFkbG9ja190IHRocmVhZGxvY2ssCi0JCQkJCQkgbGlicHFfZ2V0dGV4dF9mdW5jIGdldHRl eHRfaW1wbCwKLQkJCQkJCSBjb25uX2Vycm9yTWVzc2FnZV9mdW5jIGVycm1zZ19pbXBsLAotCQkJ CQkJIGNvbm5fb2F1dGhfY2xpZW50X2lkX2Z1bmMgY2xpZW50aWRfaW1wbCwKLQkJCQkJCSBjb25u X29hdXRoX2NsaWVudF9zZWNyZXRfZnVuYyBjbGllbnRzZWNyZXRfaW1wbCwKLQkJCQkJCSBjb25u X29hdXRoX2Rpc2NvdmVyeV91cmlfZnVuYyBkaXNjb3Zlcnl1cmlfaW1wbCwKLQkJCQkJCSBjb25u X29hdXRoX2lzc3Vlcl9pZF9mdW5jIGlzc3VlcmlkX2ltcGwsCi0JCQkJCQkgY29ubl9vYXV0aF9z Y29wZV9mdW5jIHNjb3BlX2ltcGwsCi0JCQkJCQkgY29ubl9zYXNsX3N0YXRlX2Z1bmMgc2FzbHN0 YXRlX2ltcGwsCi0JCQkJCQkgc2V0X2Nvbm5fYWx0c29ja19mdW5jIHNldGFsdHNvY2tfaW1wbCwK LQkJCQkJCSBzZXRfY29ubl9vYXV0aF90b2tlbl9mdW5jIHNldHRva2VuX2ltcGwpOwotCVBvc3Rn cmVzUG9sbGluZ1N0YXR1c1R5cGUgKCpmbG93KSAoUEdjb25uICpjb25uKTsKLQl2b2lkCQkoKmNs ZWFudXApIChQR2Nvbm4gKmNvbm4pOworCXZvaWQJCSgqaW5pdCkgKGxpYnBxX2dldHRleHRfZnVu YyBnZXR0ZXh0X2ltcGwpOworCWludAkJCSgqc3RhcnRfZmxvdykgKFBHY29ubiAqY29ubiwgUEdv YXV0aEJlYXJlclJlcXVlc3RWMiAqcmVxdWVzdCk7CiAKIAkvKgogCSAqIE9uIG1hY09TIG9ubHks IGxvYWQgdGhlIG1vZHVsZSB1c2luZyBpdHMgYWJzb2x1dGUgaW5zdGFsbCBwYXRoOyB0aGUKQEAg LTg4NSw5ICs4ODIsOSBAQCB1c2VfYnVpbHRpbl9mbG93KFBHY29ubiAqY29ubiwgZmVfb2F1dGhf c3RhdGUgKnN0YXRlKQogCSAqLwogCWNvbnN0IGNoYXIgKmNvbnN0IG1vZHVsZV9uYW1lID0KICNp ZiBkZWZpbmVkKF9fZGFyd2luX18pCi0JCUxJQkRJUiAiL2xpYnBxLW9hdXRoLSIgUEdfTUFKT1JW RVJTSU9OIERMU1VGRklYOworCQlMSUJESVIgIi9saWJwcS1vYXV0aCIgRExTVUZGSVg7CiAjZWxz ZQotCQkibGlicHEtb2F1dGgtIiBQR19NQUpPUlZFUlNJT04gRExTVUZGSVg7CisJCSJsaWJwcS1v YXV0aCIgRExTVUZGSVg7CiAjZW5kaWYKIAogCXN0YXRlLT5idWlsdGluX2Zsb3cgPSBkbG9wZW4o bW9kdWxlX25hbWUsIFJUTERfTk9XIHwgUlRMRF9MT0NBTCk7CkBAIC05MDMsMjIgKzkwMCwyNSBA QCB1c2VfYnVpbHRpbl9mbG93KFBHY29ubiAqY29ubiwgZmVfb2F1dGhfc3RhdGUgKnN0YXRlKQog CQlpZiAob2F1dGhfdW5zYWZlX2RlYnVnZ2luZ19lbmFibGVkKCkpCiAJCQlmcHJpbnRmKHN0ZGVy ciwgImZhaWxlZCBkbG9wZW4gZm9yIGxpYnBxLW9hdXRoOiAlc1xuIiwgZGxlcnJvcigpKTsKIAot CQlyZXR1cm4gZmFsc2U7CisJCXJldHVybiAwOwogCX0KIAogCWlmICgoaW5pdCA9IGRsc3ltKHN0 YXRlLT5idWlsdGluX2Zsb3csICJsaWJwcV9vYXV0aF9pbml0IikpID09IE5VTEwKLQkJfHwgKGZs b3cgPSBkbHN5bShzdGF0ZS0+YnVpbHRpbl9mbG93LCAicGdfZmVfcnVuX29hdXRoX2Zsb3ciKSkg PT0gTlVMTAotCQl8fCAoY2xlYW51cCA9IGRsc3ltKHN0YXRlLT5idWlsdGluX2Zsb3csICJwZ19m ZV9jbGVhbnVwX29hdXRoX2Zsb3ciKSkgPT0gTlVMTCkKKwkJfHwgKHN0YXJ0X2Zsb3cgPSBkbHN5 bShzdGF0ZS0+YnVpbHRpbl9mbG93LCAicGdfc3RhcnRfb2F1dGhiZWFyZXIiKSkgPT0gTlVMTCkK IAl7CiAJCS8qCi0JCSAqIFRoaXMgaXMgbW9yZSBvZiBhbiBlcnJvciBjb25kaXRpb24gdGhhbiB0 aGUgb25lIGFib3ZlLCBidXQgZHVlIHRvCi0JCSAqIHRoZSBkbGVycm9yKCkgdGhyZWFkc2FmZXR5 IGlzc3VlLCBsb2NrIGl0IGJlaGluZCBQR09BVVRIREVCVUcgdG9vLgorCQkgKiBUaGlzIGlzIG1v cmUgb2YgYW4gZXJyb3IgY29uZGl0aW9uIHRoYW4gdGhlIG9uZSBhYm92ZSwgYnV0IHRoZQorCQkg KiBjYXVzZSBpcyBzdGlsbCBsb2NrZWQgYmVoaW5kIFBHT0FVVEhERUJVRyBkdWUgdG8gdGhlIGRs ZXJyb3IoKQorCQkgKiB0aHJlYWRzYWZldHkgaXNzdWUuCiAJCSAqLwogCQlpZiAob2F1dGhfdW5z YWZlX2RlYnVnZ2luZ19lbmFibGVkKCkpCiAJCQlmcHJpbnRmKHN0ZGVyciwgImZhaWxlZCBkbHN5 bSBmb3IgbGlicHEtb2F1dGg6ICVzXG4iLCBkbGVycm9yKCkpOwogCiAJCWRsY2xvc2Uoc3RhdGUt PmJ1aWx0aW5fZmxvdyk7Ci0JCXJldHVybiBmYWxzZTsKKwkJc3RhdGUtPmJ1aWx0aW5fZmxvdyA9 IE5VTEw7CisKKwkJcmVxdWVzdC0+ZXJyb3IgPSBsaWJwcV9nZXR0ZXh0KCJjb3VsZCBub3QgZmlu ZCBlbnRyeSBwb2ludCBmb3IgbGlicHEtb2F1dGgiKTsKKwkJcmV0dXJuIC0xOwogCX0KIAogCS8q CkBAIC05MzcsNTcgKzkzNyw0NSBAQCB1c2VfYnVpbHRpbl9mbG93KFBHY29ubiAqY29ubiwgZmVf b2F1dGhfc3RhdGUgKnN0YXRlKQogCQkvKiBTaG91bGQgbm90IGhhcHBlbi4uLiBidXQgZG9uJ3Qg Y29udGludWUgaWYgaXQgZG9lcy4gKi8KIAkJQXNzZXJ0KGZhbHNlKTsKIAotCQlsaWJwcV9hcHBl bmRfY29ubl9lcnJvcihjb25uLCAiZmFpbGVkIHRvIGxvY2sgbXV0ZXggKCVkKSIsIGxvY2tlcnIp OwotCQlyZXR1cm4gZmFsc2U7CisJCWFwcGVuZFBRRXhwQnVmZmVyKCZjb25uLT5lcnJvck1lc3Nh Z2UsCisJCQkJCQkgICJ1c2VfYnVpbHRpbl9mbG93OiBmYWlsZWQgdG8gbG9jayBtdXRleCAoJWQp XG4iLAorCQkJCQkJICBsb2NrZXJyKTsKKworCQlyZXF1ZXN0LT5lcnJvciA9ICIiOwkvKiBzYXRp c2Z5IHJlcG9ydF9mbG93X2Vycm9yKCkgKi8KKwkJcmV0dXJuIC0xOwogCX0KIAogCWlmICghaW5p dGlhbGl6ZWQpCiAJewotCQlpbml0KHBnX2dfdGhyZWFkbG9jaywKKwkJaW5pdCgKICNpZmRlZiBF TkFCTEVfTkxTCi0JCQkgbGlicHFfZ2V0dGV4dCwKKwkJCSBsaWJwcV9nZXR0ZXh0CiAjZWxzZQot CQkJIE5VTEwsCisJCQkgTlVMTAogI2VuZGlmCi0JCQkgY29ubl9lcnJvck1lc3NhZ2UsCi0JCQkg Y29ubl9vYXV0aF9jbGllbnRfaWQsCi0JCQkgY29ubl9vYXV0aF9jbGllbnRfc2VjcmV0LAotCQkJ IGNvbm5fb2F1dGhfZGlzY292ZXJ5X3VyaSwKLQkJCSBjb25uX29hdXRoX2lzc3Vlcl9pZCwKLQkJ CSBjb25uX29hdXRoX3Njb3BlLAotCQkJIGNvbm5fc2FzbF9zdGF0ZSwKLQkJCSBzZXRfY29ubl9h bHRzb2NrLAotCQkJIHNldF9jb25uX29hdXRoX3Rva2VuKTsKKwkJCSk7CiAKIAkJaW5pdGlhbGl6 ZWQgPSB0cnVlOwogCX0KIAogCXB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZpbml0X211dGV4KTsKIAot CS8qIFNldCBvdXIgYXN5bmNocm9ub3VzIGNhbGxiYWNrcy4gKi8KLQljb25uLT5hc3luY19hdXRo ID0gZmxvdzsKLQljb25uLT5jbGVhbnVwX2FzeW5jX2F1dGggPSBjbGVhbnVwOwotCi0JcmV0dXJu IHRydWU7CisJcmV0dXJuIChzdGFydF9mbG93KGNvbm4sIHJlcXVlc3QpID09IDApID8gMSA6IC0x OwogfQogCiAjZWxzZQogCiAvKgotICogVXNlIHRoZSBidWlsdGluIGZsb3cgaW4gbGlicHEtb2F1 dGguYSAoc2VlIGxpYnBxLW9hdXRoL29hdXRoLWN1cmwuaCkuCisgKiBGb3Igc3RhdGljIGJ1aWxk cywgd2UgY2FuIGp1c3QgY2FsbCBwZ19zdGFydF9vYXV0aGJlYXJlcigpIGRpcmVjdGx5LiBJdCdz CisgKiBwcm92aWRlZCBieSBsaWJwcS1vYXV0aC5hLgogICovCiAKLWV4dGVybiBQb3N0Z3Jlc1Bv bGxpbmdTdGF0dXNUeXBlIHBnX2ZlX3J1bl9vYXV0aF9mbG93KFBHY29ubiAqY29ubik7Ci1leHRl cm4gdm9pZCBwZ19mZV9jbGVhbnVwX29hdXRoX2Zsb3coUEdjb25uICpjb25uKTsKK2V4dGVybiBp bnQJcGdfc3RhcnRfb2F1dGhiZWFyZXIoUEdjb25uICpjb25uLCBQR29hdXRoQmVhcmVyUmVxdWVz dFYyICpyZXF1ZXN0KTsKIAotYm9vbAotdXNlX2J1aWx0aW5fZmxvdyhQR2Nvbm4gKmNvbm4sIGZl X29hdXRoX3N0YXRlICpzdGF0ZSkKK3N0YXRpYyBpbnQKK3VzZV9idWlsdGluX2Zsb3coUEdjb25u ICpjb25uLCBmZV9vYXV0aF9zdGF0ZSAqc3RhdGUsIFBHb2F1dGhCZWFyZXJSZXF1ZXN0VjIgKnJl cXVlc3QpCiB7Ci0JLyogU2V0IG91ciBhc3luY2hyb25vdXMgY2FsbGJhY2tzLiAqLwotCWNvbm4t PmFzeW5jX2F1dGggPSBwZ19mZV9ydW5fb2F1dGhfZmxvdzsKLQljb25uLT5jbGVhbnVwX2FzeW5j X2F1dGggPSBwZ19mZV9jbGVhbnVwX29hdXRoX2Zsb3c7Ci0KLQlyZXR1cm4gdHJ1ZTsKKwlyZXR1 cm4gKHBnX3N0YXJ0X29hdXRoYmVhcmVyKGNvbm4sIHJlcXVlc3QpID09IDApID8gMSA6IC0xOwog fQogCiAjZW5kaWYJCQkJCQkJLyogVVNFX0xJQkNVUkwgKi8KQEAgLTEwMDAsMTEgKzk4OCwxMSBA QCB1c2VfYnVpbHRpbl9mbG93KFBHY29ubiAqY29ubiwgZmVfb2F1dGhfc3RhdGUgKnN0YXRlKQog ICogSWYgdGhlIGFwcGxpY2F0aW9uIGhhcyByZWdpc3RlcmVkIGEgY3VzdG9tIGZsb3cgaGFuZGxl ciB1c2luZwogICogUFFBVVRIREFUQV9PQVVUSF9CRUFSRVJfVE9LRU5bX1YyXSwgaXQgbWF5IGVp dGhlciByZXR1cm4gYSB0b2tlbiBpbW1lZGlhdGVseQogICogKGUuZy4gaWYgaXQgaGFzIG9uZSBj YWNoZWQgZm9yIGltbWVkaWF0ZSB1c2UpLCBvciBzZXQgdXAgZm9yIGEgc2VyaWVzIG9mCi0gKiBh c3luY2hyb25vdXMgY2FsbGJhY2tzIHdoaWNoIHdpbGwgYmUgbWFuYWdlZCBieSBydW5fdXNlcl9v YXV0aF9mbG93KCkuCisgKiBhc3luY2hyb25vdXMgY2FsbGJhY2tzIHdoaWNoIHdpbGwgYmUgbWFu YWdlZCBieSBydW5fb2F1dGhfZmxvdygpLgogICoKICAqIElmIHRoZSBkZWZhdWx0IGhhbmRsZXIg aXMgdXNlZCBpbnN0ZWFkLCBhIERldmljZSBBdXRob3JpemF0aW9uIGZsb3cgaXMgdXNlZAotICog Zm9yIHRoZSBjb25uZWN0aW9uIGlmIHN1cHBvcnQgaGFzIGJlZW4gY29tcGlsZWQgaW4uIChTZWUK LSAqIGZlLWF1dGgtb2F1dGgtY3VybC5jIGZvciBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLikKKyAq IGZvciB0aGUgY29ubmVjdGlvbiBpZiBzdXBwb3J0IGhhcyBiZWVuIGNvbXBpbGVkIGluLiAoU2Vl IG9hdXRoLWN1cmwuYyBmb3IKKyAqIGltcGxlbWVudGF0aW9uIGRldGFpbHMuKQogICoKICAqIElm IG5laXRoZXIgYSBjdXN0b20gaGFuZGxlciBub3IgdGhlIGJ1aWx0aW4gZmxvdyBpcyBhdmFpbGFi bGUsIHRoZSBjb25uZWN0aW9uCiAgKiBmYWlscyBoZXJlLgpAQCAtMTAyNiwxMSArMTAxNCwxNyBA QCBzZXR1cF90b2tlbl9yZXF1ZXN0KFBHY29ubiAqY29ubiwgZmVfb2F1dGhfc3RhdGUgKnN0YXRl KQogCiAJLyoKIAkgKiBUaGUgY2xpZW50IG1heSBoYXZlIG92ZXJyaWRkZW4gdGhlIE9BdXRoIGZs b3cuIFRyeSB0aGUgdjIgaG9vayBmaXJzdCwKLQkgKiB0aGVuIGZhbGwgYmFjayB0byB0aGUgdjEg aW1wbGVtZW50YXRpb24uCisJICogdGhlbiBmYWxsIGJhY2sgdG8gdGhlIHYxIGltcGxlbWVudGF0 aW9uLiBJZiBuZWl0aGVyIGlzIGF2YWlsYWJsZSwgdHJ5CisJICogdGhlIGJ1aWx0aW4gZmxvdy4K IAkgKi8KIAlyZXMgPSBQUWF1dGhEYXRhSG9vayhQUUFVVEhEQVRBX09BVVRIX0JFQVJFUl9UT0tF Tl9WMiwgY29ubiwgJnJlcXVlc3QpOwogCWlmIChyZXMgPT0gMCkKIAkJcmVzID0gUFFhdXRoRGF0 YUhvb2soUFFBVVRIREFUQV9PQVVUSF9CRUFSRVJfVE9LRU4sIGNvbm4sICZyZXF1ZXN0KTsKKwlp ZiAocmVzID09IDApCisJeworCQlzdGF0ZS0+YnVpbHRpbiA9IHRydWU7CisJCXJlcyA9IHVzZV9i dWlsdGluX2Zsb3coY29ubiwgc3RhdGUsICZyZXF1ZXN0KTsKKwl9CiAKIAlpZiAocmVzID4gMCkK IAl7CkBAIC0xMDY1LDIyICsxMDU5LDIxIEBAIHNldHVwX3Rva2VuX3JlcXVlc3QoUEdjb25uICpj b25uLCBmZV9vYXV0aF9zdGF0ZSAqc3RhdGUpCiAKIAkJKnJlcXVlc3RfY29weSA9IHJlcXVlc3Q7 CiAKLQkJY29ubi0+YXN5bmNfYXV0aCA9IHJ1bl91c2VyX29hdXRoX2Zsb3c7Ci0JCWNvbm4tPmNs ZWFudXBfYXN5bmNfYXV0aCA9IGNsZWFudXBfdXNlcl9vYXV0aF9mbG93OworCQljb25uLT5hc3lu Y19hdXRoID0gcnVuX29hdXRoX2Zsb3c7CisJCWNvbm4tPmNsZWFudXBfYXN5bmNfYXV0aCA9IGNs ZWFudXBfb2F1dGhfZmxvdzsKIAkJc3RhdGUtPmFzeW5jX2N0eCA9IHJlcXVlc3RfY29weTsKLQl9 Ci0JZWxzZSBpZiAocmVzIDwgMCkKLQl7Ci0JCXJlcG9ydF91c2VyX2Zsb3dfZXJyb3IoY29ubiwg JnJlcXVlc3QpOwotCQlnb3RvIGZhaWw7Ci0JfQotCWVsc2UgaWYgKCF1c2VfYnVpbHRpbl9mbG93 KGNvbm4sIHN0YXRlKSkKLQl7Ci0JCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJubyBP QXV0aCBmbG93cyBhcmUgYXZhaWxhYmxlICh0cnkgaW5zdGFsbGluZyB0aGUgbGlicHEtb2F1dGgg cGFja2FnZSkiKTsKLQkJZ290byBmYWlsOworCisJCXJldHVybiB0cnVlOwogCX0KIAotCXJldHVy biB0cnVlOworCS8qCisJICogRmFpbHVyZSBjYXNlczogZWl0aGVyIHdlIHRyaWVkIHRvIHNldCB1 cCBhIGZsb3cgYW5kIGZhaWxlZCwgb3IgdGhlcmUKKwkgKiB3YXMgbm8gZmxvdyB0byB0cnkuCisJ ICovCisJaWYgKHJlcyA8IDApCisJCXJlcG9ydF9mbG93X2Vycm9yKGNvbm4sICZyZXF1ZXN0KTsK KwllbHNlCisJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJubyBPQXV0aCBmbG93cyBh cmUgYXZhaWxhYmxlICh0cnkgaW5zdGFsbGluZyB0aGUgbGlicHEtb2F1dGggcGFja2FnZSkiKTsK IAogZmFpbDoKIAlpZiAocmVxdWVzdC52MS5jbGVhbnVwKQotLSAKMi4zNC4xCgo= --00000000000093b953064cae118a Content-Type: application/octet-stream; name="v7-0002-libpq-oauth-Never-link-against-libpq-s-encoding-f.patch" Content-Disposition: attachment; filename="v7-0002-libpq-oauth-Never-link-against-libpq-s-encoding-f.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmktv8ml2 RnJvbSBmNTlkNjQzMWIwNGY5OTVmMzcxODQyNTFlNTY4MDIzNGNhYWY3YzkxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWNvYiBDaGFtcGlvbiA8amFjb2IuY2hhbXBpb25AZW50ZXJw cmlzZWRiLmNvbT4KRGF0ZTogV2VkLCAzIERlYyAyMDI1IDA5OjUzOjQ0IC0wODAwClN1YmplY3Q6 IFtQQVRDSCB2NyAyLzVdIGxpYnBxLW9hdXRoOiBOZXZlciBsaW5rIGFnYWluc3QgbGlicHEncyBl bmNvZGluZwogZnVuY3Rpb25zCgpOb3cgdGhhdCBsaWJwcS1vYXV0aCBkb2Vzbid0IGhhdmUgdG8g bWF0Y2ggdGhlIG1ham9yIHZlcnNpb24gb2YgbGlicHEsCnNvbWUgdGhpbmdzIGluIHBnX3djaGFy LmggYXJlIHRlY2huaWNhbGx5IHVuc2FmZSBmb3IgdXMgdG8gdXNlLiAoU2VlCmI2YzdjZmFjOCBm b3IgYSBmdWxsZXIgZGlzY3Vzc2lvbi4pIFRoaXMgaXMgdW5saWtlbHkgdG8gYmUgYSBwcm9ibGVt IC0tCndlIG9ubHkgY2FyZSBhYm91dCBVVEYtOCBpbiB0aGUgY29udGV4dCBvZiBPQXV0aCByaWdo dCBub3cgLS0gYnV0IGlmCmFueW9uZSBkaWQgaW50cm9kdWNlIGEgd2F5IHRvIGhpdCBpdCwgaXQn ZCBiZSBleHRyZW1lbHkgZGlmZmljdWx0IHRvCmRlYnVnIG9yIHJlcHJvZHVjZSwgYW5kIGl0J2Qg YmUgYSBwb3RlbnRpYWwgc2VjdXJpdHkgdnVsbmVyYWJpbGl0eSB0bwpib290LgoKRGVmaW5lIFVT RV9QUklWQVRFX0VOQ09ESU5HX0ZVTkNTIHNvIHRoYXQgYW55b25lIHdobyB0cmllcyB0byBhZGQg YQpkZXBlbmRlbmN5IG9uIHRoZSBleHBvcnRlZCBBUElzIHdpbGwgc2ltcGx5IGZhaWwgdG8gbGlu ayB0aGUgc2hhcmVkCm1vZHVsZS4KClJldmlld2VkLWJ5OiBDaGFvIExpIDxsaS5ldmFuLmNoYW9A Z21haWwuY29tPgpSZXZpZXdlZC1ieTogWnNvbHQgUGFycmFnaSA8enNvbHQucGFycmFnaUBwZXJj b25hLmNvbT4KRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9DQU9ZbWklMkJtckdnJTJC bl9YMk1PTGdlV2NqM3ZfTTAwZ1I4dXpfRDdtTTh6JTNEZFgxSllWYmclNDBtYWlsLmdtYWlsLmNv bQotLS0KIHNyYy9pbnRlcmZhY2VzL2xpYnBxLW9hdXRoL21lc29uLmJ1aWxkIHwgMTAgKysrKysr KysrLQogc3JjL2ludGVyZmFjZXMvbGlicHEtb2F1dGgvTWFrZWZpbGUgICAgfCAxMSArKysrKysr KystLQogMiBmaWxlcyBjaGFuZ2VkLCAxOCBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxLW9hdXRoL21lc29uLmJ1aWxkIGIvc3Jj L2ludGVyZmFjZXMvbGlicHEtb2F1dGgvbWVzb24uYnVpbGQKaW5kZXggNjg1YTAwYWNmN2EuLmVh M2E5MDBmNGYxIDEwMDY0NAotLS0gYS9zcmMvaW50ZXJmYWNlcy9saWJwcS1vYXV0aC9tZXNvbi5i dWlsZAorKysgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS1vYXV0aC9tZXNvbi5idWlsZApAQCAtMTIs NyArMTIsMTUgQEAgbGlicHFfb2F1dGhfc291cmNlcyA9IGZpbGVzKAogbGlicHFfb2F1dGhfc29f c291cmNlcyA9IGZpbGVzKAogICAnb2F1dGgtdXRpbHMuYycsCiApCi1saWJwcV9vYXV0aF9zb19j X2FyZ3MgPSBbJy1EVVNFX0RZTkFNSUNfT0FVVEgnXQorbGlicHFfb2F1dGhfc29fY19hcmdzID0g WworICAnLURVU0VfRFlOQU1JQ19PQVVUSCcsCisKKyAgIyBBIGJpdCBvZiBmb3J3YXJkLWxvb2tp bmcgcGFyYW5vaWE6IGRvbid0IGFsbG93IGFueW9uZSB0byBhY2NpZGVudGFsbHkgZGVwZW5kCisg ICMgb24gdGhlIGVuY29kaW5nIElEcyBjb21pbmcgZnJvbSBsaWJwcS4gVGhleSdyZSBub3QgZ3Vh cmFudGVlZCB0byBtYXRjaCB0aGUKKyAgIyBJRHMgaW4gdXNlIGJ5IG91ciB2ZXJzaW9uIG9mIHBn Y29tbW9uLCBub3cgdGhhdCB3ZSBhbGxvdyB0aGUgbWFqb3IgdmVyc2lvbgorICAjIG9mIGxpYnBx IHRvIGRpZmZlciBmcm9tIHRoZSBtYWpvciB2ZXJzaW9uIG9mIGxpYnBxLW9hdXRoLgorICAnLURV U0VfUFJJVkFURV9FTkNPRElOR19GVU5DUycsCitdCiAKIGV4cG9ydF9maWxlID0gY3VzdG9tX3Rh cmdldCgnbGlicHEtb2F1dGguZXhwb3J0cycsCiAgIGt3YXJnczogZ2VuX2V4cG9ydF9rd2FyZ3Ms CmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9saWJwcS1vYXV0aC9NYWtlZmlsZSBiL3NyYy9p bnRlcmZhY2VzL2xpYnBxLW9hdXRoL01ha2VmaWxlCmluZGV4IGU5MDQ4MjU2NmIxLi4yMzEzNDkw MzRkMSAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvbGlicHEtb2F1dGgvTWFrZWZpbGUKKysr IGIvc3JjL2ludGVyZmFjZXMvbGlicHEtb2F1dGgvTWFrZWZpbGUKQEAgLTI0LDYgKzI0LDE0IEBA IG92ZXJyaWRlIHNobGliIDo9IGxpYiQoTkFNRSkkKERMU1VGRklYKQogb3ZlcnJpZGUgQ1BQRkxB R1MgOj0gLUkkKGxpYnBxX3NyY2RpcikgLUkkKHRvcF9idWlsZGRpcikvc3JjL3BvcnQgJChDUFBG TEFHUykgJChMSUJDVVJMX0NQUEZMQUdTKQogb3ZlcnJpZGUgQ0ZMQUdTICs9ICQoUFRIUkVBRF9D RkxBR1MpCiAKK292ZXJyaWRlIENQUEZMQUdTX1NITElCIDo9IC1EVVNFX0RZTkFNSUNfT0FVVEgK KworIyBBIGJpdCBvZiBmb3J3YXJkLWxvb2tpbmcgcGFyYW5vaWE6IGRvbid0IGFsbG93IGxpYnBx LW9hdXRoLnNvIHRvIGFjY2lkZW50YWxseQorIyBkZXBlbmQgb24gdGhlIGVuY29kaW5nIElEcyBj b21pbmcgZnJvbSBsaWJwcS4gVGhleSdyZSBub3QgZ3VhcmFudGVlZCB0byBtYXRjaAorIyB0aGUg SURzIGluIHVzZSBieSBvdXIgdmVyc2lvbiBvZiBwZ2NvbW1vbiwgbm93IHRoYXQgd2UgYWxsb3cg dGhlIG1ham9yIHZlcnNpb24KKyMgb2YgbGlicHEgdG8gZGlmZmVyIGZyb20gdGhlIG1ham9yIHZl cnNpb24gb2YgbGlicHEtb2F1dGguCitvdmVycmlkZSBDUFBGTEFHU19TSExJQiArPSAtRFVTRV9Q UklWQVRFX0VOQ09ESU5HX0ZVTkNTCisKIE9CSlMgPSBcCiAJJChXSU4zMlJFUykKIApAQCAtMzQs OCArNDIsNyBAQCBPQkpTX1NITElCID0gXAogCW9hdXRoLWN1cmxfc2hsaWIubyBcCiAJb2F1dGgt dXRpbHMubyBcCiAKLW9hdXRoLXV0aWxzLm86IG92ZXJyaWRlIENQUEZMQUdTICs9IC1EVVNFX0RZ TkFNSUNfT0FVVEgKLW9hdXRoLWN1cmxfc2hsaWIubzogb3ZlcnJpZGUgQ1BQRkxBR1NfU0hMSUIg Kz0gLURVU0VfRFlOQU1JQ19PQVVUSAorb2F1dGgtdXRpbHMubzogb3ZlcnJpZGUgQ1BQRkxBR1Mg Kz0gJChDUFBGTEFHU19TSExJQikKIAogIyBBZGQgc2hsaWItL3N0bGliLXNwZWNpZmljIG9iamVj dHMuCiAkKHNobGliKTogb3ZlcnJpZGUgT0JKUyArPSAkKE9CSlNfU0hMSUIpCi0tIAoyLjM0LjEK Cg== --00000000000093b953064cae118a Content-Type: application/octet-stream; name="v7-0003-libpq-Poison-the-v2-part-of-a-v1-Bearer-request.patch" Content-Disposition: attachment; filename="v7-0003-libpq-Poison-the-v2-part-of-a-v1-Bearer-request.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmktvbpf3 RnJvbSA3NWFjN2RkYzEyMDI4NDlhYTE0NGYyNWNlM2RiNTg3MDAyYmIyMjM0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWNvYiBDaGFtcGlvbiA8amFjb2IuY2hhbXBpb25AZW50ZXJw cmlzZWRiLmNvbT4KRGF0ZTogVHVlLCAzIE1hciAyMDI2IDA5OjQ1OjM3IC0wODAwClN1YmplY3Q6 IFtQQVRDSCB2NyAzLzVdIGxpYnBxOiBQb2lzb24gdGhlIHYyIHBhcnQgb2YgYSB2MSBCZWFyZXIg cmVxdWVzdAoKVGhlIG5ldyBQR29hdXRoQmVhcmVyUmVxdWVzdFYyIEFQSSAod2hpY2ggaGFzIHNp bWlsYXJpdGllcyB0byB0aGUKInN1YmNsYXNzIiBwb2ludGVyIGFyY2hpdGVjdHVyZSBpbiB1c2Ug YnkgdGhlIGJhY2tlbmQsIGZvciBOb2RlcykKY2FycmllcyB0aGUgcmlzayBvZiBhIGRldmVsb3Bl ciBpZ25vcmluZyB0aGUgdHlwZSBvZiBob29rIGluIHVzZSBhbmQKanVzdCBjYXN0aW5nIGRpcmVj dGx5IHRvIHRoZSBWMiBzdHJ1Y3QuIFRoaXMgd2lsbCBhcHBlYXIgdG8gd29yayBmaW5lIGluCjE5 LCBidXQgY3Jhc2ggKG9yIHdvcnNlKSB3aGVuIHNwZWFraW5nIHRvIGxpYnBxIDE4LgoKSG93ZXZl ciwgd2UncmUgaW4gYSB1bmlxdWUgcG9zaXRpb24gdG8gY2F0Y2ggdGhpcyBwcm9ibGVtLCBiZWNh dXNlIHdlCmhhdmUgdGlnaHQgY29udHJvbCBvdmVyIHRoZSBzdHJ1Y3QuIEFkZCBwb2lzb25pbmcg Y29kZSB0byB0aGUgdjEgcGF0aAp3aGljaCBkb2VzIHRoZSBmb2xsb3dpbmc6CgotIG1hc2tzIHRo ZSB2MiByZXF1ZXN0LT5pc3N1ZXIgcG9pbnRlciwgdG8gaG9wZWZ1bGx5IHBvaW50IGF0IG5vbnNl bnNlCiAgbWVtb3J5Ci0gYWJvcnQoKXMgaWYgdGhlIHYyIHJlcXVlc3QtPmVycm9yIGlzIGFzc2ln bmVkIGJ5IHRoZSBob29rCi0gYXR0ZW1wdHMgdG8gY292ZXIgYm90aCB3aXRoIFZBTEdSSU5EX01B S0VfTUVNX05PQUNDRVNTIGZvciB0aGUKICBkdXJhdGlvbiBvZiB0aGUgY2FsbGJhY2sgKGEgcG90 ZW50aWFsIEFkZHJlc3NTYW5pdGl6ZXIgaW1wbGVtZW50YXRpb24KICBpcyBsZWZ0IGZvciBmdXR1 cmUgd29yaykKClRoZSBzdHJ1Y3QgaXMgdW5wb2lzb25lZCBhZnRlciB0aGUgY2FsbCwgc28gd2Ug Y2FuIHN3aXRjaCBiYWNrIHRvIHRoZSB2MgppbnRlcm5hbCBpbXBsZW1lbnRhdGlvbiB3aGVuIG5l Y2Vzc2FyeS4KCkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vQ0FPWW1pJTJCbXJHZyUy Qm5fWDJNT0xnZVdjajN2X00wMGdSOHV6X0Q3bU04eiUzRGRYMUpZVmJnJTQwbWFpbC5nbWFpbC5j b20KLS0tCiBzcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1hdXRoLW9hdXRoLmggfCAgIDEgKwogc3Jj L2ludGVyZmFjZXMvbGlicHEvZmUtYXV0aC1vYXV0aC5jIHwgMTMzICsrKysrKysrKysrKysrKysr KysrKysrKystLQogMiBmaWxlcyBjaGFuZ2VkLCAxMjUgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1hdXRoLW9hdXRoLmgg Yi9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1hdXRoLW9hdXRoLmgKaW5kZXggNTExMjg0NjE0Zjcu LjJiMjJkMjNmZmRlIDEwMDY0NAotLS0gYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1hdXRoLW9h dXRoLmgKKysrIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtYXV0aC1vYXV0aC5oCkBAIC0zNCw2 ICszNCw3IEBAIHR5cGVkZWYgc3RydWN0CiAJUEdjb25uCSAgICpjb25uOwogCXZvaWQJICAgKmFz eW5jX2N0eDsKIAorCWJvb2wJCXYxOwogCWJvb2wJCWJ1aWx0aW47CiAJdm9pZAkgICAqYnVpbHRp bl9mbG93OwogfSBmZV9vYXV0aF9zdGF0ZTsKZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2xp YnBxL2ZlLWF1dGgtb2F1dGguYyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWF1dGgtb2F1dGgu YwppbmRleCBmOTMxODRmMDRkYi4uNDA4MDAxODNlYjkgMTAwNjQ0Ci0tLSBhL3NyYy9pbnRlcmZh Y2VzL2xpYnBxL2ZlLWF1dGgtb2F1dGguYworKysgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1h dXRoLW9hdXRoLmMKQEAgLTI3LDYgKzI3LDExIEBACiAjaW5jbHVkZSAiZmUtYXV0aC1vYXV0aC5o IgogI2luY2x1ZGUgIm1iL3BnX3djaGFyLmgiCiAjaW5jbHVkZSAicGdfY29uZmlnX3BhdGhzLmgi CisjaW5jbHVkZSAidXRpbHMvbWVtZGVidWcuaCIKKworc3RhdGljIGludAlkb19hc3luYyhmZV9v YXV0aF9zdGF0ZSAqc3RhdGUsIFBHb2F1dGhCZWFyZXJSZXF1ZXN0VjIgKnJlcXVlc3QpOworc3Rh dGljIHZvaWQgZG9fY2xlYW51cChmZV9vYXV0aF9zdGF0ZSAqc3RhdGUsIFBHb2F1dGhCZWFyZXJS ZXF1ZXN0VjIgKnJlcXVlc3QpOworc3RhdGljIHZvaWQgcG9pc29uX3JlcV92MihQR29hdXRoQmVh cmVyUmVxdWVzdFYyICpyZXF1ZXN0LCBib29sIHBvaXNvbik7CiAKIC8qIFRoZSBleHBvcnRlZCBP QXV0aCBjYWxsYmFjayBtZWNoYW5pc20uICovCiBzdGF0aWMgdm9pZCAqb2F1dGhfaW5pdChQR2Nv bm4gKmNvbm4sIGNvbnN0IGNoYXIgKnBhc3N3b3JkLApAQCAtNzQxLDkgKzc0Niw3IEBAIHJ1bl9v YXV0aF9mbG93KFBHY29ubiAqY29ubikKIAkJcmV0dXJuIFBHUkVTX1BPTExJTkdfRkFJTEVEOwog CX0KIAotCXN0YXR1cyA9IHJlcXVlc3QtPnYxLmFzeW5jKGNvbm4sCi0JCQkJCQkJICAgKFBHb2F1 dGhCZWFyZXJSZXF1ZXN0ICopIHJlcXVlc3QsCi0JCQkJCQkJICAgJmNvbm4tPmFsdHNvY2spOwor CXN0YXR1cyA9IGRvX2FzeW5jKHN0YXRlLCByZXF1ZXN0KTsKIAogCWlmIChzdGF0dXMgPT0gUEdS RVNfUE9MTElOR19GQUlMRUQpCiAJewpAQCAtODA0LDggKzgwNyw3IEBAIGNsZWFudXBfb2F1dGhf ZmxvdyhQR2Nvbm4gKmNvbm4pCiAKIAlBc3NlcnQocmVxdWVzdCk7CiAKLQlpZiAocmVxdWVzdC0+ djEuY2xlYW51cCkKLQkJcmVxdWVzdC0+djEuY2xlYW51cChjb25uLCAoUEdvYXV0aEJlYXJlclJl cXVlc3QgKikgcmVxdWVzdCk7CisJZG9fY2xlYW51cChzdGF0ZSwgcmVxdWVzdCk7CiAJY29ubi0+ YWx0c29jayA9IFBHSU5WQUxJRF9TT0NLRVQ7CiAKIAlmcmVlKHJlcXVlc3QpOwpAQCAtMTAxOSw3 ICsxMDIxLDE0IEBAIHNldHVwX3Rva2VuX3JlcXVlc3QoUEdjb25uICpjb25uLCBmZV9vYXV0aF9z dGF0ZSAqc3RhdGUpCiAJICovCiAJcmVzID0gUFFhdXRoRGF0YUhvb2soUFFBVVRIREFUQV9PQVVU SF9CRUFSRVJfVE9LRU5fVjIsIGNvbm4sICZyZXF1ZXN0KTsKIAlpZiAocmVzID09IDApCisJewor CQlwb2lzb25fcmVxX3YyKCZyZXF1ZXN0LCB0cnVlKTsKKwogCQlyZXMgPSBQUWF1dGhEYXRhSG9v ayhQUUFVVEhEQVRBX09BVVRIX0JFQVJFUl9UT0tFTiwgY29ubiwgJnJlcXVlc3QpOworCQlzdGF0 ZS0+djEgPSAocmVzICE9IDApOworCisJCXBvaXNvbl9yZXFfdjIoJnJlcXVlc3QsIGZhbHNlKTsK Kwl9CiAJaWYgKHJlcyA9PSAwKQogCXsKIAkJc3RhdGUtPmJ1aWx0aW4gPSB0cnVlOwpAQCAtMTA0 NSw4ICsxMDU0LDcgQEAgc2V0dXBfdG9rZW5fcmVxdWVzdChQR2Nvbm4gKmNvbm4sIGZlX29hdXRo X3N0YXRlICpzdGF0ZSkKIAkJCX0KIAogCQkJLyogc2hvcnQtY2lyY3VpdCAqLwotCQkJaWYgKHJl cXVlc3QudjEuY2xlYW51cCkKLQkJCQlyZXF1ZXN0LnYxLmNsZWFudXAoY29ubiwgKFBHb2F1dGhC ZWFyZXJSZXF1ZXN0ICopICZyZXF1ZXN0KTsKKwkJCWRvX2NsZWFudXAoc3RhdGUsICZyZXF1ZXN0 KTsKIAkJCXJldHVybiB0cnVlOwogCQl9CiAKQEAgLTEwNzYsOCArMTA4NCw3IEBAIHNldHVwX3Rv a2VuX3JlcXVlc3QoUEdjb25uICpjb25uLCBmZV9vYXV0aF9zdGF0ZSAqc3RhdGUpCiAJCWxpYnBx X2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJubyBPQXV0aCBmbG93cyBhcmUgYXZhaWxhYmxlICh0 cnkgaW5zdGFsbGluZyB0aGUgbGlicHEtb2F1dGggcGFja2FnZSkiKTsKIAogZmFpbDoKLQlpZiAo cmVxdWVzdC52MS5jbGVhbnVwKQotCQlyZXF1ZXN0LnYxLmNsZWFudXAoY29ubiwgKFBHb2F1dGhC ZWFyZXJSZXF1ZXN0ICopICZyZXF1ZXN0KTsKKwlkb19jbGVhbnVwKHN0YXRlLCAmcmVxdWVzdCk7 CiAJcmV0dXJuIGZhbHNlOwogfQogCkBAIC0xNDI4LDMgKzE0MzUsMTExIEBAIG9hdXRoX3Vuc2Fm ZV9kZWJ1Z2dpbmdfZW5hYmxlZCh2b2lkKQogCiAJcmV0dXJuIChlbnYgJiYgc3RyY21wKGVudiwg IlVOU0FGRSIpID09IDApOwogfQorCisvKgorICogSG9vayB2MSBQb2lzb25pbmcKKyAqCisgKiBU cnkgdG8gY2F0Y2ggbWlzdXNlcyBvZiB0aGUgdjEgUFFBVVRIREFUQV9PQVVUSF9CRUFSRVJfVE9L RU4gaG9vayBhbmQgaXRzCisgKiBjYWxsYmFja3MsIHdoaWNoIGFyZSBub3QgYWxsb3dlZCB0byBk b3duY2FzdCB0aGVpciByZXF1ZXN0IGFyZ3VtZW50IHRvCisgKiBQR29hdXRoQmVhcmVyUmVxdWVz dFYyLiAoU3VjaCBjbGllbnRzIG1heSBjcmFzaCBvciB3b3JzZSB3aGVuIHNwZWFraW5nIHRvCisg KiBsaWJwcSAxOC4pCisgKgorICogVGhpcyBhdHRlbXB0cyB0byB1c2UgVmFsZ3JpbmQgaG9va3Ms IGlmIHByZXNlbnQsIHRvIG1hcmsgdGhlIGV4dHJhIG1lbWJlcnMgYXMKKyAqIGluYWNjZXNzaWJs ZS4gRm9yIHVuaW5zdHJ1bWVudGVkIGJ1aWxkcywgaXQgYWxzbyBtdW5nZXMgcmVxdWVzdC0+aXNz dWVyIHRvCisgKiB0cnkgdG8gY3Jhc2ggY2xpZW50cyB0aGF0IHBlcmZvcm0gc3RyaW5nIG9wZXJh dGlvbnMsIGFuZCBpdCBhYm9ydHMgaWYKKyAqIHJlcXVlc3QtPmVycm9yIGlzIHNldC4KKyAqLwor CisjZGVmaW5lIE1BU0tfQklUUyAoKHVpbnRwdHJfdCkgMHg1NWFhNTVhYTU1YWE1NWFhKQorI2Rl ZmluZSBQT0lTT05fTUFTSyhwdHIpICgodm9pZCAqKSAoKCh1aW50cHRyX3QpIHB0cikgXiBNQVNL X0JJVFMpKQorCisvKgorICogV29ya2hvcnNlIGZvciB2MiByZXF1ZXN0IHBvaXNvbmluZy4gVGhp cyBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IHR3aWNlOiBvbmNlCisgKiB0byBwb2lzb24sIG9uY2Ug dG8gdW5wb2lzb24uCisgKgorICogTkI6IFVucG9pc29uaW5nIG11c3QgcmVzdG9yZSB0aGUgcmVx dWVzdCB0byBpdHMgb3JpZ2luYWwgc3RhdGUsIGJlY2F1c2Ugd2UKKyAqIG1pZ2h0IHN0aWxsIHN3 aXRjaCBiYWNrIHRvIGEgdjIgaW1wbGVtZW50YXRpb24gaW50ZXJuYWxseS4gRG9uJ3QgZG8gYW55 dGhpbmcKKyAqIGRlc3RydWN0aXZlIGR1cmluZyB0aGUgcG9pc29uIG9wZXJhdGlvbi4KKyAqLwor c3RhdGljIHZvaWQKK3BvaXNvbl9yZXFfdjIoUEdvYXV0aEJlYXJlclJlcXVlc3RWMiAqcmVxdWVz dCwgYm9vbCBwb2lzb24pCit7CisJdm9pZAkgICAqY29uc3QgYmFzZSA9IChjaGFyICopIHJlcXVl c3QgKyBzaXplb2YocmVxdWVzdC0+djEpOworCWNvbnN0IHNpemVfdCBsZW4gPSBzaXplb2YoKnJl cXVlc3QpIC0gc2l6ZW9mKHJlcXVlc3QtPnYxKTsKKworCWlmIChwb2lzb24pCisJeworCQkvKiBQ b2lzb24gcmVxdWVzdC0+aXNzdWVyIHdpdGggYSBtYXNrIHRvIGhlbHAgdW5pbnN0cnVtZW50ZWQg YnVpbGRzLiAqLworCQlyZXF1ZXN0LT5pc3N1ZXIgPSBQT0lTT05fTUFTSyhyZXF1ZXN0LT5pc3N1 ZXIpOworCisJCVZBTEdSSU5EX01BS0VfTUVNX05PQUNDRVNTKGJhc2UsIGxlbik7CisJfQorCWVs c2UKKwl7CisJCS8qCisJCSAqIFhYWCBVc2luZyBERUZJTkVEIGhlcmUgaXMgdGVjaG5pY2FsbHkg dG9vIGxheDsgd2UgbWlnaHQgY2F0Y2gKKwkJICogc3RydWN0IHBhZGRpbmcgaW4gdGhlIGJsYXN0 IHJhZGl1cy4gQnV0IHNpbmNlIHRoaXMgQVBJIGhhcyB0bworCQkgKiBwb2lzb24gc3RhY2sgYWRk cmVzc2VzLCBhbmQgVmFsZ3JpbmQgY2FuJ3QgdHJhY2svbWFuYWdlIHVuZGVmaW5lZAorCQkgKiBz dGFjayByZWdpb25zLCB3ZSBjYW4ndCBiZSBhbnkgc3RyaWN0ZXIgd2l0aG91dCB0cmFja2luZyB0 aGUKKwkJICogb3JpZ2luYWwgc3RhdGUgb2YgdGhlIG1lbW9yeS4KKwkJICovCisJCVZBTEdSSU5E X01BS0VfTUVNX0RFRklORUQoYmFzZSwgbGVuKTsKKworCQkvKiBVbmRvIG91ciBtYXNrLiAqLwor CQlyZXF1ZXN0LT5pc3N1ZXIgPSBQT0lTT05fTUFTSyhyZXF1ZXN0LT5pc3N1ZXIpOworCisJCS8q CisJCSAqIEZvciB1bmluc3RydW1lbnRlZCBidWlsZHMsIG1ha2Ugc3VyZSByZXF1ZXN0LT5lcnJv ciB3YXNuJ3QgdG91Y2hlZC4KKwkJICovCisJCWlmIChyZXF1ZXN0LT5lcnJvcikKKwkJeworCQkJ ZnByaW50ZihzdGRlcnIsCisJCQkJCSJhYm9ydCEgb3V0LW9mLWJvdW5kcyB3cml0ZSB0byBQR29h dXRoQmVhcmVyUmVxdWVzdCBieSBQUUFVVEhEQVRBX09BVVRIX0JFQVJFUl9UT0tFTiBob29rXG4i KTsKKwkJCWFib3J0KCk7CisJCX0KKwl9Cit9CisKKy8qCisgKiBXcmFwcGVyIGFyb3VuZCBQR29h dXRoQmVhcmVyUmVxdWVzdC5hc3luYygpIHdoaWNoIGFwcGxpZXMgcG9pc29uIGR1cmluZyB0aGUK KyAqIGNhbGxiYWNrIHdoZW4gbmVjZXNzYXJ5LgorICovCitzdGF0aWMgaW50Citkb19hc3luYyhm ZV9vYXV0aF9zdGF0ZSAqc3RhdGUsIFBHb2F1dGhCZWFyZXJSZXF1ZXN0VjIgKnJlcXVlc3QpCit7 CisJUEdjb25uCSAgICpjb25uID0gc3RhdGUtPmNvbm47CisJaW50CQkJcmV0OworCisJQXNzZXJ0 KHJlcXVlc3QtPnYxLmFzeW5jKTsKKworCWlmIChzdGF0ZS0+djEpCisJCXBvaXNvbl9yZXFfdjIo cmVxdWVzdCwgdHJ1ZSk7CisKKwlyZXQgPSByZXF1ZXN0LT52MS5hc3luYyhjb25uLAorCQkJCQkJ CShQR29hdXRoQmVhcmVyUmVxdWVzdCAqKSByZXF1ZXN0LAorCQkJCQkJCSZjb25uLT5hbHRzb2Nr KTsKKworCWlmIChzdGF0ZS0+djEpCisJCXBvaXNvbl9yZXFfdjIocmVxdWVzdCwgZmFsc2UpOwor CisJcmV0dXJuIHJldDsKK30KKworLyoKKyAqIFNpbWlsYXIgd3JhcHBlciBmb3IgdGhlIG9wdGlv bmFsIFBHb2F1dGhCZWFyZXJSZXF1ZXN0LmNsZWFudXAoKSBjYWxsYmFjay4KKyAqIERvZXMgbm90 aGluZyBpZiBvbmUgaXMgbm90IGRlZmluZWQuCisgKi8KK3N0YXRpYyB2b2lkCitkb19jbGVhbnVw KGZlX29hdXRoX3N0YXRlICpzdGF0ZSwgUEdvYXV0aEJlYXJlclJlcXVlc3RWMiAqcmVxdWVzdCkK K3sKKwlpZiAoIXJlcXVlc3QtPnYxLmNsZWFudXApCisJCXJldHVybjsKKworCWlmIChzdGF0ZS0+ djEpCisJCXBvaXNvbl9yZXFfdjIocmVxdWVzdCwgdHJ1ZSk7CisKKwlyZXF1ZXN0LT52MS5jbGVh bnVwKHN0YXRlLT5jb25uLCAoUEdvYXV0aEJlYXJlclJlcXVlc3QgKikgcmVxdWVzdCk7CisKKwlp ZiAoc3RhdGUtPnYxKQorCQlwb2lzb25fcmVxX3YyKHJlcXVlc3QsIGZhbHNlKTsKK30KLS0gCjIu MzQuMQoK --00000000000093b953064cae118a Content-Type: application/octet-stream; name="v7-0004-libpq-Allow-developers-to-reimplement-libpq-oauth.patch" Content-Disposition: attachment; filename="v7-0004-libpq-Allow-developers-to-reimplement-libpq-oauth.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmktvefy4 RnJvbSA3YTQzMzk4YzkwYWM5ZWQyNDcxODc5NzYyZGM2NjBhOWYyM2Q3MDBkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWNvYiBDaGFtcGlvbiA8amFjb2IuY2hhbXBpb25AZW50ZXJw cmlzZWRiLmNvbT4KRGF0ZTogRnJpLCA2IE1hciAyMDI2IDE0OjE4OjQ5IC0wODAwClN1YmplY3Q6 IFtQQVRDSCB2NyA0LzVdIGxpYnBxOiBBbGxvdyBkZXZlbG9wZXJzIHRvIHJlaW1wbGVtZW50IGxp YnBxLW9hdXRoCgpGb3IgUEcxOSwgc2luY2Ugd2Ugd29uJ3QgaGF2ZSB0aGUgYWJpbGl0eSB0byBv ZmZpY2lhbGx5IHN3aXRjaCBvdXQgZmxvdwpwbHVnaW5zLCByZWxheCB0aGUgZmxvdy1sb2FkaW5n IGNvZGUgdG8gbm90IHJlcXVpcmUgdGhlIGludGVybmFsIGluaXQKZnVuY3Rpb24uIE1vZHVsZXMg dGhhdCBkb24ndCBoYXZlIG9uZSB3aWxsIGJlIHRyZWF0ZWQgYXMgY3VzdG9tIHVzZXIKZmxvd3Mg aW4gZXJyb3IgbWVzc2FnZXMuCgpUaGlzIHdpbGwgbGV0IGJsZWVkaW5nLWVkZ2UgZGV2ZWxvcGVy cyBtb3JlIGVhc2lseSB0ZXN0IG91dCB0aGUgQVBJIGFuZApwcm92aWRlIGZlZWRiYWNrIGZvciBQ RzIwLCBieSB0ZWxsaW5nIHRoZSBydW50aW1lIGxpbmtlciB0byBmaW5kIGEKZGlmZmVyZW50IGxp YnBxLW9hdXRoLiBJdCByZW1haW5zIHVuZG9jdW1lbnRlZCBmb3IgZW5kIHVzZXJzLgoKRGlzY3Vz c2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9DQU9ZbWklMkJtckdnJTJCbl9YMk1PTGdlV2NqM3Zf TTAwZ1I4dXpfRDdtTTh6JTNEZFgxSllWYmclNDBtYWlsLmdtYWlsLmNvbQotLS0KIHNyYy9pbnRl cmZhY2VzL2xpYnBxL2ZlLWF1dGgtb2F1dGguaCB8ICAyICstCiBzcmMvaW50ZXJmYWNlcy9saWJw cS9mZS1hdXRoLW9hdXRoLmMgfCA3MSArKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tCiAyIGZp bGVzIGNoYW5nZWQsIDQyIGluc2VydGlvbnMoKyksIDMxIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWF1dGgtb2F1dGguaCBiL3NyYy9pbnRlcmZhY2Vz L2xpYnBxL2ZlLWF1dGgtb2F1dGguaAppbmRleCAyYjIyZDIzZmZkZS4uODcyZjVkZjU1MWEgMTAw NjQ0Ci0tLSBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWF1dGgtb2F1dGguaAorKysgYi9zcmMv aW50ZXJmYWNlcy9saWJwcS9mZS1hdXRoLW9hdXRoLmgKQEAgLTM2LDcgKzM2LDcgQEAgdHlwZWRl ZiBzdHJ1Y3QKIAogCWJvb2wJCXYxOwogCWJvb2wJCWJ1aWx0aW47Ci0Jdm9pZAkgICAqYnVpbHRp bl9mbG93OworCXZvaWQJICAgKmZsb3dfbW9kdWxlOwogfSBmZV9vYXV0aF9zdGF0ZTsKIAogZXh0 ZXJuIHZvaWQgcHFDbGVhck9BdXRoVG9rZW4oUEdjb25uICpjb25uKTsKZGlmZiAtLWdpdCBhL3Ny Yy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWF1dGgtb2F1dGguYyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBx L2ZlLWF1dGgtb2F1dGguYwppbmRleCA0MDgwMDE4M2ViOS4uZGZmMDBkZmM2YzkgMTAwNjQ0Ci0t LSBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWF1dGgtb2F1dGguYworKysgYi9zcmMvaW50ZXJm YWNlcy9saWJwcS9mZS1hdXRoLW9hdXRoLmMKQEAgLTg4OSw4ICs4ODksOCBAQCB1c2VfYnVpbHRp bl9mbG93KFBHY29ubiAqY29ubiwgZmVfb2F1dGhfc3RhdGUgKnN0YXRlLCBQR29hdXRoQmVhcmVy UmVxdWVzdFYyICpyZQogCQkibGlicHEtb2F1dGgiIERMU1VGRklYOwogI2VuZGlmCiAKLQlzdGF0 ZS0+YnVpbHRpbl9mbG93ID0gZGxvcGVuKG1vZHVsZV9uYW1lLCBSVExEX05PVyB8IFJUTERfTE9D QUwpOwotCWlmICghc3RhdGUtPmJ1aWx0aW5fZmxvdykKKwlzdGF0ZS0+Zmxvd19tb2R1bGUgPSBk bG9wZW4obW9kdWxlX25hbWUsIFJUTERfTk9XIHwgUlRMRF9MT0NBTCk7CisJaWYgKCFzdGF0ZS0+ Zmxvd19tb2R1bGUpCiAJewogCQkvKgogCQkgKiBGb3IgZW5kIHVzZXJzLCB0aGlzIHByb2JhYmx5 IGlzbid0IGFuIGVycm9yIGNvbmRpdGlvbiwgaXQganVzdApAQCAtOTA1LDggKzkwNSwxNiBAQCB1 c2VfYnVpbHRpbl9mbG93KFBHY29ubiAqY29ubiwgZmVfb2F1dGhfc3RhdGUgKnN0YXRlLCBQR29h dXRoQmVhcmVyUmVxdWVzdFYyICpyZQogCQlyZXR1cm4gMDsKIAl9CiAKLQlpZiAoKGluaXQgPSBk bHN5bShzdGF0ZS0+YnVpbHRpbl9mbG93LCAibGlicHFfb2F1dGhfaW5pdCIpKSA9PSBOVUxMCi0J CXx8IChzdGFydF9mbG93ID0gZGxzeW0oc3RhdGUtPmJ1aWx0aW5fZmxvdywgInBnX3N0YXJ0X29h dXRoYmVhcmVyIikpID09IE5VTEwpCisJLyoKKwkgKiBPdXIgbGlicHEtb2F1dGguc28gcHJvdmlk ZXMgYSBzcGVjaWFsIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uIGZvciBsaWJwcQorCSAqIGludGVn cmF0aW9uLiBJZiB3ZSBkb24ndCBmaW5kIHRoaXMsIGFzc3VtZSB0aGF0IGEgY3VzdG9tIG1vZHVs ZSBpcyBpbgorCSAqIHVzZSBpbnN0ZWFkLgorCSAqLworCWluaXQgPSBkbHN5bShzdGF0ZS0+Zmxv d19tb2R1bGUsICJsaWJwcV9vYXV0aF9pbml0Iik7CisJaWYgKCFpbml0KQorCQlzdGF0ZS0+YnVp bHRpbiA9IGZhbHNlOyAvKiBhZGp1c3Qgb3VyIGVycm9yIG1lc3NhZ2VzICovCisKKwlpZiAoKHN0 YXJ0X2Zsb3cgPSBkbHN5bShzdGF0ZS0+Zmxvd19tb2R1bGUsICJwZ19zdGFydF9vYXV0aGJlYXJl ciIpKSA9PSBOVUxMKQogCXsKIAkJLyoKIAkJICogVGhpcyBpcyBtb3JlIG9mIGFuIGVycm9yIGNv bmRpdGlvbiB0aGFuIHRoZSBvbmUgYWJvdmUsIGJ1dCB0aGUKQEAgLTkxNiw4ICs5MjQsOCBAQCB1 c2VfYnVpbHRpbl9mbG93KFBHY29ubiAqY29ubiwgZmVfb2F1dGhfc3RhdGUgKnN0YXRlLCBQR29h dXRoQmVhcmVyUmVxdWVzdFYyICpyZQogCQlpZiAob2F1dGhfdW5zYWZlX2RlYnVnZ2luZ19lbmFi bGVkKCkpCiAJCQlmcHJpbnRmKHN0ZGVyciwgImZhaWxlZCBkbHN5bSBmb3IgbGlicHEtb2F1dGg6 ICVzXG4iLCBkbGVycm9yKCkpOwogCi0JCWRsY2xvc2Uoc3RhdGUtPmJ1aWx0aW5fZmxvdyk7Ci0J CXN0YXRlLT5idWlsdGluX2Zsb3cgPSBOVUxMOworCQlkbGNsb3NlKHN0YXRlLT5mbG93X21vZHVs ZSk7CisJCXN0YXRlLT5mbG93X21vZHVsZSA9IE5VTEw7CiAKIAkJcmVxdWVzdC0+ZXJyb3IgPSBs aWJwcV9nZXR0ZXh0KCJjb3VsZCBub3QgZmluZCBlbnRyeSBwb2ludCBmb3IgbGlicHEtb2F1dGgi KTsKIAkJcmV0dXJuIC0xOwpAQCAtOTI4LDM5ICs5MzYsNDIgQEAgdXNlX2J1aWx0aW5fZmxvdyhQ R2Nvbm4gKmNvbm4sIGZlX29hdXRoX3N0YXRlICpzdGF0ZSwgUEdvYXV0aEJlYXJlclJlcXVlc3RW MiAqcmUKIAkgKiBwZXJtYW5lbnRseS4KIAkgKi8KIAotCS8qCi0JICogV2UgbmVlZCB0byBpbmpl Y3QgbmVjZXNzYXJ5IGZ1bmN0aW9uIHBvaW50ZXJzIGludG8gdGhlIG1vZHVsZS4gVGhpcwotCSAq IG9ubHkgbmVlZHMgdG8gYmUgZG9uZSBvbmNlIC0tIGV2ZW4gaWYgdGhlIHBvaW50ZXJzIGFyZSBj b25zdGFudCwKLQkgKiBhc3NpZ25pbmcgdGhlbSB3aGlsZSBhbm90aGVyIHRocmVhZCBpcyBleGVj dXRpbmcgdGhlIGZsb3dzIGZlZWxzIGxpa2UKLQkgKiB0ZW1wdGluZyBmYXRlLgotCSAqLwotCWlm ICgobG9ja2VyciA9IHB0aHJlYWRfbXV0ZXhfbG9jaygmaW5pdF9tdXRleCkpICE9IDApCisJaWYg KGluaXQpCiAJewotCQkvKiBTaG91bGQgbm90IGhhcHBlbi4uLiBidXQgZG9uJ3QgY29udGludWUg aWYgaXQgZG9lcy4gKi8KLQkJQXNzZXJ0KGZhbHNlKTsKKwkJLyoKKwkJICogV2UgbmVlZCB0byBp bmplY3QgbmVjZXNzYXJ5IGZ1bmN0aW9uIHBvaW50ZXJzIGludG8gdGhlIG1vZHVsZS4gVGhpcwor CQkgKiBvbmx5IG5lZWRzIHRvIGJlIGRvbmUgb25jZSAtLSBldmVuIGlmIHRoZSBwb2ludGVycyBh cmUgY29uc3RhbnQsCisJCSAqIGFzc2lnbmluZyB0aGVtIHdoaWxlIGFub3RoZXIgdGhyZWFkIGlz IGV4ZWN1dGluZyB0aGUgZmxvd3MgZmVlbHMKKwkJICogbGlrZSB0ZW1wdGluZyBmYXRlLgorCQkg Ki8KKwkJaWYgKChsb2NrZXJyID0gcHRocmVhZF9tdXRleF9sb2NrKCZpbml0X211dGV4KSkgIT0g MCkKKwkJeworCQkJLyogU2hvdWxkIG5vdCBoYXBwZW4uLi4gYnV0IGRvbid0IGNvbnRpbnVlIGlm IGl0IGRvZXMuICovCisJCQlBc3NlcnQoZmFsc2UpOwogCi0JCWFwcGVuZFBRRXhwQnVmZmVyKCZj b25uLT5lcnJvck1lc3NhZ2UsCi0JCQkJCQkgICJ1c2VfYnVpbHRpbl9mbG93OiBmYWlsZWQgdG8g bG9jayBtdXRleCAoJWQpXG4iLAotCQkJCQkJICBsb2NrZXJyKTsKKwkJCWFwcGVuZFBRRXhwQnVm ZmVyKCZjb25uLT5lcnJvck1lc3NhZ2UsCisJCQkJCQkJICAidXNlX2J1aWx0aW5fZmxvdzogZmFp bGVkIHRvIGxvY2sgbXV0ZXggKCVkKVxuIiwKKwkJCQkJCQkgIGxvY2tlcnIpOwogCi0JCXJlcXVl c3QtPmVycm9yID0gIiI7CS8qIHNhdGlzZnkgcmVwb3J0X2Zsb3dfZXJyb3IoKSAqLwotCQlyZXR1 cm4gLTE7Ci0JfQorCQkJcmVxdWVzdC0+ZXJyb3IgPSAiIjsJLyogc2F0aXNmeSByZXBvcnRfZmxv d19lcnJvcigpICovCisJCQlyZXR1cm4gLTE7CisJCX0KIAotCWlmICghaW5pdGlhbGl6ZWQpCi0J ewotCQlpbml0KAorCQlpZiAoIWluaXRpYWxpemVkKQorCQl7CisJCQlpbml0KAogI2lmZGVmIEVO QUJMRV9OTFMKLQkJCSBsaWJwcV9nZXR0ZXh0CisJCQkJIGxpYnBxX2dldHRleHQKICNlbHNlCi0J CQkgTlVMTAorCQkJCSBOVUxMCiAjZW5kaWYKLQkJCSk7CisJCQkJKTsKIAotCQlpbml0aWFsaXpl ZCA9IHRydWU7Ci0JfQorCQkJaW5pdGlhbGl6ZWQgPSB0cnVlOworCQl9CiAKLQlwdGhyZWFkX211 dGV4X3VubG9jaygmaW5pdF9tdXRleCk7CisJCXB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZpbml0X211 dGV4KTsKKwl9CiAKIAlyZXR1cm4gKHN0YXJ0X2Zsb3coY29ubiwgcmVxdWVzdCkgPT0gMCkgPyAx IDogLTE7CiB9Ci0tIAoyLjM0LjEKCg== --00000000000093b953064cae118a Content-Type: application/octet-stream; name="v7-0005-WIP-Introduce-third-party-OAuth-flow-plugins.patch" Content-Disposition: attachment; filename="v7-0005-WIP-Introduce-third-party-OAuth-flow-plugins.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmktvifm5 RnJvbSBiM2RhZjMxNDBmOGY5NTdlZGY0OGY4MmRhMTgyYTQyZWNhNDhlYzI1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWNvYiBDaGFtcGlvbiA8amFjb2IuY2hhbXBpb25AZW50ZXJw cmlzZWRiLmNvbT4KRGF0ZTogV2VkLCAzIERlYyAyMDI1IDE1OjQ3OjIzIC0wODAwClN1YmplY3Q6 IFtQQVRDSCB2NyA1LzVdIFdJUDogSW50cm9kdWNlIHRoaXJkLXBhcnR5IE9BdXRoIGZsb3cgcGx1 Z2lucz8KCltOb3QgaW50ZW5kZWQgZm9yIFBHMTkuXQoKVGhpcyBleHBlcmltZW50YWwgY29tbWl0 IHByb21vdGVzIHRoZSBwZ19zdGFydF9vYXV0aGJlYXJlciBBUEkgdG8gYQpwdWJsaWMgaGVhZGVy IChsaWJwcS1vYXV0aC5oKSBhbmQgYWRkcyBhIFBHT0FVVEhNT0RVTEUgZW52aXJvbm1lbnQKdmFy aWFibGUgdGhhdCBvdmVycmlkZXMgdGhlIGxvYWQgcGF0aCBmb3IgdGhlIHBsdWdpbiwgYWxsb3dp bmcgdXNlcnMgdG8KcHJvdmlkZSB0aGVpciBvd24uIEl0J3MgcHJvYmFibHkgbm90IGEgZ29vZCBz b2x1dGlvbjsgaXQgcHJvdmlkZXMgYWxtb3N0Cm5vdGhpbmcgb3ZlciBMRF9MSUJSQVJZX1BBVEgg KG90aGVyIHRoYW4gbm90IGJlaW5nIExEX0xJQlJBUllfUEFUSCkuCgpUaGlzIGlzIGEgcmVsYXRp dmVseSBzbWFsbCBhbW91bnQgb2YgaW1wbGVtZW50YXRpb24gY2hhbmdlLCBidXQKdW5mb3J0dW5h dGVseSB0aGUgdGVzdHMgaGF2ZSBhIGxhcmdlIGFtb3VudCBvZiBjb2RlIG1vdGlvbiB0byBiZSBh YmxlIHRvCnNoYXJlIGxvZ2ljIGJldHdlZW4gdGhlIHRlc3QgZXhlY3V0YWJsZSBhbmQgcGx1Z2lu LiBJIG1pZ2h0IG5lZWQgdG8Kc3BsaXQgdGhhdCBpbnRvIG11bHRpcGxlIHNxdWFzaCEgY29tbWl0 cyB0byBtYWtlIGl0IG1vcmUgZWFzaWx5CnJldmlld2FibGUuCgpUT0RPOiBmaWd1cmUgb3V0IFBH RExMRVhQT1JULCB3aGljaCB3ZSBkbyBub3QgY3VycmVudGx5IHByb3ZpZGUgcHVibGljbHkKVE9E TzogbG9jayBkb3duIFBHT0FVVEhNT0RVTEUgYXMgbmVjZXNzYXJ5IHRvIGF2b2lkIGludHJvZHVj aW5nIGV4Y2l0aW5nCiAgICAgIG5ldyB2dWxuZXJhYmlsaXRpZXMKVE9ETzogaG93IGhhcmQgd291 bGQgaXQgYmUgdG8gc3VwcG9ydCBXaW5kb3dzIGhlcmU/CgpSZXZpZXdlZC1ieTogWnNvbHQgUGFy cmFnaSA8enNvbHQucGFycmFnaUBwZXJjb25hLmNvbT4KRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0 Z3IuZXMvbS9DQU9ZbWklMkJtckdnJTJCbl9YMk1PTGdlV2NqM3ZfTTAwZ1I4dXpfRDdtTTh6JTNE ZFgxSllWYmclNDBtYWlsLmdtYWlsLmNvbQotLS0KIHNyYy9pbnRlcmZhY2VzL2xpYnBxL21lc29u LmJ1aWxkICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW50ZXJmYWNlcy9saWJwcS9NYWtlZmls ZSAgICAgICAgICAgICAgICAgfCAgIDIgKwogc3JjL2ludGVyZmFjZXMvbGlicHEtb2F1dGgvb2F1 dGgtY3VybC5oICAgICAgIHwgIDI0IC0tCiBzcmMvaW50ZXJmYWNlcy9saWJwcS9saWJwcS1vYXV0 aC5oICAgICAgICAgICAgfCAgNTIgKysrCiBzcmMvaW50ZXJmYWNlcy9saWJwcS1vYXV0aC9vYXV0 aC1jdXJsLmMgICAgICAgfCAgIDIgKy0KIHNyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWF1dGgtb2F1 dGguYyAgICAgICAgICB8ICA0NiArKy0KIHNyYy90ZXN0L21vZHVsZXMvb2F1dGhfdmFsaWRhdG9y L21lc29uLmJ1aWxkICB8ICAxNSArCiBzcmMvdGVzdC9tb2R1bGVzL29hdXRoX3ZhbGlkYXRvci9N YWtlZmlsZSAgICAgfCAgMTIgKy0KIC4uLi9vYXV0aF92YWxpZGF0b3Ivb2F1dGhfdGVzdF9jb21t b24uaCAgICAgICB8ICAyNiArKwogc3JjL3Rlc3QvbW9kdWxlcy9vYXV0aF92YWxpZGF0b3Ivb2F1 dGhfZmxvdy5jIHwgIDcyICsrKysKIC4uLi9vYXV0aF92YWxpZGF0b3Ivb2F1dGhfaG9va19jbGll bnQuYyAgICAgICB8IDMxOCArLS0tLS0tLS0tLS0tLS0KIC4uLi9vYXV0aF92YWxpZGF0b3Ivb2F1 dGhfdGVzdF9jb21tb24uYyAgICAgICB8IDM3MyArKysrKysrKysrKysrKysrKysKIC4uLi9tb2R1 bGVzL29hdXRoX3ZhbGlkYXRvci90LzAwMl9jbGllbnQucGwgICB8ICA1NyArKy0KIDEzIGZpbGVz IGNoYW5nZWQsIDY0NiBpbnNlcnRpb25zKCspLCAzNTQgZGVsZXRpb25zKC0pCiBkZWxldGUgbW9k ZSAxMDA2NDQgc3JjL2ludGVyZmFjZXMvbGlicHEtb2F1dGgvb2F1dGgtY3VybC5oCiBjcmVhdGUg bW9kZSAxMDA2NDQgc3JjL2ludGVyZmFjZXMvbGlicHEvbGlicHEtb2F1dGguaAogY3JlYXRlIG1v ZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvb2F1dGhfdmFsaWRhdG9yL29hdXRoX3Rlc3RfY29t bW9uLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL29hdXRoX3ZhbGlkYXRv ci9vYXV0aF9mbG93LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL29hdXRo X3ZhbGlkYXRvci9vYXV0aF90ZXN0X2NvbW1vbi5jCgpkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFj ZXMvbGlicHEvbWVzb24uYnVpbGQgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9tZXNvbi5idWlsZApp bmRleCBiMGFlNzIxNjdhMS4uNGViMDI5Y2MyYTYgMTAwNjQ0Ci0tLSBhL3NyYy9pbnRlcmZhY2Vz L2xpYnBxL21lc29uLmJ1aWxkCisrKyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL21lc29uLmJ1aWxk CkBAIC0xMzUsNiArMTM1LDcgQEAgcGtnY29uZmlnLmdlbmVyYXRlKAogaW5zdGFsbF9oZWFkZXJz KAogICAnbGlicHEtZmUuaCcsCiAgICdsaWJwcS1ldmVudHMuaCcsCisgICdsaWJwcS1vYXV0aC5o JywKICkKIAogaW5zdGFsbF9oZWFkZXJzKApkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvbGli cHEvTWFrZWZpbGUgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9NYWtlZmlsZQppbmRleCAwOTYzOTk1 ZWVkNC4uYTY1YzM2YTYzZmQgMTAwNjQ0Ci0tLSBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL01ha2Vm aWxlCisrKyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL01ha2VmaWxlCkBAIC0xNTcsNiArMTU3LDcg QEAgJCh0b3BfYnVpbGRkaXIpL3NyYy9wb3J0L3BnX2NvbmZpZ19wYXRocy5oOgogaW5zdGFsbDog YWxsIGluc3RhbGxkaXJzIGluc3RhbGwtbGliCiAJJChJTlNUQUxMX0RBVEEpICQoc3JjZGlyKS9s aWJwcS1mZS5oICckKERFU1RESVIpJChpbmNsdWRlZGlyKScKIAkkKElOU1RBTExfREFUQSkgJChz cmNkaXIpL2xpYnBxLWV2ZW50cy5oICckKERFU1RESVIpJChpbmNsdWRlZGlyKScKKwkkKElOU1RB TExfREFUQSkgJChzcmNkaXIpL2xpYnBxLW9hdXRoLmggJyQoREVTVERJUikkKGluY2x1ZGVkaXIp JwogCSQoSU5TVEFMTF9EQVRBKSAkKHNyY2RpcikvbGlicHEtaW50LmggJyQoREVTVERJUikkKGlu Y2x1ZGVkaXJfaW50ZXJuYWwpJwogCSQoSU5TVEFMTF9EQVRBKSAkKHNyY2RpcikvZmUtYXV0aC1z YXNsLmggJyQoREVTVERJUikkKGluY2x1ZGVkaXJfaW50ZXJuYWwpJwogCSQoSU5TVEFMTF9EQVRB KSAkKHNyY2RpcikvcHFleHBidWZmZXIuaCAnJChERVNURElSKSQoaW5jbHVkZWRpcl9pbnRlcm5h bCknCkBAIC0xNzksNiArMTgwLDcgQEAgaW5zdGFsbGRpcnM6IGluc3RhbGxkaXJzLWxpYgogdW5p bnN0YWxsOiB1bmluc3RhbGwtbGliCiAJcm0gLWYgJyQoREVTVERJUikkKGluY2x1ZGVkaXIpL2xp YnBxLWZlLmgnCiAJcm0gLWYgJyQoREVTVERJUikkKGluY2x1ZGVkaXIpL2xpYnBxLWV2ZW50cy5o JworCXJtIC1mICckKERFU1RESVIpJChpbmNsdWRlZGlyKS9saWJwcS1vYXV0aC5oJwogCXJtIC1m ICckKERFU1RESVIpJChpbmNsdWRlZGlyX2ludGVybmFsKS9saWJwcS1pbnQuaCcKIAlybSAtZiAn JChERVNURElSKSQoaW5jbHVkZWRpcl9pbnRlcm5hbCkvZmUtYXV0aC1zYXNsLmgnCiAJcm0gLWYg JyQoREVTVERJUikkKGluY2x1ZGVkaXJfaW50ZXJuYWwpL3BxZXhwYnVmZmVyLmgnCmRpZmYgLS1n aXQgYS9zcmMvaW50ZXJmYWNlcy9saWJwcS1vYXV0aC9vYXV0aC1jdXJsLmggYi9zcmMvaW50ZXJm YWNlcy9saWJwcS1vYXV0aC9vYXV0aC1jdXJsLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDFkNGRkNzY2MjE3Li4wMDAwMDAwMDAwMAotLS0gYS9zcmMvaW50ZXJmYWNlcy9saWJwcS1v YXV0aC9vYXV0aC1jdXJsLmgKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi0vKi0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KLSAqCi0gKiBvYXV0aC1jdXJsLmgKLSAqCi0gKgkgIERlZmluaXRpb25zIGZv ciBPQXV0aCBEZXZpY2UgQXV0aG9yaXphdGlvbiBtb2R1bGUKLSAqCi0gKiBQb3J0aW9ucyBDb3B5 cmlnaHQgKGMpIDE5OTYtMjAyNiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAK LSAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0 eSBvZiBDYWxpZm9ybmlhCi0gKgotICogc3JjL2ludGVyZmFjZXMvbGlicHEtb2F1dGgvb2F1dGgt Y3VybC5oCi0gKgotICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKi8KLQotI2lmbmRlZiBPQVVUSF9DVVJM X0gKLSNkZWZpbmUgT0FVVEhfQ1VSTF9ICi0KLSNpbmNsdWRlICJsaWJwcS1mZS5oIgotCi0vKiBF eHBvcnRlZCBmbG93IGNhbGxiYWNrLiAqLwotZXh0ZXJuIFBHRExMRVhQT1JUIGludCBwZ19zdGFy dF9vYXV0aGJlYXJlcihQR2Nvbm4gKmNvbm4sCi0JCQkJCQkJCQkJCVBHb2F1dGhCZWFyZXJSZXF1 ZXN0VjIgKnJlcXVlc3QpOwotCi0jZW5kaWYJCQkJCQkJLyogT0FVVEhfQ1VSTF9IICovCmRpZmYg LS1naXQgYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9saWJwcS1vYXV0aC5oIGIvc3JjL2ludGVyZmFj ZXMvbGlicHEvbGlicHEtb2F1dGguaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMC4uMmE2MmIzMzBiMWMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvaW50ZXJmYWNlcy9saWJw cS9saWJwcS1vYXV0aC5oCkBAIC0wLDAgKzEsNTIgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoK KyAqIGxpYnBxLW9hdXRoLmgKKyAqCSAgVGhpcyBmaWxlIGNvbnRhaW5zIHN0cnVjdHMgYW5kIGZ1 bmN0aW9ucyB1c2VkIGJ5IGN1c3RvbSBPQXV0aCBwbHVnaW5zLgorICoKKyAqIENvcHlyaWdodCAo YykgMjAyNSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqCisgKiBzcmMv aW50ZXJmYWNlcy9saWJwcS9saWJwcS1vYXV0aC5oCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg Ki8KKworI2lmbmRlZiBMSUJQUV9PQVVUSF9ICisjZGVmaW5lIExJQlBRX09BVVRIX0gKKworI2lu Y2x1ZGUgImxpYnBxLWZlLmgiCisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIgorewor I2VuZGlmCisKKy8qIFhYWCBjYW4ndCByZWx5IG9uIGMuaCwgYnV0IGR1cGxpY2F0aW5nIHRoaXMg aXMgYXNraW5nIGZvciB0cm91YmxlICovCisjaWZuZGVmIFBHRExMRVhQT1JUCisjaWZkZWYgX1dJ TjMyCisjZGVmaW5lIFBHRExMRVhQT1JUIF9fZGVjbHNwZWMgKGRsbGV4cG9ydCkKKyNlbGlmIGRl ZmluZWQoX19oYXNfYXR0cmlidXRlKQorI2lmIF9faGFzX2F0dHJpYnV0ZSh2aXNpYmlsaXR5KQor I2RlZmluZSBQR0RMTEVYUE9SVCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0Iikp KQorI2Vsc2UKKyNkZWZpbmUgUEdETExFWFBPUlQKKyNlbmRpZgorI2Vsc2UKKyNkZWZpbmUgUEdE TExFWFBPUlQKKyNlbmRpZgorI2VuZGlmCisKKy8qCisgKiBWMSBBUEkKKyAqCisgKiBGbG93IHBs dWdpbnMgbXVzdCBwcm92aWRlIGFuIGltcGxlbWVudGF0aW9uIG9mIHRoaXMgY2FsbGJhY2suCisg KgorICogVE9ETzogcHJvdmlkZSBhIG1hZ2ljIHN0cnVjdCB0aGF0IGFsbG93cyBiYWNrd2FyZHMg YnV0IG5vdCBmb3J3YXJkcyBjb21wYXQ/CisgKi8KK2V4dGVybiBQR0RMTEVYUE9SVCBpbnQgcGdf c3RhcnRfb2F1dGhiZWFyZXIoUEdjb25uICpjb25uLAorCQkJCQkJCQkJCQlQR29hdXRoQmVhcmVy UmVxdWVzdFYyICpyZXF1ZXN0KTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKwor I2VuZGlmCQkJCQkJCS8qIExJQlBRX09BVVRIX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZh Y2VzL2xpYnBxLW9hdXRoL29hdXRoLWN1cmwuYyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxLW9hdXRo L29hdXRoLWN1cmwuYwppbmRleCAwNTJlY2QzMmRhMi4uNDAwY2EwN2MyOTcgMTAwNjQ0Ci0tLSBh L3NyYy9pbnRlcmZhY2VzL2xpYnBxLW9hdXRoL29hdXRoLWN1cmwuYworKysgYi9zcmMvaW50ZXJm YWNlcy9saWJwcS1vYXV0aC9vYXV0aC1jdXJsLmMKQEAgLTI5LDggKzI5LDggQEAKICNlbmRpZgog CiAjaW5jbHVkZSAiY29tbW9uL2pzb25hcGkuaCIKKyNpbmNsdWRlICJsaWJwcS1vYXV0aC5oIgog I2luY2x1ZGUgIm1iL3BnX3djaGFyLmgiCi0jaW5jbHVkZSAib2F1dGgtY3VybC5oIgogCiAjaWZk ZWYgVVNFX0RZTkFNSUNfT0FVVEgKIApkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvbGlicHEv ZmUtYXV0aC1vYXV0aC5jIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtYXV0aC1vYXV0aC5jCmlu ZGV4IGRmZjAwZGZjNmM5Li5kNjM3ODUzZDY2ZiAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMv bGlicHEvZmUtYXV0aC1vYXV0aC5jCisrKyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWF1dGgt b2F1dGguYwpAQCAtMTcsNiArMTcsOCBAQAogCiAjaWZkZWYgVVNFX0RZTkFNSUNfT0FVVEgKICNp bmNsdWRlIDxkbGZjbi5oPgorI2Vsc2UKKyNpbmNsdWRlICJsaWJwcS1vYXV0aC5oIgogI2VuZGlm CiAKICNpbmNsdWRlICJjb21tb24vYmFzZTY0LmgiCkBAIC04ODIsMzMgKzg4NCw1NSBAQCB1c2Vf YnVpbHRpbl9mbG93KFBHY29ubiAqY29ubiwgZmVfb2F1dGhfc3RhdGUgKnN0YXRlLCBQR29hdXRo QmVhcmVyUmVxdWVzdFYyICpyZQogCSAqIE9uIHRoZSBvdGhlciBwbGF0Zm9ybXMsIGxvYWQgdGhl IG1vZHVsZSB1c2luZyBvbmx5IHRoZSBiYXNlbmFtZSwgdG8KIAkgKiByZWx5IG9uIHRoZSBydW50 aW1lIGxpbmtlcidzIHN0YW5kYXJkIHNlYXJjaCBiZWhhdmlvci4KIAkgKi8KLQljb25zdCBjaGFy ICpjb25zdCBtb2R1bGVfbmFtZSA9CisJY29uc3QgY2hhciAqbW9kdWxlX25hbWUgPQogI2lmIGRl ZmluZWQoX19kYXJ3aW5fXykKIAkJTElCRElSICIvbGlicHEtb2F1dGgiIERMU1VGRklYOwogI2Vs c2UKIAkJImxpYnBxLW9hdXRoIiBETFNVRkZJWDsKICNlbmRpZgogCisJLyotCisJICogQWRkaXRp b25hbGx5LCB0aGUgdXNlciBtYXkgb3ZlcnJpZGUgdGhlIG1vZHVsZSBwYXRoIGV4cGxpY2l0bHkg dG8gYmUKKwkgKiBhYmxlIHRvIHByb3ZpZGUgdGhlaXIgb3duIG1vZHVsZSwgdmlhIFBHT0FVVEhN T0RVTEUuCisJICoKKwkgKiBUT0RPOiBoYXZlIHRvIHRoaW5rIGFib3V0IF9hbGxfIHRoZSBzZWN1 cml0eSByYW1pZmljYXRpb25zIG9mIHRoaXMuIFdoYXQKKwkgKiBleGlzdGluZyBwcm90ZWN0aW9u cyBpbiBMRF9MSUJSQVJZX1BBVEggKGFuZC9vciBTSVApIGFyZSB3ZSBwb3RlbnRpYWxseQorCSAq IGJ5cGFzc2luZz8gU2hvdWxkIHdlIGNoZWNrIHRoZSBwZXJtaXNzaW9ucyBvZiB0aGUgZmlsZSBz b21laG93Li4uPworCSAqIFRPRE86IG1heWJlIGRpc2FsbG93IGFueXRoaW5nIG5vdCB1bmRlcm5l YXRoIExJQkRJUj8gb3IgUEtHTElCRElSPworCSAqIFNob3VsZCBpdCBoYXZlIGEgbmFtaW5nIGNv bnZlbnRpb24/CisJICovCisJY29uc3QgY2hhciAqZW52ID0gZ2V0ZW52KCJQR09BVVRITU9EVUxF Iik7CisKKwlpZiAoZW52ICYmIGVudlswXSkKKwkJbW9kdWxlX25hbWUgPSBlbnY7CisJZWxzZQor CQlzdGF0ZS0+YnVpbHRpbiA9IHRydWU7CisKIAlzdGF0ZS0+Zmxvd19tb2R1bGUgPSBkbG9wZW4o bW9kdWxlX25hbWUsIFJUTERfTk9XIHwgUlRMRF9MT0NBTCk7CiAJaWYgKCFzdGF0ZS0+Zmxvd19t b2R1bGUpCiAJewogCQkvKgogCQkgKiBGb3IgZW5kIHVzZXJzLCB0aGlzIHByb2JhYmx5IGlzbid0 IGFuIGVycm9yIGNvbmRpdGlvbiwgaXQganVzdAogCQkgKiBtZWFucyB0aGUgZmxvdyBpc24ndCBp bnN0YWxsZWQuIERldmVsb3BlcnMgYW5kIHBhY2thZ2UgbWFpbnRhaW5lcnMKLQkJICogbWF5IHdh bnQgdG8gZGVidWcgdGhpcyB2aWEgdGhlIFBHT0FVVEhERUJVRyBlbnZ2YXIsIHRob3VnaC4KKwkJ ICogbWF5IHdhbnQgdG8gZGVidWcgdGhpcyB2aWEgdGhlIFBHT0FVVEhERUJVRyBlbnZ2YXIsIHRo b3VnaCwgYW5kIHdlCisJCSAqIHNob3VsZCBiZSBtb3JlIG5vaXN5IGlmIHVzZXJzIHRyaWVkIHRv IHByb3ZpZGUgYSBQR09BVVRITU9EVUxFLgogCQkgKgogCQkgKiBOb3RlIHRoYXQgUE9TSVggZGxl cnJvcigpIGlzbid0IGd1YXJhbnRlZWQgdG8gYmUgdGhyZWFkc2FmZS4KIAkJICovCiAJCWlmIChv YXV0aF91bnNhZmVfZGVidWdnaW5nX2VuYWJsZWQoKSkKLQkJCWZwcmludGYoc3RkZXJyLCAiZmFp bGVkIGRsb3BlbiBmb3IgbGlicHEtb2F1dGg6ICVzXG4iLCBkbGVycm9yKCkpOworCQkJZnByaW50 ZihzdGRlcnIsICJmYWlsZWQgZGxvcGVuIGZvciAlczogJXNcbiIsIG1vZHVsZV9uYW1lLCBkbGVy cm9yKCkpOworCisJCWlmIChzdGF0ZS0+YnVpbHRpbikKKwkJCXJldHVybiAwOwogCi0JCXJldHVy biAwOworCQlyZXF1ZXN0LT5lcnJvciA9IGxpYnBxX2dldHRleHQoInBsdWdpbiBjb3VsZCBub3Qg YmUgbG9hZGVkIik7CisJCXJldHVybiAtMTsKIAl9CiAKIAkvKgogCSAqIE91ciBsaWJwcS1vYXV0 aC5zbyBwcm92aWRlcyBhIHNwZWNpYWwgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24gZm9yIGxpYnBx Ci0JICogaW50ZWdyYXRpb24uIElmIHdlIGRvbid0IGZpbmQgdGhpcywgYXNzdW1lIHRoYXQgYSBj dXN0b20gbW9kdWxlIGlzIGluCi0JICogdXNlIGluc3RlYWQuCisJICogaW50ZWdyYXRpb24uIEl0 J3Mgbm90IGEgcHJvYmxlbSBpZiB3ZSBkb24ndCBmaW5kIHRoaXM7IGl0IGp1c3QgbWVhbnMKKwkg KiB0aGF0IGEgdXNlci1kZWZpbmVkIG1vZHVsZSBpcyBiZWluZyB1c2VkLgogCSAqLwogCWluaXQg PSBkbHN5bShzdGF0ZS0+Zmxvd19tb2R1bGUsICJsaWJwcV9vYXV0aF9pbml0Iik7CiAJaWYgKCFp bml0KQpAQCAtOTIyLDEyICs5NDYsMTQgQEAgdXNlX2J1aWx0aW5fZmxvdyhQR2Nvbm4gKmNvbm4s IGZlX29hdXRoX3N0YXRlICpzdGF0ZSwgUEdvYXV0aEJlYXJlclJlcXVlc3RWMiAqcmUKIAkJICog dGhyZWFkc2FmZXR5IGlzc3VlLgogCQkgKi8KIAkJaWYgKG9hdXRoX3Vuc2FmZV9kZWJ1Z2dpbmdf ZW5hYmxlZCgpKQotCQkJZnByaW50ZihzdGRlcnIsICJmYWlsZWQgZGxzeW0gZm9yIGxpYnBxLW9h dXRoOiAlc1xuIiwgZGxlcnJvcigpKTsKKwkJCWZwcmludGYoc3RkZXJyLCAiZmFpbGVkIGRsc3lt IGZvciAlczogJXNcbiIsIG1vZHVsZV9uYW1lLCBkbGVycm9yKCkpOwogCiAJCWRsY2xvc2Uoc3Rh dGUtPmZsb3dfbW9kdWxlKTsKIAkJc3RhdGUtPmZsb3dfbW9kdWxlID0gTlVMTDsKIAotCQlyZXF1 ZXN0LT5lcnJvciA9IGxpYnBxX2dldHRleHQoImNvdWxkIG5vdCBmaW5kIGVudHJ5IHBvaW50IGZv ciBsaWJwcS1vYXV0aCIpOworCQlyZXF1ZXN0LT5lcnJvciA9IHN0YXRlLT5idWlsdGluID8KKwkJ CWxpYnBxX2dldHRleHQoImNvdWxkIG5vdCBmaW5kIGVudHJ5IHBvaW50IGZvciBsaWJwcS1vYXV0 aCIpIDoKKwkJCWxpYnBxX2dldHRleHQoImNvdWxkIG5vdCBmaW5kIGVudHJ5IHBvaW50IGZvciBj dXN0b20gcGx1Z2luIik7CiAJCXJldHVybiAtMTsKIAl9CiAKQEAgLTk4OCw2ICsxMDE0LDcgQEAg ZXh0ZXJuIGludAlwZ19zdGFydF9vYXV0aGJlYXJlcihQR2Nvbm4gKmNvbm4sIFBHb2F1dGhCZWFy ZXJSZXF1ZXN0VjIgKnJlcXVlc3QpOwogc3RhdGljIGludAogdXNlX2J1aWx0aW5fZmxvdyhQR2Nv bm4gKmNvbm4sIGZlX29hdXRoX3N0YXRlICpzdGF0ZSwgUEdvYXV0aEJlYXJlclJlcXVlc3RWMiAq cmVxdWVzdCkKIHsKKwlzdGF0ZS0+YnVpbHRpbiA9IHRydWU7CiAJcmV0dXJuIChwZ19zdGFydF9v YXV0aGJlYXJlcihjb25uLCByZXF1ZXN0KSA9PSAwKSA/IDEgOiAtMTsKIH0KIApAQCAtMTA0MSwx MCArMTA2OCw3IEBAIHNldHVwX3Rva2VuX3JlcXVlc3QoUEdjb25uICpjb25uLCBmZV9vYXV0aF9z dGF0ZSAqc3RhdGUpCiAJCXBvaXNvbl9yZXFfdjIoJnJlcXVlc3QsIGZhbHNlKTsKIAl9CiAJaWYg KHJlcyA9PSAwKQotCXsKLQkJc3RhdGUtPmJ1aWx0aW4gPSB0cnVlOwogCQlyZXMgPSB1c2VfYnVp bHRpbl9mbG93KGNvbm4sIHN0YXRlLCAmcmVxdWVzdCk7Ci0JfQogCiAJaWYgKHJlcyA+IDApCiAJ ewpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9vYXV0aF92YWxpZGF0b3IvbWVzb24uYnVp bGQgYi9zcmMvdGVzdC9tb2R1bGVzL29hdXRoX3ZhbGlkYXRvci9tZXNvbi5idWlsZAppbmRleCA1 MDZhOTg5NGI4ZC4uOTE1NjAzY2JkMjkgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvb2F1 dGhfdmFsaWRhdG9yL21lc29uLmJ1aWxkCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvb2F1dGhfdmFs aWRhdG9yL21lc29uLmJ1aWxkCkBAIC01MCw2ICs1MCw3IEBAIHRlc3RfaW5zdGFsbF9saWJzICs9 IG1hZ2ljX3ZhbGlkYXRvcgogCiBvYXV0aF9ob29rX2NsaWVudF9zb3VyY2VzID0gZmlsZXMoCiAg ICdvYXV0aF9ob29rX2NsaWVudC5jJywKKyAgJ29hdXRoX3Rlc3RfY29tbW9uLmMnLAogKQogCiBp ZiBob3N0X3N5c3RlbSA9PSAnd2luZG93cycKQEAgLTY3LDYgKzY4LDE5IEBAIG9hdXRoX2hvb2tf Y2xpZW50ID0gZXhlY3V0YWJsZSgnb2F1dGhfaG9va19jbGllbnQnLAogKQogdGVzdHByZXBfdGFy Z2V0cyArPSBvYXV0aF9ob29rX2NsaWVudAogCitvYXV0aF9mbG93ID0gc2hhcmVkX21vZHVsZSgn b2F1dGhfZmxvdycsCisgIGZpbGVzKAorICAgICdvYXV0aF9mbG93LmMnLAorICAgICdvYXV0aF90 ZXN0X2NvbW1vbi5jJywKKyAgKSwKKyAgaW5jbHVkZV9kaXJlY3RvcmllczogW3Bvc3RncmVzX2lu Y10sCisgIGRlcGVuZGVuY2llczogW2Zyb250ZW5kX3NobGliX2NvZGUsIGxpYnBxXSwKKyAga3dh cmdzOiBkZWZhdWx0X2xpYl9hcmdzICsgeworICAgICdpbnN0YWxsJzogZmFsc2UsCisgIH0sCisp Cit0ZXN0cHJlcF90YXJnZXRzICs9IG9hdXRoX2Zsb3cKKwogdGVzdHMgKz0gewogICAnbmFtZSc6 ICdvYXV0aF92YWxpZGF0b3InLAogICAnc2QnOiBtZXNvbi5jdXJyZW50X3NvdXJjZV9kaXIoKSwK QEAgLTgxLDYgKzk1LDcgQEAgdGVzdHMgKz0gewogICAgICAgJ3dpdGhfbGliY3VybCc6IG9hdXRo X2Zsb3dfc3VwcG9ydGVkID8gJ3llcycgOiAnbm8nLAogICAgICAgJ3dpdGhfcHl0aG9uJzogJ3ll cycsCiAgICAgICAnY2VydF9kaXInOiBtZXNvbi5wcm9qZWN0X3NvdXJjZV9yb290KCkgLyAnc3Jj L3Rlc3Qvc3NsL3NzbCcsCisgICAgICAnZmxvd19tb2R1bGVfcGF0aCc6IG9hdXRoX2Zsb3cuZnVs bF9wYXRoKCksCiAgICAgfSwKICAgICAnZGVwcyc6IFtvYXV0aF9ob29rX2NsaWVudF0sCiAgIH0s CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL29hdXRoX3ZhbGlkYXRvci9NYWtlZmlsZSBi L3NyYy90ZXN0L21vZHVsZXMvb2F1dGhfdmFsaWRhdG9yL01ha2VmaWxlCmluZGV4IDBiMzlhODhm ZDlmLi40OGIzMGFlYTI0ZiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy9vYXV0aF92YWxp ZGF0b3IvTWFrZWZpbGUKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9vYXV0aF92YWxpZGF0b3IvTWFr ZWZpbGUKQEAgLTE0LDExICsxNCwxMyBAQCBQR0ZJTEVERVNDID0gInZhbGlkYXRvciAtIHRlc3Qg T0F1dGggdmFsaWRhdG9yIG1vZHVsZSIKIAogUFJPR1JBTSA9IG9hdXRoX2hvb2tfY2xpZW50CiBQ R0FQUElDT04gPSB3aW4zMgotT0JKUyA9ICQoV0lOMzJSRVMpIG9hdXRoX2hvb2tfY2xpZW50Lm8K K09CSlMgPSAkKFdJTjMyUkVTKSBvYXV0aF9ob29rX2NsaWVudC5vIG9hdXRoX3Rlc3RfY29tbW9u Lm8KIAogUEdfQ1BQRkxBR1MgPSAtSSQobGlicHFfc3JjZGlyKQogUEdfTElCU19JTlRFUk5BTCAr PSAkKGxpYnBxX3BncG9ydCkKIAorRVhUUkFfQ0xFQU4gPSBvYXV0aF9mbG93JChETFNVRkZJWCkg b2F1dGhfZmxvdy5vCisKIE5PX0lOU1RBTExDSEVDSyA9IDEKIAogVEFQX1RFU1RTID0gMQpAQCAt MzMsOSArMzUsMTUgQEAgdG9wX2J1aWxkZGlyID0gLi4vLi4vLi4vLi4KIGluY2x1ZGUgJCh0b3Bf YnVpbGRkaXIpL3NyYy9NYWtlZmlsZS5nbG9iYWwKIGluY2x1ZGUgJCh0b3Bfc3JjZGlyKS9jb250 cmliL2NvbnRyaWItZ2xvYmFsLm1rCiAKK2FsbDogb2F1dGhfZmxvdyQoRExTVUZGSVgpCisKK29h dXRoX2Zsb3ckKERMU1VGRklYKTogb2F1dGhfZmxvdy5vIG9hdXRoX3Rlc3RfY29tbW9uLm8KKwkk KENDKSAkKENGTEFHUykgJF4gJChMREZMQUdTKSAkKGxpYnBxX3BncG9ydF9zaGxpYikgJChMREZM QUdTX1NMKSAtc2hhcmVkIC1vICRACisKIGV4cG9ydCBQWVRIT04KIGV4cG9ydCB3aXRoX2xpYmN1 cmwKIGV4cG9ydCB3aXRoX3B5dGhvbgotZXhwb3J0IGNlcnRfZGlyPSQodG9wX3NyY2Rpcikvc3Jj L3Rlc3Qvc3NsL3NzbAorZXhwb3J0IGNlcnRfZGlyIDo9ICQodG9wX3NyY2Rpcikvc3JjL3Rlc3Qv c3NsL3NzbAorZXhwb3J0IGZsb3dfbW9kdWxlX3BhdGggOj0gJChhYnNfdG9wX2J1aWxkZGlyKS8k KHN1YmRpcikvb2F1dGhfZmxvdyQoRExTVUZGSVgpCiAKIGVuZGlmCmRpZmYgLS1naXQgYS9zcmMv dGVzdC9tb2R1bGVzL29hdXRoX3ZhbGlkYXRvci9vYXV0aF90ZXN0X2NvbW1vbi5oIGIvc3JjL3Rl c3QvbW9kdWxlcy9vYXV0aF92YWxpZGF0b3Ivb2F1dGhfdGVzdF9jb21tb24uaApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMzNlNzJlMzA0NDAKLS0tIC9kZXYvbnVsbAor KysgYi9zcmMvdGVzdC9tb2R1bGVzL29hdXRoX3ZhbGlkYXRvci9vYXV0aF90ZXN0X2NvbW1vbi5o CkBAIC0wLDAgKzEsMjYgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIG9hdXRoX3Rlc3Rf Y29tbW9uLmgKKyAqCSAgU2hhcmVkIGZ1bmN0aW9uYWxpdHkgZm9yIG9hdXRoX2hvb2tfY2xpZW50 IGFuZCBvYXV0aF9mbG93CisgKgorICogQ29weXJpZ2h0IChjKSAyMDI1LCBQb3N0Z3JlU1FMIEds b2JhbCBEZXZlbG9wbWVudCBHcm91cAorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisKKyNp Zm5kZWYgT0FVVEhfVEVTVF9DT01NT05fSAorI2RlZmluZSBPQVVUSF9URVNUX0NPTU1PTl9ICisK Ky8qCisgKiBPbmx5IHB1YmxpYyBoZWFkZXJzIGNhbiBiZSBoZXJlLCBzaW5jZSBvYXV0aF9mbG93 LmMgaXMgdHJ5aW5nIHRvIHRlc3Qgb25seQorICogdGhlIHB1YmxpYyBBUEkuCisgKi8KKyNpbmNs dWRlICJsaWJwcS1mZS5oIgorCitleHRlcm4gaW50CXN0cmVzc19hc3luYzsJCS8qIGZvciBvYXV0 aF9ob29rX2NsaWVudCAqLworCitleHRlcm4gY2hhciAqb2F1dGhfdGVzdF9wYXJzZV9hcmd2KGlu dCBhcmdjLCBjaGFyICphcmd2W10sIGludCBmb3JfcGx1Z2luKTsKK2V4dGVybiBpbnQJb2F1dGhf dGVzdF9hdXRoZGF0YV9ob29rKFBHYXV0aERhdGEgdHlwZSwgUEdjb25uICpjb25uLCB2b2lkICpk YXRhKTsKK2V4dGVybiBpbnQJb2F1dGhfdGVzdF9zdGFydF9mbG93KFBHY29ubiAqY29ubiwgUEdv YXV0aEJlYXJlclJlcXVlc3RWMiAqcmVxdWVzdCk7CisKKyNlbmRpZgkJCQkJCQkvKiBPQVVUSF9U RVNUX0NPTU1PTl9IICovCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL29hdXRoX3ZhbGlk YXRvci9vYXV0aF9mbG93LmMgYi9zcmMvdGVzdC9tb2R1bGVzL29hdXRoX3ZhbGlkYXRvci9vYXV0 aF9mbG93LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjllZjY3ZjAz ZWIzCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9vYXV0aF92YWxpZGF0b3Iv b2F1dGhfZmxvdy5jCkBAIC0wLDAgKzEsNzIgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAq IG9hdXRoX2Zsb3cuYworICoJICBUZXN0IHBsdWdpbiBmb3IgY2xpZW50c2lkZSBPQXV0aCBmbG93 cworICoKKyAqIENvcHlyaWdodCAoYykgMjAyNSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1l bnQgR3JvdXAKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworCisjaW5jbHVkZSA8c3RkbGli Lmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisKKy8qIFNpbmNlIHdlIHdhbnQgdG8gdGVzdCB0aGUg cHVibGljIEFQSSwgb25seSBpbmNsdWRlIHB1YmxpYyBoZWFkZXJzIGhlcmUuICovCisjaW5jbHVk ZSAibGlicHEtZmUuaCIKKyNpbmNsdWRlICJsaWJwcS1vYXV0aC5oIgorI2luY2x1ZGUgIm9hdXRo X3Rlc3RfY29tbW9uLmgiCisKK3N0YXRpYyB2b2lkCitsb2FkX3Rlc3RfZmxhZ3Modm9pZCkKK3sK KwlpbnQJCQlhcmdjOworCWNoYXIJICAqKmFyZ3Y7CisJY2hhcgkgICAqZW52ID0gZ2V0ZW52KCJP QVVUSF9URVNUX0ZMQUdTIik7CisJaW50CQkJZmxhZ19jb3VudDsKKwlpbnQJCQlpOworCisJaWYg KCFlbnYgfHwgIWVudlswXSkKKwl7CisJCWZwcmludGYoc3RkZXJyLCAiT0FVVEhfVEVTVF9GTEFH UyBtdXN0IGJlIHNldFxuIik7CisJCWV4aXQoMSk7CisJfQorCisJZmxhZ19jb3VudCA9IDE7CisJ Zm9yIChjaGFyICpjID0gZW52OyAqYzsgYysrKQorCXsKKwkJaWYgKCpjID09ICdceDAxJykKKwkJ CWZsYWdfY291bnQrKzsKKwl9CisKKwkvKiBTbGljZSBPQVVUSF9URVNUX0ZMQUdTIGludG8gYSBm YWtlIGFyZ3YgYXJyYXkuICovCisJZW52ID0gc3RyZHVwKGVudik7CisJYXJnYyA9IGZsYWdfY291 bnQgKyAxOworCWFyZ3YgPSBtYWxsb2Moc2l6ZW9mKCphcmd2KSAqIChhcmdjICsgMSkpOworCisJ aWYgKCFlbnYgfHwgIWFyZ3YpCisJeworCQlmcHJpbnRmKHN0ZGVyciwgIm91dCBvZiBtZW1vcnki KTsKKwkJZXhpdCgxKTsKKwl9CisKKwlhcmd2WzBdID0gIltwbHVnaW4gdGVzdF0iOworCWZvciAo aSA9IDE7IGkgPCBmbGFnX2NvdW50OyBpKyspCisJeworCQlhcmd2W2ldID0gZW52OworCisJCWVu diA9IHN0cmNocihlbnYsICdceDAxJyk7CisJCSplbnYrKyA9ICdcMCc7CisJfQorCWFyZ3ZbZmxh Z19jb3VudF0gPSBlbnY7CisJYXJndlthcmdjXSA9IE5VTEw7CisKKwlvYXV0aF90ZXN0X3BhcnNl X2FyZ3YoYXJnYywgYXJndiwgMSAvKiBwbHVnaW4gKi8gKTsKK30KKworaW50CitwZ19zdGFydF9v YXV0aGJlYXJlcihQR2Nvbm4gKmNvbm4sIFBHb2F1dGhCZWFyZXJSZXF1ZXN0VjIgKnJlcXVlc3Qp Cit7CisJbG9hZF90ZXN0X2ZsYWdzKCk7CisKKwlyZXR1cm4gb2F1dGhfdGVzdF9zdGFydF9mbG93 KGNvbm4sIHJlcXVlc3QpOworfQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9vYXV0aF92 YWxpZGF0b3Ivb2F1dGhfaG9va19jbGllbnQuYyBiL3NyYy90ZXN0L21vZHVsZXMvb2F1dGhfdmFs aWRhdG9yL29hdXRoX2hvb2tfY2xpZW50LmMKaW5kZXggNDY5NWQ3M2U4ZjcuLjVmOTMyYWNjNTcx IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL29hdXRoX3ZhbGlkYXRvci9vYXV0aF9ob29r X2NsaWVudC5jCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvb2F1dGhfdmFsaWRhdG9yL29hdXRoX2hv b2tfY2xpZW50LmMKQEAgLTE4LDE0MyArMTgsMTggQEAKIAogI2luY2x1ZGUgPHN5cy9zb2NrZXQu aD4KIAotI2luY2x1ZGUgImdldG9wdF9sb25nLmgiCiAjaW5jbHVkZSAibGlicHEtZmUuaCIKIAot c3RhdGljIGludAloYW5kbGVfYXV0aF9kYXRhKFBHYXV0aERhdGEgdHlwZSwgUEdjb25uICpjb25u LCB2b2lkICpkYXRhKTsKLXN0YXRpYyBQb3N0Z3Jlc1BvbGxpbmdTdGF0dXNUeXBlIGFzeW5jX2Ni KFBHY29ubiAqY29ubiwKLQkJCQkJCQkJCQkgIFBHb2F1dGhCZWFyZXJSZXF1ZXN0ICpyZXEsCi0J CQkJCQkJCQkJICBwZ3NvY2tldCAqYWx0c29jayk7Ci1zdGF0aWMgUG9zdGdyZXNQb2xsaW5nU3Rh dHVzVHlwZSBtaXNiZWhhdmVfY2IoUEdjb25uICpjb25uLAotCQkJCQkJCQkJCQkgIFBHb2F1dGhC ZWFyZXJSZXF1ZXN0ICpyZXEsCi0JCQkJCQkJCQkJCSAgcGdzb2NrZXQgKmFsdHNvY2spOwotCi1z dGF0aWMgdm9pZAotdXNhZ2UoY2hhciAqYXJndltdKQotewotCXByaW50ZigidXNhZ2U6ICVzIFtm bGFnc10gQ09OTklORk9cblxuIiwgYXJndlswXSk7Ci0KLQlwcmludGYoInJlY29nbml6ZWQgZmxh Z3M6XG4iKTsKLQlwcmludGYoIiAgLWgsIC0taGVscCAgICAgICAgICAgICAgc2hvdyB0aGlzIG1l c3NhZ2VcbiIpOwotCXByaW50ZigiICAtdiBWRVJTSU9OICAgICAgICAgICAgICBzZWxlY3QgdGhl IGhvb2sgQVBJIHZlcnNpb24gKGRlZmF1bHQgMilcbiIpOwotCXByaW50ZigiICAtLWV4cGVjdGVk LXNjb3BlIFNDT1BFICBmYWlsIGlmIHJlY2VpdmVkIHNjb3BlcyBkbyBub3QgbWF0Y2ggU0NPUEVc biIpOwotCXByaW50ZigiICAtLWV4cGVjdGVkLXVyaSBVUkkgICAgICBmYWlsIGlmIHJlY2VpdmVk IGNvbmZpZ3VyYXRpb24gbGluayBkb2VzIG5vdCBtYXRjaCBVUklcbiIpOwotCXByaW50ZigiICAt LWV4cGVjdGVkLWlzc3VlciBJU1MgICBmYWlsIGlmIHJlY2VpdmVkIGlzc3VlciBkb2VzIG5vdCBt YXRjaCBJU1MgKHYyIG9ubHkpXG4iKTsKLQlwcmludGYoIiAgLS1taXNiZWhhdmU9TU9ERSAgICAg ICAgaGF2ZSB0aGUgaG9vayBmYWlsIHJlcXVpcmVkIHBvc3Rjb25kaXRpb25zXG4iCi0JCSAgICIg ICAgICAgICAgICAgICAgICAgICAgICAgIChNT0RFczogbm8taG9vaywgZmFpbC1hc3luYywgbm8t dG9rZW4sIG5vLXNvY2tldClcbiIpOwotCXByaW50ZigiICAtLW5vLWhvb2sgICAgICAgICAgICAg ICBkb24ndCBpbnN0YWxsIE9BdXRoIGhvb2tzXG4iKTsKLQlwcmludGYoIiAgLS1oYW5nLWZvcmV2 ZXIgICAgICAgICAgZG9uJ3QgZXZlciByZXR1cm4gYSB0b2tlbiAoY29tYmluZSB3aXRoIGNvbm5l Y3RfdGltZW91dClcbiIpOwotCXByaW50ZigiICAtLXRva2VuIFRPS0VOICAgICAgICAgICB1c2Ug dGhlIHByb3ZpZGVkIFRPS0VOIHZhbHVlXG4iKTsKLQlwcmludGYoIiAgLS1lcnJvciBFUlJNU0cg ICAgICAgICAgZmFpbCBpbnN0ZWFkLCB3aXRoIHRoZSBnaXZlbiBFUlJNU0cgKHYyIG9ubHkpXG4i KTsKLQlwcmludGYoIiAgLS1zdHJlc3MtYXN5bmMgICAgICAgICAgYnVzeS1sb29wIG9uIFBRY29u bmVjdFBvbGwgcmF0aGVyIHRoYW4gcG9sbGluZ1xuIik7Ci19Ci0KLS8qIC0tb3B0aW9ucyAqLwot c3RhdGljIGJvb2wgbm9faG9vayA9IGZhbHNlOwotc3RhdGljIGJvb2wgaGFuZ19mb3JldmVyID0g ZmFsc2U7Ci1zdGF0aWMgYm9vbCBzdHJlc3NfYXN5bmMgPSBmYWxzZTsKLXN0YXRpYyBjb25zdCBj aGFyICpleHBlY3RlZF91cmkgPSBOVUxMOwotc3RhdGljIGNvbnN0IGNoYXIgKmV4cGVjdGVkX2lz c3VlciA9IE5VTEw7Ci1zdGF0aWMgY29uc3QgY2hhciAqZXhwZWN0ZWRfc2NvcGUgPSBOVUxMOwot c3RhdGljIGNvbnN0IGNoYXIgKm1pc2JlaGF2ZV9tb2RlID0gTlVMTDsKLXN0YXRpYyBjaGFyICp0 b2tlbiA9IE5VTEw7Ci1zdGF0aWMgY2hhciAqZXJybXNnID0gTlVMTDsKLXN0YXRpYyBpbnQJaG9v a192ZXJzaW9uID0gUFFBVVRIREFUQV9PQVVUSF9CRUFSRVJfVE9LRU5fVjI7CisjaW5jbHVkZSAi b2F1dGhfdGVzdF9jb21tb24uaCIKIAogaW50CiBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10p CiB7Ci0Jc3RhdGljIGNvbnN0IHN0cnVjdCBvcHRpb24gbG9uZ19vcHRpb25zW10gPSB7Ci0JCXsi aGVscCIsIG5vX2FyZ3VtZW50LCBOVUxMLCAnaCd9LAotCi0JCXsiZXhwZWN0ZWQtc2NvcGUiLCBy ZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgMTAwMH0sCi0JCXsiZXhwZWN0ZWQtdXJpIiwgcmVxdWly ZWRfYXJndW1lbnQsIE5VTEwsIDEwMDF9LAotCQl7Im5vLWhvb2siLCBub19hcmd1bWVudCwgTlVM TCwgMTAwMn0sCi0JCXsidG9rZW4iLCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgMTAwM30sCi0J CXsiaGFuZy1mb3JldmVyIiwgbm9fYXJndW1lbnQsIE5VTEwsIDEwMDR9LAotCQl7Im1pc2JlaGF2 ZSIsIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAxMDA1fSwKLQkJeyJzdHJlc3MtYXN5bmMiLCBu b19hcmd1bWVudCwgTlVMTCwgMTAwNn0sCi0JCXsiZXhwZWN0ZWQtaXNzdWVyIiwgcmVxdWlyZWRf YXJndW1lbnQsIE5VTEwsIDEwMDd9LAotCQl7ImVycm9yIiwgcmVxdWlyZWRfYXJndW1lbnQsIE5V TEwsIDEwMDh9LAotCQl7MH0KLQl9OwotCi0JY29uc3QgY2hhciAqY29ubmluZm87CisJY29uc3Qg Y2hhciAqY29ubmluZm8gPSBvYXV0aF90ZXN0X3BhcnNlX2FyZ3YoYXJnYywgYXJndiwgMCAvKiBo b29rICovICk7CiAJUEdjb25uCSAgICpjb25uOwotCWludAkJCWM7Ci0KLQl3aGlsZSAoKGMgPSBn ZXRvcHRfbG9uZyhhcmdjLCBhcmd2LCAiaHY6IiwgbG9uZ19vcHRpb25zLCBOVUxMKSkgIT0gLTEp Ci0JewotCQlzd2l0Y2ggKGMpCi0JCXsKLQkJCWNhc2UgJ2gnOgotCQkJCXVzYWdlKGFyZ3YpOwot CQkJCXJldHVybiAwOwotCi0JCQljYXNlICd2JzoKLQkJCQlpZiAoc3RyY21wKG9wdGFyZywgIjEi KSA9PSAwKQotCQkJCQlob29rX3ZlcnNpb24gPSBQUUFVVEhEQVRBX09BVVRIX0JFQVJFUl9UT0tF TjsKLQkJCQllbHNlIGlmIChzdHJjbXAob3B0YXJnLCAiMiIpID09IDApCi0JCQkJCWhvb2tfdmVy c2lvbiA9IFBRQVVUSERBVEFfT0FVVEhfQkVBUkVSX1RPS0VOX1YyOwotCQkJCWVsc2UKLQkJCQl7 Ci0JCQkJCXVzYWdlKGFyZ3YpOwotCQkJCQlyZXR1cm4gMTsKLQkJCQl9Ci0JCQkJYnJlYWs7Ci0K LQkJCWNhc2UgMTAwMDoJCQkvKiAtLWV4cGVjdGVkLXNjb3BlICovCi0JCQkJZXhwZWN0ZWRfc2Nv cGUgPSBvcHRhcmc7Ci0JCQkJYnJlYWs7Ci0KLQkJCWNhc2UgMTAwMToJCQkvKiAtLWV4cGVjdGVk LXVyaSAqLwotCQkJCWV4cGVjdGVkX3VyaSA9IG9wdGFyZzsKLQkJCQlicmVhazsKLQotCQkJY2Fz ZSAxMDAyOgkJCS8qIC0tbm8taG9vayAqLwotCQkJCW5vX2hvb2sgPSB0cnVlOwotCQkJCWJyZWFr OwotCi0JCQljYXNlIDEwMDM6CQkJLyogLS10b2tlbiAqLwotCQkJCXRva2VuID0gb3B0YXJnOwot CQkJCWJyZWFrOwotCi0JCQljYXNlIDEwMDQ6CQkJLyogLS1oYW5nLWZvcmV2ZXIgKi8KLQkJCQlo YW5nX2ZvcmV2ZXIgPSB0cnVlOwotCQkJCWJyZWFrOwotCi0JCQljYXNlIDEwMDU6CQkJLyogLS1t aXNiZWhhdmUgKi8KLQkJCQltaXNiZWhhdmVfbW9kZSA9IG9wdGFyZzsKLQkJCQlicmVhazsKLQot CQkJY2FzZSAxMDA2OgkJCS8qIC0tc3RyZXNzLWFzeW5jICovCi0JCQkJc3RyZXNzX2FzeW5jID0g dHJ1ZTsKLQkJCQlicmVhazsKLQotCQkJY2FzZSAxMDA3OgkJCS8qIC0tZXhwZWN0ZWQtaXNzdWVy ICovCi0JCQkJZXhwZWN0ZWRfaXNzdWVyID0gb3B0YXJnOwotCQkJCWJyZWFrOwotCi0JCQljYXNl IDEwMDg6CQkJLyogLS1lcnJvciAqLwotCQkJCWVycm1zZyA9IG9wdGFyZzsKLQkJCQlicmVhazsK LQotCQkJZGVmYXVsdDoKLQkJCQl1c2FnZShhcmd2KTsKLQkJCQlyZXR1cm4gMTsKLQkJfQotCX0K LQotCWlmIChhcmdjICE9IG9wdGluZCArIDEpCi0JewotCQl1c2FnZShhcmd2KTsKLQkJcmV0dXJu IDE7Ci0JfQotCi0JY29ubmluZm8gPSBhcmd2W29wdGluZF07CiAKIAkvKiBTZXQgdXAgb3VyIE9B dXRoIGhvb2tzLiAqLwotCVBRc2V0QXV0aERhdGFIb29rKGhhbmRsZV9hdXRoX2RhdGEpOworCVBR c2V0QXV0aERhdGFIb29rKG9hdXRoX3Rlc3RfYXV0aGRhdGFfaG9vayk7CiAKIAkvKiBDb25uZWN0 LiAoQWxsIHRoZSBhY3R1YWwgd29yayBpcyBpbiB0aGUgaG9vay4pICovCiAJaWYgKHN0cmVzc19h c3luYykKQEAgLTE5MiwxOTAgKzY3LDMgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQog CVBRZmluaXNoKGNvbm4pOwogCXJldHVybiAwOwogfQotCi0vKgotICogUFFhdXRoRGF0YUhvb2sg aW1wbGVtZW50YXRpb24uIFJlcGxhY2VzIHRoZSBkZWZhdWx0IGNsaWVudCBmbG93IGJ5IGhhbmRs aW5nCi0gKiBQUUFVVEhEQVRBX09BVVRIX0JFQVJFUl9UT0tFTltfVjJdLgotICovCi1zdGF0aWMg aW50Ci1oYW5kbGVfYXV0aF9kYXRhKFBHYXV0aERhdGEgdHlwZSwgUEdjb25uICpjb25uLCB2b2lk ICpkYXRhKQotewotCVBHb2F1dGhCZWFyZXJSZXF1ZXN0ICpyZXE7Ci0JUEdvYXV0aEJlYXJlclJl cXVlc3RWMiAqcmVxMiA9IE5VTEw7Ci0KLQlBc3NlcnQoaG9va192ZXJzaW9uID09IFBRQVVUSERB VEFfT0FVVEhfQkVBUkVSX1RPS0VOIHx8Ci0JCSAgIGhvb2tfdmVyc2lvbiA9PSBQUUFVVEhEQVRB X09BVVRIX0JFQVJFUl9UT0tFTl9WMik7Ci0KLQlpZiAobm9faG9vayB8fCB0eXBlICE9IGhvb2tf dmVyc2lvbikKLQkJcmV0dXJuIDA7Ci0KLQlyZXEgPSBkYXRhOwotCWlmICh0eXBlID09IFBRQVVU SERBVEFfT0FVVEhfQkVBUkVSX1RPS0VOX1YyKQotCQlyZXEyID0gZGF0YTsKLQotCWlmIChoYW5n X2ZvcmV2ZXIpCi0JewotCQkvKiBTdGFydCBhc3luY2hyb25vdXMgcHJvY2Vzc2luZy4gKi8KLQkJ cmVxLT5hc3luYyA9IGFzeW5jX2NiOwotCQlyZXR1cm4gMTsKLQl9Ci0KLQlpZiAobWlzYmVoYXZl X21vZGUpCi0JewotCQlpZiAoc3RyY21wKG1pc2JlaGF2ZV9tb2RlLCAibm8taG9vayIpICE9IDAp Ci0JCQlyZXEtPmFzeW5jID0gbWlzYmVoYXZlX2NiOwotCQlyZXR1cm4gMTsKLQl9Ci0KLQlpZiAo ZXhwZWN0ZWRfdXJpKQotCXsKLQkJaWYgKCFyZXEtPm9wZW5pZF9jb25maWd1cmF0aW9uKQotCQl7 Ci0JCQlmcHJpbnRmKHN0ZGVyciwgImV4cGVjdGVkIFVSSSBcIiVzXCIsIGdvdCBOVUxMXG4iLCBl eHBlY3RlZF91cmkpOwotCQkJcmV0dXJuIC0xOwotCQl9Ci0KLQkJaWYgKHN0cmNtcChleHBlY3Rl ZF91cmksIHJlcS0+b3BlbmlkX2NvbmZpZ3VyYXRpb24pICE9IDApCi0JCXsKLQkJCWZwcmludGYo c3RkZXJyLCAiZXhwZWN0ZWQgVVJJIFwiJXNcIiwgZ290IFwiJXNcIlxuIiwgZXhwZWN0ZWRfdXJp LCByZXEtPm9wZW5pZF9jb25maWd1cmF0aW9uKTsKLQkJCXJldHVybiAtMTsKLQkJfQotCX0KLQot CWlmIChleHBlY3RlZF9zY29wZSkKLQl7Ci0JCWlmICghcmVxLT5zY29wZSkKLQkJewotCQkJZnBy aW50ZihzdGRlcnIsICJleHBlY3RlZCBzY29wZSBcIiVzXCIsIGdvdCBOVUxMXG4iLCBleHBlY3Rl ZF9zY29wZSk7Ci0JCQlyZXR1cm4gLTE7Ci0JCX0KLQotCQlpZiAoc3RyY21wKGV4cGVjdGVkX3Nj b3BlLCByZXEtPnNjb3BlKSAhPSAwKQotCQl7Ci0JCQlmcHJpbnRmKHN0ZGVyciwgImV4cGVjdGVk IHNjb3BlIFwiJXNcIiwgZ290IFwiJXNcIlxuIiwgZXhwZWN0ZWRfc2NvcGUsIHJlcS0+c2NvcGUp OwotCQkJcmV0dXJuIC0xOwotCQl9Ci0JfQotCi0JaWYgKGV4cGVjdGVkX2lzc3VlcikKLQl7Ci0J CWlmICghcmVxMikKLQkJewotCQkJZnByaW50ZihzdGRlcnIsICItLWV4cGVjdGVkLWlzc3VlciBj YW5ub3QgYmUgY29tYmluZWQgd2l0aCAtdjFcbiIpOwotCQkJcmV0dXJuIC0xOwotCQl9Ci0KLQkJ aWYgKCFyZXEyLT5pc3N1ZXIpCi0JCXsKLQkJCWZwcmludGYoc3RkZXJyLCAiZXhwZWN0ZWQgaXNz dWVyIFwiJXNcIiwgZ290IE5VTExcbiIsIGV4cGVjdGVkX2lzc3Vlcik7Ci0JCQlyZXR1cm4gLTE7 Ci0JCX0KLQotCQlpZiAoc3RyY21wKGV4cGVjdGVkX2lzc3VlciwgcmVxMi0+aXNzdWVyKSAhPSAw KQotCQl7Ci0JCQlmcHJpbnRmKHN0ZGVyciwgImV4cGVjdGVkIGlzc3VlciBcIiVzXCIsIGdvdCBc IiVzXCJcbiIsIGV4cGVjdGVkX2lzc3VlciwgcmVxMi0+aXNzdWVyKTsKLQkJCXJldHVybiAtMTsK LQkJfQotCX0KLQotCWlmIChlcnJtc2cpCi0JewotCQlpZiAodG9rZW4pCi0JCXsKLQkJCWZwcmlu dGYoc3RkZXJyLCAiLS1lcnJvciBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCAtLXRva2VuXG4iKTsK LQkJCXJldHVybiAtMTsKLQkJfQotCQllbHNlIGlmICghcmVxMikKLQkJewotCQkJZnByaW50Zihz dGRlcnIsICItLWVycm9yIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIC12MVxuIik7Ci0JCQlyZXR1 cm4gLTE7Ci0JCX0KLQotCQlyZXEyLT5lcnJvciA9IGVycm1zZzsKLQkJcmV0dXJuIC0xOwotCX0K LQotCXJlcS0+dG9rZW4gPSB0b2tlbjsKLQlyZXR1cm4gMTsKLX0KLQotc3RhdGljIFBvc3RncmVz UG9sbGluZ1N0YXR1c1R5cGUKLWFzeW5jX2NiKFBHY29ubiAqY29ubiwgUEdvYXV0aEJlYXJlclJl cXVlc3QgKnJlcSwgcGdzb2NrZXQgKmFsdHNvY2spCi17Ci0JaWYgKGhhbmdfZm9yZXZlcikKLQl7 Ci0JCS8qCi0JCSAqIFRoaXMgY29kZSB0ZXN0cyB0aGF0IG5vdGhpbmcgaXMgaW50ZXJmZXJpbmcg d2l0aCBsaWJwcSdzIGhhbmRsaW5nCi0JCSAqIG9mIGNvbm5lY3RfdGltZW91dC4KLQkJICovCi0J CXN0YXRpYyBwZ3NvY2tldCBzb2NrID0gUEdJTlZBTElEX1NPQ0tFVDsKLQotCQlpZiAoc29jayA9 PSBQR0lOVkFMSURfU09DS0VUKQotCQl7Ci0JCQkvKiBGaXJzdCBjYWxsLiBDcmVhdGUgYW4gdW5i b3VuZCBzb2NrZXQgdG8gd2FpdCBvbi4gKi8KLSNpZmRlZiBXSU4zMgotCQkJV1NBREFUQQkJd3Nh RGF0YTsKLQkJCWludAkJCWVycjsKLQotCQkJZXJyID0gV1NBU3RhcnR1cChNQUtFV09SRCgyLCAy KSwgJndzYURhdGEpOwotCQkJaWYgKGVycikKLQkJCXsKLQkJCQlwZXJyb3IoIldTQVN0YXJ0dXAg ZmFpbGVkIik7Ci0JCQkJcmV0dXJuIFBHUkVTX1BPTExJTkdfRkFJTEVEOwotCQkJfQotI2VuZGlm Ci0JCQlzb2NrID0gc29ja2V0KEFGX0lORVQsIFNPQ0tfREdSQU0sIDApOwotCQkJaWYgKHNvY2sg PT0gUEdJTlZBTElEX1NPQ0tFVCkKLQkJCXsKLQkJCQlwZXJyb3IoImZhaWxlZCB0byBjcmVhdGUg ZGF0YWdyYW0gc29ja2V0Iik7Ci0JCQkJcmV0dXJuIFBHUkVTX1BPTExJTkdfRkFJTEVEOwotCQkJ fQotCQl9Ci0KLQkJLyogTWFrZSBsaWJwcSB3YWl0IG9uIHRoZSAodW5yZWFkYWJsZSkgc29ja2V0 LiAqLwotCQkqYWx0c29jayA9IHNvY2s7Ci0JCXJldHVybiBQR1JFU19QT0xMSU5HX1JFQURJTkc7 Ci0JfQotCi0JcmVxLT50b2tlbiA9IHRva2VuOwotCXJldHVybiBQR1JFU19QT0xMSU5HX09LOwot fQotCi1zdGF0aWMgUG9zdGdyZXNQb2xsaW5nU3RhdHVzVHlwZQotbWlzYmVoYXZlX2NiKFBHY29u biAqY29ubiwgUEdvYXV0aEJlYXJlclJlcXVlc3QgKnJlcSwgcGdzb2NrZXQgKmFsdHNvY2spCi17 Ci0JaWYgKHN0cmNtcChtaXNiZWhhdmVfbW9kZSwgImZhaWwtYXN5bmMiKSA9PSAwKQotCXsKLQkJ LyogSnVzdCBmYWlsICJub3JtYWxseSIuICovCi0JCWlmIChlcnJtc2cpCi0JCXsKLQkJCVBHb2F1 dGhCZWFyZXJSZXF1ZXN0VjIgKnJlcTI7Ci0KLQkJCWlmIChob29rX3ZlcnNpb24gPT0gUFFBVVRI REFUQV9PQVVUSF9CRUFSRVJfVE9LRU4pCi0JCQl7Ci0JCQkJZnByaW50ZihzdGRlcnIsICItLWVy cm9yIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIC12MVxuIik7Ci0JCQkJZXhpdCgxKTsKLQkJCX0K LQotCQkJcmVxMiA9IChQR29hdXRoQmVhcmVyUmVxdWVzdFYyICopIHJlcTsKLQkJCXJlcTItPmVy cm9yID0gZXJybXNnOwotCQl9Ci0KLQkJcmV0dXJuIFBHUkVTX1BPTExJTkdfRkFJTEVEOwotCX0K LQllbHNlIGlmIChzdHJjbXAobWlzYmVoYXZlX21vZGUsICJuby10b2tlbiIpID09IDApCi0Jewot CQkvKiBDYWxsYmFja3MgbXVzdCBhc3NpZ24gcmVxLT50b2tlbiBiZWZvcmUgcmV0dXJuaW5nIE9L LiAqLwotCQlyZXR1cm4gUEdSRVNfUE9MTElOR19PSzsKLQl9Ci0JZWxzZSBpZiAoc3RyY21wKG1p c2JlaGF2ZV9tb2RlLCAibm8tc29ja2V0IikgPT0gMCkKLQl7Ci0JCS8qIENhbGxiYWNrcyBtdXN0 IGFzc2lnbiAqYWx0c29jayBiZWZvcmUgYXNraW5nIGZvciBwb2xsaW5nLiAqLwotCQlyZXR1cm4g UEdSRVNfUE9MTElOR19SRUFESU5HOwotCX0KLQllbHNlCi0JewotCQlmcHJpbnRmKHN0ZGVyciwg InVucmVjb2duaXplZCAtLW1pc2JlaGF2ZSBtb2RlOiAlc1xuIiwgbWlzYmVoYXZlX21vZGUpOwot CQlleGl0KDEpOwotCX0KLX0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvb2F1dGhfdmFs aWRhdG9yL29hdXRoX3Rlc3RfY29tbW9uLmMgYi9zcmMvdGVzdC9tb2R1bGVzL29hdXRoX3ZhbGlk YXRvci9vYXV0aF90ZXN0X2NvbW1vbi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwLi5jZmNiNGEzNTRhOAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMv b2F1dGhfdmFsaWRhdG9yL29hdXRoX3Rlc3RfY29tbW9uLmMKQEAgLTAsMCArMSwzNzMgQEAKKy8q LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIG9hdXRoX3Rlc3RfY29tbW9uLmMKKyAqCSAgU2hhcmVk IGZ1bmN0aW9uYWxpdHkgZm9yIG9hdXRoX2hvb2tfY2xpZW50IGFuZCBvYXV0aF9mbG93CisgKgor ICogQ29weXJpZ2h0IChjKSAyMDI1LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91 cAorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisKKyNpbmNsdWRlICJwb3N0Z3Jlc19mZS5o IgorCisjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorCisjaW5jbHVkZSAiZ2V0b3B0X2xvbmcuaCIK KyNpbmNsdWRlICJsaWJwcS1mZS5oIgorCisjaW5jbHVkZSAib2F1dGhfdGVzdF9jb21tb24uaCIK Kworc3RhdGljIFBvc3RncmVzUG9sbGluZ1N0YXR1c1R5cGUgYXN5bmNfY2IoUEdjb25uICpjb25u LAorCQkJCQkJCQkJCSAgUEdvYXV0aEJlYXJlclJlcXVlc3QgKnJlcSwKKwkJCQkJCQkJCQkgIHBn c29ja2V0ICphbHRzb2NrKTsKK3N0YXRpYyBQb3N0Z3Jlc1BvbGxpbmdTdGF0dXNUeXBlIG1pc2Jl aGF2ZV9jYihQR2Nvbm4gKmNvbm4sCisJCQkJCQkJCQkJCSAgUEdvYXV0aEJlYXJlclJlcXVlc3Qg KnJlcSwKKwkJCQkJCQkJCQkJICBwZ3NvY2tldCAqYWx0c29jayk7CisKKy8qIC0tb3B0aW9ucyAq Lworc3RhdGljIGJvb2wgbm9faG9vayA9IGZhbHNlOworc3RhdGljIGJvb2wgaGFuZ19mb3JldmVy ID0gZmFsc2U7CitzdGF0aWMgY29uc3QgY2hhciAqZXhwZWN0ZWRfdXJpID0gTlVMTDsKK3N0YXRp YyBjb25zdCBjaGFyICpleHBlY3RlZF9pc3N1ZXIgPSBOVUxMOworc3RhdGljIGNvbnN0IGNoYXIg KmV4cGVjdGVkX3Njb3BlID0gTlVMTDsKK3N0YXRpYyBjb25zdCBjaGFyICptaXNiZWhhdmVfbW9k ZSA9IE5VTEw7CitzdGF0aWMgY2hhciAqdG9rZW4gPSBOVUxMOworc3RhdGljIGNoYXIgKmVycm1z ZyA9IE5VTEw7CitzdGF0aWMgaW50CWhvb2tfdmVyc2lvbiA9IFBRQVVUSERBVEFfT0FVVEhfQkVB UkVSX1RPS0VOX1YyOworCisvKgorICogWFhYOiBzdHJlc3NfYXN5bmMgaXMgZXhwb3J0ZWQgZm9y IHRoZSBiZW5lZml0IG9mIG9hdXRoX2hvb2tfY2xpZW50LiBTaW5jZQorICogd2Ugb25seSB1c2Ug cHVibGljIGhlYWRlcnMgKGxpYnBxLWZlLmgpIGZvciBvYXV0aF9mbG93LCBpdCBuZWVkcyB0byBi ZSBhbiBpbnQKKyAqIHJhdGhlciB0aGFuIGEgYm9vbC4KKyAqLworaW50CQkJc3RyZXNzX2FzeW5j ID0gZmFsc2U7CisKK3N0YXRpYyB2b2lkCit1c2FnZShjaGFyICphcmd2W10pCit7CisJcHJpbnRm KCJ1c2FnZTogJXMgW2ZsYWdzXSBDT05OSU5GT1xuXG4iLCBhcmd2WzBdKTsKKworCXByaW50Zigi cmVjb2duaXplZCBmbGFnczpcbiIpOworCXByaW50ZigiICAtaCwgLS1oZWxwICAgICAgICAgICAg ICBzaG93IHRoaXMgbWVzc2FnZVxuIik7CisJcHJpbnRmKCIgIC12IFZFUlNJT04gICAgICAgICAg ICAgIHNlbGVjdCB0aGUgaG9vayBBUEkgdmVyc2lvbiAoZGVmYXVsdCAyKVxuIik7CisJcHJpbnRm KCIgIC0tZXhwZWN0ZWQtc2NvcGUgU0NPUEUgIGZhaWwgaWYgcmVjZWl2ZWQgc2NvcGVzIGRvIG5v dCBtYXRjaCBTQ09QRVxuIik7CisJcHJpbnRmKCIgIC0tZXhwZWN0ZWQtdXJpIFVSSSAgICAgIGZh aWwgaWYgcmVjZWl2ZWQgY29uZmlndXJhdGlvbiBsaW5rIGRvZXMgbm90IG1hdGNoIFVSSVxuIik7 CisJcHJpbnRmKCIgIC0tZXhwZWN0ZWQtaXNzdWVyIElTUyAgIGZhaWwgaWYgcmVjZWl2ZWQgaXNz dWVyIGRvZXMgbm90IG1hdGNoIElTUyAodjIgb25seSlcbiIpOworCXByaW50ZigiICAtLW1pc2Jl aGF2ZT1NT0RFICAgICAgICBoYXZlIHRoZSBob29rIGZhaWwgcmVxdWlyZWQgcG9zdGNvbmRpdGlv bnNcbiIKKwkJICAgIiAgICAgICAgICAgICAgICAgICAgICAgICAgKE1PREVzOiBuby1ob29rLCBm YWlsLWFzeW5jLCBuby10b2tlbiwgbm8tc29ja2V0KVxuIik7CisJcHJpbnRmKCIgIC0tbm8taG9v ayAgICAgICAgICAgICAgIGRvbid0IGluc3RhbGwgT0F1dGggaG9va3NcbiIpOworCXByaW50Zigi ICAtLWhhbmctZm9yZXZlciAgICAgICAgICBkb24ndCBldmVyIHJldHVybiBhIHRva2VuIChjb21i aW5lIHdpdGggY29ubmVjdF90aW1lb3V0KVxuIik7CisJcHJpbnRmKCIgIC0tdG9rZW4gVE9LRU4g ICAgICAgICAgIHVzZSB0aGUgcHJvdmlkZWQgVE9LRU4gdmFsdWVcbiIpOworCXByaW50ZigiICAt LWVycm9yIEVSUk1TRyAgICAgICAgICBmYWlsIGluc3RlYWQsIHdpdGggdGhlIGdpdmVuIEVSUk1T RyAodjIgb25seSlcbiIpOworCXByaW50ZigiICAtLXN0cmVzcy1hc3luYyAgICAgICAgICBidXN5 LWxvb3Agb24gUFFjb25uZWN0UG9sbCByYXRoZXIgdGhhbiBwb2xsaW5nXG4iKTsKK30KKworY2hh ciAqCitvYXV0aF90ZXN0X3BhcnNlX2FyZ3YoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSwgaW50IGZv cl9wbHVnaW4pCit7CisJc3RhdGljIGNvbnN0IHN0cnVjdCBvcHRpb24gbG9uZ19vcHRpb25zW10g PSB7CisJCXsiaGVscCIsIG5vX2FyZ3VtZW50LCBOVUxMLCAnaCd9LAorCisJCXsiZXhwZWN0ZWQt c2NvcGUiLCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgMTAwMH0sCisJCXsiZXhwZWN0ZWQtdXJp IiwgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsIDEwMDF9LAorCQl7Im5vLWhvb2siLCBub19hcmd1 bWVudCwgTlVMTCwgMTAwMn0sCisJCXsidG9rZW4iLCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwg MTAwM30sCisJCXsiaGFuZy1mb3JldmVyIiwgbm9fYXJndW1lbnQsIE5VTEwsIDEwMDR9LAorCQl7 Im1pc2JlaGF2ZSIsIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAxMDA1fSwKKwkJeyJzdHJlc3Mt YXN5bmMiLCBub19hcmd1bWVudCwgTlVMTCwgMTAwNn0sCisJCXsiZXhwZWN0ZWQtaXNzdWVyIiwg cmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsIDEwMDd9LAorCQl7ImVycm9yIiwgcmVxdWlyZWRfYXJn dW1lbnQsIE5VTEwsIDEwMDh9LAorCQl7MH0KKwl9OworCisJaW50CQkJYzsKKworCWlmIChmb3Jf cGx1Z2luKQorCXsKKwkJLyogVGhlICJyZWFsIiBhcmd2IGhhcyBhbHJlYWR5IGJlZW4gcGFyc2Vk LiBSZXNldCBvcHRpbmQuICovCisJCW9wdGluZCA9IDE7CisJfQorCisJd2hpbGUgKChjID0gZ2V0 b3B0X2xvbmcoYXJnYywgYXJndiwgImh2OiIsIGxvbmdfb3B0aW9ucywgTlVMTCkpICE9IC0xKQor CXsKKwkJc3dpdGNoIChjKQorCQl7CisJCQljYXNlICdoJzoKKwkJCQl1c2FnZShhcmd2KTsKKwkJ CQlleGl0KDApOworCisJCQljYXNlICd2JzoKKwkJCQlpZiAoc3RyY21wKG9wdGFyZywgIjEiKSA9 PSAwKQorCQkJCQlob29rX3ZlcnNpb24gPSBQUUFVVEhEQVRBX09BVVRIX0JFQVJFUl9UT0tFTjsK KwkJCQllbHNlIGlmIChzdHJjbXAob3B0YXJnLCAiMiIpID09IDApCisJCQkJCWhvb2tfdmVyc2lv biA9IFBRQVVUSERBVEFfT0FVVEhfQkVBUkVSX1RPS0VOX1YyOworCQkJCWVsc2UKKwkJCQl7CisJ CQkJCXVzYWdlKGFyZ3YpOworCQkJCQlleGl0KDEpOworCQkJCX0KKwkJCQlicmVhazsKKworCQkJ Y2FzZSAxMDAwOgkJCS8qIC0tZXhwZWN0ZWQtc2NvcGUgKi8KKwkJCQlleHBlY3RlZF9zY29wZSA9 IG9wdGFyZzsKKwkJCQlicmVhazsKKworCQkJY2FzZSAxMDAxOgkJCS8qIC0tZXhwZWN0ZWQtdXJp ICovCisJCQkJZXhwZWN0ZWRfdXJpID0gb3B0YXJnOworCQkJCWJyZWFrOworCisJCQljYXNlIDEw MDI6CQkJLyogLS1uby1ob29rICovCisJCQkJbm9faG9vayA9IHRydWU7CisJCQkJYnJlYWs7CisK KwkJCWNhc2UgMTAwMzoJCQkvKiAtLXRva2VuICovCisJCQkJdG9rZW4gPSBvcHRhcmc7CisJCQkJ YnJlYWs7CisKKwkJCWNhc2UgMTAwNDoJCQkvKiAtLWhhbmctZm9yZXZlciAqLworCQkJCWhhbmdf Zm9yZXZlciA9IHRydWU7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgMTAwNToJCQkvKiAtLW1pc2Jl aGF2ZSAqLworCQkJCW1pc2JlaGF2ZV9tb2RlID0gb3B0YXJnOworCQkJCWJyZWFrOworCisJCQlj YXNlIDEwMDY6CQkJLyogLS1zdHJlc3MtYXN5bmMgKi8KKwkJCQlzdHJlc3NfYXN5bmMgPSB0cnVl OworCQkJCWJyZWFrOworCisJCQljYXNlIDEwMDc6CQkJLyogLS1leHBlY3RlZC1pc3N1ZXIgKi8K KwkJCQlleHBlY3RlZF9pc3N1ZXIgPSBvcHRhcmc7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgMTAw ODoJCQkvKiAtLWVycm9yICovCisJCQkJZXJybXNnID0gb3B0YXJnOworCQkJCWJyZWFrOworCisJ CQlkZWZhdWx0OgorCQkJCXVzYWdlKGFyZ3YpOworCQkJCWV4aXQoMSk7CisJCX0KKwl9CisKKwlp ZiAoYXJnYyAhPSAoZm9yX3BsdWdpbiA/IG9wdGluZCA6IG9wdGluZCArIDEpKQorCXsKKwkJdXNh Z2UoYXJndik7CisJCWV4aXQoMSk7CisJfQorCisJcmV0dXJuIGFyZ3Zbb3B0aW5kXTsKK30KKwor LyoKKyAqIFBRYXV0aERhdGFIb29rIGltcGxlbWVudGF0aW9uLiBSZXBsYWNlcyB0aGUgZGVmYXVs dCBjbGllbnQgZmxvdyBieSBoYW5kbGluZworICogUFFBVVRIREFUQV9PQVVUSF9CRUFSRVJfVE9L RU5bX1YyXS4KKyAqLworaW50CitvYXV0aF90ZXN0X2F1dGhkYXRhX2hvb2soUEdhdXRoRGF0YSB0 eXBlLCBQR2Nvbm4gKmNvbm4sIHZvaWQgKmRhdGEpCit7CisJUEdvYXV0aEJlYXJlclJlcXVlc3Qg KnJlcTsKKwlQR29hdXRoQmVhcmVyUmVxdWVzdFYyICpyZXEyID0gTlVMTDsKKworCUFzc2VydCho b29rX3ZlcnNpb24gPT0gUFFBVVRIREFUQV9PQVVUSF9CRUFSRVJfVE9LRU4gfHwKKwkJICAgaG9v a192ZXJzaW9uID09IFBRQVVUSERBVEFfT0FVVEhfQkVBUkVSX1RPS0VOX1YyKTsKKworCWlmIChu b19ob29rIHx8IHR5cGUgIT0gaG9va192ZXJzaW9uKQorCQlyZXR1cm4gMDsKKworCXJlcSA9IGRh dGE7CisJaWYgKHR5cGUgPT0gUFFBVVRIREFUQV9PQVVUSF9CRUFSRVJfVE9LRU5fVjIpCisJCXJl cTIgPSBkYXRhOworCisJaWYgKGhhbmdfZm9yZXZlcikKKwl7CisJCS8qIFN0YXJ0IGFzeW5jaHJv bm91cyBwcm9jZXNzaW5nLiAqLworCQlyZXEtPmFzeW5jID0gYXN5bmNfY2I7CisJCXJldHVybiAx OworCX0KKworCWlmIChtaXNiZWhhdmVfbW9kZSkKKwl7CisJCWlmIChzdHJjbXAobWlzYmVoYXZl X21vZGUsICJuby1ob29rIikgIT0gMCkKKwkJCXJlcS0+YXN5bmMgPSBtaXNiZWhhdmVfY2I7CisJ CXJldHVybiAxOworCX0KKworCWlmIChleHBlY3RlZF91cmkpCisJeworCQlpZiAoIXJlcS0+b3Bl bmlkX2NvbmZpZ3VyYXRpb24pCisJCXsKKwkJCWZwcmludGYoc3RkZXJyLCAiZXhwZWN0ZWQgVVJJ IFwiJXNcIiwgZ290IE5VTExcbiIsIGV4cGVjdGVkX3VyaSk7CisJCQlyZXR1cm4gLTE7CisJCX0K KworCQlpZiAoc3RyY21wKGV4cGVjdGVkX3VyaSwgcmVxLT5vcGVuaWRfY29uZmlndXJhdGlvbikg IT0gMCkKKwkJeworCQkJZnByaW50ZihzdGRlcnIsICJleHBlY3RlZCBVUkkgXCIlc1wiLCBnb3Qg XCIlc1wiXG4iLCBleHBlY3RlZF91cmksIHJlcS0+b3BlbmlkX2NvbmZpZ3VyYXRpb24pOworCQkJ cmV0dXJuIC0xOworCQl9CisJfQorCisJaWYgKGV4cGVjdGVkX3Njb3BlKQorCXsKKwkJaWYgKCFy ZXEtPnNjb3BlKQorCQl7CisJCQlmcHJpbnRmKHN0ZGVyciwgImV4cGVjdGVkIHNjb3BlIFwiJXNc IiwgZ290IE5VTExcbiIsIGV4cGVjdGVkX3Njb3BlKTsKKwkJCXJldHVybiAtMTsKKwkJfQorCisJ CWlmIChzdHJjbXAoZXhwZWN0ZWRfc2NvcGUsIHJlcS0+c2NvcGUpICE9IDApCisJCXsKKwkJCWZw cmludGYoc3RkZXJyLCAiZXhwZWN0ZWQgc2NvcGUgXCIlc1wiLCBnb3QgXCIlc1wiXG4iLCBleHBl Y3RlZF9zY29wZSwgcmVxLT5zY29wZSk7CisJCQlyZXR1cm4gLTE7CisJCX0KKwl9CisKKwlpZiAo ZXhwZWN0ZWRfaXNzdWVyKQorCXsKKwkJaWYgKCFyZXEyKQorCQl7CisJCQlmcHJpbnRmKHN0ZGVy ciwgIi0tZXhwZWN0ZWQtaXNzdWVyIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIC12MVxuIik7CisJ CQlyZXR1cm4gLTE7CisJCX0KKworCQlpZiAoIXJlcTItPmlzc3VlcikKKwkJeworCQkJZnByaW50 ZihzdGRlcnIsICJleHBlY3RlZCBpc3N1ZXIgXCIlc1wiLCBnb3QgTlVMTFxuIiwgZXhwZWN0ZWRf aXNzdWVyKTsKKwkJCXJldHVybiAtMTsKKwkJfQorCisJCWlmIChzdHJjbXAoZXhwZWN0ZWRfaXNz dWVyLCByZXEyLT5pc3N1ZXIpICE9IDApCisJCXsKKwkJCWZwcmludGYoc3RkZXJyLCAiZXhwZWN0 ZWQgaXNzdWVyIFwiJXNcIiwgZ290IFwiJXNcIlxuIiwgZXhwZWN0ZWRfaXNzdWVyLCByZXEyLT5p c3N1ZXIpOworCQkJcmV0dXJuIC0xOworCQl9CisJfQorCisJaWYgKGVycm1zZykKKwl7CisJCWlm ICh0b2tlbikKKwkJeworCQkJZnByaW50ZihzdGRlcnIsICItLWVycm9yIGNhbm5vdCBiZSBjb21i aW5lZCB3aXRoIC0tdG9rZW5cbiIpOworCQkJcmV0dXJuIC0xOworCQl9CisJCWVsc2UgaWYgKCFy ZXEyKQorCQl7CisJCQlmcHJpbnRmKHN0ZGVyciwgIi0tZXJyb3IgY2Fubm90IGJlIGNvbWJpbmVk IHdpdGggLXYxXG4iKTsKKwkJCXJldHVybiAtMTsKKwkJfQorCisJCXJlcTItPmVycm9yID0gZXJy bXNnOworCQlyZXR1cm4gLTE7CisJfQorCisJcmVxLT50b2tlbiA9IHRva2VuOworCXJldHVybiAx OworfQorCisvKgorICogU2V0cyB1cCBhIHJlcXVlc3QgZm9yIGEgcGx1Z2luIG1vZHVsZSAocGdf c3RhcnRfb2F1dGhiZWFyZXIoKSkgcmF0aGVyIHRoYW4KKyAqIHVzaW5nIHRoZSBob29rLgorICov CitpbnQKK29hdXRoX3Rlc3Rfc3RhcnRfZmxvdyhQR2Nvbm4gKmNvbm4sIFBHb2F1dGhCZWFyZXJS ZXF1ZXN0VjIgKnJlcXVlc3QpCit7CisJaW50CQkJcmV0OworCisJLyoKKwkgKiBXZSBjYW4gc3Rp bGwgZGVmZXIgdG8gdGhlIGhvb2sgYWJvdmUgdG8gYXZvaWQgY29weWluZyBjb2RlOyB3ZSBqdXN0 CisJICogaGF2ZSB0byB0cmFuc2xhdGUgdGhlIHJldHVybiB2YWx1ZS4KKwkgKi8KKwlyZXQgPSBv YXV0aF90ZXN0X2F1dGhkYXRhX2hvb2soUFFBVVRIREFUQV9PQVVUSF9CRUFSRVJfVE9LRU5fVjIs IGNvbm4sCisJCQkJCQkJCSAgIHJlcXVlc3QpOworCisJaWYgKHJldCA9PSAwKQorCXsKKwkJLyog VGhpcyBpcyBhIGJ1ZyBpbiB0aGUgdGVzdC4gKi8KKwkJZnByaW50ZihzdGRlcnIsICJwbHVnaW4g dGVzdHMgY2Fubm90IG1ha2UgdXNlIG9mIC12MSBvciAtLW5vLWhvb2tcbiIpOworCQlleGl0KDEp OworCX0KKworCXJldHVybiAocmV0ID09IDEpID8gMCA6IC0xOworfQorCitzdGF0aWMgUG9zdGdy ZXNQb2xsaW5nU3RhdHVzVHlwZQorYXN5bmNfY2IoUEdjb25uICpjb25uLCBQR29hdXRoQmVhcmVy UmVxdWVzdCAqcmVxLCBwZ3NvY2tldCAqYWx0c29jaykKK3sKKwlpZiAoaGFuZ19mb3JldmVyKQor CXsKKwkJLyoKKwkJICogVGhpcyBjb2RlIHRlc3RzIHRoYXQgbm90aGluZyBpcyBpbnRlcmZlcmlu ZyB3aXRoIGxpYnBxJ3MgaGFuZGxpbmcKKwkJICogb2YgY29ubmVjdF90aW1lb3V0LgorCQkgKi8K KwkJc3RhdGljIHBnc29ja2V0IHNvY2sgPSBQR0lOVkFMSURfU09DS0VUOworCisJCWlmIChzb2Nr ID09IFBHSU5WQUxJRF9TT0NLRVQpCisJCXsKKwkJCS8qIEZpcnN0IGNhbGwuIENyZWF0ZSBhbiB1 bmJvdW5kIHNvY2tldCB0byB3YWl0IG9uLiAqLworI2lmZGVmIFdJTjMyCisJCQlXU0FEQVRBCQl3 c2FEYXRhOworCQkJaW50CQkJZXJyOworCisJCQllcnIgPSBXU0FTdGFydHVwKE1BS0VXT1JEKDIs IDIpLCAmd3NhRGF0YSk7CisJCQlpZiAoZXJyKQorCQkJeworCQkJCXBlcnJvcigiV1NBU3RhcnR1 cCBmYWlsZWQiKTsKKwkJCQlyZXR1cm4gUEdSRVNfUE9MTElOR19GQUlMRUQ7CisJCQl9CisjZW5k aWYKKwkJCXNvY2sgPSBzb2NrZXQoQUZfSU5FVCwgU09DS19ER1JBTSwgMCk7CisJCQlpZiAoc29j ayA9PSBQR0lOVkFMSURfU09DS0VUKQorCQkJeworCQkJCXBlcnJvcigiZmFpbGVkIHRvIGNyZWF0 ZSBkYXRhZ3JhbSBzb2NrZXQiKTsKKwkJCQlyZXR1cm4gUEdSRVNfUE9MTElOR19GQUlMRUQ7CisJ CQl9CisJCX0KKworCQkvKiBNYWtlIGxpYnBxIHdhaXQgb24gdGhlICh1bnJlYWRhYmxlKSBzb2Nr ZXQuICovCisJCSphbHRzb2NrID0gc29jazsKKwkJcmV0dXJuIFBHUkVTX1BPTExJTkdfUkVBRElO RzsKKwl9CisKKwlyZXEtPnRva2VuID0gdG9rZW47CisJcmV0dXJuIFBHUkVTX1BPTExJTkdfT0s7 Cit9CisKK3N0YXRpYyBQb3N0Z3Jlc1BvbGxpbmdTdGF0dXNUeXBlCittaXNiZWhhdmVfY2IoUEdj b25uICpjb25uLCBQR29hdXRoQmVhcmVyUmVxdWVzdCAqcmVxLCBwZ3NvY2tldCAqYWx0c29jaykK K3sKKwlpZiAoc3RyY21wKG1pc2JlaGF2ZV9tb2RlLCAiZmFpbC1hc3luYyIpID09IDApCisJewor CQkvKiBKdXN0IGZhaWwgIm5vcm1hbGx5Ii4gKi8KKwkJaWYgKGVycm1zZykKKwkJeworCQkJUEdv YXV0aEJlYXJlclJlcXVlc3RWMiAqcmVxMjsKKworCQkJaWYgKGhvb2tfdmVyc2lvbiA9PSBQUUFV VEhEQVRBX09BVVRIX0JFQVJFUl9UT0tFTikKKwkJCXsKKwkJCQlmcHJpbnRmKHN0ZGVyciwgIi0t ZXJyb3IgY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggLXYxXG4iKTsKKwkJCQlleGl0KDEpOworCQkJ fQorCisJCQlyZXEyID0gKFBHb2F1dGhCZWFyZXJSZXF1ZXN0VjIgKikgcmVxOworCQkJcmVxMi0+ ZXJyb3IgPSBlcnJtc2c7CisJCX0KKworCQlyZXR1cm4gUEdSRVNfUE9MTElOR19GQUlMRUQ7CisJ fQorCWVsc2UgaWYgKHN0cmNtcChtaXNiZWhhdmVfbW9kZSwgIm5vLXRva2VuIikgPT0gMCkKKwl7 CisJCS8qIENhbGxiYWNrcyBtdXN0IGFzc2lnbiByZXEtPnRva2VuIGJlZm9yZSByZXR1cm5pbmcg T0suICovCisJCXJldHVybiBQR1JFU19QT0xMSU5HX09LOworCX0KKwllbHNlIGlmIChzdHJjbXAo bWlzYmVoYXZlX21vZGUsICJuby1zb2NrZXQiKSA9PSAwKQorCXsKKwkJLyogQ2FsbGJhY2tzIG11 c3QgYXNzaWduICphbHRzb2NrIGJlZm9yZSBhc2tpbmcgZm9yIHBvbGxpbmcuICovCisJCXJldHVy biBQR1JFU19QT0xMSU5HX1JFQURJTkc7CisJfQorCWVsc2UKKwl7CisJCWZwcmludGYoc3RkZXJy LCAidW5yZWNvZ25pemVkIC0tbWlzYmVoYXZlIG1vZGU6ICVzXG4iLCBtaXNiZWhhdmVfbW9kZSk7 CisJCWV4aXQoMSk7CisJfQorfQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9vYXV0aF92 YWxpZGF0b3IvdC8wMDJfY2xpZW50LnBsIGIvc3JjL3Rlc3QvbW9kdWxlcy9vYXV0aF92YWxpZGF0 b3IvdC8wMDJfY2xpZW50LnBsCmluZGV4IGRhYzY4NGQ3ODUyLi4yZjZmNjAzMzFhMSAxMDA2NDQK LS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy9vYXV0aF92YWxpZGF0b3IvdC8wMDJfY2xpZW50LnBsCisr KyBiL3NyYy90ZXN0L21vZHVsZXMvb2F1dGhfdmFsaWRhdG9yL3QvMDAyX2NsaWVudC5wbApAQCAt MSw2ICsxLDYgQEAKICMKICMgRXhlcmNpc2VzIHRoZSBBUEkgZm9yIGN1c3RvbSBPQXV0aCBjbGll bnQgZmxvd3MsIHVzaW5nIHRoZSBvYXV0aF9ob29rX2NsaWVudAotIyB0ZXN0IGRyaXZlci4KKyMg dGVzdCBkcml2ZXIgYW5kIHRoZSBvYXV0aF9mbG93IGN1c3RvbSBwbHVnaW4uCiAjCiAjIENvcHly aWdodCAoYykgMjAyMS0yMDI2LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAog IwpAQCAtMjAsNiArMjAsMTAgQEAgaWYgKCEkRU5We1BHX1RFU1RfRVhUUkF9IHx8ICRFTlZ7UEdf VEVTVF9FWFRSQX0gIX4gL1xib2F1dGhcYi8pCiAJICAnUG90ZW50aWFsbHkgdW5zYWZlIHRlc3Qg b2F1dGggbm90IGVuYWJsZWQgaW4gUEdfVEVTVF9FWFRSQSc7CiB9CiAKK215ICRwbHVnaW5fc3Vw cG9ydGVkID0gKAorCQkgY2hlY2tfcGdfY29uZmlnKCIjZGVmaW5lIEhBVkVfU1lTX0VWRU5UX0gg MSIpCisJICBvciBjaGVja19wZ19jb25maWcoIiNkZWZpbmUgSEFWRV9TWVNfRVBPTExfSCAxIikp OworCiAjCiAjIENsdXN0ZXIgU2V0dXAKICMKQEAgLTcyLDYgKzc2LDggQEAgc3ViIHRlc3QKIAkJ JGZsYWdzID0gJHBhcmFtc3tmbGFnc307CiAJfQogCisJIyBGaXJzdCBydW4gdGhlIG9hdXRoX2hv b2tfY2xpZW50LCB3aGljaCB1c2VzIFBRYXV0aERhdGFIb29rIHRvIGluc2VydCBhIG5ldworCSMg T0F1dGggZmxvdy4KIAlteSBAY21kID0gKCJvYXV0aF9ob29rX2NsaWVudCIsIEB7JGZsYWdzfSwg JGNvbW1vbl9jb25uc3RyKTsKIAlub3RlICJydW5uaW5nICciIC4gam9pbigiJyAnIiwgQGNtZCkg LiAiJyI7CiAKQEAgLTEwMyw2ICsxMDksMzcgQEAgc3ViIHRlc3QKIAkJJG5vZGUtPmxvZ19jaGVj aygiJHRlc3RfbmFtZTogbG9nIG1hdGNoZXMiLAogCQkJJGxvZ19zdGFydCwgbG9nX2xpa2UgPT4g JHBhcmFtc3tsb2dfbGlrZX0pOwogCX0KKworICBTS0lQOgorCXsKKwkJbGFzdCBTS0lQIGlmICRw YXJhbXN7aG9va19vbmx5fTsKKwkJc2tpcCAiT0F1dGggbW9kdWxlcyBhcmUgbm90IHN1cHBvcnRl ZCBvbiB0aGlzIHBsYXRmb3JtIgorCQkgIHVubGVzcyAkcGx1Z2luX3N1cHBvcnRlZDsKKworCQkj IFJ1biB0aGUgc2FtZSB0ZXN0IHdpdGggcHNxbCBpdHNlbGYsIGxvYWRpbmcgdGhlIG9hdXRoX2Zs b3cuc28gbW9kdWxlLgorCQlsb2NhbCAkRU5We1BHT0FVVEhNT0RVTEV9ID0gJEVOVntmbG93X21v ZHVsZV9wYXRofTsKKworCQkjIEZsYWdzIGFyZSBwYXNzZWQgdG8gdGhlIG1vZHVsZSB2aWEgT0FV VEhfVEVTVF9GTEFHUywgd2l0aCAweDAxIGFzIGEKKwkJIyBzZXBhcmF0b3IuCisJCWxvY2FsICRF TlZ7T0FVVEhfVEVTVF9GTEFHU30gPSBqb2luKCJceDAxIiwgQHskZmxhZ3N9KTsKKworCQlpZiAo JHBhcmFtc3tleHBlY3Rfc3VjY2Vzc30pCisJCXsKKwkJCSRub2RlLT5jb25uZWN0X29rKAorCQkJ CSRjb21tb25fY29ubnN0ciwKKwkJCQkiW3BsdWdpbiBmbG93XSAkdGVzdF9uYW1lIiwKKwkJCQll eHBlY3RlZF9zdGRlcnIgPT4gJHBhcmFtc3tleHBlY3RlZF9zdGRlcnJ9LAorCQkJCWxvZ19saWtl ID0+ICRwYXJhbXN7bG9nX2xpa2V9KTsKKwkJfQorCQllbHNlCisJCXsKKwkJCSRub2RlLT5jb25u ZWN0X2ZhaWxzKAorCQkJCSRjb21tb25fY29ubnN0ciwKKwkJCQkiW3BsdWdpbiBmbG93XSAkdGVz dF9uYW1lIiwKKwkJCQlleHBlY3RlZF9zdGRlcnIgPT4gJHBhcmFtc3tleHBlY3RlZF9zdGRlcnJ9 LAorCQkJCWxvZ19saWtlID0+ICRwYXJhbXN7bG9nX2xpa2V9KTsKKwkJfQorCX0KIH0KIAogdGVz dCgKQEAgLTEzNiw2ICsxNzMsNyBAQCAkY29tbW9uX2Nvbm5zdHIgPSAiJGJhc2VfY29ubnN0ciBv YXV0aF9pc3N1ZXI9JGlzc3VlciBvYXV0aF9jbGllbnRfaWQ9bXlJRCI7CiAjIE1ha2Ugc3VyZSB0 aGUgdjEgaG9vayBjb250aW51ZXMgdG8gd29yay4KIHRlc3QoCiAJInYxIHN5bmNocm9ub3VzIGhv b2sgY2FuIHByb3ZpZGUgYSB0b2tlbiIsCisJaG9va19vbmx5ID0+IDEsICAgICMgcGx1Z2lucyBk b24ndCBzdXBwb3J0IEFQSSB2MQogCWZsYWdzID0+IFsKIAkJIi12MSIsCiAJCSItLXRva2VuIiA9 PiAibXktdG9rZW4tdjEiLApAQCAtMTUwLDYgKzE4OCw3IEBAIGlmICgkRU5We3dpdGhfbGliY3Vy bH0gbmUgJ3llcycpCiAJIyBsaWJwcSBzaG91bGQgaGVscCB1c2VycyBvdXQgaWYgbm8gT0F1dGgg c3VwcG9ydCBpcyBidWlsdCBpbi4KIAl0ZXN0KAogCQkiZmFpbHMgd2l0aG91dCBjdXN0b20gaG9v ayBpbnN0YWxsZWQiLAorCQlob29rX29ubHkgPT4gMSwgICAgIyBwbHVnaW5zIGNhbid0IHVzZSAt LW5vLWhvb2sKIAkJZmxhZ3MgPT4gWyItLW5vLWhvb2siXSwKIAkJZXhwZWN0ZWRfc3RkZXJyID0+ CiAJCSAgcXIvbm8gT0F1dGggZmxvd3MgYXJlIGF2YWlsYWJsZSBcKHRyeSBpbnN0YWxsaW5nIHRo ZSBsaWJwcS1vYXV0aCBwYWNrYWdlXCkvCkBAIC0yMDYsNiArMjQ1LDcgQEAgZm9yZWFjaCBteSAk YyAoQGNhc2VzKQogCXRlc3QoCiAJCSJob29rIG1pc2JlaGF2aW9yOiAkYy0+eydmbGFnJ30gKHYx KSIsCiAJCWZsYWdzID0+IFsgJy12MScsICRjLT57J2ZsYWcnfSBdLAorCQlob29rX29ubHkgPT4g MSwgICAgIyBwbHVnaW5zIGNhbid0IHVzZSAtdjEKIAkJZXhwZWN0ZWRfc3RkZXJyID0+ICRjLT57 J2V4cGVjdGVkX2Vycm9yJ30pOwogfQogCkBAIC0yMTksNCArMjU5LDE5IEBAIHRlc3QoCiAJZXhw ZWN0ZWRfc3RkZXJyID0+CiAJICBxci91c2VyLWRlZmluZWQgT0F1dGggZmxvdyBmYWlsZWQ6IGFz eW5jIGVycm9yIG1lc3NhZ2UvKTsKIAorU0tJUDoKK3sKKwlza2lwICJPQXV0aCBtb2R1bGVzIGFy ZSBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm0iCisJICB1bmxlc3MgJHBsdWdpbl9zdXBw b3J0ZWQ7CisKKwkjIE1ha2Ugc3VyZSBhIG1pc2FpbWVkIFBHT0FVVEhNT0RVTEUgZ2l2ZXMgdGhl IGNvcnJlY3QgZXJyb3IgbWVzc2FnZS4KKwlsb2NhbCAkRU5We1BHT0FVVEhNT0RVTEV9ID0gJG5v ZGUtPmJhc2VkaXIgLiAnL25vbmV4aXN0ZW50LnNvJzsKKworCSRub2RlLT5jb25uZWN0X2ZhaWxz KAorCQkkY29tbW9uX2Nvbm5zdHIsCisJCSJQR09BVVRITU9EVUxFIGVycm9yIG1lc3NhZ2VzIiwK KwkJZXhwZWN0ZWRfc3RkZXJyID0+CisJCSAgcXIvdXNlci1kZWZpbmVkIE9BdXRoIGZsb3cgZmFp bGVkOiBwbHVnaW4gY291bGQgbm90IGJlIGxvYWRlZC8pOworfQorCiBkb25lX3Rlc3RpbmcoKTsK LS0gCjIuMzQuMQoK --00000000000093b953064cae118a--