Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1u26ao-00D0my-7A for pgsql-hackers@arkaria.postgresql.org; Tue, 08 Apr 2025 10:54:10 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1u26am-007odg-GH for pgsql-hackers@arkaria.postgresql.org; Tue, 08 Apr 2025 10:54:08 +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.94.2) (envelope-from ) id 1u26am-007odV-0w for pgsql-hackers@lists.postgresql.org; Tue, 08 Apr 2025 10:54:08 +0000 Received: from mail-ua1-x933.google.com ([2607:f8b0:4864:20::933]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1u26aj-00478J-1m for pgsql-hackers@lists.postgresql.org; Tue, 08 Apr 2025 10:54:07 +0000 Received: by mail-ua1-x933.google.com with SMTP id a1e0cc1a2514c-86d30c329f2so5035166241.0 for ; Tue, 08 Apr 2025 03:54:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1744109643; x=1744714443; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=CgX46YF8rzq/kcNl7VudLPOWfkfEybtYjhfXwYcNZLo=; b=agrA4ewC6u/1MgMR/IzjWjD3RXo9zUAR2+tS4rR7mQLiBXrWh2X2Ky8HETlinmPwao bvNwIfW0W+fJpuFwRAj6iKYLeO94GI7/3WOiNjlxco7o7ub6YS8DsSJlJkrRxiFnOhfj xG+RBBKB/ADY1FPMJLgFkgGS9XB4s9c0xY/P2H9qSgNp2G/u50+J9nB4YJxleBkgUpG/ up8aQ+aDL7733TMjuBxcxhfpuep4NOa1jfeFBrZ6gw37Po1upPX8dDN6bknkSPigHc6a LP0lP/JmjFyYLWsBVtoj5IyGNZog8B08T/pAxno131Ydf0fdz0s95Jc60XHmHFQRr8Ba xRpA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744109643; x=1744714443; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=CgX46YF8rzq/kcNl7VudLPOWfkfEybtYjhfXwYcNZLo=; b=Z7KHzUKGLvcP6pAMuEdmqHPti2aV+vWyZYkXvDxm62k0UP9mGA/+C3R9K7gT1WBp8V I+WvFBtpvcn/QI/LncnVT90Ych4f/bVzuqdY1+uGQ1/MULk9sjQu9Mz/gTQk4RbiWvyd +HEby6VP9w2ZkZgwSVBZFRml8CLX0ojNE82/8jlexMKyyV6mAZ5DhMJQiOIY1ysUxqIB OqYwnOS+0+BAPETsZvCTqE+LoZA0H19TQhMk4exds5hjhAnUs6PuK3+T4PfBTNGz70jT Qc1X09tAYHuWSG8oGjwLbYCGqZn1J6b43eWw8hvmw32gIHn9FNM8EzszlzJcqFTj6Eyn uL/g== X-Forwarded-Encrypted: i=1; AJvYcCWhieCWvWww6hDIZetwgheXxACSPHxC5Jjacud3oXkqXOhhcaXZlbmpbmmGNHtIyhKYfwIld1XQhw9NbelG@lists.postgresql.org X-Gm-Message-State: AOJu0YyBMiMQm1bOp+qbbPCmMh52PBMG8VPlIuh+ENJCj1XNa+WebPWL 3b9RJfISXGkRFEwD+SmlYVuCDLl2hdvX4nOBKKrNiGAnEsk0xDKSn0nDDZgAkx1nyJ43N88yzz6 +O8/RoCrnXUvS12myu3rdwKid/bc= X-Gm-Gg: ASbGnctSk4vnJB2RrUIuP5txJ/ioVmfLm1ViQh3YT5W0cS9+FHU9bBbqJ+PSu8mLntB r+CSjemKvgrBCvLAK9H77ZHyOMyCeek004nRNnflwsSWbPduJUjfhpB0tG4n7Yu/bSezK9jH4hf IiK6n7s2jqpE/Ie9302NHFzI0cX388yqTTTpwLRk4M4grNWo3KiyZY/et+ X-Google-Smtp-Source: AGHT+IE75rCUYP+OVkmaz+1RAIHtSufo8omst5Shn6M1OOxsRb49qdzofAx6qoFbslrpp0FUC/NudVahpGYrg9/Htw4= X-Received: by 2002:a05:6102:cd1:b0:4b3:fee3:2820 with SMTP id ada2fe7eead31-4c9b3acc025mr1661763137.9.1744109643440; Tue, 08 Apr 2025 03:54:03 -0700 (PDT) MIME-Version: 1.0 References: <90dc6e9d-9348-485a-b27c-7b1637f06c2e@uni-muenster.de> In-Reply-To: From: jian he Date: Tue, 8 Apr 2025 18:53:25 +0800 X-Gm-Features: ATxdqUGtDokeeeRCKKJTJ1iqDSJq-IBoVlS2u1cMIuxb6zIbcSds1n82M_XEZMc Message-ID: Subject: Re: Change COPY ... ON_ERROR ignore to ON_ERROR ignore_row To: Masahiko Sawada Cc: vignesh C , Jim Jones , Kirill Reshke , Fujii Masao , "David G. Johnston" , Yugo NAGATA , torikoshia , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="000000000000bf4b060632422bf1" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000bf4b060632422bf1 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, Apr 8, 2025 at 6:42=E2=80=AFAM Masahiko Sawada wrote: > > > BTW have you measured the overheads of calling InputFunctionCallSafe > twice? If it's significant, we might want to find other ways to > achieve it as it would not be good to incur overhead just for > relatively rare cases. > Please check the attached two patches v17-0001-COPY-on_error-set_null.original, v17-0001-COPY-on_error-set_null.patch for non-domain types, (on_error set_null), the performance of these two are the same. for domain type with or without constraint, (on_error set_null): v17.original is slower than v17.patch. test script: create unlogged table t2(a text); insert into t2 select 'a' from generate_Series(1, 10_000_000) g; copy t2 to '/tmp/2.txt'; CREATE DOMAIN d1 AS INT ; CREATE DOMAIN d2 AS INT check (value > 0); create unlogged table t3(a int); create unlogged table t4(a d1); create unlogged table t5(a d2); performance result: v17-0001-COPY-on_error-set_null.patch -- 764.903 ms copy t3 from '/tmp/2.txt' (on_error set_null) \watch c=3D10 i=3D0.1 -- 779.253 ms copy t4 from '/tmp/2.txt' (on_error set_null) \watch c=3D10 i=3D0.1 -- Time: 750.390 ms copy t5 from '/tmp/2.txt' (on_error set_null) \watch c=3D10 i=3D0.1 v17-0001-COPY-on_error-set_null.original -- 774.943 ms copy t3 from '/tmp/2.txt' (on_error set_null) \watch c=3D10 i=3D0.1 -- 867.671 ms copy t4 from '/tmp/2.txt' (on_error set_null) \watch c=3D10 i=3D0.1 -- 927.685 ms copy t5 from '/tmp/2.txt' (on_error set_null) \watch c=3D10 i=3D0.1 > Here are some comments: > > + if (InputFunctionCallSafe(&in_functions[m], > + NULL, > + typioparams[m], > + att->atttypmod, > + NULL, > + &values[m])) > > Given that we pass NULL to escontext, does this function return false > in an error case? Or can we use InputFunctionCall instead? > > I think we should mention that SET_NULL still could fail if the data > type of the column doesn't accept NULL. > > How about restructuring the codes around handling data incompatibility > errors like: > > else if (!InputFunctionCallSafe(...)) > { > if (cstate->opts.on_error =3D=3D IGNORE) > { > cstate->num_errors++; > if (cstate->opts.log_verbosity =3D=3D VERBOSE) > write a NOTICE message; > return true; // ignore whole row. > } > else if (cstate->opts.on_error =3D=3D SET_NULL) > { > current_row_erroneous =3D true; > set NULL to the column; > if (cstate->opts.log_verbosity =3D=3D VERBOSE) > write a NOTICE message; > continue; // go to the next column. > } > > That way, we have similar structures for both on_error handling and > don't need to reset cstate->cur_attname at the end of SET_NULL > handling. > I think we still need to reset cstate->cur_attname. the current code structure is `` foreach(cur, cstate->attnumlist) { if (condition x) continue; cstate->cur_attname =3D NULL; cstate->cur_attval =3D NULL; } `` In some cases (last column , condition x is satisfied), once we reach the ``continue``, then we cannot reach. `` cstate->cur_attname =3D NULL; cstate->cur_attval =3D NULL; `` > --- > From the regression tests: > > --fail, column a is domain with not-null constraint > COPY t_on_error_null FROM STDIN WITH (on_error set_null); > a 11 14 > \. > ERROR: domain d_int_not_null does not allow null values > CONTEXT: COPY t_on_error_null, line 1, column a: "a" > > I guess that the log messages could confuse users since while the > actual error was caused by setting NULL to the non-NULL domain type > column, the context message says the data 'a' was erroneous. > if the second function is InputFunctionCall, then we cannot customize the error message. we can't have both. I guess we need a second InputFunctionCallSafe with escontext NOT NULL. now i change it to if (!cstate->domain_with_constraint[m] || InputFunctionCallSafe(&in_functions[m], NULL, typioparams[m], att->atttypmod, (Node *) cstate->escontext, &values[m])) else if (string =3D=3D NULL) ereport(ERROR, errcode(ERRCODE_NOT_NULL_VIOLATION), errmsg("domain %s does not allow null values", format_type_be(typioparams[m])), errdatatype(typioparams[m])); else ereport(ERROR, errcode(ERRCODE_INVALID_TEXT_REPRESENTATION), errmsg("invalid input value for domain %s: \"%s= \"", format_type_be(typioparams[m]), string))= ; do these ``ELSE IF``, ``ELSE`` error report messages make sense to you? --000000000000bf4b060632422bf1 Content-Type: application/octet-stream; name="v17-0001-COPY-on_error-set_null.original" Content-Disposition: attachment; filename="v17-0001-COPY-on_error-set_null.original" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m98dsxkm0 RnJvbSA3Y2E3Y2JhMGE4OWExNzQ0NGVkMjY0MGQ1NzczNDNlNGQ0MGYyZTVkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFR1ZSwgOCBBcHIgMjAyNSAxNToxODowNiArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjE3 IDEvMV0gQ09QWSAob25fZXJyb3Igc2V0X251bGwpCgpFeHRlbnQgIm9uX2Vycm9yIGFjdGlvbiIs IGludHJvZHVjZSBuZXcgb3B0aW9uOiAgb25fZXJyb3Igc2V0X251bGwuCgpDdXJyZW50IGdyYW1t YXIgbWFrZXMgdXMgdW5hYmxlIHRvIHVzZSAib25fZXJyb3IgbnVsbCIuIGlmIHdlIGRpZCBpdCwg dGhlbiBpbgphbGwgdGhlIENPUFkgY29tbWFuZCBvcHRpb25zJ3MgdmFsdWUsIG51bGwgd2lsbCBi ZWNvbWUgcmVzZXJ2ZWQgdG8gbm9uLXJlc2VydmVkCndvcmRzLiAgc28gd2UgY2hvb3NlICJvbl9l cnJvciBzZXRfbnVsbCIuCgpBbnkgZGF0YSB0eXBlIGNvbnZlcnNpb24gZXJyb3JzIGR1cmluZyB0 aGUgQ09QWSBGUk9NIHByb2Nlc3Mgd2lsbCByZXN1bHQgaW4gdGhlCmFmZmVjdGVkIGNvbHVtbiBi ZWluZyBzZXQgdG8gTlVMTC4gVGhpcyBvbmx5IGFwcGxpZXMgd2hlbiB1c2luZyB0aGUgbm9uLWJp bmFyeQpmb3JtYXQgZm9yIENPUFkgRlJPTS4KCkhvd2V2ZXIsIHRoZSBub3QtbnVsbCBjb25zdHJh aW50IHdpbGwgc3RpbGwgYmUgZW5mb3JjZWQuCklmIGEgY29sdW1uIGhhcyBhIG5vdC1udWxsIGNv bnN0cmFpbnQsIHN1Y2Nlc3NmdWwgKG9uX2Vycm9yIHNldF9udWxsKQphY3Rpb24gd2lsbCBjYXVz ZSBub3QtbnVsbCBjb25zdHJhaW50IHZpb2xhdGlvbi4KVGhpcyBhbHNvIGFwcGxpZXMgdG8gY29s dW1uIHR5cGUgaXMgZG9tYWluIHdpdGggbm90LW51bGwgY29uc3RyYWludC4KCkEgcmVncmVzc2lv biB0ZXN0IGZvciBhIGRvbWFpbiB3aXRoIGEgbm90LW51bGwgY29uc3RyYWludCBoYXMgYmVlbiBh ZGRlZC4KCkF1dGhvcjogSmlhbiBIZSA8amlhbi51bml2ZXJzYWxpdHlAZ21haWwuY29tPgpBdXRo b3I6IEtpcmlsbCBSZXNoa2UgPHJlc2hrZWtpcmlsbEBnbWFpbC5jb20+CgpSZXZpZXdlZC1ieToK RnVqaWkgTWFzYW8gPG1hc2FvLmZ1amlpQG9zcy5udHRkYXRhLmNvbT4KSmltIEpvbmVzIDxqaW0u am9uZXNAdW5pLW11ZW5zdGVyLmRlPgoiRGF2aWQgRy4gSm9obnN0b24iIDxkYXZpZC5nLmpvaG5z dG9uQGdtYWlsLmNvbT4KWXVnbyBOQUdBVEEgPG5hZ2F0YUBzcmFvc3MuY28uanA+CnRvcmlrb3No aWEgPHRvcmlrb3NoaWFAb3NzLm50dGRhdGEuY29tPgpNYXNhaGlrbyBTYXdhZGEgPHNhd2FkYS5t c2hrQGdtYWlsLmNvbT4KCmRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vQ0FLRlF1d2F3 eTFlNllSNFM9ait5N3BYcWdfRHcxV0JWcmd2Zj1CUDNkMV9hU2ZlXytRQG1haWwuZ21haWwuY29t Ci0tLQogZG9jL3NyYy9zZ21sL3JlZi9jb3B5LnNnbWwgICAgICAgICAgIHwgIDM2ICsrKysrLS0t CiBzcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5LmMgICAgICAgICAgfCAgIDYgKy0KIHNyYy9iYWNr ZW5kL2NvbW1hbmRzL2NvcHlmcm9tLmMgICAgICB8ICAyOSArKystLS0KIHNyYy9iYWNrZW5kL2Nv bW1hbmRzL2NvcHlmcm9tcGFyc2UuYyB8IDEyOCArKysrKysrKysrKysrKysrKysrKystLS0tLS0K IHNyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYyAgICAgICB8ICAgMiArLQogc3JjL2luY2x1 ZGUvY29tbWFuZHMvY29weS5oICAgICAgICAgIHwgICAxICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvY29weTIub3V0ICB8ICA2MCArKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3Nx bC9jb3B5Mi5zcWwgICAgICAgfCAgNDYgKysrKysrKysrKwogOCBmaWxlcyBjaGFuZ2VkLCAyNTUg aW5zZXJ0aW9ucygrKSwgNTMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21s L3JlZi9jb3B5LnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2NvcHkuc2dtbAppbmRleCBkNjg1OTI3 NmJlZC4uZGIxMTI4NjdmYTAgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvY29weS5zZ21s CisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY29weS5zZ21sCkBAIC0zOTQsMjMgKzM5NCwzNiBAQCBD T1BZIHsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2Vh YmxlPiBbICggPHJlcGxhY2VhYmxlCiAgICAgICBTcGVjaWZpZXMgaG93IHRvIGJlaGF2ZSB3aGVu IGVuY291bnRlcmluZyBhbiBlcnJvciBjb252ZXJ0aW5nIGEgY29sdW1uJ3MKICAgICAgIGlucHV0 IHZhbHVlIGludG8gaXRzIGRhdGEgdHlwZS4KICAgICAgIEFuIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5lcnJvcl9hY3Rpb248L3JlcGxhY2VhYmxlPiB2YWx1ZSBvZgotICAgICAgPGxp dGVyYWw+c3RvcDwvbGl0ZXJhbD4gbWVhbnMgZmFpbCB0aGUgY29tbWFuZCwgd2hpbGUKLSAgICAg IDxsaXRlcmFsPmlnbm9yZTwvbGl0ZXJhbD4gbWVhbnMgZGlzY2FyZCB0aGUgaW5wdXQgcm93IGFu ZCBjb250aW51ZSB3aXRoIHRoZSBuZXh0IG9uZS4KKyAgICAgIDxsaXRlcmFsPnN0b3A8L2xpdGVy YWw+IG1lYW5zIGZhaWwgdGhlIGNvbW1hbmQsCisgICAgICA8bGl0ZXJhbD5pZ25vcmU8L2xpdGVy YWw+IG1lYW5zIGRpc2NhcmQgdGhlIGlucHV0IHJvdyBhbmQgY29udGludWUgd2l0aCB0aGUgbmV4 dCBvbmUsCisgICAgICBhbmQgPGxpdGVyYWw+c2V0X251bGw8L2xpdGVyYWw+IG1lYW5zIHJlcGxh Y2UgY29sdW1ucyBjb250YWluaW5nIGludmFsaWQKKyAgICAgIGlucHV0IHZhbHVlcyB3aXRoIDxs aXRlcmFsPk5VTEw8L2xpdGVyYWw+IGFuZCBtb3ZlIHRvIHRoZSBuZXh0IGZpZWxkLgogICAgICAg VGhlIGRlZmF1bHQgaXMgPGxpdGVyYWw+c3RvcDwvbGl0ZXJhbD4uCiAgICAgIDwvcGFyYT4KICAg ICAgPHBhcmE+Ci0gICAgICBUaGUgPGxpdGVyYWw+aWdub3JlPC9saXRlcmFsPiBvcHRpb24gaXMg YXBwbGljYWJsZSBvbmx5IGZvciA8Y29tbWFuZD5DT1BZIEZST008L2NvbW1hbmQ+CisgICAgICBU aGUgPGxpdGVyYWw+aWdub3JlPC9saXRlcmFsPiBhbmQgPGxpdGVyYWw+c2V0X251bGw8L2xpdGVy YWw+CisgICAgICBvcHRpb25zIGFyZSBhcHBsaWNhYmxlIG9ubHkgZm9yIDxjb21tYW5kPkNPUFkg RlJPTTwvY29tbWFuZD4KICAgICAgIHdoZW4gdGhlIDxsaXRlcmFsPkZPUk1BVDwvbGl0ZXJhbD4g aXMgPGxpdGVyYWw+dGV4dDwvbGl0ZXJhbD4gb3IgPGxpdGVyYWw+Y3N2PC9saXRlcmFsPi4KICAg ICAgPC9wYXJhPgorICAgIDxwYXJhPgorICAgICAgRm9yIDxsaXRlcmFsPmlnbm9yZTwvbGl0ZXJh bD4gb3B0aW9uLCBhIDxsaXRlcmFsPk5PVElDRTwvbGl0ZXJhbD4gbWVzc2FnZQorICAgICAgY29u dGFpbmluZyB0aGUgaWdub3JlZCByb3cgY291bnQgaXMgZW1pdHRlZCBhdCB0aGUgZW5kIG9mIHRo ZSA8Y29tbWFuZD5DT1BZCisgICAgICBGUk9NPC9jb21tYW5kPiBpZiBhdCBsZWFzdCBvbmUgcm93 IHdhcyBkaXNjYXJkZWQuCisgICAgICBGb3IgPGxpdGVyYWw+c2V0X251bGw8L2xpdGVyYWw+IG9w dGlvbiwKKyAgICAgIGEgPGxpdGVyYWw+Tk9USUNFPC9saXRlcmFsPiBtZXNzYWdlIGluZGljYXRp bmcgdGhlIG51bWJlciBvZiByb3dzCisgICAgICB3aGVyZSBpbnZhbGlkIGlucHV0IHZhbHVlcyB3 ZXJlIHJlcGxhY2VkIHdpdGggbnVsbCBpcyBlbWl0dGVkCisgICAgICBhdCB0aGUgZW5kIG9mIHRo ZSA8Y29tbWFuZD5DT1BZIEZST008L2NvbW1hbmQ+IGlmIGF0IGxlYXN0IG9uZSByb3cgd2FzIHJl cGxhY2VkLgorICAgICA8L3BhcmE+CiAgICAgIDxwYXJhPgotICAgICAgQSA8bGl0ZXJhbD5OT1RJ Q0U8L2xpdGVyYWw+IG1lc3NhZ2UgY29udGFpbmluZyB0aGUgaWdub3JlZCByb3cgY291bnQgaXMK LSAgICAgIGVtaXR0ZWQgYXQgdGhlIGVuZCBvZiB0aGUgPGNvbW1hbmQ+Q09QWSBGUk9NPC9jb21t YW5kPiBpZiBhdCBsZWFzdCBvbmUKLSAgICAgIHJvdyB3YXMgZGlzY2FyZGVkLiBXaGVuIDxsaXRl cmFsPkxPR19WRVJCT1NJVFk8L2xpdGVyYWw+IG9wdGlvbiBpcyBzZXQgdG8KLSAgICAgIDxsaXRl cmFsPnZlcmJvc2U8L2xpdGVyYWw+LCBhIDxsaXRlcmFsPk5PVElDRTwvbGl0ZXJhbD4gbWVzc2Fn ZQorICAgICAgV2hlbiA8bGl0ZXJhbD5MT0dfVkVSQk9TSVRZPC9saXRlcmFsPiBvcHRpb24gaXMg c2V0IHRvIDxsaXRlcmFsPnZlcmJvc2U8L2xpdGVyYWw+LAorICAgICAgZm9yIDxsaXRlcmFsPmln bm9yZTwvbGl0ZXJhbD4gb3B0aW9uLCBhIDxsaXRlcmFsPk5PVElDRTwvbGl0ZXJhbD4gbWVzc2Fn ZQogICAgICAgY29udGFpbmluZyB0aGUgbGluZSBvZiB0aGUgaW5wdXQgZmlsZSBhbmQgdGhlIGNv bHVtbiBuYW1lIHdob3NlIGlucHV0Ci0gICAgICBjb252ZXJzaW9uIGhhcyBmYWlsZWQgaXMgZW1p dHRlZCBmb3IgZWFjaCBkaXNjYXJkZWQgcm93LgotICAgICAgV2hlbiBpdCBpcyBzZXQgdG8gPGxp dGVyYWw+c2lsZW50PC9saXRlcmFsPiwgbm8gbWVzc2FnZSBpcyBlbWl0dGVkCi0gICAgICByZWdh cmRpbmcgaWdub3JlZCByb3dzLgorICAgICAgY29udmVyc2lvbiBoYXMgZmFpbGVkIGlzIGVtaXR0 ZWQgZm9yIGVhY2ggZGlzY2FyZGVkIHJvdzsKKyAgICAgIGZvciA8bGl0ZXJhbD5zZXRfbnVsbDwv bGl0ZXJhbD4gb3B0aW9uLCBhIDxsaXRlcmFsPk5PVElDRTwvbGl0ZXJhbD4KKyAgICAgIG1lc3Nh Z2UgY29udGFpbmluZyB0aGUgbGluZSBvZiB0aGUgaW5wdXQgZmlsZSBhbmQgdGhlIGNvbHVtbiBu YW1lIHdoZXJlCisgICAgICB2YWx1ZSB3YXMgcmVwbGFjZWQgd2l0aCA8bGl0ZXJhbD5OVUxMPC9s aXRlcmFsPiBmb3IgZWFjaCBpbnB1dCBjb252ZXJzaW9uCisgICAgICBmYWlsdXJlLgorICAgICAg V2hlbiBpdCBpcyBzZXQgdG8gPGxpdGVyYWw+c2lsZW50PC9saXRlcmFsPiwgbm8gbWVzc2FnZSBp cyBlbWl0dGVkIHJlZ2FyZGluZyBpbnB1dCBjb252ZXJzaW9uIGZhaWxlZCByb3dzLgogICAgICA8 L3BhcmE+CiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgpAQCAtNDU4LDcgKzQ3 MSw4IEBAIENPUFkgeyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfbmFtZTwv cmVwbGFjZWFibGU+IFsgKCA8cmVwbGFjZWFibGUKICAgICAgPC9wYXJhPgogICAgICA8cGFyYT4K ICAgICAgIFRoaXMgaXMgY3VycmVudGx5IHVzZWQgaW4gPGNvbW1hbmQ+Q09QWSBGUk9NPC9jb21t YW5kPiBjb21tYW5kIHdoZW4KLSAgICAgIDxsaXRlcmFsPk9OX0VSUk9SPC9saXRlcmFsPiBvcHRp b24gaXMgc2V0IHRvIDxsaXRlcmFsPmlnbm9yZTwvbGl0ZXJhbD4uCisgICAgICA8bGl0ZXJhbD5P Tl9FUlJPUjwvbGl0ZXJhbD4gb3B0aW9uIGlzIHNldCB0byA8bGl0ZXJhbD5pZ25vcmU8L2xpdGVy YWw+CisgICAgICBvciA8bGl0ZXJhbD5zZXRfbnVsbDwvbGl0ZXJhbD4uCiAgICAgICA8L3BhcmE+ CiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvY29weS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weS5jCmluZGV4 IDc0YWU0MmIxOWE3Li5mOTYzZDBlNTFmZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFu ZHMvY29weS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHkuYwpAQCAtNDAzLDEyICs0 MDMsMTQgQEAgZGVmR2V0Q29weU9uRXJyb3JDaG9pY2UoRGVmRWxlbSAqZGVmLCBQYXJzZVN0YXRl ICpwc3RhdGUsIGJvb2wgaXNfZnJvbSkKIAkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwg ZGVmLT5sb2NhdGlvbikpKTsKIAogCS8qCi0JICogQWxsb3cgInN0b3AiLCBvciAiaWdub3JlIiB2 YWx1ZXMuCisJICogQWxsb3cgInN0b3AiLCAiaWdub3JlIiwgInNldF9udWxsIiB2YWx1ZXMuCiAJ ICovCiAJaWYgKHBnX3N0cmNhc2VjbXAoc3ZhbCwgInN0b3AiKSA9PSAwKQogCQlyZXR1cm4gQ09Q WV9PTl9FUlJPUl9TVE9QOwogCWlmIChwZ19zdHJjYXNlY21wKHN2YWwsICJpZ25vcmUiKSA9PSAw KQogCQlyZXR1cm4gQ09QWV9PTl9FUlJPUl9JR05PUkU7CisJaWYgKHBnX3N0cmNhc2VjbXAoc3Zh bCwgInNldF9udWxsIikgPT0gMCkKKwkJcmV0dXJuIENPUFlfT05fRVJST1JfU0VUX05VTEw7CiAK IAllcmVwb3J0KEVSUk9SLAogCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9W QUxVRSksCkBAIC05MTgsNyArOTIwLDcgQEAgUHJvY2Vzc0NvcHlPcHRpb25zKFBhcnNlU3RhdGUg KnBzdGF0ZSwKIAkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCiAJCQkJIGVycm1z Zygib25seSBPTl9FUlJPUiBTVE9QIGlzIGFsbG93ZWQgaW4gQklOQVJZIG1vZGUiKSkpOwogCi0J aWYgKG9wdHNfb3V0LT5yZWplY3RfbGltaXQgJiYgIW9wdHNfb3V0LT5vbl9lcnJvcikKKwlpZiAo b3B0c19vdXQtPnJlamVjdF9saW1pdCAmJiBvcHRzX291dC0+b25fZXJyb3IgIT0gQ09QWV9PTl9F UlJPUl9JR05PUkUpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZB TElEX1BBUkFNRVRFUl9WQUxVRSksCiAJCS8qLSB0cmFuc2xhdG9yOiBmaXJzdCBhbmQgc2Vjb25k ICVzIGFyZSB0aGUgbmFtZXMgb2YgQ09QWSBvcHRpb24sIGUuZy4KZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2NvcHlmcm9tLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJv bS5jCmluZGV4IGZiYmJjMDlhOTdiLi5kNGE5MWI2OGFjMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvY29weWZyb20uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJv bS5jCkBAIC0xNDY3LDE0ICsxNDY3LDIyIEBAIENvcHlGcm9tKENvcHlGcm9tU3RhdGUgY3N0YXRl KQogCS8qIERvbmUsIGNsZWFuIHVwICovCiAJZXJyb3JfY29udGV4dF9zdGFjayA9IGVycmNhbGxi YWNrLnByZXZpb3VzOwogCi0JaWYgKGNzdGF0ZS0+b3B0cy5vbl9lcnJvciAhPSBDT1BZX09OX0VS Uk9SX1NUT1AgJiYKLQkJY3N0YXRlLT5udW1fZXJyb3JzID4gMCAmJgorCWlmIChjc3RhdGUtPm51 bV9lcnJvcnMgPiAwICYmCiAJCWNzdGF0ZS0+b3B0cy5sb2dfdmVyYm9zaXR5ID49IENPUFlfTE9H X1ZFUkJPU0lUWV9ERUZBVUxUKQotCQllcmVwb3J0KE5PVElDRSwKLQkJCQllcnJtc2dfcGx1cmFs KCIlIiBQUkl1NjQgIiByb3cgd2FzIHNraXBwZWQgZHVlIHRvIGRhdGEgdHlwZSBpbmNvbXBhdGli aWxpdHkiLAotCQkJCQkJCSAgIiUiIFBSSXU2NCAiIHJvd3Mgd2VyZSBza2lwcGVkIGR1ZSB0byBk YXRhIHR5cGUgaW5jb21wYXRpYmlsaXR5IiwKLQkJCQkJCQkgIGNzdGF0ZS0+bnVtX2Vycm9ycywK LQkJCQkJCQkgIGNzdGF0ZS0+bnVtX2Vycm9ycykpOworCXsKKwkJaWYgKGNzdGF0ZS0+b3B0cy5v bl9lcnJvciA9PSBDT1BZX09OX0VSUk9SX0lHTk9SRSkKKwkJCWVyZXBvcnQoTk9USUNFLAorCQkJ CQllcnJtc2dfcGx1cmFsKCIlIiBQUkl1NjQgIiByb3cgd2FzIHNraXBwZWQgZHVlIHRvIGRhdGEg dHlwZSBpbmNvbXBhdGliaWxpdHkiLAorCQkJCQkJCQkgICIlIiBQUkl1NjQgIiByb3dzIHdlcmUg c2tpcHBlZCBkdWUgdG8gZGF0YSB0eXBlIGluY29tcGF0aWJpbGl0eSIsCisJCQkJCQkJCSAgY3N0 YXRlLT5udW1fZXJyb3JzLAorCQkJCQkJCQkgIGNzdGF0ZS0+bnVtX2Vycm9ycykpOworCQllbHNl IGlmIChjc3RhdGUtPm9wdHMub25fZXJyb3IgPT0gQ09QWV9PTl9FUlJPUl9TRVRfTlVMTCkKKwkJ CWVyZXBvcnQoTk9USUNFLAorCQkJCQllcnJtc2dfcGx1cmFsKCJpbnZhbGlkIHZhbHVlcyBpbiAl IiBQUkl1NjQgIiByb3cgd2FzIHJlcGxhY2VkIHdpdGggbnVsbCBkdWUgdG8gZGF0YSB0eXBlIGlu Y29tcGF0aWJpbGl0eSIsCisJCQkJCQkJCSAgImludmFsaWQgdmFsdWVzIGluICUiIFBSSXU2NCAi IHJvd3Mgd2VyZSByZXBsYWNlZCB3aXRoIG51bGwgZHVlIHRvIGRhdGEgdHlwZSBpbmNvbXBhdGli aWxpdHkiLAorCQkJCQkJCQkgIGNzdGF0ZS0+bnVtX2Vycm9ycywKKwkJCQkJCQkJICBjc3RhdGUt Pm51bV9lcnJvcnMpKTsKKwl9CiAKIAlpZiAoYmlzdGF0ZSAhPSBOVUxMKQogCQlGcmVlQnVsa0lu c2VydFN0YXRlKGJpc3RhdGUpOwpAQCAtMTYyMiwxMCArMTYzMCwxMSBAQCBCZWdpbkNvcHlGcm9t KFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJY3N0YXRlLT5lc2NvbnRleHQtPmVycm9yX29jY3VycmVk ID0gZmFsc2U7CiAKIAkJLyoKLQkJICogQ3VycmVudGx5IHdlIG9ubHkgc3VwcG9ydCBDT1BZX09O X0VSUk9SX0lHTk9SRS4gV2UnbGwgYWRkIG90aGVyCi0JCSAqIG9wdGlvbnMgbGF0ZXIKKwkJICog Q3VycmVudGx5IHdlIG9ubHkgc3VwcG9ydCBDT1BZX09OX0VSUk9SX0lHTk9SRSwgQ09QWV9PTl9F UlJPUl9TRVRfTlVMTC4KKwkJICogV2UnbGwgYWRkIG90aGVyIG9wdGlvbnMgbGF0ZXIKIAkJICov Ci0JCWlmIChjc3RhdGUtPm9wdHMub25fZXJyb3IgPT0gQ09QWV9PTl9FUlJPUl9JR05PUkUpCisJ CWlmIChjc3RhdGUtPm9wdHMub25fZXJyb3IgPT0gQ09QWV9PTl9FUlJPUl9JR05PUkUgfHwKKwkJ CWNzdGF0ZS0+b3B0cy5vbl9lcnJvciA9PSBDT1BZX09OX0VSUk9SX1NFVF9OVUxMKQogCQkJY3N0 YXRlLT5lc2NvbnRleHQtPmRldGFpbHNfd2FudGVkID0gZmFsc2U7CiAJfQogCWVsc2UKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlmcm9tcGFyc2UuYyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL2NvcHlmcm9tcGFyc2UuYwppbmRleCBmNWZjMzQ2ZTIwMS4uYjNmMzdjOTVhZWMg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlmcm9tcGFyc2UuYworKysgYi9z cmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbXBhcnNlLmMKQEAgLTk0Nyw2ICs5NDcsNyBAQCBD b3B5RnJvbVRleHRMaWtlT25lUm93KENvcHlGcm9tU3RhdGUgY3N0YXRlLCBFeHByQ29udGV4dCAq ZWNvbnRleHQsCiAJaW50CQkJZmxkY3Q7CiAJaW50CQkJZmllbGRubzsKIAljaGFyCSAgICpzdHJp bmc7CisJYm9vbAkJY3VycmVudF9yb3dfZXJyb25lb3VzID0gZmFsc2U7CiAKIAl0dXBEZXNjID0g UmVsYXRpb25HZXREZXNjcihjc3RhdGUtPnJlbCk7CiAJYXR0cl9jb3VudCA9IGxpc3RfbGVuZ3Ro KGNzdGF0ZS0+YXR0bnVtbGlzdCk7CkBAIC0xMDI0LDcgKzEwMjUsOCBAQCBDb3B5RnJvbVRleHRM aWtlT25lUm93KENvcHlGcm9tU3RhdGUgY3N0YXRlLCBFeHByQ29udGV4dCAqZWNvbnRleHQsCiAJ CX0KIAogCQkvKgotCQkgKiBJZiBPTl9FUlJPUiBpcyBzcGVjaWZpZWQgd2l0aCBJR05PUkUsIHNr aXAgcm93cyB3aXRoIHNvZnQgZXJyb3JzCisJCSAqIElmIE9OX0VSUk9SIGlzIHNwZWNpZmllZCB3 aXRoIElHTk9SRSwgc2tpcCByb3dzIHdpdGggc29mdCBlcnJvcnMuCisJCSAqIElmIE9OX0VSUk9S IGlzIHNwZWNpZmllZCB3aXRoIHNldF9udWxsLCB0cnkgdG8gcmVwbGFjZSB3aXRoIG51bGwuCiAJ CSAqLwogCQllbHNlIGlmICghSW5wdXRGdW5jdGlvbkNhbGxTYWZlKCZpbl9mdW5jdGlvbnNbbV0s CiAJCQkJCQkJCQkJc3RyaW5nLApAQCAtMTAzNSw0NyArMTAzNywxMTUgQEAgQ29weUZyb21UZXh0 TGlrZU9uZVJvdyhDb3B5RnJvbVN0YXRlIGNzdGF0ZSwgRXhwckNvbnRleHQgKmVjb250ZXh0LAog CQl7CiAJCQlBc3NlcnQoY3N0YXRlLT5vcHRzLm9uX2Vycm9yICE9IENPUFlfT05fRVJST1JfU1RP UCk7CiAKLQkJCWNzdGF0ZS0+bnVtX2Vycm9ycysrOwotCi0JCQlpZiAoY3N0YXRlLT5vcHRzLmxv Z192ZXJib3NpdHkgPT0gQ09QWV9MT0dfVkVSQk9TSVRZX1ZFUkJPU0UpCisJCQlpZiAoY3N0YXRl LT5vcHRzLm9uX2Vycm9yID09IENPUFlfT05fRVJST1JfU0VUX05VTEwpCiAJCQl7CiAJCQkJLyoK LQkJCQkgKiBTaW5jZSB3ZSBlbWl0IGxpbmUgbnVtYmVyIGFuZCBjb2x1bW4gaW5mbyBpbiB0aGUg YmVsb3cKLQkJCQkgKiBub3RpY2UgbWVzc2FnZSwgd2Ugc3VwcHJlc3MgZXJyb3IgY29udGV4dCBp bmZvcm1hdGlvbiBvdGhlcgotCQkJCSAqIHRoYW4gdGhlIHJlbGF0aW9uIG5hbWUuCi0JCQkJICov Ci0JCQkJQXNzZXJ0KCFjc3RhdGUtPnJlbG5hbWVfb25seSk7Ci0JCQkJY3N0YXRlLT5yZWxuYW1l X29ubHkgPSB0cnVlOworCQkJCSAqIHdlIHVzZSBpdCB0byBjb3VudCBudW1iZXIgb2Ygcm93cyAo bm90IGZpZWxkcyEpIHRoYXQKKwkJCQkgKiBzdWNjZXNzZnVsbHkgYXBwbGllZCBvbl9lcnJvciBz ZXRfbnVsbC4KKwkJCQkqLworCQkJCWlmICghY3VycmVudF9yb3dfZXJyb25lb3VzKQorCQkJCQlj dXJyZW50X3Jvd19lcnJvbmVvdXMgPSB0cnVlOwogCi0JCQkJaWYgKGNzdGF0ZS0+Y3VyX2F0dHZh bCkKKwkJCQkvKgorCQkJCSAqIHdoZW4gY29sdW1uIHR5cGUgaXMgZG9tYWluIHdpdGggY29uc3Ry YWludHMsIHdlIG1heQorCQkJCSAqIG5lZWQgYW5vdGhlciBJbnB1dEZ1bmN0aW9uQ2FsbFNhZmUg dG8gZXJyb3Igb3V0IGRvbWFpbgorCQkJCSAqIGNvbnN0cmFpbnQgdmlvbGF0aW9uLgorCQkJCSov CisJCQkJY3N0YXRlLT5lc2NvbnRleHQtPmVycm9yX29jY3VycmVkID0gZmFsc2U7CisJCQkJaWYg KElucHV0RnVuY3Rpb25DYWxsU2FmZSgmaW5fZnVuY3Rpb25zW21dLAorCQkJCQkJCQkJCSAgTlVM TCwKKwkJCQkJCQkJCQkgIHR5cGlvcGFyYW1zW21dLAorCQkJCQkJCQkJCSAgYXR0LT5hdHR0eXBt b2QsCisJCQkJCQkJCQkJICAoTm9kZSAqKSBjc3RhdGUtPmVzY29udGV4dCwKKwkJCQkJCQkJCQkg ICZ2YWx1ZXNbbV0pKQogCQkJCXsKLQkJCQkJY2hhcgkgICAqYXR0dmFsOwotCi0JCQkJCWF0dHZh bCA9IENvcHlMaW1pdFByaW50b3V0TGVuZ3RoKGNzdGF0ZS0+Y3VyX2F0dHZhbCk7Ci0JCQkJCWVy ZXBvcnQoTk9USUNFLAotCQkJCQkJCWVycm1zZygic2tpcHBpbmcgcm93IGR1ZSB0byBkYXRhIHR5 cGUgaW5jb21wYXRpYmlsaXR5IGF0IGxpbmUgJSIgUFJJdTY0ICIgZm9yIGNvbHVtbiBcIiVzXCI6 IFwiJXNcIiIsCi0JCQkJCQkJCSAgIGNzdGF0ZS0+Y3VyX2xpbmVubywKLQkJCQkJCQkJICAgY3N0 YXRlLT5jdXJfYXR0bmFtZSwKLQkJCQkJCQkJICAgYXR0dmFsKSk7Ci0JCQkJCXBmcmVlKGF0dHZh bCk7CisJCQkJCW51bGxzW21dID0gdHJ1ZTsKKwkJCQkJdmFsdWVzW21dID0gKERhdHVtKSAwOwor CisJCQkJCWlmIChjc3RhdGUtPm9wdHMubG9nX3ZlcmJvc2l0eSA9PSBDT1BZX0xPR19WRVJCT1NJ VFlfVkVSQk9TRSkKKwkJCQkJeworCQkJCQkJY2hhcgkgICAqYXR0dmFsOworCisJCQkJCQkvKgor CQkJCQkJICogU2luY2Ugd2UgZW1pdCBsaW5lIG51bWJlciBhbmQgY29sdW1uIGluZm8gaW4gdGhl IGJlbG93CisJCQkJCQkgKiBub3RpY2UgbWVzc2FnZSwgd2Ugc3VwcHJlc3MgZXJyb3IgY29udGV4 dCBpbmZvcm1hdGlvbiBvdGhlcgorCQkJCQkJICogdGhhbiB0aGUgcmVsYXRpb24gbmFtZS4KKwkJ CQkJCSovCisJCQkJCQlBc3NlcnQoIWNzdGF0ZS0+cmVsbmFtZV9vbmx5KTsKKwkJCQkJCUFzc2Vy dChjc3RhdGUtPmN1cl9hdHR2YWwpOworCisJCQkJCQljc3RhdGUtPnJlbG5hbWVfb25seSA9IHRy dWU7CisJCQkJCQlhdHR2YWwgPSBDb3B5TGltaXRQcmludG91dExlbmd0aChjc3RhdGUtPmN1cl9h dHR2YWwpOworCQkJCQkJZXJlcG9ydChOT1RJQ0UsCisJCQkJCQkJCWVycm1zZygic2V0dGluZyB0 byBudWxsIGR1ZSB0byBkYXRhIHR5cGUgaW5jb21wYXRpYmlsaXR5IGF0IGxpbmUgJSIgUFJJdTY0 ICIgZm9yIGNvbHVtbiBcIiVzXCI6IFwiJXNcIiIsCisJCQkJCQkJCQkJY3N0YXRlLT5jdXJfbGlu ZW5vLAorCQkJCQkJCQkJCWNzdGF0ZS0+Y3VyX2F0dG5hbWUsCisJCQkJCQkJCQkJYXR0dmFsKSk7 CisJCQkJCQlwZnJlZShhdHR2YWwpOworCisJCQkJCQkvKiByZXNldCByZWxuYW1lX29ubHkgKi8K KwkJCQkJCWNzdGF0ZS0+cmVsbmFtZV9vbmx5ID0gZmFsc2U7CisJCQkJCX0KKworCQkJCQljc3Rh dGUtPmN1cl9hdHRuYW1lID0gTlVMTDsKKwkJCQkJY29udGludWU7CiAJCQkJfQorCQkJCWVsc2Ug aWYgKHN0cmluZyA9PSBOVUxMKQorCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCWVycmNvZGUo RVJSQ09ERV9OT1RfTlVMTF9WSU9MQVRJT04pLAorCQkJCQkJCWVycm1zZygiZG9tYWluICVzIGRv ZXMgbm90IGFsbG93IG51bGwgdmFsdWVzIiwgZm9ybWF0X3R5cGVfYmUodHlwaW9wYXJhbXNbbV0p KSwKKwkJCQkJCQllcnJkYXRhdHlwZSh0eXBpb3BhcmFtc1ttXSkpOwogCQkJCWVsc2UKLQkJCQkJ ZXJlcG9ydChOT1RJQ0UsCi0JCQkJCQkJZXJybXNnKCJza2lwcGluZyByb3cgZHVlIHRvIGRhdGEg dHlwZSBpbmNvbXBhdGliaWxpdHkgYXQgbGluZSAlIiBQUkl1NjQgIiBmb3IgY29sdW1uIFwiJXNc IjogbnVsbCBpbnB1dCIsCi0JCQkJCQkJCSAgIGNzdGF0ZS0+Y3VyX2xpbmVubywKLQkJCQkJCQkJ ICAgY3N0YXRlLT5jdXJfYXR0bmFtZSkpOwotCi0JCQkJLyogcmVzZXQgcmVsbmFtZV9vbmx5ICov Ci0JCQkJY3N0YXRlLT5yZWxuYW1lX29ubHkgPSBmYWxzZTsKKwkJCQkJZXJlcG9ydChFUlJPUiwK KwkJCQkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9URVhUX1JFUFJFU0VOVEFUSU9OKSwKKwkJ CQkJCQllcnJtc2coImludmFsaWQgaW5wdXQgdmFsdWUgZm9yIGRvbWFpbiAlczogXCIlc1wiIiwK KwkJCQkJCQkJICAgZm9ybWF0X3R5cGVfYmUodHlwaW9wYXJhbXNbbV0pLCBzdHJpbmcpKTsKIAkJ CX0KKwkJCWVsc2UgaWYgKGNzdGF0ZS0+b3B0cy5vbl9lcnJvciA9PSBDT1BZX09OX0VSUk9SX0lH Tk9SRSkKKwkJCXsKKwkJCQljc3RhdGUtPm51bV9lcnJvcnMrKzsKKworCQkJCWlmIChjc3RhdGUt Pm9wdHMubG9nX3ZlcmJvc2l0eSA9PSBDT1BZX0xPR19WRVJCT1NJVFlfVkVSQk9TRSkKKwkJCQl7 CisJCQkJCS8qCisJCQkJCSogU2luY2Ugd2UgZW1pdCBsaW5lIG51bWJlciBhbmQgY29sdW1uIGlu Zm8gaW4gdGhlIGJlbG93CisJCQkJCSogbm90aWNlIG1lc3NhZ2UsIHdlIHN1cHByZXNzIGVycm9y IGNvbnRleHQgaW5mb3JtYXRpb24gb3RoZXIKKwkJCQkJKiB0aGFuIHRoZSByZWxhdGlvbiBuYW1l LgorCQkJCQkqLworCQkJCQlBc3NlcnQoIWNzdGF0ZS0+cmVsbmFtZV9vbmx5KTsKKwkJCQkJY3N0 YXRlLT5yZWxuYW1lX29ubHkgPSB0cnVlOworCisJCQkJCWlmIChjc3RhdGUtPmN1cl9hdHR2YWwp CisJCQkJCXsKKwkJCQkJCWNoYXIJICAgKmF0dHZhbDsKIAotCQkJcmV0dXJuIHRydWU7CisJCQkJ CQlhdHR2YWwgPSBDb3B5TGltaXRQcmludG91dExlbmd0aChjc3RhdGUtPmN1cl9hdHR2YWwpOwor CQkJCQkJZXJlcG9ydChOT1RJQ0UsCisJCQkJCQkJCWVycm1zZygic2tpcHBpbmcgcm93IGR1ZSB0 byBkYXRhIHR5cGUgaW5jb21wYXRpYmlsaXR5IGF0IGxpbmUgJSIgUFJJdTY0ICIgZm9yIGNvbHVt biBcIiVzXCI6IFwiJXNcIiIsCisJCQkJCQkJCQljc3RhdGUtPmN1cl9saW5lbm8sCisJCQkJCQkJ CQljc3RhdGUtPmN1cl9hdHRuYW1lLAorCQkJCQkJCQkJYXR0dmFsKSk7CisJCQkJCQlwZnJlZShh dHR2YWwpOworCQkJCQl9CisJCQkJCWVsc2UKKwkJCQkJCWVyZXBvcnQoTk9USUNFLAorCQkJCQkJ CQllcnJtc2coInNraXBwaW5nIHJvdyBkdWUgdG8gZGF0YSB0eXBlIGluY29tcGF0aWJpbGl0eSBh dCBsaW5lICUiIFBSSXU2NCAiIGZvciBjb2x1bW4gXCIlc1wiOiBudWxsIGlucHV0IiwKKwkJCQkJ CQkJCWNzdGF0ZS0+Y3VyX2xpbmVubywKKwkJCQkJCQkJCWNzdGF0ZS0+Y3VyX2F0dG5hbWUpKTsK KworCQkJCQkvKiByZXNldCByZWxuYW1lX29ubHkgKi8KKwkJCQkJY3N0YXRlLT5yZWxuYW1lX29u bHkgPSBmYWxzZTsKKwkJCQl9CisJCQkJcmV0dXJuIHRydWU7CisJCQl9CiAJCX0KLQogCQljc3Rh dGUtPmN1cl9hdHRuYW1lID0gTlVMTDsKIAkJY3N0YXRlLT5jdXJfYXR0dmFsID0gTlVMTDsKIAl9 CiAKKwlpZiAoY3VycmVudF9yb3dfZXJyb25lb3VzKQorCQljc3RhdGUtPm51bV9lcnJvcnMrKzsK KwogCUFzc2VydChmaWVsZG5vID09IGF0dHJfY291bnQpOwogCiAJcmV0dXJuIHRydWU7CmRpZmYg LS1naXQgYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMgYi9zcmMvYmluL3BzcWwvdGFi LWNvbXBsZXRlLmluLmMKaW5kZXggYzkxNmI5Mjk5YTguLjhlNmY0OTMwOTE5IDEwMDY0NAotLS0g YS9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKKysrIGIvc3JjL2Jpbi9wc3FsL3RhYi1j b21wbGV0ZS5pbi5jCkBAIC0zMjkxLDcgKzMyOTEsNyBAQCBtYXRjaF9wcmV2aW91c193b3Jkcyhp bnQgcGF0dGVybl9pZCwKIAogCS8qIENvbXBsZXRlIENPUFkgPHN0aD4gRlJPTSBmaWxlbmFtZSBX SVRIIChPTl9FUlJPUiAqLwogCWVsc2UgaWYgKE1hdGNoZXMoIkNPUFl8XFxjb3B5IiwgTWF0Y2hB bnksICJGUk9NfFRPIiwgTWF0Y2hBbnksICJXSVRIIiwgIigiLCAiT05fRVJST1IiKSkKLQkJQ09N UExFVEVfV0lUSCgic3RvcCIsICJpZ25vcmUiKTsKKwkJQ09NUExFVEVfV0lUSCgic3RvcCIsICJp Z25vcmUiLCAic2V0X251bGwiKTsKIAogCS8qIENvbXBsZXRlIENPUFkgPHN0aD4gRlJPTSBmaWxl bmFtZSBXSVRIIChMT0dfVkVSQk9TSVRZICovCiAJZWxzZSBpZiAoTWF0Y2hlcygiQ09QWXxcXGNv cHkiLCBNYXRjaEFueSwgIkZST018VE8iLCBNYXRjaEFueSwgIldJVEgiLCAiKCIsICJMT0dfVkVS Qk9TSVRZIikpCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5LmggYi9zcmMv aW5jbHVkZS9jb21tYW5kcy9jb3B5LmgKaW5kZXggMDZkZmRmZWY3MjEuLjkzNWQyMWVlNzdhIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5LmgKKysrIGIvc3JjL2luY2x1ZGUv Y29tbWFuZHMvY29weS5oCkBAIC0zOCw2ICszOCw3IEBAIHR5cGVkZWYgZW51bSBDb3B5T25FcnJv ckNob2ljZQogewogCUNPUFlfT05fRVJST1JfU1RPUCA9IDAsCQkvKiBpbW1lZGlhdGVseSB0aHJv dyBlcnJvcnMsIGRlZmF1bHQgKi8KIAlDT1BZX09OX0VSUk9SX0lHTk9SRSwJCS8qIGlnbm9yZSBl cnJvcnMgKi8KKwlDT1BZX09OX0VSUk9SX1NFVF9OVUxMLAkJLyogc2V0IGVycm9yIGZpZWxkIHRv IG51bGwgKi8KIH0gQ29weU9uRXJyb3JDaG9pY2U7CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL2NvcHkyLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv Y29weTIub3V0CmluZGV4IDY0ZWEzM2FlYWU4Li4zNTNiMjgzY2U5ZiAxMDA2NDQKLS0tIGEvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb3B5Mi5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9jb3B5Mi5vdXQKQEAgLTgxLDYgKzgxLDEwIEBAIENPUFkgeCBmcm9tIHN0ZGluIChv bl9lcnJvciBpZ25vcmUsIG9uX2Vycm9yIGlnbm9yZSk7CiBFUlJPUjogIGNvbmZsaWN0aW5nIG9y IHJlZHVuZGFudCBvcHRpb25zCiBMSU5FIDE6IENPUFkgeCBmcm9tIHN0ZGluIChvbl9lcnJvciBp Z25vcmUsIG9uX2Vycm9yIGlnbm9yZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIF4KK0NPUFkgeCBmcm9tIHN0ZGluIChvbl9lcnJvciBzZXRfbnVsbCwgb25f ZXJyb3IgaWdub3JlKTsKK0VSUk9SOiAgY29uZmxpY3Rpbmcgb3IgcmVkdW5kYW50IG9wdGlvbnMK K0xJTkUgMTogQ09QWSB4IGZyb20gc3RkaW4gKG9uX2Vycm9yIHNldF9udWxsLCBvbl9lcnJvciBp Z25vcmUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4K IENPUFkgeCBmcm9tIHN0ZGluIChsb2dfdmVyYm9zaXR5IGRlZmF1bHQsIGxvZ192ZXJib3NpdHkg dmVyYm9zZSk7CiBFUlJPUjogIGNvbmZsaWN0aW5nIG9yIHJlZHVuZGFudCBvcHRpb25zCiBMSU5F IDE6IENPUFkgeCBmcm9tIHN0ZGluIChsb2dfdmVyYm9zaXR5IGRlZmF1bHQsIGxvZ192ZXJib3Np dHkgdmVyYi4uLgpAQCAtOTIsNiArOTYsMTAgQEAgQ09QWSB4IGZyb20gc3RkaW4gKGZvcm1hdCBC SU5BUlksIG51bGwgJ3gnKTsKIEVSUk9SOiAgY2Fubm90IHNwZWNpZnkgTlVMTCBpbiBCSU5BUlkg bW9kZQogQ09QWSB4IGZyb20gc3RkaW4gKGZvcm1hdCBCSU5BUlksIG9uX2Vycm9yIGlnbm9yZSk7 CiBFUlJPUjogIG9ubHkgT05fRVJST1IgU1RPUCBpcyBhbGxvd2VkIGluIEJJTkFSWSBtb2RlCitD T1BZIHggZnJvbSBzdGRpbiAoZm9ybWF0IEJJTkFSWSwgb25fZXJyb3Igc2V0X251bGwpOworRVJS T1I6ICBvbmx5IE9OX0VSUk9SIFNUT1AgaXMgYWxsb3dlZCBpbiBCSU5BUlkgbW9kZQorQ09QWSB4 IGZyb20gc3RkaW4gKG9uX2Vycm9yIHNldF9udWxsLCByZWplY3RfbGltaXQgMik7CitFUlJPUjog IENPUFkgUkVKRUNUX0xJTUlUIHJlcXVpcmVzIE9OX0VSUk9SIHRvIGJlIHNldCB0byBJR05PUkUK IENPUFkgeCBmcm9tIHN0ZGluIChvbl9lcnJvciB1bnN1cHBvcnRlZCk7CiBFUlJPUjogIENPUFkg T05fRVJST1IgInVuc3VwcG9ydGVkIiBub3QgcmVjb2duaXplZAogTElORSAxOiBDT1BZIHggZnJv bSBzdGRpbiAob25fZXJyb3IgdW5zdXBwb3J0ZWQpOwpAQCAtMTI0LDYgKzEzMiwxMCBAQCBDT1BZ IHggdG8gc3Rkb3V0IChmb3JtYXQgQklOQVJZLCBvbl9lcnJvciB1bnN1cHBvcnRlZCk7CiBFUlJP UjogIENPUFkgT05fRVJST1IgY2Fubm90IGJlIHVzZWQgd2l0aCBDT1BZIFRPCiBMSU5FIDE6IENP UFkgeCB0byBzdGRvdXQgKGZvcm1hdCBCSU5BUlksIG9uX2Vycm9yIHVuc3VwcG9ydGVkKTsKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorQ09QWSB4IHRvIHN0ZG91 dCAob25fZXJyb3Igc2V0X251bGwpOworRVJST1I6ICBDT1BZIE9OX0VSUk9SIGNhbm5vdCBiZSB1 c2VkIHdpdGggQ09QWSBUTworTElORSAxOiBDT1BZIHggdG8gc3Rkb3V0IChvbl9lcnJvciBzZXRf bnVsbCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIF4KIENPUFkgeCBmcm9tIHN0ZGluIChs b2dfdmVyYm9zaXR5IHVuc3VwcG9ydGVkKTsKIEVSUk9SOiAgQ09QWSBMT0dfVkVSQk9TSVRZICJ1 bnN1cHBvcnRlZCIgbm90IHJlY29nbml6ZWQKIExJTkUgMTogQ09QWSB4IGZyb20gc3RkaW4gKGxv Z192ZXJib3NpdHkgdW5zdXBwb3J0ZWQpOwpAQCAtNzY5LDYgKzc4MSw1MSBAQCBDT05URVhUOiAg Q09QWSBjaGVja19pZ25fZXJyCiBOT1RJQ0U6ICBza2lwcGluZyByb3cgZHVlIHRvIGRhdGEgdHlw ZSBpbmNvbXBhdGliaWxpdHkgYXQgbGluZSA4IGZvciBjb2x1bW4gImsiOiAiYSIKIENPTlRFWFQ6 ICBDT1BZIGNoZWNrX2lnbl9lcnIKIE5PVElDRTogIDYgcm93cyB3ZXJlIHNraXBwZWQgZHVlIHRv IGRhdGEgdHlwZSBpbmNvbXBhdGliaWxpdHkKK0NSRUFURSBET01BSU4gZF9pbnRfbm90X251bGwg QVMgSU5UIE5PVCBOVUxMIENIRUNLKHZhbHVlID4gMCk7CitDUkVBVEUgRE9NQUlOIGRfaW50X3Bv c2l0aXZlX21heWJlX251bGwgQVMgSU5UIENIRUNLKHZhbHVlID4gMCk7CitDUkVBVEUgVEFCTEUg dF9vbl9lcnJvcl9udWxsIChhIGRfaW50X25vdF9udWxsLCBiIGRfaW50X3Bvc2l0aXZlX21heWJl X251bGwsIGMgSU5UKTsKK1xwc2V0IG51bGwgTlVMTAorLS1mYWlsLCBjb2x1bW4gYSBjYW5ub3Qg c2V0IHRvIG51bGwgdmFsdWUKK0NPUFkgdF9vbl9lcnJvcl9udWxsIEZST00gU1RESU4gV0lUSCAo b25fZXJyb3Igc2V0X251bGwpOworRVJST1I6ICBkb21haW4gZF9pbnRfbm90X251bGwgZG9lcyBu b3QgYWxsb3cgbnVsbCB2YWx1ZXMKK0NPTlRFWFQ6ICBDT1BZIHRfb25fZXJyb3JfbnVsbCwgbGlu ZSAxLCBjb2x1bW4gYTogbnVsbCBpbnB1dAorLS1mYWlsLCBjb2x1bW4gYSBpcyBkb21haW4gd2l0 aCBub3QtbnVsbCBjb25zdHJhaW50CitDT1BZIHRfb25fZXJyb3JfbnVsbCBGUk9NIFNURElOIFdJ VEggKG9uX2Vycm9yIHNldF9udWxsKTsKK0VSUk9SOiAgaW52YWxpZCBpbnB1dCB2YWx1ZSBmb3Ig ZG9tYWluIGRfaW50X25vdF9udWxsOiAiYSIKK0NPTlRFWFQ6ICBDT1BZIHRfb25fZXJyb3JfbnVs bCwgbGluZSAxLCBjb2x1bW4gYTogImEiCistLWZhaWwsIGNvbHVtbiBhIGNhbm5vdCBzZXQgdG8g bnVsbCB2YWx1ZQorQ09QWSB0X29uX2Vycm9yX251bGwgRlJPTSBTVERJTiBXSVRIIChvbl9lcnJv ciBzZXRfbnVsbCk7CitFUlJPUjogIGludmFsaWQgaW5wdXQgdmFsdWUgZm9yIGRvbWFpbiBkX2lu dF9ub3RfbnVsbDogIi0xIgorQ09OVEVYVDogIENPUFkgdF9vbl9lcnJvcl9udWxsLCBsaW5lIDEs IGNvbHVtbiBhOiAiLTEiCistLWZhaWwuIGxlc3MgZGF0YQorQ09QWSB0X29uX2Vycm9yX251bGwg RlJPTSBTVERJTiBXSVRIIChkZWxpbWl0ZXIgJywnLCBvbl9lcnJvciBzZXRfbnVsbCk7CitFUlJP UjogIG1pc3NpbmcgZGF0YSBmb3IgY29sdW1uICJjIgorQ09OVEVYVDogIENPUFkgdF9vbl9lcnJv cl9udWxsLCBsaW5lIDE6ICIxLDEiCistLWZhaWwuIGV4dHJhIGRhdGEKK0NPUFkgdF9vbl9lcnJv cl9udWxsIEZST00gU1RESU4gV0lUSCAoZGVsaW1pdGVyICcsJywgb25fZXJyb3Igc2V0X251bGwp OworRVJST1I6ICBleHRyYSBkYXRhIGFmdGVyIGxhc3QgZXhwZWN0ZWQgY29sdW1uCitDT05URVhU OiAgQ09QWSB0X29uX2Vycm9yX251bGwsIGxpbmUgMTogIjEsMiwzLDQiCistLW9rCitDT1BZIHRf b25fZXJyb3JfbnVsbCBGUk9NIFNURElOIFdJVEggKG9uX2Vycm9yIHNldF9udWxsLCBsb2dfdmVy Ym9zaXR5IHZlcmJvc2UpOworTk9USUNFOiAgc2V0dGluZyB0byBudWxsIGR1ZSB0byBkYXRhIHR5 cGUgaW5jb21wYXRpYmlsaXR5IGF0IGxpbmUgMSBmb3IgY29sdW1uICJiIjogIngxIgorQ09OVEVY VDogIENPUFkgdF9vbl9lcnJvcl9udWxsCitOT1RJQ0U6ICBzZXR0aW5nIHRvIG51bGwgZHVlIHRv IGRhdGEgdHlwZSBpbmNvbXBhdGliaWxpdHkgYXQgbGluZSAxIGZvciBjb2x1bW4gImMiOiAieXgi CitDT05URVhUOiAgQ09QWSB0X29uX2Vycm9yX251bGwKK05PVElDRTogIHNldHRpbmcgdG8gbnVs bCBkdWUgdG8gZGF0YSB0eXBlIGluY29tcGF0aWJpbGl0eSBhdCBsaW5lIDIgZm9yIGNvbHVtbiAi YiI6ICJ6eCIKK0NPTlRFWFQ6ICBDT1BZIHRfb25fZXJyb3JfbnVsbAorTk9USUNFOiAgc2V0dGlu ZyB0byBudWxsIGR1ZSB0byBkYXRhIHR5cGUgaW5jb21wYXRpYmlsaXR5IGF0IGxpbmUgMyBmb3Ig Y29sdW1uICJjIjogImVhIgorQ09OVEVYVDogIENPUFkgdF9vbl9lcnJvcl9udWxsCitOT1RJQ0U6 ICBpbnZhbGlkIHZhbHVlcyBpbiAzIHJvd3Mgd2VyZSByZXBsYWNlZCB3aXRoIG51bGwgZHVlIHRv IGRhdGEgdHlwZSBpbmNvbXBhdGliaWxpdHkKKy0tIGNoZWNrIGluc2VydGVkIGNvbnRlbnQKK3Nl bGVjdCAqIGZyb20gdF9vbl9lcnJvcl9udWxsOworIGEgIHwgIGIgICB8ICBjICAgCistLS0tKy0t LS0tLSstLS0tLS0KKyAxMCB8IE5VTEwgfCBOVUxMCisgMTEgfCBOVUxMIHwgICAxMgorIDEzIHwg ICAxNCB8IE5VTEwKKygzIHJvd3MpCisKK1xwc2V0IG51bGwgJycKIC0tIHRlc3RzIGZvciBvbl9l cnJvciBvcHRpb24gd2l0aCBsb2dfdmVyYm9zaXR5IGFuZCBudWxsIGNvbnN0cmFpbnQgdmlhIGRv bWFpbgogQ1JFQVRFIERPTUFJTiBkY2hlY2tfaWduX2VycjIgdmFyY2hhcigxNSkgTk9UIE5VTEw7 CiBDUkVBVEUgVEFCTEUgY2hlY2tfaWduX2VycjIgKG4gaW50LCBtIGludFtdLCBrIGludCwgbCBk Y2hlY2tfaWduX2VycjIpOwpAQCAtODI4LDYgKzg4NSw5IEBAIERST1AgVklFVyBpbnN0ZWFkX29m X2luc2VydF90YmxfdmlldzsKIERST1AgVklFVyBpbnN0ZWFkX29mX2luc2VydF90Ymxfdmlld18y OwogRFJPUCBGVU5DVElPTiBmdW5faW5zdGVhZF9vZl9pbnNlcnRfdGJsKCk7CiBEUk9QIFRBQkxF IGNoZWNrX2lnbl9lcnI7CitEUk9QIFRBQkxFIHRfb25fZXJyb3JfbnVsbDsKK0RST1AgRE9NQUlO IGRfaW50X25vdF9udWxsOworRFJPUCBET01BSU4gZF9pbnRfcG9zaXRpdmVfbWF5YmVfbnVsbDsK IERST1AgVEFCTEUgY2hlY2tfaWduX2VycjI7CiBEUk9QIERPTUFJTiBkY2hlY2tfaWduX2VycjI7 CiBEUk9QIFRBQkxFIGhhcmRfZXJyOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwv Y29weTIuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29weTIuc3FsCmluZGV4IDQ1MjczNTU3 Y2UwLi5kMjdmMzQ5NWNmNyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29weTIu c3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvcHkyLnNxbApAQCAtNjcsMTIgKzY3LDE1 IEBAIENPUFkgeCBmcm9tIHN0ZGluIChmb3JjZV9udWxsIChhKSwgZm9yY2VfbnVsbCAoYikpOwog Q09QWSB4IGZyb20gc3RkaW4gKGNvbnZlcnRfc2VsZWN0aXZlbHkgKGEpLCBjb252ZXJ0X3NlbGVj dGl2ZWx5IChiKSk7CiBDT1BZIHggZnJvbSBzdGRpbiAoZW5jb2RpbmcgJ3NxbF9hc2NpaScsIGVu Y29kaW5nICdzcWxfYXNjaWknKTsKIENPUFkgeCBmcm9tIHN0ZGluIChvbl9lcnJvciBpZ25vcmUs IG9uX2Vycm9yIGlnbm9yZSk7CitDT1BZIHggZnJvbSBzdGRpbiAob25fZXJyb3Igc2V0X251bGws IG9uX2Vycm9yIGlnbm9yZSk7CiBDT1BZIHggZnJvbSBzdGRpbiAobG9nX3ZlcmJvc2l0eSBkZWZh dWx0LCBsb2dfdmVyYm9zaXR5IHZlcmJvc2UpOwogCiAtLSBpbmNvcnJlY3Qgb3B0aW9ucwogQ09Q WSB4IGZyb20gc3RkaW4gKGZvcm1hdCBCSU5BUlksIGRlbGltaXRlciAnLCcpOwogQ09QWSB4IGZy b20gc3RkaW4gKGZvcm1hdCBCSU5BUlksIG51bGwgJ3gnKTsKIENPUFkgeCBmcm9tIHN0ZGluIChm b3JtYXQgQklOQVJZLCBvbl9lcnJvciBpZ25vcmUpOworQ09QWSB4IGZyb20gc3RkaW4gKGZvcm1h dCBCSU5BUlksIG9uX2Vycm9yIHNldF9udWxsKTsKK0NPUFkgeCBmcm9tIHN0ZGluIChvbl9lcnJv ciBzZXRfbnVsbCwgcmVqZWN0X2xpbWl0IDIpOwogQ09QWSB4IGZyb20gc3RkaW4gKG9uX2Vycm9y IHVuc3VwcG9ydGVkKTsKIENPUFkgeCBmcm9tIHN0ZGluIChmb3JtYXQgVEVYVCwgZm9yY2VfcXVv dGUoYSkpOwogQ09QWSB4IGZyb20gc3RkaW4gKGZvcm1hdCBURVhULCBmb3JjZV9xdW90ZSAqKTsK QEAgLTg3LDYgKzkwLDcgQEAgQ09QWSB4IGZyb20gc3RkaW4gKGZvcm1hdCBURVhULCBmb3JjZV9u dWxsICopOwogQ09QWSB4IHRvIHN0ZG91dCAoZm9ybWF0IENTViwgZm9yY2VfbnVsbChhKSk7CiBD T1BZIHggdG8gc3Rkb3V0IChmb3JtYXQgQ1NWLCBmb3JjZV9udWxsICopOwogQ09QWSB4IHRvIHN0 ZG91dCAoZm9ybWF0IEJJTkFSWSwgb25fZXJyb3IgdW5zdXBwb3J0ZWQpOworQ09QWSB4IHRvIHN0 ZG91dCAob25fZXJyb3Igc2V0X251bGwpOwogQ09QWSB4IGZyb20gc3RkaW4gKGxvZ192ZXJib3Np dHkgdW5zdXBwb3J0ZWQpOwogQ09QWSB4IGZyb20gc3RkaW4gd2l0aCAocmVqZWN0X2xpbWl0IDEp OwogQ09QWSB4IGZyb20gc3RkaW4gd2l0aCAob25fZXJyb3IgaWdub3JlLCByZWplY3RfbGltaXQg MCk7CkBAIC01MzQsNiArNTM4LDQ1IEBAIGEJezJ9CTIKIDgJezh9CTgKIFwuCiAKK0NSRUFURSBE T01BSU4gZF9pbnRfbm90X251bGwgQVMgSU5UIE5PVCBOVUxMIENIRUNLKHZhbHVlID4gMCk7CitD UkVBVEUgRE9NQUlOIGRfaW50X3Bvc2l0aXZlX21heWJlX251bGwgQVMgSU5UIENIRUNLKHZhbHVl ID4gMCk7CitDUkVBVEUgVEFCTEUgdF9vbl9lcnJvcl9udWxsIChhIGRfaW50X25vdF9udWxsLCBi IGRfaW50X3Bvc2l0aXZlX21heWJlX251bGwsIGMgSU5UKTsKKworXHBzZXQgbnVsbCBOVUxMCist LWZhaWwsIGNvbHVtbiBhIGNhbm5vdCBzZXQgdG8gbnVsbCB2YWx1ZQorQ09QWSB0X29uX2Vycm9y X251bGwgRlJPTSBTVERJTiBXSVRIIChvbl9lcnJvciBzZXRfbnVsbCk7CitcTgkxMQkxMworXC4K KworLS1mYWlsLCBjb2x1bW4gYSBpcyBkb21haW4gd2l0aCBub3QtbnVsbCBjb25zdHJhaW50CitD T1BZIHRfb25fZXJyb3JfbnVsbCBGUk9NIFNURElOIFdJVEggKG9uX2Vycm9yIHNldF9udWxsKTsK K2EJMTEJMTQKK1wuCisKKy0tZmFpbCwgY29sdW1uIGEgY2Fubm90IHNldCB0byBudWxsIHZhbHVl CitDT1BZIHRfb25fZXJyb3JfbnVsbCBGUk9NIFNURElOIFdJVEggKG9uX2Vycm9yIHNldF9udWxs KTsKKy0xCTExCTEzCitcLgorCistLWZhaWwuIGxlc3MgZGF0YQorQ09QWSB0X29uX2Vycm9yX251 bGwgRlJPTSBTVERJTiBXSVRIIChkZWxpbWl0ZXIgJywnLCBvbl9lcnJvciBzZXRfbnVsbCk7Cisx LDEKK1wuCistLWZhaWwuIGV4dHJhIGRhdGEKK0NPUFkgdF9vbl9lcnJvcl9udWxsIEZST00gU1RE SU4gV0lUSCAoZGVsaW1pdGVyICcsJywgb25fZXJyb3Igc2V0X251bGwpOworMSwyLDMsNAorXC4K KworLS1vaworQ09QWSB0X29uX2Vycm9yX251bGwgRlJPTSBTVERJTiBXSVRIIChvbl9lcnJvciBz ZXRfbnVsbCwgbG9nX3ZlcmJvc2l0eSB2ZXJib3NlKTsKKzEwCXgxCXl4CisxMQl6eAkxMgorMTMJ MTQJZWEKK1wuCisKKy0tIGNoZWNrIGluc2VydGVkIGNvbnRlbnQKK3NlbGVjdCAqIGZyb20gdF9v bl9lcnJvcl9udWxsOworXHBzZXQgbnVsbCAnJwogLS0gdGVzdHMgZm9yIG9uX2Vycm9yIG9wdGlv biB3aXRoIGxvZ192ZXJib3NpdHkgYW5kIG51bGwgY29uc3RyYWludCB2aWEgZG9tYWluCiBDUkVB VEUgRE9NQUlOIGRjaGVja19pZ25fZXJyMiB2YXJjaGFyKDE1KSBOT1QgTlVMTDsKIENSRUFURSBU QUJMRSBjaGVja19pZ25fZXJyMiAobiBpbnQsIG0gaW50W10sIGsgaW50LCBsIGRjaGVja19pZ25f ZXJyMik7CkBAIC02MDMsNiArNjQ2LDkgQEAgRFJPUCBWSUVXIGluc3RlYWRfb2ZfaW5zZXJ0X3Ri bF92aWV3OwogRFJPUCBWSUVXIGluc3RlYWRfb2ZfaW5zZXJ0X3RibF92aWV3XzI7CiBEUk9QIEZV TkNUSU9OIGZ1bl9pbnN0ZWFkX29mX2luc2VydF90YmwoKTsKIERST1AgVEFCTEUgY2hlY2tfaWdu X2VycjsKK0RST1AgVEFCTEUgdF9vbl9lcnJvcl9udWxsOworRFJPUCBET01BSU4gZF9pbnRfbm90 X251bGw7CitEUk9QIERPTUFJTiBkX2ludF9wb3NpdGl2ZV9tYXliZV9udWxsOwogRFJPUCBUQUJM RSBjaGVja19pZ25fZXJyMjsKIERST1AgRE9NQUlOIGRjaGVja19pZ25fZXJyMjsKIERST1AgVEFC TEUgaGFyZF9lcnI7Ci0tIAoyLjM0LjEKCg== --000000000000bf4b060632422bf1 Content-Type: text/x-patch; charset="US-ASCII"; name="v17-0001-COPY-on_error-set_null.patch" Content-Disposition: attachment; filename="v17-0001-COPY-on_error-set_null.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m98dsxkz1 RnJvbSA2NjAzODlkMzhhODQyNzVhNjJlNDk3YjY3NmMzODhjMDYzMzc0OTA5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFR1ZSwgOCBBcHIgMjAyNSAxNTowNzo1NSArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjE3 IDEvMV0gQ09QWSAob25fZXJyb3Igc2V0X251bGwpCgpFeHRlbnQgIm9uX2Vycm9yIGFjdGlvbiIs IGludHJvZHVjZSBuZXcgb3B0aW9uOiAgb25fZXJyb3Igc2V0X251bGwuCgpDdXJyZW50IGdyYW1t YXIgbWFrZXMgdXMgdW5hYmxlIHRvIHVzZSAib25fZXJyb3IgbnVsbCIuIGlmIHdlIGRpZCBpdCwg dGhlbiBpbgphbGwgdGhlIENPUFkgY29tbWFuZCBvcHRpb25zJ3MgdmFsdWUsIG51bGwgd2lsbCBi ZWNvbWUgcmVzZXJ2ZWQgdG8gbm9uLXJlc2VydmVkCndvcmRzLiAgc28gd2UgY2hvb3NlICJvbl9l cnJvciBzZXRfbnVsbCIuCgpBbnkgZGF0YSB0eXBlIGNvbnZlcnNpb24gZXJyb3JzIGR1cmluZyB0 aGUgQ09QWSBGUk9NIHByb2Nlc3Mgd2lsbCByZXN1bHQgaW4gdGhlCmFmZmVjdGVkIGNvbHVtbiBi ZWluZyBzZXQgdG8gTlVMTC4gVGhpcyBvbmx5IGFwcGxpZXMgd2hlbiB1c2luZyB0aGUgbm9uLWJp bmFyeQpmb3JtYXQgZm9yIENPUFkgRlJPTS4KCkhvd2V2ZXIsIHRoZSBub3QtbnVsbCBjb25zdHJh aW50IHdpbGwgc3RpbGwgYmUgZW5mb3JjZWQuCklmIGEgY29sdW1uIGhhcyBhIG5vdC1udWxsIGNv bnN0cmFpbnQsIHN1Y2Nlc3NmdWwgKG9uX2Vycm9yIHNldF9udWxsKQphY3Rpb24gd2lsbCBjYXVz ZSBub3QtbnVsbCBjb25zdHJhaW50IHZpb2xhdGlvbi4KVGhpcyBhbHNvIGFwcGxpZXMgdG8gY29s dW1uIHR5cGUgaXMgZG9tYWluIHdpdGggbm90LW51bGwgY29uc3RyYWludC4KCkEgcmVncmVzc2lv biB0ZXN0IGZvciBhIGRvbWFpbiB3aXRoIGEgbm90LW51bGwgY29uc3RyYWludCBoYXMgYmVlbiBh ZGRlZC4KCkF1dGhvcjogSmlhbiBIZSA8amlhbi51bml2ZXJzYWxpdHlAZ21haWwuY29tPgpBdXRo b3I6IEtpcmlsbCBSZXNoa2UgPHJlc2hrZWtpcmlsbEBnbWFpbC5jb20+CgpSZXZpZXdlZC1ieToK RnVqaWkgTWFzYW8gPG1hc2FvLmZ1amlpQG9zcy5udHRkYXRhLmNvbT4KSmltIEpvbmVzIDxqaW0u am9uZXNAdW5pLW11ZW5zdGVyLmRlPgoiRGF2aWQgRy4gSm9obnN0b24iIDxkYXZpZC5nLmpvaG5z dG9uQGdtYWlsLmNvbT4KWXVnbyBOQUdBVEEgPG5hZ2F0YUBzcmFvc3MuY28uanA+CnRvcmlrb3No aWEgPHRvcmlrb3NoaWFAb3NzLm50dGRhdGEuY29tPgpNYXNhaGlrbyBTYXdhZGEgPHNhd2FkYS5t c2hrQGdtYWlsLmNvbT4KCmRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vQ0FLRlF1d2F3 eTFlNllSNFM9ait5N3BYcWdfRHcxV0JWcmd2Zj1CUDNkMV9hU2ZlXytRQG1haWwuZ21haWwuY29t Ci0tLQogZG9jL3NyYy9zZ21sL3JlZi9jb3B5LnNnbWwgICAgICAgICAgICAgICB8ICAzNiArKysr Ky0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5LmMgICAgICAgICAgICAgIHwgICA2ICstCiBz cmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbS5jICAgICAgICAgIHwgIDQyICsrKysrKy0tCiBz cmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbXBhcnNlLmMgICAgIHwgMTMwICsrKysrKysrKysr KysrKysrKy0tLS0tCiBzcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMgICAgICAgICAgIHwg ICAyICstCiBzcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5LmggICAgICAgICAgICAgIHwgICAxICsK IHNyYy9pbmNsdWRlL2NvbW1hbmRzL2NvcHlmcm9tX2ludGVybmFsLmggfCAgIDYgKysKIHNyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29weTIub3V0ICAgICAgfCAgNjAgKysrKysrKysrKysKIHNy Yy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvcHkyLnNxbCAgICAgICAgICAgfCAgNDYgKysrKysrKysKIDkg ZmlsZXMgY2hhbmdlZCwgMjc3IGluc2VydGlvbnMoKyksIDUyIGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY29weS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jb3B5 LnNnbWwKaW5kZXggZDY4NTkyNzZiZWQuLmRiMTEyODY3ZmEwIDEwMDY0NAotLS0gYS9kb2Mvc3Jj L3NnbWwvcmVmL2NvcHkuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2NvcHkuc2dtbApAQCAt Mzk0LDIzICszOTQsMzYgQEAgQ09QWSB7IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50 YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4gWyAoIDxyZXBsYWNlYWJsZQogICAgICAgU3BlY2lmaWVz IGhvdyB0byBiZWhhdmUgd2hlbiBlbmNvdW50ZXJpbmcgYW4gZXJyb3IgY29udmVydGluZyBhIGNv bHVtbidzCiAgICAgICBpbnB1dCB2YWx1ZSBpbnRvIGl0cyBkYXRhIHR5cGUuCiAgICAgICBBbiA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZXJyb3JfYWN0aW9uPC9yZXBsYWNlYWJsZT4g dmFsdWUgb2YKLSAgICAgIDxsaXRlcmFsPnN0b3A8L2xpdGVyYWw+IG1lYW5zIGZhaWwgdGhlIGNv bW1hbmQsIHdoaWxlCi0gICAgICA8bGl0ZXJhbD5pZ25vcmU8L2xpdGVyYWw+IG1lYW5zIGRpc2Nh cmQgdGhlIGlucHV0IHJvdyBhbmQgY29udGludWUgd2l0aCB0aGUgbmV4dCBvbmUuCisgICAgICA8 bGl0ZXJhbD5zdG9wPC9saXRlcmFsPiBtZWFucyBmYWlsIHRoZSBjb21tYW5kLAorICAgICAgPGxp dGVyYWw+aWdub3JlPC9saXRlcmFsPiBtZWFucyBkaXNjYXJkIHRoZSBpbnB1dCByb3cgYW5kIGNv bnRpbnVlIHdpdGggdGhlIG5leHQgb25lLAorICAgICAgYW5kIDxsaXRlcmFsPnNldF9udWxsPC9s aXRlcmFsPiBtZWFucyByZXBsYWNlIGNvbHVtbnMgY29udGFpbmluZyBpbnZhbGlkCisgICAgICBp bnB1dCB2YWx1ZXMgd2l0aCA8bGl0ZXJhbD5OVUxMPC9saXRlcmFsPiBhbmQgbW92ZSB0byB0aGUg bmV4dCBmaWVsZC4KICAgICAgIFRoZSBkZWZhdWx0IGlzIDxsaXRlcmFsPnN0b3A8L2xpdGVyYWw+ LgogICAgICA8L3BhcmE+CiAgICAgIDxwYXJhPgotICAgICAgVGhlIDxsaXRlcmFsPmlnbm9yZTwv bGl0ZXJhbD4gb3B0aW9uIGlzIGFwcGxpY2FibGUgb25seSBmb3IgPGNvbW1hbmQ+Q09QWSBGUk9N PC9jb21tYW5kPgorICAgICAgVGhlIDxsaXRlcmFsPmlnbm9yZTwvbGl0ZXJhbD4gYW5kIDxsaXRl cmFsPnNldF9udWxsPC9saXRlcmFsPgorICAgICAgb3B0aW9ucyBhcmUgYXBwbGljYWJsZSBvbmx5 IGZvciA8Y29tbWFuZD5DT1BZIEZST008L2NvbW1hbmQ+CiAgICAgICB3aGVuIHRoZSA8bGl0ZXJh bD5GT1JNQVQ8L2xpdGVyYWw+IGlzIDxsaXRlcmFsPnRleHQ8L2xpdGVyYWw+IG9yIDxsaXRlcmFs PmNzdjwvbGl0ZXJhbD4uCiAgICAgIDwvcGFyYT4KKyAgICA8cGFyYT4KKyAgICAgIEZvciA8bGl0 ZXJhbD5pZ25vcmU8L2xpdGVyYWw+IG9wdGlvbiwgYSA8bGl0ZXJhbD5OT1RJQ0U8L2xpdGVyYWw+ IG1lc3NhZ2UKKyAgICAgIGNvbnRhaW5pbmcgdGhlIGlnbm9yZWQgcm93IGNvdW50IGlzIGVtaXR0 ZWQgYXQgdGhlIGVuZCBvZiB0aGUgPGNvbW1hbmQ+Q09QWQorICAgICAgRlJPTTwvY29tbWFuZD4g aWYgYXQgbGVhc3Qgb25lIHJvdyB3YXMgZGlzY2FyZGVkLgorICAgICAgRm9yIDxsaXRlcmFsPnNl dF9udWxsPC9saXRlcmFsPiBvcHRpb24sCisgICAgICBhIDxsaXRlcmFsPk5PVElDRTwvbGl0ZXJh bD4gbWVzc2FnZSBpbmRpY2F0aW5nIHRoZSBudW1iZXIgb2Ygcm93cworICAgICAgd2hlcmUgaW52 YWxpZCBpbnB1dCB2YWx1ZXMgd2VyZSByZXBsYWNlZCB3aXRoIG51bGwgaXMgZW1pdHRlZAorICAg ICAgYXQgdGhlIGVuZCBvZiB0aGUgPGNvbW1hbmQ+Q09QWSBGUk9NPC9jb21tYW5kPiBpZiBhdCBs ZWFzdCBvbmUgcm93IHdhcyByZXBsYWNlZC4KKyAgICAgPC9wYXJhPgogICAgICA8cGFyYT4KLSAg ICAgIEEgPGxpdGVyYWw+Tk9USUNFPC9saXRlcmFsPiBtZXNzYWdlIGNvbnRhaW5pbmcgdGhlIGln bm9yZWQgcm93IGNvdW50IGlzCi0gICAgICBlbWl0dGVkIGF0IHRoZSBlbmQgb2YgdGhlIDxjb21t YW5kPkNPUFkgRlJPTTwvY29tbWFuZD4gaWYgYXQgbGVhc3Qgb25lCi0gICAgICByb3cgd2FzIGRp c2NhcmRlZC4gV2hlbiA8bGl0ZXJhbD5MT0dfVkVSQk9TSVRZPC9saXRlcmFsPiBvcHRpb24gaXMg c2V0IHRvCi0gICAgICA8bGl0ZXJhbD52ZXJib3NlPC9saXRlcmFsPiwgYSA8bGl0ZXJhbD5OT1RJ Q0U8L2xpdGVyYWw+IG1lc3NhZ2UKKyAgICAgIFdoZW4gPGxpdGVyYWw+TE9HX1ZFUkJPU0lUWTwv bGl0ZXJhbD4gb3B0aW9uIGlzIHNldCB0byA8bGl0ZXJhbD52ZXJib3NlPC9saXRlcmFsPiwKKyAg ICAgIGZvciA8bGl0ZXJhbD5pZ25vcmU8L2xpdGVyYWw+IG9wdGlvbiwgYSA8bGl0ZXJhbD5OT1RJ Q0U8L2xpdGVyYWw+IG1lc3NhZ2UKICAgICAgIGNvbnRhaW5pbmcgdGhlIGxpbmUgb2YgdGhlIGlu cHV0IGZpbGUgYW5kIHRoZSBjb2x1bW4gbmFtZSB3aG9zZSBpbnB1dAotICAgICAgY29udmVyc2lv biBoYXMgZmFpbGVkIGlzIGVtaXR0ZWQgZm9yIGVhY2ggZGlzY2FyZGVkIHJvdy4KLSAgICAgIFdo ZW4gaXQgaXMgc2V0IHRvIDxsaXRlcmFsPnNpbGVudDwvbGl0ZXJhbD4sIG5vIG1lc3NhZ2UgaXMg ZW1pdHRlZAotICAgICAgcmVnYXJkaW5nIGlnbm9yZWQgcm93cy4KKyAgICAgIGNvbnZlcnNpb24g aGFzIGZhaWxlZCBpcyBlbWl0dGVkIGZvciBlYWNoIGRpc2NhcmRlZCByb3c7CisgICAgICBmb3Ig PGxpdGVyYWw+c2V0X251bGw8L2xpdGVyYWw+IG9wdGlvbiwgYSA8bGl0ZXJhbD5OT1RJQ0U8L2xp dGVyYWw+CisgICAgICBtZXNzYWdlIGNvbnRhaW5pbmcgdGhlIGxpbmUgb2YgdGhlIGlucHV0IGZp bGUgYW5kIHRoZSBjb2x1bW4gbmFtZSB3aGVyZQorICAgICAgdmFsdWUgd2FzIHJlcGxhY2VkIHdp dGggPGxpdGVyYWw+TlVMTDwvbGl0ZXJhbD4gZm9yIGVhY2ggaW5wdXQgY29udmVyc2lvbgorICAg ICAgZmFpbHVyZS4KKyAgICAgIFdoZW4gaXQgaXMgc2V0IHRvIDxsaXRlcmFsPnNpbGVudDwvbGl0 ZXJhbD4sIG5vIG1lc3NhZ2UgaXMgZW1pdHRlZCByZWdhcmRpbmcgaW5wdXQgY29udmVyc2lvbiBm YWlsZWQgcm93cy4KICAgICAgPC9wYXJhPgogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3Rl bnRyeT4KQEAgLTQ1OCw3ICs0NzEsOCBAQCBDT1BZIHsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBbICggPHJlcGxhY2VhYmxlCiAgICAgIDwv cGFyYT4KICAgICAgPHBhcmE+CiAgICAgICBUaGlzIGlzIGN1cnJlbnRseSB1c2VkIGluIDxjb21t YW5kPkNPUFkgRlJPTTwvY29tbWFuZD4gY29tbWFuZCB3aGVuCi0gICAgICA8bGl0ZXJhbD5PTl9F UlJPUjwvbGl0ZXJhbD4gb3B0aW9uIGlzIHNldCB0byA8bGl0ZXJhbD5pZ25vcmU8L2xpdGVyYWw+ LgorICAgICAgPGxpdGVyYWw+T05fRVJST1I8L2xpdGVyYWw+IG9wdGlvbiBpcyBzZXQgdG8gPGxp dGVyYWw+aWdub3JlPC9saXRlcmFsPgorICAgICAgb3IgPGxpdGVyYWw+c2V0X251bGw8L2xpdGVy YWw+LgogICAgICAgPC9wYXJhPgogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4K ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHkuYyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2NvcHkuYwppbmRleCA3NGFlNDJiMTlhNy4uZjk2M2QwZTUxZmYgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHkuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9j b3B5LmMKQEAgLTQwMywxMiArNDAzLDE0IEBAIGRlZkdldENvcHlPbkVycm9yQ2hvaWNlKERlZkVs ZW0gKmRlZiwgUGFyc2VTdGF0ZSAqcHN0YXRlLCBib29sIGlzX2Zyb20pCiAJCQkJIHBhcnNlcl9l cnJwb3NpdGlvbihwc3RhdGUsIGRlZi0+bG9jYXRpb24pKSk7CiAKIAkvKgotCSAqIEFsbG93ICJz dG9wIiwgb3IgImlnbm9yZSIgdmFsdWVzLgorCSAqIEFsbG93ICJzdG9wIiwgImlnbm9yZSIsICJz ZXRfbnVsbCIgdmFsdWVzLgogCSAqLwogCWlmIChwZ19zdHJjYXNlY21wKHN2YWwsICJzdG9wIikg PT0gMCkKIAkJcmV0dXJuIENPUFlfT05fRVJST1JfU1RPUDsKIAlpZiAocGdfc3RyY2FzZWNtcChz dmFsLCAiaWdub3JlIikgPT0gMCkKIAkJcmV0dXJuIENPUFlfT05fRVJST1JfSUdOT1JFOworCWlm IChwZ19zdHJjYXNlY21wKHN2YWwsICJzZXRfbnVsbCIpID09IDApCisJCXJldHVybiBDT1BZX09O X0VSUk9SX1NFVF9OVUxMOwogCiAJZXJlcG9ydChFUlJPUiwKIAkJCShlcnJjb2RlKEVSUkNPREVf SU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLApAQCAtOTE4LDcgKzkyMCw3IEBAIFByb2Nlc3NDb3B5 T3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhf RVJST1IpLAogCQkJCSBlcnJtc2coIm9ubHkgT05fRVJST1IgU1RPUCBpcyBhbGxvd2VkIGluIEJJ TkFSWSBtb2RlIikpKTsKIAotCWlmIChvcHRzX291dC0+cmVqZWN0X2xpbWl0ICYmICFvcHRzX291 dC0+b25fZXJyb3IpCisJaWYgKG9wdHNfb3V0LT5yZWplY3RfbGltaXQgJiYgb3B0c19vdXQtPm9u X2Vycm9yICE9IENPUFlfT05fRVJST1JfSUdOT1JFKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShl cnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAogCQkvKi0gdHJhbnNsYXRv cjogZmlyc3QgYW5kIHNlY29uZCAlcyBhcmUgdGhlIG5hbWVzIG9mIENPUFkgb3B0aW9uLCBlLmcu CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbS5jIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvY29weWZyb20uYwppbmRleCBmYmJiYzA5YTk3Yi4uNzUwZDU5N2Q0ZDAgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlmcm9tLmMKKysrIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvY29weWZyb20uYwpAQCAtMTQ2NywxNCArMTQ2NywyMiBAQCBDb3B5RnJvbShD b3B5RnJvbVN0YXRlIGNzdGF0ZSkKIAkvKiBEb25lLCBjbGVhbiB1cCAqLwogCWVycm9yX2NvbnRl eHRfc3RhY2sgPSBlcnJjYWxsYmFjay5wcmV2aW91czsKIAotCWlmIChjc3RhdGUtPm9wdHMub25f ZXJyb3IgIT0gQ09QWV9PTl9FUlJPUl9TVE9QICYmCi0JCWNzdGF0ZS0+bnVtX2Vycm9ycyA+IDAg JiYKKwlpZiAoY3N0YXRlLT5udW1fZXJyb3JzID4gMCAmJgogCQljc3RhdGUtPm9wdHMubG9nX3Zl cmJvc2l0eSA+PSBDT1BZX0xPR19WRVJCT1NJVFlfREVGQVVMVCkKLQkJZXJlcG9ydChOT1RJQ0Us Ci0JCQkJZXJybXNnX3BsdXJhbCgiJSIgUFJJdTY0ICIgcm93IHdhcyBza2lwcGVkIGR1ZSB0byBk YXRhIHR5cGUgaW5jb21wYXRpYmlsaXR5IiwKLQkJCQkJCQkgICIlIiBQUkl1NjQgIiByb3dzIHdl cmUgc2tpcHBlZCBkdWUgdG8gZGF0YSB0eXBlIGluY29tcGF0aWJpbGl0eSIsCi0JCQkJCQkJICBj c3RhdGUtPm51bV9lcnJvcnMsCi0JCQkJCQkJICBjc3RhdGUtPm51bV9lcnJvcnMpKTsKKwl7CisJ CWlmIChjc3RhdGUtPm9wdHMub25fZXJyb3IgPT0gQ09QWV9PTl9FUlJPUl9JR05PUkUpCisJCQll cmVwb3J0KE5PVElDRSwKKwkJCQkJZXJybXNnX3BsdXJhbCgiJSIgUFJJdTY0ICIgcm93IHdhcyBz a2lwcGVkIGR1ZSB0byBkYXRhIHR5cGUgaW5jb21wYXRpYmlsaXR5IiwKKwkJCQkJCQkJICAiJSIg UFJJdTY0ICIgcm93cyB3ZXJlIHNraXBwZWQgZHVlIHRvIGRhdGEgdHlwZSBpbmNvbXBhdGliaWxp dHkiLAorCQkJCQkJCQkgIGNzdGF0ZS0+bnVtX2Vycm9ycywKKwkJCQkJCQkJICBjc3RhdGUtPm51 bV9lcnJvcnMpKTsKKwkJZWxzZSBpZiAoY3N0YXRlLT5vcHRzLm9uX2Vycm9yID09IENPUFlfT05f RVJST1JfU0VUX05VTEwpCisJCQllcmVwb3J0KE5PVElDRSwKKwkJCQkJZXJybXNnX3BsdXJhbCgi aW52YWxpZCB2YWx1ZXMgaW4gJSIgUFJJdTY0ICIgcm93IHdhcyByZXBsYWNlZCB3aXRoIG51bGwg ZHVlIHRvIGRhdGEgdHlwZSBpbmNvbXBhdGliaWxpdHkiLAorCQkJCQkJCQkgICJpbnZhbGlkIHZh bHVlcyBpbiAlIiBQUkl1NjQgIiByb3dzIHdlcmUgcmVwbGFjZWQgd2l0aCBudWxsIGR1ZSB0byBk YXRhIHR5cGUgaW5jb21wYXRpYmlsaXR5IiwKKwkJCQkJCQkJICBjc3RhdGUtPm51bV9lcnJvcnMs CisJCQkJCQkJCSAgY3N0YXRlLT5udW1fZXJyb3JzKSk7CisJfQogCiAJaWYgKGJpc3RhdGUgIT0g TlVMTCkKIAkJRnJlZUJ1bGtJbnNlcnRTdGF0ZShiaXN0YXRlKTsKQEAgLTE2MTQsNiArMTYyMiwx OSBAQCBCZWdpbkNvcHlGcm9tKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJfQogCX0KIAorCWlmIChj c3RhdGUtPm9wdHMub25fZXJyb3IgPT0gQ09QWV9PTl9FUlJPUl9TRVRfTlVMTCkKKwl7CisJCWlu dAlhdHRyX2NvdW50ID0gbGlzdF9sZW5ndGgoY3N0YXRlLT5hdHRudW1saXN0KTsKKworCQljc3Rh dGUtPmRvbWFpbl93aXRoX2NvbnN0cmFpbnQgPSAoYm9vbCAqKSBwYWxsb2MwKGF0dHJfY291bnQg KiBzaXplb2YoYm9vbCkpOworCQlmb3JlYWNoX2ludChhdHRubywgY3N0YXRlLT5hdHRudW1saXN0 KQorCQl7CisJCQlpbnQJCQlpID0gZm9yZWFjaF9jdXJyZW50X2luZGV4KGF0dG5vKTsKKwkJCUZv cm1fcGdfYXR0cmlidXRlIGF0dCA9IFR1cGxlRGVzY0F0dHIodHVwRGVzYywgYXR0bm8gLSAxKTsK KwkJCWNzdGF0ZS0+ZG9tYWluX3dpdGhfY29uc3RyYWludFtpXSA9IERvbWFpbkhhc0NvbnN0cmFp bnRzKGF0dC0+YXR0dHlwaWQpOworCQl9CisJfQorCiAJLyogU2V0IHVwIHNvZnQgZXJyb3IgaGFu ZGxlciBmb3IgT05fRVJST1IgKi8KIAlpZiAoY3N0YXRlLT5vcHRzLm9uX2Vycm9yICE9IENPUFlf T05fRVJST1JfU1RPUCkKIAl7CkBAIC0xNjIyLDEwICsxNjQzLDExIEBAIEJlZ2luQ29weUZyb20o UGFyc2VTdGF0ZSAqcHN0YXRlLAogCQljc3RhdGUtPmVzY29udGV4dC0+ZXJyb3Jfb2NjdXJyZWQg PSBmYWxzZTsKIAogCQkvKgotCQkgKiBDdXJyZW50bHkgd2Ugb25seSBzdXBwb3J0IENPUFlfT05f RVJST1JfSUdOT1JFLiBXZSdsbCBhZGQgb3RoZXIKLQkJICogb3B0aW9ucyBsYXRlcgorCQkgKiBD dXJyZW50bHkgd2Ugb25seSBzdXBwb3J0IENPUFlfT05fRVJST1JfSUdOT1JFLCBDT1BZX09OX0VS Uk9SX1NFVF9OVUxMLgorCQkgKiBXZSdsbCBhZGQgb3RoZXIgb3B0aW9ucyBsYXRlcgogCQkgKi8K LQkJaWYgKGNzdGF0ZS0+b3B0cy5vbl9lcnJvciA9PSBDT1BZX09OX0VSUk9SX0lHTk9SRSkKKwkJ aWYgKGNzdGF0ZS0+b3B0cy5vbl9lcnJvciA9PSBDT1BZX09OX0VSUk9SX0lHTk9SRSB8fAorCQkJ Y3N0YXRlLT5vcHRzLm9uX2Vycm9yID09IENPUFlfT05fRVJST1JfU0VUX05VTEwpCiAJCQljc3Rh dGUtPmVzY29udGV4dC0+ZGV0YWlsc193YW50ZWQgPSBmYWxzZTsKIAl9CiAJZWxzZQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZyb21wYXJzZS5jIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvY29weWZyb21wYXJzZS5jCmluZGV4IGY1ZmMzNDZlMjAxLi5lNjM4ZDMyZThmNSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZyb21wYXJzZS5jCisrKyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlmcm9tcGFyc2UuYwpAQCAtOTQ3LDYgKzk0Nyw3IEBAIENv cHlGcm9tVGV4dExpa2VPbmVSb3coQ29weUZyb21TdGF0ZSBjc3RhdGUsIEV4cHJDb250ZXh0ICpl Y29udGV4dCwKIAlpbnQJCQlmbGRjdDsKIAlpbnQJCQlmaWVsZG5vOwogCWNoYXIJICAgKnN0cmlu ZzsKKwlib29sCQljdXJyZW50X3Jvd19lcnJvbmVvdXMgPSBmYWxzZTsKIAogCXR1cERlc2MgPSBS ZWxhdGlvbkdldERlc2NyKGNzdGF0ZS0+cmVsKTsKIAlhdHRyX2NvdW50ID0gbGlzdF9sZW5ndGgo Y3N0YXRlLT5hdHRudW1saXN0KTsKQEAgLTEwMjQsNyArMTAyNSw4IEBAIENvcHlGcm9tVGV4dExp a2VPbmVSb3coQ29weUZyb21TdGF0ZSBjc3RhdGUsIEV4cHJDb250ZXh0ICplY29udGV4dCwKIAkJ fQogCiAJCS8qCi0JCSAqIElmIE9OX0VSUk9SIGlzIHNwZWNpZmllZCB3aXRoIElHTk9SRSwgc2tp cCByb3dzIHdpdGggc29mdCBlcnJvcnMKKwkJICogSWYgT05fRVJST1IgaXMgc3BlY2lmaWVkIHdp dGggSUdOT1JFLCBza2lwIHJvd3Mgd2l0aCBzb2Z0IGVycm9ycy4KKwkJICogSWYgT05fRVJST1Ig aXMgc3BlY2lmaWVkIHdpdGggc2V0X251bGwsIHRyeSB0byByZXBsYWNlIHdpdGggbnVsbC4KIAkJ ICovCiAJCWVsc2UgaWYgKCFJbnB1dEZ1bmN0aW9uQ2FsbFNhZmUoJmluX2Z1bmN0aW9uc1ttXSwK IAkJCQkJCQkJCQlzdHJpbmcsCkBAIC0xMDM1LDQ3ICsxMDM3LDExOSBAQCBDb3B5RnJvbVRleHRM aWtlT25lUm93KENvcHlGcm9tU3RhdGUgY3N0YXRlLCBFeHByQ29udGV4dCAqZWNvbnRleHQsCiAJ CXsKIAkJCUFzc2VydChjc3RhdGUtPm9wdHMub25fZXJyb3IgIT0gQ09QWV9PTl9FUlJPUl9TVE9Q KTsKIAotCQkJY3N0YXRlLT5udW1fZXJyb3JzKys7Ci0KLQkJCWlmIChjc3RhdGUtPm9wdHMubG9n X3ZlcmJvc2l0eSA9PSBDT1BZX0xPR19WRVJCT1NJVFlfVkVSQk9TRSkKKwkJCWlmIChjc3RhdGUt Pm9wdHMub25fZXJyb3IgPT0gQ09QWV9PTl9FUlJPUl9TRVRfTlVMTCkKIAkJCXsKIAkJCQkvKgot CQkJCSAqIFNpbmNlIHdlIGVtaXQgbGluZSBudW1iZXIgYW5kIGNvbHVtbiBpbmZvIGluIHRoZSBi ZWxvdwotCQkJCSAqIG5vdGljZSBtZXNzYWdlLCB3ZSBzdXBwcmVzcyBlcnJvciBjb250ZXh0IGlu Zm9ybWF0aW9uIG90aGVyCi0JCQkJICogdGhhbiB0aGUgcmVsYXRpb24gbmFtZS4KLQkJCQkgKi8K LQkJCQlBc3NlcnQoIWNzdGF0ZS0+cmVsbmFtZV9vbmx5KTsKLQkJCQljc3RhdGUtPnJlbG5hbWVf b25seSA9IHRydWU7CisJCQkJICogd2UgdXNlIGl0IHRvIGNvdW50IG51bWJlciBvZiByb3dzIChu b3QgZmllbGRzISkgdGhhdAorCQkJCSAqIHN1Y2Nlc3NmdWxseSBhcHBsaWVkIG9uX2Vycm9yIHNl dF9udWxsLgorCQkJCSovCisJCQkJaWYgKCFjdXJyZW50X3Jvd19lcnJvbmVvdXMpCisJCQkJCWN1 cnJlbnRfcm93X2Vycm9uZW91cyA9IHRydWU7CiAKLQkJCQlpZiAoY3N0YXRlLT5jdXJfYXR0dmFs KQorCQkJCWNzdGF0ZS0+ZXNjb250ZXh0LT5lcnJvcl9vY2N1cnJlZCA9IGZhbHNlOworCQkJCUFz c2VydChjc3RhdGUtPmRvbWFpbl93aXRoX2NvbnN0cmFpbnQgIT0gTlVMTCk7CisKKwkJCQkvKgor CQkJCSAqIHdoZW4gY29sdW1uIHR5cGUgaXMgZG9tYWluIHdpdGggY29uc3RyYWludHMsIHdlIG1h eQorCQkJCSAqIG5lZWQgYW5vdGhlciBJbnB1dEZ1bmN0aW9uQ2FsbFNhZmUgdG8gZXJyb3Igb3V0 IGRvbWFpbgorCQkJCSAqIGNvbnN0cmFpbnQgdmlvbGF0aW9uLgorCQkJCSovCisJCQkJaWYgKCFj c3RhdGUtPmRvbWFpbl93aXRoX2NvbnN0cmFpbnRbbV0gfHwKKwkJCQkJSW5wdXRGdW5jdGlvbkNh bGxTYWZlKCZpbl9mdW5jdGlvbnNbbV0sCisJCQkJCQkJCQkJICBOVUxMLAorCQkJCQkJCQkJCSAg dHlwaW9wYXJhbXNbbV0sCisJCQkJCQkJCQkJICBhdHQtPmF0dHR5cG1vZCwKKwkJCQkJCQkJCQkg IChOb2RlICopIGNzdGF0ZS0+ZXNjb250ZXh0LAorCQkJCQkJCQkJCSAgJnZhbHVlc1ttXSkpCiAJ CQkJewotCQkJCQljaGFyCSAgICphdHR2YWw7Ci0KLQkJCQkJYXR0dmFsID0gQ29weUxpbWl0UHJp bnRvdXRMZW5ndGgoY3N0YXRlLT5jdXJfYXR0dmFsKTsKLQkJCQkJZXJlcG9ydChOT1RJQ0UsCi0J CQkJCQkJZXJybXNnKCJza2lwcGluZyByb3cgZHVlIHRvIGRhdGEgdHlwZSBpbmNvbXBhdGliaWxp dHkgYXQgbGluZSAlIiBQUkl1NjQgIiBmb3IgY29sdW1uIFwiJXNcIjogXCIlc1wiIiwKLQkJCQkJ CQkJICAgY3N0YXRlLT5jdXJfbGluZW5vLAotCQkJCQkJCQkgICBjc3RhdGUtPmN1cl9hdHRuYW1l LAotCQkJCQkJCQkgICBhdHR2YWwpKTsKLQkJCQkJcGZyZWUoYXR0dmFsKTsKKwkJCQkJbnVsbHNb bV0gPSB0cnVlOworCQkJCQl2YWx1ZXNbbV0gPSAoRGF0dW0pIDA7CisKKwkJCQkJaWYgKGNzdGF0 ZS0+b3B0cy5sb2dfdmVyYm9zaXR5ID09IENPUFlfTE9HX1ZFUkJPU0lUWV9WRVJCT1NFKQorCQkJ CQl7CisJCQkJCQljaGFyCSAgICphdHR2YWw7CisKKwkJCQkJCS8qCisJCQkJCQkqIFNpbmNlIHdl IGVtaXQgbGluZSBudW1iZXIgYW5kIGNvbHVtbiBpbmZvIGluIHRoZSBiZWxvdworCQkJCQkJKiBu b3RpY2UgbWVzc2FnZSwgd2Ugc3VwcHJlc3MgZXJyb3IgY29udGV4dCBpbmZvcm1hdGlvbiBvdGhl cgorCQkJCQkJKiB0aGFuIHRoZSByZWxhdGlvbiBuYW1lLgorCQkJCQkJKi8KKwkJCQkJCUFzc2Vy dCghY3N0YXRlLT5yZWxuYW1lX29ubHkpOworCQkJCQkJQXNzZXJ0KGNzdGF0ZS0+Y3VyX2F0dHZh bCk7CisKKwkJCQkJCWNzdGF0ZS0+cmVsbmFtZV9vbmx5ID0gdHJ1ZTsKKwkJCQkJCWF0dHZhbCA9 IENvcHlMaW1pdFByaW50b3V0TGVuZ3RoKGNzdGF0ZS0+Y3VyX2F0dHZhbCk7CisJCQkJCQllcmVw b3J0KE5PVElDRSwKKwkJCQkJCQkJZXJybXNnKCJzZXR0aW5nIHRvIG51bGwgZHVlIHRvIGRhdGEg dHlwZSBpbmNvbXBhdGliaWxpdHkgYXQgbGluZSAlIiBQUkl1NjQgIiBmb3IgY29sdW1uIFwiJXNc IjogXCIlc1wiIiwKKwkJCQkJCQkJCQljc3RhdGUtPmN1cl9saW5lbm8sCisJCQkJCQkJCQkJY3N0 YXRlLT5jdXJfYXR0bmFtZSwKKwkJCQkJCQkJCQlhdHR2YWwpKTsKKwkJCQkJCXBmcmVlKGF0dHZh bCk7CisKKwkJCQkJCS8qIHJlc2V0IHJlbG5hbWVfb25seSAqLworCQkJCQkJY3N0YXRlLT5yZWxu YW1lX29ubHkgPSBmYWxzZTsKKwkJCQkJfQorCisJCQkJCWNzdGF0ZS0+Y3VyX2F0dG5hbWUgPSBO VUxMOworCQkJCQljb250aW51ZTsKIAkJCQl9CisJCQkJZWxzZSBpZiAoc3RyaW5nID09IE5VTEwp CisJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJZXJyY29kZShFUlJDT0RFX05PVF9OVUxMX1ZJ T0xBVElPTiksCisJCQkJCQkJZXJybXNnKCJkb21haW4gJXMgZG9lcyBub3QgYWxsb3cgbnVsbCB2 YWx1ZXMiLCBmb3JtYXRfdHlwZV9iZSh0eXBpb3BhcmFtc1ttXSkpLAorCQkJCQkJCWVycmRhdGF0 eXBlKHR5cGlvcGFyYW1zW21dKSk7CiAJCQkJZWxzZQotCQkJCQllcmVwb3J0KE5PVElDRSwKLQkJ CQkJCQllcnJtc2coInNraXBwaW5nIHJvdyBkdWUgdG8gZGF0YSB0eXBlIGluY29tcGF0aWJpbGl0 eSBhdCBsaW5lICUiIFBSSXU2NCAiIGZvciBjb2x1bW4gXCIlc1wiOiBudWxsIGlucHV0IiwKLQkJ CQkJCQkJICAgY3N0YXRlLT5jdXJfbGluZW5vLAotCQkJCQkJCQkgICBjc3RhdGUtPmN1cl9hdHRu YW1lKSk7Ci0KLQkJCQkvKiByZXNldCByZWxuYW1lX29ubHkgKi8KLQkJCQljc3RhdGUtPnJlbG5h bWVfb25seSA9IGZhbHNlOworCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCWVycmNvZGUoRVJS Q09ERV9JTlZBTElEX1RFWFRfUkVQUkVTRU5UQVRJT04pLAorCQkJCQkJCWVycm1zZygiaW52YWxp ZCBpbnB1dCB2YWx1ZSBmb3IgZG9tYWluICVzOiBcIiVzXCIiLAorCQkJCQkJCQkgICBmb3JtYXRf dHlwZV9iZSh0eXBpb3BhcmFtc1ttXSksIHN0cmluZykpOwogCQkJfQorCQkJZWxzZSBpZiAoY3N0 YXRlLT5vcHRzLm9uX2Vycm9yID09IENPUFlfT05fRVJST1JfSUdOT1JFKQorCQkJeworCQkJCWNz dGF0ZS0+bnVtX2Vycm9ycysrOworCisJCQkJaWYgKGNzdGF0ZS0+b3B0cy5sb2dfdmVyYm9zaXR5 ID09IENPUFlfTE9HX1ZFUkJPU0lUWV9WRVJCT1NFKQorCQkJCXsKKwkJCQkJLyoKKwkJCQkJKiBT aW5jZSB3ZSBlbWl0IGxpbmUgbnVtYmVyIGFuZCBjb2x1bW4gaW5mbyBpbiB0aGUgYmVsb3cKKwkJ CQkJKiBub3RpY2UgbWVzc2FnZSwgd2Ugc3VwcHJlc3MgZXJyb3IgY29udGV4dCBpbmZvcm1hdGlv biBvdGhlcgorCQkJCQkqIHRoYW4gdGhlIHJlbGF0aW9uIG5hbWUuCisJCQkJCSovCisJCQkJCUFz c2VydCghY3N0YXRlLT5yZWxuYW1lX29ubHkpOworCQkJCQljc3RhdGUtPnJlbG5hbWVfb25seSA9 IHRydWU7CisKKwkJCQkJaWYgKGNzdGF0ZS0+Y3VyX2F0dHZhbCkKKwkJCQkJeworCQkJCQkJY2hh cgkgICAqYXR0dmFsOwogCi0JCQlyZXR1cm4gdHJ1ZTsKKwkJCQkJCWF0dHZhbCA9IENvcHlMaW1p dFByaW50b3V0TGVuZ3RoKGNzdGF0ZS0+Y3VyX2F0dHZhbCk7CisJCQkJCQllcmVwb3J0KE5PVElD RSwKKwkJCQkJCQkJZXJybXNnKCJza2lwcGluZyByb3cgZHVlIHRvIGRhdGEgdHlwZSBpbmNvbXBh dGliaWxpdHkgYXQgbGluZSAlIiBQUkl1NjQgIiBmb3IgY29sdW1uIFwiJXNcIjogXCIlc1wiIiwK KwkJCQkJCQkJCWNzdGF0ZS0+Y3VyX2xpbmVubywKKwkJCQkJCQkJCWNzdGF0ZS0+Y3VyX2F0dG5h bWUsCisJCQkJCQkJCQlhdHR2YWwpKTsKKwkJCQkJCXBmcmVlKGF0dHZhbCk7CisJCQkJCX0KKwkJ CQkJZWxzZQorCQkJCQkJZXJlcG9ydChOT1RJQ0UsCisJCQkJCQkJCWVycm1zZygic2tpcHBpbmcg cm93IGR1ZSB0byBkYXRhIHR5cGUgaW5jb21wYXRpYmlsaXR5IGF0IGxpbmUgJSIgUFJJdTY0ICIg Zm9yIGNvbHVtbiBcIiVzXCI6IG51bGwgaW5wdXQiLAorCQkJCQkJCQkJY3N0YXRlLT5jdXJfbGlu ZW5vLAorCQkJCQkJCQkJY3N0YXRlLT5jdXJfYXR0bmFtZSkpOworCisJCQkJCS8qIHJlc2V0IHJl bG5hbWVfb25seSAqLworCQkJCQljc3RhdGUtPnJlbG5hbWVfb25seSA9IGZhbHNlOworCQkJCX0K KwkJCQlyZXR1cm4gdHJ1ZTsKKwkJCX0KIAkJfQogCiAJCWNzdGF0ZS0+Y3VyX2F0dG5hbWUgPSBO VUxMOwogCQljc3RhdGUtPmN1cl9hdHR2YWwgPSBOVUxMOwogCX0KIAorCWlmIChjdXJyZW50X3Jv d19lcnJvbmVvdXMpCisJCWNzdGF0ZS0+bnVtX2Vycm9ycysrOworCiAJQXNzZXJ0KGZpZWxkbm8g PT0gYXR0cl9jb3VudCk7CiAKIAlyZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNx bC90YWItY29tcGxldGUuaW4uYyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYwppbmRl eCBjOTE2YjkyOTlhOC4uOGU2ZjQ5MzA5MTkgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC90YWIt Y29tcGxldGUuaW4uYworKysgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKQEAgLTMy OTEsNyArMzI5MSw3IEBAIG1hdGNoX3ByZXZpb3VzX3dvcmRzKGludCBwYXR0ZXJuX2lkLAogCiAJ LyogQ29tcGxldGUgQ09QWSA8c3RoPiBGUk9NIGZpbGVuYW1lIFdJVEggKE9OX0VSUk9SICovCiAJ ZWxzZSBpZiAoTWF0Y2hlcygiQ09QWXxcXGNvcHkiLCBNYXRjaEFueSwgIkZST018VE8iLCBNYXRj aEFueSwgIldJVEgiLCAiKCIsICJPTl9FUlJPUiIpKQotCQlDT01QTEVURV9XSVRIKCJzdG9wIiwg Imlnbm9yZSIpOworCQlDT01QTEVURV9XSVRIKCJzdG9wIiwgImlnbm9yZSIsICJzZXRfbnVsbCIp OwogCiAJLyogQ29tcGxldGUgQ09QWSA8c3RoPiBGUk9NIGZpbGVuYW1lIFdJVEggKExPR19WRVJC T1NJVFkgKi8KIAllbHNlIGlmIChNYXRjaGVzKCJDT1BZfFxcY29weSIsIE1hdGNoQW55LCAiRlJP TXxUTyIsIE1hdGNoQW55LCAiV0lUSCIsICIoIiwgIkxPR19WRVJCT1NJVFkiKSkKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2NvcHkuaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2Nv cHkuaAppbmRleCAwNmRmZGZlZjcyMS4uOTM1ZDIxZWU3N2EgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL2NvbW1hbmRzL2NvcHkuaAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5LmgKQEAg LTM4LDYgKzM4LDcgQEAgdHlwZWRlZiBlbnVtIENvcHlPbkVycm9yQ2hvaWNlCiB7CiAJQ09QWV9P Tl9FUlJPUl9TVE9QID0gMCwJCS8qIGltbWVkaWF0ZWx5IHRocm93IGVycm9ycywgZGVmYXVsdCAq LwogCUNPUFlfT05fRVJST1JfSUdOT1JFLAkJLyogaWdub3JlIGVycm9ycyAqLworCUNPUFlfT05f RVJST1JfU0VUX05VTEwsCQkvKiBzZXQgZXJyb3IgZmllbGQgdG8gbnVsbCAqLwogfSBDb3B5T25F cnJvckNob2ljZTsKIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2NvcHlm cm9tX2ludGVybmFsLmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5ZnJvbV9pbnRlcm5hbC5o CmluZGV4IGM4YjIyYWYyMmQ4Li5iNDI3ZTcxYjliMyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv Y29tbWFuZHMvY29weWZyb21faW50ZXJuYWwuaAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9j b3B5ZnJvbV9pbnRlcm5hbC5oCkBAIC0xMDgsNiArMTA4LDEyIEBAIHR5cGVkZWYgc3RydWN0IENv cHlGcm9tU3RhdGVEYXRhCiAJCQkJCQkJCSAqIGF0dCAqLwogCWJvb2wJICAgKmRlZmF1bHRzOwkJ LyogaWYgREVGQVVMVCBtYXJrZXIgd2FzIGZvdW5kIGZvcgogCQkJCQkJCQkgKiBjb3JyZXNwb25k aW5nIGF0dCAqLworCS8qCisJICogU2V0IHRvIHRydWUgaWYgdGhlIGNvcnJlc3BvbmRpbmcgYXR0 IGRhdGEgdHlwZSBpcyBkb21haW4gd2l0aCBjb25zdHJhaW50LgorCSAqIG5vcm1hbGx5IHRoaXMg ZmllbGQgaXMgTlVMTCwgZXhjZXB0IHdoZW4gb25fZXJyb3IgaXMgc3BlY2lmaWVkIGFzIFNFVF9O VUxMLgorCSovCisJYm9vbAkgICAqZG9tYWluX3dpdGhfY29uc3RyYWludDsKKwogCWJvb2wJCXZv bGF0aWxlX2RlZmV4cHJzOwkvKiBpcyBhbnkgb2YgZGVmZXhwcnMgdm9sYXRpbGU/ICovCiAJTGlz dAkgICAqcmFuZ2VfdGFibGU7CS8qIHNpbmdsZSBlbGVtZW50IGxpc3Qgb2YgUmFuZ2VUYmxFbnRy eSAqLwogCUxpc3QJICAgKnJ0ZXBlcm1pbmZvczsJLyogc2luZ2xlIGVsZW1lbnQgbGlzdCBvZiBS VEVQZXJtaXNzaW9uSW5mbyAqLwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9jb3B5Mi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvcHkyLm91dAppbmRleCA2 NGVhMzNhZWFlOC4uM2Y4NDNkMWNkNWMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvY29weTIub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29weTIub3V0 CkBAIC04MSw2ICs4MSwxMCBAQCBDT1BZIHggZnJvbSBzdGRpbiAob25fZXJyb3IgaWdub3JlLCBv bl9lcnJvciBpZ25vcmUpOwogRVJST1I6ICBjb25mbGljdGluZyBvciByZWR1bmRhbnQgb3B0aW9u cwogTElORSAxOiBDT1BZIHggZnJvbSBzdGRpbiAob25fZXJyb3IgaWdub3JlLCBvbl9lcnJvciBp Z25vcmUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitD T1BZIHggZnJvbSBzdGRpbiAob25fZXJyb3Igc2V0X251bGwsIG9uX2Vycm9yIGlnbm9yZSk7CitF UlJPUjogIGNvbmZsaWN0aW5nIG9yIHJlZHVuZGFudCBvcHRpb25zCitMSU5FIDE6IENPUFkgeCBm cm9tIHN0ZGluIChvbl9lcnJvciBzZXRfbnVsbCwgb25fZXJyb3IgaWdub3JlKTsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCiBDT1BZIHggZnJvbSBzdGRp biAobG9nX3ZlcmJvc2l0eSBkZWZhdWx0LCBsb2dfdmVyYm9zaXR5IHZlcmJvc2UpOwogRVJST1I6 ICBjb25mbGljdGluZyBvciByZWR1bmRhbnQgb3B0aW9ucwogTElORSAxOiBDT1BZIHggZnJvbSBz dGRpbiAobG9nX3ZlcmJvc2l0eSBkZWZhdWx0LCBsb2dfdmVyYm9zaXR5IHZlcmIuLi4KQEAgLTky LDYgKzk2LDEwIEBAIENPUFkgeCBmcm9tIHN0ZGluIChmb3JtYXQgQklOQVJZLCBudWxsICd4Jyk7 CiBFUlJPUjogIGNhbm5vdCBzcGVjaWZ5IE5VTEwgaW4gQklOQVJZIG1vZGUKIENPUFkgeCBmcm9t IHN0ZGluIChmb3JtYXQgQklOQVJZLCBvbl9lcnJvciBpZ25vcmUpOwogRVJST1I6ICBvbmx5IE9O X0VSUk9SIFNUT1AgaXMgYWxsb3dlZCBpbiBCSU5BUlkgbW9kZQorQ09QWSB4IGZyb20gc3RkaW4g KGZvcm1hdCBCSU5BUlksIG9uX2Vycm9yIHNldF9udWxsKTsKK0VSUk9SOiAgb25seSBPTl9FUlJP UiBTVE9QIGlzIGFsbG93ZWQgaW4gQklOQVJZIG1vZGUKK0NPUFkgeCBmcm9tIHN0ZGluIChvbl9l cnJvciBzZXRfbnVsbCwgcmVqZWN0X2xpbWl0IDIpOworRVJST1I6ICBDT1BZIFJFSkVDVF9MSU1J VCByZXF1aXJlcyBPTl9FUlJPUiB0byBiZSBzZXQgdG8gSUdOT1JFCiBDT1BZIHggZnJvbSBzdGRp biAob25fZXJyb3IgdW5zdXBwb3J0ZWQpOwogRVJST1I6ICBDT1BZIE9OX0VSUk9SICJ1bnN1cHBv cnRlZCIgbm90IHJlY29nbml6ZWQKIExJTkUgMTogQ09QWSB4IGZyb20gc3RkaW4gKG9uX2Vycm9y IHVuc3VwcG9ydGVkKTsKQEAgLTEyNCw2ICsxMzIsMTAgQEAgQ09QWSB4IHRvIHN0ZG91dCAoZm9y bWF0IEJJTkFSWSwgb25fZXJyb3IgdW5zdXBwb3J0ZWQpOwogRVJST1I6ICBDT1BZIE9OX0VSUk9S IGNhbm5vdCBiZSB1c2VkIHdpdGggQ09QWSBUTwogTElORSAxOiBDT1BZIHggdG8gc3Rkb3V0IChm b3JtYXQgQklOQVJZLCBvbl9lcnJvciB1bnN1cHBvcnRlZCk7CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIF4KK0NPUFkgeCB0byBzdGRvdXQgKG9uX2Vycm9yIHNldF9u dWxsKTsKK0VSUk9SOiAgQ09QWSBPTl9FUlJPUiBjYW5ub3QgYmUgdXNlZCB3aXRoIENPUFkgVE8K K0xJTkUgMTogQ09QWSB4IHRvIHN0ZG91dCAob25fZXJyb3Igc2V0X251bGwpOworICAgICAgICAg ICAgICAgICAgICAgICAgICBeCiBDT1BZIHggZnJvbSBzdGRpbiAobG9nX3ZlcmJvc2l0eSB1bnN1 cHBvcnRlZCk7CiBFUlJPUjogIENPUFkgTE9HX1ZFUkJPU0lUWSAidW5zdXBwb3J0ZWQiIG5vdCBy ZWNvZ25pemVkCiBMSU5FIDE6IENPUFkgeCBmcm9tIHN0ZGluIChsb2dfdmVyYm9zaXR5IHVuc3Vw cG9ydGVkKTsKQEAgLTc2OSw2ICs3ODEsNTEgQEAgQ09OVEVYVDogIENPUFkgY2hlY2tfaWduX2Vy cgogTk9USUNFOiAgc2tpcHBpbmcgcm93IGR1ZSB0byBkYXRhIHR5cGUgaW5jb21wYXRpYmlsaXR5 IGF0IGxpbmUgOCBmb3IgY29sdW1uICJrIjogImEiCiBDT05URVhUOiAgQ09QWSBjaGVja19pZ25f ZXJyCiBOT1RJQ0U6ICA2IHJvd3Mgd2VyZSBza2lwcGVkIGR1ZSB0byBkYXRhIHR5cGUgaW5jb21w YXRpYmlsaXR5CitDUkVBVEUgRE9NQUlOIGRfaW50X25vdF9udWxsIEFTIElOVCBOT1QgTlVMTCBD SEVDSyh2YWx1ZSA+IDApOworQ1JFQVRFIERPTUFJTiBkX2ludF9wb3NpdGl2ZV9tYXliZV9udWxs IEFTIElOVCBDSEVDSyh2YWx1ZSA+IDApOworQ1JFQVRFIFRBQkxFIHRfb25fZXJyb3JfbnVsbCAo YSBkX2ludF9ub3RfbnVsbCwgYiBkX2ludF9wb3NpdGl2ZV9tYXliZV9udWxsLCBjIElOVCk7Citc cHNldCBudWxsIE5VTEwKKy0tZmFpbCwgY29sdW1uIGEgY2Fubm90IHNldCB0byBudWxsIHZhbHVl CitDT1BZIHRfb25fZXJyb3JfbnVsbCBGUk9NIFNURElOIFdJVEggKG9uX2Vycm9yIHNldF9udWxs KTsKK0VSUk9SOiAgZG9tYWluIGRfaW50X25vdF9udWxsIGRvZXMgbm90IGFsbG93IG51bGwgdmFs dWVzCitDT05URVhUOiAgQ09QWSB0X29uX2Vycm9yX251bGwsIGxpbmUgMSwgY29sdW1uIGE6IG51 bGwgaW5wdXQKKy0tZmFpbCwgY29sdW1uIGEgaXMgZG9tYWluIHdpdGggbm90LW51bGwgY29uc3Ry YWludAorQ09QWSB0X29uX2Vycm9yX251bGwgRlJPTSBTVERJTiBXSVRIIChvbl9lcnJvciBzZXRf bnVsbCk7CitFUlJPUjogIGludmFsaWQgaW5wdXQgdmFsdWUgZm9yIGRvbWFpbiBkX2ludF9ub3Rf bnVsbDogInNzIgorQ09OVEVYVDogIENPUFkgdF9vbl9lcnJvcl9udWxsLCBsaW5lIDEsIGNvbHVt biBhOiAic3MiCistLWZhaWwsIGNvbHVtbiBhIGNhbm5vdCBzZXQgdG8gbnVsbCB2YWx1ZQorQ09Q WSB0X29uX2Vycm9yX251bGwgRlJPTSBTVERJTiBXSVRIIChvbl9lcnJvciBzZXRfbnVsbCk7CitF UlJPUjogIGludmFsaWQgaW5wdXQgdmFsdWUgZm9yIGRvbWFpbiBkX2ludF9ub3RfbnVsbDogIi0x IgorQ09OVEVYVDogIENPUFkgdF9vbl9lcnJvcl9udWxsLCBsaW5lIDEsIGNvbHVtbiBhOiAiLTEi CistLWZhaWwuIGxlc3MgZGF0YQorQ09QWSB0X29uX2Vycm9yX251bGwgRlJPTSBTVERJTiBXSVRI IChkZWxpbWl0ZXIgJywnLCBvbl9lcnJvciBzZXRfbnVsbCk7CitFUlJPUjogIG1pc3NpbmcgZGF0 YSBmb3IgY29sdW1uICJjIgorQ09OVEVYVDogIENPUFkgdF9vbl9lcnJvcl9udWxsLCBsaW5lIDE6 ICIxLDEiCistLWZhaWwuIGV4dHJhIGRhdGEKK0NPUFkgdF9vbl9lcnJvcl9udWxsIEZST00gU1RE SU4gV0lUSCAoZGVsaW1pdGVyICcsJywgb25fZXJyb3Igc2V0X251bGwpOworRVJST1I6ICBleHRy YSBkYXRhIGFmdGVyIGxhc3QgZXhwZWN0ZWQgY29sdW1uCitDT05URVhUOiAgQ09QWSB0X29uX2Vy cm9yX251bGwsIGxpbmUgMTogIjEsMiwzLDQiCistLW9rCitDT1BZIHRfb25fZXJyb3JfbnVsbCBG Uk9NIFNURElOIFdJVEggKG9uX2Vycm9yIHNldF9udWxsLCBsb2dfdmVyYm9zaXR5IHZlcmJvc2Up OworTk9USUNFOiAgc2V0dGluZyB0byBudWxsIGR1ZSB0byBkYXRhIHR5cGUgaW5jb21wYXRpYmls aXR5IGF0IGxpbmUgMSBmb3IgY29sdW1uICJiIjogIngxIgorQ09OVEVYVDogIENPUFkgdF9vbl9l cnJvcl9udWxsCitOT1RJQ0U6ICBzZXR0aW5nIHRvIG51bGwgZHVlIHRvIGRhdGEgdHlwZSBpbmNv bXBhdGliaWxpdHkgYXQgbGluZSAxIGZvciBjb2x1bW4gImMiOiAieXgiCitDT05URVhUOiAgQ09Q WSB0X29uX2Vycm9yX251bGwKK05PVElDRTogIHNldHRpbmcgdG8gbnVsbCBkdWUgdG8gZGF0YSB0 eXBlIGluY29tcGF0aWJpbGl0eSBhdCBsaW5lIDIgZm9yIGNvbHVtbiAiYiI6ICJ6eCIKK0NPTlRF WFQ6ICBDT1BZIHRfb25fZXJyb3JfbnVsbAorTk9USUNFOiAgc2V0dGluZyB0byBudWxsIGR1ZSB0 byBkYXRhIHR5cGUgaW5jb21wYXRpYmlsaXR5IGF0IGxpbmUgMyBmb3IgY29sdW1uICJjIjogImVh IgorQ09OVEVYVDogIENPUFkgdF9vbl9lcnJvcl9udWxsCitOT1RJQ0U6ICBpbnZhbGlkIHZhbHVl cyBpbiAzIHJvd3Mgd2VyZSByZXBsYWNlZCB3aXRoIG51bGwgZHVlIHRvIGRhdGEgdHlwZSBpbmNv bXBhdGliaWxpdHkKKy0tIGNoZWNrIGluc2VydGVkIGNvbnRlbnQKK3NlbGVjdCAqIGZyb20gdF9v bl9lcnJvcl9udWxsOworIGEgIHwgIGIgICB8ICBjICAgCistLS0tKy0tLS0tLSstLS0tLS0KKyAx MCB8IE5VTEwgfCBOVUxMCisgMTEgfCBOVUxMIHwgICAxMgorIDEzIHwgICAxNCB8IE5VTEwKKygz IHJvd3MpCisKK1xwc2V0IG51bGwgJycKIC0tIHRlc3RzIGZvciBvbl9lcnJvciBvcHRpb24gd2l0 aCBsb2dfdmVyYm9zaXR5IGFuZCBudWxsIGNvbnN0cmFpbnQgdmlhIGRvbWFpbgogQ1JFQVRFIERP TUFJTiBkY2hlY2tfaWduX2VycjIgdmFyY2hhcigxNSkgTk9UIE5VTEw7CiBDUkVBVEUgVEFCTEUg Y2hlY2tfaWduX2VycjIgKG4gaW50LCBtIGludFtdLCBrIGludCwgbCBkY2hlY2tfaWduX2VycjIp OwpAQCAtODI4LDYgKzg4NSw5IEBAIERST1AgVklFVyBpbnN0ZWFkX29mX2luc2VydF90Ymxfdmll dzsKIERST1AgVklFVyBpbnN0ZWFkX29mX2luc2VydF90Ymxfdmlld18yOwogRFJPUCBGVU5DVElP TiBmdW5faW5zdGVhZF9vZl9pbnNlcnRfdGJsKCk7CiBEUk9QIFRBQkxFIGNoZWNrX2lnbl9lcnI7 CitEUk9QIFRBQkxFIHRfb25fZXJyb3JfbnVsbDsKK0RST1AgRE9NQUlOIGRfaW50X25vdF9udWxs OworRFJPUCBET01BSU4gZF9pbnRfcG9zaXRpdmVfbWF5YmVfbnVsbDsKIERST1AgVEFCTEUgY2hl Y2tfaWduX2VycjI7CiBEUk9QIERPTUFJTiBkY2hlY2tfaWduX2VycjI7CiBEUk9QIFRBQkxFIGhh cmRfZXJyOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29weTIuc3FsIGIvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvY29weTIuc3FsCmluZGV4IDQ1MjczNTU3Y2UwLi5kNzdhMDY2Njhl OCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29weTIuc3FsCisrKyBiL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL2NvcHkyLnNxbApAQCAtNjcsMTIgKzY3LDE1IEBAIENPUFkgeCBmcm9t IHN0ZGluIChmb3JjZV9udWxsIChhKSwgZm9yY2VfbnVsbCAoYikpOwogQ09QWSB4IGZyb20gc3Rk aW4gKGNvbnZlcnRfc2VsZWN0aXZlbHkgKGEpLCBjb252ZXJ0X3NlbGVjdGl2ZWx5IChiKSk7CiBD T1BZIHggZnJvbSBzdGRpbiAoZW5jb2RpbmcgJ3NxbF9hc2NpaScsIGVuY29kaW5nICdzcWxfYXNj aWknKTsKIENPUFkgeCBmcm9tIHN0ZGluIChvbl9lcnJvciBpZ25vcmUsIG9uX2Vycm9yIGlnbm9y ZSk7CitDT1BZIHggZnJvbSBzdGRpbiAob25fZXJyb3Igc2V0X251bGwsIG9uX2Vycm9yIGlnbm9y ZSk7CiBDT1BZIHggZnJvbSBzdGRpbiAobG9nX3ZlcmJvc2l0eSBkZWZhdWx0LCBsb2dfdmVyYm9z aXR5IHZlcmJvc2UpOwogCiAtLSBpbmNvcnJlY3Qgb3B0aW9ucwogQ09QWSB4IGZyb20gc3RkaW4g KGZvcm1hdCBCSU5BUlksIGRlbGltaXRlciAnLCcpOwogQ09QWSB4IGZyb20gc3RkaW4gKGZvcm1h dCBCSU5BUlksIG51bGwgJ3gnKTsKIENPUFkgeCBmcm9tIHN0ZGluIChmb3JtYXQgQklOQVJZLCBv bl9lcnJvciBpZ25vcmUpOworQ09QWSB4IGZyb20gc3RkaW4gKGZvcm1hdCBCSU5BUlksIG9uX2Vy cm9yIHNldF9udWxsKTsKK0NPUFkgeCBmcm9tIHN0ZGluIChvbl9lcnJvciBzZXRfbnVsbCwgcmVq ZWN0X2xpbWl0IDIpOwogQ09QWSB4IGZyb20gc3RkaW4gKG9uX2Vycm9yIHVuc3VwcG9ydGVkKTsK IENPUFkgeCBmcm9tIHN0ZGluIChmb3JtYXQgVEVYVCwgZm9yY2VfcXVvdGUoYSkpOwogQ09QWSB4 IGZyb20gc3RkaW4gKGZvcm1hdCBURVhULCBmb3JjZV9xdW90ZSAqKTsKQEAgLTg3LDYgKzkwLDcg QEAgQ09QWSB4IGZyb20gc3RkaW4gKGZvcm1hdCBURVhULCBmb3JjZV9udWxsICopOwogQ09QWSB4 IHRvIHN0ZG91dCAoZm9ybWF0IENTViwgZm9yY2VfbnVsbChhKSk7CiBDT1BZIHggdG8gc3Rkb3V0 IChmb3JtYXQgQ1NWLCBmb3JjZV9udWxsICopOwogQ09QWSB4IHRvIHN0ZG91dCAoZm9ybWF0IEJJ TkFSWSwgb25fZXJyb3IgdW5zdXBwb3J0ZWQpOworQ09QWSB4IHRvIHN0ZG91dCAob25fZXJyb3Ig c2V0X251bGwpOwogQ09QWSB4IGZyb20gc3RkaW4gKGxvZ192ZXJib3NpdHkgdW5zdXBwb3J0ZWQp OwogQ09QWSB4IGZyb20gc3RkaW4gd2l0aCAocmVqZWN0X2xpbWl0IDEpOwogQ09QWSB4IGZyb20g c3RkaW4gd2l0aCAob25fZXJyb3IgaWdub3JlLCByZWplY3RfbGltaXQgMCk7CkBAIC01MzQsNiAr NTM4LDQ1IEBAIGEJezJ9CTIKIDgJezh9CTgKIFwuCiAKK0NSRUFURSBET01BSU4gZF9pbnRfbm90 X251bGwgQVMgSU5UIE5PVCBOVUxMIENIRUNLKHZhbHVlID4gMCk7CitDUkVBVEUgRE9NQUlOIGRf aW50X3Bvc2l0aXZlX21heWJlX251bGwgQVMgSU5UIENIRUNLKHZhbHVlID4gMCk7CitDUkVBVEUg VEFCTEUgdF9vbl9lcnJvcl9udWxsIChhIGRfaW50X25vdF9udWxsLCBiIGRfaW50X3Bvc2l0aXZl X21heWJlX251bGwsIGMgSU5UKTsKKworXHBzZXQgbnVsbCBOVUxMCistLWZhaWwsIGNvbHVtbiBh IGNhbm5vdCBzZXQgdG8gbnVsbCB2YWx1ZQorQ09QWSB0X29uX2Vycm9yX251bGwgRlJPTSBTVERJ TiBXSVRIIChvbl9lcnJvciBzZXRfbnVsbCk7CitcTgkxMQkxMworXC4KKworLS1mYWlsLCBjb2x1 bW4gYSBpcyBkb21haW4gd2l0aCBub3QtbnVsbCBjb25zdHJhaW50CitDT1BZIHRfb25fZXJyb3Jf bnVsbCBGUk9NIFNURElOIFdJVEggKG9uX2Vycm9yIHNldF9udWxsKTsKK3NzCTExCTE0CitcLgor CistLWZhaWwsIGNvbHVtbiBhIGNhbm5vdCBzZXQgdG8gbnVsbCB2YWx1ZQorQ09QWSB0X29uX2Vy cm9yX251bGwgRlJPTSBTVERJTiBXSVRIIChvbl9lcnJvciBzZXRfbnVsbCk7CistMQkxMQkxMwor XC4KKworLS1mYWlsLiBsZXNzIGRhdGEKK0NPUFkgdF9vbl9lcnJvcl9udWxsIEZST00gU1RESU4g V0lUSCAoZGVsaW1pdGVyICcsJywgb25fZXJyb3Igc2V0X251bGwpOworMSwxCitcLgorLS1mYWls LiBleHRyYSBkYXRhCitDT1BZIHRfb25fZXJyb3JfbnVsbCBGUk9NIFNURElOIFdJVEggKGRlbGlt aXRlciAnLCcsIG9uX2Vycm9yIHNldF9udWxsKTsKKzEsMiwzLDQKK1wuCisKKy0tb2sKK0NPUFkg dF9vbl9lcnJvcl9udWxsIEZST00gU1RESU4gV0lUSCAob25fZXJyb3Igc2V0X251bGwsIGxvZ192 ZXJib3NpdHkgdmVyYm9zZSk7CisxMAl4MQl5eAorMTEJengJMTIKKzEzCTE0CWVhCitcLgorCist LSBjaGVjayBpbnNlcnRlZCBjb250ZW50CitzZWxlY3QgKiBmcm9tIHRfb25fZXJyb3JfbnVsbDsK K1xwc2V0IG51bGwgJycKIC0tIHRlc3RzIGZvciBvbl9lcnJvciBvcHRpb24gd2l0aCBsb2dfdmVy Ym9zaXR5IGFuZCBudWxsIGNvbnN0cmFpbnQgdmlhIGRvbWFpbgogQ1JFQVRFIERPTUFJTiBkY2hl Y2tfaWduX2VycjIgdmFyY2hhcigxNSkgTk9UIE5VTEw7CiBDUkVBVEUgVEFCTEUgY2hlY2tfaWdu X2VycjIgKG4gaW50LCBtIGludFtdLCBrIGludCwgbCBkY2hlY2tfaWduX2VycjIpOwpAQCAtNjAz LDYgKzY0Niw5IEBAIERST1AgVklFVyBpbnN0ZWFkX29mX2luc2VydF90YmxfdmlldzsKIERST1Ag VklFVyBpbnN0ZWFkX29mX2luc2VydF90Ymxfdmlld18yOwogRFJPUCBGVU5DVElPTiBmdW5faW5z dGVhZF9vZl9pbnNlcnRfdGJsKCk7CiBEUk9QIFRBQkxFIGNoZWNrX2lnbl9lcnI7CitEUk9QIFRB QkxFIHRfb25fZXJyb3JfbnVsbDsKK0RST1AgRE9NQUlOIGRfaW50X25vdF9udWxsOworRFJPUCBE T01BSU4gZF9pbnRfcG9zaXRpdmVfbWF5YmVfbnVsbDsKIERST1AgVEFCTEUgY2hlY2tfaWduX2Vy cjI7CiBEUk9QIERPTUFJTiBkY2hlY2tfaWduX2VycjI7CiBEUk9QIFRBQkxFIGhhcmRfZXJyOwot LSAKMi4zNC4xCgo= --000000000000bf4b060632422bf1--