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 1qyeCU-009w7j-1d for pgsql-hackers@arkaria.postgresql.org; Thu, 02 Nov 2023 20:21:59 +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 1qyeCS-00FRd2-Jm for pgsql-hackers@arkaria.postgresql.org; Thu, 02 Nov 2023 20:21:56 +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 1qyeCR-00FRcu-Ju for pgsql-hackers@lists.postgresql.org; Thu, 02 Nov 2023 20:21:56 +0000 Received: from mail-pl1-x634.google.com ([2607:f8b0:4864:20::634]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1qyeCH-004NZ0-GF for pgsql-hackers@lists.postgresql.org; Thu, 02 Nov 2023 20:21:55 +0000 Received: by mail-pl1-x634.google.com with SMTP id d9443c01a7336-1cc131e52f1so20035355ad.0 for ; Thu, 02 Nov 2023 13:21:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=illuminatedcomputing-com.20230601.gappssmtp.com; s=20230601; t=1698956503; x=1699561303; darn=lists.postgresql.org; h=in-reply-to:from:references:cc:to:content-language:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=wDRT3olKnf6JGUM3kZ6lFrYkQTOE4nj3gzY9+BMYBEA=; b=V5XzWlFnB9uYAdtYfz1LxWQGjq+oaeOwy40RH98dRgoSaVRuD1isit0pThb4Qza87f o6PFLNfOBnwvWtg/UYTvoEK4b3TidsZGN8iuDlo3MvKKqWPmPN73qSYiPDlXSwNR6fWC IcpWZMyaVKXqxg1dT1zf34mW7/huQVzvp8NARVGGExMEire1gvga94FuP1wj9k3X/iy+ cCvEF4hgBRZg2Cl6e3gwtlt5+USQho8b9Jk4xaSk14wJAHKWv57PgPjG+OwjngRmn8Rr VIGsP1nTrPmrk7gUdGIGz4qUboC5EPnZPr9W9pMz/VWDIoG4STWOgeDcQtA8FigPEhzp Tb+Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1698956503; x=1699561303; h=in-reply-to:from:references:cc:to:content-language:subject :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=wDRT3olKnf6JGUM3kZ6lFrYkQTOE4nj3gzY9+BMYBEA=; b=AIo7CH2CE8AeJvGffirsT+puVdM/NJ8LP+Nxa4h0oMAAnuBbt9kuKsKyqHHYQFwOJ9 2X84E+/D+auPw0KmlPZcDJZuFV9qAA745CeU7wQOeJWd+S6jgZS8paS9D4167EX2DhwD a8Ll8N764ZG9ZlnhPmbE0MZlCfa1DkbmQrPVObfUBdqf+d0/XMuTnbcLEgxP846sDHEM bssw00XCAR+tCeXZr5TfkyPoH3UeCVuLK5KVpl3KZsZfL2Ucp8NJDCcLJt0T//ZWRmxE LDV2EQKKWXxdvmbZEa14KYZ9+fiwMlCy/NVlQzgpuh2ktk89PD+ccC4U1g5zvSBGhMgS APQg== X-Gm-Message-State: AOJu0Yw+F/q0xCj3r3Hp1i2/3BLNJbBZkmxboLdaOhtUqHUBo3kXt//n m2dt+hiavLRsK5KWCoG7YmzeRg== X-Google-Smtp-Source: AGHT+IFKV7dOtHCl3YtgWc2di5j+M2DEVYeI3uDM11GO+fpmtR5G9eREBFKZRh+5yHv1QpKkJtyWDw== X-Received: by 2002:a17:902:f7cb:b0:1bd:e258:a256 with SMTP id h11-20020a170902f7cb00b001bde258a256mr899987plw.32.1698956502267; Thu, 02 Nov 2023 13:21:42 -0700 (PDT) Received: from [192.168.2.139] ([50.53.98.191]) by smtp.googlemail.com with ESMTPSA id y6-20020a17090322c600b001cc55bcd0c3sm128991plg.47.2023.11.02.13.21.38 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 02 Nov 2023 13:21:40 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------ZGWE1dX84ltsryTlZEe40gG3" Message-ID: <2d9740ad-3bb7-473c-8441-344351caa8ee@illuminatedcomputing.com> Date: Thu, 2 Nov 2023 13:21:37 -0700 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: SQL:2011 application time Content-Language: en-US To: jian he Cc: PostgreSQL Hackers , Peter Eisentraut References: <5157e85a-6007-27a7-853a-5601d9c3722f@illuminatedcomputing.com> <5a16a59a-d497-7d72-07aa-0afc09d5193a@illuminatedcomputing.com> From: Paul Jungwirth In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------ZGWE1dX84ltsryTlZEe40gG3 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Thanks for all the feedback! Consolidating several emails below: > On Fri, Oct 20, 2023 at 5:45 AM jian he wrote: > I don't think we need to check attr->attisdropped here Changed. > "return *typnamespace;" should be "return true"? No, but I added a comment to clarify. > Maybe name it get_typname_and_typnamespace? I could go either way on this but I left it as-is since it seems redundant, and there are other functions here that don't repeat the three-letter prefix. > you can just `elog(ERROR, "missing range type %s", range_type_name);` ? No, because this failure happens trying to look up the name. > Also, this should be placed just below if (!type_is_range(attr->atttypid))? We ereport there (not elog) because it's a user error (using a non-rangetype for the option), not an internal error. > periods are always associated with the table, is the above else branch correct? True but I'm following the code just above for OCLASS_CONSTRAINT. Even if this case is unexpected, it seems better to handle it gracefully than have a harder failure. > XXX: Does this hold for periods? > Yes. we can add the following 2 sql for code coverage. > alter table pt add period for tableoid (ds, de); > alter table pt add period for "........pg.dropped.4........" (ds, de); Added, thanks! > On Sun, Oct 22, 2023 at 5:01 PM jian he wrote: > drop table if exists for_portion_of_test1; > CREATE unlogged TABLE for_portion_of_test1 (id int4range, valid_at > tsrange,name text ); > ... These are good tests, thanks! Originally FOR PORTION OF required a PRIMARY KEY or UNIQUE constraint, so we couldn't find NULLs here, but we changed that a while back, so it's good to verify it handles that case. > 1279: if (isNull) > 1280: elog(ERROR, "found a NULL range in a temporal table"); > 1281: oldRangeType = DatumGetRangeTypeP(oldRange); > > I wonder when this isNull will be invoked. The above tests won't > invoke the error. As far as I can tell it shouldn't happen, which is why it's elog. The new tests don't hit it because a NULL range should never match the range in the FROM+TO of the FOR PORTION OF clause. Maybe this should even be an assert, but I think I prefer elog for the nicer error message and less-local condition. > also the above test, NULL seems equivalent to unbounded. FOR PORTION > OF "from and "to" both bound should not be null? Correct, NULL and UNBOUNDED mean the same thing. This matches the meaning of NULL in ranges. > which means the following code does not work as intended? I also > cannot find a way to invoke the following elog error branch. > File:src/backend/executor/nodeModifyTable.c > 4458: exprState = ExecPrepareExpr((Expr *) forPortionOf->targetRange, estate); > 4459: targetRange = ExecEvalExpr(exprState, econtext, &isNull); > 4460: if (isNull) > 4461: elog(ERROR, "Got a NULL FOR PORTION OF target range"); Here we're checking the "target range", in other words the range built from the FROM+TO of the FOR PORTION OF clause---not a range from a tuple. Finding a NULL here *for the range itself* would indeed be an error. A NULL *bound* means "unbounded", but a NULL *range* should not be possible to construct. > I also made some changes in the function range_leftover_internal, I'm not really comfortable with these changes. "Leftover" doesn't refer to "left" vs "right" but to what *remains* (what is "left behind") after the UPDATE/DELETE. Also r1 and r2 are common parameter names throughout the rangetypes.c file, and they are more general than the names you've suggested. We shouldn't assume we will only ever call this function from the FOR PORTION OF context. > ExecForPortionOfLeftovers Thanks! I've made these code changes (with slight modifications, e.g. no need to call ExecFetchSlotHeapTuple if there are no leftovers). I'm not sure about the comment change though---I want to verify that myself (particularly the case when the partition key is updated so we have already been routed to a different partition than the old tuple). > On Tue, Oct 24, 2023 at 11:14 PM jian he wrote: > I refactored findNewOrOldColumn to better handle error reports. Thanks, I like your changes here. Applied with some small adjustments. > On Sat, Oct 28, 2023 at 1:26 AM jian he wrote: > I think it means, if the foreign key has PERIOD column[s], then the > PERIOD column[s] will not be set to NULL in {ON DELETE|ON UPDATE}. . . . I reworded this to explain that the PERIOD element will not be set to NULL (or the default value). > can you add the following for the sake of code coverage. I think > src/test/regress/sql/without_overlaps.sql can be simplified. > ... > call overlaps_template(); I'm not sure I want to add indirection like this to the tests, which I think makes them harder to read (and update). But there is indeed a tough combinatorial explosion, especially in the foreign key tests. We want to cover {ON DELETE,ON UPDATE} {NO ACTION,RESTRICT,CASCADE,SET NULL,SET DEFAULT} when {child inserts,child updates,parent updates,parent deletes} with {one,two} scalar columns and {,not} partitioned. Also ON DELETE SET {NULL,DEFAULT} against only a subset of columns. I updated the test cases to delete and re-use the same id values, so at least they are more isolated and thus easier to edit. I also added tests for `(parent_id1, parent2, PERIOD valid_at)` cases as well as `ON DELETE SET {NULL,DEFAULT} (parent_id1)`. (I think that last case covers what you are trying to do here, but if I misunderstood please let me know.) I haven't worked through your last email yet, but this seemed like enough changes to warrant an update. New patches attached (rebased to 0bc726d9). Yours, -- Paul ~{:-) pj@illuminatedcomputing.com --------------ZGWE1dX84ltsryTlZEe40gG3 Content-Type: text/x-patch; charset=UTF-8; name="v17-0001-Add-temporal-PRIMARY-KEY-and-UNIQUE-constraints.patch" Content-Disposition: attachment; filename*0="v17-0001-Add-temporal-PRIMARY-KEY-and-UNIQUE-constraints.pat"; filename*1="ch" Content-Transfer-Encoding: base64 RnJvbSBiODBmODE5YjlkMGIzOGFlOWQ4NGFkZTczMTM5NmUxODBlNzI3ZWNjIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IE1vbiwgMjggSnVuIDIwMjEgMTc6MzM6MjcgLTA3 MDAKU3ViamVjdDogW1BBVENIIHYxNyAxLzVdIEFkZCB0ZW1wb3JhbCBQUklNQVJZIEtFWSBh bmQgVU5JUVVFIGNvbnN0cmFpbnRzCgotIEFkZGVkIFdJVEhPVVQgT1ZFUkxBUFMgdG8gdGhl IGJpc29uIGdyYW1tYXIuIFdlIHBlcm1pdCBvbmx5IHJhbmdlCiAgY29sdW1ucywgbm90IHll dCBQRVJJT0RzICh3aGljaCB3ZSdsbCBhZGQgc29vbikuCi0gVGVtcG9yYWwgUFJJTUFSWSBL RVlzIGFuZCBVTklRVUUgY29uc3RyYWludHMgYXJlIGJhY2tlZCBieSBHaVNUCiAgaW5kZXhl cyBpbnN0ZWFkIG9mIEItdHJlZSBpbmRleGVzLCBzaW5jZSB0aGV5IGFyZSBlc3NlbnRpYWxs eQogIGV4Y2x1c2lvbiBjb25zdHJhaW50cyB3aXRoID0gZm9yIHRoZSBzY2FsYXIgcGFydHMg b2YgdGhlIGtleSBhbmQgJiYKICBmb3IgdGhlIHRlbXBvcmFsIHBhcnQuCi0gQWRkZWQgcGdf Y29uc3RyYWludC5jb250ZW1wb3JhbCB0byBzYXkgd2hldGhlciBhIGNvbnN0cmFpbnQgaXMg YQogIHRlbXBvcmFsIGNvbnN0cmFpbnQuCi0gQWRkZWQgZG9jcyBhbmQgdGVzdHMuCi0gQWRk ZWQgcGdfZHVtcCBzdXBwb3J0LgotLS0KIGRvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sICAg ICAgICAgICAgICAgICAgICB8ICAxMiArCiBkb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90YWJs ZS5zZ21sICAgICAgICAgICAgfCAgNDUgKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvaGVhcC5j ICAgICAgICAgICAgICAgICAgICB8ICAgMiArCiBzcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4 LmMgICAgICAgICAgICAgICAgICAgfCAgMTAgKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvcGdf Y29uc3RyYWludC5jICAgICAgICAgICB8ICAgMiArCiBzcmMvYmFja2VuZC9jb21tYW5kcy9p bmRleGNtZHMuYyAgICAgICAgICAgICAgfCAxNTUgKysrKysrLQogc3JjL2JhY2tlbmQvY29t bWFuZHMvdGFibGVjbWRzLmMgICAgICAgICAgICAgIHwgIDE0ICstCiBzcmMvYmFja2VuZC9j b21tYW5kcy90cmlnZ2VyLmMgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQv Y29tbWFuZHMvdHlwZWNtZHMuYyAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5k L3BhcnNlci9ncmFtLnkgICAgICAgICAgICAgICAgICAgICB8ICAzMCArLQogc3JjL2JhY2tl bmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYyAgICAgICAgICAgIHwgMTI1ICsrKysrLQogc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jICAgICAgICAgICAgIHwgIDI5ICstCiBz cmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jICAgICAgICAgICAgfCAgMTAgKy0K IHNyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgICAgICAgICAgICAgICAgICAgICB8ICAzNSAr LQogc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaCAgICAgICAgICAgICAgICAgICAgIHwgICAx ICsKIHNyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsICAgICAgICAgICAgICB8ICA0 NiArKysKIHNyYy9iaW4vcHNxbC9kZXNjcmliZS5jICAgICAgICAgICAgICAgICAgICAgICB8 ICAxMiArLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5oICAgICAgICAgICAgICAgICAg IHwgICAxICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfY29uc3RyYWludC5oICAgICAgICAg ICB8ICAgOSArLQogc3JjL2luY2x1ZGUvY29tbWFuZHMvZGVmcmVtLmggICAgICAgICAgICAg ICAgIHwgICAzICstCiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggICAgICAgICAg ICAgICAgfCAgIDQgKwogLi4uL3JlZ3Jlc3MvZXhwZWN0ZWQvd2l0aG91dF9vdmVybGFwcy5v dXQgICAgIHwgMzg2ICsrKysrKysrKysrKysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9wYXJh bGxlbF9zY2hlZHVsZSAgICAgICAgICAgIHwgICAyICstCiBzcmMvdGVzdC9yZWdyZXNzL3Nx bC93aXRob3V0X292ZXJsYXBzLnNxbCAgICAgfCAyODIgKysrKysrKysrKysrKwogMjQgZmls ZXMgY2hhbmdlZCwgMTE1NiBpbnNlcnRpb25zKCspLCA2MSBkZWxldGlvbnMoLSkKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3dpdGhvdXRfb3Zlcmxh cHMub3V0CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcmVncmVzcy9zcWwvd2l0aG91 dF9vdmVybGFwcy5zcWwKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dt bCBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCmluZGV4IDNlYzczOTFlYzUuLjU0MTJm MmRhYTAgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCisrKyBiL2Rv Yy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCkBAIC0yNzA5LDYgKzI3MDksMTggQEAgU0NSQU0t U0hBLTI1NiQ8cmVwbGFjZWFibGU+Jmx0O2l0ZXJhdGlvbiBjb3VudCZndDs8L3JlcGxhY2Vh YmxlPjo8cmVwbGFjZWFibGU+JmwKICAgICAgIDwvcGFyYT48L2VudHJ5PgogICAgICA8L3Jv dz4KIAorICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50 cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0Zmll bGQ+Y29udGVtcG9yYWw8L3N0cnVjdGZpZWxkPiA8dHlwZT5ib29sPC90eXBlPgorICAgICAg PC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgVGhpcyBjb25zdHJhaW50IGlzIGEgYXBw bGljYXRpb24tdGltZSB0ZW1wb3JhbCBjb25zdHJhaW50LAorICAgICAgIGRlZmluZWQgd2l0 aCA8bGl0ZXJhbD5XSVRIT1VUIE9WRVJMQVBTPC9saXRlcmFsPiAoZm9yIHByaW1hcnkKKyAg ICAgICBrZXkgYW5kIHVuaXF1ZSBjb25zdHJhaW50cykgb3IgPGxpdGVyYWw+UEVSSU9EPC9s aXRlcmFsPiAoZm9yCisgICAgICAgZm9yZWlnbiBrZXlzKS4KKyAgICAgIDwvcGFyYT48L2Vu dHJ5PgorICAgICA8L3Jvdz4KKwogICAgICA8cm93PgogICAgICAgPGVudHJ5IHJvbGU9ImNh dGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KICAg ICAgICA8c3RydWN0ZmllbGQ+Y29ua2V5PC9zdHJ1Y3RmaWVsZD4gPHR5cGU+aW50MltdPC90 eXBlPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFibGUuc2dtbCBi L2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3RhYmxlLnNnbWwKaW5kZXggZTA0YTA2OTJjNC4u YWQ1YmYyMTQ1MyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFibGUu c2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90YWJsZS5zZ21sCkBAIC03OCw4 ICs3OCw4IEBAIENSRUFURSBbIFsgR0xPQkFMIHwgTE9DQUwgXSB7IFRFTVBPUkFSWSB8IFRF TVAgfSB8IFVOTE9HR0VEIF0gVEFCTEUgWyBJRiBOT1QgRVhJCiBbIENPTlNUUkFJTlQgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbnN0cmFpbnRfbmFtZTwvcmVwbGFjZWFi bGU+IF0KIHsgQ0hFQ0sgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZXhwcmVz c2lvbjwvcmVwbGFjZWFibGU+ICkgWyBOTyBJTkhFUklUIF0gfAogICBOT1QgTlVMTCA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiBb IE5PIElOSEVSSVQgXSB8Ci0gIFVOSVFVRSBbIE5VTExTIFsgTk9UIF0gRElTVElOQ1QgXSAo IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFi bGU+IFssIC4uLiBdICkgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmluZGV4X3Bh cmFtZXRlcnM8L3JlcGxhY2VhYmxlPiB8Ci0gIFBSSU1BUlkgS0VZICggPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0g KSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+aW5kZXhfcGFyYW1ldGVyczwvcmVw bGFjZWFibGU+IHwKKyAgVU5JUVVFIFsgTlVMTFMgWyBOT1QgXSBESVNUSU5DVCBdICggPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4g WywgLi4uIF0gWywgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRlbXBvcmFsX2lu dGVydmFsPC9yZXBsYWNlYWJsZT4gV0lUSE9VVCBPVkVSTEFQUyBdICkgPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPmluZGV4X3BhcmFtZXRlcnM8L3JlcGxhY2VhYmxlPiB8Cisg IFBSSU1BUlkgS0VZICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9u YW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gWywgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPnRlbXBvcmFsX2ludGVydmFsPC9yZXBsYWNlYWJsZT4gV0lUSE9VVCBPVkVSTEFQ UyBdICkgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmluZGV4X3BhcmFtZXRlcnM8 L3JlcGxhY2VhYmxlPiB8CiAgIEVYQ0xVREUgWyBVU0lORyA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+aW5kZXhfbWV0aG9kPC9yZXBsYWNlYWJsZT4gXSAoIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5leGNsdWRlX2VsZW1lbnQ8L3JlcGxhY2VhYmxlPiBXSVRI IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5vcGVyYXRvcjwvcmVwbGFjZWFibGU+ IFssIC4uLiBdICkgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmluZGV4X3BhcmFt ZXRlcnM8L3JlcGxhY2VhYmxlPiBbIFdIRVJFICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPnByZWRpY2F0ZTwvcmVwbGFjZWFibGU+ICkgXSB8CiAgIEZPUkVJR04gS0VZICgg PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJs ZT4gWywgLi4uIF0gKSBSRUZFUkVOQ0VTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5yZWZ0YWJsZTwvcmVwbGFjZWFibGU+IFsgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+cmVmY29sdW1uPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gKSBdCiAgICAgWyBNQVRD SCBGVUxMIHwgTUFUQ0ggUEFSVElBTCB8IE1BVENIIFNJTVBMRSBdIFsgT04gREVMRVRFIDxy ZXBsYWNlYWJsZQpAQCAtMTA3LDYgKzEwNywxMCBAQCBXSVRIICggTU9EVUxVUyA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtZXJpY19saXRlcmFsPC9yZXBsYWNlYWJsZT4s IFJFTQogCiB7IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwv cmVwbGFjZWFibGU+IHwgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZXhwcmVz c2lvbjwvcmVwbGFjZWFibGU+ICkgfSBbIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5vcGNsYXNzPC9yZXBsYWNlYWJsZT4gXSBbIEFTQyB8IERFU0MgXSBbIE5VTExTIHsgRklS U1QgfCBMQVNUIH0gXQogCis8cGhyYXNlPjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij50ZW1wb3JhbF9pbnRlcnZhbDwvcmVwbGFjZWFibGU+IGluIGEgPGxpdGVyYWw+UFJJTUFS WSBLRVk8L2xpdGVyYWw+LCA8bGl0ZXJhbD5VTklRVUU8L2xpdGVyYWw+LCBvciA8bGl0ZXJh bD5GT1JFSUdOIEtFWTwvbGl0ZXJhbD4gY29uc3RyYWludCBpczo8L3BocmFzZT4KKworPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJhbmdlX2NvbHVtbl9uYW1lPC9yZXBsYWNl YWJsZT4KKwogPHBocmFzZT48cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVmZXJl bnRpYWxfYWN0aW9uPC9yZXBsYWNlYWJsZT4gaW4gYSA8bGl0ZXJhbD5GT1JFSUdOIEtFWTwv bGl0ZXJhbD4vPGxpdGVyYWw+UkVGRVJFTkNFUzwvbGl0ZXJhbD4gY29uc3RyYWludCBpczo8 L3BocmFzZT4KIAogeyBOTyBBQ1RJT04gfCBSRVNUUklDVCB8IENBU0NBREUgfCBTRVQgTlVM TCBbICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBs YWNlYWJsZT4gWywgLi4uIF0gKSBdIHwgU0VUIERFRkFVTFQgWyAoIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLiBdICkg XSB9CkBAIC0xMDAxLDcgKzEwMDUsMTAgQEAgV0lUSCAoIE1PRFVMVVMgPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPm51bWVyaWNfbGl0ZXJhbDwvcmVwbGFjZWFibGU+LCBSRU0K IAogICAgICA8cGFyYT4KICAgICAgIEFkZGluZyBhIHVuaXF1ZSBjb25zdHJhaW50IHdpbGwg YXV0b21hdGljYWxseSBjcmVhdGUgYSB1bmlxdWUgYnRyZWUKLSAgICAgIGluZGV4IG9uIHRo ZSBjb2x1bW4gb3IgZ3JvdXAgb2YgY29sdW1ucyB1c2VkIGluIHRoZSBjb25zdHJhaW50Lgor ICAgICAgaW5kZXggb24gdGhlIGNvbHVtbiBvciBncm91cCBvZiBjb2x1bW5zIHVzZWQgaW4g dGhlIGNvbnN0cmFpbnQuIEJ1dCBpZgorICAgICAgdGhlIGNvbnN0cmFpbnQgaW5jbHVkZXMg YSA8bGl0ZXJhbD5XSVRIT1VUIE9WRVJMQVBTPC9saXRlcmFsPiBjbGF1c2UsCisgICAgICBp dCB3aWxsIHVzZSBhIEdpU1QgaW5kZXggYW5kIGJlaGF2ZSBsaWtlIGEgdGVtcG9yYWwgPGxp dGVyYWw+UFJJTUFSWQorICAgICAgS0VZPC9saXRlcmFsPjogcHJldmVudGluZyBkdXBsaWNh dGVzIG9ubHkgaW4gb3ZlcmxhcHBpbmcgdGltZSBwZXJpb2RzLgogICAgICA8L3BhcmE+CiAK ICAgICAgPHBhcmE+CkBAIC0xMDE5LDcgKzEwMjYsOCBAQCBXSVRIICggTU9EVUxVUyA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtZXJpY19saXRlcmFsPC9yZXBsYWNlYWJs ZT4sIFJFTQogCiAgICA8dmFybGlzdGVudHJ5IGlkPSJzcWwtY3JlYXRldGFibGUtcGFybXMt cHJpbWFyeS1rZXkiPgogICAgIDx0ZXJtPjxsaXRlcmFsPlBSSU1BUlkgS0VZPC9saXRlcmFs PiAoY29sdW1uIGNvbnN0cmFpbnQpPC90ZXJtPgotICAgIDx0ZXJtPjxsaXRlcmFsPlBSSU1B UlkgS0VZICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9y ZXBsYWNlYWJsZT4gWywgLi4uIF0gKTwvbGl0ZXJhbD4KKyAgICA8dGVybT48bGl0ZXJhbD5Q UklNQVJZIEtFWSAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFt ZTwvcmVwbGFjZWFibGU+IFssIC4uLiBdCisgICAgWywgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnRlbXBvcmFsX2ludGVydmFsPC9yZXBsYWNlYWJsZT4gV0lUSE9VVCBPVkVS TEFQUyBdICk8L2xpdGVyYWw+CiAgICAgPG9wdGlvbmFsPiA8bGl0ZXJhbD5JTkNMVURFICgg PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJs ZT4gWywgLi4uXSk8L2xpdGVyYWw+IDwvb3B0aW9uYWw+ICh0YWJsZSBjb25zdHJhaW50KTwv dGVybT4KICAgICA8bGlzdGl0ZW0+CiAgICAgIDxwYXJhPgpAQCAtMTA1Myw4ICsxMDYxLDgg QEAgV0lUSCAoIE1PRFVMVVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bWVy aWNfbGl0ZXJhbDwvcmVwbGFjZWFibGU+LCBSRU0KIAogICAgICA8cGFyYT4KICAgICAgIEFk ZGluZyBhIDxsaXRlcmFsPlBSSU1BUlkgS0VZPC9saXRlcmFsPiBjb25zdHJhaW50IHdpbGwg YXV0b21hdGljYWxseQotICAgICAgY3JlYXRlIGEgdW5pcXVlIGJ0cmVlIGluZGV4IG9uIHRo ZSBjb2x1bW4gb3IgZ3JvdXAgb2YgY29sdW1ucyB1c2VkIGluIHRoZQotICAgICAgY29uc3Ry YWludC4KKyAgICAgIGNyZWF0ZSBhIHVuaXF1ZSBidHJlZSBpbmRleCAob3IgR2lTVCBpZiB0 ZW1wb3JhbCkgb24gdGhlIGNvbHVtbiBvciBncm91cCBvZgorICAgICAgY29sdW1ucyB1c2Vk IGluIHRoZSBjb25zdHJhaW50LgogICAgICA8L3BhcmE+CiAKICAgICAgPHBhcmE+CkBAIC0x MDY3LDYgKzEwNzUsMzEgQEAgV0lUSCAoIE1PRFVMVVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPm51bWVyaWNfbGl0ZXJhbDwvcmVwbGFjZWFibGU+LCBSRU0KICAgICAgIChl LmcuLCA8bGl0ZXJhbD5EUk9QIENPTFVNTjwvbGl0ZXJhbD4pIGNhbiBjYXVzZSBjYXNjYWRl ZCBjb25zdHJhaW50IGFuZAogICAgICAgaW5kZXggZGVsZXRpb24uCiAgICAgIDwvcGFyYT4K KworICAgICA8cGFyYT4KKyAgICAgIEEgPGxpdGVyYWw+UFJJTUFSWSBLRVk8L2xpdGVyYWw+ IHdpdGggYSA8bGl0ZXJhbD5XSVRIT1VUIE9WRVJMQVBTPC9saXRlcmFsPiBvcHRpb24KKyAg ICAgIGlzIGEgPGVtcGhhc2lzPnRlbXBvcmFsPC9lbXBoYXNpcz4gcHJpbWFyeSBrZXkuCisg ICAgICBUaGUgPGxpdGVyYWw+V0lUSE9VVCBPVkVSTEFQUzwvbGl0ZXJhbD4gY29sdW1uCisg ICAgICBtdXN0IGJlIGEgcmFuZ2UgdHlwZSBvciBhIDxsaXRlcmFsPlBFUklPRDwvbGl0ZXJh bD4KKyAgICAgIGFuZCBpcyB1c2VkIHRvIGNvbnN0cmFpbiB0aGUgcmVjb3JkJ3MgYXBwbGlj YWJpbGl0eQorICAgICAgdG8ganVzdCB0aGF0IHJhbmdlL3BlcmlvZCAodXN1YWxseSBhIHJh bmdlIG9mIGRhdGVzIG9yIHRpbWVzdGFtcHMsCisgICAgICBhbHRob3VnaCBQb3N0Z3JlcyBh bGxvd3MgYSByYW5nZS9wZXJpb2Qgb3ZlciBhbnkgYmFzZSB0eXBlKS4KKyAgICAgPC9wYXJh PgorCisgICAgIDxwYXJhPgorICAgICAgVGhlIG5vbi08bGl0ZXJhbD5XSVRIT1VUIE9WRVJM QVBTPC9saXRlcmFsPiBwYXJ0KHMpIG9mIHRoZSBrZXkgY2FuIGJlIGFueQorICAgICAgdHlw ZSB0aGF0IGNhbiBiZSBjb21wYXJlZCBmb3IgZXF1YWxpdHkgaW4gYSBHaVNUIGluZGV4LiBC eSBkZWZhdWx0CisgICAgICBvbmx5IHJhbmdlIHR5cGVzIGFyZSBzdXBwb3J0ZWQsIGJ1dCB5 b3UgY2FuIHVzZSBvdGhlciB0eXBlcyBieQorICAgICAgYWRkaW5nIHRoZSA8eHJlZiBsaW5r ZW5kPSJidHJlZS1naXN0Ii8+IGV4dGVuc2lvbgorICAgICAgKHdoaWNoIGlzIHRoZSBleHBl Y3RlZCB3YXkgdG8gdXNlIHRoaXMgZmVhdHVyZSkuCisgICAgICBUaGVzZSBvcmRpbmFyeSBw YXJ0cyBvZiB0aGUgcHJpbWFyeSBrZXkgZG8gYWxsb3cgZHVwbGljYXRlcywKKyAgICAgIHNv IGxvbmcgYXMgdGhlIGR1cGxpY2F0ZXMgZG9uJ3Qgb3ZlcmxhcCBpbiB0aGUKKyAgICAgIDxs aXRlcmFsPldJVEhPVVQgT1ZFUkxBUFM8L2xpdGVyYWw+IGNvbHVtbi4KKyAgICAgIEluIGVm ZmVjdCBhIHRlbXBvcmFsIDxsaXRlcmFsPlBSSU1BUlkgS0VZPC9saXRlcmFsPiBpcyBlbmZv cmNlZCB3aXRoIGFuCisgICAgICA8bGl0ZXJhbD5FWENMVURFPC9saXRlcmFsPiBjb25zdHJh aW50IHJhdGhlciB0aGFuIGEgPGxpdGVyYWw+VU5JUVVFPC9saXRlcmFsPgorICAgICAgY29u c3RyYWludC4gU28gZm9yIGV4YW1wbGUgPGxpdGVyYWw+UFJJTUFSWSBLRVkgKGlkLCB2YWxp ZF9hdCBXSVRIT1VUIE9WRVJMQVBTKTwvbGl0ZXJhbD4KKyAgICAgIGJlaGF2ZXMgbGlrZSA8 bGl0ZXJhbD5FWENMVURFIFVTSU5HIEdJU1QgKGlkIFdJVEggPSwgdmFsaWRfYXQgV0lUSCAm YW1wOyZhbXA7KTwvbGl0ZXJhbD4uCisgICAgIDwvcGFyYT4KICAgICA8L2xpc3RpdGVtPgog ICAgPC92YXJsaXN0ZW50cnk+CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cv aGVhcC5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9oZWFwLmMKaW5kZXggZDAzYzk2MTY3OC4u M2U5Y2M0YmIxMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9oZWFwLmMKKysr IGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9oZWFwLmMKQEAgLTIxNDAsNiArMjE0MCw3IEBAIFN0 b3JlUmVsQ2hlY2soUmVsYXRpb24gcmVsLCBjb25zdCBjaGFyICpjY25hbWUsIE5vZGUgKmV4 cHIsCiAJCQkJCQkJICBpc19sb2NhbCwgLyogY29uaXNsb2NhbCAqLwogCQkJCQkJCSAgaW5o Y291bnQsIC8qIGNvbmluaGNvdW50ICovCiAJCQkJCQkJICBpc19ub19pbmhlcml0LAkvKiBj b25ub2luaGVyaXQgKi8KKwkJCQkJCQkgIGZhbHNlLAkvKiBjb250ZW1wb3JhbCAqLwogCQkJ CQkJCSAgaXNfaW50ZXJuYWwpOyAvKiBpbnRlcm5hbGx5IGNvbnN0cnVjdGVkPyAqLwogCiAJ cGZyZWUoY2NiaW4pOwpAQCAtMjE5MCw2ICsyMTkxLDcgQEAgU3RvcmVSZWxOb3ROdWxsKFJl bGF0aW9uIHJlbCwgY29uc3QgY2hhciAqbm5uYW1lLCBBdHRyTnVtYmVyIGF0dG51bSwKIAkJ CQkJCQkgIGlzX2xvY2FsLAogCQkJCQkJCSAgaW5oY291bnQsCiAJCQkJCQkJICBpc19ub19p bmhlcml0LAorCQkJCQkJCSAgZmFsc2UsCS8qIGNvbnRlbXBvcmFsICovCiAJCQkJCQkJICBm YWxzZSk7CiAJcmV0dXJuIGNvbnN0ck9pZDsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2NhdGFsb2cvaW5kZXguYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwppbmRleCAx NDNmYWUwMWViLi4yZjFlYzNiMGFjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9n L2luZGV4LmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCkBAIC0yNTQsOCAr MjU0LDggQEAgaW5kZXhfY2hlY2tfcHJpbWFyeV9rZXkoUmVsYXRpb24gaGVhcFJlbCwKIAkJ CQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAogCQkJCQkgZXJy bXNnKCJwcmltYXJ5IGtleXMgY2Fubm90IGJlIGV4cHJlc3Npb25zIikpKTsKIAotCQkvKiBT eXN0ZW0gYXR0cmlidXRlcyBhcmUgbmV2ZXIgbnVsbCwgc28gbm8gbmVlZCB0byBjaGVjayAq LwotCQlpZiAoYXR0bnVtIDwgMCkKKwkJLyogU3lzdGVtIGF0dHJpYnV0ZXMgYXJlIG5ldmVy IG51bGwsIHNvIG5vIG5lZWQgdG8gY2hlY2suICovCisJCWlmIChhdHRudW0gPD0gMCkKIAkJ CWNvbnRpbnVlOwogCiAJCWF0dHR1cGxlID0gU2VhcmNoU3lzQ2FjaGUyKEFUVE5VTSwKQEAg LTEzMjYsNyArMTMyNiw3IEBAIGluZGV4X2NvbmN1cnJlbnRseV9jcmVhdGVfY29weShSZWxh dGlvbiBoZWFwUmVsYXRpb24sIE9pZCBvbGRJbmRleElkLAogCQkJCQkJCQkJCQlBbnVtX3Bn X2luZGV4X2luZG9wdGlvbik7CiAJaW5kY29sb3B0aW9ucyA9IChpbnQydmVjdG9yICopIERh dHVtR2V0UG9pbnRlcihjb2xPcHRpb25EYXR1bSk7CiAKLQkvKiBGZXRjaCByZWxvcHRpb25z IG9mIGluZGV4IGlmIGFueSAqLworCS8qIEZldGNoIG9wdGlvbnMgb2YgaW5kZXggaWYgYW55 ICovCiAJY2xhc3NUdXBsZSA9IFNlYXJjaFN5c0NhY2hlMShSRUxPSUQsIE9iamVjdElkR2V0 RGF0dW0ob2xkSW5kZXhJZCkpOwogCWlmICghSGVhcFR1cGxlSXNWYWxpZChjbGFzc1R1cGxl KSkKIAkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHJlbGF0aW9uICV1 Iiwgb2xkSW5kZXhJZCk7CkBAIC0xODk1LDYgKzE4OTUsNyBAQCBpbmRleF9jb25jdXJyZW50 bHlfc2V0X2RlYWQoT2lkIGhlYXBJZCwgT2lkIGluZGV4SWQpCiAgKgkJSU5ERVhfQ09OU1RS X0NSRUFURV9VUERBVEVfSU5ERVg6IHVwZGF0ZSB0aGUgcGdfaW5kZXggcm93CiAgKgkJSU5E RVhfQ09OU1RSX0NSRUFURV9SRU1PVkVfT0xEX0RFUFM6IHJlbW92ZSBleGlzdGluZyBkZXBl bmRlbmNpZXMKICAqCQkJb2YgaW5kZXggb24gdGFibGUncyBjb2x1bW5zCisgKgkJSU5ERVhf Q09OU1RSX0NSRUFURV9URU1QT1JBTDogY29uc3RyYWludCBpcyBmb3IgYSB0ZW1wb3JhbCBw cmltYXJ5IGtleQogICogYWxsb3dfc3lzdGVtX3RhYmxlX21vZHM6IGFsbG93IHRhYmxlIHRv IGJlIGEgc3lzdGVtIGNhdGFsb2cKICAqIGlzX2ludGVybmFsOiBpbmRleCBpcyBjb25zdHJ1 Y3RlZCBkdWUgdG8gaW50ZXJuYWwgcHJvY2VzcwogICovCkBAIC0xOTE4LDExICsxOTE5LDEz IEBAIGluZGV4X2NvbnN0cmFpbnRfY3JlYXRlKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAli b29sCQltYXJrX2FzX3ByaW1hcnk7CiAJYm9vbAkJaXNsb2NhbDsKIAlib29sCQlub2luaGVy aXQ7CisJYm9vbAkJaXNfdGVtcG9yYWw7CiAJaW50CQkJaW5oY291bnQ7CiAKIAlkZWZlcnJh YmxlID0gKGNvbnN0cl9mbGFncyAmIElOREVYX0NPTlNUUl9DUkVBVEVfREVGRVJSQUJMRSkg IT0gMDsKIAlpbml0ZGVmZXJyZWQgPSAoY29uc3RyX2ZsYWdzICYgSU5ERVhfQ09OU1RSX0NS RUFURV9JTklUX0RFRkVSUkVEKSAhPSAwOwogCW1hcmtfYXNfcHJpbWFyeSA9IChjb25zdHJf ZmxhZ3MgJiBJTkRFWF9DT05TVFJfQ1JFQVRFX01BUktfQVNfUFJJTUFSWSkgIT0gMDsKKwlp c190ZW1wb3JhbCA9IChjb25zdHJfZmxhZ3MgJiBJTkRFWF9DT05TVFJfQ1JFQVRFX1RFTVBP UkFMKSAhPSAwOwogCiAJLyogY29uc3RyYWludCBjcmVhdGlvbiBzdXBwb3J0IGRvZXNuJ3Qg d29yayB3aGlsZSBib290c3RyYXBwaW5nICovCiAJQXNzZXJ0KCFJc0Jvb3RzdHJhcFByb2Nl c3NpbmdNb2RlKCkpOwpAQCAtMTk5OSw2ICsyMDAyLDcgQEAgaW5kZXhfY29uc3RyYWludF9j cmVhdGUoUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCQkJCQkJCQkgICBpc2xvY2FsLAogCQkJ CQkJCQkgICBpbmhjb3VudCwKIAkJCQkJCQkJICAgbm9pbmhlcml0LAorCQkJCQkJCQkgICBp c190ZW1wb3JhbCwJLyogY29udGVtcG9yYWwgKi8KIAkJCQkJCQkJICAgaXNfaW50ZXJuYWwp OwogCiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfY29uc3RyYWlu dC5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19jb25zdHJhaW50LmMKaW5kZXggZTlkNGQ2 MDA2ZS4uZDUzMjljYThjOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19j b25zdHJhaW50LmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19jb25zdHJhaW50LmMK QEAgLTc4LDYgKzc4LDcgQEAgQ3JlYXRlQ29uc3RyYWludEVudHJ5KGNvbnN0IGNoYXIgKmNv bnN0cmFpbnROYW1lLAogCQkJCQkgIGJvb2wgY29uSXNMb2NhbCwKIAkJCQkJICBpbnQgY29u SW5oQ291bnQsCiAJCQkJCSAgYm9vbCBjb25Ob0luaGVyaXQsCisJCQkJCSAgYm9vbCBjb25U ZW1wb3JhbCwKIAkJCQkJICBib29sIGlzX2ludGVybmFsKQogewogCVJlbGF0aW9uCWNvbkRl c2M7CkBAIC0xOTMsNiArMTk0LDcgQEAgQ3JlYXRlQ29uc3RyYWludEVudHJ5KGNvbnN0IGNo YXIgKmNvbnN0cmFpbnROYW1lLAogCXZhbHVlc1tBbnVtX3BnX2NvbnN0cmFpbnRfY29uaXNs b2NhbCAtIDFdID0gQm9vbEdldERhdHVtKGNvbklzTG9jYWwpOwogCXZhbHVlc1tBbnVtX3Bn X2NvbnN0cmFpbnRfY29uaW5oY291bnQgLSAxXSA9IEludDE2R2V0RGF0dW0oY29uSW5oQ291 bnQpOwogCXZhbHVlc1tBbnVtX3BnX2NvbnN0cmFpbnRfY29ubm9pbmhlcml0IC0gMV0gPSBC b29sR2V0RGF0dW0oY29uTm9Jbmhlcml0KTsKKwl2YWx1ZXNbQW51bV9wZ19jb25zdHJhaW50 X2NvbnRlbXBvcmFsIC0gMV0gPSBCb29sR2V0RGF0dW0oY29uVGVtcG9yYWwpOwogCiAJaWYg KGNvbmtleUFycmF5KQogCQl2YWx1ZXNbQW51bV9wZ19jb25zdHJhaW50X2NvbmtleSAtIDFd ID0gUG9pbnRlckdldERhdHVtKGNvbmtleUFycmF5KTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhj bWRzLmMKaW5kZXggYzE2MGQ4YTMwMS4uZTlkMWIxNzkzNSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv aW5kZXhjbWRzLmMKQEAgLTczLDYgKzczLDExIEBACiAvKiBub24tZXhwb3J0IGZ1bmN0aW9u IHByb3RvdHlwZXMgKi8KIHN0YXRpYyBib29sIENvbXBhcmVPcGNsYXNzT3B0aW9ucyhjb25z dCBEYXR1bSAqb3B0czEsIGNvbnN0IERhdHVtICpvcHRzMiwgaW50IG5hdHRzKTsKIHN0YXRp YyB2b2lkIENoZWNrUHJlZGljYXRlKEV4cHIgKnByZWRpY2F0ZSk7CitzdGF0aWMgdm9pZCBn ZXRfaW5kZXhfYXR0cl90ZW1wb3JhbF9vcGVyYXRvcihPaWQgb3BjbGFzcywKKwkJCQkJCQkJ CQkJIE9pZCBhdHR0eXBlLAorCQkJCQkJCQkJCQkgYm9vbCBpc292ZXJsYXBzLAorCQkJCQkJ CQkJCQkgT2lkICpvcGlkLAorCQkJCQkJCQkJCQkgaW50ICpzdHJhdCk7CiBzdGF0aWMgdm9p ZCBDb21wdXRlSW5kZXhBdHRycyhJbmRleEluZm8gKmluZGV4SW5mbywKIAkJCQkJCQkgIE9p ZCAqdHlwZU9pZHMsCiAJCQkJCQkJICBPaWQgKmNvbGxhdGlvbk9pZHMsCkBAIC04Niw2ICs5 MSw3IEBAIHN0YXRpYyB2b2lkIENvbXB1dGVJbmRleEF0dHJzKEluZGV4SW5mbyAqaW5kZXhJ bmZvLAogCQkJCQkJCSAgT2lkIGFjY2Vzc01ldGhvZElkLAogCQkJCQkJCSAgYm9vbCBhbWNh bm9yZGVyLAogCQkJCQkJCSAgYm9vbCBpc2NvbnN0cmFpbnQsCisJCQkJCQkJICBib29sIGlz dGVtcG9yYWwsCiAJCQkJCQkJICBPaWQgZGRsX3VzZXJpZCwKIAkJCQkJCQkgIGludCBkZGxf c2VjX2NvbnRleHQsCiAJCQkJCQkJICBpbnQgKmRkbF9zYXZlX25lc3RsZXZlbCk7CkBAIC0x NDMsNiArMTQ5LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUmVpbmRleEVycm9ySW5mbwogICoJCXRv IGluZGV4IG9uLgogICogJ2V4Y2x1c2lvbk9wTmFtZXMnOiBsaXN0IG9mIG5hbWVzIG9mIGV4 Y2x1c2lvbi1jb25zdHJhaW50IG9wZXJhdG9ycywKICAqCQlvciBOSUwgaWYgbm90IGFuIGV4 Y2x1c2lvbiBjb25zdHJhaW50LgorICogJ2lzdGVtcG9yYWwnOiB0cnVlIGlmZiB0aGlzIGlu ZGV4IGhhcyBhIFdJVEhPVVQgT1ZFUkxBUFMgY2xhdXNlLgogICoKICAqIFRoaXMgaXMgdGFp bG9yZWQgdG8gdGhlIG5lZWRzIG9mIEFMVEVSIFRBQkxFIEFMVEVSIFRZUEUsIHdoaWNoIHJl Y3JlYXRlcwogICogYW55IGluZGV4ZXMgdGhhdCBkZXBlbmRlZCBvbiBhIGNoYW5naW5nIGNv bHVtbiBmcm9tIHRoZWlyIHBnX2dldF9pbmRleGRlZgpAQCAtMTcyLDcgKzE3OSw4IEBAIGJv b2wKIENoZWNrSW5kZXhDb21wYXRpYmxlKE9pZCBvbGRJZCwKIAkJCQkJIGNvbnN0IGNoYXIg KmFjY2Vzc01ldGhvZE5hbWUsCiAJCQkJCSBjb25zdCBMaXN0ICphdHRyaWJ1dGVMaXN0LAot CQkJCQkgY29uc3QgTGlzdCAqZXhjbHVzaW9uT3BOYW1lcykKKwkJCQkJIGNvbnN0IExpc3Qg KmV4Y2x1c2lvbk9wTmFtZXMsCisJCQkJCSBib29sIGlzdGVtcG9yYWwpCiB7CiAJYm9vbAkJ aXNjb25zdHJhaW50OwogCU9pZAkJICAgKnR5cGVJZHM7CkBAIC0yNDcsOCArMjU1LDggQEAg Q2hlY2tJbmRleENvbXBhdGlibGUoT2lkIG9sZElkLAogCQkJCQkgIGNvbG9wdGlvbnMsIGF0 dHJpYnV0ZUxpc3QsCiAJCQkJCSAgZXhjbHVzaW9uT3BOYW1lcywgcmVsYXRpb25JZCwKIAkJ CQkJICBhY2Nlc3NNZXRob2ROYW1lLCBhY2Nlc3NNZXRob2RJZCwKLQkJCQkJICBhbWNhbm9y ZGVyLCBpc2NvbnN0cmFpbnQsIEludmFsaWRPaWQsIDAsIE5VTEwpOwotCisJCQkJCSAgYW1j YW5vcmRlciwgaXNjb25zdHJhaW50LCBpc3RlbXBvcmFsLCBJbnZhbGlkT2lkLAorCQkJCQkg IDAsIE5VTEwpOwogCiAJLyogR2V0IHRoZSBzb29uLW9ic29sZXRlIHBnX2luZGV4IHR1cGxl LiAqLwogCXR1cGxlID0gU2VhcmNoU3lzQ2FjaGUxKElOREVYUkVMSUQsIE9iamVjdElkR2V0 RGF0dW0ob2xkSWQpKTsKQEAgLTU1OCw2ICs1NjYsNyBAQCBEZWZpbmVJbmRleChPaWQgdGFi bGVJZCwKIAlib29sCQlhbWNhbm9yZGVyOwogCWJvb2wJCWFtaXNzdW1tYXJpemluZzsKIAlh bW9wdGlvbnNfZnVuY3Rpb24gYW1vcHRpb25zOworCWJvb2wJCWV4Y2x1c2lvbjsKIAlib29s CQlwYXJ0aXRpb25lZDsKIAlib29sCQlzYWZlX2luZGV4OwogCURhdHVtCQlyZWxvcHRpb25z OwpAQCAtNjc2LDYgKzY4NSwxMiBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAogCW5h bWVzcGFjZUlkID0gUmVsYXRpb25HZXROYW1lc3BhY2UocmVsKTsKIAorCS8qCisJICogSXQg aGFzIGV4Y2x1c2lvbiBjb25zdHJhaW50IGJlaGF2aW9yIGlmIGl0J3MgYW4gRVhDTFVERSBj b25zdHJhaW50CisJICogb3IgYSB0ZW1wb3JhbCBQUklNQVJZIEtFWS9VTklRVUUgY29uc3Ry YWludAorCSAqLworCWV4Y2x1c2lvbiA9IHN0bXQtPmV4Y2x1ZGVPcE5hbWVzIHx8IHN0bXQt PmlzdGVtcG9yYWw7CisKIAkvKiBFbnN1cmUgdGhhdCBpdCBtYWtlcyBzZW5zZSB0byBpbmRl eCB0aGlzIGtpbmQgb2YgcmVsYXRpb24gKi8KIAlzd2l0Y2ggKHJlbC0+cmRfcmVsLT5yZWxr aW5kKQogCXsKQEAgLTg0NCw3ICs4NTksNyBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwK IAlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NSRUFURUlEWF9BQ0NF U1NfTUVUSE9EX09JRCwKIAkJCQkJCQkJIGFjY2Vzc01ldGhvZElkKTsKIAotCWlmIChzdG10 LT51bmlxdWUgJiYgIWFtUm91dGluZS0+YW1jYW51bmlxdWUpCisJaWYgKHN0bXQtPnVuaXF1 ZSAmJiAhc3RtdC0+aXN0ZW1wb3JhbCAmJiAhYW1Sb3V0aW5lLT5hbWNhbnVuaXF1ZSkKIAkJ ZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBP UlRFRCksCiAJCQkJIGVycm1zZygiYWNjZXNzIG1ldGhvZCBcIiVzXCIgZG9lcyBub3Qgc3Vw cG9ydCB1bmlxdWUgaW5kZXhlcyIsCkBAIC04NTksNyArODc0LDcgQEAgRGVmaW5lSW5kZXgo T2lkIHRhYmxlSWQsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JU RUQpLAogCQkJCSBlcnJtc2coImFjY2VzcyBtZXRob2QgXCIlc1wiIGRvZXMgbm90IHN1cHBv cnQgbXVsdGljb2x1bW4gaW5kZXhlcyIsCiAJCQkJCQlhY2Nlc3NNZXRob2ROYW1lKSkpOwot CWlmIChzdG10LT5leGNsdWRlT3BOYW1lcyAmJiBhbVJvdXRpbmUtPmFtZ2V0dHVwbGUgPT0g TlVMTCkKKwlpZiAoZXhjbHVzaW9uICYmIGFtUm91dGluZS0+YW1nZXR0dXBsZSA9PSBOVUxM KQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1Rf U1VQUE9SVEVEKSwKIAkJCQkgZXJybXNnKCJhY2Nlc3MgbWV0aG9kIFwiJXNcIiBkb2VzIG5v dCBzdXBwb3J0IGV4Y2x1c2lvbiBjb25zdHJhaW50cyIsCkBAIC05MTIsOCArOTI3LDkgQEAg RGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJCQkJCSAgY29sb3B0aW9ucywgYWxsSW5kZXhQ YXJhbXMsCiAJCQkJCSAgc3RtdC0+ZXhjbHVkZU9wTmFtZXMsIHRhYmxlSWQsCiAJCQkJCSAg YWNjZXNzTWV0aG9kTmFtZSwgYWNjZXNzTWV0aG9kSWQsCi0JCQkJCSAgYW1jYW5vcmRlciwg c3RtdC0+aXNjb25zdHJhaW50LCByb290X3NhdmVfdXNlcmlkLAotCQkJCQkgIHJvb3Rfc2F2 ZV9zZWNfY29udGV4dCwgJnJvb3Rfc2F2ZV9uZXN0bGV2ZWwpOworCQkJCQkgIGFtY2Fub3Jk ZXIsIHN0bXQtPmlzY29uc3RyYWludCwgc3RtdC0+aXN0ZW1wb3JhbCwKKwkJCQkJICByb290 X3NhdmVfdXNlcmlkLCByb290X3NhdmVfc2VjX2NvbnRleHQsCisJCQkJCSAgJnJvb3Rfc2F2 ZV9uZXN0bGV2ZWwpOwogCiAJLyoKIAkgKiBFeHRyYSBjaGVja3Mgd2hlbiBjcmVhdGluZyBh IFBSSU1BUlkgS0VZIGluZGV4LgpAQCAtOTMxLDcgKzk0Nyw3IEBAIERlZmluZUluZGV4KE9p ZCB0YWJsZUlkLAogCSAqIFdlIGNvdWxkIGxpZnQgdGhpcyBsaW1pdGF0aW9uIGlmIHdlIGhh ZCBnbG9iYWwgaW5kZXhlcywgYnV0IHRob3NlIGhhdmUKIAkgKiB0aGVpciBvd24gcHJvYmxl bXMsIHNvIHRoaXMgaXMgYSB1c2VmdWwgZmVhdHVyZSBjb21iaW5hdGlvbi4KIAkgKi8KLQlp ZiAocGFydGl0aW9uZWQgJiYgKHN0bXQtPnVuaXF1ZSB8fCBzdG10LT5leGNsdWRlT3BOYW1l cykpCisJaWYgKHBhcnRpdGlvbmVkICYmIChzdG10LT51bmlxdWUgfHwgZXhjbHVzaW9uKSkK IAl7CiAJCVBhcnRpdGlvbktleSBrZXkgPSBSZWxhdGlvbkdldFBhcnRpdGlvbktleShyZWwp OwogCQljb25zdCBjaGFyICpjb25zdHJhaW50X3R5cGU7CkBAIC05MzksNiArOTU1LDggQEAg RGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAKIAkJaWYgKHN0bXQtPnByaW1hcnkpCiAJCQlj b25zdHJhaW50X3R5cGUgPSAiUFJJTUFSWSBLRVkiOworCQllbHNlIGlmIChzdG10LT51bmlx dWUgJiYgc3RtdC0+aXN0ZW1wb3JhbCkKKwkJCWNvbnN0cmFpbnRfdHlwZSA9ICJ0ZW1wb3Jh bCBVTklRVUUiOwogCQllbHNlIGlmIChzdG10LT51bmlxdWUpCiAJCQljb25zdHJhaW50X3R5 cGUgPSAiVU5JUVVFIjsKIAkJZWxzZSBpZiAoc3RtdC0+ZXhjbHVkZU9wTmFtZXMpCkBAIC05 ODUsMTAgKzEwMDMsMTAgQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJCQkgKiBhc3Nv Y2lhdGVkIHdpdGggaW5kZXggY29sdW1ucywgdG9vLiAgV2Uga25vdyB3aGF0IHRvIGRvIHdp dGgKIAkJCSAqIGJ0cmVlIG9wY2xhc3NlczsgaWYgdGhlcmUgYXJlIGV2ZXIgYW55IG90aGVy IGluZGV4IHR5cGVzIHRoYXQKIAkJCSAqIHN1cHBvcnQgdW5pcXVlIGluZGV4ZXMsIHRoaXMg bG9naWMgd2lsbCBuZWVkIGV4dGVuc2lvbi4gQnV0IGlmCi0JCQkgKiB3ZSBoYXZlIGFuIGV4 Y2x1c2lvbiBjb25zdHJhaW50LCBpdCBhbHJlYWR5IGtub3dzIHRoZQotCQkJICogb3BlcmF0 b3JzLCBzbyB3ZSBkb24ndCBoYXZlIHRvIGluZmVyIHRoZW0uCisJCQkgKiB3ZSBoYXZlIGFu IGV4Y2x1c2lvbiBjb25zdHJhaW50IChvciBhIHRlbXBvcmFsIFBLKSwgaXQgYWxyZWFkeQor CQkJICoga25vd3MgdGhlIG9wZXJhdG9ycywgc28gd2UgZG9uJ3QgaGF2ZSB0byBpbmZlciB0 aGVtLgogCQkJICovCi0JCQlpZiAoc3RtdC0+dW5pcXVlICYmIGFjY2Vzc01ldGhvZElkICE9 IEJUUkVFX0FNX09JRCkKKwkJCWlmIChzdG10LT51bmlxdWUgJiYgIXN0bXQtPmlzdGVtcG9y YWwgJiYgYWNjZXNzTWV0aG9kSWQgIT0gQlRSRUVfQU1fT0lEKQogCQkJCWVyZXBvcnQoRVJS T1IsCiAJCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCiAJ CQkJCQkgZXJybXNnKCJjYW5ub3QgbWF0Y2ggcGFydGl0aW9uIGtleSB0byBhbiBpbmRleCB1 c2luZyBhY2Nlc3MgbWV0aG9kIFwiJXNcIiIsCkBAIC0xMDIxLDEyICsxMDM5LDEyIEBAIERl ZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCQkJCQl7CiAJCQkJCQlPaWQJCQlpZHhfZXFvcCA9 IEludmFsaWRPaWQ7CiAKLQkJCQkJCWlmIChzdG10LT51bmlxdWUpCisJCQkJCQlpZiAoc3Rt dC0+dW5pcXVlICYmICFzdG10LT5pc3RlbXBvcmFsKQogCQkJCQkJCWlkeF9lcW9wID0gZ2V0 X29wZmFtaWx5X21lbWJlcihpZHhfb3BmYW1pbHksCiAJCQkJCQkJCQkJCQkJCSAgIGlkeF9v cGNpbnR5cGUsCiAJCQkJCQkJCQkJCQkJCSAgIGlkeF9vcGNpbnR5cGUsCiAJCQkJCQkJCQkJ CQkJCSAgIEJURXF1YWxTdHJhdGVneU51bWJlcik7Ci0JCQkJCQllbHNlIGlmIChzdG10LT5l eGNsdWRlT3BOYW1lcykKKwkJCQkJCWVsc2UgaWYgKGV4Y2x1c2lvbikKIAkJCQkJCQlpZHhf ZXFvcCA9IGluZGV4SW5mby0+aWlfRXhjbHVzaW9uT3BzW2pdOwogCQkJCQkJQXNzZXJ0KGlk eF9lcW9wKTsKIApAQCAtMTAzNSw3ICsxMDUzLDcgQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxl SWQsCiAJCQkJCQkJZm91bmQgPSB0cnVlOwogCQkJCQkJCWJyZWFrOwogCQkJCQkJfQotCQkJ CQkJZWxzZSBpZiAoc3RtdC0+ZXhjbHVkZU9wTmFtZXMpCisJCQkJCQllbHNlIGlmIChleGNs dXNpb24pCiAJCQkJCQl7CiAJCQkJCQkJLyoKIAkJCQkJCQkgKiBXZSBmb3VuZCBhIG1hdGNo LCBidXQgaXQncyBub3QgYW4gZXF1YWxpdHkKQEAgLTExNzksNiArMTE5Nyw4IEBAIERlZmlu ZUluZGV4KE9pZCB0YWJsZUlkLAogCQljb25zdHJfZmxhZ3MgfD0gSU5ERVhfQ09OU1RSX0NS RUFURV9ERUZFUlJBQkxFOwogCWlmIChzdG10LT5pbml0ZGVmZXJyZWQpCiAJCWNvbnN0cl9m bGFncyB8PSBJTkRFWF9DT05TVFJfQ1JFQVRFX0lOSVRfREVGRVJSRUQ7CisJaWYgKHN0bXQt PmlzdGVtcG9yYWwpCisJCWNvbnN0cl9mbGFncyB8PSBJTkRFWF9DT05TVFJfQ1JFQVRFX1RF TVBPUkFMOwogCiAJaW5kZXhSZWxhdGlvbklkID0KIAkJaW5kZXhfY3JlYXRlKHJlbCwgaW5k ZXhSZWxhdGlvbk5hbWUsIGluZGV4UmVsYXRpb25JZCwgcGFyZW50SW5kZXhJZCwKQEAgLTE4 NDcsNiArMTg2Nyw5MSBAQCBDaGVja1ByZWRpY2F0ZShFeHByICpwcmVkaWNhdGUpCiAJCQkJ IGVycm1zZygiZnVuY3Rpb25zIGluIGluZGV4IHByZWRpY2F0ZSBtdXN0IGJlIG1hcmtlZCBJ TU1VVEFCTEUiKSkpOwogfQogCisvKgorICogZ2V0X2luZGV4X2F0dHJfdGVtcG9yYWxfb3Bl cmF0b3IKKyAqCisgKiBGaW5kcyBhbiBvcGVyYXRvciBmb3IgYSB0ZW1wb3JhbCBpbmRleCBh dHRyaWJ1dGUuCisgKiBXZSBuZWVkIGFuIGVxdWFsaXR5IG9wZXJhdG9yIGZvciBub3JtYWwg a2V5cworICogYW5kIGFuIG92ZXJsYXBzIG9wZXJhdG9yIGZvciB0aGUgcmFuZ2UuCisgKiBS ZXR1cm5zIHRoZSBvcGVyYXRvciBvaWQgYW5kIHN0cmF0ZWd5IGluIG9waWQgYW5kIHN0cmF0 LAorICogcmVzcGVjdGl2ZWx5LgorICovCitzdGF0aWMgdm9pZAorZ2V0X2luZGV4X2F0dHJf dGVtcG9yYWxfb3BlcmF0b3IoT2lkIG9wY2xhc3MsCisJCQkJCQkJCSBPaWQgYXR0dHlwZSwK KwkJCQkJCQkJIGJvb2wgaXNvdmVybGFwcywKKwkJCQkJCQkJIE9pZCAqb3BpZCwKKwkJCQkJ CQkJIGludCAqc3RyYXQpCit7CisJT2lkIG9wZmFtaWx5OworCWNvbnN0IGNoYXIgKm9wbmFt ZTsKKworCW9wZmFtaWx5ID0gZ2V0X29wY2xhc3NfZmFtaWx5KG9wY2xhc3MpOworCS8qCisJ ICogSWYgd2UgaGF2ZSBhIHJhbmdlIHR5cGUsIGZhbGwgYmFjayBvbiBhbnlyYW5nZS4KKwkg KiBUaGlzIHNlZW1zIGxpa2UgYSBoYWNrCisJICogYnV0IEkgY2FuJ3QgZmluZCBhbnkgZXhp c3RpbmcgbG9va3VwIGZ1bmN0aW9uCisJICogdGhhdCBrbm93cyBhYm91dCBwc2V1ZG90eXBl cy4KKwkgKiBjb21wYXRpYmxlX29wZXIgaXMgY2xvc2UgYnV0IHdhbnRzIGEgKm5hbWUqLAor CSAqIGFuZCB0aGUgcG9pbnQgaGVyZSBpcyB0byBhdm9pZCBoYXJkY29kaW5nIGEgbmFtZQor CSAqIChhbHRob3VnaCBpdCBzaG91bGQgYWx3YXlzIGJlID0gYW5kICYmKS4KKwkgKgorCSAq IEluIGFkZGl0aW9uIGZvciB0aGUgbm9ybWFsIGtleSBlbGVtZW50cworCSAqIHRyeSBib3Ro IFJURXF1YWxTdHJhdGVneU51bWJlciBhbmQgQlRFcXVhbFN0cmF0ZWd5TnVtYmVyLgorCSAq IElmIHlvdSdyZSB1c2luZyBidHJlZV9naXN0IHRoZW4geW91J2xsIG5lZWQgdGhlIGxhdHRl ci4KKwkgKi8KKwlpZiAoaXNvdmVybGFwcykKKwl7CisJCSpzdHJhdCA9IFJUT3ZlcmxhcFN0 cmF0ZWd5TnVtYmVyOworCQlvcG5hbWUgPSAib3ZlcmxhcHMiOworCQkqb3BpZCA9IGdldF9v cGZhbWlseV9tZW1iZXIob3BmYW1pbHksIGF0dHR5cGUsIGF0dHR5cGUsICpzdHJhdCk7CisJ CWlmICghT2lkSXNWYWxpZCgqb3BpZCkgJiYgdHlwZV9pc19yYW5nZShhdHR0eXBlKSkKKwkJ CSpvcGlkID0gZ2V0X29wZmFtaWx5X21lbWJlcihvcGZhbWlseSwgQU5ZUkFOR0VPSUQsIEFO WVJBTkdFT0lELCAqc3RyYXQpOworCX0KKwllbHNlCisJeworCQkqc3RyYXQgPSBSVEVxdWFs U3RyYXRlZ3lOdW1iZXI7CisJCW9wbmFtZSA9ICJlcXVhbGl0eSI7CisJCSpvcGlkID0gZ2V0 X29wZmFtaWx5X21lbWJlcihvcGZhbWlseSwgYXR0dHlwZSwgYXR0dHlwZSwgKnN0cmF0KTsK KwkJaWYgKCFPaWRJc1ZhbGlkKCpvcGlkKSAmJiB0eXBlX2lzX3JhbmdlKGF0dHR5cGUpKQor CQkJKm9waWQgPSBnZXRfb3BmYW1pbHlfbWVtYmVyKG9wZmFtaWx5LCBBTllSQU5HRU9JRCwg QU5ZUkFOR0VPSUQsICpzdHJhdCk7CisKKwkJaWYgKCFPaWRJc1ZhbGlkKCpvcGlkKSkKKwkJ eworCQkJKnN0cmF0ID0gQlRFcXVhbFN0cmF0ZWd5TnVtYmVyOworCQkJKm9waWQgPSBnZXRf b3BmYW1pbHlfbWVtYmVyKG9wZmFtaWx5LCBhdHR0eXBlLCBhdHR0eXBlLCAqc3RyYXQpOwor CQkJaWYgKCFPaWRJc1ZhbGlkKCpvcGlkKSAmJiB0eXBlX2lzX3JhbmdlKGF0dHR5cGUpKQor CQkJCSpvcGlkID0gZ2V0X29wZmFtaWx5X21lbWJlcihvcGZhbWlseSwgQU5ZUkFOR0VPSUQs IEFOWVJBTkdFT0lELCAqc3RyYXQpOworCQl9CisJfQorCisJaWYgKCFPaWRJc1ZhbGlkKCpv cGlkKSkKKwl7CisJCUhlYXBUdXBsZQlvcGZ0dXBsZTsKKwkJRm9ybV9wZ19vcGZhbWlseSBv cGZmb3JtOworCisJCS8qCisJCSAqIGF0dHJpYnV0ZS0+b3BjbGFzcyBtaWdodCBub3QgZXhw bGljaXRseSBuYW1lIHRoZSBvcGZhbWlseSwKKwkJICogc28gZmV0Y2ggdGhlIG5hbWUgb2Yg dGhlIHNlbGVjdGVkIG9wZmFtaWx5IGZvciB1c2UgaW4gdGhlCisJCSAqIGVycm9yIG1lc3Nh Z2UuCisJCSAqLworCQlvcGZ0dXBsZSA9IFNlYXJjaFN5c0NhY2hlMShPUEZBTUlMWU9JRCwK KwkJCQkJCQkJICAgT2JqZWN0SWRHZXREYXR1bShvcGZhbWlseSkpOworCQlpZiAoIUhlYXBU dXBsZUlzVmFsaWQob3BmdHVwbGUpKQorCQkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBm YWlsZWQgZm9yIG9wZmFtaWx5ICV1IiwKKwkJCQkgb3BmYW1pbHkpOworCQlvcGZmb3JtID0g KEZvcm1fcGdfb3BmYW1pbHkpIEdFVFNUUlVDVChvcGZ0dXBsZSk7CisKKwkJZXJlcG9ydChF UlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9PQkpFQ1QpLAorCQkJCSBl cnJtc2coIm5vICVzIG9wZXJhdG9yIGZvdW5kIGZvciBXSVRIT1VUIE9WRVJMQVBTIGNvbnN0 cmFpbnQiLCBvcG5hbWUpLAorCQkJCSBlcnJkZXRhaWwoIlRoZXJlIG11c3QgYmUgYW4gJXMg b3BlcmF0b3Igd2l0aGluIG9wZmFtaWx5IFwiJXNcIiBmb3IgdHlwZSBcIiVzXCIuIiwKKwkJ CQkJCSAgIG9wbmFtZSwKKwkJCQkJCSAgIE5hbWVTdHIob3BmZm9ybS0+b3BmbmFtZSksCisJ CQkJCQkgICBmb3JtYXRfdHlwZV9iZShhdHR0eXBlKSkpKTsKKwl9Cit9CisKIC8qCiAgKiBD b21wdXRlIHBlci1pbmRleC1jb2x1bW4gaW5mb3JtYXRpb24sIGluY2x1ZGluZyBpbmRleGVk IGNvbHVtbiBudW1iZXJzCiAgKiBvciBpbmRleCBleHByZXNzaW9ucywgb3BjbGFzc2VzIGFu ZCB0aGVpciBvcHRpb25zLiBOb3RlLCBhbGwgb3V0cHV0IHZlY3RvcnMKQEAgLTE4NzAsNiAr MTk3NSw3IEBAIENvbXB1dGVJbmRleEF0dHJzKEluZGV4SW5mbyAqaW5kZXhJbmZvLAogCQkJ CSAgT2lkIGFjY2Vzc01ldGhvZElkLAogCQkJCSAgYm9vbCBhbWNhbm9yZGVyLAogCQkJCSAg Ym9vbCBpc2NvbnN0cmFpbnQsCisJCQkJICBib29sIGlzdGVtcG9yYWwsCiAJCQkJICBPaWQg ZGRsX3VzZXJpZCwKIAkJCQkgIGludCBkZGxfc2VjX2NvbnRleHQsCiAJCQkJICBpbnQgKmRk bF9zYXZlX25lc3RsZXZlbCkKQEAgLTE4OTMsNiArMTk5OSwxNCBAQCBDb21wdXRlSW5kZXhB dHRycyhJbmRleEluZm8gKmluZGV4SW5mbywKIAllbHNlCiAJCW5leHRFeGNsT3AgPSBOVUxM OwogCisJLyogZXhjbHVzaW9uT3BOYW1lcyBjYW4gYmUgbm9uLU5JTCBpZiB3ZSBhcmUgY3Jl YXRpbmcgYSBwYXJ0aXRpb24gKi8KKwlpZiAoaXN0ZW1wb3JhbCAmJiBleGNsdXNpb25PcE5h bWVzID09IE5JTCkKKwl7CisJCWluZGV4SW5mby0+aWlfRXhjbHVzaW9uT3BzID0gcGFsbG9j X2FycmF5KE9pZCwgbmtleWNvbHMpOworCQlpbmRleEluZm8tPmlpX0V4Y2x1c2lvblByb2Nz ID0gcGFsbG9jX2FycmF5KE9pZCwgbmtleWNvbHMpOworCQlpbmRleEluZm8tPmlpX0V4Y2x1 c2lvblN0cmF0cyA9IHBhbGxvY19hcnJheSh1aW50MTYsIG5rZXljb2xzKTsKKwl9CisKIAlp ZiAoT2lkSXNWYWxpZChkZGxfdXNlcmlkKSkKIAkJR2V0VXNlcklkQW5kU2VjQ29udGV4dCgm c2F2ZV91c2VyaWQsICZzYXZlX3NlY19jb250ZXh0KTsKIApAQCAtMjE2OSw2ICsyMjgzLDE5 IEBAIENvbXB1dGVJbmRleEF0dHJzKEluZGV4SW5mbyAqaW5kZXhJbmZvLAogCQkJaW5kZXhJ bmZvLT5paV9FeGNsdXNpb25TdHJhdHNbYXR0bl0gPSBzdHJhdDsKIAkJCW5leHRFeGNsT3Ag PSBsbmV4dChleGNsdXNpb25PcE5hbWVzLCBuZXh0RXhjbE9wKTsKIAkJfQorCQllbHNlIGlm IChpc3RlbXBvcmFsKQorCQl7CisJCQlpbnQgc3RyYXQ7CisJCQlPaWQgb3BpZDsKKwkJCWdl dF9pbmRleF9hdHRyX3RlbXBvcmFsX29wZXJhdG9yKG9wY2xhc3NPaWRzW2F0dG5dLAorCQkJ CQkJCQkJCQkgYXR0dHlwZSwKKwkJCQkJCQkJCQkJIGF0dG4gPT0gbmtleWNvbHMgLSAxLAkv KiBUT0RPOiBEb24ndCBhc3N1bWUgaXQncyBsYXN0PyAqLworCQkJCQkJCQkJCQkgJm9waWQs CisJCQkJCQkJCQkJCSAmc3RyYXQpOworCQkJaW5kZXhJbmZvLT5paV9FeGNsdXNpb25PcHNb YXR0bl0gPSBvcGlkOworCQkJaW5kZXhJbmZvLT5paV9FeGNsdXNpb25Qcm9jc1thdHRuXSA9 IGdldF9vcGNvZGUob3BpZCk7CisJCQlpbmRleEluZm8tPmlpX0V4Y2x1c2lvblN0cmF0c1th dHRuXSA9IHN0cmF0OworCQl9CiAKIAkJLyoKIAkJICogU2V0IHVwIHRoZSBwZXItY29sdW1u IG9wdGlvbnMgKGluZG9wdGlvbiBmaWVsZCkuICBGb3Igbm93LCB0aGlzIGlzCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3RhYmxlY21kcy5jCmluZGV4IDQxNmE5OGU3Y2UuLjdjNjI3ZDZhNjYgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCisrKyBiL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCkBAIC0yMDgsNiArMjA4LDcgQEAgdHlwZWRlZiBz dHJ1Y3QgTmV3Q29uc3RyYWludAogCU9pZAkJCXJlZnJlbGlkOwkJLyogUEsgcmVsLCBpZiBG T1JFSUdOICovCiAJT2lkCQkJcmVmaW5kaWQ7CQkvKiBPSUQgb2YgUEsncyBpbmRleCwgaWYg Rk9SRUlHTiAqLwogCU9pZAkJCWNvbmlkOwkJCS8qIE9JRCBvZiBwZ19jb25zdHJhaW50IGVu dHJ5LCBpZiBGT1JFSUdOICovCisJYm9vbAkJY29udGVtcG9yYWw7CS8qIFdoZXRoZXIgdGhl IG5ldyBjb25zdHJhaW50IGlzIHRlbXBvcmFsICovCiAJTm9kZQkgICAqcXVhbDsJCQkvKiBD aGVjayBleHByIG9yIENPTlNUUl9GT1JFSUdOIENvbnN0cmFpbnQgKi8KIAlFeHByU3RhdGUg ICpxdWFsc3RhdGU7CQkvKiBFeGVjdXRpb24gc3RhdGUgZm9yIENIRUNLIGV4cHIgKi8KIH0g TmV3Q29uc3RyYWludDsKQEAgLTEwMDg0LDYgKzEwMDg1LDcgQEAgYWRkRmtSZWN1cnNlUmVm ZXJlbmNlZChMaXN0ICoqd3F1ZXVlLCBDb25zdHJhaW50ICpma2NvbnN0cmFpbnQsIFJlbGF0 aW9uIHJlbCwKIAkJCQkJCQkJCSAgY29uaXNsb2NhbCwJLyogaXNsb2NhbCAqLwogCQkJCQkJ CQkJICBjb25pbmhjb3VudCwJLyogaW5oY291bnQgKi8KIAkJCQkJCQkJCSAgY29ubm9pbmhl cml0LCAvKiBjb25Ob0luaGVyaXQgKi8KKwkJCQkJCQkJCSAgZmFsc2UsCS8qIGNvblRlbXBv cmFsICovCiAJCQkJCQkJCQkgIGZhbHNlKTsJLyogaXNfaW50ZXJuYWwgKi8KIAogCU9iamVj dEFkZHJlc3NTZXQoYWRkcmVzcywgQ29uc3RyYWludFJlbGF0aW9uSWQsIGNvbnN0ck9pZCk7 CkBAIC0xMDM4Miw2ICsxMDM4NCw3IEBAIGFkZEZrUmVjdXJzZVJlZmVyZW5jaW5nKExpc3Qg Kip3cXVldWUsIENvbnN0cmFpbnQgKmZrY29uc3RyYWludCwgUmVsYXRpb24gcmVsLAogCQkJ CQkJCQkJICBmYWxzZSwKIAkJCQkJCQkJCSAgMSwKIAkJCQkJCQkJCSAgZmFsc2UsCisJCQkJ CQkJCQkgIGZhbHNlLAkvKiBjb25UZW1wb3JhbCAqLwogCQkJCQkJCQkJICBmYWxzZSk7CiAK IAkJCS8qCkBAIC0xMDg4Nyw2ICsxMDg5MCw3IEBAIENsb25lRmtSZWZlcmVuY2luZyhMaXN0 ICoqd3F1ZXVlLCBSZWxhdGlvbiBwYXJlbnRSZWwsIFJlbGF0aW9uIHBhcnRSZWwpCiAJCQkJ CQkJCSAgZmFsc2UsCS8qIGlzbG9jYWwgKi8KIAkJCQkJCQkJICAxLAkvKiBpbmhjb3VudCAq LwogCQkJCQkJCQkgIGZhbHNlLAkvKiBjb25Ob0luaGVyaXQgKi8KKwkJCQkJCQkJICBmYWxz ZSwJLyogY29uVGVtcG9yYWwgKi8KIAkJCQkJCQkJICB0cnVlKTsKIAogCQkvKiBTZXQgdXAg cGFydGl0aW9uIGRlcGVuZGVuY2llcyBmb3IgdGhlIG5ldyBjb25zdHJhaW50ICovCkBAIC0x MTU2MSw2ICsxMTU2NSw3IEBAIEFURXhlY1ZhbGlkYXRlQ29uc3RyYWludChMaXN0ICoqd3F1 ZXVlLCBSZWxhdGlvbiByZWwsIGNoYXIgKmNvbnN0ck5hbWUsCiAJCQluZXdjb24tPnJlZnJl bGlkID0gY29uLT5jb25mcmVsaWQ7CiAJCQluZXdjb24tPnJlZmluZGlkID0gY29uLT5jb25p bmRpZDsKIAkJCW5ld2Nvbi0+Y29uaWQgPSBjb24tPm9pZDsKKwkJCW5ld2Nvbi0+Y29udGVt cG9yYWwgPSBjb24tPmNvbnRlbXBvcmFsOwogCQkJbmV3Y29uLT5xdWFsID0gKE5vZGUgKikg Zmtjb25zdHJhaW50OwogCiAJCQkvKiBGaW5kIG9yIGNyZWF0ZSB3b3JrIHF1ZXVlIGVudHJ5 IGZvciB0aGlzIHRhYmxlICovCkBAIC0xMTcyNywxMCArMTE3MzIsMTIgQEAgdHJhbnNmb3Jt Q29sdW1uTmFtZUxpc3QoT2lkIHJlbElkLCBMaXN0ICpjb2xMaXN0LAogICoKICAqCUxvb2sg dXAgdGhlIG5hbWVzLCBhdHRudW1zLCBhbmQgdHlwZXMgb2YgdGhlIHByaW1hcnkga2V5IGF0 dHJpYnV0ZXMKICAqCWZvciB0aGUgcGtyZWwuICBBbHNvIHJldHVybiB0aGUgaW5kZXggT0lE IGFuZCBpbmRleCBvcGNsYXNzZXMgb2YgdGhlCi0gKglpbmRleCBzdXBwb3J0aW5nIHRoZSBw cmltYXJ5IGtleS4KKyAqCWluZGV4IHN1cHBvcnRpbmcgdGhlIHByaW1hcnkga2V5LiAgSWYg dGhpcyBpcyBhIHRlbXBvcmFsIHByaW1hcnkga2V5LAorICoJYWxzbyBzZXQgdGhlIFdJVEhP VVQgT1ZFUkxBUFMgYXR0cmlidXRlIG5hbWUsIGF0dG51bSwgYW5kIGF0dHR5cGlkLgogICoK ICAqCUFsbCBwYXJhbWV0ZXJzIGV4Y2VwdCBwa3JlbCBhcmUgb3V0cHV0IHBhcmFtZXRlcnMu ICBBbHNvLCB0aGUgZnVuY3Rpb24KLSAqCXJldHVybiB2YWx1ZSBpcyB0aGUgbnVtYmVyIG9m IGF0dHJpYnV0ZXMgaW4gdGhlIHByaW1hcnkga2V5LgorICoJcmV0dXJuIHZhbHVlIGlzIHRo ZSBudW1iZXIgb2YgYXR0cmlidXRlcyBpbiB0aGUgcHJpbWFyeSBrZXksCisgKglub3QgaW5j bHVkaW5nIHRoZSBXSVRIT1VUIE9WRVJMQVBTIGlmIGFueS4KICAqCiAgKglVc2VkIHdoZW4g dGhlIGNvbHVtbiBsaXN0IGluIHRoZSBSRUZFUkVOQ0VTIHNwZWNpZmljYXRpb24gaXMgb21p dHRlZC4KICAqLwpAQCAtMTQyNzIsNyArMTQyNzksOCBAQCBUcnlSZXVzZUluZGV4KE9pZCBv bGRJZCwgSW5kZXhTdG10ICpzdG10KQogCWlmIChDaGVja0luZGV4Q29tcGF0aWJsZShvbGRJ ZCwKIAkJCQkJCQkgc3RtdC0+YWNjZXNzTWV0aG9kLAogCQkJCQkJCSBzdG10LT5pbmRleFBh cmFtcywKLQkJCQkJCQkgc3RtdC0+ZXhjbHVkZU9wTmFtZXMpKQorCQkJCQkJCSBzdG10LT5l eGNsdWRlT3BOYW1lcywKKwkJCQkJCQkgc3RtdC0+aXN0ZW1wb3JhbCkpCiAJewogCQlSZWxh dGlvbglpcmVsID0gaW5kZXhfb3BlbihvbGRJZCwgTm9Mb2NrKTsKIApkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvY29tbWFuZHMvdHJpZ2dlci5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv dHJpZ2dlci5jCmluZGV4IDUyMTc3NzU5YWIuLjA1NzdiNjA0MTUgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL3RyaWdnZXIuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5k cy90cmlnZ2VyLmMKQEAgLTg0MSw2ICs4NDEsNyBAQCBDcmVhdGVUcmlnZ2VyRmlyaW5nT24o Q3JlYXRlVHJpZ1N0bXQgKnN0bXQsIGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5nLAogCQkJCQkJ CQkJCQkgIHRydWUsIC8qIGlzbG9jYWwgKi8KIAkJCQkJCQkJCQkJICAwLAkvKiBpbmhjb3Vu dCAqLwogCQkJCQkJCQkJCQkgIHRydWUsIC8qIG5vaW5oZXJpdCAqLworCQkJCQkJCQkJCQkg IGZhbHNlLCAvKiBjb250ZW1wb3JhbCAqLwogCQkJCQkJCQkJCQkgIGlzSW50ZXJuYWwpOwkv KiBpc19pbnRlcm5hbCAqLwogCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFu ZHMvdHlwZWNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3R5cGVjbWRzLmMKaW5kZXgg YWFmOTcyODY5Ny4uMTc3MzU1NjA1MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFu ZHMvdHlwZWNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90eXBlY21kcy5jCkBA IC0zNTQ0LDYgKzM1NDQsNyBAQCBkb21haW5BZGRDb25zdHJhaW50KE9pZCBkb21haW5PaWQs IE9pZCBkb21haW5OYW1lc3BhY2UsIE9pZCBiYXNlVHlwZU9pZCwKIAkJCQkJCQkgIHRydWUs IC8qIGlzIGxvY2FsICovCiAJCQkJCQkJICAwLAkvKiBpbmhjb3VudCAqLwogCQkJCQkJCSAg ZmFsc2UsCS8qIGNvbm5vaW5oZXJpdCAqLworCQkJCQkJCSAgZmFsc2UsCS8qIGNvbnRlbXBv cmFsICovCiAJCQkJCQkJICBmYWxzZSk7CS8qIGlzX2ludGVybmFsICovCiAJaWYgKGNvbnN0 ckFkZHIpCiAJCU9iamVjdEFkZHJlc3NTZXQoKmNvbnN0ckFkZHIsIENvbnN0cmFpbnRSZWxh dGlvbklkLCBjY29pZCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55 IGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQppbmRleCBjMjI0ZGY0ZWNjLi4xNGQ0ZTI0 ZmNjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CisrKyBiL3NyYy9i YWNrZW5kL3BhcnNlci9ncmFtLnkKQEAgLTUyMyw3ICs1MjMsOCBAQCBzdGF0aWMgTm9kZSAq bWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywg Tm9kZSAqcXVlcnkpOwogJXR5cGUgPG5vZGU+CVRhYmxlRWxlbWVudCBUeXBlZFRhYmxlRWxl bWVudCBDb25zdHJhaW50RWxlbSBUYWJsZUZ1bmNFbGVtZW50CiAldHlwZSA8bm9kZT4JY29s dW1uRGVmIGNvbHVtbk9wdGlvbnMKICV0eXBlIDxkZWZlbHQ+CWRlZl9lbGVtIHJlbG9wdGlv bl9lbGVtIG9sZF9hZ2dyX2VsZW0gb3BlcmF0b3JfZGVmX2VsZW0KLSV0eXBlIDxub2RlPglk ZWZfYXJnIGNvbHVtbkVsZW0gd2hlcmVfY2xhdXNlIHdoZXJlX29yX2N1cnJlbnRfY2xhdXNl CisldHlwZSA8bm9kZT4JZGVmX2FyZyBjb2x1bW5FbGVtIHdpdGhvdXRfb3ZlcmxhcHNfY2xh dXNlCisJCQkJd2hlcmVfY2xhdXNlIHdoZXJlX29yX2N1cnJlbnRfY2xhdXNlCiAJCQkJYV9l eHByIGJfZXhwciBjX2V4cHIgQWV4cHJDb25zdCBpbmRpcmVjdGlvbl9lbCBvcHRfc2xpY2Vf Ym91bmQKIAkJCQljb2x1bW5yZWYgaW5fZXhwciBoYXZpbmdfY2xhdXNlIGZ1bmNfdGFibGUg eG1sdGFibGUgYXJyYXlfZXhwcgogCQkJCU9wdFdoZXJlQ2xhdXNlIG9wZXJhdG9yX2RlZl9h cmcKQEAgLTQxMDQsNyArNDEwNSw3IEBAIENvbnN0cmFpbnRFbGVtOgogCQkJCQluLT5pbml0 aWFsbHlfdmFsaWQgPSB0cnVlOwogCQkJCQkkJCA9IChOb2RlICopIG47CiAJCQkJfQotCQkJ fCBVTklRVUUgb3B0X3VuaXF1ZV9udWxsX3RyZWF0bWVudCAnKCcgY29sdW1uTGlzdCAnKScg b3B0X2NfaW5jbHVkZSBvcHRfZGVmaW5pdGlvbiBPcHRDb25zVGFibGVTcGFjZQorCQkJfCBV TklRVUUgb3B0X3VuaXF1ZV9udWxsX3RyZWF0bWVudCAnKCcgY29sdW1uTGlzdCB3aXRob3V0 X292ZXJsYXBzX2NsYXVzZSAnKScgb3B0X2NfaW5jbHVkZSBvcHRfZGVmaW5pdGlvbiBPcHRD b25zVGFibGVTcGFjZQogCQkJCUNvbnN0cmFpbnRBdHRyaWJ1dGVTcGVjCiAJCQkJewogCQkJ CQlDb25zdHJhaW50ICpuID0gbWFrZU5vZGUoQ29uc3RyYWludCk7CkBAIC00MTEzLDExICs0 MTE0LDEyIEBAIENvbnN0cmFpbnRFbGVtOgogCQkJCQluLT5sb2NhdGlvbiA9IEAxOwogCQkJ CQluLT5udWxsc19ub3RfZGlzdGluY3QgPSAhJDI7CiAJCQkJCW4tPmtleXMgPSAkNDsKLQkJ CQkJbi0+aW5jbHVkaW5nID0gJDY7Ci0JCQkJCW4tPm9wdGlvbnMgPSAkNzsKKwkJCQkJbi0+ d2l0aG91dF9vdmVybGFwcyA9ICQ1OworCQkJCQluLT5pbmNsdWRpbmcgPSAkNzsKKwkJCQkJ bi0+b3B0aW9ucyA9ICQ4OwogCQkJCQluLT5pbmRleG5hbWUgPSBOVUxMOwotCQkJCQluLT5p bmRleHNwYWNlID0gJDg7Ci0JCQkJCXByb2Nlc3NDQVNiaXRzKCQ5LCBAOSwgIlVOSVFVRSIs CisJCQkJCW4tPmluZGV4c3BhY2UgPSAkOTsKKwkJCQkJcHJvY2Vzc0NBU2JpdHMoJDEwLCBA MTAsICJVTklRVUUiLAogCQkJCQkJCQkgICAmbi0+ZGVmZXJyYWJsZSwgJm4tPmluaXRkZWZl cnJlZCwgTlVMTCwKIAkJCQkJCQkJICAgTlVMTCwgeXlzY2FubmVyKTsKIAkJCQkJJCQgPSAo Tm9kZSAqKSBuOwpAQCAtNDEzOCw3ICs0MTQwLDcgQEAgQ29uc3RyYWludEVsZW06CiAJCQkJ CQkJCSAgIE5VTEwsIHl5c2Nhbm5lcik7CiAJCQkJCSQkID0gKE5vZGUgKikgbjsKIAkJCQl9 Ci0JCQl8IFBSSU1BUlkgS0VZICcoJyBjb2x1bW5MaXN0ICcpJyBvcHRfY19pbmNsdWRlIG9w dF9kZWZpbml0aW9uIE9wdENvbnNUYWJsZVNwYWNlCisJCQl8IFBSSU1BUlkgS0VZICcoJyBj b2x1bW5MaXN0IHdpdGhvdXRfb3ZlcmxhcHNfY2xhdXNlICcpJyBvcHRfY19pbmNsdWRlIG9w dF9kZWZpbml0aW9uIE9wdENvbnNUYWJsZVNwYWNlCiAJCQkJQ29uc3RyYWludEF0dHJpYnV0 ZVNwZWMKIAkJCQl7CiAJCQkJCUNvbnN0cmFpbnQgKm4gPSBtYWtlTm9kZShDb25zdHJhaW50 KTsKQEAgLTQxNDYsMTEgKzQxNDgsMTIgQEAgQ29uc3RyYWludEVsZW06CiAJCQkJCW4tPmNv bnR5cGUgPSBDT05TVFJfUFJJTUFSWTsKIAkJCQkJbi0+bG9jYXRpb24gPSBAMTsKIAkJCQkJ bi0+a2V5cyA9ICQ0OwotCQkJCQluLT5pbmNsdWRpbmcgPSAkNjsKLQkJCQkJbi0+b3B0aW9u cyA9ICQ3OworCQkJCQluLT53aXRob3V0X292ZXJsYXBzID0gJDU7CisJCQkJCW4tPmluY2x1 ZGluZyA9ICQ3OworCQkJCQluLT5vcHRpb25zID0gJDg7CiAJCQkJCW4tPmluZGV4bmFtZSA9 IE5VTEw7Ci0JCQkJCW4tPmluZGV4c3BhY2UgPSAkODsKLQkJCQkJcHJvY2Vzc0NBU2JpdHMo JDksIEA5LCAiUFJJTUFSWSBLRVkiLAorCQkJCQluLT5pbmRleHNwYWNlID0gJDk7CisJCQkJ CXByb2Nlc3NDQVNiaXRzKCQxMCwgQDEwLCAiUFJJTUFSWSBLRVkiLAogCQkJCQkJCQkgICAm bi0+ZGVmZXJyYWJsZSwgJm4tPmluaXRkZWZlcnJlZCwgTlVMTCwKIAkJCQkJCQkJICAgTlVM TCwgeXlzY2FubmVyKTsKIAkJCQkJJCQgPSAoTm9kZSAqKSBuOwpAQCAtNDIyOCw2ICs0MjMx LDExIEBAIGNvbHVtbkxpc3Q6CiAJCQl8IGNvbHVtbkxpc3QgJywnIGNvbHVtbkVsZW0JCQkJ eyAkJCA9IGxhcHBlbmQoJDEsICQzKTsgfQogCQk7CiAKK3dpdGhvdXRfb3ZlcmxhcHNfY2xh dXNlOgorCQkJJywnIGNvbHVtbkVsZW0gV0lUSE9VVCBPVkVSTEFQUyB7ICQkID0gJDI7IH0K KwkJCXwgLypFTVBUWSovICAgICAgICAgICAgICAgeyAkJCA9IE5VTEw7IH0KKwk7CisKIGNv bHVtbkVsZW06IENvbElkCiAJCQkJewogCQkJCQkkJCA9IChOb2RlICopIG1ha2VTdHJpbmco JDEpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYyBi L3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMKaW5kZXggY2YwZDQzMmFiMS4u ZjQ3MDVlY2MyYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxj bWQuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jCkBAIC0xMjQs NiArMTI0LDcgQEAgc3RhdGljIExpc3QgKmdldF9vcGNsYXNzKE9pZCBvcGNsYXNzLCBPaWQg YWN0dWFsX2RhdGF0eXBlKTsKIHN0YXRpYyB2b2lkIHRyYW5zZm9ybUluZGV4Q29uc3RyYWlu dHMoQ3JlYXRlU3RtdENvbnRleHQgKmN4dCk7CiBzdGF0aWMgSW5kZXhTdG10ICp0cmFuc2Zv cm1JbmRleENvbnN0cmFpbnQoQ29uc3RyYWludCAqY29uc3RyYWludCwKIAkJCQkJCQkJCQkg ICBDcmVhdGVTdG10Q29udGV4dCAqY3h0KTsKK3N0YXRpYyB2b2lkIHZhbGlkYXRlV2l0aG91 dE92ZXJsYXBzKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQsIGNoYXIgKmNvbG5hbWUsIGludCBs b2NhdGlvbik7CiBzdGF0aWMgdm9pZCB0cmFuc2Zvcm1FeHRlbmRlZFN0YXRpc3RpY3MoQ3Jl YXRlU3RtdENvbnRleHQgKmN4dCk7CiBzdGF0aWMgdm9pZCB0cmFuc2Zvcm1GS0NvbnN0cmFp bnRzKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQsCiAJCQkJCQkJCSAgIGJvb2wgc2tpcFZhbGlk YXRpb24sCkBAIC0xNzE2LDYgKzE3MTcsNyBAQCBnZW5lcmF0ZUNsb25lZEluZGV4U3RtdChS YW5nZVZhciAqaGVhcFJlbCwgUmVsYXRpb24gc291cmNlX2lkeCwKIAlpbmRleC0+dW5pcXVl ID0gaWR4cmVjLT5pbmRpc3VuaXF1ZTsKIAlpbmRleC0+bnVsbHNfbm90X2Rpc3RpbmN0ID0g aWR4cmVjLT5pbmRudWxsc25vdGRpc3RpbmN0OwogCWluZGV4LT5wcmltYXJ5ID0gaWR4cmVj LT5pbmRpc3ByaW1hcnk7CisJaW5kZXgtPmlzdGVtcG9yYWwgPSAoaWR4cmVjLT5pbmRpc3By aW1hcnkgfHwgaWR4cmVjLT5pbmRpc3VuaXF1ZSkgJiYgaWR4cmVjLT5pbmRpc2V4Y2x1c2lv bjsKIAlpbmRleC0+dHJhbnNmb3JtZWQgPSB0cnVlOwkvKiBkb24ndCBuZWVkIHRyYW5zZm9y bUluZGV4U3RtdCAqLwogCWluZGV4LT5jb25jdXJyZW50ID0gZmFsc2U7CiAJaW5kZXgtPmlm X25vdF9leGlzdHMgPSBmYWxzZTsKQEAgLTE3NjUsNyArMTc2Nyw5IEBAIGdlbmVyYXRlQ2xv bmVkSW5kZXhTdG10KFJhbmdlVmFyICpoZWFwUmVsLCBSZWxhdGlvbiBzb3VyY2VfaWR4LAog CQkJCWludAkJCW5FbGVtczsKIAkJCQlpbnQJCQlpOwogCi0JCQkJQXNzZXJ0KGNvbnJlYy0+ Y29udHlwZSA9PSBDT05TVFJBSU5UX0VYQ0xVU0lPTik7CisJCQkJQXNzZXJ0KGNvbnJlYy0+ Y29udHlwZSA9PSBDT05TVFJBSU5UX0VYQ0xVU0lPTiB8fAorCQkJCQkJKGluZGV4LT5pc3Rl bXBvcmFsICYmCisJCQkJCQkgKGNvbnJlYy0+Y29udHlwZSA9PSBDT05TVFJBSU5UX1BSSU1B UlkgfHwgY29ucmVjLT5jb250eXBlID09IENPTlNUUkFJTlRfVU5JUVVFKSkpOwogCQkJCS8q IEV4dHJhY3Qgb3BlcmF0b3IgT0lEcyBmcm9tIHRoZSBwZ19jb25zdHJhaW50IHR1cGxlICov CiAJCQkJZGF0dW0gPSBTeXNDYWNoZUdldEF0dHJOb3ROdWxsKENPTlNUUk9JRCwgaHRfY29u c3RyLAogCQkJCQkJCQkJCQkgICBBbnVtX3BnX2NvbnN0cmFpbnRfY29uZXhjbG9wKTsKQEAg LTIzMDUsNiArMjMwOSw3IEBAIHRyYW5zZm9ybUluZGV4Q29uc3RyYWludChDb25zdHJhaW50 ICpjb25zdHJhaW50LCBDcmVhdGVTdG10Q29udGV4dCAqY3h0KQogCX0KIAlpbmRleC0+bnVs bHNfbm90X2Rpc3RpbmN0ID0gY29uc3RyYWludC0+bnVsbHNfbm90X2Rpc3RpbmN0OwogCWlu ZGV4LT5pc2NvbnN0cmFpbnQgPSB0cnVlOworCWluZGV4LT5pc3RlbXBvcmFsID0gY29uc3Ry YWludC0+d2l0aG91dF9vdmVybGFwcyAhPSBOVUxMOwogCWluZGV4LT5kZWZlcnJhYmxlID0g Y29uc3RyYWludC0+ZGVmZXJyYWJsZTsKIAlpbmRleC0+aW5pdGRlZmVycmVkID0gY29uc3Ry YWludC0+aW5pdGRlZmVycmVkOwogCkBAIC0yMzk3LDYgKzI0MDIsMTEgQEAgdHJhbnNmb3Jt SW5kZXhDb25zdHJhaW50KENvbnN0cmFpbnQgKmNvbnN0cmFpbnQsIENyZWF0ZVN0bXRDb250 ZXh0ICpjeHQpCiAJCQkJCSBlcnJtc2coImluZGV4IFwiJXNcIiBpcyBub3QgdmFsaWQiLCBp bmRleF9uYW1lKSwKIAkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihjeHQtPnBzdGF0ZSwgY29u c3RyYWludC0+bG9jYXRpb24pKSk7CiAKKwkJLyoKKwkJICogVG9kYXkgd2UgZm9yYmlkIG5v bi11bmlxdWUgaW5kZXhlcywgYnV0IHdlIGNvdWxkIHBlcm1pdCBHaVNUCisJCSAqIGluZGV4 ZXMgd2hvc2UgbGFzdCBlbnRyeSBpcyBhIHJhbmdlIHR5cGUgYW5kIHVzZSB0aGF0IHRvIGNy ZWF0ZSBhCisJCSAqIFdJVEhPVVQgT1ZFUkxBUFMgY29uc3RyYWludCAoaS5lLiBhIHRlbXBv cmFsIGNvbnN0cmFpbnQpLgorCQkgKi8KIAkJaWYgKCFpbmRleF9mb3JtLT5pbmRpc3VuaXF1 ZSkKIAkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCShlcnJjb2RlKEVSUkNPREVfV1JPTkdfT0JK RUNUX1RZUEUpLApAQCAtMjY3Myw2ICsyNjgzLDUyIEBAIHRyYW5zZm9ybUluZGV4Q29uc3Ry YWludChDb25zdHJhaW50ICpjb25zdHJhaW50LCBDcmVhdGVTdG10Q29udGV4dCAqY3h0KQog CQkJCW5vdG51bGxjbWRzID0gbGFwcGVuZChub3RudWxsY21kcywgbm90bnVsbGNtZCk7CiAJ CQl9CiAJCX0KKworCQkvKgorCQkgKiBBbnl0aGluZyBpbiB3aXRob3V0X292ZXJsYXBzIHNo b3VsZCBiZSBpbmNsdWRlZCwKKwkJICogYnV0IHdpdGggdGhlIG92ZXJsYXBzIG9wZXJhdG9y ICgmJikgaW5zdGVhZCBvZiBlcXVhbGl0eS4KKwkJICovCisJCWlmIChjb25zdHJhaW50LT53 aXRob3V0X292ZXJsYXBzICE9IE5VTEwpCisJCXsKKwkJCWNoYXIgKndpdGhvdXRfb3Zlcmxh cHNfc3RyID0gc3RyVmFsKGNvbnN0cmFpbnQtPndpdGhvdXRfb3ZlcmxhcHMpOworCQkJSW5k ZXhFbGVtICppcGFyYW0gPSBtYWtlTm9kZShJbmRleEVsZW0pOworCisJCQkvKgorCQkJICog SXRlcmF0ZSB0aHJvdWdoIHRoZSB0YWJsZSdzIGNvbHVtbnMKKwkJCSAqIChsaWtlIGp1c3Qg YSBsaXR0bGUgYml0IGFib3ZlKS4KKwkJCSAqIFJhaXNlIGFuIGVycm9yIGlmIHdlIGNhbid0 IGZpbmQgdGhlIGNvbHVtbiBuYW1lZCBpbiBXSVRIT1VUIE9WRVJMQVBTLAorCQkJICogb3Ig aWYgaXQncyBub3QgYSByYW5nZSB0eXBlLgorCQkJICovCisKKwkJCXZhbGlkYXRlV2l0aG91 dE92ZXJsYXBzKGN4dCwgd2l0aG91dF9vdmVybGFwc19zdHIsIGNvbnN0cmFpbnQtPmxvY2F0 aW9uKTsKKworCQkJaXBhcmFtLT5uYW1lID0gcHN0cmR1cCh3aXRob3V0X292ZXJsYXBzX3N0 cik7CisJCQlpcGFyYW0tPmV4cHIgPSBOVUxMOworCQkJaXBhcmFtLT5pbmRleGNvbG5hbWUg PSBOVUxMOworCQkJaXBhcmFtLT5jb2xsYXRpb24gPSBOSUw7CisJCQlpcGFyYW0tPm9wY2xh c3MgPSBOSUw7CisJCQlpcGFyYW0tPm9wY2xhc3NvcHRzID0gTklMOworCQkJaXBhcmFtLT5v cmRlcmluZyA9IFNPUlRCWV9ERUZBVUxUOworCQkJaXBhcmFtLT5udWxsc19vcmRlcmluZyA9 IFNPUlRCWV9OVUxMU19ERUZBVUxUOworCQkJaW5kZXgtPmluZGV4UGFyYW1zID0gbGFwcGVu ZChpbmRleC0+aW5kZXhQYXJhbXMsIGlwYXJhbSk7CisKKwkJCWluZGV4LT5hY2Nlc3NNZXRo b2QgPSAiZ2lzdCI7CisJCQljb25zdHJhaW50LT5hY2Nlc3NfbWV0aG9kID0gImdpc3QiOwor CisJCQlpZiAoY29uc3RyYWludC0+Y29udHlwZSA9PSBDT05TVFJfUFJJTUFSWSkKKwkJCXsK KwkJCQkvKgorCQkJCSAqIEZvcmNlIHRoZSBjb2x1bW4gdG8gTk9UIE5VTEwgc2luY2UgaXQg aXMgcGFydCBvZiB0aGUgcHJpbWFyeSBrZXkuCisJCQkJICogVGhlIGxvb3AgYWJvdmUgZG9l cyBub3QgaW5jbHVkZSB0aGUgV0lUSE9VVCBPVkVSTEFQUyBhdHRyaWJ1dGUsCisJCQkJICog c28gd2UgbXVzdCBkbyBpdCBoZXJlLgorCQkJCSAqLworCQkJCUFsdGVyVGFibGVDbWQgKm5v dG51bGxjbWQgPSBtYWtlTm9kZShBbHRlclRhYmxlQ21kKTsKKworCQkJCW5vdG51bGxjbWQt PnN1YnR5cGUgPSBBVF9TZXRBdHROb3ROdWxsOworCQkJCW5vdG51bGxjbWQtPm5hbWUgPSBw c3RyZHVwKHdpdGhvdXRfb3ZlcmxhcHNfc3RyKTsKKwkJCQlub3RudWxsY21kcyA9IGxhcHBl bmQobm90bnVsbGNtZHMsIG5vdG51bGxjbWQpOworCQkJfQorCQl9CiAJfQogCiAJLyoKQEAg LTI3OTIsNiArMjg0OCw3MyBAQCB0cmFuc2Zvcm1JbmRleENvbnN0cmFpbnQoQ29uc3RyYWlu dCAqY29uc3RyYWludCwgQ3JlYXRlU3RtdENvbnRleHQgKmN4dCkKIAlyZXR1cm4gaW5kZXg7 CiB9CiAKKy8qCisgKiB2YWxpZGF0ZVdpdGhvdXRPdmVybGFwcyAtCisgKgorICogVHJpZXMg dG8gZmluZCBhIGNvbHVtbiBieSBuYW1lIGFtb25nIHRoZSBleGlzdGluZyBvbmVzIChpZiBp dCdzIGFuIEFMVEVSIFRBQkxFKQorICogYW5kIHRoZSBuZXcgb25lcy4gUmFpc2VzIGFuIGVy cm9yIGlmIHdlIGNhbid0IGZpbmQgb25lIG9yIGl0J3Mgbm90IGEgcmFuZ2UgdHlwZS4KKyAq Lworc3RhdGljIHZvaWQKK3ZhbGlkYXRlV2l0aG91dE92ZXJsYXBzKENyZWF0ZVN0bXRDb250 ZXh0ICpjeHQsIGNoYXIgKmNvbG5hbWUsIGludCBsb2NhdGlvbikKK3sKKwkvKiBDaGVjayB0 aGUgbmV3IGNvbHVtbnMgZmlyc3QgaW4gY2FzZSB0aGVpciB0eXBlIGlzIGNoYW5naW5nLiAq LworCisJQ29sdW1uRGVmICAqY29sdW1uID0gTlVMTDsKKwlMaXN0Q2VsbCAgICpjb2x1bW5z OworCU9pZAkJCXR5cGlkOworCisJZm9yZWFjaChjb2x1bW5zLCBjeHQtPmNvbHVtbnMpCisJ eworCQljb2x1bW4gPSBsZmlyc3Rfbm9kZShDb2x1bW5EZWYsIGNvbHVtbnMpOworCQlpZiAo c3RyY21wKGNvbHVtbi0+Y29sbmFtZSwgY29sbmFtZSkgPT0gMCkKKwkJeworCQkJdHlwaWQg PSB0eXBlbmFtZVR5cGVJZChOVUxMLCBjb2x1bW4tPnR5cGVOYW1lKTsKKwkJCWlmICghdHlw ZV9pc19yYW5nZSh0eXBpZCkpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2Rl KEVSUkNPREVfREFUQVRZUEVfTUlTTUFUQ0gpLAorCQkJCQkJIGVycm1zZygiY29sdW1uIFwi JXNcIiBpbiBXSVRIT1VUIE9WRVJMQVBTIGlzIG5vdCBhIHJhbmdlIHR5cGUiLAorCQkJCQkJ CQljb2xuYW1lKSwKKwkJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24oY3h0LT5wc3RhdGUsIGxv Y2F0aW9uKSkpOworCQkJcmV0dXJuOworCQl9CisJfQorCisJLyogTG9vayB1cCBjb2x1bW5z IG9uIGV4aXN0aW5nIHRhYmxlLiAqLworCisJaWYgKGN4dC0+aXNhbHRlcikKKwl7CisJCVJl bGF0aW9uIHJlbCA9IGN4dC0+cmVsOworCQlmb3IgKGludCBpID0gMDsgaSA8IHJlbC0+cmRf YXR0LT5uYXR0czsgaSsrKQorCQl7CisJCQlGb3JtX3BnX2F0dHJpYnV0ZSBhdHRyID0gVHVw bGVEZXNjQXR0cihyZWwtPnJkX2F0dCwgaSk7CisJCQljb25zdCBjaGFyICphdHRuYW1lOwor CisJCQlpZiAoYXR0ci0+YXR0aXNkcm9wcGVkKQorCQkJCWJyZWFrOworCisJCQlhdHRuYW1l ID0gTmFtZVN0cihhdHRyLT5hdHRuYW1lKTsKKwkJCWlmIChzdHJjbXAoYXR0bmFtZSwgY29s bmFtZSkgPT0gMCkKKwkJCXsKKwkJCQlpZiAoIXR5cGVfaXNfcmFuZ2UoYXR0ci0+YXR0dHlw aWQpKQorCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCShlcnJjb2RlKEVSUkNPREVfREFU QVRZUEVfTUlTTUFUQ0gpLAorCQkJCQkJCSBlcnJtc2coImNvbHVtbiBcIiVzXCIgaW4gV0lU SE9VVCBPVkVSTEFQUyBpcyBub3QgYSByYW5nZSB0eXBlIiwKKwkJCQkJCQkJCWNvbG5hbWUp LAorCQkJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24oY3h0LT5wc3RhdGUsIGxvY2F0aW9uKSkp OworCisJCQkJcmV0dXJuOworCQkJfQorCQl9CisJfQorCisJLyogbm8gc3VjaCBjb2x1bW4s IHJlcG9ydCBhbiBlcnJvciAqLworCisJZXJlcG9ydChFUlJPUiwKKwkJCShlcnJjb2RlKEVS UkNPREVfVU5ERUZJTkVEX0NPTFVNTiksCisJCQkgZXJybXNnKCJjb2x1bW4gXCIlc1wiIG5h bWVkIGluIGtleSBkb2VzIG5vdCBleGlzdCIsIGNvbG5hbWUpLAorCQkJIHBhcnNlcl9lcnJw b3NpdGlvbihjeHQtPnBzdGF0ZSwgbG9jYXRpb24pKSk7Cit9CisKIC8qCiAgKiB0cmFuc2Zv cm1FeHRlbmRlZFN0YXRpc3RpY3MKICAqICAgICBIYW5kbGUgZXh0ZW5kZWQgc3RhdGlzdGlj IG9iamVjdHMKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMu YyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYwppbmRleCBlZDdmNDBmMDUz Li5mMmRhMjdlYjUwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0 aWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCkBAIC0zMzgs OCArMzM4LDggQEAgc3RhdGljIGNoYXIgKmRlcGFyc2VfZXhwcmVzc2lvbl9wcmV0dHkoTm9k ZSAqZXhwciwgTGlzdCAqZHBjb250ZXh0LAogc3RhdGljIGNoYXIgKnBnX2dldF92aWV3ZGVm X3dvcmtlcihPaWQgdmlld29pZCwKIAkJCQkJCQkJICAgaW50IHByZXR0eUZsYWdzLCBpbnQg d3JhcENvbHVtbik7CiBzdGF0aWMgY2hhciAqcGdfZ2V0X3RyaWdnZXJkZWZfd29ya2VyKE9p ZCB0cmlnaWQsIGJvb2wgcHJldHR5KTsKLXN0YXRpYyBpbnQJZGVjb21waWxlX2NvbHVtbl9p bmRleF9hcnJheShEYXR1bSBjb2x1bW5faW5kZXhfYXJyYXksIE9pZCByZWxJZCwKLQkJCQkJ CQkJCQkgU3RyaW5nSW5mbyBidWYpOworc3RhdGljIGludAlkZWNvbXBpbGVfY29sdW1uX2lu ZGV4X2FycmF5KERhdHVtIGNvbHVtbl9pbmRleF9hcnJheSwgT2lkIHJlbElkLCBPaWQgaW5k ZXhJZCwKKwkJCQkJCQkJCQkgYm9vbCB3aXRob3V0T3ZlcmxhcHMsIFN0cmluZ0luZm8gYnVm KTsKIHN0YXRpYyBjaGFyICpwZ19nZXRfcnVsZWRlZl93b3JrZXIoT2lkIHJ1bGVvaWQsIGlu dCBwcmV0dHlGbGFncyk7CiBzdGF0aWMgY2hhciAqcGdfZ2V0X2luZGV4ZGVmX3dvcmtlcihP aWQgaW5kZXhyZWxpZCwgaW50IGNvbG5vLAogCQkJCQkJCQkJY29uc3QgT2lkICpleGNsdWRl T3BzLApAQCAtMjI0Nyw3ICsyMjQ3LDcgQEAgcGdfZ2V0X2NvbnN0cmFpbnRkZWZfd29ya2Vy KE9pZCBjb25zdHJhaW50SWQsIGJvb2wgZnVsbENvbW1hbmQsCiAJCQkJdmFsID0gU3lzQ2Fj aGVHZXRBdHRyTm90TnVsbChDT05TVFJPSUQsIHR1cCwKIAkJCQkJCQkJCQkJIEFudW1fcGdf Y29uc3RyYWludF9jb25rZXkpOwogCi0JCQkJZGVjb21waWxlX2NvbHVtbl9pbmRleF9hcnJh eSh2YWwsIGNvbkZvcm0tPmNvbnJlbGlkLCAmYnVmKTsKKwkJCQlkZWNvbXBpbGVfY29sdW1u X2luZGV4X2FycmF5KHZhbCwgY29uRm9ybS0+Y29ucmVsaWQsIGNvbkZvcm0tPmNvbmluZGlk LCBmYWxzZSwgJmJ1Zik7CiAKIAkJCQkvKiBhZGQgZm9yZWlnbiByZWxhdGlvbiBuYW1lICov CiAJCQkJYXBwZW5kU3RyaW5nSW5mbygmYnVmLCAiKSBSRUZFUkVOQ0VTICVzKCIsCkBAIC0y MjU4LDcgKzIyNTgsNyBAQCBwZ19nZXRfY29uc3RyYWludGRlZl93b3JrZXIoT2lkIGNvbnN0 cmFpbnRJZCwgYm9vbCBmdWxsQ29tbWFuZCwKIAkJCQl2YWwgPSBTeXNDYWNoZUdldEF0dHJO b3ROdWxsKENPTlNUUk9JRCwgdHVwLAogCQkJCQkJCQkJCQkgQW51bV9wZ19jb25zdHJhaW50 X2NvbmZrZXkpOwogCi0JCQkJZGVjb21waWxlX2NvbHVtbl9pbmRleF9hcnJheSh2YWwsIGNv bkZvcm0tPmNvbmZyZWxpZCwgJmJ1Zik7CisJCQkJZGVjb21waWxlX2NvbHVtbl9pbmRleF9h cnJheSh2YWwsIGNvbkZvcm0tPmNvbmZyZWxpZCwgY29uRm9ybS0+Y29uaW5kaWQsIGZhbHNl LCAmYnVmKTsKIAogCQkJCWFwcGVuZFN0cmluZ0luZm9DaGFyKCZidWYsICcpJyk7CiAKQEAg LTIzNDQsNyArMjM0NCw3IEBAIHBnX2dldF9jb25zdHJhaW50ZGVmX3dvcmtlcihPaWQgY29u c3RyYWludElkLCBib29sIGZ1bGxDb21tYW5kLAogCQkJCWlmICghaXNudWxsKQogCQkJCXsK IAkJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmYnVmLCAiICgiKTsKLQkJCQkJZGVjb21w aWxlX2NvbHVtbl9pbmRleF9hcnJheSh2YWwsIGNvbkZvcm0tPmNvbnJlbGlkLCAmYnVmKTsK KwkJCQkJZGVjb21waWxlX2NvbHVtbl9pbmRleF9hcnJheSh2YWwsIGNvbkZvcm0tPmNvbnJl bGlkLCBJbnZhbGlkT2lkLCBmYWxzZSwgJmJ1Zik7CiAJCQkJCWFwcGVuZFN0cmluZ0luZm9D aGFyKCZidWYsICcpJyk7CiAJCQkJfQogCkBAIC0yMzU3LDYgKzIzNTcsNyBAQCBwZ19nZXRf Y29uc3RyYWludGRlZl93b3JrZXIoT2lkIGNvbnN0cmFpbnRJZCwgYm9vbCBmdWxsQ29tbWFu ZCwKIAkJCQlPaWQJCQlpbmRleElkOwogCQkJCWludAkJCWtleWF0dHM7CiAJCQkJSGVhcFR1 cGxlCWluZHR1cDsKKwkJCQlib29sCQlpc251bGw7CiAKIAkJCQkvKiBTdGFydCBvZmYgdGhl IGNvbnN0cmFpbnQgZGVmaW5pdGlvbiAqLwogCQkJCWlmIChjb25Gb3JtLT5jb250eXBlID09 IENPTlNUUkFJTlRfUFJJTUFSWSkKQEAgLTIzNzksNyArMjM4MCwxNCBAQCBwZ19nZXRfY29u c3RyYWludGRlZl93b3JrZXIoT2lkIGNvbnN0cmFpbnRJZCwgYm9vbCBmdWxsQ29tbWFuZCwK IAkJCQl2YWwgPSBTeXNDYWNoZUdldEF0dHJOb3ROdWxsKENPTlNUUk9JRCwgdHVwLAogCQkJ CQkJCQkJCQkgQW51bV9wZ19jb25zdHJhaW50X2NvbmtleSk7CiAKLQkJCQlrZXlhdHRzID0g ZGVjb21waWxlX2NvbHVtbl9pbmRleF9hcnJheSh2YWwsIGNvbkZvcm0tPmNvbnJlbGlkLCAm YnVmKTsKKwkJCQkvKgorCQkJCSAqIElmIGl0IGhhcyBleGNsdXNpb24tc3R5bGUgb3BlcmF0 b3IgT0lEcworCQkJCSAqIHRoZW4gaXQgdXNlcyBXSVRIT1VUIE9WRVJMQVBTLgorCQkJCSAq LworCQkJCWluZGV4SWQgPSBjb25Gb3JtLT5jb25pbmRpZDsKKwkJCQlTeXNDYWNoZUdldEF0 dHIoQ09OU1RST0lELCB0dXAsCisJCQkJCQkgIEFudW1fcGdfY29uc3RyYWludF9jb25leGNs b3AsICZpc251bGwpOworCQkJCWtleWF0dHMgPSBkZWNvbXBpbGVfY29sdW1uX2luZGV4X2Fy cmF5KHZhbCwgY29uRm9ybS0+Y29ucmVsaWQsIGluZGV4SWQsICFpc251bGwsICZidWYpOwog CiAJCQkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoJmJ1ZiwgJyknKTsKIApAQCAtMjU3NCw4ICsy NTgyLDggQEAgcGdfZ2V0X2NvbnN0cmFpbnRkZWZfd29ya2VyKE9pZCBjb25zdHJhaW50SWQs IGJvb2wgZnVsbENvbW1hbmQsCiAgKiBvZiBrZXlzLgogICovCiBzdGF0aWMgaW50Ci1kZWNv bXBpbGVfY29sdW1uX2luZGV4X2FycmF5KERhdHVtIGNvbHVtbl9pbmRleF9hcnJheSwgT2lk IHJlbElkLAotCQkJCQkJCSBTdHJpbmdJbmZvIGJ1ZikKK2RlY29tcGlsZV9jb2x1bW5faW5k ZXhfYXJyYXkoRGF0dW0gY29sdW1uX2luZGV4X2FycmF5LCBPaWQgcmVsSWQsIE9pZCBpbmRl eElkLAorCQkJCQkJCSBib29sIHdpdGhvdXRPdmVybGFwcywgU3RyaW5nSW5mbyBidWYpCiB7 CiAJRGF0dW0JICAgKmtleXM7CiAJaW50CQkJbktleXM7CkBAIC0yNTg4LDExICsyNTk2LDE0 IEBAIGRlY29tcGlsZV9jb2x1bW5faW5kZXhfYXJyYXkoRGF0dW0gY29sdW1uX2luZGV4X2Fy cmF5LCBPaWQgcmVsSWQsCiAJZm9yIChqID0gMDsgaiA8IG5LZXlzOyBqKyspCiAJewogCQlj aGFyCSAgICpjb2xOYW1lOworCQlpbnQJCQljb2xpZCA9IERhdHVtR2V0SW50MTYoa2V5c1tq XSk7CiAKLQkJY29sTmFtZSA9IGdldF9hdHRuYW1lKHJlbElkLCBEYXR1bUdldEludDE2KGtl eXNbal0pLCBmYWxzZSk7CisJCWNvbE5hbWUgPSBnZXRfYXR0bmFtZShyZWxJZCwgY29saWQs IGZhbHNlKTsKIAogCQlpZiAoaiA9PSAwKQogCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhi dWYsIHF1b3RlX2lkZW50aWZpZXIoY29sTmFtZSkpOworCQllbHNlIGlmICh3aXRob3V0T3Zl cmxhcHMgJiYgaiA9PSBuS2V5cyAtIDEpCisJCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIiwg JXMgV0lUSE9VVCBPVkVSTEFQUyIsIHF1b3RlX2lkZW50aWZpZXIoY29sTmFtZSkpOwogCQll bHNlCiAJCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIiwgJXMiLCBxdW90ZV9pZGVudGlmaWVy KGNvbE5hbWUpKTsKIAl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9y ZWxjYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYwppbmRleCBh NDlhYjQ2NWIzLi44OTI1ZThjYjdkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9j YWNoZS9yZWxjYWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hl LmMKQEAgLTU1MzYsOCArNTUzNiw5IEBAIFJlbGF0aW9uR2V0SWRlbnRpdHlLZXlCaXRtYXAo UmVsYXRpb24gcmVsYXRpb24pCiAgKiBSZWxhdGlvbkdldEV4Y2x1c2lvbkluZm8gLS0gZ2V0 IGluZm8gYWJvdXQgaW5kZXgncyBleGNsdXNpb24gY29uc3RyYWludAogICoKICAqIFRoaXMg c2hvdWxkIGJlIGNhbGxlZCBvbmx5IGZvciBhbiBpbmRleCB0aGF0IGlzIGtub3duIHRvIGhh dmUgYW4KLSAqIGFzc29jaWF0ZWQgZXhjbHVzaW9uIGNvbnN0cmFpbnQuICBJdCByZXR1cm5z IGFycmF5cyAocGFsbG9jJ2QgaW4gY2FsbGVyJ3MKLSAqIGNvbnRleHQpIG9mIHRoZSBleGNs dXNpb24gb3BlcmF0b3IgT0lEcywgdGhlaXIgdW5kZXJseWluZyBmdW5jdGlvbnMnCisgKiBh c3NvY2lhdGVkIGV4Y2x1c2lvbiBjb25zdHJhaW50IG9yIHRlbXBvcmFsIHByaW1hcnkga2V5 L3VuaXF1ZQorICogY29uc3RyYWludC4gSXQgcmV0dXJucyBhcnJheXMgKHBhbGxvYydkIGlu IGNhbGxlcidzIGNvbnRleHQpCisgKiBvZiB0aGUgZXhjbHVzaW9uIG9wZXJhdG9yIE9JRHMs IHRoZWlyIHVuZGVybHlpbmcgZnVuY3Rpb25zJwogICogT0lEcywgYW5kIHRoZWlyIHN0cmF0 ZWd5IG51bWJlcnMgaW4gdGhlIGluZGV4J3Mgb3BjbGFzc2VzLiAgV2UgY2FjaGUKICAqIGFs bCB0aGlzIGluZm9ybWF0aW9uIHNpbmNlIGl0IHJlcXVpcmVzIGEgZmFpciBhbW91bnQgb2Yg d29yayB0byBnZXQuCiAgKi8KQEAgLTU2MDMsNyArNTYwNCwxMCBAQCBSZWxhdGlvbkdldEV4 Y2x1c2lvbkluZm8oUmVsYXRpb24gaW5kZXhSZWxhdGlvbiwKIAkJaW50CQkJbmVsZW07CiAK IAkJLyogV2Ugd2FudCB0aGUgZXhjbHVzaW9uIGNvbnN0cmFpbnQgb3duaW5nIHRoZSBpbmRl eCAqLwotCQlpZiAoY29uZm9ybS0+Y29udHlwZSAhPSBDT05TVFJBSU5UX0VYQ0xVU0lPTiB8 fAorCQlpZiAoKGNvbmZvcm0tPmNvbnR5cGUgIT0gQ09OU1RSQUlOVF9FWENMVVNJT04gJiYK KwkJCQkJIShjb25mb3JtLT5jb250ZW1wb3JhbCAmJiAoCisJCQkJCQkJY29uZm9ybS0+Y29u dHlwZSA9PSBDT05TVFJBSU5UX1BSSU1BUlkKKwkJCQkJCQl8fCBjb25mb3JtLT5jb250eXBl ID09IENPTlNUUkFJTlRfVU5JUVVFKSkpIHx8CiAJCQljb25mb3JtLT5jb25pbmRpZCAhPSBS ZWxhdGlvbkdldFJlbGlkKGluZGV4UmVsYXRpb24pKQogCQkJY29udGludWU7CiAKZGlmZiAt LWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgYi9zcmMvYmluL3BnX2R1bXAvcGdf ZHVtcC5jCmluZGV4IGU4NjM5MTM4NDkuLjU0YTE1Y2Y2NGEgMTAwNjQ0Ci0tLSBhL3NyYy9i aW4vcGdfZHVtcC9wZ19kdW1wLmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwpA QCAtNjk4OSw3ICs2OTg5LDggQEAgZ2V0SW5kZXhlcyhBcmNoaXZlICpmb3V0LCBUYWJsZUlu Zm8gdGJsaW5mb1tdLCBpbnQgbnVtVGFibGVzKQogCQkJCWlfdGFibGVzcGFjZSwKIAkJCQlp X2luZHJlbG9wdGlvbnMsCiAJCQkJaV9pbmRzdGF0Y29scywKLQkJCQlpX2luZHN0YXR2YWxz OworCQkJCWlfaW5kc3RhdHZhbHMsCisJCQkJaV93aXRob3V0b3ZlcmxhcHM7CiAKIAkvKgog CSAqIFdlIHdhbnQgdG8gcGVyZm9ybSBqdXN0IG9uZSBxdWVyeSBhZ2FpbnN0IHBnX2luZGV4 LiAgSG93ZXZlciwgd2UKQEAgLTcwNjQsMTAgKzcwNjUsMTcgQEAgZ2V0SW5kZXhlcyhBcmNo aXZlICpmb3V0LCBUYWJsZUluZm8gdGJsaW5mb1tdLCBpbnQgbnVtVGFibGVzKQogCiAJaWYg KGZvdXQtPnJlbW90ZVZlcnNpb24gPj0gMTUwMDAwKQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0 cihxdWVyeSwKLQkJCQkJCQkgImkuaW5kbnVsbHNub3RkaXN0aW5jdCAiKTsKKwkJCQkJCQkg ImkuaW5kbnVsbHNub3RkaXN0aW5jdCwgIik7CiAJZWxzZQogCQlhcHBlbmRQUUV4cEJ1ZmZl clN0cihxdWVyeSwKLQkJCQkJCQkgImZhbHNlIEFTIGluZG51bGxzbm90ZGlzdGluY3QgIik7 CisJCQkJCQkJICJmYWxzZSBBUyBpbmRudWxsc25vdGRpc3RpbmN0LCAiKTsKKworCWlmIChm b3V0LT5yZW1vdGVWZXJzaW9uID49IDE3MDAwMCkKKwkJYXBwZW5kUFFFeHBCdWZmZXJTdHIo cXVlcnksCisJCQkJCQkJICJjLmNvbmV4Y2xvcCBJUyBOT1QgTlVMTCBBUyB3aXRob3V0b3Zl cmxhcHMgIik7CisJZWxzZQorCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKKwkJCQkJ CQkgIm51bGwgQVMgd2l0aG91dG92ZXJsYXBzICIpOwogCiAJLyoKIAkgKiBUaGUgcG9pbnQg b2YgdGhlIG1lc3N5LWxvb2tpbmcgb3V0ZXIgam9pbiBpcyB0byBmaW5kIGEgY29uc3RyYWlu dCB0aGF0CkBAIC03MTQyLDYgKzcxNTAsNyBAQCBnZXRJbmRleGVzKEFyY2hpdmUgKmZvdXQs IFRhYmxlSW5mbyB0YmxpbmZvW10sIGludCBudW1UYWJsZXMpCiAJaV9pbmRyZWxvcHRpb25z ID0gUFFmbnVtYmVyKHJlcywgImluZHJlbG9wdGlvbnMiKTsKIAlpX2luZHN0YXRjb2xzID0g UFFmbnVtYmVyKHJlcywgImluZHN0YXRjb2xzIik7CiAJaV9pbmRzdGF0dmFscyA9IFBRZm51 bWJlcihyZXMsICJpbmRzdGF0dmFscyIpOworCWlfd2l0aG91dG92ZXJsYXBzID0gUFFmbnVt YmVyKHJlcywgIndpdGhvdXRvdmVybGFwcyIpOwogCiAJaW5keGluZm8gPSAoSW5keEluZm8g KikgcGdfbWFsbG9jKG50dXBzICogc2l6ZW9mKEluZHhJbmZvKSk7CiAKQEAgLTcyNDQsNiAr NzI1Myw3IEBAIGdldEluZGV4ZXMoQXJjaGl2ZSAqZm91dCwgVGFibGVJbmZvIHRibGluZm9b XSwgaW50IG51bVRhYmxlcykKIAkJCQljb25zdHJpbmZvLT5jb25kZWZlcnJlZCA9ICooUFFn ZXR2YWx1ZShyZXMsIGosIGlfY29uZGVmZXJyZWQpKSA9PSAndCc7CiAJCQkJY29uc3RyaW5m by0+Y29uaXNsb2NhbCA9IHRydWU7CiAJCQkJY29uc3RyaW5mby0+c2VwYXJhdGUgPSB0cnVl OworCQkJCWNvbnN0cmluZm8tPndpdGhvdXRvdmVybGFwcyA9ICooUFFnZXR2YWx1ZShyZXMs IGosIGlfd2l0aG91dG92ZXJsYXBzKSkgPT0gJ3QnOwogCiAJCQkJaW5keGluZm9bal0uaW5k ZXhjb25zdHJhaW50ID0gY29uc3RyaW5mby0+ZG9iai5kdW1wSWQ7CiAJCQl9CkBAIC0xNjkz OSw5ICsxNjk0OSwyMiBAQCBkdW1wQ29uc3RyYWludChBcmNoaXZlICpmb3V0LCBjb25zdCBD b25zdHJhaW50SW5mbyAqY29uaW5mbykKIAkJCQkJYnJlYWs7CiAJCQkJYXR0bmFtZSA9IGdl dEF0dHJOYW1lKGluZGtleSwgdGJpbmZvKTsKIAotCQkJCWFwcGVuZFBRRXhwQnVmZmVyKHEs ICIlcyVzIiwKLQkJCQkJCQkJICAoayA9PSAwKSA/ICIiIDogIiwgIiwKLQkJCQkJCQkJICBm bXRJZChhdHRuYW1lKSk7CisJCQkJaWYgKGsgPT0gMCkKKwkJCQl7CisJCQkJCWFwcGVuZFBR RXhwQnVmZmVyKHEsICIlcyIsCisJCQkJCQkJCQkJZm10SWQoYXR0bmFtZSkpOworCQkJCX0K KwkJCQllbHNlIGlmIChrID09IGluZHhpbmZvLT5pbmRua2V5YXR0cnMgLSAxICYmCisJCQkJ CQljb25pbmZvLT53aXRob3V0b3ZlcmxhcHMpCisJCQkJeworCQkJCQlhcHBlbmRQUUV4cEJ1 ZmZlcihxLCAiLCAlcyBXSVRIT1VUIE9WRVJMQVBTIiwKKwkJCQkJCQkJCSAgZm10SWQoYXR0 bmFtZSkpOworCQkJCX0KKwkJCQllbHNlCisJCQkJeworCQkJCQlhcHBlbmRQUUV4cEJ1ZmZl cihxLCAiLCAlcyIsCisJCQkJCQkJCQkJZm10SWQoYXR0bmFtZSkpOworCQkJCX0KIAkJCX0K IAogCQkJaWYgKGluZHhpbmZvLT5pbmRua2V5YXR0cnMgPCBpbmR4aW5mby0+aW5kbmF0dHJz KQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaCBiL3NyYy9iaW4vcGdf ZHVtcC9wZ19kdW1wLmgKaW5kZXggMmZlM2NiZWQ5YS4uYWQ3Y2M4NWI4YyAxMDA2NDQKLS0t IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaAorKysgYi9zcmMvYmluL3BnX2R1bXAvcGdf ZHVtcC5oCkBAIC00ODksNiArNDg5LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX2NvbnN0cmFpbnRJ bmZvCiAJYm9vbAkJY29uZGVmZXJyZWQ7CS8qIHRydWUgaWYgY29uc3RyYWludCBpcyBJTklU SUFMTFkgREVGRVJSRUQgKi8KIAlib29sCQljb25pc2xvY2FsOwkJLyogdHJ1ZSBpZiBjb25z dHJhaW50IGhhcyBsb2NhbCBkZWZpbml0aW9uICovCiAJYm9vbAkJc2VwYXJhdGU7CQkvKiB0 cnVlIGlmIG11c3QgZHVtcCBhcyBzZXBhcmF0ZSBpdGVtICovCisJYm9vbAkJd2l0aG91dG92 ZXJsYXBzOwkvKiB0cnVlIGlmIHRoZSBsYXN0IGVsZW0gaXMgV0lUSE9VVCBPVkVSTEFQUyAq LwogfSBDb25zdHJhaW50SW5mbzsKIAogdHlwZWRlZiBzdHJ1Y3QgX3Byb2NMYW5nSW5mbwpk aWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwgYi9zcmMvYmlu L3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbAppbmRleCBlYjNlYzUzNGI0Li5lYjM1ZDVlZjYw IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbAorKysgYi9z cmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbApAQCAtMTAxNSw2ICsxMDE1LDUyIEBA IG15ICV0ZXN0cyA9ICgKIAkJfSwKIAl9LAogCisJJ0FMVEVSIFRBQkxFIE9OTFkgdGVzdF90 YWJsZV90cGsgQUREIENPTlNUUkFJTlQgLi4uIFBSSU1BUlkgS0VZICguLi4sIC4uLiBXSVRI T1VUIE9WRVJMQVBTKScgPT4geworCQljcmVhdGVfc3FsICA9PiAnQ1JFQVRFIFRBQkxFIGR1 bXBfdGVzdC50ZXN0X3RhYmxlX3RwayAoCisJCQkJCQkJY29sMSBpbnQ0cmFuZ2UsCisJCQkJ CQkJY29sMiB0c3R6cmFuZ2UsCisJCQkJCQkJQ09OU1RSQUlOVCB0ZXN0X3RhYmxlX3Rwa19w a2V5IFBSSU1BUlkgS0VZCisJCQkJCQkJCShjb2wxLCBjb2wyIFdJVEhPVVQgT1ZFUkxBUFMp KTsnLAorCQlyZWdleHAgPT4gcXIvXgorCQkJXFFBTFRFUiBUQUJMRSBPTkxZIGR1bXBfdGVz dC50ZXN0X3RhYmxlX3Rwa1xFIFxuXlxzKworCQkJXFFBREQgQ09OU1RSQUlOVCB0ZXN0X3Rh YmxlX3Rwa19wa2V5IFBSSU1BUlkgS0VZIChjb2wxLCBjb2wyIFdJVEhPVVQgT1ZFUkxBUFMp O1xFCisJCQkveG0sCisJCWxpa2UgPT4geworCQkJJWZ1bGxfcnVucywKKwkJCSVkdW1wX3Rl c3Rfc2NoZW1hX3J1bnMsCisJCQlzZWN0aW9uX3Bvc3RfZGF0YSAgPT4gMSwKKwkJCWV4Y2x1 ZGVfdGVzdF90YWJsZSA9PiAxLAorCQl9LAorCQl1bmxpa2UgPT4geworCQkJb25seV9kdW1w X3Rlc3RfdGFibGUgICAgID0+IDEsCisJCQlleGNsdWRlX2R1bXBfdGVzdF9zY2hlbWEgPT4g MSwKKwkJCW9ubHlfZHVtcF9tZWFzdXJlbWVudCAgICA9PiAxLAorCQl9LAorCX0sCisKKwkn QUxURVIgVEFCTEUgT05MWSB0ZXN0X3RhYmxlX3R1cSBBREQgQ09OU1RSQUlOVCAuLi4gVU5J UVVFICguLi4sIC4uLiBXSVRIT1VUIE9WRVJMQVBTKScgPT4geworCQljcmVhdGVfc3FsICA9 PiAnQ1JFQVRFIFRBQkxFIGR1bXBfdGVzdC50ZXN0X3RhYmxlX3R1cSAoCisJCQkJCQkJY29s MSBpbnQ0cmFuZ2UsCisJCQkJCQkJY29sMiB0c3R6cmFuZ2UsCisJCQkJCQkJQ09OU1RSQUlO VCB0ZXN0X3RhYmxlX3R1cV91cSBVTklRVUUKKwkJCQkJCQkJKGNvbDEsIGNvbDIgV0lUSE9V VCBPVkVSTEFQUykpOycsCisJCXJlZ2V4cCA9PiBxci9eCisJCQlcUUFMVEVSIFRBQkxFIE9O TFkgZHVtcF90ZXN0LnRlc3RfdGFibGVfdHVxXEUgXG5eXHMrCisJCQlcUUFERCBDT05TVFJB SU5UIHRlc3RfdGFibGVfdHVxX3VxIFVOSVFVRSAoY29sMSwgY29sMiBXSVRIT1VUIE9WRVJM QVBTKTtcRQorCQkJL3htLAorCQlsaWtlID0+IHsKKwkJCSVmdWxsX3J1bnMsCisJCQklZHVt cF90ZXN0X3NjaGVtYV9ydW5zLAorCQkJc2VjdGlvbl9wb3N0X2RhdGEgID0+IDEsCisJCQll eGNsdWRlX3Rlc3RfdGFibGUgPT4gMSwKKwkJfSwKKwkJdW5saWtlID0+IHsKKwkJCW9ubHlf ZHVtcF90ZXN0X3RhYmxlICAgICA9PiAxLAorCQkJZXhjbHVkZV9kdW1wX3Rlc3Rfc2NoZW1h ID0+IDEsCisJCQlvbmx5X2R1bXBfbWVhc3VyZW1lbnQgICAgPT4gMSwKKwkJfSwKKwl9LAor CiAJJ0FMVEVSIFRBQkxFIChwYXJ0aXRpb25lZCkgQUREIENPTlNUUkFJTlQgLi4uIEZPUkVJ R04gS0VZJyA9PiB7CiAJCWNyZWF0ZV9vcmRlciA9PiA0LAogCQljcmVhdGVfc3FsID0+ICdD UkVBVEUgVEFCTEUgZHVtcF90ZXN0LnRlc3RfdGFibGVfZmsgKApkaWZmIC0tZ2l0IGEvc3Jj L2Jpbi9wc3FsL2Rlc2NyaWJlLmMgYi9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYwppbmRleCBi YWM5NGEzMzhjLi40ZmJmYzA3NDYwIDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvZGVzY3Jp YmUuYworKysgYi9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYwpAQCAtMjM4NCw2ICsyMzg0LDEw IEBAIGRlc2NyaWJlT25lVGFibGVEZXRhaWxzKGNvbnN0IGNoYXIgKnNjaGVtYW5hbWUsCiAJ CQllbHNlCiAJCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmJ1ZiwgIiwgZmFsc2UgQVMgaW5k aXNyZXBsaWRlbnQiKTsKIAkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZidWYsICIsIGMyLnJl bHRhYmxlc3BhY2UiKTsKKwkJCWlmIChwc2V0LnN2ZXJzaW9uID49IDE2MDAwMCkKKwkJCQlh cHBlbmRQUUV4cEJ1ZmZlclN0cigmYnVmLCAiLCBjb24uY29udGVtcG9yYWwiKTsKKwkJCWVs c2UKKwkJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmYnVmLCAiLCBmYWxzZSBBUyBjb250ZW1w b3JhbCIpOwogCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKIAkJCQkJCQkgICJcbkZST00g cGdfY2F0YWxvZy5wZ19jbGFzcyBjLCBwZ19jYXRhbG9nLnBnX2NsYXNzIGMyLCBwZ19jYXRh bG9nLnBnX2luZGV4IGlcbiIKIAkJCQkJCQkgICIgIExFRlQgSk9JTiBwZ19jYXRhbG9nLnBn X2NvbnN0cmFpbnQgY29uIE9OIChjb25yZWxpZCA9IGkuaW5kcmVsaWQgQU5EIGNvbmluZGlk ID0gaS5pbmRleHJlbGlkIEFORCBjb250eXBlIElOICgncCcsJ3UnLCd4JykpXG4iCkBAIC0y NDA1LDggKzI0MDksMTIgQEAgZGVzY3JpYmVPbmVUYWJsZURldGFpbHMoY29uc3QgY2hhciAq c2NoZW1hbmFtZSwKIAkJCQkJcHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwgIiAgICBcIiVzXCIi LAogCQkJCQkJCQkJICBQUWdldHZhbHVlKHJlc3VsdCwgaSwgMCkpOwogCi0JCQkJCS8qIElm IGV4Y2x1c2lvbiBjb25zdHJhaW50LCBwcmludCB0aGUgY29uc3RyYWludGRlZiAqLwotCQkJ CQlpZiAoc3RyY21wKFBRZ2V0dmFsdWUocmVzdWx0LCBpLCA3KSwgIngiKSA9PSAwKQorCQkJ CQkvKgorCQkJCQkgKiBJZiBleGNsdXNpb24gY29uc3RyYWludCBvciB0ZW1wb3JhbCBQSy9V TklRVUUgY29uc3RyYWludCwKKwkJCQkJICogcHJpbnQgdGhlIGNvbnN0cmFpbnRkZWYKKwkJ CQkJICovCisJCQkJCWlmIChzdHJjbXAoUFFnZXR2YWx1ZShyZXN1bHQsIGksIDcpLCAieCIp ID09IDAgfHwKKwkJCQkJCQlzdHJjbXAoUFFnZXR2YWx1ZShyZXN1bHQsIGksIDEyKSwgInQi KSA9PSAwKQogCQkJCQl7CiAJCQkJCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLCAiICVzIiwK IAkJCQkJCQkJCQkgIFBRZ2V0dmFsdWUocmVzdWx0LCBpLCA2KSk7CmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9jYXRhbG9nL2luZGV4LmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL2luZGV4 LmgKaW5kZXggYTQ3NzBlYWYxMi4uMWE4NThjMzg5NyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvY2F0YWxvZy9pbmRleC5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaApA QCAtOTIsNiArOTIsNyBAQCBleHRlcm4gT2lkCWluZGV4X2NyZWF0ZShSZWxhdGlvbiBoZWFw UmVsYXRpb24sCiAjZGVmaW5lCUlOREVYX0NPTlNUUl9DUkVBVEVfSU5JVF9ERUZFUlJFRAko MSA8PCAyKQogI2RlZmluZQlJTkRFWF9DT05TVFJfQ1JFQVRFX1VQREFURV9JTkRFWAkoMSA8 PCAzKQogI2RlZmluZQlJTkRFWF9DT05TVFJfQ1JFQVRFX1JFTU9WRV9PTERfREVQUwkoMSA8 PCA0KQorI2RlZmluZQlJTkRFWF9DT05TVFJfQ1JFQVRFX1RFTVBPUkFMCQkoMSA8PCA1KQog CiBleHRlcm4gT2lkCWluZGV4X2NvbmN1cnJlbnRseV9jcmVhdGVfY29weShSZWxhdGlvbiBo ZWFwUmVsYXRpb24sCiAJCQkJCQkJCQkJICAgT2lkIG9sZEluZGV4SWQsCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2NvbnN0cmFpbnQuaCBiL3NyYy9pbmNsdWRlL2Nh dGFsb2cvcGdfY29uc3RyYWludC5oCmluZGV4IGEwMjZiNDI1MTUuLjk4YTU2MDc0MWQgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfY29uc3RyYWludC5oCisrKyBiL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvcGdfY29uc3RyYWludC5oCkBAIC0xMDcsNiArMTA3LDEyIEBA IENBVEFMT0cocGdfY29uc3RyYWludCwyNjA2LENvbnN0cmFpbnRSZWxhdGlvbklkKQogCS8q IEhhcyBhIGxvY2FsIGRlZmluaXRpb24gYW5kIGNhbm5vdCBiZSBpbmhlcml0ZWQgKi8KIAli b29sCQljb25ub2luaGVyaXQ7CiAKKwkvKgorCSAqIEZvciBwcmltYXJ5IGFuZCBmb3JlaWdu IGtleXMsIHNpZ25pZmllcyB0aGUgbGFzdCBjb2x1bW4gaXMgYSByYW5nZQorCSAqIGFuZCBz aG91bGQgdXNlIG92ZXJsYXBzIGluc3RlYWQgb2YgZXF1YWxzLgorCSAqLworCWJvb2wJCWNv bnRlbXBvcmFsOworCiAjaWZkZWYgQ0FUQUxPR19WQVJMRU4JCQkvKiB2YXJpYWJsZS1sZW5n dGggZmllbGRzIHN0YXJ0IGhlcmUgKi8KIAogCS8qCkBAIC0xNDYsNyArMTUyLDcgQEAgQ0FU QUxPRyhwZ19jb25zdHJhaW50LDI2MDYsQ29uc3RyYWludFJlbGF0aW9uSWQpCiAKIAkvKgog CSAqIElmIGFuIGV4Y2x1c2lvbiBjb25zdHJhaW50LCB0aGUgT0lEcyBvZiB0aGUgZXhjbHVz aW9uIG9wZXJhdG9ycyBmb3IKLQkgKiBlYWNoIGNvbHVtbiBvZiB0aGUgY29uc3RyYWludAor CSAqIGVhY2ggY29sdW1uIG9mIHRoZSBjb25zdHJhaW50LiBBbHNvIHNldCBmb3IgdGVtcG9y YWwgcHJpbWFyeSBrZXlzLgogCSAqLwogCU9pZAkJCWNvbmV4Y2xvcFsxXSBCS0lfTE9PS1VQ KHBnX29wZXJhdG9yKTsKIApAQCAtMjM2LDYgKzI0Miw3IEBAIGV4dGVybiBPaWQJQ3JlYXRl Q29uc3RyYWludEVudHJ5KGNvbnN0IGNoYXIgKmNvbnN0cmFpbnROYW1lLAogCQkJCQkJCQkg IGJvb2wgY29uSXNMb2NhbCwKIAkJCQkJCQkJICBpbnQgY29uSW5oQ291bnQsCiAJCQkJCQkJ CSAgYm9vbCBjb25Ob0luaGVyaXQsCisJCQkJCQkJCSAgYm9vbCBjb25UZW1wb3JhbCwKIAkJ CQkJCQkJICBib29sIGlzX2ludGVybmFsKTsKIAogZXh0ZXJuIGJvb2wgQ29uc3RyYWludE5h bWVJc1VzZWQoQ29uc3RyYWludENhdGVnb3J5IGNvbkNhdCwgT2lkIG9iaklkLApkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvZGVmcmVtLmggYi9zcmMvaW5jbHVkZS9jb21t YW5kcy9kZWZyZW0uaAppbmRleCAxNzllYjk5MDFmLi5mMTA4ODZmNmNhIDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9jb21tYW5kcy9kZWZyZW0uaAorKysgYi9zcmMvaW5jbHVkZS9jb21t YW5kcy9kZWZyZW0uaApAQCAtNDQsNyArNDQsOCBAQCBleHRlcm4gY2hhciAqQ2hvb3NlUmVs YXRpb25OYW1lKGNvbnN0IGNoYXIgKm5hbWUxLCBjb25zdCBjaGFyICpuYW1lMiwKIGV4dGVy biBib29sIENoZWNrSW5kZXhDb21wYXRpYmxlKE9pZCBvbGRJZCwKIAkJCQkJCQkJIGNvbnN0 IGNoYXIgKmFjY2Vzc01ldGhvZE5hbWUsCiAJCQkJCQkJCSBjb25zdCBMaXN0ICphdHRyaWJ1 dGVMaXN0LAotCQkJCQkJCQkgY29uc3QgTGlzdCAqZXhjbHVzaW9uT3BOYW1lcyk7CisJCQkJ CQkJCSBjb25zdCBMaXN0ICpleGNsdXNpb25PcE5hbWVzLAorCQkJCQkJCQkgYm9vbCBpc3Rl bXBvcmFsKTsKIGV4dGVybiBPaWQJR2V0RGVmYXVsdE9wQ2xhc3MoT2lkIHR5cGVfaWQsIE9p ZCBhbV9pZCk7CiBleHRlcm4gT2lkCVJlc29sdmVPcENsYXNzKGNvbnN0IExpc3QgKm9wY2xh c3MsIE9pZCBhdHRyVHlwZSwKIAkJCQkJCSAgIGNvbnN0IGNoYXIgKmFjY2Vzc01ldGhvZE5h bWUsIE9pZCBhY2Nlc3NNZXRob2RJZCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rl cy9wYXJzZW5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKaW5kZXgg Y2Y3ZTc5MDYyZS4uYmQ1MDY4NjcwYSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMv cGFyc2Vub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaApAQCAt MjY0MSw2ICsyNjQxLDkgQEAgdHlwZWRlZiBzdHJ1Y3QgQ29uc3RyYWludAogCU9pZAkJCW9s ZF9wa3RhYmxlX29pZDsJLyogcGdfY29uc3RyYWludC5jb25mcmVsaWQgb2YgbXkgZm9ybWVy CiAJCQkJCQkJCQkgKiBzZWxmICovCiAKKwkvKiBGaWVsZHMgdXNlZCBmb3IgdGVtcG9yYWwg UFJJTUFSWSBLRVkgYW5kIEZPUkVJR04gS0VZIGNvbnN0cmFpbnRzOiAqLworCU5vZGUJICAg KndpdGhvdXRfb3ZlcmxhcHM7IC8qIFN0cmluZyBub2RlIG5hbWluZyByYW5nZSBjb2x1bW4g Ki8KKwogCS8qIEZpZWxkcyB1c2VkIGZvciBjb25zdHJhaW50cyB0aGF0IGFsbG93IGEgTk9U IFZBTElEIHNwZWNpZmljYXRpb24gKi8KIAlib29sCQlza2lwX3ZhbGlkYXRpb247CS8qIHNr aXAgdmFsaWRhdGlvbiBvZiBleGlzdGluZyByb3dzPyAqLwogCWJvb2wJCWluaXRpYWxseV92 YWxpZDsJLyogbWFyayB0aGUgbmV3IGNvbnN0cmFpbnQgYXMgdmFsaWQ/ICovCkBAIC0zMjQy LDYgKzMyNDUsNyBAQCB0eXBlZGVmIHN0cnVjdCBJbmRleFN0bXQKIAlib29sCQludWxsc19u b3RfZGlzdGluY3Q7IC8qIG51bGwgdHJlYXRtZW50IGZvciBVTklRVUUgY29uc3RyYWludHMg Ki8KIAlib29sCQlwcmltYXJ5OwkJLyogaXMgaW5kZXggYSBwcmltYXJ5IGtleT8gKi8KIAli b29sCQlpc2NvbnN0cmFpbnQ7CS8qIGlzIGl0IGZvciBhIHBrZXkvdW5pcXVlIGNvbnN0cmFp bnQ/ICovCisJYm9vbAkJaXN0ZW1wb3JhbDsJCS8qIGlzIGl0IGZvciBhIHRlbXBvcmFsIHBr ZXk/ICovCiAJYm9vbAkJZGVmZXJyYWJsZTsJCS8qIGlzIHRoZSBjb25zdHJhaW50IERFRkVS UkFCTEU/ICovCiAJYm9vbAkJaW5pdGRlZmVycmVkOwkvKiBpcyB0aGUgY29uc3RyYWludCBJ TklUSUFMTFkgREVGRVJSRUQ/ICovCiAJYm9vbAkJdHJhbnNmb3JtZWQ7CS8qIHRydWUgd2hl biB0cmFuc2Zvcm1JbmRleFN0bXQgaXMgZmluaXNoZWQgKi8KZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvd2l0aG91dF9vdmVybGFwcy5vdXQgYi9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3dpdGhvdXRfb3ZlcmxhcHMub3V0Cm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAuLjM2YWViYzQ1MmYKLS0tIC9kZXYvbnVsbAorKysgYi9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3dpdGhvdXRfb3ZlcmxhcHMub3V0CkBAIC0wLDAg KzEsMzg2IEBACistLSBUZXN0cyBmb3IgV0lUSE9VVCBPVkVSTEFQUy4KKy0tCistLSBXZSBs ZWF2ZSBiZWhpbmQgc2V2ZXJhbCB0YWJsZXMgdG8gdGVzdCBwZ19kdW1wIGV0YzoKKy0tIHRl bXBvcmFsX3JuZywgdGVtcG9yYWxfcm5nMiwKKy0tIHRlbXBvcmFsX2ZrX3JuZzJybmcuCist LQorLS0gdGVzdCBpbnB1dCBwYXJzZXIKKy0tCistLSBQSyB3aXRoIG5vIGNvbHVtbnMganVz dCBXSVRIT1VUIE9WRVJMQVBTOgorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3JuZyAoCisJdmFs aWRfYXQgdHNyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX3JuZ19wayBQUklNQVJZIEtF WSAodmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CitFUlJPUjogIHN5bnRheCBlcnJv ciBhdCBvciBuZWFyICJXSVRIT1VUIgorTElORSAzOiAgQ09OU1RSQUlOVCB0ZW1wb3JhbF9y bmdfcGsgUFJJTUFSWSBLRVkgKHZhbGlkX2F0IFdJVEhPVVQgT1YuLi4KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCistLSBQ SyB3aXRoIGEgcmFuZ2UgY29sdW1uL1BFUklPRCB0aGF0IGlzbid0IHRoZXJlOgorQ1JFQVRF IFRBQkxFIHRlbXBvcmFsX3JuZyAoCisJaWQgSU5URUdFUiwKKwlDT05TVFJBSU5UIHRlbXBv cmFsX3JuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMp CispOworRVJST1I6ICBjb2x1bW4gInZhbGlkX2F0IiBuYW1lZCBpbiBrZXkgZG9lcyBub3Qg ZXhpc3QKK0xJTkUgMzogIENPTlNUUkFJTlQgdGVtcG9yYWxfcm5nX3BrIFBSSU1BUlkgS0VZ IChpZCwgdmFsaWRfYXQgV0lUSE9VLi4uCisgICAgICAgICBeCistLSBQSyB3aXRoIGEgbm9u LXJhbmdlIGNvbHVtbjoKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ybmcgKAorCWlkIElOVEVH RVIsCisJdmFsaWRfYXQgVEVYVCwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX3JuZ19wayBQUklN QVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworRVJST1I6ICBj b2x1bW4gInZhbGlkX2F0IiBpbiBXSVRIT1VUIE9WRVJMQVBTIGlzIG5vdCBhIHJhbmdlIHR5 cGUKK0xJTkUgNDogIENPTlNUUkFJTlQgdGVtcG9yYWxfcm5nX3BrIFBSSU1BUlkgS0VZIChp ZCwgdmFsaWRfYXQgV0lUSE9VLi4uCisgICAgICAgICBeCistLSBQSyB3aXRoIG9uZSBjb2x1 bW4gcGx1cyBhIHJhbmdlOgorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3JuZyAoCisJLS0gU2lu Y2Ugd2UgY2FuJ3QgZGVwZW5kIG9uIGhhdmluZyBidHJlZV9naXN0IGhlcmUsCisJLS0gdXNl IGFuIGludDRyYW5nZSBpbnN0ZWFkIG9mIGFuIGludC4KKwktLSAoVGhlIHJhbmdldHlwZXMg cmVncmVzc2lvbiB0ZXN0IHVzZXMgdGhlIHNhbWUgdHJpY2suKQorCWlkIGludDRyYW5nZSwK Kwl2YWxpZF9hdCB0c3JhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfcm5nX3BrIFBSSU1B UlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CitcZCB0ZW1wb3Jh bF9ybmcKKyAgICAgICAgICAgICAgVGFibGUgInB1YmxpYy50ZW1wb3JhbF9ybmciCisgIENv bHVtbiAgfCAgIFR5cGUgICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1bHQgCist LS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0t CisgaWQgICAgICAgfCBpbnQ0cmFuZ2UgfCAgICAgICAgICAgfCBub3QgbnVsbCB8IAorIHZh bGlkX2F0IHwgdHNyYW5nZSAgIHwgICAgICAgICAgIHwgbm90IG51bGwgfCAKK0luZGV4ZXM6 CisgICAgInRlbXBvcmFsX3JuZ19wayIgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRI T1VUIE9WRVJMQVBTKQorCitTRUxFQ1QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYob2lkKSBGUk9N IHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ubmFtZSA9ICd0ZW1wb3JhbF9ybmdfcGsnOworICAg ICAgICAgICAgcGdfZ2V0X2NvbnN0cmFpbnRkZWYgICAgICAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBQUklNQVJZIEtFWSAoaWQs IHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCisoMSByb3cpCisKK1NFTEVDVCBwZ19nZXRf aW5kZXhkZWYoY29uaW5kaWQsIDAsIHRydWUpIEZST00gcGdfY29uc3RyYWludCBXSEVSRSBj b25uYW1lID0gJ3RlbXBvcmFsX3JuZ19wayc7CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHBnX2dldF9pbmRleGRlZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQ1JFQVRFIFVOSVFVRSBJTkRFWCB0ZW1w b3JhbF9ybmdfcGsgT04gdGVtcG9yYWxfcm5nIFVTSU5HIGdpc3QgKGlkLCB2YWxpZF9hdCkK KygxIHJvdykKKworLS0gUEsgd2l0aCB0d28gY29sdW1ucyBwbHVzIGEgcmFuZ2U6CistLSBX ZSBkb24ndCBkcm9wIHRoaXMgdGFibGUgYmVjYXVzZSB0ZXN0cyBiZWxvdyBhbHNvIG5lZWQg bXVsdGlwbGUgc2NhbGFyIGNvbHVtbnMuCitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcm5nMiAo CisJaWQxIGludDRyYW5nZSwKKwlpZDIgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2Us CisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ybmcyX3BrIFBSSU1BUlkgS0VZIChpZDEsIGlkMiwg dmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CitcZCB0ZW1wb3JhbF9ybmcyCisgICAg ICAgICAgICAgVGFibGUgInB1YmxpYy50ZW1wb3JhbF9ybmcyIgorICBDb2x1bW4gIHwgICBU eXBlICAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0tLS0tLSst LS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLQorIGlkMSAgICAg IHwgaW50NHJhbmdlIHwgICAgICAgICAgIHwgbm90IG51bGwgfCAKKyBpZDIgICAgICB8IGlu dDRyYW5nZSB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgCisgdmFsaWRfYXQgfCB0c3Jhbmdl ICAgfCAgICAgICAgICAgfCBub3QgbnVsbCB8IAorSW5kZXhlczoKKyAgICAidGVtcG9yYWxf cm5nMl9wayIgUFJJTUFSWSBLRVkgKGlkMSwgaWQyLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJM QVBTKQorCitTRUxFQ1QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYob2lkKSBGUk9NIHBnX2NvbnN0 cmFpbnQgV0hFUkUgY29ubmFtZSA9ICd0ZW1wb3JhbF9ybmcyX3BrJzsKKyAgICAgICAgICAg ICAgIHBnX2dldF9jb25zdHJhaW50ZGVmICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgUFJJTUFSWSBLRVkg KGlkMSwgaWQyLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKDEgcm93KQorCitTRUxF Q1QgcGdfZ2V0X2luZGV4ZGVmKGNvbmluZGlkLCAwLCB0cnVlKSBGUk9NIHBnX2NvbnN0cmFp bnQgV0hFUkUgY29ubmFtZSA9ICd0ZW1wb3JhbF9ybmcyX3BrJzsKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF9pbmRleGRlZiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgQ1JFQVRFIFVOSVFVRSBJTkRFWCB0ZW1wb3JhbF9ybmcyX3BrIE9OIHRlbXBvcmFsX3Ju ZzIgVVNJTkcgZ2lzdCAoaWQxLCBpZDIsIHZhbGlkX2F0KQorKDEgcm93KQorCistLSBQSyB3 aXRoIGEgY3VzdG9tIHJhbmdlIHR5cGU6CitDUkVBVEUgVFlQRSB0ZXh0cmFuZ2UyIEFTIHJh bmdlIChzdWJ0eXBlPXRleHQsIGNvbGxhdGlvbj0iQyIpOworQ1JFQVRFIFRBQkxFIHRlbXBv cmFsX3JuZzMgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0ZXh0cmFuZ2UyLAorCUNP TlNUUkFJTlQgdGVtcG9yYWxfcm5nM19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJ VEhPVVQgT1ZFUkxBUFMpCispOworQUxURVIgVEFCTEUgdGVtcG9yYWxfcm5nMyBEUk9QIENP TlNUUkFJTlQgdGVtcG9yYWxfcm5nM19wazsKK0RST1AgVEFCTEUgdGVtcG9yYWxfcm5nMzsK K0RST1AgVFlQRSB0ZXh0cmFuZ2UyOworLS0gVU5JUVVFIHdpdGggbm8gY29sdW1ucyBqdXN0 IFdJVEhPVVQgT1ZFUkxBUFM6CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcm5nMyAoCisJdmFs aWRfYXQgdHNyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX3JuZzNfdXEgVU5JUVVFICh2 YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK0VSUk9SOiAgc3ludGF4IGVycm9yIGF0 IG9yIG5lYXIgIldJVEhPVVQiCitMSU5FIDM6ICBDT05TVFJBSU5UIHRlbXBvcmFsX3JuZzNf dXEgVU5JUVVFICh2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQS4uLgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gVU5JUVVFIHdp dGggYSByYW5nZSBjb2x1bW4vUEVSSU9EIHRoYXQgaXNuJ3QgdGhlcmU6CitDUkVBVEUgVEFC TEUgdGVtcG9yYWxfcm5nMyAoCisJaWQgSU5URUdFUiwKKwlDT05TVFJBSU5UIHRlbXBvcmFs X3JuZzNfdXEgVU5JUVVFIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CitF UlJPUjogIGNvbHVtbiAidmFsaWRfYXQiIG5hbWVkIGluIGtleSBkb2VzIG5vdCBleGlzdAor TElORSAzOiAgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ybmczX3VxIFVOSVFVRSAoaWQsIHZhbGlk X2F0IFdJVEhPVVQgT1YuLi4KKyAgICAgICAgIF4KKy0tIFVOSVFVRSB3aXRoIGEgbm9uLXJh bmdlIGNvbHVtbjoKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ybmczICgKKwlpZCBJTlRFR0VS LAorCXZhbGlkX2F0IFRFWFQsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ybmczX3VxIFVOSVFV RSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworRVJST1I6ICBjb2x1bW4g InZhbGlkX2F0IiBpbiBXSVRIT1VUIE9WRVJMQVBTIGlzIG5vdCBhIHJhbmdlIHR5cGUKK0xJ TkUgNDogIENPTlNUUkFJTlQgdGVtcG9yYWxfcm5nM191cSBVTklRVUUgKGlkLCB2YWxpZF9h dCBXSVRIT1VUIE9WLi4uCisgICAgICAgICBeCistLSBVTklRVUUgd2l0aCBvbmUgY29sdW1u IHBsdXMgYSByYW5nZToKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ybmczICgKKwlpZCBpbnQ0 cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX3JuZzNf dXEgVU5JUVVFIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CitcZCB0ZW1w b3JhbF9ybmczCisgICAgICAgICAgICAgVGFibGUgInB1YmxpYy50ZW1wb3JhbF9ybmczIgor ICBDb2x1bW4gIHwgICBUeXBlICAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0 IAorLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0t LS0tLQorIGlkICAgICAgIHwgaW50NHJhbmdlIHwgICAgICAgICAgIHwgICAgICAgICAgfCAK KyB2YWxpZF9hdCB8IHRzcmFuZ2UgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCitJbmRl eGVzOgorICAgICJ0ZW1wb3JhbF9ybmczX3VxIiBVTklRVUUgKGlkLCB2YWxpZF9hdCBXSVRI T1VUIE9WRVJMQVBTKQorCitTRUxFQ1QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYob2lkKSBGUk9N IHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ubmFtZSA9ICd0ZW1wb3JhbF9ybmczX3VxJzsKKyAg ICAgICAgICBwZ19nZXRfY29uc3RyYWludGRlZiAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBVTklRVUUgKGlkLCB2YWxpZF9hdCBXSVRI T1VUIE9WRVJMQVBTKQorKDEgcm93KQorCitTRUxFQ1QgcGdfZ2V0X2luZGV4ZGVmKGNvbmlu ZGlkLCAwLCB0cnVlKSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ubmFtZSA9ICd0ZW1w b3JhbF9ybmczX3VxJzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dl dF9pbmRleGRlZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgQ1JFQVRFIFVOSVFVRSBJTkRFWCB0ZW1wb3JhbF9ybmcz X3VxIE9OIHRlbXBvcmFsX3JuZzMgVVNJTkcgZ2lzdCAoaWQsIHZhbGlkX2F0KQorKDEgcm93 KQorCitEUk9QIFRBQkxFIHRlbXBvcmFsX3JuZzM7CistLSBVTklRVUUgd2l0aCB0d28gY29s dW1ucyBwbHVzIGEgcmFuZ2U6CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcm5nMyAoCisJaWQx IGludDRyYW5nZSwKKwlpZDIgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UsCisJQ09O U1RSQUlOVCB0ZW1wb3JhbF9ybmczX3VxIFVOSVFVRSAoaWQxLCBpZDIsIHZhbGlkX2F0IFdJ VEhPVVQgT1ZFUkxBUFMpCispOworXGQgdGVtcG9yYWxfcm5nMworICAgICAgICAgICAgIFRh YmxlICJwdWJsaWMudGVtcG9yYWxfcm5nMyIKKyAgQ29sdW1uICB8ICAgVHlwZSAgICB8IENv bGxhdGlvbiB8IE51bGxhYmxlIHwgRGVmYXVsdCAKKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0KKyBpZDEgICAgICB8IGludDRyYW5n ZSB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCisgaWQyICAgICAgfCBpbnQ0cmFuZ2UgfCAg ICAgICAgICAgfCAgICAgICAgICB8IAorIHZhbGlkX2F0IHwgdHNyYW5nZSAgIHwgICAgICAg ICAgIHwgICAgICAgICAgfCAKK0luZGV4ZXM6CisgICAgInRlbXBvcmFsX3JuZzNfdXEiIFVO SVFVRSAoaWQxLCBpZDIsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCisKK1NFTEVDVCBw Z19nZXRfY29uc3RyYWludGRlZihvaWQpIEZST00gcGdfY29uc3RyYWludCBXSEVSRSBjb25u YW1lID0gJ3RlbXBvcmFsX3JuZzNfdXEnOworICAgICAgICAgICAgIHBnX2dldF9jb25zdHJh aW50ZGVmICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIFVOSVFVRSAoaWQxLCBpZDIsIHZhbGlkX2F0IFdJVEhPVVQgT1ZF UkxBUFMpCisoMSByb3cpCisKK1NFTEVDVCBwZ19nZXRfaW5kZXhkZWYoY29uaW5kaWQsIDAs IHRydWUpIEZST00gcGdfY29uc3RyYWludCBXSEVSRSBjb25uYW1lID0gJ3RlbXBvcmFsX3Ju ZzNfdXEnOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X2lu ZGV4ZGVmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBDUkVBVEUgVU5JUVVFIElOREVYIHRlbXBvcmFs X3JuZzNfdXEgT04gdGVtcG9yYWxfcm5nMyBVU0lORyBnaXN0IChpZDEsIGlkMiwgdmFsaWRf YXQpCisoMSByb3cpCisKK0RST1AgVEFCTEUgdGVtcG9yYWxfcm5nMzsKKy0tIFVOSVFVRSB3 aXRoIGEgY3VzdG9tIHJhbmdlIHR5cGU6CitDUkVBVEUgVFlQRSB0ZXh0cmFuZ2UyIEFTIHJh bmdlIChzdWJ0eXBlPXRleHQsIGNvbGxhdGlvbj0iQyIpOworQ1JFQVRFIFRBQkxFIHRlbXBv cmFsX3JuZzMgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0ZXh0cmFuZ2UyLAorCUNP TlNUUkFJTlQgdGVtcG9yYWxfcm5nM191cSBVTklRVUUgKGlkLCB2YWxpZF9hdCBXSVRIT1VU IE9WRVJMQVBTKQorKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX3JuZzMgRFJPUCBDT05TVFJB SU5UIHRlbXBvcmFsX3JuZzNfdXE7CitEUk9QIFRBQkxFIHRlbXBvcmFsX3JuZzM7CitEUk9Q IFRZUEUgdGV4dHJhbmdlMjsKKy0tCistLSB0ZXN0IEFMVEVSIFRBQkxFIEFERCBDT05TVFJB SU5UCistLQorRFJPUCBUQUJMRSB0ZW1wb3JhbF9ybmc7CitDUkVBVEUgVEFCTEUgdGVtcG9y YWxfcm5nICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5nZQorKTsKK0FMVEVS IFRBQkxFIHRlbXBvcmFsX3JuZworCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX3JuZ19wawor CVBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyk7CistLSBQSyB3 aXRoIFVTSU5HIElOREVYIChub3QgcG9zc2libGUpOgorQ1JFQVRFIFRBQkxFIHRlbXBvcmFs MyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UKKyk7CitDUkVBVEUgSU5E RVggaWR4X3RlbXBvcmFsM191cSBPTiB0ZW1wb3JhbDMgVVNJTkcgZ2lzdCAoaWQsIHZhbGlk X2F0KTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsMworCUFERCBDT05TVFJBSU5UIHRlbXBvcmFs M19waworCVBSSU1BUlkgS0VZIFVTSU5HIElOREVYIGlkeF90ZW1wb3JhbDNfdXE7CitFUlJP UjogICJpZHhfdGVtcG9yYWwzX3VxIiBpcyBub3QgYSB1bmlxdWUgaW5kZXgKK0xJTkUgMjog IEFERCBDT05TVFJBSU5UIHRlbXBvcmFsM19waworICAgICAgICAgICAgIF4KK0RFVEFJTDog IENhbm5vdCBjcmVhdGUgYSBwcmltYXJ5IGtleSBvciB1bmlxdWUgY29uc3RyYWludCB1c2lu ZyBzdWNoIGFuIGluZGV4LgorRFJPUCBUQUJMRSB0ZW1wb3JhbDM7CistLSBVTklRVUUgd2l0 aCBVU0lORyBJTkRFWCAobm90IHBvc3NpYmxlKToKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbDMg KAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlCispOworQ1JFQVRFIElOREVY IGlkeF90ZW1wb3JhbDNfdXEgT04gdGVtcG9yYWwzIFVTSU5HIGdpc3QgKGlkLCB2YWxpZF9h dCk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbDMKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbDNf dXEKKwlVTklRVUUgVVNJTkcgSU5ERVggaWR4X3RlbXBvcmFsM191cTsKK0VSUk9SOiAgImlk eF90ZW1wb3JhbDNfdXEiIGlzIG5vdCBhIHVuaXF1ZSBpbmRleAorTElORSAyOiAgQUREIENP TlNUUkFJTlQgdGVtcG9yYWwzX3VxCisgICAgICAgICAgICAgXgorREVUQUlMOiAgQ2Fubm90 IGNyZWF0ZSBhIHByaW1hcnkga2V5IG9yIHVuaXF1ZSBjb25zdHJhaW50IHVzaW5nIHN1Y2gg YW4gaW5kZXguCitEUk9QIFRBQkxFIHRlbXBvcmFsMzsKKy0tIFVOSVFVRSB3aXRoIFVTSU5H IFtVTklRVUVdIElOREVYIChwb3NzaWJsZSBidXQgbm90IGEgdGVtcG9yYWwgY29uc3RyYWlu dCk6CitDUkVBVEUgVEFCTEUgdGVtcG9yYWwzICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRf YXQgdHNyYW5nZQorKTsKK0NSRUFURSBVTklRVUUgSU5ERVggaWR4X3RlbXBvcmFsM191cSBP TiB0ZW1wb3JhbDMgKGlkLCB2YWxpZF9hdCk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbDMKKwlB REQgQ09OU1RSQUlOVCB0ZW1wb3JhbDNfdXEKKwlVTklRVUUgVVNJTkcgSU5ERVggaWR4X3Rl bXBvcmFsM191cTsKK05PVElDRTogIEFMVEVSIFRBQkxFIC8gQUREIENPTlNUUkFJTlQgVVNJ TkcgSU5ERVggd2lsbCByZW5hbWUgaW5kZXggImlkeF90ZW1wb3JhbDNfdXEiIHRvICJ0ZW1w b3JhbDNfdXEiCitEUk9QIFRBQkxFIHRlbXBvcmFsMzsKKy0tIEFkZCByYW5nZSBjb2x1bW4g YW5kIHRoZSBQSyBhdCB0aGUgc2FtZSB0aW1lCitDUkVBVEUgVEFCTEUgdGVtcG9yYWwzICgK KwlpZCBpbnQ0cmFuZ2UKKyk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbDMKKwlBREQgQ09MVU1O IHZhbGlkX2F0IHRzcmFuZ2UsCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWwzX3BrCisJUFJJ TUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKTsKK0RST1AgVEFCTEUg dGVtcG9yYWwzOworLS0gQWRkIHJhbmdlIGNvbHVtbiBhbmQgVU5JUVVFIGNvbnN0cmFpbnQg YXQgdGhlIHNhbWUgdGltZQorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsMyAoCisJaWQgaW50NHJh bmdlCispOworQUxURVIgVEFCTEUgdGVtcG9yYWwzCisJQUREIENPTFVNTiB2YWxpZF9hdCB0 c3JhbmdlLAorCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsM191cQorCVVOSVFVRSAoaWQsIHZh bGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpOworRFJPUCBUQUJMRSB0ZW1wb3JhbDM7CistLQor LS0gdGVzdCBQSyBpbnNlcnRzCistLQorLS0gb2theToKK0lOU0VSVCBJTlRPIHRlbXBvcmFs X3JuZyBWQUxVRVMgKCdbMSwxXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDInLCAnMjAxOC0wMi0w MycpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbMSwxXScsIHRzcmFu Z2UoJzIwMTgtMDMtMDMnLCAnMjAxOC0wNC0wNCcpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFs X3JuZyBWQUxVRVMgKCdbMiwyXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMS0w NScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbMywzXScsIHRzcmFu Z2UoJzIwMTgtMDEtMDEnLCBOVUxMKSk7CistLSBzaG91bGQgZmFpbDoKK0lOU0VSVCBJTlRP IHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbMSwxXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAn MjAxOC0wMS0wNScpKTsKK0VSUk9SOiAgY29uZmxpY3Rpbmcga2V5IHZhbHVlIHZpb2xhdGVz IGV4Y2x1c2lvbiBjb25zdHJhaW50ICJ0ZW1wb3JhbF9ybmdfcGsiCitERVRBSUw6ICBLZXkg KGlkLCB2YWxpZF9hdCk9KFsxLDIpLCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIkZy aSBKYW4gMDUgMDA6MDA6MDAgMjAxOCIpKSBjb25mbGljdHMgd2l0aCBleGlzdGluZyBrZXkg KGlkLCB2YWxpZF9hdCk9KFsxLDIpLCBbIlR1ZSBKYW4gMDIgMDA6MDA6MDAgMjAxOCIsIlNh dCBGZWIgMDMgMDA6MDA6MDAgMjAxOCIpKS4KK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBW QUxVRVMgKE5VTEwsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMS0wNScpKTsKK0VS Uk9SOiAgbnVsbCB2YWx1ZSBpbiBjb2x1bW4gImlkIiBvZiByZWxhdGlvbiAidGVtcG9yYWxf cm5nIiB2aW9sYXRlcyBub3QtbnVsbCBjb25zdHJhaW50CitERVRBSUw6ICBGYWlsaW5nIHJv dyBjb250YWlucyAobnVsbCwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJGcmkgSmFu IDA1IDAwOjAwOjAwIDIwMTgiKSkuCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVT ICgnWzMsM10nLCBOVUxMKTsKK0VSUk9SOiAgbnVsbCB2YWx1ZSBpbiBjb2x1bW4gInZhbGlk X2F0IiBvZiByZWxhdGlvbiAidGVtcG9yYWxfcm5nIiB2aW9sYXRlcyBub3QtbnVsbCBjb25z dHJhaW50CitERVRBSUw6ICBGYWlsaW5nIHJvdyBjb250YWlucyAoWzMsNCksIG51bGwpLgor LS0KKy0tIHRlc3QgYSByYW5nZSB3aXRoIGJvdGggYSBQSyBhbmQgYSBVTklRVUUgY29uc3Ry YWludAorLS0KK0NSRUFURSBUQUJMRSB0ZW1wb3JhbDMgKAorICBpZCBpbnQ0cmFuZ2UsCisg IHZhbGlkX2F0IGRhdGVyYW5nZSwKKyAgaWQyIGludDhyYW5nZSwKKyAgbmFtZSBURVhULAor ICBDT05TVFJBSU5UIHRlbXBvcmFsM19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJ VEhPVVQgT1ZFUkxBUFMpLAorICBDT05TVFJBSU5UIHRlbXBvcmFsM191bmlxIFVOSVFVRSAo aWQyLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK0lOU0VSVCBJTlRPIHRlbXBv cmFsMyAoaWQsIHZhbGlkX2F0LCBpZDIsIG5hbWUpCisgIFZBTFVFUworICAoJ1sxLDFdJywg ZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIwMTAtMDEtMDEnKSwgJ1s3LDddJywgJ2Zvbycp LAorICAoJ1syLDJdJywgZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIwMTAtMDEtMDEnKSwg J1s5LDldJywgJ2JhcicpCis7CitEUk9QIFRBQkxFIHRlbXBvcmFsMzsKKy0tCistLSB0ZXN0 IGNoYW5naW5nIHRoZSBQSydzIGRlcGVuZGVuY2llcworLS0KK0NSRUFURSBUQUJMRSB0ZW1w b3JhbDMgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAorCUNPTlNUUkFJ TlQgdGVtcG9yYWwzX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVS TEFQUykKKyk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbDMgQUxURVIgQ09MVU1OIHZhbGlkX2F0 IERST1AgTk9UIE5VTEw7CitFUlJPUjogIGNvbHVtbiAidmFsaWRfYXQiIGlzIGluIGEgcHJp bWFyeSBrZXkKK0FMVEVSIFRBQkxFIHRlbXBvcmFsMyBBTFRFUiBDT0xVTU4gdmFsaWRfYXQg VFlQRSB0c3R6cmFuZ2UgVVNJTkcgdHN0enJhbmdlKGxvd2VyKHZhbGlkX2F0KSwgdXBwZXIo dmFsaWRfYXQpKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsMyBSRU5BTUUgQ09MVU1OIHZhbGlk X2F0IFRPIHZhbGlkX3RocnU7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbDMgRFJPUCBDT0xVTU4g dmFsaWRfdGhydTsKK0RST1AgVEFCTEUgdGVtcG9yYWwzOworLS0KKy0tIHRlc3QgUEFSVElU SU9OIEJZIGZvciByYW5nZXMKKy0tCistLSB0ZW1wb3JhbCBQUklNQVJZIEtFWToKK0NSRUFU RSBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlk X2F0IGRhdGVyYW5nZSwKKyAgbmFtZSB0ZXh0LAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfcGFy aXRpb25lZF9wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMp CispIFBBUlRJVElPTiBCWSBMSVNUIChpZCk7CitDUkVBVEUgVEFCTEUgdHAxIHBhcnRpdGlv biBPRiB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBGT1IgVkFMVUVTIElOICgnWzEsMV0nLCAnWzIs Ml0nKTsKK0NSRUFURSBUQUJMRSB0cDIgcGFydGl0aW9uIE9GIHRlbXBvcmFsX3BhcnRpdGlv bmVkIEZPUiBWQUxVRVMgSU4gKCdbMywzXScsICdbNCw0XScpOworSU5TRVJUIElOVE8gdGVt cG9yYWxfcGFydGl0aW9uZWQgVkFMVUVTCisgICgnWzEsMV0nLCBkYXRlcmFuZ2UoJzIwMDAt MDEtMDEnLCAnMjAwMC0wMi0wMScpLCAnb25lJyksCisgICgnWzEsMV0nLCBkYXRlcmFuZ2Uo JzIwMDAtMDItMDEnLCAnMjAwMC0wMy0wMScpLCAnb25lJyksCisgICgnWzMsM10nLCBkYXRl cmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAxMC0wMS0wMScpLCAndGhyZWUnKTsKK1NFTEVDVCAq IEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWQgT1JERVIgQlkgaWQsIHZhbGlkX2F0OworICBp ZCAgIHwgICAgICAgIHZhbGlkX2F0ICAgICAgICAgfCBuYW1lICAKKy0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tCisgWzEsMikgfCBbMDEtMDEtMjAwMCwwMi0w MS0yMDAwKSB8IG9uZQorIFsxLDIpIHwgWzAyLTAxLTIwMDAsMDMtMDEtMjAwMCkgfCBvbmUK KyBbMyw0KSB8IFswMS0wMS0yMDAwLDAxLTAxLTIwMTApIHwgdGhyZWUKKygzIHJvd3MpCisK K1NFTEVDVCAqIEZST00gdHAxIE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKKyAgaWQgICB8ICAg ICAgICB2YWxpZF9hdCAgICAgICAgIHwgbmFtZSAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0KKyBbMSwyKSB8IFswMS0wMS0yMDAwLDAyLTAxLTIwMDApIHwg b25lCisgWzEsMikgfCBbMDItMDEtMjAwMCwwMy0wMS0yMDAwKSB8IG9uZQorKDIgcm93cykK KworU0VMRUNUICogRlJPTSB0cDIgT1JERVIgQlkgaWQsIHZhbGlkX2F0OworICBpZCAgIHwg ICAgICAgIHZhbGlkX2F0ICAgICAgICAgfCBuYW1lICAKKy0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tCisgWzMsNCkgfCBbMDEtMDEtMjAwMCwwMS0wMS0yMDEw KSB8IHRocmVlCisoMSByb3cpCisKK0RST1AgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWQ7 CistLSB0ZW1wb3JhbCBVTklRVUU6CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9u ZWQgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCBkYXRlcmFuZ2UsCisgIG5hbWUgdGV4 dCwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX3Bhcml0aW9uZWRfdXEgVU5JUVVFIChpZCwgdmFs aWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKykgUEFSVElUSU9OIEJZIExJU1QgKGlkKTsKK0NS RUFURSBUQUJMRSB0cDEgcGFydGl0aW9uIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkIEZPUiBW QUxVRVMgSU4gKCdbMSwxXScsICdbMiwyXScpOworQ1JFQVRFIFRBQkxFIHRwMiBwYXJ0aXRp b24gT0YgdGVtcG9yYWxfcGFydGl0aW9uZWQgRk9SIFZBTFVFUyBJTiAoJ1szLDNdJywgJ1s0 LDRdJyk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBWQUxVRVMKKyAgKCdb MSwxXScsIGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDAwLTAyLTAxJyksICdvbmUnKSwK KyAgKCdbMSwxXScsIGRhdGVyYW5nZSgnMjAwMC0wMi0wMScsICcyMDAwLTAzLTAxJyksICdv bmUnKSwKKyAgKCdbMywzXScsIGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDEwLTAxLTAx JyksICd0aHJlZScpOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBPUkRF UiBCWSBpZCwgdmFsaWRfYXQ7CisgIGlkICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8 IG5hbWUgIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0KKyBb MSwyKSB8IFswMS0wMS0yMDAwLDAyLTAxLTIwMDApIHwgb25lCisgWzEsMikgfCBbMDItMDEt MjAwMCwwMy0wMS0yMDAwKSB8IG9uZQorIFszLDQpIHwgWzAxLTAxLTIwMDAsMDEtMDEtMjAx MCkgfCB0aHJlZQorKDMgcm93cykKKworU0VMRUNUICogRlJPTSB0cDEgT1JERVIgQlkgaWQs IHZhbGlkX2F0OworICBpZCAgIHwgICAgICAgIHZhbGlkX2F0ICAgICAgICAgfCBuYW1lIAor LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLQorIFsxLDIpIHwgWzAx LTAxLTIwMDAsMDItMDEtMjAwMCkgfCBvbmUKKyBbMSwyKSB8IFswMi0wMS0yMDAwLDAzLTAx LTIwMDApIHwgb25lCisoMiByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHRwMiBPUkRFUiBCWSBp ZCwgdmFsaWRfYXQ7CisgIGlkICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8IG5hbWUg IAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0KKyBbMyw0KSB8 IFswMS0wMS0yMDAwLDAxLTAxLTIwMTApIHwgdGhyZWUKKygxIHJvdykKKworRFJPUCBUQUJM RSB0ZW1wb3JhbF9wYXJ0aXRpb25lZDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mv cGFyYWxsZWxfc2NoZWR1bGUgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxl CmluZGV4IGYwOTg3ZmY1MzcuLjE2NjgzMTQ4ZDIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3Jl Z3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxl bF9zY2hlZHVsZQpAQCAtMjgsNyArMjgsNyBAQCB0ZXN0OiBzdHJpbmdzIG1kNSBudW1lcm9s b2d5IHBvaW50IGxzZWcgbGluZSBib3ggcGF0aCBwb2x5Z29uIGNpcmNsZSBkYXRlIHRpbWUg dAogIyBnZW9tZXRyeSBkZXBlbmRzIG9uIHBvaW50LCBsc2VnLCBsaW5lLCBib3gsIHBhdGgs IHBvbHlnb24sIGNpcmNsZQogIyBob3JvbG9neSBkZXBlbmRzIG9uIGRhdGUsIHRpbWUsIHRp bWV0eiwgdGltZXN0YW1wLCB0aW1lc3RhbXB0eiwgaW50ZXJ2YWwKICMgLS0tLS0tLS0tLQot dGVzdDogZ2VvbWV0cnkgaG9yb2xvZ3kgdHN0eXBlcyByZWdleCB0eXBlX3Nhbml0eSBvcHJf c2FuaXR5IG1pc2Nfc2FuaXR5IGNvbW1lbnRzIGV4cHJlc3Npb25zIHVuaWNvZGUgeGlkIG12 Y2MKK3Rlc3Q6IGdlb21ldHJ5IGhvcm9sb2d5IHRzdHlwZXMgcmVnZXggdHlwZV9zYW5pdHkg b3ByX3Nhbml0eSBtaXNjX3Nhbml0eSBjb21tZW50cyBleHByZXNzaW9ucyB1bmljb2RlIHhp ZCBtdmNjIHdpdGhvdXRfb3ZlcmxhcHMKIAogIyAtLS0tLS0tLS0tCiAjIExvYWQgaHVnZSBh bW91bnRzIG9mIGRhdGEKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3dpdGhv dXRfb3ZlcmxhcHMuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvd2l0aG91dF9vdmVybGFw cy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uYmYxMTUxYWI0 NQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3dpdGhvdXRfb3Zl cmxhcHMuc3FsCkBAIC0wLDAgKzEsMjgyIEBACistLSBUZXN0cyBmb3IgV0lUSE9VVCBPVkVS TEFQUy4KKy0tCistLSBXZSBsZWF2ZSBiZWhpbmQgc2V2ZXJhbCB0YWJsZXMgdG8gdGVzdCBw Z19kdW1wIGV0YzoKKy0tIHRlbXBvcmFsX3JuZywgdGVtcG9yYWxfcm5nMiwKKy0tIHRlbXBv cmFsX2ZrX3JuZzJybmcuCisKKy0tCistLSB0ZXN0IGlucHV0IHBhcnNlcgorLS0KKworLS0g UEsgd2l0aCBubyBjb2x1bW5zIGp1c3QgV0lUSE9VVCBPVkVSTEFQUzoKKworQ1JFQVRFIFRB QkxFIHRlbXBvcmFsX3JuZyAoCisJdmFsaWRfYXQgdHNyYW5nZSwKKwlDT05TVFJBSU5UIHRl bXBvcmFsX3JuZ19wayBQUklNQVJZIEtFWSAodmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykK Kyk7CisKKy0tIFBLIHdpdGggYSByYW5nZSBjb2x1bW4vUEVSSU9EIHRoYXQgaXNuJ3QgdGhl cmU6CisKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ybmcgKAorCWlkIElOVEVHRVIsCisJQ09O U1RSQUlOVCB0ZW1wb3JhbF9ybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRI T1VUIE9WRVJMQVBTKQorKTsKKworLS0gUEsgd2l0aCBhIG5vbi1yYW5nZSBjb2x1bW46CisK K0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ybmcgKAorCWlkIElOVEVHRVIsCisJdmFsaWRfYXQg VEVYVCwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX3JuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZh bGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworCistLSBQSyB3aXRoIG9uZSBjb2x1bW4g cGx1cyBhIHJhbmdlOgorCitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcm5nICgKKwktLSBTaW5j ZSB3ZSBjYW4ndCBkZXBlbmQgb24gaGF2aW5nIGJ0cmVlX2dpc3QgaGVyZSwKKwktLSB1c2Ug YW4gaW50NHJhbmdlIGluc3RlYWQgb2YgYW4gaW50LgorCS0tIChUaGUgcmFuZ2V0eXBlcyBy ZWdyZXNzaW9uIHRlc3QgdXNlcyB0aGUgc2FtZSB0cmljay4pCisJaWQgaW50NHJhbmdlLAor CXZhbGlkX2F0IHRzcmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ybmdfcGsgUFJJTUFS WSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK1xkIHRlbXBvcmFs X3JuZworU0VMRUNUIHBnX2dldF9jb25zdHJhaW50ZGVmKG9pZCkgRlJPTSBwZ19jb25zdHJh aW50IFdIRVJFIGNvbm5hbWUgPSAndGVtcG9yYWxfcm5nX3BrJzsKK1NFTEVDVCBwZ19nZXRf aW5kZXhkZWYoY29uaW5kaWQsIDAsIHRydWUpIEZST00gcGdfY29uc3RyYWludCBXSEVSRSBj b25uYW1lID0gJ3RlbXBvcmFsX3JuZ19wayc7CisKKy0tIFBLIHdpdGggdHdvIGNvbHVtbnMg cGx1cyBhIHJhbmdlOgorLS0gV2UgZG9uJ3QgZHJvcCB0aGlzIHRhYmxlIGJlY2F1c2UgdGVz dHMgYmVsb3cgYWxzbyBuZWVkIG11bHRpcGxlIHNjYWxhciBjb2x1bW5zLgorQ1JFQVRFIFRB QkxFIHRlbXBvcmFsX3JuZzIgKAorCWlkMSBpbnQ0cmFuZ2UsCisJaWQyIGludDRyYW5nZSwK Kwl2YWxpZF9hdCB0c3JhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfcm5nMl9wayBQUklN QVJZIEtFWSAoaWQxLCBpZDIsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworXGQg dGVtcG9yYWxfcm5nMgorU0VMRUNUIHBnX2dldF9jb25zdHJhaW50ZGVmKG9pZCkgRlJPTSBw Z19jb25zdHJhaW50IFdIRVJFIGNvbm5hbWUgPSAndGVtcG9yYWxfcm5nMl9wayc7CitTRUxF Q1QgcGdfZ2V0X2luZGV4ZGVmKGNvbmluZGlkLCAwLCB0cnVlKSBGUk9NIHBnX2NvbnN0cmFp bnQgV0hFUkUgY29ubmFtZSA9ICd0ZW1wb3JhbF9ybmcyX3BrJzsKKworCistLSBQSyB3aXRo IGEgY3VzdG9tIHJhbmdlIHR5cGU6CitDUkVBVEUgVFlQRSB0ZXh0cmFuZ2UyIEFTIHJhbmdl IChzdWJ0eXBlPXRleHQsIGNvbGxhdGlvbj0iQyIpOworQ1JFQVRFIFRBQkxFIHRlbXBvcmFs X3JuZzMgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0ZXh0cmFuZ2UyLAorCUNPTlNU UkFJTlQgdGVtcG9yYWxfcm5nM19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhP VVQgT1ZFUkxBUFMpCispOworQUxURVIgVEFCTEUgdGVtcG9yYWxfcm5nMyBEUk9QIENPTlNU UkFJTlQgdGVtcG9yYWxfcm5nM19wazsKK0RST1AgVEFCTEUgdGVtcG9yYWxfcm5nMzsKK0RS T1AgVFlQRSB0ZXh0cmFuZ2UyOworCistLSBVTklRVUUgd2l0aCBubyBjb2x1bW5zIGp1c3Qg V0lUSE9VVCBPVkVSTEFQUzoKKworQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3JuZzMgKAorCXZh bGlkX2F0IHRzcmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ybmczX3VxIFVOSVFVRSAo dmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CisKKy0tIFVOSVFVRSB3aXRoIGEgcmFu Z2UgY29sdW1uL1BFUklPRCB0aGF0IGlzbid0IHRoZXJlOgorCitDUkVBVEUgVEFCTEUgdGVt cG9yYWxfcm5nMyAoCisJaWQgSU5URUdFUiwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX3JuZzNf dXEgVU5JUVVFIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CisKKy0tIFVO SVFVRSB3aXRoIGEgbm9uLXJhbmdlIGNvbHVtbjoKKworQ1JFQVRFIFRBQkxFIHRlbXBvcmFs X3JuZzMgKAorCWlkIElOVEVHRVIsCisJdmFsaWRfYXQgVEVYVCwKKwlDT05TVFJBSU5UIHRl bXBvcmFsX3JuZzNfdXEgVU5JUVVFIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykK Kyk7CisKKy0tIFVOSVFVRSB3aXRoIG9uZSBjb2x1bW4gcGx1cyBhIHJhbmdlOgorCitDUkVB VEUgVEFCTEUgdGVtcG9yYWxfcm5nMyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRz cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ybmczX3VxIFVOSVFVRSAoaWQsIHZhbGlk X2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworXGQgdGVtcG9yYWxfcm5nMworU0VMRUNUIHBn X2dldF9jb25zdHJhaW50ZGVmKG9pZCkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbm5h bWUgPSAndGVtcG9yYWxfcm5nM191cSc7CitTRUxFQ1QgcGdfZ2V0X2luZGV4ZGVmKGNvbmlu ZGlkLCAwLCB0cnVlKSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ubmFtZSA9ICd0ZW1w b3JhbF9ybmczX3VxJzsKK0RST1AgVEFCTEUgdGVtcG9yYWxfcm5nMzsKKworLS0gVU5JUVVF IHdpdGggdHdvIGNvbHVtbnMgcGx1cyBhIHJhbmdlOgorQ1JFQVRFIFRBQkxFIHRlbXBvcmFs X3JuZzMgKAorCWlkMSBpbnQ0cmFuZ2UsCisJaWQyIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0 c3JhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfcm5nM191cSBVTklRVUUgKGlkMSwgaWQy LCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK1xkIHRlbXBvcmFsX3JuZzMKK1NF TEVDVCBwZ19nZXRfY29uc3RyYWludGRlZihvaWQpIEZST00gcGdfY29uc3RyYWludCBXSEVS RSBjb25uYW1lID0gJ3RlbXBvcmFsX3JuZzNfdXEnOworU0VMRUNUIHBnX2dldF9pbmRleGRl Zihjb25pbmRpZCwgMCwgdHJ1ZSkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbm5hbWUg PSAndGVtcG9yYWxfcm5nM191cSc7CitEUk9QIFRBQkxFIHRlbXBvcmFsX3JuZzM7CisKKy0t IFVOSVFVRSB3aXRoIGEgY3VzdG9tIHJhbmdlIHR5cGU6CitDUkVBVEUgVFlQRSB0ZXh0cmFu Z2UyIEFTIHJhbmdlIChzdWJ0eXBlPXRleHQsIGNvbGxhdGlvbj0iQyIpOworQ1JFQVRFIFRB QkxFIHRlbXBvcmFsX3JuZzMgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0ZXh0cmFu Z2UyLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfcm5nM191cSBVTklRVUUgKGlkLCB2YWxpZF9h dCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX3JuZzMgRFJP UCBDT05TVFJBSU5UIHRlbXBvcmFsX3JuZzNfdXE7CitEUk9QIFRBQkxFIHRlbXBvcmFsX3Ju ZzM7CitEUk9QIFRZUEUgdGV4dHJhbmdlMjsKKworLS0KKy0tIHRlc3QgQUxURVIgVEFCTEUg QUREIENPTlNUUkFJTlQKKy0tCisKK0RST1AgVEFCTEUgdGVtcG9yYWxfcm5nOworQ1JFQVRF IFRBQkxFIHRlbXBvcmFsX3JuZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFu Z2UKKyk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ybmcKKwlBREQgQ09OU1RSQUlOVCB0ZW1w b3JhbF9ybmdfcGsKKwlQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxB UFMpOworCistLSBQSyB3aXRoIFVTSU5HIElOREVYIChub3QgcG9zc2libGUpOgorQ1JFQVRF IFRBQkxFIHRlbXBvcmFsMyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UK Kyk7CitDUkVBVEUgSU5ERVggaWR4X3RlbXBvcmFsM191cSBPTiB0ZW1wb3JhbDMgVVNJTkcg Z2lzdCAoaWQsIHZhbGlkX2F0KTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsMworCUFERCBDT05T VFJBSU5UIHRlbXBvcmFsM19waworCVBSSU1BUlkgS0VZIFVTSU5HIElOREVYIGlkeF90ZW1w b3JhbDNfdXE7CitEUk9QIFRBQkxFIHRlbXBvcmFsMzsKKworLS0gVU5JUVVFIHdpdGggVVNJ TkcgSU5ERVggKG5vdCBwb3NzaWJsZSk6CitDUkVBVEUgVEFCTEUgdGVtcG9yYWwzICgKKwlp ZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5nZQorKTsKK0NSRUFURSBJTkRFWCBpZHhf dGVtcG9yYWwzX3VxIE9OIHRlbXBvcmFsMyBVU0lORyBnaXN0IChpZCwgdmFsaWRfYXQpOwor QUxURVIgVEFCTEUgdGVtcG9yYWwzCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWwzX3VxCisJ VU5JUVVFIFVTSU5HIElOREVYIGlkeF90ZW1wb3JhbDNfdXE7CitEUk9QIFRBQkxFIHRlbXBv cmFsMzsKKworLS0gVU5JUVVFIHdpdGggVVNJTkcgW1VOSVFVRV0gSU5ERVggKHBvc3NpYmxl IGJ1dCBub3QgYSB0ZW1wb3JhbCBjb25zdHJhaW50KToKK0NSRUFURSBUQUJMRSB0ZW1wb3Jh bDMgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlCispOworQ1JFQVRFIFVO SVFVRSBJTkRFWCBpZHhfdGVtcG9yYWwzX3VxIE9OIHRlbXBvcmFsMyAoaWQsIHZhbGlkX2F0 KTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsMworCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsM191 cQorCVVOSVFVRSBVU0lORyBJTkRFWCBpZHhfdGVtcG9yYWwzX3VxOworRFJPUCBUQUJMRSB0 ZW1wb3JhbDM7CisKKy0tIEFkZCByYW5nZSBjb2x1bW4gYW5kIHRoZSBQSyBhdCB0aGUgc2Ft ZSB0aW1lCitDUkVBVEUgVEFCTEUgdGVtcG9yYWwzICgKKwlpZCBpbnQ0cmFuZ2UKKyk7CitB TFRFUiBUQUJMRSB0ZW1wb3JhbDMKKwlBREQgQ09MVU1OIHZhbGlkX2F0IHRzcmFuZ2UsCisJ QUREIENPTlNUUkFJTlQgdGVtcG9yYWwzX3BrCisJUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9h dCBXSVRIT1VUIE9WRVJMQVBTKTsKK0RST1AgVEFCTEUgdGVtcG9yYWwzOworCistLSBBZGQg cmFuZ2UgY29sdW1uIGFuZCBVTklRVUUgY29uc3RyYWludCBhdCB0aGUgc2FtZSB0aW1lCitD UkVBVEUgVEFCTEUgdGVtcG9yYWwzICgKKwlpZCBpbnQ0cmFuZ2UKKyk7CitBTFRFUiBUQUJM RSB0ZW1wb3JhbDMKKwlBREQgQ09MVU1OIHZhbGlkX2F0IHRzcmFuZ2UsCisJQUREIENPTlNU UkFJTlQgdGVtcG9yYWwzX3VxCisJVU5JUVVFIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVS TEFQUyk7CitEUk9QIFRBQkxFIHRlbXBvcmFsMzsKKworLS0KKy0tIHRlc3QgUEsgaW5zZXJ0 cworLS0KKworLS0gb2theToKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdb MSwxXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDInLCAnMjAxOC0wMi0wMycpKTsKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbMSwxXScsIHRzcmFuZ2UoJzIwMTgtMDMtMDMn LCAnMjAxOC0wNC0wNCcpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdb MiwyXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMS0wNScpKTsKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbMywzXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEn LCBOVUxMKSk7CisKKy0tIHNob3VsZCBmYWlsOgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5n IFZBTFVFUyAoJ1sxLDFdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAxLTA1Jykp OworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoTlVMTCwgdHNyYW5nZSgnMjAx OC0wMS0wMScsICcyMDE4LTAxLTA1JykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZB TFVFUyAoJ1szLDNdJywgTlVMTCk7CisKKy0tCistLSB0ZXN0IGEgcmFuZ2Ugd2l0aCBib3Ro IGEgUEsgYW5kIGEgVU5JUVVFIGNvbnN0cmFpbnQKKy0tCisKK0NSRUFURSBUQUJMRSB0ZW1w b3JhbDMgKAorICBpZCBpbnQ0cmFuZ2UsCisgIHZhbGlkX2F0IGRhdGVyYW5nZSwKKyAgaWQy IGludDhyYW5nZSwKKyAgbmFtZSBURVhULAorICBDT05TVFJBSU5UIHRlbXBvcmFsM19wayBQ UklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpLAorICBDT05TVFJB SU5UIHRlbXBvcmFsM191bmlxIFVOSVFVRSAoaWQyLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJM QVBTKQorKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsMyAoaWQsIHZhbGlkX2F0LCBpZDIsIG5h bWUpCisgIFZBTFVFUworICAoJ1sxLDFdJywgZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIw MTAtMDEtMDEnKSwgJ1s3LDddJywgJ2ZvbycpLAorICAoJ1syLDJdJywgZGF0ZXJhbmdlKCcy MDAwLTAxLTAxJywgJzIwMTAtMDEtMDEnKSwgJ1s5LDldJywgJ2JhcicpCis7CitEUk9QIFRB QkxFIHRlbXBvcmFsMzsKKworLS0KKy0tIHRlc3QgY2hhbmdpbmcgdGhlIFBLJ3MgZGVwZW5k ZW5jaWVzCistLQorCitDUkVBVEUgVEFCTEUgdGVtcG9yYWwzICgKKwlpZCBpbnQ0cmFuZ2Us CisJdmFsaWRfYXQgdHNyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsM19wayBQUklNQVJZ IEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworCitBTFRFUiBUQUJM RSB0ZW1wb3JhbDMgQUxURVIgQ09MVU1OIHZhbGlkX2F0IERST1AgTk9UIE5VTEw7CitBTFRF UiBUQUJMRSB0ZW1wb3JhbDMgQUxURVIgQ09MVU1OIHZhbGlkX2F0IFRZUEUgdHN0enJhbmdl IFVTSU5HIHRzdHpyYW5nZShsb3dlcih2YWxpZF9hdCksIHVwcGVyKHZhbGlkX2F0KSk7CitB TFRFUiBUQUJMRSB0ZW1wb3JhbDMgUkVOQU1FIENPTFVNTiB2YWxpZF9hdCBUTyB2YWxpZF90 aHJ1OworQUxURVIgVEFCTEUgdGVtcG9yYWwzIERST1AgQ09MVU1OIHZhbGlkX3RocnU7CitE Uk9QIFRBQkxFIHRlbXBvcmFsMzsKKworLS0KKy0tIHRlc3QgUEFSVElUSU9OIEJZIGZvciBy YW5nZXMKKy0tCisKKy0tIHRlbXBvcmFsIFBSSU1BUlkgS0VZOgorQ1JFQVRFIFRBQkxFIHRl bXBvcmFsX3BhcnRpdGlvbmVkICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgZGF0ZXJh bmdlLAorICBuYW1lIHRleHQsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJpdGlvbmVkX3Br IFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKykgUEFSVElU SU9OIEJZIExJU1QgKGlkKTsKK0NSRUFURSBUQUJMRSB0cDEgcGFydGl0aW9uIE9GIHRlbXBv cmFsX3BhcnRpdGlvbmVkIEZPUiBWQUxVRVMgSU4gKCdbMSwxXScsICdbMiwyXScpOworQ1JF QVRFIFRBQkxFIHRwMiBwYXJ0aXRpb24gT0YgdGVtcG9yYWxfcGFydGl0aW9uZWQgRk9SIFZB TFVFUyBJTiAoJ1szLDNdJywgJ1s0LDRdJyk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0 aXRpb25lZCBWQUxVRVMKKyAgKCdbMSwxXScsIGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcy MDAwLTAyLTAxJyksICdvbmUnKSwKKyAgKCdbMSwxXScsIGRhdGVyYW5nZSgnMjAwMC0wMi0w MScsICcyMDAwLTAzLTAxJyksICdvbmUnKSwKKyAgKCdbMywzXScsIGRhdGVyYW5nZSgnMjAw MC0wMS0wMScsICcyMDEwLTAxLTAxJyksICd0aHJlZScpOworU0VMRUNUICogRlJPTSB0ZW1w b3JhbF9wYXJ0aXRpb25lZCBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CitTRUxFQ1QgKiBGUk9N IHRwMSBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CitTRUxFQ1QgKiBGUk9NIHRwMiBPUkRFUiBC WSBpZCwgdmFsaWRfYXQ7CitEUk9QIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkOworCist LSB0ZW1wb3JhbCBVTklRVUU6CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWQg KAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCBkYXRlcmFuZ2UsCisgIG5hbWUgdGV4dCwK KwlDT05TVFJBSU5UIHRlbXBvcmFsX3Bhcml0aW9uZWRfdXEgVU5JUVVFIChpZCwgdmFsaWRf YXQgV0lUSE9VVCBPVkVSTEFQUykKKykgUEFSVElUSU9OIEJZIExJU1QgKGlkKTsKK0NSRUFU RSBUQUJMRSB0cDEgcGFydGl0aW9uIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkIEZPUiBWQUxV RVMgSU4gKCdbMSwxXScsICdbMiwyXScpOworQ1JFQVRFIFRBQkxFIHRwMiBwYXJ0aXRpb24g T0YgdGVtcG9yYWxfcGFydGl0aW9uZWQgRk9SIFZBTFVFUyBJTiAoJ1szLDNdJywgJ1s0LDRd Jyk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBWQUxVRVMKKyAgKCdbMSwx XScsIGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDAwLTAyLTAxJyksICdvbmUnKSwKKyAg KCdbMSwxXScsIGRhdGVyYW5nZSgnMjAwMC0wMi0wMScsICcyMDAwLTAzLTAxJyksICdvbmUn KSwKKyAgKCdbMywzXScsIGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDEwLTAxLTAxJyks ICd0aHJlZScpOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBPUkRFUiBC WSBpZCwgdmFsaWRfYXQ7CitTRUxFQ1QgKiBGUk9NIHRwMSBPUkRFUiBCWSBpZCwgdmFsaWRf YXQ7CitTRUxFQ1QgKiBGUk9NIHRwMiBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CitEUk9QIFRB QkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkOwotLSAKMi40Mi4wCgo= --------------ZGWE1dX84ltsryTlZEe40gG3 Content-Type: text/x-patch; charset=UTF-8; name="v17-0002-Add-temporal-FOREIGN-KEYs.patch" Content-Disposition: attachment; filename="v17-0002-Add-temporal-FOREIGN-KEYs.patch" Content-Transfer-Encoding: base64 RnJvbSAyNmRkMDVhYTNiN2JmM2RlNjFlZGQ1MDJiNDVhOWVlMmFlNzY1NDI5IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IFN1biwgMjcgSnVuIDIwMjEgMTI6NTg6NTEgLTA3 MDAKU3ViamVjdDogW1BBVENIIHYxNyAyLzVdIEFkZCB0ZW1wb3JhbCBGT1JFSUdOIEtFWXMK Ci0gQWRkZWQgYmlzb24gc3VwcG9ydCBmb3IgdGVtcG9yYWwgRk9SRUlHTiBLRVlzLiBUaGV5 IHNob3VsZCBoYXZlIGEKICByYW5nZSBjb2x1bW4gZm9yIHRoZSB0ZW1wb3JhbCBjb21wb25l bnQuCi0gQWRkZWQgdGVtcG9yYWwgdHJpZ2dlciBmdW5jdGlvbnMgYWtpbiB0byBleGlzdGlu ZyBSSSB0cmlnZ2VyCiAgZnVuY3Rpb25zLgotIERvbid0IHlldCBzdXBwb3J0IE9OIHtVUERB VEUsREVMRVRFfSB7Q0FTQ0FERSxTRVQgTlVMTCxTRVQgREVGQVVMVH0uCi0gQWRkZWQgcGdf ZHVtcCBzdXBwb3J0LgotIFNob3cgdGhlIGNvcnJlY3Qgc3ludGF4IGluIHBzcWwgXGQgb3V0 cHV0IGZvciBmb3JlaWduIGtleXMuCi0gQWRkZWQgdGVzdHMgYW5kIGRvY3VtZW50YXRpb24u Ci0tLQogZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFibGUuc2dtbCAgICAgICAgICAgIHwg IDQ4ICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyAgICAgICAgICAgICAg fCA3NzcgKysrKysrKysrKystLS0tLS0tCiBzcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55ICAg ICAgICAgICAgICAgICAgICAgfCAgMzcgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9yaV90 cmlnZ2Vycy5jICAgICAgICAgICB8IDM0MiArKysrKysrLQogc3JjL2JhY2tlbmQvdXRpbHMv YWR0L3J1bGV1dGlscy5jICAgICAgICAgICAgIHwgIDE5ICstCiBzcmMvaW5jbHVkZS9jYXRh bG9nL3BnX2NvbnN0cmFpbnQuaCAgICAgICAgICAgfCAgIDggKy0KIHNyYy9pbmNsdWRlL2Nh dGFsb2cvcGdfcHJvYy5kYXQgICAgICAgICAgICAgICB8ICAyNCArCiBzcmMvaW5jbHVkZS9u b2Rlcy9wYXJzZW5vZGVzLmggICAgICAgICAgICAgICAgfCAgIDIgKwogc3JjL2luY2x1ZGUv cGFyc2VyL2t3bGlzdC5oICAgICAgICAgICAgICAgICAgIHwgICAxICsKIC4uLi9yZWdyZXNz L2V4cGVjdGVkL3dpdGhvdXRfb3ZlcmxhcHMub3V0ICAgICB8IDUxMCArKysrKysrKysrKysK IHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3dpdGhvdXRfb3ZlcmxhcHMuc3FsICAgICB8IDQ4OCAr KysrKysrKysrKwogMTEgZmlsZXMgY2hhbmdlZCwgMTkxMyBpbnNlcnRpb25zKCspLCAzNDMg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFi bGUuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3RhYmxlLnNnbWwKaW5kZXggYWQ1 YmYyMTQ1My4uMzMyOWE4ZGVhMSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVh dGVfdGFibGUuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90YWJsZS5zZ21s CkBAIC04MSw3ICs4MSw3IEBAIENSRUFURSBbIFsgR0xPQkFMIHwgTE9DQUwgXSB7IFRFTVBP UkFSWSB8IFRFTVAgfSB8IFVOTE9HR0VEIF0gVEFCTEUgWyBJRiBOT1QgRVhJCiAgIFVOSVFV RSBbIE5VTExTIFsgTk9UIF0gRElTVElOQ1QgXSAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLiBdIFssIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj50ZW1wb3JhbF9pbnRlcnZhbDwvcmVwbGFjZWFibGU+ IFdJVEhPVVQgT1ZFUkxBUFMgXSApIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5p bmRleF9wYXJhbWV0ZXJzPC9yZXBsYWNlYWJsZT4gfAogICBQUklNQVJZIEtFWSAoIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFss IC4uLiBdIFssIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50ZW1wb3JhbF9pbnRl cnZhbDwvcmVwbGFjZWFibGU+IFdJVEhPVVQgT1ZFUkxBUFMgXSApIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5pbmRleF9wYXJhbWV0ZXJzPC9yZXBsYWNlYWJsZT4gfAogICBF WENMVURFIFsgVVNJTkcgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmluZGV4X21l dGhvZDwvcmVwbGFjZWFibGU+IF0gKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ ZXhjbHVkZV9lbGVtZW50PC9yZXBsYWNlYWJsZT4gV0lUSCA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+b3BlcmF0b3I8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSApIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5pbmRleF9wYXJhbWV0ZXJzPC9yZXBsYWNlYWJsZT4g WyBXSEVSRSAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wcmVkaWNhdGU8L3Jl cGxhY2VhYmxlPiApIF0gfAotICBGT1JFSUdOIEtFWSAoIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLiBdICkgUkVGRVJF TkNFUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVmdGFibGU8L3JlcGxhY2Vh YmxlPiBbICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJlZmNvbHVtbjwvcmVw bGFjZWFibGU+IFssIC4uLiBdICkgXQorICBGT1JFSUdOIEtFWSAoIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLiBdIFss IFBFUklPRCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGVtcG9yYWxfaW50ZXJ2 YWw8L3JlcGxhY2VhYmxlPiBdICkgUkVGRVJFTkNFUyA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+cmVmdGFibGU8L3JlcGxhY2VhYmxlPiBbICggPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnJlZmNvbHVtbjwvcmVwbGFjZWFibGU+IFssIC4uLiBdIFssIFBFUklP RCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGVtcG9yYWxfaW50ZXJ2YWw8L3Jl cGxhY2VhYmxlPiBdICkgXQogICAgIFsgTUFUQ0ggRlVMTCB8IE1BVENIIFBBUlRJQUwgfCBN QVRDSCBTSU1QTEUgXSBbIE9OIERFTEVURSA8cmVwbGFjZWFibGUKIGNsYXNzPSJwYXJhbWV0 ZXIiPnJlZmVyZW50aWFsX2FjdGlvbjwvcmVwbGFjZWFibGU+IF0gWyBPTiBVUERBVEUgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJlZmVyZW50aWFsX2FjdGlvbjwvcmVwbGFj ZWFibGU+IF0gfQogWyBERUZFUlJBQkxFIHwgTk9UIERFRkVSUkFCTEUgXSBbIElOSVRJQUxM WSBERUZFUlJFRCB8IElOSVRJQUxMWSBJTU1FRElBVEUgXQpAQCAtMTE1Niw4ICsxMTU2LDgg QEAgV0lUSCAoIE1PRFVMVVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bWVy aWNfbGl0ZXJhbDwvcmVwbGFjZWFibGU+LCBSRU0KICAgIDx2YXJsaXN0ZW50cnkgaWQ9InNx bC1jcmVhdGV0YWJsZS1wYXJtcy1yZWZlcmVuY2VzIj4KICAgICA8dGVybT48bGl0ZXJhbD5S RUZFUkVOQ0VTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yZWZ0YWJsZTwvcmVw bGFjZWFibGU+IFsgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVmY29sdW1u PC9yZXBsYWNlYWJsZT4gKSBdIFsgTUFUQ0ggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPm1hdGNodHlwZTwvcmVwbGFjZWFibGU+IF0gWyBPTiBERUxFVEUgPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPnJlZmVyZW50aWFsX2FjdGlvbjwvcmVwbGFjZWFibGU+IF0g WyBPTiBVUERBVEUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJlZmVyZW50aWFs X2FjdGlvbjwvcmVwbGFjZWFibGU+IF08L2xpdGVyYWw+IChjb2x1bW4gY29uc3RyYWludCk8 L3Rlcm0+CiAKLSAgIDx0ZXJtPjxsaXRlcmFsPkZPUkVJR04gS0VZICggPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0g KQotICAgIFJFRkVSRU5DRVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJlZnRh YmxlPC9yZXBsYWNlYWJsZT4gWyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5y ZWZjb2x1bW48L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSApIF0KKyAgIDx0ZXJtPjxsaXRlcmFs PkZPUkVJR04gS0VZICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9u YW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gWywgUEVSSU9EIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj50ZW1wb3JhbF9pbnRlcnZhbDwvcmVwbGFjZWFibGU+IF0gKQorICAg IFJFRkVSRU5DRVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJlZnRhYmxlPC9y ZXBsYWNlYWJsZT4gWyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yZWZjb2x1 bW48L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSBbLCBQRVJJT0QgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnRlbXBvcmFsX2ludGVydmFsPC9yZXBsYWNlYWJsZT4gXSApIF0KICAg ICBbIE1BVENIIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5tYXRjaHR5cGU8L3Jl cGxhY2VhYmxlPiBdCiAgICAgWyBPTiBERUxFVEUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPnJlZmVyZW50aWFsX2FjdGlvbjwvcmVwbGFjZWFibGU+IF0KICAgICBbIE9OIFVQ REFURSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVmZXJlbnRpYWxfYWN0aW9u PC9yZXBsYWNlYWJsZT4gXTwvbGl0ZXJhbD4KQEAgLTExNjgsMTEgKzExNjgsMjkgQEAgV0lU SCAoIE1PRFVMVVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bWVyaWNfbGl0 ZXJhbDwvcmVwbGFjZWFibGU+LCBSRU0KICAgICAgIFRoZXNlIGNsYXVzZXMgc3BlY2lmeSBh IGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQsIHdoaWNoIHJlcXVpcmVzCiAgICAgICB0aGF0IGEg Z3JvdXAgb2Ygb25lIG9yIG1vcmUgY29sdW1ucyBvZiB0aGUgbmV3IHRhYmxlIG11c3Qgb25s eQogICAgICAgY29udGFpbiB2YWx1ZXMgdGhhdCBtYXRjaCB2YWx1ZXMgaW4gdGhlIHJlZmVy ZW5jZWQKLSAgICAgIGNvbHVtbihzKSBvZiBzb21lIHJvdyBvZiB0aGUgcmVmZXJlbmNlZCB0 YWJsZS4gIElmIHRoZSA8cmVwbGFjZWFibGUKKyAgICAgIGNvbHVtbihzKSBvZiBzb21lIHJv dyBvZiB0aGUgcmVmZXJlbmNlZCB0YWJsZS4KKyAgICAgIElmIHRoZSA8cmVwbGFjZWFibGUK ICAgICAgIGNsYXNzPSJwYXJhbWV0ZXIiPnJlZmNvbHVtbjwvcmVwbGFjZWFibGU+IGxpc3Qg aXMgb21pdHRlZCwgdGhlCiAgICAgICBwcmltYXJ5IGtleSBvZiB0aGUgPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPnJlZnRhYmxlPC9yZXBsYWNlYWJsZT4KICAgICAgIGlzIHVz ZWQuICBUaGUgcmVmZXJlbmNlZCBjb2x1bW5zIG11c3QgYmUgdGhlIGNvbHVtbnMgb2YgYSBu b24tZGVmZXJyYWJsZQotICAgICAgdW5pcXVlIG9yIHByaW1hcnkga2V5IGNvbnN0cmFpbnQg aW4gdGhlIHJlZmVyZW5jZWQgdGFibGUuICBUaGUgdXNlcgorICAgICAgdW5pcXVlIG9yIHBy aW1hcnkga2V5IGNvbnN0cmFpbnQgaW4gdGhlIHJlZmVyZW5jZWQgdGFibGUuCisgICAgIDwv cGFyYT4KKworICAgICA8cGFyYT4KKyAgICAgIElmIHRoZSBsYXN0IGNvbHVtbiBpcyBtYXJr ZWQgd2l0aCA8bGl0ZXJhbD5QRVJJT0Q8L2xpdGVyYWw+LAorICAgICAgaXQgbXVzdCBiZSBh IHBlcmlvZCBvciByYW5nZSBjb2x1bW4sIGFuZCB0aGUgcmVmZXJlbmNlZCB0YWJsZQorICAg ICAgbXVzdCBoYXZlIGEgdGVtcG9yYWwgcHJpbWFyeSBrZXkuCisgICAgICBUaGUgbm9uLTxs aXRlcmFsPlBFUklPRDwvbGl0ZXJhbD4gY29sdW1ucyBhcmUgdHJlYXRlZCBub3JtYWxseQor ICAgICAgKGFuZCB0aGVyZSBtdXN0IGJlIGF0IGxlYXN0IG9uZSBvZiB0aGVtKSwKKyAgICAg IGJ1dCB0aGUgPGxpdGVyYWw+UEVSSU9EPC9saXRlcmFsPiBjb2x1bW4gaXMgbm90IGNvbXBh cmVkIGZvciBlcXVhbGl0eS4KKyAgICAgIEluc3RlYWQgdGhlIGNvbnN0cmFpbnQgaXMgY29u c2lkZXJlZCBzYXRpc2ZpZWQKKyAgICAgIGlmIHRoZSByZWZlcmVuY2VkIHRhYmxlIGhhcyBt YXRjaGluZyByZWNvcmRzIHdob3NlIGNvbWJpbmVkIHJhbmdlcyBjb21wbGV0ZWx5IGNvdmVy CisgICAgICB0aGUgcmVmZXJlbmNpbmcgcmVjb3JkLgorICAgICAgSW4gb3RoZXIgd29yZHMs IHRoZSByZWZlcmVuY2UgbXVzdCBoYXZlIGEgcmVmZXJlbnQgZm9yIGl0cyBlbnRpcmUgZHVy YXRpb24uCisgICAgIDwvcGFyYT4KKworICAgICA8cGFyYT4KKyAgICAgIFRoZSB1c2VyCiAg ICAgICBtdXN0IGhhdmUgPGxpdGVyYWw+UkVGRVJFTkNFUzwvbGl0ZXJhbD4gcGVybWlzc2lv biBvbiB0aGUgcmVmZXJlbmNlZCB0YWJsZQogICAgICAgKGVpdGhlciB0aGUgd2hvbGUgdGFi bGUsIG9yIHRoZSBzcGVjaWZpYyByZWZlcmVuY2VkIGNvbHVtbnMpLiAgVGhlCiAgICAgICBh ZGRpdGlvbiBvZiBhIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgcmVxdWlyZXMgYQpAQCAtMTI0 Niw2ICsxMjY0LDEyIEBAIFdJVEggKCBNT0RVTFVTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5udW1lcmljX2xpdGVyYWw8L3JlcGxhY2VhYmxlPiwgUkVNCiAgICAgICAgICAg dmFsdWVzIG9mIHRoZSByZWZlcmVuY2luZyBjb2x1bW4ocykgdG8gdGhlIG5ldyB2YWx1ZXMg b2YgdGhlCiAgICAgICAgICAgcmVmZXJlbmNlZCBjb2x1bW5zLCByZXNwZWN0aXZlbHkuCiAg ICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICBJbiBhIHRl bXBvcmFsIGZvcmVpZ24ga2V5LCB0aGUgZGVsZXRlL3VwZGF0ZSB3aWxsIHVzZQorICAgICAg ICAgIDxsaXRlcmFsPkZPUiBQT1JUSU9OIE9GPC9saXRlcmFsPiBzZW1hbnRpY3MgdG8gY29u c3RyYWluIHRoZQorICAgICAgICAgIGVmZmVjdCB0byB0aGUgYm91bmRzIGJlaW5nIGRlbGV0 ZWQvdXBkYXRlZCBpbiB0aGUgcmVmZXJlbmNlZCByb3cuCisgICAgICAgICA8L3BhcmE+CiAg ICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAKQEAgLTEyNTcs NiArMTI4MSwxMyBAQCBXSVRIICggTU9EVUxVUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+bnVtZXJpY19saXRlcmFsPC9yZXBsYWNlYWJsZT4sIFJFTQogICAgICAgICAgIHJl ZmVyZW5jaW5nIGNvbHVtbnMsIHRvIG51bGwuIEEgc3Vic2V0IG9mIGNvbHVtbnMgY2FuIG9u bHkgYmUKICAgICAgICAgICBzcGVjaWZpZWQgZm9yIDxsaXRlcmFsPk9OIERFTEVURTwvbGl0 ZXJhbD4gYWN0aW9ucy4KICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgPHBhcmE+Cisg ICAgICAgICAgSW4gYSB0ZW1wb3JhbCBmb3JlaWduIGtleSwgdGhlIGNoYW5nZSB3aWxsIHVz ZSA8bGl0ZXJhbD5GT1IgUE9SVElPTgorICAgICAgICAgIE9GPC9saXRlcmFsPiBzZW1hbnRp Y3MgdG8gY29uc3RyYWluIHRoZSBlZmZlY3QgdG8gdGhlIGJvdW5kcyBiZWluZworICAgICAg ICAgIGRlbGV0ZWQvdXBkYXRlZCBpbiB0aGUgcmVmZXJlbmNlZCByb3cuIFRoZSBjb2x1bW4g bWFrZWQgd2l0aAorICAgICAgICAgIDxsaXRlcmFsPlBFUklPRDwvbGl0ZXJhbD4gd2lsbCBu b3QgYmUgc2V0IHRvIG51bGwuCisgICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvbGlzdGl0 ZW0+CiAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAKQEAgLTEyNzAsNiArMTMwMSwxMyBAQCBX SVRIICggTU9EVUxVUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtZXJpY19s aXRlcmFsPC9yZXBsYWNlYWJsZT4sIFJFTQogICAgICAgICAgIChUaGVyZSBtdXN0IGJlIGEg cm93IGluIHRoZSByZWZlcmVuY2VkIHRhYmxlIG1hdGNoaW5nIHRoZSBkZWZhdWx0CiAgICAg ICAgICAgdmFsdWVzLCBpZiB0aGV5IGFyZSBub3QgbnVsbCwgb3IgdGhlIG9wZXJhdGlvbiB3 aWxsIGZhaWwuKQogICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICA8cGFyYT4KKyAgICAg ICAgICBJbiBhIHRlbXBvcmFsIGZvcmVpZ24ga2V5LCB0aGUgY2hhbmdlIHdpbGwgdXNlIDxs aXRlcmFsPkZPUiBQT1JUSU9OCisgICAgICAgICAgT0Y8L2xpdGVyYWw+IHNlbWFudGljcyB0 byBjb25zdHJhaW4gdGhlIGVmZmVjdCB0byB0aGUgYm91bmRzIGJlaW5nCisgICAgICAgICAg ZGVsZXRlZC91cGRhdGVkIGluIHRoZSByZWZlcmVuY2VkIHJvdy4gVGhlIGNvbHVtbiBtYXJr ZWQgd2l0aAorICAgICAgICAgIDxsaXRlcmFsPlBFUklPRDwvbGl0ZXJhbD4gd2l0aCBub3Qg YmUgc2V0IHRvIGEgZGVmYXVsdCB2YWx1ZS4KKyAgICAgICAgIDwvcGFyYT4KICAgICAgICAg PC9saXN0aXRlbT4KICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgIDwvdmFyaWFibGVs aXN0PgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgYi9z cmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwppbmRleCA3YzYyN2Q2YTY2Li5jNmNj MDc4MzhhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwor KysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwpAQCAtMzgwLDE3ICszODAs MjAgQEAgc3RhdGljIGludAl0cmFuc2Zvcm1Db2x1bW5OYW1lTGlzdChPaWQgcmVsSWQsIExp c3QgKmNvbExpc3QsCiAJCQkJCQkJCQlpbnQxNiAqYXR0bnVtcywgT2lkICphdHR0eXBpZHMp Owogc3RhdGljIGludAl0cmFuc2Zvcm1Ga2V5R2V0UHJpbWFyeUtleShSZWxhdGlvbiBwa3Jl bCwgT2lkICppbmRleE9pZCwKIAkJCQkJCQkJCSAgIExpc3QgKiphdHRuYW1lbGlzdCwKKwkJ CQkJCQkJCSAgIE5vZGUgKipwa19wZXJpb2QsCiAJCQkJCQkJCQkgICBpbnQxNiAqYXR0bnVt cywgT2lkICphdHR0eXBpZHMsCisJCQkJCQkJCQkgICBpbnQxNiAqcGVyaW9kYXR0bnVtcywg T2lkICpwZXJpb2RhdHR0eXBpZHMsCiAJCQkJCQkJCQkgICBPaWQgKm9wY2xhc3Nlcyk7CiBz dGF0aWMgT2lkCXRyYW5zZm9ybUZrZXlDaGVja0F0dHJzKFJlbGF0aW9uIHBrcmVsLAogCQkJ CQkJCQkJaW50IG51bWF0dHJzLCBpbnQxNiAqYXR0bnVtcywKKwkJCQkJCQkJCWJvb2wgaXNf dGVtcG9yYWwsIGludDE2IHBlcmlvZGF0dG51bSwKIAkJCQkJCQkJCU9pZCAqb3BjbGFzc2Vz KTsKIHN0YXRpYyB2b2lkIGNoZWNrRmtleVBlcm1pc3Npb25zKFJlbGF0aW9uIHJlbCwgaW50 MTYgKmF0dG51bXMsIGludCBuYXR0cyk7CiBzdGF0aWMgQ29lcmNpb25QYXRoVHlwZSBmaW5k RmtleUNhc3QoT2lkIHRhcmdldFR5cGVJZCwgT2lkIHNvdXJjZVR5cGVJZCwKIAkJCQkJCQkJ CSBPaWQgKmZ1bmNpZCk7CiBzdGF0aWMgdm9pZCB2YWxpZGF0ZUZvcmVpZ25LZXlDb25zdHJh aW50KGNoYXIgKmNvbm5hbWUsCiAJCQkJCQkJCQkJIFJlbGF0aW9uIHJlbCwgUmVsYXRpb24g cGtyZWwsCi0JCQkJCQkJCQkJIE9pZCBwa2luZE9pZCwgT2lkIGNvbnN0cmFpbnRPaWQpOwor CQkJCQkJCQkJCSBPaWQgcGtpbmRPaWQsIE9pZCBjb25zdHJhaW50T2lkLCBib29sIHRlbXBv cmFsKTsKIHN0YXRpYyB2b2lkIEFUQ29udHJvbGxlcihBbHRlclRhYmxlU3RtdCAqcGFyc2V0 cmVlLAogCQkJCQkJIFJlbGF0aW9uIHJlbCwgTGlzdCAqY21kcywgYm9vbCByZWN1cnNlLCBM T0NLTU9ERSBsb2NrbW9kZSwKIAkJCQkJCSBBbHRlclRhYmxlVXRpbGl0eUNvbnRleHQgKmNv bnRleHQpOwpAQCAtNTAwLDcgKzUwMyw4IEBAIHN0YXRpYyBPYmplY3RBZGRyZXNzIGFkZEZr UmVjdXJzZVJlZmVyZW5jZWQoTGlzdCAqKndxdWV1ZSwgQ29uc3RyYWludCAqZmtjb25zdHJh CiAJCQkJCQkJCQkJCU9pZCAqcGZlcW9wZXJhdG9ycywgT2lkICpwcGVxb3BlcmF0b3JzLCBP aWQgKmZmZXFvcGVyYXRvcnMsCiAJCQkJCQkJCQkJCWludCBudW1ma2RlbHNldGNvbHMsIGlu dDE2ICpma2RlbHNldGNvbHMsCiAJCQkJCQkJCQkJCWJvb2wgb2xkX2NoZWNrX29rLAotCQkJ CQkJCQkJCQlPaWQgcGFyZW50RGVsVHJpZ2dlciwgT2lkIHBhcmVudFVwZFRyaWdnZXIpOwor CQkJCQkJCQkJCQlPaWQgcGFyZW50RGVsVHJpZ2dlciwgT2lkIHBhcmVudFVwZFRyaWdnZXIs CisJCQkJCQkJCQkJCWJvb2wgaXNfdGVtcG9yYWwpOwogc3RhdGljIHZvaWQgdmFsaWRhdGVG a09uRGVsZXRlU2V0Q29sdW1ucyhpbnQgbnVtZmtzLCBjb25zdCBpbnQxNiAqZmthdHRudW1z LAogCQkJCQkJCQkJCSBpbnQgbnVtZmtzZXRjb2xzLCBjb25zdCBpbnQxNiAqZmtzZXRjb2xz YXR0bnVtcywKIAkJCQkJCQkJCQkgTGlzdCAqZmtzZXRjb2xzKTsKQEAgLTUxMCw3ICs1MTQs OSBAQCBzdGF0aWMgdm9pZCBhZGRGa1JlY3Vyc2VSZWZlcmVuY2luZyhMaXN0ICoqd3F1ZXVl LCBDb25zdHJhaW50ICpma2NvbnN0cmFpbnQsCiAJCQkJCQkJCQlPaWQgKnBmZXFvcGVyYXRv cnMsIE9pZCAqcHBlcW9wZXJhdG9ycywgT2lkICpmZmVxb3BlcmF0b3JzLAogCQkJCQkJCQkJ aW50IG51bWZrZGVsc2V0Y29scywgaW50MTYgKmZrZGVsc2V0Y29scywKIAkJCQkJCQkJCWJv b2wgb2xkX2NoZWNrX29rLCBMT0NLTU9ERSBsb2NrbW9kZSwKLQkJCQkJCQkJCU9pZCBwYXJl bnRJbnNUcmlnZ2VyLCBPaWQgcGFyZW50VXBkVHJpZ2dlcik7CisJCQkJCQkJCQlPaWQgcGFy ZW50SW5zVHJpZ2dlciwgT2lkIHBhcmVudFVwZFRyaWdnZXIsCisJCQkJCQkJCQlib29sIGlz X3RlbXBvcmFsKTsKKwogc3RhdGljIHZvaWQgQ2xvbmVGb3JlaWduS2V5Q29uc3RyYWludHMo TGlzdCAqKndxdWV1ZSwgUmVsYXRpb24gcGFyZW50UmVsLAogCQkJCQkJCQkJICAgUmVsYXRp b24gcGFydGl0aW9uUmVsKTsKIHN0YXRpYyB2b2lkIENsb25lRmtSZWZlcmVuY2VkKFJlbGF0 aW9uIHBhcmVudFJlbCwgUmVsYXRpb24gcGFydGl0aW9uUmVsKTsKQEAgLTU0Miw2ICs1NDgs MTIgQEAgc3RhdGljIHZvaWQgR2V0Rm9yZWlnbktleUNoZWNrVHJpZ2dlcnMoUmVsYXRpb24g dHJpZ3JlbCwKIAkJCQkJCQkJCSAgIE9pZCBjb25vaWQsIE9pZCBjb25mcmVsaWQsIE9pZCBj b25yZWxpZCwKIAkJCQkJCQkJCSAgIE9pZCAqaW5zZXJ0VHJpZ2dlck9pZCwKIAkJCQkJCQkJ CSAgIE9pZCAqdXBkYXRlVHJpZ2dlck9pZCk7CitzdGF0aWMgdm9pZCBGaW5kRktDb21wYXJp c29uT3BlcmF0b3JzKENvbnN0cmFpbnQgKmZrY29uc3RyYWludCwKKwkJCQkJQWx0ZXJlZFRh YmxlSW5mbyAqdGFiLCBpbnQgaSwgaW50MTYgKmZrYXR0bnVtLAorCQkJCQlib29sICpvbGRf Y2hlY2tfb2ssIExpc3RDZWxsICoqb2xkX3BmZXFvcF9pdGVtLAorCQkJCQlPaWQgcGt0eXBl LCBPaWQgZmt0eXBlLCBPaWQgb3BjbGFzcywKKwkJCQkJYm9vbCBpc190ZW1wb3JhbCwgYm9v bCBmb3Jfb3ZlcmxhcHMsCisJCQkJCU9pZCAqcGZlcW9wT3V0LCBPaWQgKnBwZXFvcE91dCwg T2lkICpmZmVxb3BPdXQpOwogc3RhdGljIHZvaWQgQVRFeGVjRHJvcENvbnN0cmFpbnQoUmVs YXRpb24gcmVsLCBjb25zdCBjaGFyICpjb25zdHJOYW1lLAogCQkJCQkJCQkgRHJvcEJlaGF2 aW9yIGJlaGF2aW9yLCBib29sIHJlY3Vyc2UsCiAJCQkJCQkJCSBib29sIG1pc3Npbmdfb2ss IExPQ0tNT0RFIGxvY2ttb2RlKTsKQEAgLTU4OTksNyArNTkxMSw4IEBAIEFUUmV3cml0ZVRh YmxlcyhBbHRlclRhYmxlU3RtdCAqcGFyc2V0cmVlLCBMaXN0ICoqd3F1ZXVlLCBMT0NLTU9E RSBsb2NrbW9kZSwKIAogCQkJCXZhbGlkYXRlRm9yZWlnbktleUNvbnN0cmFpbnQoZmtjb25z dHJhaW50LT5jb25uYW1lLCByZWwsIHJlZnJlbCwKIAkJCQkJCQkJCQkJIGNvbi0+cmVmaW5k aWQsCi0JCQkJCQkJCQkJCSBjb24tPmNvbmlkKTsKKwkJCQkJCQkJCQkJIGNvbi0+Y29uaWQs CisJCQkJCQkJCQkJCSBjb24tPmNvbnRlbXBvcmFsKTsKIAogCQkJCS8qCiAJCQkJICogTm8g bmVlZCB0byBtYXJrIHRoZSBjb25zdHJhaW50IHJvdyBhcyB2YWxpZGF0ZWQsIHdlIGRpZApA QCAtOTUxOSw2ICs5NTMyLDExIEBAIEFUQWRkRm9yZWlnbktleUNvbnN0cmFpbnQoTGlzdCAq KndxdWV1ZSwgQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLCBSZWxhdGlvbiByZWwsCiAJT2lkCQkJ cHBlcW9wZXJhdG9yc1tJTkRFWF9NQVhfS0VZU10gPSB7MH07CiAJT2lkCQkJZmZlcW9wZXJh dG9yc1tJTkRFWF9NQVhfS0VZU10gPSB7MH07CiAJaW50MTYJCWZrZGVsc2V0Y29sc1tJTkRF WF9NQVhfS0VZU10gPSB7MH07CisJYm9vbAkJaXNfdGVtcG9yYWwgPSAoZmtjb25zdHJhaW50 LT5ma19wZXJpb2QgIT0gTlVMTCk7CisJaW50MTYJCXBrcGVyaW9kYXR0bnVtc1sxXSA9IHsw fTsKKwlpbnQxNgkJZmtwZXJpb2RhdHRudW1zWzFdID0gezB9OworCU9pZAkJCXBrcGVyaW9k dHlwb2lkc1sxXSA9IHswfTsKKwlPaWQJCQlma3BlcmlvZHR5cG9pZHNbMV0gPSB7MH07CiAJ aW50CQkJaTsKIAlpbnQJCQludW1ma3MsCiAJCQkJbnVtcGtzLApAQCAtOTYxMyw2ICs5NjMx LDEwIEBAIEFUQWRkRm9yZWlnbktleUNvbnN0cmFpbnQoTGlzdCAqKndxdWV1ZSwgQWx0ZXJl ZFRhYmxlSW5mbyAqdGFiLCBSZWxhdGlvbiByZWwsCiAJbnVtZmtzID0gdHJhbnNmb3JtQ29s dW1uTmFtZUxpc3QoUmVsYXRpb25HZXRSZWxpZChyZWwpLAogCQkJCQkJCQkJIGZrY29uc3Ry YWludC0+ZmtfYXR0cnMsCiAJCQkJCQkJCQkgZmthdHRudW0sIGZrdHlwb2lkKTsKKwlpZiAo aXNfdGVtcG9yYWwpCisJCXRyYW5zZm9ybUNvbHVtbk5hbWVMaXN0KFJlbGF0aW9uR2V0UmVs aWQocmVsKSwKKwkJCQkJCQkgIGxpc3RfbWFrZTEoZmtjb25zdHJhaW50LT5ma19wZXJpb2Qp LAorCQkJCQkJCSAgZmtwZXJpb2RhdHRudW1zLCBma3BlcmlvZHR5cG9pZHMpOwogCiAJbnVt ZmtkZWxzZXRjb2xzID0gdHJhbnNmb3JtQ29sdW1uTmFtZUxpc3QoUmVsYXRpb25HZXRSZWxp ZChyZWwpLAogCQkJCQkJCQkJCQkgIGZrY29uc3RyYWludC0+ZmtfZGVsX3NldF9jb2xzLApA QCAtOTYzMSw3ICs5NjUzLDkgQEAgQVRBZGRGb3JlaWduS2V5Q29uc3RyYWludChMaXN0ICoq d3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKIAl7CiAJCW51 bXBrcyA9IHRyYW5zZm9ybUZrZXlHZXRQcmltYXJ5S2V5KHBrcmVsLCAmaW5kZXhPaWQsCiAJ CQkJCQkJCQkJCSZma2NvbnN0cmFpbnQtPnBrX2F0dHJzLAorCQkJCQkJCQkJCQkmZmtjb25z dHJhaW50LT5wa19wZXJpb2QsCiAJCQkJCQkJCQkJCXBrYXR0bnVtLCBwa3R5cG9pZCwKKwkJ CQkJCQkJCQkJcGtwZXJpb2RhdHRudW1zLCBwa3BlcmlvZHR5cG9pZHMsCiAJCQkJCQkJCQkJ CW9wY2xhc3Nlcyk7CiAJfQogCWVsc2UKQEAgLTk2MzksOCArOTY2MywxNCBAQCBBVEFkZEZv cmVpZ25LZXlDb25zdHJhaW50KExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRh YiwgUmVsYXRpb24gcmVsLAogCQludW1wa3MgPSB0cmFuc2Zvcm1Db2x1bW5OYW1lTGlzdChS ZWxhdGlvbkdldFJlbGlkKHBrcmVsKSwKIAkJCQkJCQkJCQkgZmtjb25zdHJhaW50LT5wa19h dHRycywKIAkJCQkJCQkJCQkgcGthdHRudW0sIHBrdHlwb2lkKTsKKwkJaWYgKGlzX3RlbXBv cmFsKQorCQkJdHJhbnNmb3JtQ29sdW1uTmFtZUxpc3QoUmVsYXRpb25HZXRSZWxpZChwa3Jl bCksCisJCQkJCQkJCQlsaXN0X21ha2UxKGZrY29uc3RyYWludC0+cGtfcGVyaW9kKSwKKwkJ CQkJCQkJCXBrcGVyaW9kYXR0bnVtcywgcGtwZXJpb2R0eXBvaWRzKTsKKwogCQkvKiBMb29r IGZvciBhbiBpbmRleCBtYXRjaGluZyB0aGUgY29sdW1uIGxpc3QgKi8KIAkJaW5kZXhPaWQg PSB0cmFuc2Zvcm1Ga2V5Q2hlY2tBdHRycyhwa3JlbCwgbnVtcGtzLCBwa2F0dG51bSwKKwkJ CQkJCQkJCQkgICBpc190ZW1wb3JhbCwgcGtwZXJpb2RhdHRudW1zWzBdLAogCQkJCQkJCQkJ CSAgIG9wY2xhc3Nlcyk7CiAJfQogCkBAIC05Njk5LDE4NyArOTcyOSwyNyBAQCBBVEFkZEZv cmVpZ25LZXlDb25zdHJhaW50KExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRh YiwgUmVsYXRpb24gcmVsLAogCiAJZm9yIChpID0gMDsgaSA8IG51bXBrczsgaSsrKQogCXsK LQkJT2lkCQkJcGt0eXBlID0gcGt0eXBvaWRbaV07Ci0JCU9pZAkJCWZrdHlwZSA9IGZrdHlw b2lkW2ldOwotCQlPaWQJCQlma3R5cGVkOwotCQlIZWFwVHVwbGUJY2xhX2h0OwotCQlGb3Jt X3BnX29wY2xhc3MgY2xhX3R1cDsKLQkJT2lkCQkJYW1pZDsKLQkJT2lkCQkJb3BmYW1pbHk7 Ci0JCU9pZAkJCW9wY2ludHlwZTsKLQkJT2lkCQkJcGZlcW9wOwotCQlPaWQJCQlwcGVxb3A7 Ci0JCU9pZAkJCWZmZXFvcDsKLQkJaW50MTYJCWVxc3RyYXRlZ3k7Ci0JCU9pZAkJCXBmZXFv cF9yaWdodDsKLQotCQkvKiBXZSBuZWVkIHNldmVyYWwgZmllbGRzIG91dCBvZiB0aGUgcGdf b3BjbGFzcyBlbnRyeSAqLwotCQljbGFfaHQgPSBTZWFyY2hTeXNDYWNoZTEoQ0xBT0lELCBP YmplY3RJZEdldERhdHVtKG9wY2xhc3Nlc1tpXSkpOwotCQlpZiAoIUhlYXBUdXBsZUlzVmFs aWQoY2xhX2h0KSkKLQkJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBv cGNsYXNzICV1Iiwgb3BjbGFzc2VzW2ldKTsKLQkJY2xhX3R1cCA9IChGb3JtX3BnX29wY2xh c3MpIEdFVFNUUlVDVChjbGFfaHQpOwotCQlhbWlkID0gY2xhX3R1cC0+b3BjbWV0aG9kOwot CQlvcGZhbWlseSA9IGNsYV90dXAtPm9wY2ZhbWlseTsKLQkJb3BjaW50eXBlID0gY2xhX3R1 cC0+b3BjaW50eXBlOwotCQlSZWxlYXNlU3lzQ2FjaGUoY2xhX2h0KTsKLQotCQkvKgotCQkg KiBDaGVjayBpdCdzIGEgYnRyZWU7IGN1cnJlbnRseSB0aGlzIGNhbiBuZXZlciBmYWlsIHNp bmNlIG5vIG90aGVyCi0JCSAqIGluZGV4IEFNcyBzdXBwb3J0IHVuaXF1ZSBpbmRleGVzLiAg SWYgd2UgZXZlciBkaWQgaGF2ZSBvdGhlciB0eXBlcwotCQkgKiBvZiB1bmlxdWUgaW5kZXhl cywgd2UnZCBuZWVkIGEgd2F5IHRvIGRldGVybWluZSB3aGljaCBvcGVyYXRvcgotCQkgKiBz dHJhdGVneSBudW1iZXIgaXMgZXF1YWxpdHkuICAoSXMgaXQgcmVhc29uYWJsZSB0byBpbnNp c3QgdGhhdAotCQkgKiBldmVyeSBzdWNoIGluZGV4IEFNIHVzZSBidHJlZSdzIG51bWJlciBm b3IgZXF1YWxpdHk/KQotCQkgKi8KLQkJaWYgKGFtaWQgIT0gQlRSRUVfQU1fT0lEKQotCQkJ ZWxvZyhFUlJPUiwgIm9ubHkgYi10cmVlIGluZGV4ZXMgYXJlIHN1cHBvcnRlZCBmb3IgZm9y ZWlnbiBrZXlzIik7Ci0JCWVxc3RyYXRlZ3kgPSBCVEVxdWFsU3RyYXRlZ3lOdW1iZXI7Ci0K LQkJLyoKLQkJICogVGhlcmUgaGFkIGJldHRlciBiZSBhIHByaW1hcnkgZXF1YWxpdHkgb3Bl cmF0b3IgZm9yIHRoZSBpbmRleC4KLQkJICogV2UnbGwgdXNlIGl0IGZvciBQSyA9IFBLIGNv bXBhcmlzb25zLgotCQkgKi8KLQkJcHBlcW9wID0gZ2V0X29wZmFtaWx5X21lbWJlcihvcGZh bWlseSwgb3BjaW50eXBlLCBvcGNpbnR5cGUsCi0JCQkJCQkJCQkgZXFzdHJhdGVneSk7Ci0K LQkJaWYgKCFPaWRJc1ZhbGlkKHBwZXFvcCkpCi0JCQllbG9nKEVSUk9SLCAibWlzc2luZyBv cGVyYXRvciAlZCgldSwldSkgaW4gb3BmYW1pbHkgJXUiLAotCQkJCSBlcXN0cmF0ZWd5LCBv cGNpbnR5cGUsIG9wY2ludHlwZSwgb3BmYW1pbHkpOwotCi0JCS8qCi0JCSAqIEFyZSB0aGVy ZSBlcXVhbGl0eSBvcGVyYXRvcnMgdGhhdCB0YWtlIGV4YWN0bHkgdGhlIEZLIHR5cGU/IEFz c3VtZQotCQkgKiB3ZSBzaG91bGQgbG9vayB0aHJvdWdoIGFueSBkb21haW4gaGVyZS4KLQkJ ICovCi0JCWZrdHlwZWQgPSBnZXRCYXNlVHlwZShma3R5cGUpOwotCi0JCXBmZXFvcCA9IGdl dF9vcGZhbWlseV9tZW1iZXIob3BmYW1pbHksIG9wY2ludHlwZSwgZmt0eXBlZCwKLQkJCQkJ CQkJCSBlcXN0cmF0ZWd5KTsKLQkJaWYgKE9pZElzVmFsaWQocGZlcW9wKSkKLQkJewotCQkJ cGZlcW9wX3JpZ2h0ID0gZmt0eXBlZDsKLQkJCWZmZXFvcCA9IGdldF9vcGZhbWlseV9tZW1i ZXIob3BmYW1pbHksIGZrdHlwZWQsIGZrdHlwZWQsCi0JCQkJCQkJCQkJIGVxc3RyYXRlZ3kp OwotCQl9Ci0JCWVsc2UKLQkJewotCQkJLyoga2VlcCBjb21waWxlciBxdWlldCAqLwotCQkJ cGZlcW9wX3JpZ2h0ID0gSW52YWxpZE9pZDsKLQkJCWZmZXFvcCA9IEludmFsaWRPaWQ7Ci0J CX0KLQotCQlpZiAoIShPaWRJc1ZhbGlkKHBmZXFvcCkgJiYgT2lkSXNWYWxpZChmZmVxb3Ap KSkKLQkJewotCQkJLyoKLQkJCSAqIE90aGVyd2lzZSwgbG9vayBmb3IgYW4gaW1wbGljaXQg Y2FzdCBmcm9tIHRoZSBGSyB0eXBlIHRvIHRoZQotCQkJICogb3BjaW50eXBlLCBhbmQgaWYg Zm91bmQsIHVzZSB0aGUgcHJpbWFyeSBlcXVhbGl0eSBvcGVyYXRvci4KLQkJCSAqIFRoaXMg aXMgYSBiaXQgdHJpY2t5IGJlY2F1c2Ugb3BjaW50eXBlIG1pZ2h0IGJlIGEgcG9seW1vcnBo aWMKLQkJCSAqIHR5cGUgc3VjaCBhcyBBTllBUlJBWSBvciBBTllFTlVNOyBzbyB3aGF0IHdl IGhhdmUgdG8gdGVzdCBpcwotCQkJICogd2hldGhlciB0aGUgdHdvIGFjdHVhbCBjb2x1bW4g dHlwZXMgY2FuIGJlIGNvbmN1cnJlbnRseSBjYXN0IHRvCi0JCQkgKiB0aGF0IHR5cGUuICAo T3RoZXJ3aXNlLCB3ZSdkIGZhaWwgdG8gcmVqZWN0IGNvbWJpbmF0aW9ucyBzdWNoCi0JCQkg KiBhcyBpbnRbXSBhbmQgcG9pbnRbXS4pCi0JCQkgKi8KLQkJCU9pZAkJCWlucHV0X3R5cGVp ZHNbMl07Ci0JCQlPaWQJCQl0YXJnZXRfdHlwZWlkc1syXTsKLQotCQkJaW5wdXRfdHlwZWlk c1swXSA9IHBrdHlwZTsKLQkJCWlucHV0X3R5cGVpZHNbMV0gPSBma3R5cGU7Ci0JCQl0YXJn ZXRfdHlwZWlkc1swXSA9IG9wY2ludHlwZTsKLQkJCXRhcmdldF90eXBlaWRzWzFdID0gb3Bj aW50eXBlOwotCQkJaWYgKGNhbl9jb2VyY2VfdHlwZSgyLCBpbnB1dF90eXBlaWRzLCB0YXJn ZXRfdHlwZWlkcywKLQkJCQkJCQkJQ09FUkNJT05fSU1QTElDSVQpKQotCQkJewotCQkJCXBm ZXFvcCA9IGZmZXFvcCA9IHBwZXFvcDsKLQkJCQlwZmVxb3BfcmlnaHQgPSBvcGNpbnR5cGU7 Ci0JCQl9Ci0JCX0KLQotCQlpZiAoIShPaWRJc1ZhbGlkKHBmZXFvcCkgJiYgT2lkSXNWYWxp ZChmZmVxb3ApKSkKLQkJCWVyZXBvcnQoRVJST1IsCi0JCQkJCShlcnJjb2RlKEVSUkNPREVf REFUQVRZUEVfTUlTTUFUQ0gpLAotCQkJCQkgZXJybXNnKCJmb3JlaWduIGtleSBjb25zdHJh aW50IFwiJXNcIiBjYW5ub3QgYmUgaW1wbGVtZW50ZWQiLAotCQkJCQkJCWZrY29uc3RyYWlu dC0+Y29ubmFtZSksCi0JCQkJCSBlcnJkZXRhaWwoIktleSBjb2x1bW5zIFwiJXNcIiBhbmQg XCIlc1wiICIKLQkJCQkJCQkgICAiYXJlIG9mIGluY29tcGF0aWJsZSB0eXBlczogJXMgYW5k ICVzLiIsCi0JCQkJCQkJICAgc3RyVmFsKGxpc3RfbnRoKGZrY29uc3RyYWludC0+ZmtfYXR0 cnMsIGkpKSwKLQkJCQkJCQkgICBzdHJWYWwobGlzdF9udGgoZmtjb25zdHJhaW50LT5wa19h dHRycywgaSkpLAotCQkJCQkJCSAgIGZvcm1hdF90eXBlX2JlKGZrdHlwZSksCi0JCQkJCQkJ ICAgZm9ybWF0X3R5cGVfYmUocGt0eXBlKSkpKTsKLQotCQlpZiAob2xkX2NoZWNrX29rKQot CQl7Ci0JCQkvKgotCQkJICogV2hlbiBhIHBmZXFvcCBjaGFuZ2VzLCByZXZhbGlkYXRlIHRo ZSBjb25zdHJhaW50LiAgV2UgY291bGQKLQkJCSAqIHBlcm1pdCBpbnRyYS1vcGZhbWlseSBj aGFuZ2VzLCBidXQgdGhhdCBhZGRzIHN1YnRsZSBjb21wbGV4aXR5Ci0JCQkgKiB3aXRob3V0 IGFueSBjb25jcmV0ZSBiZW5lZml0IGZvciBjb3JlIHR5cGVzLiAgV2UgbmVlZCBub3QKLQkJ CSAqIGFzc2VzcyBwcGVxb3Agb3IgZmZlcW9wLCB3aGljaCBSSV9Jbml0aWFsX0NoZWNrKCkg ZG9lcyBub3QgdXNlLgotCQkJICovCi0JCQlvbGRfY2hlY2tfb2sgPSAocGZlcW9wID09IGxm aXJzdF9vaWQob2xkX3BmZXFvcF9pdGVtKSk7Ci0JCQlvbGRfcGZlcW9wX2l0ZW0gPSBsbmV4 dChma2NvbnN0cmFpbnQtPm9sZF9jb25wZmVxb3AsCi0JCQkJCQkJCQlvbGRfcGZlcW9wX2l0 ZW0pOwotCQl9Ci0JCWlmIChvbGRfY2hlY2tfb2spCi0JCXsKLQkJCU9pZAkJCW9sZF9ma3R5 cGU7Ci0JCQlPaWQJCQluZXdfZmt0eXBlOwotCQkJQ29lcmNpb25QYXRoVHlwZSBvbGRfcGF0 aHR5cGU7Ci0JCQlDb2VyY2lvblBhdGhUeXBlIG5ld19wYXRodHlwZTsKLQkJCU9pZAkJCW9s ZF9jYXN0ZnVuYzsKLQkJCU9pZAkJCW5ld19jYXN0ZnVuYzsKLQkJCUZvcm1fcGdfYXR0cmli dXRlIGF0dHIgPSBUdXBsZURlc2NBdHRyKHRhYi0+b2xkRGVzYywKLQkJCQkJCQkJCQkJCSAg IGZrYXR0bnVtW2ldIC0gMSk7Ci0KLQkJCS8qCi0JCQkgKiBJZGVudGlmeSBjb2VyY2lvbiBw YXRod2F5cyBmcm9tIGVhY2ggb2YgdGhlIG9sZCBhbmQgbmV3IEZLLXNpZGUKLQkJCSAqIGNv bHVtbiB0eXBlcyB0byB0aGUgcmlnaHQgKGZvcmVpZ24pIG9wZXJhbmQgdHlwZSBvZiB0aGUg cGZlcW9wLgotCQkJICogV2UgbWF5IGFzc3VtZSB0aGF0IHBnX2NvbnN0cmFpbnQuY29ua2V5 IGlzIG5vdCBjaGFuZ2luZy4KLQkJCSAqLwotCQkJb2xkX2ZrdHlwZSA9IGF0dHItPmF0dHR5 cGlkOwotCQkJbmV3X2ZrdHlwZSA9IGZrdHlwZTsKLQkJCW9sZF9wYXRodHlwZSA9IGZpbmRG a2V5Q2FzdChwZmVxb3BfcmlnaHQsIG9sZF9ma3R5cGUsCi0JCQkJCQkJCQkJJm9sZF9jYXN0 ZnVuYyk7Ci0JCQluZXdfcGF0aHR5cGUgPSBmaW5kRmtleUNhc3QocGZlcW9wX3JpZ2h0LCBu ZXdfZmt0eXBlLAotCQkJCQkJCQkJCSZuZXdfY2FzdGZ1bmMpOwotCi0JCQkvKgotCQkJICog VXBvbiBhIGNoYW5nZSB0byB0aGUgY2FzdCBmcm9tIHRoZSBGSyBjb2x1bW4gdG8gaXRzIHBm ZXFvcAotCQkJICogb3BlcmFuZCwgcmV2YWxpZGF0ZSB0aGUgY29uc3RyYWludC4gIEZvciB0 aGlzIGV2YWx1YXRpb24sIGEKLQkJCSAqIGJpbmFyeSBjb2VyY2lvbiBjYXN0IGlzIGVxdWl2 YWxlbnQgdG8gbm8gY2FzdCBhdCBhbGwuICBXaGlsZQotCQkJICogdHlwZSBpbXBsZW1lbnRv cnMgc2hvdWxkIGRlc2lnbiBpbXBsaWNpdCBjYXN0cyB3aXRoIGFuIGV5ZQotCQkJICogdG93 YXJkIGNvbnNpc3RlbmN5IG9mIG9wZXJhdGlvbnMgbGlrZSBlcXVhbGl0eSwgd2UgY2Fubm90 Ci0JCQkgKiBhc3N1bWUgaGVyZSB0aGF0IHRoZXkgaGF2ZSBkb25lIHNvLgotCQkJICoKLQkJ CSAqIEEgZnVuY3Rpb24gd2l0aCBhIHBvbHltb3JwaGljIGFyZ3VtZW50IGNvdWxkIGNoYW5n ZSBiZWhhdmlvcgotCQkJICogYXJiaXRyYXJpbHkgaW4gcmVzcG9uc2UgdG8gZ2V0X2ZuX2V4 cHJfYXJndHlwZSgpLiAgVGhlcmVmb3JlLAotCQkJICogd2hlbiB0aGUgY2FzdCBkZXN0aW5h dGlvbiBpcyBwb2x5bW9ycGhpYywgd2Ugb25seSBhdm9pZAotCQkJICogcmV2YWxpZGF0aW9u IGlmIHRoZSBpbnB1dCB0eXBlIGhhcyBub3QgY2hhbmdlZCBhdCBhbGwuICBHaXZlbgotCQkJ ICoganVzdCB0aGUgY29yZSBkYXRhIHR5cGVzIGFuZCBvcGVyYXRvciBjbGFzc2VzLCB0aGlz IHJlcXVpcmVtZW50Ci0JCQkgKiBwcmV2ZW50cyBubyB3b3VsZC1iZSBvcHRpbWl6YXRpb25z LgotCQkJICoKLQkJCSAqIElmIHRoZSBjYXN0IGNvbnZlcnRzIGZyb20gYSBiYXNlIHR5cGUg dG8gYSBkb21haW4gdGhlcmVvbiwgdGhlbgotCQkJICogdGhhdCBkb21haW4gdHlwZSBtdXN0 IGJlIHRoZSBvcGNpbnR5cGUgb2YgdGhlIHVuaXF1ZSBpbmRleC4KLQkJCSAqIE5lY2Vzc2Fy aWx5LCB0aGUgcHJpbWFyeSBrZXkgY29sdW1uIG11c3QgdGhlbiBiZSBvZiB0aGUgZG9tYWlu Ci0JCQkgKiB0eXBlLiAgU2luY2UgdGhlIGNvbnN0cmFpbnQgd2FzIHByZXZpb3VzbHkgdmFs aWQsIGFsbCB2YWx1ZXMgb24KLQkJCSAqIHRoZSBmb3JlaWduIHNpZGUgbmVjZXNzYXJpbHkg ZXhpc3Qgb24gdGhlIHByaW1hcnkgc2lkZSBhbmQgaW4KLQkJCSAqIHR1cm4gY29uZm9ybSB0 byB0aGUgZG9tYWluLiAgQ29uc2VxdWVudGx5LCB3ZSBuZWVkIG5vdCB0cmVhdAotCQkJICog ZG9tYWlucyBzcGVjaWFsbHkgaGVyZS4KLQkJCSAqCi0JCQkgKiBTaW5jZSB3ZSByZXF1aXJl IHRoYXQgYWxsIGNvbGxhdGlvbnMgc2hhcmUgdGhlIHNhbWUgbm90aW9uIG9mCi0JCQkgKiBl cXVhbGl0eSAod2hpY2ggdGhleSBkbywgYmVjYXVzZSB0ZXh0ZXEgcmVkdWNlcyB0byBiaXR3 aXNlCi0JCQkgKiBlcXVhbGl0eSksIHdlIGRvbid0IGNvbXBhcmUgY29sbGF0aW9uIGhlcmUu Ci0JCQkgKgotCQkJICogV2UgbmVlZCBub3QgZGlyZWN0bHkgY29uc2lkZXIgdGhlIFBLIHR5 cGUuICBJdCdzIG5lY2Vzc2FyaWx5Ci0JCQkgKiBiaW5hcnkgY29lcmNpYmxlIHRvIHRoZSBv cGNpbnR5cGUgb2YgdGhlIHVuaXF1ZSBpbmRleCBjb2x1bW4sCi0JCQkgKiBhbmQgcmlfdHJp Z2dlcnMuYyB3aWxsIG9ubHkgZGVhbCB3aXRoIFBLIGRhdHVtcyBpbiB0ZXJtcyBvZgotCQkJ ICogdGhhdCBvcGNpbnR5cGUuICBDaGFuZ2luZyB0aGUgb3BjaW50eXBlIGFsc28gY2hhbmdl cyBwZmVxb3AuCi0JCQkgKi8KLQkJCW9sZF9jaGVja19vayA9IChuZXdfcGF0aHR5cGUgPT0g b2xkX3BhdGh0eXBlICYmCi0JCQkJCQkJbmV3X2Nhc3RmdW5jID09IG9sZF9jYXN0ZnVuYyAm JgotCQkJCQkJCSghSXNQb2x5bW9ycGhpY1R5cGUocGZlcW9wX3JpZ2h0KSB8fAotCQkJCQkJ CSBuZXdfZmt0eXBlID09IG9sZF9ma3R5cGUpKTsKLQkJfQorCQlGaW5kRktDb21wYXJpc29u T3BlcmF0b3JzKAorCQkJCWZrY29uc3RyYWludCwgdGFiLCBpLCBma2F0dG51bSwKKwkJCQkm b2xkX2NoZWNrX29rLCAmb2xkX3BmZXFvcF9pdGVtLAorCQkJCXBrdHlwb2lkW2ldLCBma3R5 cG9pZFtpXSwgb3BjbGFzc2VzW2ldLAorCQkJCWlzX3RlbXBvcmFsLCBmYWxzZSwKKwkJCQkm cGZlcW9wZXJhdG9yc1tpXSwgJnBwZXFvcGVyYXRvcnNbaV0sICZmZmVxb3BlcmF0b3JzW2ld KTsKKwl9CisJaWYgKGlzX3RlbXBvcmFsKSB7CisJCXBrYXR0bnVtW251bXBrc10gPSBwa3Bl cmlvZGF0dG51bXNbMF07CisJCXBrdHlwb2lkW251bXBrc10gPSBwa3BlcmlvZHR5cG9pZHNb MF07CisJCWZrYXR0bnVtW251bXBrc10gPSBma3BlcmlvZGF0dG51bXNbMF07CisJCWZrdHlw b2lkW251bXBrc10gPSBma3BlcmlvZHR5cG9pZHNbMF07CiAKLQkJcGZlcW9wZXJhdG9yc1tp XSA9IHBmZXFvcDsKLQkJcHBlcW9wZXJhdG9yc1tpXSA9IHBwZXFvcDsKLQkJZmZlcW9wZXJh dG9yc1tpXSA9IGZmZXFvcDsKKwkJRmluZEZLQ29tcGFyaXNvbk9wZXJhdG9ycygKKwkJCQlm a2NvbnN0cmFpbnQsIHRhYiwgbnVtcGtzLCBma2F0dG51bSwKKwkJCQkmb2xkX2NoZWNrX29r LCAmb2xkX3BmZXFvcF9pdGVtLAorCQkJCXBrcGVyaW9kdHlwb2lkc1swXSwgZmtwZXJpb2R0 eXBvaWRzWzBdLCBvcGNsYXNzZXNbbnVtcGtzXSwKKwkJCQlpc190ZW1wb3JhbCwgdHJ1ZSwK KwkJCQkmcGZlcW9wZXJhdG9yc1tudW1wa3NdLCAmcHBlcW9wZXJhdG9yc1tudW1wa3NdLCAm ZmZlcW9wZXJhdG9yc1tudW1wa3NdKTsKKwkJbnVtZmtzICs9IDE7CisJCW51bXBrcyArPSAx OwogCX0KIAogCS8qCkBAIC05ODk4LDcgKzk3NjgsOCBAQCBBVEFkZEZvcmVpZ25LZXlDb25z dHJhaW50KExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwgUmVsYXRpb24g cmVsLAogCQkJCQkJCQkJIG51bWZrZGVsc2V0Y29scywKIAkJCQkJCQkJCSBma2RlbHNldGNv bHMsCiAJCQkJCQkJCQkgb2xkX2NoZWNrX29rLAotCQkJCQkJCQkJIEludmFsaWRPaWQsIElu dmFsaWRPaWQpOworCQkJCQkJCQkJIEludmFsaWRPaWQsIEludmFsaWRPaWQsCisJCQkJCQkJ CQkgaXNfdGVtcG9yYWwpOwogCiAJLyogTm93IGhhbmRsZSB0aGUgcmVmZXJlbmNpbmcgc2lk ZS4gKi8KIAlhZGRGa1JlY3Vyc2VSZWZlcmVuY2luZyh3cXVldWUsIGZrY29uc3RyYWludCwg cmVsLCBwa3JlbCwKQEAgLTk5MTQsNyArOTc4NSw4IEBAIEFUQWRkRm9yZWlnbktleUNvbnN0 cmFpbnQoTGlzdCAqKndxdWV1ZSwgQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLCBSZWxhdGlvbiBy ZWwsCiAJCQkJCQkJZmtkZWxzZXRjb2xzLAogCQkJCQkJCW9sZF9jaGVja19vaywKIAkJCQkJ CQlsb2NrbW9kZSwKLQkJCQkJCQlJbnZhbGlkT2lkLCBJbnZhbGlkT2lkKTsKKwkJCQkJCQlJ bnZhbGlkT2lkLCBJbnZhbGlkT2lkLAorCQkJCQkJCWlzX3RlbXBvcmFsKTsKIAogCS8qCiAJ ICogRG9uZS4gIENsb3NlIHBrIHRhYmxlLCBidXQga2VlcCBsb2NrIHVudGlsIHdlJ3ZlIGNv bW1pdHRlZC4KQEAgLTk5OTksNyArOTg3MSw4IEBAIGFkZEZrUmVjdXJzZVJlZmVyZW5jZWQo TGlzdCAqKndxdWV1ZSwgQ29uc3RyYWludCAqZmtjb25zdHJhaW50LCBSZWxhdGlvbiByZWws CiAJCQkJCSAgIE9pZCAqcHBlcW9wZXJhdG9ycywgT2lkICpmZmVxb3BlcmF0b3JzLAogCQkJ CQkgICBpbnQgbnVtZmtkZWxzZXRjb2xzLCBpbnQxNiAqZmtkZWxzZXRjb2xzLAogCQkJCQkg ICBib29sIG9sZF9jaGVja19vaywKLQkJCQkJICAgT2lkIHBhcmVudERlbFRyaWdnZXIsIE9p ZCBwYXJlbnRVcGRUcmlnZ2VyKQorCQkJCQkgICBPaWQgcGFyZW50RGVsVHJpZ2dlciwgT2lk IHBhcmVudFVwZFRyaWdnZXIsCisJCQkJCSAgIGJvb2wgaXNfdGVtcG9yYWwpCiB7CiAJT2Jq ZWN0QWRkcmVzcyBhZGRyZXNzOwogCU9pZAkJCWNvbnN0ck9pZDsKQEAgLTEwMDg1LDcgKzk5 NTgsNyBAQCBhZGRGa1JlY3Vyc2VSZWZlcmVuY2VkKExpc3QgKip3cXVldWUsIENvbnN0cmFp bnQgKmZrY29uc3RyYWludCwgUmVsYXRpb24gcmVsLAogCQkJCQkJCQkJICBjb25pc2xvY2Fs LAkvKiBpc2xvY2FsICovCiAJCQkJCQkJCQkgIGNvbmluaGNvdW50LAkvKiBpbmhjb3VudCAq LwogCQkJCQkJCQkJICBjb25ub2luaGVyaXQsIC8qIGNvbk5vSW5oZXJpdCAqLwotCQkJCQkJ CQkJICBmYWxzZSwJLyogY29uVGVtcG9yYWwgKi8KKwkJCQkJCQkJCSAgaXNfdGVtcG9yYWws CS8qIGNvblRlbXBvcmFsICovCiAJCQkJCQkJCQkgIGZhbHNlKTsJLyogaXNfaW50ZXJuYWwg Ki8KIAogCU9iamVjdEFkZHJlc3NTZXQoYWRkcmVzcywgQ29uc3RyYWludFJlbGF0aW9uSWQs IGNvbnN0ck9pZCk7CkBAIC0xMDE2MSw3ICsxMDAzNCw4IEBAIGFkZEZrUmVjdXJzZVJlZmVy ZW5jZWQoTGlzdCAqKndxdWV1ZSwgQ29uc3RyYWludCAqZmtjb25zdHJhaW50LCBSZWxhdGlv biByZWwsCiAJCQkJCQkJCSAgIHBmZXFvcGVyYXRvcnMsIHBwZXFvcGVyYXRvcnMsIGZmZXFv cGVyYXRvcnMsCiAJCQkJCQkJCSAgIG51bWZrZGVsc2V0Y29scywgZmtkZWxzZXRjb2xzLAog CQkJCQkJCQkgICBvbGRfY2hlY2tfb2ssCi0JCQkJCQkJCSAgIGRlbGV0ZVRyaWdnZXJPaWQs IHVwZGF0ZVRyaWdnZXJPaWQpOworCQkJCQkJCQkgICBkZWxldGVUcmlnZ2VyT2lkLCB1cGRh dGVUcmlnZ2VyT2lkLAorCQkJCQkJCQkgICBpc190ZW1wb3JhbCk7CiAKIAkJCS8qIERvbmUg LS0gY2xlYW4gdXAgKGJ1dCBrZWVwIHRoZSBsb2NrKSAqLwogCQkJdGFibGVfY2xvc2UocGFy dFJlbCwgTm9Mb2NrKTsKQEAgLTEwMjE5LDcgKzEwMDkzLDggQEAgYWRkRmtSZWN1cnNlUmVm ZXJlbmNpbmcoTGlzdCAqKndxdWV1ZSwgQ29uc3RyYWludCAqZmtjb25zdHJhaW50LCBSZWxh dGlvbiByZWwsCiAJCQkJCQlPaWQgKnBmZXFvcGVyYXRvcnMsIE9pZCAqcHBlcW9wZXJhdG9y cywgT2lkICpmZmVxb3BlcmF0b3JzLAogCQkJCQkJaW50IG51bWZrZGVsc2V0Y29scywgaW50 MTYgKmZrZGVsc2V0Y29scywKIAkJCQkJCWJvb2wgb2xkX2NoZWNrX29rLCBMT0NLTU9ERSBs b2NrbW9kZSwKLQkJCQkJCU9pZCBwYXJlbnRJbnNUcmlnZ2VyLCBPaWQgcGFyZW50VXBkVHJp Z2dlcikKKwkJCQkJCU9pZCBwYXJlbnRJbnNUcmlnZ2VyLCBPaWQgcGFyZW50VXBkVHJpZ2dl ciwKKwkJCQkJCWJvb2wgaXNfdGVtcG9yYWwpCiB7CiAJT2lkCQkJaW5zZXJ0VHJpZ2dlck9p ZCwKIAkJCQl1cGRhdGVUcmlnZ2VyT2lkOwpAQCAtMTAyNjcsNiArMTAxNDIsNyBAQCBhZGRG a1JlY3Vyc2VSZWZlcmVuY2luZyhMaXN0ICoqd3F1ZXVlLCBDb25zdHJhaW50ICpma2NvbnN0 cmFpbnQsIFJlbGF0aW9uIHJlbCwKIAkJCW5ld2Nvbi0+cmVmcmVsaWQgPSBSZWxhdGlvbkdl dFJlbGlkKHBrcmVsKTsKIAkJCW5ld2Nvbi0+cmVmaW5kaWQgPSBpbmRleE9pZDsKIAkJCW5l d2Nvbi0+Y29uaWQgPSBwYXJlbnRDb25zdHI7CisJCQluZXdjb24tPmNvbnRlbXBvcmFsID0g Zmtjb25zdHJhaW50LT5ma19wZXJpb2QgIT0gTlVMTDsKIAkJCW5ld2Nvbi0+cXVhbCA9IChO b2RlICopIGZrY29uc3RyYWludDsKIAogCQkJdGFiLT5jb25zdHJhaW50cyA9IGxhcHBlbmQo dGFiLT5jb25zdHJhaW50cywgbmV3Y29uKTsKQEAgLTEwMzg0LDcgKzEwMjYwLDcgQEAgYWRk RmtSZWN1cnNlUmVmZXJlbmNpbmcoTGlzdCAqKndxdWV1ZSwgQ29uc3RyYWludCAqZmtjb25z dHJhaW50LCBSZWxhdGlvbiByZWwsCiAJCQkJCQkJCQkgIGZhbHNlLAogCQkJCQkJCQkJICAx LAogCQkJCQkJCQkJICBmYWxzZSwKLQkJCQkJCQkJCSAgZmFsc2UsCS8qIGNvblRlbXBvcmFs ICovCisJCQkJCQkJCQkgIGlzX3RlbXBvcmFsLAkvKiBjb25UZW1wb3JhbCAqLwogCQkJCQkJ CQkJICBmYWxzZSk7CiAKIAkJCS8qCkBAIC0xMDQxNSw3ICsxMDI5MSw4IEBAIGFkZEZrUmVj dXJzZVJlZmVyZW5jaW5nKExpc3QgKip3cXVldWUsIENvbnN0cmFpbnQgKmZrY29uc3RyYWlu dCwgUmVsYXRpb24gcmVsLAogCQkJCQkJCQkJb2xkX2NoZWNrX29rLAogCQkJCQkJCQkJbG9j a21vZGUsCiAJCQkJCQkJCQlpbnNlcnRUcmlnZ2VyT2lkLAotCQkJCQkJCQkJdXBkYXRlVHJp Z2dlck9pZCk7CisJCQkJCQkJCQl1cGRhdGVUcmlnZ2VyT2lkLAorCQkJCQkJCQkJaXNfdGVt cG9yYWwpOwogCiAJCQl0YWJsZV9jbG9zZShwYXJ0aXRpb24sIE5vTG9jayk7CiAJCX0KQEAg LTEwNjUxLDcgKzEwNTI4LDggQEAgQ2xvbmVGa1JlZmVyZW5jZWQoUmVsYXRpb24gcGFyZW50 UmVsLCBSZWxhdGlvbiBwYXJ0aXRpb25SZWwpCiAJCQkJCQkJICAgY29uZmRlbHNldGNvbHMs CiAJCQkJCQkJICAgdHJ1ZSwKIAkJCQkJCQkgICBkZWxldGVUcmlnZ2VyT2lkLAotCQkJCQkJ CSAgIHVwZGF0ZVRyaWdnZXJPaWQpOworCQkJCQkJCSAgIHVwZGF0ZVRyaWdnZXJPaWQsCisJ CQkJCQkJICAgY29uc3RyRm9ybS0+Y29udGVtcG9yYWwpOwogCiAJCXRhYmxlX2Nsb3NlKGZr UmVsLCBOb0xvY2spOwogCQlSZWxlYXNlU3lzQ2FjaGUodHVwbGUpOwpAQCAtMTA4OTAsNyAr MTA3NjgsNyBAQCBDbG9uZUZrUmVmZXJlbmNpbmcoTGlzdCAqKndxdWV1ZSwgUmVsYXRpb24g cGFyZW50UmVsLCBSZWxhdGlvbiBwYXJ0UmVsKQogCQkJCQkJCQkgIGZhbHNlLAkvKiBpc2xv Y2FsICovCiAJCQkJCQkJCSAgMSwJLyogaW5oY291bnQgKi8KIAkJCQkJCQkJICBmYWxzZSwJ LyogY29uTm9Jbmhlcml0ICovCi0JCQkJCQkJCSAgZmFsc2UsCS8qIGNvblRlbXBvcmFsICov CisJCQkJCQkJCSAgY29uc3RyRm9ybS0+Y29udGVtcG9yYWwsCS8qIGNvblRlbXBvcmFsICov CiAJCQkJCQkJCSAgdHJ1ZSk7CiAKIAkJLyogU2V0IHVwIHBhcnRpdGlvbiBkZXBlbmRlbmNp ZXMgZm9yIHRoZSBuZXcgY29uc3RyYWludCAqLwpAQCAtMTA5MjQsMTMgKzEwODAyLDI0NSBA QCBDbG9uZUZrUmVmZXJlbmNpbmcoTGlzdCAqKndxdWV1ZSwgUmVsYXRpb24gcGFyZW50UmVs LCBSZWxhdGlvbiBwYXJ0UmVsKQogCQkJCQkJCQlmYWxzZSwJLyogbm8gb2xkIGNoZWNrIGV4 aXN0cyAqLwogCQkJCQkJCQlBY2Nlc3NFeGNsdXNpdmVMb2NrLAogCQkJCQkJCQlpbnNlcnRU cmlnZ2VyT2lkLAotCQkJCQkJCQl1cGRhdGVUcmlnZ2VyT2lkKTsKKwkJCQkJCQkJdXBkYXRl VHJpZ2dlck9pZCwKKwkJCQkJCQkJY29uc3RyRm9ybS0+Y29udGVtcG9yYWwpOwogCQl0YWJs ZV9jbG9zZShwa3JlbCwgTm9Mb2NrKTsKIAl9CiAKIAl0YWJsZV9jbG9zZSh0cmlncmVsLCBS b3dFeGNsdXNpdmVMb2NrKTsKIH0KIAorc3RhdGljIHZvaWQKK0ZpbmRGS0NvbXBhcmlzb25P cGVyYXRvcnMoQ29uc3RyYWludCAqZmtjb25zdHJhaW50LAorCQlBbHRlcmVkVGFibGVJbmZv ICp0YWIsCisJCWludCBpLAorCQlpbnQxNiAqZmthdHRudW0sCisJCWJvb2wgKm9sZF9jaGVj a19vaywKKwkJTGlzdENlbGwgKipvbGRfcGZlcW9wX2l0ZW0sCisJCU9pZCBwa3R5cGUsIE9p ZCBma3R5cGUsIE9pZCBvcGNsYXNzLAorCQlib29sIGlzX3RlbXBvcmFsLCBib29sIGZvcl9v dmVybGFwcywKKwkJT2lkICpwZmVxb3BPdXQsIE9pZCAqcHBlcW9wT3V0LCBPaWQgKmZmZXFv cE91dCkKK3sKKwlPaWQJCQlma3R5cGVkOworCUhlYXBUdXBsZQljbGFfaHQ7CisJRm9ybV9w Z19vcGNsYXNzIGNsYV90dXA7CisJT2lkCQkJYW1pZDsKKwlPaWQJCQlvcGZhbWlseTsKKwlP aWQJCQlvcGNpbnR5cGU7CisJT2lkCQkJcGZlcW9wOworCU9pZAkJCXBwZXFvcDsKKwlPaWQJ CQlmZmVxb3A7CisJaW50MTYJCWVxc3RyYXRlZ3k7CisJT2lkCQkJcGZlcW9wX3JpZ2h0Owor CisJLyogV2UgbmVlZCBzZXZlcmFsIGZpZWxkcyBvdXQgb2YgdGhlIHBnX29wY2xhc3MgZW50 cnkgKi8KKwljbGFfaHQgPSBTZWFyY2hTeXNDYWNoZTEoQ0xBT0lELCBPYmplY3RJZEdldERh dHVtKG9wY2xhc3MpKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQoY2xhX2h0KSkKKwkJZWxv ZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIG9wY2xhc3MgJXUiLCBvcGNsYXNz KTsKKwljbGFfdHVwID0gKEZvcm1fcGdfb3BjbGFzcykgR0VUU1RSVUNUKGNsYV9odCk7CisJ YW1pZCA9IGNsYV90dXAtPm9wY21ldGhvZDsKKwlvcGZhbWlseSA9IGNsYV90dXAtPm9wY2Zh bWlseTsKKwlvcGNpbnR5cGUgPSBjbGFfdHVwLT5vcGNpbnR5cGU7CisJUmVsZWFzZVN5c0Nh Y2hlKGNsYV9odCk7CisKKwlpZiAoaXNfdGVtcG9yYWwpCisJeworCQlpZiAoYW1pZCAhPSBH SVNUX0FNX09JRCkKKwkJCWVsb2coRVJST1IsICJvbmx5IEdpU1QgaW5kZXhlcyBhcmUgc3Vw cG9ydGVkIGZvciB0ZW1wb3JhbCBmb3JlaWduIGtleXMiKTsKKwkJLyoKKwkJICogRm9yIHRo ZSBub24tb3ZlcmxhcHMgcGFydHMsIHdlIHdhbnQgZWl0aGVyIFJURXF1YWxTdHJhdGVneU51 bWJlciAod2l0aG91dCBidHJlZV9naXN0KQorCQkgKiBvciBCVEVxdWFsU3RyYXRlZ3lOdW1i ZXIgKHdpdGggYnRyZWVfZ2lzdCkuIFdlJ2xsIHRyeSB0aGUgbGF0dGVyIGZpcnN0LgorCQkg Ki8KKwkJZXFzdHJhdGVneSA9IGZvcl9vdmVybGFwcyA/IFJUT3ZlcmxhcFN0cmF0ZWd5TnVt YmVyIDogQlRFcXVhbFN0cmF0ZWd5TnVtYmVyOworCX0KKwllbHNlCisJeworCQkvKgorCQkg KiBDaGVjayBpdCdzIGEgYnRyZWU7IGN1cnJlbnRseSB0aGlzIGNhbiBuZXZlciBmYWlsIHNp bmNlIG5vIG90aGVyCisJCSAqIGluZGV4IEFNcyBzdXBwb3J0IHVuaXF1ZSBpbmRleGVzLiAg SWYgd2UgZXZlciBkaWQgaGF2ZSBvdGhlciB0eXBlcworCQkgKiBvZiB1bmlxdWUgaW5kZXhl cywgd2UnZCBuZWVkIGEgd2F5IHRvIGRldGVybWluZSB3aGljaCBvcGVyYXRvcgorCQkgKiBz dHJhdGVneSBudW1iZXIgaXMgZXF1YWxpdHkuICAoSXMgaXQgcmVhc29uYWJsZSB0byBpbnNp c3QgdGhhdAorCQkgKiBldmVyeSBzdWNoIGluZGV4IEFNIHVzZSBidHJlZSdzIG51bWJlciBm b3IgZXF1YWxpdHk/KQorCQkgKi8KKwkJaWYgKGFtaWQgIT0gQlRSRUVfQU1fT0lEKQorCQkJ ZWxvZyhFUlJPUiwgIm9ubHkgYi10cmVlIGluZGV4ZXMgYXJlIHN1cHBvcnRlZCBmb3IgZm9y ZWlnbiBrZXlzIik7CisJCWVxc3RyYXRlZ3kgPSBCVEVxdWFsU3RyYXRlZ3lOdW1iZXI7CisJ fQorCisJLyoKKwkgKiBUaGVyZSBoYWQgYmV0dGVyIGJlIGEgcHJpbWFyeSBlcXVhbGl0eSBv cGVyYXRvciBmb3IgdGhlIGluZGV4LgorCSAqIFdlJ2xsIHVzZSBpdCBmb3IgUEsgPSBQSyBj b21wYXJpc29ucy4KKwkgKi8KKwlwcGVxb3AgPSBnZXRfb3BmYW1pbHlfbWVtYmVyKG9wZmFt aWx5LCBvcGNpbnR5cGUsIG9wY2ludHlwZSwKKwkJCQkJCQkJIGVxc3RyYXRlZ3kpOworCisJ LyogRmFsbCBiYWNrIHRvIFJURXF1YWxTdHJhdGVneU51bWJlciBmb3IgdGVtcG9yYWwgb3Zl cmxhcHMgKi8KKwlpZiAoaXNfdGVtcG9yYWwgJiYgIWZvcl9vdmVybGFwcyAmJiAhT2lkSXNW YWxpZChwcGVxb3ApKQorCXsKKwkJZXFzdHJhdGVneSA9IFJURXF1YWxTdHJhdGVneU51bWJl cjsKKwkJcHBlcW9wID0gZ2V0X29wZmFtaWx5X21lbWJlcihvcGZhbWlseSwgb3BjaW50eXBl LCBvcGNpbnR5cGUsCisJCQkJCQkJCQkgZXFzdHJhdGVneSk7CisJfQorCisKKwlpZiAoIU9p ZElzVmFsaWQocHBlcW9wKSkKKwkJZWxvZyhFUlJPUiwgIm1pc3Npbmcgb3BlcmF0b3IgJWQo JXUsJXUpIGluIG9wZmFtaWx5ICV1IiwKKwkJCSBlcXN0cmF0ZWd5LCBvcGNpbnR5cGUsIG9w Y2ludHlwZSwgb3BmYW1pbHkpOworCisJLyoKKwkgKiBBcmUgdGhlcmUgZXF1YWxpdHkgb3Bl cmF0b3JzIHRoYXQgdGFrZSBleGFjdGx5IHRoZSBGSyB0eXBlPyBBc3N1bWUKKwkgKiB3ZSBz aG91bGQgbG9vayB0aHJvdWdoIGFueSBkb21haW4gaGVyZS4KKwkgKi8KKwlma3R5cGVkID0g Z2V0QmFzZVR5cGUoZmt0eXBlKTsKKworCXBmZXFvcCA9IGdldF9vcGZhbWlseV9tZW1iZXIo b3BmYW1pbHksIG9wY2ludHlwZSwgZmt0eXBlZCwKKwkJCQkJCQkJIGVxc3RyYXRlZ3kpOwor CWlmIChPaWRJc1ZhbGlkKHBmZXFvcCkpCisJeworCQlwZmVxb3BfcmlnaHQgPSBma3R5cGVk OworCQlmZmVxb3AgPSBnZXRfb3BmYW1pbHlfbWVtYmVyKG9wZmFtaWx5LCBma3R5cGVkLCBm a3R5cGVkLAorCQkJCQkJCQkJIGVxc3RyYXRlZ3kpOworCX0KKwllbHNlCisJeworCQkvKiBr ZWVwIGNvbXBpbGVyIHF1aWV0ICovCisJCXBmZXFvcF9yaWdodCA9IEludmFsaWRPaWQ7CisJ CWZmZXFvcCA9IEludmFsaWRPaWQ7CisJfQorCisJaWYgKCEoT2lkSXNWYWxpZChwZmVxb3Ap ICYmIE9pZElzVmFsaWQoZmZlcW9wKSkpCisJeworCQkvKgorCQkgKiBPdGhlcndpc2UsIGxv b2sgZm9yIGFuIGltcGxpY2l0IGNhc3QgZnJvbSB0aGUgRksgdHlwZSB0byB0aGUKKwkJICog b3BjaW50eXBlLCBhbmQgaWYgZm91bmQsIHVzZSB0aGUgcHJpbWFyeSBlcXVhbGl0eSBvcGVy YXRvci4KKwkJICogVGhpcyBpcyBhIGJpdCB0cmlja3kgYmVjYXVzZSBvcGNpbnR5cGUgbWln aHQgYmUgYSBwb2x5bW9ycGhpYworCQkgKiB0eXBlIHN1Y2ggYXMgQU5ZQVJSQVkgb3IgQU5Z RU5VTTsgc28gd2hhdCB3ZSBoYXZlIHRvIHRlc3QgaXMKKwkJICogd2hldGhlciB0aGUgdHdv IGFjdHVhbCBjb2x1bW4gdHlwZXMgY2FuIGJlIGNvbmN1cnJlbnRseSBjYXN0IHRvCisJCSAq IHRoYXQgdHlwZS4gIChPdGhlcndpc2UsIHdlJ2QgZmFpbCB0byByZWplY3QgY29tYmluYXRp b25zIHN1Y2gKKwkJICogYXMgaW50W10gYW5kIHBvaW50W10uKQorCQkgKi8KKwkJT2lkCQkJ aW5wdXRfdHlwZWlkc1syXTsKKwkJT2lkCQkJdGFyZ2V0X3R5cGVpZHNbMl07CisKKwkJaW5w dXRfdHlwZWlkc1swXSA9IHBrdHlwZTsKKwkJaW5wdXRfdHlwZWlkc1sxXSA9IGZrdHlwZTsK KwkJdGFyZ2V0X3R5cGVpZHNbMF0gPSBvcGNpbnR5cGU7CisJCXRhcmdldF90eXBlaWRzWzFd ID0gb3BjaW50eXBlOworCQlpZiAoY2FuX2NvZXJjZV90eXBlKDIsIGlucHV0X3R5cGVpZHMs IHRhcmdldF90eXBlaWRzLAorCQkJCQkJCUNPRVJDSU9OX0lNUExJQ0lUKSkKKwkJeworCQkJ cGZlcW9wID0gZmZlcW9wID0gcHBlcW9wOworCQkJcGZlcW9wX3JpZ2h0ID0gb3BjaW50eXBl OworCQl9CisJfQorCisJaWYgKCEoT2lkSXNWYWxpZChwZmVxb3ApICYmIE9pZElzVmFsaWQo ZmZlcW9wKSkpCisJeworCQljaGFyICpma2F0dHJfbmFtZTsKKwkJY2hhciAqcGthdHRyX25h bWU7CisKKwkJaWYgKGZvcl9vdmVybGFwcykKKwkJeworCQkJZmthdHRyX25hbWUgPSBzdHJW YWwoZmtjb25zdHJhaW50LT5ma19wZXJpb2QpOworCQkJcGthdHRyX25hbWUgPSBzdHJWYWwo Zmtjb25zdHJhaW50LT5wa19wZXJpb2QpOworCQl9CisJCWVsc2UKKwkJeworCQkJZmthdHRy X25hbWUgPSBzdHJWYWwobGlzdF9udGgoZmtjb25zdHJhaW50LT5ma19hdHRycywgaSkpOwor CQkJcGthdHRyX25hbWUgPSBzdHJWYWwobGlzdF9udGgoZmtjb25zdHJhaW50LT5wa19hdHRy cywgaSkpOworCQl9CisKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RF X0RBVEFUWVBFX01JU01BVENIKSwKKwkJCQkgZXJybXNnKCJmb3JlaWduIGtleSBjb25zdHJh aW50IFwiJXNcIiBjYW5ub3QgYmUgaW1wbGVtZW50ZWQiLAorCQkJCQkJZmtjb25zdHJhaW50 LT5jb25uYW1lKSwKKwkJCQkgZXJyZGV0YWlsKCJLZXkgY29sdW1ucyBcIiVzXCIgYW5kIFwi JXNcIiAiCisJCQkJCQkgICAiYXJlIG9mIGluY29tcGF0aWJsZSB0eXBlczogJXMgYW5kICVz LiIsCisJCQkJCQkgICBma2F0dHJfbmFtZSwKKwkJCQkJCSAgIHBrYXR0cl9uYW1lLAorCQkJ CQkJICAgZm9ybWF0X3R5cGVfYmUoZmt0eXBlKSwKKwkJCQkJCSAgIGZvcm1hdF90eXBlX2Jl KHBrdHlwZSkpKSk7CisJfQorCisJaWYgKCpvbGRfY2hlY2tfb2spCisJeworCQkvKgorCQkg KiBXaGVuIGEgcGZlcW9wIGNoYW5nZXMsIHJldmFsaWRhdGUgdGhlIGNvbnN0cmFpbnQuICBX ZSBjb3VsZAorCQkgKiBwZXJtaXQgaW50cmEtb3BmYW1pbHkgY2hhbmdlcywgYnV0IHRoYXQg YWRkcyBzdWJ0bGUgY29tcGxleGl0eQorCQkgKiB3aXRob3V0IGFueSBjb25jcmV0ZSBiZW5l Zml0IGZvciBjb3JlIHR5cGVzLiAgV2UgbmVlZCBub3QKKwkJICogYXNzZXNzIHBwZXFvcCBv ciBmZmVxb3AsIHdoaWNoIFJJX0luaXRpYWxfQ2hlY2soKSBkb2VzIG5vdCB1c2UuCisJCSAq LworCQkqb2xkX2NoZWNrX29rID0gKHBmZXFvcCA9PSBsZmlyc3Rfb2lkKCpvbGRfcGZlcW9w X2l0ZW0pKTsKKwkJKm9sZF9wZmVxb3BfaXRlbSA9IGxuZXh0KGZrY29uc3RyYWludC0+b2xk X2NvbnBmZXFvcCwKKwkJCQkJCQkJKm9sZF9wZmVxb3BfaXRlbSk7CisJfQorCWlmICgqb2xk X2NoZWNrX29rKQorCXsKKwkJT2lkCQkJb2xkX2ZrdHlwZTsKKwkJT2lkCQkJbmV3X2ZrdHlw ZTsKKwkJQ29lcmNpb25QYXRoVHlwZSBvbGRfcGF0aHR5cGU7CisJCUNvZXJjaW9uUGF0aFR5 cGUgbmV3X3BhdGh0eXBlOworCQlPaWQJCQlvbGRfY2FzdGZ1bmM7CisJCU9pZAkJCW5ld19j YXN0ZnVuYzsKKwkJRm9ybV9wZ19hdHRyaWJ1dGUgYXR0ciA9IFR1cGxlRGVzY0F0dHIodGFi LT5vbGREZXNjLAorCQkJCQkJCQkJCQkgICBma2F0dG51bVtpXSAtIDEpOworCisJCS8qCisJ CSAqIElkZW50aWZ5IGNvZXJjaW9uIHBhdGh3YXlzIGZyb20gZWFjaCBvZiB0aGUgb2xkIGFu ZCBuZXcgRkstc2lkZQorCQkgKiBjb2x1bW4gdHlwZXMgdG8gdGhlIHJpZ2h0IChmb3JlaWdu KSBvcGVyYW5kIHR5cGUgb2YgdGhlIHBmZXFvcC4KKwkJICogV2UgbWF5IGFzc3VtZSB0aGF0 IHBnX2NvbnN0cmFpbnQuY29ua2V5IGlzIG5vdCBjaGFuZ2luZy4KKwkJICovCisJCW9sZF9m a3R5cGUgPSBhdHRyLT5hdHR0eXBpZDsKKwkJbmV3X2ZrdHlwZSA9IGZrdHlwZTsKKwkJb2xk X3BhdGh0eXBlID0gZmluZEZrZXlDYXN0KHBmZXFvcF9yaWdodCwgb2xkX2ZrdHlwZSwKKwkJ CQkJCQkJCSZvbGRfY2FzdGZ1bmMpOworCQluZXdfcGF0aHR5cGUgPSBmaW5kRmtleUNhc3Qo cGZlcW9wX3JpZ2h0LCBuZXdfZmt0eXBlLAorCQkJCQkJCQkJJm5ld19jYXN0ZnVuYyk7CisK KwkJLyoKKwkJICogVXBvbiBhIGNoYW5nZSB0byB0aGUgY2FzdCBmcm9tIHRoZSBGSyBjb2x1 bW4gdG8gaXRzIHBmZXFvcAorCQkgKiBvcGVyYW5kLCByZXZhbGlkYXRlIHRoZSBjb25zdHJh aW50LiAgRm9yIHRoaXMgZXZhbHVhdGlvbiwgYQorCQkgKiBiaW5hcnkgY29lcmNpb24gY2Fz dCBpcyBlcXVpdmFsZW50IHRvIG5vIGNhc3QgYXQgYWxsLiAgV2hpbGUKKwkJICogdHlwZSBp bXBsZW1lbnRvcnMgc2hvdWxkIGRlc2lnbiBpbXBsaWNpdCBjYXN0cyB3aXRoIGFuIGV5ZQor CQkgKiB0b3dhcmQgY29uc2lzdGVuY3kgb2Ygb3BlcmF0aW9ucyBsaWtlIGVxdWFsaXR5LCB3 ZSBjYW5ub3QKKwkJICogYXNzdW1lIGhlcmUgdGhhdCB0aGV5IGhhdmUgZG9uZSBzby4KKwkJ ICoKKwkJICogQSBmdW5jdGlvbiB3aXRoIGEgcG9seW1vcnBoaWMgYXJndW1lbnQgY291bGQg Y2hhbmdlIGJlaGF2aW9yCisJCSAqIGFyYml0cmFyaWx5IGluIHJlc3BvbnNlIHRvIGdldF9m bl9leHByX2FyZ3R5cGUoKS4gIFRoZXJlZm9yZSwKKwkJICogd2hlbiB0aGUgY2FzdCBkZXN0 aW5hdGlvbiBpcyBwb2x5bW9ycGhpYywgd2Ugb25seSBhdm9pZAorCQkgKiByZXZhbGlkYXRp b24gaWYgdGhlIGlucHV0IHR5cGUgaGFzIG5vdCBjaGFuZ2VkIGF0IGFsbC4gIEdpdmVuCisJ CSAqIGp1c3QgdGhlIGNvcmUgZGF0YSB0eXBlcyBhbmQgb3BlcmF0b3IgY2xhc3NlcywgdGhp cyByZXF1aXJlbWVudAorCQkgKiBwcmV2ZW50cyBubyB3b3VsZC1iZSBvcHRpbWl6YXRpb25z LgorCQkgKgorCQkgKiBJZiB0aGUgY2FzdCBjb252ZXJ0cyBmcm9tIGEgYmFzZSB0eXBlIHRv IGEgZG9tYWluIHRoZXJlb24sIHRoZW4KKwkJICogdGhhdCBkb21haW4gdHlwZSBtdXN0IGJl IHRoZSBvcGNpbnR5cGUgb2YgdGhlIHVuaXF1ZSBpbmRleC4KKwkJICogTmVjZXNzYXJpbHks IHRoZSBwcmltYXJ5IGtleSBjb2x1bW4gbXVzdCB0aGVuIGJlIG9mIHRoZSBkb21haW4KKwkJ ICogdHlwZS4gIFNpbmNlIHRoZSBjb25zdHJhaW50IHdhcyBwcmV2aW91c2x5IHZhbGlkLCBh bGwgdmFsdWVzIG9uCisJCSAqIHRoZSBmb3JlaWduIHNpZGUgbmVjZXNzYXJpbHkgZXhpc3Qg b24gdGhlIHByaW1hcnkgc2lkZSBhbmQgaW4KKwkJICogdHVybiBjb25mb3JtIHRvIHRoZSBk b21haW4uICBDb25zZXF1ZW50bHksIHdlIG5lZWQgbm90IHRyZWF0CisJCSAqIGRvbWFpbnMg c3BlY2lhbGx5IGhlcmUuCisJCSAqCisJCSAqIFNpbmNlIHdlIHJlcXVpcmUgdGhhdCBhbGwg Y29sbGF0aW9ucyBzaGFyZSB0aGUgc2FtZSBub3Rpb24gb2YKKwkJICogZXF1YWxpdHkgKHdo aWNoIHRoZXkgZG8sIGJlY2F1c2UgdGV4dGVxIHJlZHVjZXMgdG8gYml0d2lzZQorCQkgKiBl cXVhbGl0eSksIHdlIGRvbid0IGNvbXBhcmUgY29sbGF0aW9uIGhlcmUuCisJCSAqCisJCSAq IFdlIG5lZWQgbm90IGRpcmVjdGx5IGNvbnNpZGVyIHRoZSBQSyB0eXBlLiAgSXQncyBuZWNl c3NhcmlseQorCQkgKiBiaW5hcnkgY29lcmNpYmxlIHRvIHRoZSBvcGNpbnR5cGUgb2YgdGhl IHVuaXF1ZSBpbmRleCBjb2x1bW4sCisJCSAqIGFuZCByaV90cmlnZ2Vycy5jIHdpbGwgb25s eSBkZWFsIHdpdGggUEsgZGF0dW1zIGluIHRlcm1zIG9mCisJCSAqIHRoYXQgb3BjaW50eXBl LiAgQ2hhbmdpbmcgdGhlIG9wY2ludHlwZSBhbHNvIGNoYW5nZXMgcGZlcW9wLgorCQkgKi8K KwkJKm9sZF9jaGVja19vayA9IChuZXdfcGF0aHR5cGUgPT0gb2xkX3BhdGh0eXBlICYmCisJ CQkJCQluZXdfY2FzdGZ1bmMgPT0gb2xkX2Nhc3RmdW5jICYmCisJCQkJCQkoIUlzUG9seW1v cnBoaWNUeXBlKHBmZXFvcF9yaWdodCkgfHwKKwkJCQkJCSBuZXdfZmt0eXBlID09IG9sZF9m a3R5cGUpKTsKKworCX0KKworCSpwZmVxb3BPdXQgPSBwZmVxb3A7CisJKnBwZXFvcE91dCA9 IHBwZXFvcDsKKwkqZmZlcW9wT3V0ID0gZmZlcW9wOworfQorCiAvKgogICogV2hlbiB0aGUg cGFyZW50IG9mIGEgcGFydGl0aW9uIHJlY2VpdmVzIFt0aGUgcmVmZXJlbmNpbmcgc2lkZSBv Zl0gYSBmb3JlaWduCiAgKiBrZXksIHdlIG11c3QgcHJvcGFnYXRlIHRoYXQgZm9yZWlnbiBr ZXkgdG8gdGhlIHBhcnRpdGlvbi4gIEhvd2V2ZXIsIHRoZQpAQCAtMTE0MjgsNyArMTE1Mzgs MTEgQEAgQVRFeGVjQWx0ZXJDb25zdHJSZWN1cnNlKENvbnN0cmFpbnQgKmNtZGNvbiwgUmVs YXRpb24gY29ucmVsLCBSZWxhdGlvbiB0Z3JlbCwKIAkJCWlmICh0Z2Zvcm0tPnRnZm9pZCAh PSBGX1JJX0ZLRVlfTk9BQ1RJT05fREVMICYmCiAJCQkJdGdmb3JtLT50Z2ZvaWQgIT0gRl9S SV9GS0VZX05PQUNUSU9OX1VQRCAmJgogCQkJCXRnZm9ybS0+dGdmb2lkICE9IEZfUklfRktF WV9DSEVDS19JTlMgJiYKLQkJCQl0Z2Zvcm0tPnRnZm9pZCAhPSBGX1JJX0ZLRVlfQ0hFQ0tf VVBEKQorCQkJCXRnZm9ybS0+dGdmb2lkICE9IEZfUklfRktFWV9DSEVDS19VUEQgJiYKKwkJ CQl0Z2Zvcm0tPnRnZm9pZCAhPSBGX1RSSV9GS0VZX05PQUNUSU9OX0RFTCAmJgorCQkJCXRn Zm9ybS0+dGdmb2lkICE9IEZfVFJJX0ZLRVlfTk9BQ1RJT05fVVBEICYmCisJCQkJdGdmb3Jt LT50Z2ZvaWQgIT0gRl9UUklfRktFWV9DSEVDS19JTlMgJiYKKwkJCQl0Z2Zvcm0tPnRnZm9p ZCAhPSBGX1RSSV9GS0VZX0NIRUNLX1VQRCkKIAkJCQljb250aW51ZTsKIAogCQkJdGdDb3B5 VHVwbGUgPSBoZWFwX2NvcHl0dXBsZSh0Z3R1cGxlKTsKQEAgLTExNjc2LDcgKzExNzkwLDYg QEAgQVRFeGVjVmFsaWRhdGVDb25zdHJhaW50KExpc3QgKip3cXVldWUsIFJlbGF0aW9uIHJl bCwgY2hhciAqY29uc3RyTmFtZSwKIAlyZXR1cm4gYWRkcmVzczsKIH0KIAotCiAvKgogICog dHJhbnNmb3JtQ29sdW1uTmFtZUxpc3QgLSB0cmFuc2Zvcm0gbGlzdCBvZiBjb2x1bW4gbmFt ZXMKICAqCkBAIC0xMTc0NCw3ICsxMTg1Nyw5IEBAIHRyYW5zZm9ybUNvbHVtbk5hbWVMaXN0 KE9pZCByZWxJZCwgTGlzdCAqY29sTGlzdCwKIHN0YXRpYyBpbnQKIHRyYW5zZm9ybUZrZXlH ZXRQcmltYXJ5S2V5KFJlbGF0aW9uIHBrcmVsLCBPaWQgKmluZGV4T2lkLAogCQkJCQkJICAg TGlzdCAqKmF0dG5hbWVsaXN0LAorCQkJCQkJICAgTm9kZSAqKnBrX3BlcmlvZCwKIAkJCQkJ CSAgIGludDE2ICphdHRudW1zLCBPaWQgKmF0dHR5cGlkcywKKwkJCQkJCSAgIGludDE2ICpw ZXJpb2RhdHRudW1zLCBPaWQgKnBlcmlvZGF0dHR5cGlkcywKIAkJCQkJCSAgIE9pZCAqb3Bj bGFzc2VzKQogewogCUxpc3QJICAgKmluZGV4b2lkbGlzdDsKQEAgLTExODA5LDM2ICsxMTky NCw1NSBAQCB0cmFuc2Zvcm1Ga2V5R2V0UHJpbWFyeUtleShSZWxhdGlvbiBwa3JlbCwgT2lk ICppbmRleE9pZCwKIAogCS8qCiAJICogTm93IGJ1aWxkIHRoZSBsaXN0IG9mIFBLIGF0dHJp YnV0ZXMgZnJvbSB0aGUgaW5ka2V5IGRlZmluaXRpb24gKHdlCi0JICogYXNzdW1lIGEgcHJp bWFyeSBrZXkgY2Fubm90IGhhdmUgZXhwcmVzc2lvbmFsIGVsZW1lbnRzKQorCSAqIGFzc3Vt ZSBhIHByaW1hcnkga2V5IGNhbm5vdCBoYXZlIGV4cHJlc3Npb25hbCBlbGVtZW50cywgdW5s ZXNzIGl0CisJICogaGFzIGEgUEVSSU9EKQogCSAqLwogCSphdHRuYW1lbGlzdCA9IE5JTDsK IAlmb3IgKGkgPSAwOyBpIDwgaW5kZXhTdHJ1Y3QtPmluZG5rZXlhdHRzOyBpKyspCiAJewog CQlpbnQJCQlwa2F0dG5vID0gaW5kZXhTdHJ1Y3QtPmluZGtleS52YWx1ZXNbaV07CiAKLQkJ YXR0bnVtc1tpXSA9IHBrYXR0bm87Ci0JCWF0dHR5cGlkc1tpXSA9IGF0dG51bVR5cGVJZChw a3JlbCwgcGthdHRubyk7Ci0JCW9wY2xhc3Nlc1tpXSA9IGluZGNsYXNzLT52YWx1ZXNbaV07 Ci0JCSphdHRuYW1lbGlzdCA9IGxhcHBlbmQoKmF0dG5hbWVsaXN0LAotCQkJCQkJCSAgIG1h a2VTdHJpbmcocHN0cmR1cChOYW1lU3RyKCphdHRudW1BdHROYW1lKHBrcmVsLCBwa2F0dG5v KSkpKSk7CisJCWlmIChpID09IGluZGV4U3RydWN0LT5pbmRua2V5YXR0cyAtIDEgJiYgaW5k ZXhTdHJ1Y3QtPmluZGlzZXhjbHVzaW9uKQorCQl7CisJCQkvKiB3ZSBoYXZlIGEgcmFuZ2Ug Ki8KKwkJCS8qIFRoZSBjYWxsZXIgd2lsbCBzZXQgYXR0bnVtc1tpXSAqLworCQkJcGVyaW9k YXR0bnVtc1swXSA9IHBrYXR0bm87CisJCQlwZXJpb2RhdHR0eXBpZHNbMF0gPSBhdHRudW1U eXBlSWQocGtyZWwsIHBrYXR0bm8pOworCQkJb3BjbGFzc2VzW2ldID0gaW5kY2xhc3MtPnZh bHVlc1tpXTsKKworCQkJQXNzZXJ0KCpwa19wZXJpb2QgPT0gTlVMTCk7CisJCQkqcGtfcGVy aW9kID0gKE5vZGUgKikgbWFrZVN0cmluZyhwc3RyZHVwKE5hbWVTdHIoKmF0dG51bUF0dE5h bWUocGtyZWwsIHBrYXR0bm8pKSkpOworCQl9CisJCWVsc2UKKwkJeworCQkJYXR0bnVtc1tp XSA9IHBrYXR0bm87CisJCQlhdHR0eXBpZHNbaV0gPSBhdHRudW1UeXBlSWQocGtyZWwsIHBr YXR0bm8pOworCQkJb3BjbGFzc2VzW2ldID0gaW5kY2xhc3MtPnZhbHVlc1tpXTsKKwkJCSph dHRuYW1lbGlzdCA9IGxhcHBlbmQoKmF0dG5hbWVsaXN0LAorCQkJCQkJCQkgIG1ha2VTdHJp bmcocHN0cmR1cChOYW1lU3RyKCphdHRudW1BdHROYW1lKHBrcmVsLCBwa2F0dG5vKSkpKSk7 CisJCX0KIAl9CiAKIAlSZWxlYXNlU3lzQ2FjaGUoaW5kZXhUdXBsZSk7CiAKLQlyZXR1cm4g aTsKKwlpZiAoaW5kZXhTdHJ1Y3QtPmluZGlzZXhjbHVzaW9uKSByZXR1cm4gaSAtIDE7CisJ ZWxzZSByZXR1cm4gaTsKIH0KIAogLyoKICAqIHRyYW5zZm9ybUZrZXlDaGVja0F0dHJzIC0K ICAqCiAgKglNYWtlIHN1cmUgdGhhdCB0aGUgYXR0cmlidXRlcyBvZiBhIHJlZmVyZW5jZWQg dGFibGUgYmVsb25nIHRvIGEgdW5pcXVlCi0gKgkob3IgcHJpbWFyeSBrZXkpIGNvbnN0cmFp bnQuICBSZXR1cm4gdGhlIE9JRCBvZiB0aGUgaW5kZXggc3VwcG9ydGluZwotICoJdGhlIGNv bnN0cmFpbnQsIGFzIHdlbGwgYXMgdGhlIG9wY2xhc3NlcyBhc3NvY2lhdGVkIHdpdGggdGhl IGluZGV4CisgKgkob3IgcHJpbWFyeSBrZXkpIGNvbnN0cmFpbnQuICBPciBpZiB0aGlzIGlz IGEgdGVtcG9yYWwgZm9yZWlnbiBrZXkKKyAqCXRoZSBwcmltYXJ5IGtleSBzaG91bGQgYmUg YW4gZXhjbHVzaW9uIGNvbnN0cmFpbnQgaW5zdGVhZC4KKyAqCVJldHVybiB0aGUgT0lEIG9m IHRoZSBpbmRleCBzdXBwb3J0aW5nIHRoZSBjb25zdHJhaW50LAorICoJYXMgd2VsbCBhcyB0 aGUgb3BjbGFzc2VzIGFzc29jaWF0ZWQgd2l0aCB0aGUgaW5kZXgKICAqCWNvbHVtbnMuCiAg Ki8KIHN0YXRpYyBPaWQKIHRyYW5zZm9ybUZrZXlDaGVja0F0dHJzKFJlbGF0aW9uIHBrcmVs LAogCQkJCQkJaW50IG51bWF0dHJzLCBpbnQxNiAqYXR0bnVtcywKKwkJCQkJCWJvb2wgaXNf dGVtcG9yYWwsIGludDE2IHBlcmlvZGF0dG51bSwKIAkJCQkJCU9pZCAqb3BjbGFzc2VzKSAv KiBvdXRwdXQgcGFyYW1ldGVyICovCiB7CiAJT2lkCQkJaW5kZXhvaWQgPSBJbnZhbGlkT2lk OwpAQCAtMTE4NjUsNiArMTE5OTksMTAgQEAgdHJhbnNmb3JtRmtleUNoZWNrQXR0cnMoUmVs YXRpb24gcGtyZWwsCiAJCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfRk9SRUlHTl9L RVkpLAogCQkJCQkJIGVycm1zZygiZm9yZWlnbiBrZXkgcmVmZXJlbmNlZC1jb2x1bW5zIGxp c3QgbXVzdCBub3QgY29udGFpbiBkdXBsaWNhdGVzIikpKTsKIAkJfQorCQlpZiAoaXNfdGVt cG9yYWwgJiYgYXR0bnVtc1tpXSA9PSBwZXJpb2RhdHRudW0pCisJCQllcmVwb3J0KEVSUk9S LAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfRk9SRUlHTl9LRVkpLAorCQkJCQkg ZXJybXNnKCJmb3JlaWduIGtleSByZWZlcmVuY2VkLWNvbHVtbnMgbGlzdCBtdXN0IG5vdCBj b250YWluIGR1cGxpY2F0ZXMiKSkpOwogCX0KIAogCS8qCkBAIC0xMTg4NiwxMiArMTIwMjQs MTYgQEAgdHJhbnNmb3JtRmtleUNoZWNrQXR0cnMoUmVsYXRpb24gcGtyZWwsCiAJCWluZGV4 U3RydWN0ID0gKEZvcm1fcGdfaW5kZXgpIEdFVFNUUlVDVChpbmRleFR1cGxlKTsKIAogCQkv KgotCQkgKiBNdXN0IGhhdmUgdGhlIHJpZ2h0IG51bWJlciBvZiBjb2x1bW5zOyBtdXN0IGJl IHVuaXF1ZSBhbmQgbm90IGEKLQkJICogcGFydGlhbCBpbmRleDsgZm9yZ2V0IGl0IGlmIHRo ZXJlIGFyZSBhbnkgZXhwcmVzc2lvbnMsIHRvby4gSW52YWxpZAotCQkgKiBpbmRleGVzIGFy ZSBvdXQgYXMgd2VsbC4KKwkJICogTXVzdCBoYXZlIHRoZSByaWdodCBudW1iZXIgb2YgY29s dW1uczsgbXVzdCBiZSB1bmlxdWUKKwkJICogKG9yIGlmIHRlbXBvcmFsIHRoZW4gZXhjbHVz aW9uIGluc3RlYWQpIGFuZCBub3QgYQorCQkgKiBwYXJ0aWFsIGluZGV4OyBmb3JnZXQgaXQg aWYgdGhlcmUgYXJlIGFueSBleHByZXNzaW9ucywgdG9vLgorCQkgKiBJbnZhbGlkIGluZGV4 ZXMgYXJlIG91dCBhcyB3ZWxsLgogCQkgKi8KLQkJaWYgKGluZGV4U3RydWN0LT5pbmRua2V5 YXR0cyA9PSBudW1hdHRycyAmJgotCQkJaW5kZXhTdHJ1Y3QtPmluZGlzdW5pcXVlICYmCisJ CWlmICgoaXNfdGVtcG9yYWwKKwkJCSAgPyAoaW5kZXhTdHJ1Y3QtPmluZG5rZXlhdHRzID09 IG51bWF0dHJzICsgMSAmJgorCQkJCSBpbmRleFN0cnVjdC0+aW5kaXNleGNsdXNpb24pCisJ CQkgIDogKGluZGV4U3RydWN0LT5pbmRua2V5YXR0cyA9PSBudW1hdHRycyAmJgorCQkJCSBp bmRleFN0cnVjdC0+aW5kaXN1bmlxdWUpKSAmJgogCQkJaW5kZXhTdHJ1Y3QtPmluZGlzdmFs aWQgJiYKIAkJCWhlYXBfYXR0aXNudWxsKGluZGV4VHVwbGUsIEFudW1fcGdfaW5kZXhfaW5k cHJlZCwgTlVMTCkgJiYKIAkJCWhlYXBfYXR0aXNudWxsKGluZGV4VHVwbGUsIEFudW1fcGdf aW5kZXhfaW5kZXhwcnMsIE5VTEwpKQpAQCAtMTE5MjksNiArMTIwNzEsMTkgQEAgdHJhbnNm b3JtRmtleUNoZWNrQXR0cnMoUmVsYXRpb24gcGtyZWwsCiAJCQkJaWYgKCFmb3VuZCkKIAkJ CQkJYnJlYWs7CiAJCQl9CisJCQlpZiAoZm91bmQgJiYgaXNfdGVtcG9yYWwpCisJCQl7CisJ CQkJZm91bmQgPSBmYWxzZTsKKwkJCQlmb3IgKGogPSAwOyBqIDwgbnVtYXR0cnMgKyAxOyBq KyspCisJCQkJeworCQkJCQlpZiAocGVyaW9kYXR0bnVtID09IGluZGV4U3RydWN0LT5pbmRr ZXkudmFsdWVzW2pdKQorCQkJCQl7CisJCQkJCQlvcGNsYXNzZXNbbnVtYXR0cnNdID0gaW5k Y2xhc3MtPnZhbHVlc1tqXTsKKwkJCQkJCWZvdW5kID0gdHJ1ZTsKKwkJCQkJCWJyZWFrOwor CQkJCQl9CisJCQkJfQorCQkJfQogCiAJCQkvKgogCQkJICogUmVmdXNlIHRvIHVzZSBhIGRl ZmVycmFibGUgdW5pcXVlL3ByaW1hcnkga2V5LiAgVGhpcyBpcyBwZXIgU1FMCkBAIC0xMjAz OCw3ICsxMjE5Myw4IEBAIHZhbGlkYXRlRm9yZWlnbktleUNvbnN0cmFpbnQoY2hhciAqY29u bmFtZSwKIAkJCQkJCQkgUmVsYXRpb24gcmVsLAogCQkJCQkJCSBSZWxhdGlvbiBwa3JlbCwK IAkJCQkJCQkgT2lkIHBraW5kT2lkLAotCQkJCQkJCSBPaWQgY29uc3RyYWludE9pZCkKKwkJ CQkJCQkgT2lkIGNvbnN0cmFpbnRPaWQsCisJCQkJCQkJIGJvb2wgdGVtcG9yYWwpCiB7CiAJ VHVwbGVUYWJsZVNsb3QgKnNsb3Q7CiAJVGFibGVTY2FuRGVzYyBzY2FuOwpAQCAtMTIwNjcs OCArMTIyMjMsMTAgQEAgdmFsaWRhdGVGb3JlaWduS2V5Q29uc3RyYWludChjaGFyICpjb25u YW1lLAogCS8qCiAJICogU2VlIGlmIHdlIGNhbiBkbyBpdCB3aXRoIGEgc2luZ2xlIExFRlQg Sk9JTiBxdWVyeS4gIEEgZmFsc2UgcmVzdWx0CiAJICogaW5kaWNhdGVzIHdlIG11c3QgcHJv Y2VlZCB3aXRoIHRoZSBmaXJlLXRoZS10cmlnZ2VyIG1ldGhvZC4KKwkgKiBXZSBjYW4ndCBk byBhIExFRlQgSk9JTiBmb3IgdGVtcG9yYWwgRktzIHlldCwKKwkgKiBidXQgd2UgY2FuIG9u Y2Ugd2Ugc3VwcG9ydCB0ZW1wb3JhbCBsZWZ0IGpvaW5zLgogCSAqLwotCWlmIChSSV9Jbml0 aWFsX0NoZWNrKCZ0cmlnLCByZWwsIHBrcmVsKSkKKwlpZiAoIXRlbXBvcmFsICYmIFJJX0lu aXRpYWxfQ2hlY2soJnRyaWcsIHJlbCwgcGtyZWwpKQogCQlyZXR1cm47CiAKIAkvKgpAQCAt MTIxMzcsNiArMTIyOTUsNyBAQCBDcmVhdGVGS0NoZWNrVHJpZ2dlcihPaWQgbXlSZWxPaWQs IE9pZCByZWZSZWxPaWQsIENvbnN0cmFpbnQgKmZrY29uc3RyYWludCwKIHsKIAlPYmplY3RB ZGRyZXNzIHRyaWdBZGRyZXNzOwogCUNyZWF0ZVRyaWdTdG10ICpma190cmlnZ2VyOworCWJv b2wgaXNfdGVtcG9yYWwgPSBma2NvbnN0cmFpbnQtPmZrX3BlcmlvZDsKIAogCS8qCiAJICog Tm90ZTogZm9yIGEgc2VsZi1yZWZlcmVudGlhbCBGSyAocmVmZXJlbmNpbmcgYW5kIHJlZmVy ZW5jZWQgdGFibGVzIGFyZQpAQCAtMTIxNTYsMTIgKzEyMzE1LDE4IEBAIENyZWF0ZUZLQ2hl Y2tUcmlnZ2VyKE9pZCBteVJlbE9pZCwgT2lkIHJlZlJlbE9pZCwgQ29uc3RyYWludCAqZmtj b25zdHJhaW50LAogCS8qIEVpdGhlciBPTiBJTlNFUlQgb3IgT04gVVBEQVRFICovCiAJaWYg KG9uX2luc2VydCkKIAl7Ci0JCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05h bWUoIlJJX0ZLZXlfY2hlY2tfaW5zIik7CisJCWlmIChpc190ZW1wb3JhbCkKKwkJCWZrX3Ry aWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlRSSV9GS2V5X2NoZWNrX2lucyIp OworCQllbHNlCisJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJS SV9GS2V5X2NoZWNrX2lucyIpOwogCQlma190cmlnZ2VyLT5ldmVudHMgPSBUUklHR0VSX1RZ UEVfSU5TRVJUOwogCX0KIAllbHNlCiAJewotCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5 c3RlbUZ1bmNOYW1lKCJSSV9GS2V5X2NoZWNrX3VwZCIpOworCQlpZiAoaXNfdGVtcG9yYWwp CisJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJUUklfRktleV9j aGVja191cGQiKTsKKwkJZWxzZQorCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1G dW5jTmFtZSgiUklfRktleV9jaGVja191cGQiKTsKIAkJZmtfdHJpZ2dlci0+ZXZlbnRzID0g VFJJR0dFUl9UWVBFX1VQREFURTsKIAl9CiAKQEAgLTEyMjE5LDM3ICsxMjM4NCw2OCBAQCBj cmVhdGVGb3JlaWduS2V5QWN0aW9uVHJpZ2dlcnMoUmVsYXRpb24gcmVsLCBPaWQgcmVmUmVs T2lkLCBDb25zdHJhaW50ICpma2NvbnN0cgogCWZrX3RyaWdnZXItPndoZW5DbGF1c2UgPSBO VUxMOwogCWZrX3RyaWdnZXItPnRyYW5zaXRpb25SZWxzID0gTklMOwogCWZrX3RyaWdnZXIt PmNvbnN0cnJlbCA9IE5VTEw7Ci0Jc3dpdGNoIChma2NvbnN0cmFpbnQtPmZrX2RlbF9hY3Rp b24pCisJaWYgKGZrY29uc3RyYWludC0+ZmtfcGVyaW9kICE9IE5VTEwpCiAJewotCQljYXNl IEZLQ09OU1RSX0FDVElPTl9OT0FDVElPTjoKLQkJCWZrX3RyaWdnZXItPmRlZmVycmFibGUg PSBma2NvbnN0cmFpbnQtPmRlZmVycmFibGU7Ci0JCQlma190cmlnZ2VyLT5pbml0ZGVmZXJy ZWQgPSBma2NvbnN0cmFpbnQtPmluaXRkZWZlcnJlZDsKLQkJCWZrX3RyaWdnZXItPmZ1bmNu YW1lID0gU3lzdGVtRnVuY05hbWUoIlJJX0ZLZXlfbm9hY3Rpb25fZGVsIik7Ci0JCQlicmVh azsKLQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fUkVTVFJJQ1Q6Ci0JCQlma190cmlnZ2VyLT5k ZWZlcnJhYmxlID0gZmFsc2U7Ci0JCQlma190cmlnZ2VyLT5pbml0ZGVmZXJyZWQgPSBmYWxz ZTsKLQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlJJX0ZLZXlf cmVzdHJpY3RfZGVsIik7Ci0JCQlicmVhazsKLQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fQ0FT Q0FERToKLQkJCWZrX3RyaWdnZXItPmRlZmVycmFibGUgPSBmYWxzZTsKLQkJCWZrX3RyaWdn ZXItPmluaXRkZWZlcnJlZCA9IGZhbHNlOwotCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBT eXN0ZW1GdW5jTmFtZSgiUklfRktleV9jYXNjYWRlX2RlbCIpOwotCQkJYnJlYWs7Ci0JCWNh c2UgRktDT05TVFJfQUNUSU9OX1NFVE5VTEw6Ci0JCQlma190cmlnZ2VyLT5kZWZlcnJhYmxl ID0gZmFsc2U7Ci0JCQlma190cmlnZ2VyLT5pbml0ZGVmZXJyZWQgPSBmYWxzZTsKLQkJCWZr X3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlJJX0ZLZXlfc2V0bnVsbF9k ZWwiKTsKLQkJCWJyZWFrOwotCQljYXNlIEZLQ09OU1RSX0FDVElPTl9TRVRERUZBVUxUOgot CQkJZmtfdHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZhbHNlOwotCQkJZmtfdHJpZ2dlci0+aW5p dGRlZmVycmVkID0gZmFsc2U7Ci0JCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1 bmNOYW1lKCJSSV9GS2V5X3NldGRlZmF1bHRfZGVsIik7Ci0JCQlicmVhazsKLQkJZGVmYXVs dDoKLQkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgRksgYWN0aW9uIHR5cGU6ICVkIiwK LQkJCQkgKGludCkgZmtjb25zdHJhaW50LT5ma19kZWxfYWN0aW9uKTsKLQkJCWJyZWFrOwor CQkvKiBUZW1wb3JhbCBmb3JlaWduIGtleXMgKi8KKwkJc3dpdGNoIChma2NvbnN0cmFpbnQt PmZrX2RlbF9hY3Rpb24pCisJCXsKKwkJCWNhc2UgRktDT05TVFJfQUNUSU9OX05PQUNUSU9O OgorCQkJCWZrX3RyaWdnZXItPmRlZmVycmFibGUgPSBma2NvbnN0cmFpbnQtPmRlZmVycmFi bGU7CisJCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVkID0gZmtjb25zdHJhaW50LT5pbml0 ZGVmZXJyZWQ7CisJCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgi VFJJX0ZLZXlfbm9hY3Rpb25fZGVsIik7CisJCQkJYnJlYWs7CisJCQljYXNlIEZLQ09OU1RS X0FDVElPTl9SRVNUUklDVDoKKwkJCQlma190cmlnZ2VyLT5kZWZlcnJhYmxlID0gZmFsc2U7 CisJCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVkID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dl ci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiVFJJX0ZLZXlfcmVzdHJpY3RfZGVsIik7 CisJCQkJYnJlYWs7CisJCQljYXNlIEZLQ09OU1RSX0FDVElPTl9DQVNDQURFOgorCQkJY2Fz ZSBGS0NPTlNUUl9BQ1RJT05fU0VUTlVMTDoKKwkJCWNhc2UgRktDT05TVFJfQUNUSU9OX1NF VERFRkFVTFQ6CisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVf RkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJCSBlcnJtc2coImFjdGlvbiBub3Qgc3Vw cG9ydGVkIGZvciB0ZW1wb3JhbCBmb3JlaWduIGtleXMiKSkpOworCQkJCWJyZWFrOworCQkJ ZGVmYXVsdDoKKwkJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIEZLIGFjdGlvbiB0eXBl OiAlZCIsCisJCQkJCSAoaW50KSBma2NvbnN0cmFpbnQtPmZrX2RlbF9hY3Rpb24pOworCQkJ CWJyZWFrOworCQl9CisJfQorCWVsc2UKKwl7CisJCXN3aXRjaCAoZmtjb25zdHJhaW50LT5m a19kZWxfYWN0aW9uKQorCQl7CisJCQljYXNlIEZLQ09OU1RSX0FDVElPTl9OT0FDVElPTjoK KwkJCQlma190cmlnZ2VyLT5kZWZlcnJhYmxlID0gZmtjb25zdHJhaW50LT5kZWZlcnJhYmxl OworCQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZrY29uc3RyYWludC0+aW5pdGRl ZmVycmVkOworCQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlJJ X0ZLZXlfbm9hY3Rpb25fZGVsIik7CisJCQkJYnJlYWs7CisJCQljYXNlIEZLQ09OU1RSX0FD VElPTl9SRVNUUklDVDoKKwkJCQlma190cmlnZ2VyLT5kZWZlcnJhYmxlID0gZmFsc2U7CisJ CQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVkID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+ ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiUklfRktleV9yZXN0cmljdF9kZWwiKTsKKwkJ CQlicmVhazsKKwkJCWNhc2UgRktDT05TVFJfQUNUSU9OX0NBU0NBREU6CisJCQkJZmtfdHJp Z2dlci0+ZGVmZXJyYWJsZSA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJl ZCA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUo IlJJX0ZLZXlfY2FzY2FkZV9kZWwiKTsKKwkJCQlicmVhazsKKwkJCWNhc2UgRktDT05TVFJf QUNUSU9OX1NFVE5VTEw6CisJCQkJZmtfdHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZhbHNlOwor CQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXIt PmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlJJX0ZLZXlfc2V0bnVsbF9kZWwiKTsKKwkJ CQlicmVhazsKKwkJCWNhc2UgRktDT05TVFJfQUNUSU9OX1NFVERFRkFVTFQ6CisJCQkJZmtf dHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmluaXRkZWZl cnJlZCA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05h bWUoIlJJX0ZLZXlfc2V0ZGVmYXVsdF9kZWwiKTsKKwkJCQlicmVhazsKKwkJCWRlZmF1bHQ6 CisJCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBGSyBhY3Rpb24gdHlwZTogJWQiLAor CQkJCQkgKGludCkgZmtjb25zdHJhaW50LT5ma19kZWxfYWN0aW9uKTsKKwkJCQlicmVhazsK KwkJfQogCX0KIAogCXRyaWdBZGRyZXNzID0gQ3JlYXRlVHJpZ2dlcihma190cmlnZ2VyLCBO VUxMLCByZWZSZWxPaWQsCkBAIC0xMjI3OSwzNyArMTI0NzUsNjggQEAgY3JlYXRlRm9yZWln bktleUFjdGlvblRyaWdnZXJzKFJlbGF0aW9uIHJlbCwgT2lkIHJlZlJlbE9pZCwgQ29uc3Ry YWludCAqZmtjb25zdHIKIAlma190cmlnZ2VyLT53aGVuQ2xhdXNlID0gTlVMTDsKIAlma190 cmlnZ2VyLT50cmFuc2l0aW9uUmVscyA9IE5JTDsKIAlma190cmlnZ2VyLT5jb25zdHJyZWwg PSBOVUxMOwotCXN3aXRjaCAoZmtjb25zdHJhaW50LT5ma191cGRfYWN0aW9uKQorCWlmIChm a2NvbnN0cmFpbnQtPmZrX3BlcmlvZCAhPSBOVUxMKQogCXsKLQkJY2FzZSBGS0NPTlNUUl9B Q1RJT05fTk9BQ1RJT046Ci0JCQlma190cmlnZ2VyLT5kZWZlcnJhYmxlID0gZmtjb25zdHJh aW50LT5kZWZlcnJhYmxlOwotCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVkID0gZmtjb25z dHJhaW50LT5pbml0ZGVmZXJyZWQ7Ci0JCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3Rl bUZ1bmNOYW1lKCJSSV9GS2V5X25vYWN0aW9uX3VwZCIpOwotCQkJYnJlYWs7Ci0JCWNhc2Ug RktDT05TVFJfQUNUSU9OX1JFU1RSSUNUOgotCQkJZmtfdHJpZ2dlci0+ZGVmZXJyYWJsZSA9 IGZhbHNlOwotCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVkID0gZmFsc2U7Ci0JCQlma190 cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJSSV9GS2V5X3Jlc3RyaWN0X3Vw ZCIpOwotCQkJYnJlYWs7Ci0JCWNhc2UgRktDT05TVFJfQUNUSU9OX0NBU0NBREU6Ci0JCQlm a190cmlnZ2VyLT5kZWZlcnJhYmxlID0gZmFsc2U7Ci0JCQlma190cmlnZ2VyLT5pbml0ZGVm ZXJyZWQgPSBmYWxzZTsKLQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05h bWUoIlJJX0ZLZXlfY2FzY2FkZV91cGQiKTsKLQkJCWJyZWFrOwotCQljYXNlIEZLQ09OU1RS X0FDVElPTl9TRVROVUxMOgotCQkJZmtfdHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZhbHNlOwot CQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVkID0gZmFsc2U7Ci0JCQlma190cmlnZ2VyLT5m dW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJSSV9GS2V5X3NldG51bGxfdXBkIik7Ci0JCQli cmVhazsKLQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fU0VUREVGQVVMVDoKLQkJCWZrX3RyaWdn ZXItPmRlZmVycmFibGUgPSBmYWxzZTsKLQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9 IGZhbHNlOwotCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiUklf RktleV9zZXRkZWZhdWx0X3VwZCIpOwotCQkJYnJlYWs7Ci0JCWRlZmF1bHQ6Ci0JCQllbG9n KEVSUk9SLCAidW5yZWNvZ25pemVkIEZLIGFjdGlvbiB0eXBlOiAlZCIsCi0JCQkJIChpbnQp IGZrY29uc3RyYWludC0+ZmtfdXBkX2FjdGlvbik7Ci0JCQlicmVhazsKKwkJLyogVGVtcG9y YWwgZm9yZWlnbiBrZXlzICovCisJCXN3aXRjaCAoZmtjb25zdHJhaW50LT5ma191cGRfYWN0 aW9uKQorCQl7CisJCQljYXNlIEZLQ09OU1RSX0FDVElPTl9OT0FDVElPTjoKKwkJCQlma190 cmlnZ2VyLT5kZWZlcnJhYmxlID0gZmtjb25zdHJhaW50LT5kZWZlcnJhYmxlOworCQkJCWZr X3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZrY29uc3RyYWludC0+aW5pdGRlZmVycmVkOwor CQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlRSSV9GS2V5X25v YWN0aW9uX3VwZCIpOworCQkJCWJyZWFrOworCQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fUkVT VFJJQ1Q6CisJCQkJZmtfdHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZhbHNlOworCQkJCWZrX3Ry aWdnZXItPmluaXRkZWZlcnJlZCA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1l ID0gU3lzdGVtRnVuY05hbWUoIlRSSV9GS2V5X3Jlc3RyaWN0X3VwZCIpOworCQkJCWJyZWFr OworCQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fQ0FTQ0FERToKKwkJCWNhc2UgRktDT05TVFJf QUNUSU9OX1NFVE5VTEw6CisJCQljYXNlIEZLQ09OU1RSX0FDVElPTl9TRVRERUZBVUxUOgor CQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9U X1NVUFBPUlRFRCksCisJCQkJCQkgZXJybXNnKCJhY3Rpb24gbm90IHN1cHBvcnRlZCBmb3Ig dGVtcG9yYWwgZm9yZWlnbiBrZXlzIikpKTsKKwkJCQlicmVhazsKKwkJCWRlZmF1bHQ6CisJ CQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBGSyBhY3Rpb24gdHlwZTogJWQiLAorCQkJ CQkgKGludCkgZmtjb25zdHJhaW50LT5ma191cGRfYWN0aW9uKTsKKwkJCQlicmVhazsKKwkJ fQorCX0KKwllbHNlCisJeworCQlzd2l0Y2ggKGZrY29uc3RyYWludC0+ZmtfdXBkX2FjdGlv bikKKwkJeworCQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fTk9BQ1RJT046CisJCQkJZmtfdHJp Z2dlci0+ZGVmZXJyYWJsZSA9IGZrY29uc3RyYWludC0+ZGVmZXJyYWJsZTsKKwkJCQlma190 cmlnZ2VyLT5pbml0ZGVmZXJyZWQgPSBma2NvbnN0cmFpbnQtPmluaXRkZWZlcnJlZDsKKwkJ CQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJSSV9GS2V5X25vYWN0 aW9uX3VwZCIpOworCQkJCWJyZWFrOworCQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fUkVTVFJJ Q1Q6CisJCQkJZmtfdHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZhbHNlOworCQkJCWZrX3RyaWdn ZXItPmluaXRkZWZlcnJlZCA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0g U3lzdGVtRnVuY05hbWUoIlJJX0ZLZXlfcmVzdHJpY3RfdXBkIik7CisJCQkJYnJlYWs7CisJ CQljYXNlIEZLQ09OU1RSX0FDVElPTl9DQVNDQURFOgorCQkJCWZrX3RyaWdnZXItPmRlZmVy cmFibGUgPSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5pbml0ZGVmZXJyZWQgPSBmYWxzZTsK KwkJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJSSV9GS2V5X2Nh c2NhZGVfdXBkIik7CisJCQkJYnJlYWs7CisJCQljYXNlIEZLQ09OU1RSX0FDVElPTl9TRVRO VUxMOgorCQkJCWZrX3RyaWdnZXItPmRlZmVycmFibGUgPSBmYWxzZTsKKwkJCQlma190cmln Z2VyLT5pbml0ZGVmZXJyZWQgPSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9 IFN5c3RlbUZ1bmNOYW1lKCJSSV9GS2V5X3NldG51bGxfdXBkIik7CisJCQkJYnJlYWs7CisJ CQljYXNlIEZLQ09OU1RSX0FDVElPTl9TRVRERUZBVUxUOgorCQkJCWZrX3RyaWdnZXItPmRl ZmVycmFibGUgPSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5pbml0ZGVmZXJyZWQgPSBmYWxz ZTsKKwkJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJSSV9GS2V5 X3NldGRlZmF1bHRfdXBkIik7CisJCQkJYnJlYWs7CisJCQlkZWZhdWx0OgorCQkJCWVsb2co RVJST1IsICJ1bnJlY29nbml6ZWQgRksgYWN0aW9uIHR5cGU6ICVkIiwKKwkJCQkJIChpbnQp IGZrY29uc3RyYWludC0+ZmtfdXBkX2FjdGlvbik7CisJCQkJYnJlYWs7CisJCX0KIAl9CiAK IAl0cmlnQWRkcmVzcyA9IENyZWF0ZVRyaWdnZXIoZmtfdHJpZ2dlciwgTlVMTCwgcmVmUmVs T2lkLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSBiL3NyYy9iYWNr ZW5kL3BhcnNlci9ncmFtLnkKaW5kZXggMTRkNGUyNGZjYy4uMzAxYTRmYTIyMSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQorKysgYi9zcmMvYmFja2VuZC9wYXJz ZXIvZ3JhbS55CkBAIC01MjMsMTEgKzUyMywxMiBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vy c2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVl cnkpOwogJXR5cGUgPG5vZGU+CVRhYmxlRWxlbWVudCBUeXBlZFRhYmxlRWxlbWVudCBDb25z dHJhaW50RWxlbSBUYWJsZUZ1bmNFbGVtZW50CiAldHlwZSA8bm9kZT4JY29sdW1uRGVmIGNv bHVtbk9wdGlvbnMKICV0eXBlIDxkZWZlbHQ+CWRlZl9lbGVtIHJlbG9wdGlvbl9lbGVtIG9s ZF9hZ2dyX2VsZW0gb3BlcmF0b3JfZGVmX2VsZW0KLSV0eXBlIDxub2RlPglkZWZfYXJnIGNv bHVtbkVsZW0gd2l0aG91dF9vdmVybGFwc19jbGF1c2UKKyV0eXBlIDxub2RlPglkZWZfYXJn IGNvbHVtbkVsZW0gd2l0aG91dF9vdmVybGFwc19jbGF1c2Ugb3B0aW9uYWxQZXJpb2ROYW1l CiAJCQkJd2hlcmVfY2xhdXNlIHdoZXJlX29yX2N1cnJlbnRfY2xhdXNlCiAJCQkJYV9leHBy IGJfZXhwciBjX2V4cHIgQWV4cHJDb25zdCBpbmRpcmVjdGlvbl9lbCBvcHRfc2xpY2VfYm91 bmQKIAkJCQljb2x1bW5yZWYgaW5fZXhwciBoYXZpbmdfY2xhdXNlIGZ1bmNfdGFibGUgeG1s dGFibGUgYXJyYXlfZXhwcgogCQkJCU9wdFdoZXJlQ2xhdXNlIG9wZXJhdG9yX2RlZl9hcmcK KyV0eXBlIDxsaXN0PglvcHRfY29sdW1uX2FuZF9wZXJpb2RfbGlzdAogJXR5cGUgPGxpc3Q+ CXJvd3Nmcm9tX2l0ZW0gcm93c2Zyb21fbGlzdCBvcHRfY29sX2RlZl9saXN0CiAldHlwZSA8 Ym9vbGVhbj4gb3B0X29yZGluYWxpdHkKICV0eXBlIDxsaXN0PglFeGNsdXNpb25Db25zdHJh aW50TGlzdCBFeGNsdXNpb25Db25zdHJhaW50RWxlbQpAQCAtNzQ1LDcgKzc0Niw3IEBAIHN0 YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0 ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJT1ZFUiBPVkVSTEFQUyBPVkVSTEFZIE9WRVJS SURJTkcgT1dORUQgT1dORVIKIAogCVBBUkFMTEVMIFBBUkFNRVRFUiBQQVJTRVIgUEFSVElB TCBQQVJUSVRJT04gUEFTU0lORyBQQVNTV09SRAotCVBMQUNJTkcgUExBTlMgUE9MSUNZCisJ UEVSSU9EIFBMQUNJTkcgUExBTlMgUE9MSUNZCiAJUE9TSVRJT04gUFJFQ0VESU5HIFBSRUNJ U0lPTiBQUkVTRVJWRSBQUkVQQVJFIFBSRVBBUkVEIFBSSU1BUlkKIAlQUklPUiBQUklWSUxF R0VTIFBST0NFRFVSQUwgUFJPQ0VEVVJFIFBST0NFRFVSRVMgUFJPR1JBTSBQVUJMSUNBVElP TgogCkBAIC00MTk0LDIxICs0MTk1LDIzIEBAIENvbnN0cmFpbnRFbGVtOgogCQkJCQkJCQkg ICBOVUxMLCB5eXNjYW5uZXIpOwogCQkJCQkkJCA9IChOb2RlICopIG47CiAJCQkJfQotCQkJ fCBGT1JFSUdOIEtFWSAnKCcgY29sdW1uTGlzdCAnKScgUkVGRVJFTkNFUyBxdWFsaWZpZWRf bmFtZQotCQkJCW9wdF9jb2x1bW5fbGlzdCBrZXlfbWF0Y2gga2V5X2FjdGlvbnMgQ29uc3Ry YWludEF0dHJpYnV0ZVNwZWMKKwkJCXwgRk9SRUlHTiBLRVkgJygnIGNvbHVtbkxpc3Qgb3B0 aW9uYWxQZXJpb2ROYW1lICcpJyBSRUZFUkVOQ0VTIHF1YWxpZmllZF9uYW1lCisJCQkJb3B0 X2NvbHVtbl9hbmRfcGVyaW9kX2xpc3Qga2V5X21hdGNoIGtleV9hY3Rpb25zIENvbnN0cmFp bnRBdHRyaWJ1dGVTcGVjCiAJCQkJewogCQkJCQlDb25zdHJhaW50ICpuID0gbWFrZU5vZGUo Q29uc3RyYWludCk7CiAKIAkJCQkJbi0+Y29udHlwZSA9IENPTlNUUl9GT1JFSUdOOwogCQkJ CQluLT5sb2NhdGlvbiA9IEAxOwotCQkJCQluLT5wa3RhYmxlID0gJDc7CisJCQkJCW4tPnBr dGFibGUgPSAkODsKIAkJCQkJbi0+ZmtfYXR0cnMgPSAkNDsKLQkJCQkJbi0+cGtfYXR0cnMg PSAkODsKLQkJCQkJbi0+ZmtfbWF0Y2h0eXBlID0gJDk7Ci0JCQkJCW4tPmZrX3VwZF9hY3Rp b24gPSAoJDEwKS0+dXBkYXRlQWN0aW9uLT5hY3Rpb247Ci0JCQkJCW4tPmZrX2RlbF9hY3Rp b24gPSAoJDEwKS0+ZGVsZXRlQWN0aW9uLT5hY3Rpb247Ci0JCQkJCW4tPmZrX2RlbF9zZXRf Y29scyA9ICgkMTApLT5kZWxldGVBY3Rpb24tPmNvbHM7Ci0JCQkJCXByb2Nlc3NDQVNiaXRz KCQxMSwgQDExLCAiRk9SRUlHTiBLRVkiLAorCQkJCQluLT5ma19wZXJpb2QgPSAkNTsKKwkJ CQkJbi0+cGtfYXR0cnMgPSBsaW5pdGlhbCgkOSk7CisJCQkJCW4tPnBrX3BlcmlvZCA9IGxz ZWNvbmQoJDkpOworCQkJCQluLT5ma19tYXRjaHR5cGUgPSAkMTA7CisJCQkJCW4tPmZrX3Vw ZF9hY3Rpb24gPSAoJDExKS0+dXBkYXRlQWN0aW9uLT5hY3Rpb247CisJCQkJCW4tPmZrX2Rl bF9hY3Rpb24gPSAoJDExKS0+ZGVsZXRlQWN0aW9uLT5hY3Rpb247CisJCQkJCW4tPmZrX2Rl bF9zZXRfY29scyA9ICgkMTEpLT5kZWxldGVBY3Rpb24tPmNvbHM7CisJCQkJCXByb2Nlc3ND QVNiaXRzKCQxMiwgQDEyLCAiRk9SRUlHTiBLRVkiLAogCQkJCQkJCQkgICAmbi0+ZGVmZXJy YWJsZSwgJm4tPmluaXRkZWZlcnJlZCwKIAkJCQkJCQkJICAgJm4tPnNraXBfdmFsaWRhdGlv biwgTlVMTCwKIAkJCQkJCQkJICAgeXlzY2FubmVyKTsKQEAgLTQyMzYsNiArNDIzOSwxNiBA QCB3aXRob3V0X292ZXJsYXBzX2NsYXVzZToKIAkJCXwgLypFTVBUWSovICAgICAgICAgICAg ICAgeyAkJCA9IE5VTEw7IH0KIAk7CiAKK29wdGlvbmFsUGVyaW9kTmFtZToKKwkJCScsJyBQ RVJJT0QgY29sdW1uRWxlbSB7ICQkID0gJDM7IH0KKwkJCXwgLypFTVBUWSovICAgICAgICAg ICAgICAgeyAkJCA9IE5VTEw7IH0KKwk7CisKK29wdF9jb2x1bW5fYW5kX3BlcmlvZF9saXN0 OgorCQkJJygnIGNvbHVtbkxpc3Qgb3B0aW9uYWxQZXJpb2ROYW1lICcpJwkJCXsgJCQgPSBs aXN0X21ha2UyKCQyLCAkMyk7IH0KKwkJCXwgLypFTVBUWSovCQkJCQkJCQl7ICQkID0gbGlz dF9tYWtlMihOSUwsIE5VTEwpOyB9CisJCTsKKwogY29sdW1uRWxlbTogQ29sSWQKIAkJCQl7 CiAJCQkJCSQkID0gKE5vZGUgKikgbWFrZVN0cmluZygkMSk7CkBAIC0xNzU1OSw2ICsxNzU3 Miw3IEBAIHJlc2VydmVkX2tleXdvcmQ6CiAJCQl8IE9OTFkKIAkJCXwgT1IKIAkJCXwgT1JE RVIKKwkJCXwgUEVSSU9ECiAJCQl8IFBMQUNJTkcKIAkJCXwgUFJJTUFSWQogCQkJfCBSRUZF UkVOQ0VTCkBAIC0xNzg2OCw2ICsxNzg4Miw3IEBAIGJhcmVfbGFiZWxfa2V5d29yZDoKIAkJ CXwgUEFSVElUSU9OCiAJCQl8IFBBU1NJTkcKIAkJCXwgUEFTU1dPUkQKKwkJCXwgUEVSSU9E CiAJCQl8IFBMQUNJTkcKIAkJCXwgUExBTlMKIAkJCXwgUE9MSUNZCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC91dGlscy9hZHQvcmlfdHJpZ2dlcnMuYyBiL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC9yaV90cmlnZ2Vycy5jCmluZGV4IDY5NDVkOTliM2QuLmFiYTBlNjJkZjYgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yaV90cmlnZ2Vycy5jCisrKyBiL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC9yaV90cmlnZ2Vycy5jCkBAIC0zMSw2ICszMSw3IEBACiAjaW5j bHVkZSAiY2F0YWxvZy9wZ19jb2xsYXRpb24uaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2Nv bnN0cmFpbnQuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX29wZXJhdG9yLmgiCisjaW5jbHVk ZSAiY2F0YWxvZy9wZ19yYW5nZS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgog I2luY2x1ZGUgImNvbW1hbmRzL3RyaWdnZXIuaCIKICNpbmNsdWRlICJleGVjdXRvci9leGVj dXRvci5oIgpAQCAtNDgsNiArNDksNyBAQAogI2luY2x1ZGUgInV0aWxzL2ludmFsLmgiCiAj aW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMu aCIKKyNpbmNsdWRlICJ1dGlscy9yYW5nZXR5cGVzLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVs LmgiCiAjaW5jbHVkZSAidXRpbHMvcmxzLmgiCiAjaW5jbHVkZSAidXRpbHMvcnVsZXV0aWxz LmgiCkBAIC0xMTgsNiArMTIwLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUklfQ29uc3RyYWludElu Zm8KIAlpbnQxNgkJY29uZmRlbHNldGNvbHNbUklfTUFYX05VTUtFWVNdOyAvKiBhdHRudW1z IG9mIGNvbHMgdG8gc2V0IG9uCiAJCQkJCQkJCQkJCQkgKiBkZWxldGUgKi8KIAljaGFyCQlj b25mbWF0Y2h0eXBlOwkvKiBmb3JlaWduIGtleSdzIG1hdGNoIHR5cGUgKi8KKwlib29sCQl0 ZW1wb3JhbDsJCS8qIGlmIHRoZSBmb3JlaWduIGtleSBpcyB0ZW1wb3JhbCAqLwogCWludAkJ CW5rZXlzOwkJCS8qIG51bWJlciBvZiBrZXkgY29sdW1ucyAqLwogCWludDE2CQlwa19hdHRu dW1zW1JJX01BWF9OVU1LRVlTXTsgLyogYXR0bnVtcyBvZiByZWZlcmVuY2VkIGNvbHMgKi8K IAlpbnQxNgkJZmtfYXR0bnVtc1tSSV9NQVhfTlVNS0VZU107IC8qIGF0dG51bXMgb2YgcmVm ZXJlbmNpbmcgY29scyAqLwpAQCAtMjAwLDggKzIwMyw5IEBAIHN0YXRpYyBpbnQJcmlfTnVs bENoZWNrKFR1cGxlRGVzYyB0dXBEZXNjLCBUdXBsZVRhYmxlU2xvdCAqc2xvdCwKIHN0YXRp YyB2b2lkIHJpX0J1aWxkUXVlcnlLZXkoUklfUXVlcnlLZXkgKmtleSwKIAkJCQkJCQkgY29u c3QgUklfQ29uc3RyYWludEluZm8gKnJpaW5mbywKIAkJCQkJCQkgaW50MzIgY29uc3RyX3F1 ZXJ5bm8pOwotc3RhdGljIGJvb2wgcmlfS2V5c0VxdWFsKFJlbGF0aW9uIHJlbCwgVHVwbGVU YWJsZVNsb3QgKm9sZHNsb3QsIFR1cGxlVGFibGVTbG90ICpuZXdzbG90LAorc3RhdGljIGJv b2wgcmlfS2V5c1N0YWJsZShSZWxhdGlvbiByZWwsIFR1cGxlVGFibGVTbG90ICpvbGRzbG90 LCBUdXBsZVRhYmxlU2xvdCAqbmV3c2xvdCwKIAkJCQkJCSBjb25zdCBSSV9Db25zdHJhaW50 SW5mbyAqcmlpbmZvLCBib29sIHJlbF9pc19wayk7CitzdGF0aWMgYm9vbCByaV9SYW5nZUF0 dHJpYnV0ZU5lZWRzQ2hlY2soYm9vbCByZWxfaXNfcGssIERhdHVtIG9sZHZhbHVlLCBEYXR1 bSBuZXd2YWx1ZSk7CiBzdGF0aWMgYm9vbCByaV9BdHRyaWJ1dGVzRXF1YWwoT2lkIGVxX29w ciwgT2lkIHR5cGVpZCwKIAkJCQkJCQkgICBEYXR1bSBvbGR2YWx1ZSwgRGF0dW0gbmV3dmFs dWUpOwogCkBAIC0zNjEsMjYgKzM2NSw1OCBAQCBSSV9GS2V5X2NoZWNrKFRyaWdnZXJEYXRh ICp0cmlnZGF0YSkKIAogCQkvKiAtLS0tLS0tLS0tCiAJCSAqIFRoZSBxdWVyeSBzdHJpbmcg YnVpbHQgaXMKLQkJICoJU0VMRUNUIDEgRlJPTSBbT05MWV0gPHBrdGFibGU+IHggV0hFUkUg cGthdHQxID0gJDEgW0FORCAuLi5dCi0JCSAqCQkgICBGT1IgS0VZIFNIQVJFIE9GIHgKKwkJ ICoJU0VMRUNUIDEKKwkJICoJRlJPTSBbT05MWV0gPHBrdGFibGU+IHggV0hFUkUgcGthdHQx ID0gJDEgW0FORCAuLi5dCisJCSAqCUZPUiBLRVkgU0hBUkUgT0YgeAogCQkgKiBUaGUgdHlw ZSBpZCdzIGZvciB0aGUgJCBwYXJhbWV0ZXJzIGFyZSB0aG9zZSBvZiB0aGUKIAkJICogY29y cmVzcG9uZGluZyBGSyBhdHRyaWJ1dGVzLgorCQkgKgorCQkgKiBCdXQgZm9yIHRlbXBvcmFs IEZLcyB3ZSBuZWVkIHRvIG1ha2Ugc3VyZQorCQkgKiB0aGUgRksncyByYW5nZSBpcyBjb21w bGV0ZWx5IGNvdmVyZWQuCisJCSAqIFNvIHdlIHVzZSB0aGlzIHF1ZXJ5IGluc3RlYWQ6CisJ CSAqICBTRUxFQ1QgMQorCQkgKglGUk9NCSgKKwkJICoJCVNFTEVDVCBwa3BlcmlvZGF0dCBB UyByCisJCSAqCQlGUk9NICAgW09OTFldIHBrdGFibGUgeAorCQkgKgkJV0hFUkUgIHBrYXR0 MSA9ICQxIFtBTkQgLi4uXQorCQkgKgkJQU5EICAgIHBrcGVyaW9kYXR0ICYmICRuCisJCSAq CQlGT1IgS0VZIFNIQVJFIE9GIHgKKwkJICoJKSB4MQorCQkgKiAgSEFWSU5HICRuIDxAIHJh bmdlX2FnZyh4MS5yKQorCQkgKiBOb3RlIGlmIEZPUiBLRVkgU0hBUkUgZXZlciBhbGxvd3Mg R1JPVVAgQlkgYW5kIEhBVklORworCQkgKiB3ZSBjYW4gbWFrZSB0aGlzIGEgYml0IHNpbXBs ZXIuCiAJCSAqIC0tLS0tLS0tLS0KIAkJICovCiAJCWluaXRTdHJpbmdJbmZvKCZxdWVyeWJ1 Zik7CiAJCXBrX29ubHkgPSBwa19yZWwtPnJkX3JlbC0+cmVsa2luZCA9PSBSRUxLSU5EX1BB UlRJVElPTkVEX1RBQkxFID8KIAkJCSIiIDogIk9OTFkgIjsKIAkJcXVvdGVSZWxhdGlvbk5h bWUocGtyZWxuYW1lLCBwa19yZWwpOwotCQlhcHBlbmRTdHJpbmdJbmZvKCZxdWVyeWJ1Ziwg IlNFTEVDVCAxIEZST00gJXMlcyB4IiwKLQkJCQkJCSBwa19vbmx5LCBwa3JlbG5hbWUpOwor CQlpZiAocmlpbmZvLT50ZW1wb3JhbCkKKwkJeworCQkJcXVvdGVPbmVOYW1lKGF0dG5hbWUs CisJCQkJCVJJQXR0TmFtZShwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tyaWluZm8tPm5r ZXlzIC0gMV0pKTsKKworCQkJYXBwZW5kU3RyaW5nSW5mbygmcXVlcnlidWYsCisJCQkJCSJT RUxFQ1QgMSBGUk9NIChTRUxFQ1QgJXMgQVMgciBGUk9NICVzJXMgeCIsCisJCQkJCWF0dG5h bWUsIHBrX29ubHksIHBrcmVsbmFtZSk7CisJCX0KKwkJZWxzZQorCQl7CisJCQlhcHBlbmRT dHJpbmdJbmZvKCZxdWVyeWJ1ZiwgIlNFTEVDVCAxIEZST00gJXMlcyB4IiwKKwkJCQkJCQkg cGtfb25seSwgcGtyZWxuYW1lKTsKKwkJfQogCQlxdWVyeXNlcCA9ICJXSEVSRSI7CiAJCWZv ciAoaW50IGkgPSAwOyBpIDwgcmlpbmZvLT5ua2V5czsgaSsrKQogCQl7Ci0JCQlPaWQJCQlw a190eXBlID0gUklBdHRUeXBlKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW2ldKTsKLQkJ CU9pZAkJCWZrX3R5cGUgPSBSSUF0dFR5cGUoZmtfcmVsLCByaWluZm8tPmZrX2F0dG51bXNb aV0pOworCQkJT2lkCXBrX3R5cGU7CisJCQlPaWQJZmtfdHlwZTsKIAorCQkJcGtfdHlwZSA9 IFJJQXR0VHlwZShwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tpXSk7CiAJCQlxdW90ZU9u ZU5hbWUoYXR0bmFtZSwKIAkJCQkJCSBSSUF0dE5hbWUocGtfcmVsLCByaWluZm8tPnBrX2F0 dG51bXNbaV0pKTsKKworCQkJZmtfdHlwZSA9IFJJQXR0VHlwZShma19yZWwsIHJpaW5mby0+ ZmtfYXR0bnVtc1tpXSk7CisKIAkJCXNwcmludGYocGFyYW1uYW1lLCAiJCVkIiwgaSArIDEp OwogCQkJcmlfR2VuZXJhdGVRdWFsKCZxdWVyeWJ1ZiwgcXVlcnlzZXAsCiAJCQkJCQkJYXR0 bmFtZSwgcGtfdHlwZSwKQEAgLTM5MCw2ICs0MjYsOCBAQCBSSV9GS2V5X2NoZWNrKFRyaWdn ZXJEYXRhICp0cmlnZGF0YSkKIAkJCXF1ZXJ5b2lkc1tpXSA9IGZrX3R5cGU7CiAJCX0KIAkJ YXBwZW5kU3RyaW5nSW5mb1N0cmluZygmcXVlcnlidWYsICIgRk9SIEtFWSBTSEFSRSBPRiB4 Iik7CisJCWlmIChyaWluZm8tPnRlbXBvcmFsKQorCQkJYXBwZW5kU3RyaW5nSW5mbygmcXVl cnlidWYsICIpIHgxIEhBVklORyAkJWQgPEAgcGdfY2F0YWxvZy5yYW5nZV9hZ2coeDEuciki LCByaWluZm8tPm5rZXlzKTsKIAogCQkvKiBQcmVwYXJlIGFuZCBzYXZlIHRoZSBwbGFuICov CiAJCXFwbGFuID0gcmlfUGxhbkNoZWNrKHF1ZXJ5YnVmLmRhdGEsIHJpaW5mby0+bmtleXMs IHF1ZXJ5b2lkcywKQEAgLTQ5NywyMSArNTM1LDQ5IEBAIHJpX0NoZWNrX1BrX01hdGNoKFJl bGF0aW9uIHBrX3JlbCwgUmVsYXRpb24gZmtfcmVsLAogCQkgKgkJICAgRk9SIEtFWSBTSEFS RSBPRiB4CiAJCSAqIFRoZSB0eXBlIGlkJ3MgZm9yIHRoZSAkIHBhcmFtZXRlcnMgYXJlIHRo b3NlIG9mIHRoZQogCQkgKiBQSyBhdHRyaWJ1dGVzIHRoZW1zZWx2ZXMuCisJCSAqIEJ1dCBm b3IgdGVtcG9yYWwgRktzIHdlIG5lZWQgdG8gbWFrZSBzdXJlCisJCSAqIHRoZSBGSydzIHJh bmdlIGlzIGNvbXBsZXRlbHkgY292ZXJlZC4KKwkJICogU28gd2UgdXNlIHRoaXMgcXVlcnkg aW5zdGVhZDoKKwkJICogIFNFTEVDVCAxCisJCSAqICBGUk9NICAgICgKKwkJICoJICBTRUxF Q1QgcGtwZXJpb2RhdHQgQVMgcgorCQkgKgkgIEZST00gICBbT05MWV0gcGt0YWJsZSB4CisJ CSAqCSAgV0hFUkUgIHBrYXR0MSA9ICQxIFtBTkQgLi4uXQorCQkgKgkgIEFORCAgICBwa3Bl cmlvZGF0dCAmJiAkbgorCQkgKgkgIEZPUiBLRVkgU0hBUkUgT0YgeAorCQkgKiAgKSB4MQor CQkgKiAgSEFWSU5HICRuIDxAIHJhbmdlX2FnZyh4MS5yKQorCQkgKiBOb3RlIGlmIEZPUiBL RVkgU0hBUkUgZXZlciBhbGxvd3MgR1JPVVAgQlkgYW5kIEhBVklORworCQkgKiB3ZSBjYW4g bWFrZSB0aGlzIGEgYml0IHNpbXBsZXIuCiAJCSAqIC0tLS0tLS0tLS0KIAkJICovCiAJCWlu aXRTdHJpbmdJbmZvKCZxdWVyeWJ1Zik7CiAJCXBrX29ubHkgPSBwa19yZWwtPnJkX3JlbC0+ cmVsa2luZCA9PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFID8KIAkJCSIiIDogIk9OTFkg IjsKIAkJcXVvdGVSZWxhdGlvbk5hbWUocGtyZWxuYW1lLCBwa19yZWwpOwotCQlhcHBlbmRT dHJpbmdJbmZvKCZxdWVyeWJ1ZiwgIlNFTEVDVCAxIEZST00gJXMlcyB4IiwKLQkJCQkJCSBw a19vbmx5LCBwa3JlbG5hbWUpOworCQlpZiAocmlpbmZvLT50ZW1wb3JhbCkKKwkJeworCQkJ cXVvdGVPbmVOYW1lKGF0dG5hbWUsIFJJQXR0TmFtZShwa19yZWwsIHJpaW5mby0+cGtfYXR0 bnVtc1tyaWluZm8tPm5rZXlzIC0gMV0pKTsKKworCQkJYXBwZW5kU3RyaW5nSW5mbygmcXVl cnlidWYsCisJCQkJCSJTRUxFQ1QgMSBGUk9NIChTRUxFQ1QgJXMgQVMgciBGUk9NICVzJXMg eCIsCisJCQkJCWF0dG5hbWUsIHBrX29ubHksIHBrcmVsbmFtZSk7CisJCX0KKwkJZWxzZQor CQl7CisJCQlhcHBlbmRTdHJpbmdJbmZvKCZxdWVyeWJ1ZiwgIlNFTEVDVCAxIEZST00gJXMl cyB4IiwKKwkJCQkJcGtfb25seSwgcGtyZWxuYW1lKTsKKwkJfQorCiAJCXF1ZXJ5c2VwID0g IldIRVJFIjsKIAkJZm9yIChpbnQgaSA9IDA7IGkgPCByaWluZm8tPm5rZXlzOyBpKyspCiAJ CXsKLQkJCU9pZAkJCXBrX3R5cGUgPSBSSUF0dFR5cGUocGtfcmVsLCByaWluZm8tPnBrX2F0 dG51bXNbaV0pOworCQkJT2lkCQlwa190eXBlOwogCisJCQlwa190eXBlID0gUklBdHRUeXBl KHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW2ldKTsKIAkJCXF1b3RlT25lTmFtZShhdHRu YW1lLAogCQkJCQkJIFJJQXR0TmFtZShwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tpXSkp OworCiAJCQlzcHJpbnRmKHBhcmFtbmFtZSwgIiQlZCIsIGkgKyAxKTsKIAkJCXJpX0dlbmVy YXRlUXVhbCgmcXVlcnlidWYsIHF1ZXJ5c2VwLAogCQkJCQkJCWF0dG5hbWUsIHBrX3R5cGUs CkBAIC01MjEsNiArNTg3LDggQEAgcmlfQ2hlY2tfUGtfTWF0Y2goUmVsYXRpb24gcGtfcmVs LCBSZWxhdGlvbiBma19yZWwsCiAJCQlxdWVyeW9pZHNbaV0gPSBwa190eXBlOwogCQl9CiAJ CWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJnF1ZXJ5YnVmLCAiIEZPUiBLRVkgU0hBUkUgT0Yg eCIpOworCQlpZiAocmlpbmZvLT50ZW1wb3JhbCkKKwkJCWFwcGVuZFN0cmluZ0luZm8oJnF1 ZXJ5YnVmLCAiKSB4MSBIQVZJTkcgJCVkIDxAIHBnX2NhdGFsb2cucmFuZ2VfYWdnKHgxLnIp IiwgcmlpbmZvLT5ua2V5cyk7CiAKIAkJLyogUHJlcGFyZSBhbmQgc2F2ZSB0aGUgcGxhbiAq LwogCQlxcGxhbiA9IHJpX1BsYW5DaGVjayhxdWVyeWJ1Zi5kYXRhLCByaWluZm8tPm5rZXlz LCBxdWVyeW9pZHMsCkBAIC02OTUsMTAgKzc2MywxNiBAQCByaV9yZXN0cmljdChUcmlnZ2Vy RGF0YSAqdHJpZ2RhdGEsIGJvb2wgaXNfbm9fYWN0aW9uKQogCQlxdWVyeXNlcCA9ICJXSEVS RSI7CiAJCWZvciAoaW50IGkgPSAwOyBpIDwgcmlpbmZvLT5ua2V5czsgaSsrKQogCQl7Ci0J CQlPaWQJCQlwa190eXBlID0gUklBdHRUeXBlKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1z W2ldKTsKLQkJCU9pZAkJCWZrX3R5cGUgPSBSSUF0dFR5cGUoZmtfcmVsLCByaWluZm8tPmZr X2F0dG51bXNbaV0pOwotCQkJT2lkCQkJcGtfY29sbCA9IFJJQXR0Q29sbGF0aW9uKHBrX3Jl bCwgcmlpbmZvLT5wa19hdHRudW1zW2ldKTsKLQkJCU9pZAkJCWZrX2NvbGwgPSBSSUF0dENv bGxhdGlvbihma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tpXSk7CisJCQlPaWQJCXBrX3R5 cGU7CisJCQlPaWQJCWZrX3R5cGU7CisJCQlPaWQJCXBrX2NvbGw7CisJCQlPaWQJCWZrX2Nv bGw7CisKKwkJCXBrX3R5cGUgPSBSSUF0dFR5cGUocGtfcmVsLCByaWluZm8tPnBrX2F0dG51 bXNbaV0pOworCQkJcGtfY29sbCA9IFJJQXR0Q29sbGF0aW9uKHBrX3JlbCwgcmlpbmZvLT5w a19hdHRudW1zW2ldKTsKKworCQkJZmtfdHlwZSA9IFJJQXR0VHlwZShma19yZWwsIHJpaW5m by0+ZmtfYXR0bnVtc1tpXSk7CisJCQlma19jb2xsID0gUklBdHRDb2xsYXRpb24oZmtfcmVs LCByaWluZm8tPmZrX2F0dG51bXNbaV0pOwogCiAJCQlxdW90ZU9uZU5hbWUoYXR0bmFtZSwK IAkJCQkJCSBSSUF0dE5hbWUoZmtfcmVsLCByaWluZm8tPmZrX2F0dG51bXNbaV0pKTsKQEAg LTEyMTMsNiArMTI4NywxMjYgQEAgcmlfc2V0KFRyaWdnZXJEYXRhICp0cmlnZGF0YSwgYm9v bCBpc19zZXRfbnVsbCwgaW50IHRna2luZCkKIAl9CiB9CiAKKy8qIC0tLS0tLS0tLS0KKyAq IFRSSV9GS2V5X2NoZWNrX2lucyAtCisgKgorICoJQ2hlY2sgdGVtcG9yYWwgZm9yZWlnbiBr ZXkgZXhpc3RlbmNlIGF0IGluc2VydCBldmVudCBvbiBGSyB0YWJsZS4KKyAqIC0tLS0tLS0t LS0KKyAqLworRGF0dW0KK1RSSV9GS2V5X2NoZWNrX2lucyhQR19GVU5DVElPTl9BUkdTKQor eworCS8qCisJICogQ2hlY2sgdGhhdCB0aGlzIGlzIGEgdmFsaWQgdHJpZ2dlciBjYWxsIG9u IHRoZSByaWdodCB0aW1lIGFuZCBldmVudC4KKwkgKi8KKwlyaV9DaGVja1RyaWdnZXIoZmNp bmZvLCAiUklfRktleV9jaGVja19pbnMiLCBSSV9UUklHVFlQRV9JTlNFUlQpOworCisJLyoK KwkgKiBTaGFyZSBjb2RlIHdpdGggVVBEQVRFIGNhc2UuCisJICovCisJcmV0dXJuIFJJX0ZL ZXlfY2hlY2soKFRyaWdnZXJEYXRhICopIGZjaW5mby0+Y29udGV4dCk7Cit9CisKKworLyog LS0tLS0tLS0tLQorICogVFJJX0ZLZXlfY2hlY2tfdXBkIC0KKyAqCisgKglDaGVjayB0ZW1w b3JhbCBmb3JlaWduIGtleSBleGlzdGVuY2UgYXQgdXBkYXRlIGV2ZW50IG9uIEZLIHRhYmxl LgorICogLS0tLS0tLS0tLQorICovCitEYXR1bQorVFJJX0ZLZXlfY2hlY2tfdXBkKFBHX0ZV TkNUSU9OX0FSR1MpCit7CisJLyoKKwkgKiBDaGVjayB0aGF0IHRoaXMgaXMgYSB2YWxpZCB0 cmlnZ2VyIGNhbGwgb24gdGhlIHJpZ2h0IHRpbWUgYW5kIGV2ZW50LgorCSAqLworCXJpX0No ZWNrVHJpZ2dlcihmY2luZm8sICJSSV9GS2V5X2NoZWNrX3VwZCIsIFJJX1RSSUdUWVBFX1VQ REFURSk7CisKKwkvKgorCSAqIFNoYXJlIGNvZGUgd2l0aCBJTlNFUlQgY2FzZS4KKwkgKi8K KwlyZXR1cm4gUklfRktleV9jaGVjaygoVHJpZ2dlckRhdGEgKikgZmNpbmZvLT5jb250ZXh0 KTsKK30KKworCisvKiAtLS0tLS0tLS0tCisgKiBUUklfRktleV9ub2FjdGlvbl9kZWwgLQor ICoKKyAqCUdpdmUgYW4gZXJyb3IgYW5kIHJvbGwgYmFjayB0aGUgY3VycmVudCB0cmFuc2Fj dGlvbiBpZiB0aGUKKyAqCWRlbGV0ZSBoYXMgcmVzdWx0ZWQgaW4gYSB2aW9sYXRpb24gb2Yg dGhlIGdpdmVuIHRlbXBvcmFsCisgKglyZWZlcmVudGlhbCBpbnRlZ3JpdHkgY29uc3RyYWlu dC4KKyAqIC0tLS0tLS0tLS0KKyAqLworRGF0dW0KK1RSSV9GS2V5X25vYWN0aW9uX2RlbChQ R19GVU5DVElPTl9BUkdTKQoreworCS8qCisJICogQ2hlY2sgdGhhdCB0aGlzIGlzIGEgdmFs aWQgdHJpZ2dlciBjYWxsIG9uIHRoZSByaWdodCB0aW1lIGFuZCBldmVudC4KKwkgKi8KKwly aV9DaGVja1RyaWdnZXIoZmNpbmZvLCAiVFJJX0ZLZXlfbm9hY3Rpb25fZGVsIiwgUklfVFJJ R1RZUEVfREVMRVRFKTsKKworCS8qCisJICogU2hhcmUgY29kZSB3aXRoIFJFU1RSSUNUL1VQ REFURSBjYXNlcy4KKwkgKi8KKwlyZXR1cm4gcmlfcmVzdHJpY3QoKFRyaWdnZXJEYXRhICop IGZjaW5mby0+Y29udGV4dCwgdHJ1ZSk7Cit9CisKKy8qCisgKiBUUklfRktleV9yZXN0cmlj dF9kZWwgLQorICoKKyAqIFJlc3RyaWN0IGRlbGV0ZSBmcm9tIFBLIHRhYmxlIHRvIHJvd3Mg dW5yZWZlcmVuY2VkIGJ5IGZvcmVpZ24ga2V5LgorICoKKyAqIFRoZSBTUUwgc3RhbmRhcmQg aW50ZW5kcyB0aGF0IHRoaXMgcmVmZXJlbnRpYWwgYWN0aW9uIG9jY3VyIGV4YWN0bHkgd2hl bgorICogdGhlIGRlbGV0ZSBpcyBwZXJmb3JtZWQsIHJhdGhlciB0aGFuIGFmdGVyLiAgVGhp cyBhcHBlYXJzIHRvIGJlCisgKiB0aGUgb25seSBkaWZmZXJlbmNlIGJldHdlZW4gIk5PIEFD VElPTiIgYW5kICJSRVNUUklDVCIuICBJbiBQb3N0Z3JlcworICogd2Ugc3RpbGwgaW1wbGVt ZW50IHRoaXMgYXMgYW4gQUZURVIgdHJpZ2dlciwgYnV0IGl0J3Mgbm9uLWRlZmVycmFibGUu CisgKi8KK0RhdHVtCitUUklfRktleV9yZXN0cmljdF9kZWwoUEdfRlVOQ1RJT05fQVJHUykK K3sKKwkvKiBDaGVjayB0aGF0IHRoaXMgaXMgYSB2YWxpZCB0cmlnZ2VyIGNhbGwgb24gdGhl IHJpZ2h0IHRpbWUgYW5kIGV2ZW50LiAqLworCXJpX0NoZWNrVHJpZ2dlcihmY2luZm8sICJU UklfRktleV9yZXN0cmljdF9kZWwiLCBSSV9UUklHVFlQRV9ERUxFVEUpOworCisJLyogU2hh cmUgY29kZSB3aXRoIE5PIEFDVElPTi9VUERBVEUgY2FzZXMuICovCisJcmV0dXJuIHJpX3Jl c3RyaWN0KChUcmlnZ2VyRGF0YSAqKSBmY2luZm8tPmNvbnRleHQsIGZhbHNlKTsKK30KKwor LyoKKyAqIFRSSV9GS2V5X25vYWN0aW9uX3VwZCAtCisgKgorICogR2l2ZSBhbiBlcnJvciBh bmQgcm9sbCBiYWNrIHRoZSBjdXJyZW50IHRyYW5zYWN0aW9uIGlmIHRoZQorICogdXBkYXRl IGhhcyByZXN1bHRlZCBpbiBhIHZpb2xhdGlvbiBvZiB0aGUgZ2l2ZW4gcmVmZXJlbnRpYWwK KyAqIGludGVncml0eSBjb25zdHJhaW50LgorICovCitEYXR1bQorVFJJX0ZLZXlfbm9hY3Rp b25fdXBkKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJLyogQ2hlY2sgdGhhdCB0aGlzIGlzIGEg dmFsaWQgdHJpZ2dlciBjYWxsIG9uIHRoZSByaWdodCB0aW1lIGFuZCBldmVudC4gKi8KKwly aV9DaGVja1RyaWdnZXIoZmNpbmZvLCAiVFJJX0ZLZXlfbm9hY3Rpb25fdXBkIiwgUklfVFJJ R1RZUEVfVVBEQVRFKTsKKworCS8qIFNoYXJlIGNvZGUgd2l0aCBSRVNUUklDVC9ERUxFVEUg Y2FzZXMuICovCisJcmV0dXJuIHJpX3Jlc3RyaWN0KChUcmlnZ2VyRGF0YSAqKSBmY2luZm8t PmNvbnRleHQsIHRydWUpOworfQorCisvKgorICogVFJJX0ZLZXlfcmVzdHJpY3RfdXBkIC0K KyAqCisgKiBSZXN0cmljdCB1cGRhdGUgb2YgUEsgdG8gcm93cyB1bnJlZmVyZW5jZWQgYnkg Zm9yZWlnbiBrZXkuCisgKgorICogVGhlIFNRTCBzdGFuZGFyZCBpbnRlbmRzIHRoYXQgdGhp cyByZWZlcmVudGlhbCBhY3Rpb24gb2NjdXIgZXhhY3RseSB3aGVuCisgKiB0aGUgdXBkYXRl IGlzIHBlcmZvcm1lZCwgcmF0aGVyIHRoYW4gYWZ0ZXIuICBUaGlzIGFwcGVhcnMgdG8gYmUK KyAqIHRoZSBvbmx5IGRpZmZlcmVuY2UgYmV0d2VlbiAiTk8gQUNUSU9OIiBhbmQgIlJFU1RS SUNUIi4gIEluIFBvc3RncmVzCisgKiB3ZSBzdGlsbCBpbXBsZW1lbnQgdGhpcyBhcyBhbiBB RlRFUiB0cmlnZ2VyLCBidXQgaXQncyBub24tZGVmZXJyYWJsZS4KKyAqLworRGF0dW0KK1RS SV9GS2V5X3Jlc3RyaWN0X3VwZChQR19GVU5DVElPTl9BUkdTKQoreworCS8qIENoZWNrIHRo YXQgdGhpcyBpcyBhIHZhbGlkIHRyaWdnZXIgY2FsbCBvbiB0aGUgcmlnaHQgdGltZSBhbmQg ZXZlbnQuICovCisJcmlfQ2hlY2tUcmlnZ2VyKGZjaW5mbywgIlRSSV9GS2V5X3Jlc3RyaWN0 X3VwZCIsIFJJX1RSSUdUWVBFX1VQREFURSk7CisKKwkvKiBTaGFyZSBjb2RlIHdpdGggTk8g QUNUSU9OL0RFTEVURSBjYXNlcy4gKi8KKwlyZXR1cm4gcmlfcmVzdHJpY3QoKFRyaWdnZXJE YXRhICopIGZjaW5mby0+Y29udGV4dCwgZmFsc2UpOworfQogCiAvKgogICogUklfRktleV9w a191cGRfY2hlY2tfcmVxdWlyZWQgLQpAQCAtMTI0MSw3ICsxNDM1LDcgQEAgUklfRktleV9w a191cGRfY2hlY2tfcmVxdWlyZWQoVHJpZ2dlciAqdHJpZ2dlciwgUmVsYXRpb24gcGtfcmVs LAogCQlyZXR1cm4gZmFsc2U7CiAKIAkvKiBJZiBhbGwgb2xkIGFuZCBuZXcga2V5IHZhbHVl cyBhcmUgZXF1YWwsIG5vIGNoZWNrIGlzIG5lZWRlZCAqLwotCWlmIChuZXdzbG90ICYmIHJp X0tleXNFcXVhbChwa19yZWwsIG9sZHNsb3QsIG5ld3Nsb3QsIHJpaW5mbywgdHJ1ZSkpCisJ aWYgKG5ld3Nsb3QgJiYgcmlfS2V5c1N0YWJsZShwa19yZWwsIG9sZHNsb3QsIG5ld3Nsb3Qs IHJpaW5mbywgdHJ1ZSkpCiAJCXJldHVybiBmYWxzZTsKIAogCS8qIEVsc2Ugd2UgbmVlZCB0 byBmaXJlIHRoZSB0cmlnZ2VyLiAqLwpAQCAtMTM0MCw3ICsxNTM0LDcgQEAgUklfRktleV9m a191cGRfY2hlY2tfcmVxdWlyZWQoVHJpZ2dlciAqdHJpZ2dlciwgUmVsYXRpb24gZmtfcmVs LAogCQlyZXR1cm4gdHJ1ZTsKIAogCS8qIElmIGFsbCBvbGQgYW5kIG5ldyBrZXkgdmFsdWVz IGFyZSBlcXVhbCwgbm8gY2hlY2sgaXMgbmVlZGVkICovCi0JaWYgKHJpX0tleXNFcXVhbChm a19yZWwsIG9sZHNsb3QsIG5ld3Nsb3QsIHJpaW5mbywgZmFsc2UpKQorCWlmIChyaV9LZXlz U3RhYmxlKGZrX3JlbCwgb2xkc2xvdCwgbmV3c2xvdCwgcmlpbmZvLCBmYWxzZSkpCiAJCXJl dHVybiBmYWxzZTsKIAogCS8qIEVsc2Ugd2UgbmVlZCB0byBmaXJlIHRoZSB0cmlnZ2VyLiAq LwpAQCAtMTQ4OCwxNSArMTY4MiwxNyBAQCBSSV9Jbml0aWFsX0NoZWNrKFRyaWdnZXIgKnRy aWdnZXIsIFJlbGF0aW9uIGZrX3JlbCwgUmVsYXRpb24gcGtfcmVsKQogCXNlcCA9ICIoIjsK IAlmb3IgKGludCBpID0gMDsgaSA8IHJpaW5mby0+bmtleXM7IGkrKykKIAl7Ci0JCU9pZAkJ CXBrX3R5cGUgPSBSSUF0dFR5cGUocGtfcmVsLCByaWluZm8tPnBrX2F0dG51bXNbaV0pOwot CQlPaWQJCQlma190eXBlID0gUklBdHRUeXBlKGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1z W2ldKTsKLQkJT2lkCQkJcGtfY29sbCA9IFJJQXR0Q29sbGF0aW9uKHBrX3JlbCwgcmlpbmZv LT5wa19hdHRudW1zW2ldKTsKLQkJT2lkCQkJZmtfY29sbCA9IFJJQXR0Q29sbGF0aW9uKGZr X3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW2ldKTsKKwkJT2lkCXBrX3R5cGUgPSBSSUF0dFR5 cGUocGtfcmVsLCByaWluZm8tPnBrX2F0dG51bXNbaV0pOworCQlPaWQJZmtfdHlwZSA9IFJJ QXR0VHlwZShma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tpXSk7CisJCU9pZAlwa19jb2xs ID0gUklBdHRDb2xsYXRpb24ocGtfcmVsLCByaWluZm8tPnBrX2F0dG51bXNbaV0pOworCQlP aWQJZmtfY29sbCA9IFJJQXR0Q29sbGF0aW9uKGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1z W2ldKTsKIAogCQlxdW90ZU9uZU5hbWUocGthdHRuYW1lICsgMywKIAkJCQkJIFJJQXR0TmFt ZShwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tpXSkpOworCiAJCXF1b3RlT25lTmFtZShm a2F0dG5hbWUgKyAzLAogCQkJCQkgUklBdHROYW1lKGZrX3JlbCwgcmlpbmZvLT5ma19hdHRu dW1zW2ldKSk7CisKIAkJcmlfR2VuZXJhdGVRdWFsKCZxdWVyeWJ1Ziwgc2VwLAogCQkJCQkJ cGthdHRuYW1lLCBwa190eXBlLAogCQkJCQkJcmlpbmZvLT5wZl9lcV9vcHJzW2ldLApAQCAt MjEzNyw2ICsyMzMzLDcgQEAgcmlfTG9hZENvbnN0cmFpbnRJbmZvKE9pZCBjb25zdHJhaW50 T2lkKQogCXJpaW5mbyA9IChSSV9Db25zdHJhaW50SW5mbyAqKSBoYXNoX3NlYXJjaChyaV9j b25zdHJhaW50X2NhY2hlLAogCQkJCQkJCQkJCQkgICAmY29uc3RyYWludE9pZCwKIAkJCQkJ CQkJCQkJICAgSEFTSF9FTlRFUiwgJmZvdW5kKTsKKwogCWlmICghZm91bmQpCiAJCXJpaW5m by0+dmFsaWQgPSBmYWxzZTsKIAllbHNlIGlmIChyaWluZm8tPnZhbGlkKQpAQCAtMjE3MSw2 ICsyMzY4LDcgQEAgcmlfTG9hZENvbnN0cmFpbnRJbmZvKE9pZCBjb25zdHJhaW50T2lkKQog CXJpaW5mby0+Y29uZnVwZHR5cGUgPSBjb25Gb3JtLT5jb25mdXBkdHlwZTsKIAlyaWluZm8t PmNvbmZkZWx0eXBlID0gY29uRm9ybS0+Y29uZmRlbHR5cGU7CiAJcmlpbmZvLT5jb25mbWF0 Y2h0eXBlID0gY29uRm9ybS0+Y29uZm1hdGNodHlwZTsKKwlyaWluZm8tPnRlbXBvcmFsID0g Y29uRm9ybS0+Y29udGVtcG9yYWw7CiAKIAlEZWNvbnN0cnVjdEZrQ29uc3RyYWludFJvdyh0 dXAsCiAJCQkJCQkJICAgJnJpaW5mby0+bmtleXMsCkBAIC0yNzkxLDkgKzI5ODksMTIgQEAg cmlfSGFzaFByZXBhcmVkUGxhbihSSV9RdWVyeUtleSAqa2V5LCBTUElQbGFuUHRyIHBsYW4p CiAKIAogLyoKLSAqIHJpX0tleXNFcXVhbCAtCisgKiByaV9LZXlzU3RhYmxlIC0KICAqCi0g KiBDaGVjayBpZiBhbGwga2V5IHZhbHVlcyBpbiBPTEQgYW5kIE5FVyBhcmUgZXF1YWwuCisg KiBDaGVjayBpZiBhbGwga2V5IHZhbHVlcyBpbiBPTEQgYW5kIE5FVyBhcmUgImVxdWl2YWxl bnQiOgorICogRm9yIG5vcm1hbCBGS3Mgd2UgY2hlY2sgZm9yIGVxdWFsaXR5LgorICogRm9y IHRlbXBvcmFsIEZLcyB3ZSBjaGVjayB0aGF0IHRoZSBQSyBzaWRlIGlzIGEgc3VwZXJzZXQg b2YgaXRzIG9sZCB2YWx1ZSwKKyAqIG9yIHRoZSBGSyBzaWRlIGlzIGEgc3Vic2V0LgogICoK ICAqIE5vdGU6IGF0IHNvbWUgcG9pbnQgd2UgbWlnaHQgd2lzaCB0byByZWRlZmluZSB0aGlz IGFzIGNoZWNraW5nIGZvcgogICogIklTIE5PVCBESVNUSU5DVCIgcmF0aGVyIHRoYW4gIj0i LCB0aGF0IGlzLCBhbGxvdyB0d28gbnVsbHMgdG8gYmUKQEAgLTI4MDEsNyArMzAwMiw3IEBA IHJpX0hhc2hQcmVwYXJlZFBsYW4oUklfUXVlcnlLZXkgKmtleSwgU1BJUGxhblB0ciBwbGFu KQogICogcHJldmlvdXNseSBmb3VuZCBhdCBsZWFzdCBvbmUgb2YgdGhlIHJvd3MgdG8gY29u dGFpbiBubyBudWxscy4KICAqLwogc3RhdGljIGJvb2wKLXJpX0tleXNFcXVhbChSZWxhdGlv biByZWwsIFR1cGxlVGFibGVTbG90ICpvbGRzbG90LCBUdXBsZVRhYmxlU2xvdCAqbmV3c2xv dCwKK3JpX0tleXNTdGFibGUoUmVsYXRpb24gcmVsLCBUdXBsZVRhYmxlU2xvdCAqb2xkc2xv dCwgVHVwbGVUYWJsZVNsb3QgKm5ld3Nsb3QsCiAJCQkgY29uc3QgUklfQ29uc3RyYWludElu Zm8gKnJpaW5mbywgYm9vbCByZWxfaXNfcGspCiB7CiAJY29uc3QgaW50MTYgKmF0dG51bXM7 CkBAIC0yODM0LDM1ICszMDM1LDg2IEBAIHJpX0tleXNFcXVhbChSZWxhdGlvbiByZWwsIFR1 cGxlVGFibGVTbG90ICpvbGRzbG90LCBUdXBsZVRhYmxlU2xvdCAqbmV3c2xvdCwKIAogCQlp ZiAocmVsX2lzX3BrKQogCQl7Ci0JCQkvKgotCQkJICogSWYgd2UgYXJlIGxvb2tpbmcgYXQg dGhlIFBLIHRhYmxlLCB0aGVuIGRvIGEgYnl0ZXdpc2UKLQkJCSAqIGNvbXBhcmlzb24uICBX ZSBtdXN0IHByb3BhZ2F0ZSBQSyBjaGFuZ2VzIGlmIHRoZSB2YWx1ZSBpcwotCQkJICogY2hh bmdlZCB0byBvbmUgdGhhdCAibG9va3MiIGRpZmZlcmVudCBidXQgd291bGQgY29tcGFyZSBh cwotCQkJICogZXF1YWwgdXNpbmcgdGhlIGVxdWFsaXR5IG9wZXJhdG9yLiAgVGhpcyBvbmx5 IG1ha2VzIGEKLQkJCSAqIGRpZmZlcmVuY2UgZm9yIE9OIFVQREFURSBDQVNDQURFLCBidXQg Zm9yIGNvbnNpc3RlbmN5IHdlIHRyZWF0Ci0JCQkgKiBhbGwgY2hhbmdlcyB0byB0aGUgUEsg dGhlIHNhbWUuCi0JCQkgKi8KLQkJCUZvcm1fcGdfYXR0cmlidXRlIGF0dCA9IFR1cGxlRGVz Y0F0dHIob2xkc2xvdC0+dHRzX3R1cGxlRGVzY3JpcHRvciwgYXR0bnVtc1tpXSAtIDEpOwor CQkJaWYgKHJpaW5mby0+dGVtcG9yYWwgJiYgaSA9PSByaWluZm8tPm5rZXlzIC0gMSkKKwkJ CXsKKwkJCQlpZiAocmlfUmFuZ2VBdHRyaWJ1dGVOZWVkc0NoZWNrKHRydWUsIG9sZHZhbHVl LCBuZXd2YWx1ZSkpCisJCQkJCXJldHVybiBmYWxzZTsKKwkJCX0KKwkJCWVsc2UKKwkJCXsK KwkJCQkvKgorCQkJCSAqIElmIHdlIGFyZSBsb29raW5nIGF0IHRoZSBQSyB0YWJsZSwgdGhl biBkbyBhIGJ5dGV3aXNlCisJCQkJICogY29tcGFyaXNvbi4gIFdlIG11c3QgcHJvcGFnYXRl IFBLIGNoYW5nZXMgaWYgdGhlIHZhbHVlIGlzCisJCQkJICogY2hhbmdlZCB0byBvbmUgdGhh dCAibG9va3MiIGRpZmZlcmVudCBidXQgd291bGQgY29tcGFyZSBhcworCQkJCSAqIGVxdWFs IHVzaW5nIHRoZSBlcXVhbGl0eSBvcGVyYXRvci4gIFRoaXMgb25seSBtYWtlcyBhCisJCQkJ ICogZGlmZmVyZW5jZSBmb3IgT04gVVBEQVRFIENBU0NBREUsIGJ1dCBmb3IgY29uc2lzdGVu Y3kgd2UgdHJlYXQKKwkJCQkgKiBhbGwgY2hhbmdlcyB0byB0aGUgUEsgdGhlIHNhbWUuCisJ CQkJICovCisJCQkJRm9ybV9wZ19hdHRyaWJ1dGUgYXR0ID0gVHVwbGVEZXNjQXR0cihvbGRz bG90LT50dHNfdHVwbGVEZXNjcmlwdG9yLCBhdHRudW1zW2ldIC0gMSk7CiAKLQkJCWlmICgh ZGF0dW1faW1hZ2VfZXEob2xkdmFsdWUsIG5ld3ZhbHVlLCBhdHQtPmF0dGJ5dmFsLCBhdHQt PmF0dGxlbikpCi0JCQkJcmV0dXJuIGZhbHNlOworCQkJCWlmICghZGF0dW1faW1hZ2VfZXEo b2xkdmFsdWUsIG5ld3ZhbHVlLCBhdHQtPmF0dGJ5dmFsLCBhdHQtPmF0dGxlbikpCisJCQkJ CXJldHVybiBmYWxzZTsKKwkJCX0KIAkJfQogCQllbHNlCiAJCXsKLQkJCS8qCi0JCQkgKiBG b3IgdGhlIEZLIHRhYmxlLCBjb21wYXJlIHdpdGggdGhlIGFwcHJvcHJpYXRlIGVxdWFsaXR5 Ci0JCQkgKiBvcGVyYXRvci4gIENoYW5nZXMgdGhhdCBjb21wYXJlIGVxdWFsIHdpbGwgc3Rp bGwgc2F0aXNmeSB0aGUKLQkJCSAqIGNvbnN0cmFpbnQgYWZ0ZXIgdGhlIHVwZGF0ZS4KLQkJ CSAqLwotCQkJaWYgKCFyaV9BdHRyaWJ1dGVzRXF1YWwocmlpbmZvLT5mZl9lcV9vcHJzW2ld LCBSSUF0dFR5cGUocmVsLCBhdHRudW1zW2ldKSwKLQkJCQkJCQkJCW9sZHZhbHVlLCBuZXd2 YWx1ZSkpCi0JCQkJcmV0dXJuIGZhbHNlOworCQkJaWYgKHJpaW5mby0+dGVtcG9yYWwgJiYg aSA9PSByaWluZm8tPm5rZXlzIC0gMSkKKwkJCXsKKwkJCQlpZiAocmlfUmFuZ2VBdHRyaWJ1 dGVOZWVkc0NoZWNrKGZhbHNlLCBvbGR2YWx1ZSwgbmV3dmFsdWUpKQorCQkJCQlyZXR1cm4g ZmFsc2U7CisJCQl9CisJCQllbHNlCisJCQl7CisJCQkJLyoKKwkJCQkgKiBGb3IgdGhlIEZL IHRhYmxlLCBjb21wYXJlIHdpdGggdGhlIGFwcHJvcHJpYXRlIGVxdWFsaXR5CisJCQkJICog b3BlcmF0b3IuICBDaGFuZ2VzIHRoYXQgY29tcGFyZSBlcXVhbCB3aWxsIHN0aWxsIHNhdGlz ZnkgdGhlCisJCQkJICogY29uc3RyYWludCBhZnRlciB0aGUgdXBkYXRlLgorCQkJCSAqLwor CQkJCWlmICghcmlfQXR0cmlidXRlc0VxdWFsKHJpaW5mby0+ZmZfZXFfb3Byc1tpXSwgUklB dHRUeXBlKHJlbCwgYXR0bnVtc1tpXSksCisJCQkJCQkJCQkJb2xkdmFsdWUsIG5ld3ZhbHVl KSkKKwkJCQkJcmV0dXJuIGZhbHNlOworCQkJfQogCQl9CiAJfQogCiAJcmV0dXJuIHRydWU7 CiB9CiAKKy8qCisgKiByaV9SYW5nZUF0dHJpYnV0ZU5lZWRzQ2hlY2sgLQorICoKKyAqIENv bXBhcmUgb2xkIGFuZCBuZXcgdmFsdWVzLCBhbmQgcmV0dXJuIHRydWUgaWYgd2UgbmVlZCB0 byBjaGVjayB0aGUgRksuCisgKgorICogTkI6IHdlIGhhdmUgYWxyZWFkeSBjaGVja2VkIHRo YXQgbmVpdGhlciB2YWx1ZSBpcyBudWxsLgorICovCitzdGF0aWMgYm9vbAorcmlfUmFuZ2VB dHRyaWJ1dGVOZWVkc0NoZWNrKGJvb2wgcmVsX2lzX3BrLCBEYXR1bSBvbGR2YWx1ZSwgRGF0 dW0gbmV3dmFsdWUpCit7CisJUmFuZ2VUeXBlICpvbGRyYW5nZSwgKm5ld3JhbmdlOworCU9p ZCBvbGRybmd0eXBlLCBuZXdybmd0eXBlOworCVR5cGVDYWNoZUVudHJ5ICp0eXBjYWNoZTsK KworCW9sZHJhbmdlID0gRGF0dW1HZXRSYW5nZVR5cGVQKG9sZHZhbHVlKTsKKwluZXdyYW5n ZSA9IERhdHVtR2V0UmFuZ2VUeXBlUChuZXd2YWx1ZSk7CisJb2xkcm5ndHlwZSA9IFJhbmdl VHlwZUdldE9pZChvbGRyYW5nZSk7CisJbmV3cm5ndHlwZSA9IFJhbmdlVHlwZUdldE9pZChu ZXdyYW5nZSk7CisKKwlpZiAob2xkcm5ndHlwZSAhPSBuZXdybmd0eXBlKQorCQllbG9nKEVS Uk9SLCAicmFuZ2UgdHlwZXMgYXJlIGluY29uc2lzdGVudCIpOworCisJdHlwY2FjaGUgPSBs b29rdXBfdHlwZV9jYWNoZShvbGRybmd0eXBlLCBUWVBFQ0FDSEVfUkFOR0VfSU5GTyk7CisJ aWYgKHR5cGNhY2hlLT5ybmdlbGVtdHlwZSA9PSBOVUxMKQorCQllbG9nKEVSUk9SLCAidHlw ZSAldSBpcyBub3QgYSByYW5nZSB0eXBlIiwgb2xkcm5ndHlwZSk7CisKKwlpZiAocmVsX2lz X3BrKQorCQkvKiBJZiB0aGUgUEsncyByYW5nZSBzaHJ1bmssIGEgY29uZmxpY3QgaXMgcG9z c2libGUuICovCisJCXJldHVybiAhcmFuZ2VfZXFfaW50ZXJuYWwodHlwY2FjaGUsIG9sZHJh bmdlLCBuZXdyYW5nZSkgJiYKKwkJCSFyYW5nZV9jb250YWluc19pbnRlcm5hbCh0eXBjYWNo ZSwgbmV3cmFuZ2UsIG9sZHJhbmdlKTsKKwllbHNlCisJCS8qIElmIHRoZSBGSydzIHJhbmdl IGdyZXcsIGEgY29uZmxpY3QgaXMgcG9zc2libGUuICovCisJCXJldHVybiAhcmFuZ2VfZXFf aW50ZXJuYWwodHlwY2FjaGUsIG9sZHJhbmdlLCBuZXdyYW5nZSkgJiYKKwkJCXJhbmdlX2Nv bnRhaW5zX2ludGVybmFsKHR5cGNhY2hlLCBuZXdyYW5nZSwgb2xkcmFuZ2UpOworfQogCiAv KgogICogcmlfQXR0cmlidXRlc0VxdWFsIC0KQEAgLTMwMjEsMTAgKzMyNzMsMTYgQEAgUklf RktleV90cmlnZ2VyX3R5cGUoT2lkIHRnZm9pZCkKIAkJY2FzZSBGX1JJX0ZLRVlfU0VUREVG QVVMVF9VUEQ6CiAJCWNhc2UgRl9SSV9GS0VZX05PQUNUSU9OX0RFTDoKIAkJY2FzZSBGX1JJ X0ZLRVlfTk9BQ1RJT05fVVBEOgorCQljYXNlIEZfVFJJX0ZLRVlfUkVTVFJJQ1RfREVMOgor CQljYXNlIEZfVFJJX0ZLRVlfUkVTVFJJQ1RfVVBEOgorCQljYXNlIEZfVFJJX0ZLRVlfTk9B Q1RJT05fREVMOgorCQljYXNlIEZfVFJJX0ZLRVlfTk9BQ1RJT05fVVBEOgogCQkJcmV0dXJu IFJJX1RSSUdHRVJfUEs7CiAKIAkJY2FzZSBGX1JJX0ZLRVlfQ0hFQ0tfSU5TOgogCQljYXNl IEZfUklfRktFWV9DSEVDS19VUEQ6CisJCWNhc2UgRl9UUklfRktFWV9DSEVDS19JTlM6CisJ CWNhc2UgRl9UUklfRktFWV9DSEVDS19VUEQ6CiAJCQlyZXR1cm4gUklfVFJJR0dFUl9GSzsK IAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYyBi L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYwppbmRleCBmMmRhMjdlYjUwLi45 ZDVjMDdjOTZmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxz LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCkBAIC0zMzksNyAr MzM5LDcgQEAgc3RhdGljIGNoYXIgKnBnX2dldF92aWV3ZGVmX3dvcmtlcihPaWQgdmlld29p ZCwKIAkJCQkJCQkJICAgaW50IHByZXR0eUZsYWdzLCBpbnQgd3JhcENvbHVtbik7CiBzdGF0 aWMgY2hhciAqcGdfZ2V0X3RyaWdnZXJkZWZfd29ya2VyKE9pZCB0cmlnaWQsIGJvb2wgcHJl dHR5KTsKIHN0YXRpYyBpbnQJZGVjb21waWxlX2NvbHVtbl9pbmRleF9hcnJheShEYXR1bSBj b2x1bW5faW5kZXhfYXJyYXksIE9pZCByZWxJZCwgT2lkIGluZGV4SWQsCi0JCQkJCQkJCQkJ IGJvb2wgd2l0aG91dE92ZXJsYXBzLCBTdHJpbmdJbmZvIGJ1Zik7CisJCQkJCQkJCQkJIGJv b2wgd2l0aG91dE92ZXJsYXBzLCBib29sIHdpdGhQZXJpb2QsIFN0cmluZ0luZm8gYnVmKTsK IHN0YXRpYyBjaGFyICpwZ19nZXRfcnVsZWRlZl93b3JrZXIoT2lkIHJ1bGVvaWQsIGludCBw cmV0dHlGbGFncyk7CiBzdGF0aWMgY2hhciAqcGdfZ2V0X2luZGV4ZGVmX3dvcmtlcihPaWQg aW5kZXhyZWxpZCwgaW50IGNvbG5vLAogCQkJCQkJCQkJY29uc3QgT2lkICpleGNsdWRlT3Bz LApAQCAtMjI0Nyw3ICsyMjQ3LDEwIEBAIHBnX2dldF9jb25zdHJhaW50ZGVmX3dvcmtlcihP aWQgY29uc3RyYWludElkLCBib29sIGZ1bGxDb21tYW5kLAogCQkJCXZhbCA9IFN5c0NhY2hl R2V0QXR0ck5vdE51bGwoQ09OU1RST0lELCB0dXAsCiAJCQkJCQkJCQkJCSBBbnVtX3BnX2Nv bnN0cmFpbnRfY29ua2V5KTsKIAotCQkJCWRlY29tcGlsZV9jb2x1bW5faW5kZXhfYXJyYXko dmFsLCBjb25Gb3JtLT5jb25yZWxpZCwgY29uRm9ybS0+Y29uaW5kaWQsIGZhbHNlLCAmYnVm KTsKKwkJCQkvKiBJZiBpdCBpcyBhIHRlbXBvcmFsIGZvcmVpZ24ga2V5IHRoZW4gaXQgdXNl cyBQRVJJT0QuICovCisJCQkJZGVjb21waWxlX2NvbHVtbl9pbmRleF9hcnJheSh2YWwsIGNv bkZvcm0tPmNvbnJlbGlkLAorCQkJCQkJCQkJCQkgY29uRm9ybS0+Y29uaW5kaWQsIGZhbHNl LAorCQkJCQkJCQkJCQkgY29uRm9ybS0+Y29udGVtcG9yYWwsICZidWYpOwogCiAJCQkJLyog YWRkIGZvcmVpZ24gcmVsYXRpb24gbmFtZSAqLwogCQkJCWFwcGVuZFN0cmluZ0luZm8oJmJ1 ZiwgIikgUkVGRVJFTkNFUyAlcygiLApAQCAtMjI1OCw3ICsyMjYxLDkgQEAgcGdfZ2V0X2Nv bnN0cmFpbnRkZWZfd29ya2VyKE9pZCBjb25zdHJhaW50SWQsIGJvb2wgZnVsbENvbW1hbmQs CiAJCQkJdmFsID0gU3lzQ2FjaGVHZXRBdHRyTm90TnVsbChDT05TVFJPSUQsIHR1cCwKIAkJ CQkJCQkJCQkJIEFudW1fcGdfY29uc3RyYWludF9jb25ma2V5KTsKIAotCQkJCWRlY29tcGls ZV9jb2x1bW5faW5kZXhfYXJyYXkodmFsLCBjb25Gb3JtLT5jb25mcmVsaWQsIGNvbkZvcm0t PmNvbmluZGlkLCBmYWxzZSwgJmJ1Zik7CisJCQkJZGVjb21waWxlX2NvbHVtbl9pbmRleF9h cnJheSh2YWwsIGNvbkZvcm0tPmNvbmZyZWxpZCwKKwkJCQkJCQkJCQkJIGNvbkZvcm0tPmNv bmluZGlkLCBmYWxzZSwKKwkJCQkJCQkJCQkJIGNvbkZvcm0tPmNvbnRlbXBvcmFsLCAmYnVm KTsKIAogCQkJCWFwcGVuZFN0cmluZ0luZm9DaGFyKCZidWYsICcpJyk7CiAKQEAgLTIzNDQs NyArMjM0OSw3IEBAIHBnX2dldF9jb25zdHJhaW50ZGVmX3dvcmtlcihPaWQgY29uc3RyYWlu dElkLCBib29sIGZ1bGxDb21tYW5kLAogCQkJCWlmICghaXNudWxsKQogCQkJCXsKIAkJCQkJ YXBwZW5kU3RyaW5nSW5mb1N0cmluZygmYnVmLCAiICgiKTsKLQkJCQkJZGVjb21waWxlX2Nv bHVtbl9pbmRleF9hcnJheSh2YWwsIGNvbkZvcm0tPmNvbnJlbGlkLCBJbnZhbGlkT2lkLCBm YWxzZSwgJmJ1Zik7CisJCQkJCWRlY29tcGlsZV9jb2x1bW5faW5kZXhfYXJyYXkodmFsLCBj b25Gb3JtLT5jb25yZWxpZCwgSW52YWxpZE9pZCwgZmFsc2UsIGZhbHNlLCAmYnVmKTsKIAkJ CQkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoJmJ1ZiwgJyknKTsKIAkJCQl9CiAKQEAgLTIzODcs NyArMjM5Miw3IEBAIHBnX2dldF9jb25zdHJhaW50ZGVmX3dvcmtlcihPaWQgY29uc3RyYWlu dElkLCBib29sIGZ1bGxDb21tYW5kLAogCQkJCWluZGV4SWQgPSBjb25Gb3JtLT5jb25pbmRp ZDsKIAkJCQlTeXNDYWNoZUdldEF0dHIoQ09OU1RST0lELCB0dXAsCiAJCQkJCQkgIEFudW1f cGdfY29uc3RyYWludF9jb25leGNsb3AsICZpc251bGwpOwotCQkJCWtleWF0dHMgPSBkZWNv bXBpbGVfY29sdW1uX2luZGV4X2FycmF5KHZhbCwgY29uRm9ybS0+Y29ucmVsaWQsIGluZGV4 SWQsICFpc251bGwsICZidWYpOworCQkJCWtleWF0dHMgPSBkZWNvbXBpbGVfY29sdW1uX2lu ZGV4X2FycmF5KHZhbCwgY29uRm9ybS0+Y29ucmVsaWQsIGluZGV4SWQsICFpc251bGwsIGZh bHNlLCAmYnVmKTsKIAogCQkJCWFwcGVuZFN0cmluZ0luZm9DaGFyKCZidWYsICcpJyk7CiAK QEAgLTI1ODMsNyArMjU4OCw3IEBAIHBnX2dldF9jb25zdHJhaW50ZGVmX3dvcmtlcihPaWQg Y29uc3RyYWludElkLCBib29sIGZ1bGxDb21tYW5kLAogICovCiBzdGF0aWMgaW50CiBkZWNv bXBpbGVfY29sdW1uX2luZGV4X2FycmF5KERhdHVtIGNvbHVtbl9pbmRleF9hcnJheSwgT2lk IHJlbElkLCBPaWQgaW5kZXhJZCwKLQkJCQkJCQkgYm9vbCB3aXRob3V0T3ZlcmxhcHMsIFN0 cmluZ0luZm8gYnVmKQorCQkJCQkJCSBib29sIHdpdGhvdXRPdmVybGFwcywgYm9vbCB3aXRo UGVyaW9kLCBTdHJpbmdJbmZvIGJ1ZikKIHsKIAlEYXR1bQkgICAqa2V5czsKIAlpbnQJCQlu S2V5czsKQEAgLTI2MDQsNiArMjYwOSw4IEBAIGRlY29tcGlsZV9jb2x1bW5faW5kZXhfYXJy YXkoRGF0dW0gY29sdW1uX2luZGV4X2FycmF5LCBPaWQgcmVsSWQsIE9pZCBpbmRleElkLAog CQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsIHF1b3RlX2lkZW50aWZpZXIoY29sTmFt ZSkpOwogCQllbHNlIGlmICh3aXRob3V0T3ZlcmxhcHMgJiYgaiA9PSBuS2V5cyAtIDEpCiAJ CQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIiwgJXMgV0lUSE9VVCBPVkVSTEFQUyIsIHF1b3Rl X2lkZW50aWZpZXIoY29sTmFtZSkpOworCQllbHNlIGlmICh3aXRoUGVyaW9kICYmIGogPT0g bktleXMgLSAxKQorCQkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICIsIFBFUklPRCAlcyIsIHF1 b3RlX2lkZW50aWZpZXIoY29sTmFtZSkpOwogCQllbHNlCiAJCQlhcHBlbmRTdHJpbmdJbmZv KGJ1ZiwgIiwgJXMiLCBxdW90ZV9pZGVudGlmaWVyKGNvbE5hbWUpKTsKIAl9CmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2NvbnN0cmFpbnQuaCBiL3NyYy9pbmNsdWRl L2NhdGFsb2cvcGdfY29uc3RyYWludC5oCmluZGV4IDk4YTU2MDc0MWQuLmExODdiZWQyNDUg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfY29uc3RyYWludC5oCisrKyBi L3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfY29uc3RyYWludC5oCkBAIC0xMjcsMTkgKzEyNywx OSBAQCBDQVRBTE9HKHBnX2NvbnN0cmFpbnQsMjYwNixDb25zdHJhaW50UmVsYXRpb25JZCkK IAlpbnQxNgkJY29uZmtleVsxXTsKIAogCS8qCi0JICogSWYgYSBmb3JlaWduIGtleSwgdGhl IE9JRHMgb2YgdGhlIFBLID0gRksgZXF1YWxpdHkgb3BlcmF0b3JzIGZvciBlYWNoCisJICog SWYgYSBmb3JlaWduIGtleSwgdGhlIE9JRHMgb2YgdGhlIFBLID0gRksgY29tcGFyaXNvbiBv cGVyYXRvcnMgZm9yIGVhY2gKIAkgKiBjb2x1bW4gb2YgdGhlIGNvbnN0cmFpbnQKIAkgKi8K IAlPaWQJCQljb25wZmVxb3BbMV0gQktJX0xPT0tVUChwZ19vcGVyYXRvcik7CiAKIAkvKgot CSAqIElmIGEgZm9yZWlnbiBrZXksIHRoZSBPSURzIG9mIHRoZSBQSyA9IFBLIGVxdWFsaXR5 IG9wZXJhdG9ycyBmb3IgZWFjaAorCSAqIElmIGEgZm9yZWlnbiBrZXksIHRoZSBPSURzIG9m IHRoZSBQSyA9IFBLIGNvbXBhcmlzb24gb3BlcmF0b3JzIGZvciBlYWNoCiAJICogY29sdW1u IG9mIHRoZSBjb25zdHJhaW50IChpLmUuLCBlcXVhbGl0eSBmb3IgdGhlIHJlZmVyZW5jZWQg Y29sdW1ucykKIAkgKi8KIAlPaWQJCQljb25wcGVxb3BbMV0gQktJX0xPT0tVUChwZ19vcGVy YXRvcik7CiAKIAkvKgotCSAqIElmIGEgZm9yZWlnbiBrZXksIHRoZSBPSURzIG9mIHRoZSBG SyA9IEZLIGVxdWFsaXR5IG9wZXJhdG9ycyBmb3IgZWFjaAorCSAqIElmIGEgZm9yZWlnbiBr ZXksIHRoZSBPSURzIG9mIHRoZSBGSyA9IEZLIGNvbXBhcmlzb24gb3BlcmF0b3JzIGZvciBl YWNoCiAJICogY29sdW1uIG9mIHRoZSBjb25zdHJhaW50IChpLmUuLCBlcXVhbGl0eSBmb3Ig dGhlIHJlZmVyZW5jaW5nIGNvbHVtbnMpCiAJICovCiAJT2lkCQkJY29uZmZlcW9wWzFdIEJL SV9MT09LVVAocGdfb3BlcmF0b3IpOwpAQCAtMTgwLDcgKzE4MCw3IEBAIERFQ0xBUkVfSU5E RVgocGdfY29uc3RyYWludF9jb25wYXJlbnRpZF9pbmRleCwgMjU3OSwgQ29uc3RyYWludFBh cmVudEluZGV4SWQsIHBnCiAKIC8qIGNvbmtleSBjYW4gY29udGFpbiB6ZXJvIChJbnZhbGlk QXR0ck51bWJlcikgaWYgYSB3aG9sZS1yb3cgVmFyIGlzIHVzZWQgKi8KIERFQ0xBUkVfQVJS QVlfRk9SRUlHTl9LRVlfT1BUKChjb25yZWxpZCwgY29ua2V5KSwgcGdfYXR0cmlidXRlLCAo YXR0cmVsaWQsIGF0dG51bSkpOwotREVDTEFSRV9BUlJBWV9GT1JFSUdOX0tFWSgoY29uZnJl bGlkLCBjb25ma2V5KSwgcGdfYXR0cmlidXRlLCAoYXR0cmVsaWQsIGF0dG51bSkpOworREVD TEFSRV9BUlJBWV9GT1JFSUdOX0tFWV9PUFQoKGNvbmZyZWxpZCwgY29uZmtleSksIHBnX2F0 dHJpYnV0ZSwgKGF0dHJlbGlkLCBhdHRudW0pKTsKIAogI2lmZGVmIEVYUE9TRV9UT19DTElF TlRfQ09ERQogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0 IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAppbmRleCAwOTFmN2UzNDNjLi4x NzI5ZDFkM2RkIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0 CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKQEAgLTM5NDUsNiArMzk0 NSwzMCBAQAogICBwcm9yZXR0eXBlID0+ICd0cmlnZ2VyJywgcHJvYXJndHlwZXMgPT4gJycs CiAgIHByb3NyYyA9PiAnUklfRktleV9ub2FjdGlvbl91cGQnIH0sCiAKKyMgVGVtcG9yYWwg cmVmZXJlbnRpYWwgaW50ZWdyaXR5IGNvbnN0cmFpbnQgdHJpZ2dlcnMKK3sgb2lkID0+ICc2 MTIyJywgZGVzY3IgPT4gJ3RlbXBvcmFsIHJlZmVyZW50aWFsIGludGVncml0eSBGT1JFSUdO IEtFWSAuLi4gUkVGRVJFTkNFUycsCisgIHByb25hbWUgPT4gJ1RSSV9GS2V5X2NoZWNrX2lu cycsIHByb3ZvbGF0aWxlID0+ICd2JywgcHJvcmV0dHlwZSA9PiAndHJpZ2dlcicsCisgIHBy b2FyZ3R5cGVzID0+ICcnLCBwcm9zcmMgPT4gJ1RSSV9GS2V5X2NoZWNrX2lucycgfSwKK3sg b2lkID0+ICc2MTIzJywgZGVzY3IgPT4gJ3RlbXBvcmFsIHJlZmVyZW50aWFsIGludGVncml0 eSBGT1JFSUdOIEtFWSAuLi4gUkVGRVJFTkNFUycsCisgIHByb25hbWUgPT4gJ1RSSV9GS2V5 X2NoZWNrX3VwZCcsIHByb3ZvbGF0aWxlID0+ICd2JywgcHJvcmV0dHlwZSA9PiAndHJpZ2dl cicsCisgIHByb2FyZ3R5cGVzID0+ICcnLCBwcm9zcmMgPT4gJ1RSSV9GS2V5X2NoZWNrX3Vw ZCcgfSwKK3sgb2lkID0+ICc2MTI2JywgZGVzY3IgPT4gJ3RlbXBvcmFsIHJlZmVyZW50aWFs IGludGVncml0eSBPTiBERUxFVEUgUkVTVFJJQ1QnLAorICBwcm9uYW1lID0+ICdUUklfRktl eV9yZXN0cmljdF9kZWwnLCBwcm92b2xhdGlsZSA9PiAndicsCisgIHByb3JldHR5cGUgPT4g J3RyaWdnZXInLCBwcm9hcmd0eXBlcyA9PiAnJywKKyAgcHJvc3JjID0+ICdUUklfRktleV9y ZXN0cmljdF9kZWwnIH0sCit7IG9pZCA9PiAnNjEyNycsIGRlc2NyID0+ICd0ZW1wb3JhbCBy ZWZlcmVudGlhbCBpbnRlZ3JpdHkgT04gVVBEQVRFIFJFU1RSSUNUJywKKyAgcHJvbmFtZSA9 PiAnVFJJX0ZLZXlfcmVzdHJpY3RfdXBkJywgcHJvdm9sYXRpbGUgPT4gJ3YnLAorICBwcm9y ZXR0eXBlID0+ICd0cmlnZ2VyJywgcHJvYXJndHlwZXMgPT4gJycsCisgIHByb3NyYyA9PiAn VFJJX0ZLZXlfcmVzdHJpY3RfdXBkJyB9LAoreyBvaWQgPT4gJzYxMzInLCBkZXNjciA9PiAn dGVtcG9yYWwgcmVmZXJlbnRpYWwgaW50ZWdyaXR5IE9OIERFTEVURSBOTyBBQ1RJT04nLAor ICBwcm9uYW1lID0+ICdUUklfRktleV9ub2FjdGlvbl9kZWwnLCBwcm92b2xhdGlsZSA9PiAn dicsCisgIHByb3JldHR5cGUgPT4gJ3RyaWdnZXInLCBwcm9hcmd0eXBlcyA9PiAnJywKKyAg cHJvc3JjID0+ICdUUklfRktleV9ub2FjdGlvbl9kZWwnIH0sCit7IG9pZCA9PiAnNjEzMycs IGRlc2NyID0+ICd0ZW1wb3JhbCByZWZlcmVudGlhbCBpbnRlZ3JpdHkgT04gVVBEQVRFIE5P IEFDVElPTicsCisgIHByb25hbWUgPT4gJ1RSSV9GS2V5X25vYWN0aW9uX3VwZCcsIHByb3Zv bGF0aWxlID0+ICd2JywKKyAgcHJvcmV0dHlwZSA9PiAndHJpZ2dlcicsIHByb2FyZ3R5cGVz ID0+ICcnLAorICBwcm9zcmMgPT4gJ1RSSV9GS2V5X25vYWN0aW9uX3VwZCcgfSwKKwogeyBv aWQgPT4gJzE2NjYnLAogICBwcm9uYW1lID0+ICd2YXJiaXRlcScsIHByb2xlYWtwcm9vZiA9 PiAndCcsIHByb3JldHR5cGUgPT4gJ2Jvb2wnLAogICBwcm9hcmd0eXBlcyA9PiAndmFyYml0 IHZhcmJpdCcsIHByb3NyYyA9PiAnYml0ZXEnIH0sCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9ub2Rlcy9wYXJzZW5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgK aW5kZXggYmQ1MDY4NjcwYS4uMTE2YjMwOGRiZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv bm9kZXMvcGFyc2Vub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMu aApAQCAtMjYzMiw3ICsyNjMyLDkgQEAgdHlwZWRlZiBzdHJ1Y3QgQ29uc3RyYWludAogCS8q IEZpZWxkcyB1c2VkIGZvciBGT1JFSUdOIEtFWSBjb25zdHJhaW50czogKi8KIAlSYW5nZVZh ciAgICpwa3RhYmxlOwkJLyogUHJpbWFyeSBrZXkgdGFibGUgKi8KIAlMaXN0CSAgICpma19h dHRyczsJCS8qIEF0dHJpYnV0ZXMgb2YgZm9yZWlnbiBrZXkgKi8KKwlOb2RlCSAgICpma19w ZXJpb2Q7CQkvKiBTdHJpbmcgbm9kZSBuYW1pbmcgUGVyaW9kIG9yIHJhbmdlIGNvbHVtbiAq LwogCUxpc3QJICAgKnBrX2F0dHJzOwkJLyogQ29ycmVzcG9uZGluZyBhdHRycyBpbiBQSyB0 YWJsZSAqLworCU5vZGUJICAgKnBrX3BlcmlvZDsJCS8qIFN0cmluZyBub2RlIG5hbWluZyBQ ZXJpb2Qgb3IgcmFuZ2UgY29sdW1uICovCiAJY2hhcgkJZmtfbWF0Y2h0eXBlOwkvKiBGVUxM LCBQQVJUSUFMLCBTSU1QTEUgKi8KIAljaGFyCQlma191cGRfYWN0aW9uOwkvKiBPTiBVUERB VEUgYWN0aW9uICovCiAJY2hhcgkJZmtfZGVsX2FjdGlvbjsJLyogT04gREVMRVRFIGFjdGlv biAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oIGIvc3JjL2lu Y2x1ZGUvcGFyc2VyL2t3bGlzdC5oCmluZGV4IDU5ODRkY2ZhNGIuLmNjZjViZjhhYTYgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaAorKysgYi9zcmMvaW5jbHVk ZS9wYXJzZXIva3dsaXN0LmgKQEAgLTMyNiw2ICszMjYsNyBAQCBQR19LRVlXT1JEKCJwYXJ0 aWFsIiwgUEFSVElBTCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZ V09SRCgicGFydGl0aW9uIiwgUEFSVElUSU9OLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVf TEFCRUwpCiBQR19LRVlXT1JEKCJwYXNzaW5nIiwgUEFTU0lORywgVU5SRVNFUlZFRF9LRVlX T1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgicGFzc3dvcmQiLCBQQVNTV09SRCwgVU5S RVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQorUEdfS0VZV09SRCgicGVyaW9kIiwgUEVS SU9ELCBSRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgicGxhY2lu ZyIsIFBMQUNJTkcsIFJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JE KCJwbGFucyIsIFBMQU5TLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19L RVlXT1JEKCJwb2xpY3kiLCBQT0xJQ1ksIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJF TCkKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvd2l0aG91dF9vdmVy bGFwcy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3dpdGhvdXRfb3ZlcmxhcHMu b3V0CmluZGV4IDM2YWViYzQ1MmYuLjRkZjZjYWQzNjQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvd2l0aG91dF9vdmVybGFwcy5vdXQKKysrIGIvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC93aXRob3V0X292ZXJsYXBzLm91dApAQCAtMzg0LDMgKzM4NCw1 MTMgQEAgU0VMRUNUICogRlJPTSB0cDIgT1JERVIgQlkgaWQsIHZhbGlkX2F0OwogKDEgcm93 KQogCiBEUk9QIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkOworLS0KKy0tIHRlc3QgRksg ZGVwZW5kZW5jaWVzCistLQorLS0gY2FuJ3QgZHJvcCBhIHJhbmdlIHJlZmVyZW5jZWQgYnkg YW4gRkssIHVubGVzcyB3aXRoIENBU0NBREUKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbDMgKAor CWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9y YWwzX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7 CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZyAoCisJaWQgaW50NHJhbmdlLAor CXZhbGlkX2F0IHRzcmFuZ2UsCisJcGFyZW50X2lkIGludDRyYW5nZSwKKwlDT05TVFJBSU5U IHRlbXBvcmFsX2ZrX3JuZzJybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRI T1VUIE9WRVJMQVBTKSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsgRk9S RUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRl bXBvcmFsMyAoaWQsIFBFUklPRCB2YWxpZF9hdCkKKyk7CitBTFRFUiBUQUJMRSB0ZW1wb3Jh bDMgRFJPUCBDT0xVTU4gdmFsaWRfYXQ7CitFUlJPUjogIGNhbm5vdCBkcm9wIGNvbHVtbiB2 YWxpZF9hdCBvZiB0YWJsZSB0ZW1wb3JhbDMgYmVjYXVzZSBvdGhlciBvYmplY3RzIGRlcGVu ZCBvbiBpdAorREVUQUlMOiAgY29uc3RyYWludCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrIG9u IHRhYmxlIHRlbXBvcmFsX2ZrX3JuZzJybmcgZGVwZW5kcyBvbiBjb2x1bW4gdmFsaWRfYXQg b2YgdGFibGUgdGVtcG9yYWwzCitISU5UOiAgVXNlIERST1AgLi4uIENBU0NBREUgdG8gZHJv cCB0aGUgZGVwZW5kZW50IG9iamVjdHMgdG9vLgorQUxURVIgVEFCTEUgdGVtcG9yYWwzIERS T1AgQ09MVU1OIHZhbGlkX2F0IENBU0NBREU7CitOT1RJQ0U6ICBkcm9wIGNhc2NhZGVzIHRv IGNvbnN0cmFpbnQgdGVtcG9yYWxfZmtfcm5nMnJuZ19mayBvbiB0YWJsZSB0ZW1wb3JhbF9m a19ybmcycm5nCitEUk9QIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmc7CitEUk9QIFRBQkxF IHRlbXBvcmFsMzsKKy0tCistLSB0ZXN0IEZPUkVJR04gS0VZLCByYW5nZSByZWZlcmVuY2Vz IHJhbmdlCistLQorLS0gQ2FuJ3QgY3JlYXRlIGEgRksgd2l0aCBhIG1pc21hdGNoZWQgcmFu Z2UgdHlwZQorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcgKAorCWlkIGludDRy YW5nZSwKKwl2YWxpZF9hdCBpbnQ0cmFuZ2UsCisJcGFyZW50X2lkIGludDRyYW5nZSwKKwlD T05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfcGsyIFBSSU1BUlkgS0VZIChpZCwgdmFs aWRfYXQgV0lUSE9VVCBPVkVSTEFQUyksCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcy cm5nX2ZrMiBGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJF RkVSRU5DRVMgdGVtcG9yYWxfcm5nIChpZCwgUEVSSU9EIHZhbGlkX2F0KQorKTsKK0VSUk9S OiAgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxfZmtfcm5nMnJuZ19mazIiIGNh bm5vdCBiZSBpbXBsZW1lbnRlZAorREVUQUlMOiAgS2V5IGNvbHVtbnMgInZhbGlkX2F0IiBh bmQgInZhbGlkX2F0IiBhcmUgb2YgaW5jb21wYXRpYmxlIHR5cGVzOiBpbnQ0cmFuZ2UgYW5k IHRzcmFuZ2UuCitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZyAoCisJaWQgaW50 NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UsCisJcGFyZW50X2lkIGludDRyYW5nZSwKKwlD T05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxp ZF9hdCBXSVRIT1VUIE9WRVJMQVBTKSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJy bmdfZmsgRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZF UkVOQ0VTIHRlbXBvcmFsX3JuZyAoaWQsIFBFUklPRCB2YWxpZF9hdCkKKyk7CitEUk9QIFRB QkxFIHRlbXBvcmFsX2ZrX3JuZzJybmc7CistLSB3aXRoIGluZmVycmVkIFBLIG9uIHRoZSBy ZWZlcmVuY2VkIHRhYmxlOgorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcgKAor CWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAorCXBhcmVudF9pZCBpbnQ0cmFu Z2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX3BrIFBSSU1BUlkgS0VZIChp ZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyksCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9m a19ybmcycm5nX2ZrIEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkK KwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcKKyk7CitEUk9QIFRBQkxFIHRlbXBvcmFsX2Zr X3JuZzJybmc7CistLSBzaG91bGQgZmFpbCBiZWNhdXNlIG9mIGR1cGxpY2F0ZSByZWZlcmVu Y2VkIGNvbHVtbnM6CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZyAoCisJaWQg aW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UsCisJcGFyZW50X2lkIGludDRyYW5nZSwK KwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2 YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3Ju ZzJybmdfZmsgRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHBhcmVudF9pZCkKKwkJ UkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcgKGlkLCBQRVJJT0QgaWQpCispOworRVJST1I6ICBm b3JlaWduIGtleSByZWZlcmVuY2VkLWNvbHVtbnMgbGlzdCBtdXN0IG5vdCBjb250YWluIGR1 cGxpY2F0ZXMKKy0tIFR3byBzY2FsYXIgY29sdW1ucworQ1JFQVRFIFRBQkxFIHRlbXBvcmFs X2ZrMl9ybmcycm5nICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5nZSwKKwlw YXJlbnRfaWQxIGludDRyYW5nZSwKKwlwYXJlbnRfaWQyIGludDRyYW5nZSwKKwlDT05TVFJB SU5UIHRlbXBvcmFsX2ZrMl9ybmcycm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQg V0lUSE9VVCBPVkVSTEFQUyksCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9mazJfcm5nMnJuZ19m ayBGT1JFSUdOIEtFWSAocGFyZW50X2lkMSwgcGFyZW50X2lkMiwgUEVSSU9EIHZhbGlkX2F0 KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZzIgKGlkMSwgaWQyLCBQRVJJT0QgdmFsaWRf YXQpCispOworXGQgdGVtcG9yYWxfZmsyX3JuZzJybmcKKyAgICAgICAgICAgVGFibGUgInB1 YmxpYy50ZW1wb3JhbF9mazJfcm5nMnJuZyIKKyAgIENvbHVtbiAgIHwgICBUeXBlICAgIHwg Q29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tCisgaWQgICAgICAgICB8IGlu dDRyYW5nZSB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgCisgdmFsaWRfYXQgICB8IHRzcmFu Z2UgICB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgCisgcGFyZW50X2lkMSB8IGludDRyYW5n ZSB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCisgcGFyZW50X2lkMiB8IGludDRyYW5nZSB8 ICAgICAgICAgICB8ICAgICAgICAgIHwgCitJbmRleGVzOgorICAgICJ0ZW1wb3JhbF9mazJf cm5nMnJuZ19wayIgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBT KQorRm9yZWlnbi1rZXkgY29uc3RyYWludHM6CisgICAgInRlbXBvcmFsX2ZrMl9ybmcycm5n X2ZrIiBGT1JFSUdOIEtFWSAocGFyZW50X2lkMSwgcGFyZW50X2lkMiwgUEVSSU9EIHZhbGlk X2F0KSBSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZzIoaWQxLCBpZDIsIFBFUklPRCB2YWxpZF9h dCkKKworRFJPUCBUQUJMRSB0ZW1wb3JhbF9mazJfcm5nMnJuZzsKKy0tCistLSB0ZXN0IEFM VEVSIFRBQkxFIEFERCBDT05TVFJBSU5UCistLQorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX2Zr X3JuZzJybmcgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAorCXBhcmVu dF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX3BrIFBS SU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CitBTFRFUiBU QUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtf cm5nMnJuZ19maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkK KwlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZyAoaWQsIFBFUklPRCB2YWxpZF9hdCk7CistLSBU d28gc2NhbGFyIGNvbHVtbnM6CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfZmsyX3JuZzJybmcg KAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAorCXBhcmVudF9pZDEgaW50 NHJhbmdlLAorCXBhcmVudF9pZDIgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxf ZmsyX3JuZzJybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJM QVBTKQorKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrMl9ybmcycm5nCisJQUREIENPTlNU UkFJTlQgdGVtcG9yYWxfZmsyX3JuZzJybmdfZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lk MSwgcGFyZW50X2lkMiwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgdGVtcG9yYWxf cm5nMiAoaWQxLCBpZDIsIFBFUklPRCB2YWxpZF9hdCk7CitcZCB0ZW1wb3JhbF9mazJfcm5n MnJuZworICAgICAgICAgICBUYWJsZSAicHVibGljLnRlbXBvcmFsX2ZrMl9ybmcycm5nIgor ICAgQ29sdW1uICAgfCAgIFR5cGUgICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1 bHQgCistLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSst LS0tLS0tLS0KKyBpZCAgICAgICAgIHwgaW50NHJhbmdlIHwgICAgICAgICAgIHwgbm90IG51 bGwgfCAKKyB2YWxpZF9hdCAgIHwgdHNyYW5nZSAgIHwgICAgICAgICAgIHwgbm90IG51bGwg fCAKKyBwYXJlbnRfaWQxIHwgaW50NHJhbmdlIHwgICAgICAgICAgIHwgICAgICAgICAgfCAK KyBwYXJlbnRfaWQyIHwgaW50NHJhbmdlIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKK0lu ZGV4ZXM6CisgICAgInRlbXBvcmFsX2ZrMl9ybmcycm5nX3BrIiBQUklNQVJZIEtFWSAoaWQs IHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCitGb3JlaWduLWtleSBjb25zdHJhaW50czoK KyAgICAidGVtcG9yYWxfZmsyX3JuZzJybmdfZmsiIEZPUkVJR04gS0VZIChwYXJlbnRfaWQx LCBwYXJlbnRfaWQyLCBQRVJJT0QgdmFsaWRfYXQpIFJFRkVSRU5DRVMgdGVtcG9yYWxfcm5n MihpZDEsIGlkMiwgUEVSSU9EIHZhbGlkX2F0KQorCistLSB3aXRoIGluZmVycmVkIFBLIG9u IHRoZSByZWZlcmVuY2VkIHRhYmxlLCBhbmQgd3JvbmcgY29sdW1uIHR5cGU6CitBTFRFUiBU QUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX2Zr X3JuZzJybmdfZmssCisJQUxURVIgQ09MVU1OIHZhbGlkX2F0IFRZUEUgZGF0ZXJhbmdlIFVT SU5HIGRhdGVyYW5nZShsb3dlcih2YWxpZF9hdCk6OmRhdGUsIHVwcGVyKHZhbGlkX2F0KTo6 ZGF0ZSk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisJQUREIENPTlNUUkFJ TlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBF UklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZzsKK0VSUk9SOiAgZm9y ZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxfZmtfcm5nMnJuZ19mayIgY2Fubm90IGJl IGltcGxlbWVudGVkCitERVRBSUw6ICBLZXkgY29sdW1ucyAidmFsaWRfYXQiIGFuZCAidmFs aWRfYXQiIGFyZSBvZiBpbmNvbXBhdGlibGUgdHlwZXM6IGRhdGVyYW5nZSBhbmQgdHNyYW5n ZS4KK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlBTFRFUiBDT0xVTU4gdmFs aWRfYXQgVFlQRSB0c3JhbmdlIFVTSU5HIHRzcmFuZ2UobG93ZXIodmFsaWRfYXQpLCB1cHBl cih2YWxpZF9hdCkpOworLS0gd2l0aCBpbmZlcnJlZCBQSyBvbiB0aGUgcmVmZXJlbmNlZCB0 YWJsZToKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlBREQgQ09OU1RSQUlO VCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVS SU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nOworLS0gc2hvdWxkIGZh aWwgYmVjYXVzZSBvZiBkdXBsaWNhdGUgcmVmZXJlbmNlZCBjb2x1bW5zOgorQUxURVIgVEFC TEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3Ju ZzJybmdfZmsyCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHBhcmVudF9pZCkK KwlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZyAoaWQsIFBFUklPRCBpZCk7CitFUlJPUjogIGZv cmVpZ24ga2V5IHJlZmVyZW5jZWQtY29sdW1ucyBsaXN0IG11c3Qgbm90IGNvbnRhaW4gZHVw bGljYXRlcworLS0KKy0tIHRlc3Qgd2l0aCByb3dzIGFscmVhZHkKKy0tCitERUxFVEUgRlJP TSB0ZW1wb3JhbF9ma19ybmcycm5nOworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJu ZworCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrOworSU5TRVJUIElO VE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMSwxXScsIHRzcmFuZ2UoJzIwMTgt MDEtMDInLCAnMjAxOC0wMi0wMScpLCAnWzEsMV0nKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFs X2ZrX3JuZzJybmcKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrCisJ Rk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMg dGVtcG9yYWxfcm5nOworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCURST1Ag Q09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrOworSU5TRVJUIElOVE8gdGVtcG9y YWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMiwyXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDInLCAn MjAxOC0wNC0wMScpLCAnWzEsMV0nKTsKKy0tIHNob3VsZCBmYWlsOgorQUxURVIgVEFCTEUg dGVtcG9yYWxfZmtfcm5nMnJuZworCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJy bmdfZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJUkVG RVJFTkNFUyB0ZW1wb3JhbF9ybmc7CitFUlJPUjogIGluc2VydCBvciB1cGRhdGUgb24gdGFi bGUgInRlbXBvcmFsX2ZrX3JuZzJybmciIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFp bnQgInRlbXBvcmFsX2ZrX3JuZzJybmdfZmsiCitERVRBSUw6ICBLZXkgKHBhcmVudF9pZCwg dmFsaWRfYXQpPShbMSwyKSwgWyJUdWUgSmFuIDAyIDAwOjAwOjAwIDIwMTgiLCJTdW4gQXBy IDAxIDAwOjAwOjAwIDIwMTgiKSkgaXMgbm90IHByZXNlbnQgaW4gdGFibGUgInRlbXBvcmFs X3JuZyIuCistLSBva2F5IGFnYWluOgorREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJu ZzsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlBREQgQ09OU1RSQUlOVCB0 ZW1wb3JhbF9ma19ybmcycm5nX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9E IHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nOworLS0KKy0tIHRlc3QgcGdf Z2V0X2NvbnN0cmFpbnRkZWYKKy0tCitTRUxFQ1QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYob2lk KSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ubmFtZSA9ICd0ZW1wb3JhbF9ma19ybmcy cm5nX2ZrJzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF9jb25z dHJhaW50ZGVmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVS SU9EIHZhbGlkX2F0KSBSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZyhpZCwgUEVSSU9EIHZhbGlk X2F0KQorKDEgcm93KQorCistLQorLS0gdGVzdCBGSyBjaGlsZCBpbnNlcnRzCistLQorSU5T RVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMSwxXScsIHRzcmFuZ2Uo JzIwMTgtMDEtMDInLCAnMjAxOC0wMi0wMScpLCAnWzEsMV0nKTsKKy0tIHNob3VsZCBmYWls OgorSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMiwyXScsIHRz cmFuZ2UoJzIwMTgtMDEtMDInLCAnMjAxOC0wNC0wMScpLCAnWzEsMV0nKTsKK0VSUk9SOiAg aW5zZXJ0IG9yIHVwZGF0ZSBvbiB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIgdmlvbGF0 ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxfZmtfcm5nMnJuZ19mayIKK0RF VEFJTDogIEtleSAocGFyZW50X2lkLCB2YWxpZF9hdCk9KFsxLDIpLCBbIlR1ZSBKYW4gMDIg MDA6MDA6MDAgMjAxOCIsIlN1biBBcHIgMDEgMDA6MDA6MDAgMjAxOCIpKSBpcyBub3QgcHJl c2VudCBpbiB0YWJsZSAidGVtcG9yYWxfcm5nIi4KKy0tIG5vdyBpdCBzaG91bGQgd29yazoK K0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbMSwxXScsIHRzcmFuZ2UoJzIw MTgtMDItMDMnLCAnMjAxOC0wMy0wMycpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3Ju ZzJybmcgVkFMVUVTICgnWzIsMl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAyJywgJzIwMTgtMDQt MDEnKSwgJ1sxLDFdJyk7CistLQorLS0gdGVzdCBGSyBjaGlsZCB1cGRhdGVzCistLQorVVBE QVRFIHRlbXBvcmFsX2ZrX3JuZzJybmcgU0VUIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0w MS0wMicsICcyMDE4LTAzLTAxJykgV0hFUkUgaWQgPSAnWzEsMV0nOworLS0gc2hvdWxkIGZh aWw6CitVUERBVEUgdGVtcG9yYWxfZmtfcm5nMnJuZyBTRVQgdmFsaWRfYXQgPSB0c3Jhbmdl KCcyMDE4LTAxLTAyJywgJzIwMTgtMDUtMDEnKSBXSEVSRSBpZCA9ICdbMSwxXSc7CitFUlJP UjogIGluc2VydCBvciB1cGRhdGUgb24gdGFibGUgInRlbXBvcmFsX2ZrX3JuZzJybmciIHZp b2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBvcmFsX2ZrX3JuZzJybmdfZmsi CitERVRBSUw6ICBLZXkgKHBhcmVudF9pZCwgdmFsaWRfYXQpPShbMSwyKSwgWyJUdWUgSmFu IDAyIDAwOjAwOjAwIDIwMTgiLCJUdWUgTWF5IDAxIDAwOjAwOjAwIDIwMTgiKSkgaXMgbm90 IHByZXNlbnQgaW4gdGFibGUgInRlbXBvcmFsX3JuZyIuCitVUERBVEUgdGVtcG9yYWxfZmtf cm5nMnJuZyBTRVQgcGFyZW50X2lkID0gJ1s4LDhdJyBXSEVSRSBpZCA9ICdbMSwxXSc7CitF UlJPUjogIGluc2VydCBvciB1cGRhdGUgb24gdGFibGUgInRlbXBvcmFsX2ZrX3JuZzJybmci IHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBvcmFsX2ZrX3JuZzJybmdf ZmsiCitERVRBSUw6ICBLZXkgKHBhcmVudF9pZCwgdmFsaWRfYXQpPShbOCw5KSwgWyJUdWUg SmFuIDAyIDAwOjAwOjAwIDIwMTgiLCJUaHUgTWFyIDAxIDAwOjAwOjAwIDIwMTgiKSkgaXMg bm90IHByZXNlbnQgaW4gdGFibGUgInRlbXBvcmFsX3JuZyIuCistLSBBTFRFUiBGSyBERUZF UlJBQkxFCitCRUdJTjsKKyAgSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUworICAg ICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKSksCisgICAg KCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpKTsKKyAgSU5T RVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMKKyAgICAoJ1szLDNdJywgdHNy YW5nZSgnMjAxOC0wMS0wNScsICcyMDE4LTAxLTEwJyksICdbNSw1XScpOworICBBTFRFUiBU QUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisgICAgQUxURVIgQ09OU1RSQUlOVCB0ZW1wb3Jh bF9ma19ybmcycm5nX2ZrCisgICAgREVGRVJSQUJMRSBJTklUSUFMTFkgREVGRVJSRUQ7Cisg IERFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XSc7IC0tc2hvdWxk IG5vdCBmYWlsIHlldC4KK0NPTU1JVDsgLS0gc2hvdWxkIGZhaWwgaGVyZS4KK0VSUk9SOiAg dXBkYXRlIG9yIGRlbGV0ZSBvbiB0YWJsZSAidGVtcG9yYWxfcm5nIiB2aW9sYXRlcyBmb3Jl aWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9ma19ybmcycm5nX2ZrIiBvbiB0YWJsZSAi dGVtcG9yYWxfZmtfcm5nMnJuZyIKK0RFVEFJTDogIEtleSAoaWQsIHZhbGlkX2F0KT0oWzUs NiksIFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVGh1IEZlYiAwMSAwMDowMDowMCAy MDE4IikpIGlzIHN0aWxsIHJlZmVyZW5jZWQgZnJvbSB0YWJsZSAidGVtcG9yYWxfZmtfcm5n MnJuZyIuCistLQorLS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRlcyBOTyBBQ1RJT04KKy0tCist LSBhIFBLIHVwZGF0ZSB0aGF0IHN1Y2NlZWRzIGJlY2F1c2UgdGhlIG51bWVyaWMgaWQgaXNu J3QgcmVmZXJlbmNlZDoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbNSw1 XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKK1VQREFURSB0ZW1w b3JhbF9ybmcgU0VUIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxNi0wMS0wMScsICcyMDE2LTAy LTAxJykgV0hFUkUgaWQgPSAnWzUsNV0nOworLS0gYSBQSyB1cGRhdGUgdGhhdCBzdWNjZWVk cyBldmVuIHRob3VnaCB0aGUgbnVtZXJpYyBpZCBpcyByZWZlcmVuY2VkIGJlY2F1c2UgdGhl IHJhbmdlIGlzbid0OgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1 LDVdJzsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbNSw1XScsIHRzcmFu Z2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFs X3JuZyBWQUxVRVMgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0w MScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzMsM10n LCB0c3JhbmdlKCcyMDE4LTAxLTA1JywgJzIwMTgtMDEtMTAnKSwgJ1s1LDVdJyk7CitVUERB VEUgdGVtcG9yYWxfcm5nIFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTYtMDItMDEnLCAn MjAxNi0wMy0wMScpCitXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5n ZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJyk7CistLSBhIFBLIHVwZGF0ZSB0aGF0IGZh aWxzIGJlY2F1c2UgYm90aCBhcmUgcmVmZXJlbmNlZDoKK1VQREFURSB0ZW1wb3JhbF9ybmcg U0VUIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxNi0wMS0wMScsICcyMDE2LTAyLTAxJykKK1dI RVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywg JzIwMTgtMDItMDEnKTsKK0VSUk9SOiAgdXBkYXRlIG9yIGRlbGV0ZSBvbiB0YWJsZSAidGVt cG9yYWxfcm5nIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9m a19ybmcycm5nX2ZrIiBvbiB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIKK0RFVEFJTDog IEtleSAoaWQsIHZhbGlkX2F0KT0oWzUsNiksIFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4 IiwiVGh1IEZlYiAwMSAwMDowMDowMCAyMDE4IikpIGlzIHN0aWxsIHJlZmVyZW5jZWQgZnJv bSB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIuCistLSBjaGFuZ2luZyB0aGUgc2NhbGFy IHBhcnQgZmFpbHM6CitVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCBpZCA9ICdbNyw3XScKK1dI RVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywg JzIwMTgtMDItMDEnKTsKK0VSUk9SOiAgdXBkYXRlIG9yIGRlbGV0ZSBvbiB0YWJsZSAidGVt cG9yYWxfcm5nIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9m a19ybmcycm5nX2ZrIiBvbiB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIKK0RFVEFJTDog IEtleSAoaWQsIHZhbGlkX2F0KT0oWzUsNiksIFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4 IiwiVGh1IEZlYiAwMSAwMDowMDowMCAyMDE4IikpIGlzIHN0aWxsIHJlZmVyZW5jZWQgZnJv bSB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIuCistLSB0aGVuIGRlbGV0ZSB0aGUgb2Jq ZWN0aW5nIEZLIHJlY29yZCBhbmQgdGhlIHNhbWUgUEsgdXBkYXRlIHN1Y2NlZWRzOgorREVM RVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMywzXSc7CitVUERB VEUgdGVtcG9yYWxfcm5nIFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTYtMDEtMDEnLCAn MjAxNi0wMi0wMScpCitXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5n ZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CistLSBjbGVhbiB1cDoKK0RFTEVURSBG Uk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgcGFyZW50X2lkID0gJ1s1LDVdJzsKK0RF TEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XSc7CistLQorLS0gdGVz dCBGSyBwYXJlbnQgdXBkYXRlcyBSRVNUUklDVAorLS0KK0FMVEVSIFRBQkxFIHRlbXBvcmFs X2ZrX3JuZzJybmcKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19mazsK K0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlBREQgQ09OU1RSQUlOVCB0ZW1w b3JhbF9ma19ybmcycm5nX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZh bGlkX2F0KQorCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nCisJT04gREVMRVRFIFJFU1RSSUNU OworLS0gYSBQSyB1cGRhdGUgdGhhdCBzdWNjZWVkcyBiZWNhdXNlIHRoZSBudW1lcmljIGlk IGlzbid0IHJlZmVyZW5jZWQ6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgn WzUsNV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKSk7CitVUERBVEUg dGVtcG9yYWxfcm5nIFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTYtMDEtMDEnLCAnMjAx Ni0wMi0wMScpIFdIRVJFIGlkID0gJ1s1LDVdJzsKKy0tIGEgUEsgdXBkYXRlIHRoYXQgc3Vj Y2VlZHMgZXZlbiB0aG91Z2ggdGhlIG51bWVyaWMgaWQgaXMgcmVmZXJlbmNlZCBiZWNhdXNl IHRoZSByYW5nZSBpc24ndDoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9 ICdbNSw1XSc7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzUsNV0nLCB0 c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1w b3JhbF9ybmcgVkFMVUVTICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgt MDMtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1sz LDNdJywgdHNyYW5nZSgnMjAxOC0wMS0wNScsICcyMDE4LTAxLTEwJyksICdbNSw1XScpOwor VVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE2LTAyLTAx JywgJzIwMTYtMDMtMDEnKQorV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRz cmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpOworLS0gYSBQSyB1cGRhdGUgdGhh dCBmYWlscyBiZWNhdXNlIGJvdGggYXJlIHJlZmVyZW5jZWQ6CitVUERBVEUgdGVtcG9yYWxf cm5nIFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTYtMDEtMDEnLCAnMjAxNi0wMi0wMScp CitXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0w MScsICcyMDE4LTAyLTAxJyk7CitFUlJPUjogIHVwZGF0ZSBvciBkZWxldGUgb24gdGFibGUg InRlbXBvcmFsX3JuZyIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9y YWxfZmtfcm5nMnJuZ19mayIgb24gdGFibGUgInRlbXBvcmFsX2ZrX3JuZzJybmciCitERVRB SUw6ICBLZXkgKGlkLCB2YWxpZF9hdCk9KFs1LDYpLCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAg MjAxOCIsIlRodSBGZWIgMDEgMDA6MDA6MDAgMjAxOCIpKSBpcyBzdGlsbCByZWZlcmVuY2Vk IGZyb20gdGFibGUgInRlbXBvcmFsX2ZrX3JuZzJybmciLgorLS0gY2hhbmdpbmcgdGhlIHNj YWxhciBwYXJ0IGZhaWxzOgorVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgaWQgPSAnWzcsN10n CitXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0w MScsICcyMDE4LTAyLTAxJyk7CitFUlJPUjogIHVwZGF0ZSBvciBkZWxldGUgb24gdGFibGUg InRlbXBvcmFsX3JuZyIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9y YWxfZmtfcm5nMnJuZ19mayIgb24gdGFibGUgInRlbXBvcmFsX2ZrX3JuZzJybmciCitERVRB SUw6ICBLZXkgKGlkLCB2YWxpZF9hdCk9KFs1LDYpLCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAg MjAxOCIsIlRodSBGZWIgMDEgMDA6MDA6MDAgMjAxOCIpKSBpcyBzdGlsbCByZWZlcmVuY2Vk IGZyb20gdGFibGUgInRlbXBvcmFsX2ZrX3JuZzJybmciLgorLS0gdGhlbiBkZWxldGUgdGhl IG9iamVjdGluZyBGSyByZWNvcmQgYW5kIHRoZSBzYW1lIFBLIHVwZGF0ZSBzdWNjZWVkczoK K0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzMsM10nOwor VVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE2LTAxLTAx JywgJzIwMTYtMDItMDEnKQorV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRz cmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworLS0gY2xlYW4gdXA6CitERUxF VEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIHBhcmVudF9pZCA9ICdbNSw1XSc7 CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nOworLS0KKy0t IHRlc3QgRksgcGFyZW50IGRlbGV0ZXMgTk8gQUNUSU9OCistLQorQUxURVIgVEFCTEUgdGVt cG9yYWxfZmtfcm5nMnJuZworCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5n X2ZrOworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCUFERCBDT05TVFJBSU5U IHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJ T0QgdmFsaWRfYXQpCisJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmc7CistLSBhIFBLIGRlbGV0 ZSB0aGF0IHN1Y2NlZWRzIGJlY2F1c2UgdGhlIG51bWVyaWMgaWQgaXNuJ3QgcmVmZXJlbmNl ZDoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbNSw1XScsIHRzcmFuZ2Uo JzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3Ju ZyBXSEVSRSBpZCA9ICdbNSw1XSc7CistLSBhIFBLIGRlbGV0ZSB0aGF0IHN1Y2NlZWRzIGV2 ZW4gdGhvdWdoIHRoZSBudW1lcmljIGlkIGlzIHJlZmVyZW5jZWQgYmVjYXVzZSB0aGUgcmFu Z2UgaXNuJ3Q6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzUsNV0nLCB0 c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1w b3JhbF9ybmcgVkFMVUVTICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgt MDMtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1sz LDNdJywgdHNyYW5nZSgnMjAxOC0wMS0wNScsICcyMDE4LTAxLTEwJyksICdbNSw1XScpOwor REVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRf YXQgPSB0c3JhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKTsKKy0tIGEgUEsgZGVs ZXRlIHRoYXQgZmFpbHMgYmVjYXVzZSBib3RoIGFyZSByZWZlcmVuY2VkOgorREVMRVRFIEZS T00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3Jh bmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKK0VSUk9SOiAgdXBkYXRlIG9yIGRl bGV0ZSBvbiB0YWJsZSAidGVtcG9yYWxfcm5nIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25z dHJhaW50ICJ0ZW1wb3JhbF9ma19ybmcycm5nX2ZrIiBvbiB0YWJsZSAidGVtcG9yYWxfZmtf cm5nMnJuZyIKK0RFVEFJTDogIEtleSAoaWQsIHZhbGlkX2F0KT0oWzUsNiksIFsiTW9uIEph biAwMSAwMDowMDowMCAyMDE4IiwiVGh1IEZlYiAwMSAwMDowMDowMCAyMDE4IikpIGlzIHN0 aWxsIHJlZmVyZW5jZWQgZnJvbSB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIuCistLSB0 aGVuIGRlbGV0ZSB0aGUgb2JqZWN0aW5nIEZLIHJlY29yZCBhbmQgdGhlIHNhbWUgUEsgZGVs ZXRlIHN1Y2NlZWRzOgorREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBp ZCA9ICdbMywzXSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUs NV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScp OworLS0KKy0tIHRlc3QgRksgcGFyZW50IGRlbGV0ZXMgUkVTVFJJQ1QKKy0tCitBTFRFUiBU QUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX2Zr X3JuZzJybmdfZms7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisJQUREIENP TlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19maworCUZPUkVJR04gS0VZIChwYXJlbnRf aWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZworCU9OIERF TEVURSBSRVNUUklDVDsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbNSw1 XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKK0RFTEVURSBGUk9N IHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XSc7CistLSBhIFBLIGRlbGV0ZSB0aGF0 IHN1Y2NlZWRzIGV2ZW4gdGhvdWdoIHRoZSBudW1lcmljIGlkIGlzIHJlZmVyZW5jZWQgYmVj YXVzZSB0aGUgcmFuZ2UgaXNuJ3Q6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVT ICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKSk7CitJTlNF UlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4LTAy LTAxJywgJzIwMTgtMDMtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5n IFZBTFVFUyAoJ1szLDNdJywgdHNyYW5nZSgnMjAxOC0wMS0wNScsICcyMDE4LTAxLTEwJyks ICdbNSw1XScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVd JyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKTsK Ky0tIGEgUEsgZGVsZXRlIHRoYXQgZmFpbHMgYmVjYXVzZSBib3RoIGFyZSByZWZlcmVuY2Vk OgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFs aWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKK0VSUk9SOiAg dXBkYXRlIG9yIGRlbGV0ZSBvbiB0YWJsZSAidGVtcG9yYWxfcm5nIiB2aW9sYXRlcyBmb3Jl aWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9ma19ybmcycm5nX2ZrIiBvbiB0YWJsZSAi dGVtcG9yYWxfZmtfcm5nMnJuZyIKK0RFVEFJTDogIEtleSAoaWQsIHZhbGlkX2F0KT0oWzUs NiksIFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVGh1IEZlYiAwMSAwMDowMDowMCAy MDE4IikpIGlzIHN0aWxsIHJlZmVyZW5jZWQgZnJvbSB0YWJsZSAidGVtcG9yYWxfZmtfcm5n MnJuZyIuCistLSB0aGVuIGRlbGV0ZSB0aGUgb2JqZWN0aW5nIEZLIHJlY29yZCBhbmQgdGhl IHNhbWUgUEsgZGVsZXRlIHN1Y2NlZWRzOgorREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5n MnJuZyBXSEVSRSBpZCA9ICdbMywzXSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hF UkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAn MjAxOC0wMi0wMScpOworLS0KKy0tIHRlc3QgT04gVVBEQVRFL0RFTEVURSBvcHRpb25zCist LQorLS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRlcyBDQVNDQURFCitJTlNFUlQgSU5UTyB0ZW1w b3JhbF9ybmcgVkFMVUVTICgnWzYsNl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEt MDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1s0 LDRdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbNiw2XScpOwor QUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCURST1AgQ09OU1RSQUlOVCB0ZW1w b3JhbF9ma19ybmcycm5nX2ZrLAorCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJy bmdfZmsKKwkJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlS RUZFUkVOQ0VTIHRlbXBvcmFsX3JuZworCQlPTiBERUxFVEUgQ0FTQ0FERSBPTiBVUERBVEUg Q0FTQ0FERTsKK0VSUk9SOiAgYWN0aW9uIG5vdCBzdXBwb3J0ZWQgZm9yIHRlbXBvcmFsIGZv cmVpZ24ga2V5cworLS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRlcyBTRVQgTlVMTAorSU5TRVJU IElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s5LDldJywgdHNyYW5nZSgnMjAxOC0wMS0w MScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBW QUxVRVMgKCdbNiw2XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAn WzksOV0nKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlEUk9QIENPTlNU UkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19maywKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3Jh bF9ma19ybmcycm5nX2ZrCisJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxp ZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcKKwkJT04gREVMRVRFIFNFVCBOVUxM IE9OIFVQREFURSBTRVQgTlVMTDsKK0VSUk9SOiAgYWN0aW9uIG5vdCBzdXBwb3J0ZWQgZm9y IHRlbXBvcmFsIGZvcmVpZ24ga2V5cworLS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRlcyBTRVQg REVGQVVMVAorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1stMSwtMV0nLCB0 c3JhbmdlKG51bGwsIG51bGwpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMg KCdbMTIsMTJdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5T RVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbOCw4XScsIHRzcmFuZ2Uo JzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzEyLDEyXScpOworQUxURVIgVEFCTEUg dGVtcG9yYWxfZmtfcm5nMnJuZworICBBTFRFUiBDT0xVTU4gcGFyZW50X2lkIFNFVCBERUZB VUxUICdbLTEsLTFdJywKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19m aywKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrCisJCUZPUkVJR04g S0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3Jh bF9ybmcKKwkJT04gREVMRVRFIFNFVCBERUZBVUxUIE9OIFVQREFURSBTRVQgREVGQVVMVDsK K0VSUk9SOiAgYWN0aW9uIG5vdCBzdXBwb3J0ZWQgZm9yIHRlbXBvcmFsIGZvcmVpZ24ga2V5 cworLS0gRksgYmV0d2VlbiBwYXJ0aXRpb25lZCB0YWJsZXMKK0NSRUFURSBUQUJMRSB0ZW1w b3JhbF9wYXJ0aXRpb25lZF9ybmcgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCBkYXRl cmFuZ2UsCisgIG5hbWUgdGV4dCwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX3Bhcml0aW9uZWRf cm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKykg UEFSVElUSU9OIEJZIExJU1QgKGlkKTsKK0NSRUFURSBUQUJMRSB0cDEgcGFydGl0aW9uIE9G IHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBGT1IgVkFMVUVTIElOICgnWzEsMV0nLCAnWzMs M10nLCAnWzUsNV0nLCAnWzcsN10nLCAnWzksOV0nLCAnWzExLDExXScpOworQ1JFQVRFIFRB QkxFIHRwMiBwYXJ0aXRpb24gT0YgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIEZPUiBWQUxV RVMgSU4gKCdbMiwyXScsICdbNCw0XScsICdbNiw2XScsICdbOCw4XScsICdbMTAsMTBdJywg J1sxMiwxMl0nKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxV RVMKKyAgKCdbMSwxXScsIGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDAwLTAyLTAxJyks ICdvbmUnKSwKKyAgKCdbMSwxXScsIGRhdGVyYW5nZSgnMjAwMC0wMi0wMScsICcyMDAwLTAz LTAxJyksICdvbmUnKSwKKyAgKCdbMiwyXScsIGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcy MDEwLTAxLTAxJyksICd0d28nKTsKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25l ZF9ma19ybmcycm5nICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgZGF0ZXJhbmdlLAor CXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJ0aXRpb25l ZF9ma19ybmcycm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVS TEFQUyksCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX2Zr IEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNF UyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgKGlkLCBQRVJJT0QgdmFsaWRfYXQpCispIFBB UlRJVElPTiBCWSBMSVNUIChpZCk7CitDUkVBVEUgVEFCTEUgdGZrcDEgcGFydGl0aW9uIE9G IHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgRk9SIFZBTFVFUyBJTiAoJ1sxLDFd JywgJ1szLDNdJywgJ1s1LDVdJywgJ1s3LDddJywgJ1s5LDldJywgJ1sxMSwxMV0nKTsKK0NS RUFURSBUQUJMRSB0ZmtwMiBwYXJ0aXRpb24gT0YgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtf cm5nMnJuZyBGT1IgVkFMVUVTIElOICgnWzIsMl0nLCAnWzQsNF0nLCAnWzYsNl0nLCAnWzgs OF0nLCAnWzEwLDEwXScsICdbMTIsMTJdJyk7CistLSBwYXJ0aXRpb25lZCBGSyBjaGlsZCBp bnNlcnRzCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZB TFVFUworICAoJ1sxLDFdJywgZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIwMDAtMDItMTUn KSwgJ1sxLDFdJyksCisgICgnWzEsMV0nLCBkYXRlcmFuZ2UoJzIwMDEtMDEtMDEnLCAnMjAw Mi0wMS0wMScpLCAnWzIsMl0nKSwKKyAgKCdbMiwyXScsIGRhdGVyYW5nZSgnMjAwMC0wMS0w MScsICcyMDAwLTAyLTE1JyksICdbMSwxXScpOworLS0gc2hvdWxkIGZhaWw6CitJTlNFUlQg SU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUworICAoJ1szLDNd JywgZGF0ZXJhbmdlKCcyMDEwLTAxLTAxJywgJzIwMTAtMDItMTUnKSwgJ1sxLDFdJyk7CitF UlJPUjogIGluc2VydCBvciB1cGRhdGUgb24gdGFibGUgInRma3AxIiB2aW9sYXRlcyBmb3Jl aWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX2Zr IgorREVUQUlMOiAgS2V5IChwYXJlbnRfaWQsIHZhbGlkX2F0KT0oWzEsMiksIFswMS0wMS0y MDEwLDAyLTE1LTIwMTApKSBpcyBub3QgcHJlc2VudCBpbiB0YWJsZSAidGVtcG9yYWxfcGFy dGl0aW9uZWRfcm5nIi4KK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3Ju ZzJybmcgVkFMVUVTCisgICgnWzMsM10nLCBkYXRlcmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAw MC0wMi0xNScpLCAnWzMsM10nKTsKK0VSUk9SOiAgaW5zZXJ0IG9yIHVwZGF0ZSBvbiB0YWJs ZSAidGZrcDEiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBvcmFsX3Bh cnRpdGlvbmVkX2ZrX3JuZzJybmdfZmsiCitERVRBSUw6ICBLZXkgKHBhcmVudF9pZCwgdmFs aWRfYXQpPShbMyw0KSwgWzAxLTAxLTIwMDAsMDItMTUtMjAwMCkpIGlzIG5vdCBwcmVzZW50 IGluIHRhYmxlICJ0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmciLgorLS0gcGFydGl0aW9uZWQg RksgY2hpbGQgdXBkYXRlcworVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJy bmcgU0VUIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIwMDAtMDItMTMn KSBXSEVSRSBpZCA9ICdbMiwyXSc7CistLSBtb3ZlIGEgcm93IGZyb20gdGhlIGZpcnN0IHBh cnRpdGlvbiB0byB0aGUgc2Vjb25kCitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtf cm5nMnJuZyBTRVQgaWQgPSAnWzQsNF0nIFdIRVJFIGlkID0gJ1sxLDFdJzsKKy0tIG1vdmUg YSByb3cgZnJvbSB0aGUgc2Vjb25kIHBhcnRpdGlvbiB0byB0aGUgZmlyc3QKK1VQREFURSB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFNFVCBpZCA9ICdbMSwxXScgV0hFUkUg aWQgPSAnWzQsNF0nOworLS0gc2hvdWxkIGZhaWw6CitVUERBVEUgdGVtcG9yYWxfcGFydGl0 aW9uZWRfZmtfcm5nMnJuZyBTRVQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMDAtMDEtMDEn LCAnMjAwMC0wNC0wMScpIFdIRVJFIGlkID0gJ1sxLDFdJzsKK0VSUk9SOiAgY29uZmxpY3Rp bmcga2V5IHZhbHVlIHZpb2xhdGVzIGV4Y2x1c2lvbiBjb25zdHJhaW50ICJ0ZmtwMV9wa2V5 IgorREVUQUlMOiAgS2V5IChpZCwgdmFsaWRfYXQpPShbMSwyKSwgWzAxLTAxLTIwMDAsMDQt MDEtMjAwMCkpIGNvbmZsaWN0cyB3aXRoIGV4aXN0aW5nIGtleSAoaWQsIHZhbGlkX2F0KT0o WzEsMiksIFswMS0wMS0yMDAwLDA0LTAxLTIwMDApKS4KKy0tIHBhcnRpdGlvbmVkIEZLIHBh cmVudCB1cGRhdGVzIE5PIEFDVElPTgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9u ZWRfcm5nIFZBTFVFUyAoJ1s1LDVdJywgZGF0ZXJhbmdlKCcyMDE2LTAxLTAxJywgJzIwMTYt MDItMDEnKSk7CitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFNFVCB2YWxpZF9h dCA9IGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykgV0hFUkUgaWQgPSAn WzUsNV0nOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAo J1s1LDVdJywgZGF0ZXJhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKSk7CitJTlNF UlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1szLDNd JywgZGF0ZXJhbmdlKCcyMDE4LTAxLTA1JywgJzIwMTgtMDEtMTAnKSwgJ1s1LDVdJyk7CitV UERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFNFVCB2YWxpZF9hdCA9IGRhdGVyYW5n ZSgnMjAxNi0wMi0wMScsICcyMDE2LTAzLTAxJykKKyAgV0hFUkUgaWQgPSAnWzUsNV0nIEFO RCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJyk7Cist LSBzaG91bGQgZmFpbDoKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgU0VUIHZh bGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE2LTAxLTAxJywgJzIwMTYtMDItMDEnKQorICBXSEVS RSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywg JzIwMTgtMDItMDEnKTsKK0VSUk9SOiAgdXBkYXRlIG9yIGRlbGV0ZSBvbiB0YWJsZSAidHAx IiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9wYXJ0aXRpb25l ZF9ma19ybmcycm5nX3BhcmVudF9pZF9ma2V5IiBvbiB0YWJsZSAidGVtcG9yYWxfcGFydGl0 aW9uZWRfZmtfcm5nMnJuZyIKK0RFVEFJTDogIEtleSAoaWQsIHZhbGlkX2F0KT0oWzUsNiks IFswMS0wMS0yMDE4LDAyLTAxLTIwMTgpKSBpcyBzdGlsbCByZWZlcmVuY2VkIGZyb20gdGFi bGUgInRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmciLgorLS0gY2xlYW4gdXA6CitE RUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIHBhcmVu dF9pZCA9ICdbNSw1XSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcg V0hFUkUgaWQgPSAnWzUsNV0nOworLS0gcGFydGl0aW9uZWQgRksgcGFyZW50IGRlbGV0ZXMg Tk8gQUNUSU9OCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVT ICgnWzUsNV0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKK0lO U0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbNSw1XScsIGRh dGVyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJykpOworSU5TRVJUIElOVE8gdGVt cG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMywzXScsIGRhdGVyYW5n ZSgnMjAxOC0wMS0wNScsICcyMDE4LTAxLTEwJyksICdbNSw1XScpOworREVMRVRFIEZST00g dGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRf YXQgPSBkYXRlcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpOworLS0gc2hvdWxk IGZhaWw6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgV0hFUkUgaWQg PSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4 LTAyLTAxJyk7CitFUlJPUjogIHVwZGF0ZSBvciBkZWxldGUgb24gdGFibGUgInRwMSIgdmlv bGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxfcGFydGl0aW9uZWRfZmtf cm5nMnJuZ19wYXJlbnRfaWRfZmtleSIgb24gdGFibGUgInRlbXBvcmFsX3BhcnRpdGlvbmVk X2ZrX3JuZzJybmciCitERVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9hdCk9KFs1LDYpLCBbMDEt MDEtMjAxOCwwMi0wMS0yMDE4KSkgaXMgc3RpbGwgcmVmZXJlbmNlZCBmcm9tIHRhYmxlICJ0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIi4KKy0tIGNsZWFuIHVwOgorREVMRVRF IEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBwYXJlbnRfaWQg PSAnWzUsNV0nOworREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFdIRVJF IGlkID0gJ1s1LDVdJzsKKy0tIHBhcnRpdGlvbmVkIEZLIHBhcmVudCB1cGRhdGVzIFJFU1RS SUNUCitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nCisJRFJP UCBDT05TVFJBSU5UIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfZms7CitBTFRF UiBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nCisJQUREIENPTlNUUkFJ TlQgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19maworCUZPUkVJR04gS0VZIChw YXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX3BhcnRp dGlvbmVkX3JuZworCU9OIERFTEVURSBSRVNUUklDVDsKK0lOU0VSVCBJTlRPIHRlbXBvcmFs X3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbNSw1XScsIGRhdGVyYW5nZSgnMjAxNi0wMS0w MScsICcyMDE2LTAyLTAxJykpOworVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBT RVQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpIFdI RVJFIGlkID0gJ1s1LDVdJzsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3Ju ZyBWQUxVRVMgKCdbNSw1XScsIGRhdGVyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAx JykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxV RVMgKCdbMywzXScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wNScsICcyMDE4LTAxLTEwJyksICdb NSw1XScpOworVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBTRVQgdmFsaWRfYXQg PSBkYXRlcmFuZ2UoJzIwMTYtMDItMDEnLCAnMjAxNi0wMy0wMScpCisgIFdIRVJFIGlkID0g J1s1LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0w My0wMScpOworLS0gc2hvdWxkIGZhaWw6CitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWRf cm5nIFNFVCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAxNi0wMS0wMScsICcyMDE2LTAyLTAx JykKKyAgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAx OC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CitFUlJPUjogIHVwZGF0ZSBvciBkZWxldGUgb24g dGFibGUgInRwMSIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxf cGFydGl0aW9uZWRfZmtfcm5nMnJuZ19wYXJlbnRfaWRfZmtleSIgb24gdGFibGUgInRlbXBv cmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmciCitERVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9h dCk9KFs1LDYpLCBbMDEtMDEtMjAxOCwwMi0wMS0yMDE4KSkgaXMgc3RpbGwgcmVmZXJlbmNl ZCBmcm9tIHRhYmxlICJ0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIi4KKy0tIGNs ZWFuIHVwOgorREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBX SEVSRSBwYXJlbnRfaWQgPSAnWzUsNV0nOworREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0 aW9uZWRfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsKKy0tIHBhcnRpdGlvbmVkIEZLIHBhcmVu dCBkZWxldGVzIFJFU1RSSUNUCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9y bmcgVkFMVUVTICgnWzUsNV0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0w MScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdb NSw1XScsIGRhdGVyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJykpOworSU5TRVJU IElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMywzXScs IGRhdGVyYW5nZSgnMjAxOC0wMS0wNScsICcyMDE4LTAxLTEwJyksICdbNSw1XScpOworREVM RVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBB TkQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpOwor LS0gc2hvdWxkIGZhaWw6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcg V0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAxOC0wMS0w MScsICcyMDE4LTAyLTAxJyk7CitFUlJPUjogIHVwZGF0ZSBvciBkZWxldGUgb24gdGFibGUg InRwMSIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxfcGFydGl0 aW9uZWRfZmtfcm5nMnJuZ19wYXJlbnRfaWRfZmtleSIgb24gdGFibGUgInRlbXBvcmFsX3Bh cnRpdGlvbmVkX2ZrX3JuZzJybmciCitERVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9hdCk9KFs1 LDYpLCBbMDEtMDEtMjAxOCwwMi0wMS0yMDE4KSkgaXMgc3RpbGwgcmVmZXJlbmNlZCBmcm9t IHRhYmxlICJ0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIi4KKy0tIHBhcnRpdGlv bmVkIEZLIHBhcmVudCB1cGRhdGVzIENBU0NBREUKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX3Bh cnRpdGlvbmVkX2ZrX3JuZzJybmcKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0 aW9uZWRfZmtfcm5nMnJuZ19maywKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJ0aXRp b25lZF9ma19ybmcycm5nX2ZrCisJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2 YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcKKwkJT04g REVMRVRFIENBU0NBREUgT04gVVBEQVRFIENBU0NBREU7CitFUlJPUjogIGFjdGlvbiBub3Qg c3VwcG9ydGVkIGZvciB0ZW1wb3JhbCBmb3JlaWduIGtleXMKKy0tIHBhcnRpdGlvbmVkIEZL IHBhcmVudCBkZWxldGVzIENBU0NBREUKKy0tIHBhcnRpdGlvbmVkIEZLIHBhcmVudCB1cGRh dGVzIFNFVCBOVUxMCitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcy cm5nCisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdf ZmssCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19m aworCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVS RU5DRVMgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nCisJCU9OIERFTEVURSBTRVQgTlVMTCBP TiBVUERBVEUgU0VUIE5VTEw7CitFUlJPUjogIGFjdGlvbiBub3Qgc3VwcG9ydGVkIGZvciB0 ZW1wb3JhbCBmb3JlaWduIGtleXMKKy0tIHBhcnRpdGlvbmVkIEZLIHBhcmVudCBkZWxldGVz IFNFVCBOVUxMCistLSBwYXJ0aXRpb25lZCBGSyBwYXJlbnQgdXBkYXRlcyBTRVQgREVGQVVM VAorQUxURVIgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZworICBBTFRF UiBDT0xVTU4gcGFyZW50X2lkIFNFVCBERUZBVUxUICdbLTEsLTFdJywKKwlEUk9QIENPTlNU UkFJTlQgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19maywKKwlBREQgQ09OU1RS QUlOVCB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX2ZrCisJCUZPUkVJR04gS0VZ IChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ybmcKKwkJT04gREVMRVRFIFNFVCBERUZBVUxUIE9OIFVQREFURSBTRVQg REVGQVVMVDsKK0VSUk9SOiAgYWN0aW9uIG5vdCBzdXBwb3J0ZWQgZm9yIHRlbXBvcmFsIGZv cmVpZ24ga2V5cworLS0gcGFydGl0aW9uZWQgRksgcGFyZW50IGRlbGV0ZXMgU0VUIERFRkFV TFQKK0RST1AgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZzsKK0RST1Ag VEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvd2l0aG91dF9vdmVybGFwcy5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3Nx bC93aXRob3V0X292ZXJsYXBzLnNxbAppbmRleCBiZjExNTFhYjQ1Li42MDY1ZWYyNjRjIDEw MDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC93aXRob3V0X292ZXJsYXBzLnNxbAor KysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC93aXRob3V0X292ZXJsYXBzLnNxbApAQCAtMjgw LDMgKzI4MCw0OTEgQEAgU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBPUkRF UiBCWSBpZCwgdmFsaWRfYXQ7CiBTRUxFQ1QgKiBGUk9NIHRwMSBPUkRFUiBCWSBpZCwgdmFs aWRfYXQ7CiBTRUxFQ1QgKiBGUk9NIHRwMiBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CiBEUk9Q IFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkOworCistLQorLS0gdGVzdCBGSyBkZXBlbmRl bmNpZXMKKy0tCisKKy0tIGNhbid0IGRyb3AgYSByYW5nZSByZWZlcmVuY2VkIGJ5IGFuIEZL LCB1bmxlc3Mgd2l0aCBDQVNDQURFCitDUkVBVEUgVEFCTEUgdGVtcG9yYWwzICgKKwlpZCBp bnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsM19w ayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworQ1JF QVRFIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcgKAorCWlkIGludDRyYW5nZSwKKwl2YWxp ZF9hdCB0c3JhbmdlLAorCXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1w b3JhbF9ma19ybmcycm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBP VkVSTEFQUyksCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrIEZPUkVJR04g S0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3Jh bDMgKGlkLCBQRVJJT0QgdmFsaWRfYXQpCispOworQUxURVIgVEFCTEUgdGVtcG9yYWwzIERS T1AgQ09MVU1OIHZhbGlkX2F0OworQUxURVIgVEFCTEUgdGVtcG9yYWwzIERST1AgQ09MVU1O IHZhbGlkX2F0IENBU0NBREU7CitEUk9QIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmc7CitE Uk9QIFRBQkxFIHRlbXBvcmFsMzsKKworLS0KKy0tIHRlc3QgRk9SRUlHTiBLRVksIHJhbmdl IHJlZmVyZW5jZXMgcmFuZ2UKKy0tCisKKy0tIENhbid0IGNyZWF0ZSBhIEZLIHdpdGggYSBt aXNtYXRjaGVkIHJhbmdlIHR5cGUKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5n ICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgaW50NHJhbmdlLAorCXBhcmVudF9pZCBp bnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX3BrMiBQUklNQVJZ IEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpLAorCUNPTlNUUkFJTlQgdGVt cG9yYWxfZmtfcm5nMnJuZ19mazIgRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZh bGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZyAoaWQsIFBFUklPRCB2YWxpZF9h dCkKKyk7CisKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nICgKKwlpZCBpbnQ0 cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5nZSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAorCUNP TlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlk X2F0IFdJVEhPVVQgT1ZFUkxBUFMpLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJu Z19mayBGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVS RU5DRVMgdGVtcG9yYWxfcm5nIChpZCwgUEVSSU9EIHZhbGlkX2F0KQorKTsKK0RST1AgVEFC TEUgdGVtcG9yYWxfZmtfcm5nMnJuZzsKKworLS0gd2l0aCBpbmZlcnJlZCBQSyBvbiB0aGUg cmVmZXJlbmNlZCB0YWJsZToKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nICgK KwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5nZSwKKwlwYXJlbnRfaWQgaW50NHJh bmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19wayBQUklNQVJZIEtFWSAo aWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxf Zmtfcm5nMnJuZ19mayBGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQp CisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nCispOworRFJPUCBUQUJMRSB0ZW1wb3JhbF9m a19ybmcycm5nOworCistLSBzaG91bGQgZmFpbCBiZWNhdXNlIG9mIGR1cGxpY2F0ZSByZWZl cmVuY2VkIGNvbHVtbnM6CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZyAoCisJ aWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UsCisJcGFyZW50X2lkIGludDRyYW5n ZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfcGsgUFJJTUFSWSBLRVkgKGlk LCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2Zr X3JuZzJybmdfZmsgRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHBhcmVudF9pZCkK KwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcgKGlkLCBQRVJJT0QgaWQpCispOworCistLSBU d28gc2NhbGFyIGNvbHVtbnMKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9mazJfcm5nMnJuZyAo CisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UsCisJcGFyZW50X2lkMSBpbnQ0 cmFuZ2UsCisJcGFyZW50X2lkMiBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9m azJfcm5nMnJuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxB UFMpLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmsyX3JuZzJybmdfZmsgRk9SRUlHTiBLRVkg KHBhcmVudF9pZDEsIHBhcmVudF9pZDIsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNF UyB0ZW1wb3JhbF9ybmcyIChpZDEsIGlkMiwgUEVSSU9EIHZhbGlkX2F0KQorKTsKK1xkIHRl bXBvcmFsX2ZrMl9ybmcycm5nCitEUk9QIFRBQkxFIHRlbXBvcmFsX2ZrMl9ybmcycm5nOwor CistLQorLS0gdGVzdCBBTFRFUiBUQUJMRSBBREQgQ09OU1RSQUlOVAorLS0KKworQ1JFQVRF IFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9h dCB0c3JhbmdlLAorCXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3Jh bF9ma19ybmcycm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVS TEFQUykKKyk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisJQUREIENPTlNU UkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQs IFBFUklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZyAoaWQsIFBFUklP RCB2YWxpZF9hdCk7CistLSBUd28gc2NhbGFyIGNvbHVtbnM6CitDUkVBVEUgVEFCTEUgdGVt cG9yYWxfZmsyX3JuZzJybmcgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3Jhbmdl LAorCXBhcmVudF9pZDEgaW50NHJhbmdlLAorCXBhcmVudF9pZDIgaW50NHJhbmdlLAorCUNP TlNUUkFJTlQgdGVtcG9yYWxfZmsyX3JuZzJybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxp ZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrMl9y bmcycm5nCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmsyX3JuZzJybmdfZmsKKwlGT1JF SUdOIEtFWSAocGFyZW50X2lkMSwgcGFyZW50X2lkMiwgUEVSSU9EIHZhbGlkX2F0KQorCVJF RkVSRU5DRVMgdGVtcG9yYWxfcm5nMiAoaWQxLCBpZDIsIFBFUklPRCB2YWxpZF9hdCk7Citc ZCB0ZW1wb3JhbF9mazJfcm5nMnJuZworCistLSB3aXRoIGluZmVycmVkIFBLIG9uIHRoZSBy ZWZlcmVuY2VkIHRhYmxlLCBhbmQgd3JvbmcgY29sdW1uIHR5cGU6CitBTFRFUiBUQUJMRSB0 ZW1wb3JhbF9ma19ybmcycm5nCisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJy bmdfZmssCisJQUxURVIgQ09MVU1OIHZhbGlkX2F0IFRZUEUgZGF0ZXJhbmdlIFVTSU5HIGRh dGVyYW5nZShsb3dlcih2YWxpZF9hdCk6OmRhdGUsIHVwcGVyKHZhbGlkX2F0KTo6ZGF0ZSk7 CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisJQUREIENPTlNUUkFJTlQgdGVt cG9yYWxfZmtfcm5nMnJuZ19maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2 YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZzsKK0FMVEVSIFRBQkxFIHRlbXBv cmFsX2ZrX3JuZzJybmcKKwlBTFRFUiBDT0xVTU4gdmFsaWRfYXQgVFlQRSB0c3JhbmdlIFVT SU5HIHRzcmFuZ2UobG93ZXIodmFsaWRfYXQpLCB1cHBlcih2YWxpZF9hdCkpOworCistLSB3 aXRoIGluZmVycmVkIFBLIG9uIHRoZSByZWZlcmVuY2VkIHRhYmxlOgorQUxURVIgVEFCTEUg dGVtcG9yYWxfZmtfcm5nMnJuZworCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJy bmdfZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJUkVG RVJFTkNFUyB0ZW1wb3JhbF9ybmc7CisKKy0tIHNob3VsZCBmYWlsIGJlY2F1c2Ugb2YgZHVw bGljYXRlIHJlZmVyZW5jZWQgY29sdW1uczoKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3Ju ZzJybmcKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrMgorCUZPUkVJ R04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCBwYXJlbnRfaWQpCisJUkVGRVJFTkNFUyB0ZW1w b3JhbF9ybmcgKGlkLCBQRVJJT0QgaWQpOworCistLQorLS0gdGVzdCB3aXRoIHJvd3MgYWxy ZWFkeQorLS0KKworREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZzsKK0FMVEVSIFRB QkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtf cm5nMnJuZ19mazsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgn WzEsMV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAyJywgJzIwMTgtMDItMDEnKSwgJ1sxLDFdJyk7 CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisJQUREIENPTlNUUkFJTlQgdGVt cG9yYWxfZmtfcm5nMnJuZ19maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2 YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZzsKK0FMVEVSIFRBQkxFIHRlbXBv cmFsX2ZrX3JuZzJybmcKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19m azsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzIsMl0nLCB0 c3JhbmdlKCcyMDE4LTAxLTAyJywgJzIwMTgtMDQtMDEnKSwgJ1sxLDFdJyk7CistLSBzaG91 bGQgZmFpbDoKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlBREQgQ09OU1RS QUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwg UEVSSU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nOworLS0gb2theSBh Z2FpbjoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmc7CitBTFRFUiBUQUJMRSB0 ZW1wb3JhbF9ma19ybmcycm5nCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJu Z19maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZF UkVOQ0VTIHRlbXBvcmFsX3JuZzsKKworLS0KKy0tIHRlc3QgcGdfZ2V0X2NvbnN0cmFpbnRk ZWYKKy0tCisKK1NFTEVDVCBwZ19nZXRfY29uc3RyYWludGRlZihvaWQpIEZST00gcGdfY29u c3RyYWludCBXSEVSRSBjb25uYW1lID0gJ3RlbXBvcmFsX2ZrX3JuZzJybmdfZmsnOworCist LQorLS0gdGVzdCBGSyBjaGlsZCBpbnNlcnRzCistLQorCitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9ma19ybmcycm5nIFZBTFVFUyAoJ1sxLDFdJywgdHNyYW5nZSgnMjAxOC0wMS0wMicsICcy MDE4LTAyLTAxJyksICdbMSwxXScpOworLS0gc2hvdWxkIGZhaWw6CitJTlNFUlQgSU5UTyB0 ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1syLDJdJywgdHNyYW5nZSgnMjAxOC0wMS0w MicsICcyMDE4LTA0LTAxJyksICdbMSwxXScpOworLS0gbm93IGl0IHNob3VsZCB3b3JrOgor SU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1sxLDFdJywgdHNyYW5nZSgnMjAx OC0wMi0wMycsICcyMDE4LTAzLTAzJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5n MnJuZyBWQUxVRVMgKCdbMiwyXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDInLCAnMjAxOC0wNC0w MScpLCAnWzEsMV0nKTsKKworLS0KKy0tIHRlc3QgRksgY2hpbGQgdXBkYXRlcworLS0KKwor VVBEQVRFIHRlbXBvcmFsX2ZrX3JuZzJybmcgU0VUIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAx OC0wMS0wMicsICcyMDE4LTAzLTAxJykgV0hFUkUgaWQgPSAnWzEsMV0nOworLS0gc2hvdWxk IGZhaWw6CitVUERBVEUgdGVtcG9yYWxfZmtfcm5nMnJuZyBTRVQgdmFsaWRfYXQgPSB0c3Jh bmdlKCcyMDE4LTAxLTAyJywgJzIwMTgtMDUtMDEnKSBXSEVSRSBpZCA9ICdbMSwxXSc7CitV UERBVEUgdGVtcG9yYWxfZmtfcm5nMnJuZyBTRVQgcGFyZW50X2lkID0gJ1s4LDhdJyBXSEVS RSBpZCA9ICdbMSwxXSc7CisKKy0tIEFMVEVSIEZLIERFRkVSUkFCTEUKKworQkVHSU47Cisg IElOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMKKyAgICAoJ1s1LDVdJywgdHNyYW5n ZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykpLAorICAgICgnWzUsNV0nLCB0c3Jhbmdl KCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKSk7CisgIElOU0VSVCBJTlRPIHRlbXBvcmFs X2ZrX3JuZzJybmcgVkFMVUVTCisgICAgKCdbMywzXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDUn LCAnMjAxOC0wMS0xMCcpLCAnWzUsNV0nKTsKKyAgQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtf cm5nMnJuZworICAgIEFMVEVSIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19mawor ICAgIERFRkVSUkFCTEUgSU5JVElBTExZIERFRkVSUkVEOworCisgIERFTEVURSBGUk9NIHRl bXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XSc7IC0tc2hvdWxkIG5vdCBmYWlsIHlldC4K K0NPTU1JVDsgLS0gc2hvdWxkIGZhaWwgaGVyZS4KKworLS0KKy0tIHRlc3QgRksgcGFyZW50 IHVwZGF0ZXMgTk8gQUNUSU9OCistLQorCistLSBhIFBLIHVwZGF0ZSB0aGF0IHN1Y2NlZWRz IGJlY2F1c2UgdGhlIG51bWVyaWMgaWQgaXNuJ3QgcmVmZXJlbmNlZDoKK0lOU0VSVCBJTlRP IHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAn MjAxOC0wMi0wMScpKTsKK1VQREFURSB0ZW1wb3JhbF9ybmcgU0VUIHZhbGlkX2F0ID0gdHNy YW5nZSgnMjAxNi0wMS0wMScsICcyMDE2LTAyLTAxJykgV0hFUkUgaWQgPSAnWzUsNV0nOwor LS0gYSBQSyB1cGRhdGUgdGhhdCBzdWNjZWVkcyBldmVuIHRob3VnaCB0aGUgbnVtZXJpYyBp ZCBpcyByZWZlcmVuY2VkIGJlY2F1c2UgdGhlIHJhbmdlIGlzbid0OgorREVMRVRFIEZST00g dGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsKK0lOU0VSVCBJTlRPIHRlbXBvcmFs X3JuZyBWQUxVRVMgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0w MScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbNSw1XScsIHRzcmFu Z2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFs X2ZrX3JuZzJybmcgVkFMVUVTICgnWzMsM10nLCB0c3JhbmdlKCcyMDE4LTAxLTA1JywgJzIw MTgtMDEtMTAnKSwgJ1s1LDVdJyk7CitVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCB2YWxpZF9h dCA9IHRzcmFuZ2UoJzIwMTYtMDItMDEnLCAnMjAxNi0wMy0wMScpCitXSEVSRSBpZCA9ICdb NSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAx Jyk7CistLSBhIFBLIHVwZGF0ZSB0aGF0IGZhaWxzIGJlY2F1c2UgYm90aCBhcmUgcmVmZXJl bmNlZDoKK1VQREFURSB0ZW1wb3JhbF9ybmcgU0VUIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAx Ni0wMS0wMScsICcyMDE2LTAyLTAxJykKK1dIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRf YXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKKy0tIGNoYW5naW5n IHRoZSBzY2FsYXIgcGFydCBmYWlsczoKK1VQREFURSB0ZW1wb3JhbF9ybmcgU0VUIGlkID0g J1s3LDddJworV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIw MTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworLS0gdGhlbiBkZWxldGUgdGhlIG9iamVjdGlu ZyBGSyByZWNvcmQgYW5kIHRoZSBzYW1lIFBLIHVwZGF0ZSBzdWNjZWVkczoKK0RFTEVURSBG Uk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzMsM10nOworVVBEQVRFIHRl bXBvcmFsX3JuZyBTRVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE2LTAxLTAxJywgJzIwMTYt MDItMDEnKQorV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIw MTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworLS0gY2xlYW4gdXA6CitERUxFVEUgRlJPTSB0 ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIHBhcmVudF9pZCA9ICdbNSw1XSc7CitERUxFVEUg RlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nOworCistLQorLS0gdGVzdCBG SyBwYXJlbnQgdXBkYXRlcyBSRVNUUklDVAorLS0KKworQUxURVIgVEFCTEUgdGVtcG9yYWxf Zmtfcm5nMnJuZworCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrOwor QUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCUFERCBDT05TVFJBSU5UIHRlbXBv cmFsX2ZrX3JuZzJybmdfZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFs aWRfYXQpCisJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcKKwlPTiBERUxFVEUgUkVTVFJJQ1Q7 CistLSBhIFBLIHVwZGF0ZSB0aGF0IHN1Y2NlZWRzIGJlY2F1c2UgdGhlIG51bWVyaWMgaWQg aXNuJ3QgcmVmZXJlbmNlZDoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdb NSw1XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKK1VQREFURSB0 ZW1wb3JhbF9ybmcgU0VUIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxNi0wMS0wMScsICcyMDE2 LTAyLTAxJykgV0hFUkUgaWQgPSAnWzUsNV0nOworLS0gYSBQSyB1cGRhdGUgdGhhdCBzdWNj ZWVkcyBldmVuIHRob3VnaCB0aGUgbnVtZXJpYyBpZCBpcyByZWZlcmVuY2VkIGJlY2F1c2Ug dGhlIHJhbmdlIGlzbid0OgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0g J1s1LDVdJzsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbNSw1XScsIHRz cmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBv cmFsX3JuZyBWQUxVRVMgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0w My0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzMs M10nLCB0c3JhbmdlKCcyMDE4LTAxLTA1JywgJzIwMTgtMDEtMTAnKSwgJ1s1LDVdJyk7CitV UERBVEUgdGVtcG9yYWxfcm5nIFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTYtMDItMDEn LCAnMjAxNi0wMy0wMScpCitXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNy YW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJyk7CistLSBhIFBLIHVwZGF0ZSB0aGF0 IGZhaWxzIGJlY2F1c2UgYm90aCBhcmUgcmVmZXJlbmNlZDoKK1VQREFURSB0ZW1wb3JhbF9y bmcgU0VUIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxNi0wMS0wMScsICcyMDE2LTAyLTAxJykK K1dIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAx JywgJzIwMTgtMDItMDEnKTsKKy0tIGNoYW5naW5nIHRoZSBzY2FsYXIgcGFydCBmYWlsczoK K1VQREFURSB0ZW1wb3JhbF9ybmcgU0VUIGlkID0gJ1s3LDddJworV0hFUkUgaWQgPSAnWzUs NV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScp OworLS0gdGhlbiBkZWxldGUgdGhlIG9iamVjdGluZyBGSyByZWNvcmQgYW5kIHRoZSBzYW1l IFBLIHVwZGF0ZSBzdWNjZWVkczoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcg V0hFUkUgaWQgPSAnWzMsM10nOworVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgdmFsaWRfYXQg PSB0c3JhbmdlKCcyMDE2LTAxLTAxJywgJzIwMTYtMDItMDEnKQorV0hFUkUgaWQgPSAnWzUs NV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScp OworLS0gY2xlYW4gdXA6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJF IHBhcmVudF9pZCA9ICdbNSw1XSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUg aWQgPSAnWzUsNV0nOworLS0KKy0tIHRlc3QgRksgcGFyZW50IGRlbGV0ZXMgTk8gQUNUSU9O CistLQorQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCURST1AgQ09OU1RSQUlO VCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrOworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5n MnJuZworCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsKKwlGT1JFSUdO IEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJUkVGRVJFTkNFUyB0ZW1wb3Jh bF9ybmc7CistLSBhIFBLIGRlbGV0ZSB0aGF0IHN1Y2NlZWRzIGJlY2F1c2UgdGhlIG51bWVy aWMgaWQgaXNuJ3QgcmVmZXJlbmNlZDoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxV RVMgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKK0RF TEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XSc7CistLSBhIFBLIGRl bGV0ZSB0aGF0IHN1Y2NlZWRzIGV2ZW4gdGhvdWdoIHRoZSBudW1lcmljIGlkIGlzIHJlZmVy ZW5jZWQgYmVjYXVzZSB0aGUgcmFuZ2UgaXNuJ3Q6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9y bmcgVkFMVUVTICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEn KSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzUsNV0nLCB0c3Jhbmdl KCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9m a19ybmcycm5nIFZBTFVFUyAoJ1szLDNdJywgdHNyYW5nZSgnMjAxOC0wMS0wNScsICcyMDE4 LTAxLTEwJyksICdbNSw1XScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlk ID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgt MDMtMDEnKTsKKy0tIGEgUEsgZGVsZXRlIHRoYXQgZmFpbHMgYmVjYXVzZSBib3RoIGFyZSBy ZWZlcmVuY2VkOgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVd JyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsK Ky0tIHRoZW4gZGVsZXRlIHRoZSBvYmplY3RpbmcgRksgcmVjb3JkIGFuZCB0aGUgc2FtZSBQ SyBkZWxldGUgc3VjY2VlZHM6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdI RVJFIGlkID0gJ1szLDNdJzsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9 ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAy LTAxJyk7CisKKy0tCistLSB0ZXN0IEZLIHBhcmVudCBkZWxldGVzIFJFU1RSSUNUCistLQor CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisJRFJPUCBDT05TVFJBSU5UIHRl bXBvcmFsX2ZrX3JuZzJybmdfZms7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5n CisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19maworCUZPUkVJR04gS0VZ IChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX3Ju ZworCU9OIERFTEVURSBSRVNUUklDVDsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxV RVMgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKK0RF TEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XSc7CistLSBhIFBLIGRl bGV0ZSB0aGF0IHN1Y2NlZWRzIGV2ZW4gdGhvdWdoIHRoZSBudW1lcmljIGlkIGlzIHJlZmVy ZW5jZWQgYmVjYXVzZSB0aGUgcmFuZ2UgaXNuJ3Q6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9y bmcgVkFMVUVTICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEn KSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzUsNV0nLCB0c3Jhbmdl KCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9m a19ybmcycm5nIFZBTFVFUyAoJ1szLDNdJywgdHNyYW5nZSgnMjAxOC0wMS0wNScsICcyMDE4 LTAxLTEwJyksICdbNSw1XScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlk ID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgt MDMtMDEnKTsKKy0tIGEgUEsgZGVsZXRlIHRoYXQgZmFpbHMgYmVjYXVzZSBib3RoIGFyZSBy ZWZlcmVuY2VkOgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVd JyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsK Ky0tIHRoZW4gZGVsZXRlIHRoZSBvYmplY3RpbmcgRksgcmVjb3JkIGFuZCB0aGUgc2FtZSBQ SyBkZWxldGUgc3VjY2VlZHM6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdI RVJFIGlkID0gJ1szLDNdJzsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9 ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAy LTAxJyk7CisKKy0tCistLSB0ZXN0IE9OIFVQREFURS9ERUxFVEUgb3B0aW9ucworLS0KKwor LS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRlcyBDQVNDQURFCitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9ybmcgVkFMVUVTICgnWzYsNl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEt MDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1s0LDRd JywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbNiw2XScpOworQUxU RVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCURST1AgQ09OU1RSQUlOVCB0ZW1wb3Jh bF9ma19ybmcycm5nX2ZrLAorCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdf ZmsKKwkJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZF UkVOQ0VTIHRlbXBvcmFsX3JuZworCQlPTiBERUxFVEUgQ0FTQ0FERSBPTiBVUERBVEUgQ0FT Q0FERTsKKworLS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRlcyBTRVQgTlVMTAorSU5TRVJUIElO VE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s5LDldJywgdHNyYW5nZSgnMjAxOC0wMS0wMScs ICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxV RVMgKCdbNiw2XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzks OV0nKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlEUk9QIENPTlNUUkFJ TlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19maywKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9m a19ybmcycm5nX2ZrCisJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9h dCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcKKwkJT04gREVMRVRFIFNFVCBOVUxMIE9O IFVQREFURSBTRVQgTlVMTDsKKworLS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRlcyBTRVQgREVG QVVMVAorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1stMSwtMV0nLCB0c3Jh bmdlKG51bGwsIG51bGwpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdb MTIsMTJdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJU IElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbOCw4XScsIHRzcmFuZ2UoJzIw MTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzEyLDEyXScpOworQUxURVIgVEFCTEUgdGVt cG9yYWxfZmtfcm5nMnJuZworICBBTFRFUiBDT0xVTU4gcGFyZW50X2lkIFNFVCBERUZBVUxU ICdbLTEsLTFdJywKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19maywK KwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrCisJCUZPUkVJR04gS0VZ IChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9y bmcKKwkJT04gREVMRVRFIFNFVCBERUZBVUxUIE9OIFVQREFURSBTRVQgREVGQVVMVDsKKwor LS0gRksgYmV0d2VlbiBwYXJ0aXRpb25lZCB0YWJsZXMKKworQ1JFQVRFIFRBQkxFIHRlbXBv cmFsX3BhcnRpdGlvbmVkX3JuZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IGRhdGVy YW5nZSwKKyAgbmFtZSB0ZXh0LAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfcGFyaXRpb25lZF9y bmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKSBQ QVJUSVRJT04gQlkgTElTVCAoaWQpOworQ1JFQVRFIFRBQkxFIHRwMSBwYXJ0aXRpb24gT0Yg dGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIEZPUiBWQUxVRVMgSU4gKCdbMSwxXScsICdbMywz XScsICdbNSw1XScsICdbNyw3XScsICdbOSw5XScsICdbMTEsMTFdJyk7CitDUkVBVEUgVEFC TEUgdHAyIHBhcnRpdGlvbiBPRiB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgRk9SIFZBTFVF UyBJTiAoJ1syLDJdJywgJ1s0LDRdJywgJ1s2LDZdJywgJ1s4LDhdJywgJ1sxMCwxMF0nLCAn WzEyLDEyXScpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVF UworICAoJ1sxLDFdJywgZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIwMDAtMDItMDEnKSwg J29uZScpLAorICAoJ1sxLDFdJywgZGF0ZXJhbmdlKCcyMDAwLTAyLTAxJywgJzIwMDAtMDMt MDEnKSwgJ29uZScpLAorICAoJ1syLDJdJywgZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIw MTAtMDEtMDEnKSwgJ3R3bycpOworCitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9u ZWRfZmtfcm5nMnJuZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IGRhdGVyYW5nZSwK KwlwYXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0aW9u ZWRfZmtfcm5nMnJuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZF UkxBUFMpLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19m ayBGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5D RVMgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIChpZCwgUEVSSU9EIHZhbGlkX2F0KQorKSBQ QVJUSVRJT04gQlkgTElTVCAoaWQpOworQ1JFQVRFIFRBQkxFIHRma3AxIHBhcnRpdGlvbiBP RiB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIEZPUiBWQUxVRVMgSU4gKCdbMSwx XScsICdbMywzXScsICdbNSw1XScsICdbNyw3XScsICdbOSw5XScsICdbMTEsMTFdJyk7CitD UkVBVEUgVEFCTEUgdGZrcDIgcGFydGl0aW9uIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2Zr X3JuZzJybmcgRk9SIFZBTFVFUyBJTiAoJ1syLDJdJywgJ1s0LDRdJywgJ1s2LDZdJywgJ1s4 LDhdJywgJ1sxMCwxMF0nLCAnWzEyLDEyXScpOworCistLSBwYXJ0aXRpb25lZCBGSyBjaGls ZCBpbnNlcnRzCisKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJy bmcgVkFMVUVTCisgICgnWzEsMV0nLCBkYXRlcmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAwMC0w Mi0xNScpLCAnWzEsMV0nKSwKKyAgKCdbMSwxXScsIGRhdGVyYW5nZSgnMjAwMS0wMS0wMScs ICcyMDAyLTAxLTAxJyksICdbMiwyXScpLAorICAoJ1syLDJdJywgZGF0ZXJhbmdlKCcyMDAw LTAxLTAxJywgJzIwMDAtMDItMTUnKSwgJ1sxLDFdJyk7CistLSBzaG91bGQgZmFpbDoKK0lO U0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTCisgICgn WzMsM10nLCBkYXRlcmFuZ2UoJzIwMTAtMDEtMDEnLCAnMjAxMC0wMi0xNScpLCAnWzEsMV0n KTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVT CisgICgnWzMsM10nLCBkYXRlcmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAwMC0wMi0xNScpLCAn WzMsM10nKTsKKworLS0gcGFydGl0aW9uZWQgRksgY2hpbGQgdXBkYXRlcworCitVUERBVEUg dGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBTRVQgdmFsaWRfYXQgPSBkYXRlcmFu Z2UoJzIwMDAtMDEtMDEnLCAnMjAwMC0wMi0xMycpIFdIRVJFIGlkID0gJ1syLDJdJzsKKy0t IG1vdmUgYSByb3cgZnJvbSB0aGUgZmlyc3QgcGFydGl0aW9uIHRvIHRoZSBzZWNvbmQKK1VQ REFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFNFVCBpZCA9ICdbNCw0XScg V0hFUkUgaWQgPSAnWzEsMV0nOworLS0gbW92ZSBhIHJvdyBmcm9tIHRoZSBzZWNvbmQgcGFy dGl0aW9uIHRvIHRoZSBmaXJzdAorVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3Ju ZzJybmcgU0VUIGlkID0gJ1sxLDFdJyBXSEVSRSBpZCA9ICdbNCw0XSc7CistLSBzaG91bGQg ZmFpbDoKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFNFVCB2YWxp ZF9hdCA9IGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDAwLTA0LTAxJykgV0hFUkUgaWQg PSAnWzEsMV0nOworCistLSBwYXJ0aXRpb25lZCBGSyBwYXJlbnQgdXBkYXRlcyBOTyBBQ1RJ T04KKworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1s1 LDVdJywgZGF0ZXJhbmdlKCcyMDE2LTAxLTAxJywgJzIwMTYtMDItMDEnKSk7CitVUERBVEUg dGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFNFVCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAx OC0wMS0wMScsICcyMDE4LTAyLTAxJykgV0hFUkUgaWQgPSAnWzUsNV0nOworSU5TRVJUIElO VE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1s1LDVdJywgZGF0ZXJhbmdl KCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1szLDNdJywgZGF0ZXJhbmdlKCcyMDE4 LTAxLTA1JywgJzIwMTgtMDEtMTAnKSwgJ1s1LDVdJyk7CitVUERBVEUgdGVtcG9yYWxfcGFy dGl0aW9uZWRfcm5nIFNFVCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAxNi0wMi0wMScsICcy MDE2LTAzLTAxJykKKyAgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IGRhdGVy YW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJyk7CistLSBzaG91bGQgZmFpbDoKK1VQ REFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgU0VUIHZhbGlkX2F0ID0gZGF0ZXJhbmdl KCcyMDE2LTAxLTAxJywgJzIwMTYtMDItMDEnKQorICBXSEVSRSBpZCA9ICdbNSw1XScgQU5E IHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKKy0t IGNsZWFuIHVwOgorREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJu ZyBXSEVSRSBwYXJlbnRfaWQgPSAnWzUsNV0nOworREVMRVRFIEZST00gdGVtcG9yYWxfcGFy dGl0aW9uZWRfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsKKworLS0gcGFydGl0aW9uZWQgRksg cGFyZW50IGRlbGV0ZXMgTk8gQUNUSU9OCisKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRp dGlvbmVkX3JuZyBWQUxVRVMgKCdbNSw1XScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcy MDE4LTAyLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZB TFVFUyAoJ1s1LDVdJywgZGF0ZXJhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKSk7 CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAo J1szLDNdJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTA1JywgJzIwMTgtMDEtMTAnKSwgJ1s1LDVd Jyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgV0hFUkUgaWQgPSAn WzUsNV0nIEFORCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAz LTAxJyk7CistLSBzaG91bGQgZmFpbDoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlv bmVkX3JuZyBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcy MDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKKy0tIGNsZWFuIHVwOgorREVMRVRFIEZST00g dGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBwYXJlbnRfaWQgPSAnWzUs NV0nOworREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFdIRVJFIGlkID0g J1s1LDVdJzsKKworLS0gcGFydGl0aW9uZWQgRksgcGFyZW50IHVwZGF0ZXMgUkVTVFJJQ1QK KworQUxURVIgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZworCURST1Ag Q09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX2ZrOworQUxURVIg VEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZworCUFERCBDT05TVFJBSU5U IHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfZmsKKwlGT1JFSUdOIEtFWSAocGFy ZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJUkVGRVJFTkNFUyB0ZW1wb3JhbF9wYXJ0aXRp b25lZF9ybmcKKwlPTiBERUxFVEUgUkVTVFJJQ1Q7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzUsNV0nLCBkYXRlcmFuZ2UoJzIwMTYtMDEtMDEn LCAnMjAxNi0wMi0wMScpKTsKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgU0VU IHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKSBXSEVS RSBpZCA9ICdbNSw1XSc7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcg VkFMVUVTICgnWzUsNV0nLCBkYXRlcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScp KTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVT ICgnWzMsM10nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDUnLCAnMjAxOC0wMS0xMCcpLCAnWzUs NV0nKTsKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgU0VUIHZhbGlkX2F0ID0g ZGF0ZXJhbmdlKCcyMDE2LTAyLTAxJywgJzIwMTYtMDMtMDEnKQorICBXSEVSRSBpZCA9ICdb NSw1XScgQU5EIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMt MDEnKTsKKy0tIHNob3VsZCBmYWlsOgorVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3Ju ZyBTRVQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTYtMDEtMDEnLCAnMjAxNi0wMi0wMScp CisgIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTgt MDEtMDEnLCAnMjAxOC0wMi0wMScpOworLS0gY2xlYW4gdXA6CitERUxFVEUgRlJPTSB0ZW1w b3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIHBhcmVudF9pZCA9ICdbNSw1XSc7 CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgV0hFUkUgaWQgPSAnWzUs NV0nOworCistLSBwYXJ0aXRpb25lZCBGSyBwYXJlbnQgZGVsZXRlcyBSRVNUUklDVAorCitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzUsNV0nLCBk YXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKK0lOU0VSVCBJTlRPIHRl bXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbNSw1XScsIGRhdGVyYW5nZSgnMjAx OC0wMi0wMScsICcyMDE4LTAzLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0 aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMywzXScsIGRhdGVyYW5nZSgnMjAxOC0wMS0w NScsICcyMDE4LTAxLTEwJyksICdbNSw1XScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcGFy dGl0aW9uZWRfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRlcmFu Z2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpOworLS0gc2hvdWxkIGZhaWw6CitERUxF VEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFO RCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CisK Ky0tIHBhcnRpdGlvbmVkIEZLIHBhcmVudCB1cGRhdGVzIENBU0NBREUKKworQUxURVIgVEFC TEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZworCURST1AgQ09OU1RSQUlOVCB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX2ZrLAorCUFERCBDT05TVFJBSU5UIHRl bXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfZmsKKwkJRk9SRUlHTiBLRVkgKHBhcmVu dF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3BhcnRpdGlv bmVkX3JuZworCQlPTiBERUxFVEUgQ0FTQ0FERSBPTiBVUERBVEUgQ0FTQ0FERTsKKworLS0g cGFydGl0aW9uZWQgRksgcGFyZW50IGRlbGV0ZXMgQ0FTQ0FERQorCistLSBwYXJ0aXRpb25l ZCBGSyBwYXJlbnQgdXBkYXRlcyBTRVQgTlVMTAorCitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ma19ybmcycm5nCisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX3BhcnRp dGlvbmVkX2ZrX3JuZzJybmdfZmssCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0 aW9uZWRfZmtfcm5nMnJuZ19maworCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0Qg dmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nCisJCU9O IERFTEVURSBTRVQgTlVMTCBPTiBVUERBVEUgU0VUIE5VTEw7CisKKy0tIHBhcnRpdGlvbmVk IEZLIHBhcmVudCBkZWxldGVzIFNFVCBOVUxMCisKKy0tIHBhcnRpdGlvbmVkIEZLIHBhcmVu dCB1cGRhdGVzIFNFVCBERUZBVUxUCisKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlv bmVkX2ZrX3JuZzJybmcKKyAgQUxURVIgQ09MVU1OIHBhcmVudF9pZCBTRVQgREVGQVVMVCAn Wy0xLC0xXScsCisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3Ju ZzJybmdfZmssCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5n MnJuZ19maworCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJ CVJFRkVSRU5DRVMgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nCisJCU9OIERFTEVURSBTRVQg REVGQVVMVCBPTiBVUERBVEUgU0VUIERFRkFVTFQ7CisKKy0tIHBhcnRpdGlvbmVkIEZLIHBh cmVudCBkZWxldGVzIFNFVCBERUZBVUxUCisKK0RST1AgVEFCTEUgdGVtcG9yYWxfcGFydGl0 aW9uZWRfZmtfcm5nMnJuZzsKK0RST1AgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5n OwotLSAKMi40Mi4wCgo= --------------ZGWE1dX84ltsryTlZEe40gG3 Content-Type: text/x-patch; charset=UTF-8; name="v17-0003-Add-UPDATE-DELETE-FOR-PORTION-OF.patch" Content-Disposition: attachment; filename="v17-0003-Add-UPDATE-DELETE-FOR-PORTION-OF.patch" Content-Transfer-Encoding: base64 RnJvbSAzMDgxZmQ4MWYwOGZlZWEwZWFmZjdhYzZkYTY2MmY2MzQ1NDNhYmUwIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IEZyaSwgMjUgSnVuIDIwMjEgMTg6NTQ6MzUgLTA3 MDAKU3ViamVjdDogW1BBVENIIHYxNyAzLzVdIEFkZCBVUERBVEUvREVMRVRFIEZPUiBQT1JU SU9OIE9GCgotIEFkZGVkIGJpc29uIHN1cHBvcnQgZm9yIEZPUiBQT1JUSU9OIE9GIHN5bnRh eC4gVGhlIGJvdW5kcyBtdXN0IGJlCiAgY29uc3RhbnQsIHNvIHdlIGZvcmJpZCBjb2x1bW4g cmVmZXJlbmNlcywgc3VicXVlcmllcywgZXRjLiBCdXQgd2UKICBwZXJtaXQgdGhlIG1hZ2lj IFVOQk9VTkRFRCBrZXl3b3JkIGFzIHRoZSBGUk9NIG9yIHRoZSBUTyAob3IgYm90aCkKICB0 byBwZXJmb3JtIGFuIHVuYm91bmRlZCB1cGRhdGUvZGVsZXRlLiBXZSBhbHNvIGFjY2VwdCBm dW5jdGlvbnMgbGlrZQogIE5PVygpLgotIEFkZGVkIGxvZ2ljIHRvIGV4ZWN1dG9yIHRvIGlu c2VydCBuZXcgcm93cyBmb3IgdGhlICJsZWZ0b3ZlciIgcGFydCBvZgogIGEgcmVjb3JkIHRv dWNoZWQgYnkgYSBGT1IgUE9SVElPTiBPRiBxdWVyeS4KLSBBZGRlZCB0Z190ZW1wb3JhbCBk ZXNjcmlwdG9yIHRvIHRoZSBUcmlnZ2VyRGF0YSBzdHJ1Y3QgdGhhdCB3ZSBwYXNzIHRvCiAg dHJpZ2dlciBmdW5jdGlvbnMuIE91ciB0cmlnZ2VycyB1c2UgdGhpcyB0byBsZWFybiB3aGF0 IGJvdW5kcyB3ZXJlCiAgZ2l2ZW4gaW4gdGhlIEZPUiBQT1JUSU9OIE9GIGNsYXVzZS4KLSBE b2N1bWVudGVkIEZPUiBQT1JUSU9OIE9GLgotIERvY3VtZW50ZWQgdGdfdGVtcG9yYWwgc3Ry dWN0LgotIEFkZGVkIHRlc3RzLgotLS0KIGRvYy9zcmMvc2dtbC9yZWYvZGVsZXRlLnNnbWwg ICAgICAgICAgICAgICAgICB8ICA0NiArKwogZG9jL3NyYy9zZ21sL3JlZi91cGRhdGUuc2dt bCAgICAgICAgICAgICAgICAgIHwgIDQ3ICsrCiBkb2Mvc3JjL3NnbWwvdHJpZ2dlci5zZ21s ICAgICAgICAgICAgICAgICAgICAgfCAgNjAgKystCiBzcmMvYmFja2VuZC9jb21tYW5kcy90 YWJsZWNtZHMuYyAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvY29tbWFuZHMv dHJpZ2dlci5jICAgICAgICAgICAgICAgIHwgIDQ5ICsrCiBzcmMvYmFja2VuZC9leGVjdXRv ci9leGVjTWFpbi5jICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZU1vZGlmeVRhYmxlLmMgICAgICAgIHwgMjI2ICsrKysrKystCiBzcmMvYmFja2Vu ZC9ub2Rlcy9ub2RlRnVuY3MuYyAgICAgICAgICAgICAgICAgfCAgMjQgKwogc3JjL2JhY2tl bmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jICAgICAgIHwgICA4ICstCiBzcmMvYmFj a2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMgICAgICAgICAgfCAgIDEgKwogc3JjL2Jh Y2tlbmQvb3B0aW1pemVyL3V0aWwvcGF0aG5vZGUuYyAgICAgICAgIHwgICA0ICstCiBzcmMv YmFja2VuZC9wYXJzZXIvYW5hbHl6ZS5jICAgICAgICAgICAgICAgICAgfCAyMTEgKysrKysr Ky0KIHNyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgICAgICAgICAgICAgICAgICAgICB8ICA0 NyArLQogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2FnZy5jICAgICAgICAgICAgICAgIHwg IDEwICsKIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9jb2xsYXRlLmMgICAgICAgICAgICB8 ICAgMSArCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jICAgICAgICAgICAgICAg fCAgIDggKwogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2Z1bmMuYyAgICAgICAgICAgICAg IHwgICAzICsKIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9tZXJnZS5jICAgICAgICAgICAg ICB8ICAgMiArLQogc3JjL2JhY2tlbmQvcmV3cml0ZS9yZXdyaXRlSGFuZGxlci5jICAgICAg ICAgIHwgIDQwICsrCiBzcmMvYmFja2VuZC90Y29wL3V0aWxpdHkuYyAgICAgICAgICAgICAg ICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9NYWtlZmlsZSAgICAgICAg ICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC91dGlscy9hZHQvcGVyaW9kLmMgICAgICAg ICAgICAgICAgfCAgNTYgKysKIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9yYW5nZXR5cGVzLmMg ICAgICAgICAgICB8ICA0MiArKwogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JpX3RyaWdnZXJz LmMgICAgICAgICAgIHwgIDc0ICsrKwogc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2Nh Y2hlLmMgICAgICAgICAgIHwgIDUzICsrCiBzcmMvaW5jbHVkZS9jb21tYW5kcy90cmlnZ2Vy LmggICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVz LmggICAgICAgICAgICAgICAgIHwgIDI3ICsKIHNyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9k ZXMuaCAgICAgICAgICAgICAgICB8ICA0NCArLQogc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5v ZGVzLmggICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL25vZGVzL3BsYW5u b2Rlcy5oICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9ub2Rlcy9wcmlt bm9kZXMuaCAgICAgICAgICAgICAgICAgfCAgMjUgKwogc3JjL2luY2x1ZGUvb3B0aW1pemVy L3BhdGhub2RlLmggICAgICAgICAgICAgIHwgICAzICstCiBzcmMvaW5jbHVkZS9wYXJzZXIv YW5hbHl6ZS5oICAgICAgICAgICAgICAgICAgfCAgIDMgKy0KIHNyYy9pbmNsdWRlL3BhcnNl ci9rd2xpc3QuaCAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9wYXJz ZXIvcGFyc2Vfbm9kZS5oICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvdXRp bHMvbHN5c2NhY2hlLmggICAgICAgICAgICAgICAgIHwgICAyICsKIHNyYy9pbmNsdWRlL3V0 aWxzL3BlcmlvZC5oICAgICAgICAgICAgICAgICAgICB8ICAxOSArCiBzcmMvaW5jbHVkZS91 dGlscy9yYW5nZXR5cGVzLmggICAgICAgICAgICAgICAgfCAgIDMgKwogc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9mb3JfcG9ydGlvbl9vZi5vdXQgIHwgNDk4ICsrKysrKysrKysrKysr KysrKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wcml2aWxlZ2VzLm91dCAgICAgIHwg IDE4ICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdXBkYXRhYmxlX3ZpZXdzLm91dCB8 ICAzMiArKwogLi4uL3JlZ3Jlc3MvZXhwZWN0ZWQvd2l0aG91dF9vdmVybGFwcy5vdXQgICAg IHwgMTQ0ICsrKystCiBzcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlICAgICAg ICAgICAgfCAgIDIgKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2Zvcl9wb3J0aW9uX29mLnNx bCAgICAgICB8IDM3MSArKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9wcml2 aWxlZ2VzLnNxbCAgICAgICAgICAgfCAgMTggKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvdXBk YXRhYmxlX3ZpZXdzLnNxbCAgICAgIHwgIDE0ICsKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3dp dGhvdXRfb3ZlcmxhcHMuc3FsICAgICB8ICA5MyArKystCiA0NyBmaWxlcyBjaGFuZ2VkLCAy Mjg3IGluc2VydGlvbnMoKyksIDUxIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0 IHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZXJpb2QuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNy Yy9pbmNsdWRlL3V0aWxzL3BlcmlvZC5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9mb3JfcG9ydGlvbl9vZi5vdXQKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBzcmMvdGVzdC9yZWdyZXNzL3NxbC9mb3JfcG9ydGlvbl9vZi5zcWwKCmRpZmYgLS1naXQg YS9kb2Mvc3JjL3NnbWwvcmVmL2RlbGV0ZS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9kZWxl dGUuc2dtbAppbmRleCAxYjgxYjRlN2Q3Li5jMDkwM2VjMzYxIDEwMDY0NAotLS0gYS9kb2Mv c3JjL3NnbWwvcmVmL2RlbGV0ZS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvZGVsZXRl LnNnbWwKQEAgLTIzLDYgKzIzLDcgQEAgUG9zdGdyZVNRTCBkb2N1bWVudGF0aW9uCiA8c3lu b3BzaXM+CiBbIFdJVEggWyBSRUNVUlNJVkUgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+d2l0aF9xdWVyeTwvcmVwbGFjZWFibGU+IFssIC4uLl0gXQogREVMRVRFIEZST00g WyBPTkxZIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3Jl cGxhY2VhYmxlPiBbICogXSBbIFsgQVMgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+YWxpYXM8L3JlcGxhY2VhYmxlPiBdCisgICAgWyBGT1IgUE9SVElPTiBPRiA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmFuZ2Vfb3JfcGVyaW9kX25hbWU8L3JlcGxhY2Vh YmxlPiBGUk9NIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zdGFydF90aW1lPC9y ZXBsYWNlYWJsZT4gVE8gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmVuZF90aW1l PC9yZXBsYWNlYWJsZT4gXQogICAgIFsgVVNJTkcgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPmZyb21faXRlbTwvcmVwbGFjZWFibGU+IFssIC4uLl0gXQogICAgIFsgV0hFUkUg PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbmRpdGlvbjwvcmVwbGFjZWFibGU+ IHwgV0hFUkUgQ1VSUkVOVCBPRiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y3Vy c29yX25hbWU8L3JlcGxhY2VhYmxlPiBdCiAgICAgWyBSRVRVUk5JTkcgKiB8IDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5vdXRwdXRfZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+ IFsgWyBBUyBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5vdXRwdXRfbmFtZTwv cmVwbGFjZWFibGU+IF0gWywgLi4uXSBdCkBAIC01NCw2ICs1NSwxNSBAQCBERUxFVEUgRlJP TSBbIE9OTFkgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfbmFtZTwv cmVwbGFjZWFibGU+IFsgKgogICAgY2lyY3Vtc3RhbmNlcy4KICAgPC9wYXJhPgogCisgIDxw YXJhPgorICAgSWYgdGhlIHRhYmxlIGhhcyBhIDxsaW5rIGxpbmtlbmQ9ImRkbC1wZXJpb2Rz LWFwcGxpY2F0aW9uLXBlcmlvZHMiPnJhbmdlIGNvbHVtbgorICAgb3IgPGxpdGVyYWw+UEVS SU9EPC9saXRlcmFsPjwvbGluaz4sIHlvdSBtYXkgc3VwcGx5IGEKKyAgIDxsaXRlcmFsPkZP UiBQT1JUSU9OIE9GPC9saXRlcmFsPiBjbGF1c2UsIGFuZCB5b3VyIGRlbGV0ZSB3aWxsIG9u bHkgYWZmZWN0IHJvd3MKKyAgIHRoYXQgb3ZlcmxhcCB0aGUgZ2l2ZW4gaW50ZXJ2YWwuIEZ1 cnRoZXJtb3JlLCBpZiBhIHJvdydzIHNwYW4gZXh0ZW5kcyBvdXRzaWRlCisgICB0aGUgPGxp dGVyYWw+Rk9SIFBPUlRJT04gT0Y8L2xpdGVyYWw+IGJvdW5kcywgdGhlbiBuZXcgcm93cyBz cGFubmluZyB0aGUgImN1dAorICAgb2ZmIiBkdXJhdGlvbiB3aWxsIGJlIGluc2VydGVkIHRv IHByZXNlcnZlIHRoZSBvbGQgdmFsdWVzLgorICA8L3BhcmE+CisKICAgPHBhcmE+CiAgICBU aGUgb3B0aW9uYWwgPGxpdGVyYWw+UkVUVVJOSU5HPC9saXRlcmFsPiBjbGF1c2UgY2F1c2Vz IDxjb21tYW5kPkRFTEVURTwvY29tbWFuZD4KICAgIHRvIGNvbXB1dGUgYW5kIHJldHVybiB2 YWx1ZShzKSBiYXNlZCBvbiBlYWNoIHJvdyBhY3R1YWxseSBkZWxldGVkLgpAQCAtMTE2LDYg KzEyNiw0MiBAQCBERUxFVEUgRlJPTSBbIE9OTFkgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+dGFibGVfbmFtZTwvcmVwbGFjZWFibGU+IFsgKgogICAgIDwvbGlzdGl0ZW0+ CiAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT48 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmFuZ2Vfb3JfcGVyaW9kX25hbWU8L3Jl cGxhY2VhYmxlPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAg VGhlIHJhbmdlIGNvbHVtbiBvciBwZXJpb2QgdG8gdXNlIHdoZW4gcGVyZm9ybWluZyBhIHRl bXBvcmFsIGRlbGV0ZS4gVGhpcworICAgICAgbXVzdCBtYXRjaCB0aGUgcmFuZ2Ugb3IgcGVy aW9kIHVzZWQgaW4gdGhlIHRhYmxlJ3MgdGVtcG9yYWwgcHJpbWFyeSBrZXkuCisgICAgIDwv cGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJs aXN0ZW50cnk+CisgICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnN0 YXJ0X3RpbWU8L3JlcGxhY2VhYmxlPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxw YXJhPgorICAgICAgVGhlIGVhcmxpZXN0IHRpbWUgKGluY2x1c2l2ZSkgdG8gY2hhbmdlIGlu IGEgdGVtcG9yYWwgZGVsZXRlLgorICAgICAgVGhpcyBtdXN0IGJlIGEgdmFsdWUgbWF0Y2hp bmcgdGhlIGJhc2UgdHlwZSBvZiB0aGUgcmFuZ2Ugb3IgcGVyaW9kIGZyb20KKyAgICAgIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yYW5nZV9vcl9wZXJpb2RfbmFtZTwvcmVw bGFjZWFibGU+LiBJdCBtYXkgYWxzbworICAgICAgYmUgdGhlIHNwZWNpYWwgdmFsdWUgPGxp dGVyYWw+TUlOVkFMVUU8L2xpdGVyYWw+IHRvIGluZGljYXRlIGEgZGVsZXRlIHdob3NlCisg ICAgICBiZWdpbm5pbmcgaXMgdW5ib3VuZGVkLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0 aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0 ZXJtPjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5lbmRfdGltZTwvcmVwbGFjZWFi bGU+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBUaGUgbGF0 ZXN0IHRpbWUgKGV4Y2x1c2l2ZSkgdG8gY2hhbmdlIGluIGEgdGVtcG9yYWwgZGVsZXRlLgor ICAgICAgVGhpcyBtdXN0IGJlIGEgdmFsdWUgbWF0Y2hpbmcgdGhlIGJhc2UgdHlwZSBvZiB0 aGUgcmFuZ2Ugb3IgcGVyaW9kIGZyb20KKyAgICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5yYW5nZV9vcl9wZXJpb2RfbmFtZTwvcmVwbGFjZWFibGU+LiBJdCBtYXkgYWxz bworICAgICAgYmUgdGhlIHNwZWNpYWwgdmFsdWUgPGxpdGVyYWw+TUFYVkFMVUU8L2xpdGVy YWw+IHRvIGluZGljYXRlIGEgZGVsZXRlIHdob3NlCisgICAgICBlbmQgaXMgdW5ib3VuZGVk LgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5Pgor CiAgICA8dmFybGlzdGVudHJ5PgogICAgIDx0ZXJtPjxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5mcm9tX2l0ZW08L3JlcGxhY2VhYmxlPjwvdGVybT4KICAgICA8bGlzdGl0ZW0+ CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL3VwZGF0ZS5zZ21sIGIvZG9jL3NyYy9z Z21sL3JlZi91cGRhdGUuc2dtbAppbmRleCAyYWIyNGIwNTIzLi4wNjljYjNjYTVjIDEwMDY0 NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL3VwZGF0ZS5zZ21sCisrKyBiL2RvYy9zcmMvc2dt bC9yZWYvdXBkYXRlLnNnbWwKQEAgLTIzLDYgKzIzLDcgQEAgUG9zdGdyZVNRTCBkb2N1bWVu dGF0aW9uCiA8c3lub3BzaXM+CiBbIFdJVEggWyBSRUNVUlNJVkUgXSA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+d2l0aF9xdWVyeTwvcmVwbGFjZWFibGU+IFssIC4uLl0gXQog VVBEQVRFIFsgT05MWSBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9u YW1lPC9yZXBsYWNlYWJsZT4gWyAqIF0gWyBbIEFTIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPmFsaWFzPC9yZXBsYWNlYWJsZT4gXQorICAgIFsgRk9SIFBPUlRJT04gT0Yg PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJhbmdlX29yX3BlcmlvZF9uYW1lPC9y ZXBsYWNlYWJsZT4gRlJPTSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c3RhcnRf dGltZTwvcmVwbGFjZWFibGU+IFRPIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5l bmRfdGltZTwvcmVwbGFjZWFibGU+IF0KICAgICBTRVQgeyA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiA9IHsgPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPmV4cHJlc3Npb248L3JlcGxhY2VhYmxlPiB8IERFRkFVTFQg fSB8CiAgICAgICAgICAgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1u X25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi5dICkgPSBbIFJPVyBdICggeyA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+ZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+IHwgREVGQVVM VCB9IFssIC4uLl0gKSB8CiAgICAgICAgICAgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi5dICkgPSAoIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zdWItU0VMRUNUPC9yZXBsYWNlYWJsZT4gKQpAQCAt NTEsNiArNTIsMTYgQEAgVVBEQVRFIFsgT05MWSBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4gWyAqIF0gWwogICAgY2lyY3Vtc3Rh bmNlcy4KICAgPC9wYXJhPgogCisgIDxwYXJhPgorICAgSWYgdGhlIHRhYmxlIGhhcyBhIDxs aW5rIGxpbmtlbmQ9ImRkbC1wZXJpb2RzLWFwcGxpY2F0aW9uLXBlcmlvZHMiPnJhbmdlIGNv bHVtbgorICAgb3IgPGxpdGVyYWw+UEVSSU9EPC9saXRlcmFsPjwvbGluaz4sIHlvdSBtYXkg c3VwcGx5IGEKKyAgIDxsaXRlcmFsPkZPUiBQT1JUSU9OIE9GPC9saXRlcmFsPiBjbGF1c2Us IGFuZCB5b3VyIHVwZGF0ZSB3aWxsIG9ubHkgYWZmZWN0IHJvd3MKKyAgIHRoYXQgb3Zlcmxh cCB0aGUgZ2l2ZW4gaW50ZXJ2YWwuIEZ1cnRoZXJtb3JlLCBpZiBhIHJvdydzIHNwYW4gZXh0 ZW5kcyBvdXRzaWRlCisgICB0aGUgPGxpdGVyYWw+Rk9SIFBPUlRJT04gT0Y8L2xpdGVyYWw+ IGJvdW5kcywgdGhlbiBpdCB3aWxsIGJlIHRydW5jYXRlZCB0byBmaXQKKyAgIHdpdGhpbiB0 aGUgYm91bmRzLCBhbmQgbmV3IHJvd3Mgc3Bhbm5pbmcgdGhlICJjdXQgb2ZmIiBkdXJhdGlv biB3aWxsIGJlCisgICBpbnNlcnRlZCB0byBwcmVzZXJ2ZSB0aGUgb2xkIHZhbHVlcy4KKyAg PC9wYXJhPgorCiAgIDxwYXJhPgogICAgVGhlIG9wdGlvbmFsIDxsaXRlcmFsPlJFVFVSTklO RzwvbGl0ZXJhbD4gY2xhdXNlIGNhdXNlcyA8Y29tbWFuZD5VUERBVEU8L2NvbW1hbmQ+CiAg ICB0byBjb21wdXRlIGFuZCByZXR1cm4gdmFsdWUocykgYmFzZWQgb24gZWFjaCByb3cgYWN0 dWFsbHkgdXBkYXRlZC4KQEAgLTExNCw2ICsxMjUsNDIgQEAgVVBEQVRFIFsgT05MWSBdIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4g WyAqIF0gWwogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgPHZh cmxpc3RlbnRyeT4KKyAgICA8dGVybT48cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ cmFuZ2Vfb3JfcGVyaW9kX25hbWU8L3JlcGxhY2VhYmxlPjwvdGVybT4KKyAgICA8bGlzdGl0 ZW0+CisgICAgIDxwYXJhPgorICAgICAgVGhlIHJhbmdlIGNvbHVtbiBvciBwZXJpb2QgdG8g dXNlIHdoZW4gcGVyZm9ybWluZyBhIHRlbXBvcmFsIHVwZGF0ZS4gVGhpcworICAgICAgbXVz dCBtYXRjaCB0aGUgcmFuZ2Ugb3IgcGVyaW9kIHVzZWQgaW4gdGhlIHRhYmxlJ3MgdGVtcG9y YWwgcHJpbWFyeSBrZXkuCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92 YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+PHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnN0YXJ0X3RpbWU8L3JlcGxhY2VhYmxlPjwvdGVybT4K KyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgVGhlIGVhcmxpZXN0IHRpbWUg KGluY2x1c2l2ZSkgdG8gY2hhbmdlIGluIGEgdGVtcG9yYWwgdXBkYXRlLgorICAgICAgVGhp cyBtdXN0IGJlIGEgdmFsdWUgbWF0Y2hpbmcgdGhlIGJhc2UgdHlwZSBvZiB0aGUgcmFuZ2Ug b3IgcGVyaW9kIGZyb20KKyAgICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5y YW5nZV9vcl9wZXJpb2RfbmFtZTwvcmVwbGFjZWFibGU+LiBJdCBtYXkgYWxzbworICAgICAg YmUgdGhlIHNwZWNpYWwgdmFsdWUgPGxpdGVyYWw+TUlOVkFMVUU8L2xpdGVyYWw+IHRvIGlu ZGljYXRlIGFuIHVwZGF0ZSB3aG9zZQorICAgICAgYmVnaW5uaW5nIGlzIHVuYm91bmRlZC4K KyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKwor ICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT48cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+ZW5kX3RpbWU8L3JlcGxhY2VhYmxlPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+Cisg ICAgIDxwYXJhPgorICAgICAgVGhlIGxhdGVzdCB0aW1lIChleGNsdXNpdmUpIHRvIGNoYW5n ZSBpbiBhIHRlbXBvcmFsIHVwZGF0ZS4KKyAgICAgIFRoaXMgbXVzdCBiZSBhIHZhbHVlIG1h dGNoaW5nIHRoZSBiYXNlIHR5cGUgb2YgdGhlIHJhbmdlIG9yIHBlcmlvZCBmcm9tCisgICAg ICA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmFuZ2Vfb3JfcGVyaW9kX25hbWU8 L3JlcGxhY2VhYmxlPi4gSXQgbWF5IGFsc28KKyAgICAgIGJlIHRoZSBzcGVjaWFsIHZhbHVl IDxsaXRlcmFsPk1BWFZBTFVFPC9saXRlcmFsPiB0byBpbmRpY2F0ZSBhbiB1cGRhdGUgd2hv c2UKKyAgICAgIGVuZCBpcyB1bmJvdW5kZWQuCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3Rp dGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgPHRl cm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNl YWJsZT48L3Rlcm0+CiAgICAgPGxpc3RpdGVtPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21s L3RyaWdnZXIuc2dtbCBiL2RvYy9zcmMvc2dtbC90cmlnZ2VyLnNnbWwKaW5kZXggNmUxZjM3 MGIyMS4uYjU4ZTYzNDhhZCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3RyaWdnZXIuc2dt bAorKysgYi9kb2Mvc3JjL3NnbWwvdHJpZ2dlci5zZ21sCkBAIC01MzcsMTcgKzUzNywxOCBA QCBDQUxMRURfQVNfVFJJR0dFUihmY2luZm8pCiA8cHJvZ3JhbWxpc3Rpbmc+CiB0eXBlZGVm IHN0cnVjdCBUcmlnZ2VyRGF0YQogewotICAgIE5vZGVUYWcgICAgICAgICAgdHlwZTsKLSAg ICBUcmlnZ2VyRXZlbnQgICAgIHRnX2V2ZW50OwotICAgIFJlbGF0aW9uICAgICAgICAgdGdf cmVsYXRpb247Ci0gICAgSGVhcFR1cGxlICAgICAgICB0Z190cmlndHVwbGU7Ci0gICAgSGVh cFR1cGxlICAgICAgICB0Z19uZXd0dXBsZTsKLSAgICBUcmlnZ2VyICAgICAgICAgKnRnX3Ry aWdnZXI7Ci0gICAgVHVwbGVUYWJsZVNsb3QgICp0Z190cmlnc2xvdDsKLSAgICBUdXBsZVRh YmxlU2xvdCAgKnRnX25ld3Nsb3Q7Ci0gICAgVHVwbGVzdG9yZXN0YXRlICp0Z19vbGR0YWJs ZTsKLSAgICBUdXBsZXN0b3Jlc3RhdGUgKnRnX25ld3RhYmxlOwotICAgIGNvbnN0IEJpdG1h cHNldCAqdGdfdXBkYXRlZGNvbHM7CisgICAgTm9kZVRhZyAgICAgICAgICAgIHR5cGU7Cisg ICAgVHJpZ2dlckV2ZW50ICAgICAgIHRnX2V2ZW50OworICAgIFJlbGF0aW9uICAgICAgICAg ICB0Z19yZWxhdGlvbjsKKyAgICBIZWFwVHVwbGUgICAgICAgICAgdGdfdHJpZ3R1cGxlOwor ICAgIEhlYXBUdXBsZSAgICAgICAgICB0Z19uZXd0dXBsZTsKKyAgICBUcmlnZ2VyICAgICAg ICAgICAqdGdfdHJpZ2dlcjsKKyAgICBUdXBsZVRhYmxlU2xvdCAgICAqdGdfdHJpZ3Nsb3Q7 CisgICAgVHVwbGVUYWJsZVNsb3QgICAgKnRnX25ld3Nsb3Q7CisgICAgVHVwbGVzdG9yZXN0 YXRlICAgKnRnX29sZHRhYmxlOworICAgIFR1cGxlc3RvcmVzdGF0ZSAgICp0Z19uZXd0YWJs ZTsKKyAgICBjb25zdCBCaXRtYXBzZXQgICAqdGdfdXBkYXRlZGNvbHM7CisgICAgRm9yUG9y dGlvbk9mU3RhdGUgKnRnX3RlbXBvcmFsOwogfSBUcmlnZ2VyRGF0YTsKIDwvcHJvZ3JhbWxp c3Rpbmc+CiAKQEAgLTgxNSw2ICs4MTYsNDMgQEAgdHlwZWRlZiBzdHJ1Y3QgVHJpZ2dlcgog ICAgICAgIDwvcGFyYT4KICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgIDwvdmFybGlzdGVudHJ5 PgorCisgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICA8dGVybT48c3RydWN0ZmllbGQ+dGdf dGVtcG9yYWw8L3N0cnVjdGZpZWxkPjwvdGVybT4KKyAgICAgIDxsaXN0aXRlbT4KKyAgICAg ICA8cGFyYT4KKyAgICAgICAgU2V0IGZvciA8bGl0ZXJhbD5VUERBVEU8L2xpdGVyYWw+IGFu ZCA8bGl0ZXJhbD5ERUxFVEU8L2xpdGVyYWw+IHF1ZXJpZXMKKyAgICAgICAgdGhhdCB1c2Ug PGxpdGVyYWw+Rk9SIFBPUlRJT04gT0Y8L2xpdGVyYWw+LCBvdGhlcndpc2UgPHN5bWJvbD5O VUxMPC9zeW1ib2w+LgorICAgICAgICBDb250YWlucyBhIHBvaW50ZXIgdG8gYSBzdHJ1Y3R1 cmUgb2YgdHlwZQorICAgICAgICA8c3RydWN0bmFtZT5Gb3JQb3J0aW9uT2ZTdGF0ZTwvc3Ry dWN0bmFtZT4sIGRlZmluZWQgaW4KKyAgICAgICAgPGZpbGVuYW1lPm5vZGVzL2V4ZWNub2Rl cy5oPC9maWxlbmFtZT46CisKKzxwcm9ncmFtbGlzdGluZz4KK3R5cGVkZWYgc3RydWN0IEZv clBvcnRpb25PZlN0YXRlCit7CisgICAgTm9kZVRhZyB0eXBlOworCisgICAgY2hhciAgICpm cF9yYW5nZU5hbWU7ICAgICAgIC8qIHRoZSBjb2x1bW4vUEVSSU9EIG5hbWVkIGluIEZPUiBQ T1JUSU9OIE9GICovCisgICAgT2lkICAgICBmcF9yYW5nZVR5cGU7ICAgICAgIC8qIHRoZSB0 eXBlIG9mIHRoZSBGT1IgUE9SVElPTiBPRiBleHByZXNzaW9uICovCisgICAgYm9vbCAgICBm cF9oYXNQZXJpb2Q7ICAgICAgIC8qIHRydWUgaWZmIHRoaXMgaXMgYSBQRVJJT0Qgbm90IGEg cmFuZ2UgKi8KKyAgICBjaGFyICAgKmZwX3BlcmlvZFN0YXJ0TmFtZTsgLyogdGhlIFBFUklP RCdzIHN0YXJ0IGNvbHVtbiAqLworICAgIGNoYXIgICAqZnBfcGVyaW9kRW5kTmFtZTsgICAv KiB0aGUgUEVSSU9EJ3MgZW5kIGNvbHVtbiAqLworICAgIERhdHVtICAgZnBfdGFyZ2V0UmFu Z2U7ICAgICAvKiB0aGUgcmFuZ2UgZnJvbSBGT1IgUE9SVElPTiBPRiAqLworfSBGb3JQb3J0 aW9uT2ZTdGF0ZTsKKzwvcHJvZ3JhbWxpc3Rpbmc+CisKKyAgICAgICB3aGVyZSA8c3RydWN0 ZmllbGQ+ZnBfcmFuZ2VOYW1lPC9zdHJ1Y3RmaWVsZD4gaXMgdGhlIHBlcmlvZCBvciByYW5n ZQorICAgICAgIGNvbHVtbiBuYW1lZCBpbiB0aGUgPGxpdGVyYWw+Rk9SIFBPUlRJT04gT0Y8 L2xpdGVyYWw+IGNsYXVzZSwKKyAgICAgICA8c3RydWN0ZmllbGQ+ZnBfcmFuZ2VUeXBlPC9z dHJ1Y3RmaWVsZD4gaXMgaXRzIHJhbmdlIHR5cGUsCisgICAgICAgPHN0cnVjdGZpZWxkPmZw X2hhc1BlcmlvZDwvc3RydWN0ZmllbGQ+IGluZGljYXRlcyB3aGV0aGVyIGEgcGVyaW9kIHdh cyB1c2VkCisgICAgICAgb3IgYSByYW5nZSBjb2x1bW4sIDxzdHJ1Y3RmaWVsZD5mcF9wZXJp b2RTdGFydE5hbWU8L3N0cnVjdGZpZWxkPiBhbmQKKyAgICAgICA8c3RydWN0ZmllbGQ+ZnBf cGVyaW9kRW5kTmFtZTwvc3RydWN0ZmllbGQ+IGFyZSB0aGUgbmFtZXMgb2YgdGhlIHBlcmlv ZCdzCisgICAgICAgc3RhcnQgYW5kIGVuZCBjb2x1bW5zIChvciA8c3ltYm9sPk5VTEw8L3N5 bWJvbD4gaWYgYSByYW5nZSBjb2x1bW4gd2FzIHVzZWQpLAorICAgICAgIGFuZCA8c3RydWN0 ZmllbGQ+ZnBfdGFyZ2V0UmFuZ2U8L3N0cnVjdGZpZWxkPiBpcyBhIHJhbmdldHlwZSB2YWx1 ZSBjcmVhdGVkCisgICAgICAgYnkgZXZhbHVhdGluZyB0aGUgPGxpdGVyYWw+Rk9SIFBPUlRJ T04gT0Y8L2xpdGVyYWw+IGJvdW5kcy4KKyAgICAgICA8L3BhcmE+CisgICAgICA8L2xpc3Rp dGVtPgorICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICA8L3ZhcmlhYmxlbGlzdD4KICAgIDwv cGFyYT4KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMg Yi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwppbmRleCBjNmNjMDc4MzhhLi5l MzJlMDVlMzA2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMu YworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwpAQCAtMTIyNjYsNiAr MTIyNjYsNyBAQCB2YWxpZGF0ZUZvcmVpZ25LZXlDb25zdHJhaW50KGNoYXIgKmNvbm5hbWUs CiAJCXRyaWdkYXRhLnRnX3RyaWd0dXBsZSA9IEV4ZWNGZXRjaFNsb3RIZWFwVHVwbGUoc2xv dCwgZmFsc2UsIE5VTEwpOwogCQl0cmlnZGF0YS50Z190cmlnc2xvdCA9IHNsb3Q7CiAJCXRy aWdkYXRhLnRnX3RyaWdnZXIgPSAmdHJpZzsKKwkJdHJpZ2RhdGEudGdfdGVtcG9yYWwgPSBO VUxMOwogCiAJCWZjaW5mby0+Y29udGV4dCA9IChOb2RlICopICZ0cmlnZGF0YTsKIApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHJpZ2dlci5jIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvdHJpZ2dlci5jCmluZGV4IDA1NzdiNjA0MTUuLjJmMDU1NTdiMzQgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RyaWdnZXIuYworKysgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy90cmlnZ2VyLmMKQEAgLTU0LDYgKzU0LDcgQEAKICNpbmNsdWRlICJ1dGls cy9hY2wuaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgogI2luY2x1ZGUgInV0aWxz L2J5dGVhLmgiCisjaW5jbHVkZSAidXRpbHMvZGF0dW0uaCIKICNpbmNsdWRlICJ1dGlscy9m bWdyb2lkcy5oIgogI2luY2x1ZGUgInV0aWxzL2d1Y19ob29rcy5oIgogI2luY2x1ZGUgInV0 aWxzL2ludmFsLmgiCkBAIC0yNjM4LDYgKzI2MzksNyBAQCBFeGVjQlNEZWxldGVUcmlnZ2Vy cyhFU3RhdGUgKmVzdGF0ZSwgUmVzdWx0UmVsSW5mbyAqcmVsaW5mbykKIAlMb2NUcmlnZ2Vy RGF0YS50Z19ldmVudCA9IFRSSUdHRVJfRVZFTlRfREVMRVRFIHwKIAkJVFJJR0dFUl9FVkVO VF9CRUZPUkU7CiAJTG9jVHJpZ2dlckRhdGEudGdfcmVsYXRpb24gPSByZWxpbmZvLT5yaV9S ZWxhdGlvbkRlc2M7CisJTG9jVHJpZ2dlckRhdGEudGdfdGVtcG9yYWwgPSByZWxpbmZvLT5y aV9mb3JQb3J0aW9uT2Y7CiAJZm9yIChpID0gMDsgaSA8IHRyaWdkZXNjLT5udW10cmlnZ2Vy czsgaSsrKQogCXsKIAkJVHJpZ2dlciAgICAqdHJpZ2dlciA9ICZ0cmlnZGVzYy0+dHJpZ2dl cnNbaV07CkBAIC0yNzM3LDYgKzI3MzksNyBAQCBFeGVjQlJEZWxldGVUcmlnZ2VycyhFU3Rh dGUgKmVzdGF0ZSwgRVBRU3RhdGUgKmVwcXN0YXRlLAogCQlUUklHR0VSX0VWRU5UX1JPVyB8 CiAJCVRSSUdHRVJfRVZFTlRfQkVGT1JFOwogCUxvY1RyaWdnZXJEYXRhLnRnX3JlbGF0aW9u ID0gcmVsaW5mby0+cmlfUmVsYXRpb25EZXNjOworCUxvY1RyaWdnZXJEYXRhLnRnX3RlbXBv cmFsID0gcmVsaW5mby0+cmlfZm9yUG9ydGlvbk9mOwogCWZvciAoaSA9IDA7IGkgPCB0cmln ZGVzYy0+bnVtdHJpZ2dlcnM7IGkrKykKIAl7CiAJCUhlYXBUdXBsZQluZXd0dXBsZTsKQEAg LTI4MjgsNiArMjgzMSw3IEBAIEV4ZWNJUkRlbGV0ZVRyaWdnZXJzKEVTdGF0ZSAqZXN0YXRl LCBSZXN1bHRSZWxJbmZvICpyZWxpbmZvLAogCQlUUklHR0VSX0VWRU5UX1JPVyB8CiAJCVRS SUdHRVJfRVZFTlRfSU5TVEVBRDsKIAlMb2NUcmlnZ2VyRGF0YS50Z19yZWxhdGlvbiA9IHJl bGluZm8tPnJpX1JlbGF0aW9uRGVzYzsKKwlMb2NUcmlnZ2VyRGF0YS50Z190ZW1wb3JhbCA9 IHJlbGluZm8tPnJpX2ZvclBvcnRpb25PZjsKIAogCUV4ZWNGb3JjZVN0b3JlSGVhcFR1cGxl KHRyaWd0dXBsZSwgc2xvdCwgZmFsc2UpOwogCkBAIC0yODkxLDYgKzI4OTUsNyBAQCBFeGVj QlNVcGRhdGVUcmlnZ2VycyhFU3RhdGUgKmVzdGF0ZSwgUmVzdWx0UmVsSW5mbyAqcmVsaW5m bykKIAkJVFJJR0dFUl9FVkVOVF9CRUZPUkU7CiAJTG9jVHJpZ2dlckRhdGEudGdfcmVsYXRp b24gPSByZWxpbmZvLT5yaV9SZWxhdGlvbkRlc2M7CiAJTG9jVHJpZ2dlckRhdGEudGdfdXBk YXRlZGNvbHMgPSB1cGRhdGVkQ29sczsKKwlMb2NUcmlnZ2VyRGF0YS50Z190ZW1wb3JhbCA9 IHJlbGluZm8tPnJpX2ZvclBvcnRpb25PZjsKIAlmb3IgKGkgPSAwOyBpIDwgdHJpZ2Rlc2Mt Pm51bXRyaWdnZXJzOyBpKyspCiAJewogCQlUcmlnZ2VyICAgICp0cmlnZ2VyID0gJnRyaWdk ZXNjLT50cmlnZ2Vyc1tpXTsKQEAgLTMwMDgsNiArMzAxMyw3IEBAIEV4ZWNCUlVwZGF0ZVRy aWdnZXJzKEVTdGF0ZSAqZXN0YXRlLCBFUFFTdGF0ZSAqZXBxc3RhdGUsCiAJCVRSSUdHRVJf RVZFTlRfUk9XIHwKIAkJVFJJR0dFUl9FVkVOVF9CRUZPUkU7CiAJTG9jVHJpZ2dlckRhdGEu dGdfcmVsYXRpb24gPSByZWxpbmZvLT5yaV9SZWxhdGlvbkRlc2M7CisJTG9jVHJpZ2dlckRh dGEudGdfdGVtcG9yYWwgPSByZWxpbmZvLT5yaV9mb3JQb3J0aW9uT2Y7CiAJdXBkYXRlZENv bHMgPSBFeGVjR2V0QWxsVXBkYXRlZENvbHMocmVsaW5mbywgZXN0YXRlKTsKIAlMb2NUcmln Z2VyRGF0YS50Z191cGRhdGVkY29scyA9IHVwZGF0ZWRDb2xzOwogCWZvciAoaSA9IDA7IGkg PCB0cmlnZGVzYy0+bnVtdHJpZ2dlcnM7IGkrKykKQEAgLTMxNTcsNiArMzE2Myw3IEBAIEV4 ZWNJUlVwZGF0ZVRyaWdnZXJzKEVTdGF0ZSAqZXN0YXRlLCBSZXN1bHRSZWxJbmZvICpyZWxp bmZvLAogCQlUUklHR0VSX0VWRU5UX1JPVyB8CiAJCVRSSUdHRVJfRVZFTlRfSU5TVEVBRDsK IAlMb2NUcmlnZ2VyRGF0YS50Z19yZWxhdGlvbiA9IHJlbGluZm8tPnJpX1JlbGF0aW9uRGVz YzsKKwlMb2NUcmlnZ2VyRGF0YS50Z190ZW1wb3JhbCA9IHJlbGluZm8tPnJpX2ZvclBvcnRp b25PZjsKIAogCUV4ZWNGb3JjZVN0b3JlSGVhcFR1cGxlKHRyaWd0dXBsZSwgb2xkc2xvdCwg ZmFsc2UpOwogCkBAIC0zNjIzLDYgKzM2MzAsNyBAQCB0eXBlZGVmIHN0cnVjdCBBZnRlclRy aWdnZXJTaGFyZWREYXRhCiAJT2lkCQkJYXRzX3Rnb2lkOwkJLyogdGhlIHRyaWdnZXIncyBJ RCAqLwogCU9pZAkJCWF0c19yZWxpZDsJCS8qIHRoZSByZWxhdGlvbiBpdCdzIG9uICovCiAJ Q29tbWFuZElkCWF0c19maXJpbmdfaWQ7CS8qIElEIGZvciBmaXJpbmcgY3ljbGUgKi8KKwlG b3JQb3J0aW9uT2ZTdGF0ZSAqZm9yX3BvcnRpb25fb2Y7CS8qIHRoZSBGT1IgUE9SVElPTiBP RiBjbGF1c2UgKi8KIAlzdHJ1Y3QgQWZ0ZXJUcmlnZ2Vyc1RhYmxlRGF0YSAqYXRzX3RhYmxl OwkvKiB0cmFuc2l0aW9uIHRhYmxlIGFjY2VzcyAqLwogCUJpdG1hcHNldCAgKmF0c19tb2Rp ZmllZGNvbHM7CS8qIG1vZGlmaWVkIGNvbHVtbnMgKi8KIH0gQWZ0ZXJUcmlnZ2VyU2hhcmVk RGF0YTsKQEAgLTM4OTYsNiArMzkwNCw3IEBAIHN0YXRpYyBTZXRDb25zdHJhaW50U3RhdGUg U2V0Q29uc3RyYWludFN0YXRlQ3JlYXRlKGludCBudW1hbGxvYyk7CiBzdGF0aWMgU2V0Q29u c3RyYWludFN0YXRlIFNldENvbnN0cmFpbnRTdGF0ZUNvcHkoU2V0Q29uc3RyYWludFN0YXRl IG9yaWdzdGF0ZSk7CiBzdGF0aWMgU2V0Q29uc3RyYWludFN0YXRlIFNldENvbnN0cmFpbnRT dGF0ZUFkZEl0ZW0oU2V0Q29uc3RyYWludFN0YXRlIHN0YXRlLAogCQkJCQkJCQkJCQkJCU9p ZCB0Z29pZCwgYm9vbCB0Z2lzZGVmZXJyZWQpOworc3RhdGljIEZvclBvcnRpb25PZlN0YXRl ICpDb3B5Rm9yUG9ydGlvbk9mU3RhdGUoRm9yUG9ydGlvbk9mU3RhdGUgKnNyYyk7CiBzdGF0 aWMgdm9pZCBjYW5jZWxfcHJpb3Jfc3RtdF90cmlnZ2VycyhPaWQgcmVsaWQsIENtZFR5cGUg Y21kVHlwZSwgaW50IHRnZXZlbnQpOwogCiAKQEAgLTQxMDUsNiArNDExNCw3IEBAIGFmdGVy VHJpZ2dlckFkZEV2ZW50KEFmdGVyVHJpZ2dlckV2ZW50TGlzdCAqZXZlbnRzLAogCQkJbmV3 c2hhcmVkLT5hdHNfcmVsaWQgPT0gZXZ0c2hhcmVkLT5hdHNfcmVsaWQgJiYKIAkJCW5ld3No YXJlZC0+YXRzX2V2ZW50ID09IGV2dHNoYXJlZC0+YXRzX2V2ZW50ICYmCiAJCQluZXdzaGFy ZWQtPmF0c190YWJsZSA9PSBldnRzaGFyZWQtPmF0c190YWJsZSAmJgorCQkJbmV3c2hhcmVk LT5mb3JfcG9ydGlvbl9vZiA9PSBldnRzaGFyZWQtPmZvcl9wb3J0aW9uX29mICYmCiAJCQlu ZXdzaGFyZWQtPmF0c19maXJpbmdfaWQgPT0gMCkKIAkJCWJyZWFrOwogCX0KQEAgLTQ0Njks NiArNDQ3OSw3IEBAIEFmdGVyVHJpZ2dlckV4ZWN1dGUoRVN0YXRlICplc3RhdGUsCiAJTG9j VHJpZ2dlckRhdGEudGdfcmVsYXRpb24gPSByZWw7CiAJaWYgKFRSSUdHRVJfRk9SX1VQREFU RShMb2NUcmlnZ2VyRGF0YS50Z190cmlnZ2VyLT50Z3R5cGUpKQogCQlMb2NUcmlnZ2VyRGF0 YS50Z191cGRhdGVkY29scyA9IGV2dHNoYXJlZC0+YXRzX21vZGlmaWVkY29sczsKKwlMb2NU cmlnZ2VyRGF0YS50Z190ZW1wb3JhbCA9IGV2dHNoYXJlZC0+Zm9yX3BvcnRpb25fb2Y7CiAK IAlNZW1vcnlDb250ZXh0UmVzZXQocGVyX3R1cGxlX2NvbnRleHQpOwogCkBAIC02MDA1LDYg KzYwMTYsNDMgQEAgQWZ0ZXJUcmlnZ2VyUGVuZGluZ09uUmVsKE9pZCByZWxpZCkKIAlyZXR1 cm4gZmFsc2U7CiB9CiAKKy8qIC0tLS0tLS0tLS0KKyAqIEZvclBvcnRpb25PZlN0YXRlKCkK KyAqCisgKiBDb3BpZXMgYSBGb3JQb3J0aW9uT2ZTdGF0ZSBpbnRvIHRoZSBjdXJyZW50IG1l bW9yeSBjb250ZXh0LgorICovCitzdGF0aWMgRm9yUG9ydGlvbk9mU3RhdGUgKgorQ29weUZv clBvcnRpb25PZlN0YXRlKEZvclBvcnRpb25PZlN0YXRlICpzcmMpCit7CisJRm9yUG9ydGlv bk9mU3RhdGUgKmRzdCA9IE5VTEw7CisJaWYgKHNyYykgeworCQlNZW1vcnlDb250ZXh0IG9s ZGN0eDsKKwkJUmFuZ2VUeXBlICpyOworCQlUeXBlQ2FjaGVFbnRyeSAqdHlwY2FjaGU7CisK KwkJLyoKKwkJICogTmVlZCB0byBsaWZ0IHRoZSBGT1IgUE9SVElPTiBPRiBkZXRhaWxzIGlu dG8gYSBoaWdoZXIgbWVtb3J5IGNvbnRleHQKKwkJICogYmVjYXVzZSBjYXNjYWRpbmcgZm9y ZWlnbiBrZXkgdXBkYXRlL2RlbGV0ZXMgY2FuIGNhdXNlIHRyaWdnZXJzIHRvIGZpcmUKKwkJ ICogdHJpZ2dlcnMsIGFuZCB0aGUgQWZ0ZXJUcmlnZ2VyRXZlbnRzIHdpbGwgb3V0bGl2ZSB0 aGUgRlBPCisJCSAqIGRldGFpbHMgb2YgdGhlIG9yaWdpbmFsIHF1ZXJ5LgorCQkgKi8KKwkJ b2xkY3R4ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKFRvcFRyYW5zYWN0aW9uQ29udGV4dCk7 CisJCWRzdCA9IG1ha2VOb2RlKEZvclBvcnRpb25PZlN0YXRlKTsKKwkJZHN0LT5mcF9yYW5n ZU5hbWUgPSBwc3RyZHVwKHNyYy0+ZnBfcmFuZ2VOYW1lKTsKKwkJZHN0LT5mcF9yYW5nZVR5 cGUgPSBzcmMtPmZwX3JhbmdlVHlwZTsKKwkJZHN0LT5mcF9oYXNQZXJpb2QgPSBzcmMtPmZw X2hhc1BlcmlvZDsKKwkJZHN0LT5mcF9yYW5nZUF0dG5vID0gc3JjLT5mcF9yYW5nZUF0dG5v OworCQlkc3QtPmZwX3BlcmlvZFN0YXJ0QXR0bm8gPSBzcmMtPmZwX3BlcmlvZFN0YXJ0QXR0 bm87CisJCWRzdC0+ZnBfcGVyaW9kRW5kQXR0bm8gPSBzcmMtPmZwX3BlcmlvZEVuZEF0dG5v OworCisJCXIgPSBEYXR1bUdldFJhbmdlVHlwZVAoc3JjLT5mcF90YXJnZXRSYW5nZSk7CisJ CXR5cGNhY2hlID0gbG9va3VwX3R5cGVfY2FjaGUoUmFuZ2VUeXBlR2V0T2lkKHIpLCBUWVBF Q0FDSEVfUkFOR0VfSU5GTyk7CisJCWRzdC0+ZnBfdGFyZ2V0UmFuZ2UgPSBkYXR1bUNvcHko c3JjLT5mcF90YXJnZXRSYW5nZSwgdHlwY2FjaGUtPnR5cGJ5dmFsLCB0eXBjYWNoZS0+dHlw bGVuKTsKKwkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN0eCk7CisJfQorCXJldHVybiBk c3Q7Cit9CisKIC8qIC0tLS0tLS0tLS0KICAqIEFmdGVyVHJpZ2dlclNhdmVFdmVudCgpCiAg KgpAQCAtNjQyMCw2ICs2NDY4LDcgQEAgQWZ0ZXJUcmlnZ2VyU2F2ZUV2ZW50KEVTdGF0ZSAq ZXN0YXRlLCBSZXN1bHRSZWxJbmZvICpyZWxpbmZvLAogCQllbHNlCiAJCQluZXdfc2hhcmVk LmF0c190YWJsZSA9IE5VTEw7CiAJCW5ld19zaGFyZWQuYXRzX21vZGlmaWVkY29scyA9IGFm dGVyVHJpZ2dlckNvcHlCaXRtYXAobW9kaWZpZWRDb2xzKTsKKwkJbmV3X3NoYXJlZC5mb3Jf cG9ydGlvbl9vZiA9IENvcHlGb3JQb3J0aW9uT2ZTdGF0ZShyZWxpbmZvLT5yaV9mb3JQb3J0 aW9uT2YpOwogCiAJCWFmdGVyVHJpZ2dlckFkZEV2ZW50KCZhZnRlclRyaWdnZXJzLnF1ZXJ5 X3N0YWNrW2FmdGVyVHJpZ2dlcnMucXVlcnlfZGVwdGhdLmV2ZW50cywKIAkJCQkJCQkgJm5l d19ldmVudCwgJm5ld19zaGFyZWQpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY01haW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKaW5kZXgg NGM1YTdiYmY2Mi4uNjkwOTZjYmVmYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY01haW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCkBA IC0xMjc0LDYgKzEyNzQsNyBAQCBJbml0UmVzdWx0UmVsSW5mbyhSZXN1bHRSZWxJbmZvICpy ZXN1bHRSZWxJbmZvLAogCXJlc3VsdFJlbEluZm8tPnJpX3Byb2plY3RSZXR1cm5pbmcgPSBO VUxMOwogCXJlc3VsdFJlbEluZm8tPnJpX29uQ29uZmxpY3RBcmJpdGVySW5kZXhlcyA9IE5J TDsKIAlyZXN1bHRSZWxJbmZvLT5yaV9vbkNvbmZsaWN0ID0gTlVMTDsKKwlyZXN1bHRSZWxJ bmZvLT5yaV9mb3JQb3J0aW9uT2YgPSBOVUxMOwogCXJlc3VsdFJlbEluZm8tPnJpX1JldHVy bmluZ1Nsb3QgPSBOVUxMOwogCXJlc3VsdFJlbEluZm8tPnJpX1RyaWdPbGRTbG90ID0gTlVM TDsKIAlyZXN1bHRSZWxJbmZvLT5yaV9UcmlnTmV3U2xvdCA9IE5VTEw7CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jCmluZGV4IDI5OWMyYzc1YmUuLjVlMjM3NGNm YTIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5j CisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jCkBAIC02MSw2 ICs2MSw5IEBACiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGls cy9kYXR1bS5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCisjaW5jbHVkZSAidXRp bHMvcGVyaW9kLmgiCisjaW5jbHVkZSAidXRpbHMvcmFuZ2V0eXBlcy5oIgorI2luY2x1ZGUg InV0aWxzL2xzeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3JlbC5oIgogCiAKQEAgLTE0 MSw2ICsxNDQsMTAgQEAgc3RhdGljIGJvb2wgRXhlY09uQ29uZmxpY3RVcGRhdGUoTW9kaWZ5 VGFibGVDb250ZXh0ICpjb250ZXh0LAogCQkJCQkJCQkgVHVwbGVUYWJsZVNsb3QgKmV4Y2x1 ZGVkU2xvdCwKIAkJCQkJCQkJIGJvb2wgY2FuU2V0VGFnLAogCQkJCQkJCQkgVHVwbGVUYWJs ZVNsb3QgKipyZXR1cm5pbmcpOworc3RhdGljIHZvaWQgRXhlY0ZvclBvcnRpb25PZkxlZnRv dmVycyhNb2RpZnlUYWJsZUNvbnRleHQgKmNvbnRleHQsCisJCQkJCQkJCQkgIEVTdGF0ZSAq ZXN0YXRlLAorCQkJCQkJCQkJICBSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLAorCQkJ CQkJCQkJICBJdGVtUG9pbnRlciB0dXBsZWlkKTsKIHN0YXRpYyBUdXBsZVRhYmxlU2xvdCAq RXhlY1ByZXBhcmVUdXBsZVJvdXRpbmcoTW9kaWZ5VGFibGVTdGF0ZSAqbXRzdGF0ZSwKIAkJ CQkJCQkJCQkJICAgRVN0YXRlICplc3RhdGUsCiAJCQkJCQkJCQkJCSAgIFBhcnRpdGlvblR1 cGxlUm91dGluZyAqcHJvdXRlLApAQCAtMTIwNSw2ICsxMjEyLDE0MiBAQCBFeGVjSW5zZXJ0 KE1vZGlmeVRhYmxlQ29udGV4dCAqY29udGV4dCwKIAlyZXR1cm4gcmVzdWx0OwogfQogCisv KiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgKgkJc2V0X2xlZnRvdmVyX3R1cGxlX2JvdW5kcworICoKKyAqCQlT YXZlcyB0aGUgbmV3IGJvdW5kcyBpbnRvIHRoZSByYW5nZSBhdHRyaWJ1dGUKKyAqIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAqLworc3RhdGljIHZvaWQgc2V0X2xlZnRvdmVyX3R1cGxlX2JvdW5kcyhUdXBs ZVRhYmxlU2xvdCAqbGVmdG92ZXJUdXBsZSwKKwkJCQkJCQkJCSAgRm9yUG9ydGlvbk9mRXhw ciAqZm9yUG9ydGlvbk9mLAorCQkJCQkJCQkJICBUeXBlQ2FjaGVFbnRyeSAqdHlwY2FjaGUs CisJCQkJCQkJCQkgIFJhbmdlVHlwZSAqbGVmdG92ZXJSYW5nZVR5cGUpCit7CisJLyogU3Rv cmUgdGhlIHJhbmdlIGRpcmVjdGx5ICovCisKKwlsZWZ0b3ZlclR1cGxlLT50dHNfdmFsdWVz W2ZvclBvcnRpb25PZi0+cmFuZ2VWYXItPnZhcmF0dG5vIC0gMV0gPSBSYW5nZVR5cGVQR2V0 RGF0dW0obGVmdG92ZXJSYW5nZVR5cGUpOworCWxlZnRvdmVyVHVwbGUtPnR0c19pc251bGxb Zm9yUG9ydGlvbk9mLT5yYW5nZVZhci0+dmFyYXR0bm8gLSAxXSA9IGZhbHNlOworfQorCisv KiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgKgkJRXhlY0ZvclBvcnRpb25PZkxlZnRvdmVycworICoKKyAqCQlJ bnNlcnQgdHVwbGVzIGZvciB0aGUgdW50b3VjaGVkIHRpbWVzdGFtcCBvZiBhIHJvdyBpbiBh IEZPUgorICoJCVBPUlRJT04gT0YgVVBEQVRFL0RFTEVURQorICogLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICov CitzdGF0aWMgdm9pZAorRXhlY0ZvclBvcnRpb25PZkxlZnRvdmVycyhNb2RpZnlUYWJsZUNv bnRleHQgKmNvbnRleHQsCisJCQkJCQkgIEVTdGF0ZSAqZXN0YXRlLAorCQkJCQkJICBSZXN1 bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLAorCQkJCQkJICBJdGVtUG9pbnRlciB0dXBsZWlk KQoreworCU1vZGlmeVRhYmxlU3RhdGUgKm10c3RhdGUgPSBjb250ZXh0LT5tdHN0YXRlOwor CU1vZGlmeVRhYmxlICpub2RlID0gKE1vZGlmeVRhYmxlICopIG10c3RhdGUtPnBzLnBsYW47 CisJRm9yUG9ydGlvbk9mRXhwciAqZm9yUG9ydGlvbk9mID0gKEZvclBvcnRpb25PZkV4cHIg Kikgbm9kZS0+Zm9yUG9ydGlvbk9mOworCURhdHVtIG9sZFJhbmdlOworCVJhbmdlVHlwZSAq b2xkUmFuZ2VUeXBlOworCVJhbmdlVHlwZSAqdGFyZ2V0UmFuZ2VUeXBlOworCVJhbmdlVHlw ZSAqbGVmdG92ZXJSYW5nZVR5cGUxOworCVJhbmdlVHlwZSAqbGVmdG92ZXJSYW5nZVR5cGUy OworCU9pZCByYW5nZVR5cGVPaWQgPSBmb3JQb3J0aW9uT2YtPnJhbmdlVHlwZTsKKwlib29s IGlzTnVsbCA9IGZhbHNlOworCVR5cGVDYWNoZUVudHJ5ICp0eXBjYWNoZTsKKwlGb3JQb3J0 aW9uT2ZTdGF0ZSAqZnBvU3RhdGUgPSByZXN1bHRSZWxJbmZvLT5yaV9mb3JQb3J0aW9uT2Y7 CisJVHVwbGVUYWJsZVNsb3QgKm9sZHR1cGxlU2xvdCA9IGZwb1N0YXRlLT5mcF9FeGlzdGlu ZzsKKwlUdXBsZVRhYmxlU2xvdCAqbGVmdG92ZXJUdXBsZTEgPSBmcG9TdGF0ZS0+ZnBfTGVm dG92ZXIxOworCVR1cGxlVGFibGVTbG90ICpsZWZ0b3ZlclR1cGxlMiA9IGZwb1N0YXRlLT5m cF9MZWZ0b3ZlcjI7CisJSGVhcFR1cGxlIG9sZHR1cGxlID0gTlVMTDsKKwlib29sIHNob3Vs ZEZyZWUgPSBmYWxzZTsKKworCS8qCisJICogR2V0IHRoZSByYW5nZSBvZiB0aGUgb2xkIHBy ZS1VUERBVEUvREVMRVRFIHR1cGxlLAorCSAqIHNvIHdlIGNhbiBpbnRlcnNlY3QgaXQgd2l0 aCB0aGUgRk9SIFBPUlRJT04gT0YgdGFyZ2V0CisJICogYW5kIHNlZSBpZiB0aGVyZSBhcmUg YW55ICJsZWZ0b3ZlcnMiIHRvIGluc2VydC4KKwkgKgorCSAqIFdlIGhhdmUgYWxyZWFkeSBs b2NrZWQgdGhlIHR1cGxlIGluIEV4ZWNVcGRhdGUvRXhlY0RlbGV0ZQorCSAqIChUT0RPOiBp ZiBpdCB3YXMgKm5vdCogY29uY3VycmVudGx5IHVwZGF0ZWQsIGRvZXMgdGFibGVfdHVwbGVf dXBkYXRlIGxvY2sgdGhlIHR1cGxlIGl0c2VsZj8KKwkgKiBJIGRvbid0IGZvdW5kIHRoZSBj b2RlIGZvciB0aGF0IHlldCwgYW5kIG1heWJlIGl0IGRlcGVuZHMgb24gdGhlIEFNPykKKwkg KiBhbmQgaXQgaGFzIHBhc3NlZCBFdmFsUGxhblF1YWwuCisJICogTWFrZSBzdXJlIHdlJ3Jl IGxvb2tpbmcgYXQgdGhlIG1vc3QgcmVjZW50IHZlcnNpb24uCisJICogT3RoZXJ3aXNlIGNv bmN1cnJlbnQgdXBkYXRlcyBvZiB0aGUgc2FtZSB0dXBsZSBpbiBSRUFEIENPTU1JVFRFRAor CSAqIGNvdWxkIGluc2VydCBjb25mbGljdGluZyAibGVmdG92ZXJzIi4KKwkgKi8KKwlpZiAo IXRhYmxlX3R1cGxlX2ZldGNoX3Jvd192ZXJzaW9uKHJlc3VsdFJlbEluZm8tPnJpX1JlbGF0 aW9uRGVzYywgdHVwbGVpZCwgU25hcHNob3RBbnksIG9sZHR1cGxlU2xvdCkpCisJCWVsb2co RVJST1IsICJmYWlsZWQgdG8gZmV0Y2ggdHVwbGUgZm9yIEZPUiBQT1JUSU9OIE9GIik7CisK KwlvbGRSYW5nZSA9IHNsb3RfZ2V0YXR0cihvbGR0dXBsZVNsb3QsIGZvclBvcnRpb25PZi0+ cmFuZ2VWYXItPnZhcmF0dG5vLCAmaXNOdWxsKTsKKworCWlmIChpc051bGwpCisJCWVsb2co RVJST1IsICJmb3VuZCBhIE5VTEwgcmFuZ2UgaW4gYSB0ZW1wb3JhbCB0YWJsZSIpOworCW9s ZFJhbmdlVHlwZSA9IERhdHVtR2V0UmFuZ2VUeXBlUChvbGRSYW5nZSk7CisKKwkvKiBHZXQg dGhlIHRhcmdldCByYW5nZS4gKi8KKworCXRhcmdldFJhbmdlVHlwZSA9IERhdHVtR2V0UmFu Z2VUeXBlUChmcG9TdGF0ZS0+ZnBfdGFyZ2V0UmFuZ2UpOworCisJLyoKKwkgKiBHZXQgdGhl IHJhbmdlJ3MgdHlwZSBjYWNoZSBlbnRyeS4gVGhpcyBpcyB3b3J0aCBjYWNoaW5nIGZvciB0 aGUgd2hvbGUgVVBEQVRFCisJICogbGlrZSByYW5nZSBmdW5jdGlvbnMgZG8uCisJICovCisK Kwl0eXBjYWNoZSA9IGZwb1N0YXRlLT5mcF9yYW5nZXR5cGNhY2hlOworCWlmICh0eXBjYWNo ZSA9PSBOVUxMKQorCXsKKwkJdHlwY2FjaGUgPSBsb29rdXBfdHlwZV9jYWNoZShyYW5nZVR5 cGVPaWQsIFRZUEVDQUNIRV9SQU5HRV9JTkZPKTsKKwkJaWYgKHR5cGNhY2hlLT5ybmdlbGVt dHlwZSA9PSBOVUxMKQorCQkJZWxvZyhFUlJPUiwgInR5cGUgJXUgaXMgbm90IGEgcmFuZ2Ug dHlwZSIsIHJhbmdlVHlwZU9pZCk7CisJCWZwb1N0YXRlLT5mcF9yYW5nZXR5cGNhY2hlID0g dHlwY2FjaGU7CisJfQorCisJLyogR2V0IHRoZSByYW5nZXMgdG8gdGhlIGxlZnQvcmlnaHQg b2YgdGhlIHRhcmdldGVkIHJhbmdlLiAqLworCisJcmFuZ2VfbGVmdG92ZXJfaW50ZXJuYWwo dHlwY2FjaGUsIG9sZFJhbmdlVHlwZSwgdGFyZ2V0UmFuZ2VUeXBlLCAmbGVmdG92ZXJSYW5n ZVR5cGUxLAorCQkJJmxlZnRvdmVyUmFuZ2VUeXBlMik7CisKKwkvKgorCSAqIEluc2VydCBh IGNvcHkgb2YgdGhlIHR1cGxlIHdpdGggdGhlIGxvd2VyIGxlZnRvdmVyIHJhbmdlLgorCSAq IEV2ZW4gaWYgdGhlIHRhYmxlIGlzIHBhcnRpdGlvbmVkLAorCSAqIG91ciBpbnNlcnQgd29u J3QgZXh0ZW5kIHBhc3QgdGhlIGN1cnJlbnQgcm93LCBzbyB3ZSBkb24ndCBuZWVkIHRvIHJl LXJvdXRlLgorCSAqIFRPRE86IFJlYWxseT8gV2hhdCBpZiB5b3UgdXBkYXRlIHRoZSBwYXJ0 aXRpb24ga2V5PworCSAqLworCisJaWYgKCFSYW5nZUlzRW1wdHkobGVmdG92ZXJSYW5nZVR5 cGUxKSkKKwl7CisJCW9sZHR1cGxlID0gRXhlY0ZldGNoU2xvdEhlYXBUdXBsZShvbGR0dXBs ZVNsb3QsIGZhbHNlLCAmc2hvdWxkRnJlZSk7CisJCUV4ZWNGb3JjZVN0b3JlSGVhcFR1cGxl KG9sZHR1cGxlLCBsZWZ0b3ZlclR1cGxlMSwgZmFsc2UpOworCisJCXNldF9sZWZ0b3Zlcl90 dXBsZV9ib3VuZHMobGVmdG92ZXJUdXBsZTEsIGZvclBvcnRpb25PZiwgdHlwY2FjaGUsIGxl ZnRvdmVyUmFuZ2VUeXBlMSk7CisJCUV4ZWNNYXRlcmlhbGl6ZVNsb3QobGVmdG92ZXJUdXBs ZTEpOworCisJCS8vIFRPRE86IE5lZWQgdG8gc2F2ZSBjb250ZXh0LT5tdHN0YXRlLT5tdF90 cmFuc2l0aW9uX2NhcHR1cmU/IChTZWUgY29tbWVudCBvbiBFeGVjSW5zZXJ0KQorCQlFeGVj SW5zZXJ0KGNvbnRleHQsIHJlc3VsdFJlbEluZm8sIGxlZnRvdmVyVHVwbGUxLCBub2RlLT5j YW5TZXRUYWcsIE5VTEwsIE5VTEwpOworCX0KKworCS8qCisJICogSW5zZXJ0IGEgY29weSBv ZiB0aGUgdHVwbGUgd2l0aCB0aGUgdXBwZXIgbGVmdG92ZXIgcmFuZ2UKKwkgKiBFdmVuIGlm IHRoZSB0YWJsZSBpcyBwYXJ0aXRpb25lZCwKKwkgKiBvdXIgaW5zZXJ0IHdvbid0IGV4dGVu ZCBwYXN0IHRoZSBjdXJyZW50IHJvdywgc28gd2UgZG9uJ3QgbmVlZCB0byByZS1yb3V0ZS4K KwkgKiBUT0RPOiBSZWFsbHk/IFdoYXQgaWYgeW91IHVwZGF0ZSB0aGUgcGFydGl0aW9uIGtl eT8KKwkgKi8KKworCWlmICghUmFuZ2VJc0VtcHR5KGxlZnRvdmVyUmFuZ2VUeXBlMikpCisJ eworCQlpZiAoIW9sZHR1cGxlKQorCQkJb2xkdHVwbGUgPSBFeGVjRmV0Y2hTbG90SGVhcFR1 cGxlKG9sZHR1cGxlU2xvdCwgZmFsc2UsICZzaG91bGRGcmVlKTsKKwkJRXhlY0ZvcmNlU3Rv cmVIZWFwVHVwbGUob2xkdHVwbGUsIGxlZnRvdmVyVHVwbGUyLCBmYWxzZSk7CisKKwkJc2V0 X2xlZnRvdmVyX3R1cGxlX2JvdW5kcyhsZWZ0b3ZlclR1cGxlMiwgZm9yUG9ydGlvbk9mLCB0 eXBjYWNoZSwgbGVmdG92ZXJSYW5nZVR5cGUyKTsKKwkJRXhlY01hdGVyaWFsaXplU2xvdChs ZWZ0b3ZlclR1cGxlMik7CisKKwkJLy8gVE9ETzogTmVlZCB0byBzYXZlIGNvbnRleHQtPm10 c3RhdGUtPm10X3RyYW5zaXRpb25fY2FwdHVyZT8gKFNlZSBjb21tZW50IG9uIEV4ZWNJbnNl cnQpCisJCUV4ZWNJbnNlcnQoY29udGV4dCwgcmVzdWx0UmVsSW5mbywgbGVmdG92ZXJUdXBs ZTIsIG5vZGUtPmNhblNldFRhZywgTlVMTCwgTlVMTCk7CisJfQorCisJaWYgKHNob3VsZEZy ZWUpCisJCWhlYXBfZnJlZXR1cGxlKG9sZHR1cGxlKTsKK30KKwogLyogLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog ICoJCUV4ZWNCYXRjaEluc2VydAogICoKQEAgLTEzNTcsNyArMTUwMCw4IEBAIEV4ZWNEZWxl dGVBY3QoTW9kaWZ5VGFibGVDb250ZXh0ICpjb250ZXh0LCBSZXN1bHRSZWxJbmZvICpyZXN1 bHRSZWxJbmZvLAogICoKICAqIENsb3Npbmcgc3RlcHMgb2YgdHVwbGUgZGVsZXRpb247IHRo aXMgaW52b2tlcyBBRlRFUiBGT1IgRUFDSCBST1cgdHJpZ2dlcnMsCiAgKiBpbmNsdWRpbmcg dGhlIFVQREFURSB0cmlnZ2VycyBpZiB0aGUgZGVsZXRpb24gaXMgYmVpbmcgZG9uZSBhcyBw YXJ0IG9mIGEKLSAqIGNyb3NzLXBhcnRpdGlvbiB0dXBsZSBtb3ZlLgorICogY3Jvc3MtcGFy dGl0aW9uIHR1cGxlIG1vdmUuIEl0IGFsc28gaW5zZXJ0cyBsZWZ0b3ZlcnMgZnJvbSBhIEZP UiBQT1JUSU9OIE9GCisgKiBkZWxldGUuCiAgKi8KIHN0YXRpYyB2b2lkCiBFeGVjRGVsZXRl RXBpbG9ndWUoTW9kaWZ5VGFibGVDb250ZXh0ICpjb250ZXh0LCBSZXN1bHRSZWxJbmZvICpy ZXN1bHRSZWxJbmZvLApAQCAtMTM5MCw2ICsxNTM0LDExIEBAIEV4ZWNEZWxldGVFcGlsb2d1 ZShNb2RpZnlUYWJsZUNvbnRleHQgKmNvbnRleHQsIFJlc3VsdFJlbEluZm8gKnJlc3VsdFJl bEluZm8sCiAJCWFyX2RlbGV0ZV90cmlnX3RjcyA9IE5VTEw7CiAJfQogCisJLyogQ29tcHV0 ZSBsZWZ0b3ZlcnMgaW4gRk9SIFBPUlRJT04gT0YgKi8KKwkvLyBUT0RPOiBTa2lwIHRoaXMg Zm9yIEZEVyBkZWxldGVzPworCWlmICgoKE1vZGlmeVRhYmxlICopIGNvbnRleHQtPm10c3Rh dGUtPnBzLnBsYW4pLT5mb3JQb3J0aW9uT2YpCisJCUV4ZWNGb3JQb3J0aW9uT2ZMZWZ0b3Zl cnMoY29udGV4dCwgZXN0YXRlLCByZXN1bHRSZWxJbmZvLCB0dXBsZWlkKTsKKwogCS8qIEFG VEVSIFJPVyBERUxFVEUgVHJpZ2dlcnMgKi8KIAlFeGVjQVJEZWxldGVUcmlnZ2Vycyhlc3Rh dGUsIHJlc3VsdFJlbEluZm8sIHR1cGxlaWQsIG9sZHR1cGxlLAogCQkJCQkJIGFyX2RlbGV0 ZV90cmlnX3RjcywgY2hhbmdpbmdQYXJ0KTsKQEAgLTIxMzMsNiArMjI4MiwxMSBAQCBFeGVj VXBkYXRlRXBpbG9ndWUoTW9kaWZ5VGFibGVDb250ZXh0ICpjb250ZXh0LCBVcGRhdGVDb250 ZXh0ICp1cGRhdGVDeHQsCiAJCQkJCQkJCQkJCSAgIE5VTEwsIE5JTCwKIAkJCQkJCQkJCQkJ ICAgKHVwZGF0ZUN4dC0+dXBkYXRlSW5kZXhlcyA9PSBUVV9TdW1tYXJpemluZykpOwogCisJ LyogQ29tcHV0ZSBsZWZ0b3ZlcnMgaW4gRk9SIFBPUlRJT04gT0YgKi8KKwkvLyBUT0RPOiBT a2lwIHRoaXMgZm9yIEZEVyB1cGRhdGVzPworCWlmICgoKE1vZGlmeVRhYmxlICopIGNvbnRl eHQtPm10c3RhdGUtPnBzLnBsYW4pLT5mb3JQb3J0aW9uT2YpCisJCUV4ZWNGb3JQb3J0aW9u T2ZMZWZ0b3ZlcnMoY29udGV4dCwgY29udGV4dC0+ZXN0YXRlLCByZXN1bHRSZWxJbmZvLCB0 dXBsZWlkKTsKKwogCS8qIEFGVEVSIFJPVyBVUERBVEUgVHJpZ2dlcnMgKi8KIAlFeGVjQVJV cGRhdGVUcmlnZ2Vycyhjb250ZXh0LT5lc3RhdGUsIHJlc3VsdFJlbEluZm8sCiAJCQkJCQkg TlVMTCwgTlVMTCwKQEAgLTM2MTAsNiArMzc2NCw3IEBAIEV4ZWNNb2RpZnlUYWJsZShQbGFu U3RhdGUgKnBzdGF0ZSkKIAkJICogUmVzZXQgcGVyLXR1cGxlIG1lbW9yeSBjb250ZXh0IHVz ZWQgZm9yIHByb2Nlc3Npbmcgb24gY29uZmxpY3QgYW5kCiAJCSAqIHJldHVybmluZyBjbGF1 c2VzLCB0byBmcmVlIGFueSBleHByZXNzaW9uIGV2YWx1YXRpb24gc3RvcmFnZQogCQkgKiBh bGxvY2F0ZWQgaW4gdGhlIHByZXZpb3VzIGN5Y2xlLgorCQkgKiBUT0RPOiBJdCBzb3VuZHMg bGlrZSBGT1IgUE9SVElPTiBPRiBtaWdodCBuZWVkIHRvIGRvIHNvbWV0aGluZyBoZXJlIHRv bz8KIAkJICovCiAJCWlmIChwc3RhdGUtPnBzX0V4cHJDb250ZXh0KQogCQkJUmVzZXRFeHBy Q29udGV4dChwc3RhdGUtPnBzX0V4cHJDb250ZXh0KTsKQEAgLTQyODMsNiArNDQzOCw3NSBA QCBFeGVjSW5pdE1vZGlmeVRhYmxlKE1vZGlmeVRhYmxlICpub2RlLCBFU3RhdGUgKmVzdGF0 ZSwgaW50IGVmbGFncykKIAkJfQogCX0KIAorCS8qCisJICogSWYgbmVlZGVkLCBpbml0aWFs aXplIHRoZSB0YXJnZXQgcmFuZ2UgZm9yIEZPUiBQT1JUSU9OIE9GLgorCSAqLworCWlmIChu b2RlLT5mb3JQb3J0aW9uT2YpCisJeworCQlUdXBsZURlc2MgdHVwRGVzYzsKKwkJRm9yUG9y dGlvbk9mRXhwciAqZm9yUG9ydGlvbk9mOworCQlEYXR1bQl0YXJnZXRSYW5nZTsKKwkJYm9v bAlpc051bGw7CisJCUV4cHJDb250ZXh0ICplY29udGV4dDsKKwkJRXhwclN0YXRlICpleHBy U3RhdGU7CisJCUZvclBvcnRpb25PZlN0YXRlICpmcG9TdGF0ZTsKKworCQlyZXN1bHRSZWxJ bmZvID0gbXRzdGF0ZS0+cmVzdWx0UmVsSW5mbzsKKwkJdHVwRGVzYyA9IHJlc3VsdFJlbElu Zm8tPnJpX1JlbGF0aW9uRGVzYy0+cmRfYXR0OworCQlmb3JQb3J0aW9uT2YgPSAoRm9yUG9y dGlvbk9mRXhwciAqKSBub2RlLT5mb3JQb3J0aW9uT2Y7CisKKwkJLyogRXZhbCB0aGUgRk9S IFBPUlRJT04gT0YgdGFyZ2V0ICovCisJCWlmIChtdHN0YXRlLT5wcy5wc19FeHByQ29udGV4 dCA9PSBOVUxMKQorCQkJRXhlY0Fzc2lnbkV4cHJDb250ZXh0KGVzdGF0ZSwgJm10c3RhdGUt PnBzKTsKKwkJZWNvbnRleHQgPSBtdHN0YXRlLT5wcy5wc19FeHByQ29udGV4dDsKKworCQll eHByU3RhdGUgPSBFeGVjUHJlcGFyZUV4cHIoKEV4cHIgKikgZm9yUG9ydGlvbk9mLT50YXJn ZXRSYW5nZSwgZXN0YXRlKTsKKwkJdGFyZ2V0UmFuZ2UgPSBFeGVjRXZhbEV4cHIoZXhwclN0 YXRlLCBlY29udGV4dCwgJmlzTnVsbCk7CisJCWlmIChpc051bGwpCisJCQllbG9nKEVSUk9S LCAiR290IGEgTlVMTCBGT1IgUE9SVElPTiBPRiB0YXJnZXQgcmFuZ2UiKTsKKworCQkvKiBD cmVhdGUgc3RhdGUgZm9yIEZPUiBQT1JUSU9OIE9GIG9wZXJhdGlvbiAqLworCisJCWZwb1N0 YXRlID0gbWFrZU5vZGUoRm9yUG9ydGlvbk9mU3RhdGUpOworCQlmcG9TdGF0ZS0+ZnBfcmFu Z2VOYW1lID0gZm9yUG9ydGlvbk9mLT5yYW5nZV9uYW1lOworCQlmcG9TdGF0ZS0+ZnBfcmFu Z2VUeXBlID0gZm9yUG9ydGlvbk9mLT5yYW5nZVR5cGU7CisJCWZwb1N0YXRlLT5mcF9yYW5n ZUF0dG5vID0gZm9yUG9ydGlvbk9mLT5yYW5nZVZhci0+dmFyYXR0bm87CisJCWZwb1N0YXRl LT5mcF90YXJnZXRSYW5nZSA9IHRhcmdldFJhbmdlOworCisJCS8qIEluaXRpYWxpemUgc2xv dCBmb3IgdGhlIGV4aXN0aW5nIHR1cGxlICovCisKKwkJZnBvU3RhdGUtPmZwX0V4aXN0aW5n ID0KKwkJCXRhYmxlX3Nsb3RfY3JlYXRlKHJlc3VsdFJlbEluZm8tPnJpX1JlbGF0aW9uRGVz YywKKwkJCQkJCQkgICZtdHN0YXRlLT5wcy5zdGF0ZS0+ZXNfdHVwbGVUYWJsZSk7CisKKwkJ LyogQ3JlYXRlIHRoZSB0dXBsZSBzbG90cyBmb3IgSU5TRVJUaW5nIHRoZSBsZWZ0b3ZlcnMg Ki8KKworCQlmcG9TdGF0ZS0+ZnBfTGVmdG92ZXIxID0KKwkJCUV4ZWNJbml0RXh0cmFUdXBs ZVNsb3QobXRzdGF0ZS0+cHMuc3RhdGUsIHR1cERlc2MsICZUVFNPcHNWaXJ0dWFsKTsKKwkJ ZnBvU3RhdGUtPmZwX0xlZnRvdmVyMiA9CisJCQlFeGVjSW5pdEV4dHJhVHVwbGVTbG90KG10 c3RhdGUtPnBzLnN0YXRlLCB0dXBEZXNjLCAmVFRTT3BzVmlydHVhbCk7CisKKwkJLyoKKwkJ ICogV2UgbXVzdCBhdHRhY2ggdGhlIEZvclBvcnRpb25PZlN0YXRlIHRvIGFsbCByZXN1bHQg cmVscywKKwkJICogaW4gY2FzZSBvZiBhIGNyb3NzLXBhcnRpdGlvbiB1cGRhdGUgb3IgdHJp Z2dlcnMgZmlyaW5nCisJCSAqIG9uIHBhcnRpdGlvbnMuCisJCSAqCisJCSAqIFRoZXkgc2hv dWxkIGFsbCBoYXZlIHRoZSBzYW1lIHR1cGxlZGVzYywgc28gaXQncyBva2F5CisJCSAqIHRo YXQgYW55IG9uZSBvZiB0aGVtIGNhbiB1c2UgdGhlIHR1cGxlIHRhYmxlIHNsb3RzIHRoZXJl LgorCQkgKi8KKwkJZm9yIChpID0gMDsgaSA8IG5yZWxzOyBpKyspCisJCXsKKwkJCXJlc3Vs dFJlbEluZm8gPSAmbXRzdGF0ZS0+cmVzdWx0UmVsSW5mb1tpXTsKKwkJCXJlc3VsdFJlbElu Zm8tPnJpX2ZvclBvcnRpb25PZiA9IGZwb1N0YXRlOworCQl9CisKKwkJLyogTWFrZSBzdXJl IHRoZSByb290IHJlbGF0aW9uIGhhcyB0aGUgRk9SIFBPUlRJT04gT0YgY2xhdXNlIHRvby4g Ki8KKwkJaWYgKG5vZGUtPnJvb3RSZWxhdGlvbiA+IDApCisJCQltdHN0YXRlLT5yb290UmVz dWx0UmVsSW5mby0+cmlfZm9yUG9ydGlvbk9mID0gZnBvU3RhdGU7CisKKwkJLyogRG9uJ3Qg ZnJlZSB0aGUgRXhwckNvbnRleHQgaGVyZSBiZWNhdXNlIHRoZSByZXN1bHQgbXVzdCBsYXN0 IGZvciB0aGUgd2hvbGUgcXVlcnkgKi8KKwl9CisKIAkvKgogCSAqIElmIHdlIGhhdmUgYW55 IHNlY29uZGFyeSByZWxhdGlvbnMgaW4gYW4gVVBEQVRFIG9yIERFTEVURSwgdGhleSBuZWVk IHRvCiAJICogYmUgdHJlYXRlZCBsaWtlIG5vbi1sb2NrZWQgcmVsYXRpb25zIGluIFNFTEVD VCBGT1IgVVBEQVRFLCBpLmUuLCB0aGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVz L25vZGVGdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMKaW5kZXggYzAz ZjRmMjNlMi4uNjJjY2JmOWQzYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvbm9k ZUZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMKQEAgLTI0NDIs NiArMjQ0MiwxNCBAQCBleHByZXNzaW9uX3RyZWVfd2Fsa2VyX2ltcGwoTm9kZSAqbm9kZSwK IAkJCQkJcmV0dXJuIHRydWU7CiAJCQl9CiAJCQlicmVhazsKKwkJY2FzZSBUX0ZvclBvcnRp b25PZkV4cHI6CisJCQl7CisJCQkJRm9yUG9ydGlvbk9mRXhwciAqZm9yUG9ydGlvbk9mID0g KEZvclBvcnRpb25PZkV4cHIgKikgbm9kZTsKKworCQkJCWlmIChXQUxLKGZvclBvcnRpb25P Zi0+dGFyZ2V0UmFuZ2UpKQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCX0KKwkJCWJyZWFrOwog CQljYXNlIFRfUGFydGl0aW9uUHJ1bmVTdGVwT3A6CiAJCQl7CiAJCQkJUGFydGl0aW9uUHJ1 bmVTdGVwT3AgKm9wc3RlcCA9IChQYXJ0aXRpb25QcnVuZVN0ZXBPcCAqKSBub2RlOwpAQCAt MjU4Miw2ICsyNTkwLDggQEAgcXVlcnlfdHJlZV93YWxrZXJfaW1wbChRdWVyeSAqcXVlcnks CiAJCXJldHVybiB0cnVlOwogCWlmIChXQUxLKHF1ZXJ5LT5tZXJnZUFjdGlvbkxpc3QpKQog CQlyZXR1cm4gdHJ1ZTsKKwlpZiAoV0FMSyhxdWVyeS0+Zm9yUG9ydGlvbk9mKSkKKwkJcmV0 dXJuIHRydWU7CiAJaWYgKFdBTEsocXVlcnktPnJldHVybmluZ0xpc3QpKQogCQlyZXR1cm4g dHJ1ZTsKIAlpZiAoV0FMSyhxdWVyeS0+am9pbnRyZWUpKQpAQCAtMzQyNSw2ICszNDM1LDE5 IEBAIGV4cHJlc3Npb25fdHJlZV9tdXRhdG9yX2ltcGwoTm9kZSAqbm9kZSwKIAkJCQlyZXR1 cm4gKE5vZGUgKikgbmV3bm9kZTsKIAkJCX0KIAkJCWJyZWFrOworCQljYXNlIFRfRm9yUG9y dGlvbk9mRXhwcjoKKwkJCXsKKwkJCQlGb3JQb3J0aW9uT2ZFeHByICpmcG8gPSAoRm9yUG9y dGlvbk9mRXhwciAqKSBub2RlOworCQkJCUZvclBvcnRpb25PZkV4cHIgKm5ld25vZGU7CisK KwkJCQlGTEFUQ09QWShuZXdub2RlLCBmcG8sIEZvclBvcnRpb25PZkV4cHIpOworCQkJCU1V VEFURShuZXdub2RlLT5yYW5nZVZhciwgZnBvLT5yYW5nZVZhciwgVmFyICopOworCQkJCU1V VEFURShuZXdub2RlLT50YXJnZXRSYW5nZSwgZnBvLT50YXJnZXRSYW5nZSwgTm9kZSAqKTsK KwkJCQlNVVRBVEUobmV3bm9kZS0+cmFuZ2VTZXQsIGZwby0+cmFuZ2VTZXQsIExpc3QgKik7 CisKKwkJCQlyZXR1cm4gKE5vZGUgKikgbmV3bm9kZTsKKwkJCX0KKwkJCWJyZWFrOwogCQlj YXNlIFRfUGFydGl0aW9uUHJ1bmVTdGVwT3A6CiAJCQl7CiAJCQkJUGFydGl0aW9uUHJ1bmVT dGVwT3AgKm9wc3RlcCA9IChQYXJ0aXRpb25QcnVuZVN0ZXBPcCAqKSBub2RlOwpAQCAtMzYw Myw2ICszNjI2LDcgQEAgcXVlcnlfdHJlZV9tdXRhdG9yX2ltcGwoUXVlcnkgKnF1ZXJ5LAog CU1VVEFURShxdWVyeS0+d2l0aENoZWNrT3B0aW9ucywgcXVlcnktPndpdGhDaGVja09wdGlv bnMsIExpc3QgKik7CiAJTVVUQVRFKHF1ZXJ5LT5vbkNvbmZsaWN0LCBxdWVyeS0+b25Db25m bGljdCwgT25Db25mbGljdEV4cHIgKik7CiAJTVVUQVRFKHF1ZXJ5LT5tZXJnZUFjdGlvbkxp c3QsIHF1ZXJ5LT5tZXJnZUFjdGlvbkxpc3QsIExpc3QgKik7CisJTVVUQVRFKHF1ZXJ5LT5m b3JQb3J0aW9uT2YsIHF1ZXJ5LT5mb3JQb3J0aW9uT2YsIEZvclBvcnRpb25PZkV4cHIgKik7 CiAJTVVUQVRFKHF1ZXJ5LT5yZXR1cm5pbmdMaXN0LCBxdWVyeS0+cmV0dXJuaW5nTGlzdCwg TGlzdCAqKTsKIAlNVVRBVEUocXVlcnktPmpvaW50cmVlLCBxdWVyeS0+am9pbnRyZWUsIEZy b21FeHByICopOwogCU1VVEFURShxdWVyeS0+c2V0T3BlcmF0aW9ucywgcXVlcnktPnNldE9w ZXJhdGlvbnMsIE5vZGUgKik7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIv cGxhbi9jcmVhdGVwbGFuLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVw bGFuLmMKaW5kZXggMzRjYTZkNGFjMi4uOTU0ZWI0ZGE4MyAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jCisrKyBiL3NyYy9iYWNrZW5kL29w dGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYwpAQCAtMzExLDcgKzMxMSw4IEBAIHN0YXRpYyBN b2RpZnlUYWJsZSAqbWFrZV9tb2RpZnl0YWJsZShQbGFubmVySW5mbyAqcm9vdCwgUGxhbiAq c3VicGxhbiwKIAkJCQkJCQkJCSBMaXN0ICp1cGRhdGVDb2xub3NMaXN0cywKIAkJCQkJCQkJ CSBMaXN0ICp3aXRoQ2hlY2tPcHRpb25MaXN0cywgTGlzdCAqcmV0dXJuaW5nTGlzdHMsCiAJ CQkJCQkJCQkgTGlzdCAqcm93TWFya3MsIE9uQ29uZmxpY3RFeHByICpvbmNvbmZsaWN0LAot CQkJCQkJCQkJIExpc3QgKm1lcmdlQWN0aW9uTGlzdHMsIGludCBlcHFQYXJhbSk7CisJCQkJ CQkJCQkgTGlzdCAqbWVyZ2VBY3Rpb25MaXN0cywgRm9yUG9ydGlvbk9mRXhwciAqZm9yUG9y dGlvbk9mLAorCQkJCQkJCQkJIGludCBlcHFQYXJhbSk7CiBzdGF0aWMgR2F0aGVyTWVyZ2Ug KmNyZWF0ZV9nYXRoZXJfbWVyZ2VfcGxhbihQbGFubmVySW5mbyAqcm9vdCwKIAkJCQkJCQkJ CQkJIEdhdGhlck1lcmdlUGF0aCAqYmVzdF9wYXRoKTsKIApAQCAtMjgzNSw2ICsyODM2LDcg QEAgY3JlYXRlX21vZGlmeXRhYmxlX3BsYW4oUGxhbm5lckluZm8gKnJvb3QsIE1vZGlmeVRh YmxlUGF0aCAqYmVzdF9wYXRoKQogCQkJCQkJCWJlc3RfcGF0aC0+cm93TWFya3MsCiAJCQkJ CQkJYmVzdF9wYXRoLT5vbmNvbmZsaWN0LAogCQkJCQkJCWJlc3RfcGF0aC0+bWVyZ2VBY3Rp b25MaXN0cywKKwkJCQkJCQliZXN0X3BhdGgtPmZvclBvcnRpb25PZiwKIAkJCQkJCQliZXN0 X3BhdGgtPmVwcVBhcmFtKTsKIAogCWNvcHlfZ2VuZXJpY19wYXRoX2luZm8oJnBsYW4tPnBs YW4sICZiZXN0X3BhdGgtPnBhdGgpOwpAQCAtNzAwNSw3ICs3MDA3LDggQEAgbWFrZV9tb2Rp Znl0YWJsZShQbGFubmVySW5mbyAqcm9vdCwgUGxhbiAqc3VicGxhbiwKIAkJCQkgTGlzdCAq dXBkYXRlQ29sbm9zTGlzdHMsCiAJCQkJIExpc3QgKndpdGhDaGVja09wdGlvbkxpc3RzLCBM aXN0ICpyZXR1cm5pbmdMaXN0cywKIAkJCQkgTGlzdCAqcm93TWFya3MsIE9uQ29uZmxpY3RF eHByICpvbmNvbmZsaWN0LAotCQkJCSBMaXN0ICptZXJnZUFjdGlvbkxpc3RzLCBpbnQgZXBx UGFyYW0pCisJCQkJIExpc3QgKm1lcmdlQWN0aW9uTGlzdHMsIEZvclBvcnRpb25PZkV4cHIg KmZvclBvcnRpb25PZiwKKwkJCQkgaW50IGVwcVBhcmFtKQogewogCU1vZGlmeVRhYmxlICpu b2RlID0gbWFrZU5vZGUoTW9kaWZ5VGFibGUpOwogCUxpc3QJICAgKmZkd19wcml2YXRlX2xp c3Q7CkBAIC03MDcxLDYgKzcwNzQsNyBAQCBtYWtlX21vZGlmeXRhYmxlKFBsYW5uZXJJbmZv ICpyb290LCBQbGFuICpzdWJwbGFuLAogCQlub2RlLT5leGNsUmVsVGxpc3QgPSBvbmNvbmZs aWN0LT5leGNsUmVsVGxpc3Q7CiAJfQogCW5vZGUtPnVwZGF0ZUNvbG5vc0xpc3RzID0gdXBk YXRlQ29sbm9zTGlzdHM7CisJbm9kZS0+Zm9yUG9ydGlvbk9mID0gKE5vZGUgKikgZm9yUG9y dGlvbk9mOwogCW5vZGUtPndpdGhDaGVja09wdGlvbkxpc3RzID0gd2l0aENoZWNrT3B0aW9u TGlzdHM7CiAJbm9kZS0+cmV0dXJuaW5nTGlzdHMgPSByZXR1cm5pbmdMaXN0czsKIAlub2Rl LT5yb3dNYXJrcyA9IHJvd01hcmtzOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1p emVyL3BsYW4vcGxhbm5lci5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5l ci5jCmluZGV4IGE4Y2VhNWVmZTEuLjQ4YWY0OWYwYmQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6 ZXIvcGxhbi9wbGFubmVyLmMKQEAgLTE5NjMsNiArMTk2Myw3IEBAIGdyb3VwaW5nX3BsYW5u ZXIoUGxhbm5lckluZm8gKnJvb3QsIGRvdWJsZSB0dXBsZV9mcmFjdGlvbikKIAkJCQkJCQkJ CQlyb3dNYXJrcywKIAkJCQkJCQkJCQlwYXJzZS0+b25Db25mbGljdCwKIAkJCQkJCQkJCQlt ZXJnZUFjdGlvbkxpc3RzLAorCQkJCQkJCQkJCXBhcnNlLT5mb3JQb3J0aW9uT2YsCiAJCQkJ CQkJCQkJYXNzaWduX3NwZWNpYWxfZXhlY19wYXJhbShyb290KSk7CiAJCX0KIApkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGF0aG5vZGUuYyBiL3NyYy9iYWNr ZW5kL29wdGltaXplci91dGlsL3BhdGhub2RlLmMKaW5kZXggMGIxZDE3YjlkMy4uMGUwNDQ5 MDc5NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGF0aG5vZGUu YworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wYXRobm9kZS5jCkBAIC0zNjg2 LDcgKzM2ODYsOCBAQCBjcmVhdGVfbW9kaWZ5dGFibGVfcGF0aChQbGFubmVySW5mbyAqcm9v dCwgUmVsT3B0SW5mbyAqcmVsLAogCQkJCQkJTGlzdCAqdXBkYXRlQ29sbm9zTGlzdHMsCiAJ CQkJCQlMaXN0ICp3aXRoQ2hlY2tPcHRpb25MaXN0cywgTGlzdCAqcmV0dXJuaW5nTGlzdHMs CiAJCQkJCQlMaXN0ICpyb3dNYXJrcywgT25Db25mbGljdEV4cHIgKm9uY29uZmxpY3QsCi0J CQkJCQlMaXN0ICptZXJnZUFjdGlvbkxpc3RzLCBpbnQgZXBxUGFyYW0pCisJCQkJCQlMaXN0 ICptZXJnZUFjdGlvbkxpc3RzLCBGb3JQb3J0aW9uT2ZFeHByICpmb3JQb3J0aW9uT2YsCisJ CQkJCQlpbnQgZXBxUGFyYW0pCiB7CiAJTW9kaWZ5VGFibGVQYXRoICpwYXRobm9kZSA9IG1h a2VOb2RlKE1vZGlmeVRhYmxlUGF0aCk7CiAKQEAgLTM3NTIsNiArMzc1Myw3IEBAIGNyZWF0 ZV9tb2RpZnl0YWJsZV9wYXRoKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWws CiAJcGF0aG5vZGUtPnJldHVybmluZ0xpc3RzID0gcmV0dXJuaW5nTGlzdHM7CiAJcGF0aG5v ZGUtPnJvd01hcmtzID0gcm93TWFya3M7CiAJcGF0aG5vZGUtPm9uY29uZmxpY3QgPSBvbmNv bmZsaWN0OworCXBhdGhub2RlLT5mb3JQb3J0aW9uT2YgPSBmb3JQb3J0aW9uT2Y7CiAJcGF0 aG5vZGUtPmVwcVBhcmFtID0gZXBxUGFyYW07CiAJcGF0aG5vZGUtPm1lcmdlQWN0aW9uTGlz dHMgPSBtZXJnZUFjdGlvbkxpc3RzOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJz ZXIvYW5hbHl6ZS5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2FuYWx5emUuYwppbmRleCA3YTFk ZmI2MzY0Li4xNmM2NDk4MDQ5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvYW5h bHl6ZS5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9hbmFseXplLmMKQEAgLTQ3LDExICs0 NywxMyBAQAogI2luY2x1ZGUgInBhcnNlci9wYXJzZV9yZWxhdGlvbi5oIgogI2luY2x1ZGUg InBhcnNlci9wYXJzZV90YXJnZXQuaCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfdHlwZS5o IgorI2luY2x1ZGUgInBhcnNlci9wYXJzZXIuaCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2V0 cmVlLmgiCiAjaW5jbHVkZSAicmV3cml0ZS9yZXdyaXRlTWFuaXAuaCIKICNpbmNsdWRlICJ1 dGlscy9iYWNrZW5kX3N0YXR1cy5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCiAj aW5jbHVkZSAidXRpbHMvZ3VjLmgiCisjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCiAj aW5jbHVkZSAidXRpbHMvcmVsLmgiCiAjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKIApA QCAtNjAsMTAgKzYyLDE3IEBACiBwb3N0X3BhcnNlX2FuYWx5emVfaG9va190eXBlIHBvc3Rf cGFyc2VfYW5hbHl6ZV9ob29rID0gTlVMTDsKIAogc3RhdGljIFF1ZXJ5ICp0cmFuc2Zvcm1P cHRpb25hbFNlbGVjdEludG8oUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpwYXJzZVRyZWUp Oworc3RhdGljIE5vZGUgKmFkZEZvclBvcnRpb25PZldoZXJlQ29uZGl0aW9ucyhRdWVyeSAq cXJ5LCBGb3JQb3J0aW9uT2ZDbGF1c2UgKmZvclBvcnRpb25PZiwKKwkJCQkJCQkJCQkJTm9k ZSAqd2hlcmVDbGF1c2UpOwogc3RhdGljIFF1ZXJ5ICp0cmFuc2Zvcm1EZWxldGVTdG10KFBh cnNlU3RhdGUgKnBzdGF0ZSwgRGVsZXRlU3RtdCAqc3RtdCk7CiBzdGF0aWMgUXVlcnkgKnRy YW5zZm9ybUluc2VydFN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBJbnNlcnRTdG10ICpzdG10 KTsKIHN0YXRpYyBPbkNvbmZsaWN0RXhwciAqdHJhbnNmb3JtT25Db25mbGljdENsYXVzZShQ YXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkJCQkJCQkgT25Db25mbGljdENsYXVzZSAqb25D b25mbGljdENsYXVzZSk7CitzdGF0aWMgTm9kZSAqdHJhbnNmb3JtRm9yUG9ydGlvbk9mQm91 bmQoTm9kZSAqbiwgYm9vbCBpc0xvd2VyQm91bmQpOworc3RhdGljIEZvclBvcnRpb25PZkV4 cHIgKnRyYW5zZm9ybUZvclBvcnRpb25PZkNsYXVzZShQYXJzZVN0YXRlICpwc3RhdGUsCisJ CQkJCQkJCQkJCQkJIGludCBydGluZGV4LAorCQkJCQkJCQkJCQkJCSBGb3JQb3J0aW9uT2ZD bGF1c2UgKmZvclBvcnRpb25PZkNsYXVzZSwKKwkJCQkJCQkJCQkJCQkgYm9vbCBpc1VwZGF0 ZSk7CiBzdGF0aWMgaW50CWNvdW50X3Jvd2V4cHJfY29sdW1ucyhQYXJzZVN0YXRlICpwc3Rh dGUsIE5vZGUgKmV4cHIpOwogc3RhdGljIFF1ZXJ5ICp0cmFuc2Zvcm1TZWxlY3RTdG10KFBh cnNlU3RhdGUgKnBzdGF0ZSwgU2VsZWN0U3RtdCAqc3RtdCk7CiBzdGF0aWMgUXVlcnkgKnRy YW5zZm9ybVZhbHVlc0NsYXVzZShQYXJzZVN0YXRlICpwc3RhdGUsIFNlbGVjdFN0bXQgKnN0 bXQpOwpAQCAtNDc5LDYgKzQ4OCwyMCBAQCBzdG10X3JlcXVpcmVzX3BhcnNlX2FuYWx5c2lz KFJhd1N0bXQgKnBhcnNlVHJlZSkKIAlyZXR1cm4gcmVzdWx0OwogfQogCitzdGF0aWMgTm9k ZSAqCithZGRGb3JQb3J0aW9uT2ZXaGVyZUNvbmRpdGlvbnMoUXVlcnkgKnFyeSwgRm9yUG9y dGlvbk9mQ2xhdXNlICpmb3JQb3J0aW9uT2YsIE5vZGUgKndoZXJlQ2xhdXNlKQoreworCWlm IChmb3JQb3J0aW9uT2YpCisJeworCQlpZiAod2hlcmVDbGF1c2UpCisJCQlyZXR1cm4gKE5v ZGUgKikgbWFrZUJvb2xFeHByKEFORF9FWFBSLCBsaXN0X21ha2UyKHFyeS0+Zm9yUG9ydGlv bk9mLT5vdmVybGFwc0V4cHIsIHdoZXJlQ2xhdXNlKSwgLTEpOworCQllbHNlCisJCQlyZXR1 cm4gcXJ5LT5mb3JQb3J0aW9uT2YtPm92ZXJsYXBzRXhwcjsKKwl9CisJZWxzZQorCQlyZXR1 cm4gd2hlcmVDbGF1c2U7Cit9CisKIC8qCiAgKiBhbmFseXplX3JlcXVpcmVzX3NuYXBzaG90 CiAgKgkJUmV0dXJucyB0cnVlIGlmIGEgc25hcHNob3QgbXVzdCBiZSBzZXQgYmVmb3JlIGRv aW5nIHBhcnNlIGFuYWx5c2lzCkBAIC01MTIsNiArNTM1LDcgQEAgdHJhbnNmb3JtRGVsZXRl U3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIERlbGV0ZVN0bXQgKnN0bXQpCiB7CiAJUXVlcnkJ ICAgKnFyeSA9IG1ha2VOb2RlKFF1ZXJ5KTsKIAlQYXJzZU5hbWVzcGFjZUl0ZW0gKm5zaXRl bTsKKwlOb2RlCSAgICp3aGVyZUNsYXVzZTsKIAlOb2RlCSAgICpxdWFsOwogCiAJcXJ5LT5j b21tYW5kVHlwZSA9IENNRF9ERUxFVEU7CkBAIC01NTAsNyArNTc0LDExIEBAIHRyYW5zZm9y bURlbGV0ZVN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBEZWxldGVTdG10ICpzdG10KQogCW5z aXRlbS0+cF9sYXRlcmFsX29ubHkgPSBmYWxzZTsKIAluc2l0ZW0tPnBfbGF0ZXJhbF9vayA9 IHRydWU7CiAKLQlxdWFsID0gdHJhbnNmb3JtV2hlcmVDbGF1c2UocHN0YXRlLCBzdG10LT53 aGVyZUNsYXVzZSwKKwlpZiAoc3RtdC0+Zm9yUG9ydGlvbk9mKQorCQlxcnktPmZvclBvcnRp b25PZiA9IHRyYW5zZm9ybUZvclBvcnRpb25PZkNsYXVzZShwc3RhdGUsIHFyeS0+cmVzdWx0 UmVsYXRpb24sIHN0bXQtPmZvclBvcnRpb25PZiwgZmFsc2UpOworCisJd2hlcmVDbGF1c2Ug PSBhZGRGb3JQb3J0aW9uT2ZXaGVyZUNvbmRpdGlvbnMocXJ5LCBzdG10LT5mb3JQb3J0aW9u T2YsIHN0bXQtPndoZXJlQ2xhdXNlKTsKKwlxdWFsID0gdHJhbnNmb3JtV2hlcmVDbGF1c2Uo cHN0YXRlLCB3aGVyZUNsYXVzZSwKIAkJCQkJCQkJRVhQUl9LSU5EX1dIRVJFLCAiV0hFUkUi KTsKIAogCXFyeS0+cmV0dXJuaW5nTGlzdCA9IHRyYW5zZm9ybVJldHVybmluZ0xpc3QocHN0 YXRlLCBzdG10LT5yZXR1cm5pbmdMaXN0KTsKQEAgLTExNzMsNyArMTIwMSw3IEBAIHRyYW5z Zm9ybU9uQ29uZmxpY3RDbGF1c2UoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkgKiBOb3cgdHJh bnNmb3JtIHRoZSBVUERBVEUgc3ViZXhwcmVzc2lvbnMuCiAJCSAqLwogCQlvbkNvbmZsaWN0 U2V0ID0KLQkJCXRyYW5zZm9ybVVwZGF0ZVRhcmdldExpc3QocHN0YXRlLCBvbkNvbmZsaWN0 Q2xhdXNlLT50YXJnZXRMaXN0KTsKKwkJCXRyYW5zZm9ybVVwZGF0ZVRhcmdldExpc3QocHN0 YXRlLCBvbkNvbmZsaWN0Q2xhdXNlLT50YXJnZXRMaXN0LCBOVUxMKTsKIAogCQlvbkNvbmZs aWN0V2hlcmUgPSB0cmFuc2Zvcm1XaGVyZUNsYXVzZShwc3RhdGUsCiAJCQkJCQkJCQkJCSAg IG9uQ29uZmxpY3RDbGF1c2UtPndoZXJlQ2xhdXNlLApAQCAtMTIwMyw2ICsxMjMxLDE1OCBA QCB0cmFuc2Zvcm1PbkNvbmZsaWN0Q2xhdXNlKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAlyZXR1 cm4gcmVzdWx0OwogfQogCisvKgorICogdHJhbnNmb3JtRm9yUG9ydGlvbk9mQm91bmQKKyAq ICAgIHRyYW5zZm9ybXMgVU5CT1VOREVEIHBzZXVkby1jb2x1bW4gcmVmZXJlbmNlcyB0byBO VUxMCisgKiAgICAod2hpY2ggcmVwcmVzZW50ICJ1bmJvdW5kZWQiIGluIGEgcmFuZ2UgdHlw ZSwgb3RoZXJ3aXNlIHJldHVybnMKKyAqICAgIGl0cyBpbnB1dCB1bmNoYW5nZWQuCisgKi8K K3N0YXRpYyBOb2RlICoKK3RyYW5zZm9ybUZvclBvcnRpb25PZkJvdW5kKE5vZGUgKm4sIGJv b2wgaXNMb3dlckJvdW5kKQoreworCWlmIChub2RlVGFnKG4pID09IFRfQ29sdW1uUmVmKQor CXsKKwkJQ29sdW1uUmVmICAqY3JlZiA9IChDb2x1bW5SZWYgKikgbjsKKwkJY2hhcgkgICAq Y25hbWUgPSAiIjsKKwkJQV9Db25zdAkgICAqbjI7CisKKwkJaWYgKGxpc3RfbGVuZ3RoKGNy ZWYtPmZpZWxkcykgPT0gMSAmJgorCQkJSXNBKGxpbml0aWFsKGNyZWYtPmZpZWxkcyksIFN0 cmluZykpCisJCQljbmFtZSA9IHN0clZhbChsaW5pdGlhbChjcmVmLT5maWVsZHMpKTsKKwor CQlpZiAoc3RyY21wKCJ1bmJvdW5kZWQiLCBjbmFtZSkgIT0gMCkKKwkJCXJldHVybiBuOwor CisJCW4yID0gbWFrZU5vZGUoQV9Db25zdCk7CisJCW4yLT5pc251bGwgPSB0cnVlOworCQlu Mi0+bG9jYXRpb24gPSAoKENvbHVtblJlZiAqKW4pLT5sb2NhdGlvbjsKKworCQlyZXR1cm4g KE5vZGUgKiluMjsKKwl9CisJZWxzZQorCQlyZXR1cm4gbjsKK30KKworLyoKKyAqIHRyYW5z Zm9ybUZvclBvcnRpb25PZkNsYXVzZQorICoKKyAqCSAgVHJhbnNmb3JtcyBhIEZvclBvcnRp b25PZkNsYXVzZSBpbiBhbiBVUERBVEUvREVMRVRFIHN0YXRlbWVudC4KKyAqCisgKgkgIC0g TG9vayB1cCB0aGUgcmFuZ2UvcGVyaW9kIHJlcXVlc3RlZC4KKyAqCSAgLSBCdWlsZCBhIGNv bXBhdGlibGUgcmFuZ2UgdmFsdWUgZnJvbSB0aGUgRlJPTSBhbmQgVE8gZXhwcmVzc2lvbnMu CisgKgkgIC0gQnVpbGQgYW4gIm92ZXJsYXBzIiBleHByZXNzaW9uIGZvciBmaWx0ZXJpbmcu CisgKgkgIC0gRm9yIFVQREFURXMsIGJ1aWxkIGFuICJpbnRlcnNlY3RzIiBleHByZXNzaW9u IHRoZSByZXdyaXRlciBjYW4gYWRkCisgKgkgIC0gdG8gdGhlIHRhcmdldExpc3QgdG8gY2hh bmdlIHRoZSB0ZW1wb3JhbCBib3VuZHMuCisgKi8KK3N0YXRpYyBGb3JQb3J0aW9uT2ZFeHBy ICoKK3RyYW5zZm9ybUZvclBvcnRpb25PZkNsYXVzZShQYXJzZVN0YXRlICpwc3RhdGUsCisJ CQkJCQkJaW50IHJ0aW5kZXgsCisJCQkJCQkJRm9yUG9ydGlvbk9mQ2xhdXNlICpmb3JQb3J0 aW9uT2YsCisJCQkJCQkJYm9vbCBpc1VwZGF0ZSkKK3sKKwlSZWxhdGlvbiB0YXJnZXRyZWwg PSBwc3RhdGUtPnBfdGFyZ2V0X3JlbGF0aW9uOworCVJURVBlcm1pc3Npb25JbmZvICp0YXJn ZXRfcGVybWluZm8gPSBwc3RhdGUtPnBfdGFyZ2V0X25zaXRlbS0+cF9wZXJtaW5mbzsKKwlj aGFyICpyYW5nZV9uYW1lID0gZm9yUG9ydGlvbk9mLT5yYW5nZV9uYW1lOworCWNoYXIgKnJh bmdlX3R5cGVfbmFtZXNwYWNlID0gTlVMTDsKKwljaGFyICpyYW5nZV90eXBlX25hbWUgPSBO VUxMOworCWludCByYW5nZV9hdHRubyA9IEludmFsaWRBdHRyTnVtYmVyOworCUZvcm1fcGdf YXR0cmlidXRlIGF0dHI7CisJRm9yUG9ydGlvbk9mRXhwciAqcmVzdWx0OworCUxpc3QgKnRh cmdldExpc3Q7CisJTm9kZSAqdGFyZ2V0X3N0YXJ0LCAqdGFyZ2V0X2VuZDsKKwlWYXIgKnJh bmdlVmFyOworCUZ1bmNDYWxsICpmYzsKKworCXJlc3VsdCA9IG1ha2VOb2RlKEZvclBvcnRp b25PZkV4cHIpOworCisJLyogTG9vayB1cCB0aGUgRk9SIFBPUlRJT04gT0YgbmFtZSByZXF1 ZXN0ZWQuICovCisJcmFuZ2VfYXR0bm8gPSBhdHRuYW1lQXR0TnVtKHRhcmdldHJlbCwgcmFu Z2VfbmFtZSwgZmFsc2UpOworCWlmIChyYW5nZV9hdHRubyA9PSBJbnZhbGlkQXR0ck51bWJl cikKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9D T0xVTU4pLAorCQkJCSBlcnJtc2coImNvbHVtbiBvciBwZXJpb2QgXCIlc1wiIG9mIHJlbGF0 aW9uIFwiJXNcIiBkb2VzIG5vdCBleGlzdCIsCisJCQkJCQlyYW5nZV9uYW1lLAorCQkJCQkJ UmVsYXRpb25HZXRSZWxhdGlvbk5hbWUodGFyZ2V0cmVsKSksCisJCQkJIHBhcnNlcl9lcnJw b3NpdGlvbihwc3RhdGUsIGZvclBvcnRpb25PZi0+cmFuZ2VfbmFtZV9sb2NhdGlvbikpKTsK KwlhdHRyID0gVHVwbGVEZXNjQXR0cih0YXJnZXRyZWwtPnJkX2F0dCwgcmFuZ2VfYXR0bm8g LSAxKTsKKworCS8qIE1ha2Ugc3VyZSBpdCdzIGEgcmFuZ2UgY29sdW1uICovCisJaWYgKCF0 eXBlX2lzX3JhbmdlKGF0dHItPmF0dHR5cGlkKSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQko ZXJyY29kZShFUlJDT0RFX0lOVkFMSURfQ09MVU1OX1JFRkVSRU5DRSksCisJCQkJIGVycm1z ZygiY29sdW1uIFwiJXNcIiBvZiByZWxhdGlvbiBcIiVzXCIgaXMgbm90IGEgcmFuZ2UgdHlw ZSIsCisJCQkJCQlyYW5nZV9uYW1lLAorCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUo dGFyZ2V0cmVsKSksCisJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGZvclBvcnRp b25PZi0+cmFuZ2VfbmFtZV9sb2NhdGlvbikpKTsKKworCXJhbmdlVmFyID0gbWFrZVZhcigK KwkJCXJ0aW5kZXgsCisJCQlyYW5nZV9hdHRubywKKwkJCWF0dHItPmF0dHR5cGlkLAorCQkJ YXR0ci0+YXR0dHlwbW9kLAorCQkJYXR0ci0+YXR0Y29sbGF0aW9uLAorCQkJMCk7CisJcmFu Z2VWYXItPmxvY2F0aW9uID0gZm9yUG9ydGlvbk9mLT5yYW5nZV9uYW1lX2xvY2F0aW9uOwor CXJlc3VsdC0+cmFuZ2VWYXIgPSByYW5nZVZhcjsKKwlyZXN1bHQtPnJhbmdlVHlwZSA9IGF0 dHItPmF0dHR5cGlkOworCWlmICghZ2V0X3R5cG5hbWVfYW5kX25hbWVzcGFjZShhdHRyLT5h dHR0eXBpZCwgJnJhbmdlX3R5cGVfbmFtZSwgJnJhbmdlX3R5cGVfbmFtZXNwYWNlKSkKKwkJ ZWxvZyhFUlJPUiwgIm1pc3NpbmcgcmFuZ2UgdHlwZSAlZCIsIGF0dHItPmF0dHR5cGlkKTsK KworCisJLyoKKwkgKiBCdWlsZCBhIHJhbmdlIGZyb20gdGhlIEZST00gLi4uIFRPIC4uLi4g Ym91bmRzLgorCSAqIFRoaXMgc2hvdWxkIGdpdmUgYSBjb25zdGFudCByZXN1bHQsIHNvIHdl IGFjY2VwdCBmdW5jdGlvbnMgbGlrZSBOT1coKQorCSAqIGJ1dCBub3QgY29sdW1uIHJlZmVy ZW5jZXMsIHN1YnF1ZXJpZXMsIGV0Yy4KKwkgKgorCSAqIEl0IGFsc28gcGVybWl0cyBVTkJP VU5ERUQgaW4gZWl0aGVyIHBsYWNlLgorCSAqLworCXRhcmdldF9zdGFydCA9IHRyYW5zZm9y bUZvclBvcnRpb25PZkJvdW5kKGZvclBvcnRpb25PZi0+dGFyZ2V0X3N0YXJ0LCB0cnVlKTsK Kwl0YXJnZXRfZW5kICAgPSB0cmFuc2Zvcm1Gb3JQb3J0aW9uT2ZCb3VuZChmb3JQb3J0aW9u T2YtPnRhcmdldF9lbmQsIGZhbHNlKTsKKwlmYyA9IG1ha2VGdW5jQ2FsbCgKKwkJCWxpc3Rf bWFrZTIobWFrZVN0cmluZyhyYW5nZV90eXBlX25hbWVzcGFjZSksIG1ha2VTdHJpbmcocmFu Z2VfdHlwZV9uYW1lKSksCisJCQlsaXN0X21ha2UyKHRhcmdldF9zdGFydCwgdGFyZ2V0X2Vu ZCksCisJCQlDT0VSQ0VfRVhQTElDSVRfQ0FMTCwKKwkJCWZvclBvcnRpb25PZi0+cmFuZ2Vf bmFtZV9sb2NhdGlvbik7CisJcmVzdWx0LT50YXJnZXRSYW5nZSA9IHRyYW5zZm9ybUV4cHIo cHN0YXRlLCAoTm9kZSAqKSBmYywgRVhQUl9LSU5EX1VQREFURV9QT1JUSU9OKTsKKworCS8q IG92ZXJsYXBzRXhwciBpcyBzb21ldGhpbmcgd2UgY2FuIGFkZCB0byB0aGUgd2hlcmVDbGF1 c2UgKi8KKwlyZXN1bHQtPm92ZXJsYXBzRXhwciA9IChOb2RlICopIG1ha2VTaW1wbGVBX0V4 cHIoQUVYUFJfT1AsICImJiIsCisJCQkoTm9kZSAqKSBjb3B5T2JqZWN0KHJhbmdlVmFyKSwg KE5vZGUgKikgZmMsCisJCQlmb3JQb3J0aW9uT2YtPnJhbmdlX25hbWVfbG9jYXRpb24pOwor CisJaWYgKGlzVXBkYXRlKQorCXsKKwkJLyoKKwkJICogTm93IG1ha2Ugc3VyZSB3ZSB1cGRh dGUgdGhlIHN0YXJ0L2VuZCB0aW1lIG9mIHRoZSByZWNvcmQuCisJCSAqIEZvciBhIHJhbmdl IGNvbCAocikgdGhpcyBpcyBgciA9IHIgKiB0YXJnZXRSYW5nZWAuCisJCSAqLworCQlFeHBy ICpyYW5nZVNldEV4cHIgPSAoRXhwciAqKSBtYWtlU2ltcGxlQV9FeHByKEFFWFBSX09QLCAi KiIsCisJCQkJKE5vZGUgKikgY29weU9iamVjdChyYW5nZVZhciksIChOb2RlICopIGZjLAor CQkJCWZvclBvcnRpb25PZi0+cmFuZ2VfbmFtZV9sb2NhdGlvbik7CisJCVRhcmdldEVudHJ5 ICp0bGU7CisKKwkJdGFyZ2V0TGlzdCA9IE5JTDsKKwkJcmFuZ2VTZXRFeHByID0gKEV4cHIg KikgdHJhbnNmb3JtRXhwcihwc3RhdGUsIChOb2RlICopIHJhbmdlU2V0RXhwciwgRVhQUl9L SU5EX1VQREFURV9QT1JUSU9OKTsKKwkJdGxlID0gbWFrZVRhcmdldEVudHJ5KHJhbmdlU2V0 RXhwciwKKwkJCQkJCQkgIHJhbmdlX2F0dG5vLAorCQkJCQkJCSAgcmFuZ2VfbmFtZSwKKwkJ CQkJCQkgIGZhbHNlKTsKKworCQl0YXJnZXRMaXN0ID0gbGFwcGVuZCh0YXJnZXRMaXN0LCB0 bGUpOworCisJCS8qIE1hcmsgdGhlIHJhbmdlIGNvbHVtbiBhcyByZXF1aXJpbmcgdXBkYXRl IHBlcm1pc3Npb25zICovCisJCXRhcmdldF9wZXJtaW5mby0+dXBkYXRlZENvbHMgPSBibXNf YWRkX21lbWJlcih0YXJnZXRfcGVybWluZm8tPnVwZGF0ZWRDb2xzLAorCQkJCQkJCQkJCQkJ CSAgcmFuZ2VfYXR0bm8gLSBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyKTsK KworCQlyZXN1bHQtPnJhbmdlU2V0ID0gdGFyZ2V0TGlzdDsKKwl9CisJZWxzZQorCQlyZXN1 bHQtPnJhbmdlU2V0ID0gTklMOworCisJcmVzdWx0LT5yYW5nZV9uYW1lID0gcmFuZ2VfbmFt ZTsKKworCXJldHVybiByZXN1bHQ7Cit9CiAKIC8qCiAgKiBCdWlsZE9uQ29uZmxpY3RFeGNs dWRlZFRhcmdldGxpc3QKQEAgLTI0MDksNiArMjU4OSw3IEBAIHRyYW5zZm9ybVVwZGF0ZVN0 bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBVcGRhdGVTdG10ICpzdG10KQogewogCVF1ZXJ5CSAg ICpxcnkgPSBtYWtlTm9kZShRdWVyeSk7CiAJUGFyc2VOYW1lc3BhY2VJdGVtICpuc2l0ZW07 CisJTm9kZQkgICAqd2hlcmVDbGF1c2U7CiAJTm9kZQkgICAqcXVhbDsKIAogCXFyeS0+Y29t bWFuZFR5cGUgPSBDTURfVVBEQVRFOwpAQCAtMjQyNiw2ICsyNjA3LDEwIEBAIHRyYW5zZm9y bVVwZGF0ZVN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBVcGRhdGVTdG10ICpzdG10KQogCQkJ CQkJCQkJCSBzdG10LT5yZWxhdGlvbi0+aW5oLAogCQkJCQkJCQkJCSB0cnVlLAogCQkJCQkJ CQkJCSBBQ0xfVVBEQVRFKTsKKworCWlmIChzdG10LT5mb3JQb3J0aW9uT2YpCisJCXFyeS0+ Zm9yUG9ydGlvbk9mID0gdHJhbnNmb3JtRm9yUG9ydGlvbk9mQ2xhdXNlKHBzdGF0ZSwgcXJ5 LT5yZXN1bHRSZWxhdGlvbiwgc3RtdC0+Zm9yUG9ydGlvbk9mLCB0cnVlKTsKKwogCW5zaXRl bSA9IHBzdGF0ZS0+cF90YXJnZXRfbnNpdGVtOwogCiAJLyogc3VicXVlcmllcyBpbiBGUk9N IGNhbm5vdCBhY2Nlc3MgdGhlIHJlc3VsdCByZWxhdGlvbiAqLwpAQCAtMjQ0Miw3ICsyNjI3 LDggQEAgdHJhbnNmb3JtVXBkYXRlU3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIFVwZGF0ZVN0 bXQgKnN0bXQpCiAJbnNpdGVtLT5wX2xhdGVyYWxfb25seSA9IGZhbHNlOwogCW5zaXRlbS0+ cF9sYXRlcmFsX29rID0gdHJ1ZTsKIAotCXF1YWwgPSB0cmFuc2Zvcm1XaGVyZUNsYXVzZShw c3RhdGUsIHN0bXQtPndoZXJlQ2xhdXNlLAorCXdoZXJlQ2xhdXNlID0gYWRkRm9yUG9ydGlv bk9mV2hlcmVDb25kaXRpb25zKHFyeSwgc3RtdC0+Zm9yUG9ydGlvbk9mLCBzdG10LT53aGVy ZUNsYXVzZSk7CisJcXVhbCA9IHRyYW5zZm9ybVdoZXJlQ2xhdXNlKHBzdGF0ZSwgd2hlcmVD bGF1c2UsCiAJCQkJCQkJCUVYUFJfS0lORF9XSEVSRSwgIldIRVJFIik7CiAKIAlxcnktPnJl dHVybmluZ0xpc3QgPSB0cmFuc2Zvcm1SZXR1cm5pbmdMaXN0KHBzdGF0ZSwgc3RtdC0+cmV0 dXJuaW5nTGlzdCk7CkBAIC0yNDUxLDcgKzI2MzcsNyBAQCB0cmFuc2Zvcm1VcGRhdGVTdG10 KFBhcnNlU3RhdGUgKnBzdGF0ZSwgVXBkYXRlU3RtdCAqc3RtdCkKIAkgKiBOb3cgd2UgYXJl IGRvbmUgd2l0aCBTRUxFQ1QtbGlrZSBwcm9jZXNzaW5nLCBhbmQgY2FuIGdldCBvbiB3aXRo CiAJICogdHJhbnNmb3JtaW5nIHRoZSB0YXJnZXQgbGlzdCB0byBtYXRjaCB0aGUgVVBEQVRF IHRhcmdldCBjb2x1bW5zLgogCSAqLwotCXFyeS0+dGFyZ2V0TGlzdCA9IHRyYW5zZm9ybVVw ZGF0ZVRhcmdldExpc3QocHN0YXRlLCBzdG10LT50YXJnZXRMaXN0KTsKKwlxcnktPnRhcmdl dExpc3QgPSB0cmFuc2Zvcm1VcGRhdGVUYXJnZXRMaXN0KHBzdGF0ZSwgc3RtdC0+dGFyZ2V0 TGlzdCwgcXJ5LT5mb3JQb3J0aW9uT2YpOwogCiAJcXJ5LT5ydGFibGUgPSBwc3RhdGUtPnBf cnRhYmxlOwogCXFyeS0+cnRlcGVybWluZm9zID0gcHN0YXRlLT5wX3J0ZXBlcm1pbmZvczsK QEAgLTI0NzAsNyArMjY1Niw3IEBAIHRyYW5zZm9ybVVwZGF0ZVN0bXQoUGFyc2VTdGF0ZSAq cHN0YXRlLCBVcGRhdGVTdG10ICpzdG10KQogICoJaGFuZGxlIFNFVCBjbGF1c2UgaW4gVVBE QVRFL01FUkdFL0lOU0VSVCAuLi4gT04gQ09ORkxJQ1QgVVBEQVRFCiAgKi8KIExpc3QgKgot dHJhbnNmb3JtVXBkYXRlVGFyZ2V0TGlzdChQYXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKm9y aWdUbGlzdCkKK3RyYW5zZm9ybVVwZGF0ZVRhcmdldExpc3QoUGFyc2VTdGF0ZSAqcHN0YXRl LCBMaXN0ICpvcmlnVGxpc3QsIEZvclBvcnRpb25PZkV4cHIgKmZvclBvcnRpb25PZikKIHsK IAlMaXN0CSAgICp0bGlzdCA9IE5JTDsKIAlSVEVQZXJtaXNzaW9uSW5mbyAqdGFyZ2V0X3Bl cm1pbmZvOwpAQCAtMjUyMCw2ICsyNzA2LDIxIEBAIHRyYW5zZm9ybVVwZGF0ZVRhcmdldExp c3QoUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpvcmlnVGxpc3QpCiAJCQkJCQkJUmVsYXRp b25HZXRSZWxhdGlvbk5hbWUocHN0YXRlLT5wX3RhcmdldF9yZWxhdGlvbikpLAogCQkJCQkg cGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgb3JpZ1RhcmdldC0+bG9jYXRpb24pKSk7CiAK KwkJLyoKKwkJICogSWYgdGhpcyBpcyBhIEZPUiBQT1JUSU9OIE9GIHVwZGF0ZSwKKwkJICog Zm9yYmlkIGRpcmVjdGx5IHNldHRpbmcgdGhlIHJhbmdlIGNvbHVtbiwKKwkJICogc2luY2Ug dGhhdCB3b3VsZCBjb25mbGljdCB3aXRoIHRoZSBpbXBsaWNpdCB1cGRhdGVzLgorCQkgKi8K KwkJaWYgKGZvclBvcnRpb25PZiAhPSBOVUxMKQorCQl7CisJCQlpZiAoYXR0cm5vID09IGZv clBvcnRpb25PZi0+cmFuZ2VWYXItPnZhcmF0dG5vKQorCQkJCWVyZXBvcnQoRVJST1IsCisJ CQkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCQkgZXJybXNnKCJj YW4ndCBkaXJlY3RseSBhc3NpZ24gdG8gXCIlc1wiIGluIGEgRk9SIFBPUlRJT04gT0YgdXBk YXRlIiwKKwkJCQkJCQkJb3JpZ1RhcmdldC0+bmFtZSksCisJCQkJCQkgcGFyc2VyX2VycnBv c2l0aW9uKHBzdGF0ZSwgb3JpZ1RhcmdldC0+bG9jYXRpb24pKSk7CisJCX0KKwogCQl1cGRh dGVUYXJnZXRMaXN0RW50cnkocHN0YXRlLCB0bGUsIG9yaWdUYXJnZXQtPm5hbWUsCiAJCQkJ CQkJICBhdHRybm8sCiAJCQkJCQkJICBvcmlnVGFyZ2V0LT5pbmRpcmVjdGlvbiwKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgYi9zcmMvYmFja2VuZC9wYXJzZXIv Z3JhbS55CmluZGV4IDMwMWE0ZmEyMjEuLjI3NTM1MjdlMjcgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3BhcnNlci9ncmFtLnkKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQpA QCAtMjU4LDYgKzI1OCw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVj dChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJUmFuZ2VW YXIgICAqcmFuZ2U7CiAJSW50b0NsYXVzZSAqaW50bzsKIAlXaXRoQ2xhdXNlICp3aXRoOwor CUZvclBvcnRpb25PZkNsYXVzZSAqZm9ycG9ydGlvbm9mOwogCUluZmVyQ2xhdXNlCSppbmZl cjsKIAlPbkNvbmZsaWN0Q2xhdXNlICpvbmNvbmZsaWN0OwogCUFfSW5kaWNlcyAgKmFpbmQ7 CkBAIC01NTEsNiArNTUyLDcgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2Vs ZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKICV0eXBl IDxyYW5nZT4JcmVsYXRpb25fZXhwcgogJXR5cGUgPHJhbmdlPglleHRlbmRlZF9yZWxhdGlv bl9leHByCiAldHlwZSA8cmFuZ2U+CXJlbGF0aW9uX2V4cHJfb3B0X2FsaWFzCisldHlwZSA8 Zm9ycG9ydGlvbm9mPiBmb3JfcG9ydGlvbl9vZl9jbGF1c2UKICV0eXBlIDxub2RlPgl0YWJs ZXNhbXBsZV9jbGF1c2Ugb3B0X3JlcGVhdGFibGVfY2xhdXNlCiAldHlwZSA8dGFyZ2V0Pgl0 YXJnZXRfZWwgc2V0X3RhcmdldCBpbnNlcnRfY29sdW1uX2l0ZW0KIApAQCAtNzQ3LDcgKzc0 OSw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxu YW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAKIAlQQVJBTExFTCBQQVJBTUVU RVIgUEFSU0VSIFBBUlRJQUwgUEFSVElUSU9OIFBBU1NJTkcgUEFTU1dPUkQKIAlQRVJJT0Qg UExBQ0lORyBQTEFOUyBQT0xJQ1kKLQlQT1NJVElPTiBQUkVDRURJTkcgUFJFQ0lTSU9OIFBS RVNFUlZFIFBSRVBBUkUgUFJFUEFSRUQgUFJJTUFSWQorCVBPUlRJT04gUE9TSVRJT04gUFJF Q0VESU5HIFBSRUNJU0lPTiBQUkVTRVJWRSBQUkVQQVJFIFBSRVBBUkVEIFBSSU1BUlkKIAlQ UklPUiBQUklWSUxFR0VTIFBST0NFRFVSQUwgUFJPQ0VEVVJFIFBST0NFRFVSRVMgUFJPR1JB TSBQVUJMSUNBVElPTgogCiAJUVVPVEUKQEAgLTgyOCw2ICs4MzAsMTYgQEAgc3RhdGljIE5v ZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFz ZXMsIE5vZGUgKnF1ZXJ5KTsKICVub25hc3NvYwlLRVlTIE9CSkVDVF9QIFNDQUxBUiBWQUxV RV9QCiAlbm9uYXNzb2MJV0lUSCBXSVRIT1VUCiAKKy8qCisgKiBXZSBuZWVkIHRvIGhhbmRs ZSB0aGlzIHNoaWZ0L3JlZHVjZSBjb25mbGljdDoKKyAqIEZPUiBQT1JUSU9OIE9GIHZhbGlk X2F0IEZST00gSU5URVJWQUwgWUVBUiBUTyBNT05USCBUTyBmb28uCisgKiBUaGlzIGlzIGJh c2ljYWxseSB0aGUgY2xhc3NpYyAiZGFuZ2xpbmcgZWxzZSIgcHJvYmxlbSwgYW5kIHdlIHdh bnQgYQorICogc2ltaWxhciByZXNvbHV0aW9uOiB0cmVhdCB0aGUgVE8gYXMgcGFydCBvZiB0 aGUgSU5URVJWQUwsIG5vdCBhcyBwYXJ0IG9mCisgKiB0aGUgRlJPTSAuLi4gVE8gLi4uLiBV c2VycyBjYW4gYWRkIHBhcmVudGhlc2VzIGlmIHRoYXQncyBhIHByb2JsZW0uCisgKiBUTyBq dXN0IG5lZWRzIHRvIGJlIGhpZ2hlciBwcmVjZWRlbmNlIHRoYW4gWUVBUl9QIGV0Yy4KKyAq LworJW5vbmFzc29jIFlFQVJfUCBNT05USF9QIERBWV9QIEhPVVJfUCBNSU5VVEVfUAorJW5v bmFzc29jIFRPCiAvKgogICogVG8gc3VwcG9ydCB0YXJnZXRfZWwgd2l0aG91dCBBUywgaXQg dXNlZCB0byBiZSBuZWNlc3NhcnkgdG8gYXNzaWduIElERU5UIGFuCiAgKiBleHBsaWNpdCBw cmVjZWRlbmNlIGp1c3QgbGVzcyB0aGFuIE9wLiAgV2hpbGUgdGhhdCdzIG5vdCByZWFsbHkg bmVjZXNzYXJ5CkBAIC0xMjIwMywxNCArMTIyMTUsMTYgQEAgcmV0dXJuaW5nX2NsYXVzZToK ICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogRGVsZXRlU3RtdDogb3B0X3dpdGhfY2xh dXNlIERFTEVURV9QIEZST00gcmVsYXRpb25fZXhwcl9vcHRfYWxpYXMKKwkJCWZvcl9wb3J0 aW9uX29mX2NsYXVzZQogCQkJdXNpbmdfY2xhdXNlIHdoZXJlX29yX2N1cnJlbnRfY2xhdXNl IHJldHVybmluZ19jbGF1c2UKIAkJCQl7CiAJCQkJCURlbGV0ZVN0bXQgKm4gPSBtYWtlTm9k ZShEZWxldGVTdG10KTsKIAogCQkJCQluLT5yZWxhdGlvbiA9ICQ0OwotCQkJCQluLT51c2lu Z0NsYXVzZSA9ICQ1OwotCQkJCQluLT53aGVyZUNsYXVzZSA9ICQ2OwotCQkJCQluLT5yZXR1 cm5pbmdMaXN0ID0gJDc7CisJCQkJCW4tPmZvclBvcnRpb25PZiA9ICQ1OworCQkJCQluLT51 c2luZ0NsYXVzZSA9ICQ2OworCQkJCQluLT53aGVyZUNsYXVzZSA9ICQ3OworCQkJCQluLT5y ZXR1cm5pbmdMaXN0ID0gJDg7CiAJCQkJCW4tPndpdGhDbGF1c2UgPSAkMTsKIAkJCQkJJCQg PSAoTm9kZSAqKSBuOwogCQkJCX0KQEAgLTEyMjczLDYgKzEyMjg3LDcgQEAgb3B0X25vd2Fp dF9vcl9za2lwOgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiBVcGRhdGVTdG10OiBv cHRfd2l0aF9jbGF1c2UgVVBEQVRFIHJlbGF0aW9uX2V4cHJfb3B0X2FsaWFzCisJCQlmb3Jf cG9ydGlvbl9vZl9jbGF1c2UKIAkJCVNFVCBzZXRfY2xhdXNlX2xpc3QKIAkJCWZyb21fY2xh dXNlCiAJCQl3aGVyZV9vcl9jdXJyZW50X2NsYXVzZQpAQCAtMTIyODEsMTAgKzEyMjk2LDEx IEBAIFVwZGF0ZVN0bXQ6IG9wdF93aXRoX2NsYXVzZSBVUERBVEUgcmVsYXRpb25fZXhwcl9v cHRfYWxpYXMKIAkJCQkJVXBkYXRlU3RtdCAqbiA9IG1ha2VOb2RlKFVwZGF0ZVN0bXQpOwog CiAJCQkJCW4tPnJlbGF0aW9uID0gJDM7Ci0JCQkJCW4tPnRhcmdldExpc3QgPSAkNTsKLQkJ CQkJbi0+ZnJvbUNsYXVzZSA9ICQ2OwotCQkJCQluLT53aGVyZUNsYXVzZSA9ICQ3OwotCQkJ CQluLT5yZXR1cm5pbmdMaXN0ID0gJDg7CisJCQkJCW4tPmZvclBvcnRpb25PZiA9ICQ0Owor CQkJCQluLT50YXJnZXRMaXN0ID0gJDY7CisJCQkJCW4tPmZyb21DbGF1c2UgPSAkNzsKKwkJ CQkJbi0+d2hlcmVDbGF1c2UgPSAkODsKKwkJCQkJbi0+cmV0dXJuaW5nTGlzdCA9ICQ5Owog CQkJCQluLT53aXRoQ2xhdXNlID0gJDE7CiAJCQkJCSQkID0gKE5vZGUgKikgbjsKIAkJCQl9 CkBAIC0xMzcyMCw2ICsxMzczNiwxOSBAQCByZWxhdGlvbl9leHByX29wdF9hbGlhczogcmVs YXRpb25fZXhwcgkJCQkJJXByZWMgVU1JTlVTCiAJCQkJfQogCQk7CiAKK2Zvcl9wb3J0aW9u X29mX2NsYXVzZToKKwkJCUZPUiBQT1JUSU9OIE9GIENvbElkIEZST00gYV9leHByIFRPIGFf ZXhwcgorCQkJCXsKKwkJCQkJRm9yUG9ydGlvbk9mQ2xhdXNlICpuID0gbWFrZU5vZGUoRm9y UG9ydGlvbk9mQ2xhdXNlKTsKKwkJCQkJbi0+cmFuZ2VfbmFtZSA9ICQ0OworCQkJCQluLT5y YW5nZV9uYW1lX2xvY2F0aW9uID0gQDQ7CisJCQkJCW4tPnRhcmdldF9zdGFydCA9ICQ2Owor CQkJCQluLT50YXJnZXRfZW5kID0gJDg7CisJCQkJCSQkID0gbjsKKwkJCQl9CisJCQl8IC8q RU1QVFkqLwkJCQkJeyAkJCA9IE5VTEw7IH0KKwkJOworCiAvKgogICogVEFCTEVTQU1QTEUg ZGVjb3JhdGlvbiBpbiBhIEZST00gaXRlbQogICovCkBAIC0xNzI4Miw2ICsxNzMxMSw3IEBA IHVucmVzZXJ2ZWRfa2V5d29yZDoKIAkJCXwgUEFTU1dPUkQKIAkJCXwgUExBTlMKIAkJCXwg UE9MSUNZCisJCQl8IFBPUlRJT04KIAkJCXwgUFJFQ0VESU5HCiAJCQl8IFBSRVBBUkUKIAkJ CXwgUFJFUEFSRUQKQEAgLTE3ODg2LDYgKzE3OTE2LDcgQEAgYmFyZV9sYWJlbF9rZXl3b3Jk OgogCQkJfCBQTEFDSU5HCiAJCQl8IFBMQU5TCiAJCQl8IFBPTElDWQorCQkJfCBQT1JUSU9O CiAJCQl8IFBPU0lUSU9OCiAJCQl8IFBSRUNFRElORwogCQkJfCBQUkVQQVJFCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfYWdnLmMgYi9zcmMvYmFja2VuZC9wYXJz ZXIvcGFyc2VfYWdnLmMKaW5kZXggODVjZDQ3YjdhZS4uY2U4ZTBiZTA0NSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2FnZy5jCisrKyBiL3NyYy9iYWNrZW5kL3Bh cnNlci9wYXJzZV9hZ2cuYwpAQCAtNTYzLDYgKzU2MywxMyBAQCBjaGVja19hZ2dsZXZlbHNf YW5kX2NvbnN0cmFpbnRzKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqZXhwcikKIAkJY2Fz ZSBFWFBSX0tJTkRfQ1lDTEVfTUFSSzoKIAkJCWVycmtpbmQgPSB0cnVlOwogCQkJYnJlYWs7 CisJCWNhc2UgRVhQUl9LSU5EX1VQREFURV9QT1JUSU9OOgorCQkJaWYgKGlzQWdnKQorCQkJ CWVyciA9IF8oImFnZ3JlZ2F0ZSBmdW5jdGlvbnMgYXJlIG5vdCBhbGxvd2VkIGluIEZPUiBQ T1JUSU9OIE9GIGV4cHJlc3Npb25zIik7CisJCQllbHNlCisJCQkJZXJyID0gXygiZ3JvdXBp bmcgb3BlcmF0aW9ucyBhcmUgbm90IGFsbG93ZWQgaW4gRk9SIFBPUlRJT04gT0YgZXhwcmVz c2lvbnMiKTsKKworCQkJYnJlYWs7CiAKIAkJCS8qCiAJCQkgKiBUaGVyZSBpcyBpbnRlbnRp b25hbGx5IG5vIGRlZmF1bHQ6IGNhc2UgaGVyZSwgc28gdGhhdCB0aGUKQEAgLTk1Myw2ICs5 NjAsOSBAQCB0cmFuc2Zvcm1XaW5kb3dGdW5jQ2FsbChQYXJzZVN0YXRlICpwc3RhdGUsIFdp bmRvd0Z1bmMgKndmdW5jLAogCQljYXNlIEVYUFJfS0lORF9DWUNMRV9NQVJLOgogCQkJZXJy a2luZCA9IHRydWU7CiAJCQlicmVhazsKKwkJY2FzZSBFWFBSX0tJTkRfVVBEQVRFX1BPUlRJ T046CisJCQllcnIgPSBfKCJ3aW5kb3cgZnVuY3Rpb25zIGFyZSBub3QgYWxsb3dlZCBpbiBG T1IgUE9SVElPTiBPRiBleHByZXNzaW9ucyIpOworCQkJYnJlYWs7CiAKIAkJCS8qCiAJCQkg KiBUaGVyZSBpcyBpbnRlbnRpb25hbGx5IG5vIGRlZmF1bHQ6IGNhc2UgaGVyZSwgc28gdGhh dCB0aGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9jb2xsYXRlLmMg Yi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfY29sbGF0ZS5jCmluZGV4IGM0ODBjZTM2ODIu LmM2MzMwMWYwZjcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9jb2xs YXRlLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2NvbGxhdGUuYwpAQCAtNDg0 LDYgKzQ4NCw3IEBAIGFzc2lnbl9jb2xsYXRpb25zX3dhbGtlcihOb2RlICpub2RlLCBhc3Np Z25fY29sbGF0aW9uc19jb250ZXh0ICpjb250ZXh0KQogCQljYXNlIFRfSm9pbkV4cHI6CiAJ CWNhc2UgVF9Gcm9tRXhwcjoKIAkJY2FzZSBUX09uQ29uZmxpY3RFeHByOgorCQljYXNlIFRf Rm9yUG9ydGlvbk9mRXhwcjoKIAkJY2FzZSBUX1NvcnRHcm91cENsYXVzZToKIAkJY2FzZSBU X01lcmdlQWN0aW9uOgogCQkJKHZvaWQpIGV4cHJlc3Npb25fdHJlZV93YWxrZXIobm9kZSwK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMgYi9zcmMvYmFj a2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jCmluZGV4IDY0YzU4MmMzNDQuLmZlZTZiZDkwMmEg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMKKysrIGIvc3Jj L2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYwpAQCAtNTY2LDYgKzU2Niw5IEBAIHRyYW5z Zm9ybUNvbHVtblJlZihQYXJzZVN0YXRlICpwc3RhdGUsIENvbHVtblJlZiAqY3JlZikKIAkJ Y2FzZSBFWFBSX0tJTkRfUEFSVElUSU9OX0JPVU5EOgogCQkJZXJyID0gXygiY2Fubm90IHVz ZSBjb2x1bW4gcmVmZXJlbmNlIGluIHBhcnRpdGlvbiBib3VuZCBleHByZXNzaW9uIik7CiAJ CQlicmVhazsKKwkJY2FzZSBFWFBSX0tJTkRfVVBEQVRFX1BPUlRJT046CisJCQllcnIgPSBf KCJjYW5ub3QgdXNlIGNvbHVtbiByZWZlcmVuY2UgaW4gRk9SIFBPUlRJT04gT0YgZXhwcmVz c2lvbiIpOworCQkJYnJlYWs7CiAKIAkJCS8qCiAJCQkgKiBUaGVyZSBpcyBpbnRlbnRpb25h bGx5IG5vIGRlZmF1bHQ6IGNhc2UgaGVyZSwgc28gdGhhdCB0aGUKQEAgLTE4MTMsNiArMTgx Niw5IEBAIHRyYW5zZm9ybVN1YkxpbmsoUGFyc2VTdGF0ZSAqcHN0YXRlLCBTdWJMaW5rICpz dWJsaW5rKQogCQljYXNlIEVYUFJfS0lORF9HRU5FUkFURURfQ09MVU1OOgogCQkJZXJyID0g XygiY2Fubm90IHVzZSBzdWJxdWVyeSBpbiBjb2x1bW4gZ2VuZXJhdGlvbiBleHByZXNzaW9u Iik7CiAJCQlicmVhazsKKwkJY2FzZSBFWFBSX0tJTkRfVVBEQVRFX1BPUlRJT046CisJCQll cnIgPSBfKCJjYW5ub3QgdXNlIHN1YnF1ZXJ5IGluIEZPUiBQT1JUSU9OIE9GIGV4cHJlc3Np b24iKTsKKwkJCWJyZWFrOwogCiAJCQkvKgogCQkJICogVGhlcmUgaXMgaW50ZW50aW9uYWxs eSBubyBkZWZhdWx0OiBjYXNlIGhlcmUsIHNvIHRoYXQgdGhlCkBAIC0zMTA0LDYgKzMxMTAs OCBAQCBQYXJzZUV4cHJLaW5kTmFtZShQYXJzZUV4cHJLaW5kIGV4cHJLaW5kKQogCQkJcmV0 dXJuICJVUERBVEUiOwogCQljYXNlIEVYUFJfS0lORF9NRVJHRV9XSEVOOgogCQkJcmV0dXJu ICJNRVJHRSBXSEVOIjsKKwkJY2FzZSBFWFBSX0tJTkRfVVBEQVRFX1BPUlRJT046CisJCQly ZXR1cm4gIkZPUiBQT1JUSU9OIE9GIjsKIAkJY2FzZSBFWFBSX0tJTkRfR1JPVVBfQlk6CiAJ CQlyZXR1cm4gIkdST1VQIEJZIjsKIAkJY2FzZSBFWFBSX0tJTkRfT1JERVJfQlk6CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZnVuYy5jIGIvc3JjL2JhY2tlbmQv cGFyc2VyL3BhcnNlX2Z1bmMuYwppbmRleCA2YzI5NDcxYmIzLi5jZWYwYmVjNDZkIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZnVuYy5jCisrKyBiL3NyYy9iYWNr ZW5kL3BhcnNlci9wYXJzZV9mdW5jLmMKQEAgLTI2NTYsNiArMjY1Niw5IEBAIGNoZWNrX3Ny Zl9jYWxsX3BsYWNlbWVudChQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKmxhc3Rfc3JmLCBp bnQgbG9jYXRpb24pCiAJCWNhc2UgRVhQUl9LSU5EX0NZQ0xFX01BUks6CiAJCQllcnJraW5k ID0gdHJ1ZTsKIAkJCWJyZWFrOworCQljYXNlIEVYUFJfS0lORF9VUERBVEVfUE9SVElPTjoK KwkJCWVyciA9IF8oInNldC1yZXR1cm5pbmcgZnVuY3Rpb25zIGFyZSBub3QgYWxsb3dlZCBp biBGT1IgUE9SVElPTiBPRiBleHByZXNzaW9ucyIpOworCQkJYnJlYWs7CiAKIAkJCS8qCiAJ CQkgKiBUaGVyZSBpcyBpbnRlbnRpb25hbGx5IG5vIGRlZmF1bHQ6IGNhc2UgaGVyZSwgc28g dGhhdCB0aGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9tZXJnZS5j IGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX21lcmdlLmMKaW5kZXggOTFiMTE1NmQ5OS4u YzAwODAyYWUyMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX21lcmdl LmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX21lcmdlLmMKQEAgLTM3Miw3ICsz NzIsNyBAQCB0cmFuc2Zvcm1NZXJnZVN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBNZXJnZVN0 bXQgKnN0bXQpCiAJCQkJCXBzdGF0ZS0+cF9pc19pbnNlcnQgPSBmYWxzZTsKIAkJCQkJYWN0 aW9uLT50YXJnZXRMaXN0ID0KIAkJCQkJCXRyYW5zZm9ybVVwZGF0ZVRhcmdldExpc3QocHN0 YXRlLAotCQkJCQkJCQkJCQkJICBtZXJnZVdoZW5DbGF1c2UtPnRhcmdldExpc3QpOworCQkJ CQkJCQkJCQkJICBtZXJnZVdoZW5DbGF1c2UtPnRhcmdldExpc3QsIE5VTEwpOwogCQkJCX0K IAkJCQlicmVhazsKIAkJCWNhc2UgQ01EX0RFTEVURToKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3Jld3JpdGUvcmV3cml0ZUhhbmRsZXIuYyBiL3NyYy9iYWNrZW5kL3Jld3JpdGUvcmV3 cml0ZUhhbmRsZXIuYwppbmRleCA0MWEzNjIzMTBhLi4yNjYyYWQ4NGNlIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9yZXdyaXRlL3Jld3JpdGVIYW5kbGVyLmMKKysrIGIvc3JjL2JhY2tl bmQvcmV3cml0ZS9yZXdyaXRlSGFuZGxlci5jCkBAIC0zNDU5LDYgKzM0NTksMzAgQEAgcmV3 cml0ZVRhcmdldFZpZXcoUXVlcnkgKnBhcnNldHJlZSwgUmVsYXRpb24gdmlldykKIAkJCQkJ CQkJCSAgJnBhcnNldHJlZS0+aGFzU3ViTGlua3MpOwogCX0KIAorCWlmIChwYXJzZXRyZWUt PmZvclBvcnRpb25PZiAmJiBwYXJzZXRyZWUtPmNvbW1hbmRUeXBlID09IENNRF9VUERBVEUp CisJeworCQkvKgorCQkgKiBMaWtlIHRoZSBJTlNFUlQvVVBEQVRFIGNvZGUgYWJvdmUsIHVw ZGF0ZSB0aGUgcmVzbm9zIGluIHRoZQorCQkgKiBhdXhpbGlhcnkgVVBEQVRFIHRhcmdldGxp c3QgdG8gcmVmZXIgdG8gY29sdW1ucyBvZiB0aGUgYmFzZQorCQkgKiByZWxhdGlvbi4KKwkJ ICovCisJCWZvcmVhY2gobGMsIHBhcnNldHJlZS0+Zm9yUG9ydGlvbk9mLT5yYW5nZVNldCkK KwkJeworCQkJVGFyZ2V0RW50cnkgKnRsZSA9IChUYXJnZXRFbnRyeSAqKSBsZmlyc3QobGMp OworCQkJVGFyZ2V0RW50cnkgKnZpZXdfdGxlOworCisJCQlpZiAodGxlLT5yZXNqdW5rKQor CQkJCWNvbnRpbnVlOworCisJCQl2aWV3X3RsZSA9IGdldF90bGVfYnlfcmVzbm8odmlld190 YXJnZXRsaXN0LCB0bGUtPnJlc25vKTsKKwkJCWlmICh2aWV3X3RsZSAhPSBOVUxMICYmICF2 aWV3X3RsZS0+cmVzanVuayAmJiBJc0Eodmlld190bGUtPmV4cHIsIFZhcikpCisJCQkJdGxl LT5yZXNubyA9ICgoVmFyICopIHZpZXdfdGxlLT5leHByKS0+dmFyYXR0bm87CisJCQllbHNl CisJCQkJZWxvZyhFUlJPUiwgImF0dHJpYnV0ZSBudW1iZXIgJWQgbm90IGZvdW5kIGluIHZp ZXcgdGFyZ2V0bGlzdCIsCisJCQkJCSB0bGUtPnJlc25vKTsKKwkJfQorCX0KKwogCS8qCiAJ ICogRm9yIFVQREFURS9ERUxFVEUsIHB1bGwgdXAgYW55IFdIRVJFIHF1YWxzIGZyb20gdGhl IHZpZXcuICBXZSBrbm93IHRoYXQKIAkgKiBhbnkgVmFycyBpbiB0aGUgcXVhbHMgbXVzdCBy ZWZlcmVuY2UgdGhlIG9uZSBiYXNlIHJlbGF0aW9uLCBzbyB3ZSBuZWVkCkBAIC0zNzk3LDYg KzM4MjEsMjIgQEAgUmV3cml0ZVF1ZXJ5KFF1ZXJ5ICpwYXJzZXRyZWUsIExpc3QgKnJld3Jp dGVfZXZlbnRzLCBpbnQgb3JpZ19ydF9sZW5ndGgpCiAJCWVsc2UgaWYgKGV2ZW50ID09IENN RF9VUERBVEUpCiAJCXsKIAkJCUFzc2VydChwYXJzZXRyZWUtPm92ZXJyaWRlID09IE9WRVJS SURJTkdfTk9UX1NFVCk7CisJCQkvKgorCQkJICogVXBkYXRlIEZPUiBQT1JUSU9OIE9GIGNv bHVtbihzKSBhdXRvbWF0aWNhbGx5LiBEb24ndAorCQkJICogZG8gdGhpcyB1bnRpbCB3ZSdy ZSBkb25lIHJld3JpdGluZyBhIHZpZXcgdXBkYXRlLCBzbworCQkJICogdGhhdCB3ZSBkb24n dCBhZGQgdGhlIHNhbWUgdXBkYXRlIG9uIHRoZSByZWN1cnNpb24uCisJCQkgKi8KKwkJCWlm IChwYXJzZXRyZWUtPmZvclBvcnRpb25PZiAmJgorCQkJCXJ0X2VudHJ5X3JlbGF0aW9uLT5y ZF9yZWwtPnJlbGtpbmQgIT0gUkVMS0lORF9WSUVXKQorCQkJeworCQkJCUxpc3RDZWxsICp0 bDsKKwkJCQlmb3JlYWNoKHRsLCBwYXJzZXRyZWUtPmZvclBvcnRpb25PZi0+cmFuZ2VTZXQp CisJCQkJeworCQkJCQlUYXJnZXRFbnRyeSAqdGxlID0gKFRhcmdldEVudHJ5ICopIGxmaXJz dCh0bCk7CisJCQkJCXBhcnNldHJlZS0+dGFyZ2V0TGlzdCA9IGxhcHBlbmQocGFyc2V0cmVl LT50YXJnZXRMaXN0LCB0bGUpOworCQkJCX0KKwkJCX0KKwogCQkJcGFyc2V0cmVlLT50YXJn ZXRMaXN0ID0KIAkJCQlyZXdyaXRlVGFyZ2V0TGlzdElVKHBhcnNldHJlZS0+dGFyZ2V0TGlz dCwKIAkJCQkJCQkJCXBhcnNldHJlZS0+Y29tbWFuZFR5cGUsCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC90Y29wL3V0aWxpdHkuYyBiL3NyYy9iYWNrZW5kL3Rjb3AvdXRpbGl0eS5jCmlu ZGV4IGUzY2NmNmM3ZjcuLjY3ODFlNTUwMjAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Rj b3AvdXRpbGl0eS5jCisrKyBiL3NyYy9iYWNrZW5kL3Rjb3AvdXRpbGl0eS5jCkBAIC0xNTYw LDcgKzE1NjAsNyBAQCBQcm9jZXNzVXRpbGl0eVNsb3coUGFyc2VTdGF0ZSAqcHN0YXRlLAog CQkJCQkJCQkJdHJ1ZSwJLyogY2hlY2tfcmlnaHRzICovCiAJCQkJCQkJCQl0cnVlLAkvKiBj aGVja19ub3RfaW5fdXNlICovCiAJCQkJCQkJCQlmYWxzZSwJLyogc2tpcF9idWlsZCAqLwot CQkJCQkJCQkJZmFsc2UpOyAvKiBxdWlldCAqLworCQkJCQkJCQkJZmFsc2UpOwkvKiBxdWll dCAqLwogCiAJCQkJCS8qCiAJCQkJCSAqIEFkZCB0aGUgQ1JFQVRFIElOREVYIG5vZGUgaXRz ZWxmIHRvIHN0YXNoIHJpZ2h0IGF3YXk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGls cy9hZHQvTWFrZWZpbGUgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvTWFrZWZpbGUKaW5kZXgg MGRlMGJiYjFiOC4uYTRmMjI2ZWM4ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L01ha2VmaWxlCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9NYWtlZmlsZQpAQCAt NzgsNiArNzgsNyBAQCBPQkpTID0gXAogCW9yYWNsZV9jb21wYXQubyBcCiAJb3JkZXJlZHNl dGFnZ3MubyBcCiAJcGFydGl0aW9uZnVuY3MubyBcCisJcGVyaW9kLm8gXAogCXBnX2xvY2Fs ZS5vIFwKIAlwZ19sc24ubyBcCiAJcGdfdXBncmFkZV9zdXBwb3J0Lm8gXApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BlcmlvZC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L3BlcmlvZC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjBl ZDQzMDRlMTYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcGVy aW9kLmMKQEAgLTAsMCArMSw1NiBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICog cGVyaW9kLmMKKyAqCSAgRnVuY3Rpb25zIHRvIHN1cHBvcnQgcGVyaW9kcy4KKyAqCisgKgor ICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMjIsIFBvc3RncmVTUUwgR2xvYmFs IERldmVsb3BtZW50IEdyb3VwCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTQsIFJl Z2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQorICoKKyAqCisgKiBJREVO VElGSUNBVElPTgorICoJICBzcmMvYmFja2VuZC91dGlscy9hZHQvcGVyaW9kLmMKKyAqCisg Ki0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworI2luY2x1ZGUgInBvc3RncmVzLmgiCisKKyNp bmNsdWRlICJleGVjdXRvci90dXB0YWJsZS5oIgorI2luY2x1ZGUgImZtZ3IuaCIKKyNpbmNs dWRlICJub2Rlcy9wcmltbm9kZXMuaCIKKyNpbmNsdWRlICJ1dGlscy9mbWdycHJvdG9zLmgi CisjaW5jbHVkZSAidXRpbHMvcGVyaW9kLmgiCisjaW5jbHVkZSAidXRpbHMvcmFuZ2V0eXBl cy5oIgorCitEYXR1bSBwZXJpb2RfdG9fcmFuZ2UoVHVwbGVUYWJsZVNsb3QgKnNsb3QsIGlu dCBzdGFydGF0dG5vLCBpbnQgZW5kYXR0bm8sIE9pZCByYW5nZXR5cGUpCit7CisJRGF0dW0g c3RhcnR2YWx1ZTsKKwlEYXR1bSBlbmR2YWx1ZTsKKwlEYXR1bSByZXN1bHQ7CisJYm9vbAlz dGFydGlzbnVsbDsKKwlib29sCWVuZGlzbnVsbDsKKwlMT0NBTF9GQ0lORk8oZmNpbmZvLCAy KTsKKwlGbWdySW5mbwlmbGluZm87CisJRnVuY0V4cHIgICAqZjsKKworCUluaXRGdW5jdGlv bkNhbGxJbmZvRGF0YSgqZmNpbmZvLCAmZmxpbmZvLCAyLCBJbnZhbGlkT2lkLCBOVUxMLCBO VUxMKTsKKwlmID0gbWFrZU5vZGUoRnVuY0V4cHIpOworCWYtPmZ1bmNyZXN1bHR0eXBlID0g cmFuZ2V0eXBlOworCWZsaW5mby5mbl9leHByID0gKE5vZGUgKikgZjsKKwlmbGluZm8uZm5f ZXh0cmEgPSBOVUxMOworCisJLyogY29tcHV0ZSBvbGR2YWx1ZSAqLworCXN0YXJ0dmFsdWUg PSBzbG90X2dldGF0dHIoc2xvdCwgc3RhcnRhdHRubywgJnN0YXJ0aXNudWxsKTsKKwllbmR2 YWx1ZSA9IHNsb3RfZ2V0YXR0cihzbG90LCBlbmRhdHRubywgJmVuZGlzbnVsbCk7CisKKwlm Y2luZm8tPmFyZ3NbMF0udmFsdWUgPSBzdGFydHZhbHVlOworCWZjaW5mby0+YXJnc1swXS5p c251bGwgPSBzdGFydGlzbnVsbDsKKwlmY2luZm8tPmFyZ3NbMV0udmFsdWUgPSBlbmR2YWx1 ZTsKKwlmY2luZm8tPmFyZ3NbMV0uaXNudWxsID0gZW5kaXNudWxsOworCisJcmVzdWx0ID0g cmFuZ2VfY29uc3RydWN0b3IyKGZjaW5mbyk7CisJaWYgKGZjaW5mby0+aXNudWxsKQorCQll bG9nKEVSUk9SLCAiZnVuY3Rpb24gJXUgcmV0dXJuZWQgTlVMTCIsIGZsaW5mby5mbl9vaWQp OworCisJcmV0dXJuIHJlc3VsdDsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC9yYW5nZXR5cGVzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcmFuZ2V0eXBlcy5j CmluZGV4IDI0YmFkNTI5MjMuLjQzYTU4MGI1YWUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9yYW5nZXR5cGVzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Jh bmdldHlwZXMuYwpAQCAtMTIwNiw2ICsxMjA2LDQ4IEBAIHJhbmdlX3NwbGl0X2ludGVybmFs KFR5cGVDYWNoZUVudHJ5ICp0eXBjYWNoZSwgY29uc3QgUmFuZ2VUeXBlICpyMSwgY29uc3Qg UmFuZ2VUCiAJcmV0dXJuIGZhbHNlOwogfQogCisvKgorICogcmFuZ2VfbGVmdG92ZXJfaW50 ZXJuYWwgLSBTZXRzIG91dHB1dDEgYW5kIG91dHB1dDIgdG8gdGhlIHJlbWFpbmluZyBwYXJ0 cyBvZiByMQorICogYWZ0ZXIgc3VidHJhY3RpbmcgcjIsIG9yIGlmIG5vdGhpbmcgaXMgbGVm dCB0aGVuIHRvIHRoZSBlbXB0eSByYW5nZS4KKyAqIG91dHB1dDEgd2lsbCBhbHdheXMgYmUg ImJlZm9yZSIgcjIgYW5kIG91dHB1dDIgImFmdGVyIi4KKyAqLwordm9pZAorcmFuZ2VfbGVm dG92ZXJfaW50ZXJuYWwoVHlwZUNhY2hlRW50cnkgKnR5cGNhY2hlLCBjb25zdCBSYW5nZVR5 cGUgKnIxLAorCQkJCQkJY29uc3QgUmFuZ2VUeXBlICpyMiwgUmFuZ2VUeXBlICoqb3V0cHV0 MSwgUmFuZ2VUeXBlICoqb3V0cHV0MikKK3sKKwlSYW5nZUJvdW5kCWxvd2VyMSwKKwkJCQls b3dlcjI7CisJUmFuZ2VCb3VuZAl1cHBlcjEsCisJCQkJdXBwZXIyOworCWJvb2wJCWVtcHR5 MSwKKwkJCQllbXB0eTI7CisKKwlyYW5nZV9kZXNlcmlhbGl6ZSh0eXBjYWNoZSwgcjEsICZs b3dlcjEsICZ1cHBlcjEsICZlbXB0eTEpOworCXJhbmdlX2Rlc2VyaWFsaXplKHR5cGNhY2hl LCByMiwgJmxvd2VyMiwgJnVwcGVyMiwgJmVtcHR5Mik7CisKKwlpZiAocmFuZ2VfY21wX2Jv dW5kcyh0eXBjYWNoZSwgJmxvd2VyMSwgJmxvd2VyMikgPCAwKQorCXsKKwkJbG93ZXIyLmlu Y2x1c2l2ZSA9ICFsb3dlcjIuaW5jbHVzaXZlOworCQlsb3dlcjIubG93ZXIgPSBmYWxzZTsK KwkJKm91dHB1dDEgPSBtYWtlX3JhbmdlKHR5cGNhY2hlLCAmbG93ZXIxLCAmbG93ZXIyLCBm YWxzZSwgTlVMTCk7CisJfQorCWVsc2UKKwl7CisJCSpvdXRwdXQxID0gbWFrZV9lbXB0eV9y YW5nZSh0eXBjYWNoZSk7CisJfQorCisJaWYgKHJhbmdlX2NtcF9ib3VuZHModHlwY2FjaGUs ICZ1cHBlcjEsICZ1cHBlcjIpID4gMCkKKwl7CisJCXVwcGVyMi5pbmNsdXNpdmUgPSAhdXBw ZXIyLmluY2x1c2l2ZTsKKwkJdXBwZXIyLmxvd2VyID0gdHJ1ZTsKKwkJKm91dHB1dDIgPSBt YWtlX3JhbmdlKHR5cGNhY2hlLCAmdXBwZXIyLCAmdXBwZXIxLCBmYWxzZSwgTlVMTCk7CisJ fQorCWVsc2UKKwl7CisJCSpvdXRwdXQyID0gbWFrZV9lbXB0eV9yYW5nZSh0eXBjYWNoZSk7 CisJfQorfQorCiAvKiByYW5nZSAtPiByYW5nZSBhZ2dyZWdhdGUgZnVuY3Rpb25zICovCiAK IERhdHVtCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcmlfdHJpZ2dlcnMu YyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yaV90cmlnZ2Vycy5jCmluZGV4IGFiYTBlNjJk ZjYuLjg1NTJmNDM0ZDUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yaV90 cmlnZ2Vycy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yaV90cmlnZ2Vycy5jCkBA IC0yMjcsNiArMjI3LDcgQEAgc3RhdGljIGJvb2wgcmlfUGVyZm9ybUNoZWNrKGNvbnN0IFJJ X0NvbnN0cmFpbnRJbmZvICpyaWluZm8sCiAJCQkJCQkJUklfUXVlcnlLZXkgKnFrZXksIFNQ SVBsYW5QdHIgcXBsYW4sCiAJCQkJCQkJUmVsYXRpb24gZmtfcmVsLCBSZWxhdGlvbiBwa19y ZWwsCiAJCQkJCQkJVHVwbGVUYWJsZVNsb3QgKm9sZHNsb3QsIFR1cGxlVGFibGVTbG90ICpu ZXdzbG90LAorCQkJCQkJCWludCBmb3JQb3J0aW9uT2ZQYXJhbSwgRGF0dW0gZm9yUG9ydGlv bk9mLAogCQkJCQkJCWJvb2wgZGV0ZWN0TmV3Um93cywgaW50IGV4cGVjdF9PSyk7CiBzdGF0 aWMgdm9pZCByaV9FeHRyYWN0VmFsdWVzKFJlbGF0aW9uIHJlbCwgVHVwbGVUYWJsZVNsb3Qg KnNsb3QsCiAJCQkJCQkJIGNvbnN0IFJJX0NvbnN0cmFpbnRJbmZvICpyaWluZm8sIGJvb2wg cmVsX2lzX3BrLApAQCAtMjM1LDYgKzIzNiwxMSBAQCBzdGF0aWMgdm9pZCByaV9SZXBvcnRW aW9sYXRpb24oY29uc3QgUklfQ29uc3RyYWludEluZm8gKnJpaW5mbywKIAkJCQkJCQkgICBS ZWxhdGlvbiBwa19yZWwsIFJlbGF0aW9uIGZrX3JlbCwKIAkJCQkJCQkgICBUdXBsZVRhYmxl U2xvdCAqdmlvbGF0b3JzbG90LCBUdXBsZURlc2MgdHVwZGVzYywKIAkJCQkJCQkgICBpbnQg cXVlcnlubywgYm9vbCBwYXJ0Z29uZSkgcGdfYXR0cmlidXRlX25vcmV0dXJuKCk7CitzdGF0 aWMgYm9vbCBmcG9fdGFyZ2V0c19wa19yYW5nZShjb25zdCBGb3JQb3J0aW9uT2ZTdGF0ZSAq dGdfdGVtcG9yYWwsCisJCQkJCQkJCSBjb25zdCBSSV9Db25zdHJhaW50SW5mbyAqcmlpbmZv KTsKK3N0YXRpYyBEYXR1bSByZXN0cmljdF9jYXNjYWRpbmdfcmFuZ2UoY29uc3QgRm9yUG9y dGlvbk9mU3RhdGUgKnRnX3RlbXBvcmFsLAorCQkJCQkJCQkJICBjb25zdCBSSV9Db25zdHJh aW50SW5mbyAqcmlpbmZvLAorCQkJCQkJCQkJICBUdXBsZVRhYmxlU2xvdCAqb2xkc2xvdCk7 CiAKIAogLyoKQEAgLTQ0NCw2ICs0NTAsNyBAQCBSSV9GS2V5X2NoZWNrKFRyaWdnZXJEYXRh ICp0cmlnZGF0YSkKIAlyaV9QZXJmb3JtQ2hlY2socmlpbmZvLCAmcWtleSwgcXBsYW4sCiAJ CQkJCWZrX3JlbCwgcGtfcmVsLAogCQkJCQlOVUxMLCBuZXdzbG90LAorCQkJCQktMSwgMCwK IAkJCQkJcGtfcmVsLT5yZF9yZWwtPnJlbGtpbmQgPT0gUkVMS0lORF9QQVJUSVRJT05FRF9U QUJMRSwKIAkJCQkJU1BJX09LX1NFTEVDVCk7CiAKQEAgLTYwMSw2ICs2MDgsNyBAQCByaV9D aGVja19Qa19NYXRjaChSZWxhdGlvbiBwa19yZWwsIFJlbGF0aW9uIGZrX3JlbCwKIAlyZXN1 bHQgPSByaV9QZXJmb3JtQ2hlY2socmlpbmZvLCAmcWtleSwgcXBsYW4sCiAJCQkJCQkJIGZr X3JlbCwgcGtfcmVsLAogCQkJCQkJCSBvbGRzbG90LCBOVUxMLAorCQkJCQkJCSAtMSwgMCwK IAkJCQkJCQkgdHJ1ZSwJLyogdHJlYXQgbGlrZSB1cGRhdGUgKi8KIAkJCQkJCQkgU1BJX09L X1NFTEVDVCk7CiAKQEAgLTcwMCw2ICs3MDgsOCBAQCByaV9yZXN0cmljdChUcmlnZ2VyRGF0 YSAqdHJpZ2RhdGEsIGJvb2wgaXNfbm9fYWN0aW9uKQogCVR1cGxlVGFibGVTbG90ICpvbGRz bG90OwogCVJJX1F1ZXJ5S2V5IHFrZXk7CiAJU1BJUGxhblB0cglxcGxhbjsKKwlpbnQJCQl0 YXJnZXRSYW5nZVBhcmFtID0gLTE7CisJRGF0dW0JCXRhcmdldFJhbmdlID0gMDsKIAogCXJp aW5mbyA9IHJpX0ZldGNoQ29uc3RyYWludEluZm8odHJpZ2RhdGEtPnRnX3RyaWdnZXIsCiAJ CQkJCQkJCQl0cmlnZGF0YS0+dGdfcmVsYXRpb24sIHRydWUpOwpAQCAtNzk2LDkgKzgwNiwx NiBAQCByaV9yZXN0cmljdChUcmlnZ2VyRGF0YSAqdHJpZ2RhdGEsIGJvb2wgaXNfbm9fYWN0 aW9uKQogCS8qCiAJICogV2UgaGF2ZSBhIHBsYW4gbm93LiBSdW4gaXQgdG8gY2hlY2sgZm9y IGV4aXN0aW5nIHJlZmVyZW5jZXMuCiAJICovCisJaWYgKHRyaWdkYXRhLT50Z190ZW1wb3Jh bCkKKwl7CisJCXRhcmdldFJhbmdlUGFyYW0gPSByaWluZm8tPm5rZXlzIC0gMTsKKwkJdGFy Z2V0UmFuZ2UgPSByZXN0cmljdF9jYXNjYWRpbmdfcmFuZ2UodHJpZ2RhdGEtPnRnX3RlbXBv cmFsLCByaWluZm8sIG9sZHNsb3QpOworCX0KKwogCXJpX1BlcmZvcm1DaGVjayhyaWluZm8s ICZxa2V5LCBxcGxhbiwKIAkJCQkJZmtfcmVsLCBwa19yZWwsCiAJCQkJCW9sZHNsb3QsIE5V TEwsCisJCQkJCXRhcmdldFJhbmdlUGFyYW0sIHRhcmdldFJhbmdlLAogCQkJCQl0cnVlLAkJ LyogbXVzdCBkZXRlY3QgbmV3IHJvd3MgKi8KIAkJCQkJU1BJX09LX1NFTEVDVCk7CiAKQEAg LTkwNSw2ICs5MjIsNyBAQCBSSV9GS2V5X2Nhc2NhZGVfZGVsKFBHX0ZVTkNUSU9OX0FSR1Mp CiAJcmlfUGVyZm9ybUNoZWNrKHJpaW5mbywgJnFrZXksIHFwbGFuLAogCQkJCQlma19yZWws IHBrX3JlbCwKIAkJCQkJb2xkc2xvdCwgTlVMTCwKKwkJCQkJLTEsIDAsCiAJCQkJCXRydWUs CQkvKiBtdXN0IGRldGVjdCBuZXcgcm93cyAqLwogCQkJCQlTUElfT0tfREVMRVRFKTsKIApA QCAtMTAyNiw2ICsxMDQ0LDcgQEAgUklfRktleV9jYXNjYWRlX3VwZChQR19GVU5DVElPTl9B UkdTKQogCXJpX1BlcmZvcm1DaGVjayhyaWluZm8sICZxa2V5LCBxcGxhbiwKIAkJCQkJZmtf cmVsLCBwa19yZWwsCiAJCQkJCW9sZHNsb3QsIG5ld3Nsb3QsCisJCQkJCS0xLCAwLAogCQkJ CQl0cnVlLAkJLyogbXVzdCBkZXRlY3QgbmV3IHJvd3MgKi8KIAkJCQkJU1BJX09LX1VQREFU RSk7CiAKQEAgLTEyNTgsNiArMTI3Nyw3IEBAIHJpX3NldChUcmlnZ2VyRGF0YSAqdHJpZ2Rh dGEsIGJvb2wgaXNfc2V0X251bGwsIGludCB0Z2tpbmQpCiAJcmlfUGVyZm9ybUNoZWNrKHJp aW5mbywgJnFrZXksIHFwbGFuLAogCQkJCQlma19yZWwsIHBrX3JlbCwKIAkJCQkJb2xkc2xv dCwgTlVMTCwKKwkJCQkJLTEsIDAsCiAJCQkJCXRydWUsCQkvKiBtdXN0IGRldGVjdCBuZXcg cm93cyAqLwogCQkJCQlTUElfT0tfVVBEQVRFKTsKIApAQCAtMjUyMCw2ICsyNTQwLDcgQEAg cmlfUGVyZm9ybUNoZWNrKGNvbnN0IFJJX0NvbnN0cmFpbnRJbmZvICpyaWluZm8sCiAJCQkJ UklfUXVlcnlLZXkgKnFrZXksIFNQSVBsYW5QdHIgcXBsYW4sCiAJCQkJUmVsYXRpb24gZmtf cmVsLCBSZWxhdGlvbiBwa19yZWwsCiAJCQkJVHVwbGVUYWJsZVNsb3QgKm9sZHNsb3QsIFR1 cGxlVGFibGVTbG90ICpuZXdzbG90LAorCQkJCWludCBmb3JQb3J0aW9uT2ZQYXJhbSwgRGF0 dW0gZm9yUG9ydGlvbk9mLAogCQkJCWJvb2wgZGV0ZWN0TmV3Um93cywgaW50IGV4cGVjdF9P SykKIHsKIAlSZWxhdGlvbglxdWVyeV9yZWwsCkBAIC0yNTc1LDYgKzI1OTYsMTIgQEAgcmlf UGVyZm9ybUNoZWNrKGNvbnN0IFJJX0NvbnN0cmFpbnRJbmZvICpyaWluZm8sCiAJCXJpX0V4 dHJhY3RWYWx1ZXMoc291cmNlX3JlbCwgb2xkc2xvdCwgcmlpbmZvLCBzb3VyY2VfaXNfcGss CiAJCQkJCQkgdmFscywgbnVsbHMpOwogCX0KKwkvKiBBZGQgb25lIG1vcmUgcXVlcnkgcGFy YW0gaWYgd2UgYXJlIHVzaW5nIEZPUiBQT1JUSU9OIE9GICovCisJaWYgKGZvclBvcnRpb25P ZikKKwl7CisJCXZhbHNbZm9yUG9ydGlvbk9mUGFyYW1dID0gZm9yUG9ydGlvbk9mOworCQlu dWxsc1tmb3JQb3J0aW9uT2ZQYXJhbV0gPSAnICc7CisJfQogCiAJLyoKIAkgKiBJbiBSRUFE IENPTU1JVFRFRCBtb2RlLCB3ZSBqdXN0IG5lZWQgdG8gdXNlIGFuIHVwLXRvLWRhdGUgcmVn dWxhcgpAQCAtMzI4OCwzICszMzE1LDUwIEBAIFJJX0ZLZXlfdHJpZ2dlcl90eXBlKE9pZCB0 Z2ZvaWQpCiAKIAlyZXR1cm4gUklfVFJJR0dFUl9OT05FOwogfQorCisvKgorICogZnBvX3Rh cmdldHNfcGtfcmFuZ2UKKyAqCisgKiBSZXR1cm5zIHRydWUgaWZmIHRoZSBwcmltYXJ5IGtl eSByZWZlcmVuY2VkIGJ5IHJpaW5mbyBpbmNsdWRlcyB0aGUgcmFuZ2UKKyAqIGNvbHVtbiB0 YXJnZXRlZCBieSB0aGUgRk9SIFBPUlRJT04gT0YgY2xhdXNlIChhY2NvcmRpbmcgdG8gdGdf dGVtcG9yYWwpLgorICovCitzdGF0aWMgYm9vbAorZnBvX3RhcmdldHNfcGtfcmFuZ2UoY29u c3QgRm9yUG9ydGlvbk9mU3RhdGUgKnRnX3RlbXBvcmFsLCBjb25zdCBSSV9Db25zdHJhaW50 SW5mbyAqcmlpbmZvKQoreworCWlmICh0Z190ZW1wb3JhbCA9PSBOVUxMKQorCQlyZXR1cm4g ZmFsc2U7CisKKwlyZXR1cm4gcmlpbmZvLT5wa19hdHRudW1zW3JpaW5mby0+bmtleXMgLSAx XSA9PSB0Z190ZW1wb3JhbC0+ZnBfcmFuZ2VBdHRubzsKK30KKworLyoKKyAqIHJlc3RyaWN0 X2Nhc2NhZGluZ19yYW5nZSAtCisgKgorICogUmV0dXJucyBhIERhdHVtIG9mIFJhbmdlVHlw ZVAgaG9sZGluZyB0aGUgYXBwcm9wcmlhdGUgdGltZXNwYW4KKyAqIHRvIHRhcmdldCBjaGls ZCByZWNvcmRzIHdoZW4gd2UgQ0FTQ0FERS9TRVQgTlVMTC9TRVQgREVGQVVMVC4KKyAqCisg KiBJbiBhIG5vcm1hbCBVUERBVEUvREVMRVRFIHRoaXMgc2hvdWxkIGJlIHRoZSBwYXJlbnQn cyBvd24gdmFsaWQgdGltZSwKKyAqIGJ1dCBpZiB0aGVyZSB3YXMgYSBGT1IgUE9SVElPTiBP RiBjbGF1c2UsIHRoZW4gd2Ugc2hvdWxkIHVzZSB0aGF0IHRvCisgKiB0cmltIGRvd24gdGhl IHBhcmVudCdzIHNwYW4gZnVydGhlci4KKyAqLworc3RhdGljIERhdHVtCityZXN0cmljdF9j YXNjYWRpbmdfcmFuZ2UoY29uc3QgRm9yUG9ydGlvbk9mU3RhdGUgKnRnX3RlbXBvcmFsLCBj b25zdCBSSV9Db25zdHJhaW50SW5mbyAqcmlpbmZvLCBUdXBsZVRhYmxlU2xvdCAqb2xkc2xv dCkKK3sKKwlEYXR1bQlwa1JlY29yZFJhbmdlOworCWJvb2wJaXNudWxsOworCisJcGtSZWNv cmRSYW5nZSA9IHNsb3RfZ2V0YXR0cihvbGRzbG90LCByaWluZm8tPnBrX2F0dG51bXNbcmlp bmZvLT5ua2V5cyAtIDFdLCAmaXNudWxsKTsKKwlpZiAoaXNudWxsKQorCQllbG9nKEVSUk9S LCAiYXBwbGljYXRpb24gdGltZSBzaG91bGQgbm90IGJlIG51bGwiKTsKKworCWlmIChmcG9f dGFyZ2V0c19wa19yYW5nZSh0Z190ZW1wb3JhbCwgcmlpbmZvKSkKKwl7CisJCVJhbmdlVHlw ZSAqcjEgPSBEYXR1bUdldFJhbmdlVHlwZVAocGtSZWNvcmRSYW5nZSk7CisJCVJhbmdlVHlw ZSAqcjIgPSBEYXR1bUdldFJhbmdlVHlwZVAodGdfdGVtcG9yYWwtPmZwX3RhcmdldFJhbmdl KTsKKwkJT2lkIHJuZ3R5cGlkID0gUmFuZ2VUeXBlR2V0T2lkKHIxKTsKKwkJVHlwZUNhY2hl RW50cnkgKnR5cGNhY2hlID0gbG9va3VwX3R5cGVfY2FjaGUocm5ndHlwaWQsIFRZUEVDQUNI RV9SQU5HRV9JTkZPKTsKKwkJcmV0dXJuIFJhbmdlVHlwZVBHZXREYXR1bShyYW5nZV9pbnRl cnNlY3RfaW50ZXJuYWwodHlwY2FjaGUsIHIxLCByMikpOworCX0KKwllbHNlCisJCXJldHVy biBwa1JlY29yZFJhbmdlOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2Fj aGUvbHN5c2NhY2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9sc3lzY2FjaGUuYwpp bmRleCBmYzZkMjY3ZTQ0Li5kYjI0NWU2NWFkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91 dGlscy9jYWNoZS9sc3lzY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9s c3lzY2FjaGUuYwpAQCAtMjE3MCw2ICsyMTcwLDU5IEBAIGdldF90eXBpc2RlZmluZWQoT2lk IHR5cGlkKQogCQlyZXR1cm4gZmFsc2U7CiB9CiAKKy8qCisgKiBnZXRfdHlwbmFtZQorICoK KyAqCSAgUmV0dXJucyB0aGUgbmFtZSBvZiBhIGdpdmVuIHR5cGUKKyAqCisgKiBSZXR1cm5z IGEgcGFsbG9jJ2QgY29weSBvZiB0aGUgc3RyaW5nLCBvciBOVUxMIGlmIG5vIHN1Y2ggdHlw ZS4KKyAqLworY2hhciAqCitnZXRfdHlwbmFtZShPaWQgdHlwaWQpCit7CisJSGVhcFR1cGxl ICAgdHA7CisKKwl0cCA9IFNlYXJjaFN5c0NhY2hlMShUWVBFT0lELCBPYmplY3RJZEdldERh dHVtKHR5cGlkKSk7CisJaWYgKEhlYXBUdXBsZUlzVmFsaWQodHApKQorCXsKKwkJRm9ybV9w Z190eXBlIHR5cHR1cCA9IChGb3JtX3BnX3R5cGUpIEdFVFNUUlVDVCh0cCk7CisJCWNoYXIJ ICAgKnJlc3VsdDsKKworCQlyZXN1bHQgPSBwc3RyZHVwKE5hbWVTdHIodHlwdHVwLT50eXBu YW1lKSk7CisJCVJlbGVhc2VTeXNDYWNoZSh0cCk7CisJCXJldHVybiByZXN1bHQ7CisJfQor CWVsc2UKKwkJcmV0dXJuIE5VTEw7Cit9CisKKy8qCisgKiBnZXRfdHlwbmFtZV9hbmRfbmFt ZXNwYWNlCisgKgorICoJICBSZXR1cm5zIHRoZSBuYW1lIGFuZCBuYW1lc3BhY2Ugb2YgYSBn aXZlbiB0eXBlCisgKgorICogUmV0dXJucyB0cnVlIGlmIG9uZSBmb3VuZCwgb3IgZmFsc2Ug aWYgbm90LgorICovCitib29sCitnZXRfdHlwbmFtZV9hbmRfbmFtZXNwYWNlKE9pZCB0eXBp ZCwgY2hhciAqKnR5cG5hbWUsIGNoYXIgKip0eXBuYW1lc3BhY2UpCit7CisJSGVhcFR1cGxl CXRwOworCisJdHAgPSBTZWFyY2hTeXNDYWNoZTEoVFlQRU9JRCwgT2JqZWN0SWRHZXREYXR1 bSh0eXBpZCkpOworCWlmIChIZWFwVHVwbGVJc1ZhbGlkKHRwKSkKKwl7CisJCUZvcm1fcGdf dHlwZSB0eXB0dXAgPSAoRm9ybV9wZ190eXBlKSBHRVRTVFJVQ1QodHApOworCisJCSp0eXBu YW1lID0gcHN0cmR1cChOYW1lU3RyKHR5cHR1cC0+dHlwbmFtZSkpOworCQkqdHlwbmFtZXNw YWNlID0gZ2V0X25hbWVzcGFjZV9uYW1lKHR5cHR1cC0+dHlwbmFtZXNwYWNlKTsKKwkJUmVs ZWFzZVN5c0NhY2hlKHRwKTsKKwkJLyogKnR5cG5hbWVzcGFjZSBpcyBOVUxMIGlmIGl0IHdh c24ndCBmb3VuZDogKi8KKwkJcmV0dXJuICp0eXBuYW1lc3BhY2U7CisJfQorCWVsc2UKKwkJ cmV0dXJuIGZhbHNlOworfQorCiAvKgogICogZ2V0X3R5cGxlbgogICoKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL2NvbW1hbmRzL3RyaWdnZXIuaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRz L3RyaWdnZXIuaAppbmRleCA0MzBlM2NhN2RkLi5iM2Q5MGRlYWE3IDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9jb21tYW5kcy90cmlnZ2VyLmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFu ZHMvdHJpZ2dlci5oCkBAIC00MSw2ICs0MSw3IEBAIHR5cGVkZWYgc3RydWN0IFRyaWdnZXJE YXRhCiAJVHVwbGVzdG9yZXN0YXRlICp0Z19vbGR0YWJsZTsKIAlUdXBsZXN0b3Jlc3RhdGUg KnRnX25ld3RhYmxlOwogCWNvbnN0IEJpdG1hcHNldCAqdGdfdXBkYXRlZGNvbHM7CisJRm9y UG9ydGlvbk9mU3RhdGUgKnRnX3RlbXBvcmFsOwogfSBUcmlnZ2VyRGF0YTsKIAogLyoKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oIGIvc3JjL2luY2x1ZGUv bm9kZXMvZXhlY25vZGVzLmgKaW5kZXggNWQ3ZjE3ZGVlMC4uNDdhNGFiM2RhZCAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUv bm9kZXMvZXhlY25vZGVzLmgKQEAgLTQxLDEyICs0MSwxNCBAQAogI2luY2x1ZGUgInN0b3Jh Z2UvY29uZGl0aW9uX3ZhcmlhYmxlLmgiCiAjaW5jbHVkZSAidXRpbHMvaHNlYXJjaC5oIgog I2luY2x1ZGUgInV0aWxzL3F1ZXJ5ZW52aXJvbm1lbnQuaCIKKyNpbmNsdWRlICJ1dGlscy9y YW5nZXR5cGVzLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsdHJpZ2dlci5oIgogI2luY2x1ZGUg InV0aWxzL3NoYXJlZHR1cGxlc3RvcmUuaCIKICNpbmNsdWRlICJ1dGlscy9zbmFwc2hvdC5o IgogI2luY2x1ZGUgInV0aWxzL3NvcnRzdXBwb3J0LmgiCiAjaW5jbHVkZSAidXRpbHMvdHVw bGVzb3J0LmgiCiAjaW5jbHVkZSAidXRpbHMvdHVwbGVzdG9yZS5oIgorI2luY2x1ZGUgInV0 aWxzL3R5cGNhY2hlLmgiCiAKIHN0cnVjdCBQbGFuU3RhdGU7CQkJCS8qIGZvcndhcmQgcmVm ZXJlbmNlcyBpbiB0aGlzIGZpbGUgKi8KIHN0cnVjdCBQYXJhbGxlbEhhc2hKb2luU3RhdGU7 CkBAIC00MjEsNiArNDIzLDI4IEBAIHR5cGVkZWYgc3RydWN0IE1lcmdlQWN0aW9uU3RhdGUK IAlFeHByU3RhdGUgICptYXNfd2hlbnF1YWw7CS8qIFdIRU4gW05PVF0gTUFUQ0hFRCBBTkQg Y29uZGl0aW9ucyAqLwogfSBNZXJnZUFjdGlvblN0YXRlOwogCisvKgorICogRm9yUG9ydGlv bk9mU3RhdGUKKyAqCisgKiBFeGVjdXRvciBzdGF0ZSBvZiBhIEZPUiBQT1JUSU9OIE9GIG9w ZXJhdGlvbi4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgRm9yUG9ydGlvbk9mU3RhdGUKK3sKKwlO b2RlVGFnCQl0eXBlOworCisJY2hhciAgICpmcF9yYW5nZU5hbWU7CQkvKiB0aGUgY29sdW1u L1BFUklPRCBuYW1lZCBpbiBGT1IgUE9SVElPTiBPRiAqLworCU9pZAkJZnBfcmFuZ2VUeXBl OwkJLyogdGhlIHR5cGUgb2YgdGhlIEZPUiBQT1JUSU9OIE9GIGV4cHJlc3Npb24gKi8KKwli b29sCWZwX2hhc1BlcmlvZDsJCS8qIHRydWUgaWZmIHRoaXMgaXMgYSBQRVJJT0Qgbm90IGEg cmFuZ2UgKi8KKwlpbnQJCWZwX3JhbmdlQXR0bm87CQkvKiB0aGUgYXR0bm8gb2YgdGhlIHJh bmdlIGNvbHVtbiAob3IgMCBmb3IgYSBQRVJJT0QpICovCisJaW50CQlmcF9wZXJpb2RTdGFy dEF0dG5vOwkvKiB0aGUgYXR0bm8gb2YgdGhlIFBFUklPRCBzdGFydCBjb2x1bW4gKG9yIDAg Zm9yIGEgcmFuZ2UpICovCisJaW50CQlmcF9wZXJpb2RFbmRBdHRubzsJCS8qIHRoZSBhdHRu byBvZiB0aGUgUEVSSU9EIGVuZCBjb2x1bW4gKG9yIDAgZm9yIGEgcmFuZ2UpICovCisJRGF0 dW0JZnBfdGFyZ2V0UmFuZ2U7CQkvKiB0aGUgcmFuZ2UgZnJvbSBGT1IgUE9SVElPTiBPRiAq LworCVR5cGVDYWNoZUVudHJ5ICpmcF9yYW5nZXR5cGNhY2hlOwkvKiB0eXBlIGNhY2hlIGVu dHJ5IG9mIHRoZSByYW5nZSAqLworCVR1cGxlVGFibGVTbG90ICpmcF9FeGlzdGluZzsJCS8q IHNsb3QgdG8gc3RvcmUgZXhpc3RpbmcgdGFyZ2V0IHR1cGxlIGluICovCisJVHVwbGVUYWJs ZVNsb3QgKmZwX0xlZnRvdmVyMTsJCS8qIHNsb3QgdG8gc3RvcmUgbGVmdG92ZXIgYmVsb3cg dGhlIHRhcmdldCByYW5nZSAqLworCVR1cGxlVGFibGVTbG90ICpmcF9MZWZ0b3ZlcjI7CQkv KiBzbG90IHRvIHN0b3JlIGxlZnRvdmVyIGFib3ZlIHRoZSB0YXJnZXQgcmFuZ2UgKi8KK30g Rm9yUG9ydGlvbk9mU3RhdGU7CisKIC8qCiAgKiBSZXN1bHRSZWxJbmZvCiAgKgpAQCAtNTQx LDYgKzU2NSw5IEBAIHR5cGVkZWYgc3RydWN0IFJlc3VsdFJlbEluZm8KIAlMaXN0CSAgICpy aV9tYXRjaGVkTWVyZ2VBY3Rpb247CiAJTGlzdAkgICAqcmlfbm90TWF0Y2hlZE1lcmdlQWN0 aW9uOwogCisJLyogRk9SIFBPUlRJT04gT0YgZXZhbHVhdGlvbiBzdGF0ZSAqLworCUZvclBv cnRpb25PZlN0YXRlICpyaV9mb3JQb3J0aW9uT2Y7CisKIAkvKiBwYXJ0aXRpb24gY2hlY2sg ZXhwcmVzc2lvbiBzdGF0ZSAoTlVMTCBpZiBub3Qgc2V0IHVwIHlldCkgKi8KIAlFeHByU3Rh dGUgICpyaV9QYXJ0aXRpb25DaGVja0V4cHI7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L25vZGVzL3BhcnNlbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaApp bmRleCAxMTZiMzA4ZGJmLi4yOTM1MDBkNDgwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9u b2Rlcy9wYXJzZW5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5o CkBAIC0xNDgsNiArMTQ4LDkgQEAgdHlwZWRlZiBzdHJ1Y3QgUXVlcnkKIAkgKi8KIAlpbnQJ CQlyZXN1bHRSZWxhdGlvbiBwZ19ub2RlX2F0dHIocXVlcnlfanVtYmxlX2lnbm9yZSk7CiAK KwkvKiBGT1IgUE9SVElPTiBPRiBjbGF1c2UgZm9yIFVQREFURS9ERUxFVEUgKi8KKwlGb3JQ b3J0aW9uT2ZFeHByICpmb3JQb3J0aW9uT2Y7CisKIAkvKiBoYXMgYWdncmVnYXRlcyBpbiB0 bGlzdCBvciBoYXZpbmdRdWFsICovCiAJYm9vbAkJaGFzQWdncyBwZ19ub2RlX2F0dHIocXVl cnlfanVtYmxlX2lnbm9yZSk7CiAJLyogaGFzIHdpbmRvdyBmdW5jdGlvbnMgaW4gdGxpc3Qg Ki8KQEAgLTE1MzcsNiArMTU0MCwxOSBAQCB0eXBlZGVmIHN0cnVjdCBSb3dNYXJrQ2xhdXNl CiAJYm9vbAkJcHVzaGVkRG93bjsJCS8qIHB1c2hlZCBkb3duIGZyb20gaGlnaGVyIHF1ZXJ5 IGxldmVsPyAqLwogfSBSb3dNYXJrQ2xhdXNlOwogCisvKgorICogRm9yUG9ydGlvbk9mQ2xh dXNlCisgKgkJcmVwcmVzZW50YXRpb24gb2YgRk9SIFBPUlRJT04gT0YgPHBlcmlvZC1uYW1l PiBGUk9NIDx0MT4gVE8gPHQyPgorICovCit0eXBlZGVmIHN0cnVjdCBGb3JQb3J0aW9uT2ZD bGF1c2UKK3sKKwlOb2RlVGFnCQl0eXBlOworCWNoYXIJICAgKnJhbmdlX25hbWU7CisJaW50 CQkJcmFuZ2VfbmFtZV9sb2NhdGlvbjsKKwlOb2RlCSAgICp0YXJnZXRfc3RhcnQ7CisJTm9k ZQkgICAqdGFyZ2V0X2VuZDsKK30gRm9yUG9ydGlvbk9mQ2xhdXNlOworCiAvKgogICogV2l0 aENsYXVzZSAtCiAgKgkgICByZXByZXNlbnRhdGlvbiBvZiBXSVRIIGNsYXVzZQpAQCAtMTkx NywxMiArMTkzMywxMyBAQCB0eXBlZGVmIHN0cnVjdCBJbnNlcnRTdG10CiAgKi8KIHR5cGVk ZWYgc3RydWN0IERlbGV0ZVN0bXQKIHsKLQlOb2RlVGFnCQl0eXBlOwotCVJhbmdlVmFyICAg KnJlbGF0aW9uOwkJLyogcmVsYXRpb24gdG8gZGVsZXRlIGZyb20gKi8KLQlMaXN0CSAgICp1 c2luZ0NsYXVzZTsJLyogb3B0aW9uYWwgdXNpbmcgY2xhdXNlIGZvciBtb3JlIHRhYmxlcyAq LwotCU5vZGUJICAgKndoZXJlQ2xhdXNlOwkvKiBxdWFsaWZpY2F0aW9ucyAqLwotCUxpc3QJ ICAgKnJldHVybmluZ0xpc3Q7CS8qIGxpc3Qgb2YgZXhwcmVzc2lvbnMgdG8gcmV0dXJuICov Ci0JV2l0aENsYXVzZSAqd2l0aENsYXVzZTsJCS8qIFdJVEggY2xhdXNlICovCisJTm9kZVRh ZwkJCQl0eXBlOworCVJhbmdlVmFyCQkgICAqcmVsYXRpb247CQkvKiByZWxhdGlvbiB0byBk ZWxldGUgZnJvbSAqLworCUZvclBvcnRpb25PZkNsYXVzZSAqZm9yUG9ydGlvbk9mOwkvKiBG T1IgUE9SVElPTiBPRiBjbGF1c2UgKi8KKwlMaXN0CQkJICAgKnVzaW5nQ2xhdXNlOwkvKiBv cHRpb25hbCB1c2luZyBjbGF1c2UgZm9yIG1vcmUgdGFibGVzICovCisJTm9kZQkJCSAgICp3 aGVyZUNsYXVzZTsJLyogcXVhbGlmaWNhdGlvbnMgKi8KKwlMaXN0CQkJICAgKnJldHVybmlu Z0xpc3Q7CS8qIGxpc3Qgb2YgZXhwcmVzc2lvbnMgdG8gcmV0dXJuICovCisJV2l0aENsYXVz ZQkJICAgKndpdGhDbGF1c2U7CQkvKiBXSVRIIGNsYXVzZSAqLwogfSBEZWxldGVTdG10Owog CiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xOTMxLDEzICsxOTQ4LDE0IEBAIHR5 cGVkZWYgc3RydWN0IERlbGV0ZVN0bXQKICAqLwogdHlwZWRlZiBzdHJ1Y3QgVXBkYXRlU3Rt dAogewotCU5vZGVUYWcJCXR5cGU7Ci0JUmFuZ2VWYXIgICAqcmVsYXRpb247CQkvKiByZWxh dGlvbiB0byB1cGRhdGUgKi8KLQlMaXN0CSAgICp0YXJnZXRMaXN0OwkJLyogdGhlIHRhcmdl dCBsaXN0IChvZiBSZXNUYXJnZXQpICovCi0JTm9kZQkgICAqd2hlcmVDbGF1c2U7CS8qIHF1 YWxpZmljYXRpb25zICovCi0JTGlzdAkgICAqZnJvbUNsYXVzZTsJCS8qIG9wdGlvbmFsIGZy b20gY2xhdXNlIGZvciBtb3JlIHRhYmxlcyAqLwotCUxpc3QJICAgKnJldHVybmluZ0xpc3Q7 CS8qIGxpc3Qgb2YgZXhwcmVzc2lvbnMgdG8gcmV0dXJuICovCi0JV2l0aENsYXVzZSAqd2l0 aENsYXVzZTsJCS8qIFdJVEggY2xhdXNlICovCisJTm9kZVRhZwkJCQl0eXBlOworCVJhbmdl VmFyCQkgICAqcmVsYXRpb247CQkvKiByZWxhdGlvbiB0byB1cGRhdGUgKi8KKwlGb3JQb3J0 aW9uT2ZDbGF1c2UgKmZvclBvcnRpb25PZjsJLyogRk9SIFBPUlRJT04gT0YgY2xhdXNlICov CisJTGlzdAkJCSAgICp0YXJnZXRMaXN0OwkJLyogdGhlIHRhcmdldCBsaXN0IChvZiBSZXNU YXJnZXQpICovCisJTm9kZQkJCSAgICp3aGVyZUNsYXVzZTsJLyogcXVhbGlmaWNhdGlvbnMg Ki8KKwlMaXN0CQkJICAgKmZyb21DbGF1c2U7CQkvKiBvcHRpb25hbCBmcm9tIGNsYXVzZSBm b3IgbW9yZSB0YWJsZXMgKi8KKwlMaXN0CQkJICAgKnJldHVybmluZ0xpc3Q7CS8qIGxpc3Qg b2YgZXhwcmVzc2lvbnMgdG8gcmV0dXJuICovCisJV2l0aENsYXVzZQkJICAgKndpdGhDbGF1 c2U7CQkvKiBXSVRIIGNsYXVzZSAqLwogfSBVcGRhdGVTdG10OwogCiAvKiAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMu aCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oCmluZGV4IGVkODVkYzc0MTQuLjU0 YWNhZGM4ZmMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oCisr KyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oCkBAIC0yMzUyLDYgKzIzNTIsNyBA QCB0eXBlZGVmIHN0cnVjdCBNb2RpZnlUYWJsZVBhdGgKIAlMaXN0CSAgICpyZXR1cm5pbmdM aXN0czsgLyogcGVyLXRhcmdldC10YWJsZSBSRVRVUk5JTkcgdGxpc3RzICovCiAJTGlzdAkg ICAqcm93TWFya3M7CQkvKiBQbGFuUm93TWFya3MgKG5vbi1sb2NraW5nIG9ubHkpICovCiAJ T25Db25mbGljdEV4cHIgKm9uY29uZmxpY3Q7IC8qIE9OIENPTkZMSUNUIGNsYXVzZSwgb3Ig TlVMTCAqLworCUZvclBvcnRpb25PZkV4cHIgKmZvclBvcnRpb25PZjsJLyogRk9SIFBPUlRJ T04gT0YgY2xhdXNlIGZvciBVUERBVEUvREVMRVRFICovCiAJaW50CQkJZXBxUGFyYW07CQkv KiBJRCBvZiBQYXJhbSBmb3IgRXZhbFBsYW5RdWFsIHJlLWV2YWwgKi8KIAlMaXN0CSAgICpt ZXJnZUFjdGlvbkxpc3RzOwkvKiBwZXItdGFyZ2V0LXRhYmxlIGxpc3RzIG9mIGFjdGlvbnMg Zm9yCiAJCQkJCQkJCQkgKiBNRVJHRSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9k ZXMvcGxhbm5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaAppbmRleCAy NGQ0NmM3NmRjLi5lNjViNzFhZTk4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9w bGFubm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaApAQCAtMjQ0 LDYgKzI0NCw3IEBAIHR5cGVkZWYgc3RydWN0IE1vZGlmeVRhYmxlCiAJTGlzdAkgICAqcm93 TWFya3M7CQkvKiBQbGFuUm93TWFya3MgKG5vbi1sb2NraW5nIG9ubHkpICovCiAJaW50CQkJ ZXBxUGFyYW07CQkvKiBJRCBvZiBQYXJhbSBmb3IgRXZhbFBsYW5RdWFsIHJlLWV2YWwgKi8K IAlPbkNvbmZsaWN0QWN0aW9uIG9uQ29uZmxpY3RBY3Rpb247CS8qIE9OIENPTkZMSUNUIGFj dGlvbiAqLworCU5vZGUJICAgKmZvclBvcnRpb25PZjsJLyogRk9SIFBPUlRJT04gT0YgY2xh dXNlIGZvciBVUERBVEUvREVMRVRFICovCiAJTGlzdAkgICAqYXJiaXRlckluZGV4ZXM7IC8q IExpc3Qgb2YgT04gQ09ORkxJQ1QgYXJiaXRlciBpbmRleCBPSURzICAqLwogCUxpc3QJICAg Km9uQ29uZmxpY3RTZXQ7CS8qIElOU0VSVCBPTiBDT05GTElDVCBETyBVUERBVEUgdGFyZ2V0 bGlzdCAqLwogCUxpc3QJICAgKm9uQ29uZmxpY3RDb2xzOyAvKiB0YXJnZXQgY29sdW1uIG51 bWJlcnMgZm9yIG9uQ29uZmxpY3RTZXQgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25v ZGVzL3ByaW1ub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmgKaW5kZXgg YWI2ZDdmZGM2ZC4uNTY3YzA1MDcwMCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMv cHJpbW5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmgKQEAgLTIw NDEsNCArMjA0MSwyOSBAQCB0eXBlZGVmIHN0cnVjdCBPbkNvbmZsaWN0RXhwcgogCUxpc3QJ ICAgKmV4Y2xSZWxUbGlzdDsJLyogdGxpc3Qgb2YgdGhlIEVYQ0xVREVEIHBzZXVkbyByZWxh dGlvbiAqLwogfSBPbkNvbmZsaWN0RXhwcjsKIAorLyotLS0tLS0tLS0tCisgKiBGb3JQb3J0 aW9uT2ZFeHByIC0gcmVwcmVzZW50cyBhIEZPUiBQT1JUSU9OIE9GIC4uLiBleHByZXNzaW9u CisgKgorICogV2Ugc2V0IHVwIGFuIGV4cHJlc3Npb24gdG8gbWFrZSBhIHJhbmdlIGZyb20g dGhlIEZST00vVE8gYm91bmRzLAorICogc28gdGhhdCB3ZSBjYW4gdXNlIHJhbmdlIG9wZXJh dG9ycyB3aXRoIGl0LgorICoKKyAqIFRoZW4gd2Ugc2V0IHVwIGFuIG92ZXJsYXBzIGV4cHJl c3Npb24gYmV0d2VlbiB0aGF0IGFuZCB0aGUgcmFuZ2UgY29sdW1uLAorICogc28gdGhhdCB3 ZSBjYW4gZmluZCB0aGUgcm93cyB3ZSBuZWVkIHRvIHVwZGF0ZS9kZWxldGUuCisgKgorICog SW4gdGhlIGV4ZWN1dG9yIHdlJ2xsIGFsc28gYnVpbGQgYW4gaW50ZXJzZWN0IGV4cHJlc3Np b24gYmV0d2VlbiB0aGUKKyAqIHRhcmdldGVkIHJhbmdlIGFuZCB0aGUgcmFuZ2UgY29sdW1u LCBzbyB0aGF0IHdlIGNhbiB1cGRhdGUgdGhlIHN0YXJ0L2VuZAorICogYm91bmRzIG9mIHRo ZSBVUERBVEUnZCByZWNvcmQuCisgKi0tLS0tLS0tLS0KKyAqLwordHlwZWRlZiBzdHJ1Y3Qg Rm9yUG9ydGlvbk9mRXhwcgoreworCU5vZGVUYWcJCXR5cGU7CisJVmFyCQkgICAqcmFuZ2VW YXI7CQkJLyogUmFuZ2UgY29sdW1uICovCisJY2hhcgkgICAqcmFuZ2VfbmFtZTsJCQkvKiBS YW5nZSBuYW1lICovCisJTm9kZQkgICAqdGFyZ2V0UmFuZ2U7CQkvKiBGT1IgUE9SVElPTiBP RiBib3VuZHMgYXMgYSByYW5nZSAqLworCU9pZAkJCXJhbmdlVHlwZTsJCQkvKiB0eXBlIG9m IHRhcmdldFJhbmdlICovCisJTm9kZQkgICAqb3ZlcmxhcHNFeHByOwkJLyogcmFuZ2UgJiYg dGFyZ2V0UmFuZ2UgKi8KKwlMaXN0CSAgICpyYW5nZVNldDsJCQkvKiBMaXN0IG9mIFRhcmdl dEVudHJ5cyB0byBzZXQgdGhlIHRpbWUgY29sdW1uKHMpICovCit9IEZvclBvcnRpb25PZkV4 cHI7CisKICNlbmRpZgkJCQkJCQkvKiBQUklNTk9ERVNfSCAqLwpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvb3B0aW1pemVyL3BhdGhub2RlLmggYi9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIv cGF0aG5vZGUuaAppbmRleCA2ZTU1N2JlYmM0Li5jOTMyZDEyMDRjIDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGF0aG5vZGUuaAorKysgYi9zcmMvaW5jbHVkZS9vcHRp bWl6ZXIvcGF0aG5vZGUuaApAQCAtMjgzLDcgKzI4Myw4IEBAIGV4dGVybiBNb2RpZnlUYWJs ZVBhdGggKmNyZWF0ZV9tb2RpZnl0YWJsZV9wYXRoKFBsYW5uZXJJbmZvICpyb290LAogCQkJ CQkJCQkJCQkJTGlzdCAqdXBkYXRlQ29sbm9zTGlzdHMsCiAJCQkJCQkJCQkJCQlMaXN0ICp3 aXRoQ2hlY2tPcHRpb25MaXN0cywgTGlzdCAqcmV0dXJuaW5nTGlzdHMsCiAJCQkJCQkJCQkJ CQlMaXN0ICpyb3dNYXJrcywgT25Db25mbGljdEV4cHIgKm9uY29uZmxpY3QsCi0JCQkJCQkJ CQkJCQlMaXN0ICptZXJnZUFjdGlvbkxpc3RzLCBpbnQgZXBxUGFyYW0pOworCQkJCQkJCQkJ CQkJTGlzdCAqbWVyZ2VBY3Rpb25MaXN0cywKKwkJCQkJCQkJCQkJCUZvclBvcnRpb25PZkV4 cHIgKmZvclBvcnRpb25PZiwgaW50IGVwcVBhcmFtKTsKIGV4dGVybiBMaW1pdFBhdGggKmNy ZWF0ZV9saW1pdF9wYXRoKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwsCiAJ CQkJCQkJCQlQYXRoICpzdWJwYXRoLAogCQkJCQkJCQkJTm9kZSAqbGltaXRPZmZzZXQsIE5v ZGUgKmxpbWl0Q291bnQsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wYXJzZXIvYW5hbHl6 ZS5oIGIvc3JjL2luY2x1ZGUvcGFyc2VyL2FuYWx5emUuaAppbmRleCBjOTY0ODNhZTc4Li5i NmQ1MDY1ZTEyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJzZXIvYW5hbHl6ZS5oCisr KyBiL3NyYy9pbmNsdWRlL3BhcnNlci9hbmFseXplLmgKQEAgLTQzLDcgKzQzLDggQEAgZXh0 ZXJuIExpc3QgKnRyYW5zZm9ybUluc2VydFJvdyhQYXJzZVN0YXRlICpwc3RhdGUsIExpc3Qg KmV4cHJsaXN0LAogCQkJCQkJCQlMaXN0ICpzdG10Y29scywgTGlzdCAqaWNvbHVtbnMsIExp c3QgKmF0dHJub3MsCiAJCQkJCQkJCWJvb2wgc3RyaXBfaW5kaXJlY3Rpb24pOwogZXh0ZXJu IExpc3QgKnRyYW5zZm9ybVVwZGF0ZVRhcmdldExpc3QoUGFyc2VTdGF0ZSAqcHN0YXRlLAot CQkJCQkJCQkJICAgTGlzdCAqb3JpZ1RsaXN0KTsKKwkJCQkJCQkJCSAgIExpc3QgKm9yaWdU bGlzdCwKKwkJCQkJCQkJCSAgIEZvclBvcnRpb25PZkV4cHIgKmZvclBvcnRpb25PZik7CiBl eHRlcm4gUXVlcnkgKnRyYW5zZm9ybVRvcExldmVsU3RtdChQYXJzZVN0YXRlICpwc3RhdGUs IFJhd1N0bXQgKnBhcnNlVHJlZSk7CiBleHRlcm4gUXVlcnkgKnRyYW5zZm9ybVN0bXQoUGFy c2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpwYXJzZVRyZWUpOwogCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9wYXJzZXIva3dsaXN0LmggYi9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmgK aW5kZXggY2NmNWJmOGFhNi4uYzg5Y2VlYTlmNiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv cGFyc2VyL2t3bGlzdC5oCisrKyBiL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaApAQCAt MzMwLDYgKzMzMCw3IEBAIFBHX0tFWVdPUkQoInBlcmlvZCIsIFBFUklPRCwgUkVTRVJWRURf S0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInBsYWNpbmciLCBQTEFDSU5HLCBS RVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgicGxhbnMiLCBQTEFO UywgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgicG9saWN5 IiwgUE9MSUNZLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCitQR19LRVlXT1JE KCJwb3J0aW9uIiwgUE9SVElPTiwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQog UEdfS0VZV09SRCgicG9zaXRpb24iLCBQT1NJVElPTiwgQ09MX05BTUVfS0VZV09SRCwgQkFS RV9MQUJFTCkKIFBHX0tFWVdPUkQoInByZWNlZGluZyIsIFBSRUNFRElORywgVU5SRVNFUlZF RF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgicHJlY2lzaW9uIiwgUFJFQ0lT SU9OLCBDT0xfTkFNRV9LRVlXT1JELCBBU19MQUJFTCkKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL3BhcnNlci9wYXJzZV9ub2RlLmggYi9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2Vfbm9k ZS5oCmluZGV4IGY1ODkxMTJkNWUuLjBkNjAxZjM0YTUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL3BhcnNlci9wYXJzZV9ub2RlLmgKKysrIGIvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNl X25vZGUuaApAQCAtNTYsNiArNTYsNyBAQCB0eXBlZGVmIGVudW0gUGFyc2VFeHByS2luZAog CUVYUFJfS0lORF9VUERBVEVfU09VUkNFLAkvKiBVUERBVEUgYXNzaWdubWVudCBzb3VyY2Ug aXRlbSAqLwogCUVYUFJfS0lORF9VUERBVEVfVEFSR0VULAkvKiBVUERBVEUgYXNzaWdubWVu dCB0YXJnZXQgaXRlbSAqLwogCUVYUFJfS0lORF9NRVJHRV9XSEVOLAkJLyogTUVSR0UgV0hF TiBbTk9UXSBNQVRDSEVEIGNvbmRpdGlvbiAqLworCUVYUFJfS0lORF9VUERBVEVfUE9SVElP TiwJLyogVVBEQVRFIEZPUiBQT1JUSU9OIE9GIGl0ZW0gKi8KIAlFWFBSX0tJTkRfR1JPVVBf QlksCQkJLyogR1JPVVAgQlkgKi8KIAlFWFBSX0tJTkRfT1JERVJfQlksCQkJLyogT1JERVIg QlkgKi8KIAlFWFBSX0tJTkRfRElTVElOQ1RfT04sCQkvKiBESVNUSU5DVCBPTiAqLwpkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvbHN5c2NhY2hlLmggYi9zcmMvaW5jbHVkZS91 dGlscy9sc3lzY2FjaGUuaAppbmRleCBjMjJjYWJkZjQyLi44OGU0OWRiM2Q4IDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaAorKysgYi9zcmMvaW5jbHVkZS91 dGlscy9sc3lzY2FjaGUuaApAQCAtMTQzLDYgKzE0Myw4IEBAIGV4dGVybiBjaGFyIGdldF9y ZWxfcGVyc2lzdGVuY2UoT2lkIHJlbGlkKTsKIGV4dGVybiBPaWQJZ2V0X3RyYW5zZm9ybV9m cm9tc3FsKE9pZCB0eXBpZCwgT2lkIGxhbmdpZCwgTGlzdCAqdHJmdHlwZXMpOwogZXh0ZXJu IE9pZAlnZXRfdHJhbnNmb3JtX3Rvc3FsKE9pZCB0eXBpZCwgT2lkIGxhbmdpZCwgTGlzdCAq dHJmdHlwZXMpOwogZXh0ZXJuIGJvb2wgZ2V0X3R5cGlzZGVmaW5lZChPaWQgdHlwaWQpOwor ZXh0ZXJuIGNoYXIgKmdldF90eXBuYW1lKE9pZCB0eXBpZCk7CitleHRlcm4gYm9vbCBnZXRf dHlwbmFtZV9hbmRfbmFtZXNwYWNlKE9pZCB0eXBpZCwgY2hhciAqKnR5cG5hbWUsIGNoYXIg Kip0eXBuYW1lc3BhY2UpOwogZXh0ZXJuIGludDE2IGdldF90eXBsZW4oT2lkIHR5cGlkKTsK IGV4dGVybiBib29sIGdldF90eXBieXZhbChPaWQgdHlwaWQpOwogZXh0ZXJuIHZvaWQgZ2V0 X3R5cGxlbmJ5dmFsKE9pZCB0eXBpZCwgaW50MTYgKnR5cGxlbiwgYm9vbCAqdHlwYnl2YWwp OwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvcGVyaW9kLmggYi9zcmMvaW5jbHVk ZS91dGlscy9wZXJpb2QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw Li4wYThhZjNlZGIwCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvcGVy aW9kLmgKQEAgLTAsMCArMSwxOSBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICog cGVyaW9kLmgKKyAqCSAgc3VwcG9ydCBmb3IgUG9zdGdyZXMgcGVyaW9kcy4KKyAqCisgKgor ICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMjIsIFBvc3RncmVTUUwgR2xvYmFs IERldmVsb3BtZW50IEdyb3VwCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTQsIFJl Z2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQorICoKKyAqIHNyYy9pbmNs dWRlL3V0aWxzL3BlcmlvZC5oCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKyNp Zm5kZWYgUEVSSU9EX0gKKyNkZWZpbmUgUEVSSU9EX0gKKworZXh0ZXJuIERhdHVtIHBlcmlv ZF90b19yYW5nZShUdXBsZVRhYmxlU2xvdCAqc2xvdCwgaW50IHN0YXJ0YXR0bm8sIGludCBl bmRhdHRubywgT2lkIHJhbmdldHlwZSk7CisKKyNlbmRpZgkJCQkJCQkvKiBQRVJJT0RfSCAq LwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvcmFuZ2V0eXBlcy5oIGIvc3JjL2lu Y2x1ZGUvdXRpbHMvcmFuZ2V0eXBlcy5oCmluZGV4IDZiNDIwYTg2MTguLjQ4ZWUyZGViZWQg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3JhbmdldHlwZXMuaAorKysgYi9zcmMv aW5jbHVkZS91dGlscy9yYW5nZXR5cGVzLmgKQEAgLTE2NCw1ICsxNjQsOCBAQCBleHRlcm4g UmFuZ2VUeXBlICptYWtlX2VtcHR5X3JhbmdlKFR5cGVDYWNoZUVudHJ5ICp0eXBjYWNoZSk7 CiBleHRlcm4gYm9vbCByYW5nZV9zcGxpdF9pbnRlcm5hbChUeXBlQ2FjaGVFbnRyeSAqdHlw Y2FjaGUsIGNvbnN0IFJhbmdlVHlwZSAqcjEsCiAJCQkJCQkJCSBjb25zdCBSYW5nZVR5cGUg KnIyLCBSYW5nZVR5cGUgKipvdXRwdXQxLAogCQkJCQkJCQkgUmFuZ2VUeXBlICoqb3V0cHV0 Mik7CitleHRlcm4gdm9pZCByYW5nZV9sZWZ0b3Zlcl9pbnRlcm5hbChUeXBlQ2FjaGVFbnRy eSAqdHlwY2FjaGUsIGNvbnN0IFJhbmdlVHlwZSAqcjEsCisJCQkJCQkJCQljb25zdCBSYW5n ZVR5cGUgKnIyLCBSYW5nZVR5cGUgKipvdXRwdXQxLAorCQkJCQkJCQkJUmFuZ2VUeXBlICoq b3V0cHV0Mik7CiAKICNlbmRpZgkJCQkJCQkvKiBSQU5HRVRZUEVTX0ggKi8KZGlmZiAtLWdp dCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZm9yX3BvcnRpb25fb2Yub3V0IGIvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9mb3JfcG9ydGlvbl9vZi5vdXQKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uMjI0ZmUxMDExZAotLS0gL2Rldi9udWxsCisr KyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZm9yX3BvcnRpb25fb2Yub3V0CkBAIC0w LDAgKzEsNDk4IEBACistLSBUZXN0cyBmb3IgVVBEQVRFL0RFTEVURSBGT1IgUE9SVElPTiBP RgorLS0gV29ya3Mgb24gbm9uLVBLIGNvbHVtbnMKK0NSRUFURSBUQUJMRSBmb3JfcG9ydGlv bl9vZl90ZXN0ICgKKyAgaWQgaW50NHJhbmdlLAorICB2YWxpZF9hdCB0c3JhbmdlLAorICBu YW1lIHRleHQgTk9UIE5VTEwKKyk7CitJTlNFUlQgSU5UTyBmb3JfcG9ydGlvbl9vZl90ZXN0 IFZBTFVFUworKCdbMSwxXScsICdbMjAxOC0wMS0wMiwyMDIwLTAxLTAxKScsICdvbmUnKTsK K1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBG Uk9NICcyMDE4LTAxLTE1JyBUTyAnMjAxOS0wMS0wMScKK1NFVCBuYW1lID0gJ2Zvbyc7CitE RUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9h dCBGUk9NICcyMDE5LTAxLTE1JyBUTyBVTkJPVU5ERUQ7CitTRUxFQ1QgKiBGUk9NIGZvcl9w b3J0aW9uX29mX3Rlc3Q7CisgIGlkICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlk X2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwgbmFtZSAKKy0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LQorIFsxLDIpIHwgWyJNb24gSmFuIDE1IDAwOjAwOjAwIDIwMTgiLCJUdWUgSmFuIDAxIDAw OjAwOjAwIDIwMTkiKSB8IGZvbworIFsxLDIpIHwgWyJUdWUgSmFuIDAyIDAwOjAwOjAwIDIw MTgiLCJNb24gSmFuIDE1IDAwOjAwOjAwIDIwMTgiKSB8IG9uZQorIFsxLDIpIHwgWyJUdWUg SmFuIDAxIDAwOjAwOjAwIDIwMTkiLCJUdWUgSmFuIDE1IDAwOjAwOjAwIDIwMTkiKSB8IG9u ZQorKDMgcm93cykKKworLS0gV29ya3Mgb24gbW9yZSB0aGFuIG9uZSByYW5nZQorRFJPUCBU QUJMRSBmb3JfcG9ydGlvbl9vZl90ZXN0OworQ1JFQVRFIFRBQkxFIGZvcl9wb3J0aW9uX29m X3Rlc3QgKAorICBpZCBpbnQ0cmFuZ2UsCisgIHZhbGlkMV9hdCB0c3JhbmdlLAorICB2YWxp ZDJfYXQgdHNyYW5nZSwKKyAgbmFtZSB0ZXh0IE5PVCBOVUxMCispOworSU5TRVJUIElOVE8g Zm9yX3BvcnRpb25fb2ZfdGVzdCBWQUxVRVMKKygnWzEsMV0nLCAnWzIwMTgtMDEtMDIsMjAx OC0wMi0wMyknLCAnWzIwMTUtMDEtMDEsMjAyNS0wMS0wMSknLCAnb25lJyk7CitVUERBVEUg Zm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWQxX2F0IEZST00gJzIw MTgtMDEtMTUnIFRPIFVOQk9VTkRFRAorU0VUIG5hbWUgPSAnZm9vJzsKK1NFTEVDVCAqIEZS T00gZm9yX3BvcnRpb25fb2ZfdGVzdDsKKyAgaWQgICB8ICAgICAgICAgICAgICAgICAgICAg ICAgdmFsaWQxX2F0ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAg ICAgICAgIHZhbGlkMl9hdCAgICAgICAgICAgICAgICAgICAgICAgIHwgbmFtZSAKKy0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0KKyBbMSwyKSB8IFsiTW9uIEphbiAxNSAwMDowMDowMCAyMDE4 IiwiU2F0IEZlYiAwMyAwMDowMDowMCAyMDE4IikgfCBbIlRodSBKYW4gMDEgMDA6MDA6MDAg MjAxNSIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyNSIpIHwgZm9vCisgWzEsMikgfCBbIlR1 ZSBKYW4gMDIgMDA6MDA6MDAgMjAxOCIsIk1vbiBKYW4gMTUgMDA6MDA6MDAgMjAxOCIpIHwg WyJUaHUgSmFuIDAxIDAwOjAwOjAwIDIwMTUiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjUi KSB8IG9uZQorKDIgcm93cykKKworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQ T1JUSU9OIE9GIHZhbGlkMl9hdCBGUk9NICcyMDE4LTAxLTE1JyBUTyBVTkJPVU5ERUQKK1NF VCBuYW1lID0gJ2Jhcic7CitTRUxFQ1QgKiBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3Q7Cisg IGlkICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkMV9hdCAgICAgICAgICAgICAg ICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZDJfYXQgICAgICAgICAg ICAgICAgICAgICAgICB8IG5hbWUgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tCisgWzEsMikg fCBbIk1vbiBKYW4gMTUgMDA6MDA6MDAgMjAxOCIsIlNhdCBGZWIgMDMgMDA6MDA6MDAgMjAx OCIpIHwgWyJNb24gSmFuIDE1IDAwOjAwOjAwIDIwMTgiLCJXZWQgSmFuIDAxIDAwOjAwOjAw IDIwMjUiKSB8IGJhcgorIFsxLDIpIHwgWyJNb24gSmFuIDE1IDAwOjAwOjAwIDIwMTgiLCJT YXQgRmViIDAzIDAwOjAwOjAwIDIwMTgiKSB8IFsiVGh1IEphbiAwMSAwMDowMDowMCAyMDE1 IiwiTW9uIEphbiAxNSAwMDowMDowMCAyMDE4IikgfCBmb28KKyBbMSwyKSB8IFsiVHVlIEph biAwMiAwMDowMDowMCAyMDE4IiwiTW9uIEphbiAxNSAwMDowMDowMCAyMDE4IikgfCBbIk1v biBKYW4gMTUgMDA6MDA6MDAgMjAxOCIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyNSIpIHwg YmFyCisgWzEsMikgfCBbIlR1ZSBKYW4gMDIgMDA6MDA6MDAgMjAxOCIsIk1vbiBKYW4gMTUg MDA6MDA6MDAgMjAxOCIpIHwgWyJUaHUgSmFuIDAxIDAwOjAwOjAwIDIwMTUiLCJNb24gSmFu IDE1IDAwOjAwOjAwIDIwMTgiKSB8IG9uZQorKDQgcm93cykKKworREVMRVRFIEZST00gZm9y X3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWQxX2F0IEZST00gJzIwMTgt MDEtMjAnIFRPIFVOQk9VTkRFRDsKK1NFTEVDVCAqIEZST00gZm9yX3BvcnRpb25fb2ZfdGVz dDsKKyAgaWQgICB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWQxX2F0ICAgICAgICAg ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkMl9hdCAgICAg ICAgICAgICAgICAgICAgICAgIHwgbmFtZSAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0KKyBb MSwyKSB8IFsiVHVlIEphbiAwMiAwMDowMDowMCAyMDE4IiwiTW9uIEphbiAxNSAwMDowMDow MCAyMDE4IikgfCBbIk1vbiBKYW4gMTUgMDA6MDA6MDAgMjAxOCIsIldlZCBKYW4gMDEgMDA6 MDA6MDAgMjAyNSIpIHwgYmFyCisgWzEsMikgfCBbIlR1ZSBKYW4gMDIgMDA6MDA6MDAgMjAx OCIsIk1vbiBKYW4gMTUgMDA6MDA6MDAgMjAxOCIpIHwgWyJUaHUgSmFuIDAxIDAwOjAwOjAw IDIwMTUiLCJNb24gSmFuIDE1IDAwOjAwOjAwIDIwMTgiKSB8IG9uZQorIFsxLDIpIHwgWyJN b24gSmFuIDE1IDAwOjAwOjAwIDIwMTgiLCJTYXQgSmFuIDIwIDAwOjAwOjAwIDIwMTgiKSB8 IFsiTW9uIEphbiAxNSAwMDowMDowMCAyMDE4IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDI1 IikgfCBiYXIKKyBbMSwyKSB8IFsiTW9uIEphbiAxNSAwMDowMDowMCAyMDE4IiwiU2F0IEph biAyMCAwMDowMDowMCAyMDE4IikgfCBbIlRodSBKYW4gMDEgMDA6MDA6MDAgMjAxNSIsIk1v biBKYW4gMTUgMDA6MDA6MDAgMjAxOCIpIHwgZm9vCisoNCByb3dzKQorCitERUxFVEUgRlJP TSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZDJfYXQgRlJPTSAn MjAxOC0wMS0yMCcgVE8gVU5CT1VOREVEOworU0VMRUNUICogRlJPTSBmb3JfcG9ydGlvbl9v Zl90ZXN0OworICBpZCAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZDFfYXQgICAg ICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWQyX2F0 ICAgICAgICAgICAgICAgICAgICAgICAgfCBuYW1lIAorLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LQorIFsxLDIpIHwgWyJUdWUgSmFuIDAyIDAwOjAwOjAwIDIwMTgiLCJNb24gSmFuIDE1IDAw OjAwOjAwIDIwMTgiKSB8IFsiVGh1IEphbiAwMSAwMDowMDowMCAyMDE1IiwiTW9uIEphbiAx NSAwMDowMDowMCAyMDE4IikgfCBvbmUKKyBbMSwyKSB8IFsiTW9uIEphbiAxNSAwMDowMDow MCAyMDE4IiwiU2F0IEphbiAyMCAwMDowMDowMCAyMDE4IikgfCBbIlRodSBKYW4gMDEgMDA6 MDA6MDAgMjAxNSIsIk1vbiBKYW4gMTUgMDA6MDA6MDAgMjAxOCIpIHwgZm9vCisgWzEsMikg fCBbIlR1ZSBKYW4gMDIgMDA6MDA6MDAgMjAxOCIsIk1vbiBKYW4gMTUgMDA6MDA6MDAgMjAx OCIpIHwgWyJNb24gSmFuIDE1IDAwOjAwOjAwIDIwMTgiLCJTYXQgSmFuIDIwIDAwOjAwOjAw IDIwMTgiKSB8IGJhcgorIFsxLDIpIHwgWyJNb24gSmFuIDE1IDAwOjAwOjAwIDIwMTgiLCJT YXQgSmFuIDIwIDAwOjAwOjAwIDIwMTgiKSB8IFsiTW9uIEphbiAxNSAwMDowMDowMCAyMDE4 IiwiU2F0IEphbiAyMCAwMDowMDowMCAyMDE4IikgfCBiYXIKKyg0IHJvd3MpCisKKy0tIFRl c3Qgd2l0aCBOVUxMcyBpbiB0aGUgc2NhbGFyL3JhbmdlIGtleSBjb2x1bW5zLgorLS0gVGhp cyB3b24ndCBoYXBwZW4gaWYgdGhlcmUgaXMgYSBQUklNQVJZIEtFWSBvciBVTklRVUUgY29u c3RyYWludAorLS0gYnV0IEZPUiBQT1JUSU9OIE9GIHNob3VsZG4ndCByZXF1aXJlIHRoYXQu CitEUk9QIFRBQkxFIGZvcl9wb3J0aW9uX29mX3Rlc3Q7CitDUkVBVEUgVU5MT0dHRUQgVEFC TEUgZm9yX3BvcnRpb25fb2ZfdGVzdCAoCisgIGlkIGludDRyYW5nZSwKKyAgdmFsaWRfYXQg dHNyYW5nZSwKKyAgbmFtZSB0ZXh0CispOworSU5TRVJUIElOVE8gZm9yX3BvcnRpb25fb2Zf dGVzdCBWQUxVRVMKKyAgKCdbMSwxXScsIE5VTEwsICcxIG51bGwnKSwKKyAgKCdbMSwxXScs ICcoLCknLCAnMSB1bmJvdW5kZWQnKSwKKyAgKCdbMSwxXScsICdlbXB0eScsICcxIGVtcHR5 JyksCisgIChOVUxMLCBOVUxMLCBOVUxMKSwKKyAgKE5VTEwsIHRzcmFuZ2UoJzIwMTgtMDEt MDEnLCAnMjAxOS0wMS0wMScpLCAnbnVsbCBrZXknKTsKK1VQREFURSBmb3JfcG9ydGlvbl9v Zl90ZXN0CisgIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gTlVMTCBUTyBOVUxMCisg IFNFVCBuYW1lID0gJ05VTEwgdG8gTlVMTCc7CitTRUxFQ1QgKiBGUk9NIGZvcl9wb3J0aW9u X29mX3Rlc3Q7CisgIGlkICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAg ICAgICAgICAgICAgICAgICAgICAgIHwgICAgIG5hbWUgICAgIAorLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0KKyBbMSwyKSB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCAxIG51bGwKKyBbMSwyKSB8IGVtcHR5ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxIGVtcHR5 CisgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgCisgWzEsMikgfCAoLCkgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTlVMTCB0byBOVUxMCisgICAgICAgfCBb Ik1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIp IHwgTlVMTCB0byBOVUxMCisoNSByb3dzKQorCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVz dAorICBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NIE5VTEwgVE8gVU5CT1VOREVECisg IFNFVCBuYW1lID0gJ05VTEwgdG8gVU5CT1VOREVEJzsKK1NFTEVDVCAqIEZST00gZm9yX3Bv cnRpb25fb2ZfdGVzdDsKKyAgaWQgICB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRf YXQgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICBuYW1lICAgICAgICAKKy0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyBbMSwyKSB8ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxIG51bGwKKyBbMSwy KSB8IGVtcHR5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCAxIGVtcHR5CisgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgCisgWzEsMikgfCAoLCkgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTlVMTCB0byBV TkJPVU5ERUQKKyAgICAgICB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVHVlIEph biAwMSAwMDowMDowMCAyMDE5IikgfCBOVUxMIHRvIFVOQk9VTkRFRAorKDUgcm93cykKKwor VVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKKyAgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQg RlJPTSBVTkJPVU5ERUQgVE8gTlVMTAorICBTRVQgbmFtZSA9ICdVTkJPVU5ERUQgdG8gTlVM TCc7CitTRUxFQ1QgKiBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3Q7CisgIGlkICAgfCAgICAg ICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwg ICAgICAgbmFtZSAgICAgICAgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tCisg WzEsMikgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgMSBudWxsCisgWzEsMikgfCBlbXB0eSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMSBlbXB0eQorICAgICAgIHwgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 IAorIFsxLDIpIHwgKCwpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8IFVOQk9VTkRFRCB0byBOVUxMCisgICAgICAgfCBbIk1vbiBKYW4g MDEgMDA6MDA6MDAgMjAxOCIsIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIpIHwgVU5CT1VO REVEIHRvIE5VTEwKKyg1IHJvd3MpCisKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0Cisg IEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gVU5CT1VOREVEIFRPIFVOQk9VTkRFRAor ICBTRVQgbmFtZSA9ICdVTkJPVU5ERUQgdG8gVU5CT1VOREVEJzsKK1NFTEVDVCAqIEZST00g Zm9yX3BvcnRpb25fb2ZfdGVzdDsKKyAgaWQgICB8ICAgICAgICAgICAgICAgICAgICAgICAg dmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICBuYW1lICAgICAg ICAgIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgWzEsMikgfCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgMSBudWxsCisgWzEsMikgfCBlbXB0eSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgMSBlbXB0eQorICAgICAgIHwgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IAorIFsxLDIp IHwgKCwpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8IFVOQk9VTkRFRCB0byBVTkJPVU5ERUQKKyAgICAgICB8IFsiTW9uIEphbiAwMSAw MDowMDowMCAyMDE4IiwiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IikgfCBVTkJPVU5ERUQg dG8gVU5CT1VOREVECisoNSByb3dzKQorCitEUk9QIFRBQkxFIGZvcl9wb3J0aW9uX29mX3Rl c3Q7CitDUkVBVEUgVEFCTEUgZm9yX3BvcnRpb25fb2ZfdGVzdCAoCisgIGlkIGludDRyYW5n ZSBOT1QgTlVMTCwKKyAgdmFsaWRfYXQgdHNyYW5nZSBOT1QgTlVMTCwKKyAgbmFtZSB0ZXh0 IE5PVCBOVUxMLAorCUNPTlNUUkFJTlQgZm9yX3BvcnRpb25fb2ZfcGsgUFJJTUFSWSBLRVkg KGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK0lOU0VSVCBJTlRPIGZvcl9w b3J0aW9uX29mX3Rlc3QKK1ZBTFVFUworKCdbMSwxXScsICdbMjAxOC0wMS0wMiwyMDE4LTAy LTAzKScsICdvbmUnKSwKKygnWzEsMV0nLCAnWzIwMTgtMDItMDMsMjAxOC0wMy0wMyknLCAn b25lJyksCisoJ1sxLDFdJywgJ1syMDE4LTAzLTAzLDIwMTgtMDQtMDQpJywgJ29uZScpLAor KCdbMiwyXScsICdbMjAxOC0wMS0wMSwyMDE4LTAxLTA1KScsICd0d28nKSwKKygnWzMsM10n LCAnWzIwMTgtMDEtMDEsKScsICd0aHJlZScpLAorKCdbNCw0XScsICcoLDIwMTgtMDQtMDEp JywgJ2ZvdXInKSwKKygnWzUsNV0nLCAnKCwpJywgJ2ZpdmUnKQorOworLS0KKy0tIFVQREFU RSB0ZXN0cworLS0KKy0tIFNldHRpbmcgd2l0aCBhIG1pc3NpbmcgY29sdW1uIGZhaWxzCitV UERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgaW52YWxpZF9hdCBG Uk9NICcyMDE4LTA2LTAxJyBUTyBVTkJPVU5ERUQKK1NFVCBuYW1lID0gJ2ZvbycKK1dIRVJF IGlkID0gJ1s1LDVdJzsKK0VSUk9SOiAgY29sdW1uIG9yIHBlcmlvZCAiaW52YWxpZF9hdCIg b2YgcmVsYXRpb24gImZvcl9wb3J0aW9uX29mX3Rlc3QiIGRvZXMgbm90IGV4aXN0CitMSU5F IDI6IEZPUiBQT1JUSU9OIE9GIGludmFsaWRfYXQgRlJPTSAnMjAxOC0wNi0wMScgVE8gVU5C T1VOREVECisgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIFNldHRpbmcgdGhlIHJhbmdl IGZhaWxzCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFs aWRfYXQgRlJPTSAnMjAxOC0wNi0wMScgVE8gVU5CT1VOREVECitTRVQgdmFsaWRfYXQgPSAn WzE5OTAtMDEtMDEsMTk5OS0wMS0wMSknCitXSEVSRSBpZCA9ICdbNSw1XSc7CitFUlJPUjog IGNhbid0IGRpcmVjdGx5IGFzc2lnbiB0byAidmFsaWRfYXQiIGluIGEgRk9SIFBPUlRJT04g T0YgdXBkYXRlCitMSU5FIDM6IFNFVCB2YWxpZF9hdCA9ICdbMTk5MC0wMS0wMSwxOTk5LTAx LTAxKScKKyAgICAgICAgICAgIF4KKy0tIFRoZSB3cm9uZyB0eXBlIGZhaWxzCitVUERBVEUg Zm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAxIFRP IDQKK1NFVCBuYW1lID0gJ25vcGUnCitXSEVSRSBpZCA9ICdbMywzXSc7CitFUlJPUjogIGZ1 bmN0aW9uIHBnX2NhdGFsb2cudHNyYW5nZShpbnRlZ2VyLCBpbnRlZ2VyKSBkb2VzIG5vdCBl eGlzdAorTElORSAyOiBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NIDEgVE8gNAorICAg ICAgICAgICAgICAgICAgICAgICBeCitISU5UOiAgTm8gZnVuY3Rpb24gbWF0Y2hlcyB0aGUg Z2l2ZW4gbmFtZSBhbmQgYXJndW1lbnQgdHlwZXMuIFlvdSBtaWdodCBuZWVkIHRvIGFkZCBl eHBsaWNpdCB0eXBlIGNhc3RzLgorLS0gU2V0dGluZyB3aXRoIHRpbWVzdGFtcHMgcmV2ZXJz ZWQgZmFpbHMKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2 YWxpZF9hdCBGUk9NICcyMDE4LTA2LTAxJyBUTyAnMjAxOC0wMS0wMScKK1NFVCBuYW1lID0g J3RocmVlXjEnCitXSEVSRSBpZCA9ICdbMywzXSc7CitFUlJPUjogIHJhbmdlIGxvd2VyIGJv dW5kIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHJhbmdlIHVwcGVyIGJvdW5kCist LSBTZXR0aW5nIHdpdGggYSBzdWJxdWVyeSBmYWlscworVVBEQVRFIGZvcl9wb3J0aW9uX29m X3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gKFNFTEVDVCAnMjAxOC0wMS0w MScpIFRPICcyMDE4LTA2LTAxJworU0VUIG5hbWUgPSAnbm9wZScKK1dIRVJFIGlkID0gJ1sz LDNdJzsKK0VSUk9SOiAgY2Fubm90IHVzZSBzdWJxdWVyeSBpbiBGT1IgUE9SVElPTiBPRiBl eHByZXNzaW9uCitMSU5FIDI6IEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gKFNFTEVD VCAnMjAxOC0wMS0wMScpIFRPICcyMDE4LS4uLgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIF4KKy0tIFNldHRpbmcgd2l0aCBhIGNvbHVtbiBmYWlscworVVBEQVRF IGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gbG93 ZXIodmFsaWRfYXQpIFRPIFVOQk9VTkRFRAorU0VUIG5hbWUgPSAnbm9wZScKK1dIRVJFIGlk ID0gJ1szLDNdJzsKK0VSUk9SOiAgY2Fubm90IHVzZSBjb2x1bW4gcmVmZXJlbmNlIGluIEZP UiBQT1JUSU9OIE9GIGV4cHJlc3Npb24KK0xJTkUgMjogRk9SIFBPUlRJT04gT0YgdmFsaWRf YXQgRlJPTSBsb3dlcih2YWxpZF9hdCkgVE8gVU5CT1VOREVECisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gU2V0dGluZyB3aXRoIHRpbWVzdGFt cHMgZXF1YWwgZG9lcyBub3RoaW5nCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9S IFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wNC0wMScgVE8gJzIwMTgtMDQtMDEn CitTRVQgbmFtZSA9ICd0aHJlZV4wJworV0hFUkUgaWQgPSAnWzMsM10nOworLS0gVXBkYXRp bmcgYSBmaW5pdGUvb3BlbiBwb3J0aW9uIHdpdGggYSBmaW5pdGUvb3BlbiB0YXJnZXQKK1VQ REFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9N ICcyMDE4LTA2LTAxJyBUTyBVTkJPVU5ERUQKK1NFVCBuYW1lID0gJ3RocmVlXjEnCitXSEVS RSBpZCA9ICdbMywzXSc7CistLSBVcGRhdGluZyBhIGZpbml0ZS9vcGVuIHBvcnRpb24gd2l0 aCBhbiBvcGVuL2Zpbml0ZSB0YXJnZXQKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitG T1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NIFVOQk9VTkRFRCBUTyAnMjAxOC0wMy0wMScK K1NFVCBuYW1lID0gJ3RocmVlXjInCitXSEVSRSBpZCA9ICdbMywzXSc7CistLSBVcGRhdGlu ZyBhbiBvcGVuL2Zpbml0ZSBwb3J0aW9uIHdpdGggYW4gb3Blbi9maW5pdGUgdGFyZ2V0CitV UERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJP TSBVTkJPVU5ERUQgVE8gJzIwMTgtMDItMDEnCitTRVQgbmFtZSA9ICdmb3VyXjEnCitXSEVS RSBpZCA9ICdbNCw0XSc7CistLSBVcGRhdGluZyBhbiBvcGVuL2Zpbml0ZSBwb3J0aW9uIHdp dGggYSBmaW5pdGUvb3BlbiB0YXJnZXQKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitG T1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE3LTAxLTAxJyBUTyBVTkJPVU5ERUQK K1NFVCBuYW1lID0gJ2ZvdXJeMicKK1dIRVJFIGlkID0gJ1s0LDRdJzsKKy0tIFVwZGF0aW5n IGEgZmluaXRlL2Zpbml0ZSBwb3J0aW9uIHdpdGggYW4gZXhhY3QgZml0CitVUERBVEUgZm9y X3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxNy0w MS0wMScgVE8gJzIwMTgtMDItMDEnCitTRVQgbmFtZSA9ICdmb3VyXjMnCitXSEVSRSBpZCA9 ICdbNCw0XSc7CistLSBVcGRhdGluZyBhbiBlbmNsb3NlZCBzcGFuCitVUERBVEUgZm9yX3Bv cnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSBVTkJPVU5ERUQg VE8gVU5CT1VOREVECitTRVQgbmFtZSA9ICd0d29eMicKK1dIRVJFIGlkID0gJ1syLDJdJzsK Ky0tIFVwZGF0aW5nIGFuIG9wZW4vb3BlbiBwb3J0aW9uIHdpdGggYSBmaW5pdGUvZmluaXRl IHRhcmdldAorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZh bGlkX2F0IEZST00gJzIwMTgtMDEtMDEnIFRPICcyMDE5LTAxLTAxJworU0VUIG5hbWUgPSAn Zml2ZV4yJworV0hFUkUgaWQgPSAnWzUsNV0nOworLS0gVXBkYXRpbmcgYW4gZW5jbG9zZWQg c3BhbiB3aXRoIHNlcGFyYXRlIHByb3RydWRpbmcgc3BhbnMKK1VQREFURSBmb3JfcG9ydGlv bl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE3LTAxLTAxJyBU TyAnMjAyMC0wMS0wMScKK1NFVCBuYW1lID0gJ2ZpdmVeMycKK1dIRVJFIGlkID0gJ1s1LDVd JzsKKy0tIFVwZGF0aW5nIG11bHRpcGxlIGVuY2xvc2VkIHNwYW5zCitVUERBVEUgZm9yX3Bv cnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSBOVUxMIFRPIE5V TEwKK1NFVCBuYW1lID0gJ29uZV4yJworV0hFUkUgaWQgPSAnWzEsMV0nOworLS0gVXBkYXRp bmcgd2l0aCBhIHNoaWZ0L3JlZHVjZSBjb25mbGljdAorVVBEQVRFIGZvcl9wb3J0aW9uX29m X3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0CisgIEZST00gJzIwMTgtMDMtMDEnIEFU IFRJTUUgWk9ORSBJTlRFUlZBTCAnMScgSE9VUiBUTyBNSU5VVEUKKyAgVE8gJzIwMTktMDEt MDEnCitTRVQgbmFtZSA9ICdvbmVeMycKK1dIRVJFIGlkID0gJ1sxLDFdJzsKK1VQREFURSBm b3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdAorICBGUk9NICcy MDE4LTAzLTAxJyBBVCBUSU1FIFpPTkUgSU5URVJWQUwgJzInIEhPVVIKKyAgVE8gJzIwMTkt MDEtMDEnCitTRVQgbmFtZSA9ICdvbmVeNCcKK1dIRVJFIGlkID0gJ1sxLDFdJzsKK0VSUk9S OiAgc3ludGF4IGVycm9yIGF0IG9yIG5lYXIgIicyMDE5LTAxLTAxJyIKK0xJTkUgNDogICBU TyAnMjAxOS0wMS0wMScKKyAgICAgICAgICAgICBeCitVUERBVEUgZm9yX3BvcnRpb25fb2Zf dGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQKKyAgRlJPTSAoJzIwMTgtMDMtMDEnIEFU IFRJTUUgWk9ORSBJTlRFUlZBTCAnMicgSE9VUikKKyAgVE8gJzIwMTktMDEtMDEnCitTRVQg bmFtZSA9ICdvbmVeNCcKK1dIRVJFIGlkID0gJ1sxLDFdJzsKKy0tIFVwZGF0aW5nIHRoZSBu b24tcmFuZ2UgcGFydCBvZiB0aGUgUEs6CitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAor Rk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wMi0xNScgVE8gTlVMTAorU0VU IGlkID0gJ1s2LDZdJworV0hFUkUgaWQgPSAnWzEsMV0nOworLS0gVVBEQVRFIHdpdGggbm8g V0hFUkUgY2xhdXNlCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04g T0YgdmFsaWRfYXQgRlJPTSAnMjAzMC0wMS0wMScgVE8gTlVMTAorU0VUIG5hbWUgPSBuYW1l IHx8ICcqJzsKK1NFTEVDVCAqIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdCBPUkRFUiBCWSBp ZCwgdmFsaWRfYXQ7CisgIGlkICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0 ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICBuYW1lICAgCistLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tCisgWzEsMikgfCBbIlR1ZSBKYW4gMDIgMDA6MDA6MDAgMjAxOCIsIlNhdCBGZWIg MDMgMDA6MDA6MDAgMjAxOCIpIHwgb25lXjIKKyBbMSwyKSB8IFsiU2F0IEZlYiAwMyAwMDow MDowMCAyMDE4IiwiVGh1IEZlYiAxNSAwMDowMDowMCAyMDE4IikgfCBvbmVeMgorIFsyLDMp IHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJGcmkgSmFuIDA1IDAwOjAwOjAwIDIw MTgiKSB8IHR3b14yCisgWzMsNCkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlRo dSBNYXIgMDEgMDA6MDA6MDAgMjAxOCIpIHwgdGhyZWVeMgorIFszLDQpIHwgWyJUaHUgTWFy IDAxIDAwOjAwOjAwIDIwMTgiLCJGcmkgSnVuIDAxIDAwOjAwOjAwIDIwMTgiKSB8IHRocmVl CisgWzMsNCkgfCBbIkZyaSBKdW4gMDEgMDA6MDA6MDAgMjAxOCIsIlR1ZSBKYW4gMDEgMDA6 MDA6MDAgMjAzMCIpIHwgdGhyZWVeMQorIFszLDQpIHwgWyJUdWUgSmFuIDAxIDAwOjAwOjAw IDIwMzAiLCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRocmVlXjEqCisgWzQsNSkg fCAoLCJTdW4gSmFuIDAxIDAwOjAwOjAwIDIwMTciKSAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgZm91cl4xCisgWzQsNSkgfCBbIlN1biBKYW4gMDEgMDA6MDA6MDAgMjAxNyIsIlRo dSBGZWIgMDEgMDA6MDA6MDAgMjAxOCIpIHwgZm91cl4zCisgWzQsNSkgfCBbIlRodSBGZWIg MDEgMDA6MDA6MDAgMjAxOCIsIlN1biBBcHIgMDEgMDA6MDA6MDAgMjAxOCIpIHwgZm91cl4y CisgWzUsNikgfCAoLCJTdW4gSmFuIDAxIDAwOjAwOjAwIDIwMTciKSAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgZml2ZQorIFs1LDYpIHwgWyJTdW4gSmFuIDAxIDAwOjAwOjAwIDIw MTciLCJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiKSB8IGZpdmVeMworIFs1LDYpIHwgWyJN b24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiKSB8 IGZpdmVeMworIFs1LDYpIHwgWyJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiLCJXZWQgSmFu IDAxIDAwOjAwOjAwIDIwMjAiKSB8IGZpdmVeMworIFs1LDYpIHwgWyJXZWQgSmFuIDAxIDAw OjAwOjAwIDIwMjAiLCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMzAiKSB8IGZpdmUKKyBbNSw2 KSB8IFsiVHVlIEphbiAwMSAwMDowMDowMCAyMDMwIiwpICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCBmaXZlKgorIFs2LDcpIHwgWyJUaHUgRmViIDE1IDAwOjAwOjAwIDIwMTgiLCJU aHUgTWFyIDAxIDA4OjAxOjAwIDIwMTgiKSB8IG9uZV4yCisgWzYsNykgfCBbIlRodSBNYXIg MDEgMDg6MDE6MDAgMjAxOCIsIlRodSBNYXIgMDEgMTA6MDA6MDAgMjAxOCIpIHwgb25lXjMK KyBbNiw3KSB8IFsiVGh1IE1hciAwMSAxMDowMDowMCAyMDE4IiwiU2F0IE1hciAwMyAwMDow MDowMCAyMDE4IikgfCBvbmVeNAorIFs2LDcpIHwgWyJTYXQgTWFyIDAzIDAwOjAwOjAwIDIw MTgiLCJXZWQgQXByIDA0IDAwOjAwOjAwIDIwMTgiKSB8IG9uZV40CisoMjAgcm93cykKKwor LS0KKy0tIERFTEVURSB0ZXN0cworLS0KKy0tIERlbGV0aW5nIHdpdGggYSBtaXNzaW5nIGNv bHVtbiBmYWlscworREVMRVRFIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJ T04gT0YgaW52YWxpZF9hdCBGUk9NICcyMDE4LTA2LTAxJyBUTyBOVUxMCitXSEVSRSBpZCA9 ICdbNSw1XSc7CitFUlJPUjogIGNvbHVtbiBvciBwZXJpb2QgImludmFsaWRfYXQiIG9mIHJl bGF0aW9uICJmb3JfcG9ydGlvbl9vZl90ZXN0IiBkb2VzIG5vdCBleGlzdAorTElORSAyOiBG T1IgUE9SVElPTiBPRiBpbnZhbGlkX2F0IEZST00gJzIwMTgtMDYtMDEnIFRPIE5VTEwKKyAg ICAgICAgICAgICAgICAgICAgICAgXgorLS0gRGVsZXRpbmcgd2l0aCB0aW1lc3RhbXBzIHJl dmVyc2VkIGZhaWxzCitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9S VElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTA2LTAxJyBUTyAnMjAxOC0wMS0wMScKK1dI RVJFIGlkID0gJ1szLDNdJzsKK0VSUk9SOiAgcmFuZ2UgbG93ZXIgYm91bmQgbXVzdCBiZSBs ZXNzIHRoYW4gb3IgZXF1YWwgdG8gcmFuZ2UgdXBwZXIgYm91bmQKKy0tIERlbGV0aW5nIHdp dGggdGltZXN0YW1wcyBlcXVhbCBkb2VzIG5vdGhpbmcKK0RFTEVURSBGUk9NIGZvcl9wb3J0 aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDQtMDEn IFRPICcyMDE4LTA0LTAxJworV0hFUkUgaWQgPSAnWzMsM10nOworLS0gRGVsZXRpbmcgd2l0 aCBhIGNsb3NlZC9jbG9zZWQgdGFyZ2V0CitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90 ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTA2LTAxJyBUTyAnMjAy MC0wNi0wMScKK1dIRVJFIGlkID0gJ1s1LDVdJzsKKy0tIERlbGV0aW5nIHdpdGggYSBjbG9z ZWQvb3BlbiB0YXJnZXQKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQ T1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDQtMDEnIFRPIE5VTEwKK1dIRVJFIGlk ID0gJ1szLDNdJzsKKy0tIERlbGV0aW5nIHdpdGggYW4gb3Blbi9jbG9zZWQgdGFyZ2V0CitE RUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9h dCBGUk9NIE5VTEwgVE8gJzIwMTgtMDItMDgnCitXSEVSRSBpZCA9ICdbMSwxXSc7CistLSBE ZWxldGluZyB3aXRoIGFuIG9wZW4vb3BlbiB0YXJnZXQKK0RFTEVURSBGUk9NIGZvcl9wb3J0 aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gTlVMTCBUTyBOVUxM CitXSEVSRSBpZCA9ICdbNiw2XSc7CistLSBERUxFVEUgd2l0aCBubyBXSEVSRSBjbGF1c2UK K0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlk X2F0IEZST00gJzIwMjUtMDEtMDEnIFRPIE5VTEw7CitTRUxFQ1QgKiBGUk9NIGZvcl9wb3J0 aW9uX29mX3Rlc3QgT1JERVIgQlkgaWQsIHZhbGlkX2F0OworICBpZCAgIHwgICAgICAgICAg ICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8ICBuYW1l ICAgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0KKyBbMSwyKSB8IFsiVGh1IEZlYiAwOCAwMDow MDowMCAyMDE4IiwiVGh1IEZlYiAxNSAwMDowMDowMCAyMDE4IikgfCBvbmVeMgorIFsyLDMp IHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJGcmkgSmFuIDA1IDAwOjAwOjAwIDIw MTgiKSB8IHR3b14yCisgWzMsNCkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlRo dSBNYXIgMDEgMDA6MDA6MDAgMjAxOCIpIHwgdGhyZWVeMgorIFszLDQpIHwgWyJUaHUgTWFy IDAxIDAwOjAwOjAwIDIwMTgiLCJTdW4gQXByIDAxIDAwOjAwOjAwIDIwMTgiKSB8IHRocmVl CisgWzQsNSkgfCAoLCJTdW4gSmFuIDAxIDAwOjAwOjAwIDIwMTciKSAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgZm91cl4xCisgWzQsNSkgfCBbIlN1biBKYW4gMDEgMDA6MDA6MDAg MjAxNyIsIlRodSBGZWIgMDEgMDA6MDA6MDAgMjAxOCIpIHwgZm91cl4zCisgWzQsNSkgfCBb IlRodSBGZWIgMDEgMDA6MDA6MDAgMjAxOCIsIlN1biBBcHIgMDEgMDA6MDA6MDAgMjAxOCIp IHwgZm91cl4yCisgWzUsNikgfCAoLCJTdW4gSmFuIDAxIDAwOjAwOjAwIDIwMTciKSAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgZml2ZQorIFs1LDYpIHwgWyJTdW4gSmFuIDAxIDAw OjAwOjAwIDIwMTciLCJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiKSB8IGZpdmVeMworIFs1 LDYpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJGcmkgSnVuIDAxIDAwOjAwOjAw IDIwMTgiKSB8IGZpdmVeMworIFs1LDYpIHwgWyJNb24gSnVuIDAxIDAwOjAwOjAwIDIwMjAi LCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjUiKSB8IGZpdmUKKygxMSByb3dzKQorCistLSBV UERBVEUgLi4uIFJFVFVSTklORyByZXR1cm5zIG9ubHkgdGhlIHVwZGF0ZWQgdmFsdWVzIChu b3QgdGhlIGluc2VydGVkIHNpZGUgdmFsdWVzKQorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rl c3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDItMDEnIFRPICcyMDE4 LTAyLTE1JworU0VUIG5hbWUgPSAndGhyZWVeMycKK1dIRVJFIGlkID0gJ1szLDNdJworUkVU VVJOSU5HICo7CisgIGlkICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAg ICAgICAgICAgICAgICAgICAgICAgIHwgIG5hbWUgICAKKy0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LQorIFszLDQpIHwgWyJUaHUgRmViIDAxIDAwOjAwOjAwIDIwMTgiLCJUaHUgRmViIDE1IDAw OjAwOjAwIDIwMTgiKSB8IHRocmVlXjMKKygxIHJvdykKKworLS0gdGVzdCB0aGF0IHdlIHJ1 biB0cmlnZ2VycyBvbiB0aGUgVVBEQVRFL0RFTEVURWQgcm93IGFuZCB0aGUgSU5TRVJUZWQg cm93cworQ1JFQVRFIEZVTkNUSU9OIGZvcl9wb3J0aW9uX29mX3RyaWdnZXIoKQorUkVUVVJO UyB0cmlnZ2VyCitBUworJCQKK0JFR0lOCisgIFJBSVNFIE5PVElDRSAnJSAlICUgb2YgJScs IFRHX1dIRU4sIFRHX09QLCBORVcudmFsaWRfYXQsIE9MRC52YWxpZF9hdDsKKyAgSUYgVEdf T1AgPSAnREVMRVRFJyBUSEVOCisgICAgUkVUVVJOIE9MRDsKKyAgRUxTRQorICAgIFJFVFVS TiBORVc7CisgIEVORCBJRjsKK0VORDsKKyQkCitMQU5HVUFHRSBwbHBnc3FsOworQ1JFQVRF IFRSSUdHRVIgdHJnX2Zvcl9wb3J0aW9uX29mX2JlZm9yZV9pbnNlcnQKKyAgQkVGT1JFIElO U0VSVCBPTiBmb3JfcG9ydGlvbl9vZl90ZXN0CisgIEZPUiBFQUNIIFJPVworICBFWEVDVVRF IEZVTkNUSU9OIGZvcl9wb3J0aW9uX29mX3RyaWdnZXIoKTsKK0NSRUFURSBUUklHR0VSIHRy Z19mb3JfcG9ydGlvbl9vZl9hZnRlcl9pbnNlcnQKKyAgQUZURVIgSU5TRVJUIE9OIGZvcl9w b3J0aW9uX29mX3Rlc3QKKyAgRk9SIEVBQ0ggUk9XCisgIEVYRUNVVEUgRlVOQ1RJT04gZm9y X3BvcnRpb25fb2ZfdHJpZ2dlcigpOworQ1JFQVRFIFRSSUdHRVIgdHJnX2Zvcl9wb3J0aW9u X29mX2JlZm9yZV91cGRhdGUKKyAgQkVGT1JFIFVQREFURSBPTiBmb3JfcG9ydGlvbl9vZl90 ZXN0CisgIEZPUiBFQUNIIFJPVworICBFWEVDVVRFIEZVTkNUSU9OIGZvcl9wb3J0aW9uX29m X3RyaWdnZXIoKTsKK0NSRUFURSBUUklHR0VSIHRyZ19mb3JfcG9ydGlvbl9vZl9hZnRlcl91 cGRhdGUKKyAgQUZURVIgVVBEQVRFIE9OIGZvcl9wb3J0aW9uX29mX3Rlc3QKKyAgRk9SIEVB Q0ggUk9XCisgIEVYRUNVVEUgRlVOQ1RJT04gZm9yX3BvcnRpb25fb2ZfdHJpZ2dlcigpOwor Q1JFQVRFIFRSSUdHRVIgdHJnX2Zvcl9wb3J0aW9uX29mX2JlZm9yZV9kZWxldGUKKyAgQkVG T1JFIERFTEVURSBPTiBmb3JfcG9ydGlvbl9vZl90ZXN0CisgIEZPUiBFQUNIIFJPVworICBF WEVDVVRFIEZVTkNUSU9OIGZvcl9wb3J0aW9uX29mX3RyaWdnZXIoKTsKK0NSRUFURSBUUklH R0VSIHRyZ19mb3JfcG9ydGlvbl9vZl9hZnRlcl9kZWxldGUKKyAgQUZURVIgREVMRVRFIE9O IGZvcl9wb3J0aW9uX29mX3Rlc3QKKyAgRk9SIEVBQ0ggUk9XCisgIEVYRUNVVEUgRlVOQ1RJ T04gZm9yX3BvcnRpb25fb2ZfdHJpZ2dlcigpOworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rl c3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMjEtMDEtMDEnIFRPICcyMDIy LTAxLTAxJworU0VUIG5hbWUgPSAnZml2ZV40JworV0hFUkUgaWQgPSAnWzUsNV0nOworTk9U SUNFOiAgQkVGT1JFIFVQREFURSBbIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIsIlNhdCBK YW4gMDEgMDA6MDA6MDAgMjAyMiIpIG9mIFsiTW9uIEp1biAwMSAwMDowMDowMCAyMDIwIiwi V2VkIEphbiAwMSAwMDowMDowMCAyMDI1IikKK05PVElDRTogIEJFRk9SRSBJTlNFUlQgWyJN b24gSnVuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSBv ZiA8TlVMTD4KK05PVElDRTogIEJFRk9SRSBJTlNFUlQgWyJTYXQgSmFuIDAxIDAwOjAwOjAw IDIwMjIiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjUiKSBvZiA8TlVMTD4KK05PVElDRTog IEFGVEVSIElOU0VSVCBbIk1vbiBKdW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEg MDA6MDA6MDAgMjAyMSIpIG9mIDxOVUxMPgorTk9USUNFOiAgQUZURVIgSU5TRVJUIFsiU2F0 IEphbiAwMSAwMDowMDowMCAyMDIyIiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDI1Iikgb2Yg PE5VTEw+CitOT1RJQ0U6ICBBRlRFUiBVUERBVEUgWyJGcmkgSmFuIDAxIDAwOjAwOjAwIDIw MjEiLCJTYXQgSmFuIDAxIDAwOjAwOjAwIDIwMjIiKSBvZiBbIk1vbiBKdW4gMDEgMDA6MDA6 MDAgMjAyMCIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyNSIpCitERUxFVEUgRlJPTSBmb3Jf cG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDIzLTAx LTAxJyBUTyAnMjAyNC0wMS0wMScKK1dIRVJFIGlkID0gJ1s1LDVdJzsKK05PVElDRTogIEJF Rk9SRSBERUxFVEUgPE5VTEw+IG9mIFsiU2F0IEphbiAwMSAwMDowMDowMCAyMDIyIiwiV2Vk IEphbiAwMSAwMDowMDowMCAyMDI1IikKK05PVElDRTogIEJFRk9SRSBJTlNFUlQgWyJTYXQg SmFuIDAxIDAwOjAwOjAwIDIwMjIiLCJTdW4gSmFuIDAxIDAwOjAwOjAwIDIwMjMiKSBvZiA8 TlVMTD4KK05PVElDRTogIEJFRk9SRSBJTlNFUlQgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIw MjQiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjUiKSBvZiA8TlVMTD4KK05PVElDRTogIEFG VEVSIElOU0VSVCBbIlNhdCBKYW4gMDEgMDA6MDA6MDAgMjAyMiIsIlN1biBKYW4gMDEgMDA6 MDA6MDAgMjAyMyIpIG9mIDxOVUxMPgorTk9USUNFOiAgQUZURVIgSU5TRVJUIFsiTW9uIEph biAwMSAwMDowMDowMCAyMDI0IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDI1Iikgb2YgPE5V TEw+CitOT1RJQ0U6ICBBRlRFUiBERUxFVEUgPE5VTEw+IG9mIFsiU2F0IEphbiAwMSAwMDow MDowMCAyMDIyIiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDI1IikKK1NFTEVDVCAqIEZST00g Zm9yX3BvcnRpb25fb2ZfdGVzdCBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CisgIGlkICAgfCAg ICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAg IHwgIG5hbWUgICAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLQorIFsxLDIpIHwgWyJUaHUgRmVi IDA4IDAwOjAwOjAwIDIwMTgiLCJUaHUgRmViIDE1IDAwOjAwOjAwIDIwMTgiKSB8IG9uZV4y CisgWzIsMykgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIkZyaSBKYW4gMDUgMDA6 MDA6MDAgMjAxOCIpIHwgdHdvXjIKKyBbMyw0KSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAy MDE4IiwiVGh1IEZlYiAwMSAwMDowMDowMCAyMDE4IikgfCB0aHJlZV4yCisgWzMsNCkgfCBb IlRodSBGZWIgMDEgMDA6MDA6MDAgMjAxOCIsIlRodSBGZWIgMTUgMDA6MDA6MDAgMjAxOCIp IHwgdGhyZWVeMworIFszLDQpIHwgWyJUaHUgRmViIDE1IDAwOjAwOjAwIDIwMTgiLCJUaHUg TWFyIDAxIDAwOjAwOjAwIDIwMTgiKSB8IHRocmVlXjIKKyBbMyw0KSB8IFsiVGh1IE1hciAw MSAwMDowMDowMCAyMDE4IiwiU3VuIEFwciAwMSAwMDowMDowMCAyMDE4IikgfCB0aHJlZQor IFs0LDUpIHwgKCwiU3VuIEphbiAwMSAwMDowMDowMCAyMDE3IikgICAgICAgICAgICAgICAg ICAgICAgICAgICB8IGZvdXJeMQorIFs0LDUpIHwgWyJTdW4gSmFuIDAxIDAwOjAwOjAwIDIw MTciLCJUaHUgRmViIDAxIDAwOjAwOjAwIDIwMTgiKSB8IGZvdXJeMworIFs0LDUpIHwgWyJU aHUgRmViIDAxIDAwOjAwOjAwIDIwMTgiLCJTdW4gQXByIDAxIDAwOjAwOjAwIDIwMTgiKSB8 IGZvdXJeMgorIFs1LDYpIHwgKCwiU3VuIEphbiAwMSAwMDowMDowMCAyMDE3IikgICAgICAg ICAgICAgICAgICAgICAgICAgICB8IGZpdmUKKyBbNSw2KSB8IFsiU3VuIEphbiAwMSAwMDow MDowMCAyMDE3IiwiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IikgfCBmaXZlXjMKKyBbNSw2 KSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiRnJpIEp1biAwMSAwMDowMDowMCAy MDE4IikgfCBmaXZlXjMKKyBbNSw2KSB8IFsiTW9uIEp1biAwMSAwMDowMDowMCAyMDIwIiwi RnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgfCBmaXZlCisgWzUsNikgfCBbIkZyaSBKYW4g MDEgMDA6MDA6MDAgMjAyMSIsIlNhdCBKYW4gMDEgMDA6MDA6MDAgMjAyMiIpIHwgZml2ZV40 CisgWzUsNikgfCBbIlNhdCBKYW4gMDEgMDA6MDA6MDAgMjAyMiIsIlN1biBKYW4gMDEgMDA6 MDA6MDAgMjAyMyIpIHwgZml2ZQorIFs1LDYpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIw MjQiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjUiKSB8IGZpdmUKKygxNiByb3dzKQorCist LSBUZXN0IHdpdGggYSBjdXN0b20gcmFuZ2UgdHlwZQorQ1JFQVRFIFRZUEUgbXlkYXRlcmFu Z2UgQVMgcmFuZ2Uoc3VidHlwZT1kYXRlKTsKK0NSRUFURSBUQUJMRSBmb3JfcG9ydGlvbl9v Zl90ZXN0MiAoCisgIGlkIGludDRyYW5nZSBOT1QgTlVMTCwKKyAgdmFsaWRfYXQgbXlkYXRl cmFuZ2UgTk9UIE5VTEwsCisgIG5hbWUgdGV4dCBOT1QgTlVMTCwKKwlDT05TVFJBSU5UIGZv cl9wb3J0aW9uX29mX3Rlc3QyX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9V VCBPVkVSTEFQUykKKyk7CitJTlNFUlQgSU5UTyBmb3JfcG9ydGlvbl9vZl90ZXN0MgorVkFM VUVTCisoJ1sxLDFdJywgJ1syMDE4LTAxLTAyLDIwMTgtMDItMDMpJywgJ29uZScpLAorKCdb MSwxXScsICdbMjAxOC0wMi0wMywyMDE4LTAzLTAzKScsICdvbmUnKSwKKygnWzEsMV0nLCAn WzIwMTgtMDMtMDMsMjAxOC0wNC0wNCknLCAnb25lJyksCisoJ1syLDJdJywgJ1syMDE4LTAx LTAxLDIwMTgtMDUtMDEpJywgJ3R3bycpLAorKCdbMywzXScsICdbMjAxOC0wMS0wMSwpJywg J3RocmVlJyk7Cis7CitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdDIKK0ZPUiBQT1JUSU9O IE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDEtMTAnIFRPICcyMDE4LTAyLTEwJworU0VUIG5h bWUgPSAnb25lXjEnCitXSEVSRSBpZCA9ICdbMSwxXSc7CitERUxFVEUgRlJPTSBmb3JfcG9y dGlvbl9vZl90ZXN0MgorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wMS0x NScgVE8gJzIwMTgtMDItMTUnCitXSEVSRSBpZCA9ICdbMiwyXSc7CitTRUxFQ1QgKiBGUk9N IGZvcl9wb3J0aW9uX29mX3Rlc3QyIE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKKyAgaWQgICB8 ICAgICAgICB2YWxpZF9hdCAgICAgICAgIHwgbmFtZSAgCistLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLQorIFsxLDIpIHwgWzAxLTAyLTIwMTgsMDEtMTAtMjAx OCkgfCBvbmUKKyBbMSwyKSB8IFswMS0xMC0yMDE4LDAyLTAzLTIwMTgpIHwgb25lXjEKKyBb MSwyKSB8IFswMi0wMy0yMDE4LDAyLTEwLTIwMTgpIHwgb25lXjEKKyBbMSwyKSB8IFswMi0x MC0yMDE4LDAzLTAzLTIwMTgpIHwgb25lCisgWzEsMikgfCBbMDMtMDMtMjAxOCwwNC0wNC0y MDE4KSB8IG9uZQorIFsyLDMpIHwgWzAxLTAxLTIwMTgsMDEtMTUtMjAxOCkgfCB0d28KKyBb MiwzKSB8IFswMi0xNS0yMDE4LDA1LTAxLTIwMTgpIHwgdHdvCisgWzMsNCkgfCBbMDEtMDEt MjAxOCwpICAgICAgICAgICB8IHRocmVlCisoOCByb3dzKQorCitEUk9QIFRBQkxFIGZvcl9w b3J0aW9uX29mX3Rlc3QyOworRFJPUCBUWVBFIG15ZGF0ZXJhbmdlOwpkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wcml2aWxlZ2VzLm91dCBiL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvcHJpdmlsZWdlcy5vdXQKaW5kZXggYzFlNjEwZTYyZi4uY2YyYzdk ZjkwMCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wcml2aWxlZ2Vz Lm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3ByaXZpbGVnZXMub3V0CkBA IC05ODUsNiArOTg1LDI0IEBAIEVSUk9SOiAgbnVsbCB2YWx1ZSBpbiBjb2x1bW4gImIiIG9m IHJlbGF0aW9uICJlcnJ0c3RfcGFydF8yIiB2aW9sYXRlcyBub3QtbnVsbCBjCiBERVRBSUw6 ICBGYWlsaW5nIHJvdyBjb250YWlucyAoYSwgYiwgYykgPSAoYWFhYSwgbnVsbCwgY2NjKS4K IFNFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wcml2X3VzZXIxOwogRFJPUCBU QUJMRSBlcnJ0c3Q7CistLSB0ZXN0IGNvbHVtbi1sZXZlbCBwcml2aWxlZ2VzIG9uIHRoZSBy YW5nZS9QRVJJT0QgdXNlZCBpbiBGT1IgUE9SVElPTiBPRgorU0VUIFNFU1NJT04gQVVUSE9S SVpBVElPTiByZWdyZXNzX3ByaXZfdXNlcjE7CitDUkVBVEUgVEFCTEUgdDEgKAorICBjMSBp bnQ0cmFuZ2UsCisgIHZhbGlkX2F0IHRzcmFuZ2UsCisJQ09OU1RSQUlOVCB0MXBrIFBSSU1B UlkgS0VZIChjMSwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CitHUkFOVCBTRUxF Q1QgT04gdDEgVE8gcmVncmVzc19wcml2X3VzZXIyOworR1JBTlQgU0VMRUNUIE9OIHQxIFRP IHJlZ3Jlc3NfcHJpdl91c2VyMzsKK0dSQU5UIFVQREFURSAoYzEpIE9OIHQxIFRPIHJlZ3Jl c3NfcHJpdl91c2VyMjsKK0dSQU5UIFVQREFURSAoYzEsIHZhbGlkX2F0KSBPTiB0MSBUTyBy ZWdyZXNzX3ByaXZfdXNlcjM7CitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3Nf cHJpdl91c2VyMjsKK1VQREFURSB0MSBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcy MDAwLTAxLTAxJyBUTyAnMjAwMS0wMS0wMScgU0VUIGMxID0gJ1syLDMpJzsKK0VSUk9SOiAg cGVybWlzc2lvbiBkZW5pZWQgZm9yIHRhYmxlIHQxCitTRVQgU0VTU0lPTiBBVVRIT1JJWkFU SU9OIHJlZ3Jlc3NfcHJpdl91c2VyMzsKK1VQREFURSB0MSBGT1IgUE9SVElPTiBPRiB2YWxp ZF9hdCBGUk9NICcyMDAwLTAxLTAxJyBUTyAnMjAwMS0wMS0wMScgU0VUIGMxID0gJ1syLDMp JzsKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wcml2X3VzZXIxOworRFJP UCBUQUJMRSB0MTsKIC0tIHRlc3QgY29sdW1uLWxldmVsIHByaXZpbGVnZXMgd2hlbiBpbnZv bHZlZCB3aXRoIERFTEVURQogU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3By aXZfdXNlcjE7CiBBTFRFUiBUQUJMRSBhdGVzdDYgQUREIENPTFVNTiB0aHJlZSBpbnRlZ2Vy OwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC91cGRhdGFibGVfdmll d3Mub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC91cGRhdGFibGVfdmlld3Mub3V0 CmluZGV4IGE3M2MxZjkwYzQuLjcyN2FkMDhlMDggMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvdXBkYXRhYmxlX3ZpZXdzLm91dAorKysgYi9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL3VwZGF0YWJsZV92aWV3cy5vdXQKQEAgLTMwMjAsNiArMzAyMCwzOCBA QCBzZWxlY3QgKiBmcm9tIHV2X2lvY3VfdGFiOwogCiBkcm9wIHZpZXcgdXZfaW9jdV92aWV3 OwogZHJvcCB0YWJsZSB1dl9pb2N1X3RhYjsKKy0tIENoZWNrIFVQREFURSBGT1IgUE9SVElP TiBPRiB3b3JrcyBjb3JyZWN0bHkKK2NyZWF0ZSB0YWJsZSB1dl9mcG9fdGFiIChpZCBpbnQ0 cmFuZ2UsIHZhbGlkX2F0IHRzcmFuZ2UsIGIgZmxvYXQsCisgICAgY29uc3RyYWludCBwa191 dl9mcG9fdGFiIHByaW1hcnkga2V5IChpZCwgdmFsaWRfYXQgd2l0aG91dCBvdmVybGFwcykp OworaW5zZXJ0IGludG8gdXZfZnBvX3RhYiB2YWx1ZXMgKCdbMSwxXScsICdbMjAyMC0wMS0w MSwgMjAzMC0wMS0wMSknLCAwKTsKK2NyZWF0ZSB2aWV3IHV2X2Zwb192aWV3IGFzCisgICAg c2VsZWN0IGIsIGIrMSBhcyBjLCB2YWxpZF9hdCwgaWQsICcyLjAnOjp0ZXh0IGFzIHR3byBm cm9tIHV2X2Zwb190YWI7CitpbnNlcnQgaW50byB1dl9mcG9fdmlldyAoaWQsIHZhbGlkX2F0 LCBiKSB2YWx1ZXMgKCdbMSwxXScsICdbMjAxMC0wMS0wMSwgMjAyMC0wMS0wMSknLCAxKTsK K3NlbGVjdCAqIGZyb20gdXZfZnBvX3ZpZXc7CisgYiB8IGMgfCAgICAgICAgICAgICAgICAg ICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwgIGlkICAgfCB0d28g CistLS0rLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tCisgMCB8IDEgfCBbIldlZCBKYW4gMDEgMDA6 MDA6MDAgMjAyMCIsIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAzMCIpIHwgWzEsMikgfCAyLjAK KyAxIHwgMiB8IFsiRnJpIEphbiAwMSAwMDowMDowMCAyMDEwIiwiV2VkIEphbiAwMSAwMDow MDowMCAyMDIwIikgfCBbMSwyKSB8IDIuMAorKDIgcm93cykKKwordXBkYXRlIHV2X2Zwb192 aWV3IGZvciBwb3J0aW9uIG9mIHZhbGlkX2F0IGZyb20gJzIwMTUtMDEtMDEnIHRvICcyMDIw LTAxLTAxJyBzZXQgYiA9IDIgd2hlcmUgaWQgPSAnWzEsMV0nOworc2VsZWN0ICogZnJvbSB1 dl9mcG9fdmlldzsKKyBiIHwgYyB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQg ICAgICAgICAgICAgICAgICAgICAgICAgfCAgaWQgICB8IHR3byAKKy0tLSstLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0rLS0tLS0KKyAwIHwgMSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiVHVl IEphbiAwMSAwMDowMDowMCAyMDMwIikgfCBbMSwyKSB8IDIuMAorIDIgfCAzIHwgWyJUaHUg SmFuIDAxIDAwOjAwOjAwIDIwMTUiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8IFsx LDIpIHwgMi4wCisgMSB8IDIgfCBbIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAxMCIsIlRodSBK YW4gMDEgMDA6MDA6MDAgMjAxNSIpIHwgWzEsMikgfCAyLjAKKygzIHJvd3MpCisKK2RlbGV0 ZSBmcm9tIHV2X2Zwb192aWV3IGZvciBwb3J0aW9uIG9mIHZhbGlkX2F0IGZyb20gJzIwMTct MDEtMDEnIHRvICcyMDIyLTAxLTAxJyB3aGVyZSBpZCA9ICdbMSwxXSc7CitzZWxlY3QgKiBm cm9tIHV2X2Zwb192aWV3OworIGIgfCBjIHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxp ZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8ICBpZCAgIHwgdHdvIAorLS0tKy0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLSstLS0tLQorIDEgfCAyIHwgWyJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMTAi LCJUaHUgSmFuIDAxIDAwOjAwOjAwIDIwMTUiKSB8IFsxLDIpIHwgMi4wCisgMCB8IDEgfCBb IlNhdCBKYW4gMDEgMDA6MDA6MDAgMjAyMiIsIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAzMCIp IHwgWzEsMikgfCAyLjAKKyAyIHwgMyB8IFsiVGh1IEphbiAwMSAwMDowMDowMCAyMDE1Iiwi U3VuIEphbiAwMSAwMDowMDowMCAyMDE3IikgfCBbMSwyKSB8IDIuMAorKDMgcm93cykKKwog LS0gVGVzdCB3aG9sZS1yb3cgcmVmZXJlbmNlcyB0byB0aGUgdmlldwogY3JlYXRlIHRhYmxl IHV2X2lvY3VfdGFiIChhIGludCB1bmlxdWUsIGIgdGV4dCk7CiBjcmVhdGUgdmlldyB1dl9p b2N1X3ZpZXcgYXMKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvd2l0 aG91dF9vdmVybGFwcy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3dpdGhvdXRf b3ZlcmxhcHMub3V0CmluZGV4IDRkZjZjYWQzNjQuLjJjNmQ0NjgwNTEgMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvd2l0aG91dF9vdmVybGFwcy5vdXQKKysrIGIv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC93aXRob3V0X292ZXJsYXBzLm91dApAQCAtMjk2 LDYgKzI5NiwzNiBAQCBJTlNFUlQgSU5UTyB0ZW1wb3JhbDMgKGlkLCB2YWxpZF9hdCwgaWQy LCBuYW1lKQogICAoJ1sxLDFdJywgZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIwMTAtMDEt MDEnKSwgJ1s3LDddJywgJ2ZvbycpLAogICAoJ1syLDJdJywgZGF0ZXJhbmdlKCcyMDAwLTAx LTAxJywgJzIwMTAtMDEtMDEnKSwgJ1s5LDldJywgJ2JhcicpCiA7CitVUERBVEUgdGVtcG9y YWwzIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMDAtMDUtMDEnIFRPICcyMDAw LTA3LTAxJworICBTRVQgbmFtZSA9IG5hbWUgfHwgJzEnOworVVBEQVRFIHRlbXBvcmFsMyBG T1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDAwLTA0LTAxJyBUTyAnMjAwMC0wNi0w MScKKyAgU0VUIG5hbWUgPSBuYW1lIHx8ICcyJworICBXSEVSRSBpZCA9ICdbMiwyXSc7CitT RUxFQ1QgKiBGUk9NIHRlbXBvcmFsMyBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CisgIGlkICAg fCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8ICBpZDIgICB8IG5hbWUgIAorLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0KKyBbMSwyKSB8IFsw MS0wMS0yMDAwLDA1LTAxLTIwMDApIHwgWzcsOCkgIHwgZm9vCisgWzEsMikgfCBbMDUtMDEt MjAwMCwwNy0wMS0yMDAwKSB8IFs3LDgpICB8IGZvbzEKKyBbMSwyKSB8IFswNy0wMS0yMDAw LDAxLTAxLTIwMTApIHwgWzcsOCkgIHwgZm9vCisgWzIsMykgfCBbMDEtMDEtMjAwMCwwNC0w MS0yMDAwKSB8IFs5LDEwKSB8IGJhcgorIFsyLDMpIHwgWzA0LTAxLTIwMDAsMDUtMDEtMjAw MCkgfCBbOSwxMCkgfCBiYXIyCisgWzIsMykgfCBbMDUtMDEtMjAwMCwwNi0wMS0yMDAwKSB8 IFs5LDEwKSB8IGJhcjEyCisgWzIsMykgfCBbMDYtMDEtMjAwMCwwNy0wMS0yMDAwKSB8IFs5 LDEwKSB8IGJhcjEKKyBbMiwzKSB8IFswNy0wMS0yMDAwLDAxLTAxLTIwMTApIHwgWzksMTAp IHwgYmFyCisoOCByb3dzKQorCistLSBjb25mbGljdGluZyBpZCBvbmx5OgorSU5TRVJUIElO VE8gdGVtcG9yYWwzIChpZCwgdmFsaWRfYXQsIGlkMiwgbmFtZSkKKyAgVkFMVUVTCisgICgn WzEsMV0nLCBkYXRlcmFuZ2UoJzIwMDUtMDEtMDEnLCAnMjAwNi0wMS0wMScpLCAnWzgsOF0n LCAnZm9vMycpOworRVJST1I6ICBjb25mbGljdGluZyBrZXkgdmFsdWUgdmlvbGF0ZXMgZXhj bHVzaW9uIGNvbnN0cmFpbnQgInRlbXBvcmFsM19wayIKK0RFVEFJTDogIEtleSAoaWQsIHZh bGlkX2F0KT0oWzEsMiksIFswMS0wMS0yMDA1LDAxLTAxLTIwMDYpKSBjb25mbGljdHMgd2l0 aCBleGlzdGluZyBrZXkgKGlkLCB2YWxpZF9hdCk9KFsxLDIpLCBbMDctMDEtMjAwMCwwMS0w MS0yMDEwKSkuCistLSBjb25mbGljdGluZyBpZDIgb25seToKK0lOU0VSVCBJTlRPIHRlbXBv cmFsMyAoaWQsIHZhbGlkX2F0LCBpZDIsIG5hbWUpCisgIFZBTFVFUworICAoJ1szLDNdJywg ZGF0ZXJhbmdlKCcyMDA1LTAxLTAxJywgJzIwMTAtMDEtMDEnKSwgJ1s5LDldJywgJ2JhcjMn KTsKK0VSUk9SOiAgY29uZmxpY3Rpbmcga2V5IHZhbHVlIHZpb2xhdGVzIGV4Y2x1c2lvbiBj b25zdHJhaW50ICJ0ZW1wb3JhbDNfdW5pcSIKK0RFVEFJTDogIEtleSAoaWQyLCB2YWxpZF9h dCk9KFs5LDEwKSwgWzAxLTAxLTIwMDUsMDEtMDEtMjAxMCkpIGNvbmZsaWN0cyB3aXRoIGV4 aXN0aW5nIGtleSAoaWQyLCB2YWxpZF9hdCk9KFs5LDEwKSwgWzA3LTAxLTIwMDAsMDEtMDEt MjAxMCkpLgogRFJPUCBUQUJMRSB0ZW1wb3JhbDM7CiAtLQogLS0gdGVzdCBjaGFuZ2luZyB0 aGUgUEsncyBkZXBlbmRlbmNpZXMKQEAgLTM0OCw2ICszNzgsMzYgQEAgU0VMRUNUICogRlJP TSB0cDIgT1JERVIgQlkgaWQsIHZhbGlkX2F0OwogIFszLDQpIHwgWzAxLTAxLTIwMDAsMDEt MDEtMjAxMCkgfCB0aHJlZQogKDEgcm93KQogCitVUERBVEUgIHRlbXBvcmFsX3BhcnRpdGlv bmVkCisgIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMDAtMDEtMTUnIFRPICcy MDAwLTAyLTE1JworICBTRVQgbmFtZSA9ICdvbmUyJworICBXSEVSRSBpZCA9ICdbMSwxXSc7 CitVUERBVEUgIHRlbXBvcmFsX3BhcnRpdGlvbmVkCisgIEZPUiBQT1JUSU9OIE9GIHZhbGlk X2F0IEZST00gJzIwMDAtMDItMjAnIFRPICcyMDAwLTAyLTI1JworICBTRVQgaWQgPSAnWzQs NF0nCisgIFdIRVJFIG5hbWUgPSAnb25lJzsKK1VQREFURSAgdGVtcG9yYWxfcGFydGl0aW9u ZWQKKyAgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAwMi0wMS0wMScgVE8gJzIw MDMtMDEtMDEnCisgIFNFVCBpZCA9ICdbMiwyXScKKyAgV0hFUkUgbmFtZSA9ICd0aHJlZSc7 CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZAorICBGT1IgUE9SVElPTiBPRiB2 YWxpZF9hdCBGUk9NICcyMDAwLTAxLTE1JyBUTyAnMjAwMC0wMi0xNScKKyAgV0hFUkUgaWQg PSAnWzMsM10nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBPUkRFUiBC WSBpZCwgdmFsaWRfYXQ7CisgIGlkICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8IG5h bWUgIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0KKyBbMSwy KSB8IFswMS0wMS0yMDAwLDAxLTE1LTIwMDApIHwgb25lCisgWzEsMikgfCBbMDEtMTUtMjAw MCwwMi0wMS0yMDAwKSB8IG9uZTIKKyBbMSwyKSB8IFswMi0wMS0yMDAwLDAyLTE1LTIwMDAp IHwgb25lMgorIFsxLDIpIHwgWzAyLTE1LTIwMDAsMDItMjAtMjAwMCkgfCBvbmUKKyBbMSwy KSB8IFswMi0yNS0yMDAwLDAzLTAxLTIwMDApIHwgb25lCisgWzIsMykgfCBbMDEtMDEtMjAw MiwwMS0wMS0yMDAzKSB8IHRocmVlCisgWzMsNCkgfCBbMDEtMDEtMjAwMCwwMS0xNS0yMDAw KSB8IHRocmVlCisgWzMsNCkgfCBbMDItMTUtMjAwMCwwMS0wMS0yMDAyKSB8IHRocmVlCisg WzMsNCkgfCBbMDEtMDEtMjAwMywwMS0wMS0yMDEwKSB8IHRocmVlCisgWzQsNSkgfCBbMDIt MjAtMjAwMCwwMi0yNS0yMDAwKSB8IG9uZQorKDEwIHJvd3MpCisKIERST1AgVEFCTEUgdGVt cG9yYWxfcGFydGl0aW9uZWQ7CiAtLSB0ZW1wb3JhbCBVTklRVUU6CiBDUkVBVEUgVEFCTEUg dGVtcG9yYWxfcGFydGl0aW9uZWQgKApAQCAtMzgzLDYgKzQ0MywzNiBAQCBTRUxFQ1QgKiBG Uk9NIHRwMiBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CiAgWzMsNCkgfCBbMDEtMDEtMjAwMCww MS0wMS0yMDEwKSB8IHRocmVlCiAoMSByb3cpCiAKK1VQREFURSAgdGVtcG9yYWxfcGFydGl0 aW9uZWQKKyAgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAwMC0wMS0xNScgVE8g JzIwMDAtMDItMTUnCisgIFNFVCBuYW1lID0gJ29uZTInCisgIFdIRVJFIGlkID0gJ1sxLDFd JzsKK1VQREFURSAgdGVtcG9yYWxfcGFydGl0aW9uZWQKKyAgRk9SIFBPUlRJT04gT0YgdmFs aWRfYXQgRlJPTSAnMjAwMC0wMi0yMCcgVE8gJzIwMDAtMDItMjUnCisgIFNFVCBpZCA9ICdb NCw0XScKKyAgV0hFUkUgbmFtZSA9ICdvbmUnOworVVBEQVRFICB0ZW1wb3JhbF9wYXJ0aXRp b25lZAorICBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDAyLTAxLTAxJyBUTyAn MjAwMy0wMS0wMScKKyAgU0VUIGlkID0gJ1syLDJdJworICBXSEVSRSBuYW1lID0gJ3RocmVl JzsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkCisgIEZPUiBQT1JUSU9OIE9G IHZhbGlkX2F0IEZST00gJzIwMDAtMDEtMTUnIFRPICcyMDAwLTAyLTE1JworICBXSEVSRSBp ZCA9ICdbMywzXSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkIE9SREVS IEJZIGlkLCB2YWxpZF9hdDsKKyAgaWQgICB8ICAgICAgICB2YWxpZF9hdCAgICAgICAgIHwg bmFtZSAgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLQorIFsx LDIpIHwgWzAxLTAxLTIwMDAsMDEtMTUtMjAwMCkgfCBvbmUKKyBbMSwyKSB8IFswMS0xNS0y MDAwLDAyLTAxLTIwMDApIHwgb25lMgorIFsxLDIpIHwgWzAyLTAxLTIwMDAsMDItMTUtMjAw MCkgfCBvbmUyCisgWzEsMikgfCBbMDItMTUtMjAwMCwwMi0yMC0yMDAwKSB8IG9uZQorIFsx LDIpIHwgWzAyLTI1LTIwMDAsMDMtMDEtMjAwMCkgfCBvbmUKKyBbMiwzKSB8IFswMS0wMS0y MDAyLDAxLTAxLTIwMDMpIHwgdGhyZWUKKyBbMyw0KSB8IFswMS0wMS0yMDAwLDAxLTE1LTIw MDApIHwgdGhyZWUKKyBbMyw0KSB8IFswMi0xNS0yMDAwLDAxLTAxLTIwMDIpIHwgdGhyZWUK KyBbMyw0KSB8IFswMS0wMS0yMDAzLDAxLTAxLTIwMTApIHwgdGhyZWUKKyBbNCw1KSB8IFsw Mi0yMC0yMDAwLDAyLTI1LTIwMDApIHwgb25lCisoMTAgcm93cykKKwogRFJPUCBUQUJMRSB0 ZW1wb3JhbF9wYXJ0aXRpb25lZDsKIC0tCiAtLSB0ZXN0IEZLIGRlcGVuZGVuY2llcwpAQCAt NjMyLDEzICs3MjIsMjUgQEAgVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgaWQgPSAnWzcsN10n CiBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0w MScsICcyMDE4LTAyLTAxJyk7CiBFUlJPUjogIHVwZGF0ZSBvciBkZWxldGUgb24gdGFibGUg InRlbXBvcmFsX3JuZyIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9y YWxfZmtfcm5nMnJuZ19mayIgb24gdGFibGUgInRlbXBvcmFsX2ZrX3JuZzJybmciCiBERVRB SUw6ICBLZXkgKGlkLCB2YWxpZF9hdCk9KFs1LDYpLCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAg MjAxOCIsIlRodSBGZWIgMDEgMDA6MDA6MDAgMjAxOCIpKSBpcyBzdGlsbCByZWZlcmVuY2Vk IGZyb20gdGFibGUgInRlbXBvcmFsX2ZrX3JuZzJybmciLgorLS0gY2hhbmdpbmcgYW4gdW5y ZWZlcmVuY2VkIHBhcnQgaXMgb2theToKK1VQREFURSB0ZW1wb3JhbF9ybmcKK0ZPUiBQT1JU SU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDEtMDInIFRPICcyMDE4LTAxLTAzJworU0VU IGlkID0gJ1s3LDddJworV0hFUkUgaWQgPSAnWzUsNV0nOworLS0gY2hhbmdpbmcganVzdCBh IHBhcnQgZmFpbHM6CitVUERBVEUgdGVtcG9yYWxfcm5nCitGT1IgUE9SVElPTiBPRiB2YWxp ZF9hdCBGUk9NICcyMDE4LTAxLTA1JyBUTyAnMjAxOC0wMS0xMCcKK1NFVCBpZCA9ICdbNyw3 XScKK1dIRVJFIGlkID0gJ1s1LDVdJzsKK0VSUk9SOiAgdXBkYXRlIG9yIGRlbGV0ZSBvbiB0 YWJsZSAidGVtcG9yYWxfcm5nIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0 ZW1wb3JhbF9ma19ybmcycm5nX2ZrIiBvbiB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIK K0RFVEFJTDogIEtleSAoaWQsIHZhbGlkX2F0KT0oWzUsNiksIFsiV2VkIEphbiAwMyAwMDow MDowMCAyMDE4IiwiVGh1IEZlYiAwMSAwMDowMDowMCAyMDE4IikpIGlzIHN0aWxsIHJlZmVy ZW5jZWQgZnJvbSB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIuCiAtLSB0aGVuIGRlbGV0 ZSB0aGUgb2JqZWN0aW5nIEZLIHJlY29yZCBhbmQgdGhlIHNhbWUgUEsgdXBkYXRlIHN1Y2Nl ZWRzOgogREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMywz XSc7CiBVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTYt MDEtMDEnLCAnMjAxNi0wMi0wMScpCiBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0 ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CiAtLSBjbGVhbiB1cDoK IERFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgcGFyZW50X2lkID0gJ1s1 LDVdJzsKLURFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XSc7CitE RUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgSU4gKCdbNSw1XScsICdbNyw3XScp OwogLS0KIC0tIHRlc3QgRksgcGFyZW50IHVwZGF0ZXMgUkVTVFJJQ1QKIC0tCkBAIC02Njks MTMgKzc3MSwyNSBAQCBVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCBpZCA9ICdbNyw3XScKIFdI RVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywg JzIwMTgtMDItMDEnKTsKIEVSUk9SOiAgdXBkYXRlIG9yIGRlbGV0ZSBvbiB0YWJsZSAidGVt cG9yYWxfcm5nIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9m a19ybmcycm5nX2ZrIiBvbiB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIKIERFVEFJTDog IEtleSAoaWQsIHZhbGlkX2F0KT0oWzUsNiksIFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4 IiwiVGh1IEZlYiAwMSAwMDowMDowMCAyMDE4IikpIGlzIHN0aWxsIHJlZmVyZW5jZWQgZnJv bSB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIuCistLSBjaGFuZ2luZyBhbiB1bnJlZmVy ZW5jZWQgcGFydCBpcyBva2F5OgorVVBEQVRFIHRlbXBvcmFsX3JuZworRk9SIFBPUlRJT04g T0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wMS0wMicgVE8gJzIwMTgtMDEtMDMnCitTRVQgaWQg PSAnWzcsN10nCitXSEVSRSBpZCA9ICdbNSw1XSc7CistLSBjaGFuZ2luZyBqdXN0IGEgcGFy dCBmYWlsczoKK1VQREFURSB0ZW1wb3JhbF9ybmcKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0 IEZST00gJzIwMTgtMDEtMDUnIFRPICcyMDE4LTAxLTEwJworU0VUIGlkID0gJ1s3LDddJwor V0hFUkUgaWQgPSAnWzUsNV0nOworRVJST1I6ICB1cGRhdGUgb3IgZGVsZXRlIG9uIHRhYmxl ICJ0ZW1wb3JhbF9ybmciIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBv cmFsX2ZrX3JuZzJybmdfZmsiIG9uIHRhYmxlICJ0ZW1wb3JhbF9ma19ybmcycm5nIgorREVU QUlMOiAgS2V5IChpZCwgdmFsaWRfYXQpPShbNSw2KSwgWyJXZWQgSmFuIDAzIDAwOjAwOjAw IDIwMTgiLCJUaHUgRmViIDAxIDAwOjAwOjAwIDIwMTgiKSkgaXMgc3RpbGwgcmVmZXJlbmNl ZCBmcm9tIHRhYmxlICJ0ZW1wb3JhbF9ma19ybmcycm5nIi4KIC0tIHRoZW4gZGVsZXRlIHRo ZSBvYmplY3RpbmcgRksgcmVjb3JkIGFuZCB0aGUgc2FtZSBQSyB1cGRhdGUgc3VjY2VlZHM6 CiBERUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1szLDNdJzsK IFVQREFURSB0ZW1wb3JhbF9ybmcgU0VUIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxNi0wMS0w MScsICcyMDE2LTAyLTAxJykKIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0 c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKIC0tIGNsZWFuIHVwOgogREVM RVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBwYXJlbnRfaWQgPSAnWzUsNV0n OwotREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsKK0RFTEVU RSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCBJTiAoJ1s1LDVdJywgJ1s3LDddJyk7CiAt LQogLS0gdGVzdCBGSyBwYXJlbnQgZGVsZXRlcyBOTyBBQ1RJT04KIC0tCkBAIC02OTcsOSAr ODExLDIyIEBAIERFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XScg QU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMi0wMScsCiBERUxFVEUgRlJPTSB0ZW1w b3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIw MTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOwogRVJST1I6ICB1cGRhdGUgb3IgZGVsZXRlIG9u IHRhYmxlICJ0ZW1wb3JhbF9ybmciIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQg InRlbXBvcmFsX2ZrX3JuZzJybmdfZmsiIG9uIHRhYmxlICJ0ZW1wb3JhbF9ma19ybmcycm5n IgogREVUQUlMOiAgS2V5IChpZCwgdmFsaWRfYXQpPShbNSw2KSwgWyJNb24gSmFuIDAxIDAw OjAwOjAwIDIwMTgiLCJUaHUgRmViIDAxIDAwOjAwOjAwIDIwMTgiKSkgaXMgc3RpbGwgcmVm ZXJlbmNlZCBmcm9tIHRhYmxlICJ0ZW1wb3JhbF9ma19ybmcycm5nIi4KKy0tIGRlbGV0aW5n IGFuIHVucmVmZXJlbmNlZCBwYXJ0IGlzIG9rYXk6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9y bmcKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDEtMDInIFRPICcyMDE4 LTAxLTAzJworV0hFUkUgaWQgPSAnWzUsNV0nOworLS0gZGVsZXRpbmcganVzdCBhIHBhcnQg ZmFpbHM6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcKK0ZPUiBQT1JUSU9OIE9GIHZhbGlk X2F0IEZST00gJzIwMTgtMDEtMDUnIFRPICcyMDE4LTAxLTEwJworV0hFUkUgaWQgPSAnWzUs NV0nOworRVJST1I6ICB1cGRhdGUgb3IgZGVsZXRlIG9uIHRhYmxlICJ0ZW1wb3JhbF9ybmci IHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBvcmFsX2ZrX3JuZzJybmdf ZmsiIG9uIHRhYmxlICJ0ZW1wb3JhbF9ma19ybmcycm5nIgorREVUQUlMOiAgS2V5IChpZCwg dmFsaWRfYXQpPShbNSw2KSwgWyJXZWQgSmFuIDAzIDAwOjAwOjAwIDIwMTgiLCJUaHUgRmVi IDAxIDAwOjAwOjAwIDIwMTgiKSkgaXMgc3RpbGwgcmVmZXJlbmNlZCBmcm9tIHRhYmxlICJ0 ZW1wb3JhbF9ma19ybmcycm5nIi4KIC0tIHRoZW4gZGVsZXRlIHRoZSBvYmplY3RpbmcgRksg cmVjb3JkIGFuZCB0aGUgc2FtZSBQSyBkZWxldGUgc3VjY2VlZHM6CiBERUxFVEUgRlJPTSB0 ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1szLDNdJzsKIERFTEVURSBGUk9NIHRl bXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgn MjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CistLSBjbGVhbiB1cDoKK0RFTEVURSBGUk9N IHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgcGFyZW50X2lkID0gJ1s1LDVdJzsKK0RFTEVU RSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCBJTiAoJ1s1LDVdJyk7CiAtLQogLS0gdGVz dCBGSyBwYXJlbnQgZGVsZXRlcyBSRVNUUklDVAogLS0KQEAgLTcyMSw5ICs4NDgsMjIgQEAg REVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRf YXQgPSB0c3JhbmdlKCcyMDE4LTAyLTAxJywKIERFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBX SEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScs ICcyMDE4LTAyLTAxJyk7CiBFUlJPUjogIHVwZGF0ZSBvciBkZWxldGUgb24gdGFibGUgInRl bXBvcmFsX3JuZyIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxf Zmtfcm5nMnJuZ19mayIgb24gdGFibGUgInRlbXBvcmFsX2ZrX3JuZzJybmciCiBERVRBSUw6 ICBLZXkgKGlkLCB2YWxpZF9hdCk9KFs1LDYpLCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAx OCIsIlRodSBGZWIgMDEgMDA6MDA6MDAgMjAxOCIpKSBpcyBzdGlsbCByZWZlcmVuY2VkIGZy b20gdGFibGUgInRlbXBvcmFsX2ZrX3JuZzJybmciLgorLS0gZGVsZXRpbmcgYW4gdW5yZWZl cmVuY2VkIHBhcnQgaXMgb2theToKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZworRk9SIFBP UlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wMS0wMicgVE8gJzIwMTgtMDEtMDMnCitX SEVSRSBpZCA9ICdbNSw1XSc7CistLSBkZWxldGluZyBqdXN0IGEgcGFydCBmYWlsczoKK0RF TEVURSBGUk9NIHRlbXBvcmFsX3JuZworRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAn MjAxOC0wMS0wNScgVE8gJzIwMTgtMDEtMTAnCitXSEVSRSBpZCA9ICdbNSw1XSc7CitFUlJP UjogIHVwZGF0ZSBvciBkZWxldGUgb24gdGFibGUgInRlbXBvcmFsX3JuZyIgdmlvbGF0ZXMg Zm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxfZmtfcm5nMnJuZ19mayIgb24gdGFi bGUgInRlbXBvcmFsX2ZrX3JuZzJybmciCitERVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9hdCk9 KFs1LDYpLCBbIldlZCBKYW4gMDMgMDA6MDA6MDAgMjAxOCIsIlRodSBGZWIgMDEgMDA6MDA6 MDAgMjAxOCIpKSBpcyBzdGlsbCByZWZlcmVuY2VkIGZyb20gdGFibGUgInRlbXBvcmFsX2Zr X3JuZzJybmciLgogLS0gdGhlbiBkZWxldGUgdGhlIG9iamVjdGluZyBGSyByZWNvcmQgYW5k IHRoZSBzYW1lIFBLIGRlbGV0ZSBzdWNjZWVkczoKIERFTEVURSBGUk9NIHRlbXBvcmFsX2Zr X3JuZzJybmcgV0hFUkUgaWQgPSAnWzMsM10nOwogREVMRVRFIEZST00gdGVtcG9yYWxfcm5n IFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAx JywgJzIwMTgtMDItMDEnKTsKKy0tIGNsZWFuIHVwOgorREVMRVRFIEZST00gdGVtcG9yYWxf Zmtfcm5nMnJuZyBXSEVSRSBwYXJlbnRfaWQgPSAnWzUsNV0nOworREVMRVRFIEZST00gdGVt cG9yYWxfcm5nIFdIRVJFIGlkIElOICgnWzUsNV0nKTsKIC0tCiAtLSB0ZXN0IE9OIFVQREFU RS9ERUxFVEUgb3B0aW9ucwogLS0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvcGFy YWxsZWxfc2NoZWR1bGUgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCmlu ZGV4IDE2NjgzMTQ4ZDIuLjdiOWI5OWUwYTMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jl c3MvcGFyYWxsZWxfc2NoZWR1bGUKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9z Y2hlZHVsZQpAQCAtNDgsNyArNDgsNyBAQCB0ZXN0OiBjcmVhdGVfaW5kZXggY3JlYXRlX2lu ZGV4X3NwZ2lzdCBjcmVhdGVfdmlldyBpbmRleF9pbmNsdWRpbmcgaW5kZXhfaW5jbHVkaQog IyAtLS0tLS0tLS0tCiAjIEFub3RoZXIgZ3JvdXAgb2YgcGFyYWxsZWwgdGVzdHMKICMgLS0t LS0tLS0tLQotdGVzdDogY3JlYXRlX2FnZ3JlZ2F0ZSBjcmVhdGVfZnVuY3Rpb25fc3FsIGNy ZWF0ZV9jYXN0IGNvbnN0cmFpbnRzIHRyaWdnZXJzIHNlbGVjdCBpbmhlcml0IHR5cGVkX3Rh YmxlIHZhY3V1bSBkcm9wX2lmX2V4aXN0cyB1cGRhdGFibGVfdmlld3Mgcm9sZWF0dHJpYnV0 ZXMgY3JlYXRlX2FtIGhhc2hfZnVuYyBlcnJvcnMgaW5maW5pdGVfcmVjdXJzZQordGVzdDog Y3JlYXRlX2FnZ3JlZ2F0ZSBjcmVhdGVfZnVuY3Rpb25fc3FsIGNyZWF0ZV9jYXN0IGNvbnN0 cmFpbnRzIHRyaWdnZXJzIHNlbGVjdCBpbmhlcml0IHR5cGVkX3RhYmxlIHZhY3V1bSBkcm9w X2lmX2V4aXN0cyB1cGRhdGFibGVfdmlld3Mgcm9sZWF0dHJpYnV0ZXMgY3JlYXRlX2FtIGhh c2hfZnVuYyBlcnJvcnMgaW5maW5pdGVfcmVjdXJzZSBmb3JfcG9ydGlvbl9vZgogCiAjIC0t LS0tLS0tLS0KICMgc2FuaXR5X2NoZWNrIGRvZXMgYSB2YWN1dW0sIGFmZmVjdGluZyB0aGUg c29ydCBvcmRlciBvZiBTRUxFQ1QgKgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9z cWwvZm9yX3BvcnRpb25fb2Yuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZm9yX3BvcnRp b25fb2Yuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmM0NDdl MjNhMmUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9mb3JfcG9y dGlvbl9vZi5zcWwKQEAgLTAsMCArMSwzNzEgQEAKKy0tIFRlc3RzIGZvciBVUERBVEUvREVM RVRFIEZPUiBQT1JUSU9OIE9GCisKKy0tIFdvcmtzIG9uIG5vbi1QSyBjb2x1bW5zCitDUkVB VEUgVEFCTEUgZm9yX3BvcnRpb25fb2ZfdGVzdCAoCisgIGlkIGludDRyYW5nZSwKKyAgdmFs aWRfYXQgdHNyYW5nZSwKKyAgbmFtZSB0ZXh0IE5PVCBOVUxMCispOworSU5TRVJUIElOVE8g Zm9yX3BvcnRpb25fb2ZfdGVzdCBWQUxVRVMKKygnWzEsMV0nLCAnWzIwMTgtMDEtMDIsMjAy MC0wMS0wMSknLCAnb25lJyk7CisKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1Ig UE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTAxLTE1JyBUTyAnMjAxOS0wMS0wMScK K1NFVCBuYW1lID0gJ2Zvbyc7CisKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QK K0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMTUnIFRPIFVOQk9VTkRF RDsKKworU0VMRUNUICogRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0OworCistLSBXb3JrcyBv biBtb3JlIHRoYW4gb25lIHJhbmdlCitEUk9QIFRBQkxFIGZvcl9wb3J0aW9uX29mX3Rlc3Q7 CitDUkVBVEUgVEFCTEUgZm9yX3BvcnRpb25fb2ZfdGVzdCAoCisgIGlkIGludDRyYW5nZSwK KyAgdmFsaWQxX2F0IHRzcmFuZ2UsCisgIHZhbGlkMl9hdCB0c3JhbmdlLAorICBuYW1lIHRl eHQgTk9UIE5VTEwKKyk7CitJTlNFUlQgSU5UTyBmb3JfcG9ydGlvbl9vZl90ZXN0IFZBTFVF UworKCdbMSwxXScsICdbMjAxOC0wMS0wMiwyMDE4LTAyLTAzKScsICdbMjAxNS0wMS0wMSwy MDI1LTAxLTAxKScsICdvbmUnKTsKKworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZP UiBQT1JUSU9OIE9GIHZhbGlkMV9hdCBGUk9NICcyMDE4LTAxLTE1JyBUTyBVTkJPVU5ERUQK K1NFVCBuYW1lID0gJ2Zvbyc7CitTRUxFQ1QgKiBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3Q7 CisKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZDJf YXQgRlJPTSAnMjAxOC0wMS0xNScgVE8gVU5CT1VOREVECitTRVQgbmFtZSA9ICdiYXInOwor U0VMRUNUICogRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0OworCitERUxFVEUgRlJPTSBmb3Jf cG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZDFfYXQgRlJPTSAnMjAxOC0w MS0yMCcgVE8gVU5CT1VOREVEOworU0VMRUNUICogRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0 OworCitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2 YWxpZDJfYXQgRlJPTSAnMjAxOC0wMS0yMCcgVE8gVU5CT1VOREVEOworU0VMRUNUICogRlJP TSBmb3JfcG9ydGlvbl9vZl90ZXN0OworCistLSBUZXN0IHdpdGggTlVMTHMgaW4gdGhlIHNj YWxhci9yYW5nZSBrZXkgY29sdW1ucy4KKy0tIFRoaXMgd29uJ3QgaGFwcGVuIGlmIHRoZXJl IGlzIGEgUFJJTUFSWSBLRVkgb3IgVU5JUVVFIGNvbnN0cmFpbnQKKy0tIGJ1dCBGT1IgUE9S VElPTiBPRiBzaG91bGRuJ3QgcmVxdWlyZSB0aGF0LgorRFJPUCBUQUJMRSBmb3JfcG9ydGlv bl9vZl90ZXN0OworQ1JFQVRFIFVOTE9HR0VEIFRBQkxFIGZvcl9wb3J0aW9uX29mX3Rlc3Qg KAorICBpZCBpbnQ0cmFuZ2UsCisgIHZhbGlkX2F0IHRzcmFuZ2UsCisgIG5hbWUgdGV4dAor KTsKK0lOU0VSVCBJTlRPIGZvcl9wb3J0aW9uX29mX3Rlc3QgVkFMVUVTCisgICgnWzEsMV0n LCBOVUxMLCAnMSBudWxsJyksCisgICgnWzEsMV0nLCAnKCwpJywgJzEgdW5ib3VuZGVkJyks CisgICgnWzEsMV0nLCAnZW1wdHknLCAnMSBlbXB0eScpLAorICAoTlVMTCwgTlVMTCwgTlVM TCksCisgIChOVUxMLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTktMDEtMDEnKSwgJ251 bGwga2V5Jyk7CitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorICBGT1IgUE9SVElPTiBP RiB2YWxpZF9hdCBGUk9NIE5VTEwgVE8gTlVMTAorICBTRVQgbmFtZSA9ICdOVUxMIHRvIE5V TEwnOworU0VMRUNUICogRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0OworVVBEQVRFIGZvcl9w b3J0aW9uX29mX3Rlc3QKKyAgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSBOVUxMIFRP IFVOQk9VTkRFRAorICBTRVQgbmFtZSA9ICdOVUxMIHRvIFVOQk9VTkRFRCc7CitTRUxFQ1Qg KiBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3Q7CitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVz dAorICBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NIFVOQk9VTkRFRCBUTyBOVUxMCisg IFNFVCBuYW1lID0gJ1VOQk9VTkRFRCB0byBOVUxMJzsKK1NFTEVDVCAqIEZST00gZm9yX3Bv cnRpb25fb2ZfdGVzdDsKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CisgIEZPUiBQT1JU SU9OIE9GIHZhbGlkX2F0IEZST00gVU5CT1VOREVEIFRPIFVOQk9VTkRFRAorICBTRVQgbmFt ZSA9ICdVTkJPVU5ERUQgdG8gVU5CT1VOREVEJzsKK1NFTEVDVCAqIEZST00gZm9yX3BvcnRp b25fb2ZfdGVzdDsKKworRFJPUCBUQUJMRSBmb3JfcG9ydGlvbl9vZl90ZXN0OworQ1JFQVRF IFRBQkxFIGZvcl9wb3J0aW9uX29mX3Rlc3QgKAorICBpZCBpbnQ0cmFuZ2UgTk9UIE5VTEws CisgIHZhbGlkX2F0IHRzcmFuZ2UgTk9UIE5VTEwsCisgIG5hbWUgdGV4dCBOT1QgTlVMTCwK KwlDT05TVFJBSU5UIGZvcl9wb3J0aW9uX29mX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRf YXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CitJTlNFUlQgSU5UTyBmb3JfcG9ydGlvbl9vZl90 ZXN0CitWQUxVRVMKKygnWzEsMV0nLCAnWzIwMTgtMDEtMDIsMjAxOC0wMi0wMyknLCAnb25l JyksCisoJ1sxLDFdJywgJ1syMDE4LTAyLTAzLDIwMTgtMDMtMDMpJywgJ29uZScpLAorKCdb MSwxXScsICdbMjAxOC0wMy0wMywyMDE4LTA0LTA0KScsICdvbmUnKSwKKygnWzIsMl0nLCAn WzIwMTgtMDEtMDEsMjAxOC0wMS0wNSknLCAndHdvJyksCisoJ1szLDNdJywgJ1syMDE4LTAx LTAxLCknLCAndGhyZWUnKSwKKygnWzQsNF0nLCAnKCwyMDE4LTA0LTAxKScsICdmb3VyJyks CisoJ1s1LDVdJywgJygsKScsICdmaXZlJykKKzsKKworLS0KKy0tIFVQREFURSB0ZXN0cwor LS0KKworLS0gU2V0dGluZyB3aXRoIGEgbWlzc2luZyBjb2x1bW4gZmFpbHMKK1VQREFURSBm b3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiBpbnZhbGlkX2F0IEZST00gJzIw MTgtMDYtMDEnIFRPIFVOQk9VTkRFRAorU0VUIG5hbWUgPSAnZm9vJworV0hFUkUgaWQgPSAn WzUsNV0nOworCistLSBTZXR0aW5nIHRoZSByYW5nZSBmYWlscworVVBEQVRFIGZvcl9wb3J0 aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDYtMDEn IFRPIFVOQk9VTkRFRAorU0VUIHZhbGlkX2F0ID0gJ1sxOTkwLTAxLTAxLDE5OTktMDEtMDEp JworV0hFUkUgaWQgPSAnWzUsNV0nOworCistLSBUaGUgd3JvbmcgdHlwZSBmYWlscworVVBE QVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00g MSBUTyA0CitTRVQgbmFtZSA9ICdub3BlJworV0hFUkUgaWQgPSAnWzMsM10nOworCistLSBT ZXR0aW5nIHdpdGggdGltZXN0YW1wcyByZXZlcnNlZCBmYWlscworVVBEQVRFIGZvcl9wb3J0 aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDYtMDEn IFRPICcyMDE4LTAxLTAxJworU0VUIG5hbWUgPSAndGhyZWVeMScKK1dIRVJFIGlkID0gJ1sz LDNdJzsKKworLS0gU2V0dGluZyB3aXRoIGEgc3VicXVlcnkgZmFpbHMKK1VQREFURSBmb3Jf cG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NIChTRUxFQ1Qg JzIwMTgtMDEtMDEnKSBUTyAnMjAxOC0wNi0wMScKK1NFVCBuYW1lID0gJ25vcGUnCitXSEVS RSBpZCA9ICdbMywzXSc7CisKKy0tIFNldHRpbmcgd2l0aCBhIGNvbHVtbiBmYWlscworVVBE QVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00g bG93ZXIodmFsaWRfYXQpIFRPIFVOQk9VTkRFRAorU0VUIG5hbWUgPSAnbm9wZScKK1dIRVJF IGlkID0gJ1szLDNdJzsKKworLS0gU2V0dGluZyB3aXRoIHRpbWVzdGFtcHMgZXF1YWwgZG9l cyBub3RoaW5nCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0Yg dmFsaWRfYXQgRlJPTSAnMjAxOC0wNC0wMScgVE8gJzIwMTgtMDQtMDEnCitTRVQgbmFtZSA9 ICd0aHJlZV4wJworV0hFUkUgaWQgPSAnWzMsM10nOworCistLSBVcGRhdGluZyBhIGZpbml0 ZS9vcGVuIHBvcnRpb24gd2l0aCBhIGZpbml0ZS9vcGVuIHRhcmdldAorVVBEQVRFIGZvcl9w b3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDYt MDEnIFRPIFVOQk9VTkRFRAorU0VUIG5hbWUgPSAndGhyZWVeMScKK1dIRVJFIGlkID0gJ1sz LDNdJzsKKworLS0gVXBkYXRpbmcgYSBmaW5pdGUvb3BlbiBwb3J0aW9uIHdpdGggYW4gb3Bl bi9maW5pdGUgdGFyZ2V0CitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJ T04gT0YgdmFsaWRfYXQgRlJPTSBVTkJPVU5ERUQgVE8gJzIwMTgtMDMtMDEnCitTRVQgbmFt ZSA9ICd0aHJlZV4yJworV0hFUkUgaWQgPSAnWzMsM10nOworCistLSBVcGRhdGluZyBhbiBv cGVuL2Zpbml0ZSBwb3J0aW9uIHdpdGggYW4gb3Blbi9maW5pdGUgdGFyZ2V0CitVUERBVEUg Zm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSBVTkJP VU5ERUQgVE8gJzIwMTgtMDItMDEnCitTRVQgbmFtZSA9ICdmb3VyXjEnCitXSEVSRSBpZCA9 ICdbNCw0XSc7CisKKy0tIFVwZGF0aW5nIGFuIG9wZW4vZmluaXRlIHBvcnRpb24gd2l0aCBh IGZpbml0ZS9vcGVuIHRhcmdldAorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQ T1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTctMDEtMDEnIFRPIFVOQk9VTkRFRAorU0VU IG5hbWUgPSAnZm91cl4yJworV0hFUkUgaWQgPSAnWzQsNF0nOworCistLSBVcGRhdGluZyBh IGZpbml0ZS9maW5pdGUgcG9ydGlvbiB3aXRoIGFuIGV4YWN0IGZpdAorVVBEQVRFIGZvcl9w b3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTctMDEt MDEnIFRPICcyMDE4LTAyLTAxJworU0VUIG5hbWUgPSAnZm91cl4zJworV0hFUkUgaWQgPSAn WzQsNF0nOworCistLSBVcGRhdGluZyBhbiBlbmNsb3NlZCBzcGFuCitVUERBVEUgZm9yX3Bv cnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSBVTkJPVU5ERUQg VE8gVU5CT1VOREVECitTRVQgbmFtZSA9ICd0d29eMicKK1dIRVJFIGlkID0gJ1syLDJdJzsK KworLS0gVXBkYXRpbmcgYW4gb3Blbi9vcGVuIHBvcnRpb24gd2l0aCBhIGZpbml0ZS9maW5p dGUgdGFyZ2V0CitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0Yg dmFsaWRfYXQgRlJPTSAnMjAxOC0wMS0wMScgVE8gJzIwMTktMDEtMDEnCitTRVQgbmFtZSA9 ICdmaXZlXjInCitXSEVSRSBpZCA9ICdbNSw1XSc7CisKKy0tIFVwZGF0aW5nIGFuIGVuY2xv c2VkIHNwYW4gd2l0aCBzZXBhcmF0ZSBwcm90cnVkaW5nIHNwYW5zCitVUERBVEUgZm9yX3Bv cnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxNy0wMS0w MScgVE8gJzIwMjAtMDEtMDEnCitTRVQgbmFtZSA9ICdmaXZlXjMnCitXSEVSRSBpZCA9ICdb NSw1XSc7CisKKy0tIFVwZGF0aW5nIG11bHRpcGxlIGVuY2xvc2VkIHNwYW5zCitVUERBVEUg Zm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSBOVUxM IFRPIE5VTEwKK1NFVCBuYW1lID0gJ29uZV4yJworV0hFUkUgaWQgPSAnWzEsMV0nOworCist LSBVcGRhdGluZyB3aXRoIGEgc2hpZnQvcmVkdWNlIGNvbmZsaWN0CitVUERBVEUgZm9yX3Bv cnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQKKyAgRlJPTSAnMjAxOC0w My0wMScgQVQgVElNRSBaT05FIElOVEVSVkFMICcxJyBIT1VSIFRPIE1JTlVURQorICBUTyAn MjAxOS0wMS0wMScKK1NFVCBuYW1lID0gJ29uZV4zJworV0hFUkUgaWQgPSAnWzEsMV0nOwor CitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQK KyAgRlJPTSAnMjAxOC0wMy0wMScgQVQgVElNRSBaT05FIElOVEVSVkFMICcyJyBIT1VSCisg IFRPICcyMDE5LTAxLTAxJworU0VUIG5hbWUgPSAnb25lXjQnCitXSEVSRSBpZCA9ICdbMSwx XSc7CisKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxp ZF9hdAorICBGUk9NICgnMjAxOC0wMy0wMScgQVQgVElNRSBaT05FIElOVEVSVkFMICcyJyBI T1VSKQorICBUTyAnMjAxOS0wMS0wMScKK1NFVCBuYW1lID0gJ29uZV40JworV0hFUkUgaWQg PSAnWzEsMV0nOworCistLSBVcGRhdGluZyB0aGUgbm9uLXJhbmdlIHBhcnQgb2YgdGhlIFBL OgorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0 IEZST00gJzIwMTgtMDItMTUnIFRPIE5VTEwKK1NFVCBpZCA9ICdbNiw2XScKK1dIRVJFIGlk ID0gJ1sxLDFdJzsKKworLS0gVVBEQVRFIHdpdGggbm8gV0hFUkUgY2xhdXNlCitVUERBVEUg Zm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAz MC0wMS0wMScgVE8gTlVMTAorU0VUIG5hbWUgPSBuYW1lIHx8ICcqJzsKKworU0VMRUNUICog RlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0IE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKKworLS0K Ky0tIERFTEVURSB0ZXN0cworLS0KKworLS0gRGVsZXRpbmcgd2l0aCBhIG1pc3NpbmcgY29s dW1uIGZhaWxzCitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElP TiBPRiBpbnZhbGlkX2F0IEZST00gJzIwMTgtMDYtMDEnIFRPIE5VTEwKK1dIRVJFIGlkID0g J1s1LDVdJzsKKworLS0gRGVsZXRpbmcgd2l0aCB0aW1lc3RhbXBzIHJldmVyc2VkIGZhaWxz CitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxp ZF9hdCBGUk9NICcyMDE4LTA2LTAxJyBUTyAnMjAxOC0wMS0wMScKK1dIRVJFIGlkID0gJ1sz LDNdJzsKKworLS0gRGVsZXRpbmcgd2l0aCB0aW1lc3RhbXBzIGVxdWFsIGRvZXMgbm90aGlu ZworREVMRVRFIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFs aWRfYXQgRlJPTSAnMjAxOC0wNC0wMScgVE8gJzIwMTgtMDQtMDEnCitXSEVSRSBpZCA9ICdb MywzXSc7CisKKy0tIERlbGV0aW5nIHdpdGggYSBjbG9zZWQvY2xvc2VkIHRhcmdldAorREVM RVRFIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQg RlJPTSAnMjAxOC0wNi0wMScgVE8gJzIwMjAtMDYtMDEnCitXSEVSRSBpZCA9ICdbNSw1XSc7 CisKKy0tIERlbGV0aW5nIHdpdGggYSBjbG9zZWQvb3BlbiB0YXJnZXQKK0RFTEVURSBGUk9N IGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIw MTgtMDQtMDEnIFRPIE5VTEwKK1dIRVJFIGlkID0gJ1szLDNdJzsKKworLS0gRGVsZXRpbmcg d2l0aCBhbiBvcGVuL2Nsb3NlZCB0YXJnZXQKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29m X3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gTlVMTCBUTyAnMjAxOC0wMi0w OCcKK1dIRVJFIGlkID0gJ1sxLDFdJzsKKworLS0gRGVsZXRpbmcgd2l0aCBhbiBvcGVuL29w ZW4gdGFyZ2V0CitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElP TiBPRiB2YWxpZF9hdCBGUk9NIE5VTEwgVE8gTlVMTAorV0hFUkUgaWQgPSAnWzYsNl0nOwor CistLSBERUxFVEUgd2l0aCBubyBXSEVSRSBjbGF1c2UKK0RFTEVURSBGUk9NIGZvcl9wb3J0 aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMjUtMDEtMDEn IFRPIE5VTEw7CisKK1NFTEVDVCAqIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdCBPUkRFUiBC WSBpZCwgdmFsaWRfYXQ7CisKKy0tIFVQREFURSAuLi4gUkVUVVJOSU5HIHJldHVybnMgb25s eSB0aGUgdXBkYXRlZCB2YWx1ZXMgKG5vdCB0aGUgaW5zZXJ0ZWQgc2lkZSB2YWx1ZXMpCitV UERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJP TSAnMjAxOC0wMi0wMScgVE8gJzIwMTgtMDItMTUnCitTRVQgbmFtZSA9ICd0aHJlZV4zJwor V0hFUkUgaWQgPSAnWzMsM10nCitSRVRVUk5JTkcgKjsKKworLS0gdGVzdCB0aGF0IHdlIHJ1 biB0cmlnZ2VycyBvbiB0aGUgVVBEQVRFL0RFTEVURWQgcm93IGFuZCB0aGUgSU5TRVJUZWQg cm93cworCitDUkVBVEUgRlVOQ1RJT04gZm9yX3BvcnRpb25fb2ZfdHJpZ2dlcigpCitSRVRV Uk5TIHRyaWdnZXIKK0FTCiskJAorQkVHSU4KKyAgUkFJU0UgTk9USUNFICclICUgJSBvZiAl JywgVEdfV0hFTiwgVEdfT1AsIE5FVy52YWxpZF9hdCwgT0xELnZhbGlkX2F0OworICBJRiBU R19PUCA9ICdERUxFVEUnIFRIRU4KKyAgICBSRVRVUk4gT0xEOworICBFTFNFCisgICAgUkVU VVJOIE5FVzsKKyAgRU5EIElGOworRU5EOworJCQKK0xBTkdVQUdFIHBscGdzcWw7CisKK0NS RUFURSBUUklHR0VSIHRyZ19mb3JfcG9ydGlvbl9vZl9iZWZvcmVfaW5zZXJ0CisgIEJFRk9S RSBJTlNFUlQgT04gZm9yX3BvcnRpb25fb2ZfdGVzdAorICBGT1IgRUFDSCBST1cKKyAgRVhF Q1VURSBGVU5DVElPTiBmb3JfcG9ydGlvbl9vZl90cmlnZ2VyKCk7CitDUkVBVEUgVFJJR0dF UiB0cmdfZm9yX3BvcnRpb25fb2ZfYWZ0ZXJfaW5zZXJ0CisgIEFGVEVSIElOU0VSVCBPTiBm b3JfcG9ydGlvbl9vZl90ZXN0CisgIEZPUiBFQUNIIFJPVworICBFWEVDVVRFIEZVTkNUSU9O IGZvcl9wb3J0aW9uX29mX3RyaWdnZXIoKTsKK0NSRUFURSBUUklHR0VSIHRyZ19mb3JfcG9y dGlvbl9vZl9iZWZvcmVfdXBkYXRlCisgIEJFRk9SRSBVUERBVEUgT04gZm9yX3BvcnRpb25f b2ZfdGVzdAorICBGT1IgRUFDSCBST1cKKyAgRVhFQ1VURSBGVU5DVElPTiBmb3JfcG9ydGlv bl9vZl90cmlnZ2VyKCk7CitDUkVBVEUgVFJJR0dFUiB0cmdfZm9yX3BvcnRpb25fb2ZfYWZ0 ZXJfdXBkYXRlCisgIEFGVEVSIFVQREFURSBPTiBmb3JfcG9ydGlvbl9vZl90ZXN0CisgIEZP UiBFQUNIIFJPVworICBFWEVDVVRFIEZVTkNUSU9OIGZvcl9wb3J0aW9uX29mX3RyaWdnZXIo KTsKK0NSRUFURSBUUklHR0VSIHRyZ19mb3JfcG9ydGlvbl9vZl9iZWZvcmVfZGVsZXRlCisg IEJFRk9SRSBERUxFVEUgT04gZm9yX3BvcnRpb25fb2ZfdGVzdAorICBGT1IgRUFDSCBST1cK KyAgRVhFQ1VURSBGVU5DVElPTiBmb3JfcG9ydGlvbl9vZl90cmlnZ2VyKCk7CitDUkVBVEUg VFJJR0dFUiB0cmdfZm9yX3BvcnRpb25fb2ZfYWZ0ZXJfZGVsZXRlCisgIEFGVEVSIERFTEVU RSBPTiBmb3JfcG9ydGlvbl9vZl90ZXN0CisgIEZPUiBFQUNIIFJPVworICBFWEVDVVRFIEZV TkNUSU9OIGZvcl9wb3J0aW9uX29mX3RyaWdnZXIoKTsKKworVVBEQVRFIGZvcl9wb3J0aW9u X29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMjEtMDEtMDEnIFRP ICcyMDIyLTAxLTAxJworU0VUIG5hbWUgPSAnZml2ZV40JworV0hFUkUgaWQgPSAnWzUsNV0n OworCitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2 YWxpZF9hdCBGUk9NICcyMDIzLTAxLTAxJyBUTyAnMjAyNC0wMS0wMScKK1dIRVJFIGlkID0g J1s1LDVdJzsKKworU0VMRUNUICogRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0IE9SREVSIEJZ IGlkLCB2YWxpZF9hdDsKKworLS0gVGVzdCB3aXRoIGEgY3VzdG9tIHJhbmdlIHR5cGUKKwor Q1JFQVRFIFRZUEUgbXlkYXRlcmFuZ2UgQVMgcmFuZ2Uoc3VidHlwZT1kYXRlKTsKKworQ1JF QVRFIFRBQkxFIGZvcl9wb3J0aW9uX29mX3Rlc3QyICgKKyAgaWQgaW50NHJhbmdlIE5PVCBO VUxMLAorICB2YWxpZF9hdCBteWRhdGVyYW5nZSBOT1QgTlVMTCwKKyAgbmFtZSB0ZXh0IE5P VCBOVUxMLAorCUNPTlNUUkFJTlQgZm9yX3BvcnRpb25fb2ZfdGVzdDJfcGsgUFJJTUFSWSBL RVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK0lOU0VSVCBJTlRPIGZv cl9wb3J0aW9uX29mX3Rlc3QyCitWQUxVRVMKKygnWzEsMV0nLCAnWzIwMTgtMDEtMDIsMjAx OC0wMi0wMyknLCAnb25lJyksCisoJ1sxLDFdJywgJ1syMDE4LTAyLTAzLDIwMTgtMDMtMDMp JywgJ29uZScpLAorKCdbMSwxXScsICdbMjAxOC0wMy0wMywyMDE4LTA0LTA0KScsICdvbmUn KSwKKygnWzIsMl0nLCAnWzIwMTgtMDEtMDEsMjAxOC0wNS0wMSknLCAndHdvJyksCisoJ1sz LDNdJywgJ1syMDE4LTAxLTAxLCknLCAndGhyZWUnKTsKKzsKKworVVBEQVRFIGZvcl9wb3J0 aW9uX29mX3Rlc3QyCitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTAxLTEw JyBUTyAnMjAxOC0wMi0xMCcKK1NFVCBuYW1lID0gJ29uZV4xJworV0hFUkUgaWQgPSAnWzEs MV0nOworCitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0MgorRk9SIFBPUlRJT04g T0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wMS0xNScgVE8gJzIwMTgtMDItMTUnCitXSEVSRSBp ZCA9ICdbMiwyXSc7CisKK1NFTEVDVCAqIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdDIgT1JE RVIgQlkgaWQsIHZhbGlkX2F0OworCitEUk9QIFRBQkxFIGZvcl9wb3J0aW9uX29mX3Rlc3Qy OworRFJPUCBUWVBFIG15ZGF0ZXJhbmdlOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVz cy9zcWwvcHJpdmlsZWdlcy5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wcml2aWxlZ2Vz LnNxbAppbmRleCBiZjAwMzVkOTZkLi4zNjZiZTk5YTI3IDEwMDY0NAotLS0gYS9zcmMvdGVz dC9yZWdyZXNzL3NxbC9wcml2aWxlZ2VzLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3Nx bC9wcml2aWxlZ2VzLnNxbApAQCAtNzEzLDYgKzcxMywyNCBAQCBVUERBVEUgZXJydHN0IFNF VCBhID0gJ2FhYWEnLCBiID0gTlVMTCBXSEVSRSBhID0gJ2FhYSc7CiBTRVQgU0VTU0lPTiBB VVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcHJpdl91c2VyMTsKIERST1AgVEFCTEUgZXJydHN0Owog CistLSB0ZXN0IGNvbHVtbi1sZXZlbCBwcml2aWxlZ2VzIG9uIHRoZSByYW5nZS9QRVJJT0Qg dXNlZCBpbiBGT1IgUE9SVElPTiBPRgorU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdy ZXNzX3ByaXZfdXNlcjE7CitDUkVBVEUgVEFCTEUgdDEgKAorICBjMSBpbnQ0cmFuZ2UsCisg IHZhbGlkX2F0IHRzcmFuZ2UsCisJQ09OU1RSQUlOVCB0MXBrIFBSSU1BUlkgS0VZIChjMSwg dmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CitHUkFOVCBTRUxFQ1QgT04gdDEgVE8g cmVncmVzc19wcml2X3VzZXIyOworR1JBTlQgU0VMRUNUIE9OIHQxIFRPIHJlZ3Jlc3NfcHJp dl91c2VyMzsKK0dSQU5UIFVQREFURSAoYzEpIE9OIHQxIFRPIHJlZ3Jlc3NfcHJpdl91c2Vy MjsKK0dSQU5UIFVQREFURSAoYzEsIHZhbGlkX2F0KSBPTiB0MSBUTyByZWdyZXNzX3ByaXZf dXNlcjM7CitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcHJpdl91c2VyMjsK K1VQREFURSB0MSBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDAwLTAxLTAxJyBU TyAnMjAwMS0wMS0wMScgU0VUIGMxID0gJ1syLDMpJzsKK1NFVCBTRVNTSU9OIEFVVEhPUkla QVRJT04gcmVncmVzc19wcml2X3VzZXIzOworVVBEQVRFIHQxIEZPUiBQT1JUSU9OIE9GIHZh bGlkX2F0IEZST00gJzIwMDAtMDEtMDEnIFRPICcyMDAxLTAxLTAxJyBTRVQgYzEgPSAnWzIs MyknOworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3ByaXZfdXNlcjE7CitE Uk9QIFRBQkxFIHQxOworCiAtLSB0ZXN0IGNvbHVtbi1sZXZlbCBwcml2aWxlZ2VzIHdoZW4g aW52b2x2ZWQgd2l0aCBERUxFVEUKIFNFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVz c19wcml2X3VzZXIxOwogQUxURVIgVEFCTEUgYXRlc3Q2IEFERCBDT0xVTU4gdGhyZWUgaW50 ZWdlcjsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3VwZGF0YWJsZV92aWV3 cy5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC91cGRhdGFibGVfdmlld3Muc3FsCmluZGV4 IGVhZWUwYjdlMWQuLmY4MTQ3MDFhNDMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL3VwZGF0YWJsZV92aWV3cy5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdXBk YXRhYmxlX3ZpZXdzLnNxbApAQCAtMTU0MSw2ICsxNTQxLDIwIEBAIHNlbGVjdCAqIGZyb20g dXZfaW9jdV90YWI7CiBkcm9wIHZpZXcgdXZfaW9jdV92aWV3OwogZHJvcCB0YWJsZSB1dl9p b2N1X3RhYjsKIAorLS0gQ2hlY2sgVVBEQVRFIEZPUiBQT1JUSU9OIE9GIHdvcmtzIGNvcnJl Y3RseQorY3JlYXRlIHRhYmxlIHV2X2Zwb190YWIgKGlkIGludDRyYW5nZSwgdmFsaWRfYXQg dHNyYW5nZSwgYiBmbG9hdCwKKyAgICBjb25zdHJhaW50IHBrX3V2X2Zwb190YWIgcHJpbWFy eSBrZXkgKGlkLCB2YWxpZF9hdCB3aXRob3V0IG92ZXJsYXBzKSk7CitpbnNlcnQgaW50byB1 dl9mcG9fdGFiIHZhbHVlcyAoJ1sxLDFdJywgJ1syMDIwLTAxLTAxLCAyMDMwLTAxLTAxKScs IDApOworY3JlYXRlIHZpZXcgdXZfZnBvX3ZpZXcgYXMKKyAgICBzZWxlY3QgYiwgYisxIGFz IGMsIHZhbGlkX2F0LCBpZCwgJzIuMCc6OnRleHQgYXMgdHdvIGZyb20gdXZfZnBvX3RhYjsK KworaW5zZXJ0IGludG8gdXZfZnBvX3ZpZXcgKGlkLCB2YWxpZF9hdCwgYikgdmFsdWVzICgn WzEsMV0nLCAnWzIwMTAtMDEtMDEsIDIwMjAtMDEtMDEpJywgMSk7CitzZWxlY3QgKiBmcm9t IHV2X2Zwb192aWV3OwordXBkYXRlIHV2X2Zwb192aWV3IGZvciBwb3J0aW9uIG9mIHZhbGlk X2F0IGZyb20gJzIwMTUtMDEtMDEnIHRvICcyMDIwLTAxLTAxJyBzZXQgYiA9IDIgd2hlcmUg aWQgPSAnWzEsMV0nOworc2VsZWN0ICogZnJvbSB1dl9mcG9fdmlldzsKK2RlbGV0ZSBmcm9t IHV2X2Zwb192aWV3IGZvciBwb3J0aW9uIG9mIHZhbGlkX2F0IGZyb20gJzIwMTctMDEtMDEn IHRvICcyMDIyLTAxLTAxJyB3aGVyZSBpZCA9ICdbMSwxXSc7CitzZWxlY3QgKiBmcm9tIHV2 X2Zwb192aWV3OworCiAtLSBUZXN0IHdob2xlLXJvdyByZWZlcmVuY2VzIHRvIHRoZSB2aWV3 CiBjcmVhdGUgdGFibGUgdXZfaW9jdV90YWIgKGEgaW50IHVuaXF1ZSwgYiB0ZXh0KTsKIGNy ZWF0ZSB2aWV3IHV2X2lvY3VfdmlldyBhcwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVz cy9zcWwvd2l0aG91dF9vdmVybGFwcy5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC93aXRo b3V0X292ZXJsYXBzLnNxbAppbmRleCA2MDY1ZWYyNjRjLi40NjAzMzYyYzUwIDEwMDY0NAot LS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC93aXRob3V0X292ZXJsYXBzLnNxbAorKysgYi9z cmMvdGVzdC9yZWdyZXNzL3NxbC93aXRob3V0X292ZXJsYXBzLnNxbApAQCAtMjIzLDYgKzIy MywyMCBAQCBJTlNFUlQgSU5UTyB0ZW1wb3JhbDMgKGlkLCB2YWxpZF9hdCwgaWQyLCBuYW1l KQogICAoJ1sxLDFdJywgZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIwMTAtMDEtMDEnKSwg J1s3LDddJywgJ2ZvbycpLAogICAoJ1syLDJdJywgZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywg JzIwMTAtMDEtMDEnKSwgJ1s5LDldJywgJ2JhcicpCiA7CitVUERBVEUgdGVtcG9yYWwzIEZP UiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMDAtMDUtMDEnIFRPICcyMDAwLTA3LTAx JworICBTRVQgbmFtZSA9IG5hbWUgfHwgJzEnOworVVBEQVRFIHRlbXBvcmFsMyBGT1IgUE9S VElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDAwLTA0LTAxJyBUTyAnMjAwMC0wNi0wMScKKyAg U0VUIG5hbWUgPSBuYW1lIHx8ICcyJworICBXSEVSRSBpZCA9ICdbMiwyXSc7CitTRUxFQ1Qg KiBGUk9NIHRlbXBvcmFsMyBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CistLSBjb25mbGljdGlu ZyBpZCBvbmx5OgorSU5TRVJUIElOVE8gdGVtcG9yYWwzIChpZCwgdmFsaWRfYXQsIGlkMiwg bmFtZSkKKyAgVkFMVUVTCisgICgnWzEsMV0nLCBkYXRlcmFuZ2UoJzIwMDUtMDEtMDEnLCAn MjAwNi0wMS0wMScpLCAnWzgsOF0nLCAnZm9vMycpOworLS0gY29uZmxpY3RpbmcgaWQyIG9u bHk6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbDMgKGlkLCB2YWxpZF9hdCwgaWQyLCBuYW1lKQor ICBWQUxVRVMKKyAgKCdbMywzXScsIGRhdGVyYW5nZSgnMjAwNS0wMS0wMScsICcyMDEwLTAx LTAxJyksICdbOSw5XScsICdiYXIzJyk7CiBEUk9QIFRBQkxFIHRlbXBvcmFsMzsKIAogLS0K QEAgLTI2MSw2ICsyNzUsMjIgQEAgSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWQg VkFMVUVTCiBTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkIE9SREVSIEJZIGlk LCB2YWxpZF9hdDsKIFNFTEVDVCAqIEZST00gdHAxIE9SREVSIEJZIGlkLCB2YWxpZF9hdDsK IFNFTEVDVCAqIEZST00gdHAyIE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKK1VQREFURSAgdGVt cG9yYWxfcGFydGl0aW9uZWQKKyAgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAw MC0wMS0xNScgVE8gJzIwMDAtMDItMTUnCisgIFNFVCBuYW1lID0gJ29uZTInCisgIFdIRVJF IGlkID0gJ1sxLDFdJzsKK1VQREFURSAgdGVtcG9yYWxfcGFydGl0aW9uZWQKKyAgRk9SIFBP UlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAwMC0wMi0yMCcgVE8gJzIwMDAtMDItMjUnCisg IFNFVCBpZCA9ICdbNCw0XScKKyAgV0hFUkUgbmFtZSA9ICdvbmUnOworVVBEQVRFICB0ZW1w b3JhbF9wYXJ0aXRpb25lZAorICBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDAy LTAxLTAxJyBUTyAnMjAwMy0wMS0wMScKKyAgU0VUIGlkID0gJ1syLDJdJworICBXSEVSRSBu YW1lID0gJ3RocmVlJzsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkCisgIEZP UiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMDAtMDEtMTUnIFRPICcyMDAwLTAyLTE1 JworICBXSEVSRSBpZCA9ICdbMywzXSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRp dGlvbmVkIE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKIERST1AgVEFCTEUgdGVtcG9yYWxfcGFy dGl0aW9uZWQ7CiAKIC0tIHRlbXBvcmFsIFVOSVFVRToKQEAgLTI3OSw2ICszMDksMjIgQEAg SU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWQgVkFMVUVTCiBTRUxFQ1QgKiBGUk9N IHRlbXBvcmFsX3BhcnRpdGlvbmVkIE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKIFNFTEVDVCAq IEZST00gdHAxIE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKIFNFTEVDVCAqIEZST00gdHAyIE9S REVSIEJZIGlkLCB2YWxpZF9hdDsKK1VQREFURSAgdGVtcG9yYWxfcGFydGl0aW9uZWQKKyAg Rk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAwMC0wMS0xNScgVE8gJzIwMDAtMDIt MTUnCisgIFNFVCBuYW1lID0gJ29uZTInCisgIFdIRVJFIGlkID0gJ1sxLDFdJzsKK1VQREFU RSAgdGVtcG9yYWxfcGFydGl0aW9uZWQKKyAgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJP TSAnMjAwMC0wMi0yMCcgVE8gJzIwMDAtMDItMjUnCisgIFNFVCBpZCA9ICdbNCw0XScKKyAg V0hFUkUgbmFtZSA9ICdvbmUnOworVVBEQVRFICB0ZW1wb3JhbF9wYXJ0aXRpb25lZAorICBG T1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDAyLTAxLTAxJyBUTyAnMjAwMy0wMS0w MScKKyAgU0VUIGlkID0gJ1syLDJdJworICBXSEVSRSBuYW1lID0gJ3RocmVlJzsKK0RFTEVU RSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkCisgIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0 IEZST00gJzIwMDAtMDEtMTUnIFRPICcyMDAwLTAyLTE1JworICBXSEVSRSBpZCA9ICdbMywz XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkIE9SREVSIEJZIGlkLCB2 YWxpZF9hdDsKIERST1AgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWQ7CiAKIC0tCkBAIC01 MDEsMTMgKzU0NywyMyBAQCBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNy YW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CiAtLSBjaGFuZ2luZyB0aGUgc2Nh bGFyIHBhcnQgZmFpbHM6CiBVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCBpZCA9ICdbNyw3XScK IFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAx JywgJzIwMTgtMDItMDEnKTsKKy0tIGNoYW5naW5nIGFuIHVucmVmZXJlbmNlZCBwYXJ0IGlz IG9rYXk6CitVUERBVEUgdGVtcG9yYWxfcm5nCitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBG Uk9NICcyMDE4LTAxLTAyJyBUTyAnMjAxOC0wMS0wMycKK1NFVCBpZCA9ICdbNyw3XScKK1dI RVJFIGlkID0gJ1s1LDVdJzsKKy0tIGNoYW5naW5nIGp1c3QgYSBwYXJ0IGZhaWxzOgorVVBE QVRFIHRlbXBvcmFsX3JuZworRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0w MS0wNScgVE8gJzIwMTgtMDEtMTAnCitTRVQgaWQgPSAnWzcsN10nCitXSEVSRSBpZCA9ICdb NSw1XSc7CiAtLSB0aGVuIGRlbGV0ZSB0aGUgb2JqZWN0aW5nIEZLIHJlY29yZCBhbmQgdGhl IHNhbWUgUEsgdXBkYXRlIHN1Y2NlZWRzOgogREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5n MnJuZyBXSEVSRSBpZCA9ICdbMywzXSc7CiBVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCB2YWxp ZF9hdCA9IHRzcmFuZ2UoJzIwMTYtMDEtMDEnLCAnMjAxNi0wMi0wMScpCiBXSEVSRSBpZCA9 ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAy LTAxJyk7CiAtLSBjbGVhbiB1cDoKIERFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcg V0hFUkUgcGFyZW50X2lkID0gJ1s1LDVdJzsKLURFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBX SEVSRSBpZCA9ICdbNSw1XSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQg SU4gKCdbNSw1XScsICdbNyw3XScpOwogCiAtLQogLS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRl cyBSRVNUUklDVApAQCAtNTM2LDEzICs1OTIsMjMgQEAgV0hFUkUgaWQgPSAnWzUsNV0nIEFO RCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOwogLS0g Y2hhbmdpbmcgdGhlIHNjYWxhciBwYXJ0IGZhaWxzOgogVVBEQVRFIHRlbXBvcmFsX3JuZyBT RVQgaWQgPSAnWzcsN10nCiBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNy YW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CistLSBjaGFuZ2luZyBhbiB1bnJl ZmVyZW5jZWQgcGFydCBpcyBva2F5OgorVVBEQVRFIHRlbXBvcmFsX3JuZworRk9SIFBPUlRJ T04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wMS0wMicgVE8gJzIwMTgtMDEtMDMnCitTRVQg aWQgPSAnWzcsN10nCitXSEVSRSBpZCA9ICdbNSw1XSc7CistLSBjaGFuZ2luZyBqdXN0IGEg cGFydCBmYWlsczoKK1VQREFURSB0ZW1wb3JhbF9ybmcKK0ZPUiBQT1JUSU9OIE9GIHZhbGlk X2F0IEZST00gJzIwMTgtMDEtMDUnIFRPICcyMDE4LTAxLTEwJworU0VUIGlkID0gJ1s3LDdd JworV0hFUkUgaWQgPSAnWzUsNV0nOwogLS0gdGhlbiBkZWxldGUgdGhlIG9iamVjdGluZyBG SyByZWNvcmQgYW5kIHRoZSBzYW1lIFBLIHVwZGF0ZSBzdWNjZWVkczoKIERFTEVURSBGUk9N IHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzMsM10nOwogVVBEQVRFIHRlbXBv cmFsX3JuZyBTRVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE2LTAxLTAxJywgJzIwMTYtMDIt MDEnKQogV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgt MDEtMDEnLCAnMjAxOC0wMi0wMScpOwogLS0gY2xlYW4gdXA6CiBERUxFVEUgRlJPTSB0ZW1w b3JhbF9ma19ybmcycm5nIFdIRVJFIHBhcmVudF9pZCA9ICdbNSw1XSc7Ci1ERUxFVEUgRlJP TSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nOworREVMRVRFIEZST00gdGVtcG9y YWxfcm5nIFdIRVJFIGlkIElOICgnWzUsNV0nLCAnWzcsN10nKTsKIC0tCiAtLSB0ZXN0IEZL IHBhcmVudCBkZWxldGVzIE5PIEFDVElPTgogLS0KQEAgLTU2MiwxNCArNjI4LDI0IEBAIElO U0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzMsM10nLCB0c3Jhbmdl KCcyMDE4LTAxLTA1JywgJzIwMTgtMDEtCiBERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hF UkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDItMDEnLCAn MjAxOC0wMy0wMScpOwogLS0gYSBQSyBkZWxldGUgdGhhdCBmYWlscyBiZWNhdXNlIGJvdGgg YXJlIHJlZmVyZW5jZWQ6CiBERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAn WzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0w MScpOworLS0gZGVsZXRpbmcgYW4gdW5yZWZlcmVuY2VkIHBhcnQgaXMgb2theToKK0RFTEVU RSBGUk9NIHRlbXBvcmFsX3JuZworRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAx OC0wMS0wMicgVE8gJzIwMTgtMDEtMDMnCitXSEVSRSBpZCA9ICdbNSw1XSc7CistLSBkZWxl dGluZyBqdXN0IGEgcGFydCBmYWlsczoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZworRk9S IFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wMS0wNScgVE8gJzIwMTgtMDEtMTAn CitXSEVSRSBpZCA9ICdbNSw1XSc7CiAtLSB0aGVuIGRlbGV0ZSB0aGUgb2JqZWN0aW5nIEZL IHJlY29yZCBhbmQgdGhlIHNhbWUgUEsgZGVsZXRlIHN1Y2NlZWRzOgogREVMRVRFIEZST00g dGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMywzXSc7CiBERUxFVEUgRlJPTSB0 ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2Uo JzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworLS0gY2xlYW4gdXA6CitERUxFVEUgRlJP TSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIHBhcmVudF9pZCA9ICdbNSw1XSc7CitERUxF VEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgSU4gKCdbNSw1XScpOwogCiAtLQogLS0g dGVzdCBGSyBwYXJlbnQgZGVsZXRlcyBSRVNUUklDVAogLS0KLQogQUxURVIgVEFCTEUgdGVt cG9yYWxfZmtfcm5nMnJuZwogCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5n X2ZrOwogQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZwpAQCAtNTg2LDkgKzY2Miwy MCBAQCBJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1szLDNdJywg dHNyYW5nZSgnMjAxOC0wMS0wNScsICcyMDE4LTAxLQogREVMRVRFIEZST00gdGVtcG9yYWxf cm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAy LTAxJywgJzIwMTgtMDMtMDEnKTsKIC0tIGEgUEsgZGVsZXRlIHRoYXQgZmFpbHMgYmVjYXVz ZSBib3RoIGFyZSByZWZlcmVuY2VkOgogREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJF IGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIw MTgtMDItMDEnKTsKKy0tIGRlbGV0aW5nIGFuIHVucmVmZXJlbmNlZCBwYXJ0IGlzIG9rYXk6 CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZS T00gJzIwMTgtMDEtMDInIFRPICcyMDE4LTAxLTAzJworV0hFUkUgaWQgPSAnWzUsNV0nOwor LS0gZGVsZXRpbmcganVzdCBhIHBhcnQgZmFpbHM6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9y bmcKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDEtMDUnIFRPICcyMDE4 LTAxLTEwJworV0hFUkUgaWQgPSAnWzUsNV0nOwogLS0gdGhlbiBkZWxldGUgdGhlIG9iamVj dGluZyBGSyByZWNvcmQgYW5kIHRoZSBzYW1lIFBLIGRlbGV0ZSBzdWNjZWVkczoKIERFTEVU RSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzMsM10nOwogREVMRVRF IEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0 c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKKy0tIGNsZWFuIHVwOgorREVM RVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBwYXJlbnRfaWQgPSAnWzUsNV0n OworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkIElOICgnWzUsNV0nKTsKIAog LS0KIC0tIHRlc3QgT04gVVBEQVRFL0RFTEVURSBvcHRpb25zCi0tIAoyLjQyLjAKCg== --------------ZGWE1dX84ltsryTlZEe40gG3 Content-Type: text/x-patch; charset=UTF-8; name="v17-0004-Add-CASCADE-SET-NULL-SET-DEFAULT-for-temporal-fo.patch" Content-Disposition: attachment; filename*0="v17-0004-Add-CASCADE-SET-NULL-SET-DEFAULT-for-temporal-fo.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAzNmU2MDRiNzhkNjY5NzNkZmM2MWNhNGQ1NDQ0YzZjMjcwYzk5Yjc5IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IFNhdCwgMyBKdW4gMjAyMyAyMTo0MToxMSAtMDQw MApTdWJqZWN0OiBbUEFUQ0ggdjE3IDQvNV0gQWRkIENBU0NBREUvU0VUIE5VTEwvU0VUIERF RkFVTFQgZm9yIHRlbXBvcmFsIGZvcmVpZ24KIGtleXMKCi0tLQogc3JjL2JhY2tlbmQvY29t bWFuZHMvdGFibGVjbWRzLmMgICAgICAgICAgICAgIHwgIDI4ICstCiBzcmMvYmFja2VuZC91 dGlscy9hZHQvcmlfdHJpZ2dlcnMuYyAgICAgICAgICAgfCA1NDkgKysrKysrKysrKystCiBz cmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAgICAgICAgICAgICAgfCAgMjAgKwog Li4uL3JlZ3Jlc3MvZXhwZWN0ZWQvd2l0aG91dF9vdmVybGFwcy5vdXQgICAgIHwgODA4ICsr KysrKysrKysrKysrKysrLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvd2l0aG91dF9vdmVybGFw cy5zcWwgICAgIHwgNDIxICsrKysrKysrLQogNSBmaWxlcyBjaGFuZ2VkLCAxNzg4IGluc2Vy dGlvbnMoKyksIDM4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3RhYmxlY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMK aW5kZXggZTMyZTA1ZTMwNi4uNTRiNDg0YWM1ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvdGFibGVjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVj bWRzLmMKQEAgLTEyNDAxLDExICsxMjQwMSwxOSBAQCBjcmVhdGVGb3JlaWduS2V5QWN0aW9u VHJpZ2dlcnMoUmVsYXRpb24gcmVsLCBPaWQgcmVmUmVsT2lkLCBDb25zdHJhaW50ICpma2Nv bnN0cgogCQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlRSSV9G S2V5X3Jlc3RyaWN0X2RlbCIpOwogCQkJCWJyZWFrOwogCQkJY2FzZSBGS0NPTlNUUl9BQ1RJ T05fQ0FTQ0FERToKKwkJCQlma190cmlnZ2VyLT5kZWZlcnJhYmxlID0gZmFsc2U7CisJCQkJ ZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVkID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+ZnVu Y25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiVFJJX0ZLZXlfY2FzY2FkZV9kZWwiKTsKKwkJCQli cmVhazsKIAkJCWNhc2UgRktDT05TVFJfQUNUSU9OX1NFVE5VTEw6CisJCQkJZmtfdHJpZ2dl ci0+ZGVmZXJyYWJsZSA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9 IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlRS SV9GS2V5X3NldG51bGxfZGVsIik7CisJCQkJYnJlYWs7CiAJCQljYXNlIEZLQ09OU1RSX0FD VElPTl9TRVRERUZBVUxUOgotCQkJCWVyZXBvcnQoRVJST1IsCi0JCQkJCQkoZXJyY29kZShF UlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCi0JCQkJCQkgZXJybXNnKCJhY3Rpb24g bm90IHN1cHBvcnRlZCBmb3IgdGVtcG9yYWwgZm9yZWlnbiBrZXlzIikpKTsKKwkJCQlma190 cmlnZ2VyLT5kZWZlcnJhYmxlID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVy cmVkID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFt ZSgiVFJJX0ZLZXlfc2V0ZGVmYXVsdF9kZWwiKTsKIAkJCQlicmVhazsKIAkJCWRlZmF1bHQ6 CiAJCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBGSyBhY3Rpb24gdHlwZTogJWQiLApA QCAtMTI0OTIsMTEgKzEyNTAwLDE5IEBAIGNyZWF0ZUZvcmVpZ25LZXlBY3Rpb25UcmlnZ2Vy cyhSZWxhdGlvbiByZWwsIE9pZCByZWZSZWxPaWQsIENvbnN0cmFpbnQgKmZrY29uc3RyCiAJ CQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiVFJJX0ZLZXlfcmVz dHJpY3RfdXBkIik7CiAJCQkJYnJlYWs7CiAJCQljYXNlIEZLQ09OU1RSX0FDVElPTl9DQVND QURFOgorCQkJCWZrX3RyaWdnZXItPmRlZmVycmFibGUgPSBmYWxzZTsKKwkJCQlma190cmln Z2VyLT5pbml0ZGVmZXJyZWQgPSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9 IFN5c3RlbUZ1bmNOYW1lKCJUUklfRktleV9jYXNjYWRlX3VwZCIpOworCQkJCWJyZWFrOwog CQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fU0VUTlVMTDoKKwkJCQlma190cmlnZ2VyLT5kZWZl cnJhYmxlID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVkID0gZmFsc2U7 CisJCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiVFJJX0ZLZXlf c2V0bnVsbF91cGQiKTsKKwkJCQlicmVhazsKIAkJCWNhc2UgRktDT05TVFJfQUNUSU9OX1NF VERFRkFVTFQ6Ci0JCQkJZXJlcG9ydChFUlJPUiwKLQkJCQkJCShlcnJjb2RlKEVSUkNPREVf RkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKLQkJCQkJCSBlcnJtc2coImFjdGlvbiBub3Qgc3Vw cG9ydGVkIGZvciB0ZW1wb3JhbCBmb3JlaWduIGtleXMiKSkpOworCQkJCWZrX3RyaWdnZXIt PmRlZmVycmFibGUgPSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5pbml0ZGVmZXJyZWQgPSBm YWxzZTsKKwkJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJUUklf RktleV9zZXRkZWZhdWx0X3VwZCIpOwogCQkJCWJyZWFrOwogCQkJZGVmYXVsdDoKIAkJCQll bG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIEZLIGFjdGlvbiB0eXBlOiAlZCIsCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcmlfdHJpZ2dlcnMuYyBiL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9yaV90cmlnZ2Vycy5jCmluZGV4IDg1NTJmNDM0ZDUuLmQwMDI3OTE4NTUg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yaV90cmlnZ2Vycy5jCisrKyBi L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yaV90cmlnZ2Vycy5jCkBAIC04Myw2ICs4MywxMiBA QAogI2RlZmluZSBSSV9QTEFOX1NFVE5VTExfT05VUERBVEUJCTcKICNkZWZpbmUgUklfUExB Tl9TRVRERUZBVUxUX09OREVMRVRFCQk4CiAjZGVmaW5lIFJJX1BMQU5fU0VUREVGQVVMVF9P TlVQREFURQkJOQorI2RlZmluZSBUUklfUExBTl9DQVNDQURFX09OREVMRVRFCQkxMAorI2Rl ZmluZSBUUklfUExBTl9DQVNDQURFX09OVVBEQVRFCQkxMQorI2RlZmluZSBUUklfUExBTl9T RVROVUxMX09OVVBEQVRFCQkxMgorI2RlZmluZSBUUklfUExBTl9TRVROVUxMX09OREVMRVRF CQkxMworI2RlZmluZSBUUklfUExBTl9TRVRERUZBVUxUX09OVVBEQVRFCTE0CisjZGVmaW5l IFRSSV9QTEFOX1NFVERFRkFVTFRfT05ERUxFVEUJMTUKIAogI2RlZmluZSBNQVhfUVVPVEVE X05BTUVfTEVOICAoTkFNRURBVEFMRU4qMiszKQogI2RlZmluZSBNQVhfUVVPVEVEX1JFTF9O QU1FX0xFTiAgKE1BWF9RVU9URURfTkFNRV9MRU4qMikKQEAgLTE5MCw2ICsxOTYsNyBAQCBz dGF0aWMgYm9vbCByaV9DaGVja19Qa19NYXRjaChSZWxhdGlvbiBwa19yZWwsIFJlbGF0aW9u IGZrX3JlbCwKIAkJCQkJCQkgIGNvbnN0IFJJX0NvbnN0cmFpbnRJbmZvICpyaWluZm8pOwog c3RhdGljIERhdHVtIHJpX3Jlc3RyaWN0KFRyaWdnZXJEYXRhICp0cmlnZGF0YSwgYm9vbCBp c19ub19hY3Rpb24pOwogc3RhdGljIERhdHVtIHJpX3NldChUcmlnZ2VyRGF0YSAqdHJpZ2Rh dGEsIGJvb2wgaXNfc2V0X251bGwsIGludCB0Z2tpbmQpOworc3RhdGljIERhdHVtIHRyaV9z ZXQoVHJpZ2dlckRhdGEgKnRyaWdkYXRhLCBib29sIGlzX3NldF9udWxsLCBpbnQgdGdraW5k KTsKIHN0YXRpYyB2b2lkIHF1b3RlT25lTmFtZShjaGFyICpidWZmZXIsIGNvbnN0IGNoYXIg Km5hbWUpOwogc3RhdGljIHZvaWQgcXVvdGVSZWxhdGlvbk5hbWUoY2hhciAqYnVmZmVyLCBS ZWxhdGlvbiByZWwpOwogc3RhdGljIHZvaWQgcmlfR2VuZXJhdGVRdWFsKFN0cmluZ0luZm8g YnVmLApAQCAtMTM5MSw2ICsxMzk4LDEyNyBAQCBUUklfRktleV9yZXN0cmljdF9kZWwoUEdf RlVOQ1RJT05fQVJHUykKIAlyZXR1cm4gcmlfcmVzdHJpY3QoKFRyaWdnZXJEYXRhICopIGZj aW5mby0+Y29udGV4dCwgZmFsc2UpOwogfQogCisvKgorICogVFJJX0ZLZXlfY2FzY2FkZV9k ZWwgLQorICoKKyAqIENhc2NhZGVkIGRlbGV0ZSBmb3JlaWduIGtleSByZWZlcmVuY2VzIGF0 IGRlbGV0ZSBldmVudCBvbiB0ZW1wb3JhbCBQSyB0YWJsZS4KKyAqLworRGF0dW0KK1RSSV9G S2V5X2Nhc2NhZGVfZGVsKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJVHJpZ2dlckRhdGEgKnRy aWdkYXRhID0gKFRyaWdnZXJEYXRhICopIGZjaW5mby0+Y29udGV4dDsKKwljb25zdCBSSV9D b25zdHJhaW50SW5mbyAqcmlpbmZvOworCVJlbGF0aW9uCWZrX3JlbDsKKwlSZWxhdGlvbglw a19yZWw7CisJVHVwbGVUYWJsZVNsb3QgKm9sZHNsb3Q7CisJUklfUXVlcnlLZXkgcWtleTsK KwlTUElQbGFuUHRyICBxcGxhbjsKKwlEYXR1bSB0YXJnZXRSYW5nZTsKKworCS8qIENoZWNr IHRoYXQgdGhpcyBpcyBhIHZhbGlkIHRyaWdnZXIgY2FsbCBvbiB0aGUgcmlnaHQgdGltZSBh bmQgZXZlbnQuICovCisJcmlfQ2hlY2tUcmlnZ2VyKGZjaW5mbywgIlRSSV9GS2V5X2Nhc2Nh ZGVfZGVsIiwgUklfVFJJR1RZUEVfREVMRVRFKTsKKworCXJpaW5mbyA9IHJpX0ZldGNoQ29u c3RyYWludEluZm8odHJpZ2RhdGEtPnRnX3RyaWdnZXIsCisJCQkJCQkJCQl0cmlnZGF0YS0+ dGdfcmVsYXRpb24sIHRydWUpOworCisJLyoKKwkgKiBHZXQgdGhlIHJlbGF0aW9uIGRlc2Ny aXB0b3JzIG9mIHRoZSBGSyBhbmQgUEsgdGFibGVzIGFuZCB0aGUgb2xkIHR1cGxlLgorCSAq CisJICogZmtfcmVsIGlzIG9wZW5lZCBpbiBSb3dFeGNsdXNpdmVMb2NrIG1vZGUgc2luY2Ug dGhhdCdzIHdoYXQgb3VyCisJICogZXZlbnR1YWwgREVMRVRFIHdpbGwgZ2V0IG9uIGl0Lgor CSAqLworCWZrX3JlbCA9IHRhYmxlX29wZW4ocmlpbmZvLT5ma19yZWxpZCwgUm93RXhjbHVz aXZlTG9jayk7CisJcGtfcmVsID0gdHJpZ2RhdGEtPnRnX3JlbGF0aW9uOworCW9sZHNsb3Qg PSB0cmlnZGF0YS0+dGdfdHJpZ3Nsb3Q7CisKKwkvKgorCSAqIERvbid0IGRlbGV0ZSB0aGFu IG1vcmUgdGhhbiB0aGUgUEsncyBkdXJhdGlvbiwKKwkgKiB0cmltbWVkIGJ5IGFuIG9yaWdp bmFsIEZPUiBQT1JUSU9OIE9GIGlmIG5lY2Vzc2FyeS4KKwkgKi8KKwl0YXJnZXRSYW5nZSA9 IHJlc3RyaWN0X2Nhc2NhZGluZ19yYW5nZSh0cmlnZGF0YS0+dGdfdGVtcG9yYWwsIHJpaW5m bywgb2xkc2xvdCk7CisKKwlpZiAoU1BJX2Nvbm5lY3QoKSAhPSBTUElfT0tfQ09OTkVDVCkK KwkJZWxvZyhFUlJPUiwgIlNQSV9jb25uZWN0IGZhaWxlZCIpOworCisJLyogRmV0Y2ggb3Ig cHJlcGFyZSBhIHNhdmVkIHBsYW4gZm9yIHRoZSBjYXNjYWRlZCBkZWxldGUgKi8KKwlyaV9C dWlsZFF1ZXJ5S2V5KCZxa2V5LCByaWluZm8sIFRSSV9QTEFOX0NBU0NBREVfT05ERUxFVEUp OworCisJaWYgKChxcGxhbiA9IHJpX0ZldGNoUHJlcGFyZWRQbGFuKCZxa2V5KSkgPT0gTlVM TCkKKwl7CisJCVN0cmluZ0luZm9EYXRhIHF1ZXJ5YnVmOworCQljaGFyCQlma3JlbG5hbWVb TUFYX1FVT1RFRF9SRUxfTkFNRV9MRU5dOworCQljaGFyCQlhdHRuYW1lW01BWF9RVU9URURf TkFNRV9MRU5dOworCQljaGFyCQlwYXJhbW5hbWVbMTZdOworCQljb25zdCBjaGFyICpxdWVy eXNlcDsKKwkJT2lkCQkJcXVlcnlvaWRzW1JJX01BWF9OVU1LRVlTICsgMV07CisJCWNvbnN0 IGNoYXIgKmZrX29ubHk7CisKKwkJLyogLS0tLS0tLS0tLQorCQkgKiBUaGUgcXVlcnkgc3Ry aW5nIGJ1aWx0IGlzCisJCSAqICBERUxFVEUgRlJPTSBbT05MWV0gPGZrdGFibGU+CisJCSAq ICBGT1IgUE9SVElPTiBPRiAkZmthdHQgRlJPTSBsb3dlcigke24rMX0pIFRPIHVwcGVyKCR7 bisxfSkKKwkJICogIFdIRVJFICQxID0gZmthdHQxIFtBTkQgLi4uXQorCQkgKiBUaGUgdHlw ZSBpZCdzIGZvciB0aGUgJCBwYXJhbWV0ZXJzIGFyZSB0aG9zZSBvZiB0aGUKKwkJICogY29y cmVzcG9uZGluZyBQSyBhdHRyaWJ1dGVzLgorCQkgKiAtLS0tLS0tLS0tCisJCSAqLworCQlp bml0U3RyaW5nSW5mbygmcXVlcnlidWYpOworCQlma19vbmx5ID0gZmtfcmVsLT5yZF9yZWwt PnJlbGtpbmQgPT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSA/CisJCQkiIiA6ICJPTkxZ ICI7CisJCXF1b3RlUmVsYXRpb25OYW1lKGZrcmVsbmFtZSwgZmtfcmVsKTsKKwkJcXVvdGVP bmVOYW1lKGF0dG5hbWUsIFJJQXR0TmFtZShma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1ty aWluZm8tPm5rZXlzIC0gMV0pKTsKKworCQlhcHBlbmRTdHJpbmdJbmZvKCZxdWVyeWJ1Ziwg IkRFTEVURSBGUk9NICVzJXMgRk9SIFBPUlRJT04gT0YgJXMgRlJPTSBsb3dlcigkJWQpIFRP IHVwcGVyKCQlZCkiLAorCQkJCQkJIGZrX29ubHksIGZrcmVsbmFtZSwgYXR0bmFtZSwgcmlp bmZvLT5ua2V5cyArIDEsIHJpaW5mby0+bmtleXMgKyAxKTsKKwkJcXVlcnlzZXAgPSAiV0hF UkUiOworCQlmb3IgKGludCBpID0gMDsgaSA8IHJpaW5mby0+bmtleXM7IGkrKykKKwkJewor CQkJT2lkIHBrX3R5cGUgPSBSSUF0dFR5cGUocGtfcmVsLCByaWluZm8tPnBrX2F0dG51bXNb aV0pOworCQkJT2lkIHBrX2NvbGwgPSBSSUF0dENvbGxhdGlvbihwa19yZWwsIHJpaW5mby0+ cGtfYXR0bnVtc1tpXSk7CisJCQlPaWQgZmtfdHlwZSA9IFJJQXR0VHlwZShma19yZWwsIHJp aW5mby0+ZmtfYXR0bnVtc1tpXSk7CisJCQlPaWQgZmtfY29sbCA9IFJJQXR0Q29sbGF0aW9u KGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW2ldKTsKKworCQkJcXVvdGVPbmVOYW1lKGF0 dG5hbWUsCisJCQkJCQkgUklBdHROYW1lKGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW2ld KSk7CisJCQlzcHJpbnRmKHBhcmFtbmFtZSwgIiQlZCIsIGkgKyAxKTsKKwkJCXJpX0dlbmVy YXRlUXVhbCgmcXVlcnlidWYsIHF1ZXJ5c2VwLAorCQkJCQkJCXBhcmFtbmFtZSwgcGtfdHlw ZSwKKwkJCQkJCQlyaWluZm8tPnBmX2VxX29wcnNbaV0sCisJCQkJCQkJYXR0bmFtZSwgZmtf dHlwZSk7CisJCQlpZiAocGtfY29sbCAhPSBma19jb2xsICYmICFnZXRfY29sbGF0aW9uX2lz ZGV0ZXJtaW5pc3RpYyhwa19jb2xsKSkKKwkJCQlyaV9HZW5lcmF0ZVF1YWxDb2xsYXRpb24o JnF1ZXJ5YnVmLCBwa19jb2xsKTsKKwkJCXF1ZXJ5c2VwID0gIkFORCI7CisJCQlxdWVyeW9p ZHNbaV0gPSBwa190eXBlOworCQl9CisKKwkJLyogU2V0IGEgcGFyYW0gZm9yIEZPUiBQT1JU SU9OIE9GIFRPL0ZST00gKi8KKwkJcXVlcnlvaWRzW3JpaW5mby0+bmtleXNdID0gUklBdHRU eXBlKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW3JpaW5mby0+bmtleXMgLSAxXSk7CisK KwkJLyogUHJlcGFyZSBhbmQgc2F2ZSB0aGUgcGxhbiAqLworCQlxcGxhbiA9IHJpX1BsYW5D aGVjayhxdWVyeWJ1Zi5kYXRhLCByaWluZm8tPm5rZXlzICsgMSwgcXVlcnlvaWRzLAorCQkJ CQkJCSAmcWtleSwgZmtfcmVsLCBwa19yZWwpOworCX0KKworCS8qCisJICogV2UgaGF2ZSBh IHBsYW4gbm93LiBCdWlsZCB1cCB0aGUgYXJndW1lbnRzIGZyb20gdGhlIGtleSB2YWx1ZXMg aW4gdGhlCisJICogZGVsZXRlZCBQSyB0dXBsZSBhbmQgZGVsZXRlIHRoZSByZWZlcmVuY2lu ZyByb3dzCisJICovCisJcmlfUGVyZm9ybUNoZWNrKHJpaW5mbywgJnFrZXksIHFwbGFuLAor CQkJCQlma19yZWwsIHBrX3JlbCwKKwkJCQkJb2xkc2xvdCwgTlVMTCwKKwkJCQkJcmlpbmZv LT5ua2V5cywgdGFyZ2V0UmFuZ2UsCisJCQkJCXRydWUsCSAgIC8qIG11c3QgZGV0ZWN0IG5l dyByb3dzICovCisJCQkJCVNQSV9PS19ERUxFVEUpOworCisJaWYgKFNQSV9maW5pc2goKSAh PSBTUElfT0tfRklOSVNIKQorCQllbG9nKEVSUk9SLCAiU1BJX2ZpbmlzaCBmYWlsZWQiKTsK KworCXRhYmxlX2Nsb3NlKGZrX3JlbCwgUm93RXhjbHVzaXZlTG9jayk7CisKKwlyZXR1cm4g UG9pbnRlckdldERhdHVtKE5VTEwpOworfQorCisKIC8qCiAgKiBUUklfRktleV9ub2FjdGlv bl91cGQgLQogICoKQEAgLTE0MjgsNiArMTU1Niw0MTUgQEAgVFJJX0ZLZXlfcmVzdHJpY3Rf dXBkKFBHX0ZVTkNUSU9OX0FSR1MpCiAJcmV0dXJuIHJpX3Jlc3RyaWN0KChUcmlnZ2VyRGF0 YSAqKSBmY2luZm8tPmNvbnRleHQsIGZhbHNlKTsKIH0KIAorLyoKKyAqIFRSSV9GS2V5X2Nh c2NhZGVfdXBkIC0KKyAqCisgKiBDYXNjYWRlZCB1cGRhdGUgZm9yZWlnbiBrZXkgcmVmZXJl bmNlcyBhdCB1cGRhdGUgZXZlbnQgb24gdGVtcG9yYWwgUEsgdGFibGUuCisgKi8KK0RhdHVt CitUUklfRktleV9jYXNjYWRlX3VwZChQR19GVU5DVElPTl9BUkdTKQoreworCVRyaWdnZXJE YXRhICp0cmlnZGF0YSA9IChUcmlnZ2VyRGF0YSAqKSBmY2luZm8tPmNvbnRleHQ7CisJY29u c3QgUklfQ29uc3RyYWludEluZm8gKnJpaW5mbzsKKwlSZWxhdGlvbglma19yZWw7CisJUmVs YXRpb24JcGtfcmVsOworCVR1cGxlVGFibGVTbG90ICpvbGRzbG90OworCVR1cGxlVGFibGVT bG90ICpuZXdzbG90OworCVJJX1F1ZXJ5S2V5IHFrZXk7CisJU1BJUGxhblB0ciAgcXBsYW47 CisJRGF0dW0gdGFyZ2V0UmFuZ2U7CisKKwkvKiBDaGVjayB0aGF0IHRoaXMgaXMgYSB2YWxp ZCB0cmlnZ2VyIGNhbGwgb24gdGhlIHJpZ2h0IHRpbWUgYW5kIGV2ZW50LiAqLworCXJpX0No ZWNrVHJpZ2dlcihmY2luZm8sICJUUklfRktleV9jYXNjYWRlX3VwZCIsIFJJX1RSSUdUWVBF X1VQREFURSk7CisKKwlyaWluZm8gPSByaV9GZXRjaENvbnN0cmFpbnRJbmZvKHRyaWdkYXRh LT50Z190cmlnZ2VyLAorCQkJCQkJCQkJdHJpZ2RhdGEtPnRnX3JlbGF0aW9uLCB0cnVlKTsK KworCS8qCisJICogR2V0IHRoZSByZWxhdGlvbiBkZXNjcmlwdG9ycyBvZiB0aGUgRksgYW5k IFBLIHRhYmxlcyBhbmQgdGhlIG5ldyBhbmQKKwkgKiBvbGQgdHVwbGUuCisJICoKKwkgKiBm a19yZWwgaXMgb3BlbmVkIGluIFJvd0V4Y2x1c2l2ZUxvY2sgbW9kZSBzaW5jZSB0aGF0J3Mg d2hhdCBvdXIKKwkgKiBldmVudHVhbCBVUERBVEUgd2lsbCBnZXQgb24gaXQuCisJICovCisJ ZmtfcmVsID0gdGFibGVfb3BlbihyaWluZm8tPmZrX3JlbGlkLCBSb3dFeGNsdXNpdmVMb2Nr KTsKKwlwa19yZWwgPSB0cmlnZGF0YS0+dGdfcmVsYXRpb247CisJbmV3c2xvdCA9IHRyaWdk YXRhLT50Z19uZXdzbG90OworCW9sZHNsb3QgPSB0cmlnZGF0YS0+dGdfdHJpZ3Nsb3Q7CisK KwkvKgorCSAqIERvbid0IGRlbGV0ZSB0aGFuIG1vcmUgdGhhbiB0aGUgUEsncyBkdXJhdGlv biwKKwkgKiB0cmltbWVkIGJ5IGFuIG9yaWdpbmFsIEZPUiBQT1JUSU9OIE9GIGlmIG5lY2Vz c2FyeS4KKwkgKi8KKwl0YXJnZXRSYW5nZSA9IHJlc3RyaWN0X2Nhc2NhZGluZ19yYW5nZSh0 cmlnZGF0YS0+dGdfdGVtcG9yYWwsIHJpaW5mbywgb2xkc2xvdCk7CisKKwlpZiAoU1BJX2Nv bm5lY3QoKSAhPSBTUElfT0tfQ09OTkVDVCkKKwkJZWxvZyhFUlJPUiwgIlNQSV9jb25uZWN0 IGZhaWxlZCIpOworCisJLyogRmV0Y2ggb3IgcHJlcGFyZSBhIHNhdmVkIHBsYW4gZm9yIHRo ZSBjYXNjYWRlZCB1cGRhdGUgKi8KKwlyaV9CdWlsZFF1ZXJ5S2V5KCZxa2V5LCByaWluZm8s IFRSSV9QTEFOX0NBU0NBREVfT05VUERBVEUpOworCisJaWYgKChxcGxhbiA9IHJpX0ZldGNo UHJlcGFyZWRQbGFuKCZxa2V5KSkgPT0gTlVMTCkKKwl7CisJCVN0cmluZ0luZm9EYXRhIHF1 ZXJ5YnVmOworCQlTdHJpbmdJbmZvRGF0YSBxdWFsYnVmOworCQljaGFyCQlma3JlbG5hbWVb TUFYX1FVT1RFRF9SRUxfTkFNRV9MRU5dOworCQljaGFyCQlhdHRuYW1lW01BWF9RVU9URURf TkFNRV9MRU5dOworCQljaGFyCQlwYXJhbW5hbWVbMTZdOworCQljb25zdCBjaGFyICpxdWVy eXNlcDsKKwkJY29uc3QgY2hhciAqcXVhbHNlcDsKKwkJT2lkCQkgcXVlcnlvaWRzWzIgKiBS SV9NQVhfTlVNS0VZUyArIDFdOworCQljb25zdCBjaGFyICpma19vbmx5OworCisJCS8qIC0t LS0tLS0tLS0KKwkJICogVGhlIHF1ZXJ5IHN0cmluZyBidWlsdCBpcworCQkgKiAgVVBEQVRF IFtPTkxZXSA8Zmt0YWJsZT4KKwkJICoJCSAgRk9SIFBPUlRJT04gT0YgJGZrYXR0IEZST00g bG93ZXIoJHsybisxfSkgVE8gdXBwZXIoJHsybisxfSkKKwkJICoJCSAgU0VUIGZrYXR0MSA9 ICQxLCBbLCAuLi5dCisJCSAqCQkgIFdIRVJFICRuID0gZmthdHQxIFtBTkQgLi4uXQorCQkg KiBUaGUgdHlwZSBpZCdzIGZvciB0aGUgJCBwYXJhbWV0ZXJzIGFyZSB0aG9zZSBvZiB0aGUK KwkJICogY29ycmVzcG9uZGluZyBQSyBhdHRyaWJ1dGVzLiAgTm90ZSB0aGF0IHdlIGFyZSBh c3N1bWluZworCQkgKiB0aGVyZSBpcyBhbiBhc3NpZ25tZW50IGNhc3QgZnJvbSB0aGUgUEsg dG8gdGhlIEZLIHR5cGU7CisJCSAqIGVsc2UgdGhlIHBhcnNlciB3aWxsIGZhaWwuCisJCSAq IC0tLS0tLS0tLS0KKwkJICovCisJCWluaXRTdHJpbmdJbmZvKCZxdWVyeWJ1Zik7CisJCWlu aXRTdHJpbmdJbmZvKCZxdWFsYnVmKTsKKwkJZmtfb25seSA9IGZrX3JlbC0+cmRfcmVsLT5y ZWxraW5kID09IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUgPworCQkJIiIgOiAiT05MWSAi OworCQlxdW90ZVJlbGF0aW9uTmFtZShma3JlbG5hbWUsIGZrX3JlbCk7CisJCXF1b3RlT25l TmFtZShhdHRuYW1lLCBSSUF0dE5hbWUoZmtfcmVsLCByaWluZm8tPmZrX2F0dG51bXNbcmlp bmZvLT5ua2V5cyAtIDFdKSk7CisKKwkJYXBwZW5kU3RyaW5nSW5mbygmcXVlcnlidWYsICJV UERBVEUgJXMlcyBGT1IgUE9SVElPTiBPRiAlcyBGUk9NIGxvd2VyKCQlZCkgVE8gdXBwZXIo JCVkKSBTRVQiLAorCQkJCQkJIGZrX29ubHksIGZrcmVsbmFtZSwgYXR0bmFtZSwgMiAqIHJp aW5mby0+bmtleXMgKyAxLCAyICogcmlpbmZvLT5ua2V5cyArIDEpOworCisJCXF1ZXJ5c2Vw ID0gIiI7CisJCXF1YWxzZXAgPSAiV0hFUkUiOworCQlmb3IgKGludCBpID0gMCwgaiA9IHJp aW5mby0+bmtleXM7IGkgPCByaWluZm8tPm5rZXlzOyBpKyssIGorKykKKwkJeworCQkJT2lk IHBrX3R5cGUgPSBSSUF0dFR5cGUocGtfcmVsLCByaWluZm8tPnBrX2F0dG51bXNbaV0pOwor CQkJT2lkIHBrX2NvbGwgPSBSSUF0dENvbGxhdGlvbihwa19yZWwsIHJpaW5mby0+cGtfYXR0 bnVtc1tpXSk7CisJCQlPaWQgZmtfdHlwZSA9IFJJQXR0VHlwZShma19yZWwsIHJpaW5mby0+ ZmtfYXR0bnVtc1tpXSk7CisJCQlPaWQgZmtfY29sbCA9IFJJQXR0Q29sbGF0aW9uKGZrX3Jl bCwgcmlpbmZvLT5ma19hdHRudW1zW2ldKTsKKworCQkJcXVvdGVPbmVOYW1lKGF0dG5hbWUs CisJCQkJCQkgUklBdHROYW1lKGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW2ldKSk7CisJ CQkvKgorCQkJICogRG9uJ3Qgc2V0IHRoZSB0ZW1wb3JhbCBjb2x1bW4ocykuCisJCQkgKiBG T1IgUE9SVElPTiBPRiB3aWxsIHRha2UgY2FyZSBvZiB0aGF0LgorCQkJICovCisJCQlpZiAo aSA8IHJpaW5mby0+bmtleXMgLSAxKQorCQkJCWFwcGVuZFN0cmluZ0luZm8oJnF1ZXJ5YnVm LAorCQkJCQkJCQkgIiVzICVzID0gJCVkIiwKKwkJCQkJCQkJIHF1ZXJ5c2VwLCBhdHRuYW1l LCBpICsgMSk7CisKKwkJCXNwcmludGYocGFyYW1uYW1lLCAiJCVkIiwgaiArIDEpOworCQkJ cmlfR2VuZXJhdGVRdWFsKCZxdWFsYnVmLCBxdWFsc2VwLAorCQkJCQkJCXBhcmFtbmFtZSwg cGtfdHlwZSwKKwkJCQkJCQlyaWluZm8tPnBmX2VxX29wcnNbaV0sCisJCQkJCQkJYXR0bmFt ZSwgZmtfdHlwZSk7CisJCQlpZiAocGtfY29sbCAhPSBma19jb2xsICYmICFnZXRfY29sbGF0 aW9uX2lzZGV0ZXJtaW5pc3RpYyhwa19jb2xsKSkKKwkJCQlyaV9HZW5lcmF0ZVF1YWxDb2xs YXRpb24oJnF1ZXJ5YnVmLCBwa19jb2xsKTsKKwkJCXF1ZXJ5c2VwID0gIiwiOworCQkJcXVh bHNlcCA9ICJBTkQiOworCQkJcXVlcnlvaWRzW2ldID0gcGtfdHlwZTsKKwkJCXF1ZXJ5b2lk c1tqXSA9IHBrX3R5cGU7CisJCX0KKwkJYXBwZW5kQmluYXJ5U3RyaW5nSW5mbygmcXVlcnli dWYsIHF1YWxidWYuZGF0YSwgcXVhbGJ1Zi5sZW4pOworCisJCS8qIFNldCBhIHBhcmFtIGZv ciBGT1IgUE9SVElPTiBPRiBUTy9GUk9NICovCisJCXF1ZXJ5b2lkc1syICogcmlpbmZvLT5u a2V5c10gPSBSSUF0dFR5cGUocGtfcmVsLCByaWluZm8tPnBrX2F0dG51bXNbcmlpbmZvLT5u a2V5cyAtIDFdKTsKKworCQkvKiBQcmVwYXJlIGFuZCBzYXZlIHRoZSBwbGFuICovCisJCXFw bGFuID0gcmlfUGxhbkNoZWNrKHF1ZXJ5YnVmLmRhdGEsIDIgKiByaWluZm8tPm5rZXlzICsg MSwgcXVlcnlvaWRzLAorCQkJCQkJCSAmcWtleSwgZmtfcmVsLCBwa19yZWwpOworCX0KKwor CS8qCisJICogV2UgaGF2ZSBhIHBsYW4gbm93LiBSdW4gaXQgdG8gdXBkYXRlIHRoZSBleGlz dGluZyByZWZlcmVuY2VzLgorCSAqLworCXJpX1BlcmZvcm1DaGVjayhyaWluZm8sICZxa2V5 LCBxcGxhbiwKKwkJCQkJZmtfcmVsLCBwa19yZWwsCisJCQkJCW9sZHNsb3QsIG5ld3Nsb3Qs CisJCQkJCXJpaW5mby0+bmtleXMgKiAyLCB0YXJnZXRSYW5nZSwKKwkJCQkJdHJ1ZSwJCS8q IG11c3QgZGV0ZWN0IG5ldyByb3dzICovCisJCQkJCVNQSV9PS19VUERBVEUpOworCisJaWYg KFNQSV9maW5pc2goKSAhPSBTUElfT0tfRklOSVNIKQorCQllbG9nKEVSUk9SLCAiU1BJX2Zp bmlzaCBmYWlsZWQiKTsKKworCXRhYmxlX2Nsb3NlKGZrX3JlbCwgUm93RXhjbHVzaXZlTG9j ayk7CisKKwlyZXR1cm4gUG9pbnRlckdldERhdHVtKE5VTEwpOworfQorCisvKgorICogVFJJ X0ZLZXlfc2V0bnVsbF9kZWwgLQorICoKKyAqIFNldCBmb3JlaWduIGtleSByZWZlcmVuY2Vz IHRvIE5VTEwgdmFsdWVzIGF0IGRlbGV0ZSBldmVudCBvbiBQSyB0YWJsZS4KKyAqLworRGF0 dW0KK1RSSV9GS2V5X3NldG51bGxfZGVsKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJLyogQ2hl Y2sgdGhhdCB0aGlzIGlzIGEgdmFsaWQgdHJpZ2dlciBjYWxsIG9uIHRoZSByaWdodCB0aW1l IGFuZCBldmVudC4gKi8KKwlyaV9DaGVja1RyaWdnZXIoZmNpbmZvLCAiVFJJX0ZLZXlfc2V0 bnVsbF9kZWwiLCBSSV9UUklHVFlQRV9ERUxFVEUpOworCisJLyogU2hhcmUgY29kZSB3aXRo IFVQREFURSBjYXNlICovCisJcmV0dXJuIHRyaV9zZXQoKFRyaWdnZXJEYXRhICopIGZjaW5m by0+Y29udGV4dCwgdHJ1ZSwgUklfVFJJR1RZUEVfREVMRVRFKTsKK30KKworLyoKKyAqIFRS SV9GS2V5X3NldG51bGxfdXBkIC0KKyAqCisgKiBTZXQgZm9yZWlnbiBrZXkgcmVmZXJlbmNl cyB0byBOVUxMIGF0IHVwZGF0ZSBldmVudCBvbiBQSyB0YWJsZS4KKyAqLworRGF0dW0KK1RS SV9GS2V5X3NldG51bGxfdXBkKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJLyogQ2hlY2sgdGhh dCB0aGlzIGlzIGEgdmFsaWQgdHJpZ2dlciBjYWxsIG9uIHRoZSByaWdodCB0aW1lIGFuZCBl dmVudC4gKi8KKwlyaV9DaGVja1RyaWdnZXIoZmNpbmZvLCAiVFJJX0ZLZXlfc2V0bnVsbF91 cGQiLCBSSV9UUklHVFlQRV9VUERBVEUpOworCisJLyogU2hhcmUgY29kZSB3aXRoIERFTEVU RSBjYXNlICovCisJcmV0dXJuIHRyaV9zZXQoKFRyaWdnZXJEYXRhICopIGZjaW5mby0+Y29u dGV4dCwgdHJ1ZSwgUklfVFJJR1RZUEVfVVBEQVRFKTsKK30KKworLyoKKyAqIFRSSV9GS2V5 X3NldGRlZmF1bHRfZGVsIC0KKyAqCisgKiBTZXQgZm9yZWlnbiBrZXkgcmVmZXJlbmNlcyB0 byBkZWZhdWx0cyBhdCBkZWxldGUgZXZlbnQgb24gUEsgdGFibGUuCisgKi8KK0RhdHVtCitU UklfRktleV9zZXRkZWZhdWx0X2RlbChQR19GVU5DVElPTl9BUkdTKQoreworCS8qIENoZWNr IHRoYXQgdGhpcyBpcyBhIHZhbGlkIHRyaWdnZXIgY2FsbCBvbiB0aGUgcmlnaHQgdGltZSBh bmQgZXZlbnQuICovCisJcmlfQ2hlY2tUcmlnZ2VyKGZjaW5mbywgIlRSSV9GS2V5X3NldGRl ZmF1bHRfZGVsIiwgUklfVFJJR1RZUEVfREVMRVRFKTsKKworCS8qIFNoYXJlIGNvZGUgd2l0 aCBVUERBVEUgY2FzZSAqLworCXJldHVybiB0cmlfc2V0KChUcmlnZ2VyRGF0YSAqKSBmY2lu Zm8tPmNvbnRleHQsIGZhbHNlLCBSSV9UUklHVFlQRV9ERUxFVEUpOworfQorCisvKgorICog VFJJX0ZLZXlfc2V0ZGVmYXVsdF91cGQgLQorICoKKyAqIFNldCBmb3JlaWduIGtleSByZWZl cmVuY2VzIHRvIGRlZmF1bHRzIGF0IHVwZGF0ZSBldmVudCBvbiBQSyB0YWJsZS4KKyAqLwor RGF0dW0KK1RSSV9GS2V5X3NldGRlZmF1bHRfdXBkKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJ LyogQ2hlY2sgdGhhdCB0aGlzIGlzIGEgdmFsaWQgdHJpZ2dlciBjYWxsIG9uIHRoZSByaWdo dCB0aW1lIGFuZCBldmVudC4gKi8KKwlyaV9DaGVja1RyaWdnZXIoZmNpbmZvLCAiVFJJX0ZL ZXlfc2V0ZGVmYXVsdF91cGQiLCBSSV9UUklHVFlQRV9VUERBVEUpOworCisJLyogU2hhcmUg Y29kZSB3aXRoIERFTEVURSBjYXNlICovCisJcmV0dXJuIHRyaV9zZXQoKFRyaWdnZXJEYXRh ICopIGZjaW5mby0+Y29udGV4dCwgZmFsc2UsIFJJX1RSSUdUWVBFX1VQREFURSk7Cit9CisK Ky8qCisgKiB0cmlfc2V0IC0KKyAqCisgKiBDb21tb24gY29kZSBmb3IgdGVtcG9yYWwgT04g REVMRVRFIFNFVCBOVUxMLCBPTiBERUxFVEUgU0VUIERFRkFVTFQsIE9OCisgKiBVUERBVEUg U0VUIE5VTEwsIGFuZCBPTiBVUERBVEUgU0VUIERFRkFVTFQuCisgKi8KK3N0YXRpYyBEYXR1 bQordHJpX3NldChUcmlnZ2VyRGF0YSAqdHJpZ2RhdGEsIGJvb2wgaXNfc2V0X251bGwsIGlu dCB0Z2tpbmQpCit7CisJY29uc3QgUklfQ29uc3RyYWludEluZm8gKnJpaW5mbzsKKwlSZWxh dGlvbglma19yZWw7CisJUmVsYXRpb24JcGtfcmVsOworCVR1cGxlVGFibGVTbG90ICpvbGRz bG90OworCVJJX1F1ZXJ5S2V5IHFrZXk7CisJU1BJUGxhblB0cglxcGxhbjsKKwlEYXR1bQkJ dGFyZ2V0UmFuZ2U7CisJaW50MzIJCXF1ZXJ5bm87CisKKwlyaWluZm8gPSByaV9GZXRjaENv bnN0cmFpbnRJbmZvKHRyaWdkYXRhLT50Z190cmlnZ2VyLAorCQkJCQkJCQkJdHJpZ2RhdGEt PnRnX3JlbGF0aW9uLCB0cnVlKTsKKworCS8qCisJICogR2V0IHRoZSByZWxhdGlvbiBkZXNj cmlwdG9ycyBvZiB0aGUgRksgYW5kIFBLIHRhYmxlcyBhbmQgdGhlIG9sZCB0dXBsZS4KKwkg KgorCSAqIGZrX3JlbCBpcyBvcGVuZWQgaW4gUm93RXhjbHVzaXZlTG9jayBtb2RlIHNpbmNl IHRoYXQncyB3aGF0IG91cgorCSAqIGV2ZW50dWFsIFVQREFURSB3aWxsIGdldCBvbiBpdC4K KwkgKi8KKwlma19yZWwgPSB0YWJsZV9vcGVuKHJpaW5mby0+ZmtfcmVsaWQsIFJvd0V4Y2x1 c2l2ZUxvY2spOworCXBrX3JlbCA9IHRyaWdkYXRhLT50Z19yZWxhdGlvbjsKKwlvbGRzbG90 ID0gdHJpZ2RhdGEtPnRnX3RyaWdzbG90OworCisJLyoKKwkgKiBEb24ndCBTRVQgTlVMTC9E RUZBVUxUIHRoYW4gbW9yZSB0aGFuIHRoZSBQSydzIGR1cmF0aW9uLAorCSAqIHRyaW1tZWQg YnkgYW4gb3JpZ2luYWwgRk9SIFBPUlRJT04gT0YgaWYgbmVjZXNzYXJ5LgorCSAqLworCXRh cmdldFJhbmdlID0gcmVzdHJpY3RfY2FzY2FkaW5nX3JhbmdlKHRyaWdkYXRhLT50Z190ZW1w b3JhbCwgcmlpbmZvLCBvbGRzbG90KTsKKworCWlmIChTUElfY29ubmVjdCgpICE9IFNQSV9P S19DT05ORUNUKQorCQllbG9nKEVSUk9SLCAiU1BJX2Nvbm5lY3QgZmFpbGVkIik7CisKKwkv KgorCSAqIEZldGNoIG9yIHByZXBhcmUgYSBzYXZlZCBwbGFuIGZvciB0aGUgdHJpZ2dlci4K KwkgKi8KKwlzd2l0Y2ggKHRna2luZCkKKwl7CisJCWNhc2UgUklfVFJJR1RZUEVfVVBEQVRF OgorCQkJcXVlcnlubyA9IGlzX3NldF9udWxsCisJCQkJPyBUUklfUExBTl9TRVROVUxMX09O VVBEQVRFCisJCQkJOiBUUklfUExBTl9TRVRERUZBVUxUX09OVVBEQVRFOworCQkJYnJlYWs7 CisJCWNhc2UgUklfVFJJR1RZUEVfREVMRVRFOgorCQkJcXVlcnlubyA9IGlzX3NldF9udWxs CisJCQkJPyBUUklfUExBTl9TRVROVUxMX09OREVMRVRFCisJCQkJOiBUUklfUExBTl9TRVRE RUZBVUxUX09OREVMRVRFOworCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQllbG9nKEVSUk9S LCAiaW52YWxpZCB0Z2tpbmQgcGFzc2VkIHRvIHJpX3NldCIpOworCX0KKworCXJpX0J1aWxk UXVlcnlLZXkoJnFrZXksIHJpaW5mbywgcXVlcnlubyk7CisKKwlpZiAoKHFwbGFuID0gcmlf RmV0Y2hQcmVwYXJlZFBsYW4oJnFrZXkpKSA9PSBOVUxMKQorCXsKKwkJU3RyaW5nSW5mb0Rh dGEgcXVlcnlidWY7CisJCVN0cmluZ0luZm9EYXRhIHF1YWxidWY7CisJCWNoYXIJCWZrcmVs bmFtZVtNQVhfUVVPVEVEX1JFTF9OQU1FX0xFTl07CisJCWNoYXIJCWF0dG5hbWVbTUFYX1FV T1RFRF9OQU1FX0xFTl07CisJCWNoYXIJCXBhcmFtbmFtZVsxNl07CisJCWNvbnN0IGNoYXIg KnF1ZXJ5c2VwOworCQljb25zdCBjaGFyICpxdWFsc2VwOworCQlPaWQJCQlxdWVyeW9pZHNb UklfTUFYX05VTUtFWVMgKyAxXTsgLyogKzEgZm9yIEZPUiBQT1JUSU9OIE9GICovCisJCWNv bnN0IGNoYXIgKmZrX29ubHk7CisJCWludAkJCW51bV9jb2xzX3RvX3NldDsKKwkJY29uc3Qg aW50MTYgKnNldF9jb2xzOworCisJCXN3aXRjaCAodGdraW5kKQorCQl7CisJCQljYXNlIFJJ X1RSSUdUWVBFX1VQREFURToKKwkJCQkvKiAtMSBzbyB3ZSBsZXQgRk9SIFBPUlRJT04gT0Yg c2V0IHRoZSByYW5nZS4gKi8KKwkJCQludW1fY29sc190b19zZXQgPSByaWluZm8tPm5rZXlz IC0gMTsKKwkJCQlzZXRfY29scyA9IHJpaW5mby0+ZmtfYXR0bnVtczsKKwkJCQlicmVhazsK KwkJCWNhc2UgUklfVFJJR1RZUEVfREVMRVRFOgorCQkJCS8qCisJCQkJICogSWYgY29uZmRl bHNldGNvbHMgYXJlIHByZXNlbnQsIHRoZW4gd2Ugb25seSB1cGRhdGUgdGhlCisJCQkJICog Y29sdW1ucyBzcGVjaWZpZWQgaW4gdGhhdCBhcnJheSwgb3RoZXJ3aXNlIHdlIHVwZGF0ZSBh bGwKKwkJCQkgKiB0aGUgcmVmZXJlbmNpbmcgY29sdW1ucy4KKwkJCQkgKi8KKwkJCQlpZiAo cmlpbmZvLT5uZGVsc2V0Y29scyAhPSAwKQorCQkJCXsKKwkJCQkJbnVtX2NvbHNfdG9fc2V0 ID0gcmlpbmZvLT5uZGVsc2V0Y29sczsKKwkJCQkJc2V0X2NvbHMgPSByaWluZm8tPmNvbmZk ZWxzZXRjb2xzOworCQkJCX0KKwkJCQllbHNlCisJCQkJeworCQkJCQkvKiAtMSBzbyB3ZSBs ZXQgRk9SIFBPUlRJT04gT0Ygc2V0IHRoZSByYW5nZS4gKi8KKwkJCQkJbnVtX2NvbHNfdG9f c2V0ID0gcmlpbmZvLT5ua2V5cyAtIDE7CisJCQkJCXNldF9jb2xzID0gcmlpbmZvLT5ma19h dHRudW1zOworCQkJCX0KKwkJCQlicmVhazsKKwkJCWRlZmF1bHQ6CisJCQkJZWxvZyhFUlJP UiwgImludmFsaWQgdGdraW5kIHBhc3NlZCB0byByaV9zZXQiKTsKKwkJfQorCisJCS8qIC0t LS0tLS0tLS0KKwkJICogVGhlIHF1ZXJ5IHN0cmluZyBidWlsdCBpcworCQkgKglVUERBVEUg W09OTFldIDxma3RhYmxlPgorCQkgKgkJCUZPUiBQT1JUSU9OIE9GICRma2F0dCBGUk9NIGxv d2VyKCR7bisxfSkgVE8gdXBwZXIoJHtuKzF9KQorCQkgKgkJCVNFVCBma2F0dDEgPSB7TlVM THxERUZBVUxUfSBbLCAuLi5dCisJCSAqCQkJV0hFUkUgJDEgPSBma2F0dDEgW0FORCAuLi5d CisJCSAqIFRoZSB0eXBlIGlkJ3MgZm9yIHRoZSAkIHBhcmFtZXRlcnMgYXJlIHRob3NlIG9m IHRoZQorCQkgKiBjb3JyZXNwb25kaW5nIFBLIGF0dHJpYnV0ZXMuCisJCSAqIC0tLS0tLS0t LS0KKwkJICovCisJCWluaXRTdHJpbmdJbmZvKCZxdWVyeWJ1Zik7CisJCWluaXRTdHJpbmdJ bmZvKCZxdWFsYnVmKTsKKwkJZmtfb25seSA9IGZrX3JlbC0+cmRfcmVsLT5yZWxraW5kID09 IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUgPworCQkJIiIgOiAiT05MWSAiOworCQlxdW90 ZVJlbGF0aW9uTmFtZShma3JlbG5hbWUsIGZrX3JlbCk7CisJCXF1b3RlT25lTmFtZShhdHRu YW1lLCBSSUF0dE5hbWUoZmtfcmVsLCByaWluZm8tPmZrX2F0dG51bXNbcmlpbmZvLT5ua2V5 cyAtIDFdKSk7CisKKwkJYXBwZW5kU3RyaW5nSW5mbygmcXVlcnlidWYsICJVUERBVEUgJXMl cyBGT1IgUE9SVElPTiBPRiAlcyBGUk9NIGxvd2VyKCQlZCkgVE8gdXBwZXIoJCVkKSBTRVQi LAorCQkJCQkJIGZrX29ubHksIGZrcmVsbmFtZSwgYXR0bmFtZSwgcmlpbmZvLT5ua2V5cyAr IDEsIHJpaW5mby0+bmtleXMgKyAxKTsKKworCQkvKgorCQkgKiBBZGQgYXNzaWdubWVudCBj bGF1c2VzCisJCSAqLworCQlxdWVyeXNlcCA9ICIiOworCQlmb3IgKGludCBpID0gMDsgaSA8 IG51bV9jb2xzX3RvX3NldDsgaSsrKQorCQl7CisJCQlxdW90ZU9uZU5hbWUoYXR0bmFtZSwg UklBdHROYW1lKGZrX3JlbCwgc2V0X2NvbHNbaV0pKTsKKwkJCWFwcGVuZFN0cmluZ0luZm8o JnF1ZXJ5YnVmLAorCQkJCQkJCSAiJXMgJXMgPSAlcyIsCisJCQkJCQkJIHF1ZXJ5c2VwLCBh dHRuYW1lLAorCQkJCQkJCSBpc19zZXRfbnVsbCA/ICJOVUxMIiA6ICJERUZBVUxUIik7CisJ CQlxdWVyeXNlcCA9ICIsIjsKKwkJfQorCisJCS8qCisJCSAqIEFkZCBXSEVSRSBjbGF1c2UK KwkJICovCisJCXF1YWxzZXAgPSAiV0hFUkUiOworCQlmb3IgKGludCBpID0gMDsgaSA8IHJp aW5mby0+bmtleXM7IGkrKykKKwkJeworCQkJT2lkCXBrX3R5cGUgPSBSSUF0dFR5cGUocGtf cmVsLCByaWluZm8tPnBrX2F0dG51bXNbaV0pOworCQkJT2lkCWZrX3R5cGUgPSBSSUF0dFR5 cGUoZmtfcmVsLCByaWluZm8tPmZrX2F0dG51bXNbaV0pOworCQkJT2lkCXBrX2NvbGwgPSBS SUF0dENvbGxhdGlvbihwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tpXSk7CisJCQlPaWQJ ZmtfY29sbCA9IFJJQXR0Q29sbGF0aW9uKGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW2ld KTsKKworCQkJcXVvdGVPbmVOYW1lKGF0dG5hbWUsCisJCQkJCQkgUklBdHROYW1lKGZrX3Jl bCwgcmlpbmZvLT5ma19hdHRudW1zW2ldKSk7CisKKwkJCXNwcmludGYocGFyYW1uYW1lLCAi JCVkIiwgaSArIDEpOworCQkJcmlfR2VuZXJhdGVRdWFsKCZxdWVyeWJ1ZiwgcXVhbHNlcCwK KwkJCQkJCQlwYXJhbW5hbWUsIHBrX3R5cGUsCisJCQkJCQkJcmlpbmZvLT5wZl9lcV9vcHJz W2ldLAorCQkJCQkJCWF0dG5hbWUsIGZrX3R5cGUpOworCQkJaWYgKHBrX2NvbGwgIT0gZmtf Y29sbCAmJiAhZ2V0X2NvbGxhdGlvbl9pc2RldGVybWluaXN0aWMocGtfY29sbCkpCisJCQkJ cmlfR2VuZXJhdGVRdWFsQ29sbGF0aW9uKCZxdWVyeWJ1ZiwgcGtfY29sbCk7CisJCQlxdWFs c2VwID0gIkFORCI7CisJCQlxdWVyeW9pZHNbaV0gPSBwa190eXBlOworCQl9CisKKwkJLyog U2V0IGEgcGFyYW0gZm9yIEZPUiBQT1JUSU9OIE9GIFRPL0ZST00gKi8KKwkJcXVlcnlvaWRz W3JpaW5mby0+bmtleXNdID0gUklBdHRUeXBlKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1z W3JpaW5mby0+bmtleXMgLSAxXSk7CisKKwkJLyogUHJlcGFyZSBhbmQgc2F2ZSB0aGUgcGxh biAqLworCQlxcGxhbiA9IHJpX1BsYW5DaGVjayhxdWVyeWJ1Zi5kYXRhLCByaWluZm8tPm5r ZXlzICsgMSwgcXVlcnlvaWRzLAorCQkJCQkJCSAmcWtleSwgZmtfcmVsLCBwa19yZWwpOwor CX0KKworCS8qCisJICogV2UgaGF2ZSBhIHBsYW4gbm93LiBSdW4gaXQgdG8gdXBkYXRlIHRo ZSBleGlzdGluZyByZWZlcmVuY2VzLgorCSAqLworCXJpX1BlcmZvcm1DaGVjayhyaWluZm8s ICZxa2V5LCBxcGxhbiwKKwkJCQkJZmtfcmVsLCBwa19yZWwsCisJCQkJCW9sZHNsb3QsIE5V TEwsCisJCQkJCXJpaW5mby0+bmtleXMsIHRhcmdldFJhbmdlLAorCQkJCQl0cnVlLAkJLyog bXVzdCBkZXRlY3QgbmV3IHJvd3MgKi8KKwkJCQkJU1BJX09LX1VQREFURSk7CisKKwlpZiAo U1BJX2ZpbmlzaCgpICE9IFNQSV9PS19GSU5JU0gpCisJCWVsb2coRVJST1IsICJTUElfZmlu aXNoIGZhaWxlZCIpOworCisJdGFibGVfY2xvc2UoZmtfcmVsLCBSb3dFeGNsdXNpdmVMb2Nr KTsKKworCWlmIChpc19zZXRfbnVsbCkKKwkJcmV0dXJuIFBvaW50ZXJHZXREYXR1bShOVUxM KTsKKwllbHNlCisJeworCQkvKgorCQkgKiBJZiB3ZSBqdXN0IGRlbGV0ZWQgb3IgdXBkYXRl ZCB0aGUgUEsgcm93IHdob3NlIGtleSB3YXMgZXF1YWwgdG8gdGhlCisJCSAqIEZLIGNvbHVt bnMnIGRlZmF1bHQgdmFsdWVzLCBhbmQgYSByZWZlcmVuY2luZyByb3cgZXhpc3RzIGluIHRo ZSBGSworCQkgKiB0YWJsZSwgd2Ugd291bGQgaGF2ZSB1cGRhdGVkIHRoYXQgcm93IHRvIHRo ZSBzYW1lIHZhbHVlcyBpdCBhbHJlYWR5CisJCSAqIGhhZCAtLS0gYW5kIFJJX0ZLZXlfZmtf dXBkX2NoZWNrX3JlcXVpcmVkIHdvdWxkIGhlbmNlIGJlbGlldmUgbm8KKwkJICogY2hlY2sg aXMgbmVjZXNzYXJ5LiAgU28gd2UgbmVlZCB0byBkbyBhbm90aGVyIGxvb2t1cCBub3cgYW5k IGluCisJCSAqIGNhc2UgYSByZWZlcmVuY2Ugc3RpbGwgZXhpc3RzLCBhYm9ydCB0aGUgb3Bl cmF0aW9uLiAgVGhhdCBpcworCQkgKiBhbHJlYWR5IGltcGxlbWVudGVkIGluIHRoZSBOTyBB Q1RJT04gdHJpZ2dlciwgc28ganVzdCBydW4gaXQuIChUaGlzCisJCSAqIHJlY2hlY2sgaXMg b25seSBuZWVkZWQgaW4gdGhlIFNFVCBERUZBVUxUIGNhc2UsIHNpbmNlIENBU0NBREUgd291 bGQKKwkJICogcmVtb3ZlIHN1Y2ggcm93cyBpbiBjYXNlIG9mIGEgREVMRVRFIG9wZXJhdGlv biBvciB3b3VsZCBjaGFuZ2UgdGhlCisJCSAqIEZLIGtleSB2YWx1ZXMgaW4gY2FzZSBvZiBh biBVUERBVEUsIHdoaWxlIFNFVCBOVUxMIGlzIGNlcnRhaW4gdG8KKwkJICogcmVzdWx0IGlu IHJvd3MgdGhhdCBzYXRpc2Z5IHRoZSBGSyBjb25zdHJhaW50LikKKwkJICovCisJCXJldHVy biByaV9yZXN0cmljdCh0cmlnZGF0YSwgdHJ1ZSk7CisJfQorfQorCiAvKgogICogUklfRktl eV9wa191cGRfY2hlY2tfcmVxdWlyZWQgLQogICoKQEAgLTI1NTIsOCArMzA4OSw4IEBAIHJp X1BlcmZvcm1DaGVjayhjb25zdCBSSV9Db25zdHJhaW50SW5mbyAqcmlpbmZvLAogCWludAkJ CXNwaV9yZXN1bHQ7CiAJT2lkCQkJc2F2ZV91c2VyaWQ7CiAJaW50CQkJc2F2ZV9zZWNfY29u dGV4dDsKLQlEYXR1bQkJdmFsc1tSSV9NQVhfTlVNS0VZUyAqIDJdOwotCWNoYXIJCW51bGxz W1JJX01BWF9OVU1LRVlTICogMl07CisJRGF0dW0JCXZhbHNbUklfTUFYX05VTUtFWVMgKiAy ICsgMV07CisJY2hhcgkJbnVsbHNbUklfTUFYX05VTUtFWVMgKiAyICsgMV07CiAKIAkvKgog CSAqIFVzZSB0aGUgcXVlcnkgdHlwZSBjb2RlIHRvIGRldGVybWluZSB3aGV0aGVyIHRoZSBx dWVyeSBpcyBydW4gYWdhaW5zdApAQCAtMjU4OCw4ICszMTI1LDEwIEBAIHJpX1BlcmZvcm1D aGVjayhjb25zdCBSSV9Db25zdHJhaW50SW5mbyAqcmlpbmZvLAogCQlyaV9FeHRyYWN0VmFs dWVzKHNvdXJjZV9yZWwsIG5ld3Nsb3QsIHJpaW5mbywgc291cmNlX2lzX3BrLAogCQkJCQkJ IHZhbHMsIG51bGxzKTsKIAkJaWYgKG9sZHNsb3QpCisJCXsKIAkJCXJpX0V4dHJhY3RWYWx1 ZXMoc291cmNlX3JlbCwgb2xkc2xvdCwgcmlpbmZvLCBzb3VyY2VfaXNfcGssCiAJCQkJCQkJ IHZhbHMgKyByaWluZm8tPm5rZXlzLCBudWxscyArIHJpaW5mby0+bmtleXMpOworCQl9CiAJ fQogCWVsc2UKIAl7CkBAIC0zMzAwLDggKzM4MzksMTQgQEAgUklfRktleV90cmlnZ2VyX3R5 cGUoT2lkIHRnZm9pZCkKIAkJY2FzZSBGX1JJX0ZLRVlfU0VUREVGQVVMVF9VUEQ6CiAJCWNh c2UgRl9SSV9GS0VZX05PQUNUSU9OX0RFTDoKIAkJY2FzZSBGX1JJX0ZLRVlfTk9BQ1RJT05f VVBEOgorCQljYXNlIEZfVFJJX0ZLRVlfQ0FTQ0FERV9ERUw6CisJCWNhc2UgRl9UUklfRktF WV9DQVNDQURFX1VQRDoKIAkJY2FzZSBGX1RSSV9GS0VZX1JFU1RSSUNUX0RFTDoKIAkJY2Fz ZSBGX1RSSV9GS0VZX1JFU1RSSUNUX1VQRDoKKwkJY2FzZSBGX1RSSV9GS0VZX1NFVE5VTExf REVMOgorCQljYXNlIEZfVFJJX0ZLRVlfU0VUTlVMTF9VUEQ6CisJCWNhc2UgRl9UUklfRktF WV9TRVRERUZBVUxUX0RFTDoKKwkJY2FzZSBGX1RSSV9GS0VZX1NFVERFRkFVTFRfVVBEOgog CQljYXNlIEZfVFJJX0ZLRVlfTk9BQ1RJT05fREVMOgogCQljYXNlIEZfVFJJX0ZLRVlfTk9B Q1RJT05fVVBEOgogCQkJcmV0dXJuIFJJX1RSSUdHRVJfUEs7CmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19w cm9jLmRhdAppbmRleCAxNzI5ZDFkM2RkLi5iMGQxYzkwYzljIDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cv cGdfcHJvYy5kYXQKQEAgLTM5NTIsNiArMzk1MiwxMiBAQAogeyBvaWQgPT4gJzYxMjMnLCBk ZXNjciA9PiAndGVtcG9yYWwgcmVmZXJlbnRpYWwgaW50ZWdyaXR5IEZPUkVJR04gS0VZIC4u LiBSRUZFUkVOQ0VTJywKICAgcHJvbmFtZSA9PiAnVFJJX0ZLZXlfY2hlY2tfdXBkJywgcHJv dm9sYXRpbGUgPT4gJ3YnLCBwcm9yZXR0eXBlID0+ICd0cmlnZ2VyJywKICAgcHJvYXJndHlw ZXMgPT4gJycsIHByb3NyYyA9PiAnVFJJX0ZLZXlfY2hlY2tfdXBkJyB9LAoreyBvaWQgPT4g JzYxMjQnLCBkZXNjciA9PiAndGVtcG9yYWwgcmVmZXJlbnRpYWwgaW50ZWdyaXR5IE9OIERF TEVURSBDQVNDQURFJywKKyAgcHJvbmFtZSA9PiAnVFJJX0ZLZXlfY2FzY2FkZV9kZWwnLCBw cm92b2xhdGlsZSA9PiAndicsIHByb3JldHR5cGUgPT4gJ3RyaWdnZXInLAorICBwcm9hcmd0 eXBlcyA9PiAnJywgcHJvc3JjID0+ICdUUklfRktleV9jYXNjYWRlX2RlbCcgfSwKK3sgb2lk ID0+ICc2MTI1JywgZGVzY3IgPT4gJ3RlbXBvcmFsIHJlZmVyZW50aWFsIGludGVncml0eSBP TiBVUERBVEUgQ0FTQ0FERScsCisgIHByb25hbWUgPT4gJ1RSSV9GS2V5X2Nhc2NhZGVfdXBk JywgcHJvdm9sYXRpbGUgPT4gJ3YnLCBwcm9yZXR0eXBlID0+ICd0cmlnZ2VyJywKKyAgcHJv YXJndHlwZXMgPT4gJycsIHByb3NyYyA9PiAnVFJJX0ZLZXlfY2FzY2FkZV91cGQnIH0sCiB7 IG9pZCA9PiAnNjEyNicsIGRlc2NyID0+ICd0ZW1wb3JhbCByZWZlcmVudGlhbCBpbnRlZ3Jp dHkgT04gREVMRVRFIFJFU1RSSUNUJywKICAgcHJvbmFtZSA9PiAnVFJJX0ZLZXlfcmVzdHJp Y3RfZGVsJywgcHJvdm9sYXRpbGUgPT4gJ3YnLAogICBwcm9yZXR0eXBlID0+ICd0cmlnZ2Vy JywgcHJvYXJndHlwZXMgPT4gJycsCkBAIC0zOTYwLDYgKzM5NjYsMjAgQEAKICAgcHJvbmFt ZSA9PiAnVFJJX0ZLZXlfcmVzdHJpY3RfdXBkJywgcHJvdm9sYXRpbGUgPT4gJ3YnLAogICBw cm9yZXR0eXBlID0+ICd0cmlnZ2VyJywgcHJvYXJndHlwZXMgPT4gJycsCiAgIHByb3NyYyA9 PiAnVFJJX0ZLZXlfcmVzdHJpY3RfdXBkJyB9LAoreyBvaWQgPT4gJzYxMjgnLCBkZXNjciA9 PiAndGVtcG9yYWwgcmVmZXJlbnRpYWwgaW50ZWdyaXR5IE9OIERFTEVURSBTRVQgTlVMTCcs CisgIHByb25hbWUgPT4gJ1RSSV9GS2V5X3NldG51bGxfZGVsJywgcHJvdm9sYXRpbGUgPT4g J3YnLCBwcm9yZXR0eXBlID0+ICd0cmlnZ2VyJywKKyAgcHJvYXJndHlwZXMgPT4gJycsIHBy b3NyYyA9PiAnVFJJX0ZLZXlfc2V0bnVsbF9kZWwnIH0sCit7IG9pZCA9PiAnNjEyOScsIGRl c2NyID0+ICd0ZW1wb3JhbCByZWZlcmVudGlhbCBpbnRlZ3JpdHkgT04gVVBEQVRFIFNFVCBO VUxMJywKKyAgcHJvbmFtZSA9PiAnVFJJX0ZLZXlfc2V0bnVsbF91cGQnLCBwcm92b2xhdGls ZSA9PiAndicsIHByb3JldHR5cGUgPT4gJ3RyaWdnZXInLAorICBwcm9hcmd0eXBlcyA9PiAn JywgcHJvc3JjID0+ICdUUklfRktleV9zZXRudWxsX3VwZCcgfSwKK3sgb2lkID0+ICc2MTMw JywgZGVzY3IgPT4gJ3RlbXBvcmFsIHJlZmVyZW50aWFsIGludGVncml0eSBPTiBERUxFVEUg U0VUIERFRkFVTFQnLAorICBwcm9uYW1lID0+ICdUUklfRktleV9zZXRkZWZhdWx0X2RlbCcs IHByb3ZvbGF0aWxlID0+ICd2JywKKyAgcHJvcmV0dHlwZSA9PiAndHJpZ2dlcicsIHByb2Fy Z3R5cGVzID0+ICcnLAorICBwcm9zcmMgPT4gJ1RSSV9GS2V5X3NldGRlZmF1bHRfZGVsJyB9 LAoreyBvaWQgPT4gJzYxMzEnLCBkZXNjciA9PiAndGVtcG9yYWwgcmVmZXJlbnRpYWwgaW50 ZWdyaXR5IE9OIFVQREFURSBTRVQgREVGQVVMVCcsCisgIHByb25hbWUgPT4gJ1RSSV9GS2V5 X3NldGRlZmF1bHRfdXBkJywgcHJvdm9sYXRpbGUgPT4gJ3YnLAorICBwcm9yZXR0eXBlID0+ ICd0cmlnZ2VyJywgcHJvYXJndHlwZXMgPT4gJycsCisgIHByb3NyYyA9PiAnVFJJX0ZLZXlf c2V0ZGVmYXVsdF91cGQnIH0sCiB7IG9pZCA9PiAnNjEzMicsIGRlc2NyID0+ICd0ZW1wb3Jh bCByZWZlcmVudGlhbCBpbnRlZ3JpdHkgT04gREVMRVRFIE5PIEFDVElPTicsCiAgIHByb25h bWUgPT4gJ1RSSV9GS2V5X25vYWN0aW9uX2RlbCcsIHByb3ZvbGF0aWxlID0+ICd2JywKICAg cHJvcmV0dHlwZSA9PiAndHJpZ2dlcicsIHByb2FyZ3R5cGVzID0+ICcnLApkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC93aXRob3V0X292ZXJsYXBzLm91dCBiL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvd2l0aG91dF9vdmVybGFwcy5vdXQKaW5kZXggMmM2 ZDQ2ODA1MS4uMzI3YTc1M2Y4NiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC93aXRob3V0X292ZXJsYXBzLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3dpdGhvdXRfb3ZlcmxhcHMub3V0CkBAIC04NjcsMzAgKzg2NywxODQgQEAgREVMRVRF IEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkIElOICgnWzUsNV0nKTsKIC0tCiAtLSB0ZXN0 IE9OIFVQREFURS9ERUxFVEUgb3B0aW9ucwogLS0KKy0tIFRPQzoKKy0tIHBhcmVudCB1cGRh dGVzIENBU0NBREUKKy0tIHBhcmVudCBkZWxldGVzIENBU0NBREUKKy0tIHBhcmVudCB1cGRh dGVzIFNFVCBOVUxMCistLSBwYXJlbnQgZGVsZXRlcyBTRVQgTlVMTAorLS0gcGFyZW50IHVw ZGF0ZXMgU0VUIERFRkFVTFQKKy0tIHBhcmVudCBkZWxldGVzIFNFVCBERUZBVUxUCistLSBw YXJlbnQgdXBkYXRlcyBDQVNDQURFICh0d28gc2NhbGFyIGNvbHMpCistLSBwYXJlbnQgZGVs ZXRlcyBDQVNDQURFICh0d28gc2NhbGFyIGNvbHMpCistLSBwYXJlbnQgdXBkYXRlcyBTRVQg TlVMTCAodHdvIHNjYWxhciBjb2xzKQorLS0gcGFyZW50IGRlbGV0ZXMgU0VUIE5VTEwgKHR3 byBzY2FsYXIgY29scykKKy0tIHBhcmVudCBkZWxldGVzIFNFVCBOVUxMICh0d28gc2NhbGFy IGNvbHMsIFNFVCBOVUxMIHN1YnNldCkKKy0tIHBhcmVudCB1cGRhdGVzIFNFVCBERUZBVUxU ICh0d28gc2NhbGFyIGNvbHMpCistLSBwYXJlbnQgZGVsZXRlcyBTRVQgREVGQVVMVCAodHdv IHNjYWxhciBjb2xzKQorLS0gcGFyZW50IGRlbGV0ZXMgU0VUIERFRkFVTFQgKHR3byBzY2Fs YXIgY29scywgU0VUIERFRkFVTFQgc3Vic2V0KQogLS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRl cyBDQVNDQURFCiBJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzYsNl0nLCB0 c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7Ci1JTlNFUlQgSU5UTyB0ZW1w b3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1s0LDRdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScs ICcyMDIxLTAxLTAxJyksICdbNiw2XScpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5n MnJuZyBWQUxVRVMgKCdbMTAwLDEwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEt MDEtMDEnKSwgJ1s2LDZdJyk7CiBBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCiAJ RFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmssCiAJQUREIENPTlNUUkFJ TlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19mawogCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQ RVJJT0QgdmFsaWRfYXQpCiAJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nCiAJCU9OIERFTEVU RSBDQVNDQURFIE9OIFVQREFURSBDQVNDQURFOwotRVJST1I6ICBhY3Rpb24gbm90IHN1cHBv cnRlZCBmb3IgdGVtcG9yYWwgZm9yZWlnbiBrZXlzCistLSBsZWZ0b3ZlcnMgb24gYm90aCBz aWRlczoKK1VQREFURSB0ZW1wb3JhbF9ybmcgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJP TSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFNFVCBpZCA9ICdbNyw3XScgV0hFUkUg aWQgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJF IGlkID0gJ1sxMDAsMTAwXSc7CisgICAgaWQgICAgIHwgICAgICAgICAgICAgICAgICAgICAg ICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9pZCAKKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFsxMDAsMTAxKSB8IFsiVHVlIEphbiAwMSAwMDow MDowMCAyMDE5IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikgfCBbNyw4KQorIFsxMDAs MTAxKSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVHVlIEphbiAwMSAwMDowMDow MCAyMDE5IikgfCBbNiw3KQorIFsxMDAsMTAxKSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAy MDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgfCBbNiw3KQorKDMgcm93cykKKwor LS0gbm9uLUZQTyB1cGRhdGU6CitVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCBpZCA9ICdbNyw3 XScgV0hFUkUgaWQgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcy cm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CisgICAgaWQgICAgIHwgICAgICAgICAgICAg ICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9p ZCAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFsxMDAsMTAxKSB8IFsiVHVlIEph biAwMSAwMDowMDowMCAyMDE5IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikgfCBbNyw4 KQorIFsxMDAsMTAxKSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVHVlIEphbiAw MSAwMDowMDowMCAyMDE5IikgfCBbNyw4KQorIFsxMDAsMTAxKSB8IFsiV2VkIEphbiAwMSAw MDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgfCBbNyw4KQorKDMg cm93cykKKworLS0gRksgYWNyb3NzIHR3byByZWZlcmVuY2VkIHJvd3M6CitJTlNFUlQgSU5U TyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzgsOF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywg JzIwMjAtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzgs OF0nLCB0c3JhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5U TyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1syMDAsMjAwXScsIHRzcmFuZ2UoJzIw MTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzgsOF0nKTsKK1VQREFURSB0ZW1wb3JhbF9y bmcgU0VUIGlkID0gJ1s5LDldJyBXSEVSRSBpZCA9ICdbOCw4XScgQU5EIHZhbGlkX2F0IEA+ ICcyMDE5LTAxLTAxJzo6dGltZXN0YW1wOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19y bmcycm5nIFdIRVJFIGlkID0gJ1syMDAsMjAwXSc7CisgICAgaWQgICAgIHwgICAgICAgICAg ICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVu dF9pZCAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFsyMDAsMjAxKSB8IFsiTW9u IEphbiAwMSAwMDowMDowMCAyMDE4IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikgfCBb OSwxMCkKKyBbMjAwLDIwMSkgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBK YW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwgWzgsOSkKKygyIHJvd3MpCisKKy0tIGNsZWFuIHVw CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkIElOICgnWzEwMCwx MDBdJywgJ1syMDAsMjAwXScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlk IElOICgnWzYsNl0nLCAnWzcsN10nLCAnWzgsOF0nLCAnWzksOV0nKTsKKy0tIHRlc3QgRksg cGFyZW50IGRlbGV0ZXMgQ0FTQ0FERQorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVF UyAoJ1s2LDZdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5T RVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMTAwLDEwMF0nLCB0c3Jh bmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s2LDZdJyk7CistLSBsZWZ0b3Zl cnMgb24gYm90aCBzaWRlczoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBGT1IgUE9SVElP TiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgV0hFUkUg aWQgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJF IGlkID0gJ1sxMDAsMTAwXSc7CisgICAgaWQgICAgIHwgICAgICAgICAgICAgICAgICAgICAg ICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9pZCAKKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFsxMDAsMTAxKSB8IFsiTW9uIEphbiAwMSAwMDow MDowMCAyMDE4IiwiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IikgfCBbNiw3KQorIFsxMDAs MTAxKSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDow MCAyMDIxIikgfCBbNiw3KQorKDIgcm93cykKKworLS0gbm9uLUZQTyBkZWxldGU6CitERUxF VEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzYsNl0nOworU0VMRUNUICogRlJP TSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CisgaWQgfCB2 YWxpZF9hdCB8IHBhcmVudF9pZCAKKy0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorKDAg cm93cykKKworLS0gRksgYWNyb3NzIHR3byByZWZlcmVuY2VkIHJvd3M6CitJTlNFUlQgSU5U TyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzgsOF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywg JzIwMjAtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzgs OF0nLCB0c3JhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5U TyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1syMDAsMjAwXScsIHRzcmFuZ2UoJzIw MTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzgsOF0nKTsKK0RFTEVURSBGUk9NIHRlbXBv cmFsX3JuZyBXSEVSRSBpZCA9ICdbOCw4XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAx Jzo6dGltZXN0YW1wOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJF IGlkID0gJ1syMDAsMjAwXSc7CisgICAgaWQgICAgIHwgICAgICAgICAgICAgICAgICAgICAg ICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9pZCAKKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFsyMDAsMjAxKSB8IFsiV2VkIEphbiAwMSAwMDow MDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgfCBbOCw5KQorKDEgcm93 KQorCistLSBjbGVhbiB1cAorREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVS RSBpZCBJTiAoJ1sxMDAsMTAwXScsICdbMjAwLDIwMF0nKTsKK0RFTEVURSBGUk9NIHRlbXBv cmFsX3JuZyBXSEVSRSBpZCBJTiAoJ1s2LDZdJywgJ1s3LDddJywgJ1s4LDhdJywgJ1s5LDld Jyk7CiAtLSB0ZXN0IEZLIHBhcmVudCB1cGRhdGVzIFNFVCBOVUxMCi1JTlNFUlQgSU5UTyB0 ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzksOV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIw MjEtMDEtMDEnKSk7Ci1JTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAo J1s2LDZdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbOSw5XScp OworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s2LDZdJywgdHNyYW5nZSgn MjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtf cm5nMnJuZyBWQUxVRVMgKCdbMTAwLDEwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIw MjEtMDEtMDEnKSwgJ1s2LDZdJyk7CiBBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5n CiAJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmssCiAJQUREIENPTlNU UkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19mawogCQlGT1JFSUdOIEtFWSAocGFyZW50X2lk LCBQRVJJT0QgdmFsaWRfYXQpCiAJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nCiAJCU9OIERF TEVURSBTRVQgTlVMTCBPTiBVUERBVEUgU0VUIE5VTEw7Ci1FUlJPUjogIGFjdGlvbiBub3Qg c3VwcG9ydGVkIGZvciB0ZW1wb3JhbCBmb3JlaWduIGtleXMKKy0tIGxlZnRvdmVycyBvbiBi b3RoIHNpZGVzOgorVVBEQVRFIHRlbXBvcmFsX3JuZyBGT1IgUE9SVElPTiBPRiB2YWxpZF9h dCBGUk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgU0VUIGlkID0gJ1s3LDddJyBX SEVSRSBpZCA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcg V0hFUkUgaWQgPSAnWzEwMCwxMDBdJzsKKyAgICBpZCAgICAgfCAgICAgICAgICAgICAgICAg ICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFyZW50X2lkIAor LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzEwMCwxMDEpIHwgWyJUdWUgSmFuIDAx IDAwOjAwOjAwIDIwMTkiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8IAorIFsxMDAs MTAxKSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVHVlIEphbiAwMSAwMDowMDow MCAyMDE5IikgfCBbNiw3KQorIFsxMDAsMTAxKSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAy MDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgfCBbNiw3KQorKDMgcm93cykKKwor LS0gbm9uLUZQTyB1cGRhdGU6CitVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCBpZCA9ICdbNyw3 XScgV0hFUkUgaWQgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcy cm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CisgICAgaWQgICAgIHwgICAgICAgICAgICAg ICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9p ZCAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFsxMDAsMTAxKSB8IFsiVHVlIEph biAwMSAwMDowMDowMCAyMDE5IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikgfCAKKyBb MTAwLDEwMSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlR1ZSBKYW4gMDEgMDA6 MDA6MDAgMjAxOSIpIHwgCisgWzEwMCwxMDEpIHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIw MjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IAorKDMgcm93cykKKworLS0gRksg YWNyb3NzIHR3byByZWZlcmVuY2VkIHJvd3M6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcg VkFMVUVTICgnWzgsOF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEnKSk7 CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzgsOF0nLCB0c3JhbmdlKCcy MDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19y bmcycm5nIFZBTFVFUyAoJ1syMDAsMjAwXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAy MS0wMS0wMScpLCAnWzgsOF0nKTsKK1VQREFURSB0ZW1wb3JhbF9ybmcgU0VUIGlkID0gJ1s5 LDldJyBXSEVSRSBpZCA9ICdbOCw4XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6 dGltZXN0YW1wOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlk ID0gJ1syMDAsMjAwXSc7CisgICAgaWQgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2 YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9pZCAKKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLQorIFsyMDAsMjAxKSB8IFsiTW9uIEphbiAwMSAwMDowMDow MCAyMDE4IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikgfCAKKyBbMjAwLDIwMSkgfCBb IldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIp IHwgWzgsOSkKKygyIHJvd3MpCisKKy0tIGNsZWFuIHVwCitERUxFVEUgRlJPTSB0ZW1wb3Jh bF9ma19ybmcycm5nIFdIRVJFIGlkIElOICgnWzEwMCwxMDBdJywgJ1syMDAsMjAwXScpOwor REVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkIElOICgnWzYsNl0nLCAnWzcsN10n LCAnWzgsOF0nLCAnWzksOV0nKTsKKy0tIHRlc3QgRksgcGFyZW50IGRlbGV0ZXMgU0VUIE5V TEwKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbNiw2XScsIHRzcmFuZ2Uo JzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2Zr X3JuZzJybmcgVkFMVUVTICgnWzEwMCwxMDBdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcy MDIxLTAxLTAxJyksICdbNiw2XScpOworLS0gbGVmdG92ZXJzIG9uIGJvdGggc2lkZXM6CitE RUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAn MjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFdIRVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVD VCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOwor ICAgIGlkICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAg ICAgICAgICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0KKyBbMTAwLDEwMSkgfCBbIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIsIldlZCBKYW4g MDEgMDA6MDA6MDAgMjAyMCIpIHwgCisgWzEwMCwxMDEpIHwgWyJNb24gSmFuIDAxIDAwOjAw OjAwIDIwMTgiLCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiKSB8IFs2LDcpCisgWzEwMCwx MDEpIHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAw IDIwMjEiKSB8IFs2LDcpCisoMyByb3dzKQorCistLSBub24tRlBPIGRlbGV0ZToKK0RFTEVU RSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9N IHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwMCwxMDBdJzsKKyAgICBpZCAg ICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAg ICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzEw MCwxMDEpIHwgWyJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiLCJXZWQgSmFuIDAxIDAwOjAw OjAwIDIwMjAiKSB8IAorIFsxMDAsMTAxKSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4 IiwiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IikgfCAKKyBbMTAwLDEwMSkgfCBbIldlZCBK YW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwgCiso MyByb3dzKQorCistLSBGSyBhY3Jvc3MgdHdvIHJlZmVyZW5jZWQgcm93czoKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbOCw4XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEn LCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdb OCw4XScsIHRzcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzIwMCwyMDBdJywgdHNyYW5nZSgn MjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbOCw4XScpOworREVMRVRFIEZST00gdGVt cG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s4LDhdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEt MDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hF UkUgaWQgPSAnWzIwMCwyMDBdJzsKKyAgICBpZCAgICAgfCAgICAgICAgICAgICAgICAgICAg ICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFyZW50X2lkIAorLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzIwMCwyMDEpIHwgWyJNb24gSmFuIDAxIDAw OjAwOjAwIDIwMTgiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8IAorIFsyMDAsMjAx KSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAy MDIxIikgfCBbOCw5KQorKDIgcm93cykKKworLS0gY2xlYW4gdXAKK0RFTEVURSBGUk9NIHRl bXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgSU4gKCdbMTAwLDEwMF0nLCAnWzIwMCwyMDBd Jyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgSU4gKCdbNiw2XScsICdb Nyw3XScsICdbOCw4XScsICdbOSw5XScpOwogLS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRlcyBT RVQgREVGQVVMVAogSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1stMSwtMV0n LCB0c3JhbmdlKG51bGwsIG51bGwpKTsKLUlOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxV RVMgKCdbMTIsMTJdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOwot SU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbOCw4XScsIHRzcmFu Z2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzEyLDEyXScpOworSU5TRVJUIElO VE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s2LDZdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScs ICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxV RVMgKCdbMTAwLDEwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwg J1s2LDZdJyk7CiBBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCiAgIEFMVEVSIENP TFVNTiBwYXJlbnRfaWQgU0VUIERFRkFVTFQgJ1stMSwtMV0nLAogCURST1AgQ09OU1RSQUlO VCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrLApAQCAtODk4LDcgKzEwNTIsNDQyIEBAIEFMVEVS IFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKIAkJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwg UEVSSU9EIHZhbGlkX2F0KQogCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZwogCQlPTiBERUxF VEUgU0VUIERFRkFVTFQgT04gVVBEQVRFIFNFVCBERUZBVUxUOwotRVJST1I6ICBhY3Rpb24g bm90IHN1cHBvcnRlZCBmb3IgdGVtcG9yYWwgZm9yZWlnbiBrZXlzCistLSBsZWZ0b3ZlcnMg b24gYm90aCBzaWRlczoKK1VQREFURSB0ZW1wb3JhbF9ybmcgRk9SIFBPUlRJT04gT0YgdmFs aWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFNFVCBpZCA9ICdbNyw3 XScgV0hFUkUgaWQgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcy cm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CisgICAgaWQgICAgIHwgICAgICAgICAgICAg ICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9p ZCAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFsxMDAsMTAxKSB8IFsiVHVlIEph biAwMSAwMDowMDowMCAyMDE5IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikgfCBbLTEs MCkKKyBbMTAwLDEwMSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlR1ZSBKYW4g MDEgMDA6MDA6MDAgMjAxOSIpIHwgWzYsNykKKyBbMTAwLDEwMSkgfCBbIldlZCBKYW4gMDEg MDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwgWzYsNykKKygz IHJvd3MpCisKKy0tIG5vbi1GUE8gdXBkYXRlOgorVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQg aWQgPSAnWzcsN10nIFdIRVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9y YWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworICAgIGlkICAgICB8ICAg ICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAg fCBwYXJlbnRfaWQgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbMTAwLDEwMSkg fCBbIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAy MCIpIHwgWy0xLDApCisgWzEwMCwxMDEpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgi LCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiKSB8IFstMSwwKQorIFsxMDAsMTAxKSB8IFsi V2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikg fCBbLTEsMCkKKygzIHJvd3MpCisKKy0tIEZLIGFjcm9zcyB0d28gcmVmZXJlbmNlZCByb3dz OgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s4LDhdJywgdHNyYW5nZSgn MjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5n IFZBTFVFUyAoJ1s4LDhdJywgdHNyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykp OworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMjAwLDIwMF0n LCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s4LDhdJyk7CitVUERB VEUgdGVtcG9yYWxfcm5nIFNFVCBpZCA9ICdbOSw5XScgV0hFUkUgaWQgPSAnWzgsOF0nIEFO RCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZST00g dGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMjAwLDIwMF0nOworICAgIGlkICAg ICB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAg ICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbMjAw LDIwMSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIldlZCBKYW4gMDEgMDA6MDA6 MDAgMjAyMCIpIHwgWy0xLDApCisgWzIwMCwyMDEpIHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAw IDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IFs4LDkpCisoMiByb3dzKQor CistLSBjbGVhbiB1cAorREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBp ZCBJTiAoJ1sxMDAsMTAwXScsICdbMjAwLDIwMF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFs X3JuZyBXSEVSRSBpZCBJTiAoJ1s2LDZdJywgJ1s3LDddJywgJ1s4LDhdJywgJ1s5LDldJyk7 CistLSB0ZXN0IEZLIHBhcmVudCBkZWxldGVzIFNFVCBERUZBVUxUCitJTlNFUlQgSU5UTyB0 ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzYsNl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIw MjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAo J1sxMDAsMTAwXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzYs Nl0nKTsKKy0tIGxlZnRvdmVycyBvbiBib3RoIHNpZGVzOgorREVMRVRFIEZST00gdGVtcG9y YWxfcm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcy MDIwLTAxLTAxJyBXSEVSRSBpZCA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFs X2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwMCwxMDBdJzsKKyAgICBpZCAgICAgfCAgICAg ICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwg cGFyZW50X2lkIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzEwMCwxMDEpIHwg WyJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAi KSB8IFstMSwwKQorIFsxMDAsMTAxKSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4Iiwi VHVlIEphbiAwMSAwMDowMDowMCAyMDE5IikgfCBbNiw3KQorIFsxMDAsMTAxKSB8IFsiV2Vk IEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgfCBb Niw3KQorKDMgcm93cykKKworLS0gbm9uLUZQTyB1cGRhdGU6CitERUxFVEUgRlJPTSB0ZW1w b3JhbF9ybmcgV0hFUkUgaWQgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9m a19ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CisgICAgaWQgICAgIHwgICAgICAg ICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBh cmVudF9pZCAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFsxMDAsMTAxKSB8IFsi VHVlIEphbiAwMSAwMDowMDowMCAyMDE5IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikg fCBbLTEsMCkKKyBbMTAwLDEwMSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlR1 ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIpIHwgWy0xLDApCisgWzEwMCwxMDEpIHwgWyJXZWQg SmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IFst MSwwKQorKDMgcm93cykKKworLS0gRksgYWNyb3NzIHR3byByZWZlcmVuY2VkIHJvd3M6CitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzgsOF0nLCB0c3JhbmdlKCcyMDE4 LTAxLTAxJywgJzIwMjAtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFM VUVTICgnWzgsOF0nLCB0c3JhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1syMDAsMjAwXScsIHRz cmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzgsOF0nKTsKK0RFTEVURSBG Uk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbOCw4XScgQU5EIHZhbGlkX2F0IEA+ICcy MDE5LTAxLTAxJzo6dGltZXN0YW1wOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcy cm5nIFdIRVJFIGlkID0gJ1syMDAsMjAwXSc7CisgICAgaWQgICAgIHwgICAgICAgICAgICAg ICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9p ZCAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFsyMDAsMjAxKSB8IFsiTW9uIEph biAwMSAwMDowMDowMCAyMDE4IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikgfCBbLTEs MCkKKyBbMjAwLDIwMSkgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4g MDEgMDA6MDA6MDAgMjAyMSIpIHwgWzgsOSkKKygyIHJvd3MpCisKKy0tIGNsZWFuIHVwCitE RUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkIElOICgnWzEwMCwxMDBd JywgJ1syMDAsMjAwXScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkIElO ICgnWzYsNl0nLCAnWzcsN10nLCAnWzgsOF0nLCAnWzksOV0nKTsKKy0tIHRlc3QgRksgcGFy ZW50IHVwZGF0ZXMgQ0FTQ0FERSAodHdvIHNjYWxhciBjb2xzKQorSU5TRVJUIElOVE8gdGVt cG9yYWxfcm5nMiBWQUxVRVMgKCdbNiw2XScsICdbNiw2XScsIHRzcmFuZ2UoJzIwMTgtMDEt MDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrMl9ybmcycm5n IFZBTFVFUyAoJ1sxMDAsMTAwXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0w MScpLCAnWzYsNl0nLCAnWzYsNl0nKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrMl9ybmcy cm5nCisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrMl9ybmcycm5nX2ZrLAorCUFERCBD T05TVFJBSU5UIHRlbXBvcmFsX2ZrMl9ybmcycm5nX2ZrCisJCUZPUkVJR04gS0VZIChwYXJl bnRfaWQxLCBwYXJlbnRfaWQyLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVt cG9yYWxfcm5nMgorCQlPTiBERUxFVEUgQ0FTQ0FERSBPTiBVUERBVEUgQ0FTQ0FERTsKKy0t IGxlZnRvdmVycyBvbiBib3RoIHNpZGVzOgorVVBEQVRFIHRlbXBvcmFsX3JuZzIgRk9SIFBP UlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFNF VCBpZDEgPSAnWzcsN10nIFdIRVJFIGlkMSA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRl bXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CisgICAgaWQgICAg IHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAg ICAgICB8IHBhcmVudF9pZDEgfCBwYXJlbnRfaWQyIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0KKyBbMTAwLDEwMSkgfCBbIlR1ZSBKYW4gMDEgMDA6MDA6 MDAgMjAxOSIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwgWzcsOCkgICAgICB8IFs2 LDcpCisgWzEwMCwxMDEpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUdWUgSmFu IDAxIDAwOjAwOjAwIDIwMTkiKSB8IFs2LDcpICAgICAgfCBbNiw3KQorIFsxMDAsMTAxKSB8 IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIx IikgfCBbNiw3KSAgICAgIHwgWzYsNykKKygzIHJvd3MpCisKKy0tIG5vbi1GUE8gdXBkYXRl OgorVVBEQVRFIHRlbXBvcmFsX3JuZzIgU0VUIGlkMSA9ICdbNyw3XScgV0hFUkUgaWQxID0g J1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQg PSAnWzEwMCwxMDBdJzsKKyAgICBpZCAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZh bGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFyZW50X2lkMSB8IHBhcmVudF9p ZDIgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorIFsxMDAs MTAxKSB8IFsiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IiwiV2VkIEphbiAwMSAwMDowMDow MCAyMDIwIikgfCBbNyw4KSAgICAgIHwgWzYsNykKKyBbMTAwLDEwMSkgfCBbIk1vbiBKYW4g MDEgMDA6MDA6MDAgMjAxOCIsIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIpIHwgWzcsOCkg ICAgICB8IFs2LDcpCisgWzEwMCwxMDEpIHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAi LCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IFs3LDgpICAgICAgfCBbNiw3KQorKDMg cm93cykKKworLS0gRksgYWNyb3NzIHR3byByZWZlcmVuY2VkIHJvd3M6CitJTlNFUlQgSU5U TyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1s4LDhdJywgJ1s4LDhdJywgdHNyYW5nZSgnMjAx OC0wMS0wMScsICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMiBW QUxVRVMgKCdbOCw4XScsICdbOCw4XScsIHRzcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0w MS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFZBTFVFUyAoJ1sy MDAsMjAwXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzgsOF0n LCAnWzgsOF0nKTsKK1VQREFURSB0ZW1wb3JhbF9ybmcyIFNFVCBpZDEgPSAnWzksOV0nIFdI RVJFIGlkMSA9ICdbOCw4XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6dGltZXN0 YW1wOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCA9ICdb MjAwLDIwMF0nOworICAgIGlkICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRf YXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYXJlbnRfaWQxIHwgcGFyZW50X2lkMiAK Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgWzIwMCwyMDEp IHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIw MjAiKSB8IFs5LDEwKSAgICAgfCBbOCw5KQorIFsyMDAsMjAxKSB8IFsiV2VkIEphbiAwMSAw MDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgfCBbOCw5KSAgICAg IHwgWzgsOSkKKygyIHJvd3MpCisKKy0tIGNsZWFuIHVwCitERUxFVEUgRlJPTSB0ZW1wb3Jh bF9mazJfcm5nMnJuZyBXSEVSRSBpZCBJTiAoJ1sxMDAsMTAwXScsICdbMjAwLDIwMF0nKTsK K0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZzIgV0hFUkUgaWQxIElOICgnWzYsNl0nLCAnWzcs N10nLCAnWzgsOF0nLCAnWzksOV0nKTsKKy0tIHRlc3QgRksgcGFyZW50IGRlbGV0ZXMgQ0FT Q0FERSAodHdvIHNjYWxhciBjb2xzKQorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMiBWQUxV RVMgKCdbNiw2XScsICdbNiw2XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0w MScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFZBTFVFUyAoJ1sxMDAs MTAwXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzYsNl0nLCAn WzYsNl0nKTsKKy0tIGxlZnRvdmVycyBvbiBib3RoIHNpZGVzOgorREVMRVRFIEZST00gdGVt cG9yYWxfcm5nMiBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBU TyAnMjAyMC0wMS0wMScgV0hFUkUgaWQxID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVt cG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwMCwxMDBdJzsKKyAgICBpZCAgICAg fCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAg ICAgIHwgcGFyZW50X2lkMSB8IHBhcmVudF9pZDIgCistLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLQorIFsxMDAsMTAxKSB8IFsiTW9uIEphbiAwMSAwMDowMDow MCAyMDE4IiwiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IikgfCBbNiw3KSAgICAgIHwgWzYs NykKKyBbMTAwLDEwMSkgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4g MDEgMDA6MDA6MDAgMjAyMSIpIHwgWzYsNykgICAgICB8IFs2LDcpCisoMiByb3dzKQorCist LSBub24tRlBPIGRlbGV0ZToKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZzIgV0hFUkUgaWQx ID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUg aWQgPSAnWzEwMCwxMDBdJzsKKyBpZCB8IHZhbGlkX2F0IHwgcGFyZW50X2lkMSB8IHBhcmVu dF9pZDIgCistLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorKDAg cm93cykKKworLS0gRksgYWNyb3NzIHR3byByZWZlcmVuY2VkIHJvd3M6CitJTlNFUlQgSU5U TyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1s4LDhdJywgJ1s4LDhdJywgdHNyYW5nZSgnMjAx OC0wMS0wMScsICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMiBW QUxVRVMgKCdbOCw4XScsICdbOCw4XScsIHRzcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0w MS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFZBTFVFUyAoJ1sy MDAsMjAwXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzgsOF0n LCAnWzgsOF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZzIgV0hFUkUgaWQxID0gJ1s4 LDhdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1Qg KiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1syMDAsMjAwXSc7Cisg ICAgaWQgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAg ICAgICAgICAgICAgICB8IHBhcmVudF9pZDEgfCBwYXJlbnRfaWQyIAorLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyBbMjAwLDIwMSkgfCBbIldlZCBKYW4g MDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwgWzgsOSkg ICAgICB8IFs4LDkpCisoMSByb3cpCisKKy0tIGNsZWFuIHVwCitERUxFVEUgRlJPTSB0ZW1w b3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCBJTiAoJ1sxMDAsMTAwXScsICdbMjAwLDIwMF0n KTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZzIgV0hFUkUgaWQxIElOICgnWzYsNl0nLCAn WzcsN10nLCAnWzgsOF0nLCAnWzksOV0nKTsKKy0tIHRlc3QgRksgcGFyZW50IHVwZGF0ZXMg U0VUIE5VTEwgKHR3byBzY2FsYXIgY29scykKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIg VkFMVUVTICgnWzYsNl0nLCAnWzYsNl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEt MDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9mazJfcm5nMnJuZyBWQUxVRVMgKCdb MTAwLDEwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s2LDZd JywgJ1s2LDZdJyk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9mazJfcm5nMnJuZworCURST1Ag Q09OU1RSQUlOVCB0ZW1wb3JhbF9mazJfcm5nMnJuZ19maywKKwlBREQgQ09OU1RSQUlOVCB0 ZW1wb3JhbF9mazJfcm5nMnJuZ19maworCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkMSwgcGFy ZW50X2lkMiwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZzIK KwkJT04gREVMRVRFIFNFVCBOVUxMIE9OIFVQREFURSBTRVQgTlVMTDsKKy0tIGxlZnRvdmVy cyBvbiBib3RoIHNpZGVzOgorVVBEQVRFIHRlbXBvcmFsX3JuZzIgRk9SIFBPUlRJT04gT0Yg dmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFNFVCBpZDEgPSAn WzcsN10nIFdIRVJFIGlkMSA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2Zr Ml9ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CisgICAgaWQgICAgIHwgICAgICAg ICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBh cmVudF9pZDEgfCBwYXJlbnRfaWQyIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0KKyBbMTAwLDEwMSkgfCBbIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIs IldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwgICAgICAgICAgICB8IAorIFsxMDAsMTAx KSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVHVlIEphbiAwMSAwMDowMDowMCAy MDE5IikgfCBbNiw3KSAgICAgIHwgWzYsNykKKyBbMTAwLDEwMSkgfCBbIldlZCBKYW4gMDEg MDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwgWzYsNykgICAg ICB8IFs2LDcpCisoMyByb3dzKQorCistLSBub24tRlBPIHVwZGF0ZToKK1VQREFURSB0ZW1w b3JhbF9ybmcyIFNFVCBpZDEgPSAnWzcsN10nIFdIRVJFIGlkMSA9ICdbNiw2XSc7CitTRUxF Q1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7 CisgICAgaWQgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAg ICAgICAgICAgICAgICAgICB8IHBhcmVudF9pZDEgfCBwYXJlbnRfaWQyIAorLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyBbMTAwLDEwMSkgfCBbIlR1ZSBK YW4gMDEgMDA6MDA6MDAgMjAxOSIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwgICAg ICAgICAgICB8IAorIFsxMDAsMTAxKSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4Iiwi VHVlIEphbiAwMSAwMDowMDowMCAyMDE5IikgfCAgICAgICAgICAgIHwgCisgWzEwMCwxMDEp IHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIw MjEiKSB8ICAgICAgICAgICAgfCAKKygzIHJvd3MpCisKKy0tIEZLIGFjcm9zcyB0d28gcmVm ZXJlbmNlZCByb3dzOgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdbOCw4 XScsICdbOCw4XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lO U0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVTICgnWzgsOF0nLCAnWzgsOF0nLCB0c3Jh bmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9mazJfcm5nMnJuZyBWQUxVRVMgKCdbMjAwLDIwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAx JywgJzIwMjEtMDEtMDEnKSwgJ1s4LDhdJywgJ1s4LDhdJyk7CitVUERBVEUgdGVtcG9yYWxf cm5nMiBTRVQgaWQxID0gJ1s5LDldJyBXSEVSRSBpZDEgPSAnWzgsOF0nIEFORCB2YWxpZF9h dCBAPiAnMjAxOS0wMS0wMSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxf ZmsyX3JuZzJybmcgV0hFUkUgaWQgPSAnWzIwMCwyMDBdJzsKKyAgICBpZCAgICAgfCAgICAg ICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwg cGFyZW50X2lkMSB8IHBhcmVudF9pZDIgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLQorIFsyMDAsMjAxKSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4 IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikgfCAgICAgICAgICAgIHwgCisgWzIwMCwy MDEpIHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAw IDIwMjEiKSB8IFs4LDkpICAgICAgfCBbOCw5KQorKDIgcm93cykKKworLS0gY2xlYW4gdXAK K0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkIElOICgnWzEwMCwx MDBdJywgJ1syMDAsMjAwXScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nMiBXSEVSRSBp ZDEgSU4gKCdbNiw2XScsICdbNyw3XScsICdbOCw4XScsICdbOSw5XScpOworLS0gdGVzdCBG SyBwYXJlbnQgZGVsZXRlcyBTRVQgTlVMTCAodHdvIHNjYWxhciBjb2xzKQorSU5TRVJUIElO VE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdbNiw2XScsICdbNiw2XScsIHRzcmFuZ2UoJzIw MTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrMl9y bmcycm5nIFZBTFVFUyAoJ1sxMDAsMTAwXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAy MS0wMS0wMScpLCAnWzYsNl0nLCAnWzYsNl0nKTsKKy0tIGxlZnRvdmVycyBvbiBib3RoIHNp ZGVzOgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nMiBGT1IgUE9SVElPTiBPRiB2YWxpZF9h dCBGUk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgV0hFUkUgaWQxID0gJ1s2LDZd JzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEw MCwxMDBdJzsKKyAgICBpZCAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0 ICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFyZW50X2lkMSB8IHBhcmVudF9pZDIgCist LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorIFsxMDAsMTAxKSB8 IFsiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIw IikgfCAgICAgICAgICAgIHwgCisgWzEwMCwxMDEpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAw IDIwMTgiLCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiKSB8IFs2LDcpICAgICAgfCBbNiw3 KQorIFsxMDAsMTAxKSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAw MSAwMDowMDowMCAyMDIxIikgfCBbNiw3KSAgICAgIHwgWzYsNykKKygzIHJvd3MpCisKKy0t IG5vbi1GUE8gZGVsZXRlOgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nMiBXSEVSRSBpZDEg PSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBp ZCA9ICdbMTAwLDEwMF0nOworICAgIGlkICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAg dmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYXJlbnRfaWQxIHwgcGFyZW50 X2lkMiAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgWzEw MCwxMDEpIHwgWyJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiLCJXZWQgSmFuIDAxIDAwOjAw OjAwIDIwMjAiKSB8ICAgICAgICAgICAgfCAKKyBbMTAwLDEwMSkgfCBbIk1vbiBKYW4gMDEg MDA6MDA6MDAgMjAxOCIsIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIpIHwgICAgICAgICAg ICB8IAorIFsxMDAsMTAxKSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEph biAwMSAwMDowMDowMCAyMDIxIikgfCAgICAgICAgICAgIHwgCisoMyByb3dzKQorCistLSBG SyBhY3Jvc3MgdHdvIHJlZmVyZW5jZWQgcm93czoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3Ju ZzIgVkFMVUVTICgnWzgsOF0nLCAnWzgsOF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIw MjAtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1s4LDhd JywgJ1s4LDhdJywgdHNyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5T RVJUIElOVE8gdGVtcG9yYWxfZmsyX3JuZzJybmcgVkFMVUVTICgnWzIwMCwyMDBdJywgdHNy YW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbOCw4XScsICdbOCw4XScpOwor REVMRVRFIEZST00gdGVtcG9yYWxfcm5nMiBXSEVSRSBpZDEgPSAnWzgsOF0nIEFORCB2YWxp ZF9hdCBAPiAnMjAxOS0wMS0wMSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZST00gdGVtcG9y YWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgPSAnWzIwMCwyMDBdJzsKKyAgICBpZCAgICAgfCAg ICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAg IHwgcGFyZW50X2lkMSB8IHBhcmVudF9pZDIgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLQorIFsyMDAsMjAxKSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAy MDE4IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikgfCAgICAgICAgICAgIHwgCisgWzIw MCwyMDEpIHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAw OjAwIDIwMjEiKSB8IFs4LDkpICAgICAgfCBbOCw5KQorKDIgcm93cykKKworLS0gY2xlYW4g dXAKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkIElOICgnWzEw MCwxMDBdJywgJ1syMDAsMjAwXScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nMiBXSEVS RSBpZDEgSU4gKCdbNiw2XScsICdbNyw3XScsICdbOCw4XScsICdbOSw5XScpOworLS0gdGVz dCBGSyBwYXJlbnQgZGVsZXRlcyBTRVQgTlVMTCAodHdvIHNjYWxhciBjb2xzLCBTRVQgTlVM TCBzdWJzZXQpCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1s2LDZdJywg J1s2LDZdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJU IElOVE8gdGVtcG9yYWxfZmsyX3JuZzJybmcgVkFMVUVTICgnWzEwMCwxMDBdJywgdHNyYW5n ZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbNiw2XScsICdbNiw2XScpOworQUxU RVIgVEFCTEUgdGVtcG9yYWxfZmsyX3JuZzJybmcKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9y YWxfZmsyX3JuZzJybmdfZmssCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmsyX3JuZzJy bmdfZmsKKwkJRk9SRUlHTiBLRVkgKHBhcmVudF9pZDEsIHBhcmVudF9pZDIsIFBFUklPRCB2 YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcyCisJCU9OIERFTEVURSBTRVQg TlVMTCAocGFyZW50X2lkMSkgT04gVVBEQVRFIFNFVCBOVUxMOworLS0gbGVmdG92ZXJzIG9u IGJvdGggc2lkZXM6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcyIEZPUiBQT1JUSU9OIE9G IHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBXSEVSRSBpZDEg PSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBp ZCA9ICdbMTAwLDEwMF0nOworICAgIGlkICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAg dmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYXJlbnRfaWQxIHwgcGFyZW50 X2lkMiAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgWzEw MCwxMDEpIHwgWyJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiLCJXZWQgSmFuIDAxIDAwOjAw OjAwIDIwMjAiKSB8ICAgICAgICAgICAgfCBbNiw3KQorIFsxMDAsMTAxKSB8IFsiTW9uIEph biAwMSAwMDowMDowMCAyMDE4IiwiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IikgfCBbNiw3 KSAgICAgIHwgWzYsNykKKyBbMTAwLDEwMSkgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAy MCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwgWzYsNykgICAgICB8IFs2LDcpCiso MyByb3dzKQorCistLSBub24tRlBPIGRlbGV0ZToKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3Ju ZzIgV0hFUkUgaWQxID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmsyX3Ju ZzJybmcgV0hFUkUgaWQgPSAnWzEwMCwxMDBdJzsKKyAgICBpZCAgICAgfCAgICAgICAgICAg ICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFyZW50 X2lkMSB8IHBhcmVudF9pZDIgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLQorIFsxMDAsMTAxKSB8IFsiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IiwiV2Vk IEphbiAwMSAwMDowMDowMCAyMDIwIikgfCAgICAgICAgICAgIHwgWzYsNykKKyBbMTAwLDEw MSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlR1ZSBKYW4gMDEgMDA6MDA6MDAg MjAxOSIpIHwgICAgICAgICAgICB8IFs2LDcpCisgWzEwMCwxMDEpIHwgWyJXZWQgSmFuIDAx IDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8ICAgICAgICAg ICAgfCBbNiw3KQorKDMgcm93cykKKworLS0gRksgYWNyb3NzIHR3byByZWZlcmVuY2VkIHJv d3M6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1s4LDhdJywgJ1s4LDhd JywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8g dGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdbOCw4XScsICdbOCw4XScsIHRzcmFuZ2UoJzIwMjAt MDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrMl9ybmcy cm5nIFZBTFVFUyAoJ1syMDAsMjAwXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0w MS0wMScpLCAnWzgsOF0nLCAnWzgsOF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZzIg V0hFUkUgaWQxID0gJ1s4LDhdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjp0aW1l c3RhbXA7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0g J1syMDAsMjAwXSc7CisgICAgaWQgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxp ZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9pZDEgfCBwYXJlbnRfaWQy IAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyBbMjAwLDIw MSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIldlZCBKYW4gMDEgMDA6MDA6MDAg MjAyMCIpIHwgICAgICAgICAgICB8IFs4LDkpCisgWzIwMCwyMDEpIHwgWyJXZWQgSmFuIDAx IDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IFs4LDkpICAg ICAgfCBbOCw5KQorKDIgcm93cykKKworLS0gY2xlYW4gdXAKK0RFTEVURSBGUk9NIHRlbXBv cmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkIElOICgnWzEwMCwxMDBdJywgJ1syMDAsMjAwXScp OworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nMiBXSEVSRSBpZDEgSU4gKCdbNiw2XScsICdb Nyw3XScsICdbOCw4XScsICdbOSw5XScpOworLS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRlcyBT RVQgREVGQVVMVCAodHdvIHNjYWxhciBjb2xzKQorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5n MiBWQUxVRVMgKCdbLTEsLTFdJywgJ1stMSwtMV0nLCB0c3JhbmdlKG51bGwsIG51bGwpKTsK K0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVTICgnWzYsNl0nLCAnWzYsNl0nLCB0 c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1w b3JhbF9mazJfcm5nMnJuZyBWQUxVRVMgKCdbMTAwLDEwMF0nLCB0c3JhbmdlKCcyMDE4LTAx LTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s2LDZdJywgJ1s2LDZdJyk7CitBTFRFUiBUQUJMRSB0 ZW1wb3JhbF9mazJfcm5nMnJuZworICBBTFRFUiBDT0xVTU4gcGFyZW50X2lkMSBTRVQgREVG QVVMVCAnWy0xLC0xXScsCisgIEFMVEVSIENPTFVNTiBwYXJlbnRfaWQyIFNFVCBERUZBVUxU ICdbLTEsLTFdJywKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfZmsyX3JuZzJybmdfZmss CisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmsyX3JuZzJybmdfZmsKKwkJRk9SRUlHTiBL RVkgKHBhcmVudF9pZDEsIHBhcmVudF9pZDIsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJF TkNFUyB0ZW1wb3JhbF9ybmcyCisJCU9OIERFTEVURSBTRVQgREVGQVVMVCBPTiBVUERBVEUg U0VUIERFRkFVTFQ7CistLSBsZWZ0b3ZlcnMgb24gYm90aCBzaWRlczoKK1VQREFURSB0ZW1w b3JhbF9ybmcyIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRP ICcyMDIwLTAxLTAxJyBTRVQgaWQxID0gJ1s3LDddJywgaWQyID0gJ1s3LDddJyBXSEVSRSBp ZDEgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVS RSBpZCA9ICdbMTAwLDEwMF0nOworICAgIGlkICAgICB8ICAgICAgICAgICAgICAgICAgICAg ICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYXJlbnRfaWQxIHwgcGFy ZW50X2lkMiAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisg WzEwMCwxMDEpIHwgWyJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiLCJXZWQgSmFuIDAxIDAw OjAwOjAwIDIwMjAiKSB8IFstMSwwKSAgICAgfCBbLTEsMCkKKyBbMTAwLDEwMSkgfCBbIk1v biBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIpIHwg WzYsNykgICAgICB8IFs2LDcpCisgWzEwMCwxMDEpIHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAw IDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IFs2LDcpICAgICAgfCBbNiw3 KQorKDMgcm93cykKKworLS0gbm9uLUZQTyB1cGRhdGU6CitVUERBVEUgdGVtcG9yYWxfcm5n MiBTRVQgaWQxID0gJ1s3LDddJywgaWQyID0gJ1s3LDddJyBXSEVSRSBpZDEgPSAnWzYsNl0n OworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAw LDEwMF0nOworICAgIGlkICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQg ICAgICAgICAgICAgICAgICAgICAgICAgfCBwYXJlbnRfaWQxIHwgcGFyZW50X2lkMiAKKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgWzEwMCwxMDEpIHwg WyJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAi KSB8IFstMSwwKSAgICAgfCBbLTEsMCkKKyBbMTAwLDEwMSkgfCBbIk1vbiBKYW4gMDEgMDA6 MDA6MDAgMjAxOCIsIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIpIHwgWy0xLDApICAgICB8 IFstMSwwKQorIFsxMDAsMTAxKSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJp IEphbiAwMSAwMDowMDowMCAyMDIxIikgfCBbLTEsMCkgICAgIHwgWy0xLDApCisoMyByb3dz KQorCistLSBGSyBhY3Jvc3MgdHdvIHJlZmVyZW5jZWQgcm93czoKK0lOU0VSVCBJTlRPIHRl bXBvcmFsX3JuZzIgVkFMVUVTICgnWzgsOF0nLCAnWzgsOF0nLCB0c3JhbmdlKCcyMDE4LTAx LTAxJywgJzIwMjAtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVF UyAoJ1s4LDhdJywgJ1s4LDhdJywgdHNyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAx JykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmsyX3JuZzJybmcgVkFMVUVTICgnWzIwMCwy MDBdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbOCw4XScsICdb OCw4XScpOworVVBEQVRFIHRlbXBvcmFsX3JuZzIgU0VUIGlkMSA9ICdbOSw5XScsIGlkMiA9 ICdbOSw5XScgV0hFUkUgaWQxID0gJ1s4LDhdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEt MDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdI RVJFIGlkID0gJ1syMDAsMjAwXSc7CisgICAgaWQgICAgIHwgICAgICAgICAgICAgICAgICAg ICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9pZDEgfCBw YXJlbnRfaWQyIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0K KyBbMjAwLDIwMSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIldlZCBKYW4gMDEg MDA6MDA6MDAgMjAyMCIpIHwgWy0xLDApICAgICB8IFstMSwwKQorIFsyMDAsMjAxKSB8IFsi V2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikg fCBbOCw5KSAgICAgIHwgWzgsOSkKKygyIHJvd3MpCisKKy0tIGNsZWFuIHVwCitERUxFVEUg RlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCBJTiAoJ1sxMDAsMTAwXScsICdb MjAwLDIwMF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZzIgV0hFUkUgaWQxIElOICgn WzYsNl0nLCAnWzcsN10nLCAnWzgsOF0nLCAnWzksOV0nKTsKKy0tIHRlc3QgRksgcGFyZW50 IGRlbGV0ZXMgU0VUIERFRkFVTFQgKHR3byBzY2FsYXIgY29scykKK0lOU0VSVCBJTlRPIHRl bXBvcmFsX3JuZzIgVkFMVUVTICgnWzYsNl0nLCAnWzYsNl0nLCB0c3JhbmdlKCcyMDE4LTAx LTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9mazJfcm5nMnJu ZyBWQUxVRVMgKCdbMTAwLDEwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEt MDEnKSwgJ1s2LDZdJywgJ1s2LDZdJyk7CistLSBsZWZ0b3ZlcnMgb24gYm90aCBzaWRlczoK K0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZzIgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJP TSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFdIRVJFIGlkMSA9ICdbNiw2XSc7CitT RUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAw XSc7CisgICAgaWQgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAg ICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9pZDEgfCBwYXJlbnRfaWQyIAorLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyBbMTAwLDEwMSkgfCBbIlR1 ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwg Wy0xLDApICAgICB8IFstMSwwKQorIFsxMDAsMTAxKSB8IFsiTW9uIEphbiAwMSAwMDowMDow MCAyMDE4IiwiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IikgfCBbNiw3KSAgICAgIHwgWzYs NykKKyBbMTAwLDEwMSkgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4g MDEgMDA6MDA6MDAgMjAyMSIpIHwgWzYsNykgICAgICB8IFs2LDcpCisoMyByb3dzKQorCist LSBub24tRlBPIHVwZGF0ZToKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZzIgV0hFUkUgaWQx ID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUg aWQgPSAnWzEwMCwxMDBdJzsKKyAgICBpZCAgICAgfCAgICAgICAgICAgICAgICAgICAgICAg IHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFyZW50X2lkMSB8IHBhcmVu dF9pZDIgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorIFsx MDAsMTAxKSB8IFsiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IiwiV2VkIEphbiAwMSAwMDow MDowMCAyMDIwIikgfCBbLTEsMCkgICAgIHwgWy0xLDApCisgWzEwMCwxMDEpIHwgWyJNb24g SmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiKSB8IFst MSwwKSAgICAgfCBbLTEsMCkKKyBbMTAwLDEwMSkgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAg MjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwgWy0xLDApICAgICB8IFstMSww KQorKDMgcm93cykKKworLS0gRksgYWNyb3NzIHR3byByZWZlcmVuY2VkIHJvd3M6CitJTlNF UlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1s4LDhdJywgJ1s4LDhdJywgdHNyYW5n ZSgnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxf cm5nMiBWQUxVRVMgKCdbOCw4XScsICdbOCw4XScsIHRzcmFuZ2UoJzIwMjAtMDEtMDEnLCAn MjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFZBTFVF UyAoJ1syMDAsMjAwXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAn WzgsOF0nLCAnWzgsOF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZzIgV0hFUkUgaWQx ID0gJ1s4LDhdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjp0aW1lc3RhbXA7CitT RUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1syMDAsMjAw XSc7CisgICAgaWQgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAg ICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9pZDEgfCBwYXJlbnRfaWQyIAorLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyBbMjAwLDIwMSkgfCBbIk1v biBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwg Wy0xLDApICAgICB8IFstMSwwKQorIFsyMDAsMjAxKSB8IFsiV2VkIEphbiAwMSAwMDowMDow MCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgfCBbOCw5KSAgICAgIHwgWzgs OSkKKygyIHJvd3MpCisKKy0tIGNsZWFuIHVwCitERUxFVEUgRlJPTSB0ZW1wb3JhbF9mazJf cm5nMnJuZyBXSEVSRSBpZCBJTiAoJ1sxMDAsMTAwXScsICdbMjAwLDIwMF0nKTsKK0RFTEVU RSBGUk9NIHRlbXBvcmFsX3JuZzIgV0hFUkUgaWQxIElOICgnWzYsNl0nLCAnWzcsN10nLCAn WzgsOF0nLCAnWzksOV0nKTsKKy0tIHRlc3QgRksgcGFyZW50IGRlbGV0ZXMgU0VUIERFRkFV TFQgKHR3byBzY2FsYXIgY29scywgU0VUIERFRkFVTFQgc3Vic2V0KQorSU5TRVJUIElOVE8g dGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdbLTEsLTFdJywgJ1s2LDZdJywgdHNyYW5nZShudWxs LCBudWxsKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1s2LDZdJywg J1s2LDZdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJU IElOVE8gdGVtcG9yYWxfZmsyX3JuZzJybmcgVkFMVUVTICgnWzEwMCwxMDBdJywgdHNyYW5n ZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbNiw2XScsICdbNiw2XScpOworQUxU RVIgVEFCTEUgdGVtcG9yYWxfZmsyX3JuZzJybmcKKyAgQUxURVIgQ09MVU1OIHBhcmVudF9p ZDEgU0VUIERFRkFVTFQgJ1stMSwtMV0nLAorCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9m azJfcm5nMnJuZ19maywKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9mazJfcm5nMnJuZ19m aworCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkMSwgcGFyZW50X2lkMiwgUEVSSU9EIHZhbGlk X2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZzIKKwkJT04gREVMRVRFIFNFVCBERUZB VUxUIChwYXJlbnRfaWQxKSBPTiBVUERBVEUgU0VUIERFRkFVTFQ7CistLSBsZWZ0b3ZlcnMg b24gYm90aCBzaWRlczoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZzIgRk9SIFBPUlRJT04g T0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFdIRVJFIGlk MSA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJF IGlkID0gJ1sxMDAsMTAwXSc7CisgICAgaWQgICAgIHwgICAgICAgICAgICAgICAgICAgICAg ICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9pZDEgfCBwYXJl bnRfaWQyIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyBb MTAwLDEwMSkgfCBbIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIsIldlZCBKYW4gMDEgMDA6 MDA6MDAgMjAyMCIpIHwgWy0xLDApICAgICB8IFs2LDcpCisgWzEwMCwxMDEpIHwgWyJNb24g SmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiKSB8IFs2 LDcpICAgICAgfCBbNiw3KQorIFsxMDAsMTAxKSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAy MDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgfCBbNiw3KSAgICAgIHwgWzYsNykK KygzIHJvd3MpCisKKy0tIG5vbi1GUE8gdXBkYXRlOgorREVMRVRFIEZST00gdGVtcG9yYWxf cm5nMiBXSEVSRSBpZDEgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9mazJf cm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworICAgIGlkICAgICB8ICAgICAgICAg ICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYXJl bnRfaWQxIHwgcGFyZW50X2lkMiAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tCisgWzEwMCwxMDEpIHwgWyJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiLCJX ZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8IFstMSwwKSAgICAgfCBbNiw3KQorIFsxMDAs MTAxKSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVHVlIEphbiAwMSAwMDowMDow MCAyMDE5IikgfCBbLTEsMCkgICAgIHwgWzYsNykKKyBbMTAwLDEwMSkgfCBbIldlZCBKYW4g MDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwgWy0xLDAp ICAgICB8IFs2LDcpCisoMyByb3dzKQorCistLSBGSyBhY3Jvc3MgdHdvIHJlZmVyZW5jZWQg cm93czoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVTICgnWzgsOF0nLCAnWzgs OF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEnKSk7CitJTlNFUlQgSU5U TyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1s4LDhdJywgJ1s4LDhdJywgdHNyYW5nZSgnMjAy MC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMiBW QUxVRVMgKCdbLTEsLTFdJywgJ1s4LDhdJywgdHNyYW5nZShudWxsLCBudWxsKSk7CitJTlNF UlQgSU5UTyB0ZW1wb3JhbF9mazJfcm5nMnJuZyBWQUxVRVMgKCdbMjAwLDIwMF0nLCB0c3Jh bmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s4LDhdJywgJ1s4LDhdJyk7CitE RUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcyIFdIRVJFIGlkMSA9ICdbOCw4XScgQU5EIHZhbGlk X2F0IEA+ICcyMDE5LTAxLTAxJzo6dGltZXN0YW1wOworU0VMRUNUICogRlJPTSB0ZW1wb3Jh bF9mazJfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMjAwLDIwMF0nOworICAgIGlkICAgICB8ICAg ICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAg fCBwYXJlbnRfaWQxIHwgcGFyZW50X2lkMiAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tCisgWzIwMCwyMDEpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIw MTgiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8IFstMSwwKSAgICAgfCBbOCw5KQor IFsyMDAsMjAxKSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAw MDowMDowMCAyMDIxIikgfCBbOCw5KSAgICAgIHwgWzgsOSkKKygyIHJvd3MpCisKKy0tIGNs ZWFuIHVwCitERUxFVEUgRlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCBJTiAo J1sxMDAsMTAwXScsICdbMjAwLDIwMF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZzIg V0hFUkUgaWQxIElOICgnWzYsNl0nLCAnWzcsN10nLCAnWzgsOF0nLCAnWzksOV0nKTsKKy0t IEZLIHdpdGggYSBjdXN0b20gcmFuZ2UgdHlwZQorQ1JFQVRFIFRZUEUgbXlkYXRlcmFuZ2Ug QVMgcmFuZ2Uoc3VidHlwZT1kYXRlKTsKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ybmczICgK KwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgbXlkYXRlcmFuZ2UsCisJQ09OU1RSQUlOVCB0 ZW1wb3JhbF9ybmczX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVS TEFQUykKKyk7CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfZmszX3JuZzJybmcgKAorCWlkIGlu dDRyYW5nZSwKKwl2YWxpZF9hdCBteWRhdGVyYW5nZSwKKwlwYXJlbnRfaWQgaW50NHJhbmdl LAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmszX3JuZzJybmdfcGsgUFJJTUFSWSBLRVkgKGlk LCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2Zr M19ybmcycm5nX2ZrIEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkK KwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmczIChpZCwgUEVSSU9EIHZhbGlkX2F0KSBPTiBE RUxFVEUgQ0FTQ0FERQorKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzMgVkFMVUVTICgn WzgsOF0nLCBteWRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5T RVJUIElOVE8gdGVtcG9yYWxfZmszX3JuZzJybmcgVkFMVUVTICgnWzUsNV0nLCBteWRhdGVy YW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbOCw4XScpOworREVMRVRFIEZS T00gdGVtcG9yYWxfcm5nMyBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAx LTAxJyBUTyAnMjAyMC0wMS0wMScgV0hFUkUgaWQgPSAnWzgsOF0nOworU0VMRUNUICogRlJP TSB0ZW1wb3JhbF9mazNfcm5nMnJuZyBXSEVSRSBpZCA9ICdbNSw1XSc7CisgIGlkICAgfCAg ICAgICAgdmFsaWRfYXQgICAgICAgICB8IHBhcmVudF9pZCAKKy0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFs1LDYpIHwgWzAxLTAxLTIwMTgsMDEt MDEtMjAxOSkgfCBbOCw5KQorIFs1LDYpIHwgWzAxLTAxLTIwMjAsMDEtMDEtMjAyMSkgfCBb OCw5KQorKDIgcm93cykKKworRFJPUCBUQUJMRSB0ZW1wb3JhbF9mazNfcm5nMnJuZzsKK0RS T1AgVEFCTEUgdGVtcG9yYWxfcm5nMzsKK0RST1AgVFlQRSBteWRhdGVyYW5nZTsKIC0tIEZL IGJldHdlZW4gcGFydGl0aW9uZWQgdGFibGVzCiBDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcGFy dGl0aW9uZWRfcm5nICgKIAlpZCBpbnQ0cmFuZ2UsCkBAIC05MDYsOCArMTQ5NSw4IEBAIENS RUFURSBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgKAogICBuYW1lIHRleHQsCiAJ Q09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJpdGlvbmVkX3JuZ19wayBQUklNQVJZIEtFWSAoaWQs IHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCiApIFBBUlRJVElPTiBCWSBMSVNUIChpZCk7 Ci1DUkVBVEUgVEFCTEUgdHAxIHBhcnRpdGlvbiBPRiB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9y bmcgRk9SIFZBTFVFUyBJTiAoJ1sxLDFdJywgJ1szLDNdJywgJ1s1LDVdJywgJ1s3LDddJywg J1s5LDldJywgJ1sxMSwxMV0nKTsKLUNSRUFURSBUQUJMRSB0cDIgcGFydGl0aW9uIE9GIHRl bXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBGT1IgVkFMVUVTIElOICgnWzIsMl0nLCAnWzQsNF0n LCAnWzYsNl0nLCAnWzgsOF0nLCAnWzEwLDEwXScsICdbMTIsMTJdJyk7CitDUkVBVEUgVEFC TEUgdHAxIHBhcnRpdGlvbiBPRiB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgRk9SIFZBTFVF UyBJTiAoJ1sxLDFdJywgJ1szLDNdJywgJ1s1LDVdJywgJ1s3LDddJywgJ1s5LDldJywgJ1sx MSwxMV0nLCAnWzEzLDEzXScsICdbMTUsMTVdJywgJ1sxNywxN10nLCAnWzE5LDE5XScsICdb MjEsMjFdJywgJ1syMywyM10nKTsKK0NSRUFURSBUQUJMRSB0cDIgcGFydGl0aW9uIE9GIHRl bXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBGT1IgVkFMVUVTIElOICgnWzAsMF0nLCAnWzIsMl0n LCAnWzQsNF0nLCAnWzYsNl0nLCAnWzgsOF0nLCAnWzEwLDEwXScsICdbMTIsMTJdJywgJ1sx NCwxNF0nLCAnWzE2LDE2XScsICdbMTgsMThdJywgJ1syMCwyMF0nLCAnWzIyLDIyXScsICdb MjQsMjRdJyk7CiBJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVT CiAgICgnWzEsMV0nLCBkYXRlcmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAwMC0wMi0wMScpLCAn b25lJyksCiAgICgnWzEsMV0nLCBkYXRlcmFuZ2UoJzIwMDAtMDItMDEnLCAnMjAwMC0wMy0w MScpLCAnb25lJyksCkBAIC05MjAsOCArMTUwOSw4IEBAIENSRUFURSBUQUJMRSB0ZW1wb3Jh bF9wYXJ0aXRpb25lZF9ma19ybmcycm5nICgKIAlDT05TVFJBSU5UIHRlbXBvcmFsX3BhcnRp dGlvbmVkX2ZrX3JuZzJybmdfZmsgRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZh bGlkX2F0KQogCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyAoaWQsIFBF UklPRCB2YWxpZF9hdCkKICkgUEFSVElUSU9OIEJZIExJU1QgKGlkKTsKLUNSRUFURSBUQUJM RSB0ZmtwMSBwYXJ0aXRpb24gT0YgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBG T1IgVkFMVUVTIElOICgnWzEsMV0nLCAnWzMsM10nLCAnWzUsNV0nLCAnWzcsN10nLCAnWzks OV0nLCAnWzExLDExXScpOwotQ1JFQVRFIFRBQkxFIHRma3AyIHBhcnRpdGlvbiBPRiB0ZW1w b3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIEZPUiBWQUxVRVMgSU4gKCdbMiwyXScsICdb NCw0XScsICdbNiw2XScsICdbOCw4XScsICdbMTAsMTBdJywgJ1sxMiwxMl0nKTsKK0NSRUFU RSBUQUJMRSB0ZmtwMSBwYXJ0aXRpb24gT0YgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5n MnJuZyBGT1IgVkFMVUVTIElOICgnWzEsMV0nLCAnWzMsM10nLCAnWzUsNV0nLCAnWzcsN10n LCAnWzksOV0nLCAnWzExLDExXScsICdbMTMsMTNdJywgJ1sxNSwxNV0nLCAnWzE3LDE3XScs ICdbMTksMTldJywgJ1syMSwyMV0nLCAnWzIzLDIzXScpOworQ1JFQVRFIFRBQkxFIHRma3Ay IHBhcnRpdGlvbiBPRiB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIEZPUiBWQUxV RVMgSU4gKCdbMCwwXScsICdbMiwyXScsICdbNCw0XScsICdbNiw2XScsICdbOCw4XScsICdb MTAsMTBdJywgJ1sxMiwxMl0nLCAnWzE0LDE0XScsICdbMTYsMTZdJywgJ1sxOCwxOF0nLCAn WzIwLDIwXScsICdbMjIsMjJdJywgJ1syNCwyNF0nKTsKIC0tIHBhcnRpdGlvbmVkIEZLIGNo aWxkIGluc2VydHMKIElOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJy bmcgVkFMVUVTCiAgICgnWzEsMV0nLCBkYXRlcmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAwMC0w Mi0xNScpLCAnWzEsMV0nKSwKQEAgLTk1Niw3ICsxNTQ1LDcgQEAgVVBEQVRFIHRlbXBvcmFs X3BhcnRpdGlvbmVkX3JuZyBTRVQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTYtMDItMDEn LCAnMjAxNi0wMy0KIC0tIHNob3VsZCBmYWlsOgogVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlv bmVkX3JuZyBTRVQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTYtMDEtMDEnLCAnMjAxNi0w Mi0wMScpCiAgIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRlcmFuZ2Uo JzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOwotRVJST1I6ICB1cGRhdGUgb3IgZGVsZXRl IG9uIHRhYmxlICJ0cDEiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBv cmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfcGFyZW50X2lkX2ZrZXkiIG9uIHRhYmxlICJ0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIgorRVJST1I6ICB1cGRhdGUgb3IgZGVs ZXRlIG9uIHRhYmxlICJ0cDEiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRl bXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfcGFyZW50X2lkX2ZrZXkxIiBvbiB0YWJs ZSAidGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyIKIERFVEFJTDogIEtleSAoaWQs IHZhbGlkX2F0KT0oWzUsNiksIFswMS0wMS0yMDE4LDAyLTAxLTIwMTgpKSBpcyBzdGlsbCBy ZWZlcmVuY2VkIGZyb20gdGFibGUgInRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmci LgogLS0gY2xlYW4gdXA6CiBERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19y bmcycm5nIFdIRVJFIHBhcmVudF9pZCA9ICdbNSw1XSc7CkBAIC05NjgsNyArMTU1Nyw3IEBA IElOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgn WzMsM10nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtCiBERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IGRhdGVyYW5n ZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJyk7CiAtLSBzaG91bGQgZmFpbDoKIERFTEVU RSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBXSEVSRSBpZCA9ICdbNSw1XScgQU5E IHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKLUVS Uk9SOiAgdXBkYXRlIG9yIGRlbGV0ZSBvbiB0YWJsZSAidHAxIiB2aW9sYXRlcyBmb3JlaWdu IGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX3BhcmVu dF9pZF9ma2V5IiBvbiB0YWJsZSAidGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyIK K0VSUk9SOiAgdXBkYXRlIG9yIGRlbGV0ZSBvbiB0YWJsZSAidHAxIiB2aW9sYXRlcyBmb3Jl aWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX3Bh cmVudF9pZF9ma2V5MSIgb24gdGFibGUgInRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJy bmciCiBERVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9hdCk9KFs1LDYpLCBbMDEtMDEtMjAxOCww Mi0wMS0yMDE4KSkgaXMgc3RpbGwgcmVmZXJlbmNlZCBmcm9tIHRhYmxlICJ0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ma19ybmcycm5nIi4KIC0tIGNsZWFuIHVwOgogREVMRVRFIEZST00gdGVt cG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBwYXJlbnRfaWQgPSAnWzUsNV0n OwpAQCAtOTkwLDcgKzE1NzksNyBAQCBVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5n IFNFVCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAxNi0wMi0wMScsICcyMDE2LTAzLQogLS0g c2hvdWxkIGZhaWw6CiBVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFNFVCB2YWxp ZF9hdCA9IGRhdGVyYW5nZSgnMjAxNi0wMS0wMScsICcyMDE2LTAyLTAxJykKICAgV0hFUkUg aWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcy MDE4LTAyLTAxJyk7Ci1FUlJPUjogIHVwZGF0ZSBvciBkZWxldGUgb24gdGFibGUgInRwMSIg dmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxfcGFydGl0aW9uZWRf Zmtfcm5nMnJuZ19wYXJlbnRfaWRfZmtleSIgb24gdGFibGUgInRlbXBvcmFsX3BhcnRpdGlv bmVkX2ZrX3JuZzJybmciCitFUlJPUjogIHVwZGF0ZSBvciBkZWxldGUgb24gdGFibGUgInRw MSIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxfcGFydGl0aW9u ZWRfZmtfcm5nMnJuZ19wYXJlbnRfaWRfZmtleTEiIG9uIHRhYmxlICJ0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ma19ybmcycm5nIgogREVUQUlMOiAgS2V5IChpZCwgdmFsaWRfYXQpPShbNSw2 KSwgWzAxLTAxLTIwMTgsMDItMDEtMjAxOCkpIGlzIHN0aWxsIHJlZmVyZW5jZWQgZnJvbSB0 YWJsZSAidGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyIuCiAtLSBjbGVhbiB1cDoK IERFTEVURSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgcGFy ZW50X2lkID0gJ1s1LDVdJzsKQEAgLTEwMDIsMzUgKzE1OTEsMjE0IEBAIElOU0VSVCBJTlRP IHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzMsM10nLCBkYXRl cmFuZ2UoJzIwMTgtMDEtCiBERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcg V0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAxOC0wMi0w MScsICcyMDE4LTAzLTAxJyk7CiAtLSBzaG91bGQgZmFpbDoKIERFTEVURSBGUk9NIHRlbXBv cmFsX3BhcnRpdGlvbmVkX3JuZyBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0g ZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKLUVSUk9SOiAgdXBkYXRl IG9yIGRlbGV0ZSBvbiB0YWJsZSAidHAxIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJh aW50ICJ0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX3BhcmVudF9pZF9ma2V5IiBv biB0YWJsZSAidGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyIKK0VSUk9SOiAgdXBk YXRlIG9yIGRlbGV0ZSBvbiB0YWJsZSAidHAxIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25z dHJhaW50ICJ0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX3BhcmVudF9pZF9ma2V5 MSIgb24gdGFibGUgInRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmciCiBERVRBSUw6 ICBLZXkgKGlkLCB2YWxpZF9hdCk9KFs1LDYpLCBbMDEtMDEtMjAxOCwwMi0wMS0yMDE4KSkg aXMgc3RpbGwgcmVmZXJlbmNlZCBmcm9tIHRhYmxlICJ0ZW1wb3JhbF9wYXJ0aXRpb25lZF9m a19ybmcycm5nIi4KIC0tIHBhcnRpdGlvbmVkIEZLIHBhcmVudCB1cGRhdGVzIENBU0NBREUK K0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbNiw2XScs IGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8g dGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdbNCw0XScsIGRhdGVy YW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbNiw2XScpOwogQUxURVIgVEFC TEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZwogCURST1AgQ09OU1RSQUlOVCB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX2ZrLAogCUFERCBDT05TVFJBSU5UIHRl bXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfZmsKIAkJRk9SRUlHTiBLRVkgKHBhcmVu dF9pZCwgUEVSSU9EIHZhbGlkX2F0KQogCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3BhcnRpdGlv bmVkX3JuZwogCQlPTiBERUxFVEUgQ0FTQ0FERSBPTiBVUERBVEUgQ0FTQ0FERTsKLUVSUk9S OiAgYWN0aW9uIG5vdCBzdXBwb3J0ZWQgZm9yIHRlbXBvcmFsIGZvcmVpZ24ga2V5cworVVBE QVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBG Uk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgU0VUIGlkID0gJ1s3LDddJyBXSEVS RSBpZCA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2Zr X3JuZzJybmcgV0hFUkUgaWQgPSAnWzQsNF0nOworICBpZCAgIHwgICAgICAgIHZhbGlkX2F0 ICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0KKyBbNCw1KSB8IFswMS0wMS0yMDE5LDAxLTAxLTIwMjApIHwgWzcs OCkKKyBbNCw1KSB8IFswMS0wMS0yMDE4LDAxLTAxLTIwMTkpIHwgWzYsNykKKyBbNCw1KSB8 IFswMS0wMS0yMDIwLDAxLTAxLTIwMjEpIHwgWzYsNykKKygzIHJvd3MpCisKK1VQREFURSB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgU0VUIGlkID0gJ1s3LDddJyBXSEVSRSBpZCA9ICdb Niw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcg V0hFUkUgaWQgPSAnWzQsNF0nOworICBpZCAgIHwgICAgICAgIHZhbGlkX2F0ICAgICAgICAg fCBwYXJlbnRfaWQgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0KKyBbNCw1KSB8IFswMS0wMS0yMDE5LDAxLTAxLTIwMjApIHwgWzcsOCkKKyBbNCw1 KSB8IFswMS0wMS0yMDE4LDAxLTAxLTIwMTkpIHwgWzcsOCkKKyBbNCw1KSB8IFswMS0wMS0y MDIwLDAxLTAxLTIwMjEpIHwgWzcsOCkKKygzIHJvd3MpCisKK0lOU0VSVCBJTlRPIHRlbXBv cmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbMTUsMTVdJywgZGF0ZXJhbmdlKCcyMDE4 LTAxLTAxJywgJzIwMjAtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRp b25lZF9ybmcgVkFMVUVTICgnWzE1LDE1XScsIGRhdGVyYW5nZSgnMjAyMC0wMS0wMScsICcy MDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5n MnJuZyBWQUxVRVMgKCdbMTAsMTBdJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEt MDEtMDEnKSwgJ1sxNSwxNV0nKTsKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcg U0VUIGlkID0gJ1sxNiwxNl0nIFdIRVJFIGlkID0gJ1sxNSwxNV0nIEFORCB2YWxpZF9hdCBA PiAnMjAxOS0wMS0wMSc6OmRhdGU7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlv bmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwLDEwXSc7CisgICBpZCAgICB8ICAgICAg ICB2YWxpZF9hdCAgICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbMTAsMTEpIHwgWzAxLTAxLTIwMTgsMDEt MDEtMjAyMCkgfCBbMTYsMTcpCisgWzEwLDExKSB8IFswMS0wMS0yMDIwLDAxLTAxLTIwMjEp IHwgWzE1LDE2KQorKDIgcm93cykKKwogLS0gcGFydGl0aW9uZWQgRksgcGFyZW50IGRlbGV0 ZXMgQ0FTQ0FERQorSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVF UyAoJ1s4LDhdJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1s1 LDVdJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s4LDhdJyk7 CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgRk9SIFBPUlRJT04gT0Yg dmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFdIRVJFIGlkID0g J1s4LDhdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJu ZyBXSEVSRSBpZCA9ICdbNSw1XSc7CisgIGlkICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAg ICB8IHBhcmVudF9pZCAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLQorIFs1LDYpIHwgWzAxLTAxLTIwMTgsMDEtMDEtMjAxOSkgfCBbOCw5KQorIFs1 LDYpIHwgWzAxLTAxLTIwMjAsMDEtMDEtMjAyMSkgfCBbOCw5KQorKDIgcm93cykKKworREVM RVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFdIRVJFIGlkID0gJ1s4LDhdJzsK K1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBp ZCA9ICdbNSw1XSc7CisgaWQgfCB2YWxpZF9hdCB8IHBhcmVudF9pZCAKKy0tLS0rLS0tLS0t LS0tLSstLS0tLS0tLS0tLQorKDAgcm93cykKKworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFy dGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1sxNywxN10nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEn LCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3Ju ZyBWQUxVRVMgKCdbMTcsMTddJywgZGF0ZXJhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEt MDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZB TFVFUyAoJ1sxMSwxMV0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScp LCAnWzE3LDE3XScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFdI RVJFIGlkID0gJ1sxNywxN10nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6OmRhdGU7 CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUg aWQgPSAnWzExLDExXSc7CisgICBpZCAgICB8ICAgICAgICB2YWxpZF9hdCAgICAgICAgIHwg cGFyZW50X2lkIAorLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0KKyBbMTEsMTIpIHwgWzAxLTAxLTIwMjAsMDEtMDEtMjAyMSkgfCBbMTcsMTgpCiso MSByb3cpCisKIC0tIHBhcnRpdGlvbmVkIEZLIHBhcmVudCB1cGRhdGVzIFNFVCBOVUxMCitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzksOV0nLCBk YXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRl bXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzYsNl0nLCBkYXRlcmFu Z2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzksOV0nKTsKIEFMVEVSIFRBQkxF IHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcKIAlEUk9QIENPTlNUUkFJTlQgdGVt cG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19maywKIAlBREQgQ09OU1RSQUlOVCB0ZW1w b3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX2ZrCiAJCUZPUkVJR04gS0VZIChwYXJlbnRf aWQsIFBFUklPRCB2YWxpZF9hdCkKIAkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9wYXJ0aXRpb25l ZF9ybmcKIAkJT04gREVMRVRFIFNFVCBOVUxMIE9OIFVQREFURSBTRVQgTlVMTDsKLUVSUk9S OiAgYWN0aW9uIG5vdCBzdXBwb3J0ZWQgZm9yIHRlbXBvcmFsIGZvcmVpZ24ga2V5cworVVBE QVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBG Uk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgU0VUIGlkID0gJ1sxMCwxMF0nIFdI RVJFIGlkID0gJ1s5LDldJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRf Zmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbNiw2XSc7CisgIGlkICAgfCAgICAgICAgdmFsaWRf YXQgICAgICAgICB8IHBhcmVudF9pZCAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLQorIFs2LDcpIHwgWzAxLTAxLTIwMTksMDEtMDEtMjAyMCkgfCAK KyBbNiw3KSB8IFswMS0wMS0yMDE4LDAxLTAxLTIwMTkpIHwgWzksMTApCisgWzYsNykgfCBb MDEtMDEtMjAyMCwwMS0wMS0yMDIxKSB8IFs5LDEwKQorKDMgcm93cykKKworVVBEQVRFIHRl bXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBTRVQgaWQgPSAnWzEwLDEwXScgV0hFUkUgaWQgPSAn WzksOV0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5n IFdIRVJFIGlkID0gJ1s2LDZdJzsKKyAgaWQgICB8ICAgICAgICB2YWxpZF9hdCAgICAgICAg IHwgcGFyZW50X2lkIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tCisgWzYsNykgfCBbMDEtMDEtMjAxOSwwMS0wMS0yMDIwKSB8IAorIFs2LDcpIHwg WzAxLTAxLTIwMTgsMDEtMDEtMjAxOSkgfCAKKyBbNiw3KSB8IFswMS0wMS0yMDIwLDAxLTAx LTIwMjEpIHwgCisoMyByb3dzKQorCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25l ZF9ybmcgVkFMVUVTICgnWzE4LDE4XScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIw LTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVF UyAoJ1sxOCwxOF0nLCBkYXRlcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsK K0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgn WzEyLDEyXScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbMTgs MThdJyk7CitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFNFVCBpZCA9ICdbMTks MTldJyBXSEVSRSBpZCA9ICdbMTgsMThdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEn OjpkYXRlOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5n IFdIRVJFIGlkID0gJ1sxMiwxMl0nOworICAgaWQgICAgfCAgICAgICAgdmFsaWRfYXQgICAg ICAgICB8IHBhcmVudF9pZCAKKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tCisgWzEyLDEzKSB8IFswMS0wMS0yMDE4LDAxLTAxLTIwMjApIHwgCisg WzEyLDEzKSB8IFswMS0wMS0yMDIwLDAxLTAxLTIwMjEpIHwgWzE4LDE5KQorKDIgcm93cykK KwogLS0gcGFydGl0aW9uZWQgRksgcGFyZW50IGRlbGV0ZXMgU0VUIE5VTEwKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbMTEsMTFdJywgZGF0ZXJh bmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1s3LDddJywgZGF0ZXJhbmdlKCcy MDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1sxMSwxMV0nKTsKK0RFTEVURSBGUk9NIHRl bXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcy MDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgV0hFUkUgaWQgPSAnWzExLDExXSc7CitTRUxF Q1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAn WzcsN10nOworICBpZCAgIHwgICAgICAgIHZhbGlkX2F0ICAgICAgICAgfCBwYXJlbnRfaWQg CistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbNyw4 KSB8IFswMS0wMS0yMDE5LDAxLTAxLTIwMjApIHwgCisgWzcsOCkgfCBbMDEtMDEtMjAxOCww MS0wMS0yMDE5KSB8IFsxMSwxMikKKyBbNyw4KSB8IFswMS0wMS0yMDIwLDAxLTAxLTIwMjEp IHwgWzExLDEyKQorKDMgcm93cykKKworREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9u ZWRfcm5nIFdIRVJFIGlkID0gJ1sxMSwxMV0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1s3LDddJzsKKyAgaWQgICB8ICAg ICAgICB2YWxpZF9hdCAgICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzcsOCkgfCBbMDEtMDEtMjAxOSwwMS0w MS0yMDIwKSB8IAorIFs3LDgpIHwgWzAxLTAxLTIwMTgsMDEtMDEtMjAxOSkgfCAKKyBbNyw4 KSB8IFswMS0wMS0yMDIwLDAxLTAxLTIwMjEpIHwgCisoMyByb3dzKQorCitJTlNFUlQgSU5U TyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzIwLDIwXScsIGRhdGVyYW5n ZSgnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxf cGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1syMCwyMF0nLCBkYXRlcmFuZ2UoJzIwMjAtMDEt MDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVk X2ZrX3JuZzJybmcgVkFMVUVTICgnWzEzLDEzXScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScs ICcyMDIxLTAxLTAxJyksICdbMjAsMjBdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ybmcgV0hFUkUgaWQgPSAnWzIwLDIwXScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5 LTAxLTAxJzo6ZGF0ZTsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtf cm5nMnJuZyBXSEVSRSBpZCA9ICdbMTMsMTNdJzsKKyAgIGlkICAgIHwgICAgICAgIHZhbGlk X2F0ICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLQorIFsxMywxNCkgfCBbMDEtMDEtMjAxOCwwMS0wMS0yMDIw KSB8IAorIFsxMywxNCkgfCBbMDEtMDEtMjAyMCwwMS0wMS0yMDIxKSB8IFsyMCwyMSkKKygy IHJvd3MpCisKIC0tIHBhcnRpdGlvbmVkIEZLIHBhcmVudCB1cGRhdGVzIFNFVCBERUZBVUxU CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzAsMF0n LCBkYXRlcmFuZ2UobnVsbCwgbnVsbCkpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0 aW9uZWRfcm5nIFZBTFVFUyAoJ1sxMiwxMl0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAn MjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3Ju ZzJybmcgVkFMVUVTICgnWzgsOF0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0w MS0wMScpLCAnWzEyLDEyXScpOwogQUxURVIgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRf Zmtfcm5nMnJuZwotICBBTFRFUiBDT0xVTU4gcGFyZW50X2lkIFNFVCBERUZBVUxUICdbLTEs LTFdJywKKyAgQUxURVIgQ09MVU1OIHBhcmVudF9pZCBTRVQgREVGQVVMVCAnWzAsMF0nLAog CURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX2ZrLAog CUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfZmsKIAkJ Rk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQogCQlSRUZFUkVOQ0VT IHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZwogCQlPTiBERUxFVEUgU0VUIERFRkFVTFQgT04g VVBEQVRFIFNFVCBERUZBVUxUOwotRVJST1I6ICBhY3Rpb24gbm90IHN1cHBvcnRlZCBmb3Ig dGVtcG9yYWwgZm9yZWlnbiBrZXlzCitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5n IEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAx LTAxJyBTRVQgaWQgPSAnWzEzLDEzXScgV0hFUkUgaWQgPSAnWzEyLDEyXSc7CitTRUxFQ1Qg KiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzgs OF0nOworICBpZCAgIHwgICAgICAgIHZhbGlkX2F0ICAgICAgICAgfCBwYXJlbnRfaWQgCist LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbOCw5KSB8 IFswMS0wMS0yMDE5LDAxLTAxLTIwMjApIHwgWzAsMSkKKyBbOCw5KSB8IFswMS0wMS0yMDE4 LDAxLTAxLTIwMTkpIHwgWzEyLDEzKQorIFs4LDkpIHwgWzAxLTAxLTIwMjAsMDEtMDEtMjAy MSkgfCBbMTIsMTMpCisoMyByb3dzKQorCitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWRf cm5nIFNFVCBpZCA9ICdbMTMsMTNdJyBXSEVSRSBpZCA9ICdbMTIsMTJdJzsKK1NFTEVDVCAq IEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbOCw4 XSc7CisgIGlkICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8IHBhcmVudF9pZCAKKy0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFs4LDkpIHwg WzAxLTAxLTIwMTksMDEtMDEtMjAyMCkgfCBbMCwxKQorIFs4LDkpIHwgWzAxLTAxLTIwMTgs MDEtMDEtMjAxOSkgfCBbMCwxKQorIFs4LDkpIHwgWzAxLTAxLTIwMjAsMDEtMDEtMjAyMSkg fCBbMCwxKQorKDMgcm93cykKKworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRf cm5nIFZBTFVFUyAoJ1syMiwyMl0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0w MS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMg KCdbMjIsMjJdJywgZGF0ZXJhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1sx NCwxNF0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzIyLDIy XScpOworVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBTRVQgaWQgPSAnWzIzLDIz XScgV0hFUkUgaWQgPSAnWzIyLDIyXScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6 ZGF0ZTsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBX SEVSRSBpZCA9ICdbMTQsMTRdJzsKKyAgIGlkICAgIHwgICAgICAgIHZhbGlkX2F0ICAgICAg ICAgfCBwYXJlbnRfaWQgCistLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLQorIFsxNCwxNSkgfCBbMDEtMDEtMjAxOCwwMS0wMS0yMDIwKSB8IFswLDEp CisgWzE0LDE1KSB8IFswMS0wMS0yMDIwLDAxLTAxLTIwMjEpIHwgWzIyLDIzKQorKDIgcm93 cykKKwogLS0gcGFydGl0aW9uZWQgRksgcGFyZW50IGRlbGV0ZXMgU0VUIERFRkFVTFQKK0lO U0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbMTQsMTRdJywg ZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1s5LDldJywgZGF0ZXJh bmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1sxNCwxNF0nKTsKK0RFTEVURSBG Uk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBG Uk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgV0hFUkUgaWQgPSAnWzE0LDE0XSc7 CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUg aWQgPSAnWzksOV0nOworICAgaWQgICB8ICAgICAgICB2YWxpZF9hdCAgICAgICAgIHwgcGFy ZW50X2lkIAorLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LQorIFs5LDEwKSB8IFswMS0wMS0yMDE5LDAxLTAxLTIwMjApIHwgWzAsMSkKKyBbOSwxMCkg fCBbMDEtMDEtMjAxOCwwMS0wMS0yMDE5KSB8IFsxNCwxNSkKKyBbOSwxMCkgfCBbMDEtMDEt MjAyMCwwMS0wMS0yMDIxKSB8IFsxNCwxNSkKKygzIHJvd3MpCisKK0RFTEVURSBGUk9NIHRl bXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBXSEVSRSBpZCA9ICdbMTQsMTRdJzsKK1NFTEVDVCAq IEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbOSw5 XSc7CisgICBpZCAgIHwgICAgICAgIHZhbGlkX2F0ICAgICAgICAgfCBwYXJlbnRfaWQgCist LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzksMTAp IHwgWzAxLTAxLTIwMTksMDEtMDEtMjAyMCkgfCBbMCwxKQorIFs5LDEwKSB8IFswMS0wMS0y MDE4LDAxLTAxLTIwMTkpIHwgWzAsMSkKKyBbOSwxMCkgfCBbMDEtMDEtMjAyMCwwMS0wMS0y MDIxKSB8IFswLDEpCisoMyByb3dzKQorCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRp b25lZF9ybmcgVkFMVUVTICgnWzI0LDI0XScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcy MDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZB TFVFUyAoJ1syNCwyNF0nLCBkYXRlcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScp KTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVT ICgnWzE1LDE1XScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdb MjQsMjRdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgV0hFUkUg aWQgPSAnWzI0LDI0XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6ZGF0ZTsKK1NF TEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9 ICdbMTUsMTVdJzsKKyAgIGlkICAgIHwgICAgICAgIHZhbGlkX2F0ICAgICAgICAgfCBwYXJl bnRfaWQgCistLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LQorIFsxNSwxNikgfCBbMDEtMDEtMjAxOCwwMS0wMS0yMDIwKSB8IFswLDEpCisgWzE1LDE2 KSB8IFswMS0wMS0yMDIwLDAxLTAxLTIwMjEpIHwgWzI0LDI1KQorKDIgcm93cykKKwogRFJP UCBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nOwogRFJPUCBUQUJMRSB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmc7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNz L3NxbC93aXRob3V0X292ZXJsYXBzLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3dpdGhv dXRfb3ZlcmxhcHMuc3FsCmluZGV4IDQ2MDMzNjJjNTAuLjc5MTM1ZjM5YjYgMTAwNjQ0Ci0t LSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3dpdGhvdXRfb3ZlcmxhcHMuc3FsCisrKyBiL3Ny Yy90ZXN0L3JlZ3Jlc3Mvc3FsL3dpdGhvdXRfb3ZlcmxhcHMuc3FsCkBAIC02ODAsMzEgKzY4 MCwxMTQgQEAgREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkIElOICgnWzUsNV0n KTsKIC0tCiAtLSB0ZXN0IE9OIFVQREFURS9ERUxFVEUgb3B0aW9ucwogLS0KKy0tIFRPQzoK Ky0tIHBhcmVudCB1cGRhdGVzIENBU0NBREUKKy0tIHBhcmVudCBkZWxldGVzIENBU0NBREUK Ky0tIHBhcmVudCB1cGRhdGVzIFNFVCBOVUxMCistLSBwYXJlbnQgZGVsZXRlcyBTRVQgTlVM TAorLS0gcGFyZW50IHVwZGF0ZXMgU0VUIERFRkFVTFQKKy0tIHBhcmVudCBkZWxldGVzIFNF VCBERUZBVUxUCistLSBwYXJlbnQgdXBkYXRlcyBDQVNDQURFICh0d28gc2NhbGFyIGNvbHMp CistLSBwYXJlbnQgZGVsZXRlcyBDQVNDQURFICh0d28gc2NhbGFyIGNvbHMpCistLSBwYXJl bnQgdXBkYXRlcyBTRVQgTlVMTCAodHdvIHNjYWxhciBjb2xzKQorLS0gcGFyZW50IGRlbGV0 ZXMgU0VUIE5VTEwgKHR3byBzY2FsYXIgY29scykKKy0tIHBhcmVudCBkZWxldGVzIFNFVCBO VUxMICh0d28gc2NhbGFyIGNvbHMsIFNFVCBOVUxMIHN1YnNldCkKKy0tIHBhcmVudCB1cGRh dGVzIFNFVCBERUZBVUxUICh0d28gc2NhbGFyIGNvbHMpCistLSBwYXJlbnQgZGVsZXRlcyBT RVQgREVGQVVMVCAodHdvIHNjYWxhciBjb2xzKQorLS0gcGFyZW50IGRlbGV0ZXMgU0VUIERF RkFVTFQgKHR3byBzY2FsYXIgY29scywgU0VUIERFRkFVTFQgc3Vic2V0KQogCiAtLSB0ZXN0 IEZLIHBhcmVudCB1cGRhdGVzIENBU0NBREUKIElOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBW QUxVRVMgKCdbNiw2XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsK LUlOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzQsNF0nLCB0c3Jh bmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s2LDZdJyk7CitJTlNFUlQgSU5U TyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1sxMDAsMTAwXScsIHRzcmFuZ2UoJzIw MTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzYsNl0nKTsKIEFMVEVSIFRBQkxFIHRlbXBv cmFsX2ZrX3JuZzJybmcKIAlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19m aywKIAlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrCiAJCUZPUkVJR04g S0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKIAkJUkVGRVJFTkNFUyB0ZW1wb3Jh bF9ybmcKIAkJT04gREVMRVRFIENBU0NBREUgT04gVVBEQVRFIENBU0NBREU7CistLSBsZWZ0 b3ZlcnMgb24gYm90aCBzaWRlczoKK1VQREFURSB0ZW1wb3JhbF9ybmcgRk9SIFBPUlRJT04g T0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFNFVCBpZCA9 ICdbNyw3XScgV0hFUkUgaWQgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9m a19ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CistLSBub24tRlBPIHVwZGF0ZToK K1VQREFURSB0ZW1wb3JhbF9ybmcgU0VUIGlkID0gJ1s3LDddJyBXSEVSRSBpZCA9ICdbNiw2 XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEw MCwxMDBdJzsKKy0tIEZLIGFjcm9zcyB0d28gcmVmZXJlbmNlZCByb3dzOgorSU5TRVJUIElO VE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s4LDhdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScs ICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s4 LDhdJywgdHNyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElO VE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMjAwLDIwMF0nLCB0c3JhbmdlKCcy MDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s4LDhdJyk7CitVUERBVEUgdGVtcG9yYWxf cm5nIFNFVCBpZCA9ICdbOSw5XScgV0hFUkUgaWQgPSAnWzgsOF0nIEFORCB2YWxpZF9hdCBA PiAnMjAxOS0wMS0wMSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtf cm5nMnJuZyBXSEVSRSBpZCA9ICdbMjAwLDIwMF0nOworLS0gY2xlYW4gdXAKK0RFTEVURSBG Uk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgSU4gKCdbMTAwLDEwMF0nLCAnWzIw MCwyMDBdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgSU4gKCdbNiw2 XScsICdbNyw3XScsICdbOCw4XScsICdbOSw5XScpOworCistLSB0ZXN0IEZLIHBhcmVudCBk ZWxldGVzIENBU0NBREUKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbNiw2 XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRP IHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzEwMCwxMDBdJywgdHNyYW5nZSgnMjAx OC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbNiw2XScpOworLS0gbGVmdG92ZXJzIG9uIGJv dGggc2lkZXM6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgRk9SIFBPUlRJT04gT0YgdmFs aWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFdIRVJFIGlkID0gJ1s2 LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdb MTAwLDEwMF0nOworLS0gbm9uLUZQTyBkZWxldGU6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9y bmcgV0hFUkUgaWQgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcy cm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CistLSBGSyBhY3Jvc3MgdHdvIHJlZmVyZW5j ZWQgcm93czoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbOCw4XScsIHRz cmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBv cmFsX3JuZyBWQUxVRVMgKCdbOCw4XScsIHRzcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0w MS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzIw MCwyMDBdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbOCw4XScp OworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s4LDhdJyBBTkQgdmFs aWRfYXQgQD4gJzIwMTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9NIHRlbXBv cmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzIwMCwyMDBdJzsKKy0tIGNsZWFuIHVwCitE RUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkIElOICgnWzEwMCwxMDBd JywgJ1syMDAsMjAwXScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkIElO ICgnWzYsNl0nLCAnWzcsN10nLCAnWzgsOF0nLCAnWzksOV0nKTsKIAogLS0gdGVzdCBGSyBw YXJlbnQgdXBkYXRlcyBTRVQgTlVMTAotSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVF UyAoJ1s5LDldJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOwotSU5T RVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbNiw2XScsIHRzcmFuZ2Uo JzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzksOV0nKTsKK0lOU0VSVCBJTlRPIHRl bXBvcmFsX3JuZyBWQUxVRVMgKCdbNiw2XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAy MS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgn WzEwMCwxMDBdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbNiw2 XScpOwogQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZwogCURST1AgQ09OU1RSQUlO VCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrLAogCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2Zr X3JuZzJybmdfZmsKIAkJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0 KQogCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZwogCQlPTiBERUxFVEUgU0VUIE5VTEwgT04g VVBEQVRFIFNFVCBOVUxMOworLS0gbGVmdG92ZXJzIG9uIGJvdGggc2lkZXM6CitVUERBVEUg dGVtcG9yYWxfcm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEn IFRPICcyMDIwLTAxLTAxJyBTRVQgaWQgPSAnWzcsN10nIFdIRVJFIGlkID0gJ1s2LDZdJzsK K1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEw MF0nOworLS0gbm9uLUZQTyB1cGRhdGU6CitVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCBpZCA9 ICdbNyw3XScgV0hFUkUgaWQgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9m a19ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CistLSBGSyBhY3Jvc3MgdHdvIHJl ZmVyZW5jZWQgcm93czoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbOCw4 XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRP IHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbOCw4XScsIHRzcmFuZ2UoJzIwMjAtMDEtMDEnLCAn MjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVT ICgnWzIwMCwyMDBdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdb OCw4XScpOworVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgaWQgPSAnWzksOV0nIFdIRVJFIGlk ID0gJ1s4LDhdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjp0aW1lc3RhbXA7CitT RUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzIwMCwyMDBd JzsKKy0tIGNsZWFuIHVwCitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJF IGlkIElOICgnWzEwMCwxMDBdJywgJ1syMDAsMjAwXScpOworREVMRVRFIEZST00gdGVtcG9y YWxfcm5nIFdIRVJFIGlkIElOICgnWzYsNl0nLCAnWzcsN10nLCAnWzgsOF0nLCAnWzksOV0n KTsKKworLS0gdGVzdCBGSyBwYXJlbnQgZGVsZXRlcyBTRVQgTlVMTAorSU5TRVJUIElOVE8g dGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s2LDZdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcy MDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMg KCdbMTAwLDEwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s2 LDZdJyk7CistLSBsZWZ0b3ZlcnMgb24gYm90aCBzaWRlczoKK0RFTEVURSBGUk9NIHRlbXBv cmFsX3JuZyBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAn MjAyMC0wMS0wMScgV0hFUkUgaWQgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3Jh bF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CistLSBub24tRlBPIGRlbGV0 ZToKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNiw2XSc7CitTRUxF Q1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwMCwxMDBdJzsK Ky0tIEZLIGFjcm9zcyB0d28gcmVmZXJlbmNlZCByb3dzOgorSU5TRVJUIElOVE8gdGVtcG9y YWxfcm5nIFZBTFVFUyAoJ1s4LDhdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAx LTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s4LDhdJywgdHNy YW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9y YWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMjAwLDIwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAx JywgJzIwMjEtMDEtMDEnKSwgJ1s4LDhdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcg V0hFUkUgaWQgPSAnWzgsOF0nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6OnRpbWVz dGFtcDsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdb MjAwLDIwMF0nOworLS0gY2xlYW4gdXAKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJy bmcgV0hFUkUgaWQgSU4gKCdbMTAwLDEwMF0nLCAnWzIwMCwyMDBdJyk7CitERUxFVEUgRlJP TSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgSU4gKCdbNiw2XScsICdbNyw3XScsICdbOCw4XScs ICdbOSw5XScpOwogCiAtLSB0ZXN0IEZLIHBhcmVudCB1cGRhdGVzIFNFVCBERUZBVUxUCiBJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWy0xLC0xXScsIHRzcmFuZ2UobnVs bCwgbnVsbCkpOwotSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1sxMiwxMl0n LCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7Ci1JTlNFUlQgSU5UTyB0 ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1s4LDhdJywgdHNyYW5nZSgnMjAxOC0wMS0w MScsICcyMDIxLTAxLTAxJyksICdbMTIsMTJdJyk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9y bmcgVkFMVUVTICgnWzYsNl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEn KSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1sxMDAsMTAw XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzYsNl0nKTsKIEFM VEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKICAgQUxURVIgQ09MVU1OIHBhcmVudF9p ZCBTRVQgREVGQVVMVCAnWy0xLC0xXScsCiAJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX2Zr X3JuZzJybmdfZmssCkBAIC03MTIsNiArNzk1LDI1NCBAQCBBTFRFUiBUQUJMRSB0ZW1wb3Jh bF9ma19ybmcycm5nCiAJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9h dCkKIAkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcKIAkJT04gREVMRVRFIFNFVCBERUZBVUxU IE9OIFVQREFURSBTRVQgREVGQVVMVDsKKy0tIGxlZnRvdmVycyBvbiBib3RoIHNpZGVzOgor VVBEQVRFIHRlbXBvcmFsX3JuZyBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5 LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgU0VUIGlkID0gJ1s3LDddJyBXSEVSRSBpZCA9ICdb Niw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAn WzEwMCwxMDBdJzsKKy0tIG5vbi1GUE8gdXBkYXRlOgorVVBEQVRFIHRlbXBvcmFsX3JuZyBT RVQgaWQgPSAnWzcsN10nIFdIRVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVt cG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworLS0gRksgYWNyb3Nz IHR3byByZWZlcmVuY2VkIHJvd3M6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVT ICgnWzgsOF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEnKSk7CitJTlNF UlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzgsOF0nLCB0c3JhbmdlKCcyMDIwLTAx LTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5n IFZBTFVFUyAoJ1syMDAsMjAwXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0w MScpLCAnWzgsOF0nKTsKK1VQREFURSB0ZW1wb3JhbF9ybmcgU0VUIGlkID0gJ1s5LDldJyBX SEVSRSBpZCA9ICdbOCw4XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6dGltZXN0 YW1wOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1sy MDAsMjAwXSc7CistLSBjbGVhbiB1cAorREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJu ZyBXSEVSRSBpZCBJTiAoJ1sxMDAsMTAwXScsICdbMjAwLDIwMF0nKTsKK0RFTEVURSBGUk9N IHRlbXBvcmFsX3JuZyBXSEVSRSBpZCBJTiAoJ1s2LDZdJywgJ1s3LDddJywgJ1s4LDhdJywg J1s5LDldJyk7CisKKy0tIHRlc3QgRksgcGFyZW50IGRlbGV0ZXMgU0VUIERFRkFVTFQKK0lO U0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbNiw2XScsIHRzcmFuZ2UoJzIwMTgt MDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJy bmcgVkFMVUVTICgnWzEwMCwxMDBdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAx LTAxJyksICdbNiw2XScpOworLS0gbGVmdG92ZXJzIG9uIGJvdGggc2lkZXM6CitERUxFVEUg RlJPTSB0ZW1wb3JhbF9ybmcgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0w MS0wMScgVE8gJzIwMjAtMDEtMDEnIFdIRVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZS T00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworLS0gbm9u LUZQTyB1cGRhdGU6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzYs Nl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1sx MDAsMTAwXSc7CistLSBGSyBhY3Jvc3MgdHdvIHJlZmVyZW5jZWQgcm93czoKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbOCw4XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEn LCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdb OCw4XScsIHRzcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzIwMCwyMDBdJywgdHNyYW5nZSgn MjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbOCw4XScpOworREVMRVRFIEZST00gdGVt cG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s4LDhdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEt MDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hF UkUgaWQgPSAnWzIwMCwyMDBdJzsKKy0tIGNsZWFuIHVwCitERUxFVEUgRlJPTSB0ZW1wb3Jh bF9ma19ybmcycm5nIFdIRVJFIGlkIElOICgnWzEwMCwxMDBdJywgJ1syMDAsMjAwXScpOwor REVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkIElOICgnWzYsNl0nLCAnWzcsN10n LCAnWzgsOF0nLCAnWzksOV0nKTsKKworLS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRlcyBDQVND QURFICh0d28gc2NhbGFyIGNvbHMpCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVF UyAoJ1s2LDZdJywgJ1s2LDZdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAx JykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmsyX3JuZzJybmcgVkFMVUVTICgnWzEwMCwx MDBdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbNiw2XScsICdb Niw2XScpOworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmsyX3JuZzJybmcKKwlEUk9QIENPTlNU UkFJTlQgdGVtcG9yYWxfZmsyX3JuZzJybmdfZmssCisJQUREIENPTlNUUkFJTlQgdGVtcG9y YWxfZmsyX3JuZzJybmdfZmsKKwkJRk9SRUlHTiBLRVkgKHBhcmVudF9pZDEsIHBhcmVudF9p ZDIsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcyCisJCU9O IERFTEVURSBDQVNDQURFIE9OIFVQREFURSBDQVNDQURFOworLS0gbGVmdG92ZXJzIG9uIGJv dGggc2lkZXM6CitVUERBVEUgdGVtcG9yYWxfcm5nMiBGT1IgUE9SVElPTiBPRiB2YWxpZF9h dCBGUk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgU0VUIGlkMSA9ICdbNyw3XScg V0hFUkUgaWQxID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmsyX3JuZzJy bmcgV0hFUkUgaWQgPSAnWzEwMCwxMDBdJzsKKy0tIG5vbi1GUE8gdXBkYXRlOgorVVBEQVRF IHRlbXBvcmFsX3JuZzIgU0VUIGlkMSA9ICdbNyw3XScgV0hFUkUgaWQxID0gJ1s2LDZdJzsK K1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwMCwx MDBdJzsKKy0tIEZLIGFjcm9zcyB0d28gcmVmZXJlbmNlZCByb3dzOgorSU5TRVJUIElOVE8g dGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdbOCw4XScsICdbOCw4XScsIHRzcmFuZ2UoJzIwMTgt MDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFM VUVTICgnWzgsOF0nLCAnWzgsOF0nLCB0c3JhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEt MDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9mazJfcm5nMnJuZyBWQUxVRVMgKCdbMjAw LDIwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s4LDhdJywg J1s4LDhdJyk7CitVUERBVEUgdGVtcG9yYWxfcm5nMiBTRVQgaWQxID0gJ1s5LDldJyBXSEVS RSBpZDEgPSAnWzgsOF0nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6OnRpbWVzdGFt cDsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgPSAnWzIw MCwyMDBdJzsKKy0tIGNsZWFuIHVwCitERUxFVEUgRlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJu ZyBXSEVSRSBpZCBJTiAoJ1sxMDAsMTAwXScsICdbMjAwLDIwMF0nKTsKK0RFTEVURSBGUk9N IHRlbXBvcmFsX3JuZzIgV0hFUkUgaWQxIElOICgnWzYsNl0nLCAnWzcsN10nLCAnWzgsOF0n LCAnWzksOV0nKTsKKworLS0gdGVzdCBGSyBwYXJlbnQgZGVsZXRlcyBDQVNDQURFICh0d28g c2NhbGFyIGNvbHMpCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1s2LDZd JywgJ1s2LDZdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5T RVJUIElOVE8gdGVtcG9yYWxfZmsyX3JuZzJybmcgVkFMVUVTICgnWzEwMCwxMDBdJywgdHNy YW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbNiw2XScsICdbNiw2XScpOwor LS0gbGVmdG92ZXJzIG9uIGJvdGggc2lkZXM6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcy IEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAx LTAxJyBXSEVSRSBpZDEgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9mazJf cm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworLS0gbm9uLUZQTyBkZWxldGU6CitE RUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcyIFdIRVJFIGlkMSA9ICdbNiw2XSc7CitTRUxFQ1Qg KiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7Cist LSBGSyBhY3Jvc3MgdHdvIHJlZmVyZW5jZWQgcm93czoKK0lOU0VSVCBJTlRPIHRlbXBvcmFs X3JuZzIgVkFMVUVTICgnWzgsOF0nLCAnWzgsOF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywg JzIwMjAtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1s4 LDhdJywgJ1s4LDhdJywgdHNyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykpOwor SU5TRVJUIElOVE8gdGVtcG9yYWxfZmsyX3JuZzJybmcgVkFMVUVTICgnWzIwMCwyMDBdJywg dHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbOCw4XScsICdbOCw4XScp OworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nMiBXSEVSRSBpZDEgPSAnWzgsOF0nIEFORCB2 YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZST00gdGVt cG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgPSAnWzIwMCwyMDBdJzsKKy0tIGNsZWFuIHVw CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCBJTiAoJ1sxMDAs MTAwXScsICdbMjAwLDIwMF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZzIgV0hFUkUg aWQxIElOICgnWzYsNl0nLCAnWzcsN10nLCAnWzgsOF0nLCAnWzksOV0nKTsKKworLS0gdGVz dCBGSyBwYXJlbnQgdXBkYXRlcyBTRVQgTlVMTCAodHdvIHNjYWxhciBjb2xzKQorSU5TRVJU IElOVE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdbNiw2XScsICdbNiw2XScsIHRzcmFuZ2Uo JzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2Zr Ml9ybmcycm5nIFZBTFVFUyAoJ1sxMDAsMTAwXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAn MjAyMS0wMS0wMScpLCAnWzYsNl0nLCAnWzYsNl0nKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFs X2ZrMl9ybmcycm5nCisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrMl9ybmcycm5nX2Zr LAorCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrMl9ybmcycm5nX2ZrCisJCUZPUkVJR04g S0VZIChwYXJlbnRfaWQxLCBwYXJlbnRfaWQyLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVS RU5DRVMgdGVtcG9yYWxfcm5nMgorCQlPTiBERUxFVEUgU0VUIE5VTEwgT04gVVBEQVRFIFNF VCBOVUxMOworLS0gbGVmdG92ZXJzIG9uIGJvdGggc2lkZXM6CitVUERBVEUgdGVtcG9yYWxf cm5nMiBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAnMjAy MC0wMS0wMScgU0VUIGlkMSA9ICdbNyw3XScgV0hFUkUgaWQxID0gJ1s2LDZdJzsKK1NFTEVD VCAqIEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwMCwxMDBdJzsK Ky0tIG5vbi1GUE8gdXBkYXRlOgorVVBEQVRFIHRlbXBvcmFsX3JuZzIgU0VUIGlkMSA9ICdb Nyw3XScgV0hFUkUgaWQxID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmsy X3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwMCwxMDBdJzsKKy0tIEZLIGFjcm9zcyB0d28gcmVm ZXJlbmNlZCByb3dzOgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdbOCw4 XScsICdbOCw4XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lO U0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVTICgnWzgsOF0nLCAnWzgsOF0nLCB0c3Jh bmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9mazJfcm5nMnJuZyBWQUxVRVMgKCdbMjAwLDIwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAx JywgJzIwMjEtMDEtMDEnKSwgJ1s4LDhdJywgJ1s4LDhdJyk7CitVUERBVEUgdGVtcG9yYWxf cm5nMiBTRVQgaWQxID0gJ1s5LDldJyBXSEVSRSBpZDEgPSAnWzgsOF0nIEFORCB2YWxpZF9h dCBAPiAnMjAxOS0wMS0wMSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxf ZmsyX3JuZzJybmcgV0hFUkUgaWQgPSAnWzIwMCwyMDBdJzsKKy0tIGNsZWFuIHVwCitERUxF VEUgRlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCBJTiAoJ1sxMDAsMTAwXScs ICdbMjAwLDIwMF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZzIgV0hFUkUgaWQxIElO ICgnWzYsNl0nLCAnWzcsN10nLCAnWzgsOF0nLCAnWzksOV0nKTsKKworLS0gdGVzdCBGSyBw YXJlbnQgZGVsZXRlcyBTRVQgTlVMTCAodHdvIHNjYWxhciBjb2xzKQorSU5TRVJUIElOVE8g dGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdbNiw2XScsICdbNiw2XScsIHRzcmFuZ2UoJzIwMTgt MDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrMl9ybmcy cm5nIFZBTFVFUyAoJ1sxMDAsMTAwXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0w MS0wMScpLCAnWzYsNl0nLCAnWzYsNl0nKTsKKy0tIGxlZnRvdmVycyBvbiBib3RoIHNpZGVz OgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nMiBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBG Uk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgV0hFUkUgaWQxID0gJ1s2LDZdJzsK K1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwMCwx MDBdJzsKKy0tIG5vbi1GUE8gZGVsZXRlOgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nMiBX SEVSRSBpZDEgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJu ZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworLS0gRksgYWNyb3NzIHR3byByZWZlcmVuY2Vk IHJvd3M6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1s4LDhdJywgJ1s4 LDhdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElO VE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdbOCw4XScsICdbOCw4XScsIHRzcmFuZ2UoJzIw MjAtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrMl9y bmcycm5nIFZBTFVFUyAoJ1syMDAsMjAwXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAy MS0wMS0wMScpLCAnWzgsOF0nLCAnWzgsOF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3Ju ZzIgV0hFUkUgaWQxID0gJ1s4LDhdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjp0 aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlk ID0gJ1syMDAsMjAwXSc7CistLSBjbGVhbiB1cAorREVMRVRFIEZST00gdGVtcG9yYWxfZmsy X3JuZzJybmcgV0hFUkUgaWQgSU4gKCdbMTAwLDEwMF0nLCAnWzIwMCwyMDBdJyk7CitERUxF VEUgRlJPTSB0ZW1wb3JhbF9ybmcyIFdIRVJFIGlkMSBJTiAoJ1s2LDZdJywgJ1s3LDddJywg J1s4LDhdJywgJ1s5LDldJyk7CisKKy0tIHRlc3QgRksgcGFyZW50IGRlbGV0ZXMgU0VUIE5V TEwgKHR3byBzY2FsYXIgY29scywgU0VUIE5VTEwgc3Vic2V0KQorSU5TRVJUIElOVE8gdGVt cG9yYWxfcm5nMiBWQUxVRVMgKCdbNiw2XScsICdbNiw2XScsIHRzcmFuZ2UoJzIwMTgtMDEt MDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrMl9ybmcycm5n IFZBTFVFUyAoJ1sxMDAsMTAwXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0w MScpLCAnWzYsNl0nLCAnWzYsNl0nKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrMl9ybmcy cm5nCisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrMl9ybmcycm5nX2ZrLAorCUFERCBD T05TVFJBSU5UIHRlbXBvcmFsX2ZrMl9ybmcycm5nX2ZrCisJCUZPUkVJR04gS0VZIChwYXJl bnRfaWQxLCBwYXJlbnRfaWQyLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVt cG9yYWxfcm5nMgorCQlPTiBERUxFVEUgU0VUIE5VTEwgKHBhcmVudF9pZDEpIE9OIFVQREFU RSBTRVQgTlVMTDsKKy0tIGxlZnRvdmVycyBvbiBib3RoIHNpZGVzOgorREVMRVRFIEZST00g dGVtcG9yYWxfcm5nMiBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAx JyBUTyAnMjAyMC0wMS0wMScgV0hFUkUgaWQxID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00g dGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwMCwxMDBdJzsKKy0tIG5vbi1G UE8gZGVsZXRlOgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nMiBXSEVSRSBpZDEgPSAnWzYs Nl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCA9ICdb MTAwLDEwMF0nOworLS0gRksgYWNyb3NzIHR3byByZWZlcmVuY2VkIHJvd3M6CitJTlNFUlQg SU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1s4LDhdJywgJ1s4LDhdJywgdHNyYW5nZSgn MjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5n MiBWQUxVRVMgKCdbOCw4XScsICdbOCw4XScsIHRzcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAy MS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFZBTFVFUyAo J1syMDAsMjAwXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzgs OF0nLCAnWzgsOF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZzIgV0hFUkUgaWQxID0g J1s4LDhdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxF Q1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1syMDAsMjAwXSc7 CistLSBjbGVhbiB1cAorREVMRVRFIEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUg aWQgSU4gKCdbMTAwLDEwMF0nLCAnWzIwMCwyMDBdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3Jh bF9ybmcyIFdIRVJFIGlkMSBJTiAoJ1s2LDZdJywgJ1s3LDddJywgJ1s4LDhdJywgJ1s5LDld Jyk7CisKKy0tIHRlc3QgRksgcGFyZW50IHVwZGF0ZXMgU0VUIERFRkFVTFQgKHR3byBzY2Fs YXIgY29scykKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVTICgnWy0xLC0xXScs ICdbLTEsLTFdJywgdHNyYW5nZShudWxsLCBudWxsKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9ybmcyIFZBTFVFUyAoJ1s2LDZdJywgJ1s2LDZdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScs ICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmsyX3JuZzJybmcgVkFM VUVTICgnWzEwMCwxMDBdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyks ICdbNiw2XScsICdbNiw2XScpOworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmsyX3JuZzJybmcK KyAgQUxURVIgQ09MVU1OIHBhcmVudF9pZDEgU0VUIERFRkFVTFQgJ1stMSwtMV0nLAorICBB TFRFUiBDT0xVTU4gcGFyZW50X2lkMiBTRVQgREVGQVVMVCAnWy0xLC0xXScsCisJRFJPUCBD T05TVFJBSU5UIHRlbXBvcmFsX2ZrMl9ybmcycm5nX2ZrLAorCUFERCBDT05TVFJBSU5UIHRl bXBvcmFsX2ZrMl9ybmcycm5nX2ZrCisJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQxLCBwYXJl bnRfaWQyLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nMgor CQlPTiBERUxFVEUgU0VUIERFRkFVTFQgT04gVVBEQVRFIFNFVCBERUZBVUxUOworLS0gbGVm dG92ZXJzIG9uIGJvdGggc2lkZXM6CitVUERBVEUgdGVtcG9yYWxfcm5nMiBGT1IgUE9SVElP TiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgU0VUIGlk MSA9ICdbNyw3XScsIGlkMiA9ICdbNyw3XScgV0hFUkUgaWQxID0gJ1s2LDZdJzsKK1NFTEVD VCAqIEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwMCwxMDBdJzsK Ky0tIG5vbi1GUE8gdXBkYXRlOgorVVBEQVRFIHRlbXBvcmFsX3JuZzIgU0VUIGlkMSA9ICdb Nyw3XScsIGlkMiA9ICdbNyw3XScgV0hFUkUgaWQxID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZS T00gdGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwMCwxMDBdJzsKKy0tIEZL IGFjcm9zcyB0d28gcmVmZXJlbmNlZCByb3dzOgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5n MiBWQUxVRVMgKCdbOCw4XScsICdbOCw4XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAy MC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVTICgnWzgsOF0n LCAnWzgsOF0nLCB0c3JhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNF UlQgSU5UTyB0ZW1wb3JhbF9mazJfcm5nMnJuZyBWQUxVRVMgKCdbMjAwLDIwMF0nLCB0c3Jh bmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s4LDhdJywgJ1s4LDhdJyk7CitV UERBVEUgdGVtcG9yYWxfcm5nMiBTRVQgaWQxID0gJ1s5LDldJywgaWQyID0gJ1s5LDldJyBX SEVSRSBpZDEgPSAnWzgsOF0nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6OnRpbWVz dGFtcDsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgPSAn WzIwMCwyMDBdJzsKKy0tIGNsZWFuIHVwCitERUxFVEUgRlJPTSB0ZW1wb3JhbF9mazJfcm5n MnJuZyBXSEVSRSBpZCBJTiAoJ1sxMDAsMTAwXScsICdbMjAwLDIwMF0nKTsKK0RFTEVURSBG Uk9NIHRlbXBvcmFsX3JuZzIgV0hFUkUgaWQxIElOICgnWzYsNl0nLCAnWzcsN10nLCAnWzgs OF0nLCAnWzksOV0nKTsKKworLS0gdGVzdCBGSyBwYXJlbnQgZGVsZXRlcyBTRVQgREVGQVVM VCAodHdvIHNjYWxhciBjb2xzKQorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMg KCdbNiw2XScsICdbNiw2XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScp KTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFZBTFVFUyAoJ1sxMDAsMTAw XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzYsNl0nLCAnWzYs Nl0nKTsKKy0tIGxlZnRvdmVycyBvbiBib3RoIHNpZGVzOgorREVMRVRFIEZST00gdGVtcG9y YWxfcm5nMiBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAn MjAyMC0wMS0wMScgV0hFUkUgaWQxID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9y YWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwMCwxMDBdJzsKKy0tIG5vbi1GUE8gdXBk YXRlOgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nMiBXSEVSRSBpZDEgPSAnWzYsNl0nOwor U0VMRUNUICogRlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEw MF0nOworLS0gRksgYWNyb3NzIHR3byByZWZlcmVuY2VkIHJvd3M6CitJTlNFUlQgSU5UTyB0 ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1s4LDhdJywgJ1s4LDhdJywgdHNyYW5nZSgnMjAxOC0w MS0wMScsICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMiBWQUxV RVMgKCdbOCw4XScsICdbOCw4XScsIHRzcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0w MScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFZBTFVFUyAoJ1syMDAs MjAwXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzgsOF0nLCAn WzgsOF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZzIgV0hFUkUgaWQxID0gJ1s4LDhd JyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBG Uk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1syMDAsMjAwXSc7CistLSBj bGVhbiB1cAorREVMRVRFIEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgSU4g KCdbMTAwLDEwMF0nLCAnWzIwMCwyMDBdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcy IFdIRVJFIGlkMSBJTiAoJ1s2LDZdJywgJ1s3LDddJywgJ1s4LDhdJywgJ1s5LDldJyk7CisK Ky0tIHRlc3QgRksgcGFyZW50IGRlbGV0ZXMgU0VUIERFRkFVTFQgKHR3byBzY2FsYXIgY29s cywgU0VUIERFRkFVTFQgc3Vic2V0KQorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMiBWQUxV RVMgKCdbLTEsLTFdJywgJ1s2LDZdJywgdHNyYW5nZShudWxsLCBudWxsKSk7CitJTlNFUlQg SU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1s2LDZdJywgJ1s2LDZdJywgdHNyYW5nZSgn MjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmsy X3JuZzJybmcgVkFMVUVTICgnWzEwMCwxMDBdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcy MDIxLTAxLTAxJyksICdbNiw2XScsICdbNiw2XScpOworQUxURVIgVEFCTEUgdGVtcG9yYWxf ZmsyX3JuZzJybmcKKyAgQUxURVIgQ09MVU1OIHBhcmVudF9pZDEgU0VUIERFRkFVTFQgJ1st MSwtMV0nLAorCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9mazJfcm5nMnJuZ19maywKKwlB REQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9mazJfcm5nMnJuZ19maworCQlGT1JFSUdOIEtFWSAo cGFyZW50X2lkMSwgcGFyZW50X2lkMiwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VT IHRlbXBvcmFsX3JuZzIKKwkJT04gREVMRVRFIFNFVCBERUZBVUxUIChwYXJlbnRfaWQxKSBP TiBVUERBVEUgU0VUIERFRkFVTFQ7CistLSBsZWZ0b3ZlcnMgb24gYm90aCBzaWRlczoKK0RF TEVURSBGUk9NIHRlbXBvcmFsX3JuZzIgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAn MjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFdIRVJFIGlkMSA9ICdbNiw2XSc7CitTRUxF Q1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7 CistLSBub24tRlBPIHVwZGF0ZToKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZzIgV0hFUkUg aWQxID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcgV0hF UkUgaWQgPSAnWzEwMCwxMDBdJzsKKy0tIEZLIGFjcm9zcyB0d28gcmVmZXJlbmNlZCByb3dz OgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdbOCw4XScsICdbOCw4XScs IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRl bXBvcmFsX3JuZzIgVkFMVUVTICgnWzgsOF0nLCAnWzgsOF0nLCB0c3JhbmdlKCcyMDIwLTAx LTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVF UyAoJ1stMSwtMV0nLCAnWzgsOF0nLCB0c3JhbmdlKG51bGwsIG51bGwpKTsKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFZBTFVFUyAoJ1syMDAsMjAwXScsIHRzcmFuZ2Uo JzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzgsOF0nLCAnWzgsOF0nKTsKK0RFTEVU RSBGUk9NIHRlbXBvcmFsX3JuZzIgV0hFUkUgaWQxID0gJ1s4LDhdJyBBTkQgdmFsaWRfYXQg QD4gJzIwMTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2Zr Ml9ybmcycm5nIFdIRVJFIGlkID0gJ1syMDAsMjAwXSc7CistLSBjbGVhbiB1cAorREVMRVRF IEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgSU4gKCdbMTAwLDEwMF0nLCAn WzIwMCwyMDBdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcyIFdIRVJFIGlkMSBJTiAo J1s2LDZdJywgJ1s3LDddJywgJ1s4LDhdJywgJ1s5LDldJyk7CisKKy0tIEZLIHdpdGggYSBj dXN0b20gcmFuZ2UgdHlwZQorCitDUkVBVEUgVFlQRSBteWRhdGVyYW5nZSBBUyByYW5nZShz dWJ0eXBlPWRhdGUpOworCitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcm5nMyAoCisJaWQgaW50 NHJhbmdlLAorCXZhbGlkX2F0IG15ZGF0ZXJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxf cm5nM19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCisp OworQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX2ZrM19ybmcycm5nICgKKwlpZCBpbnQ0cmFuZ2Us CisJdmFsaWRfYXQgbXlkYXRlcmFuZ2UsCisJcGFyZW50X2lkIGludDRyYW5nZSwKKwlDT05T VFJBSU5UIHRlbXBvcmFsX2ZrM19ybmcycm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRf YXQgV0lUSE9VVCBPVkVSTEFQUyksCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9mazNfcm5nMnJu Z19mayBGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVS RU5DRVMgdGVtcG9yYWxfcm5nMyAoaWQsIFBFUklPRCB2YWxpZF9hdCkgT04gREVMRVRFIENB U0NBREUKKyk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmczIFZBTFVFUyAoJ1s4LDhdJywg bXlkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRP IHRlbXBvcmFsX2ZrM19ybmcycm5nIFZBTFVFUyAoJ1s1LDVdJywgbXlkYXRlcmFuZ2UoJzIw MTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzgsOF0nKTsKK0RFTEVURSBGUk9NIHRlbXBv cmFsX3JuZzMgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8g JzIwMjAtMDEtMDEnIFdIRVJFIGlkID0gJ1s4LDhdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9y YWxfZmszX3JuZzJybmcgV0hFUkUgaWQgPSAnWzUsNV0nOworCitEUk9QIFRBQkxFIHRlbXBv cmFsX2ZrM19ybmcycm5nOworRFJPUCBUQUJMRSB0ZW1wb3JhbF9ybmczOworRFJPUCBUWVBF IG15ZGF0ZXJhbmdlOwogCiAtLSBGSyBiZXR3ZWVuIHBhcnRpdGlvbmVkIHRhYmxlcwogCkBA IC03MjEsOCArMTA1Miw4IEBAIENSRUFURSBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9y bmcgKAogICBuYW1lIHRleHQsCiAJQ09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJpdGlvbmVkX3Ju Z19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCiApIFBB UlRJVElPTiBCWSBMSVNUIChpZCk7Ci1DUkVBVEUgVEFCTEUgdHAxIHBhcnRpdGlvbiBPRiB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgRk9SIFZBTFVFUyBJTiAoJ1sxLDFdJywgJ1szLDNd JywgJ1s1LDVdJywgJ1s3LDddJywgJ1s5LDldJywgJ1sxMSwxMV0nKTsKLUNSRUFURSBUQUJM RSB0cDIgcGFydGl0aW9uIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBGT1IgVkFMVUVT IElOICgnWzIsMl0nLCAnWzQsNF0nLCAnWzYsNl0nLCAnWzgsOF0nLCAnWzEwLDEwXScsICdb MTIsMTJdJyk7CitDUkVBVEUgVEFCTEUgdHAxIHBhcnRpdGlvbiBPRiB0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ybmcgRk9SIFZBTFVFUyBJTiAoJ1sxLDFdJywgJ1szLDNdJywgJ1s1LDVdJywg J1s3LDddJywgJ1s5LDldJywgJ1sxMSwxMV0nLCAnWzEzLDEzXScsICdbMTUsMTVdJywgJ1sx NywxN10nLCAnWzE5LDE5XScsICdbMjEsMjFdJywgJ1syMywyM10nKTsKK0NSRUFURSBUQUJM RSB0cDIgcGFydGl0aW9uIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBGT1IgVkFMVUVT IElOICgnWzAsMF0nLCAnWzIsMl0nLCAnWzQsNF0nLCAnWzYsNl0nLCAnWzgsOF0nLCAnWzEw LDEwXScsICdbMTIsMTJdJywgJ1sxNCwxNF0nLCAnWzE2LDE2XScsICdbMTgsMThdJywgJ1sy MCwyMF0nLCAnWzIyLDIyXScsICdbMjQsMjRdJyk7CiBJTlNFUlQgSU5UTyB0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ybmcgVkFMVUVTCiAgICgnWzEsMV0nLCBkYXRlcmFuZ2UoJzIwMDAtMDEt MDEnLCAnMjAwMC0wMi0wMScpLCAnb25lJyksCiAgICgnWzEsMV0nLCBkYXRlcmFuZ2UoJzIw MDAtMDItMDEnLCAnMjAwMC0wMy0wMScpLCAnb25lJyksCkBAIC03MzYsOCArMTA2Nyw4IEBA IENSRUFURSBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nICgKIAlDT05T VFJBSU5UIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfZmsgRk9SRUlHTiBLRVkg KHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQogCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3Bh cnRpdGlvbmVkX3JuZyAoaWQsIFBFUklPRCB2YWxpZF9hdCkKICkgUEFSVElUSU9OIEJZIExJ U1QgKGlkKTsKLUNSRUFURSBUQUJMRSB0ZmtwMSBwYXJ0aXRpb24gT0YgdGVtcG9yYWxfcGFy dGl0aW9uZWRfZmtfcm5nMnJuZyBGT1IgVkFMVUVTIElOICgnWzEsMV0nLCAnWzMsM10nLCAn WzUsNV0nLCAnWzcsN10nLCAnWzksOV0nLCAnWzExLDExXScpOwotQ1JFQVRFIFRBQkxFIHRm a3AyIHBhcnRpdGlvbiBPRiB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIEZPUiBW QUxVRVMgSU4gKCdbMiwyXScsICdbNCw0XScsICdbNiw2XScsICdbOCw4XScsICdbMTAsMTBd JywgJ1sxMiwxMl0nKTsKK0NSRUFURSBUQUJMRSB0ZmtwMSBwYXJ0aXRpb24gT0YgdGVtcG9y YWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBGT1IgVkFMVUVTIElOICgnWzEsMV0nLCAnWzMs M10nLCAnWzUsNV0nLCAnWzcsN10nLCAnWzksOV0nLCAnWzExLDExXScsICdbMTMsMTNdJywg J1sxNSwxNV0nLCAnWzE3LDE3XScsICdbMTksMTldJywgJ1syMSwyMV0nLCAnWzIzLDIzXScp OworQ1JFQVRFIFRBQkxFIHRma3AyIHBhcnRpdGlvbiBPRiB0ZW1wb3JhbF9wYXJ0aXRpb25l ZF9ma19ybmcycm5nIEZPUiBWQUxVRVMgSU4gKCdbMCwwXScsICdbMiwyXScsICdbNCw0XScs ICdbNiw2XScsICdbOCw4XScsICdbMTAsMTBdJywgJ1sxMiwxMl0nLCAnWzE0LDE0XScsICdb MTYsMTZdJywgJ1sxOCwxOF0nLCAnWzIwLDIwXScsICdbMjIsMjJdJywgJ1syNCwyNF0nKTsK IAogLS0gcGFydGl0aW9uZWQgRksgY2hpbGQgaW5zZXJ0cwogCkBAIC04MjEsMzcgKzExNTIs MTA3IEBAIERFTEVURSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBXSEVSRSBpZCA9 ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gZGF0ZXJhbmdlCiAKIC0tIHBhcnRpdGlvbmVkIEZL IHBhcmVudCB1cGRhdGVzIENBU0NBREUKIAorSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0 aW9uZWRfcm5nIFZBTFVFUyAoJ1s2LDZdJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIw MjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcy cm5nIFZBTFVFUyAoJ1s0LDRdJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEt MDEnKSwgJ1s2LDZdJyk7CiBBTFRFUiBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19y bmcycm5nCiAJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJy bmdfZmssCiAJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJu Z19mawogCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCiAJCVJF RkVSRU5DRVMgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nCiAJCU9OIERFTEVURSBDQVNDQURF IE9OIFVQREFURSBDQVNDQURFOworVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBG T1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0w MScgU0VUIGlkID0gJ1s3LDddJyBXSEVSRSBpZCA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9N IHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzQsNF0nOwor VVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBTRVQgaWQgPSAnWzcsN10nIFdIRVJF IGlkID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtf cm5nMnJuZyBXSEVSRSBpZCA9ICdbNCw0XSc7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ybmcgVkFMVUVTICgnWzE1LDE1XScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScs ICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5n IFZBTFVFUyAoJ1sxNSwxNV0nLCBkYXRlcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0w MScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFM VUVTICgnWzEwLDEwXScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyks ICdbMTUsMTVdJyk7CitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFNFVCBpZCA9 ICdbMTYsMTZdJyBXSEVSRSBpZCA9ICdbMTUsMTVdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTkt MDEtMDEnOjpkYXRlOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19y bmcycm5nIFdIRVJFIGlkID0gJ1sxMCwxMF0nOwogCiAtLSBwYXJ0aXRpb25lZCBGSyBwYXJl bnQgZGVsZXRlcyBDQVNDQURFCiAKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVk X3JuZyBWQUxVRVMgKCdbOCw4XScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAx LTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBW QUxVRVMgKCdbNSw1XScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyks ICdbOCw4XScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIEZPUiBQ T1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBX SEVSRSBpZCA9ICdbOCw4XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVk X2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzUsNV0nOworREVMRVRFIEZST00gdGVtcG9yYWxf cGFydGl0aW9uZWRfcm5nIFdIRVJFIGlkID0gJ1s4LDhdJzsKK1NFTEVDVCAqIEZST00gdGVt cG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbNSw1XSc7CitJTlNF UlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzE3LDE3XScsIGRh dGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVt cG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1sxNywxN10nLCBkYXRlcmFuZ2UoJzIw MjAtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRp dGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzExLDExXScsIGRhdGVyYW5nZSgnMjAxOC0w MS0wMScsICcyMDIxLTAxLTAxJyksICdbMTcsMTddJyk7CitERUxFVEUgRlJPTSB0ZW1wb3Jh bF9wYXJ0aXRpb25lZF9ybmcgV0hFUkUgaWQgPSAnWzE3LDE3XScgQU5EIHZhbGlkX2F0IEA+ ICcyMDE5LTAxLTAxJzo6ZGF0ZTsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9u ZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTEsMTFdJzsKKwogLS0gcGFydGl0aW9uZWQg RksgcGFyZW50IHVwZGF0ZXMgU0VUIE5VTEwKIAorSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFy dGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1s5LDldJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywg JzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19y bmcycm5nIFZBTFVFUyAoJ1s2LDZdJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEt MDEtMDEnKSwgJ1s5LDldJyk7CiBBTFRFUiBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9m a19ybmcycm5nCiAJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3Ju ZzJybmdfZmssCiAJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5n MnJuZ19mawogCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCiAJ CVJFRkVSRU5DRVMgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nCiAJCU9OIERFTEVURSBTRVQg TlVMTCBPTiBVUERBVEUgU0VUIE5VTEw7CitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWRf cm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIw LTAxLTAxJyBTRVQgaWQgPSAnWzEwLDEwXScgV0hFUkUgaWQgPSAnWzksOV0nOworU0VMRUNU ICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1s2 LDZdJzsKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgU0VUIGlkID0gJ1sxMCwx MF0nIFdIRVJFIGlkID0gJ1s5LDldJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0 aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbNiw2XSc7CitJTlNFUlQgSU5UTyB0ZW1w b3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzE4LDE4XScsIGRhdGVyYW5nZSgnMjAx OC0wMS0wMScsICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0 aW9uZWRfcm5nIFZBTFVFUyAoJ1sxOCwxOF0nLCBkYXRlcmFuZ2UoJzIwMjAtMDEtMDEnLCAn MjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3Ju ZzJybmcgVkFMVUVTICgnWzEyLDEyXScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIx LTAxLTAxJyksICdbMTgsMThdJyk7CitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5n IFNFVCBpZCA9ICdbMTksMTldJyBXSEVSRSBpZCA9ICdbMTgsMThdJyBBTkQgdmFsaWRfYXQg QD4gJzIwMTktMDEtMDEnOjpkYXRlOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRp b25lZF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1sxMiwxMl0nOwogCiAtLSBwYXJ0aXRpb25l ZCBGSyBwYXJlbnQgZGVsZXRlcyBTRVQgTlVMTAogCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzExLDExXScsIGRhdGVyYW5nZSgnMjAxOC0wMS0w MScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRf Zmtfcm5nMnJuZyBWQUxVRVMgKCdbNyw3XScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcy MDIxLTAxLTAxJyksICdbMTEsMTFdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRp b25lZF9ybmcgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8g JzIwMjAtMDEtMDEnIFdIRVJFIGlkID0gJ1sxMSwxMV0nOworU0VMRUNUICogRlJPTSB0ZW1w b3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1s3LDddJzsKK0RFTEVU RSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBXSEVSRSBpZCA9ICdbMTEsMTFdJzsK K1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBp ZCA9ICdbNyw3XSc7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFM VUVTICgnWzIwLDIwXScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJykp OworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1syMCwy MF0nLCBkYXRlcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzEzLDEzXScs IGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbMjAsMjBdJyk7CitE RUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgV0hFUkUgaWQgPSAnWzIwLDIw XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6ZGF0ZTsKK1NFTEVDVCAqIEZST00g dGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTMsMTNdJzsK KwogLS0gcGFydGl0aW9uZWQgRksgcGFyZW50IHVwZGF0ZXMgU0VUIERFRkFVTFQKIAorSU5T RVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1swLDBdJywgZGF0 ZXJhbmdlKG51bGwsIG51bGwpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVk X3JuZyBWQUxVRVMgKCdbMTIsMTJdJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEt MDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5n IFZBTFVFUyAoJ1s4LDhdJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEn KSwgJ1sxMiwxMl0nKTsKIEFMVEVSIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3Ju ZzJybmcKLSAgQUxURVIgQ09MVU1OIHBhcmVudF9pZCBTRVQgREVGQVVMVCAnWy0xLC0xXScs CisgIEFMVEVSIENPTFVNTiBwYXJlbnRfaWQgU0VUIERFRkFVTFQgJ1swLDBdJywKIAlEUk9Q IENPTlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19maywKIAlBREQg Q09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX2ZrCiAJCUZPUkVJ R04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKIAkJUkVGRVJFTkNFUyB0ZW1w b3JhbF9wYXJ0aXRpb25lZF9ybmcKIAkJT04gREVMRVRFIFNFVCBERUZBVUxUIE9OIFVQREFU RSBTRVQgREVGQVVMVDsKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgRk9SIFBP UlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFNF VCBpZCA9ICdbMTMsMTNdJyBXSEVSRSBpZCA9ICdbMTIsMTJdJzsKK1NFTEVDVCAqIEZST00g dGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbOCw4XSc7CitV UERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFNFVCBpZCA9ICdbMTMsMTNdJyBXSEVS RSBpZCA9ICdbMTIsMTJdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRf Zmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbOCw4XSc7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzIyLDIyXScsIGRhdGVyYW5nZSgnMjAxOC0wMS0w MScsICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRf cm5nIFZBTFVFUyAoJ1syMiwyMl0nLCBkYXRlcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0w MS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcg VkFMVUVTICgnWzE0LDE0XScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAx JyksICdbMjIsMjJdJyk7CitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFNFVCBp ZCA9ICdbMjMsMjNdJyBXSEVSRSBpZCA9ICdbMjIsMjJdJyBBTkQgdmFsaWRfYXQgQD4gJzIw MTktMDEtMDEnOjpkYXRlOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9m a19ybmcycm5nIFdIRVJFIGlkID0gJ1sxNCwxNF0nOwogCiAtLSBwYXJ0aXRpb25lZCBGSyBw YXJlbnQgZGVsZXRlcyBTRVQgREVGQVVMVAogCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ybmcgVkFMVUVTICgnWzE0LDE0XScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScs ICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtf cm5nMnJuZyBWQUxVRVMgKCdbOSw5XScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIx LTAxLTAxJyksICdbMTQsMTRdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25l ZF9ybmcgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIw MjAtMDEtMDEnIFdIRVJFIGlkID0gJ1sxNCwxNF0nOworU0VMRUNUICogRlJPTSB0ZW1wb3Jh bF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1s5LDldJzsKK0RFTEVURSBG Uk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBXSEVSRSBpZCA9ICdbMTQsMTRdJzsKK1NF TEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9 ICdbOSw5XSc7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVT ICgnWzI0LDI0XScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJykpOwor SU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1syNCwyNF0n LCBkYXRlcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRP IHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzE1LDE1XScsIGRh dGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbMjQsMjRdJyk7CitERUxF VEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgV0hFUkUgaWQgPSAnWzI0LDI0XScg QU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6ZGF0ZTsKK1NFTEVDVCAqIEZST00gdGVt cG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTUsMTVdJzsKKwog RFJPUCBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nOwogRFJPUCBUQUJM RSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmc7Ci0tIAoyLjQyLjAKCg== --------------ZGWE1dX84ltsryTlZEe40gG3 Content-Type: text/x-patch; charset=UTF-8; name="v17-0005-Add-PERIODs.patch" Content-Disposition: attachment; filename="v17-0005-Add-PERIODs.patch" Content-Transfer-Encoding: base64 RnJvbSBmODZlMTgyZTQ1MzI0OTljNzljNjIwNjg5OTc2ZmFhZGE5ZDZmODNkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IFNhdCwgOSBKYW4gMjAyMSAyMTo1OTo0MyAtMDgw MApTdWJqZWN0OiBbUEFUQ0ggdjE3IDUvNV0gQWRkIFBFUklPRHMKCi0gQWRkZWQgcGFyc2lu ZyBmb3IgU1FMOjIwMTEgc3ludGF4IHRvIGRlZmluZSBhbiBhcHBsaWNhdGlvbi10aW1lIFBF UklPRCBvbiBhCiAgdGFibGUgKGluIGJvdGggQ1JFQVRFIFRBQkxFIGFuZCBBTFRFUiBUQUJM RSkuIE1ha2Ugc3VyZSB3ZSBjcmVhdGUgdGhlIFBFUklPRAogIGFmdGVyIGNvbHVtbnMgYXJl IGtub3duIChzaW5jZSBQRVJJT0RzIGNhbiByZWZlciB0byB0aGVtKSBidXQgYmVmb3JlCiAg Y29uc3RyYWludHMgYXJlIGhhbmRsZWQgKHNpbmNlIFBFUklPRHMgY2FuIGFwcGVhciBpbiB0 aGVtKS4KLSBBZGRlZCBBTFRFUiBUQUJMRSBEUk9QIHN1cHBvcnQgZm9yIFBFUklPRHMuCi0g Q3JlYXRlZCBwb3N0Z3Jlcy5wZ19wZXJpb2QgdGFibGUuCi0gQ3JlYXRlZCBpbmZvcm1hdGlv bl9zY2hlbWEucGVyaW9kcyB2aWV3LgotIEFkZGVkIHBnX2R1bXAgc3VwcG9ydC4KLSBBZGRl ZCB0ZXN0cyBhbmQgZG9jdW1lbnRhdGlvbi4KLSBBdXRvbWF0aWNhbGx5IGRlZmluZSBhIGNv bnN0cmFpbnQgZm9yIGVhY2ggUEVSSU9EIHJlcXVpcmluZyB0aGUgc3RhcnQgY29sdW1uCiAg dG8gYmUgbGVzcyB0aGFuIHRoZSBlbmQgY29sdW1uLgotIFdoZW4gY3JlYXRpbmcgYSBQRVJJ T0QsIGNob29zZSBhbiBhcHByb3ByaWF0ZSByYW5nZSB0eXBlIHdlIGNhbiB1c2UgdG8KICBp bXBsZW1lbnQgUEVSSU9ELXJlbGF0ZWQgb3BlcmF0aW9ucy4gWW91IGNhbiBjaG9vc2Ugb25l IGV4cGxpY2l0bHkgaWYgdGhlcmUKICBpcyBhbWJpZ3VpdHkgKGR1ZSB0byBtdWx0aXBsZSBy YW5nZSB0eXBlcyBjcmVhdGVkIG92ZXIgdGhlIHNhbWUgYmFzZSB0eXBlKS4KLS0tCiBkb2Mv c3JjL3NnbWwvY2F0YWxvZ3Muc2dtbCAgICAgICAgICAgICAgICAgICAgfCAxMTIgKysrCiBk b2Mvc3JjL3NnbWwvZGRsLnNnbWwgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNTggKysK IGRvYy9zcmMvc2dtbC9pbmZvcm1hdGlvbl9zY2hlbWEuc2dtbCAgICAgICAgICB8ICA2MyAr KwogZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl90YWJsZS5zZ21sICAgICAgICAgICAgIHwgIDI1 ICsKIGRvYy9zcmMvc2dtbC9yZWYvY29tbWVudC5zZ21sICAgICAgICAgICAgICAgICB8ICAg MiArCiBkb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90YWJsZS5zZ21sICAgICAgICAgICAgfCAg NDAgKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9NYWtlZmlsZSAgICAgICAgICAgICAgICAgIHwg ICAyICsKIHNyYy9iYWNrZW5kL2NhdGFsb2cvYWNsY2hrLmMgICAgICAgICAgICAgICAgICB8 ICAgMiArCiBzcmMvYmFja2VuZC9jYXRhbG9nL2RlcGVuZGVuY3kuYyAgICAgICAgICAgICAg fCAgIDkgKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9oZWFwLmMgICAgICAgICAgICAgICAgICAg IHwgIDc2ICsrCiBzcmMvYmFja2VuZC9jYXRhbG9nL2luZm9ybWF0aW9uX3NjaGVtYS5zcWwg ICAgfCAgMjMgKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvbWVzb24uYnVpbGQgICAgICAgICAg ICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9jYXRhbG9nL29iamVjdGFkZHJlc3MuYyAgICAg ICAgICAgfCAgNzMgKysKIHNyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcGVyaW9kLmMgICAgICAg ICAgICAgICB8IDEzMiArKysKIHNyYy9iYWNrZW5kL2NhdGFsb2cvc3FsX2ZlYXR1cmVzLnR4 dCAgICAgICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvYWx0ZXIuYyAgICAg ICAgICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2NvbW1lbnQuYyAg ICAgICAgICAgICAgICB8ICAxMCArCiBzcmMvYmFja2VuZC9jb21tYW5kcy9kcm9wY21kcy5j ICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvY29tbWFuZHMvZXZlbnRfdHJp Z2dlci5jICAgICAgICAgIHwgICA0ICsKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3NlY2xhYmVs LmMgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNt ZHMuYyAgICAgICAgICAgICAgfCA3NjMgKysrKysrKysrKysrKysrKystCiBzcmMvYmFja2Vu ZC9jb21tYW5kcy92aWV3LmMgICAgICAgICAgICAgICAgICAgfCAgIDQgKy0KIHNyYy9iYWNr ZW5kL25vZGVzL25vZGVGdW5jcy5jICAgICAgICAgICAgICAgICB8ICAgMyArCiBzcmMvYmFj a2VuZC9wYXJzZXIvZ3JhbS55ICAgICAgICAgICAgICAgICAgICAgfCAgNDMgKy0KIHNyYy9i YWNrZW5kL3BhcnNlci9wYXJzZV9yZWxhdGlvbi5jICAgICAgICAgICB8ICAxMCArCiBzcmMv YmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jICAgICAgICAgICAgfCAxNDUgKysrLQog c3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMgICAgICAgICAgIHwgIDg3ICsr CiBzcmMvYmFja2VuZC91dGlscy9jYWNoZS9zeXNjYWNoZS5jICAgICAgICAgICAgfCAgMjEg Kwogc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9hcmNoaXZlci5jICAgICAgICAgIHwgICAx ICsKIHNyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgICAgICAgICAgICAgICAgICAgICB8IDE3 MyArKystCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oICAgICAgICAgICAgICAgICAgICAg fCAgMTQgKwogc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXBfc29ydC5jICAgICAgICAgICAgICAg IHwgICA3ICsKIHNyYy9iaW4vcHNxbC9kZXNjcmliZS5jICAgICAgICAgICAgICAgICAgICAg ICB8ICAzNiArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL2RlcGVuZGVuY3kuaCAgICAgICAgICAg ICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9oZWFwLmggICAgICAgICAgICAgICAg ICAgIHwgICA0ICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvbWVzb24uYnVpbGQgICAgICAgICAg ICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2luZGV4LmggICAgICAgICAg ICAgICAgfCAgIDEgLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wZXJpb2QuaCAgICAgICAg ICAgICAgIHwgIDU0ICsrCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3JhbmdlLmggICAgICAg ICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvY29tbWFuZHMvdGFibGVjbWRzLmggICAg ICAgICAgICAgIHwgICA0ICstCiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggICAg ICAgICAgICAgICAgfCAgMzkgKy0KIHNyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV91dGlsY21k LmggICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaCAg ICAgICAgICAgICAgICAgfCAgIDMgKwogc3JjL2luY2x1ZGUvdXRpbHMvc3lzY2FjaGUuaCAg ICAgICAgICAgICAgICAgIHwgICAzICsKIC4uLi90ZXN0X2RkbF9kZXBhcnNlL3Rlc3RfZGRs X2RlcGFyc2UuYyAgICAgICB8ICAgNiArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Bl cmlvZHMub3V0ICAgICAgICAgfCAxNzcgKysrKwogc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxl bF9zY2hlZHVsZSAgICAgICAgICAgIHwgICAyICstCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9w ZXJpb2RzLnNxbCAgICAgICAgICAgICAgfCAxMTkgKysrCiA0OCBmaWxlcyBjaGFuZ2VkLCAy MzE2IGluc2VydGlvbnMoKyksIDQ0IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0 IHNyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcGVyaW9kLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBz cmMvaW5jbHVkZS9jYXRhbG9nL3BnX3BlcmlvZC5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wZXJpb2RzLm91dAogY3JlYXRlIG1vZGUgMTAwNjQ0 IHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BlcmlvZHMuc3FsCgpkaWZmIC0tZ2l0IGEvZG9jL3Ny Yy9zZ21sL2NhdGFsb2dzLnNnbWwgYi9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbAppbmRl eCA1NDEyZjJkYWEwLi5mNjMyZTQyN2NmIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvY2F0 YWxvZ3Muc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbApAQCAtMjMwLDYg KzIzMCwxMSBAQAogICAgICAgPGVudHJ5PmluZm9ybWF0aW9uIGFib3V0IHBhcnRpdGlvbiBr ZXkgb2YgdGFibGVzPC9lbnRyeT4KICAgICAgPC9yb3c+CiAKKyAgICAgPHJvdz4KKyAgICAg IDxlbnRyeT48bGluayBsaW5rZW5kPSJjYXRhbG9nLXBnLXBlcmlvZCI+PHN0cnVjdG5hbWU+ cGdfcGVyaW9kPC9zdHJ1Y3RuYW1lPjwvbGluaz48L2VudHJ5PgorICAgICAgPGVudHJ5PnBl cmlvZHM8L2VudHJ5PgorICAgICA8L3Jvdz4KKwogICAgICA8cm93PgogICAgICAgPGVudHJ5 PjxsaW5rIGxpbmtlbmQ9ImNhdGFsb2ctcGctcG9saWN5Ij48c3RydWN0bmFtZT5wZ19wb2xp Y3k8L3N0cnVjdG5hbWU+PC9saW5rPjwvZW50cnk+CiAgICAgICA8ZW50cnk+cm93LXNlY3Vy aXR5IHBvbGljaWVzPC9lbnRyeT4KQEAgLTU3MjUsNiArNTczMCwxMTMgQEAgU0NSQU0tU0hB LTI1NiQ8cmVwbGFjZWFibGU+Jmx0O2l0ZXJhdGlvbiBjb3VudCZndDs8L3JlcGxhY2VhYmxl Pjo8cmVwbGFjZWFibGU+JmwKICAgICAgICBhcmUgc2ltcGxlIHJlZmVyZW5jZXMuCiAgICAg ICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CisKKyAgICA8L3Rib2R5PgorICAgPC90 Z3JvdXA+CisgIDwvdGFibGU+CisgPC9zZWN0MT4KKworCisgPHNlY3QxIGlkPSJjYXRhbG9n LXBnLXBlcmlvZCI+CisgIDx0aXRsZT48c3RydWN0bmFtZT5wZ19wZXJpb2Q8L3N0cnVjdG5h bWU+PC90aXRsZT4KKworICA8aW5kZXh0ZXJtIHpvbmU9ImNhdGFsb2ctcGctcGVyaW9kIj4K KyAgIDxwcmltYXJ5PnBnX3BlcmlvZDwvcHJpbWFyeT4KKyAgPC9pbmRleHRlcm0+CisKKyAg PHBhcmE+CisgICBUaGUgY2F0YWxvZyA8c3RydWN0bmFtZT5wZ19wZXJpb2Q8L3N0cnVjdG5h bWU+IHN0b3JlcworICAgaW5mb3JtYXRpb24gYWJvdXQgc3lzdGVtIGFuZCBhcHBsaWNhdGlv biB0aW1lIHBlcmlvZHMuCisgIDwvcGFyYT4KKworICA8cGFyYT4KKyAgIFBlcmlvZHMgYXJl IGRlc2NyaWJlZCBpbiA8eHJlZiBsaW5rZW5kPSJkZGwtcGVyaW9kcyIvPi4KKyAgPC9wYXJh PgorCisgIDx0YWJsZT4KKyAgIDx0aXRsZT48c3RydWN0bmFtZT5wZ19wZXJpb2Q8L3N0cnVj dG5hbWU+IENvbHVtbnM8L3RpdGxlPgorCisgICA8dGdyb3VwIGNvbHM9IjEiPgorICAgIDx0 aGVhZD4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2Vu dHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgQ29sdW1uIFR5 cGUKKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIERlc2NyaXB0aW9uCisg ICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisgICAgPC90aGVhZD4KKworICAg IDx0Ym9keT4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxl X2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVj dGZpZWxkPm9pZDwvc3RydWN0ZmllbGQ+IDx0eXBlPm9pZDwvdHlwZT4KKyAgICAgIDwvcGFy YT4KKyAgICAgIDxwYXJhPgorICAgICAgIFJvdyBpZGVudGlmaWVyCisgICAgICA8L3BhcmE+ PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xl PSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+ CisgICAgICAgPHN0cnVjdGZpZWxkPnBlcm5hbWU8L3N0cnVjdGZpZWxkPiA8dHlwZT50ZXh0 PC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgUGVyaW9kIG5h bWUKKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93Pgor ICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNv bHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+cGVycmVsaWQ8L3N0cnVj dGZpZWxkPiA8dHlwZT5vaWQ8L3R5cGU+CisgICAgICAgKHJlZmVyZW5jZXMgPGxpbmsgbGlu a2VuZD0iY2F0YWxvZy1wZy1jbGFzcyI+PHN0cnVjdG5hbWU+cGdfY2xhc3M8L3N0cnVjdG5h bWU+PC9saW5rPi48c3RydWN0ZmllbGQ+b2lkPC9zdHJ1Y3RmaWVsZD4pCisgICAgICA8L3Bh cmE+CisgICAgICA8cGFyYT4KKyAgICAgICBUaGUgdGFibGUgdGhpcyBwZXJpb2QgYmVsb25n cyB0bworICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+ CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0i Y29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5wZXJzdGFydDwvc3Ry dWN0ZmllbGQ+IDx0eXBlPmludDI8L3R5cGU+CisgICAgICAgKHJlZmVyZW5jZXMgPGxpbmsg bGlua2VuZD0iY2F0YWxvZy1wZy1hdHRyaWJ1dGUiPjxzdHJ1Y3RuYW1lPnBnX2F0dHJpYnV0 ZTwvc3RydWN0bmFtZT48L2xpbms+LjxzdHJ1Y3RmaWVsZD5hdHRudW08L3N0cnVjdGZpZWxk PikKKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIFRoZSBudW1iZXIgb2Yg dGhlIHN0YXJ0IGNvbHVtbgorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93Pgor CisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+ PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5w ZXJlbmQ8L3N0cnVjdGZpZWxkPiA8dHlwZT5pbnQyPC90eXBlPgorICAgICAgIChyZWZlcmVu Y2VzIDxsaW5rIGxpbmtlbmQ9ImNhdGFsb2ctcGctYXR0cmlidXRlIj48c3RydWN0bmFtZT5w Z19hdHRyaWJ1dGU8L3N0cnVjdG5hbWU+PC9saW5rPi48c3RydWN0ZmllbGQ+YXR0bnVtPC9z dHJ1Y3RmaWVsZD4pCisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBUaGUg bnVtYmVyIG9mIHRoZSBlbmQgY29sdW1uCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAg PC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxl X2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVj dGZpZWxkPnBlcnJhbmdlPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+aW50MjwvdHlwZT4KKyAgICAg ICAocmVmZXJlbmNlcyA8bGluayBsaW5rZW5kPSJjYXRhbG9nLXBnLWF0dHJpYnV0ZSI+PHN0 cnVjdG5hbWU+cGdfYXR0cmlidXRlPC9zdHJ1Y3RuYW1lPjwvbGluaz4uPHN0cnVjdGZpZWxk PmF0dG51bTwvc3RydWN0ZmllbGQ+KQorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+Cisg ICAgICAgVGhlIG51bWJlciBvZiB0aGUgPGxpdGVyYWw+R0VORVJBVEVEPC9saXRlcmFsPiBj b2x1bW4gdGhhdCBpbXBsZW1lbnRzIHRoZSA8bGl0ZXJhbD5QRVJJT0Q8L2xpdGVyYWw+Lgor ICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAg ICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1u X2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5wZXJjb25zdHJhaW50PC9zdHJ1 Y3RmaWVsZD4gPHR5cGU+b2lkPC90eXBlPgorICAgICAgIChyZWZlcmVuY2VzIDxsaW5rIGxp bmtlbmQ9ImNhdGFsb2ctcGctY29uc3RyYWludCI+PHN0cnVjdG5hbWU+cGdfY29uc3RyYWlu dDwvc3RydWN0bmFtZT48L2xpbms+LjxzdHJ1Y3RmaWVsZD5vaWQ8L3N0cnVjdGZpZWxkPikK KyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIFRoZSBPSUQgb2YgdGhlIHBl cmlvZCdzIDxsaXRlcmFsPkNIRUNLPC9saXRlcmFsPiBjb25zdHJhaW50CisgICAgICA8L3Bh cmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKICAgICA8L3Rib2R5PgogICAgPC90Z3JvdXA+ CiAgIDwvdGFibGU+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvZGRsLnNnbWwgYi9kb2Mv c3JjL3NnbWwvZGRsLnNnbWwKaW5kZXggMDc1ZmYzMjk5MS4uOTRhODkyY2EyOSAxMDA2NDQK LS0tIGEvZG9jL3NyYy9zZ21sL2RkbC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9kZGwuc2dt bApAQCAtMTI2Myw2ICsxMjYzLDY0IEBAIENSRUFURSBUQUJMRSBjaXJjbGVzICgKICAgPC9z ZWN0Mj4KICA8L3NlY3QxPgogCisgPHNlY3QxIGlkPSJkZGwtcGVyaW9kcyI+CisgIDx0aXRs ZT5QZXJpb2RzPC90aXRsZT4KKworICA8cGFyYT4KKyAgIFBlcmlvZHMgYXJlIGRlZmluaXRp b25zIG9uIGEgdGFibGUgdGhhdCBhc3NvY2lhdGUgYSBwZXJpb2QgbmFtZSB3aXRoIGEgc3Rh cnQKKyAgIGNvbHVtbiBhbmQgYW4gZW5kIGNvbHVtbi4gIEJvdGggY29sdW1ucyBtdXN0IGJl IG9mIGV4YWN0bHkgdGhlIHNhbWUgdHlwZQorICAgKGluY2x1ZGluZyBjb2xsYXRpb24pLCBo YXZlIGEgYnRyZWUgb3BlcmF0b3IgY2xhc3MsIGFuZCB0aGUgc3RhcnQgY29sdW1uCisgICB2 YWx1ZSBtdXN0IGJlIHN0cmljdGx5IGxlc3MgdGhhbiB0aGUgZW5kIGNvbHVtbiB2YWx1ZS4K KyAgPC9wYXJhPgorCisgIDxwYXJhPgorICAgVGhlcmUgYXJlIHR3byB0eXBlcyBvZiBwZXJp b2RzOiBhcHBsaWNhdGlvbiBhbmQgc3lzdGVtLiAgU3lzdGVtIHBlcmlvZHMgYXJlCisgICBk aXN0aW5ndWlzaGVkIGJ5IHRoZWlyIG5hbWUgd2hpY2ggbXVzdCBiZSA8bGl0ZXJhbD5TWVNU RU1fVElNRTwvbGl0ZXJhbD4uICBBbnkKKyAgIG90aGVyIG5hbWUgaXMgYW4gYXBwbGljYXRp b24gcGVyaW9kLgorICA8L3BhcmE+CisKKyAgPHNlY3QyIGlkPSJkZGwtcGVyaW9kcy1hcHBs aWNhdGlvbi1wZXJpb2RzIj4KKyAgPHRpdGxlPkFwcGxpY2F0aW9uIFBlcmlvZHM8L3RpdGxl PgorCisgICA8aW5kZXh0ZXJtPgorICAgIDxwcmltYXJ5PnBlcmlvZDwvcHJpbWFyeT4KKyAg ICA8c2Vjb25kYXJ5PmFwcGxpY2F0aW9uPC9zZWNvbmRhcnk+CisgICA8L2luZGV4dGVybT4K KworICAgPHBhcmE+CisgICAgQXBwbGljYXRpb24gcGVyaW9kcyBhcmUgZGVmaW5lZCBvbiBh IHRhYmxlIHVzaW5nIHRoZSBmb2xsb3dpbmcgc3ludGF4OgorICAgPC9wYXJhPgorCis8cHJv Z3JhbWxpc3Rpbmc+CitDUkVBVEUgVEFCTEUgYmlsbGluZ19hZGRyZXNzZXMgKAorICBjdXN0 b21lcl9pZCBpbnRlZ2VyLAorICBhZGRyZXNzX2lkIGludGVnZXIsCisgIHZhbGlkX2Zyb20g ZGF0ZSwKKyAgdmFsaWRfdG8gZGF0ZSwKKyAgPGVtcGhhc2lzPlBFUklPRCBGT1IgdmFsaWRp dHkgKHZhbGlkX2Zyb20sIHZhbGlkX3RvKTwvZW1waGFzaXM+CispOworPC9wcm9ncmFtbGlz dGluZz4KKworICAgPHBhcmE+CisgICAgQXBwbGljYXRpb24gcGVyaW9kcyBjYW4gYmUgdXNl ZCB0byBkZWZpbmUgdGVtcG9yYWwgcHJpbWFyeSBhbmQgZm9yZWlnbiBrZXlzLgorICAgIEFu eSB0YWJsZSB3aXRoIGEgdGVtcG9yYWwgcHJpbWFyeSBrZXkgaXMgYSB0ZW1wb3JhbCB0YWJs ZSBhbmQgc3VwcG9ydHMgdGVtcG9yYWwgdXBkYXRlIGFuZCBkZWxldGUgY29tbWFuZHMuCisg ICA8L3BhcmE+CisgIDwvc2VjdDI+CisKKyAgPHNlY3QyIGlkPSJkZGwtcGVyaW9kcy1zeXN0 ZW0tcGVyaW9kcyI+CisgICA8dGl0bGU+U3lzdGVtIFBlcmlvZHM8L3RpdGxlPgorCisgICA8 aW5kZXh0ZXJtPgorICAgIDxwcmltYXJ5PnBlcmlvZDwvcHJpbWFyeT4KKyAgICA8c2Vjb25k YXJ5PnN5c3RlbTwvc2Vjb25kYXJ5PgorICAgPC9pbmRleHRlcm0+CisKKyAgIDxwYXJhPgor ICAgIFBlcmlvZHMgZm9yIDxsaXRlcmFsPlNZU1RFTV9USU1FPC9saXRlcmFsPiBhcmUgY3Vy cmVudGx5IG5vdCBpbXBsZW1lbnRlZC4KKyAgIDwvcGFyYT4KKyAgPC9zZWN0Mj4KKyA8L3Nl Y3QxPgorCiAgPHNlY3QxIGlkPSJkZGwtc3lzdGVtLWNvbHVtbnMiPgogICA8dGl0bGU+U3lz dGVtIENvbHVtbnM8L3RpdGxlPgogCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvaW5mb3Jt YXRpb25fc2NoZW1hLnNnbWwgYi9kb2Mvc3JjL3NnbWwvaW5mb3JtYXRpb25fc2NoZW1hLnNn bWwKaW5kZXggOWMzOWU5YWFiNS4uODQxMmJmMGE4NyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9z Z21sL2luZm9ybWF0aW9uX3NjaGVtYS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9pbmZvcm1h dGlvbl9zY2hlbWEuc2dtbApAQCAtNDE3MSw2ICs0MTcxLDY5IEBAIE9SREVSIEJZIGMub3Jk aW5hbF9wb3NpdGlvbjsKICAgPC90YWJsZT4KICA8L3NlY3QxPgogCisgPHNlY3QxIGlkPSJp bmZvc2NoZW1hLXBlcmlvZHMiPgorICA8dGl0bGU+PGxpdGVyYWw+cGVyaW9kczwvbGl0ZXJh bD48L3RpdGxlPgorCisgIDxwYXJhPgorICAgVGhlIHZpZXcgPGxpdGVyYWw+cGFyYW1ldGVy czwvbGl0ZXJhbD4gY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgdGhlCisgICBwZXJpb2Rz IG9mIGFsbCB0YWJsZXMgaW4gdGhlIGN1cnJlbnQgZGF0YWJhc2UuICBUaGUgc3RhcnQgYW5k IGVuZCBjb2x1bW4KKyAgIG5hbWVzIGFyZSBvbmx5IHNob3duIGlmIHRoZSBjdXJyZW50IHVz ZXIgaGFzIGFjY2VzcyB0byB0aGVtIChieSB3YXkgb2YgYmVpbmcKKyAgIHRoZSBvd25lciBv ciBoYXZpbmcgc29tZSBwcml2aWxlZ2UpLgorICA8L3BhcmE+CisKKyAgPHRhYmxlPgorICAg PHRpdGxlPjxsaXRlcmFsPnBlcmlvZHM8L2xpdGVyYWw+IENvbHVtbnM8L3RpdGxlPgorCisg ICA8dGdyb3VwIGNvbHM9IjMiPgorICAgIDx0aGVhZD4KKyAgICAgPHJvdz4KKyAgICAgIDxl bnRyeT5OYW1lPC9lbnRyeT4KKyAgICAgIDxlbnRyeT5EYXRhIFR5cGU8L2VudHJ5PgorICAg ICAgPGVudHJ5PkRlc2NyaXB0aW9uPC9lbnRyeT4KKyAgICAgPC9yb3c+CisgICAgPC90aGVh ZD4KKworICAgIDx0Ym9keT4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeT48bGl0ZXJhbD50 YWJsZV9jYXRhbG9nPC9saXRlcmFsPjwvZW50cnk+CisgICAgICA8ZW50cnk+PHR5cGU+c3Fs X2lkZW50aWZpZXI8L3R5cGU+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT5OYW1lIG9mIHRoZSBk YXRhYmFzZSBjb250YWluaW5nIHRoZSBwZXJpb2QgKGFsd2F5cyB0aGUgY3VycmVudCBkYXRh YmFzZSk8L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5 PjxsaXRlcmFsPnRhYmxlX3NjaGVtYTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgPGVudHJ5 Pjx0eXBlPnNxbF9pZGVudGlmaWVyPC90eXBlPjwvZW50cnk+CisgICAgICA8ZW50cnk+TmFt ZSBvZiB0aGUgc2NoZW1hIGNvbnRhaW5pbmcgdGhlIHBlcmlvZDwvZW50cnk+CisgICAgIDwv cm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnk+PGxpdGVyYWw+dGFibGVfbmFtZTwv bGl0ZXJhbD48L2VudHJ5PgorICAgICAgPGVudHJ5Pjx0eXBlPnNxbF9pZGVudGlmaWVyPC90 eXBlPjwvZW50cnk+CisgICAgICA8ZW50cnk+TmFtZSBvZiB0aGUgdGFibGUgY29udGFpbmlu ZyB0aGUgcGVyaW9kPC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAg IDxlbnRyeT48bGl0ZXJhbD5wZXJpb2RfbmFtZTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAg PGVudHJ5Pjx0eXBlPnNxbF9pZGVudGlmaWVyPC90eXBlPjwvZW50cnk+CisgICAgICA8ZW50 cnk+TmFtZSBvZiB0aGUgcGVyaW9kPC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJv dz4KKyAgICAgIDxlbnRyeT48bGl0ZXJhbD5zdGFydF9jb2x1bW5fbmFtZTwvbGl0ZXJhbD48 L2VudHJ5PgorICAgICAgPGVudHJ5Pjx0eXBlPnNxbF9pZGVudGlmaWVyPC90eXBlPjwvZW50 cnk+CisgICAgICA8ZW50cnk+TmFtZSBvZiB0aGUgc3RhcnQgY29sdW1uIGZvciB0aGUgcGVy aW9kPC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeT48 bGl0ZXJhbD5lbmRfY29sdW1uX25hbWU8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgIDxlbnRy eT48dHlwZT5zcWxfaWRlbnRpZmllcjwvdHlwZT48L2VudHJ5PgorICAgICAgPGVudHJ5Pk5h bWUgb2YgdGhlIGVuZCBjb2x1bW4gZm9yIHRoZSBwZXJpb2Q8L2VudHJ5PgorICAgICA8L3Jv dz4KKyAgICA8L3Rib2R5PgorICAgPC90Z3JvdXA+CisgIDwvdGFibGU+CisgPC9zZWN0MT4K KwogIDxzZWN0MSBpZD0iaW5mb3NjaGVtYS1yZWZlcmVudGlhbC1jb25zdHJhaW50cyI+CiAg IDx0aXRsZT48bGl0ZXJhbD5yZWZlcmVudGlhbF9jb25zdHJhaW50czwvbGl0ZXJhbD48L3Rp dGxlPgogCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3RhYmxlLnNnbWwg Yi9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3RhYmxlLnNnbWwKaW5kZXggMmM0MTM4ZTRlOS4u YWVlOTg2ZWZkNSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl90YWJsZS5z Z21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfdGFibGUuc2dtbApAQCAtNjAsNiAr NjAsOCBAQCBBTFRFUiBUQUJMRSBbIElGIEVYSVNUUyBdIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4KICAgICBBTFRFUiBDT05TVFJBSU5UIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb25zdHJhaW50X25hbWU8L3JlcGxhY2Vh YmxlPiBbIERFRkVSUkFCTEUgfCBOT1QgREVGRVJSQUJMRSBdIFsgSU5JVElBTExZIERFRkVS UkVEIHwgSU5JVElBTExZIElNTUVESUFURSBdCiAgICAgVkFMSURBVEUgQ09OU1RSQUlOVCA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29uc3RyYWludF9uYW1lPC9yZXBsYWNl YWJsZT4KICAgICBEUk9QIENPTlNUUkFJTlQgWyBJRiBFWElTVFMgXSAgPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPmNvbnN0cmFpbnRfbmFtZTwvcmVwbGFjZWFibGU+IFsgUkVT VFJJQ1QgfCBDQVNDQURFIF0KKyAgICBBREQgUEVSSU9EIEZPUiA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+cGVyaW9kX25hbWU8L3JlcGxhY2VhYmxlPiAoIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5zdGFydF9jb2x1bW48L3JlcGxhY2VhYmxlPiwgPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmVuZF9jb2x1bW48L3JlcGxhY2VhYmxlPiApIFsg V0lUSCAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wZXJpb2Rfb3B0aW9uPC9y ZXBsYWNlYWJsZT4gPSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dmFsdWU8L3Jl cGxhY2VhYmxlPiBbLCAuLi4gXSApIF0KKyAgICBEUk9QIFBFUklPRCBGT1IgPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBlcmlvZF9uYW1lPC9yZXBsYWNlYWJsZT4gWyBSRVNU UklDVCB8IENBU0NBREUgXQogICAgIERJU0FCTEUgVFJJR0dFUiBbIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj50cmlnZ2VyX25hbWU8L3JlcGxhY2VhYmxlPiB8IEFMTCB8IFVT RVIgXQogICAgIEVOQUJMRSBUUklHR0VSIFsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPnRyaWdnZXJfbmFtZTwvcmVwbGFjZWFibGU+IHwgQUxMIHwgVVNFUiBdCiAgICAgRU5B QkxFIFJFUExJQ0EgVFJJR0dFUiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dHJp Z2dlcl9uYW1lPC9yZXBsYWNlYWJsZT4KQEAgLTU3MSw2ICs1NzMsMjkgQEAgV0lUSCAoIE1P RFVMVVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bWVyaWNfbGl0ZXJhbDwv cmVwbGFjZWFibGU+LCBSRU0KICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+ CiAKKyAgIDx2YXJsaXN0ZW50cnkgaWQ9InNxbC1hbHRlcnRhYmxlLWRlc2MtYWRkLXBlcmlv ZCI+CisgICAgPHRlcm0+PGxpdGVyYWw+QUREIFBFUklPRCBGT1I8L2xpdGVyYWw+PC90ZXJt PgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBUaGlzIGZvcm0gYWRkcyBh IG5ldyBwZXJpb2QgdG8gYSB0YWJsZSB1c2luZyB0aGUgc2FtZSBzeW50YXggYXMKKyAgICAg IDx4cmVmIGxpbmtlbmQ9InNxbC1jcmVhdGV0YWJsZSIvPi4KKyAgICAgPC9wYXJhPgorICAg IDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgPHZhcmxpc3RlbnRyeSBp ZD0ic3FsLWFsdGVydGFibGUtZGVzYy1kcm9wLXBlcmlvZCI+CisgICAgPHRlcm0+PGxpdGVy YWw+RFJPUCBQRVJJT0QgRk9SPC9saXRlcmFsPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+Cisg ICAgIDxwYXJhPgorICAgICAgVGhpcyBmb3JtIGRyb3BzIHRoZSBzcGVjaWZpZWQgcGVyaW9k IG9uIGEgdGFibGUuICBUaGUgc3RhcnQgYW5kIGVuZAorICAgICAgY29sdW1ucyB3aWxsIG5v dCBiZSBkcm9wcGVkIGJ5IHRoaXMgY29tbWFuZCBidXQgdGhlCisgICAgICA8bGl0ZXJhbD5D SEVDSzwvbGl0ZXJhbD4gY29uc3RyYWludCB3aWxsIGJlLiAgWW91IHdpbGwgbmVlZCB0byBz YXkKKyAgICAgIDxsaXRlcmFsPkNBU0NBREU8L2xpdGVyYWw+IGlmIGFueXRoaW5nIG91dHNp ZGUgdGhlIHRhYmxlIGRlcGVuZHMgb24gdGhlCisgICAgICBjb2x1bW4uCisgICAgIDwvcGFy YT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKICAgIDx2YXJsaXN0 ZW50cnkgaWQ9InNxbC1hbHRlcnRhYmxlLWRlc2MtZGlzYWJsZS1lbmFibGUtdHJpZ2dlciI+ CiAgICAgPHRlcm0+PGxpdGVyYWw+RElTQUJMRTwvbGl0ZXJhbD4vPGxpdGVyYWw+RU5BQkxF IFsgUkVQTElDQSB8IEFMV0FZUyBdIFRSSUdHRVI8L2xpdGVyYWw+PC90ZXJtPgogICAgIDxs aXN0aXRlbT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY29tbWVudC5zZ21sIGIv ZG9jL3NyYy9zZ21sL3JlZi9jb21tZW50LnNnbWwKaW5kZXggNWI0M2M1NmIxMy4uNDljMmRm OTk0NCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9jb21tZW50LnNnbWwKKysrIGIv ZG9jL3NyYy9zZ21sL3JlZi9jb21tZW50LnNnbWwKQEAgLTQ0LDYgKzQ0LDcgQEAgQ09NTUVO VCBPTgogICBPUEVSQVRPUiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+b3BlcmF0 b3JfbmFtZTwvcmVwbGFjZWFibGU+ICg8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ bGVmdF90eXBlPC9yZXBsYWNlYWJsZT4sIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5yaWdodF90eXBlPC9yZXBsYWNlYWJsZT4pIHwKICAgT1BFUkFUT1IgQ0xBU1MgPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm9iamVjdF9uYW1lPC9yZXBsYWNlYWJsZT4gVVNJ TkcgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmluZGV4X21ldGhvZDwvcmVwbGFj ZWFibGU+IHwKICAgT1BFUkFUT1IgRkFNSUxZIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5vYmplY3RfbmFtZTwvcmVwbGFjZWFibGU+IFVTSU5HIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5pbmRleF9tZXRob2Q8L3JlcGxhY2VhYmxlPiB8CisgIFBFUklPRCA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVsYXRpb25fbmFtZTwvcmVwbGFjZWFi bGU+LjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wZXJpb2RfbmFtZTwvcmVwbGFj ZWFibGU+IHwKICAgUE9MSUNZIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wb2xp Y3lfbmFtZTwvcmVwbGFjZWFibGU+IE9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4gfAogICBbIFBST0NFRFVSQUwgXSBMQU5HVUFH RSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+b2JqZWN0X25hbWU8L3JlcGxhY2Vh YmxlPiB8CiAgIFBST0NFRFVSRSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cHJv Y2VkdXJlX25hbWU8L3JlcGxhY2VhYmxlPiBbICggWyBbIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5hcmdtb2RlPC9yZXBsYWNlYWJsZT4gXSBbIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5hcmduYW1lPC9yZXBsYWNlYWJsZT4gXSA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+YXJndHlwZTwvcmVwbGFjZWFibGU+IFssIC4uLl0gXSApIF0gfApA QCAtMzQxLDYgKzM0Miw3IEBAIENPTU1FTlQgT04gT1BFUkFUT1IgXiAodGV4dCwgdGV4dCkg SVMgJ1BlcmZvcm1zIGludGVyc2VjdGlvbiBvZiB0d28gdGV4dHMnOwogQ09NTUVOVCBPTiBP UEVSQVRPUiAtIChOT05FLCBpbnRlZ2VyKSBJUyAnVW5hcnkgbWludXMnOwogQ09NTUVOVCBP TiBPUEVSQVRPUiBDTEFTUyBpbnQ0b3BzIFVTSU5HIGJ0cmVlIElTICc0IGJ5dGUgaW50ZWdl ciBvcGVyYXRvcnMgZm9yIGJ0cmVlcyc7CiBDT01NRU5UIE9OIE9QRVJBVE9SIEZBTUlMWSBp bnRlZ2VyX29wcyBVU0lORyBidHJlZSBJUyAnYWxsIGludGVnZXIgb3BlcmF0b3JzIGZvciBi dHJlZXMnOworQ09NTUVOVCBPTiBQRVJJT0QgbXlfdGFibGUubXlfY29sdW1uIElTICdTYWxl cyBwcm9tb3Rpb24gdmFsaWRpdHknOwogQ09NTUVOVCBPTiBQT0xJQ1kgbXlfcG9saWN5IE9O IG15dGFibGUgSVMgJ0ZpbHRlciByb3dzIGJ5IHVzZXJzJzsKIENPTU1FTlQgT04gUFJPQ0VE VVJFIG15X3Byb2MgKGludGVnZXIsIGludGVnZXIpIElTICdSdW5zIGEgcmVwb3J0JzsKIENP TU1FTlQgT04gUFVCTElDQVRJT04gYWxsdGFibGVzIElTICdQdWJsaXNoZXMgYWxsIG9wZXJh dGlvbnMgb24gYWxsIHRhYmxlcyc7CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2Ny ZWF0ZV90YWJsZS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFibGUuc2dtbApp bmRleCAzMzI5YThkZWExLi45ZmFlMTU0MGRhIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwv cmVmL2NyZWF0ZV90YWJsZS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3Rh YmxlLnNnbWwKQEAgLTIzLDYgKzIzLDcgQEAgUG9zdGdyZVNRTCBkb2N1bWVudGF0aW9uCiA8 c3lub3BzaXM+CiBDUkVBVEUgWyBbIEdMT0JBTCB8IExPQ0FMIF0geyBURU1QT1JBUlkgfCBU RU1QIH0gfCBVTkxPR0dFRCBdIFRBQkxFIFsgSUYgTk9UIEVYSVNUUyBdIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4gKCBbCiAgIHsg PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJs ZT4gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmRhdGFfdHlwZTwvcmVwbGFjZWFi bGU+IFsgU1RPUkFHRSB7IFBMQUlOIHwgRVhURVJOQUwgfCBFWFRFTkRFRCB8IE1BSU4gfCBE RUZBVUxUIH0gXSBbIENPTVBSRVNTSU9OIDxyZXBsYWNlYWJsZT5jb21wcmVzc2lvbl9tZXRo b2Q8L3JlcGxhY2VhYmxlPiBdIFsgQ09MTEFURSA8cmVwbGFjZWFibGU+Y29sbGF0aW9uPC9y ZXBsYWNlYWJsZT4gXSBbIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5f Y29uc3RyYWludDwvcmVwbGFjZWFibGU+IFsgLi4uIF0gXQorICAgIHwgPHJlcGxhY2VhYmxl PnBlcmlvZF9kZWZpbml0aW9uPC9yZXBsYWNlYWJsZT4KICAgICB8IDxyZXBsYWNlYWJsZT50 YWJsZV9jb25zdHJhaW50PC9yZXBsYWNlYWJsZT4KICAgICB8IExJS0UgPHJlcGxhY2VhYmxl PnNvdXJjZV90YWJsZTwvcmVwbGFjZWFibGU+IFsgPHJlcGxhY2VhYmxlPmxpa2Vfb3B0aW9u PC9yZXBsYWNlYWJsZT4gLi4uIF0gfQogICAgIFssIC4uLiBdCkBAIC0zNyw2ICszOCw3IEBA IENSRUFURSBbIFsgR0xPQkFMIHwgTE9DQUwgXSB7IFRFTVBPUkFSWSB8IFRFTVAgfSB8IFVO TE9HR0VEIF0gVEFCTEUgWyBJRiBOT1QgRVhJCiBDUkVBVEUgWyBbIEdMT0JBTCB8IExPQ0FM IF0geyBURU1QT1JBUlkgfCBURU1QIH0gfCBVTkxPR0dFRCBdIFRBQkxFIFsgSUYgTk9UIEVY SVNUUyBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBs YWNlYWJsZT4KICAgICBPRiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dHlwZV9u YW1lPC9yZXBsYWNlYWJsZT4gWyAoCiAgIHsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWyBXSVRIIE9QVElPTlMgXSBbIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fY29uc3RyYWludDwvcmVwbGFjZWFi bGU+IFsgLi4uIF0gXQorICAgIHwgPHJlcGxhY2VhYmxlPnBlcmlvZF9kZWZpbml0aW9uPC9y ZXBsYWNlYWJsZT4KICAgICB8IDxyZXBsYWNlYWJsZT50YWJsZV9jb25zdHJhaW50PC9yZXBs YWNlYWJsZT4gfQogICAgIFssIC4uLiBdCiApIF0KQEAgLTQ5LDYgKzUxLDcgQEAgQ1JFQVRF IFsgWyBHTE9CQUwgfCBMT0NBTCBdIHsgVEVNUE9SQVJZIHwgVEVNUCB9IHwgVU5MT0dHRUQg XSBUQUJMRSBbIElGIE5PVCBFWEkKIENSRUFURSBbIFsgR0xPQkFMIHwgTE9DQUwgXSB7IFRF TVBPUkFSWSB8IFRFTVAgfSB8IFVOTE9HR0VEIF0gVEFCTEUgWyBJRiBOT1QgRVhJU1RTIF0g PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxl PgogICAgIFBBUlRJVElPTiBPRiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFy ZW50X3RhYmxlPC9yZXBsYWNlYWJsZT4gWyAoCiAgIHsgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWyBXSVRIIE9QVElPTlMgXSBb IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fY29uc3RyYWludDwvcmVw bGFjZWFibGU+IFsgLi4uIF0gXQorICAgIHwgPHJlcGxhY2VhYmxlPnBlcmlvZF9kZWZpbml0 aW9uPC9yZXBsYWNlYWJsZT4KICAgICB8IDxyZXBsYWNlYWJsZT50YWJsZV9jb25zdHJhaW50 PC9yZXBsYWNlYWJsZT4gfQogICAgIFssIC4uLiBdCiApIF0geyBGT1IgVkFMVUVTIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fYm91bmRfc3BlYzwvcmVwbGFj ZWFibGU+IHwgREVGQVVMVCB9CkBAIC03Myw2ICs3NiwxMSBAQCBDUkVBVEUgWyBbIEdMT0JB TCB8IExPQ0FMIF0geyBURU1QT1JBUlkgfCBURU1QIH0gfCBVTkxPR0dFRCBdIFRBQkxFIFsg SUYgTk9UIEVYSQogICAgIFsgT04gREVMRVRFIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5yZWZlcmVudGlhbF9hY3Rpb248L3JlcGxhY2VhYmxlPiBdIFsgT04gVVBEQVRFIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yZWZlcmVudGlhbF9hY3Rpb248L3JlcGxh Y2VhYmxlPiBdIH0KIFsgREVGRVJSQUJMRSB8IE5PVCBERUZFUlJBQkxFIF0gWyBJTklUSUFM TFkgREVGRVJSRUQgfCBJTklUSUFMTFkgSU1NRURJQVRFIF0KIAorPHBocmFzZT5hbmQgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBlcmlvZF9kZWZpbml0aW9uPC9yZXBsYWNl YWJsZT4gaXM6PC9waHJhc2U+CisKK1BFUklPRCBGT1IgeyA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+cGVyaW9kX25hbWU8L3JlcGxhY2VhYmxlPiB8IFNZU1RFTV9USU1FIH0g KCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2Vh YmxlPiwgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBs YWNlYWJsZT4gKQorWyBXSVRIICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBl cmlvZF9vcHRpb248L3JlcGxhY2VhYmxlPiA9IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj52YWx1ZTwvcmVwbGFjZWFibGU+IFssIC4uLiBdICkgXQorCiA8cGhyYXNlPmFuZCA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfY29uc3RyYWludDwvcmVwbGFj ZWFibGU+IGlzOjwvcGhyYXNlPgogCiBbIENPTlNUUkFJTlQgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPmNvbnN0cmFpbnRfbmFtZTwvcmVwbGFjZWFibGU+IF0KQEAgLTE0NCw2 ICsxNTIsMTQgQEAgV0lUSCAoIE1PRFVMVVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPm51bWVyaWNfbGl0ZXJhbDwvcmVwbGFjZWFibGU+LCBSRU0KICAgIG5hbWUgYXMgYW55 IGV4aXN0aW5nIGRhdGEgdHlwZSBpbiB0aGUgc2FtZSBzY2hlbWEuCiAgIDwvcGFyYT4KIAor ICA8cGFyYT4KKyAgIFBlcmlvZHMgbXkgYmUgZGVmaW5lZCBvbiB0YWJsZXMsIHNwZWNpZnlp bmcgdGhhdCB0d28gZXhpc3RpbmcgY29sdW1ucworICAgcmVwcmVzZW50IHN0YXJ0IGFuZCBl bmQgdmFsdWVzIGZvciB0aGUgcGVyaW9kLiAgUGVyaW9kcyBtYXkgaGF2ZSBhbnkgbmFtZQor ICAgdGhhdCBkb2Vzbid0IGNvbmZsaWN0IHdpdGggYSBjb2x1bW4gbmFtZSwgYnV0IHRoZSBu YW1lCisgICA8bGl0ZXJhbD5TWVNURU1fVElNRTwvbGl0ZXJhbD4gaXMgc3BlY2lhbCwgdXNl ZCBmb3IgdmVyc2lvbmluZyB0YWJsZXMuCisgICBTeXN0ZW0gcGVyaW9kcyBhcmUgbm90IHll dCBpbXBsZW1lbnRlZC4gIFNlZSA8eHJlZiBsaW5rZW5kPSJkZGwtcGVyaW9kcyIvPiBmb3Ig bW9yZSBkZXRhaWxzLgorICA8L3BhcmE+CisKICAgPHBhcmE+CiAgICBUaGUgb3B0aW9uYWwg Y29uc3RyYWludCBjbGF1c2VzIHNwZWNpZnkgY29uc3RyYWludHMgKHRlc3RzKSB0aGF0CiAg ICBuZXcgb3IgdXBkYXRlZCByb3dzIG11c3Qgc2F0aXNmeSBmb3IgYW4gaW5zZXJ0IG9yIHVw ZGF0ZSBvcGVyYXRpb24KQEAgLTgwNCw2ICs4MjAsMzAgQEAgV0lUSCAoIE1PRFVMVVMgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bWVyaWNfbGl0ZXJhbDwvcmVwbGFjZWFi bGU+LCBSRU0KICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgIDx2 YXJsaXN0ZW50cnkgaWQ9InNxbC1jcmVhdGV0YWJsZS1wYXJtcy1wZXJpb2QiPgorICAgIDx0 ZXJtPjxsaXRlcmFsPlBFUklPRCBGT1IgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PnBlcmlvZF9uYW1lPC9yZXBsYWNlYWJsZT4gKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiwgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gKSBbIFdJVEggKCA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGVyaW9kX29wdGlvbjwvcmVwbGFjZWFibGU+ID0g PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnZhbHVlPC9yZXBsYWNlYWJsZT4gWywg Li4uIF0gKSBdPC9saXRlcmFsPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJh PgorICAgICAgQSBwZXJpb2QgZGVmaW5pdGlvbiBnaXZlcyBzZW1hbnRpYyBtZWFuaW5nIHRv IHR3byBleGlzdGluZyBjb2x1bW5zIG9mCisgICAgICB0aGUgdGFibGUuICBJdCBkZWZpbmVz IGEgInN0YXJ0IGNvbHVtbiIgYW5kIGFuICJlbmQgY29sdW1uIiB3aGVyZSB0aGUKKyAgICAg IHN0YXJ0IHZhbHVlIGlzIHN0cmljdGx5IGxlc3MgdGhhbiB0aGUgZW5kIHZhbHVlLiAgQQor ICAgICAgPGxpdGVyYWw+Q0hFQ0s8L2xpdGVyYWw+IGNvbnN0cmFpbnQgaXMgYXV0b21hdGlj YWxseSBjcmVhdGVkIHRvIGVuZm9yY2UKKyAgICAgIHRoaXMuIFlvdSBjYW4gc3BlY2lmeSB0 aGUgbmFtZSBvZiB0aGF0IGNvbnN0cmFpbnQgd2l0aCB0aGUKKyAgICAgIDxsaXRlcmFsPmNo ZWNrX2NvbnN0cmFpbnRfbmFtZTwvbGl0ZXJhbD4gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPnBlcmlvZF9vcHRpb248L3JlcGxhY2VhYmxlPi4KKyAgICAgPC9wYXJhPgorCisg ICAgIDxwYXJhPgorICAgICAgQm90aCBjb2x1bW5zIG11c3QgaGF2ZSBleGFjdGx5IHRoZSBz YW1lIHR5cGUgYW5kIG11c3QgaGF2ZSBhIHJhbmdlIHR5cGUKKyAgICAgIGRlZmluZWQgZnJv bSB0aGVpciBiYXNlIHR5cGUuICBJZiB0aGVyZSBhcmUgc2V2ZXJhbCByYW5nZSB0eXBlcyBm b3IgdGhhdAorICAgICAgYmFzZSB0eXBlLCB5b3UgbXVzdCBzcGVjaWZ5IHdoaWNoIG9uZSB5 b3Ugd2FudCBieSB1c2luZyB0aGUKKyAgICAgIDxsaXRlcmFsPnJhbmdldHlwZTwvbGl0ZXJh bD4gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBlcmlvZF9vcHRpb248L3JlcGxh Y2VhYmxlPi4KKyAgICAgIEFueSBiYXNlIHR5cGUgaXMgYWxsb3dlZCwgYXMgbG9uZyBhcyBp dCBoYXMgYSByYW5nZSB0eXBlLCBhbHRob3VnaCBpdCBpcworICAgICAgZXhwZWN0ZWQgdGhh dCBtb3N0IHBlcmlvZHMgd2lsbCB1c2UgdGVtcG9yYWwgdHlwZXMgbGlrZSA8bGl0ZXJhbD50 aW1lc3RhbXB0ejwvbGl0ZXJhbD4KKyAgICAgIG9yIDxsaXRlcmFsPmRhdGU8L2xpdGVyYWw+ LgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5Pgor CiAgICA8dmFybGlzdGVudHJ5IGlkPSJzcWwtY3JlYXRldGFibGUtcGFybXMtY29uc3RyYWlu dCI+CiAgICAgPHRlcm0+PGxpdGVyYWw+Q09OU1RSQUlOVCA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+Y29uc3RyYWludF9uYW1lPC9yZXBsYWNlYWJsZT48L2xpdGVyYWw+PC90 ZXJtPgogICAgIDxsaXN0aXRlbT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cv TWFrZWZpbGUgYi9zcmMvYmFja2VuZC9jYXRhbG9nL01ha2VmaWxlCmluZGV4IDNlOTk5NDc5 M2QuLjUwMGI4MGZkMTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvTWFrZWZp bGUKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9NYWtlZmlsZQpAQCAtMzksNiArMzksNyBA QCBPQkpTID0gXAogCXBnX25hbWVzcGFjZS5vIFwKIAlwZ19vcGVyYXRvci5vIFwKIAlwZ19w YXJhbWV0ZXJfYWNsLm8gXAorCXBnX3BlcmlvZC5vIFwKIAlwZ19wcm9jLm8gXAogCXBnX3B1 YmxpY2F0aW9uLm8gXAogCXBnX3JhbmdlLm8gXApAQCAtMTExLDYgKzExMiw3IEBAIENBVEFM T0dfSEVBREVSUyA6PSBcCiAJcGdfY29sbGF0aW9uLmggXAogCXBnX3BhcmFtZXRlcl9hY2wu aCBcCiAJcGdfcGFydGl0aW9uZWRfdGFibGUuaCBcCisJcGdfcGVyaW9kLmggXAogCXBnX3Jh bmdlLmggXAogCXBnX3RyYW5zZm9ybS5oIFwKIAlwZ19zZXF1ZW5jZS5oIFwKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvYWNsY2hrLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9n L2FjbGNoay5jCmluZGV4IDNjZTZjMDliNDQuLjVkZDc4YzdkMDkgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvYWNsY2hrLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9h Y2xjaGsuYwpAQCAtMjgxNyw2ICsyODE3LDcgQEAgYWNsY2hlY2tfZXJyb3IoQWNsUmVzdWx0 IGFjbGVyciwgT2JqZWN0VHlwZSBvYmp0eXBlLAogCQkJCQljYXNlIE9CSkVDVF9ERUZBVUxU OgogCQkJCQljYXNlIE9CSkVDVF9ERUZBQ0w6CiAJCQkJCWNhc2UgT0JKRUNUX0RPTUNPTlNU UkFJTlQ6CisJCQkJCWNhc2UgT0JKRUNUX1BFUklPRDoKIAkJCQkJY2FzZSBPQkpFQ1RfUFVC TElDQVRJT05fTkFNRVNQQUNFOgogCQkJCQljYXNlIE9CSkVDVF9QVUJMSUNBVElPTl9SRUw6 CiAJCQkJCWNhc2UgT0JKRUNUX1JPTEU6CkBAIC0yOTU4LDYgKzI5NTksNyBAQCBhY2xjaGVj a19lcnJvcihBY2xSZXN1bHQgYWNsZXJyLCBPYmplY3RUeXBlIG9ianR5cGUsCiAJCQkJCWNh c2UgT0JKRUNUX0RFRkFDTDoKIAkJCQkJY2FzZSBPQkpFQ1RfRE9NQ09OU1RSQUlOVDoKIAkJ CQkJY2FzZSBPQkpFQ1RfUEFSQU1FVEVSX0FDTDoKKwkJCQkJY2FzZSBPQkpFQ1RfUEVSSU9E OgogCQkJCQljYXNlIE9CSkVDVF9QVUJMSUNBVElPTl9OQU1FU1BBQ0U6CiAJCQkJCWNhc2Ug T0JKRUNUX1BVQkxJQ0FUSU9OX1JFTDoKIAkJCQkJY2FzZSBPQkpFQ1RfUk9MRToKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvZGVwZW5kZW5jeS5jIGIvc3JjL2JhY2tlbmQv Y2F0YWxvZy9kZXBlbmRlbmN5LmMKaW5kZXggZjhhMTM2YmEwYS4uMjMyZjc3Yzk2ZSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9kZXBlbmRlbmN5LmMKKysrIGIvc3JjL2Jh Y2tlbmQvY2F0YWxvZy9kZXBlbmRlbmN5LmMKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRl ICJjYXRhbG9nL3BnX29wZXJhdG9yLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19vcGZhbWls eS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfcGFyYW1ldGVyX2FjbC5oIgorI2luY2x1ZGUg ImNhdGFsb2cvcGdfcGVyaW9kLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19wb2xpY3kuaCIK ICNpbmNsdWRlICJjYXRhbG9nL3BnX3Byb2MuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3B1 YmxpY2F0aW9uLmgiCkBAIC0xNTQsNiArMTU1LDcgQEAgc3RhdGljIGNvbnN0IE9pZCBvYmpl Y3RfY2xhc3Nlc1tdID0gewogCUNhc3RSZWxhdGlvbklkLAkJCQkvKiBPQ0xBU1NfQ0FTVCAq LwogCUNvbGxhdGlvblJlbGF0aW9uSWQsCQkvKiBPQ0xBU1NfQ09MTEFUSU9OICovCiAJQ29u c3RyYWludFJlbGF0aW9uSWQsCQkvKiBPQ0xBU1NfQ09OU1RSQUlOVCAqLworCVBlcmlvZFJl bGF0aW9uSWQsCQkJLyogT0NMQVNTX1BFUklPRCAqLwogCUNvbnZlcnNpb25SZWxhdGlvbklk LAkJLyogT0NMQVNTX0NPTlZFUlNJT04gKi8KIAlBdHRyRGVmYXVsdFJlbGF0aW9uSWQsCQkv KiBPQ0xBU1NfREVGQVVMVCAqLwogCUxhbmd1YWdlUmVsYXRpb25JZCwJCQkvKiBPQ0xBU1Nf TEFOR1VBR0UgKi8KQEAgLTE0NDMsNiArMTQ0NSwxMCBAQCBkb0RlbGV0aW9uKGNvbnN0IE9i amVjdEFkZHJlc3MgKm9iamVjdCwgaW50IGZsYWdzKQogCQkJUmVtb3ZlQ29uc3RyYWludEJ5 SWQob2JqZWN0LT5vYmplY3RJZCk7CiAJCQlicmVhazsKIAorCQljYXNlIE9DTEFTU19QRVJJ T0Q6CisJCQlSZW1vdmVQZXJpb2RCeUlkKG9iamVjdC0+b2JqZWN0SWQpOworCQkJYnJlYWs7 CisKIAkJY2FzZSBPQ0xBU1NfREVGQVVMVDoKIAkJCVJlbW92ZUF0dHJEZWZhdWx0QnlJZChv YmplY3QtPm9iamVjdElkKTsKIAkJCWJyZWFrOwpAQCAtMjg2Miw2ICsyODY4LDkgQEAgZ2V0 T2JqZWN0Q2xhc3MoY29uc3QgT2JqZWN0QWRkcmVzcyAqb2JqZWN0KQogCQljYXNlIENvbnN0 cmFpbnRSZWxhdGlvbklkOgogCQkJcmV0dXJuIE9DTEFTU19DT05TVFJBSU5UOwogCisJCWNh c2UgUGVyaW9kUmVsYXRpb25JZDoKKwkJCXJldHVybiBPQ0xBU1NfUEVSSU9EOworCiAJCWNh c2UgQ29udmVyc2lvblJlbGF0aW9uSWQ6CiAJCQlyZXR1cm4gT0NMQVNTX0NPTlZFUlNJT047 CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaGVhcC5jIGIvc3JjL2JhY2tl bmQvY2F0YWxvZy9oZWFwLmMKaW5kZXggM2U5Y2M0YmIxMC4uOTllMjAxYjQ1YiAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9oZWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0 YWxvZy9oZWFwLmMKQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX25h bWVzcGFjZS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfb3BjbGFzcy5oIgogI2luY2x1ZGUg ImNhdGFsb2cvcGdfcGFydGl0aW9uZWRfdGFibGUuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3Bn X3BlcmlvZC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfc3RhdGlzdGljLmgiCiAjaW5jbHVk ZSAiY2F0YWxvZy9wZ19zdWJzY3JpcHRpb25fcmVsLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9w Z190YWJsZXNwYWNlLmgiCkBAIC0yMDM5LDYgKzIwNDAsODEgQEAgU2V0QXR0ck1pc3Npbmco T2lkIHJlbGlkLCBjaGFyICphdHRuYW1lLCBjaGFyICp2YWx1ZSkKIAl0YWJsZV9jbG9zZSh0 YWJsZXJlbCwgQWNjZXNzRXhjbHVzaXZlTG9jayk7CiB9CiAKKy8qCisgKiBTdG9yZSBhIHBl cmlvZCBvZiByZWxhdGlvbiByZWwuCisgKgorICogUmV0dXJucyB0aGUgT0lEIG9mIHRoZSBu ZXcgcGdfcGVyaW9kIHR1cGxlLgorICovCitPaWQKK1N0b3JlUGVyaW9kKFJlbGF0aW9uIHJl bCwgY29uc3QgY2hhciAqcGVyaW9kbmFtZSwgQXR0ck51bWJlciBzdGFydG51bSwKKwkJCUF0 dHJOdW1iZXIgZW5kbnVtLCBBdHRyTnVtYmVyIHJhbmdlbnVtLCBPaWQgY29ub2lkKQorewor CURhdHVtCQl2YWx1ZXNbTmF0dHNfcGdfcGVyaW9kXTsKKwlib29sCQludWxsc1tOYXR0c19w Z19wZXJpb2RdOworCVJlbGF0aW9uCXBnX3BlcmlvZDsKKwlIZWFwVHVwbGUJdHVwbGU7CisJ T2lkCQkJb2lkOworCU5hbWVEYXRhCXBlcm5hbWU7CisJT2JqZWN0QWRkcmVzcwlteXNlbGYs IHJlZmVyZW5jZWQ7CisKKwlBc3NlcnQocmFuZ2VudW0gIT0gSW52YWxpZEF0dHJOdW1iZXIp OworCisJbmFtZXN0cmNweSgmcGVybmFtZSwgcGVyaW9kbmFtZSk7CisKKwlNZW1TZXQodmFs dWVzLCAwLCBzaXplb2YodmFsdWVzKSk7CisJTWVtU2V0KG51bGxzLCBmYWxzZSwgc2l6ZW9m KG51bGxzKSk7CisKKwlwZ19wZXJpb2QgPSB0YWJsZV9vcGVuKFBlcmlvZFJlbGF0aW9uSWQs IFJvd0V4Y2x1c2l2ZUxvY2spOworCisJb2lkID0gR2V0TmV3T2lkV2l0aEluZGV4KHBnX3Bl cmlvZCwgQXR0ckRlZmF1bHRPaWRJbmRleElkLCBBbnVtX3BnX3BlcmlvZF9vaWQpOworCXZh bHVlc1tBbnVtX3BnX3BlcmlvZF9vaWQgLSAxXSA9IE9iamVjdElkR2V0RGF0dW0ob2lkKTsK Kwl2YWx1ZXNbQW51bV9wZ19wZXJpb2RfcGVybmFtZSAtIDFdID0gTmFtZUdldERhdHVtKCZw ZXJuYW1lKTsKKwl2YWx1ZXNbQW51bV9wZ19wZXJpb2RfcGVycmVsaWQgLSAxXSA9IFJlbGF0 aW9uR2V0UmVsaWQocmVsKTsKKwl2YWx1ZXNbQW51bV9wZ19wZXJpb2RfcGVyc3RhcnQgLSAx XSA9IHN0YXJ0bnVtOworCXZhbHVlc1tBbnVtX3BnX3BlcmlvZF9wZXJlbmQgLSAxXSA9IGVu ZG51bTsKKwl2YWx1ZXNbQW51bV9wZ19wZXJpb2RfcGVycmFuZ2UgLSAxXSA9IHJhbmdlbnVt OworCXZhbHVlc1tBbnVtX3BnX3BlcmlvZF9wZXJjb25zdHJhaW50IC0gMV0gPSBjb25vaWQ7 CisKKwl0dXBsZSA9IGhlYXBfZm9ybV90dXBsZShSZWxhdGlvbkdldERlc2NyKHBnX3Blcmlv ZCksIHZhbHVlcywgbnVsbHMpOworCUNhdGFsb2dUdXBsZUluc2VydChwZ19wZXJpb2QsIHR1 cGxlKTsKKworCU9iamVjdEFkZHJlc3NTZXQobXlzZWxmLCBQZXJpb2RSZWxhdGlvbklkLCBv aWQpOworCisJLyogRHJvcCB0aGUgcGVyaW9kIHdoZW4gdGhlIHRhYmxlIGlzIGRyb3BwZWQu ICovCisJT2JqZWN0QWRkcmVzc1NldChyZWZlcmVuY2VkLCBSZWxhdGlvblJlbGF0aW9uSWQs IFJlbGF0aW9uR2V0UmVsaWQocmVsKSk7CisJcmVjb3JkRGVwZW5kZW5jeU9uKCZteXNlbGYs ICZyZWZlcmVuY2VkLCBERVBFTkRFTkNZX0FVVE8pOworCisJLyogRm9yYmlkIGRyb3BwaW5n IHRoZSBjb2x1bW5zIG9mIHRoZSBwZXJpb2QuICovCisJT2JqZWN0QWRkcmVzc1N1YlNldChy ZWZlcmVuY2VkLCBSZWxhdGlvblJlbGF0aW9uSWQsIFJlbGF0aW9uR2V0UmVsaWQocmVsKSwg c3RhcnRudW0pOworCXJlY29yZERlcGVuZGVuY3lPbigmbXlzZWxmLCAmcmVmZXJlbmNlZCwg REVQRU5ERU5DWV9OT1JNQUwpOworCU9iamVjdEFkZHJlc3NTdWJTZXQocmVmZXJlbmNlZCwg UmVsYXRpb25SZWxhdGlvbklkLCBSZWxhdGlvbkdldFJlbGlkKHJlbCksIGVuZG51bSk7CisJ cmVjb3JkRGVwZW5kZW5jeU9uKCZteXNlbGYsICZyZWZlcmVuY2VkLCBERVBFTkRFTkNZX05P Uk1BTCk7CisKKwkvKgorCSAqIFRoZSByYW5nZSBjb2x1bW4gaXMgYW4gaW1wbGVtZW50YXRp b24gZGV0YWlsLAorCSAqIGJ1dCB3ZSBjYW4ndCB1c2UgREVQRU5ERU5DWV9JTlRFUk5BTAor CSAqIGJlY2F1c2UgZHJvcHBpbmcgdGhlIHRhYmxlIHdpbGwgY2hlY2sgZm9yIGRlcGVuZGVu Y2llcyBvbiBhbGwgc3Vib2JqZWN0cyB0b28KKwkgKiAoaW4gZmluZERlcGVuZGVudE9iamVj dHMpLgorCSAqIEJ1dCBpZiB3ZSBtYWtlIGFuIEFVVE8gZGVwZW5kZW5jeSBvbmUgd2F5IHdl IHdpbGwgYXV0by1kcm9wIHRoZSBjb2x1bW4KKwkgKiB3aGVuIHdlIGRyb3AgdGhlIFBFUklP RCwKKwkgKiBhbmQgYSBOT1JNQUwgZGVwZW5kZW5jeSB0aGUgb3RoZXIgd2F5IHdlIHdpbGwg Zm9yYmlkIGRyb3BwaW5nIHRoZSBjb2x1bW4gZGlyZWN0bHkuCisJICovCisJT2JqZWN0QWRk cmVzc1N1YlNldChyZWZlcmVuY2VkLCBSZWxhdGlvblJlbGF0aW9uSWQsIFJlbGF0aW9uR2V0 UmVsaWQocmVsKSwgcmFuZ2VudW0pOworCXJlY29yZERlcGVuZGVuY3lPbigmcmVmZXJlbmNl ZCwgJm15c2VsZiwgREVQRU5ERU5DWV9BVVRPKTsKKwlyZWNvcmREZXBlbmRlbmN5T24oJm15 c2VsZiwgJnJlZmVyZW5jZWQsIERFUEVOREVOQ1lfTk9STUFMKTsKKworCS8qCisJICogVGhl IGNvbnN0cmFpbnQgaXMgYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsLCBzbyB3ZSBtYXJrIGl0 IGFzIHN1Y2guCisJICogKE5vdGUgdGhhdCBteXNlbGYgYW5kIHJlZmVyZW5jZWQgYXJlIHJl dmVyc2VkIGZvciB0aGlzIG9uZS4pCisJICovCisJT2JqZWN0QWRkcmVzc1NldChyZWZlcmVu Y2VkLCBDb25zdHJhaW50UmVsYXRpb25JZCwgY29ub2lkKTsKKwlyZWNvcmREZXBlbmRlbmN5 T24oJnJlZmVyZW5jZWQsICZteXNlbGYsIERFUEVOREVOQ1lfSU5URVJOQUwpOworCisJdGFi bGVfY2xvc2UocGdfcGVyaW9kLCBSb3dFeGNsdXNpdmVMb2NrKTsKKworCXJldHVybiBvaWQ7 Cit9CisKIC8qCiAgKiBTdG9yZSBhIGNoZWNrLWNvbnN0cmFpbnQgZXhwcmVzc2lvbiBmb3Ig dGhlIGdpdmVuIHJlbGF0aW9uLgogICoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFs b2cvaW5mb3JtYXRpb25fc2NoZW1hLnNxbCBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5mb3Jt YXRpb25fc2NoZW1hLnNxbAppbmRleCAxMGIzNGMzYzViLi4xMTA0MzMxMjg5IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL2luZm9ybWF0aW9uX3NjaGVtYS5zcWwKKysrIGIv c3JjL2JhY2tlbmQvY2F0YWxvZy9pbmZvcm1hdGlvbl9zY2hlbWEuc3FsCkBAIC0xMjEwLDcg KzEyMTAsMjggQEAgR1JBTlQgU0VMRUNUIE9OIHBhcmFtZXRlcnMgVE8gUFVCTElDOwogICog UEVSSU9EUyB2aWV3CiAgKi8KIAotLS0gZmVhdHVyZSBub3Qgc3VwcG9ydGVkCitDUkVBVEUg VklFVyBwZXJpb2RzIEFTCisgICAgU0VMRUNUIGN1cnJlbnRfZGF0YWJhc2UoKTo6aW5mb3Jt YXRpb25fc2NoZW1hLnNxbF9pZGVudGlmaWVyIEFTIHRhYmxlX2NhdGFsb2csCisgICAgICAg ICAgIG5jLm5zcG5hbWU6OmluZm9ybWF0aW9uX3NjaGVtYS5zcWxfaWRlbnRpZmllciBBUyB0 YWJsZV9zY2hlbWEsCisgICAgICAgICAgIGMucmVsbmFtZTo6aW5mb3JtYXRpb25fc2NoZW1h LnNxbF9pZGVudGlmaWVyIEFTIHRhYmxlX25hbWUsCisgICAgICAgICAgIHAucGVybmFtZTo6 aW5mb3JtYXRpb25fc2NoZW1hLnNxbF9pZGVudGlmaWVyIEFTIHBlcmlvZF9uYW1lLAorICAg ICAgICAgICBDQVNFIFdIRU4gcGdfaGFzX3JvbGUoYy5yZWxvd25lciwgJ1VTQUdFJykKKyAg ICAgICAgICAgICAgICAgIE9SIGhhc19jb2x1bW5fcHJpdmlsZWdlKHNhLmF0dHJlbGlkLCBz YS5hdHRudW0sICdTRUxFQ1QsIElOU0VSVCwgVVBEQVRFLCBSRUZFUkVOQ0VTJykKKyAgICAg ICAgICAgICAgICBUSEVOIHNhLmF0dG5hbWU6OmluZm9ybWF0aW9uX3NjaGVtYS5zcWxfaWRl bnRpZmllcgorICAgICAgICAgICBFTkQgQVMgc3RhcnRfY29sdW1uX25hbWUsCisgICAgICAg ICAgIENBU0UgV0hFTiBwZ19oYXNfcm9sZShjLnJlbG93bmVyLCAnVVNBR0UnKQorICAgICAg ICAgICAgICAgICAgT1IgaGFzX2NvbHVtbl9wcml2aWxlZ2UoZWEuYXR0cmVsaWQsIGVhLmF0 dG51bSwgJ1NFTEVDVCwgSU5TRVJULCBVUERBVEUsIFJFRkVSRU5DRVMnKQorICAgICAgICAg ICAgICAgIFRIRU4gZWEuYXR0bmFtZTo6aW5mb3JtYXRpb25fc2NoZW1hLnNxbF9pZGVudGlm aWVyCisgICAgICAgICAgIEVORCBBUyBlbmRfY29sdW1uX25hbWUKKyAgICBGUk9NIHBnX3Bl cmlvZCBBUyBwCisgICAgSk9JTiBwZ19jbGFzcyBBUyBjIE9OIGMub2lkID0gcC5wZXJyZWxp ZAorICAgIEpPSU4gcGdfbmFtZXNwYWNlIEFTIG5jIE9OIG5jLm9pZCA9IGMucmVsbmFtZXNw YWNlCisgICAgSk9JTiBwZ19hdHRyaWJ1dGUgQVMgc2EgT04gKHNhLmF0dHJlbGlkLCBzYS5h dHRudW0pID0gKHAucGVycmVsaWQsIHAucGVyc3RhcnQpCisgICAgSk9JTiBwZ19hdHRyaWJ1 dGUgQVMgZWEgT04gKGVhLmF0dHJlbGlkLCBlYS5hdHRudW0pID0gKHAucGVycmVsaWQsIHAu cGVyZW5kKQorICAgIFdIRVJFIE5PVCBwZ19pc19vdGhlcl90ZW1wX3NjaGVtYShuYy5vaWQp CisgICAgICBBTkQgYy5yZWxraW5kIElOICgncicsICd2Jyk7CisKK0dSQU5UIFNFTEVDVCBP TiBwZXJpb2RzIFRPIFBVQkxJQzsKIAogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv Y2F0YWxvZy9tZXNvbi5idWlsZCBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvbWVzb24uYnVpbGQK aW5kZXggZmE2NjA5ZTU3Ny4uYzQ5OWNkMmY1ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv Y2F0YWxvZy9tZXNvbi5idWlsZAorKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL21lc29uLmJ1 aWxkCkBAIC0yNiw2ICsyNiw3IEBAIGJhY2tlbmRfc291cmNlcyArPSBmaWxlcygKICAgJ3Bn X25hbWVzcGFjZS5jJywKICAgJ3BnX29wZXJhdG9yLmMnLAogICAncGdfcGFyYW1ldGVyX2Fj bC5jJywKKyAgJ3BnX3BlcmlvZC5jJywKICAgJ3BnX3Byb2MuYycsCiAgICdwZ19wdWJsaWNh dGlvbi5jJywKICAgJ3BnX3JhbmdlLmMnLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0 YWxvZy9vYmplY3RhZGRyZXNzLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL29iamVjdGFkZHJl c3MuYwppbmRleCBiYjRlZmNhZDIwLi5iNDg4OTViMzU1IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9jYXRhbG9nL29iamVjdGFkZHJlc3MuYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9n L29iamVjdGFkZHJlc3MuYwpAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUgImNhdGFsb2cv cGdfb3BlcmF0b3IuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX29wZmFtaWx5LmgiCiAjaW5j bHVkZSAiY2F0YWxvZy9wZ19wYXJhbWV0ZXJfYWNsLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9w Z19wZXJpb2QuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3BvbGljeS5oIgogI2luY2x1ZGUg ImNhdGFsb2cvcGdfcHJvYy5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfcHVibGljYXRpb24u aCIKQEAgLTczNiw2ICs3MzcsMTAgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBvYmplY3RfdHlw ZV9tYXAKIAl7CiAJCSJkb21haW4gY29uc3RyYWludCIsIE9CSkVDVF9ET01DT05TVFJBSU5U CiAJfSwKKwkvKiBPQ0xBU1NfUEVSSU9EICovCisJeworCQkicGVyaW9kIiwgT0JKRUNUX1BF UklPRAorCX0sCiAJLyogT0NMQVNTX0NPTlZFUlNJT04gKi8KIAl7CiAJCSJjb252ZXJzaW9u IiwgT0JKRUNUX0NPTlZFUlNJT04KQEAgLTEwMTQsNiArMTAxOSw3IEBAIGdldF9vYmplY3Rf YWRkcmVzcyhPYmplY3RUeXBlIG9ianR5cGUsIE5vZGUgKm9iamVjdCwKIAkJCWNhc2UgT0JK RUNUX1RSSUdHRVI6CiAJCQljYXNlIE9CSkVDVF9UQUJDT05TVFJBSU5UOgogCQkJY2FzZSBP QkpFQ1RfUE9MSUNZOgorCQkJY2FzZSBPQkpFQ1RfUEVSSU9EOgogCQkJCWFkZHJlc3MgPSBn ZXRfb2JqZWN0X2FkZHJlc3NfcmVsb2JqZWN0KG9ianR5cGUsIGNhc3ROb2RlKExpc3QsIG9i amVjdCksCiAJCQkJCQkJCQkJCQkJICAgJnJlbGF0aW9uLCBtaXNzaW5nX29rKTsKIAkJCQli cmVhazsKQEAgLTE1MTIsNiArMTUxOCwxMyBAQCBnZXRfb2JqZWN0X2FkZHJlc3NfcmVsb2Jq ZWN0KE9iamVjdFR5cGUgb2JqdHlwZSwgTGlzdCAqb2JqZWN0LAogCQkJCUludmFsaWRPaWQ7 CiAJCQlhZGRyZXNzLm9iamVjdFN1YklkID0gMDsKIAkJCWJyZWFrOworCQljYXNlIE9CSkVD VF9QRVJJT0Q6CisJCQlhZGRyZXNzLmNsYXNzSWQgPSBQZXJpb2RSZWxhdGlvbklkOworCQkJ YWRkcmVzcy5vYmplY3RJZCA9IHJlbGF0aW9uID8KKwkJCQlnZXRfcmVsYXRpb25fcGVyaW9k X29pZChyZWxvaWQsIGRlcG5hbWUsIG1pc3Npbmdfb2spIDoKKwkJCQlJbnZhbGlkT2lkOwor CQkJYWRkcmVzcy5vYmplY3RTdWJJZCA9IDA7CisJCQlicmVhazsKIAkJZGVmYXVsdDoKIAkJ CWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgb2JqZWN0IHR5cGU6ICVkIiwgKGludCkgb2Jq dHlwZSk7CiAJfQpAQCAtMjMyOSw2ICsyMzQyLDcgQEAgcGdfZ2V0X29iamVjdF9hZGRyZXNz KFBHX0ZVTkNUSU9OX0FSR1MpCiAJCWNhc2UgT0JKRUNUX1JVTEU6CiAJCWNhc2UgT0JKRUNU X1RSSUdHRVI6CiAJCWNhc2UgT0JKRUNUX1RBQkNPTlNUUkFJTlQ6CisJCWNhc2UgT0JKRUNU X1BFUklPRDoKIAkJY2FzZSBPQkpFQ1RfT1BDTEFTUzoKIAkJY2FzZSBPQkpFQ1RfT1BGQU1J TFk6CiAJCQlvYmpub2RlID0gKE5vZGUgKikgbmFtZTsKQEAgLTI0MzksNiArMjQ1Myw3IEBA IGNoZWNrX29iamVjdF9vd25lcnNoaXAoT2lkIHJvbGVpZCwgT2JqZWN0VHlwZSBvYmp0eXBl LCBPYmplY3RBZGRyZXNzIGFkZHJlc3MsCiAJCWNhc2UgT0JKRUNUX1RSSUdHRVI6CiAJCWNh c2UgT0JKRUNUX1BPTElDWToKIAkJY2FzZSBPQkpFQ1RfVEFCQ09OU1RSQUlOVDoKKwkJY2Fz ZSBPQkpFQ1RfUEVSSU9EOgogCQkJaWYgKCFvYmplY3Rfb3duZXJjaGVjayhSZWxhdGlvblJl bGF0aW9uSWQsIFJlbGF0aW9uR2V0UmVsaWQocmVsYXRpb24pLCByb2xlaWQpKQogCQkJCWFj bGNoZWNrX2Vycm9yKEFDTENIRUNLX05PVF9PV05FUiwgb2JqdHlwZSwKIAkJCQkJCQkgICBS ZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWxhdGlvbikpOwpAQCAtMzA4Nyw2ICszMTAyLDM4 IEBAIGdldE9iamVjdERlc2NyaXB0aW9uKGNvbnN0IE9iamVjdEFkZHJlc3MgKm9iamVjdCwg Ym9vbCBtaXNzaW5nX29rKQogCQkJCWJyZWFrOwogCQkJfQogCisJCWNhc2UgT0NMQVNTX1BF UklPRDoKKwkJCXsKKwkJCQlIZWFwVHVwbGUJcGVyVHVwOworCQkJCUZvcm1fcGdfcGVyaW9k IHBlcjsKKworCQkJCXBlclR1cCA9IFNlYXJjaFN5c0NhY2hlMShQRVJJT0RPSUQsCisJCQkJ CQkJCQkJIE9iamVjdElkR2V0RGF0dW0ob2JqZWN0LT5vYmplY3RJZCkpOworCQkJCWlmICgh SGVhcFR1cGxlSXNWYWxpZChwZXJUdXApKQorCQkJCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9v a3VwIGZhaWxlZCBmb3IgcGVyaW9kICV1IiwKKwkJCQkJCSBvYmplY3QtPm9iamVjdElkKTsK KwkJCQlwZXIgPSAoRm9ybV9wZ19wZXJpb2QpIEdFVFNUUlVDVChwZXJUdXApOworCisJCQkJ aWYgKE9pZElzVmFsaWQocGVyLT5wZXJyZWxpZCkpCisJCQkJeworCQkJCQlTdHJpbmdJbmZv RGF0YSByZWw7CisKKwkJCQkJaW5pdFN0cmluZ0luZm8oJnJlbCk7CisJCQkJCWdldFJlbGF0 aW9uRGVzY3JpcHRpb24oJnJlbCwgcGVyLT5wZXJyZWxpZCwgZmFsc2UpOworCQkJCQlhcHBl bmRTdHJpbmdJbmZvKCZidWZmZXIsIF8oInBlcmlvZCAlcyBvbiAlcyIpLAorCQkJCQkJCQkJ IE5hbWVTdHIocGVyLT5wZXJuYW1lKSwgcmVsLmRhdGEpOworCQkJCQlwZnJlZShyZWwuZGF0 YSk7CisJCQkJfQorCQkJCWVsc2UKKwkJCQl7CisJCQkJCWFwcGVuZFN0cmluZ0luZm8oJmJ1 ZmZlciwgXygicGVyaW9kICVzIiksCisJCQkJCQkJCQkgTmFtZVN0cihwZXItPnBlcm5hbWUp KTsKKwkJCQl9CisKKwkJCQlSZWxlYXNlU3lzQ2FjaGUocGVyVHVwKTsKKwkJCQlicmVhazsK KwkJCX0KKwogCQljYXNlIE9DTEFTU19DT05WRVJTSU9OOgogCQkJewogCQkJCUhlYXBUdXBs ZQljb25UdXA7CkBAIC00NDUxLDYgKzQ0OTgsMTAgQEAgZ2V0T2JqZWN0VHlwZURlc2NyaXB0 aW9uKGNvbnN0IE9iamVjdEFkZHJlc3MgKm9iamVjdCwgYm9vbCBtaXNzaW5nX29rKQogCQkJ CQkJCQkJCSBtaXNzaW5nX29rKTsKIAkJCWJyZWFrOwogCisJCWNhc2UgT0NMQVNTX1BFUklP RDoKKwkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmJ1ZmZlciwgInBlcmlvZCIpOworCQkJ YnJlYWs7CisKIAkJY2FzZSBPQ0xBU1NfQ09OVkVSU0lPTjoKIAkJCWFwcGVuZFN0cmluZ0lu Zm9TdHJpbmcoJmJ1ZmZlciwgImNvbnZlcnNpb24iKTsKIAkJCWJyZWFrOwpAQCAtNDk1OCw2 ICs1MDA5LDI4IEBAIGdldE9iamVjdElkZW50aXR5UGFydHMoY29uc3QgT2JqZWN0QWRkcmVz cyAqb2JqZWN0LAogCQkJCWJyZWFrOwogCQkJfQogCisJCWNhc2UgT0NMQVNTX1BFUklPRDoK KwkJCXsKKwkJCQlIZWFwVHVwbGUJcGVyVHVwOworCQkJCUZvcm1fcGdfcGVyaW9kIHBlcjsK KworCQkJCXBlclR1cCA9IFNlYXJjaFN5c0NhY2hlMShQRVJJT0RPSUQsCisJCQkJCQkJCQkJ IE9iamVjdElkR2V0RGF0dW0ob2JqZWN0LT5vYmplY3RJZCkpOworCQkJCWlmICghSGVhcFR1 cGxlSXNWYWxpZChwZXJUdXApKQorCQkJCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZh aWxlZCBmb3IgcGVyaW9kICV1IiwKKwkJCQkJCSBvYmplY3QtPm9iamVjdElkKTsKKwkJCQlw ZXIgPSAoRm9ybV9wZ19wZXJpb2QpIEdFVFNUUlVDVChwZXJUdXApOworCisJCQkJYXBwZW5k U3RyaW5nSW5mbygmYnVmZmVyLCAiJXMgb24gIiwKKwkJCQkJCQkJIHF1b3RlX2lkZW50aWZp ZXIoTmFtZVN0cihwZXItPnBlcm5hbWUpKSk7CisJCQkJZ2V0UmVsYXRpb25JZGVudGl0eSgm YnVmZmVyLCBwZXItPnBlcnJlbGlkLCBvYmpuYW1lLCBmYWxzZSk7CisJCQkJaWYgKG9iam5h bWUpCisJCQkJCSpvYmpuYW1lID0gbGFwcGVuZCgqb2JqbmFtZSwgcHN0cmR1cChOYW1lU3Ry KHBlci0+cGVybmFtZSkpKTsKKworCQkJCVJlbGVhc2VTeXNDYWNoZShwZXJUdXApOworCQkJ CWJyZWFrOworCQkJfQorCiAJCWNhc2UgT0NMQVNTX0NPTlZFUlNJT046CiAJCQl7CiAJCQkJ SGVhcFR1cGxlCWNvblR1cDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdf cGVyaW9kLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3BlcmlvZC5jCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjQ2NWI1YjY3NWUKLS0tIC9kZXYvbnVsbAor KysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3BlcmlvZC5jCkBAIC0wLDAgKzEsMTMyIEBA CisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBwZ19wZXJpb2QuYworICoJICByb3V0 aW5lcyB0byBzdXBwb3J0IG1hbmlwdWxhdGlvbiBvZiB0aGUgcGdfcGVyaW9kIHJlbGF0aW9u CisgKgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMjEsIFBvc3RncmVTUUwg R2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKgorICoKKyAqIElERU5USUZJQ0FUSU9OCisg KgkgIHNyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcGVyaW9kLmMKKyAqCisgKi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAqLworI2luY2x1ZGUgInBvc3RncmVzLmgiCisKKyNpbmNsdWRlICJhY2Nl c3MvZ2VuYW0uaCIKKyNpbmNsdWRlICJhY2Nlc3MvaGVhcGFtLmgiCisjaW5jbHVkZSAiYWNj ZXNzL2h0dXBfZGV0YWlscy5oIgorI2luY2x1ZGUgImNhdGFsb2cvaW5kZXhpbmcuaCIKKyNp bmNsdWRlICJjYXRhbG9nL3BnX3BlcmlvZC5oIgorI2luY2x1ZGUgInV0aWxzL2ZtZ3JvaWRz LmgiCisjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCisjaW5jbHVkZSAidXRpbHMvcmVs LmgiCisjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKKworCisvKgorICogRGVsZXRlIGEg c2luZ2xlIHBlcmlvZCByZWNvcmQuCisgKi8KK3ZvaWQKK1JlbW92ZVBlcmlvZEJ5SWQoT2lk IHBlcmlvZElkKQoreworCVJlbGF0aW9uCXBnX3BlcmlvZDsKKwlIZWFwVHVwbGUJdHVwOwor CisJcGdfcGVyaW9kID0gdGFibGVfb3BlbihQZXJpb2RSZWxhdGlvbklkLCBSb3dFeGNsdXNp dmVMb2NrKTsKKworCXR1cCA9IFNlYXJjaFN5c0NhY2hlMShQRVJJT0RPSUQsIE9iamVjdElk R2V0RGF0dW0ocGVyaW9kSWQpKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHVwKSkgLyog c2hvdWxkIG5vdCBoYXBwZW4gKi8KKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWls ZWQgZm9yIHBlcmlvZCAldSIsIHBlcmlvZElkKTsKKworCS8qIEZyeSB0aGUgcGVyaW9kIGl0 c2VsZiAqLworCUNhdGFsb2dUdXBsZURlbGV0ZShwZ19wZXJpb2QsICZ0dXAtPnRfc2VsZik7 CisKKwkvKiBDbGVhbiB1cCAqLworCVJlbGVhc2VTeXNDYWNoZSh0dXApOworCXRhYmxlX2Ns b3NlKHBnX3BlcmlvZCwgUm93RXhjbHVzaXZlTG9jayk7Cit9CisKKy8qCisgKiBnZXRfcmVs YXRpb25fcGVyaW9kX29pZAorICoJCUZpbmQgYSBwZXJpb2Qgb24gdGhlIHNwZWNpZmllZCBy ZWxhdGlvbiB3aXRoIHRoZSBzcGVjaWZpZWQgbmFtZS4KKyAqCQlSZXR1cm5zIHBlcmlvZCdz IE9JRC4KKyAqLworT2lkCitnZXRfcmVsYXRpb25fcGVyaW9kX29pZChPaWQgcmVsaWQsIGNv bnN0IGNoYXIgKnBlcm5hbWUsIGJvb2wgbWlzc2luZ19vaykKK3sKKwlSZWxhdGlvbglwZ19w ZXJpb2Q7CisJSGVhcFR1cGxlCXR1cGxlOworCVN5c1NjYW5EZXNjIHNjYW47CisJU2Nhbktl eURhdGEgc2tleVsyXTsKKwlPaWQJCQlwZXJPaWQgPSBJbnZhbGlkT2lkOworCisJLyogRmV0 Y2ggdGhlIHBlcmlvZCB0dXBsZSBmcm9tIHBnX3BlcmlvZC4gKi8KKwlwZ19wZXJpb2QgPSB0 YWJsZV9vcGVuKFBlcmlvZFJlbGF0aW9uSWQsIEFjY2Vzc1NoYXJlTG9jayk7CisKKwlTY2Fu S2V5SW5pdCgmc2tleVswXSwKKwkJCQlBbnVtX3BnX3BlcmlvZF9wZXJyZWxpZCwKKwkJCQlC VEVxdWFsU3RyYXRlZ3lOdW1iZXIsIEZfT0lERVEsCisJCQkJT2JqZWN0SWRHZXREYXR1bShy ZWxpZCkpOworCVNjYW5LZXlJbml0KCZza2V5WzFdLAorCQkJCUFudW1fcGdfcGVyaW9kX3Bl cm5hbWUsCisJCQkJQlRFcXVhbFN0cmF0ZWd5TnVtYmVyLCBGX05BTUVFUSwKKwkJCQlDU3Ry aW5nR2V0RGF0dW0ocGVybmFtZSkpOworCisJc2NhbiA9IHN5c3RhYmxlX2JlZ2luc2Nhbihw Z19wZXJpb2QsIFBlcmlvZFJlbGlkTmFtZUluZGV4SWQsIHRydWUsCisJCQkJCQkJICBOVUxM LCAyLCBza2V5KTsKKworCS8qIFRoZXJlIGNhbiBiZSBhdCBtb3N0IG9uZSBtYXRjaGluZyBy b3cgKi8KKwlpZiAoSGVhcFR1cGxlSXNWYWxpZCh0dXBsZSA9IHN5c3RhYmxlX2dldG5leHQo c2NhbikpKQorCQlwZXJPaWQgPSAoKEZvcm1fcGdfcGVyaW9kKSBHRVRTVFJVQ1QodHVwbGUp KS0+b2lkOworCisJc3lzdGFibGVfZW5kc2NhbihzY2FuKTsKKworCS8qIElmIG5vIHN1Y2gg cGVyaW9kIGV4aXN0cywgY29tcGxhaW4gKi8KKwlpZiAoIU9pZElzVmFsaWQocGVyT2lkKSAm JiAhbWlzc2luZ19vaykKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RF X1VOREVGSU5FRF9PQkpFQ1QpLAorCQkJCSBlcnJtc2coInBlcmlvZCBcIiVzXCIgZm9yIHRh YmxlIFwiJXNcIiBkb2VzIG5vdCBleGlzdCIsCisJCQkJCQlwZXJuYW1lLCBnZXRfcmVsX25h bWUocmVsaWQpKSkpOworCisJdGFibGVfY2xvc2UocGdfcGVyaW9kLCBBY2Nlc3NTaGFyZUxv Y2spOworCisJcmV0dXJuIHBlck9pZDsKK30KKworLyoKKyAqIGdldF9wZXJpb2RfYXR0bm9z CisgKgkJR2V0IHRoZSBhdHRubyBvZiB0aGUgR0VORVJBVEVEIHJhbmdldHlwZSBjb2x1bW4K KyAqCQlmb3IgYWxsIFBFUklPRHMgaW4gdGhpcyB0YWJsZS4KKyAqLworZXh0ZXJuIEJpdG1h cHNldAorKmdldF9wZXJpb2RfYXR0bm9zKE9pZCByZWxpZCkKK3sKKwlCaXRtYXBzZXQgKmF0 dG5vcyA9IE5VTEw7CisJUmVsYXRpb24JcGdfcGVyaW9kOworCUhlYXBUdXBsZQl0dXBsZTsK KwlTeXNTY2FuRGVzYyBzY2FuOworCVNjYW5LZXlEYXRhIHNrZXlbMV07CisKKwlwZ19wZXJp b2QgPSB0YWJsZV9vcGVuKFBlcmlvZFJlbGF0aW9uSWQsIEFjY2Vzc1NoYXJlTG9jayk7CisK KwlTY2FuS2V5SW5pdCgmc2tleVswXSwKKwkJCQlBbnVtX3BnX3BlcmlvZF9wZXJyZWxpZCwK KwkJCQlCVEVxdWFsU3RyYXRlZ3lOdW1iZXIsIEZfT0lERVEsCisJCQkJT2JqZWN0SWRHZXRE YXR1bShyZWxpZCkpOworCisJc2NhbiA9IHN5c3RhYmxlX2JlZ2luc2NhbihwZ19wZXJpb2Qs IFBlcmlvZFJlbGlkTmFtZUluZGV4SWQsIHRydWUsCisJCQkJCQkJICBOVUxMLCAxLCBza2V5 KTsKKworCXdoaWxlIChIZWFwVHVwbGVJc1ZhbGlkKHR1cGxlID0gc3lzdGFibGVfZ2V0bmV4 dChzY2FuKSkpCisJeworCQlGb3JtX3BnX3BlcmlvZCBwZXJpb2QgPSAoRm9ybV9wZ19wZXJp b2QpIEdFVFNUUlVDVCh0dXBsZSk7CisKKwkJYXR0bm9zID0gYm1zX2FkZF9tZW1iZXIoYXR0 bm9zLCBwZXJpb2QtPnBlcnJhbmdlKTsKKwl9CisKKwlzeXN0YWJsZV9lbmRzY2FuKHNjYW4p OworCXRhYmxlX2Nsb3NlKHBnX3BlcmlvZCwgQWNjZXNzU2hhcmVMb2NrKTsKKworCXJldHVy biBhdHRub3M7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3NxbF9mZWF0 dXJlcy50eHQgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3NxbF9mZWF0dXJlcy50eHQKaW5kZXgg YjMzMDY1ZDdiZi4uNzc1MDkwYTZlYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxv Zy9zcWxfZmVhdHVyZXMudHh0CisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3FsX2ZlYXR1 cmVzLnR4dApAQCAtNDQ5LDcgKzQ0OSw3IEBAIFQxNzYJU2VxdWVuY2UgZ2VuZXJhdG9yIHN1 cHBvcnQJCQlOTwlzdXBwb3J0ZWQgZXhjZXB0IGZvciBORVhUIFZBTFVFIEZPUgogVDE3NwlT ZXF1ZW5jZSBnZW5lcmF0b3Igc3VwcG9ydDogc2ltcGxlIHJlc3RhcnQgb3B0aW9uCQkJWUVT CQogVDE3OAlJZGVudGl0eSBjb2x1bW5zOiBzaW1wbGUgcmVzdGFydCBvcHRpb24JCQlZRVMJ CiBUMTgwCVN5c3RlbS12ZXJzaW9uZWQgdGFibGVzCQkJTk8JCi1UMTgxCUFwcGxpY2F0aW9u LXRpbWUgcGVyaW9kIHRhYmxlcwkJCU5PCQorVDE4MQlBcHBsaWNhdGlvbi10aW1lIHBlcmlv ZCB0YWJsZXMJCQlZRVMJCiBUMTkxCVJlZmVyZW50aWFsIGFjdGlvbiBSRVNUUklDVAkJCVlF UwkKIFQyMDAJVHJpZ2dlciBEREwJCQlOTwlzaW1pbGFyIGJ1dCBub3QgZnVsbHkgY29tcGF0 aWJsZQogVDIwMQlDb21wYXJhYmxlIGRhdGEgdHlwZXMgZm9yIHJlZmVyZW50aWFsIGNvbnN0 cmFpbnRzCQkJWUVTCQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvYWx0ZXIu YyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FsdGVyLmMKaW5kZXggZmY4ZDAwMzg3Ni4uMmVi ZTQ1ODY0OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvYWx0ZXIuYworKysg Yi9zcmMvYmFja2VuZC9jb21tYW5kcy9hbHRlci5jCkBAIC02NjksNiArNjY5LDcgQEAgQWx0 ZXJPYmplY3ROYW1lc3BhY2Vfb2lkKE9pZCBjbGFzc0lkLCBPaWQgb2JqaWQsIE9pZCBuc3BP aWQsCiAKIAkJY2FzZSBPQ0xBU1NfQ0FTVDoKIAkJY2FzZSBPQ0xBU1NfQ09OU1RSQUlOVDoK KwkJY2FzZSBPQ0xBU1NfUEVSSU9EOgogCQljYXNlIE9DTEFTU19ERUZBVUxUOgogCQljYXNl IE9DTEFTU19MQU5HVUFHRToKIAkJY2FzZSBPQ0xBU1NfTEFSR0VPQkpFQ1Q6CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb21tZW50LmMgYi9zcmMvYmFja2VuZC9jb21t YW5kcy9jb21tZW50LmMKaW5kZXggMjZjNGQ1OTIwMi4uNDUyYWYxZDQxMyAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29tbWVudC5jCisrKyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2NvbW1lbnQuYwpAQCAtMTAyLDYgKzEwMiwxNiBAQCBDb21tZW50T2JqZWN0KENv bW1lbnRTdG10ICpzdG10KQogCQkJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWxh dGlvbikpLAogCQkJCQkJIGVycmRldGFpbF9yZWxraW5kX25vdF9zdXBwb3J0ZWQocmVsYXRp b24tPnJkX3JlbC0+cmVsa2luZCkpKTsKIAkJCWJyZWFrOworCisJCWNhc2UgT0JKRUNUX1BF UklPRDoKKwkJCS8qIFBlcmlvZHMgY2FuIG9ubHkgZ28gb24gdGFibGVzICovCisJCQlpZiAo cmVsYXRpb24tPnJkX3JlbC0+cmVsa2luZCAhPSBSRUxLSU5EX1JFTEFUSU9OKQorCQkJCWVy ZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX1dST05HX09CSkVDVF9UWVBF KSwKKwkJCQkJCSBlcnJtc2coIlwiJXNcIiBpcyBub3QgYSB0YWJsZSIsCisJCQkJCQkJCVJl bGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbGF0aW9uKSkpKTsKKwkJCWJyZWFrOworCiAJCWRl ZmF1bHQ6CiAJCQlicmVhazsKIAl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5k cy9kcm9wY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZHJvcGNtZHMuYwppbmRleCA0 NjlhNmMyZWU5Li4xYjk3NTRlOTk4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5k cy9kcm9wY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2Ryb3BjbWRzLmMKQEAg LTUwOSw2ICs1MDksNyBAQCBkb2VzX25vdF9leGlzdF9za2lwcGluZyhPYmplY3RUeXBlIG9i anR5cGUsIE5vZGUgKm9iamVjdCkKIAkJY2FzZSBPQkpFQ1RfRE9NQ09OU1RSQUlOVDoKIAkJ Y2FzZSBPQkpFQ1RfTEFSR0VPQkpFQ1Q6CiAJCWNhc2UgT0JKRUNUX1BBUkFNRVRFUl9BQ0w6 CisJCWNhc2UgT0JKRUNUX1BFUklPRDoKIAkJY2FzZSBPQkpFQ1RfUFVCTElDQVRJT05fTkFN RVNQQUNFOgogCQljYXNlIE9CSkVDVF9QVUJMSUNBVElPTl9SRUw6CiAJCWNhc2UgT0JKRUNU X1RBQkNPTlNUUkFJTlQ6CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9ldmVu dF90cmlnZ2VyLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9ldmVudF90cmlnZ2VyLmMKaW5k ZXggYmY0N2IwZjZlMi4uZGM1MzJhMzllNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29t bWFuZHMvZXZlbnRfdHJpZ2dlci5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V2ZW50 X3RyaWdnZXIuYwpAQCAtMTEzOCw2ICsxMTM4LDcgQEAgRXZlbnRUcmlnZ2VyU3VwcG9ydHNP YmplY3RUeXBlKE9iamVjdFR5cGUgb2J0eXBlKQogCQljYXNlIE9CSkVDVF9PUENMQVNTOgog CQljYXNlIE9CSkVDVF9PUEVSQVRPUjoKIAkJY2FzZSBPQkpFQ1RfT1BGQU1JTFk6CisJCWNh c2UgT0JKRUNUX1BFUklPRDoKIAkJY2FzZSBPQkpFQ1RfUE9MSUNZOgogCQljYXNlIE9CSkVD VF9QUk9DRURVUkU6CiAJCWNhc2UgT0JKRUNUX1BVQkxJQ0FUSU9OOgpAQCAtMTE5Niw2ICsx MTk3LDcgQEAgRXZlbnRUcmlnZ2VyU3VwcG9ydHNPYmplY3RDbGFzcyhPYmplY3RDbGFzcyBv YmpjbGFzcykKIAkJY2FzZSBPQ0xBU1NfQ0FTVDoKIAkJY2FzZSBPQ0xBU1NfQ09MTEFUSU9O OgogCQljYXNlIE9DTEFTU19DT05TVFJBSU5UOgorCQljYXNlIE9DTEFTU19QRVJJT0Q6CiAJ CWNhc2UgT0NMQVNTX0NPTlZFUlNJT046CiAJCWNhc2UgT0NMQVNTX0RFRkFVTFQ6CiAJCWNh c2UgT0NMQVNTX0xBTkdVQUdFOgpAQCAtMjIzNyw2ICsyMjM5LDcgQEAgc3RyaW5naWZ5X2dy YW50X29ianR5cGUoT2JqZWN0VHlwZSBvYmp0eXBlKQogCQljYXNlIE9CSkVDVF9PUENMQVNT OgogCQljYXNlIE9CSkVDVF9PUEVSQVRPUjoKIAkJY2FzZSBPQkpFQ1RfT1BGQU1JTFk6CisJ CWNhc2UgT0JKRUNUX1BFUklPRDoKIAkJY2FzZSBPQkpFQ1RfUE9MSUNZOgogCQljYXNlIE9C SkVDVF9QVUJMSUNBVElPTjoKIAkJY2FzZSBPQkpFQ1RfUFVCTElDQVRJT05fTkFNRVNQQUNF OgpAQCAtMjMyMSw2ICsyMzI0LDcgQEAgc3RyaW5naWZ5X2FkZWZwcml2c19vYmp0eXBlKE9i amVjdFR5cGUgb2JqdHlwZSkKIAkJY2FzZSBPQkpFQ1RfT1BFUkFUT1I6CiAJCWNhc2UgT0JK RUNUX09QRkFNSUxZOgogCQljYXNlIE9CSkVDVF9QQVJBTUVURVJfQUNMOgorCQljYXNlIE9C SkVDVF9QRVJJT0Q6CiAJCWNhc2UgT0JKRUNUX1BPTElDWToKIAkJY2FzZSBPQkpFQ1RfUFVC TElDQVRJT046CiAJCWNhc2UgT0JKRUNUX1BVQkxJQ0FUSU9OX05BTUVTUEFDRToKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3NlY2xhYmVsLmMgYi9zcmMvYmFja2VuZC9j b21tYW5kcy9zZWNsYWJlbC5jCmluZGV4IDdmZjE2ZTMyNzYuLjNkZGM5OTU4MWEgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3NlY2xhYmVsLmMKKysrIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvc2VjbGFiZWwuYwpAQCAtNzksNiArNzksNyBAQCBTZWNMYWJlbFN1cHBv cnRzT2JqZWN0VHlwZShPYmplY3RUeXBlIG9ianR5cGUpCiAJCWNhc2UgT0JKRUNUX09QRVJB VE9SOgogCQljYXNlIE9CSkVDVF9PUEZBTUlMWToKIAkJY2FzZSBPQkpFQ1RfUEFSQU1FVEVS X0FDTDoKKwkJY2FzZSBPQkpFQ1RfUEVSSU9EOgogCQljYXNlIE9CSkVDVF9QT0xJQ1k6CiAJ CWNhc2UgT0JKRUNUX1BVQkxJQ0FUSU9OX05BTUVTUEFDRToKIAkJY2FzZSBPQkpFQ1RfUFVC TElDQVRJT05fUkVMOgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVj bWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwppbmRleCA1NGI0ODRh YzVmLi5mMzA0MThkOTM2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJs ZWNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwpAQCAtNDMs NiArNDMsNyBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfbGFyZ2VvYmplY3QuaCIKICNpbmNs dWRlICJjYXRhbG9nL3BnX25hbWVzcGFjZS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfb3Bj bGFzcy5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfcGVyaW9kLmgiCiAjaW5jbHVkZSAiY2F0 YWxvZy9wZ19zdGF0aXN0aWNfZXh0LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190YWJsZXNw YWNlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190cmlnZ2VyLmgiCkBAIC0xNDksMTMgKzE1 MCwxOCBAQCBzdGF0aWMgTGlzdCAqb25fY29tbWl0cyA9IE5JTDsKICNkZWZpbmUgQVRfUEFT U19PTERfQ09OU1RSCQkzCS8qIHJlLWFkZCBleGlzdGluZyBjb25zdHJhaW50cyAqLwogLyog V2UgY291bGQgc3VwcG9ydCBhIFJFTkFNRSBDT0xVTU4gcGFzcyBoZXJlLCBidXQgbm90IGN1 cnJlbnRseSB1c2VkICovCiAjZGVmaW5lIEFUX1BBU1NfQUREX0NPTAkJCTQJLyogQUREIENP TFVNTiAqLwotI2RlZmluZSBBVF9QQVNTX0FERF9DT05TVFIJCTUJLyogQUREIGNvbnN0cmFp bnRzIChpbml0aWFsIGV4YW1pbmF0aW9uKSAqLwotI2RlZmluZSBBVF9QQVNTX0NPTF9BVFRS UwkJNgkvKiBzZXQgY29sdW1uIGF0dHJpYnV0ZXMsIGVnIE5PVCBOVUxMICovCi0jZGVmaW5l IEFUX1BBU1NfQUREX0lOREVYQ09OU1RSCTcJLyogQUREIGluZGV4LWJhc2VkIGNvbnN0cmFp bnRzICovCi0jZGVmaW5lIEFUX1BBU1NfQUREX0lOREVYCQk4CS8qIEFERCBpbmRleGVzICov Ci0jZGVmaW5lIEFUX1BBU1NfQUREX09USEVSQ09OU1RSCTkJLyogQUREIG90aGVyIGNvbnN0 cmFpbnRzLCBkZWZhdWx0cyAqLwotI2RlZmluZSBBVF9QQVNTX01JU0MJCQkxMAkvKiBvdGhl ciBzdHVmZiAqLwotI2RlZmluZSBBVF9OVU1fUEFTU0VTCQkJMTEKKy8qCisgKiBXZSBtdXN0 IGFkZCBQRVJJT0RzIGFmdGVyIGNvbHVtbnMsIGluIGNhc2UgdGhleSByZWZlcmVuY2UgYSBu ZXdseS1hZGRlZCBjb2x1bW4sCisgKiBhbmQgYmVmb3JlIGNvbnN0cmFpbnRzLCBpbiBjYXNl IGEgbmV3bHktYWRkZWQgUEsvRksgcmVmZXJlbmNlcyB0aGVtLgorICovCisjZGVmaW5lIEFU X1BBU1NfQUREX1BFUklPRAkJNQkvKiBBREQgUEVSSU9EICovCisjZGVmaW5lIEFUX1BBU1Nf QUREX0NPTlNUUgkJNgkvKiBBREQgY29uc3RyYWludHMgKGluaXRpYWwgZXhhbWluYXRpb24p ICovCisjZGVmaW5lIEFUX1BBU1NfQ09MX0FUVFJTCQk3CS8qIHNldCBjb2x1bW4gYXR0cmli dXRlcywgZWcgTk9UIE5VTEwgKi8KKyNkZWZpbmUgQVRfUEFTU19BRERfSU5ERVhDT05TVFIJ OAkvKiBBREQgaW5kZXgtYmFzZWQgY29uc3RyYWludHMgKi8KKyNkZWZpbmUgQVRfUEFTU19B RERfSU5ERVgJCTkJLyogQUREIGluZGV4ZXMgKi8KKyNkZWZpbmUgQVRfUEFTU19BRERfT1RI RVJDT05TVFIJMTAJLyogQUREIG90aGVyIGNvbnN0cmFpbnRzLCBkZWZhdWx0cyAqLworI2Rl ZmluZSBBVF9QQVNTX01JU0MJCQkxMQkvKiBvdGhlciBzdHVmZiAqLworI2RlZmluZSBBVF9O VU1fUEFTU0VTCQkJMTIKIAogdHlwZWRlZiBzdHJ1Y3QgQWx0ZXJlZFRhYmxlSW5mbwogewpA QCAtMzU0LDYgKzM2MCw3IEBAIHN0YXRpYyB2b2lkIFJhbmdlVmFyQ2FsbGJhY2tGb3JUcnVu Y2F0ZShjb25zdCBSYW5nZVZhciAqcmVsYXRpb24sCiBzdGF0aWMgTGlzdCAqTWVyZ2VBdHRy aWJ1dGVzKExpc3QgKmNvbHVtbnMsIGNvbnN0IExpc3QgKnN1cGVycywgY2hhciByZWxwZXJz aXN0ZW5jZSwKIAkJCQkJCQkgYm9vbCBpc19wYXJ0aXRpb24sIExpc3QgKipzdXBjb25zdHIs CiAJCQkJCQkJIExpc3QgKipzdXBub3RudWxscyk7CitzdGF0aWMgTGlzdCAqTWVyZ2VQZXJp b2RzKGNoYXIgKnJlbG5hbWUsIExpc3QgKnBlcmlvZHMsIExpc3QgKnRhYmxlRWx0cywgTGlz dCAqc3VwZXJzKTsKIHN0YXRpYyBMaXN0ICpNZXJnZUNoZWNrQ29uc3RyYWludChMaXN0ICpj b25zdHJhaW50cywgY29uc3QgY2hhciAqbmFtZSwgTm9kZSAqZXhwcik7CiBzdGF0aWMgdm9p ZCBNZXJnZUF0dHJpYnV0ZXNJbnRvRXhpc3RpbmcoUmVsYXRpb24gY2hpbGRfcmVsLCBSZWxh dGlvbiBwYXJlbnRfcmVsKTsKIHN0YXRpYyB2b2lkIE1lcmdlQ29uc3RyYWludHNJbnRvRXhp c3RpbmcoUmVsYXRpb24gY2hpbGRfcmVsLCBSZWxhdGlvbiBwYXJlbnRfcmVsKTsKQEAgLTQz NSw2ICs0NDIsOCBAQCBzdGF0aWMgT2JqZWN0QWRkcmVzcyBBVEV4ZWNBZGRDb2x1bW4oTGlz dCAqKndxdWV1ZSwgQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLAogCQkJCQkJCQkJIEFsdGVyVGFi bGVVdGlsaXR5Q29udGV4dCAqY29udGV4dCk7CiBzdGF0aWMgYm9vbCBjaGVja19mb3JfY29s dW1uX25hbWVfY29sbGlzaW9uKFJlbGF0aW9uIHJlbCwgY29uc3QgY2hhciAqY29sbmFtZSwK IAkJCQkJCQkJCQkJYm9vbCBpZl9ub3RfZXhpc3RzKTsKK3N0YXRpYyBib29sIGNoZWNrX2Zv cl9wZXJpb2RfbmFtZV9jb2xsaXNpb24oUmVsYXRpb24gcmVsLCBjb25zdCBjaGFyICpwZXJu YW1lLAorCQkJCQkJCQkJCQlib29sIGlmX25vdF9leGlzdHMpOwogc3RhdGljIHZvaWQgYWRk X2NvbHVtbl9kYXRhdHlwZV9kZXBlbmRlbmN5KE9pZCByZWxpZCwgaW50MzIgYXR0bnVtLCBP aWQgdHlwaWQpOwogc3RhdGljIHZvaWQgYWRkX2NvbHVtbl9jb2xsYXRpb25fZGVwZW5kZW5j eShPaWQgcmVsaWQsIGludDMyIGF0dG51bSwgT2lkIGNvbGxpZCk7CiBzdGF0aWMgT2JqZWN0 QWRkcmVzcyBBVEV4ZWNEcm9wTm90TnVsbChSZWxhdGlvbiByZWwsIGNvbnN0IGNoYXIgKmNv bE5hbWUsIGJvb2wgcmVjdXJzZSwKQEAgLTQ1NCw2ICs0NjMsMTIgQEAgc3RhdGljIE9iamVj dEFkZHJlc3MgQVRFeGVjQ29sdW1uRGVmYXVsdChSZWxhdGlvbiByZWwsIGNvbnN0IGNoYXIg KmNvbE5hbWUsCiAJCQkJCQkJCQkJIE5vZGUgKm5ld0RlZmF1bHQsIExPQ0tNT0RFIGxvY2tt b2RlKTsKIHN0YXRpYyBPYmplY3RBZGRyZXNzIEFURXhlY0Nvb2tlZENvbHVtbkRlZmF1bHQo UmVsYXRpb24gcmVsLCBBdHRyTnVtYmVyIGF0dG51bSwKIAkJCQkJCQkJCQkJICAgTm9kZSAq bmV3RGVmYXVsdCk7CitzdGF0aWMgT2JqZWN0QWRkcmVzcyBBVEV4ZWNBZGRQZXJpb2QoUmVs YXRpb24gcmVsLCBQZXJpb2REZWYgKnBlcmlvZCwKKwkJCQkJCQkJCSBBbHRlclRhYmxlVXRp bGl0eUNvbnRleHQgKmNvbnRleHQpOworc3RhdGljIHZvaWQgQVRFeGVjRHJvcFBlcmlvZChS ZWxhdGlvbiByZWwsIGNvbnN0IGNoYXIgKnBlcmlvZE5hbWUsCisJCQkJCQkJIERyb3BCZWhh dmlvciBiZWhhdmlvciwKKwkJCQkJCQkgYm9vbCByZWN1cnNlLCBib29sIHJlY3Vyc2luZywK KwkJCQkJCQkgYm9vbCBtaXNzaW5nX29rKTsKIHN0YXRpYyBPYmplY3RBZGRyZXNzIEFURXhl Y0FkZElkZW50aXR5KFJlbGF0aW9uIHJlbCwgY29uc3QgY2hhciAqY29sTmFtZSwKIAkJCQkJ CQkJCSAgIE5vZGUgKmRlZiwgTE9DS01PREUgbG9ja21vZGUpOwogc3RhdGljIE9iamVjdEFk ZHJlc3MgQVRFeGVjU2V0SWRlbnRpdHkoUmVsYXRpb24gcmVsLCBjb25zdCBjaGFyICpjb2xO YW1lLApAQCAtNjYyLDYgKzY3NywxMCBAQCBzdGF0aWMgTGlzdCAqR2V0UGFyZW50ZWRGb3Jl aWduS2V5UmVmcyhSZWxhdGlvbiBwYXJ0aXRpb24pOwogc3RhdGljIHZvaWQgQVREZXRhY2hD aGVja05vRm9yZWlnbktleVJlZnMoUmVsYXRpb24gcGFydGl0aW9uKTsKIHN0YXRpYyBjaGFy IEdldEF0dHJpYnV0ZUNvbXByZXNzaW9uKE9pZCBhdHR0eXBpZCwgY29uc3QgY2hhciAqY29t cHJlc3Npb24pOwogc3RhdGljIGNoYXIgR2V0QXR0cmlidXRlU3RvcmFnZShPaWQgYXR0dHlw aWQsIGNvbnN0IGNoYXIgKnN0b3JhZ2Vtb2RlKTsKK3N0YXRpYyB2b2lkIEFkZFJlbGF0aW9u TmV3UGVyaW9kKFJlbGF0aW9uIHJlbCwgUGVyaW9kRGVmICpwZXJpb2QpOworc3RhdGljIHZv aWQgVmFsaWRhdGVQZXJpb2QoUmVsYXRpb24gcmVsLCBQZXJpb2REZWYgKnBlcmlvZCk7Citz dGF0aWMgQ29uc3RyYWludCAqbWFrZV9jb25zdHJhaW50X2Zvcl9wZXJpb2QoUmVsYXRpb24g cmVsLCBQZXJpb2REZWYgKnBlcmlvZCk7CitzdGF0aWMgQ29sdW1uRGVmICptYWtlX3Jhbmdl X2NvbHVtbl9mb3JfcGVyaW9kKFBlcmlvZERlZiAqcGVyaW9kKTsKIAogCiAvKiAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCkBAIC04OTAsNiArOTA5LDI2IEBAIERlZmluZVJlbGF0aW9uKENyZWF0ZVN0bXQgKnN0 bXQsIGNoYXIgcmVsa2luZCwgT2lkIG93bmVySWQsCiAJCQkJCQlzdG10LT5wYXJ0Ym91bmQg IT0gTlVMTCwKIAkJCQkJCSZvbGRfY29uc3RyYWludHMsICZvbGRfbm90bnVsbHMpOwogCisJ LyoKKwkgKiBVc2luZyB0aGUgY29sdW1uIGxpc3QgKGluY2x1ZGluZyBpbmhlcml0ZWQgY29s dW1ucyksCisJICogZmluZCB0aGUgc3RhcnQvZW5kIGNvbHVtbnMgZm9yIGVhY2ggcGVyaW9k LgorCSAqIFBFUklPRHMgc2hvdWxkIGJlIGluaGVyaXRlZCB0b28gKGJ1dCBhcmVuJ3QgeWV0 KS4KKwkgKi8KKwlzdG10LT5wZXJpb2RzID0gTWVyZ2VQZXJpb2RzKHJlbG5hbWUsIHN0bXQt PnBlcmlvZHMsIHN0bXQtPnRhYmxlRWx0cywgaW5oZXJpdE9pZHMpOworCisJLyoKKwkgKiBG b3IgZWFjaCBQRVJJT0Qgd2UgbmVlZCB0byBjcmVhdGUgYSBHRU5FUkFURUQgY29sdW1uLAor CSAqIHNvIGFkZCB0aG9zZSB0byB0YWJsZUVsdHMuCisJICogVGhlc2UgY29sdW1ucyBhcmUg bm90IGluaGVyaXRlZCwKKwkgKiBzbyB3ZSBkb24ndCB3b3JyeSBhYm91dCBjb25mbGljdHMg aW4gdGFibGVFbHRzLgorCSAqLworCWZvcmVhY2gobGlzdHB0ciwgc3RtdC0+cGVyaW9kcykK Kwl7CisJCVBlcmlvZERlZiAqcGVyaW9kID0gKFBlcmlvZERlZiAqKSBsZmlyc3QobGlzdHB0 cik7CisJCUNvbHVtbkRlZiAqY29sID0gbWFrZV9yYW5nZV9jb2x1bW5fZm9yX3BlcmlvZChw ZXJpb2QpOworCQlzdG10LT50YWJsZUVsdHMgPSBsYXBwZW5kKHN0bXQtPnRhYmxlRWx0cywg Y29sKTsKKwl9CisKIAkvKgogCSAqIENyZWF0ZSBhIHR1cGxlIGRlc2NyaXB0b3IgZnJvbSB0 aGUgcmVsYXRpb24gc2NoZW1hLiAgTm90ZSB0aGF0IHRoaXMKIAkgKiBkZWFscyB3aXRoIGNv bHVtbiBuYW1lcywgdHlwZXMsIGFuZCBpbi1kZXNjcmlwdG9yIE5PVCBOVUxMIGZsYWdzLCBi dXQKQEAgLTEyNzUsNiArMTMxNCwyMSBAQCBEZWZpbmVSZWxhdGlvbihDcmVhdGVTdG10ICpz dG10LCBjaGFyIHJlbGtpbmQsIE9pZCBvd25lcklkLAogCWZvcmVhY2gobGlzdHB0ciwgbm5j b2xzKQogCQlzZXRfYXR0bm90bnVsbChOVUxMLCByZWwsIGxmaXJzdF9pbnQobGlzdHB0ciks IGZhbHNlLCBOb0xvY2spOwogCisJLyoKKwkgKiBDcmVhdGUgcGVyaW9kcyBmb3IgdGhlIHRh YmxlLiBUaGlzIG11c3QgY29tZSBhZnRlciB3ZSBjcmVhdGUgY29sdW1ucworCSAqIGFuZCBi ZWZvcmUgd2UgY3JlYXRlIGluZGV4IGNvbnN0cmFpbnRzLiBJdCB3aWxsIGF1dG9tYXRpY2Fs bHkgY3JlYXRlCisJICogYSBDSEVDSyBjb25zdHJhaW50IGZvciB0aGUgcGVyaW9kLgorCSAq LworCWZvcmVhY2gobGlzdHB0ciwgc3RtdC0+cGVyaW9kcykKKwl7CisJCVBlcmlvZERlZiAq cGVyaW9kID0gKFBlcmlvZERlZiAqKSBsZmlyc3QobGlzdHB0cik7CisKKwkJLyogRG9uJ3Qg dXBkYXRlIHRoZSBjb3VudCBvZiBjaGVjayBjb25zdHJhaW50cyB0d2ljZSAqLworCQlDb21t YW5kQ291bnRlckluY3JlbWVudCgpOworCisJCUFkZFJlbGF0aW9uTmV3UGVyaW9kKHJlbCwg cGVyaW9kKTsKKwl9CisKIAlPYmplY3RBZGRyZXNzU2V0KGFkZHJlc3MsIFJlbGF0aW9uUmVs YXRpb25JZCwgcmVsYXRpb25JZCk7CiAKIAkvKgpAQCAtMTM5MSw2ICsxNDQ1LDI2NCBAQCBC dWlsZERlc2NGb3JSZWxhdGlvbihjb25zdCBMaXN0ICpjb2x1bW5zKQogCXJldHVybiBkZXNj OwogfQogCisvKgorICogbWFrZV9jb25zdHJhaW50X2Zvcl9wZXJpb2QKKyAqCisgKiBCdWls ZHMgYSBDSEVDSyBDb25zdHJhaW50IHRvIGVuc3VyZSBzdGFydCA8IGVuZC4KKyAqIFJldHVy bnMgdGhlIENIRUNLIENvbnN0cmFpbnQuCisgKiBBbHNvIGZpbGxzIGluIHBlcmlvZC0+Y29u c3RyYWludG5hbWUgaWYgbmVlZGVkLgorICovCitzdGF0aWMgQ29uc3RyYWludCAqCittYWtl X2NvbnN0cmFpbnRfZm9yX3BlcmlvZChSZWxhdGlvbiByZWwsIFBlcmlvZERlZiAqcGVyaW9k KQoreworCUNvbHVtblJlZiAgKnNjb2wsICplY29sOworCUNvbnN0cmFpbnQgKmNvbnN0cjsK KwlUeXBlQ2FjaGVFbnRyeSAqdHlwZTsKKworCWlmIChwZXJpb2QtPmNvbnN0cmFpbnRuYW1l ID09IE5VTEwpCisJCXBlcmlvZC0+Y29uc3RyYWludG5hbWUgPSBDaG9vc2VDb25zdHJhaW50 TmFtZShSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpLAorCQkJCQkJCQkJCQkJCSAgcGVy aW9kLT5wZXJpb2RuYW1lLAorCQkJCQkJCQkJCQkJCSAgImNoZWNrIiwKKwkJCQkJCQkJCQkJ CQkgIFJlbGF0aW9uR2V0TmFtZXNwYWNlKHJlbCksCisJCQkJCQkJCQkJCQkJICBOSUwpOwor CXNjb2wgPSBtYWtlTm9kZShDb2x1bW5SZWYpOworCXNjb2wtPmZpZWxkcyA9IGxpc3RfbWFr ZTEobWFrZVN0cmluZyhwc3RyZHVwKHBlcmlvZC0+c3RhcnRjb2xuYW1lKSkpOworCXNjb2wt PmxvY2F0aW9uID0gMDsKKworCWVjb2wgPSBtYWtlTm9kZShDb2x1bW5SZWYpOworCWVjb2wt PmZpZWxkcyA9IGxpc3RfbWFrZTEobWFrZVN0cmluZyhwc3RyZHVwKHBlcmlvZC0+ZW5kY29s bmFtZSkpKTsKKwllY29sLT5sb2NhdGlvbiA9IDA7CisKKwl0eXBlID0gbG9va3VwX3R5cGVf Y2FjaGUocGVyaW9kLT5jb2x0eXBpZCwgVFlQRUNBQ0hFX0xUX09QUik7CisJaWYgKHR5cGUt Pmx0X29wciA9PSBJbnZhbGlkT2lkKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2Rl KEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkgZXJybXNnKCJjb2x1bW4g XCIlc1wiIGNhbm5vdCBiZSB1c2VkIGluIGEgUEVSSU9EIGJlY2F1c2UgaXRzIHR5cGUgJXMg aGFzIG5vIGxlc3MgdGhhbiBvcGVyYXRvciIsCisJCQkJCQlwZXJpb2QtPnN0YXJ0Y29sbmFt ZSwgZm9ybWF0X3R5cGVfYmUocGVyaW9kLT5jb2x0eXBpZCkpKSk7CisKKwljb25zdHIgPSBt YWtlTm9kZShDb25zdHJhaW50KTsKKwljb25zdHItPmNvbnR5cGUgPSBDT05TVFJfQ0hFQ0s7 CisJY29uc3RyLT5jb25uYW1lID0gcGVyaW9kLT5jb25zdHJhaW50bmFtZTsKKwljb25zdHIt PmRlZmVycmFibGUgPSBmYWxzZTsKKwljb25zdHItPmluaXRkZWZlcnJlZCA9IGZhbHNlOwor CWNvbnN0ci0+bG9jYXRpb24gPSAtMTsKKwljb25zdHItPmlzX25vX2luaGVyaXQgPSBmYWxz ZTsKKwljb25zdHItPnJhd19leHByID0gKE5vZGUgKikgbWFrZVNpbXBsZUFfRXhwcihBRVhQ Ul9PUCwKKwkJCQkJCQkJCQkJCSBnZXRfb3BuYW1lKHR5cGUtPmx0X29wciksCisJCQkJCQkJ CQkJCQkgKE5vZGUgKikgc2NvbCwKKwkJCQkJCQkJCQkJCSAoTm9kZSAqKSBlY29sLAorCQkJ CQkJCQkJCQkJIDApOworCWNvbnN0ci0+Y29va2VkX2V4cHIgPSBOVUxMOworCWNvbnN0ci0+ c2tpcF92YWxpZGF0aW9uID0gZmFsc2U7CisJY29uc3RyLT5pbml0aWFsbHlfdmFsaWQgPSB0 cnVlOworCisJcmV0dXJuIGNvbnN0cjsKK30KKworLyoKKyAqIG1ha2VfcmFuZ2VfY29sdW1u X2Zvcl9wZXJpb2QKKyAqCisgKiBCdWlsZHMgYSBHRU5FUkFURUQgQUxXQVlTIHJhbmdlIGNv bHVtbiBiYXNlZCBvbiB0aGUgUEVSSU9ECisgKiBzdGFydC9lbmQgY29sdW1ucy4gUmV0dXJu cyB0aGUgQ29sdW1uRGVmLgorICovCitDb2x1bW5EZWYgKgorbWFrZV9yYW5nZV9jb2x1bW5f Zm9yX3BlcmlvZChQZXJpb2REZWYgKnBlcmlvZCkKK3sKKwljaGFyICpyYW5nZV90eXBlX25h bWVzcGFjZTsKKwljaGFyICpyYW5nZV90eXBlX25hbWU7CisJQ29sdW1uRGVmICpjb2wgPSBt YWtlTm9kZShDb2x1bW5EZWYpOworCUNvbHVtblJlZiAqc3RhcnR2YXIsICplbmR2YXI7CisJ RXhwciAqcmFuZ2VDb25zdHJ1Y3RvcjsKKworCWlmICghZ2V0X3R5cG5hbWVfYW5kX25hbWVz cGFjZShwZXJpb2QtPnJuZ3R5cGlkLCAmcmFuZ2VfdHlwZV9uYW1lLCAmcmFuZ2VfdHlwZV9u YW1lc3BhY2UpKQorCQllbG9nKEVSUk9SLCAibWlzc2luZyByYW5nZSB0eXBlICVkIiwgcGVy aW9kLT5ybmd0eXBpZCk7CisKKwlzdGFydHZhciA9IG1ha2VOb2RlKENvbHVtblJlZik7CisJ c3RhcnR2YXItPmZpZWxkcyA9IGxpc3RfbWFrZTEobWFrZVN0cmluZyhwc3RyZHVwKHBlcmlv ZC0+c3RhcnRjb2xuYW1lKSkpOworCWVuZHZhciA9IG1ha2VOb2RlKENvbHVtblJlZik7CisJ ZW5kdmFyLT5maWVsZHMgPSBsaXN0X21ha2UxKG1ha2VTdHJpbmcocHN0cmR1cChwZXJpb2Qt PmVuZGNvbG5hbWUpKSk7CisJcmFuZ2VDb25zdHJ1Y3RvciA9IChFeHByICopIG1ha2VGdW5j Q2FsbCgKKwkJCWxpc3RfbWFrZTIobWFrZVN0cmluZyhyYW5nZV90eXBlX25hbWVzcGFjZSks IG1ha2VTdHJpbmcocmFuZ2VfdHlwZV9uYW1lKSksCisJCQlsaXN0X21ha2UyKHN0YXJ0dmFy LCBlbmR2YXIpLAorCQkJQ09FUkNFX0VYUExJQ0lUX0NBTEwsCisJCQlwZXJpb2QtPmxvY2F0 aW9uKTsKKworCWNvbC0+Y29sbmFtZSA9IHBzdHJkdXAocGVyaW9kLT5wZXJpb2RuYW1lKTsK Kwljb2wtPnR5cGVOYW1lID0gbWFrZVR5cGVOYW1lKHJhbmdlX3R5cGVfbmFtZSk7CisJY29s LT5jb21wcmVzc2lvbiA9IE5VTEw7CisJY29sLT5pbmhjb3VudCA9IDA7CisJY29sLT5pc19s b2NhbCA9IHRydWU7CisJY29sLT5pc19ub3RfbnVsbCA9IHRydWU7CisJY29sLT5pc19mcm9t X3R5cGUgPSBmYWxzZTsKKwljb2wtPnN0b3JhZ2UgPSAwOworCWNvbC0+c3RvcmFnZV9uYW1l ID0gTlVMTDsKKwljb2wtPnJhd19kZWZhdWx0ID0gKE5vZGUgKikgcmFuZ2VDb25zdHJ1Y3Rv cjsKKwljb2wtPmNvb2tlZF9kZWZhdWx0ID0gTlVMTDsKKwljb2wtPmlkZW50aXR5ID0gMDsK Kwljb2wtPmdlbmVyYXRlZCA9IEFUVFJJQlVURV9HRU5FUkFURURfU1RPUkVEOworCWNvbC0+ Y29sbENsYXVzZSA9IE5VTEw7CisJY29sLT5jb2xsT2lkID0gSW52YWxpZE9pZDsKKwljb2wt PmZkd29wdGlvbnMgPSBOSUw7CisJY29sLT5sb2NhdGlvbiA9IHBlcmlvZC0+bG9jYXRpb247 CisKKwlyZXR1cm4gY29sOworfQorCisvKgorICogVmFsaWRhdGVQZXJpb2QKKyAqCisgKiBM b29rIHVwIHRoZSBhdHRyaWJ1dGVzIHVzZWQgYnkgdGhlIFBFUklPRCwKKyAqIG1ha2Ugc3Vy ZSB0aGV5IGV4aXN0LCBhcmUgbm90IHN5c3RlbSBjb2x1bW5zLAorICogYW5kIGhhdmUgdGhl IHNhbWUgdHlwZSBhbmQgY29sbGF0aW9uLgorICoKKyAqIFlvdSBtdXN0IGhhdmUgYSBSb3dF eGNsdXNpdmVMb2NrIG9uIHBnX2F0dHJpYnV0ZQorICogYmVmb3JlIGNhbGxpbmcgdGhpcyBm dW5jdGlvbi4KKyAqCisgKiBBZGQgb3VyIGZpbmRpbmdzIHRvIHRoZXNlIFBlcmlvZERlZiBm aWVsZHM6CisgKgorICogY29sdHlwaWQgLSB0aGUgdHlwZSBvZiBQRVJJT0QgY29sdW1ucy4K KyAqIHN0YXJ0YXR0bnVtIC0gdGhlIGF0dG51bSBvZiB0aGUgc3RhcnQgY29sdW1uLgorICog ZW5kYXR0bnVtIC0gdGhlIGF0dG51bSBvZiB0aGUgZW5kIGNvbHVtbi4KKyAqLworc3RhdGlj IHZvaWQKK1ZhbGlkYXRlUGVyaW9kKFJlbGF0aW9uIHJlbCwgUGVyaW9kRGVmICpwZXJpb2Qp Cit7CisJSGVhcFR1cGxlIHN0YXJ0dHVwbGU7CisJSGVhcFR1cGxlIGVuZHR1cGxlOworCUZv cm1fcGdfYXR0cmlidXRlCWF0dHR1cGxlOworCU9pZAlhdHRjb2xsYXRpb247CisKKwkvKiBG aW5kIHRoZSBzdGFydCBjb2x1bW4gKi8KKwlzdGFydHR1cGxlID0gU2VhcmNoU3lzQ2FjaGVD b3B5QXR0TmFtZShSZWxhdGlvbkdldFJlbGlkKHJlbCksIHBlcmlvZC0+c3RhcnRjb2xuYW1l KTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQoc3RhcnR0dXBsZSkpCisJCWVyZXBvcnQoRVJS T1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9VTkRFRklORURfQ09MVU1OKSwKKwkJCQkgZXJy bXNnKCJjb2x1bW4gXCIlc1wiIG9mIHJlbGF0aW9uIFwiJXNcIiBkb2VzIG5vdCBleGlzdCIs CisJCQkJCQlwZXJpb2QtPnN0YXJ0Y29sbmFtZSwgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUo cmVsKSkpKTsKKwlhdHR0dXBsZSA9IChGb3JtX3BnX2F0dHJpYnV0ZSkgR0VUU1RSVUNUKHN0 YXJ0dHVwbGUpOworCXBlcmlvZC0+Y29sdHlwaWQgPSBhdHR0dXBsZS0+YXR0dHlwaWQ7CisJ YXR0Y29sbGF0aW9uID0gYXR0dHVwbGUtPmF0dGNvbGxhdGlvbjsKKwlwZXJpb2QtPnN0YXJ0 YXR0bnVtID0gYXR0dHVwbGUtPmF0dG51bTsKKworCS8qIE1ha2Ugc3VyZSBpdCdzIG5vdCBh IHN5c3RlbSBjb2x1bW4gKi8KKwlpZiAocGVyaW9kLT5zdGFydGF0dG51bSA8PSAwKQorCQll cmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVG SU5JVElPTiksCisJCQkJIGVycm1zZygiY2Fubm90IHVzZSBzeXN0ZW0gY29sdW1uIFwiJXNc IiBpbiBwZXJpb2QiLAorCQkJCQkJcGVyaW9kLT5zdGFydGNvbG5hbWUpKSk7CisKKwkvKiBG aW5kIHRoZSBlbmQgY29sdW1uICovCisJZW5kdHVwbGUgPSBTZWFyY2hTeXNDYWNoZUNvcHlB dHROYW1lKFJlbGF0aW9uR2V0UmVsaWQocmVsKSwgcGVyaW9kLT5lbmRjb2xuYW1lKTsKKwlp ZiAoIUhlYXBUdXBsZUlzVmFsaWQoZW5kdHVwbGUpKQorCQllcmVwb3J0KEVSUk9SLAorCQkJ CShlcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVEX0NPTFVNTiksCisJCQkJIGVycm1zZygiY29s dW1uIFwiJXNcIiBvZiByZWxhdGlvbiBcIiVzXCIgZG9lcyBub3QgZXhpc3QiLAorCQkJCQkJ cGVyaW9kLT5lbmRjb2xuYW1lLCBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpKSkpOwor CWF0dHR1cGxlID0gKEZvcm1fcGdfYXR0cmlidXRlKSBHRVRTVFJVQ1QoZW5kdHVwbGUpOwor CXBlcmlvZC0+ZW5kYXR0bnVtID0gYXR0dHVwbGUtPmF0dG51bTsKKworCS8qIE1ha2Ugc3Vy ZSBpdCdzIG5vdCBhIHN5c3RlbSBjb2x1bW4gKi8KKwlpZiAocGVyaW9kLT5lbmRhdHRudW0g PD0gMCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURf T0JKRUNUX0RFRklOSVRJT04pLAorCQkJCSBlcnJtc2coImNhbm5vdCB1c2Ugc3lzdGVtIGNv bHVtbiBcIiVzXCIgaW4gcGVyaW9kIiwKKwkJCQkJCXBlcmlvZC0+ZW5kY29sbmFtZSkpKTsK KworCS8qIEJvdGggY29sdW1ucyBtdXN0IGJlIG9mIHNhbWUgdHlwZSAqLworCWlmIChwZXJp b2QtPmNvbHR5cGlkICE9IGF0dHR1cGxlLT5hdHR0eXBpZCkKKwkJZXJlcG9ydChFUlJPUiwK KwkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFUWVBFX01JU01BVENIKSwKKwkJCQkgZXJybXNn KCJzdGFydCBhbmQgZW5kIGNvbHVtbnMgb2YgcGVyaW9kIG11c3QgYmUgb2Ygc2FtZSB0eXBl IikpKTsKKworCS8qIEJvdGggY29sdW1ucyBtdXN0IGhhdmUgdGhlIHNhbWUgY29sbGF0aW9u ICovCisJaWYgKGF0dGNvbGxhdGlvbiAhPSBhdHR0dXBsZS0+YXR0Y29sbGF0aW9uKQorCQll cmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfQ09MTEFUSU9OX01JU01BVENI KSwKKwkJCQkgZXJybXNnKCJzdGFydCBhbmQgZW5kIGNvbHVtbnMgb2YgcGVyaW9kIG11c3Qg aGF2ZSBzYW1lIGNvbGxhdGlvbiIpKSk7CisKKwloZWFwX2ZyZWV0dXBsZShzdGFydHR1cGxl KTsKKwloZWFwX2ZyZWV0dXBsZShlbmR0dXBsZSk7Cit9CisKKy8qCisgKiBjaG9vc2VfcmFu Z2V0eXBlX2Zvcl9wZXJpb2QKKyAqCisgKiBGaW5kIGEgc3VpdGFibGUgcmFuZ2UgdHlwZSBm b3Igb3BlcmF0aW9ucyBpbnZvbHZpbmcgdGhpcyBwZXJpb2QuCisgKiBVc2UgdGhlIHJhbmdl dHlwZSBvcHRpb24gaWYgcHJvdmlkZWQsIG90aGVyd2lzZSB0cnkgdG8gZmluZCBhCisgKiBu b24tYW1iaWd1b3VzIGV4aXN0aW5nIHR5cGUuCisgKi8KKy8vIFRPRE86IFRoaXMgY291bGQg YmUgc3RhdGljIG5vdworT2lkCitjaG9vc2VfcmFuZ2V0eXBlX2Zvcl9wZXJpb2QoUGVyaW9k RGVmICpwZXJpb2QpCit7CisJT2lkCXJuZ3R5cGlkOworCisJaWYgKHBlcmlvZC0+cmFuZ2V0 eXBlbmFtZSAhPSBOVUxMKQorCXsKKwkJLyogTWFrZSBzdXJlIGl0IGV4aXN0cyAqLworCQly bmd0eXBpZCA9IFR5cGVuYW1lR2V0VHlwaWRFeHRlbmRlZChwZXJpb2QtPnJhbmdldHlwZW5h bWUsIGZhbHNlKTsKKwkJaWYgKHJuZ3R5cGlkID09IEludmFsaWRPaWQpCisJCQllcmVwb3J0 KEVSUk9SLCAoZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9PQkpFQ1QpLAorCQkJCQkgZXJy bXNnKCJSYW5nZSB0eXBlICVzIG5vdCBmb3VuZCIsIHBlcmlvZC0+cmFuZ2V0eXBlbmFtZSkp KTsKKworCQkvKiBNYWtlIHN1cmUgaXQgaXMgYSByYW5nZSB0eXBlICovCisJCWlmICghdHlw ZV9pc19yYW5nZShybmd0eXBpZCkpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29k ZShFUlJDT0RFX0RBVEFUWVBFX01JU01BVENIKSwKKwkJCQkJIGVycm1zZygiVHlwZSAlcyBp cyBub3QgYSByYW5nZSB0eXBlIiwgcGVyaW9kLT5yYW5nZXR5cGVuYW1lKSkpOworCisJCS8q IE1ha2Ugc3VyZSBpdCBtYXRjaGVzIHRoZSBjb2x1bW4gdHlwZSAqLworCQlpZiAoZ2V0X3Jh bmdlX3N1YnR5cGUocm5ndHlwaWQpICE9IHBlcmlvZC0+Y29sdHlwaWQpCisJCQllcmVwb3J0 KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFUWVBFX01JU01BVENIKSwKKwkJ CQkJIGVycm1zZygiUmFuZ2UgdHlwZSAlcyBkb2VzIG5vdCBtYXRjaCBjb2x1bW4gdHlwZSAl cyIsCisJCQkJCQkgcGVyaW9kLT5yYW5nZXR5cGVuYW1lLAorCQkJCQkJIGZvcm1hdF90eXBl X2JlKHBlcmlvZC0+Y29sdHlwaWQpKSkpOworCX0KKwllbHNlCisJeworCQlybmd0eXBpZCA9 IGdldF9zdWJ0eXBlX3JhbmdlKHBlcmlvZC0+Y29sdHlwaWQpOworCQlpZiAocm5ndHlwaWQg PT0gSW52YWxpZE9pZCkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNP REVfVU5ERUZJTkVEX09CSkVDVCksCisJCQkJCSBlcnJtc2coIm5vIHJhbmdlIHR5cGUgZm9y ICVzIGZvdW5kIGZvciBwZXJpb2QgJXMiLAorCQkJCQkJCWZvcm1hdF90eXBlX2JlKHBlcmlv ZC0+Y29sdHlwaWQpLAorCQkJCQkJCXBlcmlvZC0+cGVyaW9kbmFtZSksCisJCQkJCSBlcnJo aW50KCJZb3UgY2FuIGRlZmluZSBhIGN1c3RvbSByYW5nZSB0eXBlIHdpdGggQ1JFQVRFIFRZ UEUiKSkpOworCisJfQorCisJcmV0dXJuIHJuZ3R5cGlkOworfQorCitzdGF0aWMgdm9pZAor QWRkUmVsYXRpb25OZXdQZXJpb2QoUmVsYXRpb24gcmVsLCBQZXJpb2REZWYgKnBlcmlvZCkK K3sKKwlSZWxhdGlvbglhdHRyZWxhdGlvbjsKKwlPaWQJCQljb25vaWQ7CisJQ29uc3RyYWlu dCAqY29uc3RyOworCUxpc3QJICAgKm5ld2NvbnN0cnM7CisKKwlhdHRyZWxhdGlvbiA9IHRh YmxlX29wZW4oQXR0cmlidXRlUmVsYXRpb25JZCwgUm93RXhjbHVzaXZlTG9jayk7CisKKwkv KiBGaW5kIHRoZSBHRU5FUkFURUQgcmFuZ2UgY29sdW1uICovCisKKwlwZXJpb2QtPnJuZ2F0 dG51bSA9IGdldF9hdHRudW0oUmVsYXRpb25HZXRSZWxpZChyZWwpLCBwZXJpb2QtPnBlcmlv ZG5hbWUpOworCWlmIChwZXJpb2QtPnJuZ2F0dG51bSA9PSBJbnZhbGlkQXR0ck51bWJlcikK KwkJZWxvZyhFUlJPUiwgIm1pc3NpbmcgYXR0cmlidXRlICVzIiwgcGVyaW9kLT5wZXJpb2Ru YW1lKTsKKworCS8qIFRoZSBwYXJzZXIgaGFzIGFscmVhZHkgZm91bmQgcGVyaW9kLT5jb2x0 eXBpZCAqLworCisJY29uc3RyID0gbWFrZV9jb25zdHJhaW50X2Zvcl9wZXJpb2QocmVsLCBw ZXJpb2QpOworCW5ld2NvbnN0cnMgPSBBZGRSZWxhdGlvbk5ld0NvbnN0cmFpbnRzKHJlbCwg TklMLCBsaXN0X21ha2UxKGNvbnN0ciksIGZhbHNlLCB0cnVlLCB0cnVlLCBOVUxMKTsKKwlj b25vaWQgPSAoKENvb2tlZENvbnN0cmFpbnQgKikgbGluaXRpYWwobmV3Y29uc3RycykpLT5j b25vaWQ7CisKKwkvKiBTYXZlIGl0ICovCisJU3RvcmVQZXJpb2QocmVsLCBwZXJpb2QtPnBl cmlvZG5hbWUsIHBlcmlvZC0+c3RhcnRhdHRudW0sIHBlcmlvZC0+ZW5kYXR0bnVtLCBwZXJp b2QtPnJuZ2F0dG51bSwgY29ub2lkKTsKKworCXRhYmxlX2Nsb3NlKGF0dHJlbGF0aW9uLCBS b3dFeGNsdXNpdmVMb2NrKTsKK30KKwogLyoKICAqIEVtaXQgdGhlIHJpZ2h0IGVycm9yIG9y IHdhcm5pbmcgbWVzc2FnZSBmb3IgYSAiRFJPUCIgY29tbWFuZCBpc3N1ZWQgb24gYQogICog bm9uLWV4aXN0ZW50IHJlbGF0aW9uCkBAIC0zMzQ3LDYgKzM2NTksMTY4IEBAIE1lcmdlQXR0 cmlidXRlcyhMaXN0ICpjb2x1bW5zLCBjb25zdCBMaXN0ICpzdXBlcnMsIGNoYXIgcmVscGVy c2lzdGVuY2UsCiB9CiAKIAorLyotLS0tLS0tLS0tCisgKiBNZXJnZVBlcmlvZHMKKyAqCQlS ZXR1cm5zIG5ldyBwZXJpb2QgbGlzdCBnaXZlbiBpbml0aWFsIHBlcmlvZHMgYW5kIHN1cGVy Y2xhc3Nlcy4KKyAqCisgKiBGb3Igbm93IHdlIGRvbid0IHN1cHBvcnQgaW5oZXJpdGVuY2Ug d2l0aCBQRVJJT0RzLAorICogYnV0IHdlIG1pZ2h0IG1ha2UgaXQgd29yayBldmVudHVhbGx5 LgorICoKKyAqIFdlIGNhbiBvbWl0IGxvdHMgb2YgY2hlY2tzIGhlcmUgYW5kIGFzc3VtZSBN ZXJnZUF0dHJpYnV0ZXMgYWxyZWFkeSBkaWQgdGhlbSwKKyAqIGZvciBleGFtcGxlIHRoYXQg Y2hpbGQgJiBwYXJlbnRzIGFyZSBub3QgYSBtaXggb2YgcGVybWFuZW50IGFuZCB0ZW1wLgor ICovCitzdGF0aWMgTGlzdCAqCitNZXJnZVBlcmlvZHMoY2hhciAqcmVsbmFtZSwgTGlzdCAq cGVyaW9kcywgTGlzdCAqdGFibGVFbHRzLCBMaXN0ICpzdXBlcnMpCit7CisJTGlzdENlbGwg ICAqZW50cnk7CisKKwkvKiBJZiB3ZSBoYXZlIGEgUEVSSU9EIHRoZW4gc3VwZXJzIG11c3Qg YmUgZW1wdHkuICovCisKKwlpZiAobGlzdF9sZW5ndGgocGVyaW9kcykgPiAwICYmIGxpc3Rf bGVuZ3RoKHN1cGVycykgPiAwKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVS UkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkgZXJybXNnKCJJbmhlcml0aW5n IGlzIG5vdCBzdXBwb3J0ZWQgd2hlbiBhIHRhYmxlIGhhcyBhIFBFUklPRCIpKSk7CisKKwkv KiBJZiBhbnkgcGFyZW50IHRhYmxlIGhhcyBhIFBFUklPRCwgdGhlbiBmYWlsLiAqLworCisJ Zm9yZWFjaChlbnRyeSwgc3VwZXJzKQorCXsKKwkJT2lkCQkJcGFyZW50ID0gbGZpcnN0X29p ZChlbnRyeSk7CisJCVJlbGF0aW9uCXJlbGF0aW9uOworCQlSZWxhdGlvbglwZ19wZXJpb2Q7 CisJCVN5c1NjYW5EZXNjIHNjYW47CisJCVNjYW5LZXlEYXRhIHNrZXlbMV07CisJCUhlYXBU dXBsZQl0dXBsZTsKKworCQkvKiBjYWxsZXIgYWxyZWFkeSBnb3QgbG9jayAqLworCQlyZWxh dGlvbiA9IHRhYmxlX29wZW4ocGFyZW50LCBOb0xvY2spOworCQlwZ19wZXJpb2QgPSB0YWJs ZV9vcGVuKFBlcmlvZFJlbGF0aW9uSWQsIEFjY2Vzc1NoYXJlTG9jayk7CisKKwkJU2Nhbktl eUluaXQoJnNrZXlbMF0sCisJCQkJCUFudW1fcGdfcGVyaW9kX3BlcnJlbGlkLAorCQkJCQlC VEVxdWFsU3RyYXRlZ3lOdW1iZXIsIEZfT0lERVEsCisJCQkJCU9iamVjdElkR2V0RGF0dW0o cGFyZW50KSk7CisKKwkJc2NhbiA9IHN5c3RhYmxlX2JlZ2luc2NhbihwZ19wZXJpb2QsIFBl cmlvZFJlbGlkTmFtZUluZGV4SWQsIHRydWUsCisJCQkJCQkJCSAgTlVMTCwgMSwgc2tleSk7 CisKKwkJaWYgKEhlYXBUdXBsZUlzVmFsaWQodHVwbGUgPSBzeXN0YWJsZV9nZXRuZXh0KHNj YW4pKSkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVS RV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJIGVycm1zZygiSW5oZXJpdGluZyBmcm9tIGEgdGFi bGUgd2l0aCBhIFBFUklPRCBpcyBub3Qgc3VwcG9ydGVkIikpKTsKKworCQlzeXN0YWJsZV9l bmRzY2FuKHNjYW4pOworCQl0YWJsZV9jbG9zZShwZ19wZXJpb2QsIEFjY2Vzc1NoYXJlTG9j ayk7CisJCXRhYmxlX2Nsb3NlKHJlbGF0aW9uLCBOb0xvY2spOworCX0KKworCS8qCisJICog RmluZCB0aGUgc3RhcnQgJiBlbmQgY29sdW1ucyBhbmQgZ2V0IHRoZWlyIGF0dG5vIGFuZCB0 eXBlLgorCSAqIEluIHRoZSBzYW1lIHBhc3MsIG1ha2Ugc3VyZSB0aGUgcGVyaW9kIGRvZXNu J3QgY29uZmxpY3Qgd2l0aCBhbnkgY29sdW1uIG5hbWVzLgorCSAqIEFsc28gbWFrZSBzdXJl IHRoZSBzYW1lIHBlcmlvZCBuYW1lIGlzbid0IHVzZWQgbW9yZSB0aGFuIG9uY2UuCisJICov CisJZm9yZWFjaCAoZW50cnksIHBlcmlvZHMpCisJeworCQlQZXJpb2REZWYgKnBlcmlvZCA9 IGxmaXJzdChlbnRyeSk7CisJCUxpc3RDZWxsICplbnRyeTI7CisJCWludCBpID0gMTsKKwkJ T2lkIHN0YXJ0Y29sdHlwaWQgPSBJbnZhbGlkT2lkOworCQlPaWQgZW5kY29sdHlwaWQgPSBJ bnZhbGlkT2lkOworCQlPaWQJc3RhcnRjb2xjb2xsYXRpb24gPSBJbnZhbGlkT2lkOworCQlP aWQJZW5kY29sY29sbGF0aW9uID0gSW52YWxpZE9pZDsKKworCQlwZXJpb2QtPnN0YXJ0YXR0 bnVtID0gSW52YWxpZEF0dHJOdW1iZXI7CisJCXBlcmlvZC0+ZW5kYXR0bnVtID0gSW52YWxp ZEF0dHJOdW1iZXI7CisKKwkJaWYgKFN5c3RlbUF0dHJpYnV0ZUJ5TmFtZShwZXJpb2QtPnBl cmlvZG5hbWUpICE9IE5VTEwpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShF UlJDT0RFX0RVUExJQ0FURV9DT0xVTU4pLAorCQkJCQkgZXJybXNnKCJwZXJpb2QgbmFtZSBc IiVzXCIgY29uZmxpY3RzIHdpdGggYSBzeXN0ZW0gY29sdW1uIG5hbWUiLAorCQkJCQkJCXBl cmlvZC0+cGVyaW9kbmFtZSkpKTsKKworCQlmb3JlYWNoIChlbnRyeTIsIHBlcmlvZHMpCisJ CXsKKwkJCVBlcmlvZERlZiAqcGVyaW9kMiA9IGxmaXJzdChlbnRyeTIpOworCisJCQlpZiAo cGVyaW9kICE9IHBlcmlvZDIgJiYgc3RyY21wKHBlcmlvZC0+cGVyaW9kbmFtZSwgcGVyaW9k Mi0+cGVyaW9kbmFtZSkgPT0gMCkKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVycmNv ZGUoRVJSQ09ERV9EVVBMSUNBVEVfT0JKRUNUKSwKKwkJCQkJCSBlcnJtc2coInBlcmlvZCBu YW1lIFwiJXNcIiBzcGVjaWZpZWQgbW9yZSB0aGFuIG9uY2UiLAorCQkJCQkJCQlwZXJpb2Qt PnBlcmlvZG5hbWUpKSk7CisJCX0KKworCQlmb3JlYWNoIChlbnRyeTIsIHRhYmxlRWx0cykK KwkJeworCQkJQ29sdW1uRGVmICpjb2wgPSBsZmlyc3QoZW50cnkyKTsKKwkJCWludDMyCWF0 dHR5cG1vZDsKKwkJCUFjbFJlc3VsdCBhY2xyZXN1bHQ7CisKKwkJCWlmIChzdHJjbXAocGVy aW9kLT5wZXJpb2RuYW1lLCBjb2wtPmNvbG5hbWUpID09IDApCisJCQkJZXJlcG9ydChFUlJP UiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfRFVQTElDQVRFX0NPTFVNTiksCisJCQkJCQkg ZXJybXNnKCJwZXJpb2QgbmFtZSBcIiVzXCIgY29uZmxpY3RzIHdpdGggYSBjb2x1bW4gbmFt ZSIsCisJCQkJCQkJCXBlcmlvZC0+cGVyaW9kbmFtZSkpKTsKKworCQkJaWYgKHN0cmNtcChw ZXJpb2QtPnN0YXJ0Y29sbmFtZSwgY29sLT5jb2xuYW1lKSA9PSAwKQorCQkJeworCQkJCXBl cmlvZC0+c3RhcnRhdHRudW0gPSBpOworCisJCQkJdHlwZW5hbWVUeXBlSWRBbmRNb2QoTlVM TCwgY29sLT50eXBlTmFtZSwgJnN0YXJ0Y29sdHlwaWQsICZhdHR0eXBtb2QpOworCisJCQkJ YWNscmVzdWx0ID0gb2JqZWN0X2FjbGNoZWNrKFR5cGVSZWxhdGlvbklkLCBzdGFydGNvbHR5 cGlkLCBHZXRVc2VySWQoKSwgQUNMX1VTQUdFKTsKKwkJCQlpZiAoYWNscmVzdWx0ICE9IEFD TENIRUNLX09LKQorCQkJCQlhY2xjaGVja19lcnJvcl90eXBlKGFjbHJlc3VsdCwgc3RhcnRj b2x0eXBpZCk7CisKKwkJCQlzdGFydGNvbGNvbGxhdGlvbiA9IEdldENvbHVtbkRlZkNvbGxh dGlvbihOVUxMLCBjb2wsIHN0YXJ0Y29sdHlwaWQpOworCQkJfQorCisJCQlpZiAoc3RyY21w KHBlcmlvZC0+ZW5kY29sbmFtZSwgY29sLT5jb2xuYW1lKSA9PSAwKQorCQkJeworCQkJCXBl cmlvZC0+ZW5kYXR0bnVtID0gaTsKKworCQkJCXR5cGVuYW1lVHlwZUlkQW5kTW9kKE5VTEws IGNvbC0+dHlwZU5hbWUsICZlbmRjb2x0eXBpZCwgJmF0dHR5cG1vZCk7CisKKwkJCQlhY2xy ZXN1bHQgPSBvYmplY3RfYWNsY2hlY2soVHlwZVJlbGF0aW9uSWQsIGVuZGNvbHR5cGlkLCBH ZXRVc2VySWQoKSwgQUNMX1VTQUdFKTsKKwkJCQlpZiAoYWNscmVzdWx0ICE9IEFDTENIRUNL X09LKQorCQkJCQlhY2xjaGVja19lcnJvcl90eXBlKGFjbHJlc3VsdCwgZW5kY29sdHlwaWQp OworCisJCQkJZW5kY29sY29sbGF0aW9uID0gR2V0Q29sdW1uRGVmQ29sbGF0aW9uKE5VTEws IGNvbCwgZW5kY29sdHlwaWQpOworCQkJfQorCisJCQlpKys7CisJCX0KKworCQkvKiBEaWQg d2UgZmluZCB0aGUgY29sdW1ucz8gKi8KKwkJaWYgKHBlcmlvZC0+c3RhcnRhdHRudW0gPT0g SW52YWxpZEF0dHJOdW1iZXIpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShF UlJDT0RFX1VOREVGSU5FRF9DT0xVTU4pLAorCQkJCQkgZXJybXNnKCJjb2x1bW4gXCIlc1wi IG9mIHJlbGF0aW9uIFwiJXNcIiBkb2VzIG5vdCBleGlzdCIsCisJCQkJCQkJcGVyaW9kLT5z dGFydGNvbG5hbWUsIHJlbG5hbWUpKSk7CisJCWlmIChwZXJpb2QtPmVuZGF0dG51bSA9PSBJ bnZhbGlkQXR0ck51bWJlcikKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVS UkNPREVfVU5ERUZJTkVEX0NPTFVNTiksCisJCQkJCSBlcnJtc2coImNvbHVtbiBcIiVzXCIg b2YgcmVsYXRpb24gXCIlc1wiIGRvZXMgbm90IGV4aXN0IiwKKwkJCQkJCQlwZXJpb2QtPmVu ZGNvbG5hbWUsIHJlbG5hbWUpKSk7CisKKwkJLyogQm90aCBjb2x1bW5zIG11c3QgYmUgb2Yg c2FtZSB0eXBlICovCisJCWlmIChzdGFydGNvbHR5cGlkICE9IGVuZGNvbHR5cGlkKQorCQkJ ZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBVFlQRV9NSVNNQVRD SCksCisJCQkJCSBlcnJtc2coInN0YXJ0IGFuZCBlbmQgY29sdW1ucyBvZiBwZXJpb2QgbXVz dCBiZSBvZiBzYW1lIHR5cGUiKSkpOworCisJCS8qIEJvdGggY29sdW1ucyBtdXN0IGhhdmUg dGhlIHNhbWUgY29sbGF0aW9uICovCisJCWlmIChzdGFydGNvbGNvbGxhdGlvbiAhPSBlbmRj b2xjb2xsYXRpb24pCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RF X0NPTExBVElPTl9NSVNNQVRDSCksCisJCQkJCSBlcnJtc2coInN0YXJ0IGFuZCBlbmQgY29s dW1ucyBvZiBwZXJpb2QgbXVzdCBoYXZlIHNhbWUgY29sbGF0aW9uIikpKTsKKworCQlwZXJp b2QtPmNvbHR5cGlkID0gc3RhcnRjb2x0eXBpZDsKKwkJcGVyaW9kLT5ybmd0eXBpZCA9IGNo b29zZV9yYW5nZXR5cGVfZm9yX3BlcmlvZChwZXJpb2QpOworCX0KKworCXJldHVybiBwZXJp b2RzOworfQorCiAvKgogICogTWVyZ2VDaGVja0NvbnN0cmFpbnQKICAqCQlUcnkgdG8gbWVy Z2UgYW4gaW5oZXJpdGVkIENIRUNLIGNvbnN0cmFpbnQgd2l0aCBwcmV2aW91cyBvbmVzCkBA IC00NDAzLDEyICs0ODc3LDEyIEBAIEFsdGVyVGFibGUoQWx0ZXJUYWJsZVN0bXQgKnN0bXQs IExPQ0tNT0RFIGxvY2ttb2RlLAogICogZXhpc3RpbmcgcXVlcnkgcGxhbnMuICBPbiB0aGUg YXNzdW1wdGlvbiBpdCdzIG5vdCB1c2VkIGZvciBzdWNoLCB3ZQogICogZG9uJ3QgaGF2ZSB0 byByZWplY3QgcGVuZGluZyBBRlRFUiB0cmlnZ2VycywgZWl0aGVyLgogICoKLSAqIEFsc28s IHNpbmNlIHdlIGRvbid0IGhhdmUgYW4gQWx0ZXJUYWJsZVV0aWxpdHlDb250ZXh0LCB0aGlz IGNhbm5vdCBiZQorICogQWxzbywgaWYgeW91IGRvbid0IHBhc3MgYW4gQWx0ZXJUYWJsZVV0 aWxpdHlDb250ZXh0LCB0aGlzIGNhbm5vdCBiZQogICogdXNlZCBmb3IgYW55IHN1YmNvbW1h bmQgdHlwZXMgdGhhdCByZXF1aXJlIHBhcnNlIHRyYW5zZm9ybWF0aW9uIG9yCiAgKiBjb3Vs ZCBnZW5lcmF0ZSBzdWJjb21tYW5kcyB0aGF0IGhhdmUgdG8gYmUgcGFzc2VkIHRvIFByb2Nl c3NVdGlsaXR5LgogICovCiB2b2lkCi1BbHRlclRhYmxlSW50ZXJuYWwoT2lkIHJlbGlkLCBM aXN0ICpjbWRzLCBib29sIHJlY3Vyc2UpCitBbHRlclRhYmxlSW50ZXJuYWwoT2lkIHJlbGlk LCBMaXN0ICpjbWRzLCBib29sIHJlY3Vyc2UsIEFsdGVyVGFibGVVdGlsaXR5Q29udGV4dCAq Y29udGV4dCkKIHsKIAlSZWxhdGlvbglyZWw7CiAJTE9DS01PREUJbG9ja21vZGUgPSBBbHRl clRhYmxlR2V0TG9ja0xldmVsKGNtZHMpOwpAQCAtNDQxNyw3ICs0ODkxLDcgQEAgQWx0ZXJU YWJsZUludGVybmFsKE9pZCByZWxpZCwgTGlzdCAqY21kcywgYm9vbCByZWN1cnNlKQogCiAJ RXZlbnRUcmlnZ2VyQWx0ZXJUYWJsZVJlbGlkKHJlbGlkKTsKIAotCUFUQ29udHJvbGxlcihO VUxMLCByZWwsIGNtZHMsIHJlY3Vyc2UsIGxvY2ttb2RlLCBOVUxMKTsKKwlBVENvbnRyb2xs ZXIoTlVMTCwgcmVsLCBjbWRzLCByZWN1cnNlLCBsb2NrbW9kZSwgY29udGV4dCk7CiB9CiAK IC8qCkBAIC00NTEwLDYgKzQ5ODQsOCBAQCBBbHRlclRhYmxlR2V0TG9ja0xldmVsKExpc3Qg KmNtZHMpCiAJCQljYXNlIEFUX0VuYWJsZVJlcGxpY2FSdWxlOgkvKiBtYXkgY2hhbmdlIFNF TEVDVCBydWxlcyAqLwogCQkJY2FzZSBBVF9FbmFibGVSdWxlOiAvKiBtYXkgY2hhbmdlIFNF TEVDVCBydWxlcyAqLwogCQkJY2FzZSBBVF9EaXNhYmxlUnVsZToJLyogbWF5IGNoYW5nZSBT RUxFQ1QgcnVsZXMgKi8KKwkJCWNhc2UgQVRfQWRkUGVyaW9kOiAvKiBzaGFyZXMgbmFtZXNw YWNlIHdpdGggY29sdW1ucywgYWRkcyBjb25zdHJhaW50ICovCisJCQljYXNlIEFUX0Ryb3BQ ZXJpb2Q6CiAJCQkJY21kX2xvY2ttb2RlID0gQWNjZXNzRXhjbHVzaXZlTG9jazsKIAkJCQli cmVhazsKIApAQCAtNDgyNSw2ICs1MzAxLDE0IEBAIEFUUHJlcENtZChMaXN0ICoqd3F1ZXVl LCBSZWxhdGlvbiByZWwsIEFsdGVyVGFibGVDbWQgKmNtZCwKIAkJCS8qIFRoaXMgY29tbWFu ZCBuZXZlciByZWN1cnNlcyAqLwogCQkJcGFzcyA9IEFUX1BBU1NfQUREX09USEVSQ09OU1RS OwogCQkJYnJlYWs7CisJCWNhc2UgQVRfQWRkUGVyaW9kOiAvKiBBTFRFUiBUQUJMRSAuLi4g QUREIFBFUklPRCBGT1IgbmFtZSAoc3RhcnQsIGVuZCkgKi8KKwkJCUFUU2ltcGxlUGVybWlz c2lvbnMoY21kLT5zdWJ0eXBlLCByZWwsIEFUVF9UQUJMRSk7CisJCQlwYXNzID0gQVRfUEFT U19BRERfUEVSSU9EOworCQkJYnJlYWs7CisJCWNhc2UgQVRfRHJvcFBlcmlvZDogLyogQUxU RVIgVEFCTEUgLi4uIERST1AgUEVSSU9EIEZPUiBuYW1lICovCisJCQlBVFNpbXBsZVBlcm1p c3Npb25zKGNtZC0+c3VidHlwZSwgcmVsLCBBVFRfVEFCTEUpOworCQkJcGFzcyA9IEFUX1BB U1NfRFJPUDsKKwkJCWJyZWFrOwogCQljYXNlIEFUX0FkZElkZW50aXR5OgogCQkJQVRTaW1w bGVQZXJtaXNzaW9ucyhjbWQtPnN1YnR5cGUsIHJlbCwgQVRUX1RBQkxFIHwgQVRUX1ZJRVcg fCBBVFRfRk9SRUlHTl9UQUJMRSk7CiAJCQkvKiBUaGlzIGNvbW1hbmQgbmV2ZXIgcmVjdXJz ZXMgKi8KQEAgLTUyMjIsNiArNTcwNiwxNCBAQCBBVEV4ZWNDbWQoTGlzdCAqKndxdWV1ZSwg QWx0ZXJlZFRhYmxlSW5mbyAqdGFiLAogCQljYXNlIEFUX0Nvb2tlZENvbHVtbkRlZmF1bHQ6 CS8qIGFkZCBhIHByZS1jb29rZWQgZGVmYXVsdCAqLwogCQkJYWRkcmVzcyA9IEFURXhlY0Nv b2tlZENvbHVtbkRlZmF1bHQocmVsLCBjbWQtPm51bSwgY21kLT5kZWYpOwogCQkJYnJlYWs7 CisJCWNhc2UgQVRfQWRkUGVyaW9kOgorCQkJYWRkcmVzcyA9IEFURXhlY0FkZFBlcmlvZChy ZWwsIChQZXJpb2REZWYgKikgY21kLT5kZWYsIGNvbnRleHQpOworCQkJYnJlYWs7CisJCWNh c2UgQVRfRHJvcFBlcmlvZDoKKwkJCUFURXhlY0Ryb3BQZXJpb2QocmVsLCBjbWQtPm5hbWUs IGNtZC0+YmVoYXZpb3IsCisJCQkJCQkJCSBmYWxzZSwgZmFsc2UsCisJCQkJCQkJCSBjbWQt Pm1pc3Npbmdfb2spOworCQkJYnJlYWs7CiAJCWNhc2UgQVRfQWRkSWRlbnRpdHk6CiAJCQlj bWQgPSBBVFBhcnNlVHJhbnNmb3JtQ21kKHdxdWV1ZSwgdGFiLCByZWwsIGNtZCwgZmFsc2Us IGxvY2ttb2RlLAogCQkJCQkJCQkJICBjdXJfcGFzcywgY29udGV4dCk7CkBAIC02MzY2LDYg KzY4NTgsOCBAQCBhbHRlcl90YWJsZV90eXBlX3RvX3N0cmluZyhBbHRlclRhYmxlVHlwZSBj bWR0eXBlKQogCQljYXNlIEFUX0FkZENvbHVtbjoKIAkJY2FzZSBBVF9BZGRDb2x1bW5Ub1Zp ZXc6CiAJCQlyZXR1cm4gIkFERCBDT0xVTU4iOworCQljYXNlIEFUX0FkZFBlcmlvZDoKKwkJ CXJldHVybiAiQUREIFBFUklPRCI7CiAJCWNhc2UgQVRfQ29sdW1uRGVmYXVsdDoKIAkJY2Fz ZSBBVF9Db29rZWRDb2x1bW5EZWZhdWx0OgogCQkJcmV0dXJuICJBTFRFUiBDT0xVTU4gLi4u IFNFVCBERUZBVUxUIjsKQEAgLTYzODksNiArNjg4Myw4IEBAIGFsdGVyX3RhYmxlX3R5cGVf dG9fc3RyaW5nKEFsdGVyVGFibGVUeXBlIGNtZHR5cGUpCiAJCQlyZXR1cm4gIkFMVEVSIENP TFVNTiAuLi4gU0VUIENPTVBSRVNTSU9OIjsKIAkJY2FzZSBBVF9Ecm9wQ29sdW1uOgogCQkJ cmV0dXJuICJEUk9QIENPTFVNTiI7CisJCWNhc2UgQVRfRHJvcFBlcmlvZDoKKwkJCXJldHVy biAiRFJPUCBQRVJJT0QiOwogCQljYXNlIEFUX0FkZEluZGV4OgogCQljYXNlIEFUX1JlQWRk SW5kZXg6CiAJCQlyZXR1cm4gTlVMTDsJCS8qIG5vdCByZWFsIGdyYW1tYXIgKi8KQEAgLTcz OTQsMTQgKzc4OTAsMjkgQEAgQVRFeGVjQWRkQ29sdW1uKExpc3QgKip3cXVldWUsIEFsdGVy ZWRUYWJsZUluZm8gKnRhYiwgUmVsYXRpb24gcmVsLAogLyoKICAqIElmIGEgbmV3IG9yIHJl bmFtZWQgY29sdW1uIHdpbGwgY29sbGlkZSB3aXRoIHRoZSBuYW1lIG9mIGFuIGV4aXN0aW5n CiAgKiBjb2x1bW4gYW5kIGlmX25vdF9leGlzdHMgaXMgZmFsc2UgdGhlbiBlcnJvciBvdXQs IGVsc2UgZG8gbm90aGluZy4KKyAqCisgKiBTZWUgYWxzbyBjaGVja19mb3JfcGVyaW9kX25h bWVfY29sbGlzaW9uLgogICovCiBzdGF0aWMgYm9vbAogY2hlY2tfZm9yX2NvbHVtbl9uYW1l X2NvbGxpc2lvbihSZWxhdGlvbiByZWwsIGNvbnN0IGNoYXIgKmNvbG5hbWUsCiAJCQkJCQkJ CWJvb2wgaWZfbm90X2V4aXN0cykKIHsKLQlIZWFwVHVwbGUJYXR0VHVwbGU7CisJSGVhcFR1 cGxlCWF0dFR1cGxlLCBwZXJUdXBsZTsKIAlpbnQJCQlhdHRudW07CiAKKwkvKiBJZiB0aGUg bmFtZSBleGlzdHMgYXMgYSBwZXJpb2QsIHdlJ3JlIGRvbmUuICovCisJcGVyVHVwbGUgPSBT ZWFyY2hTeXNDYWNoZTIoUEVSSU9ETkFNRSwKKwkJCQkJCQkgICBPYmplY3RJZEdldERhdHVt KFJlbGF0aW9uR2V0UmVsaWQocmVsKSksCisJCQkJCQkJICAgUG9pbnRlckdldERhdHVtKGNv bG5hbWUpKTsKKwlpZiAoSGVhcFR1cGxlSXNWYWxpZChwZXJUdXBsZSkpCisJeworCQlSZWxl YXNlU3lzQ2FjaGUocGVyVHVwbGUpOworCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2Rl KEVSUkNPREVfRFVQTElDQVRFX0NPTFVNTiksCisJCQkJIGVycm1zZygiY29sdW1uIG5hbWUg XCIlc1wiIGNvbmZsaWN0cyB3aXRoIGEgcGVyaW9kIG5hbWUiLAorCQkJCQkJY29sbmFtZSkp KTsKKwl9CisKIAkvKgogCSAqIHRoaXMgdGVzdCBpcyBkZWxpYmVyYXRlbHkgbm90IGF0dGlz ZHJvcHBlZC1hd2FyZSwgc2luY2UgaWYgb25lIHRyaWVzIHRvCiAJICogYWRkIGEgY29sdW1u IG1hdGNoaW5nIGEgZHJvcHBlZCBjb2x1bW4gbmFtZSwgaXQncyBnb25uYSBmYWlsIGFueXdh eS4KQEAgLTc0NDUsNiArNzk1Niw3NiBAQCBjaGVja19mb3JfY29sdW1uX25hbWVfY29sbGlz aW9uKFJlbGF0aW9uIHJlbCwgY29uc3QgY2hhciAqY29sbmFtZSwKIAlyZXR1cm4gdHJ1ZTsK IH0KIAorLyoKKyAqIElmIGEgbmV3IHBlcmlvZCBuYW1lIHdpbGwgY29sbGlkZSB3aXRoIHRo ZSBuYW1lIG9mIGFuIGV4aXN0aW5nIGNvbHVtbiBvcgorICogcGVyaW9kIFthbmQgaWZfbm90 X2V4aXN0cyBpcyBmYWxzZV0gdGhlbiBlcnJvciBvdXQsIGVsc2UgZG8gbm90aGluZy4KKyAq CisgKiBTZWUgYWxzbyBjaGVja19mb3JfY29sdW1uX25hbWVfY29sbGlzaW9uLgorICovCitz dGF0aWMgYm9vbAorY2hlY2tfZm9yX3BlcmlvZF9uYW1lX2NvbGxpc2lvbihSZWxhdGlvbiBy ZWwsIGNvbnN0IGNoYXIgKnBlcm5hbWUsCisJCQkJCQkJCWJvb2wgaWZfbm90X2V4aXN0cykK K3sKKwlIZWFwVHVwbGUJYXR0VHVwbGUsIHBlclR1cGxlOworCWludAkJCWF0dG51bTsKKwor CS8qIFRPRE86IGltcGxlbWVudCBJRiBbTk9UXSBFWElTVFMgZm9yIHBlcmlvZHMgKi8KKwlB c3NlcnQoIWlmX25vdF9leGlzdHMpOworCisJLyogSWYgdGhlcmUgaXMgYWxyZWFkeSBhIHBl cmlvZCB3aXRoIHRoaXMgbmFtZSwgdGhlbiB3ZSdyZSBkb25lLiAqLworCXBlclR1cGxlID0g U2VhcmNoU3lzQ2FjaGUyKFBFUklPRE5BTUUsCisJCQkJCQkJICAgT2JqZWN0SWRHZXREYXR1 bShSZWxhdGlvbkdldFJlbGlkKHJlbCkpLAorCQkJCQkJCSAgIFBvaW50ZXJHZXREYXR1bShw ZXJuYW1lKSk7CisJaWYgKEhlYXBUdXBsZUlzVmFsaWQocGVyVHVwbGUpKQorCXsKKwkJaWYg KGlmX25vdF9leGlzdHMpCisJCXsKKwkJCVJlbGVhc2VTeXNDYWNoZShwZXJUdXBsZSk7CisK KwkJCWVyZXBvcnQoTk9USUNFLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0RVUExJQ0FURV9D T0xVTU4pLAorCQkJCQkgZXJybXNnKCJwZXJpb2QgXCIlc1wiIG9mIHJlbGF0aW9uIFwiJXNc IiBhbHJlYWR5IGV4aXN0cywgc2tpcHBpbmciLAorCQkJCQkJCXBlcm5hbWUsIFJlbGF0aW9u R2V0UmVsYXRpb25OYW1lKHJlbCkpKSk7CisJCQlyZXR1cm4gZmFsc2U7CisJCX0KKworCQll cmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfRFVQTElDQVRFX0NPTFVNTiks CisJCQkJIGVycm1zZygicGVyaW9kIFwiJXNcIiBvZiByZWxhdGlvbiBcIiVzXCIgYWxyZWFk eSBleGlzdHMiLAorCQkJCQkJcGVybmFtZSwgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVs KSkpKTsKKwl9CisKKwkvKgorCSAqIHRoaXMgdGVzdCBpcyBkZWxpYmVyYXRlbHkgbm90IGF0 dGlzZHJvcHBlZC1hd2FyZSwgc2luY2UgaWYgb25lIHRyaWVzIHRvCisJICogYWRkIGEgY29s dW1uIG1hdGNoaW5nIGEgZHJvcHBlZCBjb2x1bW4gbmFtZSwgaXQncyBnb25uYSBmYWlsIGFu eXdheS4KKwkgKi8KKwlhdHRUdXBsZSA9IFNlYXJjaFN5c0NhY2hlMihBVFROQU1FLAorCQkJ CQkJCSAgIE9iamVjdElkR2V0RGF0dW0oUmVsYXRpb25HZXRSZWxpZChyZWwpKSwKKwkJCQkJ CQkgICBQb2ludGVyR2V0RGF0dW0ocGVybmFtZSkpOworCWlmIChIZWFwVHVwbGVJc1ZhbGlk KGF0dFR1cGxlKSkKKwl7CisJCWF0dG51bSA9ICgoRm9ybV9wZ19hdHRyaWJ1dGUpIEdFVFNU UlVDVChhdHRUdXBsZSkpLT5hdHRudW07CisJCVJlbGVhc2VTeXNDYWNoZShhdHRUdXBsZSk7 CisKKwkJLyoKKwkJICogV2UgdGhyb3cgYSBkaWZmZXJlbnQgZXJyb3IgbWVzc2FnZSBmb3Ig Y29uZmxpY3RzIHdpdGggc3lzdGVtIGNvbHVtbgorCQkgKiBuYW1lcywgc2luY2UgdGhleSBh cmUgbm9ybWFsbHkgbm90IHNob3duIGFuZCB0aGUgdXNlciBtaWdodCBvdGhlcndpc2UKKwkJ ICogYmUgY29uZnVzZWQgYWJvdXQgdGhlIHJlYXNvbiBmb3IgdGhlIGNvbmZsaWN0LgorCQkg Ki8KKwkJaWYgKGF0dG51bSA8PSAwKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNv ZGUoRVJSQ09ERV9EVVBMSUNBVEVfQ09MVU1OKSwKKwkJCQkJIGVycm1zZygicGVyaW9kIG5h bWUgXCIlc1wiIGNvbmZsaWN0cyB3aXRoIGEgc3lzdGVtIGNvbHVtbiBuYW1lIiwKKwkJCQkJ CQlwZXJuYW1lKSkpOworCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVf RFVQTElDQVRFX0NPTFVNTiksCisJCQkJIGVycm1zZygicGVyaW9kIG5hbWUgXCIlc1wiIGNv bmZsaWN0cyB3aXRoIGEgY29sdW1uIG5hbWUiLAorCQkJCQkJcGVybmFtZSkpKTsKKwl9CisK KwlyZXR1cm4gdHJ1ZTsKK30KKwogLyoKICAqIEluc3RhbGwgYSBjb2x1bW4ncyBkZXBlbmRl bmN5IG9uIGl0cyBkYXRhdHlwZS4KICAqLwpAQCAtODA4OSw2ICs4NjcwLDE1NSBAQCBBVEV4 ZWNDb29rZWRDb2x1bW5EZWZhdWx0KFJlbGF0aW9uIHJlbCwgQXR0ck51bWJlciBhdHRudW0s CiAJcmV0dXJuIGFkZHJlc3M7CiB9CiAKKy8qCisgKiBBTFRFUiBUQUJMRSBBREQgUEVSSU9E CisgKgorICogUmV0dXJuIHRoZSBhZGRyZXNzIG9mIHRoZSBwZXJpb2QuCisgKi8KK3N0YXRp YyBPYmplY3RBZGRyZXNzCitBVEV4ZWNBZGRQZXJpb2QoUmVsYXRpb24gcmVsLCBQZXJpb2RE ZWYgKnBlcmlvZCwgQWx0ZXJUYWJsZVV0aWxpdHlDb250ZXh0ICpjb250ZXh0KQoreworCVJl bGF0aW9uCQlhdHRyZWxhdGlvbjsKKwlPYmplY3RBZGRyZXNzCWFkZHJlc3MgPSBJbnZhbGlk T2JqZWN0QWRkcmVzczsKKwlDb25zdHJhaW50CSAgICpjb25zdHI7CisJQ29sdW1uRGVmCSAg ICpyYW5nZWNvbDsKKwlPaWQJCQkJY29ub2lkLCBwZXJpb2RvaWQ7CisJTGlzdAkJICAgKmNt ZHMgPSBOSUw7CisJQWx0ZXJUYWJsZUNtZCAgKmNtZDsKKworCS8qCisJICogUEVSSU9EIEZP UiBTWVNURU1fVElNRSBpcyBub3QgeWV0IGltcGxlbWVudGVkLCBidXQgbWFrZSBzdXJlIG5v IG9uZSB1c2VzCisJICogdGhlIG5hbWUuCisJICovCisJaWYgKHN0cmNtcChwZXJpb2QtPnBl cmlvZG5hbWUsICJzeXN0ZW1fdGltZSIpID09IDApCisJCQllcmVwb3J0KEVSUk9SLAorCQkJ CQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJCSBlcnJt c2coIlBFUklPRCBGT1IgU1lTVEVNX1RJTUUgaXMgbm90IHN1cHBvcnRlZCIpKSk7CisKKwkv KiBUaGUgcGVyaW9kIG5hbWUgbXVzdCBub3QgYWxyZWFkeSBleGlzdCAqLworCSh2b2lkKSBj aGVja19mb3JfcGVyaW9kX25hbWVfY29sbGlzaW9uKHJlbCwgcGVyaW9kLT5wZXJpb2RuYW1l LCBmYWxzZSk7CisKKwkvKiBQYXJzZSBvcHRpb25zICovCisJdHJhbnNmb3JtUGVyaW9kT3B0 aW9ucyhwZXJpb2QpOworCisJYXR0cmVsYXRpb24gPSB0YWJsZV9vcGVuKEF0dHJpYnV0ZVJl bGF0aW9uSWQsIFJvd0V4Y2x1c2l2ZUxvY2spOworCVZhbGlkYXRlUGVyaW9kKHJlbCwgcGVy aW9kKTsKKworCXBlcmlvZC0+cm5ndHlwaWQgPSBjaG9vc2VfcmFuZ2V0eXBlX2Zvcl9wZXJp b2QocGVyaW9kKTsKKworCS8qIE1ha2UgdGhlIENIRUNLIGNvbnN0cmFpbnQgKi8KKwljb25z dHIgPSBtYWtlX2NvbnN0cmFpbnRfZm9yX3BlcmlvZChyZWwsIHBlcmlvZCk7CisJY21kID0g bWFrZU5vZGUoQWx0ZXJUYWJsZUNtZCk7CisJY21kLT5zdWJ0eXBlID0gQVRfQWRkQ29uc3Ry YWludDsKKwljbWQtPmRlZiA9IChOb2RlICopIGNvbnN0cjsKKwljbWRzID0gbGFwcGVuZChj bWRzLCBjbWQpOworCUFsdGVyVGFibGVJbnRlcm5hbChSZWxhdGlvbkdldFJlbGlkKHJlbCks IGNtZHMsIHRydWUsIGNvbnRleHQpOworCWNvbm9pZCA9IGdldF9yZWxhdGlvbl9jb25zdHJh aW50X29pZChSZWxhdGlvbkdldFJlbGlkKHJlbCksIHBlcmlvZC0+Y29uc3RyYWludG5hbWUs IGZhbHNlKTsKKworCS8qIE1ha2UgdGhlIHJhbmdlIGNvbHVtbiAqLworCXJhbmdlY29sID0g bWFrZV9yYW5nZV9jb2x1bW5fZm9yX3BlcmlvZChwZXJpb2QpOworCWNtZCA9IG1ha2VOb2Rl KEFsdGVyVGFibGVDbWQpOworCWNtZC0+c3VidHlwZSA9IEFUX0FkZENvbHVtbjsKKwljbWQt PmRlZiA9IChOb2RlICopIHJhbmdlY29sOworCWNtZC0+bmFtZSA9IHBlcmlvZC0+cGVyaW9k bmFtZTsKKwljbWQtPnJlY3Vyc2UgPSBmYWxzZTsgLyogbm8sIGxldCB0aGUgUEVSSU9EIHJl Y3Vyc2UgaW5zdGVhZCAqLworCUFsdGVyVGFibGVJbnRlcm5hbChSZWxhdGlvbkdldFJlbGlk KHJlbCksIGxpc3RfbWFrZTEoY21kKSwgdHJ1ZSwgY29udGV4dCk7CisJcGVyaW9kLT5ybmdh dHRudW0gPSBnZXRfYXR0bnVtKFJlbGF0aW9uR2V0UmVsaWQocmVsKSwgcGVyaW9kLT5wZXJp b2RuYW1lKTsKKwlpZiAocGVyaW9kLT5ybmdhdHRudW0gPT0gSW52YWxpZEF0dHJOdW1iZXIp CisJCWVsb2coRVJST1IsICJtaXNzaW5nIGF0dHJpYnV0ZSAlcyIsIHBlcmlvZC0+cGVyaW9k bmFtZSk7CisKKwkvKiBTYXZlIHRoZSBQZXJpb2QgKi8KKwlwZXJpb2RvaWQgPSBTdG9yZVBl cmlvZChyZWwsIHBlcmlvZC0+cGVyaW9kbmFtZSwgcGVyaW9kLT5zdGFydGF0dG51bSwgcGVy aW9kLT5lbmRhdHRudW0sIHBlcmlvZC0+cm5nYXR0bnVtLCBjb25vaWQpOworCisJT2JqZWN0 QWRkcmVzc1NldChhZGRyZXNzLCBQZXJpb2RSZWxhdGlvbklkLCBwZXJpb2RvaWQpOworCisJ dGFibGVfY2xvc2UoYXR0cmVsYXRpb24sIFJvd0V4Y2x1c2l2ZUxvY2spOworCisJcmV0dXJu IGFkZHJlc3M7Cit9CisKKy8qCisgKiBBTFRFUiBUQUJMRSBEUk9QIFBFUklPRAorICoKKyAq IExpa2UgRFJPUCBDT0xVTU4sIHdlIGNhbid0IHVzZSB0aGUgbm9ybWFsIEFMVEVSIFRBQkxF IHJlY3Vyc2lvbiBtZWNoYW5pc20uCisgKi8KK3N0YXRpYyB2b2lkCitBVEV4ZWNEcm9wUGVy aW9kKFJlbGF0aW9uIHJlbCwgY29uc3QgY2hhciAqcGVyaW9kTmFtZSwKKwkJCQkJIERyb3BC ZWhhdmlvciBiZWhhdmlvciwKKwkJCQkJIGJvb2wgcmVjdXJzZSwgYm9vbCByZWN1cnNpbmcs CisJCQkJCSBib29sIG1pc3Npbmdfb2spCit7CisJUmVsYXRpb24JcGdfcGVyaW9kOworCUZv cm1fcGdfcGVyaW9kIHBlcmlvZDsKKwlTeXNTY2FuRGVzYyBzY2FuOworCVNjYW5LZXlEYXRh IGtleTsKKwlIZWFwVHVwbGUJdHVwbGU7CisJYm9vbAkJZm91bmQgPSBmYWxzZTsKKworCS8q IEF0IHRvcCBsZXZlbCwgcGVybWlzc2lvbiBjaGVjayB3YXMgZG9uZSBpbiBBVFByZXBDbWQs IGVsc2UgZG8gaXQgKi8KKwlpZiAocmVjdXJzaW5nKQorCQlBVFNpbXBsZVBlcm1pc3Npb25z KEFUX0Ryb3BQZXJpb2QsIHJlbCwgQVRUX1RBQkxFKTsKKworCXBnX3BlcmlvZCA9IHRhYmxl X29wZW4oUGVyaW9kUmVsYXRpb25JZCwgUm93RXhjbHVzaXZlTG9jayk7CisKKwkvKgorCSAq IEZpbmQgYW5kIGRyb3AgdGhlIHRhcmdldCBwZXJpb2QKKwkgKi8KKwlTY2FuS2V5SW5pdCgm a2V5LAorCQkJCUFudW1fcGdfcGVyaW9kX3BlcnJlbGlkLAorCQkJCUJURXF1YWxTdHJhdGVn eU51bWJlciwgRl9PSURFUSwKKwkJCQlPYmplY3RJZEdldERhdHVtKFJlbGF0aW9uR2V0UmVs aWQocmVsKSkpOworCXNjYW4gPSBzeXN0YWJsZV9iZWdpbnNjYW4ocGdfcGVyaW9kLCBQZXJp b2RSZWxpZE5hbWVJbmRleElkLAorCQkJCQkJCSAgdHJ1ZSwgTlVMTCwgMSwgJmtleSk7CisK Kwl3aGlsZSAoSGVhcFR1cGxlSXNWYWxpZCh0dXBsZSA9IHN5c3RhYmxlX2dldG5leHQoc2Nh bikpKQorCXsKKwkJT2JqZWN0QWRkcmVzcyBwZXJvYmo7CisKKwkJcGVyaW9kID0gKEZvcm1f cGdfcGVyaW9kKSBHRVRTVFJVQ1QodHVwbGUpOworCisJCWlmIChzdHJjbXAoTmFtZVN0cihw ZXJpb2QtPnBlcm5hbWUpLCBwZXJpb2ROYW1lKSAhPSAwKQorCQkJY29udGludWU7CisKKwkJ LyoKKwkJICogUGVyZm9ybSB0aGUgYWN0dWFsIHBlcmlvZCBkZWxldGlvbgorCQkgKi8KKwkJ cGVyb2JqLmNsYXNzSWQgPSBQZXJpb2RSZWxhdGlvbklkOworCQlwZXJvYmoub2JqZWN0SWQg PSBwZXJpb2QtPm9pZDsKKwkJcGVyb2JqLm9iamVjdFN1YklkID0gMDsKKworCQlwZXJmb3Jt RGVsZXRpb24oJnBlcm9iaiwgYmVoYXZpb3IsIDApOworCisJCWZvdW5kID0gdHJ1ZTsKKwor CQkvKiBwZXJpb2QgZm91bmQgYW5kIGRyb3BwZWQgLS0gbm8gbmVlZCB0byBrZWVwIGxvb3Bp bmcgKi8KKwkJYnJlYWs7CisJfQorCisJc3lzdGFibGVfZW5kc2NhbihzY2FuKTsKKworCWlm ICghZm91bmQpCisJeworCQlpZiAoIW1pc3Npbmdfb2spCisJCXsKKwkJCWVyZXBvcnQoRVJS T1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVEX09CSkVDVCksCisJCQkJCSBl cnJtc2coInBlcmlvZCBcIiVzXCIgb24gcmVsYXRpb24gXCIlc1wiIGRvZXMgbm90IGV4aXN0 IiwKKwkJCQkJCQlwZXJpb2ROYW1lLCBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpKSkp OworCQl9CisJCWVsc2UKKwkJeworCQkJZXJlcG9ydChOT1RJQ0UsCisJCQkJCShlcnJtc2co InBlcmlvZCBcIiVzXCIgb24gcmVsYXRpb24gXCIlc1wiIGRvZXMgbm90IGV4aXN0LCBza2lw cGluZyIsCisJCQkJCQkJcGVyaW9kTmFtZSwgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVs KSkpKTsKKwkJCXRhYmxlX2Nsb3NlKHBnX3BlcmlvZCwgUm93RXhjbHVzaXZlTG9jayk7CisJ CQlyZXR1cm47CisJCX0KKwl9CisKKwl0YWJsZV9jbG9zZShwZ19wZXJpb2QsIFJvd0V4Y2x1 c2l2ZUxvY2spOworfQorCiAvKgogICogQUxURVIgVEFCTEUgQUxURVIgQ09MVU1OIEFERCBJ REVOVElUWQogICoKQEAgLTEzNTk4LDYgKzE0MzI4LDE1IEBAIEFURXhlY0FsdGVyQ29sdW1u VHlwZShBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKIAkJCQlSZW1lbWJl ckNvbnN0cmFpbnRGb3JSZWJ1aWxkaW5nKGZvdW5kT2JqZWN0Lm9iamVjdElkLCB0YWIpOwog CQkJCWJyZWFrOwogCisJCQljYXNlIE9DTEFTU19QRVJJT0Q6CisJCQkJZXJlcG9ydChFUlJP UiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJ CQkJCSBlcnJtc2coImNhbm5vdCBhbHRlciB0eXBlIG9mIGEgY29sdW1uIHVzZWQgYnkgYSBw ZXJpb2QiKSwKKwkJCQkJCSBlcnJkZXRhaWwoIiVzIGRlcGVuZHMgb24gY29sdW1uIFwiJXNc IiIsCisJCQkJCQkJCSAgIGdldE9iamVjdERlc2NyaXB0aW9uKCZmb3VuZE9iamVjdCwgZmFs c2UpLAorCQkJCQkJCQkgICBjb2xOYW1lKSkpOworCQkJCWJyZWFrOworCiAJCQljYXNlIE9D TEFTU19SRVdSSVRFOgogCQkJCS8qIFhYWCBzb21lZGF5IHNlZSBpZiB3ZSBjYW4gY29wZSB3 aXRoIHJldmlzaW5nIHZpZXdzICovCiAJCQkJZXJlcG9ydChFUlJPUiwKQEAgLTE1NjYxLDcg KzE2NDAwLDcgQEAgQWx0ZXJUYWJsZU1vdmVBbGwoQWx0ZXJUYWJsZU1vdmVBbGxTdG10ICpz dG10KQogCiAJCUV2ZW50VHJpZ2dlckFsdGVyVGFibGVTdGFydCgoTm9kZSAqKSBzdG10KTsK IAkJLyogT0lEIGlzIHNldCBieSBBbHRlclRhYmxlSW50ZXJuYWwgKi8KLQkJQWx0ZXJUYWJs ZUludGVybmFsKGxmaXJzdF9vaWQobCksIGNtZHMsIGZhbHNlKTsKKwkJQWx0ZXJUYWJsZUlu dGVybmFsKGxmaXJzdF9vaWQobCksIGNtZHMsIGZhbHNlLCBOVUxMKTsKIAkJRXZlbnRUcmln Z2VyQWx0ZXJUYWJsZUVuZCgpOwogCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29t bWFuZHMvdmlldy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmlldy5jCmluZGV4IDliZDc3 NTQ2YjkuLmJlNDYzNzI4N2YgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3Zp ZXcuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy92aWV3LmMKQEAgLTE2OSw3ICsxNjks NyBAQCBEZWZpbmVWaXJ0dWFsUmVsYXRpb24oUmFuZ2VWYXIgKnJlbGF0aW9uLCBMaXN0ICp0 bGlzdCwgYm9vbCByZXBsYWNlLAogCQkJfQogCiAJCQkvKiBFdmVudFRyaWdnZXJBbHRlclRh YmxlU3RhcnQgY2FsbGVkIGJ5IFByb2Nlc3NVdGlsaXR5U2xvdyAqLwotCQkJQWx0ZXJUYWJs ZUludGVybmFsKHZpZXdPaWQsIGF0Y21kcywgdHJ1ZSk7CisJCQlBbHRlclRhYmxlSW50ZXJu YWwodmlld09pZCwgYXRjbWRzLCB0cnVlLCBOVUxMKTsKIAogCQkJLyogTWFrZSB0aGUgbmV3 IHZpZXcgY29sdW1ucyB2aXNpYmxlICovCiAJCQlDb21tYW5kQ291bnRlckluY3JlbWVudCgp OwpAQCAtMjAxLDcgKzIwMSw3IEBAIERlZmluZVZpcnR1YWxSZWxhdGlvbihSYW5nZVZhciAq cmVsYXRpb24sIExpc3QgKnRsaXN0LCBib29sIHJlcGxhY2UsCiAJCWF0Y21kcyA9IGxpc3Rf bWFrZTEoYXRjbWQpOwogCiAJCS8qIEV2ZW50VHJpZ2dlckFsdGVyVGFibGVTdGFydCBjYWxs ZWQgYnkgUHJvY2Vzc1V0aWxpdHlTbG93ICovCi0JCUFsdGVyVGFibGVJbnRlcm5hbCh2aWV3 T2lkLCBhdGNtZHMsIHRydWUpOworCQlBbHRlclRhYmxlSW50ZXJuYWwodmlld09pZCwgYXRj bWRzLCB0cnVlLCBOVUxMKTsKIAogCQkvKgogCQkgKiBUaGVyZSBpcyB2ZXJ5IGxpdHRsZSB0 byBkbyBoZXJlIHRvIHVwZGF0ZSB0aGUgdmlldydzIGRlcGVuZGVuY2llcy4KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMv bm9kZUZ1bmNzLmMKaW5kZXggNjJjY2JmOWQzYy4uYTBjMDY5ZmM1ZiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMv bm9kZUZ1bmNzLmMKQEAgLTE2MzksNiArMTYzOSw5IEBAIGV4cHJMb2NhdGlvbihjb25zdCBO b2RlICpleHByKQogCQljYXNlIFRfQ29uc3RyYWludDoKIAkJCWxvYyA9ICgoY29uc3QgQ29u c3RyYWludCAqKSBleHByKS0+bG9jYXRpb247CiAJCQlicmVhazsKKwkJY2FzZSBUX1Blcmlv ZERlZjoKKwkJCWxvYyA9ICgoY29uc3QgUGVyaW9kRGVmICopIGV4cHIpLT5sb2NhdGlvbjsK KwkJCWJyZWFrOwogCQljYXNlIFRfRnVuY3Rpb25QYXJhbWV0ZXI6CiAJCQkvKiBqdXN0IHVz ZSB0eXBlbmFtZSdzIGxvY2F0aW9uICovCiAJCQlsb2MgPSBleHByTG9jYXRpb24oKE5vZGUg KikgKChjb25zdCBGdW5jdGlvblBhcmFtZXRlciAqKSBleHByKS0+YXJnVHlwZSk7CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55IGIvc3JjL2JhY2tlbmQvcGFyc2Vy L2dyYW0ueQppbmRleCAyNzUzNTI3ZTI3Li4yMmE0YWIxZjRhIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9wYXJzZXIvZ3JhbS55CisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkK QEAgLTU5NSw3ICs1OTUsNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxl Y3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogJXR5cGUg PGtleXdvcmQ+IGNvbF9uYW1lX2tleXdvcmQgcmVzZXJ2ZWRfa2V5d29yZAogJXR5cGUgPGtl eXdvcmQ+IGJhcmVfbGFiZWxfa2V5d29yZAogCi0ldHlwZSA8bm9kZT4JVGFibGVDb25zdHJh aW50IFRhYmxlTGlrZUNsYXVzZQorJXR5cGUgPG5vZGU+CVRhYmxlQ29uc3RyYWludCBUYWJs ZUxpa2VDbGF1c2UgVGFibGVQZXJpb2QKICV0eXBlIDxpdmFsPglUYWJsZUxpa2VPcHRpb25M aXN0IFRhYmxlTGlrZU9wdGlvbgogJXR5cGUgPHN0cj4JCWNvbHVtbl9jb21wcmVzc2lvbiBv cHRfY29sdW1uX2NvbXByZXNzaW9uIGNvbHVtbl9zdG9yYWdlIG9wdF9jb2x1bW5fc3RvcmFn ZQogJXR5cGUgPGxpc3Q+CUNvbFF1YWxMaXN0CkBAIC0yNjAxLDYgKzI2MDEsMjQgQEAgYWx0 ZXJfdGFibGVfY21kOgogCQkJCQluLT5kZWYgPSAoTm9kZSAqKSAkNDsKIAkJCQkJJCQgPSAo Tm9kZSAqKSBuOwogCQkJCX0KKwkJCS8qIEFMVEVSIFRBQkxFIDxuYW1lPiBBREQgUEVSSU9E IEZPUiA8bmFtZT4gKDxuYW1lPiwgPG5hbWU+KSAqLworCQkJfCBBRERfUCBUYWJsZVBlcmlv ZAorCQkJCXsKKwkJCQkJQWx0ZXJUYWJsZUNtZCAqbiA9IG1ha2VOb2RlKEFsdGVyVGFibGVD bWQpOworCQkJCQluLT5zdWJ0eXBlID0gQVRfQWRkUGVyaW9kOworCQkJCQluLT5kZWYgPSAk MjsKKwkJCQkJJCQgPSAoTm9kZSAqKW47CisJCQkJfQorCQkJLyogQUxURVIgVEFCTEUgPG5h bWU+IERST1AgUEVSSU9EIEZPUiA8bmFtZT4gW1JFU1RSSUNUfENBU0NBREVdICovCisJCQl8 IERST1AgUEVSSU9EIEZPUiBuYW1lIG9wdF9kcm9wX2JlaGF2aW9yCisJCQkJeworCQkJCQlB bHRlclRhYmxlQ21kICpuID0gbWFrZU5vZGUoQWx0ZXJUYWJsZUNtZCk7CisJCQkJCW4tPnN1 YnR5cGUgPSBBVF9Ecm9wUGVyaW9kOworCQkJCQluLT5uYW1lID0gJDQ7CisJCQkJCW4tPmJl aGF2aW9yID0gJDU7CisJCQkJCW4tPm1pc3Npbmdfb2sgPSBmYWxzZTsKKwkJCQkJJCQgPSAo Tm9kZSAqKW47CisJCQkJfQogCQkJLyogQUxURVIgVEFCTEUgPG5hbWU+IEFERCBDT05TVFJB SU5UIC4uLiAqLwogCQkJfCBBRERfUCBUYWJsZUNvbnN0cmFpbnQKIAkJCQl7CkBAIC0zNzIw LDggKzM3MzgsMTAgQEAgVGFibGVFbGVtZW50OgogCQkJY29sdW1uRGVmCQkJCQkJCXsgJCQg PSAkMTsgfQogCQkJfCBUYWJsZUxpa2VDbGF1c2UJCQkJCXsgJCQgPSAkMTsgfQogCQkJfCBU YWJsZUNvbnN0cmFpbnQJCQkJCXsgJCQgPSAkMTsgfQorCQkJfCBUYWJsZVBlcmlvZAkJCQkJ CXsgJCQgPSAkMTsgfQogCQk7CiAKKwogVHlwZWRUYWJsZUVsZW1lbnQ6CiAJCQljb2x1bW5P cHRpb25zCQkJCQkJeyAkJCA9ICQxOyB9CiAJCQl8IFRhYmxlQ29uc3RyYWludAkJCQkJeyAk JCA9ICQxOyB9CkBAIC00MDczLDYgKzQwOTMsMTkgQEAgVGFibGVMaWtlT3B0aW9uOgogCQk7 CiAKIAorVGFibGVQZXJpb2Q6CisJCQlQRVJJT0QgRk9SIG5hbWUgJygnIG5hbWUgJywnIG5h bWUgJyknIG9wdF9kZWZpbml0aW9uCisJCQkJeworCQkJCQlQZXJpb2REZWYgKm4gPSBtYWtl Tm9kZShQZXJpb2REZWYpOworCQkJCQluLT5wZXJpb2RuYW1lID0gJDM7CisJCQkJCW4tPnN0 YXJ0Y29sbmFtZSA9ICQ1OworCQkJCQluLT5lbmRjb2xuYW1lID0gJDc7CisJCQkJCW4tPm9w dGlvbnMgPSAkOTsKKwkJCQkJbi0+bG9jYXRpb24gPSBAMTsKKwkJCQkJJCQgPSAoTm9kZSAq KSBuOworCQkJCX0KKwkJOworCiAvKiBDb25zdHJhaW50RWxlbSBzcGVjaWZpZXMgY29uc3Ry YWludCBzeW50YXggd2hpY2ggaXMgbm90IGVtYmVkZGVkIGludG8KICAqCWEgY29sdW1uIGRl ZmluaXRpb24uIENvbENvbnN0cmFpbnRFbGVtIHNwZWNpZmllcyB0aGUgZW1iZWRkZWQgZm9y bS4KICAqIC0gdGhvbWFzIDE5OTctMTItMDMKQEAgLTcxMzEsNiArNzE2NCwxNCBAQCBDb21t ZW50U3RtdDoKIAkJCQkJbi0+Y29tbWVudCA9ICQ5OwogCQkJCQkkJCA9IChOb2RlICopIG47 CiAJCQkJfQorCQkJfCBDT01NRU5UIE9OIFBFUklPRCBhbnlfbmFtZSBJUyBjb21tZW50X3Rl eHQKKwkJCQl7CisJCQkJCUNvbW1lbnRTdG10ICpuID0gbWFrZU5vZGUoQ29tbWVudFN0bXQp OworCQkJCQluLT5vYmp0eXBlID0gT0JKRUNUX1BFUklPRDsKKwkJCQkJbi0+b2JqZWN0ID0g KE5vZGUgKikgJDQ7CisJCQkJCW4tPmNvbW1lbnQgPSAkNjsKKwkJCQkJJCQgPSAoTm9kZSAq KSBuOworCQkJCX0KIAkJCXwgQ09NTUVOVCBPTiBMQVJHRV9QIE9CSkVDVF9QIE51bWVyaWNP bmx5IElTIGNvbW1lbnRfdGV4dAogCQkJCXsKIAkJCQkJQ29tbWVudFN0bXQgKm4gPSBtYWtl Tm9kZShDb21tZW50U3RtdCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFy c2VfcmVsYXRpb24uYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9yZWxhdGlvbi5jCmlu ZGV4IDg2NGVhOWIwZDUuLmZiYmFkZTUxNDAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bh cnNlci9wYXJzZV9yZWxhdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9y ZWxhdGlvbi5jCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSAiYWNjZXNzL3RhYmxlLmgi CiAjaW5jbHVkZSAiY2F0YWxvZy9oZWFwLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9uYW1lc3Bh Y2UuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3BlcmlvZC5oIgogI2luY2x1ZGUgImNhdGFs b2cvcGdfdHlwZS5oIgogI2luY2x1ZGUgImZ1bmNhcGkuaCIKICNpbmNsdWRlICJub2Rlcy9t YWtlZnVuY3MuaCIKQEAgLTMxODksNiArMzE5MCw3IEBAIGV4cGFuZE5TSXRlbUF0dHJzKFBh cnNlU3RhdGUgKnBzdGF0ZSwgUGFyc2VOYW1lc3BhY2VJdGVtICpuc2l0ZW0sCiAJCQkJICBp bnQgc3VibGV2ZWxzX3VwLCBib29sIHJlcXVpcmVfY29sX3ByaXZzLCBpbnQgbG9jYXRpb24p CiB7CiAJUmFuZ2VUYmxFbnRyeSAqcnRlID0gbnNpdGVtLT5wX3J0ZTsKKwlCaXRtYXBzZXQg ICpwZXJpb2RhdHRzID0gTlVMTDsKIAlSVEVQZXJtaXNzaW9uSW5mbyAqcGVybWluZm8gPSBu c2l0ZW0tPnBfcGVybWluZm87CiAJTGlzdAkgICAqbmFtZXMsCiAJCQkgICAqdmFyczsKQEAg LTMyMTIsMTIgKzMyMTQsMjAgQEAgZXhwYW5kTlNJdGVtQXR0cnMoUGFyc2VTdGF0ZSAqcHN0 YXRlLCBQYXJzZU5hbWVzcGFjZUl0ZW0gKm5zaXRlbSwKIAkJcGVybWluZm8tPnJlcXVpcmVk UGVybXMgfD0gQUNMX1NFTEVDVDsKIAl9CiAKKwkvKiBHZXQgUEVSSU9EIGNvbHVtbnMgdG8g ZXhjbHVkZSAqLworCWlmIChydGUtPnJ0ZWtpbmQgPT0gUlRFX1JFTEFUSU9OKQorCQlwZXJp b2RhdHRzID0gZ2V0X3BlcmlvZF9hdHRub3MocnRlLT5yZWxpZCk7CisKIAlmb3Jib3RoKG5h bWUsIG5hbWVzLCB2YXIsIHZhcnMpCiAJewogCQljaGFyCSAgICpsYWJlbCA9IHN0clZhbChs Zmlyc3QobmFtZSkpOwogCQlWYXIJCSAgICp2YXJub2RlID0gKFZhciAqKSBsZmlyc3QodmFy KTsKIAkJVGFyZ2V0RW50cnkgKnRlOwogCisJCS8qIElmIHRoaXMgY29sdW1uIGlzIGZyb20g YSBQRVJJT0QsIHNraXAgaXQgKi8KKwkJaWYgKGJtc19pc19tZW1iZXIocHN0YXRlLT5wX25l eHRfcmVzbm8sIHBlcmlvZGF0dHMpKQorCQkJCWNvbnRpbnVlOworCiAJCXRlID0gbWFrZVRh cmdldEVudHJ5KChFeHByICopIHZhcm5vZGUsCiAJCQkJCQkJIChBdHRyTnVtYmVyKSBwc3Rh dGUtPnBfbmV4dF9yZXNubysrLAogCQkJCQkJCSBsYWJlbCwKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFy c2VfdXRpbGNtZC5jCmluZGV4IGY0NzA1ZWNjMmIuLmU5NmU5NDQ2MjkgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMKKysrIGIvc3JjL2JhY2tlbmQv cGFyc2VyL3BhcnNlX3V0aWxjbWQuYwpAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgImNh dGFsb2cvcGdfY29uc3RyYWludC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfb3BjbGFzcy5o IgogI2luY2x1ZGUgImNhdGFsb2cvcGdfb3BlcmF0b3IuaCIKKyNpbmNsdWRlICJjYXRhbG9n L3BnX3BlcmlvZC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfc3RhdGlzdGljX2V4dC5oIgog I2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2NvbW1l bnQuaCIKQEAgLTgwLDYgKzgxLDcgQEAgdHlwZWRlZiBzdHJ1Y3QKIAlib29sCQlpc2ZvcmVp Z247CQkvKiB0cnVlIGlmIENSRUFURS9BTFRFUiBGT1JFSUdOIFRBQkxFICovCiAJYm9vbAkJ aXNhbHRlcjsJCS8qIHRydWUgaWYgYWx0ZXJpbmcgZXhpc3RpbmcgdGFibGUgKi8KIAlMaXN0 CSAgICpjb2x1bW5zOwkJLyogQ29sdW1uRGVmIGl0ZW1zICovCisJTGlzdAkgICAqcGVyaW9k czsJCS8qIFBlcmlvZERlZiBpdGVtcyAqLwogCUxpc3QJICAgKmNrY29uc3RyYWludHM7CS8q IENIRUNLIGNvbnN0cmFpbnRzICovCiAJTGlzdAkgICAqbm5jb25zdHJhaW50czsJLyogTk9U IE5VTEwgY29uc3RyYWludHMgKi8KIAlMaXN0CSAgICpma2NvbnN0cmFpbnRzOwkvKiBGT1JF SUdOIEtFWSBjb25zdHJhaW50cyAqLwpAQCAtMTExLDYgKzExMyw4IEBAIHR5cGVkZWYgc3Ry dWN0CiAKIHN0YXRpYyB2b2lkIHRyYW5zZm9ybUNvbHVtbkRlZmluaXRpb24oQ3JlYXRlU3Rt dENvbnRleHQgKmN4dCwKIAkJCQkJCQkJCSAgQ29sdW1uRGVmICpjb2x1bW4pOworc3RhdGlj IHZvaWQgdHJhbnNmb3JtVGFibGVQZXJpb2QoQ3JlYXRlU3RtdENvbnRleHQgKmN4dCwKKwkJ CQkJCQkJIFBlcmlvZERlZiAqcGVyaW9kKTsKIHN0YXRpYyB2b2lkIHRyYW5zZm9ybVRhYmxl Q29uc3RyYWludChDcmVhdGVTdG10Q29udGV4dCAqY3h0LAogCQkJCQkJCQkJIENvbnN0cmFp bnQgKmNvbnN0cmFpbnQpOwogc3RhdGljIHZvaWQgdHJhbnNmb3JtVGFibGVMaWtlQ2xhdXNl KENyZWF0ZVN0bXRDb250ZXh0ICpjeHQsCkBAIC0yNDEsNiArMjQ1LDcgQEAgdHJhbnNmb3Jt Q3JlYXRlU3RtdChDcmVhdGVTdG10ICpzdG10LCBjb25zdCBjaGFyICpxdWVyeVN0cmluZykK IAljeHQuaW5oUmVsYXRpb25zID0gc3RtdC0+aW5oUmVsYXRpb25zOwogCWN4dC5pc2FsdGVy ID0gZmFsc2U7CiAJY3h0LmNvbHVtbnMgPSBOSUw7CisJY3h0LnBlcmlvZHMgPSBOSUw7CiAJ Y3h0LmNrY29uc3RyYWludHMgPSBOSUw7CiAJY3h0Lm5uY29uc3RyYWludHMgPSBOSUw7CiAJ Y3h0LmZrY29uc3RyYWludHMgPSBOSUw7CkBAIC0yODEsNiArMjg2LDEwIEBAIHRyYW5zZm9y bUNyZWF0ZVN0bXQoQ3JlYXRlU3RtdCAqc3RtdCwgY29uc3QgY2hhciAqcXVlcnlTdHJpbmcp CiAJCQkJdHJhbnNmb3JtQ29sdW1uRGVmaW5pdGlvbigmY3h0LCAoQ29sdW1uRGVmICopIGVs ZW1lbnQpOwogCQkJCWJyZWFrOwogCisJCQljYXNlIFRfUGVyaW9kRGVmOgorCQkJCXRyYW5z Zm9ybVRhYmxlUGVyaW9kKCZjeHQsIChQZXJpb2REZWYgKikgZWxlbWVudCk7CisJCQkJYnJl YWs7CisKIAkJCWNhc2UgVF9Db25zdHJhaW50OgogCQkJCXRyYW5zZm9ybVRhYmxlQ29uc3Ry YWludCgmY3h0LCAoQ29uc3RyYWludCAqKSBlbGVtZW50KTsKIAkJCQlicmVhazsKQEAgLTM0 OCw2ICszNTcsNyBAQCB0cmFuc2Zvcm1DcmVhdGVTdG10KENyZWF0ZVN0bXQgKnN0bXQsIGNv bnN0IGNoYXIgKnF1ZXJ5U3RyaW5nKQogCSAqIE91dHB1dCByZXN1bHRzLgogCSAqLwogCXN0 bXQtPnRhYmxlRWx0cyA9IGN4dC5jb2x1bW5zOworCXN0bXQtPnBlcmlvZHMgPSBjeHQucGVy aW9kczsKIAlzdG10LT5jb25zdHJhaW50cyA9IGN4dC5ja2NvbnN0cmFpbnRzOwogCXN0bXQt Pm5uY29uc3RyYWludHMgPSBjeHQubm5jb25zdHJhaW50czsKIApAQCAtOTE0LDYgKzkyNCwx MTMgQEAgdHJhbnNmb3JtQ29sdW1uRGVmaW5pdGlvbihDcmVhdGVTdG10Q29udGV4dCAqY3h0 LCBDb2x1bW5EZWYgKmNvbHVtbikKIAl9CiB9CiAKK3ZvaWQKK3RyYW5zZm9ybVBlcmlvZE9w dGlvbnMoUGVyaW9kRGVmICpwZXJpb2QpCit7CisJTGlzdENlbGwgICAqb3B0aW9uOworCURl ZkVsZW0JICAgKmRjb25zdHJhaW50bmFtZSA9IE5VTEw7CisJRGVmRWxlbQkgICAqZHJhbmdl dHlwZW5hbWUgPSBOVUxMOworCisJZm9yZWFjaChvcHRpb24sIHBlcmlvZC0+b3B0aW9ucykK Kwl7CisJCURlZkVsZW0gICAgKmRlZmVsID0gKERlZkVsZW0gKikgbGZpcnN0KG9wdGlvbik7 CisKKwkJaWYgKHN0cmNtcChkZWZlbC0+ZGVmbmFtZSwgImNoZWNrX2NvbnN0cmFpbnRfbmFt ZSIpID09IDApCisJCXsKKwkJCWlmIChkY29uc3RyYWludG5hbWUpCisJCQkJZXJlcG9ydChF UlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJCSBl cnJtc2coImNvbmZsaWN0aW5nIG9yIHJlZHVuZGFudCBvcHRpb25zIikpKTsKKwkJCWRjb25z dHJhaW50bmFtZSA9IGRlZmVsOworCQl9CisJCWVsc2UgaWYgKHN0cmNtcChkZWZlbC0+ZGVm bmFtZSwgInJhbmdldHlwZSIpID09IDApCisJCXsKKwkJCWlmIChkcmFuZ2V0eXBlbmFtZSkK KwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJS T1IpLAorCQkJCQkJIGVycm1zZygiY29uZmxpY3Rpbmcgb3IgcmVkdW5kYW50IG9wdGlvbnMi KSkpOworCQkJZHJhbmdldHlwZW5hbWUgPSBkZWZlbDsKKwkJfQorCQllbHNlCisJCQllcmVw b3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJ CSBlcnJtc2coIm9wdGlvbiBcIiVzXCIgbm90IHJlY29nbml6ZWQiLCBkZWZlbC0+ZGVmbmFt ZSkpKTsKKwl9CisKKwlpZiAoZGNvbnN0cmFpbnRuYW1lICE9IE5VTEwpCisJCXBlcmlvZC0+ Y29uc3RyYWludG5hbWUgPSBkZWZHZXRTdHJpbmcoZGNvbnN0cmFpbnRuYW1lKTsKKwllbHNl CisJCXBlcmlvZC0+Y29uc3RyYWludG5hbWUgPSBOVUxMOworCisJaWYgKGRyYW5nZXR5cGVu YW1lICE9IE5VTEwpCisJCXBlcmlvZC0+cmFuZ2V0eXBlbmFtZSA9IGRlZkdldFN0cmluZyhk cmFuZ2V0eXBlbmFtZSk7CisJZWxzZQorCQlwZXJpb2QtPnJhbmdldHlwZW5hbWUgPSBOVUxM OworfQorCisvKgorICogdHJhbnNmb3JtVGFibGVQZXJpb2QKKyAqCQl0cmFuc2Zvcm0gYSBQ ZXJpb2REZWYgbm9kZSB3aXRoaW4gQ1JFQVRFIFRBQkxFIG9yIEFMVEVSIFRBQkxFCisgKgkJ VE9ETzogRG9lcyBBTFRFUiBUQUJMRSByZWFsbHkgY2FsbCB1cz8/IEl0IGRvZXNuJ3Qgc2Vl bSBsaWtlIGl0IGRvZXMuIE1heWJlIGl0IHNob3VsZC4gRGlkIGl0IGluIFZpaydzIG9yaWdp bmFsIHBhdGNoPworICovCitzdGF0aWMgdm9pZAordHJhbnNmb3JtVGFibGVQZXJpb2QoQ3Jl YXRlU3RtdENvbnRleHQgKmN4dCwgUGVyaW9kRGVmICpwZXJpb2QpCit7CisJLy8gT2lkCQkJ Y29sdHlwaWQ7CisJLy8gQ29sdW1uRGVmICAqY29sOworCS8vIExpc3RDZWxsICAgKmNvbHVt bnM7CisKKwlpZiAoc3RyY21wKHBlcmlvZC0+cGVyaW9kbmFtZSwgInN5c3RlbV90aW1lIikg PT0gMCkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVS RV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJIGVycm1zZygiUEVSSU9EIEZPUiBTWVNURU1fVElN RSBpcyBub3Qgc3VwcG9ydGVkIiksCisJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24oY3h0LT5w c3RhdGUsCisJCQkJCQkJCQkJcGVyaW9kLT5sb2NhdGlvbikpKTsKKworCWlmIChzdHJjbXAo cGVyaW9kLT5zdGFydGNvbG5hbWUsIHBlcmlvZC0+ZW5kY29sbmFtZSkgPT0gMCkKKwkJZXJl cG9ydChFUlJPUiwgKGVycm1zZygiY29sdW1uIFwiJXNcIiBjYW4ndCBiZSB0aGUgc3RhcnQg YW5kIGVuZCBjb2x1bW4gZm9yIHBlcmlvZCBcIiVzXCIiLAorCQkJCQkgICAgcGVyaW9kLT5z dGFydGNvbG5hbWUsIHBlcmlvZC0+cGVyaW9kbmFtZSkpKTsKKworCS8qCisJICogRGV0ZXJt aW5lIHRoZSBjb2x1bW4gaW5mbyBhbmQgcmFuZ2UgdHlwZSBzbyB0aGF0IHRyYW5zZm9ybUlu ZGV4Q29uc3RyYWludHMKKwkgKiBrbm93cyBob3cgdG8gY3JlYXRlIFBSSU1BUlkgS0VZL1VO SVFVRSBjb25zdHJhaW50cyB1c2luZyB0aGlzIFBFUklPRC4KKwkgKi8KKwl0cmFuc2Zvcm1Q ZXJpb2RPcHRpb25zKHBlcmlvZCk7CisKKwkvKgorCSAqIEZpbmQgYSBzdWl0YWJsZSByYW5n ZSB0eXBlIGZvciBvcGVyYXRpb25zIGludm9sdmluZyB0aGlzIHBlcmlvZC4KKwkgKiBVc2Ug dGhlIHJhbmdldHlwZSBvcHRpb24gaWYgcHJvdmlkZWQsIG90aGVyd2lzZSB0cnkgdG8gZmlu ZCBhCisJICogbm9uLWFtYmlndW91cyBleGlzdGluZyB0eXBlLgorCSAqLworCisjaWZkZWYg YXNkc2RmYQorCS8qIEZpcnN0IGZpbmQgb3V0IHRoZSB0eXBlIG9mIHRoZSBwZXJpb2QncyBj b2x1bW5zICovCisJLy8gVE9ETzogSSdtIGRvaW5nIHRoaXMgaW4gRGVmaW5lUmVsYXRpb24g bm93LAorCS8vIHdoaWNoIHNlZW1zIGxpa2UgYSBiZXR0ZXIgcGxhY2Ugc2luY2UgaXQga25v d3MgYWJvdXQgaW5oZXJpdGVkIGNvbHVtbnMuCisJcGVyaW9kLT5jb2x0eXBpZCA9IEludmFs aWRPaWQ7CisJcGVyaW9kLT5ybmd0eXBpZCA9IEludmFsaWRPaWQ7CisJZm9yZWFjaCAoY29s dW1ucywgY3h0LT5jb2x1bW5zKQorCXsKKwkJY29sID0gKENvbHVtbkRlZiAqKSBsZmlyc3Qo Y29sdW1ucyk7CisJCWlmIChzdHJjbXAoY29sLT5jb2xuYW1lLCBwZXJpb2QtPnN0YXJ0Y29s bmFtZSkgPT0gMCkKKwkJeworCQkJY29sdHlwaWQgPSB0eXBlbmFtZVR5cGVJZChjeHQtPnBz dGF0ZSwgY29sLT50eXBlTmFtZSk7CisJCQlicmVhazsKKwkJfQorCX0KKwlpZiAoY29sdHlw aWQgPT0gSW52YWxpZE9pZCkKKwkJZXJlcG9ydChFUlJPUiwgKGVycm1zZygiY29sdW1uIFwi JXNcIiBvZiByZWxhdGlvbiBcIiVzXCIgZG9lcyBub3QgZXhpc3QiLAorCQkJCQkJcGVyaW9k LT5zdGFydGNvbG5hbWUsIGN4dC0+cmVsYXRpb24tPnJlbG5hbWUpKSk7CisKKwlwZXJpb2Qt PmNvbHR5cGlkID0gY29sdHlwaWQ7CisKKwkvKiBOb3cgbWFrZSBzdXJlIGl0IG1hdGNoZXMg cmFuZ2V0eXBlbmFtZSBvciB3ZSBjYW4gZmluZCBhIG1hdGNoaW5nIHJhbmdlICovCisJcGVy aW9kLT5ybmd0eXBpZCA9IGNob29zZV9yYW5nZXR5cGVfZm9yX3BlcmlvZChwZXJpb2QpOwor I2VuZGlmCisKKwljeHQtPnBlcmlvZHMgPSBsYXBwZW5kKGN4dC0+cGVyaW9kcywgcGVyaW9k KTsKK30KKwogLyoKICAqIHRyYW5zZm9ybVRhYmxlQ29uc3RyYWludAogICoJCXRyYW5zZm9y bSBhIENvbnN0cmFpbnQgbm9kZSB3aXRoaW4gQ1JFQVRFIFRBQkxFIG9yIEFMVEVSIFRBQkxF CkBAIC0xMDA0LDYgKzExMjEsNyBAQCB0cmFuc2Zvcm1UYWJsZUxpa2VDbGF1c2UoQ3JlYXRl U3RtdENvbnRleHQgKmN4dCwgVGFibGVMaWtlQ2xhdXNlICp0YWJsZV9saWtlX2NsYQogCUF0 dHJOdW1iZXIJcGFyZW50X2F0dG5vOwogCVJlbGF0aW9uCXJlbGF0aW9uOwogCVR1cGxlRGVz Ywl0dXBsZURlc2M7CisJQml0bWFwc2V0ICAqcGVyaW9kYXR0czsKIAlBY2xSZXN1bHQJYWNs cmVzdWx0OwogCWNoYXIJICAgKmNvbW1lbnQ7CiAJUGFyc2VDYWxsYmFja1N0YXRlIHBjYnN0 YXRlOwpAQCAtMTA1Niw2ICsxMTc0LDcgQEAgdHJhbnNmb3JtVGFibGVMaWtlQ2xhdXNlKENy ZWF0ZVN0bXRDb250ZXh0ICpjeHQsIFRhYmxlTGlrZUNsYXVzZSAqdGFibGVfbGlrZV9jbGEK IAl9CiAKIAl0dXBsZURlc2MgPSBSZWxhdGlvbkdldERlc2NyKHJlbGF0aW9uKTsKKwlwZXJp b2RhdHRzID0gZ2V0X3BlcmlvZF9hdHRub3MoUmVsYXRpb25HZXRSZWxpZChyZWxhdGlvbikp OwogCiAJLyoKIAkgKiBJbnNlcnQgdGhlIGNvcGllZCBhdHRyaWJ1dGVzIGludG8gdGhlIGN4 dCBmb3IgdGhlIG5ldyB0YWJsZSBkZWZpbml0aW9uLgpAQCAtMTA2NSwxMCArMTE4NCwxOCBA QCB0cmFuc2Zvcm1UYWJsZUxpa2VDbGF1c2UoQ3JlYXRlU3RtdENvbnRleHQgKmN4dCwgVGFi bGVMaWtlQ2xhdXNlICp0YWJsZV9saWtlX2NsYQogCWZvciAocGFyZW50X2F0dG5vID0gMTsg cGFyZW50X2F0dG5vIDw9IHR1cGxlRGVzYy0+bmF0dHM7CiAJCSBwYXJlbnRfYXR0bm8rKykK IAl7Ci0JCUZvcm1fcGdfYXR0cmlidXRlIGF0dHJpYnV0ZSA9IFR1cGxlRGVzY0F0dHIodHVw bGVEZXNjLAotCQkJCQkJCQkJCQkJCXBhcmVudF9hdHRubyAtIDEpOworCQlGb3JtX3BnX2F0 dHJpYnV0ZSBhdHRyaWJ1dGU7CiAJCUNvbHVtbkRlZiAgKmRlZjsKIAorCQkvKgorCQkgKiBJ ZiB0aGlzIGNvbHVtbiBpcyBmcm9tIGEgUEVSSU9ELCBza2lwIGl0CisJCSAqIChzaW5jZSBM SUtFIG5ldmVyIGNvcGllcyBQRVJJT0RzKS4KKwkJICovCisJCWlmIChibXNfaXNfbWVtYmVy KHBhcmVudF9hdHRubywgcGVyaW9kYXR0cykpCisJCQljb250aW51ZTsKKworCQlhdHRyaWJ1 dGUgPSBUdXBsZURlc2NBdHRyKHR1cGxlRGVzYywgcGFyZW50X2F0dG5vIC0gMSk7CisKIAkJ LyoKIAkJICogSWdub3JlIGRyb3BwZWQgY29sdW1ucyBpbiB0aGUgcGFyZW50LgogCQkgKi8K QEAgLTMxMDUsNiArMzIzMiwxMCBAQCB0cmFuc2Zvcm1JbmRleFN0bXQoT2lkIHJlbGlkLCBJ bmRleFN0bXQgKnN0bXQsIGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5nKQogCQl9CiAJfQogCisJ LyogdGFrZSBjYXJlIG9mIHRoZSBwZXJpb2QgKi8KKwlpZiAoc3RtdC0+cGVyaW9kKQorCQlz dG10LT5wZXJpb2QtPm9pZCA9IGdldF9wZXJpb2Rfb2lkKHJlbGlkLCBzdG10LT5wZXJpb2Qt PnBlcmlvZG5hbWUsIGZhbHNlKTsKKwogCS8qCiAJICogQ2hlY2sgdGhhdCBvbmx5IHRoZSBi YXNlIHJlbCBpcyBtZW50aW9uZWQuICAoVGhpcyBzaG91bGQgYmUgZGVhZCBjb2RlCiAJICog bm93IHRoYXQgYWRkX21pc3NpbmdfZnJvbSBpcyBoaXN0b3J5LikKQEAgLTM1NjIsNiArMzY5 Myw3IEBAIHRyYW5zZm9ybUFsdGVyVGFibGVTdG10KE9pZCByZWxpZCwgQWx0ZXJUYWJsZVN0 bXQgKnN0bXQsCiAJY3h0LmluaFJlbGF0aW9ucyA9IE5JTDsKIAljeHQuaXNhbHRlciA9IHRy dWU7CiAJY3h0LmNvbHVtbnMgPSBOSUw7CisJY3h0LnBlcmlvZHMgPSBOSUw7CiAJY3h0LmNr Y29uc3RyYWludHMgPSBOSUw7CiAJY3h0Lm5uY29uc3RyYWludHMgPSBOSUw7CiAJY3h0LmZr Y29uc3RyYWludHMgPSBOSUw7CkBAIC0zNjI0LDYgKzM3NTYsMTUgQEAgdHJhbnNmb3JtQWx0 ZXJUYWJsZVN0bXQoT2lkIHJlbGlkLCBBbHRlclRhYmxlU3RtdCAqc3RtdCwKIAkJCQkJCSAo aW50KSBub2RlVGFnKGNtZC0+ZGVmKSk7CiAJCQkJYnJlYWs7CiAKKwkJCWNhc2UgQVRfQWRk UGVyaW9kOgorCQkJCXsKKwkJCQkJbmV3Y21kcyA9IGxhcHBlbmQobmV3Y21kcywgY21kKTsK KwkJCQkJLy8gV2h5IG5vdCBjYWxsIHRyYW5zZm9ybVRhYmxlUGVyaW9kIGhlcmU/CisJCQkJ CS8vIEFoIGJlY2F1c2UgaXQgbG9va3MgYXQgY3h0LT5jb2x1bW5zCisJCQkJCS8vIGFuZCBp biBhbiBBTFRFUiBzdGF0ZW1lbnQgdGhlIGNvbHVtbnMgbWlnaHQgYWxyZWFkeSBleGlzdCAo b3Igbm90KS4KKwkJCQkJYnJlYWs7CisJCQkJfQorCiAJCQljYXNlIEFUX0FsdGVyQ29sdW1u VHlwZToKIAkJCQl7CiAJCQkJCUNvbHVtbkRlZiAgKmRlZiA9IGNhc3ROb2RlKENvbHVtbkRl ZiwgY21kLT5kZWYpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5 c2NhY2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9sc3lzY2FjaGUuYwppbmRleCBk YjI0NWU2NWFkLi4xMmFjNjg5YTFmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9j YWNoZS9sc3lzY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9sc3lzY2Fj aGUuYwpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfbmFtZXNwYWNl LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19vcGNsYXNzLmgiCiAjaW5jbHVkZSAiY2F0YWxv Zy9wZ19vcGVyYXRvci5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfcGVyaW9kLmgiCiAjaW5j bHVkZSAiY2F0YWxvZy9wZ19wcm9jLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19yYW5nZS5o IgogI2luY2x1ZGUgImNhdGFsb2cvcGdfc3RhdGlzdGljLmgiCkBAIC0xMDIxLDYgKzEwMjIs NjggQEAgZ2V0X2F0dG9wdGlvbnMoT2lkIHJlbGlkLCBpbnQxNiBhdHRudW0pCiAJcmV0dXJu IHJlc3VsdDsKIH0KIAorLyoJCQkJLS0tLS0tLS0tLSBQR19QRVJJT0QgQ0FDSEUgLS0tLS0t LS0tLQkJCQkgKi8KKworLyoKKyAqIGdldF9wZXJpb2RuYW1lIC0gZ2l2ZW4gaXRzIE9JRCwg bG9vayB1cCBhIHBlcmlvZAorICoKKyAqIElmIG1pc3Npbmdfb2sgaXMgZmFsc2UsIHRocm93 IGFuIGVycm9yIGlmIHRoZSBwZXJpb2QgaXMgbm90IGZvdW5kLgorICogSWYgdHJ1ZSwganVz dCByZXR1cm4gSW52YWxpZE9pZC4KKyAqLworY2hhciAqCitnZXRfcGVyaW9kbmFtZShPaWQg cGVyaW9kaWQsIGJvb2wgbWlzc2luZ19vaykKK3sKKwlIZWFwVHVwbGUJdHA7CisKKwl0cCA9 IFNlYXJjaFN5c0NhY2hlMShQRVJJT0RPSUQsCisJCQkJCQkgT2JqZWN0SWRHZXREYXR1bShw ZXJpb2RpZCkpOworCWlmIChIZWFwVHVwbGVJc1ZhbGlkKHRwKSkKKwl7CisJCUZvcm1fcGdf cGVyaW9kIHBlcmlvZF90dXAgPSAoRm9ybV9wZ19wZXJpb2QpIEdFVFNUUlVDVCh0cCk7CisJ CWNoYXIJICAgKnJlc3VsdDsKKworCQlyZXN1bHQgPSBwc3RyZHVwKE5hbWVTdHIocGVyaW9k X3R1cC0+cGVybmFtZSkpOworCQlSZWxlYXNlU3lzQ2FjaGUodHApOworCQlyZXR1cm4gcmVz dWx0OworCX0KKworCWlmICghbWlzc2luZ19vaykKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxv b2t1cCBmYWlsZWQgZm9yIHBlcmlvZCAlZCIsCisJCQkgcGVyaW9kaWQpOworCXJldHVybiBO VUxMOworfQorCisvKgorICogZ2V0X3BlcmlvZF9vaWQgLSBnZXRzIGl0cyByZWxhdGlvbiBh bmQgbmFtZSwgbG9vayB1cCBhIHBlcmlvZAorICoKKyAqIElmIG1pc3Npbmdfb2sgaXMgZmFs c2UsIHRocm93IGFuIGVycm9yIGlmIHRoZSBjYXN0IGlzIG5vdCBmb3VuZC4gIElmCisgKiB0 cnVlLCBqdXN0IHJldHVybiBJbnZhbGlkT2lkLgorICovCitPaWQKK2dldF9wZXJpb2Rfb2lk KE9pZCByZWxpZCwgY29uc3QgY2hhciAqcGVyaW9kbmFtZSwgYm9vbCBtaXNzaW5nX29rKQor eworCUhlYXBUdXBsZQl0cDsKKworCXRwID0gU2VhcmNoU3lzQ2FjaGUyKFBFUklPRE5BTUUs CisJCQkJCQkgT2JqZWN0SWRHZXREYXR1bShyZWxpZCksCisJCQkJCQkgUG9pbnRlckdldERh dHVtKHBlcmlvZG5hbWUpKTsKKworCWlmIChIZWFwVHVwbGVJc1ZhbGlkKHRwKSkKKwl7CisJ CUZvcm1fcGdfcGVyaW9kIHBlcmlvZF90dXAgPSAoRm9ybV9wZ19wZXJpb2QpIEdFVFNUUlVD VCh0cCk7CisJCU9pZCByZXN1bHQ7CisKKwkJcmVzdWx0ID0gcGVyaW9kX3R1cC0+b2lkOwor CQlSZWxlYXNlU3lzQ2FjaGUodHApOworCQlyZXR1cm4gcmVzdWx0OworCX0KKworCWlmICgh bWlzc2luZ19vaykKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHBl cmlvZCAlcyIsCisJCQkgcGVyaW9kbmFtZSk7CisJcmV0dXJuIEludmFsaWRPaWQ7Cit9CisK IC8qCQkJCS0tLS0tLS0tLS0gUEdfQ0FTVCBDQUNIRSAtLS0tLS0tLS0tCQkJCQkgKi8KIAog LyoKQEAgLTM1MzMsNiArMzU5NiwzMCBAQCBnZXRfbXVsdGlyYW5nZV9yYW5nZShPaWQgbXVs dGlyYW5nZU9pZCkKIAkJcmV0dXJuIEludmFsaWRPaWQ7CiB9CiAKK09pZAorZ2V0X3N1YnR5 cGVfcmFuZ2UoT2lkIHN1YnR5cGVPaWQpCit7CisJQ2F0Q0xpc3QgKmNhdGxpc3Q7CisJT2lk CXJlc3VsdCA9IEludmFsaWRPaWQ7CisKKwljYXRsaXN0ID0gU2VhcmNoU3lzQ2FjaGVMaXN0 MShSQU5HRVNVQlRZUEUsIE9iamVjdElkR2V0RGF0dW0oc3VidHlwZU9pZCkpOworCisJaWYg KGNhdGxpc3QtPm5fbWVtYmVycyA9PSAxKQorCXsKKwkJSGVhcFR1cGxlCXR1cGxlID0gJmNh dGxpc3QtPm1lbWJlcnNbMF0tPnR1cGxlOworCQlGb3JtX3BnX3JhbmdlIHJuZ3R1cCA9IChG b3JtX3BnX3JhbmdlKSBHRVRTVFJVQ1QodHVwbGUpOworCQlyZXN1bHQgPSBybmd0dXAtPnJu Z3R5cGlkOworCQlSZWxlYXNlQ2F0Q2FjaGVMaXN0KGNhdGxpc3QpOworCX0KKwllbHNlIGlm IChjYXRsaXN0LT5uX21lbWJlcnMgPiAxKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJj b2RlKEVSUkNPREVfSU5ERVRFUk1JTkFURV9EQVRBVFlQRSksCisJCQkJIGVycm1zZygiYW1i aWd1b3VzIHJhbmdlIGZvciB0eXBlICVzIiwKKwkJCQkJCWZvcm1hdF90eXBlX2JlKHN1YnR5 cGVPaWQpKSkpOworCisJcmV0dXJuIHJlc3VsdDsKK30KKwogLyoJCQkJLS0tLS0tLS0tLSBQ R19JTkRFWCBDQUNIRSAtLS0tLS0tLS0tCQkJCSAqLwogCiAvKgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvdXRpbHMvY2FjaGUvc3lzY2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Nh Y2hlL3N5c2NhY2hlLmMKaW5kZXggOGRiZGEwMDI0Zi4uNDRlNjM2ZTViZSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvc3lzY2FjaGUuYworKysgYi9zcmMvYmFja2Vu ZC91dGlscy9jYWNoZS9zeXNjYWNoZS5jCkBAIC00OSw2ICs0OSw3IEBACiAjaW5jbHVkZSAi Y2F0YWxvZy9wZ19vcGZhbWlseS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfcGFyYW1ldGVy X2FjbC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfcGFydGl0aW9uZWRfdGFibGUuaCIKKyNp bmNsdWRlICJjYXRhbG9nL3BnX3BlcmlvZC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfcHJv Yy5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfcHVibGljYXRpb24uaCIKICNpbmNsdWRlICJj YXRhbG9nL3BnX3B1YmxpY2F0aW9uX25hbWVzcGFjZS5oIgpAQCAtNDIyLDYgKzQyMywxOSBA QCBzdGF0aWMgY29uc3Qgc3RydWN0IGNhY2hlZGVzYyBjYWNoZWluZm9bXSA9IHsKIAkJS0VZ KEFudW1fcGdfcGFydGl0aW9uZWRfdGFibGVfcGFydHJlbGlkKSwKIAkJMzIKIAl9LAorCVtQ RVJJT0ROQU1FXSA9IHsKKwkJUGVyaW9kUmVsYXRpb25JZCwKKwkJUGVyaW9kUmVsaWROYW1l SW5kZXhJZCwKKwkJS0VZKEFudW1fcGdfcGVyaW9kX3BlcnJlbGlkLAorCQkJQW51bV9wZ19w ZXJpb2RfcGVybmFtZSksCisJCTMyCisJfSwKKwlbUEVSSU9ET0lEXSA9IHsKKwkJUGVyaW9k UmVsYXRpb25JZCwKKwkJUGVyaW9kT2JqZWN0SW5kZXhJZCwKKwkJS0VZKEFudW1fcGdfcGVy aW9kX29pZCksCisJCTMyCisJfSwKIAlbUFJPQ05BTUVBUkdTTlNQXSA9IHsKIAkJUHJvY2Vk dXJlUmVsYXRpb25JZCwKIAkJUHJvY2VkdXJlTmFtZUFyZ3NOc3BJbmRleElkLApAQCAtNDgw LDYgKzQ5NCwxMyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGNhY2hlZGVzYyBjYWNoZWluZm9b XSA9IHsKIAkJS0VZKEFudW1fcGdfcmFuZ2Vfcm5nbXVsdGl0eXBpZCksCiAJCTQKIAl9LAor CVtSQU5HRVNVQlRZUEVdID0geworCQlSYW5nZVJlbGF0aW9uSWQsCisJCVJhbmdlU3ViVHlw aWRUeXBpZEluZGV4SWQsCisJCUtFWShBbnVtX3BnX3JhbmdlX3JuZ3N1YnR5cGUsCisJCQlB bnVtX3BnX3JhbmdlX3JuZ3R5cGlkKSwKKwkJNAorCX0sCiAJW1JBTkdFVFlQRV0gPSB7CiAJ CVJhbmdlUmVsYXRpb25JZCwKIAkJUmFuZ2VUeXBpZEluZGV4SWQsCmRpZmYgLS1naXQgYS9z cmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2FyY2hpdmVyLmMgYi9zcmMvYmluL3BnX2R1bXAv cGdfYmFja3VwX2FyY2hpdmVyLmMKaW5kZXggMjU2ZDFlMzVhNC4uMGEyNjk2YzU1OSAxMDA2 NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9hcmNoaXZlci5jCisrKyBiL3Ny Yy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfYXJjaGl2ZXIuYwpAQCAtMzUxOCw2ICszNTE4LDcg QEAgX2dldE9iamVjdERlc2NyaXB0aW9uKFBRRXhwQnVmZmVyIGJ1ZiwgY29uc3QgVG9jRW50 cnkgKnRlKQogCQkJIHN0cmNtcCh0eXBlLCAiREFUQUJBU0UgUFJPUEVSVElFUyIpID09IDAg fHwKIAkJCSBzdHJjbXAodHlwZSwgIkRFRkFVTFQiKSA9PSAwIHx8CiAJCQkgc3RyY21wKHR5 cGUsICJGSyBDT05TVFJBSU5UIikgPT0gMCB8fAorCQkJIHN0cmNtcCh0eXBlLCAiUEVSSU9E IikgPT0gMCB8fAogCQkJIHN0cmNtcCh0eXBlLCAiSU5ERVgiKSA9PSAwIHx8CiAJCQkgc3Ry Y21wKHR5cGUsICJSVUxFIikgPT0gMCB8fAogCQkJIHN0cmNtcCh0eXBlLCAiVFJJR0dFUiIp ID09IDAgfHwKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgYi9zcmMv YmluL3BnX2R1bXAvcGdfZHVtcC5jCmluZGV4IDU0YTE1Y2Y2NGEuLjM0MzMzMWJlMTAgMTAw NjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKKysrIGIvc3JjL2Jpbi9wZ19k dW1wL3BnX2R1bXAuYwpAQCAtNjM1MCw2ICs2MzUwLDcgQEAgZ2V0VGFibGVzKEFyY2hpdmUg KmZvdXQsIGludCAqbnVtVGFibGVzKQogCWludAkJCWlfcmVsdHlwZTsKIAlpbnQJCQlpX3Jl bG93bmVyOwogCWludAkJCWlfcmVsY2hlY2tzOworCWludAkJCWlfbnBlcmlvZDsKIAlpbnQJ CQlpX3JlbGhhc2luZGV4OwogCWludAkJCWlfcmVsaGFzcnVsZXM7CiAJaW50CQkJaV9yZWxw YWdlczsKQEAgLTY0MjcsNiArNjQyOCwxNCBAQCBnZXRUYWJsZXMoQXJjaGl2ZSAqZm91dCwg aW50ICpudW1UYWJsZXMpCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LAogCQkJCQkJ CSAiYy5yZWxoYXNvaWRzLCAiKTsKIAorCS8qIEluIFBHMTYgdXB3YXJkcyB3ZSBoYXZlIFBF UklPRHMuICovCisJaWYgKGZvdXQtPnJlbW90ZVZlcnNpb24gPj0gMTYwMDAwKQorCQlhcHBl bmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKKwkJCQkJCQkgIihTRUxFQ1QgY291bnQoKikgRlJP TSBwZ19wZXJpb2QgV0hFUkUgcGVycmVsaWQgPSBjLm9pZCkgQVMgbnBlcmlvZHMsICIpOwor CWVsc2UKKwkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksCisJCQkJCQkJICIwIEFTIG5w ZXJpb2RzLCAiKTsKKwogCWlmIChmb3V0LT5yZW1vdGVWZXJzaW9uID49IDkwMzAwKQogCQlh cHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKIAkJCQkJCQkgImMucmVsaXNwb3B1bGF0ZWQs ICIpOwpAQCAtNjU2NCw2ICs2NTczLDcgQEAgZ2V0VGFibGVzKEFyY2hpdmUgKmZvdXQsIGlu dCAqbnVtVGFibGVzKQogCWlfcmVsdHlwZSA9IFBRZm51bWJlcihyZXMsICJyZWx0eXBlIik7 CiAJaV9yZWxvd25lciA9IFBRZm51bWJlcihyZXMsICJyZWxvd25lciIpOwogCWlfcmVsY2hl Y2tzID0gUFFmbnVtYmVyKHJlcywgInJlbGNoZWNrcyIpOworCWlfbnBlcmlvZCA9IFBRZm51 bWJlcihyZXMsICJucGVyaW9kcyIpOwogCWlfcmVsaGFzaW5kZXggPSBQUWZudW1iZXIocmVz LCAicmVsaGFzaW5kZXgiKTsKIAlpX3JlbGhhc3J1bGVzID0gUFFmbnVtYmVyKHJlcywgInJl bGhhc3J1bGVzIik7CiAJaV9yZWxwYWdlcyA9IFBRZm51bWJlcihyZXMsICJyZWxwYWdlcyIp OwpAQCAtNjY0Nyw2ICs2NjU3LDcgQEAgZ2V0VGFibGVzKEFyY2hpdmUgKmZvdXQsIGludCAq bnVtVGFibGVzKQogCQl9CiAJCXRibGluZm9baV0ucmVsdGFibGVzcGFjZSA9IHBnX3N0cmR1 cChQUWdldHZhbHVlKHJlcywgaSwgaV9yZWx0YWJsZXNwYWNlKSk7CiAJCXRibGluZm9baV0u aGFzb2lkcyA9IChzdHJjbXAoUFFnZXR2YWx1ZShyZXMsIGksIGlfcmVsaGFzb2lkcyksICJ0 IikgPT0gMCk7CisJCXRibGluZm9baV0ubnBlcmlvZCA9IGF0b2koUFFnZXR2YWx1ZShyZXMs IGksIGlfbnBlcmlvZCkpOwogCQl0YmxpbmZvW2ldLmhhc3RyaWdnZXJzID0gKHN0cmNtcChQ UWdldHZhbHVlKHJlcywgaSwgaV9yZWxoYXN0cmlnZ2VycyksICJ0IikgPT0gMCk7CiAJCXRi bGluZm9baV0ucmVscGVyc2lzdGVuY2UgPSAqKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3JlbHBl cnNpc3RlbmNlKSk7CiAJCXRibGluZm9baV0ucmVsaXNwb3B1bGF0ZWQgPSAoc3RyY21wKFBR Z2V0dmFsdWUocmVzLCBpLCBpX3JlbGlzcG9wdWxhdGVkKSwgInQiKSA9PSAwKTsKQEAgLTgz ODEsNyArODM5Miw3IEBAIGdldFRyYW5zZm9ybXMoQXJjaGl2ZSAqZm91dCwgaW50ICpudW1U cmFuc2Zvcm1zKQogLyoKICAqIGdldFRhYmxlQXR0cnMgLQogICoJICBmb3IgZWFjaCBpbnRl cmVzdGluZyB0YWJsZSwgcmVhZCBpbmZvIGFib3V0IGl0cyBhdHRyaWJ1dGVzCi0gKgkgIChu YW1lcywgdHlwZXMsIGRlZmF1bHQgdmFsdWVzLCBDSEVDSyBjb25zdHJhaW50cywgZXRjKQor ICoJICAobmFtZXMsIHR5cGVzLCBkZWZhdWx0IHZhbHVlcywgQ0hFQ0sgY29uc3RyYWludHMs IFBFUklPRHMsIGV0YykKICAqCiAgKgltb2RpZmllcyB0YmxpbmZvCiAgKi8KQEAgLTg0MzQs NiArODQ0NSw4IEBAIGdldFRhYmxlQXR0cnMoQXJjaGl2ZSAqZm91dCwgVGFibGVJbmZvICp0 YmxpbmZvLCBpbnQgbnVtVGFibGVzKQogCWZvciAoaW50IGkgPSAwOyBpIDwgbnVtVGFibGVz OyBpKyspCiAJewogCQlUYWJsZUluZm8gICp0YmluZm8gPSAmdGJsaW5mb1tpXTsKKwkJaW50 CQkJbmR1bXBhYmxlY2hlY2tzOwkvKiBudW1iZXIgb2YgQ0hFQ0sgY29uc3RyYWludHMgdGhh dCBkbworCQkJCQkJCQkJCSAgIG5vdCBiZWxvbmcgdG8gYSBwZXJpb2QgKi8KIAogCQkvKiBE b24ndCBib3RoZXIgdG8gY29sbGVjdCBpbmZvIGZvciBzZXF1ZW5jZXMgKi8KIAkJaWYgKHRi aW5mby0+cmVsa2luZCA9PSBSRUxLSU5EX1NFUVVFTkNFKQpAQCAtODQ0OCw3ICs4NDYxLDgg QEAgZ2V0VGFibGVBdHRycyhBcmNoaXZlICpmb3V0LCBUYWJsZUluZm8gKnRibGluZm8sIGlu dCBudW1UYWJsZXMpCiAJCQlhcHBlbmRQUUV4cEJ1ZmZlckNoYXIodGJsb2lkcywgJywnKTsK IAkJYXBwZW5kUFFFeHBCdWZmZXIodGJsb2lkcywgIiV1IiwgdGJpbmZvLT5kb2JqLmNhdElk Lm9pZCk7CiAKLQkJaWYgKHRiaW5mby0+bmNoZWNrID4gMCkKKwkJbmR1bXBhYmxlY2hlY2tz ID0gdGJpbmZvLT5uY2hlY2sgLSB0YmluZm8tPm5wZXJpb2Q7CisJCWlmIChuZHVtcGFibGVj aGVja3MgPiAwKQogCQl7CiAJCQkvKiBBbHNvIG1ha2UgYSBsaXN0IG9mIHRoZSBvbmVzIHdp dGggY2hlY2sgY29uc3RyYWludHMgKi8KIAkJCWlmIChjaGVja29pZHMtPmxlbiA+IDEpIC8q IGRvIHdlIGhhdmUgbW9yZSB0aGFuIHRoZSAneyc/ICovCkBAIC04OTg0LDE1ICs4OTk4LDM2 IEBAIGdldFRhYmxlQXR0cnMoQXJjaGl2ZSAqZm91dCwgVGFibGVJbmZvICp0YmxpbmZvLCBp bnQgbnVtVGFibGVzKQogCQlwZ19sb2dfaW5mbygiZmluZGluZyB0YWJsZSBjaGVjayBjb25z dHJhaW50cyIpOwogCiAJCXJlc2V0UFFFeHBCdWZmZXIocSk7Ci0JCWFwcGVuZFBRRXhwQnVm ZmVyKHEsCi0JCQkJCQkgICJTRUxFQ1QgYy50YWJsZW9pZCwgYy5vaWQsIGNvbnJlbGlkLCBj b25uYW1lLCAiCi0JCQkJCQkgICJwZ19jYXRhbG9nLnBnX2dldF9jb25zdHJhaW50ZGVmKGMu b2lkKSBBUyBjb25zcmMsICIKLQkJCQkJCSAgImNvbmlzbG9jYWwsIGNvbnZhbGlkYXRlZCAi Ci0JCQkJCQkgICJGUk9NIHVubmVzdCgnJXMnOjpwZ19jYXRhbG9nLm9pZFtdKSBBUyBzcmMo dGJsb2lkKVxuIgotCQkJCQkJICAiSk9JTiBwZ19jYXRhbG9nLnBnX2NvbnN0cmFpbnQgYyBP TiAoc3JjLnRibG9pZCA9IGMuY29ucmVsaWQpXG4iCi0JCQkJCQkgICJXSEVSRSBjb250eXBl ID0gJ2MnICIKLQkJCQkJCSAgIk9SREVSIEJZIGMuY29ucmVsaWQsIGMuY29ubmFtZSIsCi0J CQkJCQkgIGNoZWNrb2lkcy0+ZGF0YSk7CisJCWlmIChmb3V0LT5yZW1vdGVWZXJzaW9uID49 IDE2MDAwMCkKKwkJeworCQkJLyoKKwkJCSAqIFBFUklPRHMgd2VyZSBhZGRlZCBpbiB2MTcg YW5kIHdlIGRvbid0IGR1bXAgQ0hFQ0sKKwkJCSAqIGNvbnN0cmFpbnRzIGZvciB0aGVtLgor CQkJICovCisJCQlhcHBlbmRQUUV4cEJ1ZmZlcihxLAorCQkJCQkJCSAgIlNFTEVDVCBjLnRh Ymxlb2lkLCBjLm9pZCwgY29ucmVsaWQsIGNvbm5hbWUsICIKKwkJCQkJCQkgICJwZ19jYXRh bG9nLnBnX2dldF9jb25zdHJhaW50ZGVmKGMub2lkKSBBUyBjb25zcmMsICIKKwkJCQkJCQkg ICJjb25pc2xvY2FsLCBjb252YWxpZGF0ZWQgIgorCQkJCQkJCSAgIkZST00gdW5uZXN0KCcl cyc6OnBnX2NhdGFsb2cub2lkW10pIEFTIHNyYyh0YmxvaWQpXG4iCisJCQkJCQkJICAiSk9J TiBwZ19jYXRhbG9nLnBnX2NvbnN0cmFpbnQgYyBPTiAoc3JjLnRibG9pZCA9IGMuY29ucmVs aWQpXG4iCisJCQkJCQkJICAiV0hFUkUgY29udHlwZSA9ICdjJyAiCisJCQkJCQkJICAiICAg QU5EIE5PVCBFWElTVFMgKFNFTEVDVCBGUk9NIHBnX3BlcmlvZCAiCisJCQkJCQkJICAiICAg ICAgICAgICAgICAgICAgIFdIRVJFIChwZXJyZWxpZCwgcGVyY29uc3RyYWludCkgPSAoY29u cmVsaWQsIGMub2lkKSkgIgorCQkJCQkJCSAgIk9SREVSIEJZIGMuY29ucmVsaWQsIGMuY29u bmFtZSIsCisJCQkJCQkJICBjaGVja29pZHMtPmRhdGEpOworCQl9CisJCWVsc2UKKwkJewor CQkJYXBwZW5kUFFFeHBCdWZmZXIocSwKKwkJCQkJCQkgICJTRUxFQ1QgYy50YWJsZW9pZCwg Yy5vaWQsIGNvbnJlbGlkLCBjb25uYW1lLCAiCisJCQkJCQkJICAicGdfY2F0YWxvZy5wZ19n ZXRfY29uc3RyYWludGRlZihjLm9pZCkgQVMgY29uc3JjLCAiCisJCQkJCQkJICAiY29uaXNs b2NhbCwgY29udmFsaWRhdGVkICIKKwkJCQkJCQkgICJGUk9NIHVubmVzdCgnJXMnOjpwZ19j YXRhbG9nLm9pZFtdKSBBUyBzcmModGJsb2lkKVxuIgorCQkJCQkJCSAgIkpPSU4gcGdfY2F0 YWxvZy5wZ19jb25zdHJhaW50IGMgT04gKHNyYy50YmxvaWQgPSBjLmNvbnJlbGlkKVxuIgor CQkJCQkJCSAgIldIRVJFIGNvbnR5cGUgPSAnYycgIgorCQkJCQkJCSAgIk9SREVSIEJZIGMu Y29ucmVsaWQsIGMuY29ubmFtZSIsCisJCQkJCQkJICBjaGVja29pZHMtPmRhdGEpOworCQl9 CiAKIAkJcmVzID0gRXhlY3V0ZVNxbFF1ZXJ5KGZvdXQsIHEtPmRhdGEsIFBHUkVTX1RVUExF U19PSyk7CiAKQEAgLTkwMTQsNiArOTA0OSw3IEBAIGdldFRhYmxlQXR0cnMoQXJjaGl2ZSAq Zm91dCwgVGFibGVJbmZvICp0YmxpbmZvLCBpbnQgbnVtVGFibGVzKQogCQkJT2lkCQkJY29u cmVsaWQgPSBhdG9vaWQoUFFnZXR2YWx1ZShyZXMsIGosIGlfY29ucmVsaWQpKTsKIAkJCVRh YmxlSW5mbyAgKnRiaW5mbyA9IE5VTEw7CiAJCQlpbnQJCQludW1jb25zOworCQkJaW50CQkJ bmR1bXBhYmxlY2hlY2tzOwogCiAJCQkvKiBDb3VudCByb3dzIGZvciB0aGlzIHRhYmxlICov CiAJCQlmb3IgKG51bWNvbnMgPSAxOyBudW1jb25zIDwgbnVtQ29uc3RycyAtIGo7IG51bWNv bnMrKykKQEAgLTkwMzMsMTIgKzkwNjksMTMgQEAgZ2V0VGFibGVBdHRycyhBcmNoaXZlICpm b3V0LCBUYWJsZUluZm8gKnRibGluZm8sIGludCBudW1UYWJsZXMpCiAJCQlpZiAoY3VydGJs aW5keCA+PSBudW1UYWJsZXMpCiAJCQkJcGdfZmF0YWwoInVucmVjb2duaXplZCB0YWJsZSBP SUQgJXUiLCBjb25yZWxpZCk7CiAKLQkJCWlmIChudW1jb25zICE9IHRiaW5mby0+bmNoZWNr KQorCQkJbmR1bXBhYmxlY2hlY2tzID0gdGJpbmZvLT5uY2hlY2sgLSB0YmluZm8tPm5wZXJp b2Q7CisJCQlpZiAobnVtY29ucyAhPSBuZHVtcGFibGVjaGVja3MpCiAJCQl7CiAJCQkJcGdf bG9nX2Vycm9yKG5nZXR0ZXh0KCJleHBlY3RlZCAlZCBjaGVjayBjb25zdHJhaW50IG9uIHRh YmxlIFwiJXNcIiBidXQgZm91bmQgJWQiLAogCQkJCQkJCQkJICAiZXhwZWN0ZWQgJWQgY2hl Y2sgY29uc3RyYWludHMgb24gdGFibGUgXCIlc1wiIGJ1dCBmb3VuZCAlZCIsCi0JCQkJCQkJ CQkgIHRiaW5mby0+bmNoZWNrKSwKLQkJCQkJCQkgdGJpbmZvLT5uY2hlY2ssIHRiaW5mby0+ ZG9iai5uYW1lLCBudW1jb25zKTsKKwkJCQkJCQkJCSAgbmR1bXBhYmxlY2hlY2tzKSwKKwkJ CQkJCQkgbmR1bXBhYmxlY2hlY2tzLCB0YmluZm8tPmRvYmoubmFtZSwgbnVtY29ucyk7CiAJ CQkJcGdfbG9nX2Vycm9yX2hpbnQoIlRoZSBzeXN0ZW0gY2F0YWxvZ3MgbWlnaHQgYmUgY29y cnVwdGVkLiIpOwogCQkJCWV4aXRfbmljZWx5KDEpOwogCQkJfQpAQCAtOTA5Nyw2ICs5MTM0 LDc5IEBAIGdldFRhYmxlQXR0cnMoQXJjaGl2ZSAqZm91dCwgVGFibGVJbmZvICp0YmxpbmZv LCBpbnQgbnVtVGFibGVzKQogCQlQUWNsZWFyKHJlcyk7CiAJfQogCisJZm9yIChpbnQgaSA9 IDA7IGkgPCBudW1UYWJsZXM7IGkrKykKKwl7CisJCVRhYmxlSW5mbyAgKnRiaW5mbyA9ICZ0 YmxpbmZvW2ldOworCisJCS8qCisJCSAqIEdldCBpbmZvIGFib3V0IFBFUklPRCBkZWZpbml0 aW9ucworCQkgKi8KKwkJaWYgKHRiaW5mby0+bnBlcmlvZCA+IDApCisJCXsKKwkJCVBlcmlv ZEluZm8gKnBlcmlvZHM7CisJCQlpbnQJCQludW1QZXJpb2RzOworCQkJaW50CQkJajsKKwor CQkJLyogV2Ugc2hvdWxkbid0IGhhdmUgYW55IHBlcmlvZHMgYmVmb3JlIHYxNyAqLworCQkJ QXNzZXJ0KGZvdXQtPnJlbW90ZVZlcnNpb24gPj0gMTYwMDAwKTsKKworCQkJcGdfbG9nX2lu Zm8oImZpbmRpbmcgcGVyaW9kcyBmb3IgdGFibGUgXCIlcy4lc1wiIiwKKwkJCQkJCXRiaW5m by0+ZG9iai5uYW1lc3BhY2UtPmRvYmoubmFtZSwKKwkJCQkJCXRiaW5mby0+ZG9iai5uYW1l KTsKKworCQkJcmVzZXRQUUV4cEJ1ZmZlcihxKTsKKwkJCWFwcGVuZFBRRXhwQnVmZmVyKHEs CisJCQkJIlNFTEVDVCBwLnRhYmxlb2lkLCBwLm9pZCwgcC5wZXJuYW1lLCAiCisJCQkJIiAg ICAgICBzYS5hdHRuYW1lIEFTIHBlcnN0YXJ0LCBlYS5hdHRuYW1lIEFTIHBlcmVuZCwgIgor CQkJCSIgICAgICAgci50eXBuYW1lIEFTIHJuZ3R5cGUsICIKKwkJCQkiICAgICAgIGMuY29u bmFtZSBBUyBjb25uYW1lICIKKwkJCQkiRlJPTSBwZ19jYXRhbG9nLnBnX3BlcmlvZCBBUyBw ICIKKwkJCQkiSk9JTiBwZ19jYXRhbG9nLnBnX2F0dHJpYnV0ZSBBUyBzYSBPTiAoc2EuYXR0 cmVsaWQsIHNhLmF0dG51bSkgPSAocC5wZXJyZWxpZCwgcC5wZXJzdGFydCkgIgorCQkJCSJK T0lOIHBnX2NhdGFsb2cucGdfYXR0cmlidXRlIEFTIGVhIE9OIChlYS5hdHRyZWxpZCwgZWEu YXR0bnVtKSA9IChwLnBlcnJlbGlkLCBwLnBlcmVuZCkgIgorCQkJCSJKT0lOIHBnX2NhdGFs b2cucGdfdHlwZSBBUyByIE9OIHIub2lkID0gcC5wZXJybmd0eXBlICIKKwkJCQkiSk9JTiBw Z19jYXRhbG9nLnBnX2NvbnN0cmFpbnQgQVMgYyBPTiBjLm9pZCA9IHAucGVyY29uc3RyYWlu dCAiCisJCQkJIldIRVJFIHAucGVycmVsaWQgPSAnJXUnOjpwZ19jYXRhbG9nLm9pZCAiCisJ CQkJIk9SREVSIEJZIHAucGVybmFtZSIsCisJCQkJdGJpbmZvLT5kb2JqLmNhdElkLm9pZCk7 CisKKwkJCXJlcyA9IEV4ZWN1dGVTcWxRdWVyeShmb3V0LCBxLT5kYXRhLCBQR1JFU19UVVBM RVNfT0spOworCisJCQkvKgorCQkJICogSWYgd2UgZGlkbid0IGdldCB0aGUgbnVtYmVyIG9m IHJvd3Mgd2UgdGhvdWdodCB3ZSB3ZXJlIGdvaW5nIHRvLAorCQkJICogdGhlbiB0aG9zZSBK T0lOcyBkaWRuJ3Qgd29yay4KKwkJCSAqLworCQkJbnVtUGVyaW9kcyA9IFBRbnR1cGxlcyhy ZXMpOworCQkJaWYgKG51bVBlcmlvZHMgIT0gdGJpbmZvLT5ucGVyaW9kKQorCQkJeworCQkJ CXBnX2xvZ19pbmZvKG5nZXR0ZXh0KCJleHBlY3RlZCAlZCBwZXJpb2Qgb24gdGFibGUgXCIl c1wiIGJ1dCBmb3VuZCAlZCIsCisJCQkJCQkJCQkgImV4cGVjdGVkICVkIHBlcmlvZHMgb24g dGFibGUgXCIlc1wiIGJ1dCBmb3VuZCAlZCIsCisJCQkJCQkJCQkgdGJpbmZvLT5ucGVyaW9k KSwKKwkJCQkJCQl0YmluZm8tPm5wZXJpb2QsIHRiaW5mby0+ZG9iai5uYW1lLCBudW1QZXJp b2RzKTsKKwkJCQlwZ19sb2dfaW5mbygiKFRoZSBzeXN0ZW0gY2F0YWxvZ3MgbWlnaHQgYmUg Y29ycnVwdGVkLikiKTsKKwkJCQlleGl0X25pY2VseSgxKTsKKwkJCX0KKworCQkJcGVyaW9k cyA9IChQZXJpb2RJbmZvICopIHBnX21hbGxvYyhudW1QZXJpb2RzICogc2l6ZW9mKFBlcmlv ZEluZm8pKTsKKwkJCXRiaW5mby0+cGVyaW9kcyA9IHBlcmlvZHM7CisKKwkJCWZvciAoaiA9 IDA7IGogPCBudW1QZXJpb2RzOyBqKyspCisJCQl7CisJCQkJcGVyaW9kc1tqXS5kb2JqLm9i alR5cGUgPSBET19QRVJJT0Q7CisJCQkJcGVyaW9kc1tqXS5kb2JqLmNhdElkLnRhYmxlb2lk ID0gYXRvb2lkKFBRZ2V0dmFsdWUocmVzLCBqLCAwKSk7CisJCQkJcGVyaW9kc1tqXS5kb2Jq LmNhdElkLm9pZCA9IGF0b29pZChQUWdldHZhbHVlKHJlcywgaiwgMSkpOworCQkJCUFzc2ln bkR1bXBJZCgmcGVyaW9kc1tqXS5kb2JqKTsKKwkJCQlwZXJpb2RzW2pdLmRvYmoubmFtZSA9 IHBnX3N0cmR1cChQUWdldHZhbHVlKHJlcywgaiwgMikpOworCQkJCXBlcmlvZHNbal0uZG9i ai5uYW1lc3BhY2UgPSB0YmluZm8tPmRvYmoubmFtZXNwYWNlOworCQkJCXBlcmlvZHNbal0u cGVydGFibGUgPSB0YmluZm87CisJCQkJcGVyaW9kc1tqXS5wZXJzdGFydCA9IHBnX3N0cmR1 cChQUWdldHZhbHVlKHJlcywgaiwgMykpOworCQkJCXBlcmlvZHNbal0ucGVyZW5kID0gcGdf c3RyZHVwKFBRZ2V0dmFsdWUocmVzLCBqLCA0KSk7CisJCQkJcGVyaW9kc1tqXS5ybmd0eXBl ID0gcGdfc3RyZHVwKFBRZ2V0dmFsdWUocmVzLCBqLCA1KSk7CisJCQkJcGVyaW9kc1tqXS5j b25uYW1lID0gcGdfc3RyZHVwKFBRZ2V0dmFsdWUocmVzLCBqLCA2KSk7CisJCQl9CisJCQlQ UWNsZWFyKHJlcyk7CisJCX0KKwl9CisKIAlkZXN0cm95UFFFeHBCdWZmZXIocSk7CiAJZGVz dHJveVBRRXhwQnVmZmVyKHRibG9pZHMpOwogCWRlc3Ryb3lQUUV4cEJ1ZmZlcihjaGVja29p ZHMpOwpAQCAtMTAzNjcsNiArMTA0NzcsOCBAQCBkdW1wRHVtcGFibGVPYmplY3QoQXJjaGl2 ZSAqZm91dCwgRHVtcGFibGVPYmplY3QgKmRvYmopCiAJCWNhc2UgRE9fRktfQ09OU1RSQUlO VDoKIAkJCWR1bXBDb25zdHJhaW50KGZvdXQsIChjb25zdCBDb25zdHJhaW50SW5mbyAqKSBk b2JqKTsKIAkJCWJyZWFrOworCQljYXNlIERPX1BFUklPRDoKKwkJCWJyZWFrOwogCQljYXNl IERPX1BST0NMQU5HOgogCQkJZHVtcFByb2NMYW5nKGZvdXQsIChjb25zdCBQcm9jTGFuZ0lu Zm8gKikgZG9iaik7CiAJCQlicmVhazsKQEAgLTE1OTAyLDYgKzE2MDE0LDMyIEBAIGR1bXBU YWJsZVNjaGVtYShBcmNoaXZlICpmb3V0LCBjb25zdCBUYWJsZUluZm8gKnRiaW5mbykKIAkJ CQl9CiAJCQl9CiAKKwkJCS8qCisJCQkgKiBBZGQgbm9uLWluaGVyaXRlZCBQRVJJT0QgZGVm aW5pdGlvbnMsIGlmIGFueS4KKwkJCSAqLworCQkJZm9yIChqID0gMDsgaiA8IHRiaW5mby0+ bnBlcmlvZDsgaisrKQorCQkJeworCQkJCVBlcmlvZEluZm8gKnBlcmlvZCA9ICYodGJpbmZv LT5wZXJpb2RzW2pdKTsKKworCQkJCWNoYXIJICAgKm5hbWUgPSBwZ19zdHJkdXAoZm10SWQo cGVyaW9kLT5kb2JqLm5hbWUpKTsKKwkJCQljaGFyCSAgICpzdGFydCA9IHBnX3N0cmR1cChm bXRJZChwZXJpb2QtPnBlcnN0YXJ0KSk7CisJCQkJY2hhcgkgICAqZW5kID0gcGdfc3RyZHVw KGZtdElkKHBlcmlvZC0+cGVyZW5kKSk7CisJCQkJY2hhcgkgICAqcm5ndHlwZSA9IHBnX3N0 cmR1cChmbXRJZChwZXJpb2QtPnJuZ3R5cGUpKTsKKwkJCQljaGFyCSAgICpjb25uYW1lID0g cGdfc3RyZHVwKGZtdElkKHBlcmlvZC0+Y29ubmFtZSkpOworCisJCQkJaWYgKGFjdHVhbF9h dHRzID09IDApCisJCQkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHEsICIgKFxuICAgICIpOwor CQkJCWVsc2UKKwkJCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocSwgIixcbiAgICAiKTsKKwor CQkJCWFwcGVuZFBRRXhwQnVmZmVyKHEsICJQRVJJT0QgRk9SICVzICglcywgJXMpICIKKwkJ CQkJCSJXSVRIIChyYW5nZXR5cGUgPSAlcywgY2hlY2tfY29uc3RyYWludF9uYW1lID0gJXMp IiwKKwkJCQkJCQkJICBuYW1lLCBzdGFydCwgZW5kLAorCQkJCQkJCQkgIHJuZ3R5cGUsIGNv bm5hbWUpOworCisJCQkJYWN0dWFsX2F0dHMrKzsKKwkJCX0KKwogCQkJLyoKIAkJCSAqIEFk ZCBub24taW5oZXJpdGVkIENIRUNLIGNvbnN0cmFpbnRzLCBpZiBhbnkuCiAJCQkgKgpAQCAt MTU5MTAsNyArMTYwNDgsNyBAQCBkdW1wVGFibGVTY2hlbWEoQXJjaGl2ZSAqZm91dCwgY29u c3QgVGFibGVJbmZvICp0YmluZm8pCiAJCQkgKiBQQVJUSVRJT04gdGhhdCB3ZSdsbCBlbWl0 IGxhdGVyIGV4cGVjdHMgdGhlIGNvbnN0cmFpbnQgdG8gYmUKIAkJCSAqIHRoZXJlLiAgKE5v IG5lZWQgdG8gZml4IGNvbmlzbG9jYWw6IEFUVEFDSCBQQVJUSVRJT04gZG9lcyB0aGF0KQog CQkJICovCi0JCQlmb3IgKGogPSAwOyBqIDwgdGJpbmZvLT5uY2hlY2s7IGorKykKKwkJCWZv ciAoaiA9IDA7IGogPCB0YmluZm8tPm5jaGVjayAtIHRiaW5mby0+bnBlcmlvZDsgaisrKQog CQkJewogCQkJCUNvbnN0cmFpbnRJbmZvICpjb25zdHIgPSAmKHRiaW5mby0+Y2hlY2tleHBy c1tqXSk7CiAKQEAgLTE2MTI4LDcgKzE2MjY2LDcgQEAgZHVtcFRhYmxlU2NoZW1hKEFyY2hp dmUgKmZvdXQsIGNvbnN0IFRhYmxlSW5mbyAqdGJpbmZvKQogCQkJICogRm9yIHBhcnRpdGlv bnMsIHRoZXkgd2VyZSBhbHJlYWR5IGR1bXBlZCwgYW5kIGNvbmlzbG9jYWwKIAkJCSAqIGRv ZXNuJ3QgbmVlZCBmaXhpbmcuCiAJCQkgKi8KLQkJCWZvciAoayA9IDA7IGsgPCB0YmluZm8t Pm5jaGVjazsgaysrKQorCQkJZm9yIChrID0gMDsgayA8IHRiaW5mby0+bmNoZWNrIC0gdGJp bmZvLT5ucGVyaW9kOyBrKyspCiAJCQl7CiAJCQkJQ29uc3RyYWludEluZm8gKmNvbnN0ciA9 ICYodGJpbmZvLT5jaGVja2V4cHJzW2tdKTsKIApAQCAtMTY0MzAsNyArMTY1NjgsNyBAQCBk dW1wVGFibGVTY2hlbWEoQXJjaGl2ZSAqZm91dCwgY29uc3QgVGFibGVJbmZvICp0YmluZm8p CiAJCWR1bXBUYWJsZVNlY0xhYmVsKGZvdXQsIHRiaW5mbywgcmVsdHlwZW5hbWUpOwogCiAJ LyogRHVtcCBjb21tZW50cyBvbiBpbmxpbmVkIHRhYmxlIGNvbnN0cmFpbnRzICovCi0JZm9y IChqID0gMDsgaiA8IHRiaW5mby0+bmNoZWNrOyBqKyspCisJZm9yIChqID0gMDsgaiA8IHRi aW5mby0+bmNoZWNrIC0gdGJpbmZvLT5ucGVyaW9kOyBqKyspCiAJewogCQlDb25zdHJhaW50 SW5mbyAqY29uc3RyID0gJih0YmluZm8tPmNoZWNrZXhwcnNbal0pOwogCkBAIC0xODUyNiw2 ICsxODY2NCw3IEBAIGFkZEJvdW5kYXJ5RGVwZW5kZW5jaWVzKER1bXBhYmxlT2JqZWN0ICoq ZG9ianMsIGludCBudW1PYmpzLAogCQkJY2FzZSBET19UUklHR0VSOgogCQkJY2FzZSBET19F VkVOVF9UUklHR0VSOgogCQkJY2FzZSBET19ERUZBVUxUX0FDTDoKKwkJCWNhc2UgRE9fUEVS SU9EOgogCQkJY2FzZSBET19QT0xJQ1k6CiAJCQljYXNlIERPX1BVQkxJQ0FUSU9OOgogCQkJ Y2FzZSBET19QVUJMSUNBVElPTl9SRUw6CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAv cGdfZHVtcC5oIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaAppbmRleCBhZDdjYzg1Yjhj Li4yZWIwYzk1MWVmIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oCisr KyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgKQEAgLTU5LDYgKzU5LDcgQEAgdHlwZWRl ZiBlbnVtCiAJRE9fVFJJR0dFUiwKIAlET19DT05TVFJBSU5ULAogCURPX0ZLX0NPTlNUUkFJ TlQsCQkJLyogc2VlIG5vdGUgZm9yIENvbnN0cmFpbnRJbmZvICovCisJRE9fUEVSSU9ELAog CURPX1BST0NMQU5HLAogCURPX0NBU1QsCiAJRE9fVEFCTEVfREFUQSwKQEAgLTI5OSwxMiAr MzAwLDE0IEBAIHR5cGVkZWYgc3RydWN0IF90YWJsZUluZm8KIAlib29sCQlyb3dzZWM7CQkJ LyogaXMgcm93IHNlY3VyaXR5IGVuYWJsZWQ/ICovCiAJYm9vbAkJZm9yY2Vyb3dzZWM7CS8q IGlzIHJvdyBzZWN1cml0eSBmb3JjZWQ/ICovCiAJYm9vbAkJaGFzb2lkczsJCS8qIGRvZXMg aXQgaGF2ZSBPSURzPyAqLworCWJvb2wJCWhhc3BlcmlvZHM7CQkvKiBkb2VzIGl0IGhhdmUg YW55IHBlcmlvZHM/ICovCiAJdWludDMyCQlmcm96ZW54aWQ7CQkvKiB0YWJsZSdzIHJlbGZy b3plbnhpZCAqLwogCXVpbnQzMgkJbWlubXhpZDsJCS8qIHRhYmxlJ3MgcmVsbWlubXhpZCAq LwogCU9pZAkJCXRvYXN0X29pZDsJCS8qIHRvYXN0IHRhYmxlJ3MgT0lELCBvciAwIGlmIG5v bmUgKi8KIAl1aW50MzIJCXRvYXN0X2Zyb3plbnhpZDsJLyogdG9hc3QgdGFibGUncyByZWxm cm96ZW54aWQsIGlmIGFueSAqLwogCXVpbnQzMgkJdG9hc3RfbWlubXhpZDsJLyogdG9hc3Qg dGFibGUncyByZWxtaW5teGlkICovCiAJaW50CQkJbmNoZWNrOwkJCS8qICMgb2YgQ0hFQ0sg ZXhwcmVzc2lvbnMgKi8KKwlpbnQJCQlucGVyaW9kOwkJLyogIyBvZiBQRVJJT0QgZGVmaW5p dGlvbnMgKi8KIAlPaWQJCQlyZWx0eXBlOwkJLyogT0lEIG9mIHRhYmxlJ3MgY29tcG9zaXRl IHR5cGUsIGlmIGFueSAqLwogCU9pZAkJCXJlbG9mdHlwZTsJCS8qIHVuZGVybHlpbmcgdHlw ZSBmb3IgdHlwZWQgdGFibGUgKi8KIAlPaWQJCQlmb3JlaWduX3NlcnZlcjsgLyogZm9yZWln biBzZXJ2ZXIgb2lkLCBpZiBhcHBsaWNhYmxlICovCkBAIC0zNTQsNiArMzU3LDcgQEAgdHlw ZWRlZiBzdHJ1Y3QgX3RhYmxlSW5mbwogCWJvb2wJICAgKm5vdG51bGxfaW5oOwkvKiB0cnVl IGlmIE5PVCBOVUxMIGhhcyBubyBsb2NhbCBkZWZpbml0aW9uICovCiAJc3RydWN0IF9hdHRy RGVmSW5mbyAqKmF0dHJkZWZzOyAvKiBERUZBVUxUIGV4cHJlc3Npb25zICovCiAJc3RydWN0 IF9jb25zdHJhaW50SW5mbyAqY2hlY2tleHByczsgLyogQ0hFQ0sgY29uc3RyYWludHMgKi8K KwlzdHJ1Y3QgX3BlcmlvZEluZm8gKnBlcmlvZHM7CS8qIFBFUklPRCBkZWZpbml0aW9ucyAq LwogCWJvb2wJCW5lZWRzX292ZXJyaWRlOyAvKiBoYXMgR0VORVJBVEVEIEFMV0FZUyBBUyBJ REVOVElUWSAqLwogCWNoYXIJICAgKmFtbmFtZTsJCQkvKiByZWxhdGlvbiBhY2Nlc3MgbWV0 aG9kICovCiAKQEAgLTQ5Miw2ICs0OTYsMTYgQEAgdHlwZWRlZiBzdHJ1Y3QgX2NvbnN0cmFp bnRJbmZvCiAJYm9vbAkJd2l0aG91dG92ZXJsYXBzOwkvKiB0cnVlIGlmIHRoZSBsYXN0IGVs ZW0gaXMgV0lUSE9VVCBPVkVSTEFQUyAqLwogfSBDb25zdHJhaW50SW5mbzsKIAordHlwZWRl ZiBzdHJ1Y3QgX3BlcmlvZEluZm8KK3sKKwlEdW1wYWJsZU9iamVjdCBkb2JqOworCVRhYmxl SW5mbyAgKnBlcnRhYmxlOworCWNoYXIJICAgKnBlcnN0YXJ0OwkJLyogdGhlIG5hbWUgb2Yg dGhlIHN0YXJ0IGNvbHVtbiAqLworCWNoYXIJICAgKnBlcmVuZDsJCQkvKiB0aGUgbmFtZSBv ZiB0aGUgZW5kIGNvbHVtbiAqLworCWNoYXIJICAgKnJuZ3R5cGU7CQkvKiB0aGUgbmFtZSBv ZiB0aGUgcmFuZ2UgdHlwZSAqLworCWNoYXIJICAgKmNvbm5hbWU7CQkvKiB0aGUgbmFtZSBv ZiB0aGUgQ0hFQ0sgY29uc3RyYWludCAqLworfSBQZXJpb2RJbmZvOworCiB0eXBlZGVmIHN0 cnVjdCBfcHJvY0xhbmdJbmZvCiB7CiAJRHVtcGFibGVPYmplY3QgZG9iajsKZGlmZiAtLWdp dCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wX3NvcnQuYyBiL3NyYy9iaW4vcGdfZHVtcC9w Z19kdW1wX3NvcnQuYwppbmRleCBhYmZlYTE1YzA5Li44MzI0ZjUwMmRjIDEwMDY0NAotLS0g YS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcF9zb3J0LmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1w L3BnX2R1bXBfc29ydC5jCkBAIC04NSw2ICs4NSw3IEBAIGVudW0gZGJPYmplY3RUeXBlUHJp b3JpdGllcwogCVBSSU9fQ09OU1RSQUlOVCwKIAlQUklPX0lOREVYLAogCVBSSU9fSU5ERVhf QVRUQUNILAorCVBSSU9fUEVSSU9ELAogCVBSSU9fU1RBVFNFWFQsCiAJUFJJT19SVUxFLAog CVBSSU9fVFJJR0dFUiwKQEAgLTExOSw2ICsxMjAsNyBAQCBzdGF0aWMgY29uc3QgaW50IGRi T2JqZWN0VHlwZVByaW9yaXR5W10gPQogCVBSSU9fQVRUUkRFRiwJCQkJLyogRE9fQVRUUkRF RiAqLwogCVBSSU9fSU5ERVgsCQkJCQkvKiBET19JTkRFWCAqLwogCVBSSU9fSU5ERVhfQVRU QUNILAkJCS8qIERPX0lOREVYX0FUVEFDSCAqLworCVBSSU9fUEVSSU9ELAkJCQkvKiBET19Q RVJJT0QgKi8KIAlQUklPX1NUQVRTRVhULAkJCQkvKiBET19TVEFUU0VYVCAqLwogCVBSSU9f UlVMRSwJCQkJCS8qIERPX1JVTEUgKi8KIAlQUklPX1RSSUdHRVIsCQkJCS8qIERPX1RSSUdH RVIgKi8KQEAgLTEzNjgsNiArMTM3MCwxMSBAQCBkZXNjcmliZUR1bXBhYmxlT2JqZWN0KER1 bXBhYmxlT2JqZWN0ICpvYmosIGNoYXIgKmJ1ZiwgaW50IGJ1ZnNpemUpCiAJCQkJCSAiRksg Q09OU1RSQUlOVCAlcyAgKElEICVkIE9JRCAldSkiLAogCQkJCQkgb2JqLT5uYW1lLCBvYmot PmR1bXBJZCwgb2JqLT5jYXRJZC5vaWQpOwogCQkJcmV0dXJuOworCQljYXNlIERPX1BFUklP RDoKKwkJCXNucHJpbnRmKGJ1ZiwgYnVmc2l6ZSwKKwkJCQkJICJQRVJJT0QgJXMgIChJRCAl ZCBPSUQgJXUpIiwKKwkJCQkJIG9iai0+bmFtZSwgb2JqLT5kdW1wSWQsIG9iai0+Y2F0SWQu b2lkKTsKKwkJCXJldHVybjsKIAkJY2FzZSBET19QUk9DTEFORzoKIAkJCXNucHJpbnRmKGJ1 ZiwgYnVmc2l6ZSwKIAkJCQkJICJQUk9DRURVUkFMIExBTkdVQUdFICVzICAoSUQgJWQgT0lE ICV1KSIsCmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYyBiL3NyYy9iaW4v cHNxbC9kZXNjcmliZS5jCmluZGV4IDRmYmZjMDc0NjAuLmJmYjI5MDliOTQgMTAwNjQ0Ci0t LSBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCisrKyBiL3NyYy9iaW4vcHNxbC9kZXNjcmli ZS5jCkBAIC0xOTQ4LDYgKzE5NDgsOCBAQCBkZXNjcmliZU9uZVRhYmxlRGV0YWlscyhjb25z dCBjaGFyICpzY2hlbWFuYW1lLAogCiAJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmJ1ZiwgIlxu RlJPTSBwZ19jYXRhbG9nLnBnX2F0dHJpYnV0ZSBhIik7CiAJYXBwZW5kUFFFeHBCdWZmZXIo JmJ1ZiwgIlxuV0hFUkUgYS5hdHRyZWxpZCA9ICclcycgQU5EIGEuYXR0bnVtID4gMCBBTkQg Tk9UIGEuYXR0aXNkcm9wcGVkIiwgb2lkKTsKKwlpZiAocHNldC5zdmVyc2lvbiA+PSAxNzAw MDApCisJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsICJcbkFORCBOT1QgRVhJU1RTIChTRUxF Q1QgMSBGUk9NIHBnX2NhdGFsb2cucGdfcGVyaW9kIHAgV0hFUkUgcC5wZXJyZWxpZCA9IGEu YXR0cmVsaWQgQU5EIHAucGVycmFuZ2UgPSBhLmF0dG51bSkiKTsKIAlhcHBlbmRQUUV4cEJ1 ZmZlclN0cigmYnVmLCAiXG5PUkRFUiBCWSBhLmF0dG51bTsiKTsKIAogCXJlcyA9IFBTUUxl eGVjKGJ1Zi5kYXRhKTsKQEAgLTIzNzAsNiArMjM3Miw0MCBAQCBkZXNjcmliZU9uZVRhYmxl RGV0YWlscyhjb25zdCBjaGFyICpzY2hlbWFuYW1lLAogCQlQR3Jlc3VsdCAgICpyZXN1bHQg PSBOVUxMOwogCQlpbnQJCQl0dXBsZXMgPSAwOwogCisJCS8qIHByaW50IHBlcmlvZHMgKi8K KwkJaWYgKHBzZXQuc3ZlcnNpb24gPj0gMTUwMDAwKQorCQl7CisJCQlwcmludGZQUUV4cEJ1 ZmZlcigmYnVmLAorCQkJCQkJCSAgIlNFTEVDVCBxdW90ZV9pZGVudChwLnBlcm5hbWUpLCBx dW90ZV9pZGVudChzLmF0dG5hbWUpIEFTIHN0YXJ0YXR0LCBxdW90ZV9pZGVudChlLmF0dG5h bWUpIEFTIGVuZGF0dFxuIgorCQkJCQkJCSAgIkZST00gcGdfcGVyaW9kIEFTIHBcbiIKKwkJ CQkJCQkgICJKT0lOIHBnX2F0dHJpYnV0ZSBBUyBzIE9OIChzLmF0dHJlbGlkLCBzLmF0dG51 bSkgPSAocC5wZXJyZWxpZCwgcC5wZXJzdGFydClcbiIKKwkJCQkJCQkgICJKT0lOIHBnX2F0 dHJpYnV0ZSBBUyBlIE9OIChlLmF0dHJlbGlkLCBlLmF0dG51bSkgPSAocC5wZXJyZWxpZCwg cC5wZXJlbmQpXG4iCisJCQkJCQkJICAiV0hFUkUgcC5wZXJyZWxpZCA9ICclcydcbiIKKwkJ CQkJCQkgICJPUkRFUiBCWSAxOyIsCisJCQkJCQkJICBvaWQpOworCQkJcmVzdWx0ID0gUFNR TGV4ZWMoYnVmLmRhdGEpOworCQkJaWYgKCFyZXN1bHQpCisJCQkJZ290byBlcnJvcl9yZXR1 cm47CisJCQllbHNlCisJCQkJdHVwbGVzID0gUFFudHVwbGVzKHJlc3VsdCk7CisKKwkJCWlm ICh0dXBsZXMgPiAwKQorCQkJeworCQkJCXByaW50VGFibGVBZGRGb290ZXIoJmNvbnQsIF8o IlBlcmlvZHM6IikpOworCQkJCWZvciAoaSA9IDA7IGkgPCB0dXBsZXM7IGkrKykKKwkJCQl7 CisJCQkJCS8qIHVudHJhbnNsYXRlZCBjb25zdHJhaW50IG5hbWUgYW5kIGRlZiAqLworCQkJ CQlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLCAiICAgICVzICglcywgJXMpIiwKKwkJCQkJCQkJ CSAgUFFnZXR2YWx1ZShyZXN1bHQsIGksIDApLAorCQkJCQkJCQkJICBQUWdldHZhbHVlKHJl c3VsdCwgaSwgMSksCisJCQkJCQkJCQkgIFBRZ2V0dmFsdWUocmVzdWx0LCBpLCAyKSk7CisK KwkJCQkJcHJpbnRUYWJsZUFkZEZvb3RlcigmY29udCwgYnVmLmRhdGEpOworCQkJCX0KKwkJ CX0KKwkJCVBRY2xlYXIocmVzdWx0KTsKKwkJfQorCiAJCS8qIHByaW50IGluZGV4ZXMgKi8K IAkJaWYgKHRhYmxlaW5mby5oYXNpbmRleCkKIAkJewpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvY2F0YWxvZy9kZXBlbmRlbmN5LmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL2RlcGVuZGVu Y3kuaAppbmRleCBhYmFjMGY2ZGE1Li5kYWVjZjQ0NjcxIDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9jYXRhbG9nL2RlcGVuZGVuY3kuaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL2Rl cGVuZGVuY3kuaApAQCAtOTMsNiArOTMsNyBAQCB0eXBlZGVmIGVudW0gT2JqZWN0Q2xhc3MK IAlPQ0xBU1NfQ0FTVCwJCQkJLyogcGdfY2FzdCAqLwogCU9DTEFTU19DT0xMQVRJT04sCQkJ LyogcGdfY29sbGF0aW9uICovCiAJT0NMQVNTX0NPTlNUUkFJTlQsCQkJLyogcGdfY29uc3Ry YWludCAqLworCU9DTEFTU19QRVJJT0QsCQkJCS8qIHBnX3BlcmlvZCAqLwogCU9DTEFTU19D T05WRVJTSU9OLAkJCS8qIHBnX2NvbnZlcnNpb24gKi8KIAlPQ0xBU1NfREVGQVVMVCwJCQkJ LyogcGdfYXR0cmRlZiAqLwogCU9DTEFTU19MQU5HVUFHRSwJCQkvKiBwZ19sYW5ndWFnZSAq LwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9oZWFwLmggYi9zcmMvaW5jbHVk ZS9jYXRhbG9nL2hlYXAuaAppbmRleCA1MWY3YjEyYWEzLi4xZjY0NmYzZDNiIDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL2hlYXAuaAorKysgYi9zcmMvaW5jbHVkZS9jYXRh bG9nL2hlYXAuaApAQCAtMTIxLDYgKzEyMSwxMCBAQCBleHRlcm4gTGlzdCAqQWRkUmVsYXRp b25Ob3ROdWxsQ29uc3RyYWludHMoUmVsYXRpb24gcmVsLAogZXh0ZXJuIHZvaWQgUmVsYXRp b25DbGVhck1pc3NpbmcoUmVsYXRpb24gcmVsKTsKIGV4dGVybiB2b2lkIFNldEF0dHJNaXNz aW5nKE9pZCByZWxpZCwgY2hhciAqYXR0bmFtZSwgY2hhciAqdmFsdWUpOwogCitleHRlcm4g T2lkIFN0b3JlUGVyaW9kKFJlbGF0aW9uIHJlbCwgY29uc3QgY2hhciAqcGVyaW9kLAorCQkJ CQkgICBBdHRyTnVtYmVyIHN0YXJ0bnVtLCBBdHRyTnVtYmVyIGVuZG51bSwKKwkJCQkJICAg QXR0ck51bWJlciByYW5nZW51bSwgT2lkIGNvbm9pZCk7CisKIGV4dGVybiBOb2RlICpjb29r RGVmYXVsdChQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkgTm9kZSAqcmF3X2RlZmF1bHQs CiAJCQkJCQkgT2lkIGF0dHR5cGlkLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxv Zy9tZXNvbi5idWlsZCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvbWVzb24uYnVpbGQKaW5kZXgg ZGNiM2M1Zjc2Ni4uMTk0MzcyOTFhNCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxv Zy9tZXNvbi5idWlsZAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL21lc29uLmJ1aWxkCkBA IC02MSw2ICs2MSw3IEBAIGNhdGFsb2dfaGVhZGVycyA9IFsKICAgJ3BnX2NvbGxhdGlvbi5o JywKICAgJ3BnX3BhcmFtZXRlcl9hY2wuaCcsCiAgICdwZ19wYXJ0aXRpb25lZF90YWJsZS5o JywKKyAgJ3BnX3BlcmlvZC5oJywKICAgJ3BnX3JhbmdlLmgnLAogICAncGdfdHJhbnNmb3Jt LmgnLAogICAncGdfc2VxdWVuY2UuaCcsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRh bG9nL3BnX2luZGV4LmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2luZGV4LmgKaW5kZXgg MzI5MzA0MTFiNi4uYTRlMDJkZGNhNyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19pbmRleC5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfaW5kZXguaApAQCAt NDgsNyArNDgsNiBAQCBDQVRBTE9HKHBnX2luZGV4LDI2MTAsSW5kZXhSZWxhdGlvbklkKSBC S0lfU0NIRU1BX01BQ1JPCiAJLyogdmFyaWFibGUtbGVuZ3RoIGZpZWxkcyBzdGFydCBoZXJl LCBidXQgd2UgYWxsb3cgZGlyZWN0IGFjY2VzcyB0byBpbmRrZXkgKi8KIAlpbnQydmVjdG9y CWluZGtleSBCS0lfRk9SQ0VfTk9UX05VTEw7CS8qIGNvbHVtbiBudW1iZXJzIG9mIGluZGV4 ZWQgY29scywKIAkJCQkJCQkJCQkJICogb3IgMCAqLwotCiAjaWZkZWYgQ0FUQUxPR19WQVJM RU4KIAlvaWR2ZWN0b3IJaW5kY29sbGF0aW9uIEJLSV9MT09LVVBfT1BUKHBnX2NvbGxhdGlv bikgQktJX0ZPUkNFX05PVF9OVUxMOwkvKiBjb2xsYXRpb24gaWRlbnRpZmllcnMgKi8KIAlv aWR2ZWN0b3IJaW5kY2xhc3MgQktJX0xPT0tVUChwZ19vcGNsYXNzKSBCS0lfRk9SQ0VfTk9U X05VTEw7IC8qIG9wY2xhc3MgaWRlbnRpZmllcnMgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL2NhdGFsb2cvcGdfcGVyaW9kLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Blcmlv ZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmQyY2ZmYTA3YmMK LS0tIC9kZXYvbnVsbAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3BlcmlvZC5oCkBA IC0wLDAgKzEsNTQgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIHBnX3Blcmlv ZC5oCisgKgkgIGRlZmluaXRpb24gb2YgdGhlICJwZXJpb2QiIHN5c3RlbSBjYXRhbG9nIChw Z19wZXJpb2QpCisgKgorICoKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0yMDIx LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICoKKyAqIHNyYy9pbmNs dWRlL2NhdGFsb2cvcGdfcGVyaW9kLmgKKyAqCisgKiBOT1RFUworICoJICBUaGUgQ2F0YWxv Zy5wbSBtb2R1bGUgcmVhZHMgdGhpcyBmaWxlIGFuZCBkZXJpdmVzIHNjaGVtYQorICoJICBp bmZvcm1hdGlvbi4KKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworI2lmbmRlZiBQ R19QRVJJT0RfSAorI2RlZmluZSBQR19QRVJJT0RfSAorCisjaW5jbHVkZSAiY2F0YWxvZy9n ZW5ia2kuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3BlcmlvZF9kLmgiCisKKy8qIC0tLS0t LS0tLS0tLS0tLS0KKyAqCQlwZ19wZXJpb2QgZGVmaW5pdGlvbi4gIGNwcCB0dXJucyB0aGlz IGludG8KKyAqCQl0eXBlZGVmIHN0cnVjdCBGb3JtRGF0YV9wZ19wZXJpb2QKKyAqIC0tLS0t LS0tLS0tLS0tLS0KKyAqLworQ0FUQUxPRyhwZ19wZXJpb2QsODAwMCxQZXJpb2RSZWxhdGlv bklkKQoreworCU9pZAkJCW9pZDsJCQkvKiBPSUQgb2YgdGhlIHBlcmlvZCAqLworCU5hbWVE YXRhCXBlcm5hbWU7CQkvKiBuYW1lIG9mIHBlcmlvZCAqLworCU9pZAkJCXBlcnJlbGlkOwkJ LyogT0lEIG9mIHJlbGF0aW9uIGNvbnRhaW5pbmcgdGhpcyBwZXJpb2QgKi8KKwlpbnQxNgkJ cGVyc3RhcnQ7CQkvKiBjb2x1bW4gZm9yIHN0YXJ0IHZhbHVlICovCisJaW50MTYJCXBlcmVu ZDsJCQkvKiBjb2x1bW4gZm9yIGVuZCB2YWx1ZSAqLworCWludDE2CQlwZXJyYW5nZTsJCS8q IGNvbHVtbiBmb3IgcmFuZ2UgdmFsdWUgKi8KKwlPaWQJCQlwZXJjb25zdHJhaW50OwkvKiBP SUQgb2YgKHN0YXJ0IDwgZW5kKSBjb25zdHJhaW50ICovCit9IEZvcm1EYXRhX3BnX3Blcmlv ZDsKKworLyogLS0tLS0tLS0tLS0tLS0tLQorICoJCUZvcm1fcGdfcGVyaW9kIGNvcnJlc3Bv bmRzIHRvIGEgcG9pbnRlciB0byBhIHR1cGxlIHdpdGgKKyAqCQl0aGUgZm9ybWF0IG9mIHBn X3BlcmlvZCByZWxhdGlvbi4KKyAqIC0tLS0tLS0tLS0tLS0tLS0KKyAqLwordHlwZWRlZiBG b3JtRGF0YV9wZ19wZXJpb2QgKkZvcm1fcGdfcGVyaW9kOworCitERUNMQVJFX1VOSVFVRV9J TkRFWF9QS0VZKHBnX3BlcmlvZF9vaWRfaW5kZXgsIDgwMDEsIFBlcmlvZE9iamVjdEluZGV4 SWQsIHBnX3BlcmlvZCwgYnRyZWUob2lkIG9pZF9vcHMpKTsKK0RFQ0xBUkVfVU5JUVVFX0lO REVYKHBnX3BlcmlvZF9wZXJyZWxpZF9wZXJuYW1lX2luZGV4LCA4MDAyLCBQZXJpb2RSZWxp ZE5hbWVJbmRleElkLCBwZ19wZXJpb2QsIGJ0cmVlKHBlcnJlbGlkIG9pZF9vcHMsIHBlcm5h bWUgbmFtZV9vcHMpKTsKKworZXh0ZXJuIHZvaWQgUmVtb3ZlUGVyaW9kQnlJZChPaWQgcGVy aW9kSWQpOworCitleHRlcm4gT2lkIGdldF9yZWxhdGlvbl9wZXJpb2Rfb2lkKE9pZCByZWxp ZCwgY29uc3QgY2hhciAqcGVybmFtZSwgYm9vbCBtaXNzaW5nX29rKTsKK2V4dGVybiBCaXRt YXBzZXQgKmdldF9wZXJpb2RfYXR0bm9zKE9pZCByZWxpZCk7CisKKyNlbmRpZgkJCQkJCQkv KiBQR19QRVJJT0RfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19y YW5nZS5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19yYW5nZS5oCmluZGV4IDEyNDdmYTdj NzcuLjdlZDAxNGI3MWQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcmFu Z2UuaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3JhbmdlLmgKQEAgLTU5LDYgKzU5 LDcgQEAgdHlwZWRlZiBGb3JtRGF0YV9wZ19yYW5nZSAqRm9ybV9wZ19yYW5nZTsKIAogREVD TEFSRV9VTklRVUVfSU5ERVhfUEtFWShwZ19yYW5nZV9ybmd0eXBpZF9pbmRleCwgMzU0Miwg UmFuZ2VUeXBpZEluZGV4SWQsIHBnX3JhbmdlLCBidHJlZShybmd0eXBpZCBvaWRfb3BzKSk7 CiBERUNMQVJFX1VOSVFVRV9JTkRFWChwZ19yYW5nZV9ybmdtdWx0aXR5cGlkX2luZGV4LCAy MjI4LCBSYW5nZU11bHRpcmFuZ2VUeXBpZEluZGV4SWQsIHBnX3JhbmdlLCBidHJlZShybmdt dWx0aXR5cGlkIG9pZF9vcHMpKTsKK0RFQ0xBUkVfVU5JUVVFX0lOREVYKHBnX3JhbmdlX3Ju Z3N1YnR5cGVfcm5ndHlwaWRfaW5kZXgsIDgwMDMsIFJhbmdlU3ViVHlwaWRUeXBpZEluZGV4 SWQsIHBnX3JhbmdlLCBidHJlZShybmdzdWJ0eXBlIG9pZF9vcHMsIHJuZ3R5cGlkIG9pZF9v cHMpKTsKIAogLyoKICAqIHByb3RvdHlwZXMgZm9yIGZ1bmN0aW9ucyBpbiBwZ19yYW5nZS5j CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy90YWJsZWNtZHMuaCBiL3NyYy9p bmNsdWRlL2NvbW1hbmRzL3RhYmxlY21kcy5oCmluZGV4IGE5YzY4MjU2MDEuLjczMjg0MGNl NmMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3RhYmxlY21kcy5oCisrKyBi L3NyYy9pbmNsdWRlL2NvbW1hbmRzL3RhYmxlY21kcy5oCkBAIC00MCw3ICs0MCw4IEBAIGV4 dGVybiBMT0NLTU9ERSBBbHRlclRhYmxlR2V0TG9ja0xldmVsKExpc3QgKmNtZHMpOwogCiBl eHRlcm4gdm9pZCBBVEV4ZWNDaGFuZ2VPd25lcihPaWQgcmVsYXRpb25PaWQsIE9pZCBuZXdP d25lcklkLCBib29sIHJlY3Vyc2luZywgTE9DS01PREUgbG9ja21vZGUpOwogCi1leHRlcm4g dm9pZCBBbHRlclRhYmxlSW50ZXJuYWwoT2lkIHJlbGlkLCBMaXN0ICpjbWRzLCBib29sIHJl Y3Vyc2UpOworZXh0ZXJuIHZvaWQgQWx0ZXJUYWJsZUludGVybmFsKE9pZCByZWxpZCwgTGlz dCAqY21kcywgYm9vbCByZWN1cnNlLAorCQkJCQkJCSAgIHN0cnVjdCBBbHRlclRhYmxlVXRp bGl0eUNvbnRleHQgKmNvbnRleHQpOwogCiBleHRlcm4gT2lkCUFsdGVyVGFibGVNb3ZlQWxs KEFsdGVyVGFibGVNb3ZlQWxsU3RtdCAqc3RtdCk7CiAKQEAgLTEwNSw1ICsxMDYsNiBAQCBl eHRlcm4gdm9pZCBSYW5nZVZhckNhbGxiYWNrT3duc1JlbGF0aW9uKGNvbnN0IFJhbmdlVmFy ICpyZWxhdGlvbiwKIAkJCQkJCQkJCQkgT2lkIHJlbElkLCBPaWQgb2xkUmVsSWQsIHZvaWQg KmFyZyk7CiBleHRlcm4gYm9vbCBQYXJ0Q29uc3RyYWludEltcGxpZWRCeVJlbENvbnN0cmFp bnQoUmVsYXRpb24gc2NhbnJlbCwKIAkJCQkJCQkJCQkJCSBMaXN0ICpwYXJ0Q29uc3RyYWlu dCk7CitleHRlcm4gT2lkIGNob29zZV9yYW5nZXR5cGVfZm9yX3BlcmlvZChQZXJpb2REZWYg KnBlcmlvZCk7CiAKICNlbmRpZgkJCQkJCQkvKiBUQUJMRUNNRFNfSCAqLwpkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMv cGFyc2Vub2Rlcy5oCmluZGV4IDI5MzUwMGQ0ODAuLjU5ZmVjMTBjZTUgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rl cy9wYXJzZW5vZGVzLmgKQEAgLTIxNjMsNiArMjE2Myw3IEBAIHR5cGVkZWYgZW51bSBPYmpl Y3RUeXBlCiAJT0JKRUNUX09QRVJBVE9SLAogCU9CSkVDVF9PUEZBTUlMWSwKIAlPQkpFQ1Rf UEFSQU1FVEVSX0FDTCwKKwlPQkpFQ1RfUEVSSU9ELAogCU9CSkVDVF9QT0xJQ1ksCiAJT0JK RUNUX1BST0NFRFVSRSwKIAlPQkpFQ1RfUFVCTElDQVRJT04sCkBAIC0yMjUwLDYgKzIyNTEs OCBAQCB0eXBlZGVmIGVudW0gQWx0ZXJUYWJsZVR5cGUKIAlBVF9WYWxpZGF0ZUNvbnN0cmFp bnQsCQkvKiB2YWxpZGF0ZSBjb25zdHJhaW50ICovCiAJQVRfQWRkSW5kZXhDb25zdHJhaW50 LAkJLyogYWRkIGNvbnN0cmFpbnQgdXNpbmcgZXhpc3RpbmcgaW5kZXggKi8KIAlBVF9Ecm9w Q29uc3RyYWludCwJCQkvKiBkcm9wIGNvbnN0cmFpbnQgKi8KKwlBVF9BZGRQZXJpb2QsCQkJ CS8qIEFERCBQRVJJT0QgKi8KKwlBVF9Ecm9wUGVyaW9kLAkJCQkvKiBEUk9QIFBFUklPRCAq LwogCUFUX1JlQWRkQ29tbWVudCwJCQkvKiBpbnRlcm5hbCB0byBjb21tYW5kcy90YWJsZWNt ZHMuYyAqLwogCUFUX0FsdGVyQ29sdW1uVHlwZSwJCQkvKiBhbHRlciBjb2x1bW4gdHlwZSAq LwogCUFUX0FsdGVyQ29sdW1uR2VuZXJpY09wdGlvbnMsCS8qIGFsdGVyIGNvbHVtbiBPUFRJ T05TICguLi4pICovCkBAIC0yNTE2LDExICsyNTE5LDExIEBAIHR5cGVkZWYgc3RydWN0IFZh cmlhYmxlU2hvd1N0bXQKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqCQlDcmVhdGUg VGFibGUgU3RhdGVtZW50CiAgKgotICogTk9URTogaW4gdGhlIHJhdyBncmFtLnkgb3V0cHV0 LCBDb2x1bW5EZWYgYW5kIENvbnN0cmFpbnQgbm9kZXMgYXJlCi0gKiBpbnRlcm1peGVkIGlu IHRhYmxlRWx0cywgYW5kIGNvbnN0cmFpbnRzIGFuZCBubmNvbnN0cmFpbnRzIGFyZSBOSUwu ICBBZnRlcgotICogcGFyc2UgYW5hbHlzaXMsIHRhYmxlRWx0cyBjb250YWlucyBqdXN0IENv bHVtbkRlZnMsIG5uY29uc3RyYWludHMgY29udGFpbnMKLSAqIENvbnN0cmFpbnQgbm9kZXMg b2YgQ09OU1RSX05PVE5VTEwgdHlwZSBmcm9tIHZhcmlvdXMgc291cmNlcywgYW5kCi0gKiBj b25zdHJhaW50cyBjb250YWlucyBqdXN0IENPTlNUUl9DSEVDSyBDb25zdHJhaW50IG5vZGVz LgorICogTk9URTogaW4gdGhlIHJhdyBncmFtLnkgb3V0cHV0LCBDb2x1bW5EZWYsIFBlcmlv ZERlZiwgYW5kIENvbnN0cmFpbnQgbm9kZXMgYXJlCisgKiBpbnRlcm1peGVkIGluIHRhYmxl RWx0czsgcGVyaW9kcywgY29uc3RyYWludHMsIGFuZCBubmNvbnN0cmFpbnRzIGFyZSBOSUwu ICBBZnRlcgorICogcGFyc2UgYW5hbHlzaXMsIHRhYmxlRWx0cyBjb250YWlucyBqdXN0IENv bHVtbkRlZnMsIHBlcmlvZHMgY29udGFpbnMganVzdCBQZXJpb2REZWZzLAorICogbm5jb25z dHJhaW50cyBjb250YWlucyBDb25zdHJhaW50IG5vZGVzIG9mIENPTlNUUl9OT1ROVUxMIHR5 cGUgZnJvbSB2YXJpb3VzIHNvdXJjZXMsCisgKiBhbmQgY29uc3RyYWludHMgY29udGFpbnMg anVzdCBDT05TVFJfQ0hFQ0sgQ29uc3RyYWludCBub2Rlcy4KICAqIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KICAqLwogCkBAIC0yNTI5LDYgKzI1MzIsNyBAQCB0eXBlZGVmIHN0cnVjdCBD cmVhdGVTdG10CiAJTm9kZVRhZwkJdHlwZTsKIAlSYW5nZVZhciAgICpyZWxhdGlvbjsJCS8q IHJlbGF0aW9uIHRvIGNyZWF0ZSAqLwogCUxpc3QJICAgKnRhYmxlRWx0czsJCS8qIGNvbHVt biBkZWZpbml0aW9ucyAobGlzdCBvZiBDb2x1bW5EZWYpICovCisJTGlzdAkgICAqcGVyaW9k czsJCS8qIHBlcmlvZHMgKGxpc3Qgb2YgUGVyaW9kRGVmIG5vZGVzKSAqLwogCUxpc3QJICAg KmluaFJlbGF0aW9uczsJLyogcmVsYXRpb25zIHRvIGluaGVyaXQgZnJvbSAobGlzdCBvZgog CQkJCQkJCQkgKiBSYW5nZVZhcikgKi8KIAlQYXJ0aXRpb25Cb3VuZFNwZWMgKnBhcnRib3Vu ZDsJLyogRk9SIFZBTFVFUyBjbGF1c2UgKi8KQEAgLTI1NDMsNiArMjU0NywzMCBAQCB0eXBl ZGVmIHN0cnVjdCBDcmVhdGVTdG10CiAJYm9vbAkJaWZfbm90X2V4aXN0czsJLyoganVzdCBk byBub3RoaW5nIGlmIGl0IGFscmVhZHkgZXhpc3RzPyAqLwogfSBDcmVhdGVTdG10OwogCisK Ky8qIC0tLS0tLS0tLS0KKyAqIERlZmluaXRpb25zIGZvciBwZXJpb2RzIGluIENyZWF0ZVN0 bXQKKyAqIC0tLS0tLS0tLS0KKyAqLworCit0eXBlZGVmIHN0cnVjdCBQZXJpb2REZWYKK3sK KwlOb2RlVGFnCQl0eXBlOworCU9pZAkJCW9pZDsJCQkvKiBwZXJpb2Qgb2lkLCBvbmNlIGl0 J3MgdHJhbnNmb3JtZWQgKi8KKwljaGFyCSAgICpwZXJpb2RuYW1lOwkJLyogcGVyaW9kIG5h bWUgKi8KKwljaGFyCSAgICpzdGFydGNvbG5hbWU7CS8qIG5hbWUgb2Ygc3RhcnQgY29sdW1u ICovCisJY2hhcgkgICAqZW5kY29sbmFtZTsJCS8qIG5hbWUgb2YgZW5kIGNvbHVtbiAqLwor CUF0dHJOdW1iZXIJc3RhcnRhdHRudW07CS8qIGF0dG51bSBvZiB0aGUgc3RhcnQgY29sdW1u ICovCisJQXR0ck51bWJlcgllbmRhdHRudW07CQkvKiBhdHRudW0gb2YgdGhlIGVuZCBjb2x1 bW4gKi8KKwlBdHRyTnVtYmVyCXJuZ2F0dG51bTsJCS8qIGF0dG51bSBvZiB0aGUgR0VORVJB VEVEIHJhbmdlIGNvbHVtbiAqLworCUxpc3QJICAgKm9wdGlvbnM7CQkvKiBvcHRpb25zIGZy b20gV0lUSCBjbGF1c2UgKi8KKwljaGFyCSAgICpjb25zdHJhaW50bmFtZTsJLyogbmFtZSBv ZiB0aGUgQ0hFQ0sgY29uc3RyYWludCAqLworCWNoYXIJICAgKnJhbmdldHlwZW5hbWU7CS8q IG5hbWUgb2YgdGhlIHJhbmdlIHR5cGUgKi8KKwlPaWQJCQljb2x0eXBpZDsJCS8qIHRoZSBz dGFydC9lbmQgY29sIHR5cGUgKi8KKwlPaWQJCQlybmd0eXBpZDsJCS8qIHRoZSByYW5nZSB0 eXBlIHRvIHVzZSAqLworCWludAkJCWxvY2F0aW9uOwkJLyogdG9rZW4gbG9jYXRpb24sIG9y IC0xIGlmIHVua25vd24gKi8KK30gUGVyaW9kRGVmOworCiAvKiAtLS0tLS0tLS0tCiAgKiBE ZWZpbml0aW9ucyBmb3IgY29uc3RyYWludHMgaW4gQ3JlYXRlU3RtdAogICoKQEAgLTMyNTIs NiArMzI4MCw3IEBAIHR5cGVkZWYgc3RydWN0IEluZGV4U3RtdAogCUxpc3QJICAgKmluZGV4 UGFyYW1zOwkvKiBjb2x1bW5zIHRvIGluZGV4OiBhIGxpc3Qgb2YgSW5kZXhFbGVtICovCiAJ TGlzdAkgICAqaW5kZXhJbmNsdWRpbmdQYXJhbXM7CS8qIGFkZGl0aW9uYWwgY29sdW1ucyB0 byBpbmRleDogYSBsaXN0CiAJCQkJCQkJCQkJICogb2YgSW5kZXhFbGVtICovCisJUGVyaW9k RGVmICAqcGVyaW9kOwkJCS8qIFRoZSBwZXJpb2QgaW5jbHVkZWQgaW4gdGhlIGluZGV4ICov CiAJTGlzdAkgICAqb3B0aW9uczsJCS8qIFdJVEggY2xhdXNlIG9wdGlvbnM6IGEgbGlzdCBv ZiBEZWZFbGVtICovCiAJTm9kZQkgICAqd2hlcmVDbGF1c2U7CS8qIHF1YWxpZmljYXRpb24g KHBhcnRpYWwtaW5kZXggcHJlZGljYXRlKSAqLwogCUxpc3QJICAgKmV4Y2x1ZGVPcE5hbWVz OyAvKiBleGNsdXNpb24gb3BlcmF0b3IgbmFtZXMsIG9yIE5JTCBpZiBub25lICovCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfdXRpbGNtZC5oIGIvc3JjL2luY2x1 ZGUvcGFyc2VyL3BhcnNlX3V0aWxjbWQuaAppbmRleCAyYjQwYTBiNWIxLi5mZWI2YzI2MDA3 IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfdXRpbGNtZC5oCisrKyBi L3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV91dGlsY21kLmgKQEAgLTQwLDUgKzQwLDYgQEAg ZXh0ZXJuIEluZGV4U3RtdCAqZ2VuZXJhdGVDbG9uZWRJbmRleFN0bXQoUmFuZ2VWYXIgKmhl YXBSZWwsCiAJCQkJCQkJCQkJICBSZWxhdGlvbiBzb3VyY2VfaWR4LAogCQkJCQkJCQkJCSAg Y29uc3Qgc3RydWN0IEF0dHJNYXAgKmF0dG1hcCwKIAkJCQkJCQkJCQkgIE9pZCAqY29uc3Ry YWludE9pZCk7CitleHRlcm4gdm9pZCB0cmFuc2Zvcm1QZXJpb2RPcHRpb25zKFBlcmlvZERl ZiAqcGVyaW9kKTsKIAogI2VuZGlmCQkJCQkJCS8qIFBBUlNFX1VUSUxDTURfSCAqLwpkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvbHN5c2NhY2hlLmggYi9zcmMvaW5jbHVkZS91 dGlscy9sc3lzY2FjaGUuaAppbmRleCA4OGU0OWRiM2Q4Li4xZTMyODc2MTg4IDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaAorKysgYi9zcmMvaW5jbHVkZS91 dGlscy9sc3lzY2FjaGUuaApAQCAtOTYsNiArOTYsOCBAQCBleHRlcm4gT2lkCWdldF9hdHR0 eXBlKE9pZCByZWxpZCwgQXR0ck51bWJlciBhdHRudW0pOwogZXh0ZXJuIHZvaWQgZ2V0X2F0 dHR5cGV0eXBtb2Rjb2xsKE9pZCByZWxpZCwgQXR0ck51bWJlciBhdHRudW0sCiAJCQkJCQkJ CSAgT2lkICp0eXBpZCwgaW50MzIgKnR5cG1vZCwgT2lkICpjb2xsaWQpOwogZXh0ZXJuIERh dHVtIGdldF9hdHRvcHRpb25zKE9pZCByZWxpZCwgaW50MTYgYXR0bnVtKTsKK2V4dGVybiBj aGFyICpnZXRfcGVyaW9kbmFtZShPaWQgcGVyaW9kaWQsIGJvb2wgbWlzc2luZ19vayk7Citl eHRlcm4gT2lkCWdldF9wZXJpb2Rfb2lkKE9pZCByZWxpZCwgY29uc3QgY2hhciAqcGVyaW9k bmFtZSwgYm9vbCBtaXNzaW5nX29rKTsKIGV4dGVybiBPaWQJZ2V0X2Nhc3Rfb2lkKE9pZCBz b3VyY2V0eXBlaWQsIE9pZCB0YXJnZXR0eXBlaWQsIGJvb2wgbWlzc2luZ19vayk7CiBleHRl cm4gY2hhciAqZ2V0X2NvbGxhdGlvbl9uYW1lKE9pZCBjb2xsb2lkKTsKIGV4dGVybiBib29s IGdldF9jb2xsYXRpb25faXNkZXRlcm1pbmlzdGljKE9pZCBjb2xsb2lkKTsKQEAgLTE5Nyw2 ICsxOTksNyBAQCBleHRlcm4gT2lkCWdldF9yYW5nZV9zdWJ0eXBlKE9pZCByYW5nZU9pZCk7 CiBleHRlcm4gT2lkCWdldF9yYW5nZV9jb2xsYXRpb24oT2lkIHJhbmdlT2lkKTsKIGV4dGVy biBPaWQJZ2V0X3JhbmdlX211bHRpcmFuZ2UoT2lkIHJhbmdlT2lkKTsKIGV4dGVybiBPaWQJ Z2V0X211bHRpcmFuZ2VfcmFuZ2UoT2lkIG11bHRpcmFuZ2VPaWQpOworZXh0ZXJuIE9pZAln ZXRfc3VidHlwZV9yYW5nZShPaWQgc3VidHlwZU9pZCk7CiBleHRlcm4gT2lkCWdldF9pbmRl eF9jb2x1bW5fb3BjbGFzcyhPaWQgaW5kZXhfb2lkLCBpbnQgYXR0bm8pOwogZXh0ZXJuIGJv b2wgZ2V0X2luZGV4X2lzcmVwbGlkZW50KE9pZCBpbmRleF9vaWQpOwogZXh0ZXJuIGJvb2wg Z2V0X2luZGV4X2lzdmFsaWQoT2lkIGluZGV4X29pZCk7CmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS91dGlscy9zeXNjYWNoZS5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvc3lzY2FjaGUuaApp bmRleCA1ZDQ3YTY1MmNjLi5kYzg2NDZmNWYxIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91 dGlscy9zeXNjYWNoZS5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL3N5c2NhY2hlLmgKQEAg LTc1LDYgKzc1LDggQEAgZW51bSBTeXNDYWNoZUlkZW50aWZpZXIKIAlQQVJBTUVURVJBQ0xO QU1FLAogCVBBUkFNRVRFUkFDTE9JRCwKIAlQQVJUUkVMSUQsCisJUEVSSU9ETkFNRSwKKwlQ RVJJT0RPSUQsCiAJUFJPQ05BTUVBUkdTTlNQLAogCVBST0NPSUQsCiAJUFVCTElDQVRJT05O QU1FLApAQCAtODQsNiArODYsNyBAQCBlbnVtIFN5c0NhY2hlSWRlbnRpZmllcgogCVBVQkxJ Q0FUSU9OUkVMLAogCVBVQkxJQ0FUSU9OUkVMTUFQLAogCVJBTkdFTVVMVElSQU5HRSwKKwlS QU5HRVNVQlRZUEUsCiAJUkFOR0VUWVBFLAogCVJFTE5BTUVOU1AsCiAJUkVMT0lELApkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2RkbF9kZXBhcnNlL3Rlc3RfZGRsX2Rl cGFyc2UuYyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9kZGxfZGVwYXJzZS90ZXN0X2RkbF9k ZXBhcnNlLmMKaW5kZXggMDMwMmY3OWJiNy4uMDVmOTc4MGVjZiAxMDA2NDQKLS0tIGEvc3Jj L3Rlc3QvbW9kdWxlcy90ZXN0X2RkbF9kZXBhcnNlL3Rlc3RfZGRsX2RlcGFyc2UuYworKysg Yi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZGRsX2RlcGFyc2UvdGVzdF9kZGxfZGVwYXJzZS5j CkBAIC0xODAsNiArMTgwLDEyIEBAIGdldF9hbHRlcnRhYmxlX3N1YmNtZGluZm8oUEdfRlVO Q1RJT05fQVJHUykKIAkJCWNhc2UgQVRfRHJvcENvbnN0cmFpbnQ6CiAJCQkJc3RydHlwZSA9 ICJEUk9QIENPTlNUUkFJTlQiOwogCQkJCWJyZWFrOworCQkJY2FzZSBBVF9BZGRQZXJpb2Q6 CisJCQkJc3RydHlwZSA9ICJBREQgUEVSSU9EIjsKKwkJCQlicmVhazsKKwkJCWNhc2UgQVRf RHJvcFBlcmlvZDoKKwkJCQlzdHJ0eXBlID0gIkRST1AgUEVSSU9EIjsKKwkJCQlicmVhazsK IAkJCWNhc2UgQVRfUmVBZGRDb21tZW50OgogCQkJCXN0cnR5cGUgPSAiKHJlKSBBREQgQ09N TUVOVCI7CiAJCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3BlcmlvZHMub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wZXJpb2RzLm91 dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi42NDgxYzliMzA1Ci0t LSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wZXJpb2RzLm91 dApAQCAtMCwwICsxLDE3NyBAQAorLyogU3lzdGVtIHBlcmlvZHMgYXJlIG5vdCBpbXBsZW1l bnRlZCAqLworY3JlYXRlIHRhYmxlIHB0IChpZCBpbnRlZ2VyLCBkcyBkYXRlLCBkZSBkYXRl LCBwZXJpb2QgZm9yIHN5c3RlbV90aW1lIChkcywgZGUpKTsKK0VSUk9SOiAgUEVSSU9EIEZP UiBTWVNURU1fVElNRSBpcyBub3Qgc3VwcG9ydGVkCitMSU5FIDI6IGNyZWF0ZSB0YWJsZSBw dCAoaWQgaW50ZWdlciwgZHMgZGF0ZSwgZGUgZGF0ZSwgcGVyaW9kIGZvciBzeS4uLgorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4K Ky8qIFBlcmlvZHMgbXVzdCBzcGVjaWZ5IGFjdHVhbCBjb2x1bW5zICovCitjcmVhdGUgdGFi bGUgcHQgKGlkIGludGVnZXIsIGRzIGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBmb3IgcCAoYm9n dXMsIGRlKSk7CitFUlJPUjogIGNvbHVtbiAiYm9ndXMiIG9mIHJlbGF0aW9uICJwdCIgZG9l cyBub3QgZXhpc3QKK2NyZWF0ZSB0YWJsZSBwdCAoaWQgaW50ZWdlciwgZHMgZGF0ZSwgZGUg ZGF0ZSwgcGVyaW9kIGZvciBwIChkcywgYm9ndXMpKTsKK0VSUk9SOiAgY29sdW1uICJib2d1 cyIgb2YgcmVsYXRpb24gInB0IiBkb2VzIG5vdCBleGlzdAorLyogRGF0YSB0eXBlcyBtdXN0 IG1hdGNoIGV4YWN0bHkgKi8KK2NyZWF0ZSB0YWJsZSBwdCAoaWQgaW50ZWdlciwgZHMgZGF0 ZSwgZGUgdGltZXN0YW1wLCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkpOworRVJST1I6ICBzdGFy dCBhbmQgZW5kIGNvbHVtbnMgb2YgcGVyaW9kIG11c3QgYmUgb2Ygc2FtZSB0eXBlCitjcmVh dGUgdGFibGUgcHQgKGlkIGludGVnZXIsIGRzIHRleHQgY29sbGF0ZSAiQyIsIGRlIHRleHQg Y29sbGF0ZSAiUE9TSVgiLCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkpOworRVJST1I6ICBzdGFy dCBhbmQgZW5kIGNvbHVtbnMgb2YgcGVyaW9kIG11c3QgaGF2ZSBzYW1lIGNvbGxhdGlvbgor LyogUGVyaW9kcyBtdXN0IGhhdmUgYSBkZWZhdWx0IEJUcmVlIG9wZXJhdG9yIGNsYXNzICov CitjcmVhdGUgdGFibGUgcHQgKGlkIGludGVnZXIsIGRzIHhtbCwgZGUgeG1sLCBwZXJpb2Qg Zm9yIHAgKGRzLCBkZSkpOworRVJST1I6ICBubyByYW5nZSB0eXBlIGZvciB4bWwgZm91bmQg Zm9yIHBlcmlvZCBwCitISU5UOiAgWW91IGNhbiBkZWZpbmUgYSBjdXN0b20gcmFuZ2UgdHlw ZSB3aXRoIENSRUFURSBUWVBFCisvKiBQZXJpb2QgYW5kIGNvbHVtbiBuYW1lcyBhcmUgaW4g dGhlIHNhbWUgbmFtZXNwYWNlICovCitjcmVhdGUgdGFibGUgcHQgKGlkIGludGVnZXIsIGRz IGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBmb3IgY3RpZCAoZHMsIGRlKSk7CitFUlJPUjogIHBl cmlvZCBuYW1lICJjdGlkIiBjb25mbGljdHMgd2l0aCBhIHN5c3RlbSBjb2x1bW4gbmFtZQor Y3JlYXRlIHRhYmxlIHB0IChpZCBpbnRlZ2VyLCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJpb2Qg Zm9yIGlkIChkcywgZGUpKTsKK0VSUk9SOiAgcGVyaW9kIG5hbWUgImlkIiBjb25mbGljdHMg d2l0aCBhIGNvbHVtbiBuYW1lCisvKiBQZXJpb2QgbmFtZSBjYW4ndCBiZSBnaXZlbiBtb3Jl IHRoYW4gb25jZSAqLworY3JlYXRlIHRhYmxlIHB0IChpZCBpbnRlZ2VyLCBkcyBkYXRlLCBk ZSBkYXRlLCBwZXJpb2QgZm9yIHAgKGRzLCBkZSksIHBlcmlvZCBmb3IgcCAoZHMsIGRlKSk7 CitFUlJPUjogIHBlcmlvZCBuYW1lICJwIiBzcGVjaWZpZWQgbW9yZSB0aGFuIG9uY2UKKy8q IE5vdyBtYWtlIG9uZSB0aGF0IHdvcmtzICovCitjcmVhdGUgdGFibGUgcHQgKGlkIGludGVn ZXIsIGRzIGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBmb3IgcCAoZHMsIGRlKSk7CisvKiBTRUxF Q1QgKiBleGNsdWRlcyB0aGUgUEVSSU9EICovCitpbnNlcnQgaW50byBwdCB2YWx1ZXMgKDEs ICcyMDAwLTAxLTAxJywgJzIwMDEtMDEtMDEnKTsKK3NlbGVjdCAqIGZyb20gcHQ7CisgaWQg fCAgICAgZHMgICAgIHwgICAgIGRlICAgICAKKy0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLQorICAxIHwgMDEtMDEtMjAwMCB8IDAxLTAxLTIwMDEKKygxIHJvdykKKworLyogWW91 IGNhbiBnZXQgaXQgaWYgeW91IHdhbnQgKi8KK3NlbGVjdCAqLCBwIGZyb20gcHQ7CisgaWQg fCAgICAgZHMgICAgIHwgICAgIGRlICAgICB8ICAgICAgICAgICAgcCAgICAgICAgICAgIAor LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAgMSB8IDAxLTAxLTIwMDAgfCAwMS0wMS0yMDAxIHwgWzAxLTAxLTIwMDAsMDEtMDEt MjAwMSkKKygxIHJvdykKKworLyogVHdvIGFyZSBva2F5ICovCitjcmVhdGUgdGFibGUgcHQy IChpZCBpbnRlZ2VyLCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJpb2QgZm9yIHAxIChkcywgZGUp LCBwZXJpb2QgZm9yIHAyIChkcywgZGUpKTsKK2Ryb3AgdGFibGUgcHQyOworLyoKKyAqIEFM VEVSIFRBQkxFIHRlc3RzCisgKi8KK2FsdGVyIHRhYmxlIHB0IGRyb3AgcGVyaW9kIGZvciBw OworYWx0ZXIgdGFibGUgcHQgYWRkIHBlcmlvZCBmb3Igc3lzdGVtX3RpbWUgKGRzLCBkZSk7 CitFUlJPUjogIFBFUklPRCBGT1IgU1lTVEVNX1RJTUUgaXMgbm90IHN1cHBvcnRlZAorYWx0 ZXIgdGFibGUgcHQgYWRkIHBlcmlvZCBmb3IgcCAoZHMsIGRlKTsKKy8qIEFkZGluZyBhIHNl Y29uZCBvbmUgKi8KK2NyZWF0ZSB0YWJsZSBwdDIgKGlkIGludGVnZXIsIGRzIGRhdGUsIGRl IGRhdGUsIHBlcmlvZCBmb3IgcDEgKGRzLCBkZSkpOworYWx0ZXIgdGFibGUgcHQyIGFkZCBw ZXJpb2QgZm9yIHAyIChkcywgZGUpOworZHJvcCB0YWJsZSBwdDI7CisvKiBDYW4ndCBkcm9w IGl0cyBjb2x1bW5zICovCithbHRlciB0YWJsZSBwdCBkcm9wIGNvbHVtbiBkczsKK0VSUk9S OiAgY2Fubm90IGRyb3AgY29sdW1uIGRzIG9mIHRhYmxlIHB0IGJlY2F1c2Ugb3RoZXIgb2Jq ZWN0cyBkZXBlbmQgb24gaXQKK0RFVEFJTDogIHBlcmlvZCBwIG9uIHRhYmxlIHB0IGRlcGVu ZHMgb24gY29sdW1uIGRzIG9mIHRhYmxlIHB0CitISU5UOiAgVXNlIERST1AgLi4uIENBU0NB REUgdG8gZHJvcCB0aGUgZGVwZW5kZW50IG9iamVjdHMgdG9vLgorYWx0ZXIgdGFibGUgcHQg ZHJvcCBjb2x1bW4gZGU7CitFUlJPUjogIGNhbm5vdCBkcm9wIGNvbHVtbiBkZSBvZiB0YWJs ZSBwdCBiZWNhdXNlIG90aGVyIG9iamVjdHMgZGVwZW5kIG9uIGl0CitERVRBSUw6ICBwZXJp b2QgcCBvbiB0YWJsZSBwdCBkZXBlbmRzIG9uIGNvbHVtbiBkZSBvZiB0YWJsZSBwdAorSElO VDogIFVzZSBEUk9QIC4uLiBDQVNDQURFIHRvIGRyb3AgdGhlIGRlcGVuZGVudCBvYmplY3Rz IHRvby4KKy8qIENhbid0IGNoYW5nZSB0aGUgZGF0YSB0eXBlcyAqLworYWx0ZXIgdGFibGUg cHQgYWx0ZXIgY29sdW1uIGRzIHR5cGUgdGltZXN0YW1wOworRVJST1I6ICBjYW5ub3QgYWx0 ZXIgdHlwZSBvZiBhIGNvbHVtbiB1c2VkIGJ5IGEgcGVyaW9kCitERVRBSUw6ICBwZXJpb2Qg cCBvbiB0YWJsZSBwdCBkZXBlbmRzIG9uIGNvbHVtbiAiZHMiCithbHRlciB0YWJsZSBwdCBh bHRlciBjb2x1bW4gZHMgdHlwZSB0aW1lc3RhbXA7CitFUlJPUjogIGNhbm5vdCBhbHRlciB0 eXBlIG9mIGEgY29sdW1uIHVzZWQgYnkgYSBwZXJpb2QKK0RFVEFJTDogIHBlcmlvZCBwIG9u IHRhYmxlIHB0IGRlcGVuZHMgb24gY29sdW1uICJkcyIKKy8qIGNvbHVtbi9wZXJpb2QgbmFt ZXNwYWNlIGNvbmZsaWN0cyAqLworYWx0ZXIgdGFibGUgcHQgYWRkIGNvbHVtbiBwIGludGVn ZXI7CitFUlJPUjogIGNvbHVtbiBuYW1lICJwIiBjb25mbGljdHMgd2l0aCBhIHBlcmlvZCBu YW1lCithbHRlciB0YWJsZSBwdCByZW5hbWUgY29sdW1uIGlkIHRvIHA7CitFUlJPUjogIGNv bHVtbiBuYW1lICJwIiBjb25mbGljdHMgd2l0aCBhIHBlcmlvZCBuYW1lCithbHRlciB0YWJs ZSBwdCBhZGQgcGVyaW9kIGZvciB0YWJsZW9pZCAoZHMsIGRlKTsKK0VSUk9SOiAgcGVyaW9k IG5hbWUgInRhYmxlb2lkIiBjb25mbGljdHMgd2l0aCBhIHN5c3RlbSBjb2x1bW4gbmFtZQor YWx0ZXIgdGFibGUgcHQgYWRkIHBlcmlvZCBmb3IgIi4uLi4uLi4ucGcuZHJvcHBlZC40Li4u Li4uLi4iIChkcywgZGUpOworRVJST1I6ICBwZXJpb2QgbmFtZSAiLi4uLi4uLi5wZy5kcm9w cGVkLjQuLi4uLi4uLiIgY29uZmxpY3RzIHdpdGggYSBjb2x1bW4gbmFtZQorLyogYWRkaW5n IGNvbHVtbnMgYW5kIHRoZSBwZXJpb2QgYXQgdGhlIHNhbWUgdGltZSAqLworY3JlYXRlIHRh YmxlIHB0MiAoaWQgaW50ZWdlcik7CithbHRlciB0YWJsZSBwdDIgYWRkIGNvbHVtbiBkcyBk YXRlLCBhZGQgY29sdW1uIGRlIGRhdGUsIGFkZCBwZXJpb2QgZm9yIHAgKGRzLCBkZSk7Citk cm9wIHRhYmxlIHB0MjsKKy8qIEFtYmlndW91cyByYW5nZSB0eXBlcyByYWlzZSBhbiBlcnJv ciAqLworY3JlYXRlIHR5cGUgbXlkYXRlcmFuZ2UgYXMgcmFuZ2Uoc3VidHlwZT1kYXRlKTsK K2NyZWF0ZSB0YWJsZSBwdDIgKGlkIGludCwgZHMgZGF0ZSwgZGUgZGF0ZSwgcGVyaW9kIGZv ciBwIChkcywgZGUpKTsKK0VSUk9SOiAgYW1iaWd1b3VzIHJhbmdlIGZvciB0eXBlIGRhdGUK Ky8qIFlvdSBjYW4gZ2l2ZSBhbiBleHBsaWNpdCByYW5nZSB0eXBlICovCitjcmVhdGUgdGFi bGUgcHQyIChpZCBpbnQsIGRzIGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBmb3IgcCAoZHMsIGRl KSB3aXRoIChyYW5nZXR5cGUgPSAnbXlkYXRlcmFuZ2UnKSk7Citkcm9wIHR5cGUgbXlkYXRl cmFuZ2U7CitFUlJPUjogIGNhbm5vdCBkcm9wIHR5cGUgbXlkYXRlcmFuZ2UgYmVjYXVzZSBv dGhlciBvYmplY3RzIGRlcGVuZCBvbiBpdAorREVUQUlMOiAgcGVyaW9kIHAgb24gdGFibGUg cHQyIGRlcGVuZHMgb24gdHlwZSBteWRhdGVyYW5nZQorSElOVDogIFVzZSBEUk9QIC4uLiBD QVNDQURFIHRvIGRyb3AgdGhlIGRlcGVuZGVudCBvYmplY3RzIHRvby4KK2Ryb3AgdHlwZSBt eWRhdGVyYW5nZSBjYXNjYWRlOworTk9USUNFOiAgZHJvcCBjYXNjYWRlcyB0byBwZXJpb2Qg cCBvbiB0YWJsZSBwdDIKK2Ryb3AgdGFibGUgcHQyOworY3JlYXRlIHRhYmxlIHB0MiAoaWQg aW50LCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkgd2l0aCAocmFu Z2V0eXBlID0gJ2RhdGVyYW5nZScpKTsKKy8qIFJhbmdlIHR5cGUgaXMgbm90IGZvdW5kICov CitjcmVhdGUgdGFibGUgcHQzIChpZCBpbnQsIGRzIGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBm b3IgcCAoZHMsIGRlKSB3aXRoIChyYW5nZXR5cGUgPSAnbm90YXJhbmdlJykpOworRVJST1I6 ICBSYW5nZSB0eXBlIG5vdGFyYW5nZSBub3QgZm91bmQKKy8qIFJhbmdlIHR5cGUgaXMgdGhl IHdyb25nIHR5cGUgKi8KK2NyZWF0ZSB0YWJsZSBwdDMgKGlkIGludCwgZHMgZGF0ZSwgZGUg ZGF0ZSwgcGVyaW9kIGZvciBwIChkcywgZGUpIHdpdGggKHJhbmdldHlwZSA9ICd0c3R6cmFu Z2UnKSk7CitFUlJPUjogIFJhbmdlIHR5cGUgdHN0enJhbmdlIGRvZXMgbm90IG1hdGNoIGNv bHVtbiB0eXBlIGRhdGUKK2Ryb3AgdGFibGUgcHQyOworLyogQ1JFQVRFIFRBQkxFIChMSUtF IC4uLikgKi8KKy8qIFBlcmlvZHMgYXJlIG5vdCBjb3BpZWQgYnkgTElLRSwgc28gdGhlaXIg Y29sdW1ucyBhcmVuJ3QgZWl0aGVyICovCitjcmVhdGUgdGFibGUgcHQyIChsaWtlIHB0KTsK K1xkIHB0MgorICAgICAgICAgICAgICAgIFRhYmxlICJwdWJsaWMucHQyIgorIENvbHVtbiB8 ICBUeXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1bHQgCistLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0KKyBpZCAgICAgfCBp bnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKKyBkcyAgICAgfCBkYXRlICAgIHwg ICAgICAgICAgIHwgICAgICAgICAgfCAKKyBkZSAgICAgfCBkYXRlICAgIHwgICAgICAgICAg IHwgICAgICAgICAgfCAKKworZHJvcCB0YWJsZSBwdDI7CisvKiBDYW4gYWRkIGEgcGVyaW9k IHJlZmVycmluZyB0byBMSUtFJ2QgY29sdW1ucyAqLworY3JlYXRlIHRhYmxlIG5vdF9wIChp ZCBpbnRlZ2VyLCBkcyBkYXRlLCBkZSBkYXRlKTsKK2NyZWF0ZSB0YWJsZSBwdDIgKGxpa2Ug bm90X3AsIHBlcmlvZCBmb3IgcCAoZHMsIGRlKSk7CitcZCBwdDIKKyAgICAgICAgICAgICAg ICBUYWJsZSAicHVibGljLnB0MiIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwg TnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0rLS0tLS0tLS0tCisgaWQgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAg ICAgICAgIHwgCisgZHMgICAgIHwgZGF0ZSAgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwg CisgZGUgICAgIHwgZGF0ZSAgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCitQZXJpb2Rz OgorICAgIHAgKGRzLCBkZSkKK0NoZWNrIGNvbnN0cmFpbnRzOgorICAgICJwdDJfcF9jaGVj ayIgQ0hFQ0sgKGRzIDwgZGUpCisKK2Ryb3AgdGFibGUgcHQyOworLyogQ2FuIGFkZCBhIHBl cmlvZCB3aXRoIHRoZSBzYW1lIG5hbWUgKi8KK2NyZWF0ZSB0YWJsZSBwdDIgKGxpa2UgcHQs IHBlcmlvZCBmb3IgcCAoZHMsIGRlKSk7CitcZCBwdDIKKyAgICAgICAgICAgICAgICBUYWJs ZSAicHVibGljLnB0MiIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFi bGUgfCBEZWZhdWx0IAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0rLS0tLS0tLS0tCisgaWQgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAg IHwgCisgZHMgICAgIHwgZGF0ZSAgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCisgZGUg ICAgIHwgZGF0ZSAgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCitQZXJpb2RzOgorICAg IHAgKGRzLCBkZSkKK0NoZWNrIGNvbnN0cmFpbnRzOgorICAgICJwdDJfcF9jaGVjayIgQ0hF Q0sgKGRzIDwgZGUpCisKK2Ryb3AgdGFibGUgcHQyOworLyogQ2FuIGFkZCBhIHBlcmlvZCB3 aXRoIGEgZGlmZmVyZW50IG5hbWUgKi8KK2NyZWF0ZSB0YWJsZSBwdDIgKGxpa2UgcHQsIHBl cmlvZCBmb3IgcDIgKGRzLCBkZSkpOworXGQgcHQyCisgICAgICAgICAgICAgICAgVGFibGUg InB1YmxpYy5wdDIiCisgQ29sdW1uIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxl IHwgRGVmYXVsdCAKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t Ky0tLS0tLS0tLQorIGlkICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8 IAorIGRzICAgICB8IGRhdGUgICAgfCAgICAgICAgICAgfCAgICAgICAgICB8IAorIGRlICAg ICB8IGRhdGUgICAgfCAgICAgICAgICAgfCAgICAgICAgICB8IAorUGVyaW9kczoKKyAgICBw MiAoZHMsIGRlKQorQ2hlY2sgY29uc3RyYWludHM6CisgICAgInB0Ml9wMl9jaGVjayIgQ0hF Q0sgKGRzIDwgZGUpCisKK2Ryb3AgdGFibGUgcHQyOworLyogQ2FuJ3QgYWRkIGEgcGVyaW9k IHdob3NlIG5hbWUgY29uZmxpY3RzIHdpdGggYSBMSUtFJ2QgY29sdW1uICovCitjcmVhdGUg dGFibGUgcHQyIChsaWtlIHB0LCBwZXJpb2QgZm9yIGlkIChkcywgZGUpKTsKK0VSUk9SOiAg cGVyaW9kIG5hbWUgImlkIiBjb25mbGljdHMgd2l0aCBhIGNvbHVtbiBuYW1lCisvKiBDUkVB VEUgVEFMQkUgSU5IRVJJVFMgKi8KKy8qIENhbid0IGluaGVyaXQgZnJvbSBhIHRhYmxlIHdp dGggYSBwZXJpb2QgKi8KK2NyZWF0ZSB0YWJsZSBwdDIgKG5hbWUgdGV4dCkgaW5oZXJpdHMg KHB0KTsKK0VSUk9SOiAgSW5oZXJpdGluZyBmcm9tIGEgdGFibGUgd2l0aCBhIFBFUklPRCBp cyBub3Qgc3VwcG9ydGVkCisvKiBDYW4ndCBpbmhlcml0IHdpdGggYSBwZXJpb2QgKi8KK2Ny ZWF0ZSB0YWJsZSBwdDIgKGQycyBkYXRlLCBkMmUgZGF0ZSwgcGVyaW9kIGZvciBwIChkMnMs IGQyZSkpIGluaGVyaXRzIChub3RfcCk7CitFUlJPUjogIEluaGVyaXRpbmcgaXMgbm90IHN1 cHBvcnRlZCB3aGVuIGEgdGFibGUgaGFzIGEgUEVSSU9ECitkcm9wIHRhYmxlIG5vdF9wOwpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZSBiL3NyYy90 ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKaW5kZXggN2I5Yjk5ZTBhMy4uYjFjZDY3 NmQ5NiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQor KysgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCkBAIC00Myw3ICs0Myw3 IEBAIHRlc3Q6IGNvcHkgY29weXNlbGVjdCBjb3B5ZG1sIGluc2VydCBpbnNlcnRfY29uZmxp Y3QKICMgTm90ZTogbWFueSBvZiB0aGUgdGVzdHMgaW4gbGF0ZXIgZ3JvdXBzIGRlcGVuZCBv biBjcmVhdGVfaW5kZXgKICMgLS0tLS0tLS0tLQogdGVzdDogY3JlYXRlX2Z1bmN0aW9uX2Mg Y3JlYXRlX21pc2MgY3JlYXRlX29wZXJhdG9yIGNyZWF0ZV9wcm9jZWR1cmUgY3JlYXRlX3Rh YmxlIGNyZWF0ZV90eXBlIGNyZWF0ZV9zY2hlbWEKLXRlc3Q6IGNyZWF0ZV9pbmRleCBjcmVh dGVfaW5kZXhfc3BnaXN0IGNyZWF0ZV92aWV3IGluZGV4X2luY2x1ZGluZyBpbmRleF9pbmNs dWRpbmdfZ2lzdAordGVzdDogY3JlYXRlX2luZGV4IGNyZWF0ZV9pbmRleF9zcGdpc3QgY3Jl YXRlX3ZpZXcgaW5kZXhfaW5jbHVkaW5nIGluZGV4X2luY2x1ZGluZ19naXN0IHBlcmlvZHMK IAogIyAtLS0tLS0tLS0tCiAjIEFub3RoZXIgZ3JvdXAgb2YgcGFyYWxsZWwgdGVzdHMKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BlcmlvZHMuc3FsIGIvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvcGVyaW9kcy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMC4uZjBiZTg5MDIxNwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jl c3Mvc3FsL3BlcmlvZHMuc3FsCkBAIC0wLDAgKzEsMTE5IEBACisvKiBTeXN0ZW0gcGVyaW9k cyBhcmUgbm90IGltcGxlbWVudGVkICovCitjcmVhdGUgdGFibGUgcHQgKGlkIGludGVnZXIs IGRzIGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBmb3Igc3lzdGVtX3RpbWUgKGRzLCBkZSkpOwor CisvKiBQZXJpb2RzIG11c3Qgc3BlY2lmeSBhY3R1YWwgY29sdW1ucyAqLworY3JlYXRlIHRh YmxlIHB0IChpZCBpbnRlZ2VyLCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJpb2QgZm9yIHAgKGJv Z3VzLCBkZSkpOworY3JlYXRlIHRhYmxlIHB0IChpZCBpbnRlZ2VyLCBkcyBkYXRlLCBkZSBk YXRlLCBwZXJpb2QgZm9yIHAgKGRzLCBib2d1cykpOworCisvKiBEYXRhIHR5cGVzIG11c3Qg bWF0Y2ggZXhhY3RseSAqLworY3JlYXRlIHRhYmxlIHB0IChpZCBpbnRlZ2VyLCBkcyBkYXRl LCBkZSB0aW1lc3RhbXAsIHBlcmlvZCBmb3IgcCAoZHMsIGRlKSk7CitjcmVhdGUgdGFibGUg cHQgKGlkIGludGVnZXIsIGRzIHRleHQgY29sbGF0ZSAiQyIsIGRlIHRleHQgY29sbGF0ZSAi UE9TSVgiLCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkpOworCisvKiBQZXJpb2RzIG11c3QgaGF2 ZSBhIGRlZmF1bHQgQlRyZWUgb3BlcmF0b3IgY2xhc3MgKi8KK2NyZWF0ZSB0YWJsZSBwdCAo aWQgaW50ZWdlciwgZHMgeG1sLCBkZSB4bWwsIHBlcmlvZCBmb3IgcCAoZHMsIGRlKSk7CisK Ky8qIFBlcmlvZCBhbmQgY29sdW1uIG5hbWVzIGFyZSBpbiB0aGUgc2FtZSBuYW1lc3BhY2Ug Ki8KK2NyZWF0ZSB0YWJsZSBwdCAoaWQgaW50ZWdlciwgZHMgZGF0ZSwgZGUgZGF0ZSwgcGVy aW9kIGZvciBjdGlkIChkcywgZGUpKTsKK2NyZWF0ZSB0YWJsZSBwdCAoaWQgaW50ZWdlciwg ZHMgZGF0ZSwgZGUgZGF0ZSwgcGVyaW9kIGZvciBpZCAoZHMsIGRlKSk7CisKKy8qIFBlcmlv ZCBuYW1lIGNhbid0IGJlIGdpdmVuIG1vcmUgdGhhbiBvbmNlICovCitjcmVhdGUgdGFibGUg cHQgKGlkIGludGVnZXIsIGRzIGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBmb3IgcCAoZHMsIGRl KSwgcGVyaW9kIGZvciBwIChkcywgZGUpKTsKKworLyogTm93IG1ha2Ugb25lIHRoYXQgd29y a3MgKi8KK2NyZWF0ZSB0YWJsZSBwdCAoaWQgaW50ZWdlciwgZHMgZGF0ZSwgZGUgZGF0ZSwg cGVyaW9kIGZvciBwIChkcywgZGUpKTsKKworLyogU0VMRUNUICogZXhjbHVkZXMgdGhlIFBF UklPRCAqLworaW5zZXJ0IGludG8gcHQgdmFsdWVzICgxLCAnMjAwMC0wMS0wMScsICcyMDAx LTAxLTAxJyk7CitzZWxlY3QgKiBmcm9tIHB0OworCisvKiBZb3UgY2FuIGdldCBpdCBpZiB5 b3Ugd2FudCAqLworc2VsZWN0ICosIHAgZnJvbSBwdDsKKworLyogVHdvIGFyZSBva2F5ICov CitjcmVhdGUgdGFibGUgcHQyIChpZCBpbnRlZ2VyLCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJp b2QgZm9yIHAxIChkcywgZGUpLCBwZXJpb2QgZm9yIHAyIChkcywgZGUpKTsKK2Ryb3AgdGFi bGUgcHQyOworCisvKgorICogQUxURVIgVEFCTEUgdGVzdHMKKyAqLworYWx0ZXIgdGFibGUg cHQgZHJvcCBwZXJpb2QgZm9yIHA7CithbHRlciB0YWJsZSBwdCBhZGQgcGVyaW9kIGZvciBz eXN0ZW1fdGltZSAoZHMsIGRlKTsKK2FsdGVyIHRhYmxlIHB0IGFkZCBwZXJpb2QgZm9yIHAg KGRzLCBkZSk7CisKKy8qIEFkZGluZyBhIHNlY29uZCBvbmUgKi8KK2NyZWF0ZSB0YWJsZSBw dDIgKGlkIGludGVnZXIsIGRzIGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBmb3IgcDEgKGRzLCBk ZSkpOworYWx0ZXIgdGFibGUgcHQyIGFkZCBwZXJpb2QgZm9yIHAyIChkcywgZGUpOworZHJv cCB0YWJsZSBwdDI7CisKKy8qIENhbid0IGRyb3AgaXRzIGNvbHVtbnMgKi8KK2FsdGVyIHRh YmxlIHB0IGRyb3AgY29sdW1uIGRzOworYWx0ZXIgdGFibGUgcHQgZHJvcCBjb2x1bW4gZGU7 CisKKy8qIENhbid0IGNoYW5nZSB0aGUgZGF0YSB0eXBlcyAqLworYWx0ZXIgdGFibGUgcHQg YWx0ZXIgY29sdW1uIGRzIHR5cGUgdGltZXN0YW1wOworYWx0ZXIgdGFibGUgcHQgYWx0ZXIg Y29sdW1uIGRzIHR5cGUgdGltZXN0YW1wOworCisvKiBjb2x1bW4vcGVyaW9kIG5hbWVzcGFj ZSBjb25mbGljdHMgKi8KK2FsdGVyIHRhYmxlIHB0IGFkZCBjb2x1bW4gcCBpbnRlZ2VyOwor YWx0ZXIgdGFibGUgcHQgcmVuYW1lIGNvbHVtbiBpZCB0byBwOworYWx0ZXIgdGFibGUgcHQg YWRkIHBlcmlvZCBmb3IgdGFibGVvaWQgKGRzLCBkZSk7CithbHRlciB0YWJsZSBwdCBhZGQg cGVyaW9kIGZvciAiLi4uLi4uLi5wZy5kcm9wcGVkLjQuLi4uLi4uLiIgKGRzLCBkZSk7CisK Ky8qIGFkZGluZyBjb2x1bW5zIGFuZCB0aGUgcGVyaW9kIGF0IHRoZSBzYW1lIHRpbWUgKi8K K2NyZWF0ZSB0YWJsZSBwdDIgKGlkIGludGVnZXIpOworYWx0ZXIgdGFibGUgcHQyIGFkZCBj b2x1bW4gZHMgZGF0ZSwgYWRkIGNvbHVtbiBkZSBkYXRlLCBhZGQgcGVyaW9kIGZvciBwIChk cywgZGUpOworZHJvcCB0YWJsZSBwdDI7CisKKy8qIEFtYmlndW91cyByYW5nZSB0eXBlcyBy YWlzZSBhbiBlcnJvciAqLworY3JlYXRlIHR5cGUgbXlkYXRlcmFuZ2UgYXMgcmFuZ2Uoc3Vi dHlwZT1kYXRlKTsKK2NyZWF0ZSB0YWJsZSBwdDIgKGlkIGludCwgZHMgZGF0ZSwgZGUgZGF0 ZSwgcGVyaW9kIGZvciBwIChkcywgZGUpKTsKKworLyogWW91IGNhbiBnaXZlIGFuIGV4cGxp Y2l0IHJhbmdlIHR5cGUgKi8KK2NyZWF0ZSB0YWJsZSBwdDIgKGlkIGludCwgZHMgZGF0ZSwg ZGUgZGF0ZSwgcGVyaW9kIGZvciBwIChkcywgZGUpIHdpdGggKHJhbmdldHlwZSA9ICdteWRh dGVyYW5nZScpKTsKK2Ryb3AgdHlwZSBteWRhdGVyYW5nZTsKK2Ryb3AgdHlwZSBteWRhdGVy YW5nZSBjYXNjYWRlOworZHJvcCB0YWJsZSBwdDI7CitjcmVhdGUgdGFibGUgcHQyIChpZCBp bnQsIGRzIGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBmb3IgcCAoZHMsIGRlKSB3aXRoIChyYW5n ZXR5cGUgPSAnZGF0ZXJhbmdlJykpOworCisvKiBSYW5nZSB0eXBlIGlzIG5vdCBmb3VuZCAq LworY3JlYXRlIHRhYmxlIHB0MyAoaWQgaW50LCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJpb2Qg Zm9yIHAgKGRzLCBkZSkgd2l0aCAocmFuZ2V0eXBlID0gJ25vdGFyYW5nZScpKTsKKworLyog UmFuZ2UgdHlwZSBpcyB0aGUgd3JvbmcgdHlwZSAqLworY3JlYXRlIHRhYmxlIHB0MyAoaWQg aW50LCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkgd2l0aCAocmFu Z2V0eXBlID0gJ3RzdHpyYW5nZScpKTsKK2Ryb3AgdGFibGUgcHQyOworCisvKiBDUkVBVEUg VEFCTEUgKExJS0UgLi4uKSAqLworCisvKiBQZXJpb2RzIGFyZSBub3QgY29waWVkIGJ5IExJ S0UsIHNvIHRoZWlyIGNvbHVtbnMgYXJlbid0IGVpdGhlciAqLworY3JlYXRlIHRhYmxlIHB0 MiAobGlrZSBwdCk7CitcZCBwdDIKK2Ryb3AgdGFibGUgcHQyOworCisvKiBDYW4gYWRkIGEg cGVyaW9kIHJlZmVycmluZyB0byBMSUtFJ2QgY29sdW1ucyAqLworY3JlYXRlIHRhYmxlIG5v dF9wIChpZCBpbnRlZ2VyLCBkcyBkYXRlLCBkZSBkYXRlKTsKK2NyZWF0ZSB0YWJsZSBwdDIg KGxpa2Ugbm90X3AsIHBlcmlvZCBmb3IgcCAoZHMsIGRlKSk7CitcZCBwdDIKK2Ryb3AgdGFi bGUgcHQyOworCisvKiBDYW4gYWRkIGEgcGVyaW9kIHdpdGggdGhlIHNhbWUgbmFtZSAqLwor Y3JlYXRlIHRhYmxlIHB0MiAobGlrZSBwdCwgcGVyaW9kIGZvciBwIChkcywgZGUpKTsKK1xk IHB0MgorZHJvcCB0YWJsZSBwdDI7CisKKy8qIENhbiBhZGQgYSBwZXJpb2Qgd2l0aCBhIGRp ZmZlcmVudCBuYW1lICovCitjcmVhdGUgdGFibGUgcHQyIChsaWtlIHB0LCBwZXJpb2QgZm9y IHAyIChkcywgZGUpKTsKK1xkIHB0MgorZHJvcCB0YWJsZSBwdDI7CisKKy8qIENhbid0IGFk ZCBhIHBlcmlvZCB3aG9zZSBuYW1lIGNvbmZsaWN0cyB3aXRoIGEgTElLRSdkIGNvbHVtbiAq LworY3JlYXRlIHRhYmxlIHB0MiAobGlrZSBwdCwgcGVyaW9kIGZvciBpZCAoZHMsIGRlKSk7 CisKKy8qIENSRUFURSBUQUxCRSBJTkhFUklUUyAqLworCisvKiBDYW4ndCBpbmhlcml0IGZy b20gYSB0YWJsZSB3aXRoIGEgcGVyaW9kICovCitjcmVhdGUgdGFibGUgcHQyIChuYW1lIHRl eHQpIGluaGVyaXRzIChwdCk7CisKKy8qIENhbid0IGluaGVyaXQgd2l0aCBhIHBlcmlvZCAq LworY3JlYXRlIHRhYmxlIHB0MiAoZDJzIGRhdGUsIGQyZSBkYXRlLCBwZXJpb2QgZm9yIHAg KGQycywgZDJlKSkgaW5oZXJpdHMgKG5vdF9wKTsKKworZHJvcCB0YWJsZSBub3RfcDsKLS0g CjIuNDIuMAoK --------------ZGWE1dX84ltsryTlZEe40gG3--