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 1rfnmO-002Mn5-Je for pgsql-hackers@arkaria.postgresql.org; Thu, 29 Feb 2024 21:17:26 +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 1rfnmM-008fMW-3E for pgsql-hackers@arkaria.postgresql.org; Thu, 29 Feb 2024 21:17:22 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rfnmK-008fME-Am for pgsql-hackers@lists.postgresql.org; Thu, 29 Feb 2024 21:17:21 +0000 Received: from mail-pl1-x62c.google.com ([2607:f8b0:4864:20::62c]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1rfnm2-002DUC-K2 for pgsql-hackers@lists.postgresql.org; Thu, 29 Feb 2024 21:17:19 +0000 Received: by mail-pl1-x62c.google.com with SMTP id d9443c01a7336-1dcab44747bso12991255ad.1 for ; Thu, 29 Feb 2024 13:17:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=illuminatedcomputing-com.20230601.gappssmtp.com; s=20230601; t=1709241422; x=1709846222; 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=9sp+Hb+5FxX58ZE/G3uqAlIePBsqSRW0I+Vpxwhele0=; b=Q4d3uZUJ7OZH8PzePzEMvtiu/7P7oZOQeV1lFpW/smz842iG/BEQ0pEPv/9UoAeyFq lelTO2+Z2dy++2Rg4EaN4UelW0/SUh8xrWzvxo7KZ13AwbMpW3f/XPuFUKDXvFCUOBUZ x5unRpaZ8R5bEEkAl24KggXUwkX7dP0+1j0NODyi7wKgjZFgbNuPy6VR/6wIcNjUsZDm B0q2Ir+IZlgUnsVmA+moM6R4WWF8DMyi8S1mt1D1T1yZzNUPKZdAaqfGrX+V8clOlP61 leuE4CVxPJ5zEO8mIMzgDYMnEubY8iN3egME+iPxs9yDwWIJ1V7EAVEjls091QkuehnQ hJDA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1709241422; x=1709846222; 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=9sp+Hb+5FxX58ZE/G3uqAlIePBsqSRW0I+Vpxwhele0=; b=WWlW22wTPrALH+Dtp2WarJj+kLQwORoFswoNhvkyl+5pzC2+37o/eD2+u2qu1EXZ2S t6OVPRjuFYa0F3EftrKKv0VmoLMrxTVC1aun3Q9gierXf1cGq6B7OXc6PgBFrjS/J/uB eTXvQ3BQNuLBbIhvsF9xeCOMPvQ8nIHUx8zpaPuiXlgdg3jcCBs9MHC5e4zLpcWpKaRe 0aIMNK7YY+SwYS4560mHUir261D3DTdmyoN8qPfaUbNM/GY1/Ru3QTPTrUe26a24DOR0 lXPxyxbj3+QU3v2MnLL2Z+n9Ha0csivi8kGm1fALglqwXGyMdNZOEMs9rq4f+ANPnwxR Ivdw== X-Gm-Message-State: AOJu0Yx4IGcplF9bfFmMQAqIBVlWnYjMsp4QNn9nMlnAx/8ohHNgWusj rzRms3vw2r6gI9Zsi19SqrU4N3ByNTOQZXoddGWm08FqcVvFa53K9rMNkMPl6IE= X-Google-Smtp-Source: AGHT+IGmy814e8sPDudUSCC1oeXmz0yRYeIl9Uc/lH/lMfwyLWetwG7OT1u+v4e4nHE20Oc0ao1alg== X-Received: by 2002:a17:903:124b:b0:1dc:adad:f54b with SMTP id u11-20020a170903124b00b001dcadadf54bmr4002631plh.44.1709241421328; Thu, 29 Feb 2024 13:17:01 -0800 (PST) Received: from ?IPV6:2600:100f:b118:b0e0:7a0b:28c0:8db9:4870? ([2600:100f:b118:b0e0:7a0b:28c0:8db9:4870]) by smtp.googlemail.com with ESMTPSA id e7-20020a17090301c700b001db9e12cd62sm1970509plh.10.2024.02.29.13.16.57 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 29 Feb 2024 13:16:59 -0800 (PST) Content-Type: multipart/mixed; boundary="------------XirkSnpA0J2rgDaW8dSEFd2s" Message-ID: Date: Thu, 29 Feb 2024 13:16:56 -0800 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: SQL:2011 application time Content-Language: en-US To: Peter Eisentraut , jian he Cc: PostgreSQL Hackers References: <2d9740ad-3bb7-473c-8441-344351caa8ee@illuminatedcomputing.com> <596fefdd-6202-4228-b7c6-f240b1cbe06e@eisentraut.org> <35400587-6865-4a2c-9ea4-4761669478ea@eisentraut.org> <71b45adb-b496-4e58-b134-0a091014e63f@illuminatedcomputing.com> <7be8724a-5c25-46d7-8325-1bd8be6fa523@eisentraut.org> <0af6a323-f026-4cd9-adf1-941038cd00de@illuminatedcomputing.com> <88518c81-dcdc-4c5b-9200-146b74a520ab@eisentraut.org> <113f5e25-4455-4bdb-98ec-56275705cc4e@illuminatedcomputing.com> <7bd1c8f9-a91a-41a3-990e-0f796ba692ec@eisentraut.org> From: Paul Jungwirth In-Reply-To: <7bd1c8f9-a91a-41a3-990e-0f796ba692ec@eisentraut.org> 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. --------------XirkSnpA0J2rgDaW8dSEFd2s Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Hello, Here is another patch series for application time. It addresses the feedback from the last few emails. Details below: On 1/28/24 16:00, jian he wrote: > + > + In a temporal foreign key, the delete/update will use > + FOR PORTION OF semantics to constrain the > + effect to the bounds being deleted/updated in the referenced row. > + > > in v24-0003-Add-temporal-FOREIGN-KEYs.patch > FOR PORTION OF not yet implemented, so we should > not mention it. Fixed. > + > + If the last column is marked with PERIOD, > + it must be a period or range column, and the referenced table > + must have a temporal primary key. > can we change "it must be a period or range column" to "it must be a > range column", maybe we can add it on another patch. Rewrote this section to be clearer. On 2/1/24 21:53, jian he wrote: > I've attached a new patch that further simplified the tests. (scope > v24 patch's 0002 and 0003) > Please ignore previous email attachments. Thanks, I've pulled in most of these changes to the tests. > I've only applied the v24, 0002, 0003. > seems in doc/src/sgml/ref/create_table.sgml > lack the explanation of ` class="parameter">temporal_interval` You're right. Actually I think it is clearer without adding a separate name here, so I've updated the docs to use `column_name | period_name`. > since foreign key ON {UPDATE | DELETE} {CASCADE,SET NULL,SET DEFAULT} > not yet supported, > v24-0003 create_table.sgml should reflect that. Updated. > within the function ATAddForeignKeyConstraint, you called > FindFKPeriodOpersAndProcs, > but never used the computed outputs: periodoperoid, periodprocoid, opclasses. > We validate these(periodoperoid, periodprocoid) at > lookupTRIOperAndProc, FindFKPeriodOpersAndProcs. > I'm not sure whether FindFKPeriodOpersAndProcs in > ATAddForeignKeyConstraint is necessary. This is explained in the comment above: we will do the same lookup when the foreign key is checked, but we should make sure it works now so we can report the problem to the user. > + * Check if all key values in OLD and NEW are "equivalent": > + * For normal FKs we check for equality. > + * For temporal FKs we check that the PK side is a superset of its old value, > + * or the FK side is a subset. > "or the FK side is a subset." is misleading, should it be something > like "or the FK side is a subset of X"? Okay, changed. > + if (indexStruct->indisexclusion) return i - 1; > + else return i; > > I believe our style should be (with proper indent) > if (indexStruct->indisexclusion) > return i - 1; > else > return i; Fixed. > in transformFkeyCheckAttrs > + if (found && is_temporal) > + { > + found = false; > + for (j = 0; j < numattrs + 1; j++) > + { > + if (periodattnum == indexStruct->indkey.values[j]) > + { > + opclasses[numattrs] = indclass->values[j]; > + found = true; > + break; > + } > + } > + } > > can be simplified: > { > found = false; > if (periodattnum == indexStruct->indkey.values[numattrs]) > { > opclasses[numattrs] = indclass->values[numattrs]; > found = true; > } > } Changed. > Also wondering, at the end of the function transformFkeyCheckAttrs `if > (!found)` part: > do we need another error message handle is_temporal is true? I think the existing error message works well for both temporal and non-temporal cases. > @@ -212,8 +213,11 @@ typedef struct NewConstraint > ConstrType contype; /* CHECK or FOREIGN */ > Oid refrelid; /* PK rel, if FOREIGN */ > Oid refindid; /* OID of PK's index, if FOREIGN */ > + bool conwithperiod; /* Whether the new FOREIGN KEY uses PERIOD */ > Oid conid; /* OID of pg_constraint entry, if FOREIGN */ > Node *qual; /* Check expr or CONSTR_FOREIGN Constraint */ > + Oid *operoids; /* oper oids for FOREIGN KEY with PERIOD */ > + Oid *procoids; /* proc oids for FOREIGN KEY with PERIOD */ > ExprState *qualstate; /* Execution state for CHECK expr */ > } NewConstraint; > primary key can only one WITHOUT OVERLAPS, > so *operoids and *procoids > can be replaced with just > `operoids, procoids`. > Also these two elements in struct NewConstraint not used in v24, 0002, 0003. I've removed these entirely. Sorry, they were leftover from an earlier revision. On 2/12/24 01:55, Peter Eisentraut wrote: > (Also, the last (0007) patch has some compiler warnings and also > causes the pg_upgrade test to fail. I didn't check this further, but > that's why the cfbot is all red.) Fixed the pg_upgrade problem. I'm not seeing compiler warnings. If they still exist can you point me to those? > As a general comment, we need to figure out the right terminology > "period" vs. "temporal", especially if we are going to commit these > features incrementally. But I didn't look at this too hard here yet. Agreed. I think it is okay to use "temporal" in the docs for the feature in general, if we clarify that non-temporal values are also supported. That is what the rest of the world calls this kind of thing. The word "period" is confusing because it can be the `PERIOD` keyword used in temporal FKs, or also the SQL:2011 `PERIOD` object that is like our range types. And then we also have ranges, etc. In the past I was using "interval" to mean "range or PERIOD" (and "interval" is used by Date in his temporal book), but perhaps that is too idiosyncratic. I've removed "interval" from the FK docs, and instead I've tried to be very explicit and avoid ambiguity. (I haven't given as much attention to cleaning up the later patches' docs yet.) > * v24-0002-Add-GiST-referencedagg-support-func.patch > > Do we really need this level of generality? Are there examples not > using ranges that would need a different aggregate function? Maybe > something with geometry (points and lines)? But it seems to me that > then we'd also need some equivalent to "without portion" support for > those types and a multirange equivalent (basically another gist > support function wrapped around the 0004 patch). I'm not sure how else to do it. The issue is that `range_agg` returns a multirange, so the result type doesn't match the inputs. But other types will likely have the same problem: to combine boxes you may need a multibox. The combine mdranges you may need a multimdrange. I agree we need something to support "without portion" too. The patches here give implementations for ranges and multiranges. But that is for `FOR PORTION OF`, so it comes after the foreign key patches (part 5 here). Btw that part changed a bit since v24 because as jian he pointed out, our type system doesn't support anyrange inputs and an anyrange[] output. So I changed the support funcs to use SETOF. I could alternately add anyrangearray and anymultirangearray pseudotypes. It's not the first time I've wanted those, so I'd be happy to go that way if folks are open to it. It seems like it should be a totally separate patch though. > * v24-0003-Add-temporal-FOREIGN-KEYs.patch > > - contrib/btree_gist/expected/without_overlaps.out > - contrib/btree_gist/sql/without_overlaps.sql > > typo "exusts" Fixed. > - doc/src/sgml/ref/create_table.sgml > > This mentions FOR PORTION OF from a later patch. > > It is not documented that SET NULL and SET DEFAULT are not supported, > even though that is added in a later patch. (So this patch should say > that it's not supported, and then the later patch should remove that.) All fixed. > - src/backend/commands/indexcmds.c > > The changes to GetOperatorFromWellKnownStrategy() don't work for > message translations. We had discussed a similar issue for this > function previously. I think it's ok to leave the function as it was. > The additional context could be added with location pointers or > errcontext() maybe, but it doesn't seem that important for now. Okay I've tried a different approach here that should fit better with t9n. Let me know if it still needs work. > - src/backend/commands/tablecmds.c > > The changes in ATAddForeignKeyConstraint(), which are the meat of the > changes in this file, are very difficult to review in detail. I tried > different git-diff options to get a sensible view, but it wasn't > helpful. Do we need to do some separate refactoring here first? I moved the FindFKComparisonOperators refactor into a separate patch, and that seems to confuse git less. Your suggestion to group the PERIOD attribute with the others (below) also helped a lot to cut down the diff here. In fact it means I only call FindFKComparisonOperators once, so pulling it into a separate method is not even necessary anymore. But I do think it helps simplify what's already a very long function, so I've left it in. Let me know if more work is needed here. > The error message "action not supported for temporal foreign keys" > could be more detailed, mention the action. Look for example how the > error for the generated columns is phrased. (But note that for > generated columns, the actions are impossible to support, whereas here > it is just something not done yet. So there should probably still be > different error codes.) Fixed. > - src/backend/nodes/outfuncs.c > - src/backend/nodes/readfuncs.c > > Perhaps you would like to review my patch 0001 in > , > which removes the custom out/read functions for the Constraint node. > Then you could get rid of these changes. That is a nice improvement! > - src/backend/utils/adt/ri_triggers.c > > The added #include "catalog/pg_range.h" doesn't appear to be used for > anything. Removed. > Maybe we can avoid the added #include "commands/tablecmds.h" by > putting the common function in some appropriate lower-level module. Moved to pg_constraint.{c,h}. > typo "PEROID" Fixed. > Renaming of ri_KeysEqual() to ri_KeysStable() doesn't improve clarity, > I think. I think we can leave the old name and add a comment (as you > have done). There is a general understanding around this feature set > that "equal" sometimes means "contained" or something like that. Okay. > The function ri_RangeAttributeNeedsCheck() could be documented better. > It's bit terse and unclear. From the code, it looks like it is used > instead of row equality checks. Maybe a different function name would > be suitable. I realized I could simplify this a lot and reuse ri_AttributesEqual, so the whole method is gone now. > Various unnecessary reformatting in RI_FKey_check(). Fixed, sorry about that. > When assembling the SQL commands, you need to be very careful about > fully quoting and schema-qualifying everything. See for example > ri_GenerateQual(). Went through everything and added quoting & schemes to a few places that were missing it. > Have you checked that the generated queries can use indexes and have > suitable performance? Do you have example execution plans maybe? The plans look good to me. Here are some tests: -- test when inserting/updating the FK side: regression=# explain analyze select 1 from ( select valid_at as r from only temporal_rng x where id = '[8,8]' and valid_at && '[2010-01-01,2012-01-01)' for key share of x ) x1 having '[2010-01-01,2012-01-01)'::tsrange <@ range_agg(x1.r); QUERY PLAN --------------------------------------------------------------------------------------------------------------------------------------------------- Aggregate (cost=8.19..8.20 rows=1 width=4) (actual time=0.165..0.167 rows=0 loops=1) Filter: ('["2010-01-01 00:00:00","2012-01-01 00:00:00")'::tsrange <@ range_agg(x1.r)) Rows Removed by Filter: 1 -> Subquery Scan on x1 (cost=0.14..8.18 rows=1 width=32) (actual time=0.152..0.153 rows=0 loops=1) -> LockRows (cost=0.14..8.17 rows=1 width=38) (actual time=0.151..0.151 rows=0 loops=1) -> Index Scan using temporal_rng_pk on temporal_rng x (cost=0.14..8.16 rows=1 width=38) (actual time=0.150..0.150 rows=0 loops=1) Index Cond: ((id = '[8,9)'::int4range) AND (valid_at && '["2010-01-01 00:00:00","2012-01-01 00:00:00")'::tsrange)) Planning Time: 0.369 ms Execution Time: 0.289 ms (9 rows) -- test when deleting/updating from the PK side: regression=# explain analyze select 1 from only temporal_rng x where id = '[8,8]' and valid_at && '[2010-01-01,2012-01-01)' for key share of x; QUERY PLAN --------------------------------------------------------------------------------------------------------------------------------------- LockRows (cost=0.14..8.17 rows=1 width=10) (actual time=0.079..0.079 rows=0 loops=1) -> Index Scan using temporal_rng_pk on temporal_rng x (cost=0.14..8.16 rows=1 width=10) (actual time=0.078..0.078 rows=0 loops=1) Index Cond: ((id = '[8,9)'::int4range) AND (valid_at && '["2010-01-01 00:00:00","2012-01-01 00:00:00")'::tsrange)) Planning Time: 0.249 ms Execution Time: 0.123 ms (5 rows) I will do some further tests with more rows, but I haven't yet. > - src/backend/utils/adt/ruleutils.c > > This seems ok in principle, but it's kind of weird that the new > argument of decompile_column_index_array() is called "withPeriod" > (which seems appropriate seeing what it does), but what we are passing > in is conwithoutoverlaps. Maybe we need to reconsider the naming of > the constraint column? Sorry, I made you change it from "contemporal" > or something, didn't I? Maybe "conperiod" would cover both meanings > better? Certainly conperiod is easier to read. Since we are using it for PK/UNIQUE/FKs, conperiod also seems like a better match. FKs don't use WITHOUT OVERLAPS syntax, and OTOH PK/UNIQUEs will still accept a PERIOD (eventually, also a range/etc now). I've renamed it, but since the old name was already committed with the PK patch, I've broken the renaming into a separate patch that could be committed without anything else. > - src/backend/utils/cache/lsyscache.c > > get_func_name_and_namespace(): This function would at least need some > identifier quoting. There is only one caller (lookupTRIOperAndProc), > so let's just put this code inline there; it's not worth a separate > global function. (Also, you could use psprintf() here to simplify > palloc() + snprintf().) Removed. > - src/include/catalog/pg_constraint.h > > You are changing in several comments "equality" to "comparison". I > suspect you effectively mean "equality or containment"? Maybe > "comparison" is too subtle to convey that meaning? Maybe be more > explicit. Okay, changed. > You are changing a foreign key from DECLARE_ARRAY_FOREIGN_KEY to > DECLARE_ARRAY_FOREIGN_KEY_OPT. Add a comment about it, like the one > just above has. I don't need this change at all now that we're using GENERATED columns for PERIODs, so I've taken it out. > - src/include/catalog/pg_proc.dat > > For the names of the trigger functions, maybe instead of > > TRI_FKey_check_ins > > something like > > RI_FKey_period_check_ins > > so that all RI trigger functions group under a common prefix. Renamed. > On second thought, do we even need separate functions for this? > Looking at ri_triggers.c, the temporal and non-temporal functions are > the same, and all the differences are handled in the underlying > implementation functions. My thinking was to avoid making the non-temporal functions suffer in performance and complexity. What do you think? I've kept the separate functions here but I can combine them if you like. > - src/include/nodes/parsenodes.h > > The constants FKCONSTR_PERIOD_OP_CONTAINED_BY and > FKCONSTR_PERIOD_PROC_REFERENCED_AGG could use more documentation here. Removed. They are obsolete now (and were already in v24---sorry!). > For the Constraint struct, don't we just need a bool field saying > "this is a period FK", and then we'd know that the last column is the > period? Like we did for the primary keys (bool without_overlaps). Okay, changed. Also in ATExecAddConstraint we can treat the PERIOD element like any other FK element, which simplifies the changes there a lot. > - src/include/parser/kwlist.h > > For this patch, the keyword PERIOD can be unreserved. But it > apparently will need to be reserved later for the patch that > introduces PERIOD columns. Maybe it would make sense to leave it > unreserved for this patch and upgrade it in the later one. I tried doing this but got a shift/reduce conflict, so it's still reserved here. Thanks, -- Paul ~{:-) pj@illuminatedcomputing.com --------------XirkSnpA0J2rgDaW8dSEFd2s Content-Type: text/x-patch; charset=UTF-8; name="v25-0001-Rename-conwithoutoverlaps-to-conperiod.patch" Content-Disposition: attachment; filename="v25-0001-Rename-conwithoutoverlaps-to-conperiod.patch" Content-Transfer-Encoding: base64 RnJvbSA5N2QxZmU1Y2M2YWE0ODM0NjljNGQ0NDJhMTU1YjdkZGFiOTc4ODJmIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IFR1ZSwgMjAgRmViIDIwMjQgMTk6MzU6MjMgLTA4 MDAKU3ViamVjdDogW1BBVENIIHYyNSAxLzhdIFJlbmFtZSBjb253aXRob3V0b3ZlcmxhcHMg dG8gY29ucGVyaW9kCgotLS0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvaGVhcC5jICAgICAgICAg IHwgIDQgKystLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19jb25zdHJhaW50LmMgfCAgNCAr Ky0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy90cmlnZ2VyLmMgICAgICB8ICAyICstCiBzcmMv YmFja2VuZC9jb21tYW5kcy90eXBlY21kcy5jICAgICB8ICAyICstCiBzcmMvYmFja2VuZC91 dGlscy9hZHQvcnVsZXV0aWxzLmMgICB8ICAyICstCiBzcmMvYmFja2VuZC91dGlscy9jYWNo ZS9yZWxjYWNoZS5jICB8ICA2ICsrKy0tLQogc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyAg ICAgICAgICAgfCAxMiArKysrKystLS0tLS0KIHNyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgg ICAgICAgICAgIHwgIDIgKy0KIHNyYy9iaW4vcHNxbC9kZXNjcmliZS5jICAgICAgICAgICAg IHwgIDQgKystLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19jb25zdHJhaW50LmggfCAgNCAr Ky0tCiAxMCBmaWxlcyBjaGFuZ2VkLCAyMSBpbnNlcnRpb25zKCspLCAyMSBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL2hlYXAuYyBiL3NyYy9iYWNr ZW5kL2NhdGFsb2cvaGVhcC5jCmluZGV4IDM0ODk0M2UzNmNjLi41ZTc3Mzc0MGY0ZCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9oZWFwLmMKKysrIGIvc3JjL2JhY2tlbmQv Y2F0YWxvZy9oZWFwLmMKQEAgLTIxNDUsNyArMjE0NSw3IEBAIFN0b3JlUmVsQ2hlY2soUmVs YXRpb24gcmVsLCBjb25zdCBjaGFyICpjY25hbWUsIE5vZGUgKmV4cHIsCiAJCQkJCQkJICBp c19sb2NhbCwgLyogY29uaXNsb2NhbCAqLwogCQkJCQkJCSAgaW5oY291bnQsIC8qIGNvbmlu aGNvdW50ICovCiAJCQkJCQkJICBpc19ub19pbmhlcml0LAkvKiBjb25ub2luaGVyaXQgKi8K LQkJCQkJCQkgIGZhbHNlLAkvKiBjb253aXRob3V0b3ZlcmxhcHMgKi8KKwkJCQkJCQkgIGZh bHNlLAkvKiBjb25wZXJpb2QgKi8KIAkJCQkJCQkgIGlzX2ludGVybmFsKTsgLyogaW50ZXJu YWxseSBjb25zdHJ1Y3RlZD8gKi8KIAogCXBmcmVlKGNjYmluKTsKQEAgLTIxOTYsNyArMjE5 Niw3IEBAIFN0b3JlUmVsTm90TnVsbChSZWxhdGlvbiByZWwsIGNvbnN0IGNoYXIgKm5ubmFt ZSwgQXR0ck51bWJlciBhdHRudW0sCiAJCQkJCQkJICBpc19sb2NhbCwKIAkJCQkJCQkgIGlu aGNvdW50LAogCQkJCQkJCSAgaXNfbm9faW5oZXJpdCwKLQkJCQkJCQkgIGZhbHNlLAkvKiBj b253aXRob3V0b3ZlcmxhcHMgKi8KKwkJCQkJCQkgIGZhbHNlLAkvKiBjb25wZXJpb2QgKi8K IAkJCQkJCQkgIGZhbHNlKTsKIAlyZXR1cm4gY29uc3RyT2lkOwogfQpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19jb25zdHJhaW50LmMgYi9zcmMvYmFja2VuZC9jYXRh bG9nL3BnX2NvbnN0cmFpbnQuYwppbmRleCAwYTk1NjA4MTc5ZC4uMzUxNmZkNTg0OTMgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfY29uc3RyYWludC5jCisrKyBiL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvcGdfY29uc3RyYWludC5jCkBAIC03OCw3ICs3OCw3IEBAIENy ZWF0ZUNvbnN0cmFpbnRFbnRyeShjb25zdCBjaGFyICpjb25zdHJhaW50TmFtZSwKIAkJCQkJ ICBib29sIGNvbklzTG9jYWwsCiAJCQkJCSAgaW50IGNvbkluaENvdW50LAogCQkJCQkgIGJv b2wgY29uTm9Jbmhlcml0LAotCQkJCQkgIGJvb2wgY29uV2l0aG91dE92ZXJsYXBzLAorCQkJ CQkgIGJvb2wgY29uUGVyaW9kLAogCQkJCQkgIGJvb2wgaXNfaW50ZXJuYWwpCiB7CiAJUmVs YXRpb24JY29uRGVzYzsKQEAgLTE5NCw3ICsxOTQsNyBAQCBDcmVhdGVDb25zdHJhaW50RW50 cnkoY29uc3QgY2hhciAqY29uc3RyYWludE5hbWUsCiAJdmFsdWVzW0FudW1fcGdfY29uc3Ry YWludF9jb25pc2xvY2FsIC0gMV0gPSBCb29sR2V0RGF0dW0oY29uSXNMb2NhbCk7CiAJdmFs dWVzW0FudW1fcGdfY29uc3RyYWludF9jb25pbmhjb3VudCAtIDFdID0gSW50MTZHZXREYXR1 bShjb25JbmhDb3VudCk7CiAJdmFsdWVzW0FudW1fcGdfY29uc3RyYWludF9jb25ub2luaGVy aXQgLSAxXSA9IEJvb2xHZXREYXR1bShjb25Ob0luaGVyaXQpOwotCXZhbHVlc1tBbnVtX3Bn X2NvbnN0cmFpbnRfY29ud2l0aG91dG92ZXJsYXBzIC0gMV0gPSBCb29sR2V0RGF0dW0oY29u V2l0aG91dE92ZXJsYXBzKTsKKwl2YWx1ZXNbQW51bV9wZ19jb25zdHJhaW50X2NvbnBlcmlv ZCAtIDFdID0gQm9vbEdldERhdHVtKGNvblBlcmlvZCk7CiAKIAlpZiAoY29ua2V5QXJyYXkp CiAJCXZhbHVlc1tBbnVtX3BnX2NvbnN0cmFpbnRfY29ua2V5IC0gMV0gPSBQb2ludGVyR2V0 RGF0dW0oY29ua2V5QXJyYXkpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMv dHJpZ2dlci5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHJpZ2dlci5jCmluZGV4IGMzNDRm ZjA5NDQyLi4yNjY3ZGVkZTIxOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMv dHJpZ2dlci5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RyaWdnZXIuYwpAQCAtODQx LDcgKzg0MSw3IEBAIENyZWF0ZVRyaWdnZXJGaXJpbmdPbihDcmVhdGVUcmlnU3RtdCAqc3Rt dCwgY29uc3QgY2hhciAqcXVlcnlTdHJpbmcsCiAJCQkJCQkJCQkJCSAgdHJ1ZSwgLyogaXNs b2NhbCAqLwogCQkJCQkJCQkJCQkgIDAsCS8qIGluaGNvdW50ICovCiAJCQkJCQkJCQkJCSAg dHJ1ZSwgLyogbm9pbmhlcml0ICovCi0JCQkJCQkJCQkJCSAgZmFsc2UsCS8qIGNvbndpdGhv dXRvdmVybGFwcyAqLworCQkJCQkJCQkJCQkgIGZhbHNlLAkvKiBjb25wZXJpb2QgKi8KIAkJ CQkJCQkJCQkJICBpc0ludGVybmFsKTsJLyogaXNfaW50ZXJuYWwgKi8KIAl9CiAKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3R5cGVjbWRzLmMgYi9zcmMvYmFja2VuZC9j b21tYW5kcy90eXBlY21kcy5jCmluZGV4IGUwMjc1ZTVmZTljLi4wOGVkNDg2Y2NiYyAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHlwZWNtZHMuYworKysgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy90eXBlY21kcy5jCkBAIC0zNTQ0LDcgKzM1NDQsNyBAQCBkb21haW5B ZGRDb25zdHJhaW50KE9pZCBkb21haW5PaWQsIE9pZCBkb21haW5OYW1lc3BhY2UsIE9pZCBi YXNlVHlwZU9pZCwKIAkJCQkJCQkgIHRydWUsIC8qIGlzIGxvY2FsICovCiAJCQkJCQkJICAw LAkvKiBpbmhjb3VudCAqLwogCQkJCQkJCSAgZmFsc2UsCS8qIGNvbm5vaW5oZXJpdCAqLwot CQkJCQkJCSAgZmFsc2UsCS8qIGNvbndpdGhvdXRvdmVybGFwcyAqLworCQkJCQkJCSAgZmFs c2UsCS8qIGNvbnBlcmlvZCAqLwogCQkJCQkJCSAgZmFsc2UpOwkvKiBpc19pbnRlcm5hbCAq LwogCWlmIChjb25zdHJBZGRyKQogCQlPYmplY3RBZGRyZXNzU2V0KCpjb25zdHJBZGRyLCBD b25zdHJhaW50UmVsYXRpb25JZCwgY2NvaWQpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L3J1bGV1dGlscy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGls cy5jCmluZGV4IGE5MjhhOGM1NWRmLi41NzI3ZGZjNDAzMSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC9ydWxldXRpbHMuYwpAQCAtMjM3OSw3ICsyMzc5LDcgQEAgcGdfZ2V0X2NvbnN0cmFpbnRk ZWZfd29ya2VyKE9pZCBjb25zdHJhaW50SWQsIGJvb2wgZnVsbENvbW1hbmQsCiAJCQkJCQkJ CQkJCSBBbnVtX3BnX2NvbnN0cmFpbnRfY29ua2V5KTsKIAogCQkJCWtleWF0dHMgPSBkZWNv bXBpbGVfY29sdW1uX2luZGV4X2FycmF5KHZhbCwgY29uRm9ybS0+Y29ucmVsaWQsICZidWYp OwotCQkJCWlmIChjb25Gb3JtLT5jb253aXRob3V0b3ZlcmxhcHMpCisJCQkJaWYgKGNvbkZv cm0tPmNvbnBlcmlvZCkKIAkJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmYnVmLCAiIFdJ VEhPVVQgT1ZFUkxBUFMiKTsKIAogCQkJCWFwcGVuZFN0cmluZ0luZm9DaGFyKCZidWYsICcp Jyk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jIGIv c3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYwppbmRleCA1MGFjYWU0NTI5OC4u ZDMxYjhjZjA4Y2UgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNh Y2hlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYwpAQCAtNTYy Miw5ICs1NjIyLDkgQEAgUmVsYXRpb25HZXRFeGNsdXNpb25JbmZvKFJlbGF0aW9uIGluZGV4 UmVsYXRpb24sCiAKIAkJLyogV2Ugd2FudCB0aGUgZXhjbHVzaW9uIGNvbnN0cmFpbnQgb3du aW5nIHRoZSBpbmRleCAqLwogCQlpZiAoKGNvbmZvcm0tPmNvbnR5cGUgIT0gQ09OU1RSQUlO VF9FWENMVVNJT04gJiYKLQkJCSAhKGNvbmZvcm0tPmNvbndpdGhvdXRvdmVybGFwcyAmJiAo Ci0JCQkJCQkJCQkJCSAgIGNvbmZvcm0tPmNvbnR5cGUgPT0gQ09OU1RSQUlOVF9QUklNQVJZ Ci0JCQkJCQkJCQkJCSAgIHx8IGNvbmZvcm0tPmNvbnR5cGUgPT0gQ09OU1RSQUlOVF9VTklR VUUpKSkgfHwKKwkJCSAhKGNvbmZvcm0tPmNvbnBlcmlvZCAmJiAoCisJCQkJCQkJCQkgIGNv bmZvcm0tPmNvbnR5cGUgPT0gQ09OU1RSQUlOVF9QUklNQVJZCisJCQkJCQkJCQkgIHx8IGNv bmZvcm0tPmNvbnR5cGUgPT0gQ09OU1RSQUlOVF9VTklRVUUpKSkgfHwKIAkJCWNvbmZvcm0t PmNvbmluZGlkICE9IFJlbGF0aW9uR2V0UmVsaWQoaW5kZXhSZWxhdGlvbikpCiAJCQljb250 aW51ZTsKIApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyBiL3NyYy9i aW4vcGdfZHVtcC9wZ19kdW1wLmMKaW5kZXggMjIyNWExMjcxOGIuLjEwY2JmMDJiZWJkIDEw MDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCisrKyBiL3NyYy9iaW4vcGdf ZHVtcC9wZ19kdW1wLmMKQEAgLTcyNTIsNyArNzI1Miw3IEBAIGdldEluZGV4ZXMoQXJjaGl2 ZSAqZm91dCwgVGFibGVJbmZvIHRibGluZm9bXSwgaW50IG51bVRhYmxlcykKIAkJCQlpX2Nv bm5hbWUsCiAJCQkJaV9jb25kZWZlcnJhYmxlLAogCQkJCWlfY29uZGVmZXJyZWQsCi0JCQkJ aV9jb253aXRob3V0b3ZlcmxhcHMsCisJCQkJaV9jb25wZXJpb2QsCiAJCQkJaV9jb250YWJs ZW9pZCwKIAkJCQlpX2Nvbm9pZCwKIAkJCQlpX2NvbmRlZiwKQEAgLTczNDEsMTAgKzczNDEs MTAgQEAgZ2V0SW5kZXhlcyhBcmNoaXZlICpmb3V0LCBUYWJsZUluZm8gdGJsaW5mb1tdLCBp bnQgbnVtVGFibGVzKQogCiAJaWYgKGZvdXQtPnJlbW90ZVZlcnNpb24gPj0gMTcwMDAwKQog CQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKLQkJCQkJCQkgImMuY29ud2l0aG91dG92 ZXJsYXBzICIpOworCQkJCQkJCSAiYy5jb25wZXJpb2QgIik7CiAJZWxzZQogCQlhcHBlbmRQ UUV4cEJ1ZmZlclN0cihxdWVyeSwKLQkJCQkJCQkgIk5VTEwgQVMgY29ud2l0aG91dG92ZXJs YXBzICIpOworCQkJCQkJCSAiTlVMTCBBUyBjb25wZXJpb2QgIik7CiAKIAkvKgogCSAqIFRo ZSBwb2ludCBvZiB0aGUgbWVzc3ktbG9va2luZyBvdXRlciBqb2luIGlzIHRvIGZpbmQgYSBj b25zdHJhaW50IHRoYXQKQEAgLTc0MTIsNyArNzQxMiw3IEBAIGdldEluZGV4ZXMoQXJjaGl2 ZSAqZm91dCwgVGFibGVJbmZvIHRibGluZm9bXSwgaW50IG51bVRhYmxlcykKIAlpX2Nvbm5h bWUgPSBQUWZudW1iZXIocmVzLCAiY29ubmFtZSIpOwogCWlfY29uZGVmZXJyYWJsZSA9IFBR Zm51bWJlcihyZXMsICJjb25kZWZlcnJhYmxlIik7CiAJaV9jb25kZWZlcnJlZCA9IFBRZm51 bWJlcihyZXMsICJjb25kZWZlcnJlZCIpOwotCWlfY29ud2l0aG91dG92ZXJsYXBzID0gUFFm bnVtYmVyKHJlcywgImNvbndpdGhvdXRvdmVybGFwcyIpOworCWlfY29ucGVyaW9kID0gUFFm bnVtYmVyKHJlcywgImNvbnBlcmlvZCIpOwogCWlfY29udGFibGVvaWQgPSBQUWZudW1iZXIo cmVzLCAiY29udGFibGVvaWQiKTsKIAlpX2Nvbm9pZCA9IFBRZm51bWJlcihyZXMsICJjb25v aWQiKTsKIAlpX2NvbmRlZiA9IFBRZm51bWJlcihyZXMsICJjb25kZWYiKTsKQEAgLTc1MjAs NyArNzUyMCw3IEBAIGdldEluZGV4ZXMoQXJjaGl2ZSAqZm91dCwgVGFibGVJbmZvIHRibGlu Zm9bXSwgaW50IG51bVRhYmxlcykKIAkJCQljb25zdHJpbmZvLT5jb25pbmRleCA9IGluZHhp bmZvW2pdLmRvYmouZHVtcElkOwogCQkJCWNvbnN0cmluZm8tPmNvbmRlZmVycmFibGUgPSAq KFBRZ2V0dmFsdWUocmVzLCBqLCBpX2NvbmRlZmVycmFibGUpKSA9PSAndCc7CiAJCQkJY29u c3RyaW5mby0+Y29uZGVmZXJyZWQgPSAqKFBRZ2V0dmFsdWUocmVzLCBqLCBpX2NvbmRlZmVy cmVkKSkgPT0gJ3QnOwotCQkJCWNvbnN0cmluZm8tPmNvbndpdGhvdXRvdmVybGFwcyA9ICoo UFFnZXR2YWx1ZShyZXMsIGosIGlfY29ud2l0aG91dG92ZXJsYXBzKSkgPT0gJ3QnOworCQkJ CWNvbnN0cmluZm8tPmNvbnBlcmlvZCA9ICooUFFnZXR2YWx1ZShyZXMsIGosIGlfY29ucGVy aW9kKSkgPT0gJ3QnOwogCQkJCWNvbnN0cmluZm8tPmNvbmlzbG9jYWwgPSB0cnVlOwogCQkJ CWNvbnN0cmluZm8tPnNlcGFyYXRlID0gdHJ1ZTsKIApAQCAtMTcxNTgsNyArMTcxNTgsNyBA QCBkdW1wQ29uc3RyYWludChBcmNoaXZlICpmb3V0LCBjb25zdCBDb25zdHJhaW50SW5mbyAq Y29uaW5mbykKIAkJCQkJCQkJICAoayA9PSAwKSA/ICIiIDogIiwgIiwKIAkJCQkJCQkJICBm bXRJZChhdHRuYW1lKSk7CiAJCQl9Ci0JCQlpZiAoY29uaW5mby0+Y29ud2l0aG91dG92ZXJs YXBzKQorCQkJaWYgKGNvbmluZm8tPmNvbnBlcmlvZCkKIAkJCQlhcHBlbmRQUUV4cEJ1ZmZl clN0cihxLCAiIFdJVEhPVVQgT1ZFUkxBUFMiKTsKIAogCQkJaWYgKGluZHhpbmZvLT5pbmRu a2V5YXR0cnMgPCBpbmR4aW5mby0+aW5kbmF0dHJzKQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9w Z19kdW1wL3BnX2R1bXAuaCBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgKaW5kZXggNzdk YjQyZTM1NGIuLmY0OWViODhkY2JmIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdf ZHVtcC5oCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgKQEAgLTQ3OSw3ICs0Nzks NyBAQCB0eXBlZGVmIHN0cnVjdCBfY29uc3RyYWludEluZm8KIAlEdW1wSWQJCWNvbmluZGV4 OwkJLyogaWRlbnRpZmllcyBhc3NvY2lhdGVkIGluZGV4IGlmIGFueSAqLwogCWJvb2wJCWNv bmRlZmVycmFibGU7CS8qIHRydWUgaWYgY29uc3RyYWludCBpcyBERUZFUlJBQkxFICovCiAJ Ym9vbAkJY29uZGVmZXJyZWQ7CS8qIHRydWUgaWYgY29uc3RyYWludCBpcyBJTklUSUFMTFkg REVGRVJSRUQgKi8KLQlib29sCQljb253aXRob3V0b3ZlcmxhcHM7IC8qIHRydWUgaWYgdGhl IGNvbnN0cmFpbnQgaXMgV0lUSE9VVAorCWJvb2wJCWNvbnBlcmlvZDsJCS8qIHRydWUgaWYg dGhlIGNvbnN0cmFpbnQgaXMgV0lUSE9VVAogCQkJCQkJCQkJICogT1ZFUkxBUFMgKi8KIAli b29sCQljb25pc2xvY2FsOwkJLyogdHJ1ZSBpZiBjb25zdHJhaW50IGhhcyBsb2NhbCBkZWZp bml0aW9uICovCiAJYm9vbAkJc2VwYXJhdGU7CQkvKiB0cnVlIGlmIG11c3QgZHVtcCBhcyBz ZXBhcmF0ZSBpdGVtICovCmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYyBi L3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCmluZGV4IGI2YTRlYjFkNTY1Li5jMDViZWZiYjZm MiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKKysrIGIvc3JjL2Jpbi9w c3FsL2Rlc2NyaWJlLmMKQEAgLTIzODAsOSArMjM4MCw5IEBAIGRlc2NyaWJlT25lVGFibGVE ZXRhaWxzKGNvbnN0IGNoYXIgKnNjaGVtYW5hbWUsCiAJCQkJYXBwZW5kUFFFeHBCdWZmZXJT dHIoJmJ1ZiwgIiwgZmFsc2UgQVMgaW5kaXNyZXBsaWRlbnQiKTsKIAkJCWFwcGVuZFBRRXhw QnVmZmVyU3RyKCZidWYsICIsIGMyLnJlbHRhYmxlc3BhY2UiKTsKIAkJCWlmIChwc2V0LnN2 ZXJzaW9uID49IDE3MDAwMCkKLQkJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmYnVmLCAiLCBj b24uY29ud2l0aG91dG92ZXJsYXBzIik7CisJCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmJ1 ZiwgIiwgY29uLmNvbnBlcmlvZCIpOwogCQkJZWxzZQotCQkJCWFwcGVuZFBRRXhwQnVmZmVy U3RyKCZidWYsICIsIGZhbHNlIEFTIGNvbndpdGhvdXRvdmVybGFwcyIpOworCQkJCWFwcGVu ZFBRRXhwQnVmZmVyU3RyKCZidWYsICIsIGZhbHNlIEFTIGNvbnBlcmlvZCIpOwogCQkJYXBw ZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKIAkJCQkJCQkgICJcbkZST00gcGdfY2F0YWxvZy5wZ19j bGFzcyBjLCBwZ19jYXRhbG9nLnBnX2NsYXNzIGMyLCBwZ19jYXRhbG9nLnBnX2luZGV4IGlc biIKIAkJCQkJCQkgICIgIExFRlQgSk9JTiBwZ19jYXRhbG9nLnBnX2NvbnN0cmFpbnQgY29u IE9OIChjb25yZWxpZCA9IGkuaW5kcmVsaWQgQU5EIGNvbmluZGlkID0gaS5pbmRleHJlbGlk IEFORCBjb250eXBlIElOICgncCcsJ3UnLCd4JykpXG4iCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9jYXRhbG9nL3BnX2NvbnN0cmFpbnQuaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdf Y29uc3RyYWludC5oCmluZGV4IDAxZTZiYzIxY2QxLi5hMzNiNGYxN2VhOCAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19jb25zdHJhaW50LmgKKysrIGIvc3JjL2luY2x1 ZGUvY2F0YWxvZy9wZ19jb25zdHJhaW50LmgKQEAgLTExMSw3ICsxMTEsNyBAQCBDQVRBTE9H KHBnX2NvbnN0cmFpbnQsMjYwNixDb25zdHJhaW50UmVsYXRpb25JZCkKIAkgKiBGb3IgcHJp bWFyeSBrZXlzIGFuZCB1bmlxdWUgY29uc3RyYWludHMsIHNpZ25pZmllcyB0aGUgbGFzdCBj b2x1bW4gdXNlcwogCSAqIG92ZXJsYXBzIGluc3RlYWQgb2YgZXF1YWxzLgogCSAqLwotCWJv b2wJCWNvbndpdGhvdXRvdmVybGFwczsKKwlib29sCQljb25wZXJpb2Q7CiAKICNpZmRlZiBD QVRBTE9HX1ZBUkxFTgkJCS8qIHZhcmlhYmxlLWxlbmd0aCBmaWVsZHMgc3RhcnQgaGVyZSAq LwogCkBAIC0yNDUsNyArMjQ1LDcgQEAgZXh0ZXJuIE9pZAlDcmVhdGVDb25zdHJhaW50RW50 cnkoY29uc3QgY2hhciAqY29uc3RyYWludE5hbWUsCiAJCQkJCQkJCSAgYm9vbCBjb25Jc0xv Y2FsLAogCQkJCQkJCQkgIGludCBjb25JbmhDb3VudCwKIAkJCQkJCQkJICBib29sIGNvbk5v SW5oZXJpdCwKLQkJCQkJCQkJICBib29sIGNvbldpdGhvdXRPdmVybGFwcywKKwkJCQkJCQkJ ICBib29sIGNvblBlcmlvZCwKIAkJCQkJCQkJICBib29sIGlzX2ludGVybmFsKTsKIAogZXh0 ZXJuIGJvb2wgQ29uc3RyYWludE5hbWVJc1VzZWQoQ29uc3RyYWludENhdGVnb3J5IGNvbkNh dCwgT2lkIG9iaklkLAotLSAKMi40Mi4wCgo= --------------XirkSnpA0J2rgDaW8dSEFd2s Content-Type: text/x-patch; charset=UTF-8; name="v25-0002-Add-GiST-referencedagg-support-func.patch" Content-Disposition: attachment; filename="v25-0002-Add-GiST-referencedagg-support-func.patch" Content-Transfer-Encoding: base64 RnJvbSBhOGVkZDkzZGQ5NTczYzIwMjdiYzc0ODA1NjZkMjc3ZGRhNDgxMzQ3IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IEZyaSwgMjkgRGVjIDIwMjMgMTQ6MzY6MjcgLTA4 MDAKU3ViamVjdDogW1BBVENIIHYyNSAyLzhdIEFkZCBHaVNUIHJlZmVyZW5jZWRhZ2cgc3Vw cG9ydCBmdW5jCgpUaGlzIGlzIHRoZSB0aGlydGVlbnRoIHN1cHBvcnQgZnVuY3Rpb24gYW5k IGxldHMgdXMgaW1wbGVtZW50IHRlbXBvcmFsCmZvcmVpZ24ga2V5cyB3aXRob3V0IGhhcmRj b2RpbmcgdGhlIHJhbmdlX2FnZyBmdW5jdGlvbi4gVGhlIHN1cHBvcnQKZnVuY3Rpb24gc2hv dWxkIGJlIGFuIGFnZ3JlZ2F0ZSBmdW5jdGlvbiB0aGF0IHRha2VzIGEgdHlwZSBtYXRjaGlu ZyB0aGUKZm9yZWlnbiBrZXkncyBQRVJJT0QgZWxlbWVudCBhbmQgcmV0dXJucyBhIHR5cGUg dGhhdCBjYW4gYXBwZWFyIG9uIHRoZQpyaWdodGhhbmQgc2lkZSBvZiBhIENvbnRhaW5lZEJ5 IG9wZXJhdG9yLCBzbyB0aGF0IGZvciBleGFtcGxlIHdlIGNhbiBzYXkKYGZrcGVyaW9kIDxA IHJhbmdlX2FnZyhwa3BlcmlvZClgLgotLS0KIGRvYy9zcmMvc2dtbC9naXN0LnNnbWwgICAg ICAgICAgICAgICAgIHwgMTE0ICsrKysrKysrKysrKysrKysrKysrKysrKy0KIGRvYy9zcmMv c2dtbC94aW5kZXguc2dtbCAgICAgICAgICAgICAgIHwgICA4ICstCiBzcmMvYmFja2VuZC9h Y2Nlc3MvZ2lzdC9naXN0dmFsaWRhdGUuYyB8ICAgNyArLQogc3JjL2JhY2tlbmQvYWNjZXNz L2luZGV4L2FtdmFsaWRhdGUuYyAgfCAgMjQgKysrKystCiBzcmMvaW5jbHVkZS9hY2Nlc3Mv YW12YWxpZGF0ZS5oICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9hY2Nlc3MvZ2lzdC5o ICAgICAgICAgICAgICB8ICAgMyArLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19hbXByb2Mu ZGF0ICAgICAgfCAgIDYgKysKIDcgZmlsZXMgY2hhbmdlZCwgMTU2IGluc2VydGlvbnMoKyks IDcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2dpc3Quc2dtbCBi L2RvYy9zcmMvc2dtbC9naXN0LnNnbWwKaW5kZXggOGExOWYxNTZkODMuLmU2N2RkNGI4NTlm IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvZ2lzdC5zZ21sCisrKyBiL2RvYy9zcmMvc2dt bC9naXN0LnNnbWwKQEAgLTI3Miw3ICsyNzIsNyBAQCBDUkVBVEUgSU5ERVggT04gbXlfdGFi bGUgVVNJTkcgR0lTVCAobXlfaW5ldF9jb2x1bW4gaW5ldF9vcHMpOwogCiAgPHBhcmE+CiAg ICBUaGVyZSBhcmUgZml2ZSBtZXRob2RzIHRoYXQgYW4gaW5kZXggb3BlcmF0b3IgY2xhc3Mg Zm9yCi0gICA8YWNyb255bT5HaVNUPC9hY3JvbnltPiBtdXN0IHByb3ZpZGUsIGFuZCBzZXZl biB0aGF0IGFyZSBvcHRpb25hbC4KKyAgIDxhY3JvbnltPkdpU1Q8L2Fjcm9ueW0+IG11c3Qg cHJvdmlkZSwgYW5kIGVpZ2h0IHRoYXQgYXJlIG9wdGlvbmFsLgogICAgQ29ycmVjdG5lc3Mg b2YgdGhlIGluZGV4IGlzIGVuc3VyZWQKICAgIGJ5IHByb3BlciBpbXBsZW1lbnRhdGlvbiBv ZiB0aGUgPGZ1bmN0aW9uPnNhbWU8L2Z1bmN0aW9uPiwgPGZ1bmN0aW9uPmNvbnNpc3RlbnQ8 L2Z1bmN0aW9uPgogICAgYW5kIDxmdW5jdGlvbj51bmlvbjwvZnVuY3Rpb24+IG1ldGhvZHMs IHdoaWxlIGVmZmljaWVuY3kgKHNpemUgYW5kIHNwZWVkKSBvZiB0aGUKQEAgLTMwMCw2ICsz MDAsMTAgQEAgQ1JFQVRFIElOREVYIE9OIG15X3RhYmxlIFVTSU5HIEdJU1QgKG15X2luZXRf Y29sdW1uIGluZXRfb3BzKTsKICAgIDxmaWxlbmFtZT5zcmMvaW5jbHVkZS9hY2Nlc3Mvc3Ry YXRudW0uaDwvZmlsZW5hbWU+KSBpbnRvIHN0cmF0ZWd5IG51bWJlcnMKICAgIHVzZWQgYnkg dGhlIG9wZXJhdG9yIGNsYXNzLiAgVGhpcyBsZXRzIHRoZSBjb3JlIGNvZGUgbG9vayB1cCBv cGVyYXRvcnMgZm9yCiAgICB0ZW1wb3JhbCBjb25zdHJhaW50IGluZGV4ZXMuCisgICBUaGUg b3B0aW9uYWwgdGhpcnRlZW50aCBtZXRob2QgPGZ1bmN0aW9uPnJlZmVyZW5jZWRhZ2c8L2Z1 bmN0aW9uPiBpcyB1c2VkIGJ5CisgICB0ZW1wb3JhbCBmb3JlaWduIGtleXMgdG8gY29tYmlu ZWQgcmVmZXJlbmNlZCByb3dzIHdpdGggdGhlIHNhbWUKKyAgIG5vbi08bGl0ZXJhbD5XSVRI T1VUIE9WRVJMQVBTPC9saXRlcmFsPiB2YWx1ZShzKSBpbnRvIG9uZQorICAgPGxpdGVyYWw+ V0lUSE9VVCBPVkVSTEFQUzwvbGl0ZXJhbD4gc3BhbiB0byBjb21wYXJlIGFnYWluc3QgcmVm ZXJlbmNpbmcgcm93cy4KICA8L3BhcmE+CiAKICA8dmFyaWFibGVsaXN0PgpAQCAtMTI0NCw2 ICsxMjQ4LDExNCBAQCBteV9zdHJhdG51bShQR19GVU5DVElPTl9BUkdTKQogICAgICAgPC9w YXJhPgogICAgICA8L2xpc3RpdGVtPgogICAgIDwvdmFybGlzdGVudHJ5PgorICAgIDx2YXJs aXN0ZW50cnk+CisgICAgIDx0ZXJtPjxmdW5jdGlvbj5yZWZlcmVuY2VkYWdnPC9mdW5jdGlv bj48L3Rlcm0+CisgICAgIDxsaXN0aXRlbT4KKyAgICAgIDxwYXJhPgorICAgICAgIEFuIGFn Z3JlZ2F0ZSBmdW5jdGlvbi4gR2l2ZW4gdmFsdWVzIG9mIHRoaXMgb3BjbGFzcywKKyAgICAg ICBpdCByZXR1cm5zIGEgdmFsdWUgY29tYmluaW5nIHRoZW0gYWxsLiBUaGUgcmV0dXJuIHZh bHVlCisgICAgICAgbmVlZCBub3QgYmUgdGhlIHNhbWUgdHlwZSBhcyB0aGUgaW5wdXQsIGJ1 dCBpdCBtdXN0IGJlIGEKKyAgICAgICB0eXBlIHRoYXQgY2FuIGFwcGVhciBvbiB0aGUgcmln aHQgaGFuZCBzaWRlIG9mIHRoZSAiY29udGFpbmVkIGJ5IgorICAgICAgIG9wZXJhdG9yLiBG b3IgZXhhbXBsZSB0aGUgYnVpbHQtaW4gPGxpdGVyYWw+cmFuZ2Vfb3BzPC9saXRlcmFsPgor ICAgICAgIG9wY2xhc3MgdXNlcyA8bGl0ZXJhbD5yYW5nZV9hZ2c8L2xpdGVyYWw+IGhlcmUs IHNvIHRoYXQgZm9yZWlnbgorICAgICAgIGtleXMgY2FuIGNoZWNrIDxsaXRlcmFsPmZrcGVy aW9kIEA+IHJhbmdlX2FnZyhwa3BlcmlvZCk8L2xpdGVyYWw+LgorICAgICAgPC9wYXJhPgor ICAgICAgPHBhcmE+CisgICAgICAgVGhpcyBpcyB1c2VkIGZvciB0ZW1wb3JhbCBmb3JlaWdu IGtleSBjb25zdHJhaW50cy4KKyAgICAgICBJZiB5b3Ugb21pdCB0aGlzIHN1cHBvcnQgZnVu Y3Rpb24sIHlvdXIgdHlwZSBjYW5ub3QgYmUgdXNlZAorICAgICAgIGFzIHRoZSA8bGl0ZXJh bD5QRVJJT0Q8L2xpdGVyYWw+IHBhcnQgb2YgYSBmb3JlaWduIGtleS4KKyAgICAgIDwvcGFy YT4KKworICAgICAgPHBhcmE+CisgICAgICAgVGhlIDxhY3JvbnltPlNRTDwvYWNyb255bT4g ZGVjbGFyYXRpb24gb2YgdGhlIGZ1bmN0aW9uIG11c3QgbG9vayBsaWtlCisgICAgICAgdGhp cyAodXNpbmcgPGxpdGVyYWw+bXlfcmFuZ2VfYWdnPC9saXRlcmFsPiBhcyBhbiBleGFtcGxl KToKKworPHByb2dyYW1saXN0aW5nPgorQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gbXlf cmFuZ2VfYWdnX3RyYW5zZm4oaW50ZXJuYWwsIGFueXJhbmdlKQorUkVUVVJOUyBpbnRlcm5h bAorQVMgJ01PRFVMRV9QQVRITkFNRScKK0xBTkdVQUdFIEMgU1RSSUNUOworCitDUkVBVEUg T1IgUkVQTEFDRSBGVU5DVElPTiBteV9yYW5nZV9hZ2dfZmluYWxmbihpbnRlcm5hbCwgYW55 cmFuZ2UpCitSRVRVUk5TIGFueW11bHRpcmFuZ2UKK0FTICdNT0RVTEVfUEFUSE5BTUUnCitM QU5HVUFHRSBDIFNUUklDVDsKKworQ1JFQVRFIEFHR1JFR0FURSBteV9yYW5nZV9hZ2coYW55 cmFuZ2UpIHsKKyAgU0ZVTkMgPSBteV9yYW5nZV9hZ2dfdHJhbnNmbiwKKyAgU1RZUEUgPSBp bnRlcm5hbCwKKyAgRklOQUxGVU5DID0gbXlfcmFuZ2VfYWdnX2ZpbmFsZm4KK307Cis8L3By b2dyYW1saXN0aW5nPgorICAgICAgPC9wYXJhPgorCisgICAgICAgPHBhcmE+CisgICAgICAg IFRoZSBtYXRjaGluZyBjb2RlIGluIHRoZSBDIG1vZHVsZSBjb3VsZCB0aGVuIGZvbGxvdyB0 aGlzIGV4YW1wbGU6CisKKzxwcm9ncmFtbGlzdGluZz4KK0RhdHVtCitteV9yYW5nZV9hZ2df dHJhbnNmbihQR19GVU5DVElPTl9BUkdTKQoreworICAgIE1lbW9yeUNvbnRleHQgICAgYWdn Q29udGV4dDsKKyAgICBPaWQgICAgICAgICAgICAgIHJuZ3R5cG9pZDsKKyAgICBBcnJheUJ1 aWxkU3RhdGUgKnN0YXRlOworCisgICAgaWYgKCFBZ2dDaGVja0NhbGxDb250ZXh0KGZjaW5m bywgJmFtcDthZ2dDb250ZXh0KSkKKyAgICAgICAgZWxvZyhFUlJPUiwgInJhbmdlX2FnZ190 cmFuc2ZuIGNhbGxlZCBpbiBub24tYWdncmVnYXRlIGNvbnRleHQiKTsKKworICAgIHJuZ3R5 cG9pZCA9IGdldF9mbl9leHByX2FyZ3R5cGUoZmNpbmZvLSZndDtmbGluZm8sIDEpOworICAg IGlmICghdHlwZV9pc19yYW5nZShybmd0eXBvaWQpKQorICAgICAgICBlbG9nKEVSUk9SLCAi cmFuZ2VfYWdnIG11c3QgYmUgY2FsbGVkIHdpdGggYSByYW5nZSIpOworCisgICAgaWYgKFBH X0FSR0lTTlVMTCgwKSkKKyAgICAgICAgc3RhdGUgPSBpbml0QXJyYXlSZXN1bHQocm5ndHlw b2lkLCBhZ2dDb250ZXh0LCBmYWxzZSk7CisgICAgZWxzZQorICAgICAgICBzdGF0ZSA9IChB cnJheUJ1aWxkU3RhdGUgKikgUEdfR0VUQVJHX1BPSU5URVIoMCk7CisKKyAgICAvKiBza2lw IE5VTExzICovCisgICAgaWYgKCFQR19BUkdJU05VTEwoMSkpCisgICAgICAgIGFjY3VtQXJy YXlSZXN1bHQoc3RhdGUsIFBHX0dFVEFSR19EQVRVTSgxKSwgZmFsc2UsIHJuZ3R5cG9pZCwg YWdnQ29udGV4dCk7CisKKyAgICBQR19SRVRVUk5fUE9JTlRFUihzdGF0ZSk7Cit9CisKK0Rh dHVtCitteV9yYW5nZV9hZ2dfZmluYWxmbihQR19GVU5DVElPTl9BUkdTKQoreworICAgIE1l bW9yeUNvbnRleHQgICAgYWdnQ29udGV4dDsKKyAgICBPaWQgICAgICAgICAgICAgIG1sdHJu Z3R5cG9pZDsKKyAgICBUeXBlQ2FjaGVFbnRyeSAgKnR5cGNhY2hlOworICAgIEFycmF5QnVp bGRTdGF0ZSAqc3RhdGU7CisgICAgaW50MzIgICAgICAgICAgICByYW5nZV9jb3VudDsKKyAg ICBSYW5nZVR5cGUgICAgICAqKnJhbmdlczsKKyAgICBpbnQgICAgICAgICAgICAgIGk7CisK KyAgICBpZiAoIUFnZ0NoZWNrQ2FsbENvbnRleHQoZmNpbmZvLCAmYW1wO2FnZ0NvbnRleHQp KQorICAgICAgICBlbG9nKEVSUk9SLCAicmFuZ2VfYWdnX2ZpbmFsZm4gY2FsbGVkIGluIG5v bi1hZ2dyZWdhdGUgY29udGV4dCIpOworCisgICAgc3RhdGUgPSBQR19BUkdJU05VTEwoMCkg PyBOVUxMIDogKEFycmF5QnVpbGRTdGF0ZSAqKSBQR19HRVRBUkdfUE9JTlRFUigwKTsKKyAg ICBpZiAoc3RhdGUgPT0gTlVMTCkKKyAgICAgICAgLyogVGhpcyBzaG91bGRuJ3QgYmUgcG9z c2libGUsIGJ1dCBqdXN0IGluIGNhc2UuLi4uICovCisgICAgICAgIFBHX1JFVFVSTl9OVUxM KCk7CisKKyAgICAvKiBBbHNvIHJldHVybiBOVUxMIGlmIHdlIGhhZCB6ZXJvIGlucHV0cywg bGlrZSBvdGhlciBhZ2dyZWdhdGVzICovCisgICAgcmFuZ2VfY291bnQgPSBzdGF0ZS0mZ3Q7 bmVsZW1zOworICAgIGlmIChyYW5nZV9jb3VudCA9PSAwKQorICAgICAgICBQR19SRVRVUk5f TlVMTCgpOworCisgICAgbWx0cm5ndHlwb2lkID0gZ2V0X2ZuX2V4cHJfcmV0dHlwZShmY2lu Zm8tJmd0O2ZsaW5mbyk7CisgICAgdHlwY2FjaGUgPSBtdWx0aXJhbmdlX2dldF90eXBjYWNo ZShmY2luZm8sIG1sdHJuZ3R5cG9pZCk7CisKKyAgICByYW5nZXMgPSBwYWxsb2MwKHJhbmdl X2NvdW50ICogc2l6ZW9mKFJhbmdlVHlwZSAqKSk7CisgICAgZm9yIChpID0gMDsgaSAmbHQ7 IHJhbmdlX2NvdW50OyBpKyspCisgICAgICAgIHJhbmdlc1tpXSA9IERhdHVtR2V0UmFuZ2VU eXBlUChzdGF0ZS0mZ3Q7ZHZhbHVlc1tpXSk7CisKKyAgICBQR19SRVRVUk5fTVVMVElSQU5H RV9QKG1ha2VfbXVsdGlyYW5nZShtbHRybmd0eXBvaWQsIHR5cGNhY2hlLSZndDtybmd0eXBl LCByYW5nZV9jb3VudCwgcmFuZ2VzKSk7Cit9Cis8L3Byb2dyYW1saXN0aW5nPgorICAgICAg PC9wYXJhPgorICAgICA8L2xpc3RpdGVtPgorICAgIDwvdmFybGlzdGVudHJ5PgogICA8L3Zh cmlhYmxlbGlzdD4KIAogICA8cGFyYT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC94aW5k ZXguc2dtbCBiL2RvYy9zcmMvc2dtbC94aW5kZXguc2dtbAppbmRleCAzYTE5ZGFiMTVlMC4u OTNkZjEzNmViYTMgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC94aW5kZXguc2dtbAorKysg Yi9kb2Mvc3JjL3NnbWwveGluZGV4LnNnbWwKQEAgLTUwOCw3ICs1MDgsNyBAQAogICAgPC90 YWJsZT4KIAogICA8cGFyYT4KLSAgIEdpU1QgaW5kZXhlcyBoYXZlIHR3ZWx2ZSBzdXBwb3J0 IGZ1bmN0aW9ucywgc2V2ZW4gb2Ygd2hpY2ggYXJlIG9wdGlvbmFsLAorICAgR2lTVCBpbmRl eGVzIGhhdmUgdGhpcnRlZW4gc3VwcG9ydCBmdW5jdGlvbnMsIGVpZ2h0IG9mIHdoaWNoIGFy ZSBvcHRpb25hbCwKICAgIGFzIHNob3duIGluIDx4cmVmIGxpbmtlbmQ9InhpbmRleC1naXN0 LXN1cHBvcnQtdGFibGUiLz4uCiAgICAoRm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlIDx4cmVm IGxpbmtlbmQ9Imdpc3QiLz4uKQogICA8L3BhcmE+CkBAIC01OTYsNiArNTk2LDEyIEBACiAg ICAgICAgIHVzZWQgYnkgdGhlIG9wZXJhdG9yIGNsYXNzIChvcHRpb25hbCk8L2VudHJ5Pgog ICAgICAgIDxlbnRyeT4xMjwvZW50cnk+CiAgICAgICA8L3Jvdz4KKyAgICAgIDxyb3c+Cisg ICAgICAgPGVudHJ5PjxmdW5jdGlvbj5yZWZlcmVuY2VkYWdnPC9mdW5jdGlvbj48L2VudHJ5 PgorICAgICAgIDxlbnRyeT5hZ2dyZWdhdGVzIHJlZmVyZW5jZWQgcm93cycgPGxpdGVyYWw+ V0lUSE9VVCBPVkVSTEFQUzwvbGl0ZXJhbD4KKyAgICAgICAgcGFydDwvZW50cnk+CisgICAg ICAgPGVudHJ5PjEzPC9lbnRyeT4KKyAgICAgIDwvcm93PgogICAgICA8L3Rib2R5PgogICAg IDwvdGdyb3VwPgogICAgPC90YWJsZT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9naXN0L2dpc3R2YWxpZGF0ZS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHZh bGlkYXRlLmMKaW5kZXggNjk4ZTAxZWQyZjcuLmFjM2Q5ZTUwZjUwIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0dmFsaWRhdGUuYworKysgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvZ2lzdC9naXN0dmFsaWRhdGUuYwpAQCAtMTUxLDYgKzE1MSwxMSBAQCBnaXN0 dmFsaWRhdGUoT2lkIG9wY2xhc3NvaWQpCiAJCQkJb2sgPSBjaGVja19hbXByb2Nfc2lnbmF0 dXJlKHByb2Nmb3JtLT5hbXByb2MsIElOVDJPSUQsIHRydWUsCiAJCQkJCQkJCQkJCTEsIDEs IElOVDJPSUQpOwogCQkJCWJyZWFrOworCQkJY2FzZSBHSVNUX1JFRkVSRU5DRURfQUdHX1BS T0M6CisJCQkJb2sgPSBjaGVja19hbXByb2Nfc2lnbmF0dXJlKHByb2Nmb3JtLT5hbXByb2Ms IEludmFsaWRPaWQsIGZhbHNlLAorCQkJCQkJCQkJCQkgICAxLCAxLCBvcGNpbnR5cGUpCisJ CQkJCSYmIGNoZWNrX2FtcHJvY19pc19hZ2dyZWdhdGUocHJvY2Zvcm0tPmFtcHJvYyk7CisJ CQkJYnJlYWs7CiAJCQlkZWZhdWx0OgogCQkJCWVyZXBvcnQoSU5GTywKIAkJCQkJCShlcnJj b2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCkBAIC0yNzIsNyArMjc3 LDcgQEAgZ2lzdHZhbGlkYXRlKE9pZCBvcGNsYXNzb2lkKQogCQlpZiAoaSA9PSBHSVNUX0RJ U1RBTkNFX1BST0MgfHwgaSA9PSBHSVNUX0ZFVENIX1BST0MgfHwKIAkJCWkgPT0gR0lTVF9D T01QUkVTU19QUk9DIHx8IGkgPT0gR0lTVF9ERUNPTVBSRVNTX1BST0MgfHwKIAkJCWkgPT0g R0lTVF9PUFRJT05TX1BST0MgfHwgaSA9PSBHSVNUX1NPUlRTVVBQT1JUX1BST0MgfHwKLQkJ CWkgPT0gR0lTVF9TVFJBVE5VTV9QUk9DKQorCQkJaSA9PSBHSVNUX1NUUkFUTlVNX1BST0Mg fHwgaSA9PSBHSVNUX1JFRkVSRU5DRURfQUdHX1BST0MpCiAJCQljb250aW51ZTsJCQkvKiBv cHRpb25hbCBtZXRob2RzICovCiAJCWVyZXBvcnQoSU5GTywKIAkJCQkoZXJyY29kZShFUlJD T0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvYWNjZXNzL2luZGV4L2FtdmFsaWRhdGUuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9pbmRl eC9hbXZhbGlkYXRlLmMKaW5kZXggMzJiYjQ3N2YzMjguLjllYjFiMTcyYWUxIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaW5kZXgvYW12YWxpZGF0ZS5jCisrKyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9pbmRleC9hbXZhbGlkYXRlLmMKQEAgLTE0MCwxMyArMTQwLDMwIEBA IGlkZW50aWZ5X29wZmFtaWx5X2dyb3VwcyhDYXRDTGlzdCAqb3BybGlzdCwgQ2F0Q0xpc3Qg KnByb2NsaXN0KQogCXJldHVybiByZXN1bHQ7CiB9CiAKK2Jvb2wKK2NoZWNrX2FtcHJvY19p c19hZ2dyZWdhdGUoT2lkIGZ1bmNpZCkKK3sKKwlib29sCQlyZXN1bHQ7CisJSGVhcFR1cGxl CXRwOworCUZvcm1fcGdfcHJvYyBwcm9jZm9ybTsKKworCXRwID0gU2VhcmNoU3lzQ2FjaGUx KFBST0NPSUQsIE9iamVjdElkR2V0RGF0dW0oZnVuY2lkKSk7CisJaWYgKCFIZWFwVHVwbGVJ c1ZhbGlkKHRwKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIGZ1 bmN0aW9uICV1IiwgZnVuY2lkKTsKKwlwcm9jZm9ybSA9IChGb3JtX3BnX3Byb2MpIEdFVFNU UlVDVCh0cCk7CisJcmVzdWx0ID0gcHJvY2Zvcm0tPnByb2tpbmQgPT0gJ2EnOworCVJlbGVh c2VTeXNDYWNoZSh0cCk7CisJcmV0dXJuIHJlc3VsdDsKK30KKwogLyoKICAqIFZhbGlkYXRl IHRoZSBzaWduYXR1cmUgKGFyZ3VtZW50IGFuZCByZXN1bHQgdHlwZXMpIG9mIGFuIG9wY2xh c3Mgc3VwcG9ydAogICogZnVuY3Rpb24uICBSZXR1cm4gdHJ1ZSBpZiBPSywgZmFsc2UgaWYg bm90LgogICoKICAqIFRoZSAiLi4uIiByZXByZXNlbnRzIG1heGFyZ3MgYXJndW1lbnQtdHlw ZSBPSURzLiAgSWYgImV4YWN0IiBpcyB0cnVlLCB0aGV5CiAgKiBtdXN0IG1hdGNoIHRoZSBm dW5jdGlvbiBhcmcgdHlwZXMgZXhhY3RseSwgZWxzZSBvbmx5IGJpbmFyeS1jb2VyY2libHku Ci0gKiBJbiBhbnkgY2FzZSB0aGUgZnVuY3Rpb24gcmVzdWx0IHR5cGUgbXVzdCBtYXRjaCBy ZXN0eXBlIGV4YWN0bHkuCisgKiBJbiBhbnkgY2FzZSB0aGUgZnVuY3Rpb24gcmVzdWx0IHR5 cGUgbXVzdCBtYXRjaCByZXN0eXBlIGV4YWN0bHksCisgKiB1bmxlc3MgaXQgaXMgSW52YWxp ZE9pZC4KICAqLwogYm9vbAogY2hlY2tfYW1wcm9jX3NpZ25hdHVyZShPaWQgZnVuY2lkLCBP aWQgcmVzdHlwZSwgYm9vbCBleGFjdCwKQEAgLTE2Myw4ICsxODAsOSBAQCBjaGVja19hbXBy b2Nfc2lnbmF0dXJlKE9pZCBmdW5jaWQsIE9pZCByZXN0eXBlLCBib29sIGV4YWN0LAogCQll bG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgZnVuY3Rpb24gJXUiLCBmdW5j aWQpOwogCXByb2Nmb3JtID0gKEZvcm1fcGdfcHJvYykgR0VUU1RSVUNUKHRwKTsKIAotCWlm IChwcm9jZm9ybS0+cHJvcmV0dHlwZSAhPSByZXN0eXBlIHx8IHByb2Nmb3JtLT5wcm9yZXRz ZXQgfHwKLQkJcHJvY2Zvcm0tPnByb25hcmdzIDwgbWluYXJncyB8fCBwcm9jZm9ybS0+cHJv bmFyZ3MgPiBtYXhhcmdzKQorCWlmICgocHJvY2Zvcm0tPnByb3JldHR5cGUgIT0gcmVzdHlw ZSAmJiBPaWRJc1ZhbGlkKHJlc3R5cGUpKQorCQl8fCBwcm9jZm9ybS0+cHJvcmV0c2V0IHx8 IHByb2Nmb3JtLT5wcm9uYXJncyA8IG1pbmFyZ3MKKwkJfHwgcHJvY2Zvcm0tPnByb25hcmdz ID4gbWF4YXJncykKIAkJcmVzdWx0ID0gZmFsc2U7CiAKIAl2YV9zdGFydChhcCwgbWF4YXJn cyk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvYW12YWxpZGF0ZS5oIGIvc3Jj L2luY2x1ZGUvYWNjZXNzL2FtdmFsaWRhdGUuaAppbmRleCA0MjRhYjYzZmE1YS4uYzc5NWE0 YmMxYmYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9hbXZhbGlkYXRlLmgKKysr IGIvc3JjL2luY2x1ZGUvYWNjZXNzL2FtdmFsaWRhdGUuaApAQCAtMjgsNiArMjgsNyBAQCB0 eXBlZGVmIHN0cnVjdCBPcEZhbWlseU9wRnVuY0dyb3VwCiAKIC8qIEZ1bmN0aW9ucyBpbiBh Y2Nlc3MvaW5kZXgvYW12YWxpZGF0ZS5jICovCiBleHRlcm4gTGlzdCAqaWRlbnRpZnlfb3Bm YW1pbHlfZ3JvdXBzKENhdENMaXN0ICpvcHJsaXN0LCBDYXRDTGlzdCAqcHJvY2xpc3QpOwor ZXh0ZXJuIGJvb2wgY2hlY2tfYW1wcm9jX2lzX2FnZ3JlZ2F0ZShPaWQgZnVuY2lkKTsKIGV4 dGVybiBib29sIGNoZWNrX2FtcHJvY19zaWduYXR1cmUoT2lkIGZ1bmNpZCwgT2lkIHJlc3R5 cGUsIGJvb2wgZXhhY3QsCiAJCQkJCQkJCSAgIGludCBtaW5hcmdzLCBpbnQgbWF4YXJncywu Li4pOwogZXh0ZXJuIGJvb2wgY2hlY2tfYW1vcHRzcHJvY19zaWduYXR1cmUoT2lkIGZ1bmNp ZCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2lzdC5oIGIvc3JjL2luY2x1 ZGUvYWNjZXNzL2dpc3QuaAppbmRleCAyMmRkMDRjMTQxOC4uNjQxNjc3ZTE5MWMgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9naXN0LmgKKysrIGIvc3JjL2luY2x1ZGUvYWNj ZXNzL2dpc3QuaApAQCAtNDAsNyArNDAsOCBAQAogI2RlZmluZSBHSVNUX09QVElPTlNfUFJP QwkJCQkxMAogI2RlZmluZSBHSVNUX1NPUlRTVVBQT1JUX1BST0MJCQkxMQogI2RlZmluZSBH SVNUX1NUUkFUTlVNX1BST0MJCQkJMTIKLSNkZWZpbmUgR0lTVE5Qcm9jcwkJCQkJMTIKKyNk ZWZpbmUgR0lTVF9SRUZFUkVOQ0VEX0FHR19QUk9DCQkxMworI2RlZmluZSBHSVNUTlByb2Nz CQkJCQkxMwogCiAvKgogICogUGFnZSBvcGFxdWUgZGF0YSBpbiBhIEdpU1QgaW5kZXggcGFn ZS4KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfYW1wcm9jLmRhdCBiL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvcGdfYW1wcm9jLmRhdAppbmRleCAzNTI1NThjMWYwNi4uMWQz ZDVmY2Y0ZDggMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfYW1wcm9jLmRh dAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2FtcHJvYy5kYXQKQEAgLTYxMCw2ICs2 MTAsOSBAQAogeyBhbXByb2NmYW1pbHkgPT4gJ2dpc3QvcmFuZ2Vfb3BzJywgYW1wcm9jbGVm dHR5cGUgPT4gJ2FueXJhbmdlJywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdhbnlyYW5nZScs IGFtcHJvY251bSA9PiAnMTInLAogICBhbXByb2MgPT4gJ2dpc3Rfc3RyYXRudW1faWRlbnRp dHknIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnZ2lzdC9yYW5nZV9vcHMnLCBhbXByb2NsZWZ0 dHlwZSA9PiAnYW55cmFuZ2UnLAorICBhbXByb2NyaWdodHR5cGUgPT4gJ2FueXJhbmdlJywg YW1wcm9jbnVtID0+ICcxMycsCisgIGFtcHJvYyA9PiAncmFuZ2VfYWdnKGFueXJhbmdlKScg fSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdnaXN0L25ldHdvcmtfb3BzJywgYW1wcm9jbGVmdHR5 cGUgPT4gJ2luZXQnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ2luZXQnLCBhbXByb2NudW0g PT4gJzEnLAogICBhbXByb2MgPT4gJ2luZXRfZ2lzdF9jb25zaXN0ZW50JyB9LApAQCAtNjUw LDYgKzY1Myw5IEBACiB7IGFtcHJvY2ZhbWlseSA9PiAnZ2lzdC9tdWx0aXJhbmdlX29wcycs IGFtcHJvY2xlZnR0eXBlID0+ICdhbnltdWx0aXJhbmdlJywKICAgYW1wcm9jcmlnaHR0eXBl ID0+ICdhbnltdWx0aXJhbmdlJywgYW1wcm9jbnVtID0+ICcxMicsCiAgIGFtcHJvYyA9PiAn Z2lzdF9zdHJhdG51bV9pZGVudGl0eScgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdnaXN0L211 bHRpcmFuZ2Vfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2FueW11bHRpcmFuZ2UnLAorICBh bXByb2NyaWdodHR5cGUgPT4gJ2FueW11bHRpcmFuZ2UnLCBhbXByb2NudW0gPT4gJzEzJywK KyAgYW1wcm9jID0+ICdyYW5nZV9hZ2coYW55bXVsdGlyYW5nZSknIH0sCiAKICMgZ2luCiB7 IGFtcHJvY2ZhbWlseSA9PiAnZ2luL2FycmF5X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdh bnlhcnJheScsCi0tIAoyLjQyLjAKCg== --------------XirkSnpA0J2rgDaW8dSEFd2s Content-Type: text/x-patch; charset=UTF-8; name="v25-0003-Refactor-FK-operator-lookup.patch" Content-Disposition: attachment; filename="v25-0003-Refactor-FK-operator-lookup.patch" Content-Transfer-Encoding: base64 RnJvbSBhOTQxYWFkOTA1ZDk1MjhiNzQ1ZGFiNGIwNTJmNGQ5OTUxNGQ3MDhhIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IFdlZCwgMjggRmViIDIwMjQgMjE6NDU6MzcgLTA4 MDAKU3ViamVjdDogW1BBVENIIHYyNSAzLzhdIFJlZmFjdG9yIEZLIG9wZXJhdG9yIGxvb2t1 cAoKRGVmaW5lIEZpbmRGS0NvbXBhcmlzb25PcGVyYXRvcnMgdG8gZG8gdGhlIHdvcmsgbG9v a2luZyB1cCB0aGUgb3BlcmF0b3JzCmZvciBmb3JlaWduIGtleXMuIFRoaXMgY3V0cyBkb3du IG9uIHRoZSBsZW5ndGggb2YKQVRBZGRGb3JlaWduS2V5Q29uc3RyYWludC4KLS0tCiBzcmMv YmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyB8IDM5OCArKysrKysrKysrKysrKysrKy0t LS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMjE3IGluc2VydGlvbnMoKyksIDE4MSBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNt ZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCmluZGV4IGY3OTg3OTQ1 NTYzLi4wMmU1ZDhmOGUzOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFi bGVjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKQEAgLTU1 MSw2ICs1NTEsMTQgQEAgc3RhdGljIHZvaWQgR2V0Rm9yZWlnbktleUNoZWNrVHJpZ2dlcnMo UmVsYXRpb24gdHJpZ3JlbCwKIAkJCQkJCQkJCSAgIE9pZCBjb25vaWQsIE9pZCBjb25mcmVs aWQsIE9pZCBjb25yZWxpZCwKIAkJCQkJCQkJCSAgIE9pZCAqaW5zZXJ0VHJpZ2dlck9pZCwK IAkJCQkJCQkJCSAgIE9pZCAqdXBkYXRlVHJpZ2dlck9pZCk7CitzdGF0aWMgdm9pZCBGaW5k RktDb21wYXJpc29uT3BlcmF0b3JzKENvbnN0cmFpbnQgKmZrY29uc3RyYWludCwKKwkJCQkJ CQkJCSAgQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLAorCQkJCQkJCQkJICBpbnQgaSwKKwkJCQkJ CQkJCSAgaW50MTYgKmZrYXR0bnVtLAorCQkJCQkJCQkJICBib29sICpvbGRfY2hlY2tfb2ss CisJCQkJCQkJCQkgIExpc3RDZWxsICoqb2xkX3BmZXFvcF9pdGVtLAorCQkJCQkJCQkJICBP aWQgcGt0eXBlLCBPaWQgZmt0eXBlLCBPaWQgb3BjbGFzcywKKwkJCQkJCQkJCSAgT2lkICpw ZmVxb3BPdXQsIE9pZCAqcHBlcW9wT3V0LCBPaWQgKmZmZXFvcE91dCk7CiBzdGF0aWMgdm9p ZCBBVEV4ZWNEcm9wQ29uc3RyYWludChSZWxhdGlvbiByZWwsIGNvbnN0IGNoYXIgKmNvbnN0 ck5hbWUsCiAJCQkJCQkJCSBEcm9wQmVoYXZpb3IgYmVoYXZpb3IsIGJvb2wgcmVjdXJzZSwK IAkJCQkJCQkJIGJvb2wgbWlzc2luZ19vaywgTE9DS01PREUgbG9ja21vZGUpOwpAQCAtOTk5 NSwxODcgKzEwMDAzLDExIEBAIEFUQWRkRm9yZWlnbktleUNvbnN0cmFpbnQoTGlzdCAqKndx dWV1ZSwgQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLCBSZWxhdGlvbiByZWwsCiAKIAlmb3IgKGkg PSAwOyBpIDwgbnVtcGtzOyBpKyspCiAJewotCQlPaWQJCQlwa3R5cGUgPSBwa3R5cG9pZFtp XTsKLQkJT2lkCQkJZmt0eXBlID0gZmt0eXBvaWRbaV07Ci0JCU9pZAkJCWZrdHlwZWQ7Ci0J CUhlYXBUdXBsZQljbGFfaHQ7Ci0JCUZvcm1fcGdfb3BjbGFzcyBjbGFfdHVwOwotCQlPaWQJ CQlhbWlkOwotCQlPaWQJCQlvcGZhbWlseTsKLQkJT2lkCQkJb3BjaW50eXBlOwotCQlPaWQJ CQlwZmVxb3A7Ci0JCU9pZAkJCXBwZXFvcDsKLQkJT2lkCQkJZmZlcW9wOwotCQlpbnQxNgkJ ZXFzdHJhdGVneTsKLQkJT2lkCQkJcGZlcW9wX3JpZ2h0OwotCi0JCS8qIFdlIG5lZWQgc2V2 ZXJhbCBmaWVsZHMgb3V0IG9mIHRoZSBwZ19vcGNsYXNzIGVudHJ5ICovCi0JCWNsYV9odCA9 IFNlYXJjaFN5c0NhY2hlMShDTEFPSUQsIE9iamVjdElkR2V0RGF0dW0ob3BjbGFzc2VzW2ld KSk7Ci0JCWlmICghSGVhcFR1cGxlSXNWYWxpZChjbGFfaHQpKQotCQkJZWxvZyhFUlJPUiwg ImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIG9wY2xhc3MgJXUiLCBvcGNsYXNzZXNbaV0pOwot CQljbGFfdHVwID0gKEZvcm1fcGdfb3BjbGFzcykgR0VUU1RSVUNUKGNsYV9odCk7Ci0JCWFt aWQgPSBjbGFfdHVwLT5vcGNtZXRob2Q7Ci0JCW9wZmFtaWx5ID0gY2xhX3R1cC0+b3BjZmFt aWx5OwotCQlvcGNpbnR5cGUgPSBjbGFfdHVwLT5vcGNpbnR5cGU7Ci0JCVJlbGVhc2VTeXND YWNoZShjbGFfaHQpOwotCi0JCS8qCi0JCSAqIENoZWNrIGl0J3MgYSBidHJlZTsgY3VycmVu dGx5IHRoaXMgY2FuIG5ldmVyIGZhaWwgc2luY2Ugbm8gb3RoZXIKLQkJICogaW5kZXggQU1z IHN1cHBvcnQgdW5pcXVlIGluZGV4ZXMuICBJZiB3ZSBldmVyIGRpZCBoYXZlIG90aGVyIHR5 cGVzCi0JCSAqIG9mIHVuaXF1ZSBpbmRleGVzLCB3ZSdkIG5lZWQgYSB3YXkgdG8gZGV0ZXJt aW5lIHdoaWNoIG9wZXJhdG9yCi0JCSAqIHN0cmF0ZWd5IG51bWJlciBpcyBlcXVhbGl0eS4g IChJcyBpdCByZWFzb25hYmxlIHRvIGluc2lzdCB0aGF0Ci0JCSAqIGV2ZXJ5IHN1Y2ggaW5k ZXggQU0gdXNlIGJ0cmVlJ3MgbnVtYmVyIGZvciBlcXVhbGl0eT8pCi0JCSAqLwotCQlpZiAo YW1pZCAhPSBCVFJFRV9BTV9PSUQpCi0JCQllbG9nKEVSUk9SLCAib25seSBiLXRyZWUgaW5k ZXhlcyBhcmUgc3VwcG9ydGVkIGZvciBmb3JlaWduIGtleXMiKTsKLQkJZXFzdHJhdGVneSA9 IEJURXF1YWxTdHJhdGVneU51bWJlcjsKLQotCQkvKgotCQkgKiBUaGVyZSBoYWQgYmV0dGVy IGJlIGEgcHJpbWFyeSBlcXVhbGl0eSBvcGVyYXRvciBmb3IgdGhlIGluZGV4LgotCQkgKiBX ZSdsbCB1c2UgaXQgZm9yIFBLID0gUEsgY29tcGFyaXNvbnMuCi0JCSAqLwotCQlwcGVxb3Ag PSBnZXRfb3BmYW1pbHlfbWVtYmVyKG9wZmFtaWx5LCBvcGNpbnR5cGUsIG9wY2ludHlwZSwK LQkJCQkJCQkJCSBlcXN0cmF0ZWd5KTsKLQotCQlpZiAoIU9pZElzVmFsaWQocHBlcW9wKSkK LQkJCWVsb2coRVJST1IsICJtaXNzaW5nIG9wZXJhdG9yICVkKCV1LCV1KSBpbiBvcGZhbWls eSAldSIsCi0JCQkJIGVxc3RyYXRlZ3ksIG9wY2ludHlwZSwgb3BjaW50eXBlLCBvcGZhbWls eSk7Ci0KLQkJLyoKLQkJICogQXJlIHRoZXJlIGVxdWFsaXR5IG9wZXJhdG9ycyB0aGF0IHRh a2UgZXhhY3RseSB0aGUgRksgdHlwZT8gQXNzdW1lCi0JCSAqIHdlIHNob3VsZCBsb29rIHRo cm91Z2ggYW55IGRvbWFpbiBoZXJlLgotCQkgKi8KLQkJZmt0eXBlZCA9IGdldEJhc2VUeXBl KGZrdHlwZSk7Ci0KLQkJcGZlcW9wID0gZ2V0X29wZmFtaWx5X21lbWJlcihvcGZhbWlseSwg b3BjaW50eXBlLCBma3R5cGVkLAotCQkJCQkJCQkJIGVxc3RyYXRlZ3kpOwotCQlpZiAoT2lk SXNWYWxpZChwZmVxb3ApKQotCQl7Ci0JCQlwZmVxb3BfcmlnaHQgPSBma3R5cGVkOwotCQkJ ZmZlcW9wID0gZ2V0X29wZmFtaWx5X21lbWJlcihvcGZhbWlseSwgZmt0eXBlZCwgZmt0eXBl ZCwKLQkJCQkJCQkJCQkgZXFzdHJhdGVneSk7Ci0JCX0KLQkJZWxzZQotCQl7Ci0JCQkvKiBr ZWVwIGNvbXBpbGVyIHF1aWV0ICovCi0JCQlwZmVxb3BfcmlnaHQgPSBJbnZhbGlkT2lkOwot CQkJZmZlcW9wID0gSW52YWxpZE9pZDsKLQkJfQotCi0JCWlmICghKE9pZElzVmFsaWQocGZl cW9wKSAmJiBPaWRJc1ZhbGlkKGZmZXFvcCkpKQotCQl7Ci0JCQkvKgotCQkJICogT3RoZXJ3 aXNlLCBsb29rIGZvciBhbiBpbXBsaWNpdCBjYXN0IGZyb20gdGhlIEZLIHR5cGUgdG8gdGhl Ci0JCQkgKiBvcGNpbnR5cGUsIGFuZCBpZiBmb3VuZCwgdXNlIHRoZSBwcmltYXJ5IGVxdWFs aXR5IG9wZXJhdG9yLgotCQkJICogVGhpcyBpcyBhIGJpdCB0cmlja3kgYmVjYXVzZSBvcGNp bnR5cGUgbWlnaHQgYmUgYSBwb2x5bW9ycGhpYwotCQkJICogdHlwZSBzdWNoIGFzIEFOWUFS UkFZIG9yIEFOWUVOVU07IHNvIHdoYXQgd2UgaGF2ZSB0byB0ZXN0IGlzCi0JCQkgKiB3aGV0 aGVyIHRoZSB0d28gYWN0dWFsIGNvbHVtbiB0eXBlcyBjYW4gYmUgY29uY3VycmVudGx5IGNh c3QgdG8KLQkJCSAqIHRoYXQgdHlwZS4gIChPdGhlcndpc2UsIHdlJ2QgZmFpbCB0byByZWpl Y3QgY29tYmluYXRpb25zIHN1Y2gKLQkJCSAqIGFzIGludFtdIGFuZCBwb2ludFtdLikKLQkJ CSAqLwotCQkJT2lkCQkJaW5wdXRfdHlwZWlkc1syXTsKLQkJCU9pZAkJCXRhcmdldF90eXBl aWRzWzJdOwotCi0JCQlpbnB1dF90eXBlaWRzWzBdID0gcGt0eXBlOwotCQkJaW5wdXRfdHlw ZWlkc1sxXSA9IGZrdHlwZTsKLQkJCXRhcmdldF90eXBlaWRzWzBdID0gb3BjaW50eXBlOwot CQkJdGFyZ2V0X3R5cGVpZHNbMV0gPSBvcGNpbnR5cGU7Ci0JCQlpZiAoY2FuX2NvZXJjZV90 eXBlKDIsIGlucHV0X3R5cGVpZHMsIHRhcmdldF90eXBlaWRzLAotCQkJCQkJCQlDT0VSQ0lP Tl9JTVBMSUNJVCkpCi0JCQl7Ci0JCQkJcGZlcW9wID0gZmZlcW9wID0gcHBlcW9wOwotCQkJ CXBmZXFvcF9yaWdodCA9IG9wY2ludHlwZTsKLQkJCX0KLQkJfQotCi0JCWlmICghKE9pZElz VmFsaWQocGZlcW9wKSAmJiBPaWRJc1ZhbGlkKGZmZXFvcCkpKQotCQkJZXJlcG9ydChFUlJP UiwKLQkJCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBVFlQRV9NSVNNQVRDSCksCi0JCQkJCSBl cnJtc2coImZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgXCIlc1wiIGNhbm5vdCBiZSBpbXBsZW1l bnRlZCIsCi0JCQkJCQkJZmtjb25zdHJhaW50LT5jb25uYW1lKSwKLQkJCQkJIGVycmRldGFp bCgiS2V5IGNvbHVtbnMgXCIlc1wiIGFuZCBcIiVzXCIgIgotCQkJCQkJCSAgICJhcmUgb2Yg aW5jb21wYXRpYmxlIHR5cGVzOiAlcyBhbmQgJXMuIiwKLQkJCQkJCQkgICBzdHJWYWwobGlz dF9udGgoZmtjb25zdHJhaW50LT5ma19hdHRycywgaSkpLAotCQkJCQkJCSAgIHN0clZhbChs aXN0X250aChma2NvbnN0cmFpbnQtPnBrX2F0dHJzLCBpKSksCi0JCQkJCQkJICAgZm9ybWF0 X3R5cGVfYmUoZmt0eXBlKSwKLQkJCQkJCQkgICBmb3JtYXRfdHlwZV9iZShwa3R5cGUpKSkp OwotCi0JCWlmIChvbGRfY2hlY2tfb2spCi0JCXsKLQkJCS8qCi0JCQkgKiBXaGVuIGEgcGZl cW9wIGNoYW5nZXMsIHJldmFsaWRhdGUgdGhlIGNvbnN0cmFpbnQuICBXZSBjb3VsZAotCQkJ ICogcGVybWl0IGludHJhLW9wZmFtaWx5IGNoYW5nZXMsIGJ1dCB0aGF0IGFkZHMgc3VidGxl IGNvbXBsZXhpdHkKLQkJCSAqIHdpdGhvdXQgYW55IGNvbmNyZXRlIGJlbmVmaXQgZm9yIGNv cmUgdHlwZXMuICBXZSBuZWVkIG5vdAotCQkJICogYXNzZXNzIHBwZXFvcCBvciBmZmVxb3As IHdoaWNoIFJJX0luaXRpYWxfQ2hlY2soKSBkb2VzIG5vdCB1c2UuCi0JCQkgKi8KLQkJCW9s ZF9jaGVja19vayA9IChwZmVxb3AgPT0gbGZpcnN0X29pZChvbGRfcGZlcW9wX2l0ZW0pKTsK LQkJCW9sZF9wZmVxb3BfaXRlbSA9IGxuZXh0KGZrY29uc3RyYWludC0+b2xkX2NvbnBmZXFv cCwKLQkJCQkJCQkJCW9sZF9wZmVxb3BfaXRlbSk7Ci0JCX0KLQkJaWYgKG9sZF9jaGVja19v aykKLQkJewotCQkJT2lkCQkJb2xkX2ZrdHlwZTsKLQkJCU9pZAkJCW5ld19ma3R5cGU7Ci0J CQlDb2VyY2lvblBhdGhUeXBlIG9sZF9wYXRodHlwZTsKLQkJCUNvZXJjaW9uUGF0aFR5cGUg bmV3X3BhdGh0eXBlOwotCQkJT2lkCQkJb2xkX2Nhc3RmdW5jOwotCQkJT2lkCQkJbmV3X2Nh c3RmdW5jOwotCQkJRm9ybV9wZ19hdHRyaWJ1dGUgYXR0ciA9IFR1cGxlRGVzY0F0dHIodGFi LT5vbGREZXNjLAotCQkJCQkJCQkJCQkJICAgZmthdHRudW1baV0gLSAxKTsKLQotCQkJLyoK LQkJCSAqIElkZW50aWZ5IGNvZXJjaW9uIHBhdGh3YXlzIGZyb20gZWFjaCBvZiB0aGUgb2xk IGFuZCBuZXcgRkstc2lkZQotCQkJICogY29sdW1uIHR5cGVzIHRvIHRoZSByaWdodCAoZm9y ZWlnbikgb3BlcmFuZCB0eXBlIG9mIHRoZSBwZmVxb3AuCi0JCQkgKiBXZSBtYXkgYXNzdW1l IHRoYXQgcGdfY29uc3RyYWludC5jb25rZXkgaXMgbm90IGNoYW5naW5nLgotCQkJICovCi0J CQlvbGRfZmt0eXBlID0gYXR0ci0+YXR0dHlwaWQ7Ci0JCQluZXdfZmt0eXBlID0gZmt0eXBl OwotCQkJb2xkX3BhdGh0eXBlID0gZmluZEZrZXlDYXN0KHBmZXFvcF9yaWdodCwgb2xkX2Zr dHlwZSwKLQkJCQkJCQkJCQkmb2xkX2Nhc3RmdW5jKTsKLQkJCW5ld19wYXRodHlwZSA9IGZp bmRGa2V5Q2FzdChwZmVxb3BfcmlnaHQsIG5ld19ma3R5cGUsCi0JCQkJCQkJCQkJJm5ld19j YXN0ZnVuYyk7Ci0KLQkJCS8qCi0JCQkgKiBVcG9uIGEgY2hhbmdlIHRvIHRoZSBjYXN0IGZy b20gdGhlIEZLIGNvbHVtbiB0byBpdHMgcGZlcW9wCi0JCQkgKiBvcGVyYW5kLCByZXZhbGlk YXRlIHRoZSBjb25zdHJhaW50LiAgRm9yIHRoaXMgZXZhbHVhdGlvbiwgYQotCQkJICogYmlu YXJ5IGNvZXJjaW9uIGNhc3QgaXMgZXF1aXZhbGVudCB0byBubyBjYXN0IGF0IGFsbC4gIFdo aWxlCi0JCQkgKiB0eXBlIGltcGxlbWVudG9ycyBzaG91bGQgZGVzaWduIGltcGxpY2l0IGNh c3RzIHdpdGggYW4gZXllCi0JCQkgKiB0b3dhcmQgY29uc2lzdGVuY3kgb2Ygb3BlcmF0aW9u cyBsaWtlIGVxdWFsaXR5LCB3ZSBjYW5ub3QKLQkJCSAqIGFzc3VtZSBoZXJlIHRoYXQgdGhl eSBoYXZlIGRvbmUgc28uCi0JCQkgKgotCQkJICogQSBmdW5jdGlvbiB3aXRoIGEgcG9seW1v cnBoaWMgYXJndW1lbnQgY291bGQgY2hhbmdlIGJlaGF2aW9yCi0JCQkgKiBhcmJpdHJhcmls eSBpbiByZXNwb25zZSB0byBnZXRfZm5fZXhwcl9hcmd0eXBlKCkuICBUaGVyZWZvcmUsCi0J CQkgKiB3aGVuIHRoZSBjYXN0IGRlc3RpbmF0aW9uIGlzIHBvbHltb3JwaGljLCB3ZSBvbmx5 IGF2b2lkCi0JCQkgKiByZXZhbGlkYXRpb24gaWYgdGhlIGlucHV0IHR5cGUgaGFzIG5vdCBj aGFuZ2VkIGF0IGFsbC4gIEdpdmVuCi0JCQkgKiBqdXN0IHRoZSBjb3JlIGRhdGEgdHlwZXMg YW5kIG9wZXJhdG9yIGNsYXNzZXMsIHRoaXMgcmVxdWlyZW1lbnQKLQkJCSAqIHByZXZlbnRz IG5vIHdvdWxkLWJlIG9wdGltaXphdGlvbnMuCi0JCQkgKgotCQkJICogSWYgdGhlIGNhc3Qg Y29udmVydHMgZnJvbSBhIGJhc2UgdHlwZSB0byBhIGRvbWFpbiB0aGVyZW9uLCB0aGVuCi0J CQkgKiB0aGF0IGRvbWFpbiB0eXBlIG11c3QgYmUgdGhlIG9wY2ludHlwZSBvZiB0aGUgdW5p cXVlIGluZGV4LgotCQkJICogTmVjZXNzYXJpbHksIHRoZSBwcmltYXJ5IGtleSBjb2x1bW4g bXVzdCB0aGVuIGJlIG9mIHRoZSBkb21haW4KLQkJCSAqIHR5cGUuICBTaW5jZSB0aGUgY29u c3RyYWludCB3YXMgcHJldmlvdXNseSB2YWxpZCwgYWxsIHZhbHVlcyBvbgotCQkJICogdGhl IGZvcmVpZ24gc2lkZSBuZWNlc3NhcmlseSBleGlzdCBvbiB0aGUgcHJpbWFyeSBzaWRlIGFu ZCBpbgotCQkJICogdHVybiBjb25mb3JtIHRvIHRoZSBkb21haW4uICBDb25zZXF1ZW50bHks IHdlIG5lZWQgbm90IHRyZWF0Ci0JCQkgKiBkb21haW5zIHNwZWNpYWxseSBoZXJlLgotCQkJ ICoKLQkJCSAqIFNpbmNlIHdlIHJlcXVpcmUgdGhhdCBhbGwgY29sbGF0aW9ucyBzaGFyZSB0 aGUgc2FtZSBub3Rpb24gb2YKLQkJCSAqIGVxdWFsaXR5ICh3aGljaCB0aGV5IGRvLCBiZWNh dXNlIHRleHRlcSByZWR1Y2VzIHRvIGJpdHdpc2UKLQkJCSAqIGVxdWFsaXR5KSwgd2UgZG9u J3QgY29tcGFyZSBjb2xsYXRpb24gaGVyZS4KLQkJCSAqCi0JCQkgKiBXZSBuZWVkIG5vdCBk aXJlY3RseSBjb25zaWRlciB0aGUgUEsgdHlwZS4gIEl0J3MgbmVjZXNzYXJpbHkKLQkJCSAq IGJpbmFyeSBjb2VyY2libGUgdG8gdGhlIG9wY2ludHlwZSBvZiB0aGUgdW5pcXVlIGluZGV4 IGNvbHVtbiwKLQkJCSAqIGFuZCByaV90cmlnZ2Vycy5jIHdpbGwgb25seSBkZWFsIHdpdGgg UEsgZGF0dW1zIGluIHRlcm1zIG9mCi0JCQkgKiB0aGF0IG9wY2ludHlwZS4gIENoYW5naW5n IHRoZSBvcGNpbnR5cGUgYWxzbyBjaGFuZ2VzIHBmZXFvcC4KLQkJCSAqLwotCQkJb2xkX2No ZWNrX29rID0gKG5ld19wYXRodHlwZSA9PSBvbGRfcGF0aHR5cGUgJiYKLQkJCQkJCQluZXdf Y2FzdGZ1bmMgPT0gb2xkX2Nhc3RmdW5jICYmCi0JCQkJCQkJKCFJc1BvbHltb3JwaGljVHlw ZShwZmVxb3BfcmlnaHQpIHx8Ci0JCQkJCQkJIG5ld19ma3R5cGUgPT0gb2xkX2ZrdHlwZSkp OwotCQl9Ci0KLQkJcGZlcW9wZXJhdG9yc1tpXSA9IHBmZXFvcDsKLQkJcHBlcW9wZXJhdG9y c1tpXSA9IHBwZXFvcDsKLQkJZmZlcW9wZXJhdG9yc1tpXSA9IGZmZXFvcDsKKwkJRmluZEZL Q29tcGFyaXNvbk9wZXJhdG9ycyhma2NvbnN0cmFpbnQsIHRhYiwgaSwgZmthdHRudW0sCisJ CQkJCQkJCSAgJm9sZF9jaGVja19vaywgJm9sZF9wZmVxb3BfaXRlbSwKKwkJCQkJCQkJICBw a3R5cG9pZFtpXSwgZmt0eXBvaWRbaV0sIG9wY2xhc3Nlc1tpXSwKKwkJCQkJCQkJICAmcGZl cW9wZXJhdG9yc1tpXSwgJnBwZXFvcGVyYXRvcnNbaV0sCisJCQkJCQkJCSAgJmZmZXFvcGVy YXRvcnNbaV0pOwogCX0KIAogCS8qCkBAIC0xMTIyNyw2ICsxMTA1OSwyMTAgQEAgQ2xvbmVG a1JlZmVyZW5jaW5nKExpc3QgKip3cXVldWUsIFJlbGF0aW9uIHBhcmVudFJlbCwgUmVsYXRp b24gcGFydFJlbCkKIAl0YWJsZV9jbG9zZSh0cmlncmVsLCBSb3dFeGNsdXNpdmVMb2NrKTsK IH0KIAorLyoKKyAqIEZpbmRGS0NvbXBhcmlzb25PcGVyYXRvcnMgLQorICoKKyAqIEdldHMg dGhlIG9wZXJhdG9ycyBmb3IgcGZlcW9wT3V0LCBwcGVxb3BPdXQsIGFuZCBmZmVxb3BPdXQu CisgKiBTZXRzIG9sZF9jaGVja19vayBpZiB3ZSBjYW4gYXZvaWQgcmUtdmFsaWRhdGluZyB0 aGUgY29uc3RyYWludC4KKyAqIFNldHMgb2xkX3BmZXFvcF9pdGVtIHRvIHRoZSBvbGQgcGZl cW9wIHZhbHVlcy4KKyAqLworc3RhdGljIHZvaWQKK0ZpbmRGS0NvbXBhcmlzb25PcGVyYXRv cnMoQ29uc3RyYWludCAqZmtjb25zdHJhaW50LAorCQkJCQkJICBBbHRlcmVkVGFibGVJbmZv ICp0YWIsCisJCQkJCQkgIGludCBpLAorCQkJCQkJICBpbnQxNiAqZmthdHRudW0sCisJCQkJ CQkgIGJvb2wgKm9sZF9jaGVja19vaywKKwkJCQkJCSAgTGlzdENlbGwgKipvbGRfcGZlcW9w X2l0ZW0sCisJCQkJCQkgIE9pZCBwa3R5cGUsIE9pZCBma3R5cGUsIE9pZCBvcGNsYXNzLAor CQkJCQkJICBPaWQgKnBmZXFvcE91dCwgT2lkICpwcGVxb3BPdXQsIE9pZCAqZmZlcW9wT3V0 KQoreworCU9pZAkJCWZrdHlwZWQ7CisJSGVhcFR1cGxlCWNsYV9odDsKKwlGb3JtX3BnX29w Y2xhc3MgY2xhX3R1cDsKKwlPaWQJCQlhbWlkOworCU9pZAkJCW9wZmFtaWx5OworCU9pZAkJ CW9wY2ludHlwZTsKKwlPaWQJCQlwZmVxb3A7CisJT2lkCQkJcHBlcW9wOworCU9pZAkJCWZm ZXFvcDsKKwlpbnQxNgkJZXFzdHJhdGVneTsKKwlPaWQJCQlwZmVxb3BfcmlnaHQ7CisKKwkv KiBXZSBuZWVkIHNldmVyYWwgZmllbGRzIG91dCBvZiB0aGUgcGdfb3BjbGFzcyBlbnRyeSAq LworCWNsYV9odCA9IFNlYXJjaFN5c0NhY2hlMShDTEFPSUQsIE9iamVjdElkR2V0RGF0dW0o b3BjbGFzcykpOworCWlmICghSGVhcFR1cGxlSXNWYWxpZChjbGFfaHQpKQorCQllbG9nKEVS Uk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3Igb3BjbGFzcyAldSIsIG9wY2xhc3MpOwor CWNsYV90dXAgPSAoRm9ybV9wZ19vcGNsYXNzKSBHRVRTVFJVQ1QoY2xhX2h0KTsKKwlhbWlk ID0gY2xhX3R1cC0+b3BjbWV0aG9kOworCW9wZmFtaWx5ID0gY2xhX3R1cC0+b3BjZmFtaWx5 OworCW9wY2ludHlwZSA9IGNsYV90dXAtPm9wY2ludHlwZTsKKwlSZWxlYXNlU3lzQ2FjaGUo Y2xhX2h0KTsKKworCS8qCisJICogQ2hlY2sgaXQncyBhIGJ0cmVlOyBjdXJyZW50bHkgdGhp cyBjYW4gbmV2ZXIgZmFpbCBzaW5jZSBubyBvdGhlcgorCSAqIGluZGV4IEFNcyBzdXBwb3J0 IHVuaXF1ZSBpbmRleGVzLiAgSWYgd2UgZXZlciBkaWQgaGF2ZSBvdGhlciB0eXBlcworCSAq IG9mIHVuaXF1ZSBpbmRleGVzLCB3ZSdkIG5lZWQgYSB3YXkgdG8gZGV0ZXJtaW5lIHdoaWNo IG9wZXJhdG9yCisJICogc3RyYXRlZ3kgbnVtYmVyIGlzIGVxdWFsaXR5LiAgKElzIGl0IHJl YXNvbmFibGUgdG8gaW5zaXN0IHRoYXQKKwkgKiBldmVyeSBzdWNoIGluZGV4IEFNIHVzZSBi dHJlZSdzIG51bWJlciBmb3IgZXF1YWxpdHk/KQorCSAqLworCWlmIChhbWlkICE9IEJUUkVF X0FNX09JRCkKKwkJZWxvZyhFUlJPUiwgIm9ubHkgYi10cmVlIGluZGV4ZXMgYXJlIHN1cHBv cnRlZCBmb3IgZm9yZWlnbiBrZXlzIik7CisJZXFzdHJhdGVneSA9IEJURXF1YWxTdHJhdGVn eU51bWJlcjsKKworCS8qCisJICogVGhlcmUgaGFkIGJldHRlciBiZSBhIHByaW1hcnkgZXF1 YWxpdHkgb3BlcmF0b3IgZm9yIHRoZSBpbmRleC4KKwkgKiBXZSdsbCB1c2UgaXQgZm9yIFBL ID0gUEsgY29tcGFyaXNvbnMuCisJICovCisJcHBlcW9wID0gZ2V0X29wZmFtaWx5X21lbWJl cihvcGZhbWlseSwgb3BjaW50eXBlLCBvcGNpbnR5cGUsCisJCQkJCQkJCSBlcXN0cmF0ZWd5 KTsKKworCWlmICghT2lkSXNWYWxpZChwcGVxb3ApKQorCQllbG9nKEVSUk9SLCAibWlzc2lu ZyBvcGVyYXRvciAlZCgldSwldSkgaW4gb3BmYW1pbHkgJXUiLAorCQkJIGVxc3RyYXRlZ3ks IG9wY2ludHlwZSwgb3BjaW50eXBlLCBvcGZhbWlseSk7CisKKwkvKgorCSAqIEFyZSB0aGVy ZSBlcXVhbGl0eSBvcGVyYXRvcnMgdGhhdCB0YWtlIGV4YWN0bHkgdGhlIEZLIHR5cGU/IEFz c3VtZQorCSAqIHdlIHNob3VsZCBsb29rIHRocm91Z2ggYW55IGRvbWFpbiBoZXJlLgorCSAq LworCWZrdHlwZWQgPSBnZXRCYXNlVHlwZShma3R5cGUpOworCisJcGZlcW9wID0gZ2V0X29w ZmFtaWx5X21lbWJlcihvcGZhbWlseSwgb3BjaW50eXBlLCBma3R5cGVkLAorCQkJCQkJCQkg ZXFzdHJhdGVneSk7CisJaWYgKE9pZElzVmFsaWQocGZlcW9wKSkKKwl7CisJCXBmZXFvcF9y aWdodCA9IGZrdHlwZWQ7CisJCWZmZXFvcCA9IGdldF9vcGZhbWlseV9tZW1iZXIob3BmYW1p bHksIGZrdHlwZWQsIGZrdHlwZWQsCisJCQkJCQkJCQkgZXFzdHJhdGVneSk7CisJfQorCWVs c2UKKwl7CisJCS8qIGtlZXAgY29tcGlsZXIgcXVpZXQgKi8KKwkJcGZlcW9wX3JpZ2h0ID0g SW52YWxpZE9pZDsKKwkJZmZlcW9wID0gSW52YWxpZE9pZDsKKwl9CisKKwlpZiAoIShPaWRJ c1ZhbGlkKHBmZXFvcCkgJiYgT2lkSXNWYWxpZChmZmVxb3ApKSkKKwl7CisJCS8qCisJCSAq IE90aGVyd2lzZSwgbG9vayBmb3IgYW4gaW1wbGljaXQgY2FzdCBmcm9tIHRoZSBGSyB0eXBl IHRvIHRoZQorCQkgKiBvcGNpbnR5cGUsIGFuZCBpZiBmb3VuZCwgdXNlIHRoZSBwcmltYXJ5 IGVxdWFsaXR5IG9wZXJhdG9yLgorCQkgKiBUaGlzIGlzIGEgYml0IHRyaWNreSBiZWNhdXNl IG9wY2ludHlwZSBtaWdodCBiZSBhIHBvbHltb3JwaGljCisJCSAqIHR5cGUgc3VjaCBhcyBB TllBUlJBWSBvciBBTllFTlVNOyBzbyB3aGF0IHdlIGhhdmUgdG8gdGVzdCBpcworCQkgKiB3 aGV0aGVyIHRoZSB0d28gYWN0dWFsIGNvbHVtbiB0eXBlcyBjYW4gYmUgY29uY3VycmVudGx5 IGNhc3QgdG8KKwkJICogdGhhdCB0eXBlLiAgKE90aGVyd2lzZSwgd2UnZCBmYWlsIHRvIHJl amVjdCBjb21iaW5hdGlvbnMgc3VjaAorCQkgKiBhcyBpbnRbXSBhbmQgcG9pbnRbXS4pCisJ CSAqLworCQlPaWQJCQlpbnB1dF90eXBlaWRzWzJdOworCQlPaWQJCQl0YXJnZXRfdHlwZWlk c1syXTsKKworCQlpbnB1dF90eXBlaWRzWzBdID0gcGt0eXBlOworCQlpbnB1dF90eXBlaWRz WzFdID0gZmt0eXBlOworCQl0YXJnZXRfdHlwZWlkc1swXSA9IG9wY2ludHlwZTsKKwkJdGFy Z2V0X3R5cGVpZHNbMV0gPSBvcGNpbnR5cGU7CisJCWlmIChjYW5fY29lcmNlX3R5cGUoMiwg aW5wdXRfdHlwZWlkcywgdGFyZ2V0X3R5cGVpZHMsCisJCQkJCQkJQ09FUkNJT05fSU1QTElD SVQpKQorCQl7CisJCQlwZmVxb3AgPSBmZmVxb3AgPSBwcGVxb3A7CisJCQlwZmVxb3Bfcmln aHQgPSBvcGNpbnR5cGU7CisJCX0KKwl9CisKKwlpZiAoIShPaWRJc1ZhbGlkKHBmZXFvcCkg JiYgT2lkSXNWYWxpZChmZmVxb3ApKSkKKwl7CisJCWNoYXIgKmZrYXR0cl9uYW1lID0gc3Ry VmFsKGxpc3RfbnRoKGZrY29uc3RyYWludC0+ZmtfYXR0cnMsIGkpKTsKKwkJY2hhciAqcGth dHRyX25hbWUgPSBzdHJWYWwobGlzdF9udGgoZmtjb25zdHJhaW50LT5wa19hdHRycywgaSkp OworCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBVFlQRV9N SVNNQVRDSCksCisJCQkJIGVycm1zZygiZm9yZWlnbiBrZXkgY29uc3RyYWludCBcIiVzXCIg Y2Fubm90IGJlIGltcGxlbWVudGVkIiwKKwkJCQkJCWZrY29uc3RyYWludC0+Y29ubmFtZSks CisJCQkJIGVycmRldGFpbCgiS2V5IGNvbHVtbnMgXCIlc1wiIGFuZCBcIiVzXCIgIgorCQkJ CQkJICAgImFyZSBvZiBpbmNvbXBhdGlibGUgdHlwZXM6ICVzIGFuZCAlcy4iLAorCQkJCQkJ ICAgZmthdHRyX25hbWUsCisJCQkJCQkgICBwa2F0dHJfbmFtZSwKKwkJCQkJCSAgIGZvcm1h dF90eXBlX2JlKGZrdHlwZSksCisJCQkJCQkgICBmb3JtYXRfdHlwZV9iZShwa3R5cGUpKSkp OworCX0KKworCWlmICgqb2xkX2NoZWNrX29rKQorCXsKKwkJLyoKKwkJICogV2hlbiBhIHBm ZXFvcCBjaGFuZ2VzLCByZXZhbGlkYXRlIHRoZSBjb25zdHJhaW50LiAgV2UgY291bGQKKwkJ ICogcGVybWl0IGludHJhLW9wZmFtaWx5IGNoYW5nZXMsIGJ1dCB0aGF0IGFkZHMgc3VidGxl IGNvbXBsZXhpdHkKKwkJICogd2l0aG91dCBhbnkgY29uY3JldGUgYmVuZWZpdCBmb3IgY29y ZSB0eXBlcy4gIFdlIG5lZWQgbm90CisJCSAqIGFzc2VzcyBwcGVxb3Agb3IgZmZlcW9wLCB3 aGljaCBSSV9Jbml0aWFsX0NoZWNrKCkgZG9lcyBub3QgdXNlLgorCQkgKi8KKwkJKm9sZF9j aGVja19vayA9IChwZmVxb3AgPT0gbGZpcnN0X29pZCgqb2xkX3BmZXFvcF9pdGVtKSk7CisJ CSpvbGRfcGZlcW9wX2l0ZW0gPSBsbmV4dChma2NvbnN0cmFpbnQtPm9sZF9jb25wZmVxb3As CisJCQkJCQkJCSpvbGRfcGZlcW9wX2l0ZW0pOworCX0KKwlpZiAoKm9sZF9jaGVja19vaykK Kwl7CisJCU9pZAkJCW9sZF9ma3R5cGU7CisJCU9pZAkJCW5ld19ma3R5cGU7CisJCUNvZXJj aW9uUGF0aFR5cGUgb2xkX3BhdGh0eXBlOworCQlDb2VyY2lvblBhdGhUeXBlIG5ld19wYXRo dHlwZTsKKwkJT2lkCQkJb2xkX2Nhc3RmdW5jOworCQlPaWQJCQluZXdfY2FzdGZ1bmM7CisJ CUZvcm1fcGdfYXR0cmlidXRlIGF0dHIgPSBUdXBsZURlc2NBdHRyKHRhYi0+b2xkRGVzYywK KwkJCQkJCQkJCQkJICAgZmthdHRudW1baV0gLSAxKTsKKworCQkvKgorCQkgKiBJZGVudGlm eSBjb2VyY2lvbiBwYXRod2F5cyBmcm9tIGVhY2ggb2YgdGhlIG9sZCBhbmQgbmV3IEZLLXNp ZGUKKwkJICogY29sdW1uIHR5cGVzIHRvIHRoZSByaWdodCAoZm9yZWlnbikgb3BlcmFuZCB0 eXBlIG9mIHRoZSBwZmVxb3AuCisJCSAqIFdlIG1heSBhc3N1bWUgdGhhdCBwZ19jb25zdHJh aW50LmNvbmtleSBpcyBub3QgY2hhbmdpbmcuCisJCSAqLworCQlvbGRfZmt0eXBlID0gYXR0 ci0+YXR0dHlwaWQ7CisJCW5ld19ma3R5cGUgPSBma3R5cGU7CisJCW9sZF9wYXRodHlwZSA9 IGZpbmRGa2V5Q2FzdChwZmVxb3BfcmlnaHQsIG9sZF9ma3R5cGUsCisJCQkJCQkJCQkmb2xk X2Nhc3RmdW5jKTsKKwkJbmV3X3BhdGh0eXBlID0gZmluZEZrZXlDYXN0KHBmZXFvcF9yaWdo dCwgbmV3X2ZrdHlwZSwKKwkJCQkJCQkJCSZuZXdfY2FzdGZ1bmMpOworCisJCS8qCisJCSAq IFVwb24gYSBjaGFuZ2UgdG8gdGhlIGNhc3QgZnJvbSB0aGUgRksgY29sdW1uIHRvIGl0cyBw ZmVxb3AKKwkJICogb3BlcmFuZCwgcmV2YWxpZGF0ZSB0aGUgY29uc3RyYWludC4gIEZvciB0 aGlzIGV2YWx1YXRpb24sIGEKKwkJICogYmluYXJ5IGNvZXJjaW9uIGNhc3QgaXMgZXF1aXZh bGVudCB0byBubyBjYXN0IGF0IGFsbC4gIFdoaWxlCisJCSAqIHR5cGUgaW1wbGVtZW50b3Jz IHNob3VsZCBkZXNpZ24gaW1wbGljaXQgY2FzdHMgd2l0aCBhbiBleWUKKwkJICogdG93YXJk IGNvbnNpc3RlbmN5IG9mIG9wZXJhdGlvbnMgbGlrZSBlcXVhbGl0eSwgd2UgY2Fubm90CisJ CSAqIGFzc3VtZSBoZXJlIHRoYXQgdGhleSBoYXZlIGRvbmUgc28uCisJCSAqCisJCSAqIEEg ZnVuY3Rpb24gd2l0aCBhIHBvbHltb3JwaGljIGFyZ3VtZW50IGNvdWxkIGNoYW5nZSBiZWhh dmlvcgorCQkgKiBhcmJpdHJhcmlseSBpbiByZXNwb25zZSB0byBnZXRfZm5fZXhwcl9hcmd0 eXBlKCkuICBUaGVyZWZvcmUsCisJCSAqIHdoZW4gdGhlIGNhc3QgZGVzdGluYXRpb24gaXMg cG9seW1vcnBoaWMsIHdlIG9ubHkgYXZvaWQKKwkJICogcmV2YWxpZGF0aW9uIGlmIHRoZSBp bnB1dCB0eXBlIGhhcyBub3QgY2hhbmdlZCBhdCBhbGwuICBHaXZlbgorCQkgKiBqdXN0IHRo ZSBjb3JlIGRhdGEgdHlwZXMgYW5kIG9wZXJhdG9yIGNsYXNzZXMsIHRoaXMgcmVxdWlyZW1l bnQKKwkJICogcHJldmVudHMgbm8gd291bGQtYmUgb3B0aW1pemF0aW9ucy4KKwkJICoKKwkJ ICogSWYgdGhlIGNhc3QgY29udmVydHMgZnJvbSBhIGJhc2UgdHlwZSB0byBhIGRvbWFpbiB0 aGVyZW9uLCB0aGVuCisJCSAqIHRoYXQgZG9tYWluIHR5cGUgbXVzdCBiZSB0aGUgb3BjaW50 eXBlIG9mIHRoZSB1bmlxdWUgaW5kZXguCisJCSAqIE5lY2Vzc2FyaWx5LCB0aGUgcHJpbWFy eSBrZXkgY29sdW1uIG11c3QgdGhlbiBiZSBvZiB0aGUgZG9tYWluCisJCSAqIHR5cGUuICBT aW5jZSB0aGUgY29uc3RyYWludCB3YXMgcHJldmlvdXNseSB2YWxpZCwgYWxsIHZhbHVlcyBv bgorCQkgKiB0aGUgZm9yZWlnbiBzaWRlIG5lY2Vzc2FyaWx5IGV4aXN0IG9uIHRoZSBwcmlt YXJ5IHNpZGUgYW5kIGluCisJCSAqIHR1cm4gY29uZm9ybSB0byB0aGUgZG9tYWluLiAgQ29u c2VxdWVudGx5LCB3ZSBuZWVkIG5vdCB0cmVhdAorCQkgKiBkb21haW5zIHNwZWNpYWxseSBo ZXJlLgorCQkgKgorCQkgKiBTaW5jZSB3ZSByZXF1aXJlIHRoYXQgYWxsIGNvbGxhdGlvbnMg c2hhcmUgdGhlIHNhbWUgbm90aW9uIG9mCisJCSAqIGVxdWFsaXR5ICh3aGljaCB0aGV5IGRv LCBiZWNhdXNlIHRleHRlcSByZWR1Y2VzIHRvIGJpdHdpc2UKKwkJICogZXF1YWxpdHkpLCB3 ZSBkb24ndCBjb21wYXJlIGNvbGxhdGlvbiBoZXJlLgorCQkgKgorCQkgKiBXZSBuZWVkIG5v dCBkaXJlY3RseSBjb25zaWRlciB0aGUgUEsgdHlwZS4gIEl0J3MgbmVjZXNzYXJpbHkKKwkJ ICogYmluYXJ5IGNvZXJjaWJsZSB0byB0aGUgb3BjaW50eXBlIG9mIHRoZSB1bmlxdWUgaW5k ZXggY29sdW1uLAorCQkgKiBhbmQgcmlfdHJpZ2dlcnMuYyB3aWxsIG9ubHkgZGVhbCB3aXRo IFBLIGRhdHVtcyBpbiB0ZXJtcyBvZgorCQkgKiB0aGF0IG9wY2ludHlwZS4gIENoYW5naW5n IHRoZSBvcGNpbnR5cGUgYWxzbyBjaGFuZ2VzIHBmZXFvcC4KKwkJICovCisJCSpvbGRfY2hl Y2tfb2sgPSAobmV3X3BhdGh0eXBlID09IG9sZF9wYXRodHlwZSAmJgorCQkJCQkJbmV3X2Nh c3RmdW5jID09IG9sZF9jYXN0ZnVuYyAmJgorCQkJCQkJKCFJc1BvbHltb3JwaGljVHlwZShw ZmVxb3BfcmlnaHQpIHx8CisJCQkJCQkgbmV3X2ZrdHlwZSA9PSBvbGRfZmt0eXBlKSk7CisK Kwl9CisKKwkqcGZlcW9wT3V0ID0gcGZlcW9wOworCSpwcGVxb3BPdXQgPSBwcGVxb3A7CisJ KmZmZXFvcE91dCA9IGZmZXFvcDsKK30KKwogLyoKICAqIFdoZW4gdGhlIHBhcmVudCBvZiBh IHBhcnRpdGlvbiByZWNlaXZlcyBbdGhlIHJlZmVyZW5jaW5nIHNpZGUgb2ZdIGEgZm9yZWln bgogICoga2V5LCB3ZSBtdXN0IHByb3BhZ2F0ZSB0aGF0IGZvcmVpZ24ga2V5IHRvIHRoZSBw YXJ0aXRpb24uICBIb3dldmVyLCB0aGUKLS0gCjIuNDIuMAoK --------------XirkSnpA0J2rgDaW8dSEFd2s Content-Type: text/x-patch; charset=UTF-8; name="v25-0004-Add-temporal-FOREIGN-KEYs.patch" Content-Disposition: attachment; filename="v25-0004-Add-temporal-FOREIGN-KEYs.patch" Content-Transfer-Encoding: base64 RnJvbSBhMWIxOTI1ZTQwZmVjZDkyOWQ4NTRjMGJhNmEwNDk2ZTNkZmVhNzYxIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IFN1biwgMjcgSnVuIDIwMjEgMTI6NTg6NTEgLTA3 MDAKU3ViamVjdDogW1BBVENIIHYyNSA0LzhdIEFkZCB0ZW1wb3JhbCBGT1JFSUdOIEtFWXMK Ci0gQWRkZWQgYmlzb24gc3VwcG9ydCBmb3IgdGVtcG9yYWwgRk9SRUlHTiBLRVlzLiBUaGV5 IHNob3VsZCBoYXZlIGEKICByYW5nZS9tdWx0aXJhbmdlL2V0YyBjb2x1bW4gZm9yIHRoZSB0 ZW1wb3JhbCBjb21wb25lbnQuCi0gQWRkZWQgdGVtcG9yYWwgdHJpZ2dlciBmdW5jdGlvbnMg YWtpbiB0byBleGlzdGluZyBSSSB0cmlnZ2VyCiAgZnVuY3Rpb25zLgotIERvbid0IHlldCBz dXBwb3J0IE9OIHtVUERBVEUsREVMRVRFfSB7Q0FTQ0FERSxTRVQgTlVMTCxTRVQgREVGQVVM VH0uCi0gQWRkZWQgcGdfZHVtcCBzdXBwb3J0LgotIFNob3cgdGhlIGNvcnJlY3Qgc3ludGF4 IGluIHBzcWwgXGQgb3V0cHV0IGZvciBmb3JlaWduIGtleXMuCi0gQWRkZWQgdGVzdHMgYW5k IGRvY3VtZW50YXRpb24uCi0tLQogLi4uL2J0cmVlX2dpc3QvZXhwZWN0ZWQvd2l0aG91dF9v dmVybGFwcy5vdXQgIHwgICA0OCArCiBjb250cmliL2J0cmVlX2dpc3Qvc3FsL3dpdGhvdXRf b3ZlcmxhcHMuc3FsICAgfCAgIDI4ICsKIGRvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3RhYmxl LnNnbWwgICAgICAgICAgICB8ICAgNDYgKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvcGdfY29u c3RyYWludC5jICAgICAgICAgICB8ICAgNTYgKwogc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5k ZXhjbWRzLmMgICAgICAgICAgICAgIHwgICA0OCArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMv dGFibGVjbWRzLmMgICAgICAgICAgICAgIHwgIDM4NyArKysrKy0tCiBzcmMvYmFja2VuZC9w YXJzZXIvZ3JhbS55ICAgICAgICAgICAgICAgICAgICAgfCAgIDQ1ICstCiBzcmMvYmFja2Vu ZC91dGlscy9hZHQvcmlfdHJpZ2dlcnMuYyAgICAgICAgICAgfCAgMzAwICsrKystCiBzcmMv YmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMgICAgICAgICAgICAgfCAgIDE5ICstCiBz cmMvaW5jbHVkZS9jYXRhbG9nL3BnX2NvbnN0cmFpbnQuaCAgICAgICAgICAgfCAgIDIwICst CiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAgICAgICAgICAgICAgfCAgIDI0 ICsKIHNyYy9pbmNsdWRlL2NvbW1hbmRzL2RlZnJlbS5oICAgICAgICAgICAgICAgICB8ICAg IDIgKy0KIHNyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCAgICAgICAgICAgICAgICB8 ICAgIDIgKwogc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oICAgICAgICAgICAgICAgICAg IHwgICAgMSArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2J0cmVlX2luZGV4Lm91dCAg ICAgfCAgIDE2ICstCiAuLi4vcmVncmVzcy9leHBlY3RlZC93aXRob3V0X292ZXJsYXBzLm91 dCAgICAgfCAxMDE4ICsrKysrKysrKysrKysrKystCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC93 aXRob3V0X292ZXJsYXBzLnNxbCAgICAgfCAgOTI0ICsrKysrKysrKysrKysrLQogMTcgZmls ZXMgY2hhbmdlZCwgMjgxNSBpbnNlcnRpb25zKCspLCAxNjkgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvY29udHJpYi9idHJlZV9naXN0L2V4cGVjdGVkL3dpdGhvdXRfb3ZlcmxhcHMu b3V0IGIvY29udHJpYi9idHJlZV9naXN0L2V4cGVjdGVkL3dpdGhvdXRfb3ZlcmxhcHMub3V0 CmluZGV4IGJlNTJjNTIyZTg5Li4xODg1NjkwMGRlZCAxMDA2NDQKLS0tIGEvY29udHJpYi9i dHJlZV9naXN0L2V4cGVjdGVkL3dpdGhvdXRfb3ZlcmxhcHMub3V0CisrKyBiL2NvbnRyaWIv YnRyZWVfZ2lzdC9leHBlY3RlZC93aXRob3V0X292ZXJsYXBzLm91dApAQCAtNDIsMyArNDIs NTEgQEAgSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUwogICAoMSwgJ1syMDAwLTA2 LTAxLDIwMDEtMDEtMDEpJyk7CiBFUlJPUjogIGNvbmZsaWN0aW5nIGtleSB2YWx1ZSB2aW9s YXRlcyBleGNsdXNpb24gY29uc3RyYWludCAidGVtcG9yYWxfcm5nX3BrIgogREVUQUlMOiAg S2V5IChpZCwgdmFsaWRfYXQpPSgxLCBbMDYtMDEtMjAwMCwwMS0wMS0yMDAxKSkgY29uZmxp Y3RzIHdpdGggZXhpc3Rpbmcga2V5IChpZCwgdmFsaWRfYXQpPSgxLCBbMDEtMDEtMjAwMCww MS0wMS0yMDAxKSkuCistLSBGb3JlaWduIGtleQorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX2Zr X3JuZzJybmcgKAorICBpZCBpbnRlZ2VyLAorICB2YWxpZF9hdCBkYXRlcmFuZ2UsCisgIHBh cmVudF9pZCBpbnRlZ2VyLAorICBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfcGsg UFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKSwKKyAgQ09OU1RS QUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrIEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBF UklPRCB2YWxpZF9hdCkKKyAgICBSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZyAoaWQsIFBFUklP RCB2YWxpZF9hdCkKKyk7CitcZCB0ZW1wb3JhbF9ma19ybmcycm5nCisgICAgICAgICAgIFRh YmxlICJwdWJsaWMudGVtcG9yYWxfZmtfcm5nMnJuZyIKKyAgQ29sdW1uICAgfCAgIFR5cGUg ICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1bHQgCistLS0tLS0tLS0tLSstLS0t LS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLQorIGlkICAgICAgICB8 IGludGVnZXIgICB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgCisgdmFsaWRfYXQgIHwgZGF0 ZXJhbmdlIHwgICAgICAgICAgIHwgbm90IG51bGwgfCAKKyBwYXJlbnRfaWQgfCBpbnRlZ2Vy ICAgfCAgICAgICAgICAgfCAgICAgICAgICB8IAorSW5kZXhlczoKKyAgICAidGVtcG9yYWxf Zmtfcm5nMnJuZ19wayIgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJM QVBTKQorRm9yZWlnbi1rZXkgY29uc3RyYWludHM6CisgICAgInRlbXBvcmFsX2ZrX3JuZzJy bmdfZmsiIEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkgUkVGRVJF TkNFUyB0ZW1wb3JhbF9ybmcoaWQsIFBFUklPRCB2YWxpZF9hdCkKKworU0VMRUNUIHBnX2dl dF9jb25zdHJhaW50ZGVmKG9pZCkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbm5hbWUg PSAndGVtcG9yYWxfZmtfcm5nMnJuZ19mayc7CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBwZ19nZXRfY29uc3RyYWludGRlZiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEZPUkVJR04g S0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkgUkVGRVJFTkNFUyB0ZW1wb3JhbF9y bmcoaWQsIFBFUklPRCB2YWxpZF9hdCkKKygxIHJvdykKKworLS0gb2theQorSU5TRVJUIElO VE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMKKyAgKDEsICdbMjAwMC0wMS0wMSwyMDAx LTAxLTAxKScsIDEpOworLS0gb2theSBzcGFubmluZyB0d28gcGFyZW50IHJlY29yZHM6CitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUworICAoMiwgJ1syMDAwLTAx LTAxLDIwMDItMDEtMDEpJywgMSk7CistLSBrZXkgaXMgbWlzc2luZworSU5TRVJUIElOVE8g dGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMKKyAgKDMsICdbMjAwMC0wMS0wMSwyMDAxLTAx LTAxKScsIDMpOworRVJST1I6ICBpbnNlcnQgb3IgdXBkYXRlIG9uIHRhYmxlICJ0ZW1wb3Jh bF9ma19ybmcycm5nIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3Jh bF9ma19ybmcycm5nX2ZrIgorREVUQUlMOiAgS2V5IChwYXJlbnRfaWQsIHZhbGlkX2F0KT0o MywgWzAxLTAxLTIwMDAsMDEtMDEtMjAwMSkpIGlzIG5vdCBwcmVzZW50IGluIHRhYmxlICJ0 ZW1wb3JhbF9ybmciLgorLS0ga2V5IGV4aXN0IGJ1dCBpcyBvdXRzaWRlIHJhbmdlCitJTlNF UlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUworICAoNCwgJ1syMDAxLTAxLTAx LDIwMDItMDEtMDEpJywgMik7CitFUlJPUjogIGluc2VydCBvciB1cGRhdGUgb24gdGFibGUg InRlbXBvcmFsX2ZrX3JuZzJybmciIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQg InRlbXBvcmFsX2ZrX3JuZzJybmdfZmsiCitERVRBSUw6ICBLZXkgKHBhcmVudF9pZCwgdmFs aWRfYXQpPSgyLCBbMDEtMDEtMjAwMSwwMS0wMS0yMDAyKSkgaXMgbm90IHByZXNlbnQgaW4g dGFibGUgInRlbXBvcmFsX3JuZyIuCistLSBrZXkgZXhpc3QgYnV0IGlzIHBhcnRseSBvdXRz aWRlIHJhbmdlCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUworICAo NSwgJ1syMDAwLTAxLTAxLDIwMDItMDEtMDEpJywgMik7CitFUlJPUjogIGluc2VydCBvciB1 cGRhdGUgb24gdGFibGUgInRlbXBvcmFsX2ZrX3JuZzJybmciIHZpb2xhdGVzIGZvcmVpZ24g a2V5IGNvbnN0cmFpbnQgInRlbXBvcmFsX2ZrX3JuZzJybmdfZmsiCitERVRBSUw6ICBLZXkg KHBhcmVudF9pZCwgdmFsaWRfYXQpPSgyLCBbMDEtMDEtMjAwMCwwMS0wMS0yMDAyKSkgaXMg bm90IHByZXNlbnQgaW4gdGFibGUgInRlbXBvcmFsX3JuZyIuCmRpZmYgLS1naXQgYS9jb250 cmliL2J0cmVlX2dpc3Qvc3FsL3dpdGhvdXRfb3ZlcmxhcHMuc3FsIGIvY29udHJpYi9idHJl ZV9naXN0L3NxbC93aXRob3V0X292ZXJsYXBzLnNxbAppbmRleCA0MzNjNjA5YWIyMi4uYjFi NTgxZmNhYmMgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9zcWwvd2l0aG91dF9v dmVybGFwcy5zcWwKKysrIGIvY29udHJpYi9idHJlZV9naXN0L3NxbC93aXRob3V0X292ZXJs YXBzLnNxbApAQCAtMjMsMyArMjMsMzEgQEAgSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZB TFVFUwogLS0gc2hvdWxkIGZhaWw6CiBJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVT CiAgICgxLCAnWzIwMDAtMDYtMDEsMjAwMS0wMS0wMSknKTsKKworLS0gRm9yZWlnbiBrZXkK K0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nICgKKyAgaWQgaW50ZWdlciwKKyAg dmFsaWRfYXQgZGF0ZXJhbmdlLAorICBwYXJlbnRfaWQgaW50ZWdlciwKKyAgQ09OU1RSQUlO VCB0ZW1wb3JhbF9ma19ybmcycm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lU SE9VVCBPVkVSTEFQUyksCisgIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19mayBG T1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisgICAgUkVGRVJFTkNF UyB0ZW1wb3JhbF9ybmcgKGlkLCBQRVJJT0QgdmFsaWRfYXQpCispOworXGQgdGVtcG9yYWxf Zmtfcm5nMnJuZworU0VMRUNUIHBnX2dldF9jb25zdHJhaW50ZGVmKG9pZCkgRlJPTSBwZ19j b25zdHJhaW50IFdIRVJFIGNvbm5hbWUgPSAndGVtcG9yYWxfZmtfcm5nMnJuZ19mayc7CisK Ky0tIG9rYXkKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTCisgICgx LCAnWzIwMDAtMDEtMDEsMjAwMS0wMS0wMSknLCAxKTsKKy0tIG9rYXkgc3Bhbm5pbmcgdHdv IHBhcmVudCByZWNvcmRzOgorSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxV RVMKKyAgKDIsICdbMjAwMC0wMS0wMSwyMDAyLTAxLTAxKScsIDEpOworLS0ga2V5IGlzIG1p c3NpbmcKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTCisgICgzLCAn WzIwMDAtMDEtMDEsMjAwMS0wMS0wMSknLCAzKTsKKy0tIGtleSBleGlzdCBidXQgaXMgb3V0 c2lkZSByYW5nZQorSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMKKyAg KDQsICdbMjAwMS0wMS0wMSwyMDAyLTAxLTAxKScsIDIpOworLS0ga2V5IGV4aXN0IGJ1dCBp cyBwYXJ0bHkgb3V0c2lkZSByYW5nZQorSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJu ZyBWQUxVRVMKKyAgKDUsICdbMjAwMC0wMS0wMSwyMDAyLTAxLTAxKScsIDIpOwpkaWZmIC0t Z2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFibGUuc2dtbCBiL2RvYy9zcmMvc2dt bC9yZWYvY3JlYXRlX3RhYmxlLnNnbWwKaW5kZXggNGNiYWFjY2FmN2MuLjBjMzliYWQ2Yzc2 IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90YWJsZS5zZ21sCisrKyBi L2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3RhYmxlLnNnbWwKQEAgLTgxLDcgKzgxLDcgQEAg Q1JFQVRFIFsgWyBHTE9CQUwgfCBMT0NBTCBdIHsgVEVNUE9SQVJZIHwgVEVNUCB9IHwgVU5M T0dHRUQgXSBUQUJMRSBbIElGIE5PVCBFWEkKICAgVU5JUVVFIFsgTlVMTFMgWyBOT1QgXSBE SVNUSU5DVCBdICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1l PC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gWywgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gV0lUSE9VVCBPVkVSTEFQUyBdICkgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmluZGV4X3BhcmFtZXRlcnM8L3JlcGxhY2Vh YmxlPiB8CiAgIFBSSU1BUlkgS0VZICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gWywgPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gV0lUSE9VVCBPVkVS TEFQUyBdICkgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmluZGV4X3BhcmFtZXRl cnM8L3JlcGxhY2VhYmxlPiB8CiAgIEVYQ0xVREUgWyBVU0lORyA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+aW5kZXhfbWV0aG9kPC9yZXBsYWNlYWJsZT4gXSAoIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5leGNsdWRlX2VsZW1lbnQ8L3JlcGxhY2VhYmxlPiBX SVRIIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5vcGVyYXRvcjwvcmVwbGFjZWFi bGU+IFssIC4uLiBdICkgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmluZGV4X3Bh cmFtZXRlcnM8L3JlcGxhY2VhYmxlPiBbIFdIRVJFICggPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnByZWRpY2F0ZTwvcmVwbGFjZWFibGU+ICkgXSB8Ci0gIEZPUkVJR04gS0VZ ICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNl YWJsZT4gWywgLi4uIF0gKSBSRUZFUkVOQ0VTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5yZWZ0YWJsZTwvcmVwbGFjZWFibGU+IFsgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+cmVmY29sdW1uPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gKSBdCisgIEZPUkVJ R04gS0VZICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9y ZXBsYWNlYWJsZT4gWywgLi4uIF0gWywgUEVSSU9EIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IF0gKSBSRUZFUkVOQ0VTIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yZWZ0YWJsZTwvcmVwbGFjZWFibGU+IFsgKCA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVmY29sdW1uPC9yZXBsYWNlYWJsZT4g WywgLi4uIF0gWywgUEVSSU9EIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1 bW5fbmFtZTwvcmVwbGFjZWFibGU+IF0gKSBdCiAgICAgWyBNQVRDSCBGVUxMIHwgTUFUQ0gg UEFSVElBTCB8IE1BVENIIFNJTVBMRSBdIFsgT04gREVMRVRFIDxyZXBsYWNlYWJsZQogY2xh c3M9InBhcmFtZXRlciI+cmVmZXJlbnRpYWxfYWN0aW9uPC9yZXBsYWNlYWJsZT4gXSBbIE9O IFVQREFURSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVmZXJlbnRpYWxfYWN0 aW9uPC9yZXBsYWNlYWJsZT4gXSB9CiBbIERFRkVSUkFCTEUgfCBOT1QgREVGRVJSQUJMRSBd IFsgSU5JVElBTExZIERFRkVSUkVEIHwgSU5JVElBTExZIElNTUVESUFURSBdCkBAIC0xMTUy LDggKzExNTIsOCBAQCBXSVRIICggTU9EVUxVUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+bnVtZXJpY19saXRlcmFsPC9yZXBsYWNlYWJsZT4sIFJFTQogICAgPHZhcmxpc3Rl bnRyeSBpZD0ic3FsLWNyZWF0ZXRhYmxlLXBhcm1zLXJlZmVyZW5jZXMiPgogICAgIDx0ZXJt PjxsaXRlcmFsPlJFRkVSRU5DRVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJl ZnRhYmxlPC9yZXBsYWNlYWJsZT4gWyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5yZWZjb2x1bW48L3JlcGxhY2VhYmxlPiApIF0gWyBNQVRDSCA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+bWF0Y2h0eXBlPC9yZXBsYWNlYWJsZT4gXSBbIE9OIERFTEVURSA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVmZXJlbnRpYWxfYWN0aW9uPC9yZXBs YWNlYWJsZT4gXSBbIE9OIFVQREFURSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ cmVmZXJlbnRpYWxfYWN0aW9uPC9yZXBsYWNlYWJsZT4gXTwvbGl0ZXJhbD4gKGNvbHVtbiBj b25zdHJhaW50KTwvdGVybT4KIAotICAgPHRlcm0+PGxpdGVyYWw+Rk9SRUlHTiBLRVkgKCA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxl PiBbLCAuLi4gXSApCi0gICAgUkVGRVJFTkNFUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+cmVmdGFibGU8L3JlcGxhY2VhYmxlPiBbICggPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnJlZmNvbHVtbjwvcmVwbGFjZWFibGU+IFssIC4uLiBdICkgXQorICAgPHRl cm0+PGxpdGVyYWw+Rk9SRUlHTiBLRVkgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSBbLCBQRVJJT0QgPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gXSAp CisgICAgUkVGRVJFTkNFUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVmdGFi bGU8L3JlcGxhY2VhYmxlPiBbICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJl ZmNvbHVtbjwvcmVwbGFjZWFibGU+IFssIC4uLiBdIFssIFBFUklPRCA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiBdICkgXQogICAg IFsgTUFUQ0ggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm1hdGNodHlwZTwvcmVw bGFjZWFibGU+IF0KICAgICBbIE9OIERFTEVURSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+cmVmZXJlbnRpYWxfYWN0aW9uPC9yZXBsYWNlYWJsZT4gXQogICAgIFsgT04gVVBE QVRFIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yZWZlcmVudGlhbF9hY3Rpb248 L3JlcGxhY2VhYmxlPiBdPC9saXRlcmFsPgpAQCAtMTE2NCwxMiArMTE2NCwzNiBAQCBXSVRI ICggTU9EVUxVUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtZXJpY19saXRl cmFsPC9yZXBsYWNlYWJsZT4sIFJFTQogICAgICAgVGhlc2UgY2xhdXNlcyBzcGVjaWZ5IGEg Zm9yZWlnbiBrZXkgY29uc3RyYWludCwgd2hpY2ggcmVxdWlyZXMKICAgICAgIHRoYXQgYSBn cm91cCBvZiBvbmUgb3IgbW9yZSBjb2x1bW5zIG9mIHRoZSBuZXcgdGFibGUgbXVzdCBvbmx5 CiAgICAgICBjb250YWluIHZhbHVlcyB0aGF0IG1hdGNoIHZhbHVlcyBpbiB0aGUgcmVmZXJl bmNlZAotICAgICAgY29sdW1uKHMpIG9mIHNvbWUgcm93IG9mIHRoZSByZWZlcmVuY2VkIHRh YmxlLiAgSWYgdGhlIDxyZXBsYWNlYWJsZQorICAgICAgY29sdW1uKHMpIG9mIHNvbWUgcm93 IG9mIHRoZSByZWZlcmVuY2VkIHRhYmxlLiBJZiB0aGUgPHJlcGxhY2VhYmxlCiAgICAgICBj bGFzcz0icGFyYW1ldGVyIj5yZWZjb2x1bW48L3JlcGxhY2VhYmxlPiBsaXN0IGlzIG9taXR0 ZWQsIHRoZQogICAgICAgcHJpbWFyeSBrZXkgb2YgdGhlIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5yZWZ0YWJsZTwvcmVwbGFjZWFibGU+CiAgICAgICBpcyB1c2VkLiAgT3Ro ZXJ3aXNlLCB0aGUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJlZmNvbHVtbjwv cmVwbGFjZWFibGU+CiAgICAgICBsaXN0IG11c3QgcmVmZXIgdG8gdGhlIGNvbHVtbnMgb2Yg YSBub24tZGVmZXJyYWJsZSB1bmlxdWUgb3IgcHJpbWFyeSBrZXkKLSAgICAgIGNvbnN0cmFp bnQgb3IgYmUgdGhlIGNvbHVtbnMgb2YgYSBub24tcGFydGlhbCB1bmlxdWUgaW5kZXguICBU aGUgdXNlcgorICAgICAgY29uc3RyYWludCBvciBiZSB0aGUgY29sdW1ucyBvZiBhIG5vbi1w YXJ0aWFsIHVuaXF1ZSBpbmRleC4KKyAgICAgPC9wYXJhPgorCisgICAgIDxwYXJhPgorICAg ICAgSWYgdGhlIGxhc3QgY29sdW1uIGlzIG1hcmtlZCB3aXRoIDxsaXRlcmFsPlBFUklPRDwv bGl0ZXJhbD4sCisgICAgICBpdCBpcyB0cmVhdGVkIGluIGEgc3BlY2lhbCB3YXkuCisgICAg ICBXaGlsZSB0aGUgbm9uLTxsaXRlcmFsPlBFUklPRDwvbGl0ZXJhbD4gY29sdW1ucyBhcmUg dHJlYXRlZCBub3JtYWxseQorICAgICAgKGFuZCB0aGVyZSBtdXN0IGJlIGF0IGxlYXN0IG9u ZSBvZiB0aGVtKSwKKyAgICAgIHRoZSA8bGl0ZXJhbD5QRVJJT0Q8L2xpdGVyYWw+IGNvbHVt biBpcyBub3QgY29tcGFyZWQgZm9yIGVxdWFsaXR5LgorICAgICAgSW5zdGVhZCB0aGUgY29u c3RyYWludCBpcyBjb25zaWRlcmVkIHNhdGlzZmllZAorICAgICAgaWYgdGhlIHJlZmVyZW5j ZWQgdGFibGUgaGFzIG1hdGNoaW5nIHJlY29yZHMKKyAgICAgIChiYXNlZCBvbiB0aGUgbm9u LTxsaXRlcmFsPlBFUklPRDwvbGl0ZXJhbD4gcGFydHMgb2YgdGhlIGtleSkKKyAgICAgIHdo b3NlIGNvbWJpbmVkIDxsaXRlcmFsPlBFUklPRDwvbGl0ZXJhbD4gdmFsdWVzIGNvbXBsZXRl bHkgY292ZXIKKyAgICAgIHRoZSByZWZlcmVuY2luZyByZWNvcmQncy4KKyAgICAgIEluIG90 aGVyIHdvcmRzLCB0aGUgcmVmZXJlbmNlIG11c3QgaGF2ZSBhIHJlZmVyZW50IGZvciBpdHMg ZW50aXJlIGR1cmF0aW9uLgorICAgICAgTm9ybWFsbHkgdGhpcyBjb2x1bW4gd291bGQgYmUg YSByYW5nZSBvciBtdWx0aXJhbmdlIHR5cGUsCisgICAgICBhbHRob3VnaCBhbnkgdHlwZSB3 aG9zZSBHaVNUIG9wY2xhc3MgaGFzIGEgImNvbnRhaW5lZCBieSIgb3BlcmF0b3IKKyAgICAg IGFuZCBhIDxsaXRlcmFsPnJlZmVyZW5jZWRfYWdnPC9saXRlcmFsPiBzdXBwb3J0IGZ1bmN0 aW9uIGlzIGFsbG93ZWQuCisgICAgICAoU2VlIDx4cmVmIGxpbmtlbmQ9Imdpc3QtZXh0ZW5z aWJpbGl0eSIvPi4pCisgICAgICBJbiBhZGRpdGlvbiB0aGUgcmVmZXJlbmNlZCB0YWJsZSBt dXN0IGhhdmUgYSBwcmltYXJ5IGtleQorICAgICAgb3IgdW5pcXVlIGNvbnN0cmFpbnQgZGVj bGFyZWQgd2l0aCA8bGl0ZXJhbD5XSVRIT1VUIFBPUlRJT048L2xpdGVyYWw+LgorICAgICA8 L3BhcmE+CisKKyAgICAgPHBhcmE+CisgICAgICBUaGUgdXNlcgogICAgICAgbXVzdCBoYXZl IDxsaXRlcmFsPlJFRkVSRU5DRVM8L2xpdGVyYWw+IHBlcm1pc3Npb24gb24gdGhlIHJlZmVy ZW5jZWQKICAgICAgIHRhYmxlIChlaXRoZXIgdGhlIHdob2xlIHRhYmxlLCBvciB0aGUgc3Bl Y2lmaWMgcmVmZXJlbmNlZCBjb2x1bW5zKS4gIFRoZQogICAgICAgYWRkaXRpb24gb2YgYSBm b3JlaWduIGtleSBjb25zdHJhaW50IHJlcXVpcmVzIGEKQEAgLTEyNDMsNiArMTI2NywxMCBA QCBXSVRIICggTU9EVUxVUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtZXJp Y19saXRlcmFsPC9yZXBsYWNlYWJsZT4sIFJFTQogICAgICAgICAgIHZhbHVlcyBvZiB0aGUg cmVmZXJlbmNpbmcgY29sdW1uKHMpIHRvIHRoZSBuZXcgdmFsdWVzIG9mIHRoZQogICAgICAg ICAgIHJlZmVyZW5jZWQgY29sdW1ucywgcmVzcGVjdGl2ZWx5LgogICAgICAgICAgPC9wYXJh PgorCisgICAgICAgICA8cGFyYT4KKyAgICAgICAgICBJbiBhIHRlbXBvcmFsIGZvcmVpZ24g a2V5LCB0aGlzIG9wdGlvbiBpcyBub3Qgc3VwcG9ydGVkLgorICAgICAgICAgPC9wYXJhPgog ICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgIDwvdmFybGlzdGVudHJ5PgogCkBAIC0xMjU0 LDYgKzEyODIsMTAgQEAgV0lUSCAoIE1PRFVMVVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPm51bWVyaWNfbGl0ZXJhbDwvcmVwbGFjZWFibGU+LCBSRU0KICAgICAgICAgICBy ZWZlcmVuY2luZyBjb2x1bW5zLCB0byBudWxsLiBBIHN1YnNldCBvZiBjb2x1bW5zIGNhbiBv bmx5IGJlCiAgICAgICAgICAgc3BlY2lmaWVkIGZvciA8bGl0ZXJhbD5PTiBERUxFVEU8L2xp dGVyYWw+IGFjdGlvbnMuCiAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgIDxwYXJhPgor ICAgICAgICAgIEluIGEgdGVtcG9yYWwgZm9yZWlnbiBrZXksIHRoaXMgb3B0aW9uIGlzIG5v dCBzdXBwb3J0ZWQuCisgICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvbGlzdGl0ZW0+CiAg ICAgICAgPC92YXJsaXN0ZW50cnk+CiAKQEAgLTEyNjcsNiArMTI5OSwxMCBAQCBXSVRIICgg TU9EVUxVUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtZXJpY19saXRlcmFs PC9yZXBsYWNlYWJsZT4sIFJFTQogICAgICAgICAgIChUaGVyZSBtdXN0IGJlIGEgcm93IGlu IHRoZSByZWZlcmVuY2VkIHRhYmxlIG1hdGNoaW5nIHRoZSBkZWZhdWx0CiAgICAgICAgICAg dmFsdWVzLCBpZiB0aGV5IGFyZSBub3QgbnVsbCwgb3IgdGhlIG9wZXJhdGlvbiB3aWxsIGZh aWwuKQogICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICA8cGFyYT4KKyAgICAgICAgICBJ biBhIHRlbXBvcmFsIGZvcmVpZ24ga2V5LCB0aGlzIG9wdGlvbiBpcyBub3Qgc3VwcG9ydGVk LgorICAgICAgICAgPC9wYXJhPgogICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgIDwvdmFy bGlzdGVudHJ5PgogICAgICAgPC92YXJpYWJsZWxpc3Q+CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9jYXRhbG9nL3BnX2NvbnN0cmFpbnQuYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdf Y29uc3RyYWludC5jCmluZGV4IDM1MTZmZDU4NDkzLi5iYWMxZjhmYzkxNiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19jb25zdHJhaW50LmMKKysrIGIvc3JjL2JhY2tl bmQvY2F0YWxvZy9wZ19jb25zdHJhaW50LmMKQEAgLTE1LDYgKzE1LDcgQEAKICNpbmNsdWRl ICJwb3N0Z3Jlcy5oIgogCiAjaW5jbHVkZSAiYWNjZXNzL2dlbmFtLmgiCisjaW5jbHVkZSAi YWNjZXNzL2dpc3QuaCIKICNpbmNsdWRlICJhY2Nlc3MvaHR1cF9kZXRhaWxzLmgiCiAjaW5j bHVkZSAiYWNjZXNzL3N5c2F0dHIuaCIKICNpbmNsdWRlICJhY2Nlc3MvdGFibGUuaCIKQEAg LTE2MDcsNiArMTYwOCw2MSBAQCBEZWNvbnN0cnVjdEZrQ29uc3RyYWludFJvdyhIZWFwVHVw bGUgdHVwbGUsIGludCAqbnVtZmtzLAogCSpudW1ma3MgPSBudW1rZXlzOwogfQogCisvKgor ICogRmluZEZrUGVyaW9kT3BlcnNBbmRQcm9jcyAtCisgKgorICogTG9va3MgdXAgdGhlIG9w ZXIgYW5kIHByb2Mgb2lkcyB1c2VkIGJ5IGZvcmVpZ24ga2V5cyB3aXRoIGEgUEVSSU9EIHBh cnQuCisgKi8KK3ZvaWQKK0ZpbmRGS1BlcmlvZE9wZXJzQW5kUHJvY3MoT2lkIG9wY2xhc3Ms CisJCQkJCQkgIE9pZCAqcGVyaW9kb3Blcm9pZCwKKwkJCQkJCSAgT2lkICphZ2dlZHBlcmlv ZG9wZXJvaWQsCisJCQkJCQkgIE9pZCAqcGVyaW9kcHJvY29pZCkKK3sKKwlPaWQJb3BmYW1p bHk7CisJT2lkCW9wY2ludHlwZTsKKwlPaWQJYWdncmV0dHlwZTsKKwlPaWQJZnVuY2lkID0g SW52YWxpZE9pZDsKKwlTdHJhdGVneU51bWJlciBzdHJhdCA9IFJUQ29udGFpbmVkQnlTdHJh dGVneU51bWJlcjsKKworCS8qCisJICogTG9vayB1cCB0aGUgQ29udGFpbmVkQnkgb3BlcmF0 b3Igd2l0aCBzeW1tZXRyaWMgdHlwZXMuCisJICogV2UgdXNlIHRoaXMgdG8gb3B0aW1pemUg UkkgY2hlY2tzOiBpZiB0aGUgbmV3IHZhbHVlIGluY2x1ZGVzIGFsbAorCSAqIG9mIHRoZSBv bGQgdmFsdWUsIHRoZW4gd2UgY2FuIHRyZWF0IHRoZSBhdHRyaWJ1dGUgYXMgaWYgaXQgZGlk bid0IGNoYW5nZSwKKwkgKiBhbmQgc2tpcCB0aGUgUkkgY2hlY2suCisJICovCisJR2V0T3Bl cmF0b3JGcm9tV2VsbEtub3duU3RyYXRlZ3kob3BjbGFzcywKKwkJCQkJCQkJCSBJbnZhbGlk T2lkLAorCQkJCQkJCQkJIHBlcmlvZG9wZXJvaWQsCisJCQkJCQkJCQkgJnN0cmF0KTsKKwor CS8qIE5vdyBsb29rIHVwIHRoZSBzdXBwb3J0IHByb2MgZm9yIGFnZ3JlZ2F0aW9uLiAqLwor CWlmIChnZXRfb3BjbGFzc19vcGZhbWlseV9hbmRfaW5wdXRfdHlwZShvcGNsYXNzLCAmb3Bm YW1pbHksICZvcGNpbnR5cGUpKQorCQlmdW5jaWQgPSBnZXRfb3BmYW1pbHlfcHJvYyhvcGZh bWlseSwgb3BjaW50eXBlLCBvcGNpbnR5cGUsIEdJU1RfUkVGRVJFTkNFRF9BR0dfUFJPQyk7 CisKKwlpZiAoIU9pZElzVmFsaWQoZnVuY2lkKSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQko ZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9PQkpFQ1QpLAorCQkJCSBlcnJtc2coIm5vIHN1 cHBvcnQgZnVuYyAldSBmb3VuZCBmb3IgRk9SRUlHTiBLRVkgY29uc3RyYWludCIsIEdJU1Rf UkVGRVJFTkNFRF9BR0dfUFJPQyksCisJCQkJIGVycmhpbnQoIkRlZmluZSBhIHJlZmVyZW5j ZWRhZ2cgc3VwcG9ydCBmdW5jdGlvbiBmb3IgeW91ciBHaVNUIG9wY2xhc3MuIikpKTsKKwor CSpwZXJpb2Rwcm9jb2lkID0gZnVuY2lkOworCisJLyogTG9vayB1cCB0aGUgZnVuY3Rpb24n cyByZXR0eXBlLiAqLworCWFnZ3JldHR5cGUgPSBnZXRfZnVuY19yZXR0eXBlKGZ1bmNpZCk7 CisKKwkvKgorCSAqIE5vdyBsb29rIHVwIHRoZSBDb250YWluZWRCeSBvcGVyYXRvci4KKwkg KiBJdHMgbGVmdCBhcmcgbXVzdCBiZSB0aGUgdHlwZSBvZiB0aGUgY29sdW1uIChvciByYXRo ZXIgb2YgdGhlIG9wY2xhc3MpLgorCSAqIEl0cyByaWdodCBhcmcgbXVzdCBtYXRjaCB0aGUg cmV0dXJuIHR5cGUgb2YgdGhlIHN1cHBvcnQgcHJvYy4KKwkgKi8KKwlzdHJhdCA9IFJUQ29u dGFpbmVkQnlTdHJhdGVneU51bWJlcjsKKwlHZXRPcGVyYXRvckZyb21XZWxsS25vd25TdHJh dGVneShvcGNsYXNzLAorCQkJCQkJCQkJIGFnZ3JldHR5cGUsCisJCQkJCQkJCQkgYWdnZWRw ZXJpb2RvcGVyb2lkLAorCQkJCQkJCQkJICZzdHJhdCk7Cit9CisKIC8qCiAgKiBEZXRlcm1p bmUgd2hldGhlciBhIHJlbGF0aW9uIGNhbiBiZSBwcm92ZW4gZnVuY3Rpb25hbGx5IGRlcGVu ZGVudCBvbgogICogYSBzZXQgb2YgZ3JvdXBpbmcgY29sdW1ucy4gIElmIHNvLCByZXR1cm4g dHJ1ZSBhbmQgYWRkIHRoZSBwZ19jb25zdHJhaW50CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9jb21tYW5kcy9pbmRleGNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21k cy5jCmluZGV4IDdhODc2MjZmNWYwLi41YzdjYzk2N2U3OSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv aW5kZXhjbWRzLmMKQEAgLTIxODEsOCArMjE4MSwxMCBAQCBDb21wdXRlSW5kZXhBdHRycyhJ bmRleEluZm8gKmluZGV4SW5mbywKIAkJCQlzdHJhdCA9IFJUT3ZlcmxhcFN0cmF0ZWd5TnVt YmVyOwogCQkJZWxzZQogCQkJCXN0cmF0ID0gUlRFcXVhbFN0cmF0ZWd5TnVtYmVyOwotCQkJ R2V0T3BlcmF0b3JGcm9tV2VsbEtub3duU3RyYXRlZ3kob3BjbGFzc09pZHNbYXR0bl0sIGF0 dHR5cGUsCi0JCQkJCQkJCQkJCSAmb3BpZCwgJnN0cmF0KTsKKwkJCUdldE9wZXJhdG9yRnJv bVdlbGxLbm93blN0cmF0ZWd5KG9wY2xhc3NPaWRzW2F0dG5dLAorCQkJCQkJCQkJCQkgSW52 YWxpZE9pZCwKKwkJCQkJCQkJCQkJICZvcGlkLAorCQkJCQkJCQkJCQkgJnN0cmF0KTsKIAkJ CWluZGV4SW5mby0+aWlfRXhjbHVzaW9uT3BzW2F0dG5dID0gb3BpZDsKIAkJCWluZGV4SW5m by0+aWlfRXhjbHVzaW9uUHJvY3NbYXR0bl0gPSBnZXRfb3Bjb2RlKG9waWQpOwogCQkJaW5k ZXhJbmZvLT5paV9FeGNsdXNpb25TdHJhdHNbYXR0bl0gPSBzdHJhdDsKQEAgLTI0MjEsNyAr MjQyMyw3IEBAIEdldERlZmF1bHRPcENsYXNzKE9pZCB0eXBlX2lkLCBPaWQgYW1faWQpCiAg KiBHZXRPcGVyYXRvckZyb21XZWxsS25vd25TdHJhdGVneQogICoKICAqIG9wY2xhc3MgLSB0 aGUgb3BjbGFzcyB0byB1c2UKLSAqIGF0dHR5cGUgLSB0aGUgdHlwZSB0byBhc2sgYWJvdXQK KyAqIHJoc3R5cGUgLSB0aGUgdHlwZSBmb3IgdGhlIHJpZ2h0LWhhbmQgc2lkZQogICogb3Bp ZCAtIGhvbGRzIHRoZSBvcGVyYXRvciB3ZSBmb3VuZAogICogc3RyYXQgLSBob2xkcyB0aGUg aW5wdXQgYW5kIG91dHB1dCBzdHJhdGVneSBudW1iZXIKICAqCkBAIC0yNDM0LDE0ICsyNDM2 LDMwIEBAIEdldERlZmF1bHRPcENsYXNzKE9pZCB0eXBlX2lkLCBPaWQgYW1faWQpCiAgKiBJ bnZhbGlkU3RyYXRlZ3kuCiAgKi8KIHZvaWQKLUdldE9wZXJhdG9yRnJvbVdlbGxLbm93blN0 cmF0ZWd5KE9pZCBvcGNsYXNzLCBPaWQgYXR0dHlwZSwKLQkJCQkJCQkJIE9pZCAqb3BpZCwg U3RyYXRlZ3lOdW1iZXIgKnN0cmF0KQorR2V0T3BlcmF0b3JGcm9tV2VsbEtub3duU3RyYXRl Z3koT2lkIG9wY2xhc3MsCisJCQkJCQkJCSBPaWQgcmhzdHlwZSwKKwkJCQkJCQkJIE9pZCAq b3BpZCwKKwkJCQkJCQkJIFN0cmF0ZWd5TnVtYmVyICpzdHJhdCkKIHsKIAlPaWQJCQlvcGZh bWlseTsKIAlPaWQJCQlvcGNpbnR5cGU7CiAJU3RyYXRlZ3lOdW1iZXIgaW5zdHJhdCA9ICpz dHJhdDsKKwljaGFyCSAgICplcnJzdHI7CiAKLQlBc3NlcnQoaW5zdHJhdCA9PSBSVEVxdWFs U3RyYXRlZ3lOdW1iZXIgfHwgaW5zdHJhdCA9PSBSVE92ZXJsYXBTdHJhdGVneU51bWJlcik7 CisJc3dpdGNoIChpbnN0cmF0KQorCXsKKwkJY2FzZSBSVEVxdWFsU3RyYXRlZ3lOdW1iZXI6 CisJCQllcnJzdHIgPSAiY291bGQgbm90IGlkZW50aWZ5IGFuIGVxdWFsaXR5IG9wZXJhdG9y IGZvciB0eXBlICVzIjsKKwkJCWJyZWFrOworCQljYXNlIFJUT3ZlcmxhcFN0cmF0ZWd5TnVt YmVyOgorCQkJZXJyc3RyID0gImNvdWxkIG5vdCBpZGVudGlmeSBhbiBvdmVybGFwcyBvcGVy YXRvciBmb3IgdHlwZSAlcyI7CisJCQlicmVhazsKKwkJY2FzZSBSVENvbnRhaW5lZEJ5U3Ry YXRlZ3lOdW1iZXI6CisJCQllcnJzdHIgPSAiY291bGQgbm90IGlkZW50aWZ5IGEgY29udGFp bmVkIGJ5IG9wZXJhdG9yIGZvciB0eXBlICVzIjsKKwkJCWJyZWFrOworCQlkZWZhdWx0Ogor CQkJZWxvZyhFUlJPUiwgInVuc3VwcG9ydGVkIHN0cmF0ZWd5IG51bWJlciAldSIsIGluc3Ry YXQpOworCX0KIAogCSpvcGlkID0gSW52YWxpZE9pZDsKIApAQCAtMjQ2NCwxNiArMjQ4Miwy MCBAQCBHZXRPcGVyYXRvckZyb21XZWxsS25vd25TdHJhdGVneShPaWQgb3BjbGFzcywgT2lk IGF0dHR5cGUsCiAKIAkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCWVycmNvZGUoRVJSQ09ERV9V TkRFRklORURfT0JKRUNUKSwKLQkJCQkJaW5zdHJhdCA9PSBSVEVxdWFsU3RyYXRlZ3lOdW1i ZXIgPwotCQkJCQllcnJtc2coImNvdWxkIG5vdCBpZGVudGlmeSBhbiBlcXVhbGl0eSBvcGVy YXRvciBmb3IgdHlwZSAlcyIsIGZvcm1hdF90eXBlX2JlKGF0dHR5cGUpKSA6Ci0JCQkJCWVy cm1zZygiY291bGQgbm90IGlkZW50aWZ5IGFuIG92ZXJsYXBzIG9wZXJhdG9yIGZvciB0eXBl ICVzIiwgZm9ybWF0X3R5cGVfYmUoYXR0dHlwZSkpLAorCQkJCQllcnJtc2coZXJyc3RyLCBm b3JtYXRfdHlwZV9iZShvcGNpbnR5cGUpKSwKIAkJCQkJZXJyZGV0YWlsKCJDb3VsZCBub3Qg dHJhbnNsYXRlIHN0cmF0ZWd5IG51bWJlciAlZCBmb3Igb3BlcmF0b3IgY2xhc3MgXCIlc1wi IGZvciBhY2Nlc3MgbWV0aG9kIFwiJXNcIi4iLAogCQkJCQkJCSAgaW5zdHJhdCwgTmFtZVN0 cigoKEZvcm1fcGdfb3BjbGFzcykgR0VUU1RSVUNUKHR1cGxlKSktPm9wY25hbWUpLCAiZ2lz dCIpKTsKLQogCQkJUmVsZWFzZVN5c0NhY2hlKHR1cGxlKTsKIAkJfQogCi0JCSpvcGlkID0g Z2V0X29wZmFtaWx5X21lbWJlcihvcGZhbWlseSwgb3BjaW50eXBlLCBvcGNpbnR5cGUsICpz dHJhdCk7CisJCS8qCisJCSAqIFdlIHBhcmFtZXRlcml6ZSByaHN0eXBlIHNvIGZvcmVpZ24g a2V5cyBjYW4gYXNrIGZvciBhIDxAIG9wZXJhdG9yCisJCSAqIHdob3NlIHJocyBtYXRjaGVz IHRoZSBhZ2dyZWdhdGUgZnVuY3Rpb24uIEZvciBleGFtcGxlIHJhbmdlX2FnZworCQkgKiBy ZXR1cm5zIGFueW11bHRpcmFuZ2UuCisJCSAqLworCQlpZiAoIU9pZElzVmFsaWQocmhzdHlw ZSkpCisJCQlyaHN0eXBlID0gb3BjaW50eXBlOworCQkqb3BpZCA9IGdldF9vcGZhbWlseV9t ZW1iZXIob3BmYW1pbHksIG9wY2ludHlwZSwgcmhzdHlwZSwgKnN0cmF0KTsKIAl9CiAKIAlp ZiAoIU9pZElzVmFsaWQoKm9waWQpKQpAQCAtMjQ4Niw5ICsyNTA4LDcgQEAgR2V0T3BlcmF0 b3JGcm9tV2VsbEtub3duU3RyYXRlZ3koT2lkIG9wY2xhc3MsIE9pZCBhdHR0eXBlLAogCiAJ CWVyZXBvcnQoRVJST1IsCiAJCQkJZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9PQkpFQ1Qp LAotCQkJCWluc3RyYXQgPT0gUlRFcXVhbFN0cmF0ZWd5TnVtYmVyID8KLQkJCQllcnJtc2co ImNvdWxkIG5vdCBpZGVudGlmeSBhbiBlcXVhbGl0eSBvcGVyYXRvciBmb3IgdHlwZSAlcyIs IGZvcm1hdF90eXBlX2JlKGF0dHR5cGUpKSA6Ci0JCQkJZXJybXNnKCJjb3VsZCBub3QgaWRl bnRpZnkgYW4gb3ZlcmxhcHMgb3BlcmF0b3IgZm9yIHR5cGUgJXMiLCBmb3JtYXRfdHlwZV9i ZShhdHR0eXBlKSksCisJCQkJZXJybXNnKGVycnN0ciwgZm9ybWF0X3R5cGVfYmUob3BjaW50 eXBlKSksCiAJCQkJZXJyZGV0YWlsKCJUaGVyZSBpcyBubyBzdWl0YWJsZSBvcGVyYXRvciBp biBvcGVyYXRvciBmYW1pbHkgXCIlc1wiIGZvciBhY2Nlc3MgbWV0aG9kIFwiJXNcIi4iLAog CQkJCQkJICBOYW1lU3RyKCgoRm9ybV9wZ19vcGZhbWlseSkgR0VUU1RSVUNUKHR1cGxlKSkt Pm9wZm5hbWUpLCAiZ2lzdCIpKTsKIAl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21t YW5kcy90YWJsZWNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCmlu ZGV4IDAyZTVkOGY4ZTM4Li40NTdhNDBiNjZhMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvdGFibGVjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVj bWRzLmMKQEAgLTE2LDYgKzE2LDcgQEAKIAogI2luY2x1ZGUgImFjY2Vzcy9hdHRtYXAuaCIK ICNpbmNsdWRlICJhY2Nlc3MvZ2VuYW0uaCIKKyNpbmNsdWRlICJhY2Nlc3MvZ2lzdC5oIgog I2luY2x1ZGUgImFjY2Vzcy9oZWFwYW0uaCIKICNpbmNsdWRlICJhY2Nlc3MvaGVhcGFtX3hs b2cuaCIKICNpbmNsdWRlICJhY2Nlc3MvbXVsdGl4YWN0LmgiCkBAIC0yMTIsNiArMjEzLDcg QEAgdHlwZWRlZiBzdHJ1Y3QgTmV3Q29uc3RyYWludAogCUNvbnN0clR5cGUJY29udHlwZTsJ CS8qIENIRUNLIG9yIEZPUkVJR04gKi8KIAlPaWQJCQlyZWZyZWxpZDsJCS8qIFBLIHJlbCwg aWYgRk9SRUlHTiAqLwogCU9pZAkJCXJlZmluZGlkOwkJLyogT0lEIG9mIFBLJ3MgaW5kZXgs IGlmIEZPUkVJR04gKi8KKwlib29sCQljb253aXRocGVyaW9kOwkvKiBXaGV0aGVyIHRoZSBu ZXcgRk9SRUlHTiBLRVkgdXNlcyBQRVJJT0QgKi8KIAlPaWQJCQljb25pZDsJCQkvKiBPSUQg b2YgcGdfY29uc3RyYWludCBlbnRyeSwgaWYgRk9SRUlHTiAqLwogCU5vZGUJICAgKnF1YWw7 CQkJLyogQ2hlY2sgZXhwciBvciBDT05TVFJfRk9SRUlHTiBDb25zdHJhaW50ICovCiAJRXhw clN0YXRlICAqcXVhbHN0YXRlOwkJLyogRXhlY3V0aW9uIHN0YXRlIGZvciBDSEVDSyBleHBy ICovCkBAIC0zODcsMTYgKzM4OSwxNiBAQCBzdGF0aWMgaW50CXRyYW5zZm9ybUNvbHVtbk5h bWVMaXN0KE9pZCByZWxJZCwgTGlzdCAqY29sTGlzdCwKIHN0YXRpYyBpbnQJdHJhbnNmb3Jt RmtleUdldFByaW1hcnlLZXkoUmVsYXRpb24gcGtyZWwsIE9pZCAqaW5kZXhPaWQsCiAJCQkJ CQkJCQkgICBMaXN0ICoqYXR0bmFtZWxpc3QsCiAJCQkJCQkJCQkgICBpbnQxNiAqYXR0bnVt cywgT2lkICphdHR0eXBpZHMsCi0JCQkJCQkJCQkgICBPaWQgKm9wY2xhc3Nlcyk7CisJCQkJ CQkJCQkgICBPaWQgKm9wY2xhc3NlcywgYm9vbCAqcGtfcGVyaW9kKTsKIHN0YXRpYyBPaWQJ dHJhbnNmb3JtRmtleUNoZWNrQXR0cnMoUmVsYXRpb24gcGtyZWwsCiAJCQkJCQkJCQlpbnQg bnVtYXR0cnMsIGludDE2ICphdHRudW1zLAotCQkJCQkJCQkJT2lkICpvcGNsYXNzZXMpOwor CQkJCQkJCQkJYm9vbCBpc190ZW1wb3JhbCwgT2lkICpvcGNsYXNzZXMpOwogc3RhdGljIHZv aWQgY2hlY2tGa2V5UGVybWlzc2lvbnMoUmVsYXRpb24gcmVsLCBpbnQxNiAqYXR0bnVtcywg aW50IG5hdHRzKTsKIHN0YXRpYyBDb2VyY2lvblBhdGhUeXBlIGZpbmRGa2V5Q2FzdChPaWQg dGFyZ2V0VHlwZUlkLCBPaWQgc291cmNlVHlwZUlkLAogCQkJCQkJCQkJIE9pZCAqZnVuY2lk KTsKIHN0YXRpYyB2b2lkIHZhbGlkYXRlRm9yZWlnbktleUNvbnN0cmFpbnQoY2hhciAqY29u bmFtZSwKIAkJCQkJCQkJCQkgUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBwa3JlbCwKLQkJCQkJ CQkJCQkgT2lkIHBraW5kT2lkLCBPaWQgY29uc3RyYWludE9pZCk7CisJCQkJCQkJCQkJIE9p ZCBwa2luZE9pZCwgT2lkIGNvbnN0cmFpbnRPaWQsIGJvb2wgdGVtcG9yYWwpOwogc3RhdGlj IHZvaWQgQVRDb250cm9sbGVyKEFsdGVyVGFibGVTdG10ICpwYXJzZXRyZWUsCiAJCQkJCQkg UmVsYXRpb24gcmVsLCBMaXN0ICpjbWRzLCBib29sIHJlY3Vyc2UsIExPQ0tNT0RFIGxvY2tt b2RlLAogCQkJCQkJIEFsdGVyVGFibGVVdGlsaXR5Q29udGV4dCAqY29udGV4dCk7CkBAIC01 MDksNyArNTExLDggQEAgc3RhdGljIE9iamVjdEFkZHJlc3MgYWRkRmtSZWN1cnNlUmVmZXJl bmNlZChMaXN0ICoqd3F1ZXVlLCBDb25zdHJhaW50ICpma2NvbnN0cmEKIAkJCQkJCQkJCQkJ T2lkICpwZmVxb3BlcmF0b3JzLCBPaWQgKnBwZXFvcGVyYXRvcnMsIE9pZCAqZmZlcW9wZXJh dG9ycywKIAkJCQkJCQkJCQkJaW50IG51bWZrZGVsc2V0Y29scywgaW50MTYgKmZrZGVsc2V0 Y29scywKIAkJCQkJCQkJCQkJYm9vbCBvbGRfY2hlY2tfb2ssCi0JCQkJCQkJCQkJCU9pZCBw YXJlbnREZWxUcmlnZ2VyLCBPaWQgcGFyZW50VXBkVHJpZ2dlcik7CisJCQkJCQkJCQkJCU9p ZCBwYXJlbnREZWxUcmlnZ2VyLCBPaWQgcGFyZW50VXBkVHJpZ2dlciwKKwkJCQkJCQkJCQkJ Ym9vbCBpc190ZW1wb3JhbCk7CiBzdGF0aWMgdm9pZCB2YWxpZGF0ZUZrT25EZWxldGVTZXRD b2x1bW5zKGludCBudW1ma3MsIGNvbnN0IGludDE2ICpma2F0dG51bXMsCiAJCQkJCQkJCQkJ IGludCBudW1ma3NldGNvbHMsIGNvbnN0IGludDE2ICpma3NldGNvbHNhdHRudW1zLAogCQkJ CQkJCQkJCSBMaXN0ICpma3NldGNvbHMpOwpAQCAtNTE5LDcgKzUyMiw5IEBAIHN0YXRpYyB2 b2lkIGFkZEZrUmVjdXJzZVJlZmVyZW5jaW5nKExpc3QgKip3cXVldWUsIENvbnN0cmFpbnQg KmZrY29uc3RyYWludCwKIAkJCQkJCQkJCU9pZCAqcGZlcW9wZXJhdG9ycywgT2lkICpwcGVx b3BlcmF0b3JzLCBPaWQgKmZmZXFvcGVyYXRvcnMsCiAJCQkJCQkJCQlpbnQgbnVtZmtkZWxz ZXRjb2xzLCBpbnQxNiAqZmtkZWxzZXRjb2xzLAogCQkJCQkJCQkJYm9vbCBvbGRfY2hlY2tf b2ssIExPQ0tNT0RFIGxvY2ttb2RlLAotCQkJCQkJCQkJT2lkIHBhcmVudEluc1RyaWdnZXIs IE9pZCBwYXJlbnRVcGRUcmlnZ2VyKTsKKwkJCQkJCQkJCU9pZCBwYXJlbnRJbnNUcmlnZ2Vy LCBPaWQgcGFyZW50VXBkVHJpZ2dlciwKKwkJCQkJCQkJCWJvb2wgaXNfdGVtcG9yYWwpOwor CiBzdGF0aWMgdm9pZCBDbG9uZUZvcmVpZ25LZXlDb25zdHJhaW50cyhMaXN0ICoqd3F1ZXVl LCBSZWxhdGlvbiBwYXJlbnRSZWwsCiAJCQkJCQkJCQkgICBSZWxhdGlvbiBwYXJ0aXRpb25S ZWwpOwogc3RhdGljIHZvaWQgQ2xvbmVGa1JlZmVyZW5jZWQoUmVsYXRpb24gcGFyZW50UmVs LCBSZWxhdGlvbiBwYXJ0aXRpb25SZWwpOwpAQCAtNTU4LDYgKzU2Myw3IEBAIHN0YXRpYyB2 b2lkIEZpbmRGS0NvbXBhcmlzb25PcGVyYXRvcnMoQ29uc3RyYWludCAqZmtjb25zdHJhaW50 LAogCQkJCQkJCQkJICBib29sICpvbGRfY2hlY2tfb2ssCiAJCQkJCQkJCQkgIExpc3RDZWxs ICoqb2xkX3BmZXFvcF9pdGVtLAogCQkJCQkJCQkJICBPaWQgcGt0eXBlLCBPaWQgZmt0eXBl LCBPaWQgb3BjbGFzcywKKwkJCQkJCQkJCSAgYm9vbCBpc190ZW1wb3JhbCwgYm9vbCBmb3Jf b3ZlcmxhcHMsCiAJCQkJCQkJCQkgIE9pZCAqcGZlcW9wT3V0LCBPaWQgKnBwZXFvcE91dCwg T2lkICpmZmVxb3BPdXQpOwogc3RhdGljIHZvaWQgQVRFeGVjRHJvcENvbnN0cmFpbnQoUmVs YXRpb24gcmVsLCBjb25zdCBjaGFyICpjb25zdHJOYW1lLAogCQkJCQkJCQkgRHJvcEJlaGF2 aW9yIGJlaGF2aW9yLCBib29sIHJlY3Vyc2UsCkBAIC01OTczLDcgKzU5NzksOCBAQCBBVFJl d3JpdGVUYWJsZXMoQWx0ZXJUYWJsZVN0bXQgKnBhcnNldHJlZSwgTGlzdCAqKndxdWV1ZSwg TE9DS01PREUgbG9ja21vZGUsCiAKIAkJCQl2YWxpZGF0ZUZvcmVpZ25LZXlDb25zdHJhaW50 KGZrY29uc3RyYWludC0+Y29ubmFtZSwgcmVsLCByZWZyZWwsCiAJCQkJCQkJCQkJCSBjb24t PnJlZmluZGlkLAotCQkJCQkJCQkJCQkgY29uLT5jb25pZCk7CisJCQkJCQkJCQkJCSBjb24t PmNvbmlkLAorCQkJCQkJCQkJCQkgY29uLT5jb253aXRocGVyaW9kKTsKIAogCQkJCS8qCiAJ CQkJICogTm8gbmVlZCB0byBtYXJrIHRoZSBjb25zdHJhaW50IHJvdyBhcyB2YWxpZGF0ZWQs IHdlIGRpZApAQCAtOTgyMyw2ICs5ODMwLDggQEAgQVRBZGRGb3JlaWduS2V5Q29uc3RyYWlu dChMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwK IAlPaWQJCQlwcGVxb3BlcmF0b3JzW0lOREVYX01BWF9LRVlTXSA9IHswfTsKIAlPaWQJCQlm ZmVxb3BlcmF0b3JzW0lOREVYX01BWF9LRVlTXSA9IHswfTsKIAlpbnQxNgkJZmtkZWxzZXRj b2xzW0lOREVYX01BWF9LRVlTXSA9IHswfTsKKwlib29sCQlpc190ZW1wb3JhbDsKKwlib29s CQlwa193aXRoX3BlcmlvZDsKIAlpbnQJCQlpOwogCWludAkJCW51bWZrcywKIAkJCQludW1w a3MsCkBAIC05OTE3LDYgKzk5MjYsMTQgQEAgQVRBZGRGb3JlaWduS2V5Q29uc3RyYWludChM aXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKIAlu dW1ma3MgPSB0cmFuc2Zvcm1Db2x1bW5OYW1lTGlzdChSZWxhdGlvbkdldFJlbGlkKHJlbCks CiAJCQkJCQkJCQkgZmtjb25zdHJhaW50LT5ma19hdHRycywKIAkJCQkJCQkJCSBma2F0dG51 bSwgZmt0eXBvaWQpOworCWlzX3RlbXBvcmFsID0gZmtjb25zdHJhaW50LT5ma193aXRoX3Bl cmlvZCB8fCBma2NvbnN0cmFpbnQtPnBrX3dpdGhfcGVyaW9kOworCWlmIChpc190ZW1wb3Jh bCkKKwl7CisJCWlmICghZmtjb25zdHJhaW50LT5ma193aXRoX3BlcmlvZCkKKwkJCWVyZXBv cnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9GT1JFSUdOX0tFWSks CisJCQkJCWVycm1zZygiZm9yZWlnbiBrZXkgdXNlcyBQRVJJT0Qgb24gdGhlIHJlZmVyZW5j ZWQgdGFibGUgYnV0IG5vdCB0aGUgcmVmZXJlbmNpbmcgdGFibGUiKSkpOworCX0KIAogCW51 bWZrZGVsc2V0Y29scyA9IHRyYW5zZm9ybUNvbHVtbk5hbWVMaXN0KFJlbGF0aW9uR2V0UmVs aWQocmVsKSwKIAkJCQkJCQkJCQkJICBma2NvbnN0cmFpbnQtPmZrX2RlbF9zZXRfY29scywK QEAgLTk5MzYsMTYgKzk5NTMsMzIgQEAgQVRBZGRGb3JlaWduS2V5Q29uc3RyYWludChMaXN0 ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKIAkJbnVt cGtzID0gdHJhbnNmb3JtRmtleUdldFByaW1hcnlLZXkocGtyZWwsICZpbmRleE9pZCwKIAkJ CQkJCQkJCQkJJmZrY29uc3RyYWludC0+cGtfYXR0cnMsCiAJCQkJCQkJCQkJCXBrYXR0bnVt LCBwa3R5cG9pZCwKLQkJCQkJCQkJCQkJb3BjbGFzc2VzKTsKKwkJCQkJCQkJCQkJb3BjbGFz c2VzLCAmcGtfd2l0aF9wZXJpb2QpOworCisJCS8qIElmIHRoZSBwcmltYXJ5IGtleSB1c2Vz IFdJVEhPVVQgT1ZFUkxBUFMsIHRoZSBmayBtdXN0IHVzZSBQRVJJT0QgKi8KKwkJaWYgKHBr X3dpdGhfcGVyaW9kICYmICFma2NvbnN0cmFpbnQtPmZrX3dpdGhfcGVyaW9kKQorCQkJZXJl cG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX0ZPUkVJR05fS0VZ KSwKKwkJCQkJZXJybXNnKCJmb3JlaWduIGtleSB1c2VzIFBFUklPRCBvbiB0aGUgcmVmZXJl bmNlZCB0YWJsZSBidXQgbm90IHRoZSByZWZlcmVuY2luZyB0YWJsZSIpKSk7CiAJfQogCWVs c2UKIAl7CiAJCW51bXBrcyA9IHRyYW5zZm9ybUNvbHVtbk5hbWVMaXN0KFJlbGF0aW9uR2V0 UmVsaWQocGtyZWwpLAogCQkJCQkJCQkJCSBma2NvbnN0cmFpbnQtPnBrX2F0dHJzLAogCQkJ CQkJCQkJCSBwa2F0dG51bSwgcGt0eXBvaWQpOworCisJCWlmIChpc190ZW1wb3JhbCkKKwkJ eworCQkJaWYgKCFma2NvbnN0cmFpbnQtPnBrX3dpdGhfcGVyaW9kKQorCQkJCS8qIFNpbmNl IHdlIGdvdCBwa19hdHRycywgb25lIHNob3VsZCBiZSBhIHBlcmlvZC4gKi8KKwkJCQllcmVw b3J0KEVSUk9SLAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX0ZPUkVJR05fS0VZ KSwKKwkJCQkJCWVycm1zZygiZm9yZWlnbiBrZXkgdXNlcyBQRVJJT0Qgb24gdGhlIHJlZmVy ZW5jaW5nIHRhYmxlIGJ1dCBub3QgdGhlIHJlZmVyZW5jZWQgdGFibGUiKSkpOworCQl9CisK IAkJLyogTG9vayBmb3IgYW4gaW5kZXggbWF0Y2hpbmcgdGhlIGNvbHVtbiBsaXN0ICovCiAJ CWluZGV4T2lkID0gdHJhbnNmb3JtRmtleUNoZWNrQXR0cnMocGtyZWwsIG51bXBrcywgcGth dHRudW0sCi0JCQkJCQkJCQkJICAgb3BjbGFzc2VzKTsKKwkJCQkJCQkJCQkgICBpc190ZW1w b3JhbCwgb3BjbGFzc2VzKTsKIAl9CiAKIAkvKgpAQCAtMTAwMDYsMTAgKzEwMDM5LDI4IEBA IEFUQWRkRm9yZWlnbktleUNvbnN0cmFpbnQoTGlzdCAqKndxdWV1ZSwgQWx0ZXJlZFRhYmxl SW5mbyAqdGFiLCBSZWxhdGlvbiByZWwsCiAJCUZpbmRGS0NvbXBhcmlzb25PcGVyYXRvcnMo Zmtjb25zdHJhaW50LCB0YWIsIGksIGZrYXR0bnVtLAogCQkJCQkJCQkgICZvbGRfY2hlY2tf b2ssICZvbGRfcGZlcW9wX2l0ZW0sCiAJCQkJCQkJCSAgcGt0eXBvaWRbaV0sIGZrdHlwb2lk W2ldLCBvcGNsYXNzZXNbaV0sCisJCQkJCQkJCSAgaXNfdGVtcG9yYWwsIGlzX3RlbXBvcmFs ICYmIGkgPT0gbnVtcGtzIC0gMSwKIAkJCQkJCQkJICAmcGZlcW9wZXJhdG9yc1tpXSwgJnBw ZXFvcGVyYXRvcnNbaV0sCiAJCQkJCQkJCSAgJmZmZXFvcGVyYXRvcnNbaV0pOwogCX0KIAor CS8qCisJICogRm9yIEZLcyB3aXRoIFBFUklPRCB3ZSBuZWVkIGFuIG9wZXJhdG9yIGFuZCBh Z2dyZWdhdGUgZnVuY3Rpb24KKwkgKiB0byBjaGVjayB3aGV0aGVyIHRoZSByZWZlcmVuY2lu ZyByb3cncyByYW5nZSBpcyBjb250YWluZWQKKwkgKiBieSB0aGUgYWdncmVnYXRlZCByYW5n ZXMgb2YgdGhlIHJlZmVyZW5jZWQgcm93KHMpLgorCSAqIEZvciByYW5nZXR5cGVzIHRoaXMg aXMgZmsucGVyaW9kYXR0IDxAIHJhbmdlX2FnZyhway5wZXJpb2RhdHQpLgorCSAqIEZLcyB3 aWxsIGxvb2sgdGhlc2UgdXAgYXQgInJ1bnRpbWUiLCBidXQgd2Ugc2hvdWxkIG1ha2Ugc3Vy ZQorCSAqIHRoZSBsb29rdXAgd29ya3MgaGVyZSwgZXZlbiBpZiB3ZSBkb24ndCB1c2UgdGhl IHZhbHVlcy4KKwkgKi8KKwlpZiAoaXNfdGVtcG9yYWwpCisJeworCQlPaWQJCQlwZXJpb2Rv cGVyb2lkOworCQlPaWQJCQlhZ2dlZHBlcmlvZG9wZXJvaWQ7CisJCU9pZAkJCXBlcmlvZHBy b2NvaWQ7CisKKwkJRmluZEZLUGVyaW9kT3BlcnNBbmRQcm9jcyhvcGNsYXNzZXNbbnVtcGtz IC0gMV0sICZwZXJpb2RvcGVyb2lkLCAmYWdnZWRwZXJpb2RvcGVyb2lkLCAmcGVyaW9kcHJv Y29pZCk7CisJfQorCiAJLyoKIAkgKiBDcmVhdGUgYWxsIHRoZSBjb25zdHJhaW50IGFuZCB0 cmlnZ2VyIG9iamVjdHMsIHJlY3Vyc2luZyB0byBwYXJ0aXRpb25zCiAJICogYXMgbmVjZXNz YXJ5LiAgRmlyc3QgaGFuZGxlIHRoZSByZWZlcmVuY2VkIHNpZGUuCkBAIC0xMDAyNiw3ICsx MDA3Nyw4IEBAIEFUQWRkRm9yZWlnbktleUNvbnN0cmFpbnQoTGlzdCAqKndxdWV1ZSwgQWx0 ZXJlZFRhYmxlSW5mbyAqdGFiLCBSZWxhdGlvbiByZWwsCiAJCQkJCQkJCQkgbnVtZmtkZWxz ZXRjb2xzLAogCQkJCQkJCQkJIGZrZGVsc2V0Y29scywKIAkJCQkJCQkJCSBvbGRfY2hlY2tf b2ssCi0JCQkJCQkJCQkgSW52YWxpZE9pZCwgSW52YWxpZE9pZCk7CisJCQkJCQkJCQkgSW52 YWxpZE9pZCwgSW52YWxpZE9pZCwKKwkJCQkJCQkJCSBpc190ZW1wb3JhbCk7CiAKIAkvKiBO b3cgaGFuZGxlIHRoZSByZWZlcmVuY2luZyBzaWRlLiAqLwogCWFkZEZrUmVjdXJzZVJlZmVy ZW5jaW5nKHdxdWV1ZSwgZmtjb25zdHJhaW50LCByZWwsIHBrcmVsLApAQCAtMTAwNDIsNyAr MTAwOTQsOCBAQCBBVEFkZEZvcmVpZ25LZXlDb25zdHJhaW50KExpc3QgKip3cXVldWUsIEFs dGVyZWRUYWJsZUluZm8gKnRhYiwgUmVsYXRpb24gcmVsLAogCQkJCQkJCWZrZGVsc2V0Y29s cywKIAkJCQkJCQlvbGRfY2hlY2tfb2ssCiAJCQkJCQkJbG9ja21vZGUsCi0JCQkJCQkJSW52 YWxpZE9pZCwgSW52YWxpZE9pZCk7CisJCQkJCQkJSW52YWxpZE9pZCwgSW52YWxpZE9pZCwK KwkJCQkJCQlpc190ZW1wb3JhbCk7CiAKIAkvKgogCSAqIERvbmUuICBDbG9zZSBwayB0YWJs ZSwgYnV0IGtlZXAgbG9jayB1bnRpbCB3ZSd2ZSBjb21taXR0ZWQuCkBAIC0xMDEyNyw3ICsx MDE4MCw4IEBAIGFkZEZrUmVjdXJzZVJlZmVyZW5jZWQoTGlzdCAqKndxdWV1ZSwgQ29uc3Ry YWludCAqZmtjb25zdHJhaW50LCBSZWxhdGlvbiByZWwsCiAJCQkJCSAgIE9pZCAqcHBlcW9w ZXJhdG9ycywgT2lkICpmZmVxb3BlcmF0b3JzLAogCQkJCQkgICBpbnQgbnVtZmtkZWxzZXRj b2xzLCBpbnQxNiAqZmtkZWxzZXRjb2xzLAogCQkJCQkgICBib29sIG9sZF9jaGVja19vaywK LQkJCQkJICAgT2lkIHBhcmVudERlbFRyaWdnZXIsIE9pZCBwYXJlbnRVcGRUcmlnZ2VyKQor CQkJCQkgICBPaWQgcGFyZW50RGVsVHJpZ2dlciwgT2lkIHBhcmVudFVwZFRyaWdnZXIsCisJ CQkJCSAgIGJvb2wgaXNfdGVtcG9yYWwpCiB7CiAJT2JqZWN0QWRkcmVzcyBhZGRyZXNzOwog CU9pZAkJCWNvbnN0ck9pZDsKQEAgLTEwMjEzLDcgKzEwMjY3LDcgQEAgYWRkRmtSZWN1cnNl UmVmZXJlbmNlZChMaXN0ICoqd3F1ZXVlLCBDb25zdHJhaW50ICpma2NvbnN0cmFpbnQsIFJl bGF0aW9uIHJlbCwKIAkJCQkJCQkJCSAgY29uaXNsb2NhbCwJLyogaXNsb2NhbCAqLwogCQkJ CQkJCQkJICBjb25pbmhjb3VudCwJLyogaW5oY291bnQgKi8KIAkJCQkJCQkJCSAgY29ubm9p bmhlcml0LCAvKiBjb25Ob0luaGVyaXQgKi8KLQkJCQkJCQkJCSAgZmFsc2UsCS8qIGNvbldp dGhvdXRPdmVybGFwcyAqLworCQkJCQkJCQkJICBpc190ZW1wb3JhbCwJLyogY29uV2l0aG91 dE92ZXJsYXBzICovCiAJCQkJCQkJCQkgIGZhbHNlKTsJLyogaXNfaW50ZXJuYWwgKi8KIAog CU9iamVjdEFkZHJlc3NTZXQoYWRkcmVzcywgQ29uc3RyYWludFJlbGF0aW9uSWQsIGNvbnN0 ck9pZCk7CkBAIC0xMDI4OSw3ICsxMDM0Myw4IEBAIGFkZEZrUmVjdXJzZVJlZmVyZW5jZWQo TGlzdCAqKndxdWV1ZSwgQ29uc3RyYWludCAqZmtjb25zdHJhaW50LCBSZWxhdGlvbiByZWws CiAJCQkJCQkJCSAgIHBmZXFvcGVyYXRvcnMsIHBwZXFvcGVyYXRvcnMsIGZmZXFvcGVyYXRv cnMsCiAJCQkJCQkJCSAgIG51bWZrZGVsc2V0Y29scywgZmtkZWxzZXRjb2xzLAogCQkJCQkJ CQkgICBvbGRfY2hlY2tfb2ssCi0JCQkJCQkJCSAgIGRlbGV0ZVRyaWdnZXJPaWQsIHVwZGF0 ZVRyaWdnZXJPaWQpOworCQkJCQkJCQkgICBkZWxldGVUcmlnZ2VyT2lkLCB1cGRhdGVUcmln Z2VyT2lkLAorCQkJCQkJCQkgICBpc190ZW1wb3JhbCk7CiAKIAkJCS8qIERvbmUgLS0gY2xl YW4gdXAgKGJ1dCBrZWVwIHRoZSBsb2NrKSAqLwogCQkJdGFibGVfY2xvc2UocGFydFJlbCwg Tm9Mb2NrKTsKQEAgLTEwMzQ3LDcgKzEwNDAyLDggQEAgYWRkRmtSZWN1cnNlUmVmZXJlbmNp bmcoTGlzdCAqKndxdWV1ZSwgQ29uc3RyYWludCAqZmtjb25zdHJhaW50LCBSZWxhdGlvbiBy ZWwsCiAJCQkJCQlPaWQgKnBmZXFvcGVyYXRvcnMsIE9pZCAqcHBlcW9wZXJhdG9ycywgT2lk ICpmZmVxb3BlcmF0b3JzLAogCQkJCQkJaW50IG51bWZrZGVsc2V0Y29scywgaW50MTYgKmZr ZGVsc2V0Y29scywKIAkJCQkJCWJvb2wgb2xkX2NoZWNrX29rLCBMT0NLTU9ERSBsb2NrbW9k ZSwKLQkJCQkJCU9pZCBwYXJlbnRJbnNUcmlnZ2VyLCBPaWQgcGFyZW50VXBkVHJpZ2dlcikK KwkJCQkJCU9pZCBwYXJlbnRJbnNUcmlnZ2VyLCBPaWQgcGFyZW50VXBkVHJpZ2dlciwKKwkJ CQkJCWJvb2wgaXNfdGVtcG9yYWwpCiB7CiAJT2lkCQkJaW5zZXJ0VHJpZ2dlck9pZCwKIAkJ CQl1cGRhdGVUcmlnZ2VyT2lkOwpAQCAtMTAzOTUsNiArMTA0NTEsNyBAQCBhZGRGa1JlY3Vy c2VSZWZlcmVuY2luZyhMaXN0ICoqd3F1ZXVlLCBDb25zdHJhaW50ICpma2NvbnN0cmFpbnQs IFJlbGF0aW9uIHJlbCwKIAkJCW5ld2Nvbi0+cmVmcmVsaWQgPSBSZWxhdGlvbkdldFJlbGlk KHBrcmVsKTsKIAkJCW5ld2Nvbi0+cmVmaW5kaWQgPSBpbmRleE9pZDsKIAkJCW5ld2Nvbi0+ Y29uaWQgPSBwYXJlbnRDb25zdHI7CisJCQluZXdjb24tPmNvbndpdGhwZXJpb2QgPSBma2Nv bnN0cmFpbnQtPmZrX3dpdGhfcGVyaW9kOwogCQkJbmV3Y29uLT5xdWFsID0gKE5vZGUgKikg Zmtjb25zdHJhaW50OwogCiAJCQl0YWItPmNvbnN0cmFpbnRzID0gbGFwcGVuZCh0YWItPmNv bnN0cmFpbnRzLCBuZXdjb24pOwpAQCAtMTA1MTIsNyArMTA1NjksNyBAQCBhZGRGa1JlY3Vy c2VSZWZlcmVuY2luZyhMaXN0ICoqd3F1ZXVlLCBDb25zdHJhaW50ICpma2NvbnN0cmFpbnQs IFJlbGF0aW9uIHJlbCwKIAkJCQkJCQkJCSAgZmFsc2UsCiAJCQkJCQkJCQkgIDEsCiAJCQkJ CQkJCQkgIGZhbHNlLAotCQkJCQkJCQkJICBmYWxzZSwJLyogY29uV2l0aG91dE92ZXJsYXBz ICovCisJCQkJCQkJCQkgIGlzX3RlbXBvcmFsLAkvKiBjb25XaXRob3V0T3ZlcmxhcHMgKi8K IAkJCQkJCQkJCSAgZmFsc2UpOwogCiAJCQkvKgpAQCAtMTA1NDMsNyArMTA2MDAsOCBAQCBh ZGRGa1JlY3Vyc2VSZWZlcmVuY2luZyhMaXN0ICoqd3F1ZXVlLCBDb25zdHJhaW50ICpma2Nv bnN0cmFpbnQsIFJlbGF0aW9uIHJlbCwKIAkJCQkJCQkJCW9sZF9jaGVja19vaywKIAkJCQkJ CQkJCWxvY2ttb2RlLAogCQkJCQkJCQkJaW5zZXJ0VHJpZ2dlck9pZCwKLQkJCQkJCQkJCXVw ZGF0ZVRyaWdnZXJPaWQpOworCQkJCQkJCQkJdXBkYXRlVHJpZ2dlck9pZCwKKwkJCQkJCQkJ CWlzX3RlbXBvcmFsKTsKIAogCQkJdGFibGVfY2xvc2UocGFydGl0aW9uLCBOb0xvY2spOwog CQl9CkBAIC0xMDc3OSw3ICsxMDgzNyw4IEBAIENsb25lRmtSZWZlcmVuY2VkKFJlbGF0aW9u IHBhcmVudFJlbCwgUmVsYXRpb24gcGFydGl0aW9uUmVsKQogCQkJCQkJCSAgIGNvbmZkZWxz ZXRjb2xzLAogCQkJCQkJCSAgIHRydWUsCiAJCQkJCQkJICAgZGVsZXRlVHJpZ2dlck9pZCwK LQkJCQkJCQkgICB1cGRhdGVUcmlnZ2VyT2lkKTsKKwkJCQkJCQkgICB1cGRhdGVUcmlnZ2Vy T2lkLAorCQkJCQkJCSAgIGNvbnN0ckZvcm0tPmNvbnBlcmlvZCk7CiAKIAkJdGFibGVfY2xv c2UoZmtSZWwsIE5vTG9jayk7CiAJCVJlbGVhc2VTeXNDYWNoZSh0dXBsZSk7CkBAIC0xMDg3 Miw2ICsxMDkzMSw3IEBAIENsb25lRmtSZWZlcmVuY2luZyhMaXN0ICoqd3F1ZXVlLCBSZWxh dGlvbiBwYXJlbnRSZWwsIFJlbGF0aW9uIHBhcnRSZWwpCiAJCUxpc3RDZWxsICAgKmxjOwog CQlPaWQJCQlpbnNlcnRUcmlnZ2VyT2lkLAogCQkJCQl1cGRhdGVUcmlnZ2VyT2lkOworCQli b29sCQlpc190ZW1wb3JhbDsKIAogCQl0dXBsZSA9IFNlYXJjaFN5c0NhY2hlMShDT05TVFJP SUQsIE9iamVjdElkR2V0RGF0dW0ocGFyZW50Q29uc3RyT2lkKSk7CiAJCWlmICghSGVhcFR1 cGxlSXNWYWxpZCh0dXBsZSkpCkBAIC0xMDk4Nyw2ICsxMTA0Nyw3IEBAIENsb25lRmtSZWZl cmVuY2luZyhMaXN0ICoqd3F1ZXVlLCBSZWxhdGlvbiBwYXJlbnRSZWwsIFJlbGF0aW9uIHBh cnRSZWwpCiAJCQlma2NvbnN0cmFpbnQtPmNvbm5hbWUgPSBwc3RyZHVwKE5hbWVTdHIoY29u c3RyRm9ybS0+Y29ubmFtZSkpOwogCiAJCWluZGV4T2lkID0gY29uc3RyRm9ybS0+Y29uaW5k aWQ7CisJCWlzX3RlbXBvcmFsID0gY29uc3RyRm9ybS0+Y29ucGVyaW9kOwogCQljb25zdHJP aWQgPQogCQkJQ3JlYXRlQ29uc3RyYWludEVudHJ5KGZrY29uc3RyYWludC0+Y29ubmFtZSwK IAkJCQkJCQkJICBjb25zdHJGb3JtLT5jb25uYW1lc3BhY2UsCkBAIC0xMTAxOCw3ICsxMTA3 OSw3IEBAIENsb25lRmtSZWZlcmVuY2luZyhMaXN0ICoqd3F1ZXVlLCBSZWxhdGlvbiBwYXJl bnRSZWwsIFJlbGF0aW9uIHBhcnRSZWwpCiAJCQkJCQkJCSAgZmFsc2UsCS8qIGlzbG9jYWwg Ki8KIAkJCQkJCQkJICAxLAkvKiBpbmhjb3VudCAqLwogCQkJCQkJCQkgIGZhbHNlLAkvKiBj b25Ob0luaGVyaXQgKi8KLQkJCQkJCQkJICBmYWxzZSwJLyogY29uV2l0aG91dE92ZXJsYXBz ICovCisJCQkJCQkJCSAgaXNfdGVtcG9yYWwsCS8qIGNvbldpdGhvdXRPdmVybGFwcyAqLwog CQkJCQkJCQkgIHRydWUpOwogCiAJCS8qIFNldCB1cCBwYXJ0aXRpb24gZGVwZW5kZW5jaWVz IGZvciB0aGUgbmV3IGNvbnN0cmFpbnQgKi8KQEAgLTExMDUyLDcgKzExMTEzLDggQEAgQ2xv bmVGa1JlZmVyZW5jaW5nKExpc3QgKip3cXVldWUsIFJlbGF0aW9uIHBhcmVudFJlbCwgUmVs YXRpb24gcGFydFJlbCkKIAkJCQkJCQkJZmFsc2UsCS8qIG5vIG9sZCBjaGVjayBleGlzdHMg Ki8KIAkJCQkJCQkJQWNjZXNzRXhjbHVzaXZlTG9jaywKIAkJCQkJCQkJaW5zZXJ0VHJpZ2dl ck9pZCwKLQkJCQkJCQkJdXBkYXRlVHJpZ2dlck9pZCk7CisJCQkJCQkJCXVwZGF0ZVRyaWdn ZXJPaWQsCisJCQkJCQkJCWlzX3RlbXBvcmFsKTsKIAkJdGFibGVfY2xvc2UocGtyZWwsIE5v TG9jayk7CiAJfQogCkBAIC0xMTA3NCw2ICsxMTEzNiw3IEBAIEZpbmRGS0NvbXBhcmlzb25P cGVyYXRvcnMoQ29uc3RyYWludCAqZmtjb25zdHJhaW50LAogCQkJCQkJICBib29sICpvbGRf Y2hlY2tfb2ssCiAJCQkJCQkgIExpc3RDZWxsICoqb2xkX3BmZXFvcF9pdGVtLAogCQkJCQkJ ICBPaWQgcGt0eXBlLCBPaWQgZmt0eXBlLCBPaWQgb3BjbGFzcywKKwkJCQkJCSAgYm9vbCBp c190ZW1wb3JhbCwgYm9vbCBmb3Jfb3ZlcmxhcHMsCiAJCQkJCQkgIE9pZCAqcGZlcW9wT3V0 LCBPaWQgKnBwZXFvcE91dCwgT2lkICpmZmVxb3BPdXQpCiB7CiAJT2lkCQkJZmt0eXBlZDsK QEAgLTExMDg1LDggKzExMTQ4LDEwIEBAIEZpbmRGS0NvbXBhcmlzb25PcGVyYXRvcnMoQ29u c3RyYWludCAqZmtjb25zdHJhaW50LAogCU9pZAkJCXBmZXFvcDsKIAlPaWQJCQlwcGVxb3A7 CiAJT2lkCQkJZmZlcW9wOworCVN0cmF0ZWd5TnVtYmVyCXJ0c3RyYXRlZ3k7CiAJaW50MTYJ CWVxc3RyYXRlZ3k7CiAJT2lkCQkJcGZlcW9wX3JpZ2h0OworCWNoYXIJICAgKnN0cmF0bmFt ZTsKIAogCS8qIFdlIG5lZWQgc2V2ZXJhbCBmaWVsZHMgb3V0IG9mIHRoZSBwZ19vcGNsYXNz IGVudHJ5ICovCiAJY2xhX2h0ID0gU2VhcmNoU3lzQ2FjaGUxKENMQU9JRCwgT2JqZWN0SWRH ZXREYXR1bShvcGNsYXNzKSk7CkBAIC0xMTA5OCwxNiArMTExNjMsNTEgQEAgRmluZEZLQ29t cGFyaXNvbk9wZXJhdG9ycyhDb25zdHJhaW50ICpma2NvbnN0cmFpbnQsCiAJb3BjaW50eXBl ID0gY2xhX3R1cC0+b3BjaW50eXBlOwogCVJlbGVhc2VTeXNDYWNoZShjbGFfaHQpOwogCi0J LyoKLQkgKiBDaGVjayBpdCdzIGEgYnRyZWU7IGN1cnJlbnRseSB0aGlzIGNhbiBuZXZlciBm YWlsIHNpbmNlIG5vIG90aGVyCi0JICogaW5kZXggQU1zIHN1cHBvcnQgdW5pcXVlIGluZGV4 ZXMuICBJZiB3ZSBldmVyIGRpZCBoYXZlIG90aGVyIHR5cGVzCi0JICogb2YgdW5pcXVlIGlu ZGV4ZXMsIHdlJ2QgbmVlZCBhIHdheSB0byBkZXRlcm1pbmUgd2hpY2ggb3BlcmF0b3IKLQkg KiBzdHJhdGVneSBudW1iZXIgaXMgZXF1YWxpdHkuICAoSXMgaXQgcmVhc29uYWJsZSB0byBp bnNpc3QgdGhhdAotCSAqIGV2ZXJ5IHN1Y2ggaW5kZXggQU0gdXNlIGJ0cmVlJ3MgbnVtYmVy IGZvciBlcXVhbGl0eT8pCi0JICovCi0JaWYgKGFtaWQgIT0gQlRSRUVfQU1fT0lEKQotCQll bG9nKEVSUk9SLCAib25seSBiLXRyZWUgaW5kZXhlcyBhcmUgc3VwcG9ydGVkIGZvciBmb3Jl aWduIGtleXMiKTsKLQllcXN0cmF0ZWd5ID0gQlRFcXVhbFN0cmF0ZWd5TnVtYmVyOworCWlm IChpc190ZW1wb3JhbCkKKwl7CisJCS8qCisJCSAqIEdpU1QgaW5kZXhlcyBhcmUgcmVxdWly ZWQgdG8gc3VwcG9ydCB0ZW1wb3JhbCBmb3JlaWduIGtleXMKKwkJICogYmVjYXVzZSB0aGV5 IGNvbWJpbmUgZXF1YWxzIGFuZCBvdmVybGFwcy4KKwkJICovCisJCWlmIChhbWlkICE9IEdJ U1RfQU1fT0lEKQorCQkJZWxvZyhFUlJPUiwgIm9ubHkgR2lTVCBpbmRleGVzIGFyZSBzdXBw b3J0ZWQgZm9yIHRlbXBvcmFsIGZvcmVpZ24ga2V5cyIpOworCQlpZiAoZm9yX292ZXJsYXBz KQorCQl7CisJCQlzdHJhdG5hbWUgPSAib3ZlcmxhcHMiOworCQkJcnRzdHJhdGVneSA9IFJU T3ZlcmxhcFN0cmF0ZWd5TnVtYmVyOworCQl9CisJCWVsc2UKKwkJeworCQkJc3RyYXRuYW1l ID0gImVxdWFsaXR5IjsKKwkJCXJ0c3RyYXRlZ3kgPSBSVEVxdWFsU3RyYXRlZ3lOdW1iZXI7 CisJCX0KKwkJLyoKKwkJICogQW4gb3BjbGFzcyBjYW4gdXNlIHdoYXRldmVyIHN0cmF0ZWd5 IG51bWJlcnMgaXQgd2FudHMsIHNvIHdlIGFzaworCQkgKiB0aGUgb3BjbGFzcyB3aGF0IG51 bWJlciBpdCBhY3R1YWxseSB1c2VzIGluc3RlYWQgb2Ygb3VyCisJCSAqIFJUKiBjb25zdGFu dHMuCisJCSAqLworCQllcXN0cmF0ZWd5ID0gR2lzdFRyYW5zbGF0ZVN0cmF0bnVtKG9wY2xh c3MsIHJ0c3RyYXRlZ3kpOworCQlpZiAoZXFzdHJhdGVneSA9PSBJbnZhbGlkU3RyYXRlZ3kp CisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9P QkpFQ1QpLAorCQkJCQkgZXJybXNnKCJubyAlcyBvcGVyYXRvciBmb3VuZCBmb3IgZm9yZWln biBrZXkiLCBzdHJhdG5hbWUpLAorCQkJCQkgZXJyZGV0YWlsKCJDb3VsZCBub3QgdHJhbnNs YXRlIHN0cmF0ZWd5IG51bWJlciAlZCBmb3Igb3BjbGFzcyAlZC4iLAorCQkJCQkJIHJ0c3Ry YXRlZ3ksIG9wY2xhc3MpLAorCQkJCQkgZXJyaGludCgiRGVmaW5lIGEgc3RyYXRudW0gc3Vw cG9ydCBmdW5jdGlvbiBmb3IgeW91ciBHaVNUIG9wY2xhc3MuIikpKTsKKwl9CisJZWxzZQor CXsKKwkJLyoKKwkJICogQ2hlY2sgaXQncyBhIGJ0cmVlOyBjdXJyZW50bHkgdGhpcyBjYW4g bmV2ZXIgZmFpbCBzaW5jZSBubyBvdGhlcgorCQkgKiBpbmRleCBBTXMgc3VwcG9ydCB1bmlx dWUgaW5kZXhlcy4gIElmIHdlIGV2ZXIgZGlkIGhhdmUgb3RoZXIgdHlwZXMKKwkJICogb2Yg dW5pcXVlIGluZGV4ZXMsIHdlJ2QgbmVlZCBhIHdheSB0byBkZXRlcm1pbmUgd2hpY2ggb3Bl cmF0b3IKKwkJICogc3RyYXRlZ3kgbnVtYmVyIGlzIGVxdWFsaXR5LiAgKElzIGl0IHJlYXNv bmFibGUgdG8gaW5zaXN0IHRoYXQKKwkJICogZXZlcnkgc3VjaCBpbmRleCBBTSB1c2UgYnRy ZWUncyBudW1iZXIgZm9yIGVxdWFsaXR5PykKKwkJICovCisJCWlmIChhbWlkICE9IEJUUkVF X0FNX09JRCkKKwkJCWVsb2coRVJST1IsICJvbmx5IGItdHJlZSBpbmRleGVzIGFyZSBzdXBw b3J0ZWQgZm9yIGZvcmVpZ24ga2V5cyIpOworCQllcXN0cmF0ZWd5ID0gQlRFcXVhbFN0cmF0 ZWd5TnVtYmVyOworCX0KIAogCS8qCiAJICogVGhlcmUgaGFkIGJldHRlciBiZSBhIHByaW1h cnkgZXF1YWxpdHkgb3BlcmF0b3IgZm9yIHRoZSBpbmRleC4KQEAgLTExNzYzLDcgKzExODYz LDExIEBAIEFURXhlY0FsdGVyQ29uc3RyUmVjdXJzZShDb25zdHJhaW50ICpjbWRjb24sIFJl bGF0aW9uIGNvbnJlbCwgUmVsYXRpb24gdGdyZWwsCiAJCQlpZiAodGdmb3JtLT50Z2ZvaWQg IT0gRl9SSV9GS0VZX05PQUNUSU9OX0RFTCAmJgogCQkJCXRnZm9ybS0+dGdmb2lkICE9IEZf UklfRktFWV9OT0FDVElPTl9VUEQgJiYKIAkJCQl0Z2Zvcm0tPnRnZm9pZCAhPSBGX1JJX0ZL RVlfQ0hFQ0tfSU5TICYmCi0JCQkJdGdmb3JtLT50Z2ZvaWQgIT0gRl9SSV9GS0VZX0NIRUNL X1VQRCkKKwkJCQl0Z2Zvcm0tPnRnZm9pZCAhPSBGX1JJX0ZLRVlfQ0hFQ0tfVVBEICYmCisJ CQkJdGdmb3JtLT50Z2ZvaWQgIT0gRl9SSV9GS0VZX1BFUklPRF9OT0FDVElPTl9ERUwgJiYK KwkJCQl0Z2Zvcm0tPnRnZm9pZCAhPSBGX1JJX0ZLRVlfUEVSSU9EX05PQUNUSU9OX1VQRCAm JgorCQkJCXRnZm9ybS0+dGdmb2lkICE9IEZfUklfRktFWV9QRVJJT0RfQ0hFQ0tfSU5TICYm CisJCQkJdGdmb3JtLT50Z2ZvaWQgIT0gRl9SSV9GS0VZX1BFUklPRF9DSEVDS19VUEQpCiAJ CQkJY29udGludWU7CiAKIAkJCXRnQ29weVR1cGxlID0gaGVhcF9jb3B5dHVwbGUodGd0dXBs ZSk7CkBAIC0xMjA3Nyw3ICsxMjE4MSw3IEBAIHN0YXRpYyBpbnQKIHRyYW5zZm9ybUZrZXlH ZXRQcmltYXJ5S2V5KFJlbGF0aW9uIHBrcmVsLCBPaWQgKmluZGV4T2lkLAogCQkJCQkJICAg TGlzdCAqKmF0dG5hbWVsaXN0LAogCQkJCQkJICAgaW50MTYgKmF0dG51bXMsIE9pZCAqYXR0 dHlwaWRzLAotCQkJCQkJICAgT2lkICpvcGNsYXNzZXMpCisJCQkJCQkgICBPaWQgKm9wY2xh c3NlcywgYm9vbCAqcGtfcGVyaW9kKQogewogCUxpc3QJICAgKmluZGV4b2lkbGlzdDsKIAlM aXN0Q2VsbCAgICppbmRleG9pZHNjYW47CkBAIC0xMjE0MSw3ICsxMjI0NSw4IEBAIHRyYW5z Zm9ybUZrZXlHZXRQcmltYXJ5S2V5KFJlbGF0aW9uIHBrcmVsLCBPaWQgKmluZGV4T2lkLAog CiAJLyoKIAkgKiBOb3cgYnVpbGQgdGhlIGxpc3Qgb2YgUEsgYXR0cmlidXRlcyBmcm9tIHRo ZSBpbmRrZXkgZGVmaW5pdGlvbiAod2UKLQkgKiBhc3N1bWUgYSBwcmltYXJ5IGtleSBjYW5u b3QgaGF2ZSBleHByZXNzaW9uYWwgZWxlbWVudHMpCisJICogYXNzdW1lIGEgcHJpbWFyeSBr ZXkgY2Fubm90IGhhdmUgZXhwcmVzc2lvbmFsIGVsZW1lbnRzLCB1bmxlc3MgaXQKKwkgKiBo YXMgYSBQRVJJT0QpCiAJICovCiAJKmF0dG5hbWVsaXN0ID0gTklMOwogCWZvciAoaSA9IDA7 IGkgPCBpbmRleFN0cnVjdC0+aW5kbmtleWF0dHM7IGkrKykKQEAgLTEyMTU1LDYgKzEyMjYw LDggQEAgdHJhbnNmb3JtRmtleUdldFByaW1hcnlLZXkoUmVsYXRpb24gcGtyZWwsIE9pZCAq aW5kZXhPaWQsCiAJCQkJCQkJICAgbWFrZVN0cmluZyhwc3RyZHVwKE5hbWVTdHIoKmF0dG51 bUF0dE5hbWUocGtyZWwsIHBrYXR0bm8pKSkpKTsKIAl9CiAKKwkqcGtfcGVyaW9kID0gKGlu ZGV4U3RydWN0LT5pbmRpc2V4Y2x1c2lvbik7CisKIAlSZWxlYXNlU3lzQ2FjaGUoaW5kZXhU dXBsZSk7CiAKIAlyZXR1cm4gaTsKQEAgLTEyMTc1LDcgKzEyMjgyLDcgQEAgdHJhbnNmb3Jt RmtleUdldFByaW1hcnlLZXkoUmVsYXRpb24gcGtyZWwsIE9pZCAqaW5kZXhPaWQsCiBzdGF0 aWMgT2lkCiB0cmFuc2Zvcm1Ga2V5Q2hlY2tBdHRycyhSZWxhdGlvbiBwa3JlbCwKIAkJCQkJ CWludCBudW1hdHRycywgaW50MTYgKmF0dG51bXMsCi0JCQkJCQlPaWQgKm9wY2xhc3NlcykK KwkJCQkJCWJvb2wgaXNfdGVtcG9yYWwsIE9pZCAqb3BjbGFzc2VzKQogewogCU9pZAkJCWlu ZGV4b2lkID0gSW52YWxpZE9pZDsKIAlib29sCQlmb3VuZCA9IGZhbHNlOwpAQCAtMTIyMjIs MTIgKzEyMzI5LDEzIEBAIHRyYW5zZm9ybUZrZXlDaGVja0F0dHJzKFJlbGF0aW9uIHBrcmVs LAogCQlpbmRleFN0cnVjdCA9IChGb3JtX3BnX2luZGV4KSBHRVRTVFJVQ1QoaW5kZXhUdXBs ZSk7CiAKIAkJLyoKLQkJICogTXVzdCBoYXZlIHRoZSByaWdodCBudW1iZXIgb2YgY29sdW1u czsgbXVzdCBiZSB1bmlxdWUgYW5kIG5vdCBhCisJCSAqIE11c3QgaGF2ZSB0aGUgcmlnaHQg bnVtYmVyIG9mIGNvbHVtbnM7IG11c3QgYmUgdW5pcXVlCisJCSAqIChvciBpZiB0ZW1wb3Jh bCB0aGVuIGV4Y2x1c2lvbiBpbnN0ZWFkKSBhbmQgbm90IGEKIAkJICogcGFydGlhbCBpbmRl eDsgZm9yZ2V0IGl0IGlmIHRoZXJlIGFyZSBhbnkgZXhwcmVzc2lvbnMsIHRvby4gSW52YWxp ZAogCQkgKiBpbmRleGVzIGFyZSBvdXQgYXMgd2VsbC4KIAkJICovCiAJCWlmIChpbmRleFN0 cnVjdC0+aW5kbmtleWF0dHMgPT0gbnVtYXR0cnMgJiYKLQkJCWluZGV4U3RydWN0LT5pbmRp c3VuaXF1ZSAmJgorCQkJKGlzX3RlbXBvcmFsID8gaW5kZXhTdHJ1Y3QtPmluZGlzZXhjbHVz aW9uIDogaW5kZXhTdHJ1Y3QtPmluZGlzdW5pcXVlKSAmJgogCQkJaW5kZXhTdHJ1Y3QtPmlu ZGlzdmFsaWQgJiYKIAkJCWhlYXBfYXR0aXNudWxsKGluZGV4VHVwbGUsIEFudW1fcGdfaW5k ZXhfaW5kcHJlZCwgTlVMTCkgJiYKIAkJCWhlYXBfYXR0aXNudWxsKGluZGV4VHVwbGUsIEFu dW1fcGdfaW5kZXhfaW5kZXhwcnMsIE5VTEwpKQpAQCAtMTIyNjUsNiArMTIzNzMsMTMgQEAg dHJhbnNmb3JtRmtleUNoZWNrQXR0cnMoUmVsYXRpb24gcGtyZWwsCiAJCQkJaWYgKCFmb3Vu ZCkKIAkJCQkJYnJlYWs7CiAJCQl9CisJCQkvKiBUaGUgbGFzdCBhdHRyaWJ1dGUgaW4gdGhl IGluZGV4IG11c3QgYmUgdGhlIFBFUklPRCBGSyBwYXJ0ICovCisJCQlpZiAoZm91bmQgJiYg aXNfdGVtcG9yYWwpCisJCQl7CisJCQkJaW50MTYgcGVyaW9kYXR0bnVtID0gYXR0bnVtc1tu dW1hdHRycyAtIDFdOworCisJCQkJZm91bmQgPSAocGVyaW9kYXR0bnVtID09IGluZGV4U3Ry dWN0LT5pbmRrZXkudmFsdWVzW251bWF0dHJzIC0gMV0pOworCQkJfQogCiAJCQkvKgogCQkJ ICogUmVmdXNlIHRvIHVzZSBhIGRlZmVycmFibGUgdW5pcXVlL3ByaW1hcnkga2V5LiAgVGhp cyBpcyBwZXIgU1FMCkBAIC0xMjM3NCw3ICsxMjQ4OSw4IEBAIHZhbGlkYXRlRm9yZWlnbktl eUNvbnN0cmFpbnQoY2hhciAqY29ubmFtZSwKIAkJCQkJCQkgUmVsYXRpb24gcmVsLAogCQkJ CQkJCSBSZWxhdGlvbiBwa3JlbCwKIAkJCQkJCQkgT2lkIHBraW5kT2lkLAotCQkJCQkJCSBP aWQgY29uc3RyYWludE9pZCkKKwkJCQkJCQkgT2lkIGNvbnN0cmFpbnRPaWQsCisJCQkJCQkJ IGJvb2wgdGVtcG9yYWwpCiB7CiAJVHVwbGVUYWJsZVNsb3QgKnNsb3Q7CiAJVGFibGVTY2Fu RGVzYyBzY2FuOwpAQCAtMTI0MDMsOCArMTI1MTksMTAgQEAgdmFsaWRhdGVGb3JlaWduS2V5 Q29uc3RyYWludChjaGFyICpjb25uYW1lLAogCS8qCiAJICogU2VlIGlmIHdlIGNhbiBkbyBp dCB3aXRoIGEgc2luZ2xlIExFRlQgSk9JTiBxdWVyeS4gIEEgZmFsc2UgcmVzdWx0CiAJICog aW5kaWNhdGVzIHdlIG11c3QgcHJvY2VlZCB3aXRoIHRoZSBmaXJlLXRoZS10cmlnZ2VyIG1l dGhvZC4KKwkgKiBXZSBjYW4ndCBkbyBhIExFRlQgSk9JTiBmb3IgdGVtcG9yYWwgRktzIHll dCwKKwkgKiBidXQgd2UgY2FuIG9uY2Ugd2Ugc3VwcG9ydCB0ZW1wb3JhbCBsZWZ0IGpvaW5z LgogCSAqLwotCWlmIChSSV9Jbml0aWFsX0NoZWNrKCZ0cmlnLCByZWwsIHBrcmVsKSkKKwlp ZiAoIXRlbXBvcmFsICYmIFJJX0luaXRpYWxfQ2hlY2soJnRyaWcsIHJlbCwgcGtyZWwpKQog CQlyZXR1cm47CiAKIAkvKgpAQCAtMTI0NzMsNiArMTI1OTEsNyBAQCBDcmVhdGVGS0NoZWNr VHJpZ2dlcihPaWQgbXlSZWxPaWQsIE9pZCByZWZSZWxPaWQsIENvbnN0cmFpbnQgKmZrY29u c3RyYWludCwKIHsKIAlPYmplY3RBZGRyZXNzIHRyaWdBZGRyZXNzOwogCUNyZWF0ZVRyaWdT dG10ICpma190cmlnZ2VyOworCWJvb2wgaXNfdGVtcG9yYWwgPSBma2NvbnN0cmFpbnQtPmZr X3dpdGhfcGVyaW9kOwogCiAJLyoKIAkgKiBOb3RlOiBmb3IgYSBzZWxmLXJlZmVyZW50aWFs IEZLIChyZWZlcmVuY2luZyBhbmQgcmVmZXJlbmNlZCB0YWJsZXMgYXJlCkBAIC0xMjQ5Miwx MiArMTI2MTEsMTggQEAgQ3JlYXRlRktDaGVja1RyaWdnZXIoT2lkIG15UmVsT2lkLCBPaWQg cmVmUmVsT2lkLCBDb25zdHJhaW50ICpma2NvbnN0cmFpbnQsCiAJLyogRWl0aGVyIE9OIElO U0VSVCBvciBPTiBVUERBVEUgKi8KIAlpZiAob25faW5zZXJ0KQogCXsKLQkJZmtfdHJpZ2dl ci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiUklfRktleV9jaGVja19pbnMiKTsKKwkJ aWYgKGlzX3RlbXBvcmFsKQorCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5j TmFtZSgiUklfRktleV9wZXJpb2RfY2hlY2tfaW5zIik7CisJCWVsc2UKKwkJCWZrX3RyaWdn ZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlJJX0ZLZXlfY2hlY2tfaW5zIik7CiAJ CWZrX3RyaWdnZXItPmV2ZW50cyA9IFRSSUdHRVJfVFlQRV9JTlNFUlQ7CiAJfQogCWVsc2UK IAl7Ci0JCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlJJX0ZLZXlf Y2hlY2tfdXBkIik7CisJCWlmIChpc190ZW1wb3JhbCkKKwkJCWZrX3RyaWdnZXItPmZ1bmNu YW1lID0gU3lzdGVtRnVuY05hbWUoIlJJX0ZLZXlfcGVyaW9kX2NoZWNrX3VwZCIpOworCQll bHNlCisJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJSSV9GS2V5 X2NoZWNrX3VwZCIpOwogCQlma190cmlnZ2VyLT5ldmVudHMgPSBUUklHR0VSX1RZUEVfVVBE QVRFOwogCX0KIApAQCAtMTI1NTUsMzcgKzEyNjgwLDY5IEBAIGNyZWF0ZUZvcmVpZ25LZXlB Y3Rpb25UcmlnZ2VycyhSZWxhdGlvbiByZWwsIE9pZCByZWZSZWxPaWQsIENvbnN0cmFpbnQg KmZrY29uc3RyCiAJZmtfdHJpZ2dlci0+d2hlbkNsYXVzZSA9IE5VTEw7CiAJZmtfdHJpZ2dl ci0+dHJhbnNpdGlvblJlbHMgPSBOSUw7CiAJZmtfdHJpZ2dlci0+Y29uc3RycmVsID0gTlVM TDsKLQlzd2l0Y2ggKGZrY29uc3RyYWludC0+ZmtfZGVsX2FjdGlvbikKKwlpZiAoZmtjb25z dHJhaW50LT5ma193aXRoX3BlcmlvZCkKIAl7Ci0JCWNhc2UgRktDT05TVFJfQUNUSU9OX05P QUNUSU9OOgotCQkJZmtfdHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZrY29uc3RyYWludC0+ZGVm ZXJyYWJsZTsKLQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZrY29uc3RyYWludC0+ aW5pdGRlZmVycmVkOwotCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFt ZSgiUklfRktleV9ub2FjdGlvbl9kZWwiKTsKLQkJCWJyZWFrOwotCQljYXNlIEZLQ09OU1RS X0FDVElPTl9SRVNUUklDVDoKLQkJCWZrX3RyaWdnZXItPmRlZmVycmFibGUgPSBmYWxzZTsK LQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZhbHNlOwotCQkJZmtfdHJpZ2dlci0+ ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiUklfRktleV9yZXN0cmljdF9kZWwiKTsKLQkJ CWJyZWFrOwotCQljYXNlIEZLQ09OU1RSX0FDVElPTl9DQVNDQURFOgotCQkJZmtfdHJpZ2dl ci0+ZGVmZXJyYWJsZSA9IGZhbHNlOwotCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVkID0g ZmFsc2U7Ci0JCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJSSV9G S2V5X2Nhc2NhZGVfZGVsIik7Ci0JCQlicmVhazsKLQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05f U0VUTlVMTDoKLQkJCWZrX3RyaWdnZXItPmRlZmVycmFibGUgPSBmYWxzZTsKLQkJCWZrX3Ry aWdnZXItPmluaXRkZWZlcnJlZCA9IGZhbHNlOwotCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUg PSBTeXN0ZW1GdW5jTmFtZSgiUklfRktleV9zZXRudWxsX2RlbCIpOwotCQkJYnJlYWs7Ci0J CWNhc2UgRktDT05TVFJfQUNUSU9OX1NFVERFRkFVTFQ6Ci0JCQlma190cmlnZ2VyLT5kZWZl cnJhYmxlID0gZmFsc2U7Ci0JCQlma190cmlnZ2VyLT5pbml0ZGVmZXJyZWQgPSBmYWxzZTsK LQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlJJX0ZLZXlfc2V0 ZGVmYXVsdF9kZWwiKTsKLQkJCWJyZWFrOwotCQlkZWZhdWx0OgotCQkJZWxvZyhFUlJPUiwg InVucmVjb2duaXplZCBGSyBhY3Rpb24gdHlwZTogJWQiLAotCQkJCSAoaW50KSBma2NvbnN0 cmFpbnQtPmZrX2RlbF9hY3Rpb24pOwotCQkJYnJlYWs7CisJCS8qIFRlbXBvcmFsIGZvcmVp Z24ga2V5cyAqLworCQlzd2l0Y2ggKGZrY29uc3RyYWludC0+ZmtfZGVsX2FjdGlvbikKKwkJ eworCQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fTk9BQ1RJT046CisJCQkJZmtfdHJpZ2dlci0+ ZGVmZXJyYWJsZSA9IGZrY29uc3RyYWludC0+ZGVmZXJyYWJsZTsKKwkJCQlma190cmlnZ2Vy LT5pbml0ZGVmZXJyZWQgPSBma2NvbnN0cmFpbnQtPmluaXRkZWZlcnJlZDsKKwkJCQlma190 cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJSSV9GS2V5X3BlcmlvZF9ub2Fj dGlvbl9kZWwiKTsKKwkJCQlicmVhazsKKwkJCWNhc2UgRktDT05TVFJfQUNUSU9OX1JFU1RS SUNUOgorCQkJCWZrX3RyaWdnZXItPmRlZmVycmFibGUgPSBmYWxzZTsKKwkJCQlma190cmln Z2VyLT5pbml0ZGVmZXJyZWQgPSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9 IFN5c3RlbUZ1bmNOYW1lKCJSSV9GS2V5X3BlcmlvZF9yZXN0cmljdF9kZWwiKTsKKwkJCQli cmVhazsKKwkJCWNhc2UgRktDT05TVFJfQUNUSU9OX0NBU0NBREU6CisJCQljYXNlIEZLQ09O U1RSX0FDVElPTl9TRVROVUxMOgorCQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fU0VUREVGQVVM VDoKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJF X05PVF9TVVBQT1JURUQpLAorCQkJCQkJIGVycm1zZygiaW52YWxpZCAlcyBhY3Rpb24gZm9y IGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgdXNpbmcgUEVSSU9EIiwKKwkJCQkJCQkJIk9OIERF TEVURSIpKSk7CisJCQkJYnJlYWs7CisJCQlkZWZhdWx0OgorCQkJCWVsb2coRVJST1IsICJ1 bnJlY29nbml6ZWQgRksgYWN0aW9uIHR5cGU6ICVkIiwKKwkJCQkJIChpbnQpIGZrY29uc3Ry YWludC0+ZmtfZGVsX2FjdGlvbik7CisJCQkJYnJlYWs7CisJCX0KKwl9CisJZWxzZQorCXsK KwkJc3dpdGNoIChma2NvbnN0cmFpbnQtPmZrX2RlbF9hY3Rpb24pCisJCXsKKwkJCWNhc2Ug RktDT05TVFJfQUNUSU9OX05PQUNUSU9OOgorCQkJCWZrX3RyaWdnZXItPmRlZmVycmFibGUg PSBma2NvbnN0cmFpbnQtPmRlZmVycmFibGU7CisJCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVy cmVkID0gZmtjb25zdHJhaW50LT5pbml0ZGVmZXJyZWQ7CisJCQkJZmtfdHJpZ2dlci0+ZnVu Y25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiUklfRktleV9ub2FjdGlvbl9kZWwiKTsKKwkJCQli cmVhazsKKwkJCWNhc2UgRktDT05TVFJfQUNUSU9OX1JFU1RSSUNUOgorCQkJCWZrX3RyaWdn ZXItPmRlZmVycmFibGUgPSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5pbml0ZGVmZXJyZWQg PSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJS SV9GS2V5X3Jlc3RyaWN0X2RlbCIpOworCQkJCWJyZWFrOworCQkJY2FzZSBGS0NPTlNUUl9B Q1RJT05fQ0FTQ0FERToKKwkJCQlma190cmlnZ2VyLT5kZWZlcnJhYmxlID0gZmFsc2U7CisJ CQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVkID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+ ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiUklfRktleV9jYXNjYWRlX2RlbCIpOworCQkJ CWJyZWFrOworCQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fU0VUTlVMTDoKKwkJCQlma190cmln Z2VyLT5kZWZlcnJhYmxlID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVk ID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgi UklfRktleV9zZXRudWxsX2RlbCIpOworCQkJCWJyZWFrOworCQkJY2FzZSBGS0NPTlNUUl9B Q1RJT05fU0VUREVGQVVMVDoKKwkJCQlma190cmlnZ2VyLT5kZWZlcnJhYmxlID0gZmFsc2U7 CisJCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVkID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dl ci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiUklfRktleV9zZXRkZWZhdWx0X2RlbCIp OworCQkJCWJyZWFrOworCQkJZGVmYXVsdDoKKwkJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25p emVkIEZLIGFjdGlvbiB0eXBlOiAlZCIsCisJCQkJCSAoaW50KSBma2NvbnN0cmFpbnQtPmZr X2RlbF9hY3Rpb24pOworCQkJCWJyZWFrOworCQl9CiAJfQogCiAJdHJpZ0FkZHJlc3MgPSBD cmVhdGVUcmlnZ2VyKGZrX3RyaWdnZXIsIE5VTEwsIHJlZlJlbE9pZCwKQEAgLTEyNjE1LDM3 ICsxMjc3Miw2OSBAQCBjcmVhdGVGb3JlaWduS2V5QWN0aW9uVHJpZ2dlcnMoUmVsYXRpb24g cmVsLCBPaWQgcmVmUmVsT2lkLCBDb25zdHJhaW50ICpma2NvbnN0cgogCWZrX3RyaWdnZXIt PndoZW5DbGF1c2UgPSBOVUxMOwogCWZrX3RyaWdnZXItPnRyYW5zaXRpb25SZWxzID0gTklM OwogCWZrX3RyaWdnZXItPmNvbnN0cnJlbCA9IE5VTEw7Ci0Jc3dpdGNoIChma2NvbnN0cmFp bnQtPmZrX3VwZF9hY3Rpb24pCisJaWYgKGZrY29uc3RyYWludC0+Zmtfd2l0aF9wZXJpb2Qp CiAJewotCQljYXNlIEZLQ09OU1RSX0FDVElPTl9OT0FDVElPTjoKLQkJCWZrX3RyaWdnZXIt PmRlZmVycmFibGUgPSBma2NvbnN0cmFpbnQtPmRlZmVycmFibGU7Ci0JCQlma190cmlnZ2Vy LT5pbml0ZGVmZXJyZWQgPSBma2NvbnN0cmFpbnQtPmluaXRkZWZlcnJlZDsKLQkJCWZrX3Ry aWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlJJX0ZLZXlfbm9hY3Rpb25fdXBk Iik7Ci0JCQlicmVhazsKLQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fUkVTVFJJQ1Q6Ci0JCQlm a190cmlnZ2VyLT5kZWZlcnJhYmxlID0gZmFsc2U7Ci0JCQlma190cmlnZ2VyLT5pbml0ZGVm ZXJyZWQgPSBmYWxzZTsKLQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05h bWUoIlJJX0ZLZXlfcmVzdHJpY3RfdXBkIik7Ci0JCQlicmVhazsKLQkJY2FzZSBGS0NPTlNU Ul9BQ1RJT05fQ0FTQ0FERToKLQkJCWZrX3RyaWdnZXItPmRlZmVycmFibGUgPSBmYWxzZTsK LQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZhbHNlOwotCQkJZmtfdHJpZ2dlci0+ ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiUklfRktleV9jYXNjYWRlX3VwZCIpOwotCQkJ YnJlYWs7Ci0JCWNhc2UgRktDT05TVFJfQUNUSU9OX1NFVE5VTEw6Ci0JCQlma190cmlnZ2Vy LT5kZWZlcnJhYmxlID0gZmFsc2U7Ci0JCQlma190cmlnZ2VyLT5pbml0ZGVmZXJyZWQgPSBm YWxzZTsKLQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlJJX0ZL ZXlfc2V0bnVsbF91cGQiKTsKLQkJCWJyZWFrOwotCQljYXNlIEZLQ09OU1RSX0FDVElPTl9T RVRERUZBVUxUOgotCQkJZmtfdHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZhbHNlOwotCQkJZmtf dHJpZ2dlci0+aW5pdGRlZmVycmVkID0gZmFsc2U7Ci0JCQlma190cmlnZ2VyLT5mdW5jbmFt ZSA9IFN5c3RlbUZ1bmNOYW1lKCJSSV9GS2V5X3NldGRlZmF1bHRfdXBkIik7Ci0JCQlicmVh azsKLQkJZGVmYXVsdDoKLQkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgRksgYWN0aW9u IHR5cGU6ICVkIiwKLQkJCQkgKGludCkgZmtjb25zdHJhaW50LT5ma191cGRfYWN0aW9uKTsK LQkJCWJyZWFrOworCQkvKiBUZW1wb3JhbCBmb3JlaWduIGtleXMgKi8KKwkJc3dpdGNoIChm a2NvbnN0cmFpbnQtPmZrX3VwZF9hY3Rpb24pCisJCXsKKwkJCWNhc2UgRktDT05TVFJfQUNU SU9OX05PQUNUSU9OOgorCQkJCWZrX3RyaWdnZXItPmRlZmVycmFibGUgPSBma2NvbnN0cmFp bnQtPmRlZmVycmFibGU7CisJCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVkID0gZmtjb25z dHJhaW50LT5pbml0ZGVmZXJyZWQ7CisJCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0 ZW1GdW5jTmFtZSgiUklfRktleV9wZXJpb2Rfbm9hY3Rpb25fdXBkIik7CisJCQkJYnJlYWs7 CisJCQljYXNlIEZLQ09OU1RSX0FDVElPTl9SRVNUUklDVDoKKwkJCQlma190cmlnZ2VyLT5k ZWZlcnJhYmxlID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVkID0gZmFs c2U7CisJCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiUklfRktl eV9wZXJpb2RfcmVzdHJpY3RfdXBkIik7CisJCQkJYnJlYWs7CisJCQljYXNlIEZLQ09OU1RS X0FDVElPTl9DQVNDQURFOgorCQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fU0VUTlVMTDoKKwkJ CWNhc2UgRktDT05TVFJfQUNUSU9OX1NFVERFRkFVTFQ6CisJCQkJZXJlcG9ydChFUlJPUiwK KwkJCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJ CSBlcnJtc2coImludmFsaWQgJXMgYWN0aW9uIGZvciBmb3JlaWduIGtleSBjb25zdHJhaW50 IHVzaW5nIFBFUklPRCIsCisJCQkJCQkJCSJPTiBVUERBVEUiKSkpOworCQkJCWJyZWFrOwor CQkJZGVmYXVsdDoKKwkJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIEZLIGFjdGlvbiB0 eXBlOiAlZCIsCisJCQkJCSAoaW50KSBma2NvbnN0cmFpbnQtPmZrX3VwZF9hY3Rpb24pOwor CQkJCWJyZWFrOworCQl9CisJfQorCWVsc2UKKwl7CisJCXN3aXRjaCAoZmtjb25zdHJhaW50 LT5ma191cGRfYWN0aW9uKQorCQl7CisJCQljYXNlIEZLQ09OU1RSX0FDVElPTl9OT0FDVElP TjoKKwkJCQlma190cmlnZ2VyLT5kZWZlcnJhYmxlID0gZmtjb25zdHJhaW50LT5kZWZlcnJh YmxlOworCQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZrY29uc3RyYWludC0+aW5p dGRlZmVycmVkOworCQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUo IlJJX0ZLZXlfbm9hY3Rpb25fdXBkIik7CisJCQkJYnJlYWs7CisJCQljYXNlIEZLQ09OU1RS X0FDVElPTl9SRVNUUklDVDoKKwkJCQlma190cmlnZ2VyLT5kZWZlcnJhYmxlID0gZmFsc2U7 CisJCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVkID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dl ci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiUklfRktleV9yZXN0cmljdF91cGQiKTsK KwkJCQlicmVhazsKKwkJCWNhc2UgRktDT05TVFJfQUNUSU9OX0NBU0NBREU6CisJCQkJZmtf dHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmluaXRkZWZl cnJlZCA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05h bWUoIlJJX0ZLZXlfY2FzY2FkZV91cGQiKTsKKwkJCQlicmVhazsKKwkJCWNhc2UgRktDT05T VFJfQUNUSU9OX1NFVE5VTEw6CisJCQkJZmtfdHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZhbHNl OworCQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZhbHNlOworCQkJCWZrX3RyaWdn ZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlJJX0ZLZXlfc2V0bnVsbF91cGQiKTsK KwkJCQlicmVhazsKKwkJCWNhc2UgRktDT05TVFJfQUNUSU9OX1NFVERFRkFVTFQ6CisJCQkJ ZmtfdHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmluaXRk ZWZlcnJlZCA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVu Y05hbWUoIlJJX0ZLZXlfc2V0ZGVmYXVsdF91cGQiKTsKKwkJCQlicmVhazsKKwkJCWRlZmF1 bHQ6CisJCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBGSyBhY3Rpb24gdHlwZTogJWQi LAorCQkJCQkgKGludCkgZmtjb25zdHJhaW50LT5ma191cGRfYWN0aW9uKTsKKwkJCQlicmVh azsKKwkJfQogCX0KIAogCXRyaWdBZGRyZXNzID0gQ3JlYXRlVHJpZ2dlcihma190cmlnZ2Vy LCBOVUxMLCByZWZSZWxPaWQsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3Jh bS55IGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQppbmRleCAxMzBmN2ZjN2MzZi4uYTkz NjY3MzNmMjAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKKysrIGIv c3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQpAQCAtNTIyLDEyICs1MjIsMTMgQEAgc3RhdGlj IE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFs aWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAkJCQkgU2V0UmVzZXRDbGF1c2UgRnVuY3Rpb25TZXRS ZXNldENsYXVzZQogCiAldHlwZSA8bm9kZT4JVGFibGVFbGVtZW50IFR5cGVkVGFibGVFbGVt ZW50IENvbnN0cmFpbnRFbGVtIFRhYmxlRnVuY0VsZW1lbnQKLSV0eXBlIDxub2RlPgljb2x1 bW5EZWYgY29sdW1uT3B0aW9ucworJXR5cGUgPG5vZGU+CWNvbHVtbkRlZiBjb2x1bW5PcHRp b25zIG9wdGlvbmFsUGVyaW9kTmFtZQogJXR5cGUgPGRlZmVsdD4JZGVmX2VsZW0gcmVsb3B0 aW9uX2VsZW0gb2xkX2FnZ3JfZWxlbSBvcGVyYXRvcl9kZWZfZWxlbQogJXR5cGUgPG5vZGU+ CWRlZl9hcmcgY29sdW1uRWxlbSB3aGVyZV9jbGF1c2Ugd2hlcmVfb3JfY3VycmVudF9jbGF1 c2UKIAkJCQlhX2V4cHIgYl9leHByIGNfZXhwciBBZXhwckNvbnN0IGluZGlyZWN0aW9uX2Vs IG9wdF9zbGljZV9ib3VuZAogCQkJCWNvbHVtbnJlZiBpbl9leHByIGhhdmluZ19jbGF1c2Ug ZnVuY190YWJsZSB4bWx0YWJsZSBhcnJheV9leHByCiAJCQkJT3B0V2hlcmVDbGF1c2Ugb3Bl cmF0b3JfZGVmX2FyZworJXR5cGUgPGxpc3Q+CW9wdF9jb2x1bW5fYW5kX3BlcmlvZF9saXN0 CiAldHlwZSA8bGlzdD4Jcm93c2Zyb21faXRlbSByb3dzZnJvbV9saXN0IG9wdF9jb2xfZGVm X2xpc3QKICV0eXBlIDxib29sZWFuPiBvcHRfb3JkaW5hbGl0eSBvcHRfd2l0aG91dF9vdmVy bGFwcwogJXR5cGUgPGxpc3Q+CUV4Y2x1c2lvbkNvbnN0cmFpbnRMaXN0IEV4Y2x1c2lvbkNv bnN0cmFpbnRFbGVtCkBAIC03NDUsNyArNzQ2LDcgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1 cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1 ZXJ5KTsKIAlPVkVSIE9WRVJMQVBTIE9WRVJMQVkgT1ZFUlJJRElORyBPV05FRCBPV05FUgog CiAJUEFSQUxMRUwgUEFSQU1FVEVSIFBBUlNFUiBQQVJUSUFMIFBBUlRJVElPTiBQQVNTSU5H IFBBU1NXT1JECi0JUExBQ0lORyBQTEFOUyBQT0xJQ1kKKwlQRVJJT0QgUExBQ0lORyBQTEFO UyBQT0xJQ1kKIAlQT1NJVElPTiBQUkVDRURJTkcgUFJFQ0lTSU9OIFBSRVNFUlZFIFBSRVBB UkUgUFJFUEFSRUQgUFJJTUFSWQogCVBSSU9SIFBSSVZJTEVHRVMgUFJPQ0VEVVJBTCBQUk9D RURVUkUgUFJPQ0VEVVJFUyBQUk9HUkFNIFBVQkxJQ0FUSU9OCiAKQEAgLTQyMjIsMjEgKzQy MjMsMzEgQEAgQ29uc3RyYWludEVsZW06CiAJCQkJCQkJCSAgIE5VTEwsIHl5c2Nhbm5lcik7 CiAJCQkJCSQkID0gKE5vZGUgKikgbjsKIAkJCQl9Ci0JCQl8IEZPUkVJR04gS0VZICcoJyBj b2x1bW5MaXN0ICcpJyBSRUZFUkVOQ0VTIHF1YWxpZmllZF9uYW1lCi0JCQkJb3B0X2NvbHVt bl9saXN0IGtleV9tYXRjaCBrZXlfYWN0aW9ucyBDb25zdHJhaW50QXR0cmlidXRlU3BlYwor CQkJfCBGT1JFSUdOIEtFWSAnKCcgY29sdW1uTGlzdCBvcHRpb25hbFBlcmlvZE5hbWUgJykn IFJFRkVSRU5DRVMgcXVhbGlmaWVkX25hbWUKKwkJCQlvcHRfY29sdW1uX2FuZF9wZXJpb2Rf bGlzdCBrZXlfbWF0Y2gga2V5X2FjdGlvbnMgQ29uc3RyYWludEF0dHJpYnV0ZVNwZWMKIAkJ CQl7CiAJCQkJCUNvbnN0cmFpbnQgKm4gPSBtYWtlTm9kZShDb25zdHJhaW50KTsKIAogCQkJ CQluLT5jb250eXBlID0gQ09OU1RSX0ZPUkVJR047CiAJCQkJCW4tPmxvY2F0aW9uID0gQDE7 Ci0JCQkJCW4tPnBrdGFibGUgPSAkNzsKKwkJCQkJbi0+cGt0YWJsZSA9ICQ4OwogCQkJCQlu LT5ma19hdHRycyA9ICQ0OwotCQkJCQluLT5wa19hdHRycyA9ICQ4OwotCQkJCQluLT5ma19t YXRjaHR5cGUgPSAkOTsKLQkJCQkJbi0+ZmtfdXBkX2FjdGlvbiA9ICgkMTApLT51cGRhdGVB Y3Rpb24tPmFjdGlvbjsKLQkJCQkJbi0+ZmtfZGVsX2FjdGlvbiA9ICgkMTApLT5kZWxldGVB Y3Rpb24tPmFjdGlvbjsKLQkJCQkJbi0+ZmtfZGVsX3NldF9jb2xzID0gKCQxMCktPmRlbGV0 ZUFjdGlvbi0+Y29sczsKLQkJCQkJcHJvY2Vzc0NBU2JpdHMoJDExLCBAMTEsICJGT1JFSUdO IEtFWSIsCisJCQkJCWlmICgkNSkKKwkJCQkJeworCQkJCQkJbi0+ZmtfYXR0cnMgPSBsYXBw ZW5kKG4tPmZrX2F0dHJzLCAkNSk7CisJCQkJCQluLT5ma193aXRoX3BlcmlvZCA9IHRydWU7 CisJCQkJCX0KKwkJCQkJbi0+cGtfYXR0cnMgPSBsaW5pdGlhbCgkOSk7CisJCQkJCWlmIChs c2Vjb25kKCQ5KSkKKwkJCQkJeworCQkJCQkJbi0+cGtfYXR0cnMgPSBsYXBwZW5kKG4tPnBr X2F0dHJzLCBsc2Vjb25kKCQ5KSk7CisJCQkJCQluLT5wa193aXRoX3BlcmlvZCA9IHRydWU7 CisJCQkJCX0KKwkJCQkJbi0+ZmtfbWF0Y2h0eXBlID0gJDEwOworCQkJCQluLT5ma191cGRf YWN0aW9uID0gKCQxMSktPnVwZGF0ZUFjdGlvbi0+YWN0aW9uOworCQkJCQluLT5ma19kZWxf YWN0aW9uID0gKCQxMSktPmRlbGV0ZUFjdGlvbi0+YWN0aW9uOworCQkJCQluLT5ma19kZWxf c2V0X2NvbHMgPSAoJDExKS0+ZGVsZXRlQWN0aW9uLT5jb2xzOworCQkJCQlwcm9jZXNzQ0FT Yml0cygkMTIsIEAxMiwgIkZPUkVJR04gS0VZIiwKIAkJCQkJCQkJICAgJm4tPmRlZmVycmFi bGUsICZuLT5pbml0ZGVmZXJyZWQsCiAJCQkJCQkJCSAgICZuLT5za2lwX3ZhbGlkYXRpb24s IE5VTEwsCiAJCQkJCQkJCSAgIHl5c2Nhbm5lcik7CkBAIC00MjY0LDYgKzQyNzUsMTYgQEAg Y29sdW1uTGlzdDoKIAkJCXwgY29sdW1uTGlzdCAnLCcgY29sdW1uRWxlbQkJCQl7ICQkID0g bGFwcGVuZCgkMSwgJDMpOyB9CiAJCTsKIAorb3B0aW9uYWxQZXJpb2ROYW1lOgorCQkJJywn IFBFUklPRCBjb2x1bW5FbGVtIHsgJCQgPSAkMzsgfQorCQkJfCAvKkVNUFRZKi8gICAgICAg ICAgICAgICB7ICQkID0gTlVMTDsgfQorCTsKKworb3B0X2NvbHVtbl9hbmRfcGVyaW9kX2xp c3Q6CisJCQknKCcgY29sdW1uTGlzdCBvcHRpb25hbFBlcmlvZE5hbWUgJyknCQkJeyAkJCA9 IGxpc3RfbWFrZTIoJDIsICQzKTsgfQorCQkJfCAvKkVNUFRZKi8JCQkJCQkJCXsgJCQgPSBs aXN0X21ha2UyKE5JTCwgTlVMTCk7IH0KKwkJOworCiBjb2x1bW5FbGVtOiBDb2xJZAogCQkJ CXsKIAkJCQkJJCQgPSAoTm9kZSAqKSBtYWtlU3RyaW5nKCQxKTsKQEAgLTE3NjE4LDYgKzE3 NjM5LDcgQEAgcmVzZXJ2ZWRfa2V5d29yZDoKIAkJCXwgT05MWQogCQkJfCBPUgogCQkJfCBP UkRFUgorCQkJfCBQRVJJT0QKIAkJCXwgUExBQ0lORwogCQkJfCBQUklNQVJZCiAJCQl8IFJF RkVSRU5DRVMKQEAgLTE3OTI3LDYgKzE3OTQ5LDcgQEAgYmFyZV9sYWJlbF9rZXl3b3JkOgog CQkJfCBQQVJUSVRJT04KIAkJCXwgUEFTU0lORwogCQkJfCBQQVNTV09SRAorCQkJfCBQRVJJ T0QKIAkJCXwgUExBQ0lORwogCQkJfCBQTEFOUwogCQkJfCBQT0xJQ1kKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yaV90cmlnZ2Vycy5jIGIvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L3JpX3RyaWdnZXJzLmMKaW5kZXggNzA4ZDljOGVmYzkuLmY1YzY1NzEyYjRiIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcmlfdHJpZ2dlcnMuYworKysgYi9z cmMvYmFja2VuZC91dGlscy9hZHQvcmlfdHJpZ2dlcnMuYwpAQCAtMzEsNiArMzEsNyBAQAog I2luY2x1ZGUgImNhdGFsb2cvcGdfY29sbGF0aW9uLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9w Z19jb25zdHJhaW50LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19vcGVyYXRvci5oIgorI2lu Y2x1ZGUgImNhdGFsb2cvcGdfcHJvYy5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5o IgogI2luY2x1ZGUgImNvbW1hbmRzL3RyaWdnZXIuaCIKICNpbmNsdWRlICJleGVjdXRvci9l eGVjdXRvci5oIgpAQCAtNDgsNiArNDksNyBAQAogI2luY2x1ZGUgInV0aWxzL2ludmFsLmgi CiAjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRp bHMuaCIKKyNpbmNsdWRlICJ1dGlscy9yYW5nZXR5cGVzLmgiCiAjaW5jbHVkZSAidXRpbHMv cmVsLmgiCiAjaW5jbHVkZSAidXRpbHMvcmxzLmgiCiAjaW5jbHVkZSAidXRpbHMvcnVsZXV0 aWxzLmgiCkBAIC0xMTgsMTIgKzEyMCwxNyBAQCB0eXBlZGVmIHN0cnVjdCBSSV9Db25zdHJh aW50SW5mbwogCWludDE2CQljb25mZGVsc2V0Y29sc1tSSV9NQVhfTlVNS0VZU107IC8qIGF0 dG51bXMgb2YgY29scyB0byBzZXQgb24KIAkJCQkJCQkJCQkJCSAqIGRlbGV0ZSAqLwogCWNo YXIJCWNvbmZtYXRjaHR5cGU7CS8qIGZvcmVpZ24ga2V5J3MgbWF0Y2ggdHlwZSAqLworCWJv b2wJCXRlbXBvcmFsOwkJLyogaWYgdGhlIGZvcmVpZ24ga2V5IGlzIHRlbXBvcmFsICovCiAJ aW50CQkJbmtleXM7CQkJLyogbnVtYmVyIG9mIGtleSBjb2x1bW5zICovCiAJaW50MTYJCXBr X2F0dG51bXNbUklfTUFYX05VTUtFWVNdOyAvKiBhdHRudW1zIG9mIHJlZmVyZW5jZWQgY29s cyAqLwogCWludDE2CQlma19hdHRudW1zW1JJX01BWF9OVU1LRVlTXTsgLyogYXR0bnVtcyBv ZiByZWZlcmVuY2luZyBjb2xzICovCiAJT2lkCQkJcGZfZXFfb3Byc1tSSV9NQVhfTlVNS0VZ U107IC8qIGVxdWFsaXR5IG9wZXJhdG9ycyAoUEsgPSBGSykgKi8KIAlPaWQJCQlwcF9lcV9v cHJzW1JJX01BWF9OVU1LRVlTXTsgLyogZXF1YWxpdHkgb3BlcmF0b3JzIChQSyA9IFBLKSAq LwogCU9pZAkJCWZmX2VxX29wcnNbUklfTUFYX05VTUtFWVNdOyAvKiBlcXVhbGl0eSBvcGVy YXRvcnMgKEZLID0gRkspICovCisJT2lkCQkJcGVyaW9kX2NvbnRhaW5lZF9ieV9vcGVyOwkv KiBvcGVyYXRvciBmb3IgUEVSSU9EIFNRTCAqLworCU9pZAkJCWFnZ2VkX3BlcmlvZF9jb250 YWluZWRfYnlfb3BlcjsJLyogb3BlcmF0b3IgZm9yIFBFUklPRCBTUUwgKi8KKwlPaWQJCQlw ZXJpb2RfcmVmZXJlbmNlZF9hZ2dfcHJvYzsJLyogcHJvYyBmb3IgUEVSSU9EIFNRTCAqLwor CU9pZAkJCXBlcmlvZF9yZWZlcmVuY2VkX2FnZ19yZXR0eXBlOwkvKiByZXR0eXBlIGZvciBw cmV2aW91cyAqLwogCWRsaXN0X25vZGUJdmFsaWRfbGluazsJCS8qIExpbmsgaW4gbGlzdCBv ZiB2YWxpZCBlbnRyaWVzICovCiB9IFJJX0NvbnN0cmFpbnRJbmZvOwogCkBAIC0yMzEsNiAr MjM4LDcgQEAgc3RhdGljIHZvaWQgcmlfUmVwb3J0VmlvbGF0aW9uKGNvbnN0IFJJX0NvbnN0 cmFpbnRJbmZvICpyaWluZm8sCiAJCQkJCQkJICAgUmVsYXRpb24gcGtfcmVsLCBSZWxhdGlv biBma19yZWwsCiAJCQkJCQkJICAgVHVwbGVUYWJsZVNsb3QgKnZpb2xhdG9yc2xvdCwgVHVw bGVEZXNjIHR1cGRlc2MsCiAJCQkJCQkJICAgaW50IHF1ZXJ5bm8sIGJvb2wgcGFydGdvbmUp IHBnX2F0dHJpYnV0ZV9ub3JldHVybigpOworc3RhdGljIHZvaWQgbG9va3VwUGVyaW9kUklQ cm9jKGNvbnN0IFJJX0NvbnN0cmFpbnRJbmZvICpyaWluZm8sIGNoYXIgKiphZ2duYW1lKTsK IAogCiAvKgpAQCAtMzY1LDE0ICszNzMsNDEgQEAgUklfRktleV9jaGVjayhUcmlnZ2VyRGF0 YSAqdHJpZ2RhdGEpCiAJCSAqCQkgICBGT1IgS0VZIFNIQVJFIE9GIHgKIAkJICogVGhlIHR5 cGUgaWQncyBmb3IgdGhlICQgcGFyYW1ldGVycyBhcmUgdGhvc2Ugb2YgdGhlCiAJCSAqIGNv cnJlc3BvbmRpbmcgRksgYXR0cmlidXRlcy4KKwkJICoKKwkJICogQnV0IGZvciB0ZW1wb3Jh bCBGS3Mgd2UgbmVlZCB0byBtYWtlIHN1cmUKKwkJICogdGhlIEZLJ3MgcmFuZ2UgaXMgY29t cGxldGVseSBjb3ZlcmVkLgorCQkgKiBTbyB3ZSB1c2UgdGhpcyBxdWVyeSBpbnN0ZWFkOgor CQkgKiAgU0VMRUNUIDEKKwkJICoJRlJPTQkoCisJCSAqCQlTRUxFQ1QgcGtwZXJpb2RhdHQg QVMgcgorCQkgKgkJRlJPTSAgIFtPTkxZXSBwa3RhYmxlIHgKKwkJICoJCVdIRVJFICBwa2F0 dDEgPSAkMSBbQU5EIC4uLl0KKwkJICoJCUFORCAgICBwa3BlcmlvZGF0dCAmJiAkbgorCQkg KgkJRk9SIEtFWSBTSEFSRSBPRiB4CisJCSAqCSkgeDEKKwkJICogIEhBVklORyAkbiA8QCBy YW5nZV9hZ2coeDEucikKKwkJICogTm90ZSBpZiBGT1IgS0VZIFNIQVJFIGV2ZXIgYWxsb3dz IEdST1VQIEJZIGFuZCBIQVZJTkcKKwkJICogd2UgY2FuIG1ha2UgdGhpcyBhIGJpdCBzaW1w bGVyLgogCQkgKiAtLS0tLS0tLS0tCiAJCSAqLwogCQlpbml0U3RyaW5nSW5mbygmcXVlcnli dWYpOwogCQlwa19vbmx5ID0gcGtfcmVsLT5yZF9yZWwtPnJlbGtpbmQgPT0gUkVMS0lORF9Q QVJUSVRJT05FRF9UQUJMRSA/CiAJCQkiIiA6ICJPTkxZICI7CiAJCXF1b3RlUmVsYXRpb25O YW1lKHBrcmVsbmFtZSwgcGtfcmVsKTsKLQkJYXBwZW5kU3RyaW5nSW5mbygmcXVlcnlidWYs ICJTRUxFQ1QgMSBGUk9NICVzJXMgeCIsCi0JCQkJCQkgcGtfb25seSwgcGtyZWxuYW1lKTsK KwkJaWYgKHJpaW5mby0+dGVtcG9yYWwpCisJCXsKKwkJCXF1b3RlT25lTmFtZShhdHRuYW1l LAorCQkJCQlSSUF0dE5hbWUocGtfcmVsLCByaWluZm8tPnBrX2F0dG51bXNbcmlpbmZvLT5u a2V5cyAtIDFdKSk7CisKKwkJCWFwcGVuZFN0cmluZ0luZm8oJnF1ZXJ5YnVmLAorCQkJCQki U0VMRUNUIDEgRlJPTSAoU0VMRUNUICVzIEFTIHIgRlJPTSAlcyVzIHgiLAorCQkJCQlhdHRu YW1lLCBwa19vbmx5LCBwa3JlbG5hbWUpOworCQl9CisJCWVsc2UKKwkJeworCQkJYXBwZW5k U3RyaW5nSW5mbygmcXVlcnlidWYsICJTRUxFQ1QgMSBGUk9NICVzJXMgeCIsCisJCQkJCQkJ IHBrX29ubHksIHBrcmVsbmFtZSk7CisJCX0KIAkJcXVlcnlzZXAgPSAiV0hFUkUiOwogCQlm b3IgKGludCBpID0gMDsgaSA8IHJpaW5mby0+bmtleXM7IGkrKykKIAkJewpAQCAtMzkwLDYg KzQyNSwyMSBAQCBSSV9GS2V5X2NoZWNrKFRyaWdnZXJEYXRhICp0cmlnZGF0YSkKIAkJCXF1 ZXJ5b2lkc1tpXSA9IGZrX3R5cGU7CiAJCX0KIAkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygm cXVlcnlidWYsICIgRk9SIEtFWSBTSEFSRSBPRiB4Iik7CisJCWlmIChyaWluZm8tPnRlbXBv cmFsKQorCQl7CisJCQljaGFyICAgKmFnZ25hbWU7CisJCQlPaWQJCWZrX3R5cGUgPSBSSUF0 dFR5cGUoZmtfcmVsLCByaWluZm8tPmZrX2F0dG51bXNbcmlpbmZvLT5ua2V5cyAtIDFdKTsK KwkJCU9pZAkJYWdnX3JldHR5cGUgPSByaWluZm8tPnBlcmlvZF9yZWZlcmVuY2VkX2FnZ19y ZXR0eXBlOworCisJCQlsb29rdXBQZXJpb2RSSVByb2MocmlpbmZvLCAmYWdnbmFtZSk7CisJ CQlhcHBlbmRTdHJpbmdJbmZvKCZxdWVyeWJ1ZiwgIikgeDEgSEFWSU5HICIpOworCQkJc3By aW50ZihwYXJhbW5hbWUsICIkJWQiLCByaWluZm8tPm5rZXlzKTsKKwkJCXJpX0dlbmVyYXRl UXVhbCgmcXVlcnlidWYsICIiLAorCQkJCQkJCXBhcmFtbmFtZSwgZmtfdHlwZSwKKwkJCQkJ CQlyaWluZm8tPmFnZ2VkX3BlcmlvZF9jb250YWluZWRfYnlfb3BlciwKKwkJCQkJCQlhZ2du YW1lLCBhZ2dfcmV0dHlwZSk7CisJCQlhcHBlbmRTdHJpbmdJbmZvKCZxdWVyeWJ1ZiwgIih4 MS5yKSIpOworCQl9CiAKIAkJLyogUHJlcGFyZSBhbmQgc2F2ZSB0aGUgcGxhbiAqLwogCQlx cGxhbiA9IHJpX1BsYW5DaGVjayhxdWVyeWJ1Zi5kYXRhLCByaWluZm8tPm5rZXlzLCBxdWVy eW9pZHMsCkBAIC00OTcsMTQgKzU0Nyw0MCBAQCByaV9DaGVja19Qa19NYXRjaChSZWxhdGlv biBwa19yZWwsIFJlbGF0aW9uIGZrX3JlbCwKIAkJICoJCSAgIEZPUiBLRVkgU0hBUkUgT0Yg eAogCQkgKiBUaGUgdHlwZSBpZCdzIGZvciB0aGUgJCBwYXJhbWV0ZXJzIGFyZSB0aG9zZSBv ZiB0aGUKIAkJICogUEsgYXR0cmlidXRlcyB0aGVtc2VsdmVzLgorCQkgKiBCdXQgZm9yIHRl bXBvcmFsIEZLcyB3ZSBuZWVkIHRvIG1ha2Ugc3VyZQorCQkgKiB0aGUgRksncyByYW5nZSBp cyBjb21wbGV0ZWx5IGNvdmVyZWQuCisJCSAqIFNvIHdlIHVzZSB0aGlzIHF1ZXJ5IGluc3Rl YWQ6CisJCSAqICBTRUxFQ1QgMQorCQkgKiAgRlJPTSAgICAoCisJCSAqCSAgU0VMRUNUIHBr cGVyaW9kYXR0IEFTIHIKKwkJICoJICBGUk9NICAgW09OTFldIHBrdGFibGUgeAorCQkgKgkg IFdIRVJFICBwa2F0dDEgPSAkMSBbQU5EIC4uLl0KKwkJICoJICBBTkQgICAgcGtwZXJpb2Rh dHQgJiYgJG4KKwkJICoJICBGT1IgS0VZIFNIQVJFIE9GIHgKKwkJICogICkgeDEKKwkJICog IEhBVklORyAkbiA8QCByYW5nZV9hZ2coeDEucikKKwkJICogTm90ZSBpZiBGT1IgS0VZIFNI QVJFIGV2ZXIgYWxsb3dzIEdST1VQIEJZIGFuZCBIQVZJTkcKKwkJICogd2UgY2FuIG1ha2Ug dGhpcyBhIGJpdCBzaW1wbGVyLgogCQkgKiAtLS0tLS0tLS0tCiAJCSAqLwogCQlpbml0U3Ry aW5nSW5mbygmcXVlcnlidWYpOwogCQlwa19vbmx5ID0gcGtfcmVsLT5yZF9yZWwtPnJlbGtp bmQgPT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSA/CiAJCQkiIiA6ICJPTkxZICI7CiAJ CXF1b3RlUmVsYXRpb25OYW1lKHBrcmVsbmFtZSwgcGtfcmVsKTsKLQkJYXBwZW5kU3RyaW5n SW5mbygmcXVlcnlidWYsICJTRUxFQ1QgMSBGUk9NICVzJXMgeCIsCi0JCQkJCQkgcGtfb25s eSwgcGtyZWxuYW1lKTsKKwkJaWYgKHJpaW5mby0+dGVtcG9yYWwpCisJCXsKKwkJCXF1b3Rl T25lTmFtZShhdHRuYW1lLCBSSUF0dE5hbWUocGtfcmVsLCByaWluZm8tPnBrX2F0dG51bXNb cmlpbmZvLT5ua2V5cyAtIDFdKSk7CisKKwkJCWFwcGVuZFN0cmluZ0luZm8oJnF1ZXJ5YnVm LAorCQkJCQkiU0VMRUNUIDEgRlJPTSAoU0VMRUNUICVzIEFTIHIgRlJPTSAlcyVzIHgiLAor CQkJCQlhdHRuYW1lLCBwa19vbmx5LCBwa3JlbG5hbWUpOworCQl9CisJCWVsc2UKKwkJewor CQkJYXBwZW5kU3RyaW5nSW5mbygmcXVlcnlidWYsICJTRUxFQ1QgMSBGUk9NICVzJXMgeCIs CisJCQkJCXBrX29ubHksIHBrcmVsbmFtZSk7CisJCX0KKwogCQlxdWVyeXNlcCA9ICJXSEVS RSI7CiAJCWZvciAoaW50IGkgPSAwOyBpIDwgcmlpbmZvLT5ua2V5czsgaSsrKQogCQl7CkBA IC01MjEsNiArNTk3LDIxIEBAIHJpX0NoZWNrX1BrX01hdGNoKFJlbGF0aW9uIHBrX3JlbCwg UmVsYXRpb24gZmtfcmVsLAogCQkJcXVlcnlvaWRzW2ldID0gcGtfdHlwZTsKIAkJfQogCQlh cHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZxdWVyeWJ1ZiwgIiBGT1IgS0VZIFNIQVJFIE9GIHgi KTsKKwkJaWYgKHJpaW5mby0+dGVtcG9yYWwpCisJCXsKKwkJCWNoYXIgICAqYWdnbmFtZTsK KwkJCU9pZAkJZmtfdHlwZSA9IFJJQXR0VHlwZShma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVt c1tyaWluZm8tPm5rZXlzIC0gMV0pOworCQkJT2lkCQlhZ2dfcmV0dHlwZSA9IHJpaW5mby0+ cGVyaW9kX3JlZmVyZW5jZWRfYWdnX3JldHR5cGU7CisKKwkJCWxvb2t1cFBlcmlvZFJJUHJv YyhyaWluZm8sICZhZ2duYW1lKTsKKwkJCWFwcGVuZFN0cmluZ0luZm8oJnF1ZXJ5YnVmLCAi KSB4MSBIQVZJTkcgIik7CisJCQlzcHJpbnRmKHBhcmFtbmFtZSwgIiQlZCIsIHJpaW5mby0+ bmtleXMpOworCQkJcmlfR2VuZXJhdGVRdWFsKCZxdWVyeWJ1ZiwgIiIsCisJCQkJCQkJcGFy YW1uYW1lLCBma190eXBlLAorCQkJCQkJCXJpaW5mby0+YWdnZWRfcGVyaW9kX2NvbnRhaW5l ZF9ieV9vcGVyLAorCQkJCQkJCWFnZ25hbWUsIGFnZ19yZXR0eXBlKTsKKwkJCWFwcGVuZFN0 cmluZ0luZm8oJnF1ZXJ5YnVmLCAiKHgxLnIpIik7CisJCX0KIAogCQkvKiBQcmVwYXJlIGFu ZCBzYXZlIHRoZSBwbGFuICovCiAJCXFwbGFuID0gcmlfUGxhbkNoZWNrKHF1ZXJ5YnVmLmRh dGEsIHJpaW5mby0+bmtleXMsIHF1ZXJ5b2lkcywKQEAgLTEyMTMsNiArMTMwNCwxMjYgQEAg cmlfc2V0KFRyaWdnZXJEYXRhICp0cmlnZGF0YSwgYm9vbCBpc19zZXRfbnVsbCwgaW50IHRn a2luZCkKIAl9CiB9CiAKKy8qIC0tLS0tLS0tLS0KKyAqIFJJX0ZLZXlfcGVyaW9kX2NoZWNr X2lucyAtCisgKgorICoJQ2hlY2sgdGVtcG9yYWwgZm9yZWlnbiBrZXkgZXhpc3RlbmNlIGF0 IGluc2VydCBldmVudCBvbiBGSyB0YWJsZS4KKyAqIC0tLS0tLS0tLS0KKyAqLworRGF0dW0K K1JJX0ZLZXlfcGVyaW9kX2NoZWNrX2lucyhQR19GVU5DVElPTl9BUkdTKQoreworCS8qCisJ ICogQ2hlY2sgdGhhdCB0aGlzIGlzIGEgdmFsaWQgdHJpZ2dlciBjYWxsIG9uIHRoZSByaWdo dCB0aW1lIGFuZCBldmVudC4KKwkgKi8KKwlyaV9DaGVja1RyaWdnZXIoZmNpbmZvLCAiUklf RktleV9jaGVja19pbnMiLCBSSV9UUklHVFlQRV9JTlNFUlQpOworCisJLyoKKwkgKiBTaGFy ZSBjb2RlIHdpdGggVVBEQVRFIGNhc2UuCisJICovCisJcmV0dXJuIFJJX0ZLZXlfY2hlY2so KFRyaWdnZXJEYXRhICopIGZjaW5mby0+Y29udGV4dCk7Cit9CisKKworLyogLS0tLS0tLS0t LQorICogUklfRktleV9wZXJpb2RfY2hlY2tfdXBkIC0KKyAqCisgKglDaGVjayB0ZW1wb3Jh bCBmb3JlaWduIGtleSBleGlzdGVuY2UgYXQgdXBkYXRlIGV2ZW50IG9uIEZLIHRhYmxlLgor ICogLS0tLS0tLS0tLQorICovCitEYXR1bQorUklfRktleV9wZXJpb2RfY2hlY2tfdXBkKFBH X0ZVTkNUSU9OX0FSR1MpCit7CisJLyoKKwkgKiBDaGVjayB0aGF0IHRoaXMgaXMgYSB2YWxp ZCB0cmlnZ2VyIGNhbGwgb24gdGhlIHJpZ2h0IHRpbWUgYW5kIGV2ZW50LgorCSAqLworCXJp X0NoZWNrVHJpZ2dlcihmY2luZm8sICJSSV9GS2V5X2NoZWNrX3VwZCIsIFJJX1RSSUdUWVBF X1VQREFURSk7CisKKwkvKgorCSAqIFNoYXJlIGNvZGUgd2l0aCBJTlNFUlQgY2FzZS4KKwkg Ki8KKwlyZXR1cm4gUklfRktleV9jaGVjaygoVHJpZ2dlckRhdGEgKikgZmNpbmZvLT5jb250 ZXh0KTsKK30KKworCisvKiAtLS0tLS0tLS0tCisgKiBSSV9GS2V5X3BlcmlvZF9ub2FjdGlv bl9kZWwgLQorICoKKyAqCUdpdmUgYW4gZXJyb3IgYW5kIHJvbGwgYmFjayB0aGUgY3VycmVu dCB0cmFuc2FjdGlvbiBpZiB0aGUKKyAqCWRlbGV0ZSBoYXMgcmVzdWx0ZWQgaW4gYSB2aW9s YXRpb24gb2YgdGhlIGdpdmVuIHRlbXBvcmFsCisgKglyZWZlcmVudGlhbCBpbnRlZ3JpdHkg Y29uc3RyYWludC4KKyAqIC0tLS0tLS0tLS0KKyAqLworRGF0dW0KK1JJX0ZLZXlfcGVyaW9k X25vYWN0aW9uX2RlbChQR19GVU5DVElPTl9BUkdTKQoreworCS8qCisJICogQ2hlY2sgdGhh dCB0aGlzIGlzIGEgdmFsaWQgdHJpZ2dlciBjYWxsIG9uIHRoZSByaWdodCB0aW1lIGFuZCBl dmVudC4KKwkgKi8KKwlyaV9DaGVja1RyaWdnZXIoZmNpbmZvLCAiUklfRktleV9wZXJpb2Rf bm9hY3Rpb25fZGVsIiwgUklfVFJJR1RZUEVfREVMRVRFKTsKKworCS8qCisJICogU2hhcmUg Y29kZSB3aXRoIFJFU1RSSUNUL1VQREFURSBjYXNlcy4KKwkgKi8KKwlyZXR1cm4gcmlfcmVz dHJpY3QoKFRyaWdnZXJEYXRhICopIGZjaW5mby0+Y29udGV4dCwgdHJ1ZSk7Cit9CisKKy8q CisgKiBSSV9GS2V5X3BlcmlvZF9yZXN0cmljdF9kZWwgLQorICoKKyAqIFJlc3RyaWN0IGRl bGV0ZSBmcm9tIFBLIHRhYmxlIHRvIHJvd3MgdW5yZWZlcmVuY2VkIGJ5IGZvcmVpZ24ga2V5 LgorICoKKyAqIFRoZSBTUUwgc3RhbmRhcmQgaW50ZW5kcyB0aGF0IHRoaXMgcmVmZXJlbnRp YWwgYWN0aW9uIG9jY3VyIGV4YWN0bHkgd2hlbgorICogdGhlIGRlbGV0ZSBpcyBwZXJmb3Jt ZWQsIHJhdGhlciB0aGFuIGFmdGVyLiAgVGhpcyBhcHBlYXJzIHRvIGJlCisgKiB0aGUgb25s eSBkaWZmZXJlbmNlIGJldHdlZW4gIk5PIEFDVElPTiIgYW5kICJSRVNUUklDVCIuICBJbiBQ b3N0Z3JlcworICogd2Ugc3RpbGwgaW1wbGVtZW50IHRoaXMgYXMgYW4gQUZURVIgdHJpZ2dl ciwgYnV0IGl0J3Mgbm9uLWRlZmVycmFibGUuCisgKi8KK0RhdHVtCitSSV9GS2V5X3Blcmlv ZF9yZXN0cmljdF9kZWwoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwkvKiBDaGVjayB0aGF0IHRo aXMgaXMgYSB2YWxpZCB0cmlnZ2VyIGNhbGwgb24gdGhlIHJpZ2h0IHRpbWUgYW5kIGV2ZW50 LiAqLworCXJpX0NoZWNrVHJpZ2dlcihmY2luZm8sICJSSV9GS2V5X3BlcmlvZF9yZXN0cmlj dF9kZWwiLCBSSV9UUklHVFlQRV9ERUxFVEUpOworCisJLyogU2hhcmUgY29kZSB3aXRoIE5P IEFDVElPTi9VUERBVEUgY2FzZXMuICovCisJcmV0dXJuIHJpX3Jlc3RyaWN0KChUcmlnZ2Vy RGF0YSAqKSBmY2luZm8tPmNvbnRleHQsIGZhbHNlKTsKK30KKworLyoKKyAqIFRSSV9GS2V5 X25vYWN0aW9uX3VwZCAtCisgKgorICogR2l2ZSBhbiBlcnJvciBhbmQgcm9sbCBiYWNrIHRo ZSBjdXJyZW50IHRyYW5zYWN0aW9uIGlmIHRoZQorICogdXBkYXRlIGhhcyByZXN1bHRlZCBp biBhIHZpb2xhdGlvbiBvZiB0aGUgZ2l2ZW4gcmVmZXJlbnRpYWwKKyAqIGludGVncml0eSBj b25zdHJhaW50LgorICovCitEYXR1bQorUklfRktleV9wZXJpb2Rfbm9hY3Rpb25fdXBkKFBH X0ZVTkNUSU9OX0FSR1MpCit7CisJLyogQ2hlY2sgdGhhdCB0aGlzIGlzIGEgdmFsaWQgdHJp Z2dlciBjYWxsIG9uIHRoZSByaWdodCB0aW1lIGFuZCBldmVudC4gKi8KKwlyaV9DaGVja1Ry aWdnZXIoZmNpbmZvLCAiUklfRktleV9wZXJpb2Rfbm9hY3Rpb25fdXBkIiwgUklfVFJJR1RZ UEVfVVBEQVRFKTsKKworCS8qIFNoYXJlIGNvZGUgd2l0aCBSRVNUUklDVC9ERUxFVEUgY2Fz ZXMuICovCisJcmV0dXJuIHJpX3Jlc3RyaWN0KChUcmlnZ2VyRGF0YSAqKSBmY2luZm8tPmNv bnRleHQsIHRydWUpOworfQorCisvKgorICogUklfRktleV9wZXJpb2RfcmVzdHJpY3RfdXBk IC0KKyAqCisgKiBSZXN0cmljdCB1cGRhdGUgb2YgUEsgdG8gcm93cyB1bnJlZmVyZW5jZWQg YnkgZm9yZWlnbiBrZXkuCisgKgorICogVGhlIFNRTCBzdGFuZGFyZCBpbnRlbmRzIHRoYXQg dGhpcyByZWZlcmVudGlhbCBhY3Rpb24gb2NjdXIgZXhhY3RseSB3aGVuCisgKiB0aGUgdXBk YXRlIGlzIHBlcmZvcm1lZCwgcmF0aGVyIHRoYW4gYWZ0ZXIuICBUaGlzIGFwcGVhcnMgdG8g YmUKKyAqIHRoZSBvbmx5IGRpZmZlcmVuY2UgYmV0d2VlbiAiTk8gQUNUSU9OIiBhbmQgIlJF U1RSSUNUIi4gIEluIFBvc3RncmVzCisgKiB3ZSBzdGlsbCBpbXBsZW1lbnQgdGhpcyBhcyBh biBBRlRFUiB0cmlnZ2VyLCBidXQgaXQncyBub24tZGVmZXJyYWJsZS4KKyAqLworRGF0dW0K K1JJX0ZLZXlfcGVyaW9kX3Jlc3RyaWN0X3VwZChQR19GVU5DVElPTl9BUkdTKQoreworCS8q IENoZWNrIHRoYXQgdGhpcyBpcyBhIHZhbGlkIHRyaWdnZXIgY2FsbCBvbiB0aGUgcmlnaHQg dGltZSBhbmQgZXZlbnQuICovCisJcmlfQ2hlY2tUcmlnZ2VyKGZjaW5mbywgIlJJX0ZLZXlf cGVyaW9kX3Jlc3RyaWN0X3VwZCIsIFJJX1RSSUdUWVBFX1VQREFURSk7CisKKwkvKiBTaGFy ZSBjb2RlIHdpdGggTk8gQUNUSU9OL0RFTEVURSBjYXNlcy4gKi8KKwlyZXR1cm4gcmlfcmVz dHJpY3QoKFRyaWdnZXJEYXRhICopIGZjaW5mby0+Y29udGV4dCwgZmFsc2UpOworfQogCiAv KgogICogUklfRktleV9wa191cGRfY2hlY2tfcmVxdWlyZWQgLQpAQCAtMjE3MSw2ICsyMzgy LDcgQEAgcmlfTG9hZENvbnN0cmFpbnRJbmZvKE9pZCBjb25zdHJhaW50T2lkKQogCXJpaW5m by0+Y29uZnVwZHR5cGUgPSBjb25Gb3JtLT5jb25mdXBkdHlwZTsKIAlyaWluZm8tPmNvbmZk ZWx0eXBlID0gY29uRm9ybS0+Y29uZmRlbHR5cGU7CiAJcmlpbmZvLT5jb25mbWF0Y2h0eXBl ID0gY29uRm9ybS0+Y29uZm1hdGNodHlwZTsKKwlyaWluZm8tPnRlbXBvcmFsID0gY29uRm9y bS0+Y29ucGVyaW9kOwogCiAJRGVjb25zdHJ1Y3RGa0NvbnN0cmFpbnRSb3codHVwLAogCQkJ CQkJCSAgICZyaWluZm8tPm5rZXlzLApAQCAtMjE4Miw2ICsyMzk0LDIyIEBAIHJpX0xvYWRD b25zdHJhaW50SW5mbyhPaWQgY29uc3RyYWludE9pZCkKIAkJCQkJCQkgICAmcmlpbmZvLT5u ZGVsc2V0Y29scywKIAkJCQkJCQkgICByaWluZm8tPmNvbmZkZWxzZXRjb2xzKTsKIAorCS8q CisJICogRm9yIHRlbXBvcmFsIEZLcywgZ2V0IHRoZSBvcGVyYXRvcnMgYW5kIGZ1bmN0aW9u cyB3ZSBuZWVkLgorCSAqIFdlIGFzayB0aGUgb3BjbGFzcyBvZiB0aGUgUEsgZWxlbWVudCBm b3IgdGhlc2UuCisJICogVGhpcyBhbGwgZ2V0cyBjYWNoZWQgKGFzIGRvZXMgdGhlIGdlbmVy YXRlZCBwbGFuKSwKKwkgKiBzbyB0aGVyZSdzIG5vIHBlcmZvcm1hbmNlIGlzc3VlLgorCSAq LworCWlmIChyaWluZm8tPnRlbXBvcmFsKQorCXsKKwkJT2lkCW9wY2xhc3MgPSBnZXRfaW5k ZXhfY29sdW1uX29wY2xhc3MoY29uRm9ybS0+Y29uaW5kaWQsIHJpaW5mby0+bmtleXMpOwor CQlGaW5kRktQZXJpb2RPcGVyc0FuZFByb2NzKG9wY2xhc3MsCisJCQkJCQkJCSAgJnJpaW5m by0+cGVyaW9kX2NvbnRhaW5lZF9ieV9vcGVyLAorCQkJCQkJCQkgICZyaWluZm8tPmFnZ2Vk X3BlcmlvZF9jb250YWluZWRfYnlfb3BlciwKKwkJCQkJCQkJICAmcmlpbmZvLT5wZXJpb2Rf cmVmZXJlbmNlZF9hZ2dfcHJvYyk7CisJCXJpaW5mby0+cGVyaW9kX3JlZmVyZW5jZWRfYWdn X3JldHR5cGUgPSBnZXRfZnVuY19yZXR0eXBlKHJpaW5mby0+cGVyaW9kX3JlZmVyZW5jZWRf YWdnX3Byb2MpOworCX0KKwogCVJlbGVhc2VTeXNDYWNoZSh0dXApOwogCiAJLyoKQEAgLTI3 OTMsNyArMzAyMSwxMCBAQCByaV9IYXNoUHJlcGFyZWRQbGFuKFJJX1F1ZXJ5S2V5ICprZXks IFNQSVBsYW5QdHIgcGxhbikKIC8qCiAgKiByaV9LZXlzRXF1YWwgLQogICoKLSAqIENoZWNr IGlmIGFsbCBrZXkgdmFsdWVzIGluIE9MRCBhbmQgTkVXIGFyZSBlcXVhbC4KKyAqIENoZWNr IGlmIGFsbCBrZXkgdmFsdWVzIGluIE9MRCBhbmQgTkVXIGFyZSAiZXF1aXZhbGVudCI6Cisg KiBGb3Igbm9ybWFsIEZLcyB3ZSBjaGVjayBmb3IgZXF1YWxpdHkuCisgKiBGb3IgdGVtcG9y YWwgRktzIHdlIGNoZWNrIHRoYXQgdGhlIFBLIHNpZGUgaXMgYSBzdXBlcnNldCBvZiBpdHMg b2xkIHZhbHVlLAorICogb3IgdGhlIEZLIHNpZGUgaXMgYSBzdWJzZXQgb2YgaXRzIG9sZCB2 YWx1ZS4KICAqCiAgKiBOb3RlOiBhdCBzb21lIHBvaW50IHdlIG1pZ2h0IHdpc2ggdG8gcmVk ZWZpbmUgdGhpcyBhcyBjaGVja2luZyBmb3IKICAqICJJUyBOT1QgRElTVElOQ1QiIHJhdGhl ciB0aGFuICI9IiwgdGhhdCBpcywgYWxsb3cgdHdvIG51bGxzIHRvIGJlCkBAIC0yODQ5LDEz ICszMDgwLDIzIEBAIHJpX0tleXNFcXVhbChSZWxhdGlvbiByZWwsIFR1cGxlVGFibGVTbG90 ICpvbGRzbG90LCBUdXBsZVRhYmxlU2xvdCAqbmV3c2xvdCwKIAkJfQogCQllbHNlCiAJCXsK KwkJCU9pZCBlcV9vcHIgPSByaWluZm8tPmZmX2VxX29wcnNbaV07CisKKwkJCS8qCisJCQkg KiBXaGVuIGNvbXBhcmluZyB0aGUgUEVSSU9EIGNvbHVtbnMgd2UgY2FuIHNraXAgdGhlIGNo ZWNrCisJCQkgKiB3aGVuZXZlciB0aGUgcmVmZXJlbmNpbmcgY29sdW1uIHN0YXllZCBlcXVh bCBvciBzaHJhbmssCisJCQkgKiBzbyB0ZXN0IHdpdGggdGhlIGNvbnRhaW5lZC1ieSBvcGVy YXRvciBpbnN0ZWFkLgorCQkJICovCisJCQlpZiAocmlpbmZvLT50ZW1wb3JhbCAmJiBpID09 IHJpaW5mby0+bmtleXMgLSAxKQorCQkJCWVxX29wciA9IHJpaW5mby0+cGVyaW9kX2NvbnRh aW5lZF9ieV9vcGVyOworCiAJCQkvKgogCQkJICogRm9yIHRoZSBGSyB0YWJsZSwgY29tcGFy ZSB3aXRoIHRoZSBhcHByb3ByaWF0ZSBlcXVhbGl0eQogCQkJICogb3BlcmF0b3IuICBDaGFu Z2VzIHRoYXQgY29tcGFyZSBlcXVhbCB3aWxsIHN0aWxsIHNhdGlzZnkgdGhlCiAJCQkgKiBj b25zdHJhaW50IGFmdGVyIHRoZSB1cGRhdGUuCiAJCQkgKi8KLQkJCWlmICghcmlfQXR0cmli dXRlc0VxdWFsKHJpaW5mby0+ZmZfZXFfb3Byc1tpXSwgUklBdHRUeXBlKHJlbCwgYXR0bnVt c1tpXSksCi0JCQkJCQkJCQlvbGR2YWx1ZSwgbmV3dmFsdWUpKQorCQkJaWYgKCFyaV9BdHRy aWJ1dGVzRXF1YWwoZXFfb3ByLCBSSUF0dFR5cGUocmVsLCBhdHRudW1zW2ldKSwKKwkJCQkJ CQkJCW5ld3ZhbHVlLCBvbGR2YWx1ZSkpCiAJCQkJcmV0dXJuIGZhbHNlOwogCQl9CiAJfQpA QCAtMjg2Myw3ICszMTA0LDYgQEAgcmlfS2V5c0VxdWFsKFJlbGF0aW9uIHJlbCwgVHVwbGVU YWJsZVNsb3QgKm9sZHNsb3QsIFR1cGxlVGFibGVTbG90ICpuZXdzbG90LAogCXJldHVybiB0 cnVlOwogfQogCi0KIC8qCiAgKiByaV9BdHRyaWJ1dGVzRXF1YWwgLQogICoKQEAgLTMwMjEs MTIgKzMyNjEsNTYgQEAgUklfRktleV90cmlnZ2VyX3R5cGUoT2lkIHRnZm9pZCkKIAkJY2Fz ZSBGX1JJX0ZLRVlfU0VUREVGQVVMVF9VUEQ6CiAJCWNhc2UgRl9SSV9GS0VZX05PQUNUSU9O X0RFTDoKIAkJY2FzZSBGX1JJX0ZLRVlfTk9BQ1RJT05fVVBEOgorCQljYXNlIEZfUklfRktF WV9QRVJJT0RfUkVTVFJJQ1RfREVMOgorCQljYXNlIEZfUklfRktFWV9QRVJJT0RfUkVTVFJJ Q1RfVVBEOgorCQljYXNlIEZfUklfRktFWV9QRVJJT0RfTk9BQ1RJT05fREVMOgorCQljYXNl IEZfUklfRktFWV9QRVJJT0RfTk9BQ1RJT05fVVBEOgogCQkJcmV0dXJuIFJJX1RSSUdHRVJf UEs7CiAKIAkJY2FzZSBGX1JJX0ZLRVlfQ0hFQ0tfSU5TOgogCQljYXNlIEZfUklfRktFWV9D SEVDS19VUEQ6CisJCWNhc2UgRl9SSV9GS0VZX1BFUklPRF9DSEVDS19JTlM6CisJCWNhc2Ug Rl9SSV9GS0VZX1BFUklPRF9DSEVDS19VUEQ6CiAJCQlyZXR1cm4gUklfVFJJR0dFUl9GSzsK IAl9CiAKIAlyZXR1cm4gUklfVFJJR0dFUl9OT05FOwogfQorCisvKgorICogbG9va3VwUGVy aW9kUklQcm9jIC0KKyAqCisgKiBHZXRzIHRoZSBuYW1lIG9mIHRoZSBhZ2dyZWdhdGUgZnVu Y3Rpb24KKyAqIHVzZWQgdG8gYnVpbGQgdGhlIFNRTCBmb3IgdGVtcG9yYWwgUkkgY29uc3Ry YWludHMuCisgKiBSYWlzZXMgYW4gZXJyb3IgaWYgbm90IGZvdW5kLgorICovCitzdGF0aWMg dm9pZAorbG9va3VwUGVyaW9kUklQcm9jKGNvbnN0IFJJX0NvbnN0cmFpbnRJbmZvICpyaWlu Zm8sIGNoYXIgKiphZ2duYW1lKQoreworCU9pZAkJCW9pZCA9IHJpaW5mby0+cGVyaW9kX3Jl ZmVyZW5jZWRfYWdnX3Byb2M7CisJSGVhcFR1cGxlCXRwOworCUZvcm1fcGdfcHJvYyBmdW5j dHVwOworCWNoYXIJICAgKm5hbWVzcDsKKwljaGFyCSAgICpmdW5jOworCisKKwlpZiAoIU9p ZElzVmFsaWQob2lkKSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RF X1VOREVGSU5FRF9PQkpFQ1QpLAorCQkJCSBlcnJtc2coIm5vIHJlZmVyZW5jZWRhZ2cgc3Vw cG9ydCBmdW5jdGlvbiBmb3IgZm9yZWlnbiBrZXkgY29uc3RyYWludCBcIiVzXCIiLAorCQkJ CQkJTmFtZVN0cihyaWluZm8tPmNvbm5hbWUpKSwKKwkJCQkgZXJyaGludCgiWW91IG11c3Qg dXNlIGFuIG9wZXJhdG9yIGNsYXNzIHdpdGggYSByZWZlcmVuY2VkYWdnIHN1cHBvcnQgZnVu Y3Rpb24uIikpKTsKKworCXRwID0gU2VhcmNoU3lzQ2FjaGUxKFBST0NPSUQsIE9iamVjdElk R2V0RGF0dW0ocmlpbmZvLT5wZXJpb2RfcmVmZXJlbmNlZF9hZ2dfcHJvYykpOworCWlmICgh SGVhcFR1cGxlSXNWYWxpZCh0cCkpCisJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFp bGVkIGZvciBmdW5jdGlvbiAldSIsIG9pZCk7CisKKwlmdW5jdHVwID0gKEZvcm1fcGdfcHJv YykgR0VUU1RSVUNUKHRwKTsKKwluYW1lc3AgPSBnZXRfbmFtZXNwYWNlX25hbWUoZnVuY3R1 cC0+cHJvbmFtZXNwYWNlKTsKKwlmdW5jID0gTmFtZVN0cihmdW5jdHVwLT5wcm9uYW1lKTsK KworCSphZ2duYW1lID0gcHNwcmludGYoIiVzLiVzIiwgcXVvdGVfaWRlbnRpZmllcihuYW1l c3ApLCBxdW90ZV9pZGVudGlmaWVyKGZ1bmMpKTsKKworCXBmcmVlKG5hbWVzcCk7CisJUmVs ZWFzZVN5c0NhY2hlKHRwKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC9ydWxldXRpbHMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYwppbmRl eCA1NzI3ZGZjNDAzMS4uZjdhNDRjN2IzMzAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9ydWxldXRpbHMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0 aWxzLmMKQEAgLTMzOSw3ICszMzksNyBAQCBzdGF0aWMgY2hhciAqcGdfZ2V0X3ZpZXdkZWZf d29ya2VyKE9pZCB2aWV3b2lkLAogCQkJCQkJCQkgICBpbnQgcHJldHR5RmxhZ3MsIGludCB3 cmFwQ29sdW1uKTsKIHN0YXRpYyBjaGFyICpwZ19nZXRfdHJpZ2dlcmRlZl93b3JrZXIoT2lk IHRyaWdpZCwgYm9vbCBwcmV0dHkpOwogc3RhdGljIGludAlkZWNvbXBpbGVfY29sdW1uX2lu ZGV4X2FycmF5KERhdHVtIGNvbHVtbl9pbmRleF9hcnJheSwgT2lkIHJlbElkLAotCQkJCQkJ CQkJCSBTdHJpbmdJbmZvIGJ1Zik7CisJCQkJCQkJCQkJIGJvb2wgd2l0aFBlcmlvZCwgU3Ry aW5nSW5mbyBidWYpOwogc3RhdGljIGNoYXIgKnBnX2dldF9ydWxlZGVmX3dvcmtlcihPaWQg cnVsZW9pZCwgaW50IHByZXR0eUZsYWdzKTsKIHN0YXRpYyBjaGFyICpwZ19nZXRfaW5kZXhk ZWZfd29ya2VyKE9pZCBpbmRleHJlbGlkLCBpbnQgY29sbm8sCiAJCQkJCQkJCQljb25zdCBP aWQgKmV4Y2x1ZGVPcHMsCkBAIC0yMjQ2LDcgKzIyNDYsOSBAQCBwZ19nZXRfY29uc3RyYWlu dGRlZl93b3JrZXIoT2lkIGNvbnN0cmFpbnRJZCwgYm9vbCBmdWxsQ29tbWFuZCwKIAkJCQl2 YWwgPSBTeXNDYWNoZUdldEF0dHJOb3ROdWxsKENPTlNUUk9JRCwgdHVwLAogCQkJCQkJCQkJ CQkgQW51bV9wZ19jb25zdHJhaW50X2NvbmtleSk7CiAKLQkJCQlkZWNvbXBpbGVfY29sdW1u X2luZGV4X2FycmF5KHZhbCwgY29uRm9ybS0+Y29ucmVsaWQsICZidWYpOworCQkJCS8qIElm IGl0IGlzIGEgdGVtcG9yYWwgZm9yZWlnbiBrZXkgdGhlbiBpdCB1c2VzIFBFUklPRC4gKi8K KwkJCQlkZWNvbXBpbGVfY29sdW1uX2luZGV4X2FycmF5KHZhbCwgY29uRm9ybS0+Y29ucmVs aWQsCisJCQkJCQkJCQkJCSBjb25Gb3JtLT5jb25wZXJpb2QsICZidWYpOwogCiAJCQkJLyog YWRkIGZvcmVpZ24gcmVsYXRpb24gbmFtZSAqLwogCQkJCWFwcGVuZFN0cmluZ0luZm8oJmJ1 ZiwgIikgUkVGRVJFTkNFUyAlcygiLApAQCAtMjI1Nyw3ICsyMjU5LDggQEAgcGdfZ2V0X2Nv bnN0cmFpbnRkZWZfd29ya2VyKE9pZCBjb25zdHJhaW50SWQsIGJvb2wgZnVsbENvbW1hbmQs CiAJCQkJdmFsID0gU3lzQ2FjaGVHZXRBdHRyTm90TnVsbChDT05TVFJPSUQsIHR1cCwKIAkJ CQkJCQkJCQkJIEFudW1fcGdfY29uc3RyYWludF9jb25ma2V5KTsKIAotCQkJCWRlY29tcGls ZV9jb2x1bW5faW5kZXhfYXJyYXkodmFsLCBjb25Gb3JtLT5jb25mcmVsaWQsICZidWYpOwor CQkJCWRlY29tcGlsZV9jb2x1bW5faW5kZXhfYXJyYXkodmFsLCBjb25Gb3JtLT5jb25mcmVs aWQsCisJCQkJCQkJCQkJCSBjb25Gb3JtLT5jb25wZXJpb2QsICZidWYpOwogCiAJCQkJYXBw ZW5kU3RyaW5nSW5mb0NoYXIoJmJ1ZiwgJyknKTsKIApAQCAtMjM0Myw3ICsyMzQ2LDcgQEAg cGdfZ2V0X2NvbnN0cmFpbnRkZWZfd29ya2VyKE9pZCBjb25zdHJhaW50SWQsIGJvb2wgZnVs bENvbW1hbmQsCiAJCQkJaWYgKCFpc251bGwpCiAJCQkJewogCQkJCQlhcHBlbmRTdHJpbmdJ bmZvU3RyaW5nKCZidWYsICIgKCIpOwotCQkJCQlkZWNvbXBpbGVfY29sdW1uX2luZGV4X2Fy cmF5KHZhbCwgY29uRm9ybS0+Y29ucmVsaWQsICZidWYpOworCQkJCQlkZWNvbXBpbGVfY29s dW1uX2luZGV4X2FycmF5KHZhbCwgY29uRm9ybS0+Y29ucmVsaWQsIGZhbHNlLCAmYnVmKTsK IAkJCQkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoJmJ1ZiwgJyknKTsKIAkJCQl9CiAKQEAgLTIz NzgsNyArMjM4MSw3IEBAIHBnX2dldF9jb25zdHJhaW50ZGVmX3dvcmtlcihPaWQgY29uc3Ry YWludElkLCBib29sIGZ1bGxDb21tYW5kLAogCQkJCXZhbCA9IFN5c0NhY2hlR2V0QXR0ck5v dE51bGwoQ09OU1RST0lELCB0dXAsCiAJCQkJCQkJCQkJCSBBbnVtX3BnX2NvbnN0cmFpbnRf Y29ua2V5KTsKIAotCQkJCWtleWF0dHMgPSBkZWNvbXBpbGVfY29sdW1uX2luZGV4X2FycmF5 KHZhbCwgY29uRm9ybS0+Y29ucmVsaWQsICZidWYpOworCQkJCWtleWF0dHMgPSBkZWNvbXBp bGVfY29sdW1uX2luZGV4X2FycmF5KHZhbCwgY29uRm9ybS0+Y29ucmVsaWQsIGZhbHNlLCAm YnVmKTsKIAkJCQlpZiAoY29uRm9ybS0+Y29ucGVyaW9kKQogCQkJCQlhcHBlbmRTdHJpbmdJ bmZvU3RyaW5nKCZidWYsICIgV0lUSE9VVCBPVkVSTEFQUyIpOwogCkBAIC0yNTc2LDcgKzI1 NzksNyBAQCBwZ19nZXRfY29uc3RyYWludGRlZl93b3JrZXIoT2lkIGNvbnN0cmFpbnRJZCwg Ym9vbCBmdWxsQ29tbWFuZCwKICAqLwogc3RhdGljIGludAogZGVjb21waWxlX2NvbHVtbl9p bmRleF9hcnJheShEYXR1bSBjb2x1bW5faW5kZXhfYXJyYXksIE9pZCByZWxJZCwKLQkJCQkJ CQkgU3RyaW5nSW5mbyBidWYpCisJCQkJCQkJIGJvb2wgd2l0aFBlcmlvZCwgU3RyaW5nSW5m byBidWYpCiB7CiAJRGF0dW0JICAgKmtleXM7CiAJaW50CQkJbktleXM7CkBAIC0yNTk1LDcg KzI1OTgsOSBAQCBkZWNvbXBpbGVfY29sdW1uX2luZGV4X2FycmF5KERhdHVtIGNvbHVtbl9p bmRleF9hcnJheSwgT2lkIHJlbElkLAogCQlpZiAoaiA9PSAwKQogCQkJYXBwZW5kU3RyaW5n SW5mb1N0cmluZyhidWYsIHF1b3RlX2lkZW50aWZpZXIoY29sTmFtZSkpOwogCQllbHNlCi0J CQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIiwgJXMiLCBxdW90ZV9pZGVudGlmaWVyKGNvbE5h bWUpKTsKKwkJCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAiLCAlcyVzIiwKKwkJCQkJCQkgKHdp dGhQZXJpb2QgJiYgaiA9PSBuS2V5cyAtIDEpID8gIlBFUklPRCAiIDogIiIsCisJCQkJCQkJ IHF1b3RlX2lkZW50aWZpZXIoY29sTmFtZSkpOwogCX0KIAogCXJldHVybiBuS2V5czsKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfY29uc3RyYWludC5oIGIvc3JjL2lu Y2x1ZGUvY2F0YWxvZy9wZ19jb25zdHJhaW50LmgKaW5kZXggYTMzYjRmMTdlYTguLmU0ZjRj MmZmYWYxIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2NvbnN0cmFpbnQu aAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2NvbnN0cmFpbnQuaApAQCAtMTA4LDgg KzEwOCw4IEBAIENBVEFMT0cocGdfY29uc3RyYWludCwyNjA2LENvbnN0cmFpbnRSZWxhdGlv bklkKQogCWJvb2wJCWNvbm5vaW5oZXJpdDsKIAogCS8qCi0JICogRm9yIHByaW1hcnkga2V5 cyBhbmQgdW5pcXVlIGNvbnN0cmFpbnRzLCBzaWduaWZpZXMgdGhlIGxhc3QgY29sdW1uIHVz ZXMKLQkgKiBvdmVybGFwcyBpbnN0ZWFkIG9mIGVxdWFscy4KKwkgKiBGb3IgcHJpbWFyeSBr ZXlzLCB1bmlxdWUgY29uc3RyYWludHMsIGFuZCBmb3JlaWduIGtleXMsCisJICogc2lnbmlm aWVzIHRoZSBsYXN0IGNvbHVtbiB1c2VzIG92ZXJsYXBzIGluc3RlYWQgb2YgZXF1YWxzLgog CSAqLwogCWJvb2wJCWNvbnBlcmlvZDsKIApAQCAtMTI3LDIwICsxMjcsMjAgQEAgQ0FUQUxP RyhwZ19jb25zdHJhaW50LDI2MDYsQ29uc3RyYWludFJlbGF0aW9uSWQpCiAJaW50MTYJCWNv bmZrZXlbMV07CiAKIAkvKgotCSAqIElmIGEgZm9yZWlnbiBrZXksIHRoZSBPSURzIG9mIHRo ZSBQSyA9IEZLIGVxdWFsaXR5IG9wZXJhdG9ycyBmb3IgZWFjaAotCSAqIGNvbHVtbiBvZiB0 aGUgY29uc3RyYWludAorCSAqIElmIGEgZm9yZWlnbiBrZXksIHRoZSBPSURzIG9mIHRoZSBQ SyA9IEZLIGVxdWFsaXR5L292ZXJsYXAgb3BlcmF0b3JzIGZvcgorCSAqIGVhY2ggY29sdW1u IG9mIHRoZSBjb25zdHJhaW50CiAJICovCiAJT2lkCQkJY29ucGZlcW9wWzFdIEJLSV9MT09L VVAocGdfb3BlcmF0b3IpOwogCiAJLyoKLQkgKiBJZiBhIGZvcmVpZ24ga2V5LCB0aGUgT0lE cyBvZiB0aGUgUEsgPSBQSyBlcXVhbGl0eSBvcGVyYXRvcnMgZm9yIGVhY2gKLQkgKiBjb2x1 bW4gb2YgdGhlIGNvbnN0cmFpbnQgKGkuZS4sIGVxdWFsaXR5IGZvciB0aGUgcmVmZXJlbmNl ZCBjb2x1bW5zKQorCSAqIElmIGEgZm9yZWlnbiBrZXksIHRoZSBPSURzIG9mIHRoZSBQSyA9 IFBLIGVxdWFsaXR5L292ZXJsYXAgb3BlcmF0b3JzIGZvcgorCSAqIGVhY2ggY29sdW1uIG9m IHRoZSBjb25zdHJhaW50IChpLmUuLCBlcXVhbGl0eSBmb3IgdGhlIHJlZmVyZW5jZWQgY29s dW1ucykKIAkgKi8KIAlPaWQJCQljb25wcGVxb3BbMV0gQktJX0xPT0tVUChwZ19vcGVyYXRv cik7CiAKIAkvKgotCSAqIElmIGEgZm9yZWlnbiBrZXksIHRoZSBPSURzIG9mIHRoZSBGSyA9 IEZLIGVxdWFsaXR5IG9wZXJhdG9ycyBmb3IgZWFjaAotCSAqIGNvbHVtbiBvZiB0aGUgY29u c3RyYWludCAoaS5lLiwgZXF1YWxpdHkgZm9yIHRoZSByZWZlcmVuY2luZyBjb2x1bW5zKQor CSAqIElmIGEgZm9yZWlnbiBrZXksIHRoZSBPSURzIG9mIHRoZSBGSyA9IEZLIGVxdWFsaXR5 L292ZXJsYXAgb3BlcmF0b3JzIGZvcgorCSAqIGVhY2ggY29sdW1uIG9mIHRoZSBjb25zdHJh aW50IChpLmUuLCBlcXVhbGl0eSBmb3IgdGhlIHJlZmVyZW5jaW5nIGNvbHVtbnMpCiAJICov CiAJT2lkCQkJY29uZmZlcW9wWzFdIEJLSV9MT09LVVAocGdfb3BlcmF0b3IpOwogCkBAIC0y ODMsNiArMjgzLDEwIEBAIGV4dGVybiB2b2lkIERlY29uc3RydWN0RmtDb25zdHJhaW50Um93 KEhlYXBUdXBsZSB0dXBsZSwgaW50ICpudW1ma3MsCiAJCQkJCQkJCQkgICBBdHRyTnVtYmVy ICpjb25rZXksIEF0dHJOdW1iZXIgKmNvbmZrZXksCiAJCQkJCQkJCQkgICBPaWQgKnBmX2Vx X29wcnMsIE9pZCAqcHBfZXFfb3BycywgT2lkICpmZl9lcV9vcHJzLAogCQkJCQkJCQkJICAg aW50ICpudW1fZmtfZGVsX3NldF9jb2xzLCBBdHRyTnVtYmVyICpma19kZWxfc2V0X2NvbHMp OworZXh0ZXJuIHZvaWQgRmluZEZLUGVyaW9kT3BlcnNBbmRQcm9jcyhPaWQgb3BjbGFzcywK KwkJCQkJCQkJCSAgT2lkICpwZXJpb2RvcGVyb2lkLAorCQkJCQkJCQkJICBPaWQgKmFnZ2Vk cGVyaW9kb3Blcm9pZCwKKwkJCQkJCQkJCSAgT2lkICpwZXJpb2Rwcm9jb2lkKTsKIAogZXh0 ZXJuIGJvb2wgY2hlY2tfZnVuY3Rpb25hbF9ncm91cGluZyhPaWQgcmVsaWQsCiAJCQkJCQkJ CQkgIEluZGV4IHZhcm5vLCBJbmRleCB2YXJsZXZlbHN1cCwKZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3By b2MuZGF0CmluZGV4IDljMTIwZmMyYjdmLi5hODM2N2ZmNTg0MyAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9n L3BnX3Byb2MuZGF0CkBAIC0zOTQ1LDYgKzM5NDUsMzAgQEAKICAgcHJvcmV0dHlwZSA9PiAn dHJpZ2dlcicsIHByb2FyZ3R5cGVzID0+ICcnLAogICBwcm9zcmMgPT4gJ1JJX0ZLZXlfbm9h Y3Rpb25fdXBkJyB9LAogCisjIFRlbXBvcmFsIHJlZmVyZW50aWFsIGludGVncml0eSBjb25z dHJhaW50IHRyaWdnZXJzCit7IG9pZCA9PiAnNjEyMicsIGRlc2NyID0+ICd0ZW1wb3JhbCBy ZWZlcmVudGlhbCBpbnRlZ3JpdHkgRk9SRUlHTiBLRVkgLi4uIFJFRkVSRU5DRVMnLAorICBw cm9uYW1lID0+ICdSSV9GS2V5X3BlcmlvZF9jaGVja19pbnMnLCBwcm92b2xhdGlsZSA9PiAn dicsIHByb3JldHR5cGUgPT4gJ3RyaWdnZXInLAorICBwcm9hcmd0eXBlcyA9PiAnJywgcHJv c3JjID0+ICdSSV9GS2V5X3BlcmlvZF9jaGVja19pbnMnIH0sCit7IG9pZCA9PiAnNjEyMycs IGRlc2NyID0+ICd0ZW1wb3JhbCByZWZlcmVudGlhbCBpbnRlZ3JpdHkgRk9SRUlHTiBLRVkg Li4uIFJFRkVSRU5DRVMnLAorICBwcm9uYW1lID0+ICdSSV9GS2V5X3BlcmlvZF9jaGVja191 cGQnLCBwcm92b2xhdGlsZSA9PiAndicsIHByb3JldHR5cGUgPT4gJ3RyaWdnZXInLAorICBw cm9hcmd0eXBlcyA9PiAnJywgcHJvc3JjID0+ICdSSV9GS2V5X3BlcmlvZF9jaGVja191cGQn IH0sCit7IG9pZCA9PiAnNjEyNicsIGRlc2NyID0+ICd0ZW1wb3JhbCByZWZlcmVudGlhbCBp bnRlZ3JpdHkgT04gREVMRVRFIFJFU1RSSUNUJywKKyAgcHJvbmFtZSA9PiAnUklfRktleV9w ZXJpb2RfcmVzdHJpY3RfZGVsJywgcHJvdm9sYXRpbGUgPT4gJ3YnLAorICBwcm9yZXR0eXBl ID0+ICd0cmlnZ2VyJywgcHJvYXJndHlwZXMgPT4gJycsCisgIHByb3NyYyA9PiAnUklfRktl eV9wZXJpb2RfcmVzdHJpY3RfZGVsJyB9LAoreyBvaWQgPT4gJzYxMjcnLCBkZXNjciA9PiAn dGVtcG9yYWwgcmVmZXJlbnRpYWwgaW50ZWdyaXR5IE9OIFVQREFURSBSRVNUUklDVCcsCisg IHByb25hbWUgPT4gJ1JJX0ZLZXlfcGVyaW9kX3Jlc3RyaWN0X3VwZCcsIHByb3ZvbGF0aWxl ID0+ICd2JywKKyAgcHJvcmV0dHlwZSA9PiAndHJpZ2dlcicsIHByb2FyZ3R5cGVzID0+ICcn LAorICBwcm9zcmMgPT4gJ1JJX0ZLZXlfcGVyaW9kX3Jlc3RyaWN0X3VwZCcgfSwKK3sgb2lk ID0+ICc2MTMyJywgZGVzY3IgPT4gJ3RlbXBvcmFsIHJlZmVyZW50aWFsIGludGVncml0eSBP TiBERUxFVEUgTk8gQUNUSU9OJywKKyAgcHJvbmFtZSA9PiAnUklfRktleV9wZXJpb2Rfbm9h Y3Rpb25fZGVsJywgcHJvdm9sYXRpbGUgPT4gJ3YnLAorICBwcm9yZXR0eXBlID0+ICd0cmln Z2VyJywgcHJvYXJndHlwZXMgPT4gJycsCisgIHByb3NyYyA9PiAnUklfRktleV9wZXJpb2Rf bm9hY3Rpb25fZGVsJyB9LAoreyBvaWQgPT4gJzYxMzMnLCBkZXNjciA9PiAndGVtcG9yYWwg cmVmZXJlbnRpYWwgaW50ZWdyaXR5IE9OIFVQREFURSBOTyBBQ1RJT04nLAorICBwcm9uYW1l ID0+ICdSSV9GS2V5X3BlcmlvZF9ub2FjdGlvbl91cGQnLCBwcm92b2xhdGlsZSA9PiAndics CisgIHByb3JldHR5cGUgPT4gJ3RyaWdnZXInLCBwcm9hcmd0eXBlcyA9PiAnJywKKyAgcHJv c3JjID0+ICdSSV9GS2V5X3BlcmlvZF9ub2FjdGlvbl91cGQnIH0sCisKIHsgb2lkID0+ICcx NjY2JywKICAgcHJvbmFtZSA9PiAndmFyYml0ZXEnLCBwcm9sZWFrcHJvb2YgPT4gJ3QnLCBw cm9yZXR0eXBlID0+ICdib29sJywKICAgcHJvYXJndHlwZXMgPT4gJ3ZhcmJpdCB2YXJiaXQn LCBwcm9zcmMgPT4gJ2JpdGVxJyB9LApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFu ZHMvZGVmcmVtLmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9kZWZyZW0uaAppbmRleCAwYzUz ZDY3ZDNlZS4uNWZkMDk1ZWExNzcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRz L2RlZnJlbS5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2RlZnJlbS5oCkBAIC01MCw3 ICs1MCw3IEBAIGV4dGVybiBib29sIENoZWNrSW5kZXhDb21wYXRpYmxlKE9pZCBvbGRJZCwK IGV4dGVybiBPaWQJR2V0RGVmYXVsdE9wQ2xhc3MoT2lkIHR5cGVfaWQsIE9pZCBhbV9pZCk7 CiBleHRlcm4gT2lkCVJlc29sdmVPcENsYXNzKGNvbnN0IExpc3QgKm9wY2xhc3MsIE9pZCBh dHRyVHlwZSwKIAkJCQkJCSAgIGNvbnN0IGNoYXIgKmFjY2Vzc01ldGhvZE5hbWUsIE9pZCBh Y2Nlc3NNZXRob2RJZCk7Ci1leHRlcm4gdm9pZCBHZXRPcGVyYXRvckZyb21XZWxsS25vd25T dHJhdGVneShPaWQgb3BjbGFzcywgT2lkIGF0dHR5cGUsCitleHRlcm4gdm9pZCBHZXRPcGVy YXRvckZyb21XZWxsS25vd25TdHJhdGVneShPaWQgb3BjbGFzcywgT2lkIHJoc3R5cGUsCiAJ CQkJCQkJCQkJCSBPaWQgKm9waWQsIFN0cmF0ZWd5TnVtYmVyICpzdHJhdCk7CiAKIC8qIGNv bW1hbmRzL2Z1bmN0aW9uY21kcy5jICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rl cy9wYXJzZW5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKaW5kZXgg YmFhNmE5N2M3ZTIuLmNlY2E0YzgwMWJmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rl cy9wYXJzZW5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCkBA IC0yNjAxLDYgKzI2MDEsOCBAQCB0eXBlZGVmIHN0cnVjdCBDb25zdHJhaW50CiAJUmFuZ2VW YXIgICAqcGt0YWJsZTsJCS8qIFByaW1hcnkga2V5IHRhYmxlICovCiAJTGlzdAkgICAqZmtf YXR0cnM7CQkvKiBBdHRyaWJ1dGVzIG9mIGZvcmVpZ24ga2V5ICovCiAJTGlzdAkgICAqcGtf YXR0cnM7CQkvKiBDb3JyZXNwb25kaW5nIGF0dHJzIGluIFBLIHRhYmxlICovCisJYm9vbAkJ Zmtfd2l0aF9wZXJpb2Q7CS8qIExhc3QgYXR0cmlidXRlIG9mIEZLIHVzZXMgUEVSSU9EICov CisJYm9vbAkJcGtfd2l0aF9wZXJpb2Q7CS8qIExhc3QgYXR0cmlidXRlIG9mIFBLIHVzZXMg UEVSSU9EICovCiAJY2hhcgkJZmtfbWF0Y2h0eXBlOwkvKiBGVUxMLCBQQVJUSUFMLCBTSU1Q TEUgKi8KIAljaGFyCQlma191cGRfYWN0aW9uOwkvKiBPTiBVUERBVEUgYWN0aW9uICovCiAJ Y2hhcgkJZmtfZGVsX2FjdGlvbjsJLyogT04gREVMRVRFIGFjdGlvbiAqLwpkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oIGIvc3JjL2luY2x1ZGUvcGFyc2VyL2t3 bGlzdC5oCmluZGV4IDIzMzFhY2FjMDkxLi4xZDNmN2JkMzdmMiAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oCisrKyBiL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xp c3QuaApAQCAtMzI2LDYgKzMyNiw3IEBAIFBHX0tFWVdPUkQoInBhcnRpYWwiLCBQQVJUSUFM LCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJwYXJ0aXRp b24iLCBQQVJUSVRJT04sIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tF WVdPUkQoInBhc3NpbmciLCBQQVNTSU5HLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFC RUwpCiBQR19LRVlXT1JEKCJwYXNzd29yZCIsIFBBU1NXT1JELCBVTlJFU0VSVkVEX0tFWVdP UkQsIEJBUkVfTEFCRUwpCitQR19LRVlXT1JEKCJwZXJpb2QiLCBQRVJJT0QsIFJFU0VSVkVE X0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJwbGFjaW5nIiwgUExBQ0lORywg UkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInBsYW5zIiwgUExB TlMsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInBvbGlj eSIsIFBPTElDWSwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9idHJlZV9pbmRleC5vdXQgYi9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL2J0cmVlX2luZGV4Lm91dAppbmRleCA4MzExYTAzYzNkZi4u ZjM1OTVkNGVhM2IgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvYnRy ZWVfaW5kZXgub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvYnRyZWVfaW5k ZXgub3V0CkBAIC0yMDYsMTQgKzIwNiwxNiBAQCBzZWxlY3QgcHJvbmFtZSBmcm9tIHBnX3By b2Mgd2hlcmUgcHJvbmFtZSBsaWtlIEUnUklcXF9GS2V5JWRlbCcgb3JkZXIgYnkgMTsKICgz IHJvd3MpCiAKIHNlbGVjdCBwcm9uYW1lIGZyb20gcGdfcHJvYyB3aGVyZSBwcm9uYW1lIGxp a2UgRSdSSVxcX0ZLZXklZGVsJyBvcmRlciBieSAxOwotICAgICAgICBwcm9uYW1lICAgICAg ICAgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgcHJvbmFtZSAgICAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIFJJX0ZLZXlfY2FzY2Fk ZV9kZWwKICBSSV9GS2V5X25vYWN0aW9uX2RlbAorIFJJX0ZLZXlfcGVyaW9kX25vYWN0aW9u X2RlbAorIFJJX0ZLZXlfcGVyaW9kX3Jlc3RyaWN0X2RlbAogIFJJX0ZLZXlfcmVzdHJpY3Rf ZGVsCiAgUklfRktleV9zZXRkZWZhdWx0X2RlbAogIFJJX0ZLZXlfc2V0bnVsbF9kZWwKLSg1 IHJvd3MpCisoNyByb3dzKQogCiBleHBsYWluIChjb3N0cyBvZmYpCiBzZWxlY3QgcHJvbmFt ZSBmcm9tIHBnX3Byb2Mgd2hlcmUgcHJvbmFtZSBpbGlrZSAnMDAlZm9vJyBvcmRlciBieSAx OwpAQCAtMjUyLDE0ICsyNTQsMTYgQEAgc2VsZWN0IHByb25hbWUgZnJvbSBwZ19wcm9jIHdo ZXJlIHByb25hbWUgbGlrZSBFJ1JJXFxfRktleSVkZWwnIG9yZGVyIGJ5IDE7CiAoNiByb3dz KQogCiBzZWxlY3QgcHJvbmFtZSBmcm9tIHBnX3Byb2Mgd2hlcmUgcHJvbmFtZSBsaWtlIEUn UklcXF9GS2V5JWRlbCcgb3JkZXIgYnkgMTsKLSAgICAgICAgcHJvbmFtZSAgICAgICAgIAot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgIHByb25hbWUgICAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBSSV9GS2V5X2Nhc2NhZGVfZGVs CiAgUklfRktleV9ub2FjdGlvbl9kZWwKKyBSSV9GS2V5X3BlcmlvZF9ub2FjdGlvbl9kZWwK KyBSSV9GS2V5X3BlcmlvZF9yZXN0cmljdF9kZWwKICBSSV9GS2V5X3Jlc3RyaWN0X2RlbAog IFJJX0ZLZXlfc2V0ZGVmYXVsdF9kZWwKICBSSV9GS2V5X3NldG51bGxfZGVsCi0oNSByb3dz KQorKDcgcm93cykKIAogZXhwbGFpbiAoY29zdHMgb2ZmKQogc2VsZWN0IHByb25hbWUgZnJv bSBwZ19wcm9jIHdoZXJlIHByb25hbWUgaWxpa2UgJzAwJWZvbycgb3JkZXIgYnkgMTsKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvd2l0aG91dF9vdmVybGFwcy5v dXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3dpdGhvdXRfb3ZlcmxhcHMub3V0Cmlu ZGV4IDcyNmU5NDEwMmJmLi4yMTM5YTM5M2RkZSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC93aXRob3V0X292ZXJsYXBzLm91dAorKysgYi9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL3dpdGhvdXRfb3ZlcmxhcHMub3V0CkBAIC05OCwyMSArOTgsNTEgQEAg Q1JFQVRFIFRBQkxFIHRlbXBvcmFsX3JuZzMgKAogQUxURVIgVEFCTEUgdGVtcG9yYWxfcm5n MyBEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfcm5nM19wazsKIERST1AgVEFCTEUgdGVtcG9y YWxfcm5nMzsKIERST1AgVFlQRSB0ZXh0cmFuZ2UyOwotLS0gUEsgd2l0aCBhIG11bHRpcmFu Z2U6CistLSBQSyB3aXRoIG9uZSBjb2x1bW4gcGx1cyBhIG11bHRpcmFuZ2U6CiBDUkVBVEUg VEFCTEUgdGVtcG9yYWxfbWx0cm5nICgKICAgaWQgaW50NHJhbmdlLAotICB2YWxpZF9hdCB0 c211bHRpcmFuZ2UsCisgIHZhbGlkX2F0IGRhdGVtdWx0aXJhbmdlLAogICBDT05TVFJBSU5U IHRlbXBvcmFsX21sdHJuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQg T1ZFUkxBUFMpCiApOwogXGQgdGVtcG9yYWxfbWx0cm5nCi0gICAgICAgICAgICAgIFRhYmxl ICJwdWJsaWMudGVtcG9yYWxfbWx0cm5nIgotICBDb2x1bW4gIHwgICAgIFR5cGUgICAgIHwg Q29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IAotLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLQotIGlkICAgICAgIHwgaW50 NHJhbmdlICAgIHwgICAgICAgICAgIHwgbm90IG51bGwgfCAKLSB2YWxpZF9hdCB8IHRzbXVs dGlyYW5nZSB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgCisgICAgICAgICAgICAgICBUYWJs ZSAicHVibGljLnRlbXBvcmFsX21sdHJuZyIKKyAgQ29sdW1uICB8ICAgICAgVHlwZSAgICAg IHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tCisgaWQgICAgICAg fCBpbnQ0cmFuZ2UgICAgICB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgCisgdmFsaWRfYXQg fCBkYXRlbXVsdGlyYW5nZSB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgCiBJbmRleGVzOgog ICAgICJ0ZW1wb3JhbF9tbHRybmdfcGsiIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lU SE9VVCBPVkVSTEFQUykKIAorLS0gUEsgd2l0aCB0d28gY29sdW1ucyBwbHVzIGEgbXVsdGly YW5nZToKKy0tIFdlIGRvbid0IGRyb3AgdGhpcyB0YWJsZSBiZWNhdXNlIHRlc3RzIGJlbG93 IGFsc28gbmVlZCBtdWx0aXBsZSBzY2FsYXIgY29sdW1ucy4KK0NSRUFURSBUQUJMRSB0ZW1w b3JhbF9tbHRybmcyICgKKwlpZDEgaW50NHJhbmdlLAorCWlkMiBpbnQ0cmFuZ2UsCisJdmFs aWRfYXQgZGF0ZW11bHRpcmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9tbHRybmcyX3Br IFBSSU1BUlkgS0VZIChpZDEsIGlkMiwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7 CitcZCB0ZW1wb3JhbF9tbHRybmcyCisgICAgICAgICAgICAgIFRhYmxlICJwdWJsaWMudGVt cG9yYWxfbWx0cm5nMiIKKyAgQ29sdW1uICB8ICAgICAgVHlwZSAgICAgIHwgQ29sbGF0aW9u IHwgTnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tCisgaWQxICAgICAgfCBpbnQ0cmFuZ2Ug ICAgICB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgCisgaWQyICAgICAgfCBpbnQ0cmFuZ2Ug ICAgICB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgCisgdmFsaWRfYXQgfCBkYXRlbXVsdGly YW5nZSB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgCitJbmRleGVzOgorICAgICJ0ZW1wb3Jh bF9tbHRybmcyX3BrIiBQUklNQVJZIEtFWSAoaWQxLCBpZDIsIHZhbGlkX2F0IFdJVEhPVVQg T1ZFUkxBUFMpCisKK1NFTEVDVCBwZ19nZXRfY29uc3RyYWludGRlZihvaWQpIEZST00gcGdf Y29uc3RyYWludCBXSEVSRSBjb25uYW1lID0gJ3RlbXBvcmFsX21sdHJuZzJfcGsnOworICAg ICAgICAgICAgICAgcGdfZ2V0X2NvbnN0cmFpbnRkZWYgICAgICAgICAgICAgICAgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBQUklN QVJZIEtFWSAoaWQxLCBpZDIsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCisoMSByb3cp CisKK1NFTEVDVCBwZ19nZXRfaW5kZXhkZWYoY29uaW5kaWQsIDAsIHRydWUpIEZST00gcGdf Y29uc3RyYWludCBXSEVSRSBjb25uYW1lID0gJ3RlbXBvcmFsX21sdHJuZzJfcGsnOworICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X2luZGV4ZGVmICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBDUkVBVEUgVU5JUVVFIElOREVYIHRlbXBvcmFs X21sdHJuZzJfcGsgT04gdGVtcG9yYWxfbWx0cm5nMiBVU0lORyBnaXN0IChpZDEsIGlkMiwg dmFsaWRfYXQpCisoMSByb3cpCisKIC0tIFVOSVFVRSB3aXRoIG5vIGNvbHVtbnMganVzdCBX SVRIT1VUIE9WRVJMQVBTOgogQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3JuZzMgKAogCXZhbGlk X2F0IHRzcmFuZ2UsCkBAIC0yODksNiArMzE5LDMwIEBAIERFVEFJTDogIEZhaWxpbmcgcm93 IGNvbnRhaW5zIChudWxsLCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIkZyaSBKYW4g MDUgMDA6CiBJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzMsM10nLCBOVUxM KTsKIEVSUk9SOiAgbnVsbCB2YWx1ZSBpbiBjb2x1bW4gInZhbGlkX2F0IiBvZiByZWxhdGlv biAidGVtcG9yYWxfcm5nIiB2aW9sYXRlcyBub3QtbnVsbCBjb25zdHJhaW50CiBERVRBSUw6 ICBGYWlsaW5nIHJvdyBjb250YWlucyAoWzMsNCksIG51bGwpLgorLS0gb2theToKK0lOU0VS VCBJTlRPIHRlbXBvcmFsX21sdHJuZyBWQUxVRVMgKCdbMSwxXScsIGRhdGVtdWx0aXJhbmdl KGRhdGVyYW5nZSgnMjAxOC0wMS0wMicsICcyMDE4LTAyLTAzJykpKTsKK0lOU0VSVCBJTlRP IHRlbXBvcmFsX21sdHJuZyBWQUxVRVMgKCdbMSwxXScsIGRhdGVtdWx0aXJhbmdlKGRhdGVy YW5nZSgnMjAxOC0wMy0wMycsICcyMDE4LTA0LTA0JykpKTsKK0lOU0VSVCBJTlRPIHRlbXBv cmFsX21sdHJuZyBWQUxVRVMgKCdbMiwyXScsIGRhdGVtdWx0aXJhbmdlKGRhdGVyYW5nZSgn MjAxOC0wMS0wMScsICcyMDE4LTAxLTA1JykpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX21s dHJuZyBWQUxVRVMgKCdbMywzXScsIGRhdGVtdWx0aXJhbmdlKGRhdGVyYW5nZSgnMjAxOC0w MS0wMScsIE5VTEwpKSk7CistLSBzaG91bGQgZmFpbDoKK0lOU0VSVCBJTlRPIHRlbXBvcmFs X21sdHJuZyBWQUxVRVMgKCdbMSwxXScsIGRhdGVtdWx0aXJhbmdlKGRhdGVyYW5nZSgnMjAx OC0wMS0wMScsICcyMDE4LTAxLTA1JykpKTsKK0VSUk9SOiAgY29uZmxpY3Rpbmcga2V5IHZh bHVlIHZpb2xhdGVzIGV4Y2x1c2lvbiBjb25zdHJhaW50ICJ0ZW1wb3JhbF9tbHRybmdfcGsi CitERVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9hdCk9KFsxLDIpLCB7WzAxLTAxLTIwMTgsMDEt MDUtMjAxOCl9KSBjb25mbGljdHMgd2l0aCBleGlzdGluZyBrZXkgKGlkLCB2YWxpZF9hdCk9 KFsxLDIpLCB7WzAxLTAyLTIwMTgsMDItMDMtMjAxOCl9KS4KK0lOU0VSVCBJTlRPIHRlbXBv cmFsX21sdHJuZyBWQUxVRVMgKE5VTEwsIGRhdGVtdWx0aXJhbmdlKGRhdGVyYW5nZSgnMjAx OC0wMS0wMScsICcyMDE4LTAxLTA1JykpKTsKK0VSUk9SOiAgbnVsbCB2YWx1ZSBpbiBjb2x1 bW4gImlkIiBvZiByZWxhdGlvbiAidGVtcG9yYWxfbWx0cm5nIiB2aW9sYXRlcyBub3QtbnVs bCBjb25zdHJhaW50CitERVRBSUw6ICBGYWlsaW5nIHJvdyBjb250YWlucyAobnVsbCwge1sw MS0wMS0yMDE4LDAxLTA1LTIwMTgpfSkuCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9tbHRybmcg VkFMVUVTICgnWzMsM10nLCBOVUxMKTsKK0VSUk9SOiAgbnVsbCB2YWx1ZSBpbiBjb2x1bW4g InZhbGlkX2F0IiBvZiByZWxhdGlvbiAidGVtcG9yYWxfbWx0cm5nIiB2aW9sYXRlcyBub3Qt bnVsbCBjb25zdHJhaW50CitERVRBSUw6ICBGYWlsaW5nIHJvdyBjb250YWlucyAoWzMsNCks IG51bGwpLgorU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9tbHRybmcgT1JERVIgQlkgaWQsIHZh bGlkX2F0OworICBpZCAgIHwgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAKKy0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgWzEsMikgfCB7WzAxLTAyLTIwMTgsMDIt MDMtMjAxOCl9CisgWzEsMikgfCB7WzAzLTAzLTIwMTgsMDQtMDQtMjAxOCl9CisgWzIsMykg fCB7WzAxLTAxLTIwMTgsMDEtMDUtMjAxOCl9CisgWzMsNCkgfCB7WzAxLTAxLTIwMTgsKX0K Kyg0IHJvd3MpCisKIC0tCiAtLSB0ZXN0IGEgcmFuZ2Ugd2l0aCBib3RoIGEgUEsgYW5kIGEg VU5JUVVFIGNvbnN0cmFpbnQKIC0tCkBAIC0zOTMsMyArNDQ3LDk1MyBAQCBTRUxFQ1QgKiBG Uk9NIHRwMiBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CiAoMSByb3cpCiAKIERST1AgVEFCTEUg dGVtcG9yYWxfcGFydGl0aW9uZWQ7CistLQorLS0gdGVzdCBGSyBkZXBlbmRlbmNpZXMKKy0t CistLSBjYW4ndCBkcm9wIGEgcmFuZ2UgcmVmZXJlbmNlZCBieSBhbiBGSywgdW5sZXNzIHdp dGggQ0FTQ0FERQorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsMyAoCisJaWQgaW50NHJhbmdlLAor CXZhbGlkX2F0IHRzcmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbDNfcGsgUFJJTUFSWSBL RVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK0NSRUFURSBUQUJMRSB0 ZW1wb3JhbF9ma19ybmcycm5nICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5n ZSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5n MnJuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpLAor CUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19mayBGT1JFSUdOIEtFWSAocGFyZW50 X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWwzIChpZCwgUEVS SU9EIHZhbGlkX2F0KQorKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsMyBEUk9QIENPTFVNTiB2 YWxpZF9hdDsKK0VSUk9SOiAgY2Fubm90IGRyb3AgY29sdW1uIHZhbGlkX2F0IG9mIHRhYmxl IHRlbXBvcmFsMyBiZWNhdXNlIG90aGVyIG9iamVjdHMgZGVwZW5kIG9uIGl0CitERVRBSUw6 ICBjb25zdHJhaW50IHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsgb24gdGFibGUgdGVtcG9yYWxf Zmtfcm5nMnJuZyBkZXBlbmRzIG9uIGNvbHVtbiB2YWxpZF9hdCBvZiB0YWJsZSB0ZW1wb3Jh bDMKK0hJTlQ6ICBVc2UgRFJPUCAuLi4gQ0FTQ0FERSB0byBkcm9wIHRoZSBkZXBlbmRlbnQg b2JqZWN0cyB0b28uCitBTFRFUiBUQUJMRSB0ZW1wb3JhbDMgRFJPUCBDT0xVTU4gdmFsaWRf YXQgQ0FTQ0FERTsKK05PVElDRTogIGRyb3AgY2FzY2FkZXMgdG8gY29uc3RyYWludCB0ZW1w b3JhbF9ma19ybmcycm5nX2ZrIG9uIHRhYmxlIHRlbXBvcmFsX2ZrX3JuZzJybmcKK0RST1Ag VEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZzsKK0RST1AgVEFCTEUgdGVtcG9yYWwzOworLS0K Ky0tIHRlc3QgRk9SRUlHTiBLRVksIHJhbmdlIHJlZmVyZW5jZXMgcmFuZ2UKKy0tCistLSB0 ZXN0IHRhYmxlIHNldHVwCitEUk9QIFRBQkxFIHRlbXBvcmFsX3JuZzsKK0NSRUFURSBUQUJM RSB0ZW1wb3JhbF9ybmcgKGlkIGludDRyYW5nZSwgdmFsaWRfYXQgdHNyYW5nZSk7CitBTFRF UiBUQUJMRSB0ZW1wb3JhbF9ybmcKKyAgQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfcm5nX3Br CisgIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyk7CistLSBD YW4ndCBjcmVhdGUgYSBGSyB3aXRoIGEgbWlzbWF0Y2hlZCByYW5nZSB0eXBlCitDUkVBVEUg VEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0 IGludDRyYW5nZSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9y YWxfZmtfcm5nMnJuZ19wazIgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9W RVJMQVBTKSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsyIEZPUkVJR04g S0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3Jh bF9ybmcgKGlkLCBQRVJJT0QgdmFsaWRfYXQpCispOworRVJST1I6ICBmb3JlaWduIGtleSBj b25zdHJhaW50ICJ0ZW1wb3JhbF9ma19ybmcycm5nX2ZrMiIgY2Fubm90IGJlIGltcGxlbWVu dGVkCitERVRBSUw6ICBLZXkgY29sdW1ucyAidmFsaWRfYXQiIGFuZCAidmFsaWRfYXQiIGFy ZSBvZiBpbmNvbXBhdGlibGUgdHlwZXM6IGludDRyYW5nZSBhbmQgdHNyYW5nZS4KKy0tIHdv cmtzOiBQRVJJT0QgZm9yIGJvdGggcmVmZXJlbmNlZCBhbmQgcmVmZXJlbmNpbmcKK0NSRUFU RSBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRf YXQgdHNyYW5nZSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9y YWxfZmtfcm5nMnJuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZF UkxBUFMpLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19mayBGT1JFSUdOIEtF WSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxf cm5nIChpZCwgUEVSSU9EIHZhbGlkX2F0KQorKTsKK0RST1AgVEFCTEUgdGVtcG9yYWxfZmtf cm5nMnJuZzsKKy0tIHdpdGggbWlzbWF0Y2hlZCBQRVJJT0QgY29sdW1uczoKKy0tIChwYXJl bnRfaWQsIFBFUklPRCB2YWxpZF9hdCkgUkVGRVJFTkNFUyAoaWQsIHZhbGlkX2F0KQorLS0g UkVGRVJFTkNFUyBwYXJ0IHNob3VsZCBzcGVjaWZ5IFBFUklPRAorQ1JFQVRFIFRBQkxFIHRl bXBvcmFsX2ZrX3JuZzJybmcgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3Jhbmdl LAorCXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcy cm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyksCisJ Q09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrIEZPUkVJR04gS0VZIChwYXJlbnRf aWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcgKGlkLCB2 YWxpZF9hdCkKKyk7CitFUlJPUjogIGZvcmVpZ24ga2V5IHVzZXMgUEVSSU9EIG9uIHRoZSBy ZWZlcmVuY2luZyB0YWJsZSBidXQgbm90IHRoZSByZWZlcmVuY2VkIHRhYmxlCistLSAocGFy ZW50X2lkLCB2YWxpZF9hdCkgUkVGRVJFTkNFUyAoaWQsIFBFUklPRCB2YWxpZF9hdCkKKy0t IEZPUkVJR04gS0VZIHBhcnQgc2hvdWxkIHNwZWNpZnkgUEVSSU9ECitDUkVBVEUgVEFCTEUg dGVtcG9yYWxfZmtfcm5nMnJuZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFu Z2UsCisJcGFyZW50X2lkIGludDRyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3Ju ZzJybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKSwK KwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsgRk9SRUlHTiBLRVkgKHBhcmVu dF9pZCwgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nIChpZCwgUEVSSU9E IHZhbGlkX2F0KQorKTsKK0VSUk9SOiAgZm9yZWlnbiBrZXkgdXNlcyBQRVJJT0Qgb24gdGhl IHJlZmVyZW5jZWQgdGFibGUgYnV0IG5vdCB0aGUgcmVmZXJlbmNpbmcgdGFibGUKKy0tIChw YXJlbnRfaWQsIHZhbGlkX2F0KSBSRUZFUkVOQ0VTIFtpbXBsaWNpdF0KKy0tIEZPUkVJR04g S0VZIHBhcnQgc2hvdWxkIHNwZWNpZnkgUEVSSU9ECitDUkVBVEUgVEFCTEUgdGVtcG9yYWxf Zmtfcm5nMnJuZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UsCisJcGFy ZW50X2lkIGludDRyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfcGsg UFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKSwKKwlDT05TVFJB SU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsgRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgdmFs aWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nCispOworRVJST1I6ICBmb3JlaWdu IGtleSB1c2VzIFBFUklPRCBvbiB0aGUgcmVmZXJlbmNlZCB0YWJsZSBidXQgbm90IHRoZSBy ZWZlcmVuY2luZyB0YWJsZQorLS0gKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KSBSRUZF UkVOQ0VTIChpZCkKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nICgKKwlpZCBp bnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5nZSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAor CUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZh bGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5n MnJuZ19mayBGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJF RkVSRU5DRVMgdGVtcG9yYWxfcm5nIChpZCkKKyk7CitFUlJPUjogIGZvcmVpZ24ga2V5IHVz ZXMgUEVSSU9EIG9uIHRoZSByZWZlcmVuY2luZyB0YWJsZSBidXQgbm90IHRoZSByZWZlcmVu Y2VkIHRhYmxlCistLSAocGFyZW50X2lkKSBSRUZFUkVOQ0VTIChpZCwgUEVSSU9EIHZhbGlk X2F0KQorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcgKAorCWlkIGludDRyYW5n ZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAorCXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RS QUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQg V0lUSE9VVCBPVkVSTEFQUyksCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2Zr IEZPUkVJR04gS0VZIChwYXJlbnRfaWQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nIChp ZCwgUEVSSU9EIHZhbGlkX2F0KQorKTsKK0VSUk9SOiAgZm9yZWlnbiBrZXkgdXNlcyBQRVJJ T0Qgb24gdGhlIHJlZmVyZW5jZWQgdGFibGUgYnV0IG5vdCB0aGUgcmVmZXJlbmNpbmcgdGFi bGUKKy0tIHdpdGggaW5mZXJyZWQgUEsgb24gdGhlIHJlZmVyZW5jZWQgdGFibGU6CitDUkVB VEUgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlk X2F0IHRzcmFuZ2UsCisJcGFyZW50X2lkIGludDRyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBv cmFsX2ZrX3JuZzJybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9W RVJMQVBTKSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsgRk9SRUlHTiBL RVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFs X3JuZworKTsKK0RST1AgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZzsKKy0tIHNob3VsZCBm YWlsIGJlY2F1c2Ugb2YgZHVwbGljYXRlIHJlZmVyZW5jZWQgY29sdW1uczoKK0NSRUFURSBU QUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQg dHNyYW5nZSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxf Zmtfcm5nMnJuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxB UFMpLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19mayBGT1JFSUdOIEtFWSAo cGFyZW50X2lkLCBQRVJJT0QgcGFyZW50X2lkKQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3Ju ZyAoaWQsIFBFUklPRCBpZCkKKyk7CitFUlJPUjogIGZvcmVpZ24ga2V5IHJlZmVyZW5jZWQt Y29sdW1ucyBsaXN0IG11c3Qgbm90IGNvbnRhaW4gZHVwbGljYXRlcworLS0gVHdvIHNjYWxh ciBjb2x1bW5zCitEUk9QIFRBQkxFIHRlbXBvcmFsX3JuZzI7CitDUkVBVEUgVEFCTEUgdGVt cG9yYWxfcm5nMiAoCisgIGlkMSBpbnQ0cmFuZ2UsCisgIGlkMiBpbnQ0cmFuZ2UsCisgIHZh bGlkX2F0IHRzcmFuZ2UsCisgIENPTlNUUkFJTlQgdGVtcG9yYWxfcm5nMl9wayBQUklNQVJZ IEtFWSAoaWQxLCBpZDIsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworQ1JFQVRF IFRBQkxFIHRlbXBvcmFsX2ZrMl9ybmcycm5nICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRf YXQgdHNyYW5nZSwKKwlwYXJlbnRfaWQxIGludDRyYW5nZSwKKwlwYXJlbnRfaWQyIGludDRy YW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrMl9ybmcycm5nX3BrIFBSSU1BUlkgS0VZ IChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyksCisJQ09OU1RSQUlOVCB0ZW1wb3Jh bF9mazJfcm5nMnJuZ19mayBGT1JFSUdOIEtFWSAocGFyZW50X2lkMSwgcGFyZW50X2lkMiwg UEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZzIgKGlkMSwgaWQy LCBQRVJJT0QgdmFsaWRfYXQpCispOworXGQgdGVtcG9yYWxfZmsyX3JuZzJybmcKKyAgICAg ICAgICAgVGFibGUgInB1YmxpYy50ZW1wb3JhbF9mazJfcm5nMnJuZyIKKyAgIENvbHVtbiAg IHwgICBUeXBlICAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tCisg aWQgICAgICAgICB8IGludDRyYW5nZSB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgCisgdmFs aWRfYXQgICB8IHRzcmFuZ2UgICB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgCisgcGFyZW50 X2lkMSB8IGludDRyYW5nZSB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCisgcGFyZW50X2lk MiB8IGludDRyYW5nZSB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCitJbmRleGVzOgorICAg ICJ0ZW1wb3JhbF9mazJfcm5nMnJuZ19wayIgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBX SVRIT1VUIE9WRVJMQVBTKQorRm9yZWlnbi1rZXkgY29uc3RyYWludHM6CisgICAgInRlbXBv cmFsX2ZrMl9ybmcycm5nX2ZrIiBGT1JFSUdOIEtFWSAocGFyZW50X2lkMSwgcGFyZW50X2lk MiwgUEVSSU9EIHZhbGlkX2F0KSBSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZzIoaWQxLCBpZDIs IFBFUklPRCB2YWxpZF9hdCkKKworRFJPUCBUQUJMRSB0ZW1wb3JhbF9mazJfcm5nMnJuZzsK Ky0tCistLSB0ZXN0IEFMVEVSIFRBQkxFIEFERCBDT05TVFJBSU5UCistLQorQ1JFQVRFIFRB QkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0 c3JhbmdlLAorCXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9m a19ybmcycm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQ UykKKyk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisJQUREIENPTlNUUkFJ TlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBF UklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZyAoaWQsIFBFUklPRCB2 YWxpZF9hdCk7CistLSBUd28gc2NhbGFyIGNvbHVtbnM6CitDUkVBVEUgVEFCTEUgdGVtcG9y YWxfZmsyX3JuZzJybmcgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAor CXBhcmVudF9pZDEgaW50NHJhbmdlLAorCXBhcmVudF9pZDIgaW50NHJhbmdlLAorCUNPTlNU UkFJTlQgdGVtcG9yYWxfZmsyX3JuZzJybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9h dCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrMl9ybmcy cm5nCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmsyX3JuZzJybmdfZmsKKwlGT1JFSUdO IEtFWSAocGFyZW50X2lkMSwgcGFyZW50X2lkMiwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVS RU5DRVMgdGVtcG9yYWxfcm5nMiAoaWQxLCBpZDIsIFBFUklPRCB2YWxpZF9hdCk7CitcZCB0 ZW1wb3JhbF9mazJfcm5nMnJuZworICAgICAgICAgICBUYWJsZSAicHVibGljLnRlbXBvcmFs X2ZrMl9ybmcycm5nIgorICAgQ29sdW1uICAgfCAgIFR5cGUgICAgfCBDb2xsYXRpb24gfCBO dWxsYWJsZSB8IERlZmF1bHQgCistLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0rLS0tLS0tLS0tLSstLS0tLS0tLS0KKyBpZCAgICAgICAgIHwgaW50NHJhbmdlIHwgICAg ICAgICAgIHwgbm90IG51bGwgfCAKKyB2YWxpZF9hdCAgIHwgdHNyYW5nZSAgIHwgICAgICAg ICAgIHwgbm90IG51bGwgfCAKKyBwYXJlbnRfaWQxIHwgaW50NHJhbmdlIHwgICAgICAgICAg IHwgICAgICAgICAgfCAKKyBwYXJlbnRfaWQyIHwgaW50NHJhbmdlIHwgICAgICAgICAgIHwg ICAgICAgICAgfCAKK0luZGV4ZXM6CisgICAgInRlbXBvcmFsX2ZrMl9ybmcycm5nX3BrIiBQ UklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCitGb3JlaWduLWtl eSBjb25zdHJhaW50czoKKyAgICAidGVtcG9yYWxfZmsyX3JuZzJybmdfZmsiIEZPUkVJR04g S0VZIChwYXJlbnRfaWQxLCBwYXJlbnRfaWQyLCBQRVJJT0QgdmFsaWRfYXQpIFJFRkVSRU5D RVMgdGVtcG9yYWxfcm5nMihpZDEsIGlkMiwgUEVSSU9EIHZhbGlkX2F0KQorCistLSB3aXRo IGluZmVycmVkIFBLIG9uIHRoZSByZWZlcmVuY2VkIHRhYmxlLCBhbmQgd3JvbmcgY29sdW1u IHR5cGU6CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisJRFJPUCBDT05TVFJB SU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmssCisJQUxURVIgQ09MVU1OIHZhbGlkX2F0IFRZ UEUgZGF0ZXJhbmdlIFVTSU5HIGRhdGVyYW5nZShsb3dlcih2YWxpZF9hdCk6OmRhdGUsIHVw cGVyKHZhbGlkX2F0KTo6ZGF0ZSk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5n CisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19maworCUZPUkVJR04gS0VZ IChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX3Ju ZzsKK0VSUk9SOiAgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxfZmtfcm5nMnJu Z19mayIgY2Fubm90IGJlIGltcGxlbWVudGVkCitERVRBSUw6ICBLZXkgY29sdW1ucyAidmFs aWRfYXQiIGFuZCAidmFsaWRfYXQiIGFyZSBvZiBpbmNvbXBhdGlibGUgdHlwZXM6IGRhdGVy YW5nZSBhbmQgdHNyYW5nZS4KK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlB TFRFUiBDT0xVTU4gdmFsaWRfYXQgVFlQRSB0c3JhbmdlIFVTSU5HIHRzcmFuZ2UobG93ZXIo dmFsaWRfYXQpLCB1cHBlcih2YWxpZF9hdCkpOworLS0gd2l0aCBpbmZlcnJlZCBQSyBvbiB0 aGUgcmVmZXJlbmNlZCB0YWJsZToKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcK KwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrCisJRk9SRUlHTiBLRVkg KHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5n OworLS0gc2hvdWxkIGZhaWwgYmVjYXVzZSBvZiBkdXBsaWNhdGUgcmVmZXJlbmNlZCBjb2x1 bW5zOgorQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCUFERCBDT05TVFJBSU5U IHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsyCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVS SU9EIHBhcmVudF9pZCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZyAoaWQsIFBFUklPRCBp ZCk7CitFUlJPUjogIGZvcmVpZ24ga2V5IHJlZmVyZW5jZWQtY29sdW1ucyBsaXN0IG11c3Qg bm90IGNvbnRhaW4gZHVwbGljYXRlcworLS0KKy0tIHRlc3Qgd2l0aCByb3dzIGFscmVhZHkK Ky0tCitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nOworREVMRVRFIEZST00gdGVt cG9yYWxfcm5nOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUworICAoJ1sxLDFd JywgdHNyYW5nZSgnMjAxOC0wMS0wMicsICcyMDE4LTAyLTAzJykpLAorICAoJ1sxLDFdJywg dHNyYW5nZSgnMjAxOC0wMy0wMycsICcyMDE4LTA0LTA0JykpLAorICAoJ1syLDJdJywgdHNy YW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAxLTA1JykpLAorICAoJ1szLDNdJywgdHNyYW5n ZSgnMjAxOC0wMS0wMScsIE5VTEwpKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJy bmcKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19mazsKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzEsMV0nLCB0c3JhbmdlKCcyMDE4 LTAxLTAyJywgJzIwMTgtMDItMDEnKSwgJ1sxLDFdJyk7CitBTFRFUiBUQUJMRSB0ZW1wb3Jh bF9ma19ybmcycm5nCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19mawor CUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VT IHRlbXBvcmFsX3JuZzsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlEUk9Q IENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19mazsKK0lOU0VSVCBJTlRPIHRlbXBv cmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzIsMl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAyJywg JzIwMTgtMDQtMDEnKSwgJ1sxLDFdJyk7CistLSBzaG91bGQgZmFpbDoKK0FMVEVSIFRBQkxF IHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcy cm5nX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJF RkVSRU5DRVMgdGVtcG9yYWxfcm5nOworRVJST1I6ICBpbnNlcnQgb3IgdXBkYXRlIG9uIHRh YmxlICJ0ZW1wb3JhbF9ma19ybmcycm5nIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJh aW50ICJ0ZW1wb3JhbF9ma19ybmcycm5nX2ZrIgorREVUQUlMOiAgS2V5IChwYXJlbnRfaWQs IHZhbGlkX2F0KT0oWzEsMiksIFsiVHVlIEphbiAwMiAwMDowMDowMCAyMDE4IiwiU3VuIEFw ciAwMSAwMDowMDowMCAyMDE4IikpIGlzIG5vdCBwcmVzZW50IGluIHRhYmxlICJ0ZW1wb3Jh bF9ybmciLgorLS0gb2theSBhZ2FpbjoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJy bmc7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisJQUREIENPTlNUUkFJTlQg dGVtcG9yYWxfZmtfcm5nMnJuZ19maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklP RCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZzsKKy0tCistLSB0ZXN0IHBn X2dldF9jb25zdHJhaW50ZGVmCistLQorU0VMRUNUIHBnX2dldF9jb25zdHJhaW50ZGVmKG9p ZCkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbm5hbWUgPSAndGVtcG9yYWxfZmtfcm5n MnJuZ19mayc7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRfY29u c3RyYWludGRlZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBF UklPRCB2YWxpZF9hdCkgUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcoaWQsIFBFUklPRCB2YWxp ZF9hdCkKKygxIHJvdykKKworLS0KKy0tIHRlc3QgRksgY2hpbGQgaW5zZXJ0cworLS0KK0lO U0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzEsMV0nLCB0c3Jhbmdl KCcyMDE4LTAxLTAyJywgJzIwMTgtMDItMDEnKSwgJ1sxLDFdJyk7CistLSBzaG91bGQgZmFp bDoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzIsMl0nLCB0 c3JhbmdlKCcyMDE4LTAxLTAyJywgJzIwMTgtMDQtMDEnKSwgJ1sxLDFdJyk7CitFUlJPUjog IGluc2VydCBvciB1cGRhdGUgb24gdGFibGUgInRlbXBvcmFsX2ZrX3JuZzJybmciIHZpb2xh dGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBvcmFsX2ZrX3JuZzJybmdfZmsiCitE RVRBSUw6ICBLZXkgKHBhcmVudF9pZCwgdmFsaWRfYXQpPShbMSwyKSwgWyJUdWUgSmFuIDAy IDAwOjAwOjAwIDIwMTgiLCJTdW4gQXByIDAxIDAwOjAwOjAwIDIwMTgiKSkgaXMgbm90IHBy ZXNlbnQgaW4gdGFibGUgInRlbXBvcmFsX3JuZyIuCistLSBub3cgaXQgc2hvdWxkIHdvcms6 CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzEsMV0nLCB0c3JhbmdlKCcy MDE4LTAyLTAzJywgJzIwMTgtMDMtMDMnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19y bmcycm5nIFZBTFVFUyAoJ1syLDJdJywgdHNyYW5nZSgnMjAxOC0wMS0wMicsICcyMDE4LTA0 LTAxJyksICdbMSwxXScpOworLS0KKy0tIHRlc3QgRksgY2hpbGQgdXBkYXRlcworLS0KK1VQ REFURSB0ZW1wb3JhbF9ma19ybmcycm5nIFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgt MDEtMDInLCAnMjAxOC0wMy0wMScpIFdIRVJFIGlkID0gJ1sxLDFdJzsKKy0tIHNob3VsZCBm YWlsOgorVVBEQVRFIHRlbXBvcmFsX2ZrX3JuZzJybmcgU0VUIHZhbGlkX2F0ID0gdHNyYW5n ZSgnMjAxOC0wMS0wMicsICcyMDE4LTA1LTAxJykgV0hFUkUgaWQgPSAnWzEsMV0nOworRVJS T1I6ICBpbnNlcnQgb3IgdXBkYXRlIG9uIHRhYmxlICJ0ZW1wb3JhbF9ma19ybmcycm5nIiB2 aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9ma19ybmcycm5nX2Zr IgorREVUQUlMOiAgS2V5IChwYXJlbnRfaWQsIHZhbGlkX2F0KT0oWzEsMiksIFsiVHVlIEph biAwMiAwMDowMDowMCAyMDE4IiwiVHVlIE1heSAwMSAwMDowMDowMCAyMDE4IikpIGlzIG5v dCBwcmVzZW50IGluIHRhYmxlICJ0ZW1wb3JhbF9ybmciLgorVVBEQVRFIHRlbXBvcmFsX2Zr X3JuZzJybmcgU0VUIHBhcmVudF9pZCA9ICdbOCw4XScgV0hFUkUgaWQgPSAnWzEsMV0nOwor RVJST1I6ICBpbnNlcnQgb3IgdXBkYXRlIG9uIHRhYmxlICJ0ZW1wb3JhbF9ma19ybmcycm5n IiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9ma19ybmcycm5n X2ZrIgorREVUQUlMOiAgS2V5IChwYXJlbnRfaWQsIHZhbGlkX2F0KT0oWzgsOSksIFsiVHVl IEphbiAwMiAwMDowMDowMCAyMDE4IiwiVGh1IE1hciAwMSAwMDowMDowMCAyMDE4IikpIGlz IG5vdCBwcmVzZW50IGluIHRhYmxlICJ0ZW1wb3JhbF9ybmciLgorLS0gQUxURVIgRksgREVG RVJSQUJMRQorQkVHSU47CisgIElOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMKKyAg ICAoJ1s1LDVdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykpLAorICAg ICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKSk7CisgIElO U0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTCisgICAgKCdbMywzXScsIHRz cmFuZ2UoJzIwMTgtMDEtMDUnLCAnMjAxOC0wMS0xMCcpLCAnWzUsNV0nKTsKKyAgQUxURVIg VEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworICAgIEFMVEVSIENPTlNUUkFJTlQgdGVtcG9y YWxfZmtfcm5nMnJuZ19maworICAgIERFRkVSUkFCTEUgSU5JVElBTExZIERFRkVSUkVEOwor ICBERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nOyAtLXNob3Vs ZCBub3QgZmFpbCB5ZXQuCitDT01NSVQ7IC0tIHNob3VsZCBmYWlsIGhlcmUuCitFUlJPUjog IHVwZGF0ZSBvciBkZWxldGUgb24gdGFibGUgInRlbXBvcmFsX3JuZyIgdmlvbGF0ZXMgZm9y ZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxfZmtfcm5nMnJuZ19mayIgb24gdGFibGUg InRlbXBvcmFsX2ZrX3JuZzJybmciCitERVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9hdCk9KFs1 LDYpLCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlRodSBGZWIgMDEgMDA6MDA6MDAg MjAxOCIpKSBpcyBzdGlsbCByZWZlcmVuY2VkIGZyb20gdGFibGUgInRlbXBvcmFsX2ZrX3Ju ZzJybmciLgorLS0KKy0tIHRlc3QgRksgcGFyZW50IHVwZGF0ZXMgTk8gQUNUSU9OCistLQor LS0gYSBQSyB1cGRhdGUgdGhhdCBzdWNjZWVkcyBiZWNhdXNlIHRoZSBudW1lcmljIGlkIGlz bid0IHJlZmVyZW5jZWQ6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzUs NV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKSk7CitVUERBVEUgdGVt cG9yYWxfcm5nIFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTYtMDEtMDEnLCAnMjAxNi0w Mi0wMScpIFdIRVJFIGlkID0gJ1s1LDVdJzsKKy0tIGEgUEsgdXBkYXRlIHRoYXQgc3VjY2Vl ZHMgZXZlbiB0aG91Z2ggdGhlIG51bWVyaWMgaWQgaXMgcmVmZXJlbmNlZCBiZWNhdXNlIHRo ZSByYW5nZSBpc24ndDoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdb NSw1XSc7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTCisgICgnWzUsNV0nLCB0 c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKSksCisgICgnWzUsNV0nLCB0c3Jh bmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9ma19ybmcycm5nIFZBTFVFUyAoJ1szLDNdJywgdHNyYW5nZSgnMjAxOC0wMS0wNScsICcy MDE4LTAxLTEwJyksICdbNSw1XScpOworVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgdmFsaWRf YXQgPSB0c3JhbmdlKCcyMDE2LTAyLTAxJywgJzIwMTYtMDMtMDEnKQorV0hFUkUgaWQgPSAn WzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0w MScpOworLS0gYSBQSyB1cGRhdGUgdGhhdCBmYWlscyBiZWNhdXNlIGJvdGggYXJlIHJlZmVy ZW5jZWQ6CitVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIw MTYtMDEtMDEnLCAnMjAxNi0wMi0wMScpCitXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlk X2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CitFUlJPUjogIHVw ZGF0ZSBvciBkZWxldGUgb24gdGFibGUgInRlbXBvcmFsX3JuZyIgdmlvbGF0ZXMgZm9yZWln biBrZXkgY29uc3RyYWludCAidGVtcG9yYWxfZmtfcm5nMnJuZ19mayIgb24gdGFibGUgInRl bXBvcmFsX2ZrX3JuZzJybmciCitERVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9hdCk9KFs1LDYp LCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlRodSBGZWIgMDEgMDA6MDA6MDAgMjAx OCIpKSBpcyBzdGlsbCByZWZlcmVuY2VkIGZyb20gdGFibGUgInRlbXBvcmFsX2ZrX3JuZzJy bmciLgorLS0gY2hhbmdpbmcgdGhlIHNjYWxhciBwYXJ0IGZhaWxzOgorVVBEQVRFIHRlbXBv cmFsX3JuZyBTRVQgaWQgPSAnWzcsN10nCitXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlk X2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CitFUlJPUjogIHVw ZGF0ZSBvciBkZWxldGUgb24gdGFibGUgInRlbXBvcmFsX3JuZyIgdmlvbGF0ZXMgZm9yZWln biBrZXkgY29uc3RyYWludCAidGVtcG9yYWxfZmtfcm5nMnJuZ19mayIgb24gdGFibGUgInRl bXBvcmFsX2ZrX3JuZzJybmciCitERVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9hdCk9KFs1LDYp LCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlRodSBGZWIgMDEgMDA6MDA6MDAgMjAx OCIpKSBpcyBzdGlsbCByZWZlcmVuY2VkIGZyb20gdGFibGUgInRlbXBvcmFsX2ZrX3JuZzJy bmciLgorLS0gdGhlbiBkZWxldGUgdGhlIG9iamVjdGluZyBGSyByZWNvcmQgYW5kIHRoZSBz YW1lIFBLIHVwZGF0ZSBzdWNjZWVkczoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJy bmcgV0hFUkUgaWQgPSAnWzMsM10nOworVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgdmFsaWRf YXQgPSB0c3JhbmdlKCcyMDE2LTAxLTAxJywgJzIwMTYtMDItMDEnKQorV0hFUkUgaWQgPSAn WzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0w MScpOworLS0gY2xlYW4gdXA6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdI RVJFIHBhcmVudF9pZCA9ICdbNSw1XSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hF UkUgaWQgPSAnWzUsNV0nOworLS0KKy0tIHRlc3QgRksgcGFyZW50IHVwZGF0ZXMgUkVTVFJJ Q1QKKy0tCitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisJRFJPUCBDT05TVFJB SU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZms7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19y bmcycm5nCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19maworCUZPUkVJ R04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBv cmFsX3JuZworCU9OIFVQREFURSBSRVNUUklDVDsKKy0tIGEgUEsgdXBkYXRlIHRoYXQgc3Vj Y2VlZHMgYmVjYXVzZSB0aGUgbnVtZXJpYyBpZCBpc24ndCByZWZlcmVuY2VkOgorSU5TRVJU IElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s1LDVdJywgdHNyYW5nZSgnMjAxOC0wMS0w MScsICcyMDE4LTAyLTAxJykpOworVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgdmFsaWRfYXQg PSB0c3JhbmdlKCcyMDE2LTAxLTAxJywgJzIwMTYtMDItMDEnKSBXSEVSRSBpZCA9ICdbNSw1 XSc7CistLSBhIFBLIHVwZGF0ZSB0aGF0IHN1Y2NlZWRzIGV2ZW4gdGhvdWdoIHRoZSBudW1l cmljIGlkIGlzIHJlZmVyZW5jZWQgYmVjYXVzZSB0aGUgcmFuZ2UgaXNuJ3Q6CitERUxFVEUg RlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nOworSU5TRVJUIElOVE8gdGVt cG9yYWxfcm5nIFZBTFVFUworICAoJ1s1LDVdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcy MDE4LTAyLTAxJykpLAorICAoJ1s1LDVdJywgdHNyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4 LTAzLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdb MywzXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDUnLCAnMjAxOC0wMS0xMCcpLCAnWzUsNV0nKTsK K1VQREFURSB0ZW1wb3JhbF9ybmcgU0VUIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxNi0wMi0w MScsICcyMDE2LTAzLTAxJykKK1dIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0 c3JhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKTsKKy0tIGEgUEsgdXBkYXRlIHRo YXQgZmFpbHMgYmVjYXVzZSBib3RoIGFyZSByZWZlcmVuY2VkOgorVVBEQVRFIHRlbXBvcmFs X3JuZyBTRVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE2LTAxLTAxJywgJzIwMTYtMDItMDEn KQorV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEt MDEnLCAnMjAxOC0wMi0wMScpOworRVJST1I6ICB1cGRhdGUgb3IgZGVsZXRlIG9uIHRhYmxl ICJ0ZW1wb3JhbF9ybmciIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBv cmFsX2ZrX3JuZzJybmdfZmsiIG9uIHRhYmxlICJ0ZW1wb3JhbF9ma19ybmcycm5nIgorREVU QUlMOiAgS2V5IChpZCwgdmFsaWRfYXQpPShbNSw2KSwgWyJNb24gSmFuIDAxIDAwOjAwOjAw IDIwMTgiLCJUaHUgRmViIDAxIDAwOjAwOjAwIDIwMTgiKSkgaXMgc3RpbGwgcmVmZXJlbmNl ZCBmcm9tIHRhYmxlICJ0ZW1wb3JhbF9ma19ybmcycm5nIi4KKy0tIGNoYW5naW5nIHRoZSBz Y2FsYXIgcGFydCBmYWlsczoKK1VQREFURSB0ZW1wb3JhbF9ybmcgU0VUIGlkID0gJ1s3LDdd JworV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEt MDEnLCAnMjAxOC0wMi0wMScpOworRVJST1I6ICB1cGRhdGUgb3IgZGVsZXRlIG9uIHRhYmxl ICJ0ZW1wb3JhbF9ybmciIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBv cmFsX2ZrX3JuZzJybmdfZmsiIG9uIHRhYmxlICJ0ZW1wb3JhbF9ma19ybmcycm5nIgorREVU QUlMOiAgS2V5IChpZCwgdmFsaWRfYXQpPShbNSw2KSwgWyJNb24gSmFuIDAxIDAwOjAwOjAw IDIwMTgiLCJUaHUgRmViIDAxIDAwOjAwOjAwIDIwMTgiKSkgaXMgc3RpbGwgcmVmZXJlbmNl ZCBmcm9tIHRhYmxlICJ0ZW1wb3JhbF9ma19ybmcycm5nIi4KKy0tIHRoZW4gZGVsZXRlIHRo ZSBvYmplY3RpbmcgRksgcmVjb3JkIGFuZCB0aGUgc2FtZSBQSyB1cGRhdGUgc3VjY2VlZHM6 CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1szLDNdJzsK K1VQREFURSB0ZW1wb3JhbF9ybmcgU0VUIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxNi0wMS0w MScsICcyMDE2LTAyLTAxJykKK1dIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0 c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKKy0tIGNsZWFuIHVwOgorREVM RVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBwYXJlbnRfaWQgPSAnWzUsNV0n OworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsKKy0tCist LSB0ZXN0IEZLIHBhcmVudCBkZWxldGVzIE5PIEFDVElPTgorLS0KK0FMVEVSIFRBQkxFIHRl bXBvcmFsX2ZrX3JuZzJybmcKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJu Z19mazsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlBREQgQ09OU1RSQUlO VCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVS SU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nOworLS0gYSBQSyBkZWxl dGUgdGhhdCBzdWNjZWVkcyBiZWNhdXNlIHRoZSBudW1lcmljIGlkIGlzbid0IHJlZmVyZW5j ZWQ6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzUsNV0nLCB0c3Jhbmdl KCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKSk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9y bmcgV0hFUkUgaWQgPSAnWzUsNV0nOworLS0gYSBQSyBkZWxldGUgdGhhdCBzdWNjZWVkcyBl dmVuIHRob3VnaCB0aGUgbnVtZXJpYyBpZCBpcyByZWZlcmVuY2VkIGJlY2F1c2UgdGhlIHJh bmdlIGlzbid0OgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUworICAoJ1s1LDVd JywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykpLAorICAoJ1s1LDVdJywg dHNyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJykpOworSU5TRVJUIElOVE8gdGVt cG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMywzXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDUn LCAnMjAxOC0wMS0xMCcpLCAnWzUsNV0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBX SEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMi0wMScs ICcyMDE4LTAzLTAxJyk7CistLSBhIFBLIGRlbGV0ZSB0aGF0IGZhaWxzIGJlY2F1c2UgYm90 aCBhcmUgcmVmZXJlbmNlZDoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9 ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAy LTAxJyk7CitFUlJPUjogIHVwZGF0ZSBvciBkZWxldGUgb24gdGFibGUgInRlbXBvcmFsX3Ju ZyIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxfZmtfcm5nMnJu Z19mayIgb24gdGFibGUgInRlbXBvcmFsX2ZrX3JuZzJybmciCitERVRBSUw6ICBLZXkgKGlk LCB2YWxpZF9hdCk9KFs1LDYpLCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlRodSBG ZWIgMDEgMDA6MDA6MDAgMjAxOCIpKSBpcyBzdGlsbCByZWZlcmVuY2VkIGZyb20gdGFibGUg InRlbXBvcmFsX2ZrX3JuZzJybmciLgorLS0gdGhlbiBkZWxldGUgdGhlIG9iamVjdGluZyBG SyByZWNvcmQgYW5kIHRoZSBzYW1lIFBLIGRlbGV0ZSBzdWNjZWVkczoKK0RFTEVURSBGUk9N IHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzMsM10nOworREVMRVRFIEZST00g dGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3Jhbmdl KCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKKy0tCistLSB0ZXN0IEZLIHBhcmVudCBk ZWxldGVzIFJFU1RSSUNUCistLQorQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZwor CURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrOworQUxURVIgVEFCTEUg dGVtcG9yYWxfZmtfcm5nMnJuZworCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJy bmdfZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJUkVG RVJFTkNFUyB0ZW1wb3JhbF9ybmcKKwlPTiBERUxFVEUgUkVTVFJJQ1Q7CitJTlNFUlQgSU5U TyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywg JzIwMTgtMDItMDEnKSk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAn WzUsNV0nOworLS0gYSBQSyBkZWxldGUgdGhhdCBzdWNjZWVkcyBldmVuIHRob3VnaCB0aGUg bnVtZXJpYyBpZCBpcyByZWZlcmVuY2VkIGJlY2F1c2UgdGhlIHJhbmdlIGlzbid0OgorSU5T RVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUworICAoJ1s1LDVdJywgdHNyYW5nZSgnMjAx OC0wMS0wMScsICcyMDE4LTAyLTAxJykpLAorICAoJ1s1LDVdJywgdHNyYW5nZSgnMjAxOC0w Mi0wMScsICcyMDE4LTAzLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJu ZyBWQUxVRVMgKCdbMywzXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDUnLCAnMjAxOC0wMS0xMCcp LCAnWzUsNV0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1 XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJyk7 CistLSBhIFBLIGRlbGV0ZSB0aGF0IGZhaWxzIGJlY2F1c2UgYm90aCBhcmUgcmVmZXJlbmNl ZDoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZh bGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CitFUlJPUjog IHVwZGF0ZSBvciBkZWxldGUgb24gdGFibGUgInRlbXBvcmFsX3JuZyIgdmlvbGF0ZXMgZm9y ZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxfZmtfcm5nMnJuZ19mayIgb24gdGFibGUg InRlbXBvcmFsX2ZrX3JuZzJybmciCitERVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9hdCk9KFs1 LDYpLCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlRodSBGZWIgMDEgMDA6MDA6MDAg MjAxOCIpKSBpcyBzdGlsbCByZWZlcmVuY2VkIGZyb20gdGFibGUgInRlbXBvcmFsX2ZrX3Ju ZzJybmciLgorLS0gdGhlbiBkZWxldGUgdGhlIG9iamVjdGluZyBGSyByZWNvcmQgYW5kIHRo ZSBzYW1lIFBLIGRlbGV0ZSBzdWNjZWVkczoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3Ju ZzJybmcgV0hFUkUgaWQgPSAnWzMsM10nOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdI RVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywg JzIwMTgtMDItMDEnKTsKKy0tCistLSB0ZXN0IE9OIFVQREFURS9ERUxFVEUgb3B0aW9ucwor LS0KKy0tIHRlc3QgRksgcGFyZW50IHVwZGF0ZXMgQ0FTQ0FERQorSU5TRVJUIElOVE8gdGVt cG9yYWxfcm5nIFZBTFVFUyAoJ1s2LDZdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIx LTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdb NCw0XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzYsNl0nKTsK K0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlEUk9QIENPTlNUUkFJTlQgdGVt cG9yYWxfZmtfcm5nMnJuZ19maywKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcy cm5nX2ZrCisJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJ UkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcKKwkJT04gREVMRVRFIENBU0NBREUgT04gVVBEQVRF IENBU0NBREU7CitFUlJPUjogIGludmFsaWQgT04gREVMRVRFIGFjdGlvbiBmb3IgZm9yZWln biBrZXkgY29uc3RyYWludCB1c2luZyBQRVJJT0QKKy0tIHRlc3QgRksgcGFyZW50IHVwZGF0 ZXMgU0VUIE5VTEwKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbOSw5XScs IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRl bXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzYsNl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAx JywgJzIwMjEtMDEtMDEnKSwgJ1s5LDldJyk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19y bmcycm5nCisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmssCisJQURE IENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19maworCQlGT1JFSUdOIEtFWSAocGFy ZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nCisJ CU9OIERFTEVURSBTRVQgTlVMTCBPTiBVUERBVEUgU0VUIE5VTEw7CitFUlJPUjogIGludmFs aWQgT04gREVMRVRFIGFjdGlvbiBmb3IgZm9yZWlnbiBrZXkgY29uc3RyYWludCB1c2luZyBQ RVJJT0QKKy0tIHRlc3QgRksgcGFyZW50IHVwZGF0ZXMgU0VUIERFRkFVTFQKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbLTEsLTFdJywgdHNyYW5nZShudWxsLCBudWxs KSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzEyLDEyXScsIHRzcmFu Z2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFs X2ZrX3JuZzJybmcgVkFMVUVTICgnWzgsOF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIw MjEtMDEtMDEnKSwgJ1sxMiwxMl0nKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJy bmcKKyAgQUxURVIgQ09MVU1OIHBhcmVudF9pZCBTRVQgREVGQVVMVCAnWy0xLC0xXScsCisJ RFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmssCisJQUREIENPTlNUUkFJ TlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19maworCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQ RVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nCisJCU9OIERFTEVU RSBTRVQgREVGQVVMVCBPTiBVUERBVEUgU0VUIERFRkFVTFQ7CitFUlJPUjogIGludmFsaWQg T04gREVMRVRFIGFjdGlvbiBmb3IgZm9yZWlnbiBrZXkgY29uc3RyYWludCB1c2luZyBQRVJJ T0QKKy0tCistLSB0ZXN0IEZPUkVJR04gS0VZLCBtdWx0aXJhbmdlIHJlZmVyZW5jZXMgbXVs dGlyYW5nZQorLS0KKy0tIENhbid0IGNyZWF0ZSBhIEZLIHdpdGggYSBtaXNtYXRjaGVkIG11 bHRpcmFuZ2UgdHlwZQorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmcg KAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCBpbnQ0bXVsdGlyYW5nZSwKKwlwYXJlbnRf aWQgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfbWx0cm5nMm1sdHJuZ19w azIgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKSwKKwlDT05T VFJBSU5UIHRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmdfZmsyIEZPUkVJR04gS0VZIChwYXJl bnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9tbHRybmcg KGlkLCBQRVJJT0QgdmFsaWRfYXQpCispOworRVJST1I6ICBmb3JlaWduIGtleSBjb25zdHJh aW50ICJ0ZW1wb3JhbF9ma19tbHRybmcybWx0cm5nX2ZrMiIgY2Fubm90IGJlIGltcGxlbWVu dGVkCitERVRBSUw6ICBLZXkgY29sdW1ucyAidmFsaWRfYXQiIGFuZCAidmFsaWRfYXQiIGFy ZSBvZiBpbmNvbXBhdGlibGUgdHlwZXM6IGludDRtdWx0aXJhbmdlIGFuZCBkYXRlbXVsdGly YW5nZS4KK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ma19tbHRybmcybWx0cm5nICgKKwlpZCBp bnQ0cmFuZ2UsCisJdmFsaWRfYXQgZGF0ZW11bHRpcmFuZ2UsCisJcGFyZW50X2lkIGludDRy YW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmdfcGsgUFJJTUFS WSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKSwKKwlDT05TVFJBSU5UIHRl bXBvcmFsX2ZrX21sdHJuZzJtbHRybmdfZmsgRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVS SU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX21sdHJuZyAoaWQsIFBFUklP RCB2YWxpZF9hdCkKKyk7CitEUk9QIFRBQkxFIHRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmc7 CistLSB3aXRoIG1pc21hdGNoZWQgUEVSSU9EIGNvbHVtbnM6CistLSAocGFyZW50X2lkLCBQ RVJJT0QgdmFsaWRfYXQpIFJFRkVSRU5DRVMgKGlkLCB2YWxpZF9hdCkKK0NSRUFURSBUQUJM RSB0ZW1wb3JhbF9ma19tbHRybmcybWx0cm5nICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRf YXQgZGF0ZW11bHRpcmFuZ2UsCisJcGFyZW50X2lkIGludDRyYW5nZSwKKwlDT05TVFJBSU5U IHRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9h dCBXSVRIT1VUIE9WRVJMQVBTKSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX21sdHJuZzJt bHRybmdfZmsgRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlS RUZFUkVOQ0VTIHRlbXBvcmFsX21sdHJuZyAoaWQsIHZhbGlkX2F0KQorKTsKK0VSUk9SOiAg Zm9yZWlnbiBrZXkgdXNlcyBQRVJJT0Qgb24gdGhlIHJlZmVyZW5jaW5nIHRhYmxlIGJ1dCBu b3QgdGhlIHJlZmVyZW5jZWQgdGFibGUKKy0tIChwYXJlbnRfaWQsIHZhbGlkX2F0KSBSRUZF UkVOQ0VTIChpZCwgUEVSSU9EIHZhbGlkX2F0KQorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX2Zr X21sdHJuZzJtbHRybmcgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCBkYXRlbXVsdGly YW5nZSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtf bWx0cm5nMm1sdHJuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZF UkxBUFMpLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfbWx0cm5nMm1sdHJuZ19mayBGT1JF SUdOIEtFWSAocGFyZW50X2lkLCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9t bHRybmcgKGlkLCBQRVJJT0QgdmFsaWRfYXQpCispOworRVJST1I6ICBmb3JlaWduIGtleSB1 c2VzIFBFUklPRCBvbiB0aGUgcmVmZXJlbmNlZCB0YWJsZSBidXQgbm90IHRoZSByZWZlcmVu Y2luZyB0YWJsZQorLS0gKHBhcmVudF9pZCwgdmFsaWRfYXQpIFJFRkVSRU5DRVMgW2ltcGxp Y2l0XQorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmcgKAorCWlkIGlu dDRyYW5nZSwKKwl2YWxpZF9hdCBkYXRlbXVsdGlyYW5nZSwKKwlwYXJlbnRfaWQgaW50NHJh bmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfbWx0cm5nMm1sdHJuZ19wayBQUklNQVJZ IEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpLAorCUNPTlNUUkFJTlQgdGVt cG9yYWxfZmtfbWx0cm5nMm1sdHJuZ19mayBGT1JFSUdOIEtFWSAocGFyZW50X2lkLCB2YWxp ZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9tbHRybmcKKyk7CitFUlJPUjogIGZvcmVp Z24ga2V5IHVzZXMgUEVSSU9EIG9uIHRoZSByZWZlcmVuY2VkIHRhYmxlIGJ1dCBub3QgdGhl IHJlZmVyZW5jaW5nIHRhYmxlCistLSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpIFJF RkVSRU5DRVMgKGlkKQorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmcg KAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCBkYXRlbXVsdGlyYW5nZSwKKwlwYXJlbnRf aWQgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfbWx0cm5nMm1sdHJuZ19w ayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpLAorCUNPTlNU UkFJTlQgdGVtcG9yYWxfZmtfbWx0cm5nMm1sdHJuZ19mayBGT1JFSUdOIEtFWSAocGFyZW50 X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfbWx0cm5nIChp ZCkKKyk7CitFUlJPUjogIGZvcmVpZ24ga2V5IHVzZXMgUEVSSU9EIG9uIHRoZSByZWZlcmVu Y2luZyB0YWJsZSBidXQgbm90IHRoZSByZWZlcmVuY2VkIHRhYmxlCistLSAocGFyZW50X2lk KSBSRUZFUkVOQ0VTIChpZCwgUEVSSU9EIHZhbGlkX2F0KQorQ1JFQVRFIFRBQkxFIHRlbXBv cmFsX2ZrX21sdHJuZzJtbHRybmcgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCBkYXRl bXVsdGlyYW5nZSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9y YWxfZmtfbWx0cm5nMm1sdHJuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhP VVQgT1ZFUkxBUFMpLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfbWx0cm5nMm1sdHJuZ19m ayBGT1JFSUdOIEtFWSAocGFyZW50X2lkKQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX21sdHJu ZyAoaWQsIFBFUklPRCB2YWxpZF9hdCkKKyk7CitFUlJPUjogIGZvcmVpZ24ga2V5IHVzZXMg UEVSSU9EIG9uIHRoZSByZWZlcmVuY2VkIHRhYmxlIGJ1dCBub3QgdGhlIHJlZmVyZW5jaW5n IHRhYmxlCistLSB3aXRoIGluZmVycmVkIFBLIG9uIHRoZSByZWZlcmVuY2VkIHRhYmxlOgor Q1JFQVRFIFRBQkxFIHRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmcgKAorCWlkIGludDRyYW5n ZSwKKwl2YWxpZF9hdCBkYXRlbXVsdGlyYW5nZSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAor CUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfbWx0cm5nMm1sdHJuZ19wayBQUklNQVJZIEtFWSAo aWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxf ZmtfbWx0cm5nMm1sdHJuZ19mayBGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFs aWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfbWx0cm5nCispOworRFJPUCBUQUJMRSB0 ZW1wb3JhbF9ma19tbHRybmcybWx0cm5nOworLS0gc2hvdWxkIGZhaWwgYmVjYXVzZSBvZiBk dXBsaWNhdGUgcmVmZXJlbmNlZCBjb2x1bW5zOgorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX2Zr X21sdHJuZzJtbHRybmcgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCBkYXRlbXVsdGly YW5nZSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtf bWx0cm5nMm1sdHJuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZF UkxBUFMpLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfbWx0cm5nMm1sdHJuZ19mayBGT1JF SUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgcGFyZW50X2lkKQorCQlSRUZFUkVOQ0VTIHRl bXBvcmFsX21sdHJuZyAoaWQsIFBFUklPRCBpZCkKKyk7CitFUlJPUjogIGZvcmVpZ24ga2V5 IHJlZmVyZW5jZWQtY29sdW1ucyBsaXN0IG11c3Qgbm90IGNvbnRhaW4gZHVwbGljYXRlcwor LS0gVHdvIHNjYWxhciBjb2x1bW5zCitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfZmsyX21sdHJu ZzJtbHRybmcgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCBkYXRlbXVsdGlyYW5nZSwK KwlwYXJlbnRfaWQxIGludDRyYW5nZSwKKwlwYXJlbnRfaWQyIGludDRyYW5nZSwKKwlDT05T VFJBSU5UIHRlbXBvcmFsX2ZrMl9tbHRybmcybWx0cm5nX3BrIFBSSU1BUlkgS0VZIChpZCwg dmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyksCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9mazJf bWx0cm5nMm1sdHJuZ19mayBGT1JFSUdOIEtFWSAocGFyZW50X2lkMSwgcGFyZW50X2lkMiwg UEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX21sdHJuZzIgKGlkMSwg aWQyLCBQRVJJT0QgdmFsaWRfYXQpCispOworXGQgdGVtcG9yYWxfZmsyX21sdHJuZzJtbHRy bmcKKyAgICAgICAgICBUYWJsZSAicHVibGljLnRlbXBvcmFsX2ZrMl9tbHRybmcybWx0cm5n IgorICAgQ29sdW1uICAgfCAgICAgIFR5cGUgICAgICB8IENvbGxhdGlvbiB8IE51bGxhYmxl IHwgRGVmYXVsdCAKKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0rLS0tLS0tLS0tCisgaWQgICAgICAgICB8IGludDRyYW5nZSAgICAgIHwg ICAgICAgICAgIHwgbm90IG51bGwgfCAKKyB2YWxpZF9hdCAgIHwgZGF0ZW11bHRpcmFuZ2Ug fCAgICAgICAgICAgfCBub3QgbnVsbCB8IAorIHBhcmVudF9pZDEgfCBpbnQ0cmFuZ2UgICAg ICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCisgcGFyZW50X2lkMiB8IGludDRyYW5nZSAg ICAgIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKK0luZGV4ZXM6CisgICAgInRlbXBvcmFs X2ZrMl9tbHRybmcybWx0cm5nX3BrIiBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhP VVQgT1ZFUkxBUFMpCitGb3JlaWduLWtleSBjb25zdHJhaW50czoKKyAgICAidGVtcG9yYWxf ZmsyX21sdHJuZzJtbHRybmdfZmsiIEZPUkVJR04gS0VZIChwYXJlbnRfaWQxLCBwYXJlbnRf aWQyLCBQRVJJT0QgdmFsaWRfYXQpIFJFRkVSRU5DRVMgdGVtcG9yYWxfbWx0cm5nMihpZDEs IGlkMiwgUEVSSU9EIHZhbGlkX2F0KQorCitEUk9QIFRBQkxFIHRlbXBvcmFsX2ZrMl9tbHRy bmcybWx0cm5nOworLS0KKy0tIHRlc3QgQUxURVIgVEFCTEUgQUREIENPTlNUUkFJTlQKKy0t CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfZmtfbWx0cm5nMm1sdHJuZyAoCisJaWQgaW50NHJh bmdlLAorCXZhbGlkX2F0IGRhdGVtdWx0aXJhbmdlLAorCXBhcmVudF9pZCBpbnQ0cmFuZ2Us CisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19tbHRybmcybWx0cm5nX3BrIFBSSU1BUlkgS0VZ IChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CitBTFRFUiBUQUJMRSB0ZW1w b3JhbF9ma19tbHRybmcybWx0cm5nCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfbWx0 cm5nMm1sdHJuZ19maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9h dCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX21sdHJuZyAoaWQsIFBFUklPRCB2YWxpZF9hdCk7 CistLSBUd28gc2NhbGFyIGNvbHVtbnM6CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfZmsyX21s dHJuZzJtbHRybmcgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCBkYXRlbXVsdGlyYW5n ZSwKKwlwYXJlbnRfaWQxIGludDRyYW5nZSwKKwlwYXJlbnRfaWQyIGludDRyYW5nZSwKKwlD T05TVFJBSU5UIHRlbXBvcmFsX2ZrMl9tbHRybmcybWx0cm5nX3BrIFBSSU1BUlkgS0VZIChp ZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CitBTFRFUiBUQUJMRSB0ZW1wb3Jh bF9mazJfbWx0cm5nMm1sdHJuZworCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrMl9tbHRy bmcybWx0cm5nX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZDEsIHBhcmVudF9pZDIsIFBF UklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX21sdHJuZzIgKGlkMSwgaWQy LCBQRVJJT0QgdmFsaWRfYXQpOworXGQgdGVtcG9yYWxfZmsyX21sdHJuZzJtbHRybmcKKyAg ICAgICAgICBUYWJsZSAicHVibGljLnRlbXBvcmFsX2ZrMl9tbHRybmcybWx0cm5nIgorICAg Q29sdW1uICAgfCAgICAgIFR5cGUgICAgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgRGVm YXVsdCAKKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0rLS0tLS0tLS0tCisgaWQgICAgICAgICB8IGludDRyYW5nZSAgICAgIHwgICAgICAg ICAgIHwgbm90IG51bGwgfCAKKyB2YWxpZF9hdCAgIHwgZGF0ZW11bHRpcmFuZ2UgfCAgICAg ICAgICAgfCBub3QgbnVsbCB8IAorIHBhcmVudF9pZDEgfCBpbnQ0cmFuZ2UgICAgICB8ICAg ICAgICAgICB8ICAgICAgICAgIHwgCisgcGFyZW50X2lkMiB8IGludDRyYW5nZSAgICAgIHwg ICAgICAgICAgIHwgICAgICAgICAgfCAKK0luZGV4ZXM6CisgICAgInRlbXBvcmFsX2ZrMl9t bHRybmcybWx0cm5nX3BrIiBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZF UkxBUFMpCitGb3JlaWduLWtleSBjb25zdHJhaW50czoKKyAgICAidGVtcG9yYWxfZmsyX21s dHJuZzJtbHRybmdfZmsiIEZPUkVJR04gS0VZIChwYXJlbnRfaWQxLCBwYXJlbnRfaWQyLCBQ RVJJT0QgdmFsaWRfYXQpIFJFRkVSRU5DRVMgdGVtcG9yYWxfbWx0cm5nMihpZDEsIGlkMiwg UEVSSU9EIHZhbGlkX2F0KQorCistLSB3aXRoIGluZmVycmVkIFBLIG9uIHRoZSByZWZlcmVu Y2VkIHRhYmxlLCBhbmQgd3JvbmcgY29sdW1uIHR5cGU6CitBTFRFUiBUQUJMRSB0ZW1wb3Jh bF9ma19tbHRybmcybWx0cm5nCisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX21sdHJu ZzJtbHRybmdfZmssCisJQUxURVIgQ09MVU1OIHZhbGlkX2F0IFRZUEUgdHNtdWx0aXJhbmdl IFVTSU5HICd7fSc6OnRzbXVsdGlyYW5nZTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX21s dHJuZzJtbHRybmcKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19tbHRybmcybWx0cm5n X2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVS RU5DRVMgdGVtcG9yYWxfbWx0cm5nOworRVJST1I6ICBmb3JlaWduIGtleSBjb25zdHJhaW50 ICJ0ZW1wb3JhbF9ma19tbHRybmcybWx0cm5nX2ZrIiBjYW5ub3QgYmUgaW1wbGVtZW50ZWQK K0RFVEFJTDogIEtleSBjb2x1bW5zICJ2YWxpZF9hdCIgYW5kICJ2YWxpZF9hdCIgYXJlIG9m IGluY29tcGF0aWJsZSB0eXBlczogdHNtdWx0aXJhbmdlIGFuZCBkYXRlbXVsdGlyYW5nZS4K K0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmcKKwlBTFRFUiBDT0xVTU4g dmFsaWRfYXQgVFlQRSBkYXRlbXVsdGlyYW5nZSBVU0lORyAne30nOjpkYXRlbXVsdGlyYW5n ZTsKKy0tIHdpdGggaW5mZXJyZWQgUEsgb24gdGhlIHJlZmVyZW5jZWQgdGFibGU6CitBTFRF UiBUQUJMRSB0ZW1wb3JhbF9ma19tbHRybmcybWx0cm5nCisJQUREIENPTlNUUkFJTlQgdGVt cG9yYWxfZmtfbWx0cm5nMm1sdHJuZ19maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBF UklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX21sdHJuZzsKKy0tIHNob3Vs ZCBmYWlsIGJlY2F1c2Ugb2YgZHVwbGljYXRlIHJlZmVyZW5jZWQgY29sdW1uczoKK0FMVEVS IFRBQkxFIHRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmcKKwlBREQgQ09OU1RSQUlOVCB0ZW1w b3JhbF9ma19tbHRybmcybWx0cm5nX2ZrMgorCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBF UklPRCBwYXJlbnRfaWQpCisJUkVGRVJFTkNFUyB0ZW1wb3JhbF9tbHRybmcgKGlkLCBQRVJJ T0QgaWQpOworRVJST1I6ICBmb3JlaWduIGtleSByZWZlcmVuY2VkLWNvbHVtbnMgbGlzdCBt dXN0IG5vdCBjb250YWluIGR1cGxpY2F0ZXMKKy0tCistLSB0ZXN0IHdpdGggcm93cyBhbHJl YWR5CistLQorREVMRVRFIEZST00gdGVtcG9yYWxfZmtfbWx0cm5nMm1sdHJuZzsKK0FMVEVS IFRBQkxFIHRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmcKKwlEUk9QIENPTlNUUkFJTlQgdGVt cG9yYWxfZmtfbWx0cm5nMm1sdHJuZ19mazsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX21s dHJuZzJtbHRybmcgVkFMVUVTICgnWzEsMV0nLCBkYXRlbXVsdGlyYW5nZShkYXRlcmFuZ2Uo JzIwMTgtMDEtMDInLCAnMjAxOC0wMi0wMScpKSwgJ1sxLDFdJyk7CitBTFRFUiBUQUJMRSB0 ZW1wb3JhbF9ma19tbHRybmcybWx0cm5nCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtf bWx0cm5nMm1sdHJuZ19maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxp ZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX21sdHJuZzsKK0FMVEVSIFRBQkxFIHRlbXBv cmFsX2ZrX21sdHJuZzJtbHRybmcKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfbWx0 cm5nMm1sdHJuZ19mazsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmcg VkFMVUVTICgnWzIsMl0nLCBkYXRlbXVsdGlyYW5nZShkYXRlcmFuZ2UoJzIwMTgtMDEtMDIn LCAnMjAxOC0wNC0wMScpKSwgJ1sxLDFdJyk7CistLSBzaG91bGQgZmFpbDoKK0FMVEVSIFRB QkxFIHRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmcKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3Jh bF9ma19tbHRybmcybWx0cm5nX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9E IHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgdGVtcG9yYWxfbWx0cm5nOworRVJST1I6ICBpbnNl cnQgb3IgdXBkYXRlIG9uIHRhYmxlICJ0ZW1wb3JhbF9ma19tbHRybmcybWx0cm5nIiB2aW9s YXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9ma19tbHRybmcybWx0cm5n X2ZrIgorREVUQUlMOiAgS2V5IChwYXJlbnRfaWQsIHZhbGlkX2F0KT0oWzEsMiksIHtbMDEt MDItMjAxOCwwNC0wMS0yMDE4KX0pIGlzIG5vdCBwcmVzZW50IGluIHRhYmxlICJ0ZW1wb3Jh bF9tbHRybmciLgorLS0gb2theSBhZ2FpbjoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX21s dHJuZzJtbHRybmc7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19tbHRybmcybWx0cm5nCisJ QUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfbWx0cm5nMm1sdHJuZ19maworCUZPUkVJR04g S0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFs X21sdHJuZzsKKy0tCistLSB0ZXN0IHBnX2dldF9jb25zdHJhaW50ZGVmCistLQorU0VMRUNU IHBnX2dldF9jb25zdHJhaW50ZGVmKG9pZCkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNv bm5hbWUgPSAndGVtcG9yYWxfZmtfbWx0cm5nMm1sdHJuZ19mayc7CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF9jb25zdHJhaW50ZGVmICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkgUkVG RVJFTkNFUyB0ZW1wb3JhbF9tbHRybmcoaWQsIFBFUklPRCB2YWxpZF9hdCkKKygxIHJvdykK KworLS0KKy0tIHRlc3QgRksgY2hpbGQgaW5zZXJ0cworLS0KK0lOU0VSVCBJTlRPIHRlbXBv cmFsX2ZrX21sdHJuZzJtbHRybmcgVkFMVUVTICgnWzEsMV0nLCBkYXRlbXVsdGlyYW5nZShk YXRlcmFuZ2UoJzIwMTgtMDEtMDInLCAnMjAxOC0wMi0wMScpKSwgJ1sxLDFdJyk7CistLSBz aG91bGQgZmFpbDoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmcgVkFM VUVTICgnWzIsMl0nLCBkYXRlbXVsdGlyYW5nZShkYXRlcmFuZ2UoJzIwMTgtMDEtMDInLCAn MjAxOC0wNC0wMScpKSwgJ1sxLDFdJyk7CitFUlJPUjogIGluc2VydCBvciB1cGRhdGUgb24g dGFibGUgInRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmciIHZpb2xhdGVzIGZvcmVpZ24ga2V5 IGNvbnN0cmFpbnQgInRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmdfZmsiCitERVRBSUw6ICBL ZXkgKHBhcmVudF9pZCwgdmFsaWRfYXQpPShbMSwyKSwge1swMS0wMi0yMDE4LDA0LTAxLTIw MTgpfSkgaXMgbm90IHByZXNlbnQgaW4gdGFibGUgInRlbXBvcmFsX21sdHJuZyIuCistLSBu b3cgaXQgc2hvdWxkIHdvcms6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9tbHRybmcgVkFMVUVT ICgnWzEsMV0nLCBkYXRlbXVsdGlyYW5nZShkYXRlcmFuZ2UoJzIwMTgtMDItMDMnLCAnMjAx OC0wMy0wMycpKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19tbHRybmcybWx0cm5nIFZB TFVFUyAoJ1syLDJdJywgZGF0ZW11bHRpcmFuZ2UoZGF0ZXJhbmdlKCcyMDE4LTAxLTAyJywg JzIwMTgtMDQtMDEnKSksICdbMSwxXScpOworLS0KKy0tIHRlc3QgRksgY2hpbGQgdXBkYXRl cworLS0KK1VQREFURSB0ZW1wb3JhbF9ma19tbHRybmcybWx0cm5nIFNFVCB2YWxpZF9hdCA9 IGRhdGVtdWx0aXJhbmdlKGRhdGVyYW5nZSgnMjAxOC0wMS0wMicsICcyMDE4LTAzLTAxJykp IFdIRVJFIGlkID0gJ1sxLDFdJzsKKy0tIHNob3VsZCBmYWlsOgorVVBEQVRFIHRlbXBvcmFs X2ZrX21sdHJuZzJtbHRybmcgU0VUIHZhbGlkX2F0ID0gZGF0ZW11bHRpcmFuZ2UoZGF0ZXJh bmdlKCcyMDE4LTAxLTAyJywgJzIwMTgtMDUtMDEnKSkgV0hFUkUgaWQgPSAnWzEsMV0nOwor RVJST1I6ICBpbnNlcnQgb3IgdXBkYXRlIG9uIHRhYmxlICJ0ZW1wb3JhbF9ma19tbHRybmcy bWx0cm5nIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9ma19t bHRybmcybWx0cm5nX2ZrIgorREVUQUlMOiAgS2V5IChwYXJlbnRfaWQsIHZhbGlkX2F0KT0o WzEsMiksIHtbMDEtMDItMjAxOCwwNS0wMS0yMDE4KX0pIGlzIG5vdCBwcmVzZW50IGluIHRh YmxlICJ0ZW1wb3JhbF9tbHRybmciLgorVVBEQVRFIHRlbXBvcmFsX2ZrX21sdHJuZzJtbHRy bmcgU0VUIHBhcmVudF9pZCA9ICdbOCw4XScgV0hFUkUgaWQgPSAnWzEsMV0nOworRVJST1I6 ICBpbnNlcnQgb3IgdXBkYXRlIG9uIHRhYmxlICJ0ZW1wb3JhbF9ma19tbHRybmcybWx0cm5n IiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9ma19tbHRybmcy bWx0cm5nX2ZrIgorREVUQUlMOiAgS2V5IChwYXJlbnRfaWQsIHZhbGlkX2F0KT0oWzgsOSks IHtbMDEtMDItMjAxOCwwMy0wMS0yMDE4KX0pIGlzIG5vdCBwcmVzZW50IGluIHRhYmxlICJ0 ZW1wb3JhbF9tbHRybmciLgorLS0gQUxURVIgRksgREVGRVJSQUJMRQorQkVHSU47CisgIElO U0VSVCBJTlRPIHRlbXBvcmFsX21sdHJuZyBWQUxVRVMKKyAgICAoJ1s1LDVdJywgZGF0ZW11 bHRpcmFuZ2UoZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKSkpLAorICAg ICgnWzUsNV0nLCBkYXRlbXVsdGlyYW5nZShkYXRlcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAx OC0wMy0wMScpKSk7CisgIElOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmcg VkFMVUVTCisgICAgKCdbMywzXScsIGRhdGVtdWx0aXJhbmdlKGRhdGVyYW5nZSgnMjAxOC0w MS0wNScsICcyMDE4LTAxLTEwJykpLCAnWzUsNV0nKTsKKyAgQUxURVIgVEFCTEUgdGVtcG9y YWxfZmtfbWx0cm5nMm1sdHJuZworICAgIEFMVEVSIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtf bWx0cm5nMm1sdHJuZ19maworICAgIERFRkVSUkFCTEUgSU5JVElBTExZIERFRkVSUkVEOwor ICBERUxFVEUgRlJPTSB0ZW1wb3JhbF9tbHRybmcgV0hFUkUgaWQgPSAnWzUsNV0nOyAtLXNo b3VsZCBub3QgZmFpbCB5ZXQuCitDT01NSVQ7IC0tIHNob3VsZCBmYWlsIGhlcmUuCitFUlJP UjogIHVwZGF0ZSBvciBkZWxldGUgb24gdGFibGUgInRlbXBvcmFsX21sdHJuZyIgdmlvbGF0 ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxfZmtfbWx0cm5nMm1sdHJuZ19m ayIgb24gdGFibGUgInRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmciCitERVRBSUw6ICBLZXkg KGlkLCB2YWxpZF9hdCk9KFs1LDYpLCB7WzAxLTAxLTIwMTgsMDItMDEtMjAxOCl9KSBpcyBz dGlsbCByZWZlcmVuY2VkIGZyb20gdGFibGUgInRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmci LgorLS0KKy0tIHRlc3QgRksgcGFyZW50IHVwZGF0ZXMgTk8gQUNUSU9OCistLQorLS0gYSBQ SyB1cGRhdGUgdGhhdCBzdWNjZWVkcyBiZWNhdXNlIHRoZSBudW1lcmljIGlkIGlzbid0IHJl ZmVyZW5jZWQ6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9tbHRybmcgVkFMVUVTICgnWzUsNV0n LCBkYXRlbXVsdGlyYW5nZShkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScp KSk7CitVUERBVEUgdGVtcG9yYWxfbWx0cm5nIFNFVCB2YWxpZF9hdCA9IGRhdGVtdWx0aXJh bmdlKGRhdGVyYW5nZSgnMjAxNi0wMS0wMScsICcyMDE2LTAyLTAxJykpIFdIRVJFIGlkID0g J1s1LDVdJzsKKy0tIGEgUEsgdXBkYXRlIHRoYXQgc3VjY2VlZHMgZXZlbiB0aG91Z2ggdGhl IG51bWVyaWMgaWQgaXMgcmVmZXJlbmNlZCBiZWNhdXNlIHRoZSByYW5nZSBpc24ndDoKK0RF TEVURSBGUk9NIHRlbXBvcmFsX21sdHJuZyBXSEVSRSBpZCA9ICdbNSw1XSc7CitJTlNFUlQg SU5UTyB0ZW1wb3JhbF9tbHRybmcgVkFMVUVTCisgICgnWzUsNV0nLCBkYXRlbXVsdGlyYW5n ZShkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKSksCisgICgnWzUsNV0n LCBkYXRlbXVsdGlyYW5nZShkYXRlcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScp KSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19tbHRybmcybWx0cm5nIFZBTFVFUyAoJ1sz LDNdJywgZGF0ZW11bHRpcmFuZ2UoZGF0ZXJhbmdlKCcyMDE4LTAxLTA1JywgJzIwMTgtMDEt MTAnKSksICdbNSw1XScpOworVVBEQVRFIHRlbXBvcmFsX21sdHJuZyBTRVQgdmFsaWRfYXQg PSBkYXRlbXVsdGlyYW5nZShkYXRlcmFuZ2UoJzIwMTYtMDItMDEnLCAnMjAxNi0wMy0wMScp KQorV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IGRhdGVtdWx0aXJhbmdlKGRh dGVyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJykpOworLS0gYSBQSyB1cGRhdGUg dGhhdCBmYWlscyBiZWNhdXNlIGJvdGggYXJlIHJlZmVyZW5jZWQ6CitVUERBVEUgdGVtcG9y YWxfbWx0cm5nIFNFVCB2YWxpZF9hdCA9IGRhdGVtdWx0aXJhbmdlKGRhdGVyYW5nZSgnMjAx Ni0wMS0wMScsICcyMDE2LTAyLTAxJykpCitXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlk X2F0ID0gZGF0ZW11bHRpcmFuZ2UoZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDIt MDEnKSk7CitFUlJPUjogIHVwZGF0ZSBvciBkZWxldGUgb24gdGFibGUgInRlbXBvcmFsX21s dHJuZyIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxfZmtfbWx0 cm5nMm1sdHJuZ19mayIgb24gdGFibGUgInRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmciCitE RVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9hdCk9KFs1LDYpLCB7WzAxLTAxLTIwMTgsMDItMDEt MjAxOCl9KSBpcyBzdGlsbCByZWZlcmVuY2VkIGZyb20gdGFibGUgInRlbXBvcmFsX2ZrX21s dHJuZzJtbHRybmciLgorLS0gY2hhbmdpbmcgdGhlIHNjYWxhciBwYXJ0IGZhaWxzOgorVVBE QVRFIHRlbXBvcmFsX21sdHJuZyBTRVQgaWQgPSAnWzcsN10nCitXSEVSRSBpZCA9ICdbNSw1 XScgQU5EIHZhbGlkX2F0ID0gZGF0ZW11bHRpcmFuZ2UoZGF0ZXJhbmdlKCcyMDE4LTAxLTAx JywgJzIwMTgtMDItMDEnKSk7CitFUlJPUjogIHVwZGF0ZSBvciBkZWxldGUgb24gdGFibGUg InRlbXBvcmFsX21sdHJuZyIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVt cG9yYWxfZmtfbWx0cm5nMm1sdHJuZ19mayIgb24gdGFibGUgInRlbXBvcmFsX2ZrX21sdHJu ZzJtbHRybmciCitERVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9hdCk9KFs1LDYpLCB7WzAxLTAx LTIwMTgsMDItMDEtMjAxOCl9KSBpcyBzdGlsbCByZWZlcmVuY2VkIGZyb20gdGFibGUgInRl bXBvcmFsX2ZrX21sdHJuZzJtbHRybmciLgorLS0gY2xlYW4gdXA6CitERUxFVEUgRlJPTSB0 ZW1wb3JhbF9ma19tbHRybmcybWx0cm5nIFdIRVJFIHBhcmVudF9pZCA9ICdbNSw1XSc7CitE RUxFVEUgRlJPTSB0ZW1wb3JhbF9tbHRybmcgV0hFUkUgaWQgSU4gKCdbNSw1XScsICdbNyw3 XScpOworLS0KKy0tIHRlc3QgRksgcGFyZW50IHVwZGF0ZXMgUkVTVFJJQ1QKKy0tCitBTFRF UiBUQUJMRSB0ZW1wb3JhbF9ma19tbHRybmcybWx0cm5nCisJRFJPUCBDT05TVFJBSU5UIHRl bXBvcmFsX2ZrX21sdHJuZzJtbHRybmdfZms7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19t bHRybmcybWx0cm5nCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfbWx0cm5nMm1sdHJu Z19maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZF UkVOQ0VTIHRlbXBvcmFsX21sdHJuZworCU9OIFVQREFURSBSRVNUUklDVDsKKy0tIGEgUEsg dXBkYXRlIHRoYXQgc3VjY2VlZHMgYmVjYXVzZSB0aGUgbnVtZXJpYyBpZCBpc24ndCByZWZl cmVuY2VkOgorSU5TRVJUIElOVE8gdGVtcG9yYWxfbWx0cm5nIFZBTFVFUyAoJ1s1LDVdJywg ZGF0ZW11bHRpcmFuZ2UoZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKSkp OworVVBEQVRFIHRlbXBvcmFsX21sdHJuZyBTRVQgdmFsaWRfYXQgPSBkYXRlbXVsdGlyYW5n ZShkYXRlcmFuZ2UoJzIwMTYtMDEtMDEnLCAnMjAxNi0wMi0wMScpKSBXSEVSRSBpZCA9ICdb NSw1XSc7CistLSBhIFBLIHVwZGF0ZSB0aGF0IHN1Y2NlZWRzIGV2ZW4gdGhvdWdoIHRoZSBu dW1lcmljIGlkIGlzIHJlZmVyZW5jZWQgYmVjYXVzZSB0aGUgcmFuZ2UgaXNuJ3Q6CitERUxF VEUgRlJPTSB0ZW1wb3JhbF9tbHRybmcgV0hFUkUgaWQgPSAnWzUsNV0nOworSU5TRVJUIElO VE8gdGVtcG9yYWxfbWx0cm5nIFZBTFVFUworICAoJ1s1LDVdJywgZGF0ZW11bHRpcmFuZ2Uo ZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKSkpLAorICAoJ1s1LDVdJywg ZGF0ZW11bHRpcmFuZ2UoZGF0ZXJhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKSkp OworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfbWx0cm5nMm1sdHJuZyBWQUxVRVMgKCdbMywz XScsIGRhdGVtdWx0aXJhbmdlKGRhdGVyYW5nZSgnMjAxOC0wMS0wNScsICcyMDE4LTAxLTEw JykpLCAnWzUsNV0nKTsKK1VQREFURSB0ZW1wb3JhbF9tbHRybmcgU0VUIHZhbGlkX2F0ID0g ZGF0ZW11bHRpcmFuZ2UoZGF0ZXJhbmdlKCcyMDE2LTAyLTAxJywgJzIwMTYtMDMtMDEnKSkK K1dIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRlbXVsdGlyYW5nZShkYXRl cmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpKTsKKy0tIGEgUEsgdXBkYXRlIHRo YXQgZmFpbHMgYmVjYXVzZSBib3RoIGFyZSByZWZlcmVuY2VkOgorVVBEQVRFIHRlbXBvcmFs X21sdHJuZyBTRVQgdmFsaWRfYXQgPSBkYXRlbXVsdGlyYW5nZShkYXRlcmFuZ2UoJzIwMTYt MDEtMDEnLCAnMjAxNi0wMi0wMScpKQorV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9h dCA9IGRhdGVtdWx0aXJhbmdlKGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAx JykpOworRVJST1I6ICB1cGRhdGUgb3IgZGVsZXRlIG9uIHRhYmxlICJ0ZW1wb3JhbF9tbHRy bmciIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBvcmFsX2ZrX21sdHJu ZzJtbHRybmdfZmsiIG9uIHRhYmxlICJ0ZW1wb3JhbF9ma19tbHRybmcybWx0cm5nIgorREVU QUlMOiAgS2V5IChpZCwgdmFsaWRfYXQpPShbNSw2KSwge1swMS0wMS0yMDE4LDAyLTAxLTIw MTgpfSkgaXMgc3RpbGwgcmVmZXJlbmNlZCBmcm9tIHRhYmxlICJ0ZW1wb3JhbF9ma19tbHRy bmcybWx0cm5nIi4KKy0tIGNoYW5naW5nIHRoZSBzY2FsYXIgcGFydCBmYWlsczoKK1VQREFU RSB0ZW1wb3JhbF9tbHRybmcgU0VUIGlkID0gJ1s3LDddJworV0hFUkUgaWQgPSAnWzUsNV0n IEFORCB2YWxpZF9hdCA9IGRhdGVtdWx0aXJhbmdlKGRhdGVyYW5nZSgnMjAxOC0wMS0wMScs ICcyMDE4LTAyLTAxJykpOworRVJST1I6ICB1cGRhdGUgb3IgZGVsZXRlIG9uIHRhYmxlICJ0 ZW1wb3JhbF9tbHRybmciIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBv cmFsX2ZrX21sdHJuZzJtbHRybmdfZmsiIG9uIHRhYmxlICJ0ZW1wb3JhbF9ma19tbHRybmcy bWx0cm5nIgorREVUQUlMOiAgS2V5IChpZCwgdmFsaWRfYXQpPShbNSw2KSwge1swMS0wMS0y MDE4LDAyLTAxLTIwMTgpfSkgaXMgc3RpbGwgcmVmZXJlbmNlZCBmcm9tIHRhYmxlICJ0ZW1w b3JhbF9ma19tbHRybmcybWx0cm5nIi4KKy0tIGNsZWFuIHVwOgorREVMRVRFIEZST00gdGVt cG9yYWxfZmtfbWx0cm5nMm1sdHJuZyBXSEVSRSBwYXJlbnRfaWQgPSAnWzUsNV0nOworREVM RVRFIEZST00gdGVtcG9yYWxfbWx0cm5nIFdIRVJFIGlkIElOICgnWzUsNV0nLCAnWzcsN10n KTsKKy0tCistLSB0ZXN0IEZLIHBhcmVudCBkZWxldGVzIE5PIEFDVElPTgorLS0KK0FMVEVS IFRBQkxFIHRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmcKKwlEUk9QIENPTlNUUkFJTlQgdGVt cG9yYWxfZmtfbWx0cm5nMm1sdHJuZ19mazsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX21s dHJuZzJtbHRybmcKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19tbHRybmcybWx0cm5n X2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVS RU5DRVMgdGVtcG9yYWxfbWx0cm5nOworLS0gYSBQSyBkZWxldGUgdGhhdCBzdWNjZWVkcyBi ZWNhdXNlIHRoZSBudW1lcmljIGlkIGlzbid0IHJlZmVyZW5jZWQ6CitJTlNFUlQgSU5UTyB0 ZW1wb3JhbF9tbHRybmcgVkFMVUVTICgnWzUsNV0nLCBkYXRlbXVsdGlyYW5nZShkYXRlcmFu Z2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKSk7CitERUxFVEUgRlJPTSB0ZW1wb3Jh bF9tbHRybmcgV0hFUkUgaWQgPSAnWzUsNV0nOworLS0gYSBQSyBkZWxldGUgdGhhdCBzdWNj ZWVkcyBldmVuIHRob3VnaCB0aGUgbnVtZXJpYyBpZCBpcyByZWZlcmVuY2VkIGJlY2F1c2Ug dGhlIHJhbmdlIGlzbid0OgorSU5TRVJUIElOVE8gdGVtcG9yYWxfbWx0cm5nIFZBTFVFUwor ICAoJ1s1LDVdJywgZGF0ZW11bHRpcmFuZ2UoZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIw MTgtMDItMDEnKSkpLAorICAoJ1s1LDVdJywgZGF0ZW11bHRpcmFuZ2UoZGF0ZXJhbmdlKCcy MDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKSkpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtf bWx0cm5nMm1sdHJuZyBWQUxVRVMgKCdbMywzXScsIGRhdGVtdWx0aXJhbmdlKGRhdGVyYW5n ZSgnMjAxOC0wMS0wNScsICcyMDE4LTAxLTEwJykpLCAnWzUsNV0nKTsKK0RFTEVURSBGUk9N IHRlbXBvcmFsX21sdHJuZyBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gZGF0 ZW11bHRpcmFuZ2UoZGF0ZXJhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKSk7Cist LSBhIFBLIGRlbGV0ZSB0aGF0IGZhaWxzIGJlY2F1c2UgYm90aCBhcmUgcmVmZXJlbmNlZDoK K0RFTEVURSBGUk9NIHRlbXBvcmFsX21sdHJuZyBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZh bGlkX2F0ID0gZGF0ZW11bHRpcmFuZ2UoZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgt MDItMDEnKSk7CitFUlJPUjogIHVwZGF0ZSBvciBkZWxldGUgb24gdGFibGUgInRlbXBvcmFs X21sdHJuZyIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxfZmtf bWx0cm5nMm1sdHJuZ19mayIgb24gdGFibGUgInRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmci CitERVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9hdCk9KFs1LDYpLCB7WzAxLTAxLTIwMTgsMDIt MDEtMjAxOCl9KSBpcyBzdGlsbCByZWZlcmVuY2VkIGZyb20gdGFibGUgInRlbXBvcmFsX2Zr X21sdHJuZzJtbHRybmciLgorLS0gY2xlYW4gdXA6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9m a19tbHRybmcybWx0cm5nIFdIRVJFIHBhcmVudF9pZCA9ICdbNSw1XSc7CitERUxFVEUgRlJP TSB0ZW1wb3JhbF9tbHRybmcgV0hFUkUgaWQgSU4gKCdbNSw1XScpOworLS0KKy0tIHRlc3Qg RksgcGFyZW50IGRlbGV0ZXMgUkVTVFJJQ1QKKy0tCitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9m a19tbHRybmcybWx0cm5nCisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX21sdHJuZzJt bHRybmdfZms7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19tbHRybmcybWx0cm5nCisJQURE IENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfbWx0cm5nMm1sdHJuZ19maworCUZPUkVJR04gS0VZ IChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX21s dHJuZworCU9OIERFTEVURSBSRVNUUklDVDsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX21sdHJu ZyBWQUxVRVMgKCdbNSw1XScsIGRhdGVtdWx0aXJhbmdlKGRhdGVyYW5nZSgnMjAxOC0wMS0w MScsICcyMDE4LTAyLTAxJykpKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX21sdHJuZyBXSEVS RSBpZCA9ICdbNSw1XSc7CistLSBhIFBLIGRlbGV0ZSB0aGF0IHN1Y2NlZWRzIGV2ZW4gdGhv dWdoIHRoZSBudW1lcmljIGlkIGlzIHJlZmVyZW5jZWQgYmVjYXVzZSB0aGUgcmFuZ2UgaXNu J3Q6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9tbHRybmcgVkFMVUVTCisgICgnWzUsNV0nLCBk YXRlbXVsdGlyYW5nZShkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKSks CisgICgnWzUsNV0nLCBkYXRlbXVsdGlyYW5nZShkYXRlcmFuZ2UoJzIwMTgtMDItMDEnLCAn MjAxOC0wMy0wMScpKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19tbHRybmcybWx0cm5n IFZBTFVFUyAoJ1szLDNdJywgZGF0ZW11bHRpcmFuZ2UoZGF0ZXJhbmdlKCcyMDE4LTAxLTA1 JywgJzIwMTgtMDEtMTAnKSksICdbNSw1XScpOworREVMRVRFIEZST00gdGVtcG9yYWxfbWx0 cm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRlbXVsdGlyYW5nZShk YXRlcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpKTsKKy0tIGEgUEsgZGVsZXRl IHRoYXQgZmFpbHMgYmVjYXVzZSBib3RoIGFyZSByZWZlcmVuY2VkOgorREVMRVRFIEZST00g dGVtcG9yYWxfbWx0cm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRl bXVsdGlyYW5nZShkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKK0VS Uk9SOiAgdXBkYXRlIG9yIGRlbGV0ZSBvbiB0YWJsZSAidGVtcG9yYWxfbWx0cm5nIiB2aW9s YXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9ma19tbHRybmcybWx0cm5n X2ZrIiBvbiB0YWJsZSAidGVtcG9yYWxfZmtfbWx0cm5nMm1sdHJuZyIKK0RFVEFJTDogIEtl eSAoaWQsIHZhbGlkX2F0KT0oWzUsNiksIHtbMDEtMDEtMjAxOCwwMi0wMS0yMDE4KX0pIGlz IHN0aWxsIHJlZmVyZW5jZWQgZnJvbSB0YWJsZSAidGVtcG9yYWxfZmtfbWx0cm5nMm1sdHJu ZyIuCistLSBjbGVhbiB1cDoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX21sdHJuZzJtbHRy bmcgV0hFUkUgcGFyZW50X2lkID0gJ1s1LDVdJzsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX21s dHJuZyBXSEVSRSBpZCBJTiAoJ1s1LDVdJyk7CistLSBGSyBiZXR3ZWVuIHBhcnRpdGlvbmVk IHRhYmxlcworQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyAoCisJaWQg aW50NHJhbmdlLAorCXZhbGlkX2F0IGRhdGVyYW5nZSwKKyAgbmFtZSB0ZXh0LAorCUNPTlNU UkFJTlQgdGVtcG9yYWxfcGFyaXRpb25lZF9ybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxp ZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKSBQQVJUSVRJT04gQlkgTElTVCAoaWQpOworQ1JF QVRFIFRBQkxFIHRwMSBwYXJ0aXRpb24gT0YgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIEZP UiBWQUxVRVMgSU4gKCdbMSwxXScsICdbMywzXScsICdbNSw1XScsICdbNyw3XScsICdbOSw5 XScsICdbMTEsMTFdJyk7CitDUkVBVEUgVEFCTEUgdHAyIHBhcnRpdGlvbiBPRiB0ZW1wb3Jh bF9wYXJ0aXRpb25lZF9ybmcgRk9SIFZBTFVFUyBJTiAoJ1syLDJdJywgJ1s0LDRdJywgJ1s2 LDZdJywgJ1s4LDhdJywgJ1sxMCwxMF0nLCAnWzEyLDEyXScpOworSU5TRVJUIElOVE8gdGVt cG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUworICAoJ1sxLDFdJywgZGF0ZXJhbmdlKCcy MDAwLTAxLTAxJywgJzIwMDAtMDItMDEnKSwgJ29uZScpLAorICAoJ1sxLDFdJywgZGF0ZXJh bmdlKCcyMDAwLTAyLTAxJywgJzIwMDAtMDMtMDEnKSwgJ29uZScpLAorICAoJ1syLDJdJywg ZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIwMTAtMDEtMDEnKSwgJ3R3bycpOworQ1JFQVRF IFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgKAorCWlkIGludDRyYW5n ZSwKKwl2YWxpZF9hdCBkYXRlcmFuZ2UsCisJcGFyZW50X2lkIGludDRyYW5nZSwKKwlDT05T VFJBSU5UIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfcGsgUFJJTUFSWSBLRVkg KGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKSwKKwlDT05TVFJBSU5UIHRlbXBvcmFs X3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfZmsgRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVS SU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyAo aWQsIFBFUklPRCB2YWxpZF9hdCkKKykgUEFSVElUSU9OIEJZIExJU1QgKGlkKTsKK0NSRUFU RSBUQUJMRSB0ZmtwMSBwYXJ0aXRpb24gT0YgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5n MnJuZyBGT1IgVkFMVUVTIElOICgnWzEsMV0nLCAnWzMsM10nLCAnWzUsNV0nLCAnWzcsN10n LCAnWzksOV0nLCAnWzExLDExXScpOworQ1JFQVRFIFRBQkxFIHRma3AyIHBhcnRpdGlvbiBP RiB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIEZPUiBWQUxVRVMgSU4gKCdbMiwy XScsICdbNCw0XScsICdbNiw2XScsICdbOCw4XScsICdbMTAsMTBdJywgJ1sxMiwxMl0nKTsK Ky0tIHBhcnRpdGlvbmVkIEZLIGNoaWxkIGluc2VydHMKK0lOU0VSVCBJTlRPIHRlbXBvcmFs X3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTCisgICgnWzEsMV0nLCBkYXRlcmFuZ2Uo JzIwMDAtMDEtMDEnLCAnMjAwMC0wMi0xNScpLCAnWzEsMV0nKSwKKyAgKCdbMSwxXScsIGRh dGVyYW5nZSgnMjAwMS0wMS0wMScsICcyMDAyLTAxLTAxJyksICdbMiwyXScpLAorICAoJ1sy LDJdJywgZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIwMDAtMDItMTUnKSwgJ1sxLDFdJyk7 CistLSBzaG91bGQgZmFpbDoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2Zr X3JuZzJybmcgVkFMVUVTCisgICgnWzMsM10nLCBkYXRlcmFuZ2UoJzIwMTAtMDEtMDEnLCAn MjAxMC0wMi0xNScpLCAnWzEsMV0nKTsKK0VSUk9SOiAgaW5zZXJ0IG9yIHVwZGF0ZSBvbiB0 YWJsZSAidGZrcDEiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBvcmFs X3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfZmsiCitERVRBSUw6ICBLZXkgKHBhcmVudF9pZCwg dmFsaWRfYXQpPShbMSwyKSwgWzAxLTAxLTIwMTAsMDItMTUtMjAxMCkpIGlzIG5vdCBwcmVz ZW50IGluIHRhYmxlICJ0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmciLgorSU5TRVJUIElOVE8g dGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMKKyAgKCdbMywzXScsIGRh dGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDAwLTAyLTE1JyksICdbMywzXScpOworRVJST1I6 ICBpbnNlcnQgb3IgdXBkYXRlIG9uIHRhYmxlICJ0ZmtwMSIgdmlvbGF0ZXMgZm9yZWlnbiBr ZXkgY29uc3RyYWludCAidGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19mayIKK0RF VEFJTDogIEtleSAocGFyZW50X2lkLCB2YWxpZF9hdCk9KFszLDQpLCBbMDEtMDEtMjAwMCww Mi0xNS0yMDAwKSkgaXMgbm90IHByZXNlbnQgaW4gdGFibGUgInRlbXBvcmFsX3BhcnRpdGlv bmVkX3JuZyIuCistLSBwYXJ0aXRpb25lZCBGSyBjaGlsZCB1cGRhdGVzCitVUERBVEUgdGVt cG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBTRVQgdmFsaWRfYXQgPSBkYXRlcmFuZ2Uo JzIwMDAtMDEtMDEnLCAnMjAwMC0wMi0xMycpIFdIRVJFIGlkID0gJ1syLDJdJzsKKy0tIG1v dmUgYSByb3cgZnJvbSB0aGUgZmlyc3QgcGFydGl0aW9uIHRvIHRoZSBzZWNvbmQKK1VQREFU RSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFNFVCBpZCA9ICdbNCw0XScgV0hF UkUgaWQgPSAnWzEsMV0nOworLS0gbW92ZSBhIHJvdyBmcm9tIHRoZSBzZWNvbmQgcGFydGl0 aW9uIHRvIHRoZSBmaXJzdAorVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJy bmcgU0VUIGlkID0gJ1sxLDFdJyBXSEVSRSBpZCA9ICdbNCw0XSc7CistLSBzaG91bGQgZmFp bDoKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFNFVCB2YWxpZF9h dCA9IGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDAwLTA0LTAxJykgV0hFUkUgaWQgPSAn WzEsMV0nOworRVJST1I6ICBjb25mbGljdGluZyBrZXkgdmFsdWUgdmlvbGF0ZXMgZXhjbHVz aW9uIGNvbnN0cmFpbnQgInRma3AxX3BrZXkiCitERVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9h dCk9KFsxLDIpLCBbMDEtMDEtMjAwMCwwNC0wMS0yMDAwKSkgY29uZmxpY3RzIHdpdGggZXhp c3Rpbmcga2V5IChpZCwgdmFsaWRfYXQpPShbMSwyKSwgWzAxLTAxLTIwMDAsMDQtMDEtMjAw MCkpLgorLS0gcGFydGl0aW9uZWQgRksgcGFyZW50IHVwZGF0ZXMgTk8gQUNUSU9OCitJTlNF UlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzUsNV0nLCBkYXRl cmFuZ2UoJzIwMTYtMDEtMDEnLCAnMjAxNi0wMi0wMScpKTsKK1VQREFURSB0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ybmcgU0VUIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywg JzIwMTgtMDItMDEnKSBXSEVSRSBpZCA9ICdbNSw1XSc7CitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzUsNV0nLCBkYXRlcmFuZ2UoJzIwMTgtMDIt MDEnLCAnMjAxOC0wMy0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVk X2ZrX3JuZzJybmcgVkFMVUVTICgnWzMsM10nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDUnLCAn MjAxOC0wMS0xMCcpLCAnWzUsNV0nKTsKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9y bmcgU0VUIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE2LTAyLTAxJywgJzIwMTYtMDMtMDEn KQorICBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE4 LTAyLTAxJywgJzIwMTgtMDMtMDEnKTsKKy0tIHNob3VsZCBmYWlsOgorVVBEQVRFIHRlbXBv cmFsX3BhcnRpdGlvbmVkX3JuZyBTRVQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTYtMDEt MDEnLCAnMjAxNi0wMi0wMScpCisgIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQg PSBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworRVJST1I6ICB1cGRh dGUgb3IgZGVsZXRlIG9uIHRhYmxlICJ0cDEiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0 cmFpbnQgInRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfcGFyZW50X2lkX3ZhbGlk X2F0X2ZrZXkiIG9uIHRhYmxlICJ0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIgor REVUQUlMOiAgS2V5IChpZCwgdmFsaWRfYXQpPShbNSw2KSwgWzAxLTAxLTIwMTgsMDItMDEt MjAxOCkpIGlzIHN0aWxsIHJlZmVyZW5jZWQgZnJvbSB0YWJsZSAidGVtcG9yYWxfcGFydGl0 aW9uZWRfZmtfcm5nMnJuZyIuCistLSBjbGVhbiB1cDoKK0RFTEVURSBGUk9NIHRlbXBvcmFs X3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgcGFyZW50X2lkID0gJ1s1LDVdJzsKK0RF TEVURSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBXSEVSRSBpZCA9ICdbNSw1XSc7 CistLSBwYXJ0aXRpb25lZCBGSyBwYXJlbnQgZGVsZXRlcyBOTyBBQ1RJT04KK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbNSw1XScsIGRhdGVyYW5n ZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxf cGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1s1LDVdJywgZGF0ZXJhbmdlKCcyMDE4LTAyLTAx JywgJzIwMTgtMDMtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9m a19ybmcycm5nIFZBTFVFUyAoJ1szLDNdJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTA1JywgJzIw MTgtMDEtMTAnKSwgJ1s1LDVdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25l ZF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAx OC0wMi0wMScsICcyMDE4LTAzLTAxJyk7CistLSBzaG91bGQgZmFpbDoKK0RFTEVURSBGUk9N IHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlk X2F0ID0gZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKK0VSUk9SOiAg dXBkYXRlIG9yIGRlbGV0ZSBvbiB0YWJsZSAidHAxIiB2aW9sYXRlcyBmb3JlaWduIGtleSBj b25zdHJhaW50ICJ0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX3BhcmVudF9pZF92 YWxpZF9hdF9ma2V5IiBvbiB0YWJsZSAidGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJu ZyIKK0RFVEFJTDogIEtleSAoaWQsIHZhbGlkX2F0KT0oWzUsNiksIFswMS0wMS0yMDE4LDAy LTAxLTIwMTgpKSBpcyBzdGlsbCByZWZlcmVuY2VkIGZyb20gdGFibGUgInRlbXBvcmFsX3Bh cnRpdGlvbmVkX2ZrX3JuZzJybmciLgorLS0gY2xlYW4gdXA6CitERUxFVEUgRlJPTSB0ZW1w b3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIHBhcmVudF9pZCA9ICdbNSw1XSc7 CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgV0hFUkUgaWQgPSAnWzUs NV0nOworLS0gcGFydGl0aW9uZWQgRksgcGFyZW50IHVwZGF0ZXMgUkVTVFJJQ1QKK0FMVEVS IFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcKKwlEUk9QIENPTlNUUkFJ TlQgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19mazsKK0FMVEVSIFRBQkxFIHRl bXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3Jh bF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwg UEVSSU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5n CisJT04gREVMRVRFIFJFU1RSSUNUOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9u ZWRfcm5nIFZBTFVFUyAoJ1s1LDVdJywgZGF0ZXJhbmdlKCcyMDE2LTAxLTAxJywgJzIwMTYt MDItMDEnKSk7CitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFNFVCB2YWxpZF9h dCA9IGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykgV0hFUkUgaWQgPSAn WzUsNV0nOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAo J1s1LDVdJywgZGF0ZXJhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKSk7CitJTlNF UlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1szLDNd JywgZGF0ZXJhbmdlKCcyMDE4LTAxLTA1JywgJzIwMTgtMDEtMTAnKSwgJ1s1LDVdJyk7CitV UERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFNFVCB2YWxpZF9hdCA9IGRhdGVyYW5n ZSgnMjAxNi0wMi0wMScsICcyMDE2LTAzLTAxJykKKyAgV0hFUkUgaWQgPSAnWzUsNV0nIEFO RCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJyk7Cist LSBzaG91bGQgZmFpbDoKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgU0VUIHZh bGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE2LTAxLTAxJywgJzIwMTYtMDItMDEnKQorICBXSEVS RSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywg JzIwMTgtMDItMDEnKTsKK0VSUk9SOiAgdXBkYXRlIG9yIGRlbGV0ZSBvbiB0YWJsZSAidHAx IiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9wYXJ0aXRpb25l ZF9ma19ybmcycm5nX3BhcmVudF9pZF92YWxpZF9hdF9ma2V5IiBvbiB0YWJsZSAidGVtcG9y YWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyIKK0RFVEFJTDogIEtleSAoaWQsIHZhbGlkX2F0 KT0oWzUsNiksIFswMS0wMS0yMDE4LDAyLTAxLTIwMTgpKSBpcyBzdGlsbCByZWZlcmVuY2Vk IGZyb20gdGFibGUgInRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmciLgorLS0gY2xl YW4gdXA6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdI RVJFIHBhcmVudF9pZCA9ICdbNSw1XSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRp b25lZF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nOworLS0gcGFydGl0aW9uZWQgRksgcGFyZW50 IGRlbGV0ZXMgUkVTVFJJQ1QKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3Ju ZyBWQUxVRVMgKCdbNSw1XScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAx JykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1s1 LDVdJywgZGF0ZXJhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKSk7CitJTlNFUlQg SU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1szLDNdJywg ZGF0ZXJhbmdlKCcyMDE4LTAxLTA1JywgJzIwMTgtMDEtMTAnKSwgJ1s1LDVdJyk7CitERUxF VEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFO RCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJyk7Cist LSBzaG91bGQgZmFpbDoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBX SEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE4LTAxLTAx JywgJzIwMTgtMDItMDEnKTsKK0VSUk9SOiAgdXBkYXRlIG9yIGRlbGV0ZSBvbiB0YWJsZSAi dHAxIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9wYXJ0aXRp b25lZF9ma19ybmcycm5nX3BhcmVudF9pZF92YWxpZF9hdF9ma2V5IiBvbiB0YWJsZSAidGVt cG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyIKK0RFVEFJTDogIEtleSAoaWQsIHZhbGlk X2F0KT0oWzUsNiksIFswMS0wMS0yMDE4LDAyLTAxLTIwMTgpKSBpcyBzdGlsbCByZWZlcmVu Y2VkIGZyb20gdGFibGUgInRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmciLgorLS0g cGFydGl0aW9uZWQgRksgcGFyZW50IHVwZGF0ZXMgQ0FTQ0FERQorQUxURVIgVEFCTEUgdGVt cG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZworCURST1AgQ09OU1RSQUlOVCB0ZW1wb3Jh bF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX2ZrLAorCUFERCBDT05TVFJBSU5UIHRlbXBvcmFs X3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfZmsKKwkJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwg UEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3Ju ZworCQlPTiBERUxFVEUgQ0FTQ0FERSBPTiBVUERBVEUgQ0FTQ0FERTsKK0VSUk9SOiAgaW52 YWxpZCBPTiBERUxFVEUgYWN0aW9uIGZvciBmb3JlaWduIGtleSBjb25zdHJhaW50IHVzaW5n IFBFUklPRAorLS0gcGFydGl0aW9uZWQgRksgcGFyZW50IGRlbGV0ZXMgQ0FTQ0FERQorLS0g cGFydGl0aW9uZWQgRksgcGFyZW50IHVwZGF0ZXMgU0VUIE5VTEwKK0FMVEVSIFRBQkxFIHRl bXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9y YWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19maywKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3Jh bF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX2ZrCisJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQs IFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9y bmcKKwkJT04gREVMRVRFIFNFVCBOVUxMIE9OIFVQREFURSBTRVQgTlVMTDsKK0VSUk9SOiAg aW52YWxpZCBPTiBERUxFVEUgYWN0aW9uIGZvciBmb3JlaWduIGtleSBjb25zdHJhaW50IHVz aW5nIFBFUklPRAorLS0gcGFydGl0aW9uZWQgRksgcGFyZW50IGRlbGV0ZXMgU0VUIE5VTEwK Ky0tIHBhcnRpdGlvbmVkIEZLIHBhcmVudCB1cGRhdGVzIFNFVCBERUZBVUxUCitBTFRFUiBU QUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nCisgIEFMVEVSIENPTFVNTiBw YXJlbnRfaWQgU0VUIERFRkFVTFQgJ1stMSwtMV0nLAorCURST1AgQ09OU1RSQUlOVCB0ZW1w b3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX2ZrLAorCUFERCBDT05TVFJBSU5UIHRlbXBv cmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfZmsKKwkJRk9SRUlHTiBLRVkgKHBhcmVudF9p ZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3BhcnRpdGlvbmVk X3JuZworCQlPTiBERUxFVEUgU0VUIERFRkFVTFQgT04gVVBEQVRFIFNFVCBERUZBVUxUOwor RVJST1I6ICBpbnZhbGlkIE9OIERFTEVURSBhY3Rpb24gZm9yIGZvcmVpZ24ga2V5IGNvbnN0 cmFpbnQgdXNpbmcgUEVSSU9ECistLSBwYXJ0aXRpb25lZCBGSyBwYXJlbnQgZGVsZXRlcyBT RVQgREVGQVVMVAorRFJPUCBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5n OworRFJPUCBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmc7CmRpZmYgLS1naXQgYS9z cmMvdGVzdC9yZWdyZXNzL3NxbC93aXRob3V0X292ZXJsYXBzLnNxbCBiL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL3dpdGhvdXRfb3ZlcmxhcHMuc3FsCmluZGV4IGM4ZThhYjk5NGEwLi41NDBm Yzc0ZWNjZCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvd2l0aG91dF9vdmVy bGFwcy5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvd2l0aG91dF9vdmVybGFwcy5z cWwKQEAgLTU2LDcgKzU2LDYgQEAgQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3JuZzIgKAogU0VM RUNUIHBnX2dldF9jb25zdHJhaW50ZGVmKG9pZCkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJF IGNvbm5hbWUgPSAndGVtcG9yYWxfcm5nMl9wayc7CiBTRUxFQ1QgcGdfZ2V0X2luZGV4ZGVm KGNvbmluZGlkLCAwLCB0cnVlKSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ubmFtZSA9 ICd0ZW1wb3JhbF9ybmcyX3BrJzsKIAotCiAtLSBQSyB3aXRoIGEgY3VzdG9tIHJhbmdlIHR5 cGU6CiBDUkVBVEUgVFlQRSB0ZXh0cmFuZ2UyIEFTIHJhbmdlIChzdWJ0eXBlPXRleHQsIGNv bGxhdGlvbj0iQyIpOwogQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3JuZzMgKApAQCAtNjgsMTQg KzY3LDI2IEBAIEFMVEVSIFRBQkxFIHRlbXBvcmFsX3JuZzMgRFJPUCBDT05TVFJBSU5UIHRl bXBvcmFsX3JuZzNfcGs7CiBEUk9QIFRBQkxFIHRlbXBvcmFsX3JuZzM7CiBEUk9QIFRZUEUg dGV4dHJhbmdlMjsKIAotLS0gUEsgd2l0aCBhIG11bHRpcmFuZ2U6CistLSBQSyB3aXRoIG9u ZSBjb2x1bW4gcGx1cyBhIG11bHRpcmFuZ2U6CiBDUkVBVEUgVEFCTEUgdGVtcG9yYWxfbWx0 cm5nICgKICAgaWQgaW50NHJhbmdlLAotICB2YWxpZF9hdCB0c211bHRpcmFuZ2UsCisgIHZh bGlkX2F0IGRhdGVtdWx0aXJhbmdlLAogICBDT05TVFJBSU5UIHRlbXBvcmFsX21sdHJuZ19w ayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCiApOwogXGQg dGVtcG9yYWxfbWx0cm5nCiAKKy0tIFBLIHdpdGggdHdvIGNvbHVtbnMgcGx1cyBhIG11bHRp cmFuZ2U6CistLSBXZSBkb24ndCBkcm9wIHRoaXMgdGFibGUgYmVjYXVzZSB0ZXN0cyBiZWxv dyBhbHNvIG5lZWQgbXVsdGlwbGUgc2NhbGFyIGNvbHVtbnMuCitDUkVBVEUgVEFCTEUgdGVt cG9yYWxfbWx0cm5nMiAoCisJaWQxIGludDRyYW5nZSwKKwlpZDIgaW50NHJhbmdlLAorCXZh bGlkX2F0IGRhdGVtdWx0aXJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfbWx0cm5nMl9w ayBQUklNQVJZIEtFWSAoaWQxLCBpZDIsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCisp OworXGQgdGVtcG9yYWxfbWx0cm5nMgorU0VMRUNUIHBnX2dldF9jb25zdHJhaW50ZGVmKG9p ZCkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbm5hbWUgPSAndGVtcG9yYWxfbWx0cm5n Ml9wayc7CitTRUxFQ1QgcGdfZ2V0X2luZGV4ZGVmKGNvbmluZGlkLCAwLCB0cnVlKSBGUk9N IHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ubmFtZSA9ICd0ZW1wb3JhbF9tbHRybmcyX3BrJzsK KwogLS0gVU5JUVVFIHdpdGggbm8gY29sdW1ucyBqdXN0IFdJVEhPVVQgT1ZFUkxBUFM6CiAK IENSRUFURSBUQUJMRSB0ZW1wb3JhbF9ybmczICgKQEAgLTIxNCw2ICsyMjUsMTkgQEAgSU5T RVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1sxLDFdJywgdHNyYW5nZSgnMjAxOC0w MS0wMScsICcyMDE4LTAxLTA1JykpOwogSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVF UyAoTlVMTCwgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAxLTA1JykpOwogSU5TRVJU IElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1szLDNdJywgTlVMTCk7CiAKKy0tIG9rYXk6 CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9tbHRybmcgVkFMVUVTICgnWzEsMV0nLCBkYXRlbXVs dGlyYW5nZShkYXRlcmFuZ2UoJzIwMTgtMDEtMDInLCAnMjAxOC0wMi0wMycpKSk7CitJTlNF UlQgSU5UTyB0ZW1wb3JhbF9tbHRybmcgVkFMVUVTICgnWzEsMV0nLCBkYXRlbXVsdGlyYW5n ZShkYXRlcmFuZ2UoJzIwMTgtMDMtMDMnLCAnMjAxOC0wNC0wNCcpKSk7CitJTlNFUlQgSU5U TyB0ZW1wb3JhbF9tbHRybmcgVkFMVUVTICgnWzIsMl0nLCBkYXRlbXVsdGlyYW5nZShkYXRl cmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMS0wNScpKSk7CitJTlNFUlQgSU5UTyB0ZW1w b3JhbF9tbHRybmcgVkFMVUVTICgnWzMsM10nLCBkYXRlbXVsdGlyYW5nZShkYXRlcmFuZ2Uo JzIwMTgtMDEtMDEnLCBOVUxMKSkpOworCistLSBzaG91bGQgZmFpbDoKK0lOU0VSVCBJTlRP IHRlbXBvcmFsX21sdHJuZyBWQUxVRVMgKCdbMSwxXScsIGRhdGVtdWx0aXJhbmdlKGRhdGVy YW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAxLTA1JykpKTsKK0lOU0VSVCBJTlRPIHRlbXBv cmFsX21sdHJuZyBWQUxVRVMgKE5VTEwsIGRhdGVtdWx0aXJhbmdlKGRhdGVyYW5nZSgnMjAx OC0wMS0wMScsICcyMDE4LTAxLTA1JykpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX21sdHJu ZyBWQUxVRVMgKCdbMywzXScsIE5VTEwpOworCitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX21s dHJuZyBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CisKIC0tCiAtLSB0ZXN0IGEgcmFuZ2Ugd2l0 aCBib3RoIGEgUEsgYW5kIGEgVU5JUVVFIGNvbnN0cmFpbnQKIC0tCkBAIC0yODgsMyArMzEy LDg5NyBAQCBTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkIE9SREVSIEJZIGlk LCB2YWxpZF9hdDsKIFNFTEVDVCAqIEZST00gdHAxIE9SREVSIEJZIGlkLCB2YWxpZF9hdDsK IFNFTEVDVCAqIEZST00gdHAyIE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKIERST1AgVEFCTEUg dGVtcG9yYWxfcGFydGl0aW9uZWQ7CisKKy0tCistLSB0ZXN0IEZLIGRlcGVuZGVuY2llcwor LS0KKworLS0gY2FuJ3QgZHJvcCBhIHJhbmdlIHJlZmVyZW5jZWQgYnkgYW4gRkssIHVubGVz cyB3aXRoIENBU0NBREUKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbDMgKAorCWlkIGludDRyYW5n ZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWwzX3BrIFBSSU1B UlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CitDUkVBVEUgVEFC TEUgdGVtcG9yYWxfZmtfcm5nMnJuZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRz cmFuZ2UsCisJcGFyZW50X2lkIGludDRyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2Zr X3JuZzJybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBT KSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsgRk9SRUlHTiBLRVkgKHBh cmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsMyAoaWQs IFBFUklPRCB2YWxpZF9hdCkKKyk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbDMgRFJPUCBDT0xV TU4gdmFsaWRfYXQ7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbDMgRFJPUCBDT0xVTU4gdmFsaWRf YXQgQ0FTQ0FERTsKK0RST1AgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZzsKK0RST1AgVEFC TEUgdGVtcG9yYWwzOworCistLQorLS0gdGVzdCBGT1JFSUdOIEtFWSwgcmFuZ2UgcmVmZXJl bmNlcyByYW5nZQorLS0KKworLS0gdGVzdCB0YWJsZSBzZXR1cAorRFJPUCBUQUJMRSB0ZW1w b3JhbF9ybmc7CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcm5nIChpZCBpbnQ0cmFuZ2UsIHZh bGlkX2F0IHRzcmFuZ2UpOworQUxURVIgVEFCTEUgdGVtcG9yYWxfcm5nCisgIEFERCBDT05T VFJBSU5UIHRlbXBvcmFsX3JuZ19waworICBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJ VEhPVVQgT1ZFUkxBUFMpOworCistLSBDYW4ndCBjcmVhdGUgYSBGSyB3aXRoIGEgbWlzbWF0 Y2hlZCByYW5nZSB0eXBlCitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZyAoCisJ aWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IGludDRyYW5nZSwKKwlwYXJlbnRfaWQgaW50NHJh bmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19wazIgUFJJTUFSWSBLRVkg KGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKSwKKwlDT05TVFJBSU5UIHRlbXBvcmFs X2ZrX3JuZzJybmdfZmsyIEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9h dCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcgKGlkLCBQRVJJT0QgdmFsaWRfYXQpCisp OworCistLSB3b3JrczogUEVSSU9EIGZvciBib3RoIHJlZmVyZW5jZWQgYW5kIHJlZmVyZW5j aW5nCitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZyAoCisJaWQgaW50NHJhbmdl LAorCXZhbGlkX2F0IHRzcmFuZ2UsCisJcGFyZW50X2lkIGludDRyYW5nZSwKKwlDT05TVFJB SU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBX SVRIT1VUIE9WRVJMQVBTKSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsg Rk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VT IHRlbXBvcmFsX3JuZyAoaWQsIFBFUklPRCB2YWxpZF9hdCkKKyk7CitEUk9QIFRBQkxFIHRl bXBvcmFsX2ZrX3JuZzJybmc7CisKKy0tIHdpdGggbWlzbWF0Y2hlZCBQRVJJT0QgY29sdW1u czoKKworLS0gKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KSBSRUZFUkVOQ0VTIChpZCwg dmFsaWRfYXQpCistLSBSRUZFUkVOQ0VTIHBhcnQgc2hvdWxkIHNwZWNpZnkgUEVSSU9ECitD UkVBVEUgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZyAoCisJaWQgaW50NHJhbmdlLAorCXZh bGlkX2F0IHRzcmFuZ2UsCisJcGFyZW50X2lkIGludDRyYW5nZSwKKwlDT05TVFJBSU5UIHRl bXBvcmFsX2ZrX3JuZzJybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VU IE9WRVJMQVBTKSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsgRk9SRUlH TiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBv cmFsX3JuZyAoaWQsIHZhbGlkX2F0KQorKTsKKy0tIChwYXJlbnRfaWQsIHZhbGlkX2F0KSBS RUZFUkVOQ0VTIChpZCwgUEVSSU9EIHZhbGlkX2F0KQorLS0gRk9SRUlHTiBLRVkgcGFydCBz aG91bGQgc3BlY2lmeSBQRVJJT0QKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5n ICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5nZSwKKwlwYXJlbnRfaWQgaW50 NHJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19wayBQUklNQVJZIEtF WSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpLAorCUNPTlNUUkFJTlQgdGVtcG9y YWxfZmtfcm5nMnJuZ19mayBGT1JFSUdOIEtFWSAocGFyZW50X2lkLCB2YWxpZF9hdCkKKwkJ UkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcgKGlkLCBQRVJJT0QgdmFsaWRfYXQpCispOworLS0g KHBhcmVudF9pZCwgdmFsaWRfYXQpIFJFRkVSRU5DRVMgW2ltcGxpY2l0XQorLS0gRk9SRUlH TiBLRVkgcGFydCBzaG91bGQgc3BlY2lmeSBQRVJJT0QKK0NSRUFURSBUQUJMRSB0ZW1wb3Jh bF9ma19ybmcycm5nICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5nZSwKKwlw YXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19w ayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpLAorCUNPTlNU UkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19mayBGT1JFSUdOIEtFWSAocGFyZW50X2lkLCB2 YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcKKyk7CistLSAocGFyZW50X2lk LCBQRVJJT0QgdmFsaWRfYXQpIFJFRkVSRU5DRVMgKGlkKQorQ1JFQVRFIFRBQkxFIHRlbXBv cmFsX2ZrX3JuZzJybmcgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAor CXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5n X3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyksCisJQ09O U1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrIEZPUkVJR04gS0VZIChwYXJlbnRfaWQs IFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcgKGlkKQorKTsK Ky0tIChwYXJlbnRfaWQpIFJFRkVSRU5DRVMgKGlkLCBQRVJJT0QgdmFsaWRfYXQpCitDUkVB VEUgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlk X2F0IHRzcmFuZ2UsCisJcGFyZW50X2lkIGludDRyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBv cmFsX2ZrX3JuZzJybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9W RVJMQVBTKSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsgRk9SRUlHTiBL RVkgKHBhcmVudF9pZCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcgKGlkLCBQRVJJT0Qg dmFsaWRfYXQpCispOworCistLSB3aXRoIGluZmVycmVkIFBLIG9uIHRoZSByZWZlcmVuY2Vk IHRhYmxlOgorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcgKAorCWlkIGludDRy YW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAorCXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09O U1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRf YXQgV0lUSE9VVCBPVkVSTEFQUyksCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5n X2ZrIEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJF TkNFUyB0ZW1wb3JhbF9ybmcKKyk7CitEUk9QIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmc7 CisKKy0tIHNob3VsZCBmYWlsIGJlY2F1c2Ugb2YgZHVwbGljYXRlIHJlZmVyZW5jZWQgY29s dW1uczoKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nICgKKwlpZCBpbnQ0cmFu Z2UsCisJdmFsaWRfYXQgdHNyYW5nZSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNU UkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0 IFdJVEhPVVQgT1ZFUkxBUFMpLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19m ayBGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgcGFyZW50X2lkKQorCQlSRUZFUkVO Q0VTIHRlbXBvcmFsX3JuZyAoaWQsIFBFUklPRCBpZCkKKyk7CisKKy0tIFR3byBzY2FsYXIg Y29sdW1ucworRFJPUCBUQUJMRSB0ZW1wb3JhbF9ybmcyOworQ1JFQVRFIFRBQkxFIHRlbXBv cmFsX3JuZzIgKAorICBpZDEgaW50NHJhbmdlLAorICBpZDIgaW50NHJhbmdlLAorICB2YWxp ZF9hdCB0c3JhbmdlLAorICBDT05TVFJBSU5UIHRlbXBvcmFsX3JuZzJfcGsgUFJJTUFSWSBL RVkgKGlkMSwgaWQyLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKKworQ1JFQVRF IFRBQkxFIHRlbXBvcmFsX2ZrMl9ybmcycm5nICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRf YXQgdHNyYW5nZSwKKwlwYXJlbnRfaWQxIGludDRyYW5nZSwKKwlwYXJlbnRfaWQyIGludDRy YW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrMl9ybmcycm5nX3BrIFBSSU1BUlkgS0VZ IChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyksCisJQ09OU1RSQUlOVCB0ZW1wb3Jh bF9mazJfcm5nMnJuZ19mayBGT1JFSUdOIEtFWSAocGFyZW50X2lkMSwgcGFyZW50X2lkMiwg UEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZzIgKGlkMSwgaWQy LCBQRVJJT0QgdmFsaWRfYXQpCispOworXGQgdGVtcG9yYWxfZmsyX3JuZzJybmcKK0RST1Ag VEFCTEUgdGVtcG9yYWxfZmsyX3JuZzJybmc7CisKKy0tCistLSB0ZXN0IEFMVEVSIFRBQkxF IEFERCBDT05TVFJBSU5UCistLQorCitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJu ZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UsCisJcGFyZW50X2lkIGlu dDRyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfcGsgUFJJTUFSWSBL RVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK0FMVEVSIFRBQkxFIHRl bXBvcmFsX2ZrX3JuZzJybmcKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5n X2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVS RU5DRVMgdGVtcG9yYWxfcm5nIChpZCwgUEVSSU9EIHZhbGlkX2F0KTsKKy0tIFR3byBzY2Fs YXIgY29sdW1uczoKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9mazJfcm5nMnJuZyAoCisJaWQg aW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UsCisJcGFyZW50X2lkMSBpbnQ0cmFuZ2Us CisJcGFyZW50X2lkMiBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9mazJfcm5n MnJuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCisp OworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmsyX3JuZzJybmcKKwlBREQgQ09OU1RSQUlOVCB0 ZW1wb3JhbF9mazJfcm5nMnJuZ19maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQxLCBwYXJl bnRfaWQyLCBQRVJJT0QgdmFsaWRfYXQpCisJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcyIChp ZDEsIGlkMiwgUEVSSU9EIHZhbGlkX2F0KTsKK1xkIHRlbXBvcmFsX2ZrMl9ybmcycm5nCisK Ky0tIHdpdGggaW5mZXJyZWQgUEsgb24gdGhlIHJlZmVyZW5jZWQgdGFibGUsIGFuZCB3cm9u ZyBjb2x1bW4gdHlwZToKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlEUk9Q IENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19maywKKwlBTFRFUiBDT0xVTU4gdmFs aWRfYXQgVFlQRSBkYXRlcmFuZ2UgVVNJTkcgZGF0ZXJhbmdlKGxvd2VyKHZhbGlkX2F0KTo6 ZGF0ZSwgdXBwZXIodmFsaWRfYXQpOjpkYXRlKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2Zr X3JuZzJybmcKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrCisJRk9S RUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgdGVt cG9yYWxfcm5nOworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCUFMVEVSIENP TFVNTiB2YWxpZF9hdCBUWVBFIHRzcmFuZ2UgVVNJTkcgdHNyYW5nZShsb3dlcih2YWxpZF9h dCksIHVwcGVyKHZhbGlkX2F0KSk7CisKKy0tIHdpdGggaW5mZXJyZWQgUEsgb24gdGhlIHJl ZmVyZW5jZWQgdGFibGU6CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisJQURE IENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19maworCUZPUkVJR04gS0VZIChwYXJl bnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZzsKKwor LS0gc2hvdWxkIGZhaWwgYmVjYXVzZSBvZiBkdXBsaWNhdGUgcmVmZXJlbmNlZCBjb2x1bW5z OgorQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCUFERCBDT05TVFJBSU5UIHRl bXBvcmFsX2ZrX3JuZzJybmdfZmsyCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9E IHBhcmVudF9pZCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZyAoaWQsIFBFUklPRCBpZCk7 CisKKy0tCistLSB0ZXN0IHdpdGggcm93cyBhbHJlYWR5CistLQorCitERUxFVEUgRlJPTSB0 ZW1wb3JhbF9ma19ybmcycm5nOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nOworSU5TRVJU IElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUworICAoJ1sxLDFdJywgdHNyYW5nZSgnMjAxOC0w MS0wMicsICcyMDE4LTAyLTAzJykpLAorICAoJ1sxLDFdJywgdHNyYW5nZSgnMjAxOC0wMy0w MycsICcyMDE4LTA0LTA0JykpLAorICAoJ1syLDJdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScs ICcyMDE4LTAxLTA1JykpLAorICAoJ1szLDNdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsIE5V TEwpKTsKKworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCURST1AgQ09OU1RS QUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtf cm5nMnJuZyBWQUxVRVMgKCdbMSwxXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDInLCAnMjAxOC0w Mi0wMScpLCAnWzEsMV0nKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlB REQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrCisJRk9SRUlHTiBLRVkgKHBh cmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nOwor QUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCURST1AgQ09OU1RSQUlOVCB0ZW1w b3JhbF9ma19ybmcycm5nX2ZrOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBW QUxVRVMgKCdbMiwyXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDInLCAnMjAxOC0wNC0wMScpLCAn WzEsMV0nKTsKKy0tIHNob3VsZCBmYWlsOgorQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5n MnJuZworCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsKKwlGT1JFSUdO IEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJUkVGRVJFTkNFUyB0ZW1wb3Jh bF9ybmc7CistLSBva2F5IGFnYWluOgorREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJu ZzsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlBREQgQ09OU1RSQUlOVCB0 ZW1wb3JhbF9ma19ybmcycm5nX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9E IHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nOworCistLQorLS0gdGVzdCBw Z19nZXRfY29uc3RyYWludGRlZgorLS0KKworU0VMRUNUIHBnX2dldF9jb25zdHJhaW50ZGVm KG9pZCkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbm5hbWUgPSAndGVtcG9yYWxfZmtf cm5nMnJuZ19mayc7CisKKy0tCistLSB0ZXN0IEZLIGNoaWxkIGluc2VydHMKKy0tCisKK0lO U0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzEsMV0nLCB0c3Jhbmdl KCcyMDE4LTAxLTAyJywgJzIwMTgtMDItMDEnKSwgJ1sxLDFdJyk7CistLSBzaG91bGQgZmFp bDoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzIsMl0nLCB0 c3JhbmdlKCcyMDE4LTAxLTAyJywgJzIwMTgtMDQtMDEnKSwgJ1sxLDFdJyk7CistLSBub3cg aXQgc2hvdWxkIHdvcms6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzEs MV0nLCB0c3JhbmdlKCcyMDE4LTAyLTAzJywgJzIwMTgtMDMtMDMnKSk7CitJTlNFUlQgSU5U TyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1syLDJdJywgdHNyYW5nZSgnMjAxOC0w MS0wMicsICcyMDE4LTA0LTAxJyksICdbMSwxXScpOworCistLQorLS0gdGVzdCBGSyBjaGls ZCB1cGRhdGVzCistLQorCitVUERBVEUgdGVtcG9yYWxfZmtfcm5nMnJuZyBTRVQgdmFsaWRf YXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAyJywgJzIwMTgtMDMtMDEnKSBXSEVSRSBpZCA9ICdb MSwxXSc7CistLSBzaG91bGQgZmFpbDoKK1VQREFURSB0ZW1wb3JhbF9ma19ybmcycm5nIFNF VCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDInLCAnMjAxOC0wNS0wMScpIFdIRVJF IGlkID0gJ1sxLDFdJzsKK1VQREFURSB0ZW1wb3JhbF9ma19ybmcycm5nIFNFVCBwYXJlbnRf aWQgPSAnWzgsOF0nIFdIRVJFIGlkID0gJ1sxLDFdJzsKKworLS0gQUxURVIgRksgREVGRVJS QUJMRQorCitCRUdJTjsKKyAgSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUworICAg ICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKSksCisgICAg KCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpKTsKKyAgSU5T RVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMKKyAgICAoJ1szLDNdJywgdHNy YW5nZSgnMjAxOC0wMS0wNScsICcyMDE4LTAxLTEwJyksICdbNSw1XScpOworICBBTFRFUiBU QUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisgICAgQUxURVIgQ09OU1RSQUlOVCB0ZW1wb3Jh bF9ma19ybmcycm5nX2ZrCisgICAgREVGRVJSQUJMRSBJTklUSUFMTFkgREVGRVJSRUQ7CisK KyAgREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsgLS1zaG91 bGQgbm90IGZhaWwgeWV0LgorQ09NTUlUOyAtLSBzaG91bGQgZmFpbCBoZXJlLgorCistLQor LS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRlcyBOTyBBQ1RJT04KKy0tCisKKy0tIGEgUEsgdXBk YXRlIHRoYXQgc3VjY2VlZHMgYmVjYXVzZSB0aGUgbnVtZXJpYyBpZCBpc24ndCByZWZlcmVu Y2VkOgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s1LDVdJywgdHNyYW5n ZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykpOworVVBEQVRFIHRlbXBvcmFsX3JuZyBT RVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE2LTAxLTAxJywgJzIwMTYtMDItMDEnKSBXSEVS RSBpZCA9ICdbNSw1XSc7CistLSBhIFBLIHVwZGF0ZSB0aGF0IHN1Y2NlZWRzIGV2ZW4gdGhv dWdoIHRoZSBudW1lcmljIGlkIGlzIHJlZmVyZW5jZWQgYmVjYXVzZSB0aGUgcmFuZ2UgaXNu J3Q6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nOworSU5T RVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUworICAoJ1s1LDVdJywgdHNyYW5nZSgnMjAx OC0wMS0wMScsICcyMDE4LTAyLTAxJykpLAorICAoJ1s1LDVdJywgdHNyYW5nZSgnMjAxOC0w Mi0wMScsICcyMDE4LTAzLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJu ZyBWQUxVRVMgKCdbMywzXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDUnLCAnMjAxOC0wMS0xMCcp LCAnWzUsNV0nKTsKK1VQREFURSB0ZW1wb3JhbF9ybmcgU0VUIHZhbGlkX2F0ID0gdHNyYW5n ZSgnMjAxNi0wMi0wMScsICcyMDE2LTAzLTAxJykKK1dIRVJFIGlkID0gJ1s1LDVdJyBBTkQg dmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKTsKKy0tIGEg UEsgdXBkYXRlIHRoYXQgZmFpbHMgYmVjYXVzZSBib3RoIGFyZSByZWZlcmVuY2VkOgorVVBE QVRFIHRlbXBvcmFsX3JuZyBTRVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE2LTAxLTAxJywg JzIwMTYtMDItMDEnKQorV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFu Z2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworLS0gY2hhbmdpbmcgdGhlIHNjYWxh ciBwYXJ0IGZhaWxzOgorVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgaWQgPSAnWzcsN10nCitX SEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScs ICcyMDE4LTAyLTAxJyk7CistLSB0aGVuIGRlbGV0ZSB0aGUgb2JqZWN0aW5nIEZLIHJlY29y ZCBhbmQgdGhlIHNhbWUgUEsgdXBkYXRlIHN1Y2NlZWRzOgorREVMRVRFIEZST00gdGVtcG9y YWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMywzXSc7CitVUERBVEUgdGVtcG9yYWxfcm5n IFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTYtMDEtMDEnLCAnMjAxNi0wMi0wMScpCitX SEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScs ICcyMDE4LTAyLTAxJyk7CistLSBjbGVhbiB1cDoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2Zr X3JuZzJybmcgV0hFUkUgcGFyZW50X2lkID0gJ1s1LDVdJzsKK0RFTEVURSBGUk9NIHRlbXBv cmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XSc7CisKKy0tCistLSB0ZXN0IEZLIHBhcmVudCB1 cGRhdGVzIFJFU1RSSUNUCistLQorCitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5n CisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZms7CitBTFRFUiBUQUJM RSB0ZW1wb3JhbF9ma19ybmcycm5nCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5n MnJuZ19maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlS RUZFUkVOQ0VTIHRlbXBvcmFsX3JuZworCU9OIFVQREFURSBSRVNUUklDVDsKKy0tIGEgUEsg dXBkYXRlIHRoYXQgc3VjY2VlZHMgYmVjYXVzZSB0aGUgbnVtZXJpYyBpZCBpc24ndCByZWZl cmVuY2VkOgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s1LDVdJywgdHNy YW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykpOworVVBEQVRFIHRlbXBvcmFsX3Ju ZyBTRVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE2LTAxLTAxJywgJzIwMTYtMDItMDEnKSBX SEVSRSBpZCA9ICdbNSw1XSc7CistLSBhIFBLIHVwZGF0ZSB0aGF0IHN1Y2NlZWRzIGV2ZW4g dGhvdWdoIHRoZSBudW1lcmljIGlkIGlzIHJlZmVyZW5jZWQgYmVjYXVzZSB0aGUgcmFuZ2Ug aXNuJ3Q6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nOwor SU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUworICAoJ1s1LDVdJywgdHNyYW5nZSgn MjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykpLAorICAoJ1s1LDVdJywgdHNyYW5nZSgnMjAx OC0wMi0wMScsICcyMDE4LTAzLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5n MnJuZyBWQUxVRVMgKCdbMywzXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDUnLCAnMjAxOC0wMS0x MCcpLCAnWzUsNV0nKTsKK1VQREFURSB0ZW1wb3JhbF9ybmcgU0VUIHZhbGlkX2F0ID0gdHNy YW5nZSgnMjAxNi0wMi0wMScsICcyMDE2LTAzLTAxJykKK1dIRVJFIGlkID0gJ1s1LDVdJyBB TkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKTsKKy0t IGEgUEsgdXBkYXRlIHRoYXQgZmFpbHMgYmVjYXVzZSBib3RoIGFyZSByZWZlcmVuY2VkOgor VVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE2LTAxLTAx JywgJzIwMTYtMDItMDEnKQorV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRz cmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworLS0gY2hhbmdpbmcgdGhlIHNj YWxhciBwYXJ0IGZhaWxzOgorVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgaWQgPSAnWzcsN10n CitXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0w MScsICcyMDE4LTAyLTAxJyk7CistLSB0aGVuIGRlbGV0ZSB0aGUgb2JqZWN0aW5nIEZLIHJl Y29yZCBhbmQgdGhlIHNhbWUgUEsgdXBkYXRlIHN1Y2NlZWRzOgorREVMRVRFIEZST00gdGVt cG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMywzXSc7CitVUERBVEUgdGVtcG9yYWxf cm5nIFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTYtMDEtMDEnLCAnMjAxNi0wMi0wMScp CitXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0w MScsICcyMDE4LTAyLTAxJyk7CistLSBjbGVhbiB1cDoKK0RFTEVURSBGUk9NIHRlbXBvcmFs X2ZrX3JuZzJybmcgV0hFUkUgcGFyZW50X2lkID0gJ1s1LDVdJzsKK0RFTEVURSBGUk9NIHRl bXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XSc7CistLQorLS0gdGVzdCBGSyBwYXJlbnQg ZGVsZXRlcyBOTyBBQ1RJT04KKy0tCitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5n CisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZms7CitBTFRFUiBUQUJM RSB0ZW1wb3JhbF9ma19ybmcycm5nCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5n MnJuZ19maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlS RUZFUkVOQ0VTIHRlbXBvcmFsX3JuZzsKKy0tIGEgUEsgZGVsZXRlIHRoYXQgc3VjY2VlZHMg YmVjYXVzZSB0aGUgbnVtZXJpYyBpZCBpc24ndCByZWZlcmVuY2VkOgorSU5TRVJUIElOVE8g dGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s1LDVdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcy MDE4LTAyLTAxJykpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1 LDVdJzsKKy0tIGEgUEsgZGVsZXRlIHRoYXQgc3VjY2VlZHMgZXZlbiB0aG91Z2ggdGhlIG51 bWVyaWMgaWQgaXMgcmVmZXJlbmNlZCBiZWNhdXNlIHRoZSByYW5nZSBpc24ndDoKK0lOU0VS VCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMKKyAgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgt MDEtMDEnLCAnMjAxOC0wMi0wMScpKSwKKyAgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDIt MDEnLCAnMjAxOC0wMy0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcg VkFMVUVTICgnWzMsM10nLCB0c3JhbmdlKCcyMDE4LTAxLTA1JywgJzIwMTgtMDEtMTAnKSwg J1s1LDVdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0n IEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpOwor LS0gYSBQSyBkZWxldGUgdGhhdCBmYWlscyBiZWNhdXNlIGJvdGggYXJlIHJlZmVyZW5jZWQ6 CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxp ZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworLS0gdGhlbiBk ZWxldGUgdGhlIG9iamVjdGluZyBGSyByZWNvcmQgYW5kIHRoZSBzYW1lIFBLIGRlbGV0ZSBz dWNjZWVkczoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAn WzMsM10nOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBB TkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKKwor LS0KKy0tIHRlc3QgRksgcGFyZW50IGRlbGV0ZXMgUkVTVFJJQ1QKKy0tCisKK0FMVEVSIFRB QkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtf cm5nMnJuZ19mazsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlBREQgQ09O U1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9p ZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nCisJT04gREVM RVRFIFJFU1RSSUNUOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s1LDVd JywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykpOworREVMRVRFIEZST00g dGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsKKy0tIGEgUEsgZGVsZXRlIHRoYXQg c3VjY2VlZHMgZXZlbiB0aG91Z2ggdGhlIG51bWVyaWMgaWQgaXMgcmVmZXJlbmNlZCBiZWNh dXNlIHRoZSByYW5nZSBpc24ndDoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMK KyAgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKSwKKyAg KCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpKTsKK0lOU0VS VCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzMsM10nLCB0c3JhbmdlKCcy MDE4LTAxLTA1JywgJzIwMTgtMDEtMTAnKSwgJ1s1LDVdJyk7CitERUxFVEUgRlJPTSB0ZW1w b3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIw MTgtMDItMDEnLCAnMjAxOC0wMy0wMScpOworLS0gYSBQSyBkZWxldGUgdGhhdCBmYWlscyBi ZWNhdXNlIGJvdGggYXJlIHJlZmVyZW5jZWQ6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcg V0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEn LCAnMjAxOC0wMi0wMScpOworLS0gdGhlbiBkZWxldGUgdGhlIG9iamVjdGluZyBGSyByZWNv cmQgYW5kIHRoZSBzYW1lIFBLIGRlbGV0ZSBzdWNjZWVkczoKK0RFTEVURSBGUk9NIHRlbXBv cmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzMsM10nOworREVMRVRFIEZST00gdGVtcG9y YWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4 LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKKworLS0KKy0tIHRlc3QgT04gVVBEQVRFL0RFTEVU RSBvcHRpb25zCistLQorCistLSB0ZXN0IEZLIHBhcmVudCB1cGRhdGVzIENBU0NBREUKK0lO U0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbNiw2XScsIHRzcmFuZ2UoJzIwMTgt MDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJy bmcgVkFMVUVTICgnWzQsNF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEn KSwgJ1s2LDZdJyk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisJRFJPUCBD T05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmssCisJQUREIENPTlNUUkFJTlQgdGVt cG9yYWxfZmtfcm5nMnJuZ19maworCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0Qg dmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nCisJCU9OIERFTEVURSBDQVND QURFIE9OIFVQREFURSBDQVNDQURFOworCistLSB0ZXN0IEZLIHBhcmVudCB1cGRhdGVzIFNF VCBOVUxMCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzksOV0nLCB0c3Jh bmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9ma19ybmcycm5nIFZBTFVFUyAoJ1s2LDZdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcy MDIxLTAxLTAxJyksICdbOSw5XScpOworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJu ZworCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrLAorCUFERCBDT05T VFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsKKwkJRk9SRUlHTiBLRVkgKHBhcmVudF9p ZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZworCQlPTiBE RUxFVEUgU0VUIE5VTEwgT04gVVBEQVRFIFNFVCBOVUxMOworCistLSB0ZXN0IEZLIHBhcmVu dCB1cGRhdGVzIFNFVCBERUZBVUxUCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVT ICgnWy0xLC0xXScsIHRzcmFuZ2UobnVsbCwgbnVsbCkpOworSU5TRVJUIElOVE8gdGVtcG9y YWxfcm5nIFZBTFVFUyAoJ1sxMiwxMl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEt MDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1s4 LDhdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbMTIsMTJdJyk7 CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisgIEFMVEVSIENPTFVNTiBwYXJl bnRfaWQgU0VUIERFRkFVTFQgJ1stMSwtMV0nLAorCURST1AgQ09OU1RSQUlOVCB0ZW1wb3Jh bF9ma19ybmcycm5nX2ZrLAorCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdf ZmsKKwkJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZF UkVOQ0VTIHRlbXBvcmFsX3JuZworCQlPTiBERUxFVEUgU0VUIERFRkFVTFQgT04gVVBEQVRF IFNFVCBERUZBVUxUOworCistLQorLS0gdGVzdCBGT1JFSUdOIEtFWSwgbXVsdGlyYW5nZSBy ZWZlcmVuY2VzIG11bHRpcmFuZ2UKKy0tCisKKy0tIENhbid0IGNyZWF0ZSBhIEZLIHdpdGgg YSBtaXNtYXRjaGVkIG11bHRpcmFuZ2UgdHlwZQorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX2Zr X21sdHJuZzJtbHRybmcgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCBpbnQ0bXVsdGly YW5nZSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtf bWx0cm5nMm1sdHJuZ19wazIgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9W RVJMQVBTKSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmdfZmsyIEZP UkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0 ZW1wb3JhbF9tbHRybmcgKGlkLCBQRVJJT0QgdmFsaWRfYXQpCispOworCitDUkVBVEUgVEFC TEUgdGVtcG9yYWxfZmtfbWx0cm5nMm1sdHJuZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlk X2F0IGRhdGVtdWx0aXJhbmdlLAorCXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlO VCB0ZW1wb3JhbF9ma19tbHRybmcybWx0cm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRf YXQgV0lUSE9VVCBPVkVSTEFQUyksCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19tbHRybmcy bWx0cm5nX2ZrIEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJ UkVGRVJFTkNFUyB0ZW1wb3JhbF9tbHRybmcgKGlkLCBQRVJJT0QgdmFsaWRfYXQpCispOwor RFJPUCBUQUJMRSB0ZW1wb3JhbF9ma19tbHRybmcybWx0cm5nOworCistLSB3aXRoIG1pc21h dGNoZWQgUEVSSU9EIGNvbHVtbnM6CistLSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQp IFJFRkVSRU5DRVMgKGlkLCB2YWxpZF9hdCkKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ma19t bHRybmcybWx0cm5nICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgZGF0ZW11bHRpcmFu Z2UsCisJcGFyZW50X2lkIGludDRyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX21s dHJuZzJtbHRybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJM QVBTKSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmdfZmsgRk9SRUlH TiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBv cmFsX21sdHJuZyAoaWQsIHZhbGlkX2F0KQorKTsKKy0tIChwYXJlbnRfaWQsIHZhbGlkX2F0 KSBSRUZFUkVOQ0VTIChpZCwgUEVSSU9EIHZhbGlkX2F0KQorQ1JFQVRFIFRBQkxFIHRlbXBv cmFsX2ZrX21sdHJuZzJtbHRybmcgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCBkYXRl bXVsdGlyYW5nZSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9y YWxfZmtfbWx0cm5nMm1sdHJuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhP VVQgT1ZFUkxBUFMpLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfbWx0cm5nMm1sdHJuZ19m ayBGT1JFSUdOIEtFWSAocGFyZW50X2lkLCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1w b3JhbF9tbHRybmcgKGlkLCBQRVJJT0QgdmFsaWRfYXQpCispOworLS0gKHBhcmVudF9pZCwg dmFsaWRfYXQpIFJFRkVSRU5DRVMgW2ltcGxpY2l0XQorQ1JFQVRFIFRBQkxFIHRlbXBvcmFs X2ZrX21sdHJuZzJtbHRybmcgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCBkYXRlbXVs dGlyYW5nZSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxf ZmtfbWx0cm5nMm1sdHJuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQg T1ZFUkxBUFMpLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfbWx0cm5nMm1sdHJuZ19mayBG T1JFSUdOIEtFWSAocGFyZW50X2lkLCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3Jh bF9tbHRybmcKKyk7CistLSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpIFJFRkVSRU5D RVMgKGlkKQorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmcgKAorCWlk IGludDRyYW5nZSwKKwl2YWxpZF9hdCBkYXRlbXVsdGlyYW5nZSwKKwlwYXJlbnRfaWQgaW50 NHJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfbWx0cm5nMm1sdHJuZ19wayBQUklN QVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpLAorCUNPTlNUUkFJTlQg dGVtcG9yYWxfZmtfbWx0cm5nMm1sdHJuZ19mayBGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQ RVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfbWx0cm5nIChpZCkKKyk7 CistLSAocGFyZW50X2lkKSBSRUZFUkVOQ0VTIChpZCwgUEVSSU9EIHZhbGlkX2F0KQorQ1JF QVRFIFRBQkxFIHRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmcgKAorCWlkIGludDRyYW5nZSwK Kwl2YWxpZF9hdCBkYXRlbXVsdGlyYW5nZSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAorCUNP TlNUUkFJTlQgdGVtcG9yYWxfZmtfbWx0cm5nMm1sdHJuZ19wayBQUklNQVJZIEtFWSAoaWQs IHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtf bWx0cm5nMm1sdHJuZ19mayBGT1JFSUdOIEtFWSAocGFyZW50X2lkKQorCQlSRUZFUkVOQ0VT IHRlbXBvcmFsX21sdHJuZyAoaWQsIFBFUklPRCB2YWxpZF9hdCkKKyk7CisKKy0tIHdpdGgg aW5mZXJyZWQgUEsgb24gdGhlIHJlZmVyZW5jZWQgdGFibGU6CitDUkVBVEUgVEFCTEUgdGVt cG9yYWxfZmtfbWx0cm5nMm1sdHJuZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IGRh dGVtdWx0aXJhbmdlLAorCXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1w b3JhbF9ma19tbHRybmcybWx0cm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lU SE9VVCBPVkVSTEFQUyksCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19tbHRybmcybWx0cm5n X2ZrIEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJF TkNFUyB0ZW1wb3JhbF9tbHRybmcKKyk7CitEUk9QIFRBQkxFIHRlbXBvcmFsX2ZrX21sdHJu ZzJtbHRybmc7CisKKy0tIHNob3VsZCBmYWlsIGJlY2F1c2Ugb2YgZHVwbGljYXRlIHJlZmVy ZW5jZWQgY29sdW1uczoKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ma19tbHRybmcybWx0cm5n ICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgZGF0ZW11bHRpcmFuZ2UsCisJcGFyZW50 X2lkIGludDRyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmdf cGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKSwKKwlDT05T VFJBSU5UIHRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmdfZmsgRk9SRUlHTiBLRVkgKHBhcmVu dF9pZCwgUEVSSU9EIHBhcmVudF9pZCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9tbHRybmcg KGlkLCBQRVJJT0QgaWQpCispOworCistLSBUd28gc2NhbGFyIGNvbHVtbnMKK0NSRUFURSBU QUJMRSB0ZW1wb3JhbF9mazJfbWx0cm5nMm1sdHJuZyAoCisJaWQgaW50NHJhbmdlLAorCXZh bGlkX2F0IGRhdGVtdWx0aXJhbmdlLAorCXBhcmVudF9pZDEgaW50NHJhbmdlLAorCXBhcmVu dF9pZDIgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmsyX21sdHJuZzJtbHRy bmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKSwKKwlD T05TVFJBSU5UIHRlbXBvcmFsX2ZrMl9tbHRybmcybWx0cm5nX2ZrIEZPUkVJR04gS0VZIChw YXJlbnRfaWQxLCBwYXJlbnRfaWQyLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMg dGVtcG9yYWxfbWx0cm5nMiAoaWQxLCBpZDIsIFBFUklPRCB2YWxpZF9hdCkKKyk7CitcZCB0 ZW1wb3JhbF9mazJfbWx0cm5nMm1sdHJuZworRFJPUCBUQUJMRSB0ZW1wb3JhbF9mazJfbWx0 cm5nMm1sdHJuZzsKKworLS0KKy0tIHRlc3QgQUxURVIgVEFCTEUgQUREIENPTlNUUkFJTlQK Ky0tCisKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ma19tbHRybmcybWx0cm5nICgKKwlpZCBp bnQ0cmFuZ2UsCisJdmFsaWRfYXQgZGF0ZW11bHRpcmFuZ2UsCisJcGFyZW50X2lkIGludDRy YW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmdfcGsgUFJJTUFS WSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK0FMVEVSIFRBQkxF IHRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmcKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9m a19tbHRybmcybWx0cm5nX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZh bGlkX2F0KQorCVJFRkVSRU5DRVMgdGVtcG9yYWxfbWx0cm5nIChpZCwgUEVSSU9EIHZhbGlk X2F0KTsKKy0tIFR3byBzY2FsYXIgY29sdW1uczoKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9m azJfbWx0cm5nMm1sdHJuZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IGRhdGVtdWx0 aXJhbmdlLAorCXBhcmVudF9pZDEgaW50NHJhbmdlLAorCXBhcmVudF9pZDIgaW50NHJhbmdl LAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmsyX21sdHJuZzJtbHRybmdfcGsgUFJJTUFSWSBL RVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK0FMVEVSIFRBQkxFIHRl bXBvcmFsX2ZrMl9tbHRybmcybWx0cm5nCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmsy X21sdHJuZzJtbHRybmdfZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lkMSwgcGFyZW50X2lk MiwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgdGVtcG9yYWxfbWx0cm5nMiAoaWQx LCBpZDIsIFBFUklPRCB2YWxpZF9hdCk7CitcZCB0ZW1wb3JhbF9mazJfbWx0cm5nMm1sdHJu ZworCistLSB3aXRoIGluZmVycmVkIFBLIG9uIHRoZSByZWZlcmVuY2VkIHRhYmxlLCBhbmQg d3JvbmcgY29sdW1uIHR5cGU6CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19tbHRybmcybWx0 cm5nCisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmdfZmssCisJ QUxURVIgQ09MVU1OIHZhbGlkX2F0IFRZUEUgdHNtdWx0aXJhbmdlIFVTSU5HICd7fSc6OnRz bXVsdGlyYW5nZTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmcKKwlB REQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19tbHRybmcybWx0cm5nX2ZrCisJRk9SRUlHTiBL RVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgdGVtcG9yYWxf bWx0cm5nOworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfbWx0cm5nMm1sdHJuZworCUFMVEVS IENPTFVNTiB2YWxpZF9hdCBUWVBFIGRhdGVtdWx0aXJhbmdlIFVTSU5HICd7fSc6OmRhdGVt dWx0aXJhbmdlOworCistLSB3aXRoIGluZmVycmVkIFBLIG9uIHRoZSByZWZlcmVuY2VkIHRh YmxlOgorQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfbWx0cm5nMm1sdHJuZworCUFERCBDT05T VFJBSU5UIHRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmdfZmsKKwlGT1JFSUdOIEtFWSAocGFy ZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJUkVGRVJFTkNFUyB0ZW1wb3JhbF9tbHRybmc7 CisKKy0tIHNob3VsZCBmYWlsIGJlY2F1c2Ugb2YgZHVwbGljYXRlIHJlZmVyZW5jZWQgY29s dW1uczoKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmcKKwlBREQgQ09O U1RSQUlOVCB0ZW1wb3JhbF9ma19tbHRybmcybWx0cm5nX2ZrMgorCUZPUkVJR04gS0VZIChw YXJlbnRfaWQsIFBFUklPRCBwYXJlbnRfaWQpCisJUkVGRVJFTkNFUyB0ZW1wb3JhbF9tbHRy bmcgKGlkLCBQRVJJT0QgaWQpOworCistLQorLS0gdGVzdCB3aXRoIHJvd3MgYWxyZWFkeQor LS0KKworREVMRVRFIEZST00gdGVtcG9yYWxfZmtfbWx0cm5nMm1sdHJuZzsKK0FMVEVSIFRB QkxFIHRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmcKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9y YWxfZmtfbWx0cm5nMm1sdHJuZ19mazsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX21sdHJu ZzJtbHRybmcgVkFMVUVTICgnWzEsMV0nLCBkYXRlbXVsdGlyYW5nZShkYXRlcmFuZ2UoJzIw MTgtMDEtMDInLCAnMjAxOC0wMi0wMScpKSwgJ1sxLDFdJyk7CitBTFRFUiBUQUJMRSB0ZW1w b3JhbF9ma19tbHRybmcybWx0cm5nCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfbWx0 cm5nMm1sdHJuZ19maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9h dCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX21sdHJuZzsKK0FMVEVSIFRBQkxFIHRlbXBvcmFs X2ZrX21sdHJuZzJtbHRybmcKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfbWx0cm5n Mm1sdHJuZ19mazsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmcgVkFM VUVTICgnWzIsMl0nLCBkYXRlbXVsdGlyYW5nZShkYXRlcmFuZ2UoJzIwMTgtMDEtMDInLCAn MjAxOC0wNC0wMScpKSwgJ1sxLDFdJyk7CistLSBzaG91bGQgZmFpbDoKK0FMVEVSIFRBQkxF IHRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmcKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9m a19tbHRybmcybWx0cm5nX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZh bGlkX2F0KQorCVJFRkVSRU5DRVMgdGVtcG9yYWxfbWx0cm5nOworLS0gb2theSBhZ2FpbjoK K0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmc7CitBTFRFUiBUQUJMRSB0 ZW1wb3JhbF9ma19tbHRybmcybWx0cm5nCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtf bWx0cm5nMm1sdHJuZ19maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxp ZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX21sdHJuZzsKKworLS0KKy0tIHRlc3QgcGdf Z2V0X2NvbnN0cmFpbnRkZWYKKy0tCisKK1NFTEVDVCBwZ19nZXRfY29uc3RyYWludGRlZihv aWQpIEZST00gcGdfY29uc3RyYWludCBXSEVSRSBjb25uYW1lID0gJ3RlbXBvcmFsX2ZrX21s dHJuZzJtbHRybmdfZmsnOworCistLQorLS0gdGVzdCBGSyBjaGlsZCBpbnNlcnRzCistLQor CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19tbHRybmcybWx0cm5nIFZBTFVFUyAoJ1sxLDFd JywgZGF0ZW11bHRpcmFuZ2UoZGF0ZXJhbmdlKCcyMDE4LTAxLTAyJywgJzIwMTgtMDItMDEn KSksICdbMSwxXScpOworLS0gc2hvdWxkIGZhaWw6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9m a19tbHRybmcybWx0cm5nIFZBTFVFUyAoJ1syLDJdJywgZGF0ZW11bHRpcmFuZ2UoZGF0ZXJh bmdlKCcyMDE4LTAxLTAyJywgJzIwMTgtMDQtMDEnKSksICdbMSwxXScpOworLS0gbm93IGl0 IHNob3VsZCB3b3JrOgorSU5TRVJUIElOVE8gdGVtcG9yYWxfbWx0cm5nIFZBTFVFUyAoJ1sx LDFdJywgZGF0ZW11bHRpcmFuZ2UoZGF0ZXJhbmdlKCcyMDE4LTAyLTAzJywgJzIwMTgtMDMt MDMnKSkpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfbWx0cm5nMm1sdHJuZyBWQUxVRVMg KCdbMiwyXScsIGRhdGVtdWx0aXJhbmdlKGRhdGVyYW5nZSgnMjAxOC0wMS0wMicsICcyMDE4 LTA0LTAxJykpLCAnWzEsMV0nKTsKKworLS0KKy0tIHRlc3QgRksgY2hpbGQgdXBkYXRlcwor LS0KKworVVBEQVRFIHRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmcgU0VUIHZhbGlkX2F0ID0g ZGF0ZW11bHRpcmFuZ2UoZGF0ZXJhbmdlKCcyMDE4LTAxLTAyJywgJzIwMTgtMDMtMDEnKSkg V0hFUkUgaWQgPSAnWzEsMV0nOworLS0gc2hvdWxkIGZhaWw6CitVUERBVEUgdGVtcG9yYWxf ZmtfbWx0cm5nMm1sdHJuZyBTRVQgdmFsaWRfYXQgPSBkYXRlbXVsdGlyYW5nZShkYXRlcmFu Z2UoJzIwMTgtMDEtMDInLCAnMjAxOC0wNS0wMScpKSBXSEVSRSBpZCA9ICdbMSwxXSc7CitV UERBVEUgdGVtcG9yYWxfZmtfbWx0cm5nMm1sdHJuZyBTRVQgcGFyZW50X2lkID0gJ1s4LDhd JyBXSEVSRSBpZCA9ICdbMSwxXSc7CisKKy0tIEFMVEVSIEZLIERFRkVSUkFCTEUKKworQkVH SU47CisgIElOU0VSVCBJTlRPIHRlbXBvcmFsX21sdHJuZyBWQUxVRVMKKyAgICAoJ1s1LDVd JywgZGF0ZW11bHRpcmFuZ2UoZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEn KSkpLAorICAgICgnWzUsNV0nLCBkYXRlbXVsdGlyYW5nZShkYXRlcmFuZ2UoJzIwMTgtMDIt MDEnLCAnMjAxOC0wMy0wMScpKSk7CisgIElOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX21sdHJu ZzJtbHRybmcgVkFMVUVTCisgICAgKCdbMywzXScsIGRhdGVtdWx0aXJhbmdlKGRhdGVyYW5n ZSgnMjAxOC0wMS0wNScsICcyMDE4LTAxLTEwJykpLCAnWzUsNV0nKTsKKyAgQUxURVIgVEFC TEUgdGVtcG9yYWxfZmtfbWx0cm5nMm1sdHJuZworICAgIEFMVEVSIENPTlNUUkFJTlQgdGVt cG9yYWxfZmtfbWx0cm5nMm1sdHJuZ19maworICAgIERFRkVSUkFCTEUgSU5JVElBTExZIERF RkVSUkVEOworCisgIERFTEVURSBGUk9NIHRlbXBvcmFsX21sdHJuZyBXSEVSRSBpZCA9ICdb NSw1XSc7IC0tc2hvdWxkIG5vdCBmYWlsIHlldC4KK0NPTU1JVDsgLS0gc2hvdWxkIGZhaWwg aGVyZS4KKworLS0KKy0tIHRlc3QgRksgcGFyZW50IHVwZGF0ZXMgTk8gQUNUSU9OCistLQor CistLSBhIFBLIHVwZGF0ZSB0aGF0IHN1Y2NlZWRzIGJlY2F1c2UgdGhlIG51bWVyaWMgaWQg aXNuJ3QgcmVmZXJlbmNlZDoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX21sdHJuZyBWQUxVRVMg KCdbNSw1XScsIGRhdGVtdWx0aXJhbmdlKGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4 LTAyLTAxJykpKTsKK1VQREFURSB0ZW1wb3JhbF9tbHRybmcgU0VUIHZhbGlkX2F0ID0gZGF0 ZW11bHRpcmFuZ2UoZGF0ZXJhbmdlKCcyMDE2LTAxLTAxJywgJzIwMTYtMDItMDEnKSkgV0hF UkUgaWQgPSAnWzUsNV0nOworLS0gYSBQSyB1cGRhdGUgdGhhdCBzdWNjZWVkcyBldmVuIHRo b3VnaCB0aGUgbnVtZXJpYyBpZCBpcyByZWZlcmVuY2VkIGJlY2F1c2UgdGhlIHJhbmdlIGlz bid0OgorREVMRVRFIEZST00gdGVtcG9yYWxfbWx0cm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsK K0lOU0VSVCBJTlRPIHRlbXBvcmFsX21sdHJuZyBWQUxVRVMKKyAgKCdbNSw1XScsIGRhdGVt dWx0aXJhbmdlKGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykpKSwKKyAg KCdbNSw1XScsIGRhdGVtdWx0aXJhbmdlKGRhdGVyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4 LTAzLTAxJykpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmcgVkFM VUVTICgnWzMsM10nLCBkYXRlbXVsdGlyYW5nZShkYXRlcmFuZ2UoJzIwMTgtMDEtMDUnLCAn MjAxOC0wMS0xMCcpKSwgJ1s1LDVdJyk7CitVUERBVEUgdGVtcG9yYWxfbWx0cm5nIFNFVCB2 YWxpZF9hdCA9IGRhdGVtdWx0aXJhbmdlKGRhdGVyYW5nZSgnMjAxNi0wMi0wMScsICcyMDE2 LTAzLTAxJykpCitXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gZGF0ZW11bHRp cmFuZ2UoZGF0ZXJhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKSk7CistLSBhIFBL IHVwZGF0ZSB0aGF0IGZhaWxzIGJlY2F1c2UgYm90aCBhcmUgcmVmZXJlbmNlZDoKK1VQREFU RSB0ZW1wb3JhbF9tbHRybmcgU0VUIHZhbGlkX2F0ID0gZGF0ZW11bHRpcmFuZ2UoZGF0ZXJh bmdlKCcyMDE2LTAxLTAxJywgJzIwMTYtMDItMDEnKSkKK1dIRVJFIGlkID0gJ1s1LDVdJyBB TkQgdmFsaWRfYXQgPSBkYXRlbXVsdGlyYW5nZShkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAn MjAxOC0wMi0wMScpKTsKKy0tIGNoYW5naW5nIHRoZSBzY2FsYXIgcGFydCBmYWlsczoKK1VQ REFURSB0ZW1wb3JhbF9tbHRybmcgU0VUIGlkID0gJ1s3LDddJworV0hFUkUgaWQgPSAnWzUs NV0nIEFORCB2YWxpZF9hdCA9IGRhdGVtdWx0aXJhbmdlKGRhdGVyYW5nZSgnMjAxOC0wMS0w MScsICcyMDE4LTAyLTAxJykpOworLS0gY2xlYW4gdXA6CitERUxFVEUgRlJPTSB0ZW1wb3Jh bF9ma19tbHRybmcybWx0cm5nIFdIRVJFIHBhcmVudF9pZCA9ICdbNSw1XSc7CitERUxFVEUg RlJPTSB0ZW1wb3JhbF9tbHRybmcgV0hFUkUgaWQgSU4gKCdbNSw1XScsICdbNyw3XScpOwor CistLQorLS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRlcyBSRVNUUklDVAorLS0KKworQUxURVIg VEFCTEUgdGVtcG9yYWxfZmtfbWx0cm5nMm1sdHJuZworCURST1AgQ09OU1RSQUlOVCB0ZW1w b3JhbF9ma19tbHRybmcybWx0cm5nX2ZrOworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfbWx0 cm5nMm1sdHJuZworCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmdf ZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJUkVGRVJF TkNFUyB0ZW1wb3JhbF9tbHRybmcKKwlPTiBVUERBVEUgUkVTVFJJQ1Q7CistLSBhIFBLIHVw ZGF0ZSB0aGF0IHN1Y2NlZWRzIGJlY2F1c2UgdGhlIG51bWVyaWMgaWQgaXNuJ3QgcmVmZXJl bmNlZDoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX21sdHJuZyBWQUxVRVMgKCdbNSw1XScsIGRh dGVtdWx0aXJhbmdlKGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykpKTsK K1VQREFURSB0ZW1wb3JhbF9tbHRybmcgU0VUIHZhbGlkX2F0ID0gZGF0ZW11bHRpcmFuZ2Uo ZGF0ZXJhbmdlKCcyMDE2LTAxLTAxJywgJzIwMTYtMDItMDEnKSkgV0hFUkUgaWQgPSAnWzUs NV0nOworLS0gYSBQSyB1cGRhdGUgdGhhdCBzdWNjZWVkcyBldmVuIHRob3VnaCB0aGUgbnVt ZXJpYyBpZCBpcyByZWZlcmVuY2VkIGJlY2F1c2UgdGhlIHJhbmdlIGlzbid0OgorREVMRVRF IEZST00gdGVtcG9yYWxfbWx0cm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsKK0lOU0VSVCBJTlRP IHRlbXBvcmFsX21sdHJuZyBWQUxVRVMKKyAgKCdbNSw1XScsIGRhdGVtdWx0aXJhbmdlKGRh dGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykpKSwKKyAgKCdbNSw1XScsIGRh dGVtdWx0aXJhbmdlKGRhdGVyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJykpKTsK K0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmcgVkFMVUVTICgnWzMsM10n LCBkYXRlbXVsdGlyYW5nZShkYXRlcmFuZ2UoJzIwMTgtMDEtMDUnLCAnMjAxOC0wMS0xMCcp KSwgJ1s1LDVdJyk7CitVUERBVEUgdGVtcG9yYWxfbWx0cm5nIFNFVCB2YWxpZF9hdCA9IGRh dGVtdWx0aXJhbmdlKGRhdGVyYW5nZSgnMjAxNi0wMi0wMScsICcyMDE2LTAzLTAxJykpCitX SEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gZGF0ZW11bHRpcmFuZ2UoZGF0ZXJh bmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKSk7CistLSBhIFBLIHVwZGF0ZSB0aGF0 IGZhaWxzIGJlY2F1c2UgYm90aCBhcmUgcmVmZXJlbmNlZDoKK1VQREFURSB0ZW1wb3JhbF9t bHRybmcgU0VUIHZhbGlkX2F0ID0gZGF0ZW11bHRpcmFuZ2UoZGF0ZXJhbmdlKCcyMDE2LTAx LTAxJywgJzIwMTYtMDItMDEnKSkKK1dIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQg PSBkYXRlbXVsdGlyYW5nZShkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScp KTsKKy0tIGNoYW5naW5nIHRoZSBzY2FsYXIgcGFydCBmYWlsczoKK1VQREFURSB0ZW1wb3Jh bF9tbHRybmcgU0VUIGlkID0gJ1s3LDddJworV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxp ZF9hdCA9IGRhdGVtdWx0aXJhbmdlKGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAy LTAxJykpOworLS0gY2xlYW4gdXA6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19tbHRybmcy bWx0cm5nIFdIRVJFIHBhcmVudF9pZCA9ICdbNSw1XSc7CitERUxFVEUgRlJPTSB0ZW1wb3Jh bF9tbHRybmcgV0hFUkUgaWQgSU4gKCdbNSw1XScsICdbNyw3XScpOworLS0KKy0tIHRlc3Qg RksgcGFyZW50IGRlbGV0ZXMgTk8gQUNUSU9OCistLQorQUxURVIgVEFCTEUgdGVtcG9yYWxf ZmtfbWx0cm5nMm1sdHJuZworCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19tbHRybmcy bWx0cm5nX2ZrOworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfbWx0cm5nMm1sdHJuZworCUFE RCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmdfZmsKKwlGT1JFSUdOIEtF WSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJUkVGRVJFTkNFUyB0ZW1wb3JhbF9t bHRybmc7CistLSBhIFBLIGRlbGV0ZSB0aGF0IHN1Y2NlZWRzIGJlY2F1c2UgdGhlIG51bWVy aWMgaWQgaXNuJ3QgcmVmZXJlbmNlZDoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX21sdHJuZyBW QUxVRVMgKCdbNSw1XScsIGRhdGVtdWx0aXJhbmdlKGRhdGVyYW5nZSgnMjAxOC0wMS0wMScs ICcyMDE4LTAyLTAxJykpKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX21sdHJuZyBXSEVSRSBp ZCA9ICdbNSw1XSc7CistLSBhIFBLIGRlbGV0ZSB0aGF0IHN1Y2NlZWRzIGV2ZW4gdGhvdWdo IHRoZSBudW1lcmljIGlkIGlzIHJlZmVyZW5jZWQgYmVjYXVzZSB0aGUgcmFuZ2UgaXNuJ3Q6 CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9tbHRybmcgVkFMVUVTCisgICgnWzUsNV0nLCBkYXRl bXVsdGlyYW5nZShkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKSksCisg ICgnWzUsNV0nLCBkYXRlbXVsdGlyYW5nZShkYXRlcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAx OC0wMy0wMScpKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19tbHRybmcybWx0cm5nIFZB TFVFUyAoJ1szLDNdJywgZGF0ZW11bHRpcmFuZ2UoZGF0ZXJhbmdlKCcyMDE4LTAxLTA1Jywg JzIwMTgtMDEtMTAnKSksICdbNSw1XScpOworREVMRVRFIEZST00gdGVtcG9yYWxfbWx0cm5n IFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRlbXVsdGlyYW5nZShkYXRl cmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpKTsKKy0tIGEgUEsgZGVsZXRlIHRo YXQgZmFpbHMgYmVjYXVzZSBib3RoIGFyZSByZWZlcmVuY2VkOgorREVMRVRFIEZST00gdGVt cG9yYWxfbWx0cm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRlbXVs dGlyYW5nZShkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKKy0tIGNs ZWFuIHVwOgorREVMRVRFIEZST00gdGVtcG9yYWxfZmtfbWx0cm5nMm1sdHJuZyBXSEVSRSBw YXJlbnRfaWQgPSAnWzUsNV0nOworREVMRVRFIEZST00gdGVtcG9yYWxfbWx0cm5nIFdIRVJF IGlkIElOICgnWzUsNV0nKTsKKworLS0KKy0tIHRlc3QgRksgcGFyZW50IGRlbGV0ZXMgUkVT VFJJQ1QKKy0tCitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19tbHRybmcybWx0cm5nCisJRFJP UCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmdfZms7CitBTFRFUiBUQUJM RSB0ZW1wb3JhbF9ma19tbHRybmcybWx0cm5nCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxf ZmtfbWx0cm5nMm1sdHJuZ19maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2 YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX21sdHJuZworCU9OIERFTEVURSBSRVNU UklDVDsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX21sdHJuZyBWQUxVRVMgKCdbNSw1XScsIGRh dGVtdWx0aXJhbmdlKGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykpKTsK K0RFTEVURSBGUk9NIHRlbXBvcmFsX21sdHJuZyBXSEVSRSBpZCA9ICdbNSw1XSc7CistLSBh IFBLIGRlbGV0ZSB0aGF0IHN1Y2NlZWRzIGV2ZW4gdGhvdWdoIHRoZSBudW1lcmljIGlkIGlz IHJlZmVyZW5jZWQgYmVjYXVzZSB0aGUgcmFuZ2UgaXNuJ3Q6CitJTlNFUlQgSU5UTyB0ZW1w b3JhbF9tbHRybmcgVkFMVUVTCisgICgnWzUsNV0nLCBkYXRlbXVsdGlyYW5nZShkYXRlcmFu Z2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKSksCisgICgnWzUsNV0nLCBkYXRlbXVs dGlyYW5nZShkYXRlcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpKSk7CitJTlNF UlQgSU5UTyB0ZW1wb3JhbF9ma19tbHRybmcybWx0cm5nIFZBTFVFUyAoJ1szLDNdJywgZGF0 ZW11bHRpcmFuZ2UoZGF0ZXJhbmdlKCcyMDE4LTAxLTA1JywgJzIwMTgtMDEtMTAnKSksICdb NSw1XScpOworREVMRVRFIEZST00gdGVtcG9yYWxfbWx0cm5nIFdIRVJFIGlkID0gJ1s1LDVd JyBBTkQgdmFsaWRfYXQgPSBkYXRlbXVsdGlyYW5nZShkYXRlcmFuZ2UoJzIwMTgtMDItMDEn LCAnMjAxOC0wMy0wMScpKTsKKy0tIGEgUEsgZGVsZXRlIHRoYXQgZmFpbHMgYmVjYXVzZSBi b3RoIGFyZSByZWZlcmVuY2VkOgorREVMRVRFIEZST00gdGVtcG9yYWxfbWx0cm5nIFdIRVJF IGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRlbXVsdGlyYW5nZShkYXRlcmFuZ2Uo JzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKKy0tIGNsZWFuIHVwOgorREVMRVRFIEZS T00gdGVtcG9yYWxfZmtfbWx0cm5nMm1sdHJuZyBXSEVSRSBwYXJlbnRfaWQgPSAnWzUsNV0n OworREVMRVRFIEZST00gdGVtcG9yYWxfbWx0cm5nIFdIRVJFIGlkIElOICgnWzUsNV0nKTsK KworLS0gRksgYmV0d2VlbiBwYXJ0aXRpb25lZCB0YWJsZXMKKworQ1JFQVRFIFRBQkxFIHRl bXBvcmFsX3BhcnRpdGlvbmVkX3JuZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IGRh dGVyYW5nZSwKKyAgbmFtZSB0ZXh0LAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfcGFyaXRpb25l ZF9ybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQor KSBQQVJUSVRJT04gQlkgTElTVCAoaWQpOworQ1JFQVRFIFRBQkxFIHRwMSBwYXJ0aXRpb24g T0YgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIEZPUiBWQUxVRVMgSU4gKCdbMSwxXScsICdb MywzXScsICdbNSw1XScsICdbNyw3XScsICdbOSw5XScsICdbMTEsMTFdJyk7CitDUkVBVEUg VEFCTEUgdHAyIHBhcnRpdGlvbiBPRiB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgRk9SIFZB TFVFUyBJTiAoJ1syLDJdJywgJ1s0LDRdJywgJ1s2LDZdJywgJ1s4LDhdJywgJ1sxMCwxMF0n LCAnWzEyLDEyXScpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZB TFVFUworICAoJ1sxLDFdJywgZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIwMDAtMDItMDEn KSwgJ29uZScpLAorICAoJ1sxLDFdJywgZGF0ZXJhbmdlKCcyMDAwLTAyLTAxJywgJzIwMDAt MDMtMDEnKSwgJ29uZScpLAorICAoJ1syLDJdJywgZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywg JzIwMTAtMDEtMDEnKSwgJ3R3bycpOworCitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcGFydGl0 aW9uZWRfZmtfcm5nMnJuZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IGRhdGVyYW5n ZSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0 aW9uZWRfZmtfcm5nMnJuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQg T1ZFUkxBUFMpLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJu Z19mayBGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVS RU5DRVMgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIChpZCwgUEVSSU9EIHZhbGlkX2F0KQor KSBQQVJUSVRJT04gQlkgTElTVCAoaWQpOworQ1JFQVRFIFRBQkxFIHRma3AxIHBhcnRpdGlv biBPRiB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIEZPUiBWQUxVRVMgSU4gKCdb MSwxXScsICdbMywzXScsICdbNSw1XScsICdbNyw3XScsICdbOSw5XScsICdbMTEsMTFdJyk7 CitDUkVBVEUgVEFCTEUgdGZrcDIgcGFydGl0aW9uIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVk X2ZrX3JuZzJybmcgRk9SIFZBTFVFUyBJTiAoJ1syLDJdJywgJ1s0LDRdJywgJ1s2LDZdJywg J1s4LDhdJywgJ1sxMCwxMF0nLCAnWzEyLDEyXScpOworCistLSBwYXJ0aXRpb25lZCBGSyBj aGlsZCBpbnNlcnRzCisKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3Ju ZzJybmcgVkFMVUVTCisgICgnWzEsMV0nLCBkYXRlcmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAw MC0wMi0xNScpLCAnWzEsMV0nKSwKKyAgKCdbMSwxXScsIGRhdGVyYW5nZSgnMjAwMS0wMS0w MScsICcyMDAyLTAxLTAxJyksICdbMiwyXScpLAorICAoJ1syLDJdJywgZGF0ZXJhbmdlKCcy MDAwLTAxLTAxJywgJzIwMDAtMDItMTUnKSwgJ1sxLDFdJyk7CistLSBzaG91bGQgZmFpbDoK K0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTCisg ICgnWzMsM10nLCBkYXRlcmFuZ2UoJzIwMTAtMDEtMDEnLCAnMjAxMC0wMi0xNScpLCAnWzEs MV0nKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFM VUVTCisgICgnWzMsM10nLCBkYXRlcmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAwMC0wMi0xNScp LCAnWzMsM10nKTsKKworLS0gcGFydGl0aW9uZWQgRksgY2hpbGQgdXBkYXRlcworCitVUERB VEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBTRVQgdmFsaWRfYXQgPSBkYXRl cmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAwMC0wMi0xMycpIFdIRVJFIGlkID0gJ1syLDJdJzsK Ky0tIG1vdmUgYSByb3cgZnJvbSB0aGUgZmlyc3QgcGFydGl0aW9uIHRvIHRoZSBzZWNvbmQK K1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFNFVCBpZCA9ICdbNCw0 XScgV0hFUkUgaWQgPSAnWzEsMV0nOworLS0gbW92ZSBhIHJvdyBmcm9tIHRoZSBzZWNvbmQg cGFydGl0aW9uIHRvIHRoZSBmaXJzdAorVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2Zr X3JuZzJybmcgU0VUIGlkID0gJ1sxLDFdJyBXSEVSRSBpZCA9ICdbNCw0XSc7CistLSBzaG91 bGQgZmFpbDoKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFNFVCB2 YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDAwLTA0LTAxJykgV0hFUkUg aWQgPSAnWzEsMV0nOworCistLSBwYXJ0aXRpb25lZCBGSyBwYXJlbnQgdXBkYXRlcyBOTyBB Q1RJT04KKworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAo J1s1LDVdJywgZGF0ZXJhbmdlKCcyMDE2LTAxLTAxJywgJzIwMTYtMDItMDEnKSk7CitVUERB VEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFNFVCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgn MjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykgV0hFUkUgaWQgPSAnWzUsNV0nOworSU5TRVJU IElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1s1LDVdJywgZGF0ZXJh bmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1szLDNdJywgZGF0ZXJhbmdlKCcy MDE4LTAxLTA1JywgJzIwMTgtMDEtMTAnKSwgJ1s1LDVdJyk7CitVUERBVEUgdGVtcG9yYWxf cGFydGl0aW9uZWRfcm5nIFNFVCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAxNi0wMi0wMScs ICcyMDE2LTAzLTAxJykKKyAgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IGRh dGVyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJyk7CistLSBzaG91bGQgZmFpbDoK K1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgU0VUIHZhbGlkX2F0ID0gZGF0ZXJh bmdlKCcyMDE2LTAxLTAxJywgJzIwMTYtMDItMDEnKQorICBXSEVSRSBpZCA9ICdbNSw1XScg QU5EIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsK Ky0tIGNsZWFuIHVwOgorREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5n MnJuZyBXSEVSRSBwYXJlbnRfaWQgPSAnWzUsNV0nOworREVMRVRFIEZST00gdGVtcG9yYWxf cGFydGl0aW9uZWRfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsKKworLS0gcGFydGl0aW9uZWQg RksgcGFyZW50IGRlbGV0ZXMgTk8gQUNUSU9OCisKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3Bh cnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbNSw1XScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScs ICcyMDE4LTAyLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5n IFZBTFVFUyAoJ1s1LDVdJywgZGF0ZXJhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEn KSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVF UyAoJ1szLDNdJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTA1JywgJzIwMTgtMDEtMTAnKSwgJ1s1 LDVdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgV0hFUkUgaWQg PSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4 LTAzLTAxJyk7CistLSBzaG91bGQgZmFpbDoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3BhcnRp dGlvbmVkX3JuZyBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gZGF0ZXJhbmdl KCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKKy0tIGNsZWFuIHVwOgorREVMRVRFIEZS T00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBwYXJlbnRfaWQgPSAn WzUsNV0nOworREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFdIRVJFIGlk ID0gJ1s1LDVdJzsKKworLS0gcGFydGl0aW9uZWQgRksgcGFyZW50IHVwZGF0ZXMgUkVTVFJJ Q1QKKworQUxURVIgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZworCURS T1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX2ZrOworQUxU RVIgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZworCUFERCBDT05TVFJB SU5UIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfZmsKKwlGT1JFSUdOIEtFWSAo cGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJUkVGRVJFTkNFUyB0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ybmcKKwlPTiBERUxFVEUgUkVTVFJJQ1Q7CitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzUsNV0nLCBkYXRlcmFuZ2UoJzIwMTYtMDEt MDEnLCAnMjAxNi0wMi0wMScpKTsKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcg U0VUIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKSBX SEVSRSBpZCA9ICdbNSw1XSc7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9y bmcgVkFMVUVTICgnWzUsNV0nLCBkYXRlcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0w MScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFM VUVTICgnWzMsM10nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDUnLCAnMjAxOC0wMS0xMCcpLCAn WzUsNV0nKTsKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgU0VUIHZhbGlkX2F0 ID0gZGF0ZXJhbmdlKCcyMDE2LTAyLTAxJywgJzIwMTYtMDMtMDEnKQorICBXSEVSRSBpZCA9 ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgt MDMtMDEnKTsKKy0tIHNob3VsZCBmYWlsOgorVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVk X3JuZyBTRVQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTYtMDEtMDEnLCAnMjAxNi0wMi0w MScpCisgIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIw MTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworLS0gY2xlYW4gdXA6CitERUxFVEUgRlJPTSB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIHBhcmVudF9pZCA9ICdbNSw1 XSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgV0hFUkUgaWQgPSAn WzUsNV0nOworCistLSBwYXJ0aXRpb25lZCBGSyBwYXJlbnQgZGVsZXRlcyBSRVNUUklDVAor CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzUsNV0n LCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKK0lOU0VSVCBJTlRP IHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbNSw1XScsIGRhdGVyYW5nZSgn MjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFy dGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMywzXScsIGRhdGVyYW5nZSgnMjAxOC0w MS0wNScsICcyMDE4LTAxLTEwJyksICdbNSw1XScpOworREVMRVRFIEZST00gdGVtcG9yYWxf cGFydGl0aW9uZWRfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRl cmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpOworLS0gc2hvdWxkIGZhaWw6CitE RUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0n IEFORCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7 CisKKy0tIHBhcnRpdGlvbmVkIEZLIHBhcmVudCB1cGRhdGVzIENBU0NBREUKKworQUxURVIg VEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZworCURST1AgQ09OU1RSQUlO VCB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX2ZrLAorCUFERCBDT05TVFJBSU5U IHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfZmsKKwkJRk9SRUlHTiBLRVkgKHBh cmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3BhcnRp dGlvbmVkX3JuZworCQlPTiBERUxFVEUgQ0FTQ0FERSBPTiBVUERBVEUgQ0FTQ0FERTsKKwor LS0gcGFydGl0aW9uZWQgRksgcGFyZW50IGRlbGV0ZXMgQ0FTQ0FERQorCistLSBwYXJ0aXRp b25lZCBGSyBwYXJlbnQgdXBkYXRlcyBTRVQgTlVMTAorCitBTFRFUiBUQUJMRSB0ZW1wb3Jh bF9wYXJ0aXRpb25lZF9ma19ybmcycm5nCisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX3Bh cnRpdGlvbmVkX2ZrX3JuZzJybmdfZmssCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfcGFy dGl0aW9uZWRfZmtfcm5nMnJuZ19maworCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJ T0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nCisJ CU9OIERFTEVURSBTRVQgTlVMTCBPTiBVUERBVEUgU0VUIE5VTEw7CisKKy0tIHBhcnRpdGlv bmVkIEZLIHBhcmVudCBkZWxldGVzIFNFVCBOVUxMCisKKy0tIHBhcnRpdGlvbmVkIEZLIHBh cmVudCB1cGRhdGVzIFNFVCBERUZBVUxUCisKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX3BhcnRp dGlvbmVkX2ZrX3JuZzJybmcKKyAgQUxURVIgQ09MVU1OIHBhcmVudF9pZCBTRVQgREVGQVVM VCAnWy0xLC0xXScsCisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2Zr X3JuZzJybmdfZmssCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtf cm5nMnJuZ19maworCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQp CisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nCisJCU9OIERFTEVURSBT RVQgREVGQVVMVCBPTiBVUERBVEUgU0VUIERFRkFVTFQ7CisKKy0tIHBhcnRpdGlvbmVkIEZL IHBhcmVudCBkZWxldGVzIFNFVCBERUZBVUxUCisKK0RST1AgVEFCTEUgdGVtcG9yYWxfcGFy dGl0aW9uZWRfZmtfcm5nMnJuZzsKK0RST1AgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRf cm5nOwotLSAKMi40Mi4wCgo= --------------XirkSnpA0J2rgDaW8dSEFd2s Content-Type: text/x-patch; charset=UTF-8; name="v25-0005-Add-support-funcs-for-FOR-PORTION-OF.patch" Content-Disposition: attachment; filename="v25-0005-Add-support-funcs-for-FOR-PORTION-OF.patch" Content-Transfer-Encoding: base64 RnJvbSAyNzgyODBmNDFhYWI1MTA4NTdkMzM3ODc5MGM0ZGZkYTVkNTExN2JlIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IFNhdCwgMzAgRGVjIDIwMjMgMjM6MTA6NTkgLTA4 MDAKU3ViamVjdDogW1BBVENIIHYyNSA1LzhdIEFkZCBzdXBwb3J0IGZ1bmNzIGZvciBGT1Ig UE9SVElPTiBPRgoKLSBBZGRzIGludGVyc2VjdCBzdXBwb3J0IHByb2NzLgoKICBUaGVzZSBq dXN0IGNhbGwgdGhlIGV4aXN0aW5nIGludGVyc2VjdCBmdW5jdGlvbnMsCiAgYnV0IHRoZXkg bGV0IHVzIGNvbXB1dGUgdGhlIHBvcnRpb24gb2YgYSByb3cgdGhhdCBpcyB1cGRhdGVkL2Rl bGV0ZWQKICBpbiBhIEZPUiBQT1JUSU9OIGNvbW1hbmQuCgotIEFkZHMge211bHRpLH1yYW5n ZV93aXRob3V0X3BvcnRpb24gc3VwcG9ydCBwcm9jcwoKICBUaGVzZSByZXR1cm4gYW4gYXJy YXkgb2YgdGhlaXIgaW5wdXQgdHlwZSBhbmQgd29yayBsaWtlIG1pbnVzIGJ1dCBkb24ndAog IGZhaWwgb24gc3BsaXRzLiBUaGV5IG5ldmVyIGNvbnRhaW4gZW1wdHkgZWxlbWVudHMuIFdl IHdpbGwgdXNlIHRoaXMgdG8KICBjb21wdXRlIEZPUiBQT1JUSU9OIE9GIGxlZnRvdmVycy4K LS0tCiBjb250cmliL2Jsb29tL2JsdmFsaWRhdGUuYyAgICAgICAgICAgICAgICAgICAgfCAg IDIgKy0KIGRvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sICAgICAgICAgICAgICAgICAgICB8 ICAgMiArLQogZG9jL3NyYy9zZ21sL2dpc3Quc2dtbCAgICAgICAgICAgICAgICAgICAgICAg IHwgMTU1ICsrKysrKysrKysrKysrKystCiBkb2Mvc3JjL3NnbWwveGluZGV4LnNnbWwgICAg ICAgICAgICAgICAgICAgICAgfCAgMTQgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2Jy aW5fdmFsaWRhdGUuYyAgICAgICB8ICAgOCArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9n aW52YWxpZGF0ZS5jICAgICAgICAgIHwgIDEyICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvZ2lz dC9naXN0dmFsaWRhdGUuYyAgICAgICAgfCAgMzEgKystLQogc3JjL2JhY2tlbmQvYWNjZXNz L2luZGV4L2FtdmFsaWRhdGUuYyAgICAgICAgIHwgICA2ICstCiBzcmMvYmFja2VuZC9hY2Nl c3MvbmJ0cmVlL25idHZhbGlkYXRlLmMgICAgICAgfCAgIDggKy0KIHNyYy9iYWNrZW5kL2Fj Y2Vzcy9zcGdpc3Qvc3BndmFsaWRhdGUuYyAgICAgICB8ICAgOCArLQogc3JjL2JhY2tlbmQv dXRpbHMvYWR0L211bHRpcmFuZ2V0eXBlcy5jICAgICAgIHwgIDcxICsrKysrKysrCiBzcmMv YmFja2VuZC91dGlscy9hZHQvcmFuZ2V0eXBlcy5jICAgICAgICAgICAgfCAxNjMgKysrKysr KysrKysrKysrKysrCiBzcmMvaW5jbHVkZS9hY2Nlc3MvYW12YWxpZGF0ZS5oICAgICAgICAg ICAgICAgfCAgIDQgKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9naXN0LmggICAgICAgICAgICAg ICAgICAgICB8ICAgNCArLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19hbXByb2MuZGF0ICAg ICAgICAgICAgIHwgIDE1ICsrCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAg ICAgICAgICAgICAgfCAgIDggKwogc3JjL2luY2x1ZGUvdXRpbHMvcmFuZ2V0eXBlcy5oICAg ICAgICAgICAgICAgIHwgICAyICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvbXVsdGly YW5nZXR5cGVzLm91dCB8IDExNiArKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL3JhbmdldHlwZXMub3V0ICAgICAgfCAgNTQgKysrKysrCiBzcmMvdGVzdC9yZWdy ZXNzL3NxbC9tdWx0aXJhbmdldHlwZXMuc3FsICAgICAgfCAgMjIgKysrCiBzcmMvdGVzdC9y ZWdyZXNzL3NxbC9yYW5nZXR5cGVzLnNxbCAgICAgICAgICAgfCAgMTAgKysKIDIxIGZpbGVz IGNoYW5nZWQsIDY3NiBpbnNlcnRpb25zKCspLCAzOSBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9jb250cmliL2Jsb29tL2JsdmFsaWRhdGUuYyBiL2NvbnRyaWIvYmxvb20vYmx2YWxp ZGF0ZS5jCmluZGV4IDg4YzVhNzkxOTc1Li45ZTM5ZTM5ZTE3NCAxMDA2NDQKLS0tIGEvY29u dHJpYi9ibG9vbS9ibHZhbGlkYXRlLmMKKysrIGIvY29udHJpYi9ibG9vbS9ibHZhbGlkYXRl LmMKQEAgLTEwNSw3ICsxMDUsNyBAQCBibHZhbGlkYXRlKE9pZCBvcGNsYXNzb2lkKQogCQlz d2l0Y2ggKHByb2Nmb3JtLT5hbXByb2NudW0pCiAJCXsKIAkJCWNhc2UgQkxPT01fSEFTSF9Q Uk9DOgotCQkJCW9rID0gY2hlY2tfYW1wcm9jX3NpZ25hdHVyZShwcm9jZm9ybS0+YW1wcm9j LCBJTlQ0T0lELCBmYWxzZSwKKwkJCQlvayA9IGNoZWNrX2FtcHJvY19zaWduYXR1cmUocHJv Y2Zvcm0tPmFtcHJvYywgSU5UNE9JRCwgZmFsc2UsIGZhbHNlLAogCQkJCQkJCQkJCQkxLCAx LCBvcGNrZXl0eXBlKTsKIAkJCQlicmVhazsKIAkJCWNhc2UgQkxPT01fT1BUSU9OU19QUk9D OgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwgYi9kb2Mvc3JjL3Nn bWwvY2F0YWxvZ3Muc2dtbAppbmRleCA4ODBmNzE3YjEwMy4uNmY2YzhhNTIwNDkgMTAwNjQ0 Ci0tLSBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9j YXRhbG9ncy5zZ21sCkBAIC04NjUsNyArODY1LDcgQEAKICAgICAgIDwvcGFyYT4KICAgICAg IDxwYXJhPgogICAgICAgIFRoZSBCLXRyZWUgb3BlcmF0b3IgZmFtaWx5IHRoaXMgZW50cnkg c29ydHMgYWNjb3JkaW5nIHRvLCBpZiBhbgotICAgICAgIG9yZGVyaW5nIG9wZXJhdG9yOyB6 ZXJvIGlmIGEgc2VhcmNoIG9wZXJhdG9yCisgICAgICAgb3JkZXJpbmcgb3BlcmF0b3I7IHpl cm8gaWYgYSBzZWFyY2ggb3BlcmF0b3Igb3IgcG9ydGlvbiBvcGVyYXRvcgogICAgICAgPC9w YXJhPjwvZW50cnk+CiAgICAgIDwvcm93PgogICAgIDwvdGJvZHk+CmRpZmYgLS1naXQgYS9k b2Mvc3JjL3NnbWwvZ2lzdC5zZ21sIGIvZG9jL3NyYy9zZ21sL2dpc3Quc2dtbAppbmRleCBl NjdkZDRiODU5Zi4uYmJmNzg0MTgwN2QgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9naXN0 LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2dpc3Quc2dtbApAQCAtMjcyLDcgKzI3Miw3IEBA IENSRUFURSBJTkRFWCBPTiBteV90YWJsZSBVU0lORyBHSVNUIChteV9pbmV0X2NvbHVtbiBp bmV0X29wcyk7CiAKICA8cGFyYT4KICAgIFRoZXJlIGFyZSBmaXZlIG1ldGhvZHMgdGhhdCBh biBpbmRleCBvcGVyYXRvciBjbGFzcyBmb3IKLSAgIDxhY3JvbnltPkdpU1Q8L2Fjcm9ueW0+ IG11c3QgcHJvdmlkZSwgYW5kIGVpZ2h0IHRoYXQgYXJlIG9wdGlvbmFsLgorICAgPGFjcm9u eW0+R2lTVDwvYWNyb255bT4gbXVzdCBwcm92aWRlLCBhbmQgdGVuIHRoYXQgYXJlIG9wdGlv bmFsLgogICAgQ29ycmVjdG5lc3Mgb2YgdGhlIGluZGV4IGlzIGVuc3VyZWQKICAgIGJ5IHBy b3BlciBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgPGZ1bmN0aW9uPnNhbWU8L2Z1bmN0aW9uPiwg PGZ1bmN0aW9uPmNvbnNpc3RlbnQ8L2Z1bmN0aW9uPgogICAgYW5kIDxmdW5jdGlvbj51bmlv bjwvZnVuY3Rpb24+IG1ldGhvZHMsIHdoaWxlIGVmZmljaWVuY3kgKHNpemUgYW5kIHNwZWVk KSBvZiB0aGUKQEAgLTMwNCw2ICszMDQsMTIgQEAgQ1JFQVRFIElOREVYIE9OIG15X3RhYmxl IFVTSU5HIEdJU1QgKG15X2luZXRfY29sdW1uIGluZXRfb3BzKTsKICAgIHRlbXBvcmFsIGZv cmVpZ24ga2V5cyB0byBjb21iaW5lZCByZWZlcmVuY2VkIHJvd3Mgd2l0aCB0aGUgc2FtZQog ICAgbm9uLTxsaXRlcmFsPldJVEhPVVQgT1ZFUkxBUFM8L2xpdGVyYWw+IHZhbHVlKHMpIGlu dG8gb25lCiAgICA8bGl0ZXJhbD5XSVRIT1VUIE9WRVJMQVBTPC9saXRlcmFsPiBzcGFuIHRv IGNvbXBhcmUgYWdhaW5zdCByZWZlcmVuY2luZyByb3dzLgorICAgVGhlIG9wdGlvbmFsIGZv dXJ0ZWVudGggbWV0aG9kIDxmdW5jdGlvbj5pbnRlcnNlY3Q8L2Z1bmN0aW9uPiBpcyB1c2Vk IGJ5CisgICA8bGl0ZXJhbD5GT1IgUE9SVElPTiBPRjwvbGl0ZXJhbD4gdG8gY29tcHV0ZSB0 aGUgbmV3IGJvdW5kcyBvZiB0aGUgdXBkYXRlZC8KKyAgIGRlbGV0ZWQgcmVjb3JkLgorICAg VGhlIG9wdGlvbmFsIGZpZnRlZW50aCBtZXRob2QgPGZ1bmN0aW9uPndpdGhvdXRfcG9ydGlv bjwvZnVuY3Rpb24+IGlzIHVzZWQgYnkKKyAgIDxsaXRlcmFsPkZPUiBQT1JUSU9OIE9GPC9s aXRlcmFsPiB0byBjb21wdXRlIHRoZSBsZWZ0b3ZlciByZWNvcmRzIG91dHNpZGUgdGhlCisg ICB0YXJnZXRlZCBib3VuZHMuCiAgPC9wYXJhPgogCiAgPHZhcmlhYmxlbGlzdD4KQEAgLTEz NTIsNiArMTM1OCwxNTMgQEAgbXlfcmFuZ2VfYWdnX2ZpbmFsZm4oUEdfRlVOQ1RJT05fQVJH UykKIAogICAgIFBHX1JFVFVSTl9NVUxUSVJBTkdFX1AobWFrZV9tdWx0aXJhbmdlKG1sdHJu Z3R5cG9pZCwgdHlwY2FjaGUtJmd0O3JuZ3R5cGUsIHJhbmdlX2NvdW50LCByYW5nZXMpKTsK IH0KKzwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgICA8L3BhcmE+CisgICAgIDwvbGlzdGl0ZW0+ CisgICAgPC92YXJsaXN0ZW50cnk+CisgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgPHRlcm0+ PGZ1bmN0aW9uPmludGVyc2VjdDwvZnVuY3Rpb24+PC90ZXJtPgorICAgICA8bGlzdGl0ZW0+ CisgICAgICA8cGFyYT4KKyAgICAgICBHaXZlbiB0d28gdmFsdWVzIG9mIHRoaXMgb3BjbGFz cywgaXQgcmV0dXJucyB0aGVpciBpbnRlcnNlY3Rpb24uCisgICAgICA8L3BhcmE+CisgICAg ICA8cGFyYT4KKyAgICAgICBUaGlzIGlzIHVzZWQgZm9yIHRlbXBvcmFsIHVwZGF0ZSBjb21t YW5kcyB0byBjb21wdXRlIHRoZQorICAgICAgIG5ldyBib3VuZHMgb2YgdGhlIGNoYW5nZWQg cm93LgorICAgICAgPC9wYXJhPgorCisgICAgICA8cGFyYT4KKyAgICAgICBUaGUgPGFjcm9u eW0+U1FMPC9hY3JvbnltPiBkZWNsYXJhdGlvbiBvZiB0aGUgZnVuY3Rpb24gbXVzdCBsb29r IGxpa2UKKyAgICAgICB0aGlzICh1c2luZyA8bGl0ZXJhbD5teV9pbnRlcnNlY3Q8L2xpdGVy YWw+IGFzIGFuIGV4YW1wbGUpOgorCis8cHJvZ3JhbWxpc3Rpbmc+CitDUkVBVEUgT1IgUkVQ TEFDRSBGVU5DVElPTiBteV9yYW5nZV9pbnRlcnNlY3QoYW55cmFuZ2UsIGFueXJhbmdlKQor UkVUVVJOUyBhbnlyYW5nZQorQVMgJ01PRFVMRV9QQVRITkFNRScKK0xBTkdVQUdFIEMgU1RS SUNUOworPC9wcm9ncmFtbGlzdGluZz4KKyAgICAgIDwvcGFyYT4KKworICAgICAgIDxwYXJh PgorICAgICAgICBUaGUgbWF0Y2hpbmcgY29kZSBpbiB0aGUgQyBtb2R1bGUgY291bGQgdGhl biBmb2xsb3cgdGhpcyBleGFtcGxlOgorCis8cHJvZ3JhbWxpc3Rpbmc+CitEYXR1bQorbXlf cmFuZ2VfaW50ZXJzZWN0KFBHX0ZVTkNUSU9OX0FSR1MpCit7CisgICAgUmFuZ2VUeXBlICAq cjEgPSBQR19HRVRBUkdfUkFOR0VfUCgwKTsKKyAgICBSYW5nZVR5cGUgICpyMiA9IFBHX0dF VEFSR19SQU5HRV9QKDEpOworICAgIFR5cGVDYWNoZUVudHJ5ICp0eXBjYWNoZTsKKworICAg IC8qIERpZmZlcmVudCB0eXBlcyBzaG91bGQgYmUgcHJldmVudGVkIGJ5IEFOWVJBTkdFIG1h dGNoaW5nIHJ1bGVzICovCisgICAgaWYgKFJhbmdlVHlwZUdldE9pZChyMSkgIT0gUmFuZ2VU eXBlR2V0T2lkKHIyKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBlbG9nKEVSUk9SLCAicmFuZ2UgdHlwZXMgZG8g bm90IG1hdGNoIik7CisKKyAgICB0eXBjYWNoZSA9IHJhbmdlX2dldF90eXBjYWNoZShmY2lu Zm8sIFJhbmdlVHlwZUdldE9pZChyMSkpOworCisgICAgUEdfUkVUVVJOX1JBTkdFX1AocmFu Z2VfaW50ZXJzZWN0X2ludGVybmFsKHR5cGNhY2hlLCByMSwgcjIpKTsKK30KKzwvcHJvZ3Jh bWxpc3Rpbmc+CisgICAgICA8L3BhcmE+CisgICAgIDwvbGlzdGl0ZW0+CisgICAgPC92YXJs aXN0ZW50cnk+CisgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgPHRlcm0+PGZ1bmN0aW9uPndp dGhvdXRfcG9ydGlvbjwvZnVuY3Rpb24+PC90ZXJtPgorICAgICA8bGlzdGl0ZW0+CisgICAg ICA8cGFyYT4KKyAgICAgICBHaXZlbiB0d28gdmFsdWVzIG9mIHRoaXMgb3BjbGFzcywgaXQg c3VidHJhY3RzIHRoZSBzZWNvbmQgZm9yIHRoZSBmaXJzdAorICAgICAgIGFuZCByZXR1cm5z IGFuIGFycmF5IG9mIHRoZSByZXN1bHRzLgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+ CisgICAgICAgVGhpcyBpcyB1c2VkIGZvciB0ZW1wb3JhbCB1cGRhdGUvZGVsZXRlIGNvbW1h bmRzIHRvIGNvbXB1dGUgdGhlCisgICAgICAgYm91bmRzIG9mIHRoZSB1bnRvdWNoZWQgZHVy YXRpb24uCisgICAgICA8L3BhcmE+CisKKyAgICAgIDxwYXJhPgorICAgICAgIFRoZSA8YWNy b255bT5TUUw8L2Fjcm9ueW0+IGRlY2xhcmF0aW9uIG9mIHRoZSBmdW5jdGlvbiBtdXN0IGxv b2sgbGlrZQorICAgICAgIHRoaXMgKHVzaW5nIDxsaXRlcmFsPm15X3JhbmdlX3dpdGhvdXRf cG9ydGlvbjwvbGl0ZXJhbD4gYXMgYW4gZXhhbXBsZSk6CisKKzxwcm9ncmFtbGlzdGluZz4K K0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIG15X3JhbmdlX3dpdGhvdXRfcG9ydGlvbihh bnlyYW5nZSwgYW55cmFuZ2UpCitSRVRVUk5TIGFueWFycmF5CitBUyAnTU9EVUxFX1BBVEhO QU1FJworTEFOR1VBR0UgQyBTVFJJQ1Q7Cis8L3Byb2dyYW1saXN0aW5nPgorICAgICAgPC9w YXJhPgorCisgICAgICAgPHBhcmE+CisgICAgICAgIFRoZSBtYXRjaGluZyBjb2RlIGluIHRo ZSBDIG1vZHVsZSBjb3VsZCB0aGVuIGZvbGxvdyB0aGlzIGV4YW1wbGU6CisKKzxwcm9ncmFt bGlzdGluZz4KK0RhdHVtCityYW5nZV93aXRob3V0X3BvcnRpb24oUEdfRlVOQ1RJT05fQVJH UykKK3sKKyAgICB0eXBlZGVmIHN0cnVjdCB7CisgICAgICAgIFJhbmdlVHlwZSAgKnJzWzJd OworICAgICAgICBpbnQgICAgICAgICBuOworICAgIH0gcmFuZ2Vfd2l0aG91dF9wb3J0aW9u X2ZjdHg7CisKKyAgICBGdW5jQ2FsbENvbnRleHQgKmZ1bmNjdHg7CisgICAgcmFuZ2Vfd2l0 aG91dF9wb3J0aW9uX2ZjdHggKmZjdHg7CisgICAgTWVtb3J5Q29udGV4dCBvbGRjb250ZXh0 OworCisgICAgLyogc3R1ZmYgZG9uZSBvbmx5IG9uIHRoZSBmaXJzdCBjYWxsIG9mIHRoZSBm dW5jdGlvbiAqLworICAgIGlmIChTUkZfSVNfRklSU1RDQUxMKCkpCisgICAgeworICAgICAg ICBSYW5nZVR5cGUgICAgICAgKnIxOworICAgICAgICBSYW5nZVR5cGUgICAgICAgKnIyOwor ICAgICAgICBPaWQgICAgICAgICAgICAgIHJuZ3R5cGlkOworICAgICAgICBUeXBlQ2FjaGVF bnRyeSAgKnR5cGNhY2hlOworCisgICAgICAgIC8qIGNyZWF0ZSBhIGZ1bmN0aW9uIGNvbnRl eHQgZm9yIGNyb3NzLWNhbGwgcGVyc2lzdGVuY2UgKi8KKyAgICAgICAgZnVuY2N0eCA9IFNS Rl9GSVJTVENBTExfSU5JVCgpOworCisgICAgICAgIC8qCisgICAgICAgICAqIHN3aXRjaCB0 byBtZW1vcnkgY29udGV4dCBhcHByb3ByaWF0ZSBmb3IgbXVsdGlwbGUgZnVuY3Rpb24gY2Fs bHMKKyAgICAgICAgICovCisgICAgICAgIG9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dp dGNoVG8oZnVuY2N0eC0mZ3Q7bXVsdGlfY2FsbF9tZW1vcnlfY3R4KTsKKworICAgICAgICBy MSA9IFBHX0dFVEFSR19SQU5HRV9QKDApOworICAgICAgICByMiA9IFBHX0dFVEFSR19SQU5H RV9QKDEpOworCisgICAgICAgIC8qIERpZmZlcmVudCB0eXBlcyBzaG91bGQgYmUgcHJldmVu dGVkIGJ5IEFOWVJBTkdFIG1hdGNoaW5nIHJ1bGVzICovCisgICAgICAgIGlmIChSYW5nZVR5 cGVHZXRPaWQocjEpICE9IFJhbmdlVHlwZUdldE9pZChyMikpCisgICAgICAgICAgICBlbG9n KEVSUk9SLCAicmFuZ2UgdHlwZXMgZG8gbm90IG1hdGNoIik7CisKKyAgICAgICAgLyogYWxs b2NhdGUgbWVtb3J5IGZvciB1c2VyIGNvbnRleHQgKi8KKyAgICAgICAgZmN0eCA9IChyYW5n ZV93aXRob3V0X3BvcnRpb25fZmN0eCAqKSBwYWxsb2Moc2l6ZW9mKHJhbmdlX3dpdGhvdXRf cG9ydGlvbl9mY3R4KSk7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogSW5pdGlhbGl6ZSBz dGF0ZS4KKyAgICAgICAgICogV2UgY2FuJ3Qgc3RvcmUgdGhlIHJhbmdlIHR5cGNhY2hlIGlu IGZuX2V4dHJhIGJlY2F1c2UgdGhlIGNhbGxlcgorICAgICAgICAgKiB1c2VzIHRoYXQgZm9y IHRoZSBTUkYgc3RhdGUuCisgICAgICAgICAqLworICAgICAgICBybmd0eXBpZCA9IFJhbmdl VHlwZUdldE9pZChyMSk7CisgICAgICAgIHR5cGNhY2hlID0gbG9va3VwX3R5cGVfY2FjaGUo cm5ndHlwaWQsIFRZUEVDQUNIRV9SQU5HRV9JTkZPKTsKKyAgICAgICAgaWYgKHR5cGNhY2hl LSZndDtybmdlbGVtdHlwZSA9PSBOVUxMKQorICAgICAgICAgICAgZWxvZyhFUlJPUiwgInR5 cGUgJXUgaXMgbm90IGEgcmFuZ2UgdHlwZSIsIHJuZ3R5cGlkKTsKKyAgICAgICAgcmFuZ2Vf d2l0aG91dF9wb3J0aW9uX2ludGVybmFsKHR5cGNhY2hlLCByMSwgcjIsIGZjdHgtJmd0O3Jz LCAmYW1wO2ZjdHgtJmd0O24pOworCisgICAgICAgIGZ1bmNjdHgtJmd0O3VzZXJfZmN0eCA9 IGZjdHg7CisgICAgICAgIE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKKyAg ICB9CisKKyAgICAvKiBzdHVmZiBkb25lIG9uIGV2ZXJ5IGNhbGwgb2YgdGhlIGZ1bmN0aW9u ICovCisgICAgZnVuY2N0eCA9IFNSRl9QRVJDQUxMX1NFVFVQKCk7CisgICAgZmN0eCA9IGZ1 bmNjdHgtJmd0O3VzZXJfZmN0eDsKKworICAgIGlmIChmdW5jY3R4LSZndDtjYWxsX2NudHIg Jmx0OyBmY3R4LSZndDtuKQorICAgIHsKKyAgICAgICAgLyoKKyAgICAgICAgICogV2UgbXVz dCBrZWVwIHRoZXNlIG9uIHNlcGFyYXRlIGxpbmVzCisgICAgICAgICAqIGJlY2F1c2UgU1JG X1JFVFVSTl9ORVhUIGRvZXMgY2FsbF9jbnRyKys6CisgICAgICAgICAqLworICAgICAgICBS YW5nZVR5cGUgKnJldCA9IGZjdHgtJmd0O3JzW2Z1bmNjdHgtJmd0O2NhbGxfY250cl07Cisg ICAgICAgIFNSRl9SRVRVUk5fTkVYVChmdW5jY3R4LCBSYW5nZVR5cGVQR2V0RGF0dW0ocmV0 KSk7CisgICAgfQorICAgIGVsc2UKKyAgICAgICAgLyogZG8gd2hlbiB0aGVyZSBpcyBubyBt b3JlIGxlZnQgKi8KKyAgICAgICAgU1JGX1JFVFVSTl9ET05FKGZ1bmNjdHgpOworfQogPC9w cm9ncmFtbGlzdGluZz4KICAgICAgIDwvcGFyYT4KICAgICAgPC9saXN0aXRlbT4KZGlmZiAt LWdpdCBhL2RvYy9zcmMvc2dtbC94aW5kZXguc2dtbCBiL2RvYy9zcmMvc2dtbC94aW5kZXgu c2dtbAppbmRleCA5M2RmMTM2ZWJhMy4uZDRkMGY2ZGM2ODUgMTAwNjQ0Ci0tLSBhL2RvYy9z cmMvc2dtbC94aW5kZXguc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwveGluZGV4LnNnbWwKQEAg LTUwOCw3ICs1MDgsNyBAQAogICAgPC90YWJsZT4KIAogICA8cGFyYT4KLSAgIEdpU1QgaW5k ZXhlcyBoYXZlIHRoaXJ0ZWVuIHN1cHBvcnQgZnVuY3Rpb25zLCBlaWdodCBvZiB3aGljaCBh cmUgb3B0aW9uYWwsCisgICBHaVNUIGluZGV4ZXMgaGF2ZSBmaWZ0ZWVuIHN1cHBvcnQgZnVu Y3Rpb25zLCB0ZW4gb2Ygd2hpY2ggYXJlIG9wdGlvbmFsLAogICAgYXMgc2hvd24gaW4gPHhy ZWYgbGlua2VuZD0ieGluZGV4LWdpc3Qtc3VwcG9ydC10YWJsZSIvPi4KICAgIChGb3IgbW9y ZSBpbmZvcm1hdGlvbiBzZWUgPHhyZWYgbGlua2VuZD0iZ2lzdCIvPi4pCiAgIDwvcGFyYT4K QEAgLTYwMiw2ICs2MDIsMTggQEAKICAgICAgICAgcGFydDwvZW50cnk+CiAgICAgICAgPGVu dHJ5PjEzPC9lbnRyeT4KICAgICAgIDwvcm93PgorICAgICAgPHJvdz4KKyAgICAgICA8ZW50 cnk+PGZ1bmN0aW9uPmludGVyc2VjdDwvZnVuY3Rpb24+PC9lbnRyeT4KKyAgICAgICA8ZW50 cnk+Y29tcHV0ZXMgaW50ZXJzZWN0aW9uIHdpdGggPGxpdGVyYWw+Rk9SIFBPUlRJT04gT0Y8 L2xpdGVyYWw+CisgICAgICAgIGJvdW5kczwvZW50cnk+CisgICAgICAgPGVudHJ5PjE0PC9l bnRyeT4KKyAgICAgIDwvcm93PgorICAgICAgPHJvdz4KKyAgICAgICA8ZW50cnk+PGZ1bmN0 aW9uPndpdGhvdXRfcG9ydGlvbjwvZnVuY3Rpb24+PC9lbnRyeT4KKyAgICAgICA8ZW50cnk+ Y29tcHV0ZXMgcmVtYWluaW5nIGR1cmF0aW9uKHMpIG91dHNpZGUKKyAgICAgICA8bGl0ZXJh bD5GT1IgUE9SVElPTiBPRjwvbGl0ZXJhbD4gYm91bmRzPC9lbnRyeT4KKyAgICAgICA8ZW50 cnk+MTU8L2VudHJ5PgorICAgICAgPC9yb3c+CiAgICAgIDwvdGJvZHk+CiAgICAgPC90Z3Jv dXA+CiAgICA8L3RhYmxlPgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4v YnJpbl92YWxpZGF0ZS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbl92YWxpZGF0 ZS5jCmluZGV4IDUzOWFjOWNiMDY0Li4wODJmOTZiODQ3ZCAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL2JyaW4vYnJpbl92YWxpZGF0ZS5jCisrKyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9icmluL2JyaW5fdmFsaWRhdGUuYwpAQCAtODcsMjEgKzg3LDIxIEBAIGJyaW52YWxp ZGF0ZShPaWQgb3BjbGFzc29pZCkKIAkJc3dpdGNoIChwcm9jZm9ybS0+YW1wcm9jbnVtKQog CQl7CiAJCQljYXNlIEJSSU5fUFJPQ05VTV9PUENJTkZPOgotCQkJCW9rID0gY2hlY2tfYW1w cm9jX3NpZ25hdHVyZShwcm9jZm9ybS0+YW1wcm9jLCBJTlRFUk5BTE9JRCwgdHJ1ZSwKKwkJ CQlvayA9IGNoZWNrX2FtcHJvY19zaWduYXR1cmUocHJvY2Zvcm0tPmFtcHJvYywgSU5URVJO QUxPSUQsIGZhbHNlLCB0cnVlLAogCQkJCQkJCQkJCQkxLCAxLCBJTlRFUk5BTE9JRCk7CiAJ CQkJYnJlYWs7CiAJCQljYXNlIEJSSU5fUFJPQ05VTV9BRERWQUxVRToKLQkJCQlvayA9IGNo ZWNrX2FtcHJvY19zaWduYXR1cmUocHJvY2Zvcm0tPmFtcHJvYywgQk9PTE9JRCwgdHJ1ZSwK KwkJCQlvayA9IGNoZWNrX2FtcHJvY19zaWduYXR1cmUocHJvY2Zvcm0tPmFtcHJvYywgQk9P TE9JRCwgZmFsc2UsIHRydWUsCiAJCQkJCQkJCQkJCTQsIDQsIElOVEVSTkFMT0lELCBJTlRF Uk5BTE9JRCwKIAkJCQkJCQkJCQkJSU5URVJOQUxPSUQsIElOVEVSTkFMT0lEKTsKIAkJCQli cmVhazsKIAkJCWNhc2UgQlJJTl9QUk9DTlVNX0NPTlNJU1RFTlQ6Ci0JCQkJb2sgPSBjaGVj a19hbXByb2Nfc2lnbmF0dXJlKHByb2Nmb3JtLT5hbXByb2MsIEJPT0xPSUQsIHRydWUsCisJ CQkJb2sgPSBjaGVja19hbXByb2Nfc2lnbmF0dXJlKHByb2Nmb3JtLT5hbXByb2MsIEJPT0xP SUQsIGZhbHNlLCB0cnVlLAogCQkJCQkJCQkJCQkzLCA0LCBJTlRFUk5BTE9JRCwgSU5URVJO QUxPSUQsCiAJCQkJCQkJCQkJCUlOVEVSTkFMT0lELCBJTlQ0T0lEKTsKIAkJCQlicmVhazsK IAkJCWNhc2UgQlJJTl9QUk9DTlVNX1VOSU9OOgotCQkJCW9rID0gY2hlY2tfYW1wcm9jX3Np Z25hdHVyZShwcm9jZm9ybS0+YW1wcm9jLCBCT09MT0lELCB0cnVlLAorCQkJCW9rID0gY2hl Y2tfYW1wcm9jX3NpZ25hdHVyZShwcm9jZm9ybS0+YW1wcm9jLCBCT09MT0lELCBmYWxzZSwg dHJ1ZSwKIAkJCQkJCQkJCQkJMywgMywgSU5URVJOQUxPSUQsIElOVEVSTkFMT0lELAogCQkJ CQkJCQkJCQlJTlRFUk5BTE9JRCk7CiAJCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9hY2Nlc3MvZ2luL2dpbnZhbGlkYXRlLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lu L2dpbnZhbGlkYXRlLmMKaW5kZXggMTNjZjM5MGJiM2QuLjVhMTFlMGNlYTI1IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbnZhbGlkYXRlLmMKKysrIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL2dpbi9naW52YWxpZGF0ZS5jCkBAIC0xMDYsMzcgKzEwNiwzNyBAQCBn aW52YWxpZGF0ZShPaWQgb3BjbGFzc29pZCkKIAkJc3dpdGNoIChwcm9jZm9ybS0+YW1wcm9j bnVtKQogCQl7CiAJCQljYXNlIEdJTl9DT01QQVJFX1BST0M6Ci0JCQkJb2sgPSBjaGVja19h bXByb2Nfc2lnbmF0dXJlKHByb2Nmb3JtLT5hbXByb2MsIElOVDRPSUQsIGZhbHNlLAorCQkJ CW9rID0gY2hlY2tfYW1wcm9jX3NpZ25hdHVyZShwcm9jZm9ybS0+YW1wcm9jLCBJTlQ0T0lE LCBmYWxzZSwgZmFsc2UsCiAJCQkJCQkJCQkJCTIsIDIsIG9wY2tleXR5cGUsIG9wY2tleXR5 cGUpOwogCQkJCWJyZWFrOwogCQkJY2FzZSBHSU5fRVhUUkFDVFZBTFVFX1BST0M6CiAJCQkJ LyogU29tZSBvcGNsYXNzZXMgb21pdCBudWxsRmxhZ3MgKi8KLQkJCQlvayA9IGNoZWNrX2Ft cHJvY19zaWduYXR1cmUocHJvY2Zvcm0tPmFtcHJvYywgSU5URVJOQUxPSUQsIGZhbHNlLAor CQkJCW9rID0gY2hlY2tfYW1wcm9jX3NpZ25hdHVyZShwcm9jZm9ybS0+YW1wcm9jLCBJTlRF Uk5BTE9JRCwgZmFsc2UsIGZhbHNlLAogCQkJCQkJCQkJCQkyLCAzLCBvcGNpbnR5cGUsIElO VEVSTkFMT0lELAogCQkJCQkJCQkJCQlJTlRFUk5BTE9JRCk7CiAJCQkJYnJlYWs7CiAJCQlj YXNlIEdJTl9FWFRSQUNUUVVFUllfUFJPQzoKIAkJCQkvKiBTb21lIG9wY2xhc3NlcyBvbWl0 IG51bGxGbGFncyBhbmQgc2VhcmNoTW9kZSAqLwotCQkJCW9rID0gY2hlY2tfYW1wcm9jX3Np Z25hdHVyZShwcm9jZm9ybS0+YW1wcm9jLCBJTlRFUk5BTE9JRCwgZmFsc2UsCisJCQkJb2sg PSBjaGVja19hbXByb2Nfc2lnbmF0dXJlKHByb2Nmb3JtLT5hbXByb2MsIElOVEVSTkFMT0lE LCBmYWxzZSwgZmFsc2UsCiAJCQkJCQkJCQkJCTUsIDcsIG9wY2ludHlwZSwgSU5URVJOQUxP SUQsCiAJCQkJCQkJCQkJCUlOVDJPSUQsIElOVEVSTkFMT0lELCBJTlRFUk5BTE9JRCwKIAkJ CQkJCQkJCQkJSU5URVJOQUxPSUQsIElOVEVSTkFMT0lEKTsKIAkJCQlicmVhazsKIAkJCWNh c2UgR0lOX0NPTlNJU1RFTlRfUFJPQzoKIAkJCQkvKiBTb21lIG9wY2xhc3NlcyBvbWl0IHF1 ZXJ5S2V5cyBhbmQgbnVsbEZsYWdzICovCi0JCQkJb2sgPSBjaGVja19hbXByb2Nfc2lnbmF0 dXJlKHByb2Nmb3JtLT5hbXByb2MsIEJPT0xPSUQsIGZhbHNlLAorCQkJCW9rID0gY2hlY2tf YW1wcm9jX3NpZ25hdHVyZShwcm9jZm9ybS0+YW1wcm9jLCBCT09MT0lELCBmYWxzZSwgZmFs c2UsCiAJCQkJCQkJCQkJCTYsIDgsIElOVEVSTkFMT0lELCBJTlQyT0lELAogCQkJCQkJCQkJ CQlvcGNpbnR5cGUsIElOVDRPSUQsCiAJCQkJCQkJCQkJCUlOVEVSTkFMT0lELCBJTlRFUk5B TE9JRCwKIAkJCQkJCQkJCQkJSU5URVJOQUxPSUQsIElOVEVSTkFMT0lEKTsKIAkJCQlicmVh azsKIAkJCWNhc2UgR0lOX0NPTVBBUkVfUEFSVElBTF9QUk9DOgotCQkJCW9rID0gY2hlY2tf YW1wcm9jX3NpZ25hdHVyZShwcm9jZm9ybS0+YW1wcm9jLCBJTlQ0T0lELCBmYWxzZSwKKwkJ CQlvayA9IGNoZWNrX2FtcHJvY19zaWduYXR1cmUocHJvY2Zvcm0tPmFtcHJvYywgSU5UNE9J RCwgZmFsc2UsIGZhbHNlLAogCQkJCQkJCQkJCQk0LCA0LCBvcGNrZXl0eXBlLCBvcGNrZXl0 eXBlLAogCQkJCQkJCQkJCQlJTlQyT0lELCBJTlRFUk5BTE9JRCk7CiAJCQkJYnJlYWs7CiAJ CQljYXNlIEdJTl9UUklDT05TSVNURU5UX1BST0M6Ci0JCQkJb2sgPSBjaGVja19hbXByb2Nf c2lnbmF0dXJlKHByb2Nmb3JtLT5hbXByb2MsIENIQVJPSUQsIGZhbHNlLAorCQkJCW9rID0g Y2hlY2tfYW1wcm9jX3NpZ25hdHVyZShwcm9jZm9ybS0+YW1wcm9jLCBDSEFST0lELCBmYWxz ZSwgZmFsc2UsCiAJCQkJCQkJCQkJCTcsIDcsIElOVEVSTkFMT0lELCBJTlQyT0lELAogCQkJ CQkJCQkJCQlvcGNpbnR5cGUsIElOVDRPSUQsCiAJCQkJCQkJCQkJCUlOVEVSTkFMT0lELCBJ TlRFUk5BTE9JRCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R2 YWxpZGF0ZS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHZhbGlkYXRlLmMKaW5k ZXggYWMzZDllNTBmNTAuLjBhNDMzOGU4Yjg0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9h Y2Nlc3MvZ2lzdC9naXN0dmFsaWRhdGUuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lz dC9naXN0dmFsaWRhdGUuYwpAQCAtMTA3LDM2ICsxMDcsMzYgQEAgZ2lzdHZhbGlkYXRlKE9p ZCBvcGNsYXNzb2lkKQogCQlzd2l0Y2ggKHByb2Nmb3JtLT5hbXByb2NudW0pCiAJCXsKIAkJ CWNhc2UgR0lTVF9DT05TSVNURU5UX1BST0M6Ci0JCQkJb2sgPSBjaGVja19hbXByb2Nfc2ln bmF0dXJlKHByb2Nmb3JtLT5hbXByb2MsIEJPT0xPSUQsIGZhbHNlLAorCQkJCW9rID0gY2hl Y2tfYW1wcm9jX3NpZ25hdHVyZShwcm9jZm9ybS0+YW1wcm9jLCBCT09MT0lELCBmYWxzZSwg ZmFsc2UsCiAJCQkJCQkJCQkJCTUsIDUsIElOVEVSTkFMT0lELCBvcGNpbnR5cGUsCiAJCQkJ CQkJCQkJCUlOVDJPSUQsIE9JRE9JRCwgSU5URVJOQUxPSUQpOwogCQkJCWJyZWFrOwogCQkJ Y2FzZSBHSVNUX1VOSU9OX1BST0M6Ci0JCQkJb2sgPSBjaGVja19hbXByb2Nfc2lnbmF0dXJl KHByb2Nmb3JtLT5hbXByb2MsIG9wY2tleXR5cGUsIGZhbHNlLAorCQkJCW9rID0gY2hlY2tf YW1wcm9jX3NpZ25hdHVyZShwcm9jZm9ybS0+YW1wcm9jLCBvcGNrZXl0eXBlLCBmYWxzZSwg ZmFsc2UsCiAJCQkJCQkJCQkJCTIsIDIsIElOVEVSTkFMT0lELCBJTlRFUk5BTE9JRCk7CiAJ CQkJYnJlYWs7CiAJCQljYXNlIEdJU1RfQ09NUFJFU1NfUFJPQzoKIAkJCWNhc2UgR0lTVF9E RUNPTVBSRVNTX1BST0M6CiAJCQljYXNlIEdJU1RfRkVUQ0hfUFJPQzoKLQkJCQlvayA9IGNo ZWNrX2FtcHJvY19zaWduYXR1cmUocHJvY2Zvcm0tPmFtcHJvYywgSU5URVJOQUxPSUQsIHRy dWUsCisJCQkJb2sgPSBjaGVja19hbXByb2Nfc2lnbmF0dXJlKHByb2Nmb3JtLT5hbXByb2Ms IElOVEVSTkFMT0lELCBmYWxzZSwgdHJ1ZSwKIAkJCQkJCQkJCQkJMSwgMSwgSU5URVJOQUxP SUQpOwogCQkJCWJyZWFrOwogCQkJY2FzZSBHSVNUX1BFTkFMVFlfUFJPQzoKLQkJCQlvayA9 IGNoZWNrX2FtcHJvY19zaWduYXR1cmUocHJvY2Zvcm0tPmFtcHJvYywgSU5URVJOQUxPSUQs IHRydWUsCisJCQkJb2sgPSBjaGVja19hbXByb2Nfc2lnbmF0dXJlKHByb2Nmb3JtLT5hbXBy b2MsIElOVEVSTkFMT0lELCBmYWxzZSwgdHJ1ZSwKIAkJCQkJCQkJCQkJMywgMywgSU5URVJO QUxPSUQsCiAJCQkJCQkJCQkJCUlOVEVSTkFMT0lELCBJTlRFUk5BTE9JRCk7CiAJCQkJYnJl YWs7CiAJCQljYXNlIEdJU1RfUElDS1NQTElUX1BST0M6Ci0JCQkJb2sgPSBjaGVja19hbXBy b2Nfc2lnbmF0dXJlKHByb2Nmb3JtLT5hbXByb2MsIElOVEVSTkFMT0lELCB0cnVlLAorCQkJ CW9rID0gY2hlY2tfYW1wcm9jX3NpZ25hdHVyZShwcm9jZm9ybS0+YW1wcm9jLCBJTlRFUk5B TE9JRCwgZmFsc2UsIHRydWUsCiAJCQkJCQkJCQkJCTIsIDIsIElOVEVSTkFMT0lELCBJTlRF Uk5BTE9JRCk7CiAJCQkJYnJlYWs7CiAJCQljYXNlIEdJU1RfRVFVQUxfUFJPQzoKLQkJCQlv ayA9IGNoZWNrX2FtcHJvY19zaWduYXR1cmUocHJvY2Zvcm0tPmFtcHJvYywgSU5URVJOQUxP SUQsIGZhbHNlLAorCQkJCW9rID0gY2hlY2tfYW1wcm9jX3NpZ25hdHVyZShwcm9jZm9ybS0+ YW1wcm9jLCBJTlRFUk5BTE9JRCwgZmFsc2UsIGZhbHNlLAogCQkJCQkJCQkJCQkzLCAzLCBv cGNrZXl0eXBlLCBvcGNrZXl0eXBlLAogCQkJCQkJCQkJCQlJTlRFUk5BTE9JRCk7CiAJCQkJ YnJlYWs7CiAJCQljYXNlIEdJU1RfRElTVEFOQ0VfUFJPQzoKLQkJCQlvayA9IGNoZWNrX2Ft cHJvY19zaWduYXR1cmUocHJvY2Zvcm0tPmFtcHJvYywgRkxPQVQ4T0lELCBmYWxzZSwKKwkJ CQlvayA9IGNoZWNrX2FtcHJvY19zaWduYXR1cmUocHJvY2Zvcm0tPmFtcHJvYywgRkxPQVQ4 T0lELCBmYWxzZSwgZmFsc2UsCiAJCQkJCQkJCQkJCTUsIDUsIElOVEVSTkFMT0lELCBvcGNp bnR5cGUsCiAJCQkJCQkJCQkJCUlOVDJPSUQsIE9JRE9JRCwgSU5URVJOQUxPSUQpOwogCQkJ CWJyZWFrOwpAQCAtMTQ0LDE4ICsxNDQsMjYgQEAgZ2lzdHZhbGlkYXRlKE9pZCBvcGNsYXNz b2lkKQogCQkJCW9rID0gY2hlY2tfYW1vcHRzcHJvY19zaWduYXR1cmUocHJvY2Zvcm0tPmFt cHJvYyk7CiAJCQkJYnJlYWs7CiAJCQljYXNlIEdJU1RfU09SVFNVUFBPUlRfUFJPQzoKLQkJ CQlvayA9IGNoZWNrX2FtcHJvY19zaWduYXR1cmUocHJvY2Zvcm0tPmFtcHJvYywgVk9JRE9J RCwgdHJ1ZSwKKwkJCQlvayA9IGNoZWNrX2FtcHJvY19zaWduYXR1cmUocHJvY2Zvcm0tPmFt cHJvYywgVk9JRE9JRCwgZmFsc2UsIHRydWUsCiAJCQkJCQkJCQkJCTEsIDEsIElOVEVSTkFM T0lEKTsKIAkJCQlicmVhazsKIAkJCWNhc2UgR0lTVF9TVFJBVE5VTV9QUk9DOgotCQkJCW9r ID0gY2hlY2tfYW1wcm9jX3NpZ25hdHVyZShwcm9jZm9ybS0+YW1wcm9jLCBJTlQyT0lELCB0 cnVlLAorCQkJCW9rID0gY2hlY2tfYW1wcm9jX3NpZ25hdHVyZShwcm9jZm9ybS0+YW1wcm9j LCBJTlQyT0lELCBmYWxzZSwgdHJ1ZSwKIAkJCQkJCQkJCQkJMSwgMSwgSU5UMk9JRCk7CiAJ CQkJYnJlYWs7CiAJCQljYXNlIEdJU1RfUkVGRVJFTkNFRF9BR0dfUFJPQzoKLQkJCQlvayA9 IGNoZWNrX2FtcHJvY19zaWduYXR1cmUocHJvY2Zvcm0tPmFtcHJvYywgSW52YWxpZE9pZCwg ZmFsc2UsCisJCQkJb2sgPSBjaGVja19hbXByb2Nfc2lnbmF0dXJlKHByb2Nmb3JtLT5hbXBy b2MsIEludmFsaWRPaWQsIGZhbHNlLCBmYWxzZSwKIAkJCQkJCQkJCQkJICAgMSwgMSwgb3Bj aW50eXBlKQogCQkJCQkmJiBjaGVja19hbXByb2NfaXNfYWdncmVnYXRlKHByb2Nmb3JtLT5h bXByb2MpOwogCQkJCWJyZWFrOworCQkJY2FzZSBHSVNUX0lOVEVSU0VDVF9QUk9DOgorCQkJ CW9rID0gY2hlY2tfYW1wcm9jX3NpZ25hdHVyZShwcm9jZm9ybS0+YW1wcm9jLCBJbnZhbGlk T2lkLCBmYWxzZSwgdHJ1ZSwKKwkJCQkJCQkJCQkJMiwgMiwgb3BjaW50eXBlLCBvcGNpbnR5 cGUpOworCQkJCWJyZWFrOworCQkJY2FzZSBHSVNUX1dJVEhPVVRfUE9SVElPTl9QUk9DOgor CQkJCW9rID0gY2hlY2tfYW1wcm9jX3NpZ25hdHVyZShwcm9jZm9ybS0+YW1wcm9jLCBvcGNp bnR5cGUsIHRydWUsIHRydWUsCisJCQkJCQkJCQkJCTIsIDIsIG9wY2ludHlwZSwgb3BjaW50 eXBlKTsKKwkJCQlicmVhazsKIAkJCWRlZmF1bHQ6CiAJCQkJZXJlcG9ydChJTkZPLAogCQkJ CQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKQEAgLTI3 Nyw3ICsyODUsOCBAQCBnaXN0dmFsaWRhdGUoT2lkIG9wY2xhc3NvaWQpCiAJCWlmIChpID09 IEdJU1RfRElTVEFOQ0VfUFJPQyB8fCBpID09IEdJU1RfRkVUQ0hfUFJPQyB8fAogCQkJaSA9 PSBHSVNUX0NPTVBSRVNTX1BST0MgfHwgaSA9PSBHSVNUX0RFQ09NUFJFU1NfUFJPQyB8fAog CQkJaSA9PSBHSVNUX09QVElPTlNfUFJPQyB8fCBpID09IEdJU1RfU09SVFNVUFBPUlRfUFJP QyB8fAotCQkJaSA9PSBHSVNUX1NUUkFUTlVNX1BST0MgfHwgaSA9PSBHSVNUX1JFRkVSRU5D RURfQUdHX1BST0MpCisJCQlpID09IEdJU1RfU1RSQVROVU1fUFJPQyB8fCBpID09IEdJU1Rf UkVGRVJFTkNFRF9BR0dfUFJPQyB8fAorCQkJaSA9PSBHSVNUX0lOVEVSU0VDVF9QUk9DIHx8 IGkgPT0gR0lTVF9XSVRIT1VUX1BPUlRJT05fUFJPQykKIAkJCWNvbnRpbnVlOwkJCS8qIG9w dGlvbmFsIG1ldGhvZHMgKi8KIAkJZXJlcG9ydChJTkZPLAogCQkJCShlcnJjb2RlKEVSUkNP REVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvaW5kZXgvYW12YWxpZGF0ZS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4 L2FtdmFsaWRhdGUuYwppbmRleCA5ZWIxYjE3MmFlMS4uY2MyN2NjMjhhYjUgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9hbXZhbGlkYXRlLmMKKysrIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL2luZGV4L2FtdmFsaWRhdGUuYwpAQCAtMTY2LDcgKzE2Niw3IEBAIGNo ZWNrX2FtcHJvY19pc19hZ2dyZWdhdGUoT2lkIGZ1bmNpZCkKICAqIHVubGVzcyBpdCBpcyBJ bnZhbGlkT2lkLgogICovCiBib29sCi1jaGVja19hbXByb2Nfc2lnbmF0dXJlKE9pZCBmdW5j aWQsIE9pZCByZXN0eXBlLCBib29sIGV4YWN0LAorY2hlY2tfYW1wcm9jX3NpZ25hdHVyZShP aWQgZnVuY2lkLCBPaWQgcmVzdHlwZSwgYm9vbCByZXRzZXQsIGJvb2wgZXhhY3QsCiAJCQkJ CSAgIGludCBtaW5hcmdzLCBpbnQgbWF4YXJncywuLi4pCiB7CiAJYm9vbAkJcmVzdWx0ID0g dHJ1ZTsKQEAgLTE4MSw3ICsxODEsNyBAQCBjaGVja19hbXByb2Nfc2lnbmF0dXJlKE9pZCBm dW5jaWQsIE9pZCByZXN0eXBlLCBib29sIGV4YWN0LAogCXByb2Nmb3JtID0gKEZvcm1fcGdf cHJvYykgR0VUU1RSVUNUKHRwKTsKIAogCWlmICgocHJvY2Zvcm0tPnByb3JldHR5cGUgIT0g cmVzdHlwZSAmJiBPaWRJc1ZhbGlkKHJlc3R5cGUpKQotCQl8fCBwcm9jZm9ybS0+cHJvcmV0 c2V0IHx8IHByb2Nmb3JtLT5wcm9uYXJncyA8IG1pbmFyZ3MKKwkJfHwgcHJvY2Zvcm0tPnBy b3JldHNldCAhPSByZXRzZXQgfHwgcHJvY2Zvcm0tPnByb25hcmdzIDwgbWluYXJncwogCQl8 fCBwcm9jZm9ybS0+cHJvbmFyZ3MgPiBtYXhhcmdzKQogCQlyZXN1bHQgPSBmYWxzZTsKIApA QCAtMjA5LDcgKzIwOSw3IEBAIGNoZWNrX2FtcHJvY19zaWduYXR1cmUoT2lkIGZ1bmNpZCwg T2lkIHJlc3R5cGUsIGJvb2wgZXhhY3QsCiBib29sCiBjaGVja19hbW9wdHNwcm9jX3NpZ25h dHVyZShPaWQgZnVuY2lkKQogewotCXJldHVybiBjaGVja19hbXByb2Nfc2lnbmF0dXJlKGZ1 bmNpZCwgVk9JRE9JRCwgdHJ1ZSwgMSwgMSwgSU5URVJOQUxPSUQpOworCXJldHVybiBjaGVj a19hbXByb2Nfc2lnbmF0dXJlKGZ1bmNpZCwgVk9JRE9JRCwgZmFsc2UsIHRydWUsIDEsIDEs IElOVEVSTkFMT0lEKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9uYnRyZWUvbmJ0dmFsaWRhdGUuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0 dmFsaWRhdGUuYwppbmRleCBlOWQ0Y2Q2MGRlMy4uMDRlNDNlZjFkY2UgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0dmFsaWRhdGUuYworKysgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvbmJ0cmVlL25idHZhbGlkYXRlLmMKQEAgLTkxLDE2ICs5MSwxNiBAQCBi dHZhbGlkYXRlKE9pZCBvcGNsYXNzb2lkKQogCQlzd2l0Y2ggKHByb2Nmb3JtLT5hbXByb2Nu dW0pCiAJCXsKIAkJCWNhc2UgQlRPUkRFUl9QUk9DOgotCQkJCW9rID0gY2hlY2tfYW1wcm9j X3NpZ25hdHVyZShwcm9jZm9ybS0+YW1wcm9jLCBJTlQ0T0lELCB0cnVlLAorCQkJCW9rID0g Y2hlY2tfYW1wcm9jX3NpZ25hdHVyZShwcm9jZm9ybS0+YW1wcm9jLCBJTlQ0T0lELCBmYWxz ZSwgdHJ1ZSwKIAkJCQkJCQkJCQkJMiwgMiwgcHJvY2Zvcm0tPmFtcHJvY2xlZnR0eXBlLAog CQkJCQkJCQkJCQlwcm9jZm9ybS0+YW1wcm9jcmlnaHR0eXBlKTsKIAkJCQlicmVhazsKIAkJ CWNhc2UgQlRTT1JUU1VQUE9SVF9QUk9DOgotCQkJCW9rID0gY2hlY2tfYW1wcm9jX3NpZ25h dHVyZShwcm9jZm9ybS0+YW1wcm9jLCBWT0lET0lELCB0cnVlLAorCQkJCW9rID0gY2hlY2tf YW1wcm9jX3NpZ25hdHVyZShwcm9jZm9ybS0+YW1wcm9jLCBWT0lET0lELCBmYWxzZSwgdHJ1 ZSwKIAkJCQkJCQkJCQkJMSwgMSwgSU5URVJOQUxPSUQpOwogCQkJCWJyZWFrOwogCQkJY2Fz ZSBCVElOUkFOR0VfUFJPQzoKLQkJCQlvayA9IGNoZWNrX2FtcHJvY19zaWduYXR1cmUocHJv Y2Zvcm0tPmFtcHJvYywgQk9PTE9JRCwgdHJ1ZSwKKwkJCQlvayA9IGNoZWNrX2FtcHJvY19z aWduYXR1cmUocHJvY2Zvcm0tPmFtcHJvYywgQk9PTE9JRCwgZmFsc2UsIHRydWUsCiAJCQkJ CQkJCQkJCTUsIDUsCiAJCQkJCQkJCQkJCXByb2Nmb3JtLT5hbXByb2NsZWZ0dHlwZSwKIAkJ CQkJCQkJCQkJcHJvY2Zvcm0tPmFtcHJvY2xlZnR0eXBlLApAQCAtMTA4LDcgKzEwOCw3IEBA IGJ0dmFsaWRhdGUoT2lkIG9wY2xhc3NvaWQpCiAJCQkJCQkJCQkJCUJPT0xPSUQsIEJPT0xP SUQpOwogCQkJCWJyZWFrOwogCQkJY2FzZSBCVEVRVUFMSU1BR0VfUFJPQzoKLQkJCQlvayA9 IGNoZWNrX2FtcHJvY19zaWduYXR1cmUocHJvY2Zvcm0tPmFtcHJvYywgQk9PTE9JRCwgdHJ1 ZSwKKwkJCQlvayA9IGNoZWNrX2FtcHJvY19zaWduYXR1cmUocHJvY2Zvcm0tPmFtcHJvYywg Qk9PTE9JRCwgZmFsc2UsIHRydWUsCiAJCQkJCQkJCQkJCTEsIDEsIE9JRE9JRCk7CiAJCQkJ YnJlYWs7CiAJCQljYXNlIEJUT1BUSU9OU19QUk9DOgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvYWNjZXNzL3NwZ2lzdC9zcGd2YWxpZGF0ZS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3Nw Z2lzdC9zcGd2YWxpZGF0ZS5jCmluZGV4IDg4MzRmMjJiYTg1Li44NzBjYjM5NTc2MSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd2YWxpZGF0ZS5jCisrKyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BndmFsaWRhdGUuYwpAQCAtMTA5LDcgKzEw OSw3IEBAIHNwZ3ZhbGlkYXRlKE9pZCBvcGNsYXNzb2lkKQogCQlzd2l0Y2ggKHByb2Nmb3Jt LT5hbXByb2NudW0pCiAJCXsKIAkJCWNhc2UgU1BHSVNUX0NPTkZJR19QUk9DOgotCQkJCW9r ID0gY2hlY2tfYW1wcm9jX3NpZ25hdHVyZShwcm9jZm9ybS0+YW1wcm9jLCBWT0lET0lELCB0 cnVlLAorCQkJCW9rID0gY2hlY2tfYW1wcm9jX3NpZ25hdHVyZShwcm9jZm9ybS0+YW1wcm9j LCBWT0lET0lELCBmYWxzZSwgdHJ1ZSwKIAkJCQkJCQkJCQkJMiwgMiwgSU5URVJOQUxPSUQs IElOVEVSTkFMT0lEKTsKIAkJCQljb25maWdJbi5hdHRUeXBlID0gcHJvY2Zvcm0tPmFtcHJv Y2xlZnR0eXBlOwogCQkJCW1lbXNldCgmY29uZmlnT3V0LCAwLCBzaXplb2YoY29uZmlnT3V0 KSk7CkBAIC0xNjQsMTEgKzE2NCwxMSBAQCBzcGd2YWxpZGF0ZShPaWQgb3BjbGFzc29pZCkK IAkJCWNhc2UgU1BHSVNUX0NIT09TRV9QUk9DOgogCQkJY2FzZSBTUEdJU1RfUElDS1NQTElU X1BST0M6CiAJCQljYXNlIFNQR0lTVF9JTk5FUl9DT05TSVNURU5UX1BST0M6Ci0JCQkJb2sg PSBjaGVja19hbXByb2Nfc2lnbmF0dXJlKHByb2Nmb3JtLT5hbXByb2MsIFZPSURPSUQsIHRy dWUsCisJCQkJb2sgPSBjaGVja19hbXByb2Nfc2lnbmF0dXJlKHByb2Nmb3JtLT5hbXByb2Ms IFZPSURPSUQsIGZhbHNlLCB0cnVlLAogCQkJCQkJCQkJCQkyLCAyLCBJTlRFUk5BTE9JRCwg SU5URVJOQUxPSUQpOwogCQkJCWJyZWFrOwogCQkJY2FzZSBTUEdJU1RfTEVBRl9DT05TSVNU RU5UX1BST0M6Ci0JCQkJb2sgPSBjaGVja19hbXByb2Nfc2lnbmF0dXJlKHByb2Nmb3JtLT5h bXByb2MsIEJPT0xPSUQsIHRydWUsCisJCQkJb2sgPSBjaGVja19hbXByb2Nfc2lnbmF0dXJl KHByb2Nmb3JtLT5hbXByb2MsIEJPT0xPSUQsIGZhbHNlLCB0cnVlLAogCQkJCQkJCQkJCQky LCAyLCBJTlRFUk5BTE9JRCwgSU5URVJOQUxPSUQpOwogCQkJCWJyZWFrOwogCQkJY2FzZSBT UEdJU1RfQ09NUFJFU1NfUFJPQzoKQEAgLTE3Nyw3ICsxNzcsNyBAQCBzcGd2YWxpZGF0ZShP aWQgb3BjbGFzc29pZCkKIAkJCQkJb2sgPSBmYWxzZTsKIAkJCQllbHNlCiAJCQkJCW9rID0g Y2hlY2tfYW1wcm9jX3NpZ25hdHVyZShwcm9jZm9ybS0+YW1wcm9jLAotCQkJCQkJCQkJCQkJ Y29uZmlnT3V0TGVhZlR5cGUsIHRydWUsCisJCQkJCQkJCQkJCQljb25maWdPdXRMZWFmVHlw ZSwgZmFsc2UsIHRydWUsCiAJCQkJCQkJCQkJCQkxLCAxLCBwcm9jZm9ybS0+YW1wcm9jbGVm dHR5cGUpOwogCQkJCWJyZWFrOwogCQkJY2FzZSBTUEdJU1RfT1BUSU9OU19QUk9DOgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L211bHRpcmFuZ2V0eXBlcy5jIGIvc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L211bHRpcmFuZ2V0eXBlcy5jCmluZGV4IGY4MmU2ZjQyZDk4 Li41YTZhNTA0MWM0MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L211bHRp cmFuZ2V0eXBlcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9tdWx0aXJhbmdldHlw ZXMuYwpAQCAtMTIyNiw2ICsxMjI2LDc3IEBAIG11bHRpcmFuZ2VfbWludXNfaW50ZXJuYWwo T2lkIG1sdHJuZ3R5cG9pZCwgVHlwZUNhY2hlRW50cnkgKnJhbmdldHlwLAogCXJldHVybiBt YWtlX211bHRpcmFuZ2UobWx0cm5ndHlwb2lkLCByYW5nZXR5cCwgcmFuZ2VfY291bnQzLCBy YW5nZXMzKTsKIH0KIAorLyoKKyAqIG11bHRpcmFuZ2UgbWludXMgYnV0IHJldHVybmluZyB0 aGUgcmVzdWx0IGFzIGEgU1JGLAorICogd2l0aCBubyByb3dzIGlmIHRoZSByZXN1bHQgd291 bGQgYmUgZW1wdHkuCisgKi8KK0RhdHVtCittdWx0aXJhbmdlX3dpdGhvdXRfcG9ydGlvbihQ R19GVU5DVElPTl9BUkdTKQoreworCUZ1bmNDYWxsQ29udGV4dCAqZnVuY2N0eDsKKwlNZW1v cnlDb250ZXh0IG9sZGNvbnRleHQ7CisKKwlpZiAoIVNSRl9JU19GSVJTVENBTEwoKSkKKwl7 CisJCS8qIFdlIG5ldmVyIGhhdmUgbW9yZSB0aGFuIG9uZSByZXN1bHQgKi8KKwkJZnVuY2N0 eCA9IFNSRl9QRVJDQUxMX1NFVFVQKCk7CisJCVNSRl9SRVRVUk5fRE9ORShmdW5jY3R4KTsK Kwl9CisJZWxzZQorCXsKKwkJTXVsdGlyYW5nZVR5cGUgKm1yMTsKKwkJTXVsdGlyYW5nZVR5 cGUgKm1yMjsKKwkJT2lkCQkJbWx0cm5ndHlwb2lkOworCQlUeXBlQ2FjaGVFbnRyeSAqdHlw Y2FjaGU7CisJCVR5cGVDYWNoZUVudHJ5ICpyYW5nZXR5cDsKKwkJaW50MzIJCXJhbmdlX2Nv dW50MTsKKwkJaW50MzIJCXJhbmdlX2NvdW50MjsKKwkJUmFuZ2VUeXBlICoqcmFuZ2VzMTsK KwkJUmFuZ2VUeXBlICoqcmFuZ2VzMjsKKwkJTXVsdGlyYW5nZVR5cGUgKm1yOworCisJCWZ1 bmNjdHggPSBTUkZfRklSU1RDQUxMX0lOSVQoKTsKKworCQkvKgorCQkgKiBzd2l0Y2ggdG8g bWVtb3J5IGNvbnRleHQgYXBwcm9wcmlhdGUgZm9yIG11bHRpcGxlIGZ1bmN0aW9uIGNhbGxz CisJCSAqLworCQlvbGRjb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKGZ1bmNjdHgt Pm11bHRpX2NhbGxfbWVtb3J5X2N0eCk7CisKKwkJLyogZ2V0IGFyZ3MsIGRldG9hc3Rpbmcg aW50byBtdWx0aS1jYWxsIG1lbW9yeSBjb250ZXh0ICovCisJCW1yMSA9IFBHX0dFVEFSR19N VUxUSVJBTkdFX1AoMCk7CisJCW1yMiA9IFBHX0dFVEFSR19NVUxUSVJBTkdFX1AoMSk7CisK KwkJbWx0cm5ndHlwb2lkID0gTXVsdGlyYW5nZVR5cGVHZXRPaWQobXIxKTsKKwkJdHlwY2Fj aGUgPSBsb29rdXBfdHlwZV9jYWNoZShtbHRybmd0eXBvaWQsIFRZUEVDQUNIRV9NVUxUSVJB TkdFX0lORk8pOworCQlpZiAodHlwY2FjaGUtPnJuZ3R5cGUgPT0gTlVMTCkKKwkJCWVsb2co RVJST1IsICJ0eXBlICV1IGlzIG5vdCBhIG11bHRpcmFuZ2UgdHlwZSIsIG1sdHJuZ3R5cG9p ZCk7CisJCXJhbmdldHlwID0gdHlwY2FjaGUtPnJuZ3R5cGU7CisKKwkJaWYgKE11bHRpcmFu Z2VJc0VtcHR5KG1yMSkgfHwgTXVsdGlyYW5nZUlzRW1wdHkobXIyKSkKKwkJCW1yID0gbXIx OworCQllbHNlCisJCXsKKwkJCW11bHRpcmFuZ2VfZGVzZXJpYWxpemUocmFuZ2V0eXAsIG1y MSwgJnJhbmdlX2NvdW50MSwgJnJhbmdlczEpOworCQkJbXVsdGlyYW5nZV9kZXNlcmlhbGl6 ZShyYW5nZXR5cCwgbXIyLCAmcmFuZ2VfY291bnQyLCAmcmFuZ2VzMik7CisKKwkJCW1yID0g bXVsdGlyYW5nZV9taW51c19pbnRlcm5hbChtbHRybmd0eXBvaWQsCisJCQkJCQkJCQkJICAg cmFuZ2V0eXAsCisJCQkJCQkJCQkJICAgcmFuZ2VfY291bnQxLAorCQkJCQkJCQkJCSAgIHJh bmdlczEsCisJCQkJCQkJCQkJICAgcmFuZ2VfY291bnQyLAorCQkJCQkJCQkJCSAgIHJhbmdl czIpOworCQl9CisKKwkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOworCisJ CWZ1bmNjdHggPSBTUkZfUEVSQ0FMTF9TRVRVUCgpOworCQlpZiAoTXVsdGlyYW5nZUlzRW1w dHkobXIpKQorCQkJU1JGX1JFVFVSTl9ET05FKGZ1bmNjdHgpOworCQllbHNlCisJCQlTUkZf UkVUVVJOX05FWFQoZnVuY2N0eCwgTXVsdGlyYW5nZVR5cGVQR2V0RGF0dW0obXIpKTsKKwl9 Cit9CisKIC8qIG11bHRpcmFuZ2UgaW50ZXJzZWN0aW9uICovCiBEYXR1bQogbXVsdGlyYW5n ZV9pbnRlcnNlY3QoUEdfRlVOQ1RJT05fQVJHUykKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9yYW5nZXR5cGVzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcmFuZ2V0 eXBlcy5jCmluZGV4IDJkOTRhNmI4Nzc0Li4yYWIyN2JiNzU3MyAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L3JhbmdldHlwZXMuYworKysgYi9zcmMvYmFja2VuZC91dGls cy9hZHQvcmFuZ2V0eXBlcy5jCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAicG9zdGdy ZXMuaCIKIAogI2luY2x1ZGUgImNvbW1vbi9oYXNoZm4uaCIKKyNpbmNsdWRlICJmdW5jYXBp LmgiCiAjaW5jbHVkZSAibGlicHEvcHFmb3JtYXQuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4u aCIKICNpbmNsdWRlICJub2Rlcy9tYWtlZnVuY3MuaCIKQEAgLTM5LDYgKzQwLDcgQEAKICNp bmNsdWRlICJvcHRpbWl6ZXIvY2xhdXNlcy5oIgogI2luY2x1ZGUgIm9wdGltaXplci9jb3N0 LmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL29wdGltaXplci5oIgorI2luY2x1ZGUgInV0aWxz L2FycmF5LmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGls cy9kYXRlLmgiCiAjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCkBAIC0xMjEzLDYgKzEy MTUsMTY3IEBAIHJhbmdlX3NwbGl0X2ludGVybmFsKFR5cGVDYWNoZUVudHJ5ICp0eXBjYWNo ZSwgY29uc3QgUmFuZ2VUeXBlICpyMSwgY29uc3QgUmFuZ2VUCiAJcmV0dXJuIGZhbHNlOwog fQogCisvKiBzdWJ0cmFjdGlvbiBidXQgcmV0dXJuaW5nIGFuIGFycmF5IHRvIGFjY29tbW9k YXRlIHNwbGl0cyAqLworRGF0dW0KK3JhbmdlX3dpdGhvdXRfcG9ydGlvbihQR19GVU5DVElP Tl9BUkdTKQoreworCXR5cGVkZWYgc3RydWN0IHsKKwkJUmFuZ2VUeXBlICAqcnNbMl07CisJ CWludAkJCW47CisJfSByYW5nZV93aXRob3V0X3BvcnRpb25fZmN0eDsKKworCUZ1bmNDYWxs Q29udGV4dCAqZnVuY2N0eDsKKwlyYW5nZV93aXRob3V0X3BvcnRpb25fZmN0eCAqZmN0eDsK KwlNZW1vcnlDb250ZXh0IG9sZGNvbnRleHQ7CisKKwkvKiBzdHVmZiBkb25lIG9ubHkgb24g dGhlIGZpcnN0IGNhbGwgb2YgdGhlIGZ1bmN0aW9uICovCisJaWYgKFNSRl9JU19GSVJTVENB TEwoKSkKKwl7CisJCVJhbmdlVHlwZQkgICAqcjE7CisJCVJhbmdlVHlwZQkgICAqcjI7CisJ CU9pZAkJCQlybmd0eXBpZDsKKwkJVHlwZUNhY2hlRW50cnkgKnR5cGNhY2hlOworCisJCS8q IGNyZWF0ZSBhIGZ1bmN0aW9uIGNvbnRleHQgZm9yIGNyb3NzLWNhbGwgcGVyc2lzdGVuY2Ug Ki8KKwkJZnVuY2N0eCA9IFNSRl9GSVJTVENBTExfSU5JVCgpOworCisJCS8qCisJCSAqIHN3 aXRjaCB0byBtZW1vcnkgY29udGV4dCBhcHByb3ByaWF0ZSBmb3IgbXVsdGlwbGUgZnVuY3Rp b24gY2FsbHMKKwkJICovCisJCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8o ZnVuY2N0eC0+bXVsdGlfY2FsbF9tZW1vcnlfY3R4KTsKKworCQlyMSA9IFBHX0dFVEFSR19S QU5HRV9QKDApOworCQlyMiA9IFBHX0dFVEFSR19SQU5HRV9QKDEpOworCisJCS8qIERpZmZl cmVudCB0eXBlcyBzaG91bGQgYmUgcHJldmVudGVkIGJ5IEFOWVJBTkdFIG1hdGNoaW5nIHJ1 bGVzICovCisJCWlmIChSYW5nZVR5cGVHZXRPaWQocjEpICE9IFJhbmdlVHlwZUdldE9pZChy MikpCisJCQllbG9nKEVSUk9SLCAicmFuZ2UgdHlwZXMgZG8gbm90IG1hdGNoIik7CisKKwkJ LyogYWxsb2NhdGUgbWVtb3J5IGZvciB1c2VyIGNvbnRleHQgKi8KKwkJZmN0eCA9IChyYW5n ZV93aXRob3V0X3BvcnRpb25fZmN0eCAqKSBwYWxsb2Moc2l6ZW9mKHJhbmdlX3dpdGhvdXRf cG9ydGlvbl9mY3R4KSk7CisKKwkJLyoKKwkJICogSW5pdGlhbGl6ZSBzdGF0ZS4KKwkJICog V2UgY2FuJ3Qgc3RvcmUgdGhlIHJhbmdlIHR5cGNhY2hlIGluIGZuX2V4dHJhIGJlY2F1c2Ug dGhlIGNhbGxlcgorCQkgKiB1c2VzIHRoYXQgZm9yIHRoZSBTUkYgc3RhdGUuCisJCSAqLwor CQlybmd0eXBpZCA9IFJhbmdlVHlwZUdldE9pZChyMSk7CisJCXR5cGNhY2hlID0gbG9va3Vw X3R5cGVfY2FjaGUocm5ndHlwaWQsIFRZUEVDQUNIRV9SQU5HRV9JTkZPKTsKKwkJaWYgKHR5 cGNhY2hlLT5ybmdlbGVtdHlwZSA9PSBOVUxMKQorCQkJZWxvZyhFUlJPUiwgInR5cGUgJXUg aXMgbm90IGEgcmFuZ2UgdHlwZSIsIHJuZ3R5cGlkKTsKKwkJcmFuZ2Vfd2l0aG91dF9wb3J0 aW9uX2ludGVybmFsKHR5cGNhY2hlLCByMSwgcjIsIGZjdHgtPnJzLCAmZmN0eC0+bik7CisK KwkJZnVuY2N0eC0+dXNlcl9mY3R4ID0gZmN0eDsKKwkJTWVtb3J5Q29udGV4dFN3aXRjaFRv KG9sZGNvbnRleHQpOworCX0KKworCS8qIHN0dWZmIGRvbmUgb24gZXZlcnkgY2FsbCBvZiB0 aGUgZnVuY3Rpb24gKi8KKwlmdW5jY3R4ID0gU1JGX1BFUkNBTExfU0VUVVAoKTsKKwlmY3R4 ID0gZnVuY2N0eC0+dXNlcl9mY3R4OworCisJaWYgKGZ1bmNjdHgtPmNhbGxfY250ciA8IGZj dHgtPm4pCisJeworCQkvKgorCQkgKiBXZSBtdXN0IGtlZXAgdGhlc2Ugb24gc2VwYXJhdGUg bGluZXMKKwkJICogYmVjYXVzZSBTUkZfUkVUVVJOX05FWFQgZG9lcyBjYWxsX2NudHIrKzoK KwkJICovCisJCVJhbmdlVHlwZSAqcmV0ID0gZmN0eC0+cnNbZnVuY2N0eC0+Y2FsbF9jbnRy XTsKKwkJU1JGX1JFVFVSTl9ORVhUKGZ1bmNjdHgsIFJhbmdlVHlwZVBHZXREYXR1bShyZXQp KTsKKwl9CisJZWxzZQorCQkvKiBkbyB3aGVuIHRoZXJlIGlzIG5vIG1vcmUgbGVmdCAqLwor CQlTUkZfUkVUVVJOX0RPTkUoZnVuY2N0eCk7Cit9CisKKy8qCisgKiByYW5nZV93aXRob3V0 X3BvcnRpb25faW50ZXJuYWwgLSBTZXRzIG91dHB1dHMgYW5kIG91dHB1dG4gdG8gdGhlIHJh bmdlcworICogcmVtYWluaW5nIGFuZCB0aGVpciBjb3VudCAocmVzcGVjdGl2ZWx5KSBhZnRl ciBzdWJ0cmFjdGluZyByMiBmcm9tIHIxLgorICogVGhlIGFycmF5IHNob3VsZCBuZXZlciBj b250YWluIGVtcHR5IHJhbmdlcy4KKyAqIFRoZSBvdXRwdXRzIHdpbGwgYmUgb3JkZXJlZC4g V2UgZXhwZWN0IHRoYXQgb3V0cHV0cyBpcyBhbiBhcnJheSBvZgorICogUmFuZ2VUeXBlIHBv aW50ZXJzLCBhbHJlYWR5IGFsbG9jYXRlZCB3aXRoIHR3byBzbG90cy4KKyAqLwordm9pZAor cmFuZ2Vfd2l0aG91dF9wb3J0aW9uX2ludGVybmFsKFR5cGVDYWNoZUVudHJ5ICp0eXBjYWNo ZSwgUmFuZ2VUeXBlICpyMSwKKwkJCQkJCQkgICBSYW5nZVR5cGUgKnIyLCBSYW5nZVR5cGUg KipvdXRwdXRzLCBpbnQgKm91dHB1dG4pCit7CisJaW50CQkJY21wX2wxbDIsCisJCQkJY21w X2wxdTIsCisJCQkJY21wX3UxbDIsCisJCQkJY21wX3UxdTI7CisJUmFuZ2VCb3VuZAlsb3dl cjEsCisJCQkJbG93ZXIyOworCVJhbmdlQm91bmQJdXBwZXIxLAorCQkJCXVwcGVyMjsKKwli b29sCQllbXB0eTEsCisJCQkJZW1wdHkyOworCisJcmFuZ2VfZGVzZXJpYWxpemUodHlwY2Fj aGUsIHIxLCAmbG93ZXIxLCAmdXBwZXIxLCAmZW1wdHkxKTsKKwlyYW5nZV9kZXNlcmlhbGl6 ZSh0eXBjYWNoZSwgcjIsICZsb3dlcjIsICZ1cHBlcjIsICZlbXB0eTIpOworCisJaWYgKGVt cHR5MSkKKwl7CisJCS8qIGlmIHIxIGlzIGVtcHR5IHRoZW4gcjEgLSByMiBpcyBlbXB0eSwg c28gcmV0dXJuIHplcm8gcmVzdWx0cyAqLworCQkqb3V0cHV0biA9IDA7CisJCXJldHVybjsK Kwl9CisJZWxzZSBpZiAoZW1wdHkyKQorCXsKKwkJLyogcjIgaXMgZW1wdHkgc28gdGhlIHJl c3VsdCBpcyBqdXN0IHIxICh3aGljaCB3ZSBrbm93IGlzIG5vdCBlbXB0eSkgKi8KKwkJb3V0 cHV0c1swXSA9IHIxOworCQkqb3V0cHV0biA9IDE7CisJCXJldHVybjsKKwl9CisKKwkvKgor CSAqIFVzZSB0aGUgc2FtZSBsb2dpYyBhcyByYW5nZV9taW51c19pbnRlcm5hbCwKKwkgKiBi dXQgc3VwcG9ydCB0aGUgc3BsaXQgY2FzZQorCSAqLworCWNtcF9sMWwyID0gcmFuZ2VfY21w X2JvdW5kcyh0eXBjYWNoZSwgJmxvd2VyMSwgJmxvd2VyMik7CisJY21wX2wxdTIgPSByYW5n ZV9jbXBfYm91bmRzKHR5cGNhY2hlLCAmbG93ZXIxLCAmdXBwZXIyKTsKKwljbXBfdTFsMiA9 IHJhbmdlX2NtcF9ib3VuZHModHlwY2FjaGUsICZ1cHBlcjEsICZsb3dlcjIpOworCWNtcF91 MXUyID0gcmFuZ2VfY21wX2JvdW5kcyh0eXBjYWNoZSwgJnVwcGVyMSwgJnVwcGVyMik7CisK KwlpZiAoY21wX2wxbDIgPCAwICYmIGNtcF91MXUyID4gMCkKKwl7CisJCWxvd2VyMi5pbmNs dXNpdmUgPSAhbG93ZXIyLmluY2x1c2l2ZTsKKwkJbG93ZXIyLmxvd2VyID0gZmFsc2U7CS8q IGl0IHdpbGwgYmVjb21lIHRoZSB1cHBlciBib3VuZCAqLworCQlvdXRwdXRzWzBdID0gbWFr ZV9yYW5nZSh0eXBjYWNoZSwgJmxvd2VyMSwgJmxvd2VyMiwgZmFsc2UsIE5VTEwpOworCisJ CXVwcGVyMi5pbmNsdXNpdmUgPSAhdXBwZXIyLmluY2x1c2l2ZTsKKwkJdXBwZXIyLmxvd2Vy ID0gdHJ1ZTsJLyogaXQgd2lsbCBiZWNvbWUgdGhlIGxvd2VyIGJvdW5kICovCisJCW91dHB1 dHNbMV0gPSBtYWtlX3JhbmdlKHR5cGNhY2hlLCAmdXBwZXIyLCAmdXBwZXIxLCBmYWxzZSwg TlVMTCk7CisKKwkJKm91dHB1dG4gPSAyOworCX0KKwllbHNlIGlmIChjbXBfbDF1MiA+IDAg fHwgY21wX3UxbDIgPCAwKQorCXsKKwkJb3V0cHV0c1swXSA9IHIxOworCQkqb3V0cHV0biA9 IDE7CisJfQorCWVsc2UgaWYgKGNtcF9sMWwyID49IDAgJiYgY21wX3UxdTIgPD0gMCkKKwl7 CisJCSpvdXRwdXRuID0gMDsKKwl9CisJZWxzZSBpZiAoY21wX2wxbDIgPD0gMCAmJiBjbXBf dTFsMiA+PSAwICYmIGNtcF91MXUyIDw9IDApCisJeworCQlsb3dlcjIuaW5jbHVzaXZlID0g IWxvd2VyMi5pbmNsdXNpdmU7CisJCWxvd2VyMi5sb3dlciA9IGZhbHNlOwkvKiBpdCB3aWxs IGJlY29tZSB0aGUgdXBwZXIgYm91bmQgKi8KKwkJb3V0cHV0c1swXSA9IG1ha2VfcmFuZ2Uo dHlwY2FjaGUsICZsb3dlcjEsICZsb3dlcjIsIGZhbHNlLCBOVUxMKTsKKwkJKm91dHB1dG4g PSAxOworCX0KKwllbHNlIGlmIChjbXBfbDFsMiA+PSAwICYmIGNtcF91MXUyID49IDAgJiYg Y21wX2wxdTIgPD0gMCkKKwl7CisJCXVwcGVyMi5pbmNsdXNpdmUgPSAhdXBwZXIyLmluY2x1 c2l2ZTsKKwkJdXBwZXIyLmxvd2VyID0gdHJ1ZTsJLyogaXQgd2lsbCBiZWNvbWUgdGhlIGxv d2VyIGJvdW5kICovCisJCW91dHB1dHNbMF0gPSBtYWtlX3JhbmdlKHR5cGNhY2hlLCAmdXBw ZXIyLCAmdXBwZXIxLCBmYWxzZSwgTlVMTCk7CisJCSpvdXRwdXRuID0gMTsKKwl9CisJZWxz ZQorCXsKKwkJZWxvZyhFUlJPUiwgInVuZXhwZWN0ZWQgY2FzZSBpbiByYW5nZV93aXRob3V0 X3BvcnRpb24iKTsKKwl9Cit9CisKIC8qIHJhbmdlIC0+IHJhbmdlIGFnZ3JlZ2F0ZSBmdW5j dGlvbnMgKi8KIAogRGF0dW0KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9hbXZh bGlkYXRlLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvYW12YWxpZGF0ZS5oCmluZGV4IGM3OTVh NGJjMWJmLi40ODQ0YmE4MmRjMyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2Ft dmFsaWRhdGUuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvYW12YWxpZGF0ZS5oCkBAIC0y OSw4ICsyOSw4IEBAIHR5cGVkZWYgc3RydWN0IE9wRmFtaWx5T3BGdW5jR3JvdXAKIC8qIEZ1 bmN0aW9ucyBpbiBhY2Nlc3MvaW5kZXgvYW12YWxpZGF0ZS5jICovCiBleHRlcm4gTGlzdCAq aWRlbnRpZnlfb3BmYW1pbHlfZ3JvdXBzKENhdENMaXN0ICpvcHJsaXN0LCBDYXRDTGlzdCAq cHJvY2xpc3QpOwogZXh0ZXJuIGJvb2wgY2hlY2tfYW1wcm9jX2lzX2FnZ3JlZ2F0ZShPaWQg ZnVuY2lkKTsKLWV4dGVybiBib29sIGNoZWNrX2FtcHJvY19zaWduYXR1cmUoT2lkIGZ1bmNp ZCwgT2lkIHJlc3R5cGUsIGJvb2wgZXhhY3QsCi0JCQkJCQkJCSAgIGludCBtaW5hcmdzLCBp bnQgbWF4YXJncywuLi4pOworZXh0ZXJuIGJvb2wgY2hlY2tfYW1wcm9jX3NpZ25hdHVyZShP aWQgZnVuY2lkLCBPaWQgcmVzdHlwZSwgYm9vbCByZXRzZXQsCisJCQkJCQkJCSAgIGJvb2wg ZXhhY3QsIGludCBtaW5hcmdzLCBpbnQgbWF4YXJncywuLi4pOwogZXh0ZXJuIGJvb2wgY2hl Y2tfYW1vcHRzcHJvY19zaWduYXR1cmUoT2lkIGZ1bmNpZCk7CiBleHRlcm4gYm9vbCBjaGVj a19hbW9wX3NpZ25hdHVyZShPaWQgb3BubywgT2lkIHJlc3R5cGUsCiAJCQkJCQkJCSBPaWQg bGVmdHR5cGUsIE9pZCByaWdodHR5cGUpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNj ZXNzL2dpc3QuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9naXN0LmgKaW5kZXggNjQxNjc3ZTE5 MWMuLmU4YjM5M2Y5ZGZkIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2lzdC5o CisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9naXN0LmgKQEAgLTQxLDcgKzQxLDkgQEAKICNk ZWZpbmUgR0lTVF9TT1JUU1VQUE9SVF9QUk9DCQkJMTEKICNkZWZpbmUgR0lTVF9TVFJBVE5V TV9QUk9DCQkJCTEyCiAjZGVmaW5lIEdJU1RfUkVGRVJFTkNFRF9BR0dfUFJPQwkJMTMKLSNk ZWZpbmUgR0lTVE5Qcm9jcwkJCQkJMTMKKyNkZWZpbmUgR0lTVF9JTlRFUlNFQ1RfUFJPQwkJ CQkxNAorI2RlZmluZSBHSVNUX1dJVEhPVVRfUE9SVElPTl9QUk9DCQkxNQorI2RlZmluZSBH SVNUTlByb2NzCQkJCQkxNQogCiAvKgogICogUGFnZSBvcGFxdWUgZGF0YSBpbiBhIEdpU1Qg aW5kZXggcGFnZS4KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfYW1wcm9j LmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfYW1wcm9jLmRhdAppbmRleCAxZDNkNWZj ZjRkOC4uOGM5MjI5NzRiYjEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdf YW1wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2FtcHJvYy5kYXQKQEAg LTUxMCw2ICs1MTAsOSBAQAogeyBhbXByb2NmYW1pbHkgPT4gJ2dpc3QvYm94X29wcycsIGFt cHJvY2xlZnR0eXBlID0+ICdib3gnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ2JveCcsIGFt cHJvY251bSA9PiAnMTInLAogICBhbXByb2MgPT4gJ2dpc3Rfc3RyYXRudW1faWRlbnRpdHkn IH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnZ2lzdC9ib3hfb3BzJywgYW1wcm9jbGVmdHR5cGUg PT4gJ2JveCcsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnYm94JywgYW1wcm9jbnVtID0+ICcx NCcsCisgIGFtcHJvYyA9PiAnYm94X2ludGVyc2VjdChib3gsYm94KScgfSwKIHsgYW1wcm9j ZmFtaWx5ID0+ICdnaXN0L3BvbHlfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ3BvbHlnb24n LAogICBhbXByb2NyaWdodHR5cGUgPT4gJ3BvbHlnb24nLCBhbXByb2NudW0gPT4gJzEnLAog ICBhbXByb2MgPT4gJ2dpc3RfcG9seV9jb25zaXN0ZW50JyB9LApAQCAtNjEzLDYgKzYxNiwx MiBAQAogeyBhbXByb2NmYW1pbHkgPT4gJ2dpc3QvcmFuZ2Vfb3BzJywgYW1wcm9jbGVmdHR5 cGUgPT4gJ2FueXJhbmdlJywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdhbnlyYW5nZScsIGFt cHJvY251bSA9PiAnMTMnLAogICBhbXByb2MgPT4gJ3JhbmdlX2FnZyhhbnlyYW5nZSknIH0s Cit7IGFtcHJvY2ZhbWlseSA9PiAnZ2lzdC9yYW5nZV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9 PiAnYW55cmFuZ2UnLAorICBhbXByb2NyaWdodHR5cGUgPT4gJ2FueXJhbmdlJywgYW1wcm9j bnVtID0+ICcxNCcsCisgIGFtcHJvYyA9PiAncmFuZ2VfaW50ZXJzZWN0KGFueXJhbmdlLGFu eXJhbmdlKScgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdnaXN0L3JhbmdlX29wcycsIGFtcHJv Y2xlZnR0eXBlID0+ICdhbnlyYW5nZScsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnYW55cmFu Z2UnLCBhbXByb2NudW0gPT4gJzE1JywKKyAgYW1wcm9jID0+ICdyYW5nZV93aXRob3V0X3Bv cnRpb24oYW55cmFuZ2UsYW55cmFuZ2UpJyB9LAogeyBhbXByb2NmYW1pbHkgPT4gJ2dpc3Qv bmV0d29ya19vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnaW5ldCcsCiAgIGFtcHJvY3JpZ2h0 dHlwZSA9PiAnaW5ldCcsIGFtcHJvY251bSA9PiAnMScsCiAgIGFtcHJvYyA9PiAnaW5ldF9n aXN0X2NvbnNpc3RlbnQnIH0sCkBAIC02NTYsNiArNjY1LDEyIEBACiB7IGFtcHJvY2ZhbWls eSA9PiAnZ2lzdC9tdWx0aXJhbmdlX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdhbnltdWx0 aXJhbmdlJywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdhbnltdWx0aXJhbmdlJywgYW1wcm9j bnVtID0+ICcxMycsCiAgIGFtcHJvYyA9PiAncmFuZ2VfYWdnKGFueW11bHRpcmFuZ2UpJyB9 LAoreyBhbXByb2NmYW1pbHkgPT4gJ2dpc3QvbXVsdGlyYW5nZV9vcHMnLCBhbXByb2NsZWZ0 dHlwZSA9PiAnYW55bXVsdGlyYW5nZScsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnYW55bXVs dGlyYW5nZScsIGFtcHJvY251bSA9PiAnMTQnLAorICBhbXByb2MgPT4gJ211bHRpcmFuZ2Vf aW50ZXJzZWN0KGFueW11bHRpcmFuZ2UsYW55bXVsdGlyYW5nZSknIH0sCit7IGFtcHJvY2Zh bWlseSA9PiAnZ2lzdC9tdWx0aXJhbmdlX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdhbnlt dWx0aXJhbmdlJywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ICdhbnltdWx0aXJhbmdlJywgYW1w cm9jbnVtID0+ICcxNScsCisgIGFtcHJvYyA9PiAnbXVsdGlyYW5nZV93aXRob3V0X3BvcnRp b24oYW55bXVsdGlyYW5nZSxhbnltdWx0aXJhbmdlKScgfSwKIAogIyBnaW4KIHsgYW1wcm9j ZmFtaWx5ID0+ICdnaW4vYXJyYXlfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2FueWFycmF5 JywKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgYi9zcmMv aW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CmluZGV4IGE4MzY3ZmY1ODQzLi43ZmUyNTQy ZjA1OCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAorKysg Yi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CkBAIC0xMDU4Miw2ICsxMDU4Miwx MCBAQAogeyBvaWQgPT4gJzM4NjknLAogICBwcm9uYW1lID0+ICdyYW5nZV9taW51cycsIHBy b3JldHR5cGUgPT4gJ2FueXJhbmdlJywKICAgcHJvYXJndHlwZXMgPT4gJ2FueXJhbmdlIGFu eXJhbmdlJywgcHJvc3JjID0+ICdyYW5nZV9taW51cycgfSwKK3sgb2lkID0+ICc4NDA4Jywg ZGVzY3IgPT4gJ3JlbW92ZSBwb3J0aW9uIGZyb20gcmFuZ2UnLAorICBwcm9uYW1lID0+ICdy YW5nZV93aXRob3V0X3BvcnRpb24nLCBwcm9yb3dzID0+ICcyJywKKyAgcHJvcmV0c2V0ID0+ ICd0JywgcHJvcmV0dHlwZSA9PiAnYW55cmFuZ2UnLAorICBwcm9hcmd0eXBlcyA9PiAnYW55 cmFuZ2UgYW55cmFuZ2UnLCBwcm9zcmMgPT4gJ3JhbmdlX3dpdGhvdXRfcG9ydGlvbicgfSwK IHsgb2lkID0+ICczODcwJywgZGVzY3IgPT4gJ2xlc3MtZXF1YWwtZ3JlYXRlcicsCiAgIHBy b25hbWUgPT4gJ3JhbmdlX2NtcCcsIHByb3JldHR5cGUgPT4gJ2ludDQnLAogICBwcm9hcmd0 eXBlcyA9PiAnYW55cmFuZ2UgYW55cmFuZ2UnLCBwcm9zcmMgPT4gJ3JhbmdlX2NtcCcgfSwK QEAgLTEwODY5LDYgKzEwODczLDEwIEBACiB7IG9pZCA9PiAnNDI3MScsCiAgIHByb25hbWUg PT4gJ211bHRpcmFuZ2VfbWludXMnLCBwcm9yZXR0eXBlID0+ICdhbnltdWx0aXJhbmdlJywK ICAgcHJvYXJndHlwZXMgPT4gJ2FueW11bHRpcmFuZ2UgYW55bXVsdGlyYW5nZScsIHByb3Ny YyA9PiAnbXVsdGlyYW5nZV9taW51cycgfSwKK3sgb2lkID0+ICc4NDA2JywgZGVzY3IgPT4g J3JlbW92ZSBwb3J0aW9uIGZyb20gbXVsdGlyYW5nZScsCisgIHByb25hbWUgPT4gJ211bHRp cmFuZ2Vfd2l0aG91dF9wb3J0aW9uJywgcHJvcm93cyA9PiAnMScsCisgIHByb3JldHNldCA9 PiAndCcsIHByb3JldHR5cGUgPT4gJ2FueW11bHRpcmFuZ2UnLAorICBwcm9hcmd0eXBlcyA9 PiAnYW55bXVsdGlyYW5nZSBhbnltdWx0aXJhbmdlJywgcHJvc3JjID0+ICdtdWx0aXJhbmdl X3dpdGhvdXRfcG9ydGlvbicgfSwKIHsgb2lkID0+ICc0MjcyJywKICAgcHJvbmFtZSA9PiAn bXVsdGlyYW5nZV9pbnRlcnNlY3QnLCBwcm9yZXR0eXBlID0+ICdhbnltdWx0aXJhbmdlJywK ICAgcHJvYXJndHlwZXMgPT4gJ2FueW11bHRpcmFuZ2UgYW55bXVsdGlyYW5nZScsCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9yYW5nZXR5cGVzLmggYi9zcmMvaW5jbHVkZS91 dGlscy9yYW5nZXR5cGVzLmgKaW5kZXggMmI1NzQ4NzNjZWYuLmUxYjI1NmI2NWY0IDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9yYW5nZXR5cGVzLmgKKysrIGIvc3JjL2luY2x1 ZGUvdXRpbHMvcmFuZ2V0eXBlcy5oCkBAIC0xNjQsNSArMTY0LDcgQEAgZXh0ZXJuIFJhbmdl VHlwZSAqbWFrZV9lbXB0eV9yYW5nZShUeXBlQ2FjaGVFbnRyeSAqdHlwY2FjaGUpOwogZXh0 ZXJuIGJvb2wgcmFuZ2Vfc3BsaXRfaW50ZXJuYWwoVHlwZUNhY2hlRW50cnkgKnR5cGNhY2hl LCBjb25zdCBSYW5nZVR5cGUgKnIxLAogCQkJCQkJCQkgY29uc3QgUmFuZ2VUeXBlICpyMiwg UmFuZ2VUeXBlICoqb3V0cHV0MSwKIAkJCQkJCQkJIFJhbmdlVHlwZSAqKm91dHB1dDIpOwor ZXh0ZXJuIHZvaWQgcmFuZ2Vfd2l0aG91dF9wb3J0aW9uX2ludGVybmFsKFR5cGVDYWNoZUVu dHJ5ICp0eXBjYWNoZSwgUmFuZ2VUeXBlICpyMSwKKwkJCQkJCQkJCVJhbmdlVHlwZSAqcjIs IFJhbmdlVHlwZSAqKm91dHB1dHMsIGludCAqb3V0cHV0bik7CiAKICNlbmRpZgkJCQkJCQkv KiBSQU5HRVRZUEVTX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvbXVsdGlyYW5nZXR5cGVzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvbXVs dGlyYW5nZXR5cGVzLm91dAppbmRleCBjNjM2M2ViZWIyNC4uMTFhYTI4MmZmMzUgMTAwNjQ0 Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvbXVsdGlyYW5nZXR5cGVzLm91dAor KysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL211bHRpcmFuZ2V0eXBlcy5vdXQKQEAg LTIyMDAsNiArMjIwMCwxMjIgQEAgU0VMRUNUIG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoMSwy KSwgbnVtcmFuZ2UoNCw1KSkgLSBudW1tdWx0aXJhbmdlKG51bXJhbmdlKC0yLDAKICB7WzEs MiksWzQsNSl9CiAoMSByb3cpCiAKKy0tIHdpdGhvdXRfcG9ydGlvbgorU0VMRUNUIG11bHRp cmFuZ2Vfd2l0aG91dF9wb3J0aW9uKG51bW11bHRpcmFuZ2UoKSwgbnVtbXVsdGlyYW5nZSgp KTsKKyBtdWx0aXJhbmdlX3dpdGhvdXRfcG9ydGlvbiAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKygwIHJvd3MpCisKK1NFTEVDVCBtdWx0aXJhbmdlX3dpdGhvdXRfcG9ydGlv bihudW1tdWx0aXJhbmdlKCksIG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoMSwyKSkpOworIG11 bHRpcmFuZ2Vfd2l0aG91dF9wb3J0aW9uIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorKDAgcm93cykKKworU0VMRUNUIG11bHRpcmFuZ2Vfd2l0aG91dF9wb3J0aW9uKG51bW11 bHRpcmFuZ2UobnVtcmFuZ2UoMSwyKSksIG51bW11bHRpcmFuZ2UoKSk7CisgbXVsdGlyYW5n ZV93aXRob3V0X3BvcnRpb24gCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisge1sx LDIpfQorKDEgcm93KQorCitTRUxFQ1QgbXVsdGlyYW5nZV93aXRob3V0X3BvcnRpb24obnVt bXVsdGlyYW5nZShudW1yYW5nZSgxLDIpLCBudW1yYW5nZSgzLDQpKSwgbnVtbXVsdGlyYW5n ZSgpKTsKKyBtdWx0aXJhbmdlX3dpdGhvdXRfcG9ydGlvbiAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyB7WzEsMiksWzMsNCl9CisoMSByb3cpCisKK1NFTEVDVCBtdWx0aXJh bmdlX3dpdGhvdXRfcG9ydGlvbihudW1tdWx0aXJhbmdlKG51bXJhbmdlKDEsMikpLCBudW1t dWx0aXJhbmdlKG51bXJhbmdlKDEsMikpKTsKKyBtdWx0aXJhbmdlX3dpdGhvdXRfcG9ydGlv biAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKygwIHJvd3MpCisKK1NFTEVDVCBt dWx0aXJhbmdlX3dpdGhvdXRfcG9ydGlvbihudW1tdWx0aXJhbmdlKG51bXJhbmdlKDEsMikp LCBudW1tdWx0aXJhbmdlKG51bXJhbmdlKDIsNCkpKTsKKyBtdWx0aXJhbmdlX3dpdGhvdXRf cG9ydGlvbiAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB7WzEsMil9CisoMSBy b3cpCisKK1NFTEVDVCBtdWx0aXJhbmdlX3dpdGhvdXRfcG9ydGlvbihudW1tdWx0aXJhbmdl KG51bXJhbmdlKDEsMikpLCBudW1tdWx0aXJhbmdlKG51bXJhbmdlKDMsNCkpKTsKKyBtdWx0 aXJhbmdlX3dpdGhvdXRfcG9ydGlvbiAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyB7WzEsMil9CisoMSByb3cpCisKK1NFTEVDVCBtdWx0aXJhbmdlX3dpdGhvdXRfcG9ydGlv bihudW1tdWx0aXJhbmdlKG51bXJhbmdlKDEsNCkpLCBudW1tdWx0aXJhbmdlKG51bXJhbmdl KDEsMikpKTsKKyBtdWx0aXJhbmdlX3dpdGhvdXRfcG9ydGlvbiAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyB7WzIsNCl9CisoMSByb3cpCisKK1NFTEVDVCBtdWx0aXJhbmdl X3dpdGhvdXRfcG9ydGlvbihudW1tdWx0aXJhbmdlKG51bXJhbmdlKDEsNCkpLCBudW1tdWx0 aXJhbmdlKG51bXJhbmdlKDIsMykpKTsKKyBtdWx0aXJhbmdlX3dpdGhvdXRfcG9ydGlvbiAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB7WzEsMiksWzMsNCl9CisoMSByb3cp CisKK1NFTEVDVCBtdWx0aXJhbmdlX3dpdGhvdXRfcG9ydGlvbihudW1tdWx0aXJhbmdlKG51 bXJhbmdlKDEsNCkpLCBudW1tdWx0aXJhbmdlKG51bXJhbmdlKDAsOCkpKTsKKyBtdWx0aXJh bmdlX3dpdGhvdXRfcG9ydGlvbiAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKygw IHJvd3MpCisKK1NFTEVDVCBtdWx0aXJhbmdlX3dpdGhvdXRfcG9ydGlvbihudW1tdWx0aXJh bmdlKG51bXJhbmdlKDEsNCkpLCBudW1tdWx0aXJhbmdlKG51bXJhbmdlKDAsMikpKTsKKyBt dWx0aXJhbmdlX3dpdGhvdXRfcG9ydGlvbiAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyB7WzIsNCl9CisoMSByb3cpCisKK1NFTEVDVCBtdWx0aXJhbmdlX3dpdGhvdXRfcG9y dGlvbihudW1tdWx0aXJhbmdlKG51bXJhbmdlKDEsOCkpLCBudW1tdWx0aXJhbmdlKG51bXJh bmdlKDAsMiksIG51bXJhbmdlKDMsNCkpKTsKKyBtdWx0aXJhbmdlX3dpdGhvdXRfcG9ydGlv biAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB7WzIsMyksWzQsOCl9CisoMSBy b3cpCisKK1NFTEVDVCBtdWx0aXJhbmdlX3dpdGhvdXRfcG9ydGlvbihudW1tdWx0aXJhbmdl KG51bXJhbmdlKDEsOCkpLCBudW1tdWx0aXJhbmdlKG51bXJhbmdlKDIsMyksIG51bXJhbmdl KDUsbnVsbCkpKTsKKyBtdWx0aXJhbmdlX3dpdGhvdXRfcG9ydGlvbiAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyB7WzEsMiksWzMsNSl9CisoMSByb3cpCisKK1NFTEVDVCBt dWx0aXJhbmdlX3dpdGhvdXRfcG9ydGlvbihudW1tdWx0aXJhbmdlKG51bXJhbmdlKDEsMiks IG51bXJhbmdlKDQsNSkpLCBudW1tdWx0aXJhbmdlKG51bXJhbmdlKC0yLDApKSk7CisgbXVs dGlyYW5nZV93aXRob3V0X3BvcnRpb24gCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Cisge1sxLDIpLFs0LDUpfQorKDEgcm93KQorCitTRUxFQ1QgbXVsdGlyYW5nZV93aXRob3V0 X3BvcnRpb24obnVtbXVsdGlyYW5nZShudW1yYW5nZSgxLDIpLCBudW1yYW5nZSg0LDUpKSwg bnVtbXVsdGlyYW5nZShudW1yYW5nZSgyLDQpKSk7CisgbXVsdGlyYW5nZV93aXRob3V0X3Bv cnRpb24gCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisge1sxLDIpLFs0LDUpfQor KDEgcm93KQorCitTRUxFQ1QgbXVsdGlyYW5nZV93aXRob3V0X3BvcnRpb24obnVtbXVsdGly YW5nZShudW1yYW5nZSgxLDIpLCBudW1yYW5nZSg0LDUpKSwgbnVtbXVsdGlyYW5nZShudW1y YW5nZSgzLDUpKSk7CisgbXVsdGlyYW5nZV93aXRob3V0X3BvcnRpb24gCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisge1sxLDIpfQorKDEgcm93KQorCitTRUxFQ1QgbXVsdGly YW5nZV93aXRob3V0X3BvcnRpb24obnVtbXVsdGlyYW5nZShudW1yYW5nZSgxLDIpLCBudW1y YW5nZSg0LDUpKSwgbnVtbXVsdGlyYW5nZShudW1yYW5nZSgwLDkpKSk7CisgbXVsdGlyYW5n ZV93aXRob3V0X3BvcnRpb24gCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisoMCBy b3dzKQorCitTRUxFQ1QgbXVsdGlyYW5nZV93aXRob3V0X3BvcnRpb24obnVtbXVsdGlyYW5n ZShudW1yYW5nZSgxLDMpLCBudW1yYW5nZSg0LDUpKSwgbnVtbXVsdGlyYW5nZShudW1yYW5n ZSgyLDkpKSk7CisgbXVsdGlyYW5nZV93aXRob3V0X3BvcnRpb24gCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisge1sxLDIpfQorKDEgcm93KQorCitTRUxFQ1QgbXVsdGlyYW5n ZV93aXRob3V0X3BvcnRpb24obnVtbXVsdGlyYW5nZShudW1yYW5nZSgxLDIpLCBudW1yYW5n ZSg0LDUpKSwgbnVtbXVsdGlyYW5nZShudW1yYW5nZSg4LDkpKSk7CisgbXVsdGlyYW5nZV93 aXRob3V0X3BvcnRpb24gCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisge1sxLDIp LFs0LDUpfQorKDEgcm93KQorCitTRUxFQ1QgbXVsdGlyYW5nZV93aXRob3V0X3BvcnRpb24o bnVtbXVsdGlyYW5nZShudW1yYW5nZSgxLDIpLCBudW1yYW5nZSg0LDUpKSwgbnVtbXVsdGly YW5nZShudW1yYW5nZSgtMiwwKSwgbnVtcmFuZ2UoOCw5KSkpOworIG11bHRpcmFuZ2Vfd2l0 aG91dF9wb3J0aW9uIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHtbMSwyKSxb NCw1KX0KKygxIHJvdykKKwogLS0gaW50ZXJzZWN0aW9uCiBTRUxFQ1QgbnVtbXVsdGlyYW5n ZSgpICogbnVtbXVsdGlyYW5nZSgpOwogID9jb2x1bW4/IApkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9yYW5nZXR5cGVzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvcmFuZ2V0eXBlcy5vdXQKaW5kZXggYTdjYzIyMGJmMGQuLmFiMjMwOWU4YzFk IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3JhbmdldHlwZXMub3V0 CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcmFuZ2V0eXBlcy5vdXQKQEAgLTQ4 MSw2ICs0ODEsNjAgQEAgc2VsZWN0IHJhbmdlX21pbnVzKG51bXJhbmdlKDEwLjEsMTIuMiwn W10nKSwgbnVtcmFuZ2UoMC4wLDEyMC4yLCcoXScpKTsKICBlbXB0eQogKDEgcm93KQogCitz ZWxlY3QgcmFuZ2Vfd2l0aG91dF9wb3J0aW9uKCdlbXB0eSc6Om51bXJhbmdlLCBudW1yYW5n ZSgyLjAsIDMuMCkpOworIHJhbmdlX3dpdGhvdXRfcG9ydGlvbiAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisoMCByb3dzKQorCitzZWxlY3QgcmFuZ2Vfd2l0aG91dF9wb3J0aW9uKG51 bXJhbmdlKDEuMSwgMi4yKSwgJ2VtcHR5Jzo6bnVtcmFuZ2UpOworIHJhbmdlX3dpdGhvdXRf cG9ydGlvbiAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgWzEuMSwyLjIpCisoMSByb3cp CisKK3NlbGVjdCByYW5nZV93aXRob3V0X3BvcnRpb24obnVtcmFuZ2UoMS4xLCAyLjIpLCBu dW1yYW5nZSgyLjAsIDMuMCkpOworIHJhbmdlX3dpdGhvdXRfcG9ydGlvbiAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgWzEuMSwyLjApCisoMSByb3cpCisKK3NlbGVjdCByYW5nZV93 aXRob3V0X3BvcnRpb24obnVtcmFuZ2UoMS4xLCAyLjIpLCBudW1yYW5nZSgyLjIsIDMuMCkp OworIHJhbmdlX3dpdGhvdXRfcG9ydGlvbiAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg WzEuMSwyLjIpCisoMSByb3cpCisKK3NlbGVjdCByYW5nZV93aXRob3V0X3BvcnRpb24obnVt cmFuZ2UoMS4xLCAyLjIsJ1tdJyksIG51bXJhbmdlKDIuMCwgMy4wKSk7CisgcmFuZ2Vfd2l0 aG91dF9wb3J0aW9uIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBbMS4xLDIuMCkKKygx IHJvdykKKworc2VsZWN0IHJhbmdlX3dpdGhvdXRfcG9ydGlvbihudW1yYW5nZSgxLjAsIDMu MCksIG51bXJhbmdlKDEuNSwgMi4wKSk7CisgcmFuZ2Vfd2l0aG91dF9wb3J0aW9uIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBbMS4wLDEuNSkKKyBbMi4wLDMuMCkKKygyIHJvd3Mp CisKK3NlbGVjdCByYW5nZV93aXRob3V0X3BvcnRpb24obnVtcmFuZ2UoMTAuMSwxMi4yLCdb XScpLCBudW1yYW5nZSgxMTAuMCwxMjAuMiwnKF0nKSk7CisgcmFuZ2Vfd2l0aG91dF9wb3J0 aW9uIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBbMTAuMSwxMi4yXQorKDEgcm93KQor CitzZWxlY3QgcmFuZ2Vfd2l0aG91dF9wb3J0aW9uKG51bXJhbmdlKDEwLjEsMTIuMiwnW10n KSwgbnVtcmFuZ2UoMC4wLDEyMC4yLCcoXScpKTsKKyByYW5nZV93aXRob3V0X3BvcnRpb24g CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKDAgcm93cykKKworc2VsZWN0IHJhbmdlX3dp dGhvdXRfcG9ydGlvbihudW1yYW5nZSgxLjAsMy4wLCdbXScpLCBudW1yYW5nZSgxLjUsMi4w LCcoXScpKTsKKyByYW5nZV93aXRob3V0X3BvcnRpb24gCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIFsxLjAsMS41XQorICgyLjAsMy4wXQorKDIgcm93cykKKwogc2VsZWN0IG51bXJh bmdlKDQuNSwgNS41LCAnW10nKSAmJiBudW1yYW5nZSg1LjUsIDYuNSk7CiAgP2NvbHVtbj8g CiAtLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9tdWx0aXJh bmdldHlwZXMuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvbXVsdGlyYW5nZXR5cGVzLnNx bAppbmRleCA0MWQ1NTI0Mjg1YS4uMGJmYTcxY2FjYTAgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL211bHRpcmFuZ2V0eXBlcy5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVz cy9zcWwvbXVsdGlyYW5nZXR5cGVzLnNxbApAQCAtNDE0LDYgKzQxNCwyOCBAQCBTRUxFQ1Qg bnVtbXVsdGlyYW5nZShudW1yYW5nZSgxLDMpLCBudW1yYW5nZSg0LDUpKSAtIG51bW11bHRp cmFuZ2UobnVtcmFuZ2UoMiw5KQogU0VMRUNUIG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoMSwy KSwgbnVtcmFuZ2UoNCw1KSkgLSBudW1tdWx0aXJhbmdlKG51bXJhbmdlKDgsOSkpOwogU0VM RUNUIG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoMSwyKSwgbnVtcmFuZ2UoNCw1KSkgLSBudW1t dWx0aXJhbmdlKG51bXJhbmdlKC0yLDApLCBudW1yYW5nZSg4LDkpKTsKIAorLS0gd2l0aG91 dF9wb3J0aW9uCitTRUxFQ1QgbXVsdGlyYW5nZV93aXRob3V0X3BvcnRpb24obnVtbXVsdGly YW5nZSgpLCBudW1tdWx0aXJhbmdlKCkpOworU0VMRUNUIG11bHRpcmFuZ2Vfd2l0aG91dF9w b3J0aW9uKG51bW11bHRpcmFuZ2UoKSwgbnVtbXVsdGlyYW5nZShudW1yYW5nZSgxLDIpKSk7 CitTRUxFQ1QgbXVsdGlyYW5nZV93aXRob3V0X3BvcnRpb24obnVtbXVsdGlyYW5nZShudW1y YW5nZSgxLDIpKSwgbnVtbXVsdGlyYW5nZSgpKTsKK1NFTEVDVCBtdWx0aXJhbmdlX3dpdGhv dXRfcG9ydGlvbihudW1tdWx0aXJhbmdlKG51bXJhbmdlKDEsMiksIG51bXJhbmdlKDMsNCkp LCBudW1tdWx0aXJhbmdlKCkpOworU0VMRUNUIG11bHRpcmFuZ2Vfd2l0aG91dF9wb3J0aW9u KG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoMSwyKSksIG51bW11bHRpcmFuZ2UobnVtcmFuZ2Uo MSwyKSkpOworU0VMRUNUIG11bHRpcmFuZ2Vfd2l0aG91dF9wb3J0aW9uKG51bW11bHRpcmFu Z2UobnVtcmFuZ2UoMSwyKSksIG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoMiw0KSkpOworU0VM RUNUIG11bHRpcmFuZ2Vfd2l0aG91dF9wb3J0aW9uKG51bW11bHRpcmFuZ2UobnVtcmFuZ2Uo MSwyKSksIG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoMyw0KSkpOworU0VMRUNUIG11bHRpcmFu Z2Vfd2l0aG91dF9wb3J0aW9uKG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoMSw0KSksIG51bW11 bHRpcmFuZ2UobnVtcmFuZ2UoMSwyKSkpOworU0VMRUNUIG11bHRpcmFuZ2Vfd2l0aG91dF9w b3J0aW9uKG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoMSw0KSksIG51bW11bHRpcmFuZ2UobnVt cmFuZ2UoMiwzKSkpOworU0VMRUNUIG11bHRpcmFuZ2Vfd2l0aG91dF9wb3J0aW9uKG51bW11 bHRpcmFuZ2UobnVtcmFuZ2UoMSw0KSksIG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoMCw4KSkp OworU0VMRUNUIG11bHRpcmFuZ2Vfd2l0aG91dF9wb3J0aW9uKG51bW11bHRpcmFuZ2UobnVt cmFuZ2UoMSw0KSksIG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoMCwyKSkpOworU0VMRUNUIG11 bHRpcmFuZ2Vfd2l0aG91dF9wb3J0aW9uKG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoMSw4KSks IG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoMCwyKSwgbnVtcmFuZ2UoMyw0KSkpOworU0VMRUNU IG11bHRpcmFuZ2Vfd2l0aG91dF9wb3J0aW9uKG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoMSw4 KSksIG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoMiwzKSwgbnVtcmFuZ2UoNSxudWxsKSkpOwor U0VMRUNUIG11bHRpcmFuZ2Vfd2l0aG91dF9wb3J0aW9uKG51bW11bHRpcmFuZ2UobnVtcmFu Z2UoMSwyKSwgbnVtcmFuZ2UoNCw1KSksIG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoLTIsMCkp KTsKK1NFTEVDVCBtdWx0aXJhbmdlX3dpdGhvdXRfcG9ydGlvbihudW1tdWx0aXJhbmdlKG51 bXJhbmdlKDEsMiksIG51bXJhbmdlKDQsNSkpLCBudW1tdWx0aXJhbmdlKG51bXJhbmdlKDIs NCkpKTsKK1NFTEVDVCBtdWx0aXJhbmdlX3dpdGhvdXRfcG9ydGlvbihudW1tdWx0aXJhbmdl KG51bXJhbmdlKDEsMiksIG51bXJhbmdlKDQsNSkpLCBudW1tdWx0aXJhbmdlKG51bXJhbmdl KDMsNSkpKTsKK1NFTEVDVCBtdWx0aXJhbmdlX3dpdGhvdXRfcG9ydGlvbihudW1tdWx0aXJh bmdlKG51bXJhbmdlKDEsMiksIG51bXJhbmdlKDQsNSkpLCBudW1tdWx0aXJhbmdlKG51bXJh bmdlKDAsOSkpKTsKK1NFTEVDVCBtdWx0aXJhbmdlX3dpdGhvdXRfcG9ydGlvbihudW1tdWx0 aXJhbmdlKG51bXJhbmdlKDEsMyksIG51bXJhbmdlKDQsNSkpLCBudW1tdWx0aXJhbmdlKG51 bXJhbmdlKDIsOSkpKTsKK1NFTEVDVCBtdWx0aXJhbmdlX3dpdGhvdXRfcG9ydGlvbihudW1t dWx0aXJhbmdlKG51bXJhbmdlKDEsMiksIG51bXJhbmdlKDQsNSkpLCBudW1tdWx0aXJhbmdl KG51bXJhbmdlKDgsOSkpKTsKK1NFTEVDVCBtdWx0aXJhbmdlX3dpdGhvdXRfcG9ydGlvbihu dW1tdWx0aXJhbmdlKG51bXJhbmdlKDEsMiksIG51bXJhbmdlKDQsNSkpLCBudW1tdWx0aXJh bmdlKG51bXJhbmdlKC0yLDApLCBudW1yYW5nZSg4LDkpKSk7CisKIC0tIGludGVyc2VjdGlv bgogU0VMRUNUIG51bW11bHRpcmFuZ2UoKSAqIG51bW11bHRpcmFuZ2UoKTsKIFNFTEVDVCBu dW1tdWx0aXJhbmdlKCkgKiBudW1tdWx0aXJhbmdlKG51bXJhbmdlKDEsMikpOwpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcmFuZ2V0eXBlcy5zcWwgYi9zcmMvdGVzdC9y ZWdyZXNzL3NxbC9yYW5nZXR5cGVzLnNxbAppbmRleCBhNWVjZGY1MzcyZi4uN2ZjODA1ZDlm ZmEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3JhbmdldHlwZXMuc3FsCisr KyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3JhbmdldHlwZXMuc3FsCkBAIC0xMDcsNiArMTA3 LDE2IEBAIHNlbGVjdCBudW1yYW5nZSgxLjEsIDIuMiwnW10nKSAtIG51bXJhbmdlKDIuMCwg My4wKTsKIHNlbGVjdCByYW5nZV9taW51cyhudW1yYW5nZSgxMC4xLDEyLjIsJ1tdJyksIG51 bXJhbmdlKDExMC4wLDEyMC4yLCcoXScpKTsKIHNlbGVjdCByYW5nZV9taW51cyhudW1yYW5n ZSgxMC4xLDEyLjIsJ1tdJyksIG51bXJhbmdlKDAuMCwxMjAuMiwnKF0nKSk7CiAKK3NlbGVj dCByYW5nZV93aXRob3V0X3BvcnRpb24oJ2VtcHR5Jzo6bnVtcmFuZ2UsIG51bXJhbmdlKDIu MCwgMy4wKSk7CitzZWxlY3QgcmFuZ2Vfd2l0aG91dF9wb3J0aW9uKG51bXJhbmdlKDEuMSwg Mi4yKSwgJ2VtcHR5Jzo6bnVtcmFuZ2UpOworc2VsZWN0IHJhbmdlX3dpdGhvdXRfcG9ydGlv bihudW1yYW5nZSgxLjEsIDIuMiksIG51bXJhbmdlKDIuMCwgMy4wKSk7CitzZWxlY3QgcmFu Z2Vfd2l0aG91dF9wb3J0aW9uKG51bXJhbmdlKDEuMSwgMi4yKSwgbnVtcmFuZ2UoMi4yLCAz LjApKTsKK3NlbGVjdCByYW5nZV93aXRob3V0X3BvcnRpb24obnVtcmFuZ2UoMS4xLCAyLjIs J1tdJyksIG51bXJhbmdlKDIuMCwgMy4wKSk7CitzZWxlY3QgcmFuZ2Vfd2l0aG91dF9wb3J0 aW9uKG51bXJhbmdlKDEuMCwgMy4wKSwgbnVtcmFuZ2UoMS41LCAyLjApKTsKK3NlbGVjdCBy YW5nZV93aXRob3V0X3BvcnRpb24obnVtcmFuZ2UoMTAuMSwxMi4yLCdbXScpLCBudW1yYW5n ZSgxMTAuMCwxMjAuMiwnKF0nKSk7CitzZWxlY3QgcmFuZ2Vfd2l0aG91dF9wb3J0aW9uKG51 bXJhbmdlKDEwLjEsMTIuMiwnW10nKSwgbnVtcmFuZ2UoMC4wLDEyMC4yLCcoXScpKTsKK3Nl bGVjdCByYW5nZV93aXRob3V0X3BvcnRpb24obnVtcmFuZ2UoMS4wLDMuMCwnW10nKSwgbnVt cmFuZ2UoMS41LDIuMCwnKF0nKSk7CisKIHNlbGVjdCBudW1yYW5nZSg0LjUsIDUuNSwgJ1td JykgJiYgbnVtcmFuZ2UoNS41LCA2LjUpOwogc2VsZWN0IG51bXJhbmdlKDEuMCwgMi4wKSA8 PCBudW1yYW5nZSgzLjAsIDQuMCk7CiBzZWxlY3QgbnVtcmFuZ2UoMS4wLCAzLjAsJ1tdJykg PDwgbnVtcmFuZ2UoMy4wLCA0LjAsJ1tdJyk7Ci0tIAoyLjQyLjAKCg== --------------XirkSnpA0J2rgDaW8dSEFd2s Content-Type: text/x-patch; charset=UTF-8; name="v25-0006-Add-UPDATE-DELETE-FOR-PORTION-OF.patch" Content-Disposition: attachment; filename="v25-0006-Add-UPDATE-DELETE-FOR-PORTION-OF.patch" Content-Transfer-Encoding: base64 RnJvbSAxZGFlNzI1MjJkNmYyMmFkZmJiNDFjMWE0ZjkyOTQwZTAwMTJhMTcxIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IEZyaSwgMjUgSnVuIDIwMjEgMTg6NTQ6MzUgLTA3 MDAKU3ViamVjdDogW1BBVENIIHYyNSA2LzhdIEFkZCBVUERBVEUvREVMRVRFIEZPUiBQT1JU SU9OIE9GCgotIEFkZGVkIGJpc29uIHN1cHBvcnQgZm9yIEZPUiBQT1JUSU9OIE9GIHN5bnRh eC4gVGhlIGJvdW5kcyBtdXN0IGJlCiAgY29uc3RhbnQsIHNvIHdlIGZvcmJpZCBjb2x1bW4g cmVmZXJlbmNlcywgc3VicXVlcmllcywgZXRjLiBCdXQgd2UKICBwZXJtaXQgdGhlIG1hZ2lj IFVOQk9VTkRFRCBrZXl3b3JkIGFzIHRoZSBGUk9NIG9yIHRoZSBUTyAob3IgYm90aCkKICB0 byBwZXJmb3JtIGFuIHVuYm91bmRlZCB1cGRhdGUvZGVsZXRlLiBXZSBhbHNvIGFjY2VwdCBm dW5jdGlvbnMgbGlrZQogIE5PVygpLgotIEFkZGVkIGxvZ2ljIHRvIGV4ZWN1dG9yIHRvIGlu c2VydCBuZXcgcm93cyBmb3IgdGhlICJsZWZ0b3ZlciIgcGFydCBvZgogIGEgcmVjb3JkIHRv dWNoZWQgYnkgYSBGT1IgUE9SVElPTiBPRiBxdWVyeS4KLSBBZGRlZCB0Z190ZW1wb3JhbCBk ZXNjcmlwdG9yIHRvIHRoZSBUcmlnZ2VyRGF0YSBzdHJ1Y3QgdGhhdCB3ZSBwYXNzIHRvCiAg dHJpZ2dlciBmdW5jdGlvbnMuIE91ciB0cmlnZ2VycyB1c2UgdGhpcyB0byBsZWFybiB3aGF0 IGJvdW5kcyB3ZXJlCiAgZ2l2ZW4gaW4gdGhlIEZPUiBQT1JUSU9OIE9GIGNsYXVzZS4KLSBE b2N1bWVudGVkIEZPUiBQT1JUSU9OIE9GLgotIERvY3VtZW50ZWQgdGdfdGVtcG9yYWwgc3Ry dWN0LgotIEFkZGVkIHRlc3RzLgotLS0KIC4uLi9wb3N0Z3Jlc19mZHcvZXhwZWN0ZWQvcG9z dGdyZXNfZmR3Lm91dCAgICB8ICAgNSArCiBjb250cmliL3Bvc3RncmVzX2Zkdy9zcWwvcG9z dGdyZXNfZmR3LnNxbCAgICAgfCAgIDQgKwogY29udHJpYi91bmFjY2VudC91bmFjY2VudC5j ICAgICAgICAgICAgICAgICAgIHwgICAyICstCiBkb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dt bCAgICAgICAgICAgICAgICAgICAgfCAgIDQgKy0KIGRvYy9zcmMvc2dtbC9yZWYvZGVsZXRl LnNnbWwgICAgICAgICAgICAgICAgICB8ICA2OSArKwogZG9jL3NyYy9zZ21sL3JlZi91cGRh dGUuc2dtbCAgICAgICAgICAgICAgICAgIHwgIDg3ICsrKwogZG9jL3NyYy9zZ21sL3RyaWdn ZXIuc2dtbCAgICAgICAgICAgICAgICAgICAgIHwgIDYwICstCiBzcmMvYmFja2VuZC9hY2Nl c3MvZ2lzdC9naXN0dmFsaWRhdGUuYyAgICAgICAgfCAgMzQgKy0KIHNyYy9iYWNrZW5kL2Nv bW1hbmRzL2V4cGxhaW4uYyAgICAgICAgICAgICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQv Y29tbWFuZHMvdGFibGVjbWRzLmMgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5k L2NvbW1hbmRzL3RyaWdnZXIuYyAgICAgICAgICAgICAgICB8ICA0OSArKwogc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY01haW4uYyAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jICAgICAgICB8IDMwMCArKysrKysrLQog c3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMgICAgICAgICAgICAgICAgIHwgIDI0ICsK IHNyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYyAgICAgICB8ICAgOCAr LQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jICAgICAgICAgIHwgICAx ICsKIHNyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3BhdGhub2RlLmMgICAgICAgICB8ICAg NCArLQogc3JjL2JhY2tlbmQvcGFyc2VyL2FuYWx5emUuYyAgICAgICAgICAgICAgICAgIHwg MjQyICsrKysrKy0KIHNyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgICAgICAgICAgICAgICAg ICAgICB8ICA1NiArLQogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2FnZy5jICAgICAgICAg ICAgICAgIHwgIDEwICsKIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9jb2xsYXRlLmMgICAg ICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jICAgICAg ICAgICAgICAgfCAgIDggKwogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2Z1bmMuYyAgICAg ICAgICAgICAgIHwgICAzICsKIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9tZXJnZS5jICAg ICAgICAgICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvcmV3cml0ZS9yZXdyaXRlSGFuZGxl ci5jICAgICAgICAgIHwgIDQwICsKIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9yaV90cmlnZ2Vy cy5jICAgICAgICAgICB8ICA3NCArKwogc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2Nh Y2hlLmMgICAgICAgICAgIHwgIDU3ICstCiBzcmMvaW5jbHVkZS9hY2Nlc3Mvc3RyYXRudW0u aCAgICAgICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9pbmNsdWRlL2NvbW1hbmRzL3RyaWdn ZXIuaCAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9k ZXMuaCAgICAgICAgICAgICAgICAgfCAgMjYgKwogc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vu b2Rlcy5oICAgICAgICAgICAgICAgIHwgIDQ2ICstCiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXRo bm9kZXMuaCAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvbm9kZXMvcGxh bm5vZGVzLmggICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL25vZGVzL3By aW1ub2Rlcy5oICAgICAgICAgICAgICAgICB8ICAyNiArCiBzcmMvaW5jbHVkZS9vcHRpbWl6 ZXIvcGF0aG5vZGUuaCAgICAgICAgICAgICAgfCAgIDMgKy0KIHNyYy9pbmNsdWRlL3BhcnNl ci9hbmFseXplLmggICAgICAgICAgICAgICAgICB8ICAgMyArLQogc3JjL2luY2x1ZGUvcGFy c2VyL2t3bGlzdC5oICAgICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL3Bh cnNlci9wYXJzZV9ub2RlLmggICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS91 dGlscy9sc3lzY2FjaGUuaCAgICAgICAgICAgICAgICAgfCAgIDQgKy0KIHNyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvZm9yX3BvcnRpb25fb2Yub3V0ICB8IDY4NSArKysrKysrKysrKysr KysrKysKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvb3ByX3Nhbml0eS5vdXQgICAgICB8 ICAgMSArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3ByaXZpbGVnZXMub3V0ICAgICAg fCAgMTggKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC91cGRhdGFibGVfdmlld3Mub3V0 IHwgIDMyICsKIC4uLi9yZWdyZXNzL2V4cGVjdGVkL3dpdGhvdXRfb3ZlcmxhcHMub3V0ICAg ICB8IDE0NCArKystCiBzcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlICAgICAg ICAgICAgfCAgIDIgKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2Zvcl9wb3J0aW9uX29mLnNx bCAgICAgICB8IDUzMSArKysrKysrKysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvb3By X3Nhbml0eS5zcWwgICAgICAgICAgIHwgICAxICsKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3By aXZpbGVnZXMuc3FsICAgICAgICAgICB8ICAxOCArCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC91 cGRhdGFibGVfdmlld3Muc3FsICAgICAgfCAgMTQgKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwv d2l0aG91dF9vdmVybGFwcy5zcWwgICAgIHwgIDkzICsrLQogNTAgZmlsZXMgY2hhbmdlZCwg MjczNCBpbnNlcnRpb25zKCspLCA2OCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2Zvcl9wb3J0aW9uX29mLm91dAogY3JlYXRl IG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2Zvcl9wb3J0aW9uX29mLnNxbAoK ZGlmZiAtLWdpdCBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2V4cGVjdGVkL3Bvc3RncmVzX2Zk dy5vdXQgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9leHBlY3RlZC9wb3N0Z3Jlc19mZHcub3V0 CmluZGV4IGMzNTVlOGYzZjdkLi45N2I0OWYwYzFmMSAxMDA2NDQKLS0tIGEvY29udHJpYi9w b3N0Z3Jlc19mZHcvZXhwZWN0ZWQvcG9zdGdyZXNfZmR3Lm91dAorKysgYi9jb250cmliL3Bv c3RncmVzX2Zkdy9leHBlY3RlZC9wb3N0Z3Jlc19mZHcub3V0CkBAIC02MjkzLDYgKzYyOTMs MTEgQEAgREVMRVRFIEZST00gZnQyCiAKIERFTEVURSBGUk9NIGZ0MiBXSEVSRSBmdDIuYzEg PiAyMDAwOwogQUxURVIgU0VSVkVSIGxvb3BiYWNrIE9QVElPTlMgKEFERCBleHRlbnNpb25z ICdwb3N0Z3Jlc19mZHcnKTsKKy0tIFRlc3QgVVBEQVRFL0RFTEVURSB3aXRoIEZPUiBQT1JU SU9OIE9GCitVUERBVEUgZnQyIEZPUiBQT1JUSU9OIE9GIGMzIEZST00gJ2EnIFRPICdiJyBT RVQgYzEgPSAxOworRVJST1I6ICBmb3JlaWduIHRhYmxlcyBkb24ndCBzdXBwb3J0IEZPUiBQ T1JUSU9OIE9GCitERUxFVEUgRlJPTSBmdDIgRk9SIFBPUlRJT04gT0YgYzMgRlJPTSAnYScg VE8gJ2InOworRVJST1I6ICBmb3JlaWduIHRhYmxlcyBkb24ndCBzdXBwb3J0IEZPUiBQT1JU SU9OIE9GCiAtLSBUZXN0IHRoYXQgdHJpZ2dlciBvbiByZW1vdGUgdGFibGUgd29ya3MgYXMg ZXhwZWN0ZWQKIENSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OICJTIDEiLkZfQlJUUklHKCkg UkVUVVJOUyB0cmlnZ2VyIEFTICQkCiBCRUdJTgpkaWZmIC0tZ2l0IGEvY29udHJpYi9wb3N0 Z3Jlc19mZHcvc3FsL3Bvc3RncmVzX2Zkdy5zcWwgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9z cWwvcG9zdGdyZXNfZmR3LnNxbAppbmRleCA4MTJlNzY0NmUxNi4uNjAzY2I3M2U5NzggMTAw NjQ0Ci0tLSBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3NxbC9wb3N0Z3Jlc19mZHcuc3FsCisr KyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3NxbC9wb3N0Z3Jlc19mZHcuc3FsCkBAIC0xNTQ2 LDYgKzE1NDYsMTAgQEAgREVMRVRFIEZST00gZnQyCiBERUxFVEUgRlJPTSBmdDIgV0hFUkUg ZnQyLmMxID4gMjAwMDsKIEFMVEVSIFNFUlZFUiBsb29wYmFjayBPUFRJT05TIChBREQgZXh0 ZW5zaW9ucyAncG9zdGdyZXNfZmR3Jyk7CiAKKy0tIFRlc3QgVVBEQVRFL0RFTEVURSB3aXRo IEZPUiBQT1JUSU9OIE9GCitVUERBVEUgZnQyIEZPUiBQT1JUSU9OIE9GIGMzIEZST00gJ2En IFRPICdiJyBTRVQgYzEgPSAxOworREVMRVRFIEZST00gZnQyIEZPUiBQT1JUSU9OIE9GIGMz IEZST00gJ2EnIFRPICdiJzsKKwogLS0gVGVzdCB0aGF0IHRyaWdnZXIgb24gcmVtb3RlIHRh YmxlIHdvcmtzIGFzIGV4cGVjdGVkCiBDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiAiUyAx Ii5GX0JSVFJJRygpIFJFVFVSTlMgdHJpZ2dlciBBUyAkJAogQkVHSU4KZGlmZiAtLWdpdCBh L2NvbnRyaWIvdW5hY2NlbnQvdW5hY2NlbnQuYyBiL2NvbnRyaWIvdW5hY2NlbnQvdW5hY2Nl bnQuYwppbmRleCA3MDc5NjIzMDVmOC4uM2I3NjQ2ZWM3MmEgMTAwNjQ0Ci0tLSBhL2NvbnRy aWIvdW5hY2NlbnQvdW5hY2NlbnQuYworKysgYi9jb250cmliL3VuYWNjZW50L3VuYWNjZW50 LmMKQEAgLTQ0OSw3ICs0NDksNyBAQCB1bmFjY2VudF9kaWN0KFBHX0ZVTkNUSU9OX0FSR1Mp CiAJCSAqIFVzZSB0aGUgInVuYWNjZW50IiBkaWN0aW9uYXJ5IHRoYXQgaXMgaW4gdGhlIHNh bWUgc2NoZW1hIHRoYXQgdGhpcwogCQkgKiBmdW5jdGlvbiBpcyBpbi4KIAkJICovCi0JCU9p ZAkJCXByb2Nuc3BpZCA9IGdldF9mdW5jX25hbWVzcGFjZShmY2luZm8tPmZsaW5mby0+Zm5f b2lkKTsKKwkJT2lkCQkJcHJvY25zcGlkID0gZ2V0X2Z1bmNfbmFtZXNwYWNlKGZjaW5mby0+ ZmxpbmZvLT5mbl9vaWQsIHRydWUpOwogCQljb25zdCBjaGFyICpkaWN0bmFtZSA9ICJ1bmFj Y2VudCI7CiAKIAkJZGljdE9pZCA9IEdldFN5c0NhY2hlT2lkMihUU0RJQ1ROQU1FTlNQLCBB bnVtX3BnX3RzX2RpY3Rfb2lkLApkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2NhdGFsb2dz LnNnbWwgYi9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbAppbmRleCA2ZjZjOGE1MjA0OS4u NmNlNmQwYTUwMTEgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCisr KyBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCkBAIC04MzMsNyArODMzLDcgQEAKICAg ICAgICA8c3RydWN0ZmllbGQ+YW1vcHB1cnBvc2U8L3N0cnVjdGZpZWxkPiA8dHlwZT5jaGFy PC90eXBlPgogICAgICAgPC9wYXJhPgogICAgICAgPHBhcmE+Ci0gICAgICAgT3BlcmF0b3Ig cHVycG9zZSwgZWl0aGVyIDxsaXRlcmFsPnM8L2xpdGVyYWw+IGZvciBzZWFyY2ggb3IKKyAg ICAgICBPcGVyYXRvciBwdXJwb3NlLCBlaXRoZXIgPGxpdGVyYWw+czwvbGl0ZXJhbD4gZm9y IHNlYXJjaCwgb3IKICAgICAgICA8bGl0ZXJhbD5vPC9saXRlcmFsPiBmb3Igb3JkZXJpbmcK ICAgICAgIDwvcGFyYT48L2VudHJ5PgogICAgICA8L3Jvdz4KQEAgLTg2NSw3ICs4NjUsNyBA QAogICAgICAgPC9wYXJhPgogICAgICAgPHBhcmE+CiAgICAgICAgVGhlIEItdHJlZSBvcGVy YXRvciBmYW1pbHkgdGhpcyBlbnRyeSBzb3J0cyBhY2NvcmRpbmcgdG8sIGlmIGFuCi0gICAg ICAgb3JkZXJpbmcgb3BlcmF0b3I7IHplcm8gaWYgYSBzZWFyY2ggb3BlcmF0b3Igb3IgcG9y dGlvbiBvcGVyYXRvcgorICAgICAgIG9yZGVyaW5nIG9wZXJhdG9yOyB6ZXJvIGlmIGEgc2Vh cmNoIG9wZXJhdG9yCiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CiAgICAg PC90Ym9keT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvZGVsZXRlLnNnbWwgYi9k b2Mvc3JjL3NnbWwvcmVmL2RlbGV0ZS5zZ21sCmluZGV4IDFiODFiNGU3ZDc0Li4xYzcyNzUz NDFlYSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9kZWxldGUuc2dtbAorKysgYi9k b2Mvc3JjL3NnbWwvcmVmL2RlbGV0ZS5zZ21sCkBAIC0yMyw2ICsyMyw3IEBAIFBvc3RncmVT UUwgZG9jdW1lbnRhdGlvbgogPHN5bm9wc2lzPgogWyBXSVRIIFsgUkVDVVJTSVZFIF0gPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPndpdGhfcXVlcnk8L3JlcGxhY2VhYmxlPiBb LCAuLi5dIF0KIERFTEVURSBGUk9NIFsgT05MWSBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4gWyAqIF0gWyBbIEFTIF0gPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmFsaWFzPC9yZXBsYWNlYWJsZT4gXQorICAgIFsg Rk9SIFBPUlRJT04gT0YgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJhbmdlX29y X3BlcmlvZF9uYW1lPC9yZXBsYWNlYWJsZT4gRlJPTSA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+c3RhcnRfdGltZTwvcmVwbGFjZWFibGU+IFRPIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5lbmRfdGltZTwvcmVwbGFjZWFibGU+IF0KICAgICBbIFVTSU5HIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5mcm9tX2l0ZW08L3JlcGxhY2VhYmxlPiBb LCAuLi5dIF0KICAgICBbIFdIRVJFIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5j b25kaXRpb248L3JlcGxhY2VhYmxlPiB8IFdIRVJFIENVUlJFTlQgT0YgPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPmN1cnNvcl9uYW1lPC9yZXBsYWNlYWJsZT4gXQogICAgIFsg UkVUVVJOSU5HICogfCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+b3V0cHV0X2V4 cHJlc3Npb248L3JlcGxhY2VhYmxlPiBbIFsgQVMgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+b3V0cHV0X25hbWU8L3JlcGxhY2VhYmxlPiBdIFssIC4uLl0gXQpAQCAtNTQs NiArNTUsMzkgQEAgREVMRVRFIEZST00gWyBPTkxZIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBbICoKICAgIGNpcmN1bXN0YW5j ZXMuCiAgIDwvcGFyYT4KIAorICA8cGFyYT4KKyAgIElmIHRoZSB0YWJsZSBoYXMgYSByYW5n ZSBvciBtdWx0aXJhbmdlIGNvbHVtbiwKKyAgIHlvdSBtYXkgc3VwcGx5IGEgPGxpdGVyYWw+ Rk9SIFBPUlRJT04gT0Y8L2xpdGVyYWw+IGNsYXVzZSwgYW5kIHlvdXIgZGVsZXRlIHdpbGwK KyAgIG9ubHkgYWZmZWN0IHJvd3MgdGhhdCBvdmVybGFwIHRoZSBnaXZlbiBpbnRlcnZhbC4g RnVydGhlcm1vcmUsIGlmIGEgcm93J3Mgc3BhbgorICAgZXh0ZW5kcyBvdXRzaWRlIHRoZSA8 bGl0ZXJhbD5GT1IgUE9SVElPTiBPRjwvbGl0ZXJhbD4gYm91bmRzLCB0aGVuIHlvdXIgZGVs ZXRlCisgICB3aWxsIG9ubHkgY2hhbmdlIHRoZSBzcGFuIHdpdGhpbiB0aG9zZSBib3VuZHMu IEluIGVmZmVjdCB5b3UgYXJlIGRlbGV0aW5nIGFueQorICAgbW9tZW50IHRhcmdldGVkIGJ5 IDxsaXRlcmFsPkZPUiBQT1JUSU9OIE9GPC9saXRlcmFsPiBhbmQgbm8gbW9tZW50cyBvdXRz aWRlLgorICA8L3BhcmE+CisKKyAgPHBhcmE+CisgICBTcGVjaWZpY2FsbHksIGFmdGVyIDxw cm9kdWN0bmFtZT5Qb3N0Z3JlU1FMPC9wcm9kdWN0bmFtZT4gZGVsZXRlcyB0aGUgZXhpc3Rp bmcgcm93LAorICAgaXQgd2lsbCA8bGl0ZXJhbD5JTlNFUlQ8L2xpdGVyYWw+CisgICBuZXcg cm93cyB3aG9zZSByYW5nZSBvciBzdGFydC9lbmQgY29sdW1uKHMpIHJlY2VpdmUgdGhlIHJl bWFpbmluZyBzcGFuIG91dHNpZGUKKyAgIHRoZSB0YXJnZXRlZCBib3VuZHMsIGNvbnRhaW5p bmcgdGhlIG9yaWdpbmFsIHZhbHVlcyBpbiBvdGhlciBjb2x1bW5zLgorICAgVGhlcmUgd2ls bCBiZSB6ZXJvIHRvIHR3byBpbnNlcnRlZCByZWNvcmRzLAorICAgZGVwZW5kaW5nIG9uIHdo ZXRoZXIgdGhlIG9yaWdpbmFsIHNwYW4gZXh0ZW5kZWQgYmVmb3JlIHRoZSB0YXJnZXRlZAor ICAgPGxpdGVyYWw+RlJPTTwvbGl0ZXJhbD4sIGFmdGVyIHRoZSB0YXJnZXRlZCA8bGl0ZXJh bD5UTzwvbGl0ZXJhbD4sIGJvdGgsIG9yIG5laXRoZXIuCisgIDwvcGFyYT4KKworICA8cGFy YT4KKyAgIFRoZXNlIHNlY29uZGFyeSBpbnNlcnRzIGZpcmUgPGxpdGVyYWw+SU5TRVJUPC9s aXRlcmFsPiB0cmlnZ2Vycy4gRmlyc3QKKyAgIDxsaXRlcmFsPkJFRk9SRSBERUxFVEU8L2xp dGVyYWw+IHRyaWdnZXJzIGZpcnN0LCB0aGVuCisgICA8bGl0ZXJhbD5CRUZPUkUgSU5TRVJU PC9saXRlcmFsPiwgdGhlbiA8bGl0ZXJhbD5BRlRFUiBJTlNFUlQ8L2xpdGVyYWw+LAorICAg dGhlbiA8bGl0ZXJhbD5BRlRFUiBERUxFVEU8L2xpdGVyYWw+LgorICA8L3BhcmE+CisKKyAg PHBhcmE+CisgICBUaGVzZSBzZWNvbmRhcnkgaW5zZXJ0cyBkbyBub3QgcmVxdWlyZSA8bGl0 ZXJhbD5JTlNFUlQ8L2xpdGVyYWw+IHByaXZpbGVnZSBvbiB0aGUgdGFibGUuCisgICBUaGlz IGlzIGJlY2F1c2UgY29uY2VwdHVhbGx5IG5vIG5ldyBpbmZvcm1hdGlvbiBoYXMgYmVlbiBh ZGRlZC4gVGhlIGluc2VydGVkIHJvd3Mgb25seSBwcmVzZXJ2ZQorICAgZXhpc3RpbmcgZGF0 YSBhYm91dCB0aGUgdW50YXJnZXRlZCB0aW1lIHBlcmlvZC4gTm90ZSB0aGlzIG1heSByZXN1 bHQgaW4gdXNlcnMgZmlyaW5nIDxsaXRlcmFsPklOU0VSVDwvbGl0ZXJhbD4KKyAgIHRyaWdn ZXJzIHdobyBkb24ndCBoYXZlIGluc2VydCBwcml2aWxlZ2VzLCBzbyBiZSBjYXJlZnVsIGFi b3V0IDxsaXRlcmFsPlNFQ1VSSVRZIERFRklORVI8L2xpdGVyYWw+IHRyaWdnZXIgZnVuY3Rp b25zIQorICA8L3BhcmE+CisKICAgPHBhcmE+CiAgICBUaGUgb3B0aW9uYWwgPGxpdGVyYWw+ UkVUVVJOSU5HPC9saXRlcmFsPiBjbGF1c2UgY2F1c2VzIDxjb21tYW5kPkRFTEVURTwvY29t bWFuZD4KICAgIHRvIGNvbXB1dGUgYW5kIHJldHVybiB2YWx1ZShzKSBiYXNlZCBvbiBlYWNo IHJvdyBhY3R1YWxseSBkZWxldGVkLgpAQCAtMTE2LDYgKzE1MCw0MSBAQCBERUxFVEUgRlJP TSBbIE9OTFkgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfbmFtZTwv cmVwbGFjZWFibGU+IFsgKgogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4K IAorICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT48cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+cmFuZ2Vfb3JfcGVyaW9kX25hbWU8L3JlcGxhY2VhYmxlPjwvdGVybT4KKyAg ICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgVGhlIHJhbmdlIGNvbHVtbiBvciBw ZXJpb2QgdG8gdXNlIHdoZW4gcGVyZm9ybWluZyBhIHRlbXBvcmFsIGRlbGV0ZS4KKyAgICAg PC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgPHZh cmxpc3RlbnRyeT4KKyAgICA8dGVybT48cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ c3RhcnRfdGltZTwvcmVwbGFjZWFibGU+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAg PHBhcmE+CisgICAgICBUaGUgZWFybGllc3QgdGltZSAoaW5jbHVzaXZlKSB0byBjaGFuZ2Ug aW4gYSB0ZW1wb3JhbCBkZWxldGUuCisgICAgICBUaGlzIG11c3QgYmUgYSB2YWx1ZSBtYXRj aGluZyB0aGUgYmFzZSB0eXBlIG9mIHRoZSByYW5nZSBvciBwZXJpb2QgZnJvbQorICAgICAg PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJhbmdlX29yX3BlcmlvZF9uYW1lPC9y ZXBsYWNlYWJsZT4uIEEKKyAgICAgIDxsaXRlcmFsPk5VTEw8L2xpdGVyYWw+IGhlcmUgaW5k aWNhdGVzIGEgZGVsZXRlIHdob3NlIGJlZ2lubmluZyBpcworICAgICAgdW5ib3VuZGVkIChh cyB3aXRoIHJhbmdlIHR5cGVzKS4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+Cisg ICA8L3Zhcmxpc3RlbnRyeT4KKworICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT48cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZW5kX3RpbWU8L3JlcGxhY2VhYmxlPjwvdGVy bT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgVGhlIGxhdGVzdCB0aW1l IChleGNsdXNpdmUpIHRvIGNoYW5nZSBpbiBhIHRlbXBvcmFsIGRlbGV0ZS4KKyAgICAgIFRo aXMgbXVzdCBiZSBhIHZhbHVlIG1hdGNoaW5nIHRoZSBiYXNlIHR5cGUgb2YgdGhlIHJhbmdl IG9yIHBlcmlvZCBmcm9tCisgICAgICA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ cmFuZ2Vfb3JfcGVyaW9kX25hbWU8L3JlcGxhY2VhYmxlPi4gQQorICAgICAgPGxpdGVyYWw+ TlVMTDwvbGl0ZXJhbD4gaGVyZSBpbmRpY2F0ZXMgYSBkZWxldGUgd2hvc2UgZW5kIGlzIHVu Ym91bmRlZAorICAgICAgKGFzIHdpdGggcmFuZ2UgdHlwZXMpLgorICAgICA8L3BhcmE+Cisg ICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCiAgICA8dmFybGlzdGVudHJ5 PgogICAgIDx0ZXJtPjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5mcm9tX2l0ZW08 L3JlcGxhY2VhYmxlPjwvdGVybT4KICAgICA8bGlzdGl0ZW0+CmRpZmYgLS1naXQgYS9kb2Mv c3JjL3NnbWwvcmVmL3VwZGF0ZS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi91cGRhdGUuc2dt bAppbmRleCAyYWIyNGIwNTIzZS4uNzFhMDI2OTdmMmQgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMv c2dtbC9yZWYvdXBkYXRlLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi91cGRhdGUuc2dt bApAQCAtMjMsNiArMjMsNyBAQCBQb3N0Z3JlU1FMIGRvY3VtZW50YXRpb24KIDxzeW5vcHNp cz4KIFsgV0lUSCBbIFJFQ1VSU0lWRSBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij53aXRoX3F1ZXJ5PC9yZXBsYWNlYWJsZT4gWywgLi4uXSBdCiBVUERBVEUgWyBPTkxZIF0g PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxl PiBbICogXSBbIFsgQVMgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+YWxpYXM8 L3JlcGxhY2VhYmxlPiBdCisgICAgWyBGT1IgUE9SVElPTiBPRiA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+cmFuZ2Vfb3JfcGVyaW9kX25hbWU8L3JlcGxhY2VhYmxlPiA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Zm9yX3BvcnRpb25fb2ZfdGFyZ2V0PC9yZXBs YWNlYWJsZT4gXQogICAgIFNFVCB7IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5j b2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+ID0geyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+ZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+IHwgREVGQVVMVCB9IHwKICAgICAgICAg ICAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFj ZWFibGU+IFssIC4uLl0gKSA9IFsgUk9XIF0gKCB7IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4gfCBERUZBVUxUIH0gWywgLi4uXSAp IHwKICAgICAgICAgICAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5f bmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLl0gKSA9ICggPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnN1Yi1TRUxFQ1Q8L3JlcGxhY2VhYmxlPiApCkBAIC01MSw2ICs1Miw0MSBA QCBVUERBVEUgWyBPTkxZIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxl X25hbWU8L3JlcGxhY2VhYmxlPiBbICogXSBbCiAgICBjaXJjdW1zdGFuY2VzLgogICA8L3Bh cmE+CiAKKyAgPHBhcmE+CisgICBJZiB0aGUgdGFibGUgaGFzIGEgcmFuZ2Ugb3IgbXVsdGly YW5nZSBjb2x1bW4sCisgICB5b3UgbWF5IHN1cHBseSBhIDxsaXRlcmFsPkZPUiBQT1JUSU9O IE9GPC9saXRlcmFsPiBjbGF1c2UsIGFuZCB5b3VyIHVwZGF0ZSB3aWxsCisgICBvbmx5IGFm ZmVjdCByb3dzIHRoYXQgb3ZlcmxhcCB0aGUgZ2l2ZW4gaW50ZXJ2YWwuIEZ1cnRoZXJtb3Jl LCBpZiBhIHJvdydzIHNwYW4KKyAgIGV4dGVuZHMgb3V0c2lkZSB0aGUgPGxpdGVyYWw+Rk9S IFBPUlRJT04gT0Y8L2xpdGVyYWw+IGJvdW5kcywgdGhlbiB5b3VyIHVwZGF0ZQorICAgd2ls bCBvbmx5IGNoYW5nZSB0aGUgc3BhbiB3aXRoaW4gdGhvc2UgYm91bmRzLiBJbiBlZmZlY3Qg eW91IGFyZSB1cGRhdGluZyBhbnkKKyAgIG1vbWVudCB0YXJnZXRlZCBieSA8bGl0ZXJhbD5G T1IgUE9SVElPTiBPRjwvbGl0ZXJhbD4gYW5kIG5vIG1vbWVudHMgb3V0c2lkZS4KKyAgPC9w YXJhPgorCisgIDxwYXJhPgorICAgU3BlY2lmaWNhbGx5LCB3aGVuIDxwcm9kdWN0bmFtZT5Q b3N0Z3JlU1FMPC9wcm9kdWN0bmFtZT4gdXBkYXRlcyB0aGUgZXhpc3Rpbmcgcm93LAorICAg aXQgd2lsbCBhbHNvIGNoYW5nZSB0aGUgcmFuZ2Ugb3Igc3RhcnQvZW5kIGNvbHVtbihzKSBz byB0aGF0IHRoZWlyIGludGVydmFsCisgICBubyBsb25nZXIgZXh0ZW5kcyBiZXlvbmQgdGhl IHRhcmdldGVkIDxsaXRlcmFsPkZPUiBQT1JUSU9OIE9GPC9saXRlcmFsPiBib3VuZHMuCisg ICBUaGVuIDxwcm9kdWN0bmFtZT5Qb3N0Z3JlU1FMPC9wcm9kdWN0bmFtZT4gd2lsbCA8bGl0 ZXJhbD5JTlNFUlQ8L2xpdGVyYWw+CisgICBuZXcgcm93cyB3aG9zZSByYW5nZSBvciBzdGFy dC9lbmQgY29sdW1uKHMpIHJlY2VpdmUgdGhlIHJlbWFpbmluZyBzcGFuIG91dHNpZGUKKyAg IHRoZSB0YXJnZXRlZCBib3VuZHMsIGNvbnRhaW5pbmcgdGhlIHVuLXVwZGF0ZWQgdmFsdWVz IGluIG90aGVyIGNvbHVtbnMuCisgICBUaGVyZSB3aWxsIGJlIHplcm8gdG8gdHdvIGluc2Vy dGVkIHJlY29yZHMsCisgICBkZXBlbmRpbmcgb24gd2hldGhlciB0aGUgb3JpZ2luYWwgc3Bh biBleHRlbmRlZCBiZWZvcmUgdGhlIHRhcmdldGVkCisgICA8bGl0ZXJhbD5GUk9NPC9saXRl cmFsPiwgYWZ0ZXIgdGhlIHRhcmdldGVkIDxsaXRlcmFsPlRPPC9saXRlcmFsPiwgYm90aCwg b3IgbmVpdGhlci4KKyAgPC9wYXJhPgorCisgIDxwYXJhPgorICAgVGhlc2Ugc2Vjb25kYXJ5 IGluc2VydHMgZmlyZSA8bGl0ZXJhbD5JTlNFUlQ8L2xpdGVyYWw+IHRyaWdnZXJzLiBGaXJz dAorICAgPGxpdGVyYWw+QkVGT1JFIFVQREFURTwvbGl0ZXJhbD4gdHJpZ2dlcnMgZmlyc3Qs IHRoZW4KKyAgIDxsaXRlcmFsPkJFRk9SRSBJTlNFUlQ8L2xpdGVyYWw+LCB0aGVuIDxsaXRl cmFsPkFGVEVSIElOU0VSVDwvbGl0ZXJhbD4sCisgICB0aGVuIDxsaXRlcmFsPkFGVEVSIFVQ REFURTwvbGl0ZXJhbD4uCisgIDwvcGFyYT4KKworICA8cGFyYT4KKyAgIFRoZXNlIHNlY29u ZGFyeSBpbnNlcnRzIGRvIG5vdCByZXF1aXJlIDxsaXRlcmFsPklOU0VSVDwvbGl0ZXJhbD4g cHJpdmlsZWdlIG9uIHRoZSB0YWJsZS4KKyAgIFRoaXMgaXMgYmVjYXVzZSBjb25jZXB0dWFs bHkgbm8gbmV3IGluZm9ybWF0aW9uIGhhcyBiZWVuIGFkZGVkLiBUaGUgaW5zZXJ0ZWQgcm93 cyBvbmx5IHByZXNlcnZlCisgICBleGlzdGluZyBkYXRhIGFib3V0IHRoZSB1bnRhcmdldGVk IHRpbWUgcGVyaW9kLiBOb3RlIHRoaXMgbWF5IHJlc3VsdCBpbiB1c2VycyBmaXJpbmcgPGxp dGVyYWw+SU5TRVJUPC9saXRlcmFsPgorICAgdHJpZ2dlcnMgd2hvIGRvbid0IGhhdmUgaW5z ZXJ0IHByaXZpbGVnZXMsIHNvIGJlIGNhcmVmdWwgYWJvdXQgPGxpdGVyYWw+U0VDVVJJVFkg REVGSU5FUjwvbGl0ZXJhbD4gdHJpZ2dlciBmdW5jdGlvbnMhCisgIDwvcGFyYT4KKwogICA8 cGFyYT4KICAgIFRoZSBvcHRpb25hbCA8bGl0ZXJhbD5SRVRVUk5JTkc8L2xpdGVyYWw+IGNs YXVzZSBjYXVzZXMgPGNvbW1hbmQ+VVBEQVRFPC9jb21tYW5kPgogICAgdG8gY29tcHV0ZSBh bmQgcmV0dXJuIHZhbHVlKHMpIGJhc2VkIG9uIGVhY2ggcm93IGFjdHVhbGx5IHVwZGF0ZWQu CkBAIC0xMTQsNiArMTUwLDU3IEBAIFVQREFURSBbIE9OTFkgXSA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+dGFibGVfbmFtZTwvcmVwbGFjZWFibGU+IFsgKiBdIFsKICAgICA8 L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgIDx2YXJsaXN0ZW50cnk+Cisg ICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJhbmdlX29yX3Blcmlv ZF9uYW1lPC9yZXBsYWNlYWJsZT48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFy YT4KKyAgICAgIFRoZSByYW5nZSBjb2x1bW4gb3IgcGVyaW9kIHRvIHVzZSB3aGVuIHBlcmZv cm1pbmcgYSB0ZW1wb3JhbCB1cGRhdGUuCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVt PgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+ PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmZvcl9wb3J0aW9uX29mX3RhcmdldDwv cmVwbGFjZWFibGU+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAg ICBUaGUgaW50ZXJ2YWwgdG8gdXBkYXRlLiBJZiB5b3UgYXJlIHRhcmdldGluZyBhIHJhbmdl IGNvbHVtbiBvciA8bGl0ZXJhbD5QRVJJT0Q8L2xpdGVyYWw+LAorICAgICAgeW91IG1heSBn aXZlIHRoaXMgaW4gdGhlIGZvcm0gPGxpdGVyYWw+RlJPTTwvbGl0ZXJhbD4KKyAgICAgIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zdGFydF90aW1lPC9yZXBsYWNlYWJsZT4g PGxpdGVyYWw+VE88L2xpdGVyYWw+CisgICAgICA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+ZW5kX3RpbWU8L3JlcGxhY2VhYmxlPi4KKyAgICAgIE90aGVyd2lzZSB5b3UgbXVz dCB1c2UKKyAgICAgIDxsaXRlcmFsPig8L2xpdGVyYWw+PHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPmV4cHJlc3Npb248L3JlcGxhY2VhYmxlPjxsaXRlcmFsPik8L2xpdGVyYWw+ CisgICAgICB3aGVyZSB0aGUgZXhwcmVzc2lvbiB5aWVsZHMgYSB2YWx1ZSBmb3IgdGhlIHNh bWUgdHlwZSBhcworICAgICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJhbmdl X29yX3BlcmlvZF9uYW1lPC9yZXBsYWNlYWJsZT4uCisgICAgIDwvcGFyYT4KKyAgICA8L2xp c3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAg PHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnN0YXJ0X3RpbWU8L3JlcGxh Y2VhYmxlPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgVGhl IGVhcmxpZXN0IHRpbWUgKGluY2x1c2l2ZSkgdG8gY2hhbmdlIGluIGEgdGVtcG9yYWwgdXBk YXRlLgorICAgICAgVGhpcyBtdXN0IGJlIGEgdmFsdWUgbWF0Y2hpbmcgdGhlIGJhc2UgdHlw ZSBvZiB0aGUgcmFuZ2Ugb3IgcGVyaW9kIGZyb20KKyAgICAgIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5yYW5nZV9vcl9wZXJpb2RfbmFtZTwvcmVwbGFjZWFibGU+LiBBCisg ICAgICA8bGl0ZXJhbD5OVUxMPC9saXRlcmFsPiBoZXJlIGluZGljYXRlcyBhbiB1cGRhdGUg d2hvc2UgYmVnaW5uaW5nIGlzCisgICAgICB1bmJvdW5kZWQgKGFzIHdpdGggcmFuZ2UgdHlw ZXMpLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5 PgorCisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPjxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5lbmRfdGltZTwvcmVwbGFjZWFibGU+PC90ZXJtPgorICAgIDxsaXN0aXRl bT4KKyAgICAgPHBhcmE+CisgICAgICBUaGUgbGF0ZXN0IHRpbWUgKGV4Y2x1c2l2ZSkgdG8g Y2hhbmdlIGluIGEgdGVtcG9yYWwgdXBkYXRlLgorICAgICAgVGhpcyBtdXN0IGJlIGEgdmFs dWUgbWF0Y2hpbmcgdGhlIGJhc2UgdHlwZSBvZiB0aGUgcmFuZ2Ugb3IgcGVyaW9kIGZyb20K KyAgICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yYW5nZV9vcl9wZXJpb2Rf bmFtZTwvcmVwbGFjZWFibGU+LiBBCisgICAgICA8bGl0ZXJhbD5OVUxMPC9saXRlcmFsPiBo ZXJlIGluZGljYXRlcyBhbiB1cGRhdGUgd2hvc2UgZW5kIGlzIHVuYm91bmRlZAorICAgICAg KGFzIHdpdGggcmFuZ2UgdHlwZXMpLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4K KyAgIDwvdmFybGlzdGVudHJ5PgorCiAgICA8dmFybGlzdGVudHJ5PgogICAgIDx0ZXJtPjxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+ PC90ZXJtPgogICAgIDxsaXN0aXRlbT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC90cmln Z2VyLnNnbWwgYi9kb2Mvc3JjL3NnbWwvdHJpZ2dlci5zZ21sCmluZGV4IGE1MzkwZmY2NDQz Li41MzhhMWUwNzhkYyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3RyaWdnZXIuc2dtbAor KysgYi9kb2Mvc3JjL3NnbWwvdHJpZ2dlci5zZ21sCkBAIC01MzUsMTcgKzUzNSwxOCBAQCBD QUxMRURfQVNfVFJJR0dFUihmY2luZm8pCiA8cHJvZ3JhbWxpc3Rpbmc+CiB0eXBlZGVmIHN0 cnVjdCBUcmlnZ2VyRGF0YQogewotICAgIE5vZGVUYWcgICAgICAgICAgdHlwZTsKLSAgICBU cmlnZ2VyRXZlbnQgICAgIHRnX2V2ZW50OwotICAgIFJlbGF0aW9uICAgICAgICAgdGdfcmVs YXRpb247Ci0gICAgSGVhcFR1cGxlICAgICAgICB0Z190cmlndHVwbGU7Ci0gICAgSGVhcFR1 cGxlICAgICAgICB0Z19uZXd0dXBsZTsKLSAgICBUcmlnZ2VyICAgICAgICAgKnRnX3RyaWdn ZXI7Ci0gICAgVHVwbGVUYWJsZVNsb3QgICp0Z190cmlnc2xvdDsKLSAgICBUdXBsZVRhYmxl U2xvdCAgKnRnX25ld3Nsb3Q7Ci0gICAgVHVwbGVzdG9yZXN0YXRlICp0Z19vbGR0YWJsZTsK LSAgICBUdXBsZXN0b3Jlc3RhdGUgKnRnX25ld3RhYmxlOwotICAgIGNvbnN0IEJpdG1hcHNl dCAqdGdfdXBkYXRlZGNvbHM7CisgICAgTm9kZVRhZyAgICAgICAgICAgIHR5cGU7CisgICAg VHJpZ2dlckV2ZW50ICAgICAgIHRnX2V2ZW50OworICAgIFJlbGF0aW9uICAgICAgICAgICB0 Z19yZWxhdGlvbjsKKyAgICBIZWFwVHVwbGUgICAgICAgICAgdGdfdHJpZ3R1cGxlOworICAg IEhlYXBUdXBsZSAgICAgICAgICB0Z19uZXd0dXBsZTsKKyAgICBUcmlnZ2VyICAgICAgICAg ICAqdGdfdHJpZ2dlcjsKKyAgICBUdXBsZVRhYmxlU2xvdCAgICAqdGdfdHJpZ3Nsb3Q7Cisg ICAgVHVwbGVUYWJsZVNsb3QgICAgKnRnX25ld3Nsb3Q7CisgICAgVHVwbGVzdG9yZXN0YXRl ICAgKnRnX29sZHRhYmxlOworICAgIFR1cGxlc3RvcmVzdGF0ZSAgICp0Z19uZXd0YWJsZTsK KyAgICBjb25zdCBCaXRtYXBzZXQgICAqdGdfdXBkYXRlZGNvbHM7CisgICAgRm9yUG9ydGlv bk9mU3RhdGUgKnRnX3RlbXBvcmFsOwogfSBUcmlnZ2VyRGF0YTsKIDwvcHJvZ3JhbWxpc3Rp bmc+CiAKQEAgLTgxMyw2ICs4MTQsNDMgQEAgdHlwZWRlZiBzdHJ1Y3QgVHJpZ2dlcgogICAg ICAgIDwvcGFyYT4KICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgIDwvdmFybGlzdGVudHJ5Pgor CisgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICA8dGVybT48c3RydWN0ZmllbGQ+dGdfdGVt cG9yYWw8L3N0cnVjdGZpZWxkPjwvdGVybT4KKyAgICAgIDxsaXN0aXRlbT4KKyAgICAgICA8 cGFyYT4KKyAgICAgICAgU2V0IGZvciA8bGl0ZXJhbD5VUERBVEU8L2xpdGVyYWw+IGFuZCA8 bGl0ZXJhbD5ERUxFVEU8L2xpdGVyYWw+IHF1ZXJpZXMKKyAgICAgICAgdGhhdCB1c2UgPGxp dGVyYWw+Rk9SIFBPUlRJT04gT0Y8L2xpdGVyYWw+LCBvdGhlcndpc2UgPHN5bWJvbD5OVUxM PC9zeW1ib2w+LgorICAgICAgICBDb250YWlucyBhIHBvaW50ZXIgdG8gYSBzdHJ1Y3R1cmUg b2YgdHlwZQorICAgICAgICA8c3RydWN0bmFtZT5Gb3JQb3J0aW9uT2ZTdGF0ZTwvc3RydWN0 bmFtZT4sIGRlZmluZWQgaW4KKyAgICAgICAgPGZpbGVuYW1lPm5vZGVzL2V4ZWNub2Rlcy5o PC9maWxlbmFtZT46CisKKzxwcm9ncmFtbGlzdGluZz4KK3R5cGVkZWYgc3RydWN0IEZvclBv cnRpb25PZlN0YXRlCit7CisgICAgTm9kZVRhZyB0eXBlOworCisgICAgY2hhciAgICpmcF9y YW5nZU5hbWU7ICAgICAgIC8qIHRoZSBjb2x1bW4vUEVSSU9EIG5hbWVkIGluIEZPUiBQT1JU SU9OIE9GICovCisgICAgT2lkICAgICBmcF9yYW5nZVR5cGU7ICAgICAgIC8qIHRoZSB0eXBl IG9mIHRoZSBGT1IgUE9SVElPTiBPRiBleHByZXNzaW9uICovCisgICAgYm9vbCAgICBmcF9o YXNQZXJpb2Q7ICAgICAgIC8qIHRydWUgaWZmIHRoaXMgaXMgYSBQRVJJT0Qgbm90IGEgcmFu Z2UgKi8KKyAgICBjaGFyICAgKmZwX3BlcmlvZFN0YXJ0TmFtZTsgLyogdGhlIFBFUklPRCdz IHN0YXJ0IGNvbHVtbiAqLworICAgIGNoYXIgICAqZnBfcGVyaW9kRW5kTmFtZTsgICAvKiB0 aGUgUEVSSU9EJ3MgZW5kIGNvbHVtbiAqLworICAgIERhdHVtICAgZnBfdGFyZ2V0UmFuZ2U7 ICAgICAvKiB0aGUgcmFuZ2UgZnJvbSBGT1IgUE9SVElPTiBPRiAqLworfSBGb3JQb3J0aW9u T2ZTdGF0ZTsKKzwvcHJvZ3JhbWxpc3Rpbmc+CisKKyAgICAgICB3aGVyZSA8c3RydWN0Zmll bGQ+ZnBfcmFuZ2VOYW1lPC9zdHJ1Y3RmaWVsZD4gaXMgdGhlIHBlcmlvZCBvciByYW5nZQor ICAgICAgIGNvbHVtbiBuYW1lZCBpbiB0aGUgPGxpdGVyYWw+Rk9SIFBPUlRJT04gT0Y8L2xp dGVyYWw+IGNsYXVzZSwKKyAgICAgICA8c3RydWN0ZmllbGQ+ZnBfcmFuZ2VUeXBlPC9zdHJ1 Y3RmaWVsZD4gaXMgaXRzIHJhbmdlIHR5cGUsCisgICAgICAgPHN0cnVjdGZpZWxkPmZwX2hh c1BlcmlvZDwvc3RydWN0ZmllbGQ+IGluZGljYXRlcyB3aGV0aGVyIGEgcGVyaW9kIHdhcyB1 c2VkCisgICAgICAgb3IgYSByYW5nZSBjb2x1bW4sIDxzdHJ1Y3RmaWVsZD5mcF9wZXJpb2RT dGFydE5hbWU8L3N0cnVjdGZpZWxkPiBhbmQKKyAgICAgICA8c3RydWN0ZmllbGQ+ZnBfcGVy aW9kRW5kTmFtZTwvc3RydWN0ZmllbGQ+IGFyZSB0aGUgbmFtZXMgb2YgdGhlIHBlcmlvZCdz CisgICAgICAgc3RhcnQgYW5kIGVuZCBjb2x1bW5zIChvciA8c3ltYm9sPk5VTEw8L3N5bWJv bD4gaWYgYSByYW5nZSBjb2x1bW4gd2FzIHVzZWQpLAorICAgICAgIGFuZCA8c3RydWN0Zmll bGQ+ZnBfdGFyZ2V0UmFuZ2U8L3N0cnVjdGZpZWxkPiBpcyBhIHJhbmdldHlwZSB2YWx1ZSBj cmVhdGVkCisgICAgICAgYnkgZXZhbHVhdGluZyB0aGUgPGxpdGVyYWw+Rk9SIFBPUlRJT04g T0Y8L2xpdGVyYWw+IGJvdW5kcy4KKyAgICAgICA8L3BhcmE+CisgICAgICA8L2xpc3RpdGVt PgorICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICA8L3ZhcmlhYmxlbGlzdD4KICAgIDwvcGFy YT4KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHZhbGlkYXRl LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0dmFsaWRhdGUuYwppbmRleCAwYTQz MzhlOGI4NC4uN2Y3MGMzMjJmNDMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9n aXN0L2dpc3R2YWxpZGF0ZS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R2 YWxpZGF0ZS5jCkBAIC0yMDcsNyArMjA3LDcgQEAgZ2lzdHZhbGlkYXRlKE9pZCBvcGNsYXNz b2lkKQogCQl9CiAKIAkJLyogR2lTVCBzdXBwb3J0cyBPUkRFUiBCWSBvcGVyYXRvcnMgKi8K LQkJaWYgKG9wcmZvcm0tPmFtb3BwdXJwb3NlICE9IEFNT1BfU0VBUkNIKQorCQlpZiAob3By Zm9ybS0+YW1vcHB1cnBvc2UgPT0gQU1PUF9PUkRFUikKIAkJewogCQkJLyogLi4uIGJ1dCBt dXN0IGhhdmUgbWF0Y2hpbmcgZGlzdGFuY2UgcHJvYyAqLwogCQkJaWYgKCFPaWRJc1ZhbGlk KGdldF9vcGZhbWlseV9wcm9jKG9wZmFtaWx5b2lkLApAQCAtMjM0LDI0ICsyMzQsMzggQEAg Z2lzdHZhbGlkYXRlKE9pZCBvcGNsYXNzb2lkKQogCQkJCXJlc3VsdCA9IGZhbHNlOwogCQkJ fQogCQl9Ci0JCWVsc2UKKwkJZWxzZSBpZiAob3ByZm9ybS0+YW1vcHB1cnBvc2UgPT0gQU1P UF9TRUFSQ0gpCiAJCXsKIAkJCS8qIFNlYXJjaCBvcGVyYXRvcnMgbXVzdCBhbHdheXMgcmV0 dXJuIGJvb2wgKi8KIAkJCW9wX3JldHR5cGUgPSBCT09MT0lEOwogCQl9Ci0KLQkJLyogQ2hl Y2sgb3BlcmF0b3Igc2lnbmF0dXJlICovCi0JCWlmICghY2hlY2tfYW1vcF9zaWduYXR1cmUo b3ByZm9ybS0+YW1vcG9wciwgb3BfcmV0dHlwZSwKLQkJCQkJCQkJICBvcHJmb3JtLT5hbW9w bGVmdHR5cGUsCi0JCQkJCQkJCSAgb3ByZm9ybS0+YW1vcHJpZ2h0dHlwZSkpCisJCWVsc2UK IAkJeworCQkJLyogTm90aGluZyBlbHNlIGl0IGNvdWxkIGJlICovCiAJCQllcmVwb3J0KElO Rk8sCiAJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiks Ci0JCQkJCSBlcnJtc2coIm9wZXJhdG9yIGZhbWlseSBcIiVzXCIgb2YgYWNjZXNzIG1ldGhv ZCAlcyBjb250YWlucyBvcGVyYXRvciAlcyB3aXRoIHdyb25nIHNpZ25hdHVyZSIsCi0JCQkJ CQkJb3BmYW1pbHluYW1lLCAiZ2lzdCIsCi0JCQkJCQkJZm9ybWF0X29wZXJhdG9yKG9wcmZv cm0tPmFtb3BvcHIpKSkpOworCQkJCQkgZXJybXNnKCJvcGVyYXRvciBmYW1pbHkgXCIlc1wi IG9mIGFjY2VzcyBtZXRob2QgJXMgY29udGFpbnMgdW5rbm93biBwdXJwb3NlICVjIGZvciBv cGVyYXRvciAlcyIsCisJCQkJCQkgb3BmYW1pbHluYW1lLCAiZ2lzdCIsIG9wcmZvcm0tPmFt b3BwdXJwb3NlLAorCQkJCQkJIGZvcm1hdF9vcGVyYXRvcihvcHJmb3JtLT5hbW9wb3ByKSkp KTsKKwkJCW9wX3JldHR5cGUgPSBJbnZhbGlkT2lkOwogCQkJcmVzdWx0ID0gZmFsc2U7CiAJ CX0KKworCQkvKiBDaGVjayBvcGVyYXRvciBzaWduYXR1cmUgKi8KKwkJaWYgKE9pZElzVmFs aWQob3BfcmV0dHlwZSkpCisJCXsKKwkJCWlmICghY2hlY2tfYW1vcF9zaWduYXR1cmUob3By Zm9ybS0+YW1vcG9wciwgb3BfcmV0dHlwZSwKKwkJCQkJCQkJCSAgb3ByZm9ybS0+YW1vcGxl ZnR0eXBlLAorCQkJCQkJCQkJICBvcHJmb3JtLT5hbW9wcmlnaHR0eXBlKSkKKwkJCXsKKwkJ CQllcmVwb3J0KElORk8sCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNU X0RFRklOSVRJT04pLAorCQkJCQkJIGVycm1zZygib3BlcmF0b3IgZmFtaWx5IFwiJXNcIiBv ZiBhY2Nlc3MgbWV0aG9kICVzIGNvbnRhaW5zIG9wZXJhdG9yICVzIHdpdGggd3Jvbmcgc2ln bmF0dXJlIiwKKwkJCQkJCQkJb3BmYW1pbHluYW1lLCAiZ2lzdCIsCisJCQkJCQkJCWZvcm1h dF9vcGVyYXRvcihvcHJmb3JtLT5hbW9wb3ByKSkpKTsKKwkJCQlyZXN1bHQgPSBmYWxzZTsK KwkJCX0KKwkJfQogCX0KIAogCS8qIE5vdyBjaGVjayBmb3IgaW5jb25zaXN0ZW50IGdyb3Vw cyBvZiBvcGVyYXRvcnMvZnVuY3Rpb25zICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9j b21tYW5kcy9leHBsYWluLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKaW5k ZXggODNkMDBhNDY2MzguLjBkOGQxN2RlNDQ0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9j b21tYW5kcy9leHBsYWluLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5j CkBAIC0zOTg0LDcgKzM5ODQsNyBAQCBFeHBsYWluVGFyZ2V0UmVsKFBsYW4gKnBsYW4sIElu ZGV4IHJ0aSwgRXhwbGFpblN0YXRlICplcykKIAogCQkJCQkJb2JqZWN0bmFtZSA9IGdldF9m dW5jX25hbWUoZnVuY2lkKTsKIAkJCQkJCWlmIChlcy0+dmVyYm9zZSkKLQkJCQkJCQluYW1l c3BhY2UgPSBnZXRfbmFtZXNwYWNlX25hbWVfb3JfdGVtcChnZXRfZnVuY19uYW1lc3BhY2Uo ZnVuY2lkKSk7CisJCQkJCQkJbmFtZXNwYWNlID0gZ2V0X25hbWVzcGFjZV9uYW1lX29yX3Rl bXAoZ2V0X2Z1bmNfbmFtZXNwYWNlKGZ1bmNpZCwgdHJ1ZSkpOwogCQkJCQl9CiAJCQkJfQog CQkJCW9iamVjdHRhZyA9ICJGdW5jdGlvbiBOYW1lIjsKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVj bWRzLmMKaW5kZXggNDU3YTQwYjY2YTAuLjA0YmQzMjVlN2FjIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5k cy90YWJsZWNtZHMuYwpAQCAtMTI1NjIsNiArMTI1NjIsNyBAQCB2YWxpZGF0ZUZvcmVpZ25L ZXlDb25zdHJhaW50KGNoYXIgKmNvbm5hbWUsCiAJCXRyaWdkYXRhLnRnX3RyaWd0dXBsZSA9 IEV4ZWNGZXRjaFNsb3RIZWFwVHVwbGUoc2xvdCwgZmFsc2UsIE5VTEwpOwogCQl0cmlnZGF0 YS50Z190cmlnc2xvdCA9IHNsb3Q7CiAJCXRyaWdkYXRhLnRnX3RyaWdnZXIgPSAmdHJpZzsK KwkJdHJpZ2RhdGEudGdfdGVtcG9yYWwgPSBOVUxMOwogCiAJCWZjaW5mby0+Y29udGV4dCA9 IChOb2RlICopICZ0cmlnZGF0YTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFu ZHMvdHJpZ2dlci5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHJpZ2dlci5jCmluZGV4IDI2 NjdkZWRlMjE4Li4zOWJhZjMxZjI1YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFu ZHMvdHJpZ2dlci5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RyaWdnZXIuYwpAQCAt NTQsNiArNTQsNyBAQAogI2luY2x1ZGUgInV0aWxzL2FjbC5oIgogI2luY2x1ZGUgInV0aWxz L2J1aWx0aW5zLmgiCiAjaW5jbHVkZSAidXRpbHMvYnl0ZWEuaCIKKyNpbmNsdWRlICJ1dGls cy9kYXR1bS5oIgogI2luY2x1ZGUgInV0aWxzL2ZtZ3JvaWRzLmgiCiAjaW5jbHVkZSAidXRp bHMvZ3VjX2hvb2tzLmgiCiAjaW5jbHVkZSAidXRpbHMvaW52YWwuaCIKQEAgLTI2MzgsNiAr MjYzOSw3IEBAIEV4ZWNCU0RlbGV0ZVRyaWdnZXJzKEVTdGF0ZSAqZXN0YXRlLCBSZXN1bHRS ZWxJbmZvICpyZWxpbmZvKQogCUxvY1RyaWdnZXJEYXRhLnRnX2V2ZW50ID0gVFJJR0dFUl9F VkVOVF9ERUxFVEUgfAogCQlUUklHR0VSX0VWRU5UX0JFRk9SRTsKIAlMb2NUcmlnZ2VyRGF0 YS50Z19yZWxhdGlvbiA9IHJlbGluZm8tPnJpX1JlbGF0aW9uRGVzYzsKKwlMb2NUcmlnZ2Vy RGF0YS50Z190ZW1wb3JhbCA9IHJlbGluZm8tPnJpX2ZvclBvcnRpb25PZjsKIAlmb3IgKGkg PSAwOyBpIDwgdHJpZ2Rlc2MtPm51bXRyaWdnZXJzOyBpKyspCiAJewogCQlUcmlnZ2VyICAg ICp0cmlnZ2VyID0gJnRyaWdkZXNjLT50cmlnZ2Vyc1tpXTsKQEAgLTI3MzcsNiArMjczOSw3 IEBAIEV4ZWNCUkRlbGV0ZVRyaWdnZXJzKEVTdGF0ZSAqZXN0YXRlLCBFUFFTdGF0ZSAqZXBx c3RhdGUsCiAJCVRSSUdHRVJfRVZFTlRfUk9XIHwKIAkJVFJJR0dFUl9FVkVOVF9CRUZPUkU7 CiAJTG9jVHJpZ2dlckRhdGEudGdfcmVsYXRpb24gPSByZWxpbmZvLT5yaV9SZWxhdGlvbkRl c2M7CisJTG9jVHJpZ2dlckRhdGEudGdfdGVtcG9yYWwgPSByZWxpbmZvLT5yaV9mb3JQb3J0 aW9uT2Y7CiAJZm9yIChpID0gMDsgaSA8IHRyaWdkZXNjLT5udW10cmlnZ2VyczsgaSsrKQog CXsKIAkJSGVhcFR1cGxlCW5ld3R1cGxlOwpAQCAtMjgyOCw2ICsyODMxLDcgQEAgRXhlY0lS RGVsZXRlVHJpZ2dlcnMoRVN0YXRlICplc3RhdGUsIFJlc3VsdFJlbEluZm8gKnJlbGluZm8s CiAJCVRSSUdHRVJfRVZFTlRfUk9XIHwKIAkJVFJJR0dFUl9FVkVOVF9JTlNURUFEOwogCUxv Y1RyaWdnZXJEYXRhLnRnX3JlbGF0aW9uID0gcmVsaW5mby0+cmlfUmVsYXRpb25EZXNjOwor CUxvY1RyaWdnZXJEYXRhLnRnX3RlbXBvcmFsID0gcmVsaW5mby0+cmlfZm9yUG9ydGlvbk9m OwogCiAJRXhlY0ZvcmNlU3RvcmVIZWFwVHVwbGUodHJpZ3R1cGxlLCBzbG90LCBmYWxzZSk7 CiAKQEAgLTI4OTEsNiArMjg5NSw3IEBAIEV4ZWNCU1VwZGF0ZVRyaWdnZXJzKEVTdGF0ZSAq ZXN0YXRlLCBSZXN1bHRSZWxJbmZvICpyZWxpbmZvKQogCQlUUklHR0VSX0VWRU5UX0JFRk9S RTsKIAlMb2NUcmlnZ2VyRGF0YS50Z19yZWxhdGlvbiA9IHJlbGluZm8tPnJpX1JlbGF0aW9u RGVzYzsKIAlMb2NUcmlnZ2VyRGF0YS50Z191cGRhdGVkY29scyA9IHVwZGF0ZWRDb2xzOwor CUxvY1RyaWdnZXJEYXRhLnRnX3RlbXBvcmFsID0gcmVsaW5mby0+cmlfZm9yUG9ydGlvbk9m OwogCWZvciAoaSA9IDA7IGkgPCB0cmlnZGVzYy0+bnVtdHJpZ2dlcnM7IGkrKykKIAl7CiAJ CVRyaWdnZXIgICAgKnRyaWdnZXIgPSAmdHJpZ2Rlc2MtPnRyaWdnZXJzW2ldOwpAQCAtMzAy Niw2ICszMDMxLDcgQEAgRXhlY0JSVXBkYXRlVHJpZ2dlcnMoRVN0YXRlICplc3RhdGUsIEVQ UVN0YXRlICplcHFzdGF0ZSwKIAkJVFJJR0dFUl9FVkVOVF9ST1cgfAogCQlUUklHR0VSX0VW RU5UX0JFRk9SRTsKIAlMb2NUcmlnZ2VyRGF0YS50Z19yZWxhdGlvbiA9IHJlbGluZm8tPnJp X1JlbGF0aW9uRGVzYzsKKwlMb2NUcmlnZ2VyRGF0YS50Z190ZW1wb3JhbCA9IHJlbGluZm8t PnJpX2ZvclBvcnRpb25PZjsKIAl1cGRhdGVkQ29scyA9IEV4ZWNHZXRBbGxVcGRhdGVkQ29s cyhyZWxpbmZvLCBlc3RhdGUpOwogCUxvY1RyaWdnZXJEYXRhLnRnX3VwZGF0ZWRjb2xzID0g dXBkYXRlZENvbHM7CiAJZm9yIChpID0gMDsgaSA8IHRyaWdkZXNjLT5udW10cmlnZ2Vyczsg aSsrKQpAQCAtMzE3NSw2ICszMTgxLDcgQEAgRXhlY0lSVXBkYXRlVHJpZ2dlcnMoRVN0YXRl ICplc3RhdGUsIFJlc3VsdFJlbEluZm8gKnJlbGluZm8sCiAJCVRSSUdHRVJfRVZFTlRfUk9X IHwKIAkJVFJJR0dFUl9FVkVOVF9JTlNURUFEOwogCUxvY1RyaWdnZXJEYXRhLnRnX3JlbGF0 aW9uID0gcmVsaW5mby0+cmlfUmVsYXRpb25EZXNjOworCUxvY1RyaWdnZXJEYXRhLnRnX3Rl bXBvcmFsID0gcmVsaW5mby0+cmlfZm9yUG9ydGlvbk9mOwogCiAJRXhlY0ZvcmNlU3RvcmVI ZWFwVHVwbGUodHJpZ3R1cGxlLCBvbGRzbG90LCBmYWxzZSk7CiAKQEAgLTM2NDEsNiArMzY0 OCw3IEBAIHR5cGVkZWYgc3RydWN0IEFmdGVyVHJpZ2dlclNoYXJlZERhdGEKIAlPaWQJCQlh dHNfdGdvaWQ7CQkvKiB0aGUgdHJpZ2dlcidzIElEICovCiAJT2lkCQkJYXRzX3JlbGlkOwkJ LyogdGhlIHJlbGF0aW9uIGl0J3Mgb24gKi8KIAlDb21tYW5kSWQJYXRzX2ZpcmluZ19pZDsJ LyogSUQgZm9yIGZpcmluZyBjeWNsZSAqLworCUZvclBvcnRpb25PZlN0YXRlICpmb3JfcG9y dGlvbl9vZjsJLyogdGhlIEZPUiBQT1JUSU9OIE9GIGNsYXVzZSAqLwogCXN0cnVjdCBBZnRl clRyaWdnZXJzVGFibGVEYXRhICphdHNfdGFibGU7CS8qIHRyYW5zaXRpb24gdGFibGUgYWNj ZXNzICovCiAJQml0bWFwc2V0ICAqYXRzX21vZGlmaWVkY29sczsJLyogbW9kaWZpZWQgY29s dW1ucyAqLwogfSBBZnRlclRyaWdnZXJTaGFyZWREYXRhOwpAQCAtMzkxNCw2ICszOTIyLDcg QEAgc3RhdGljIFNldENvbnN0cmFpbnRTdGF0ZSBTZXRDb25zdHJhaW50U3RhdGVDcmVhdGUo aW50IG51bWFsbG9jKTsKIHN0YXRpYyBTZXRDb25zdHJhaW50U3RhdGUgU2V0Q29uc3RyYWlu dFN0YXRlQ29weShTZXRDb25zdHJhaW50U3RhdGUgb3JpZ3N0YXRlKTsKIHN0YXRpYyBTZXRD b25zdHJhaW50U3RhdGUgU2V0Q29uc3RyYWludFN0YXRlQWRkSXRlbShTZXRDb25zdHJhaW50 U3RhdGUgc3RhdGUsCiAJCQkJCQkJCQkJCQkJT2lkIHRnb2lkLCBib29sIHRnaXNkZWZlcnJl ZCk7CitzdGF0aWMgRm9yUG9ydGlvbk9mU3RhdGUgKkNvcHlGb3JQb3J0aW9uT2ZTdGF0ZShG b3JQb3J0aW9uT2ZTdGF0ZSAqc3JjKTsKIHN0YXRpYyB2b2lkIGNhbmNlbF9wcmlvcl9zdG10 X3RyaWdnZXJzKE9pZCByZWxpZCwgQ21kVHlwZSBjbWRUeXBlLCBpbnQgdGdldmVudCk7CiAK IApAQCAtNDEyMyw2ICs0MTMyLDcgQEAgYWZ0ZXJUcmlnZ2VyQWRkRXZlbnQoQWZ0ZXJUcmln Z2VyRXZlbnRMaXN0ICpldmVudHMsCiAJCQluZXdzaGFyZWQtPmF0c19yZWxpZCA9PSBldnRz aGFyZWQtPmF0c19yZWxpZCAmJgogCQkJbmV3c2hhcmVkLT5hdHNfZXZlbnQgPT0gZXZ0c2hh cmVkLT5hdHNfZXZlbnQgJiYKIAkJCW5ld3NoYXJlZC0+YXRzX3RhYmxlID09IGV2dHNoYXJl ZC0+YXRzX3RhYmxlICYmCisJCQluZXdzaGFyZWQtPmZvcl9wb3J0aW9uX29mID09IGV2dHNo YXJlZC0+Zm9yX3BvcnRpb25fb2YgJiYKIAkJCW5ld3NoYXJlZC0+YXRzX2ZpcmluZ19pZCA9 PSAwKQogCQkJYnJlYWs7CiAJfQpAQCAtNDQ4Nyw2ICs0NDk3LDcgQEAgQWZ0ZXJUcmlnZ2Vy RXhlY3V0ZShFU3RhdGUgKmVzdGF0ZSwKIAlMb2NUcmlnZ2VyRGF0YS50Z19yZWxhdGlvbiA9 IHJlbDsKIAlpZiAoVFJJR0dFUl9GT1JfVVBEQVRFKExvY1RyaWdnZXJEYXRhLnRnX3RyaWdn ZXItPnRndHlwZSkpCiAJCUxvY1RyaWdnZXJEYXRhLnRnX3VwZGF0ZWRjb2xzID0gZXZ0c2hh cmVkLT5hdHNfbW9kaWZpZWRjb2xzOworCUxvY1RyaWdnZXJEYXRhLnRnX3RlbXBvcmFsID0g ZXZ0c2hhcmVkLT5mb3JfcG9ydGlvbl9vZjsKIAogCU1lbW9yeUNvbnRleHRSZXNldChwZXJf dHVwbGVfY29udGV4dCk7CiAKQEAgLTYwMjMsNiArNjAzNCw0MyBAQCBBZnRlclRyaWdnZXJQ ZW5kaW5nT25SZWwoT2lkIHJlbGlkKQogCXJldHVybiBmYWxzZTsKIH0KIAorLyogLS0tLS0t LS0tLQorICogRm9yUG9ydGlvbk9mU3RhdGUoKQorICoKKyAqIENvcHlzIGEgRm9yUG9ydGlv bk9mU3RhdGUgaW50byB0aGUgY3VycmVudCBtZW1vcnkgY29udGV4dC4KKyAqLworc3RhdGlj IEZvclBvcnRpb25PZlN0YXRlICoKK0NvcHlGb3JQb3J0aW9uT2ZTdGF0ZShGb3JQb3J0aW9u T2ZTdGF0ZSAqc3JjKQoreworCUZvclBvcnRpb25PZlN0YXRlICpkc3QgPSBOVUxMOworCWlm IChzcmMpIHsKKwkJTWVtb3J5Q29udGV4dCBvbGRjdHg7CisJCVJhbmdlVHlwZSAqcjsKKwkJ VHlwZUNhY2hlRW50cnkgKnR5cGNhY2hlOworCisJCS8qCisJCSAqIE5lZWQgdG8gbGlmdCB0 aGUgRk9SIFBPUlRJT04gT0YgZGV0YWlscyBpbnRvIGEgaGlnaGVyIG1lbW9yeSBjb250ZXh0 CisJCSAqIGJlY2F1c2UgY2FzY2FkaW5nIGZvcmVpZ24ga2V5IHVwZGF0ZS9kZWxldGVzIGNh biBjYXVzZSB0cmlnZ2VycyB0byBmaXJlCisJCSAqIHRyaWdnZXJzLCBhbmQgdGhlIEFmdGVy VHJpZ2dlckV2ZW50cyB3aWxsIG91dGxpdmUgdGhlIEZQTworCQkgKiBkZXRhaWxzIG9mIHRo ZSBvcmlnaW5hbCBxdWVyeS4KKwkJICovCisJCW9sZGN0eCA9IE1lbW9yeUNvbnRleHRTd2l0 Y2hUbyhUb3BUcmFuc2FjdGlvbkNvbnRleHQpOworCQlkc3QgPSBtYWtlTm9kZShGb3JQb3J0 aW9uT2ZTdGF0ZSk7CisJCWRzdC0+ZnBfcmFuZ2VOYW1lID0gcHN0cmR1cChzcmMtPmZwX3Jh bmdlTmFtZSk7CisJCWRzdC0+ZnBfcmFuZ2VUeXBlID0gc3JjLT5mcF9yYW5nZVR5cGU7CisJ CWRzdC0+ZnBfaGFzUGVyaW9kID0gc3JjLT5mcF9oYXNQZXJpb2Q7CisJCWRzdC0+ZnBfcmFu Z2VBdHRubyA9IHNyYy0+ZnBfcmFuZ2VBdHRubzsKKwkJZHN0LT5mcF9wZXJpb2RTdGFydEF0 dG5vID0gc3JjLT5mcF9wZXJpb2RTdGFydEF0dG5vOworCQlkc3QtPmZwX3BlcmlvZEVuZEF0 dG5vID0gc3JjLT5mcF9wZXJpb2RFbmRBdHRubzsKKworCQlyID0gRGF0dW1HZXRSYW5nZVR5 cGVQKHNyYy0+ZnBfdGFyZ2V0UmFuZ2UpOworCQl0eXBjYWNoZSA9IGxvb2t1cF90eXBlX2Nh Y2hlKFJhbmdlVHlwZUdldE9pZChyKSwgVFlQRUNBQ0hFX1JBTkdFX0lORk8pOworCQlkc3Qt PmZwX3RhcmdldFJhbmdlID0gZGF0dW1Db3B5KHNyYy0+ZnBfdGFyZ2V0UmFuZ2UsIHR5cGNh Y2hlLT50eXBieXZhbCwgdHlwY2FjaGUtPnR5cGxlbik7CisJCU1lbW9yeUNvbnRleHRTd2l0 Y2hUbyhvbGRjdHgpOworCX0KKwlyZXR1cm4gZHN0OworfQorCiAvKiAtLS0tLS0tLS0tCiAg KiBBZnRlclRyaWdnZXJTYXZlRXZlbnQoKQogICoKQEAgLTY0MzgsNiArNjQ4Niw3IEBAIEFm dGVyVHJpZ2dlclNhdmVFdmVudChFU3RhdGUgKmVzdGF0ZSwgUmVzdWx0UmVsSW5mbyAqcmVs aW5mbywKIAkJZWxzZQogCQkJbmV3X3NoYXJlZC5hdHNfdGFibGUgPSBOVUxMOwogCQluZXdf c2hhcmVkLmF0c19tb2RpZmllZGNvbHMgPSBhZnRlclRyaWdnZXJDb3B5Qml0bWFwKG1vZGlm aWVkQ29scyk7CisJCW5ld19zaGFyZWQuZm9yX3BvcnRpb25fb2YgPSBDb3B5Rm9yUG9ydGlv bk9mU3RhdGUocmVsaW5mby0+cmlfZm9yUG9ydGlvbk9mKTsKIAogCQlhZnRlclRyaWdnZXJB ZGRFdmVudCgmYWZ0ZXJUcmlnZ2Vycy5xdWVyeV9zdGFja1thZnRlclRyaWdnZXJzLnF1ZXJ5 X2RlcHRoXS5ldmVudHMsCiAJCQkJCQkJICZuZXdfZXZlbnQsICZuZXdfc2hhcmVkKTsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjTWFpbi5jCmluZGV4IDEzYTliN2RhODNiLi5iMmViNWJkZTczNiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYworKysgYi9zcmMv YmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCkBAIC0xMjc0LDYgKzEyNzQsNyBAQCBJbml0 UmVzdWx0UmVsSW5mbyhSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLAogCXJlc3VsdFJl bEluZm8tPnJpX3Byb2plY3RSZXR1cm5pbmcgPSBOVUxMOwogCXJlc3VsdFJlbEluZm8tPnJp X29uQ29uZmxpY3RBcmJpdGVySW5kZXhlcyA9IE5JTDsKIAlyZXN1bHRSZWxJbmZvLT5yaV9v bkNvbmZsaWN0ID0gTlVMTDsKKwlyZXN1bHRSZWxJbmZvLT5yaV9mb3JQb3J0aW9uT2YgPSBO VUxMOwogCXJlc3VsdFJlbEluZm8tPnJpX1JldHVybmluZ1Nsb3QgPSBOVUxMOwogCXJlc3Vs dFJlbEluZm8tPnJpX1RyaWdPbGRTbG90ID0gTlVMTDsKIAlyZXN1bHRSZWxJbmZvLT5yaV9U cmlnTmV3U2xvdCA9IE5VTEw7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlTW9kaWZ5VGFibGUuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJs ZS5jCmluZGV4IDlmYzVhYmZmOGYwLi43MzJjMGQ5OGFiOSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMKQEAgLTU4LDkgKzU4LDExIEBACiAjaW5jbHVkZSAi cmV3cml0ZS9yZXdyaXRlSGFuZGxlci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvYnVmbWdyLmgi CiAjaW5jbHVkZSAic3RvcmFnZS9sbWdyLmgiCisjaW5jbHVkZSAidXRpbHMvYXJyYXkuaCIK ICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgogI2luY2x1ZGUgInV0aWxzL2RhdHVtLmgi CiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKKyNpbmNsdWRlICJ1dGlscy9sc3lzY2Fj aGUuaCIKICNpbmNsdWRlICJ1dGlscy9yZWwuaCIKIAogCkBAIC0xNDEsNiArMTQzLDEwIEBA IHN0YXRpYyBib29sIEV4ZWNPbkNvbmZsaWN0VXBkYXRlKE1vZGlmeVRhYmxlQ29udGV4dCAq Y29udGV4dCwKIAkJCQkJCQkJIFR1cGxlVGFibGVTbG90ICpleGNsdWRlZFNsb3QsCiAJCQkJ CQkJCSBib29sIGNhblNldFRhZywKIAkJCQkJCQkJIFR1cGxlVGFibGVTbG90ICoqcmV0dXJu aW5nKTsKK3N0YXRpYyB2b2lkIEV4ZWNGb3JQb3J0aW9uT2ZMZWZ0b3ZlcnMoTW9kaWZ5VGFi bGVDb250ZXh0ICpjb250ZXh0LAorCQkJCQkJCQkJICBFU3RhdGUgKmVzdGF0ZSwKKwkJCQkJ CQkJCSAgUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKKwkJCQkJCQkJCSAgSXRlbVBv aW50ZXIgdHVwbGVpZCk7CiBzdGF0aWMgVHVwbGVUYWJsZVNsb3QgKkV4ZWNQcmVwYXJlVHVw bGVSb3V0aW5nKE1vZGlmeVRhYmxlU3RhdGUgKm10c3RhdGUsCiAJCQkJCQkJCQkJCSAgIEVT dGF0ZSAqZXN0YXRlLAogCQkJCQkJCQkJCQkgICBQYXJ0aXRpb25UdXBsZVJvdXRpbmcgKnBy b3V0ZSwKQEAgLTE2MCw2ICsxNjYsNyBAQCBzdGF0aWMgYm9vbCBFeGVjTWVyZ2VNYXRjaGVk KE1vZGlmeVRhYmxlQ29udGV4dCAqY29udGV4dCwKIHN0YXRpYyB2b2lkIEV4ZWNNZXJnZU5v dE1hdGNoZWQoTW9kaWZ5VGFibGVDb250ZXh0ICpjb250ZXh0LAogCQkJCQkJCQlSZXN1bHRS ZWxJbmZvICpyZXN1bHRSZWxJbmZvLAogCQkJCQkJCQlib29sIGNhblNldFRhZyk7CitzdGF0 aWMgdm9pZCBFeGVjU2V0dXBUcmFuc2l0aW9uQ2FwdHVyZVN0YXRlKE1vZGlmeVRhYmxlU3Rh dGUgKm10c3RhdGUsIEVTdGF0ZSAqZXN0YXRlKTsKIAogCiAvKgpAQCAtMTIwNSw2ICsxMjEy LDE2OSBAQCBFeGVjSW5zZXJ0KE1vZGlmeVRhYmxlQ29udGV4dCAqY29udGV4dCwKIAlyZXR1 cm4gcmVzdWx0OwogfQogCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgkJRXhlY0ZvclBvcnRpb25PZkxl ZnRvdmVycworICoKKyAqCQlJbnNlcnQgdHVwbGVzIGZvciB0aGUgdW50b3VjaGVkIHBvcnRp b24gb2YgYSByb3cgaW4gYSBGT1IKKyAqCQlQT1JUSU9OIE9GIFVQREFURS9ERUxFVEUKKyAq IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAqLworc3RhdGljIHZvaWQKK0V4ZWNGb3JQb3J0aW9uT2ZMZWZ0b3Zl cnMoTW9kaWZ5VGFibGVDb250ZXh0ICpjb250ZXh0LAorCQkJCQkJICBFU3RhdGUgKmVzdGF0 ZSwKKwkJCQkJCSAgUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKKwkJCQkJCSAgSXRl bVBvaW50ZXIgdHVwbGVpZCkKK3sKKwlNb2RpZnlUYWJsZVN0YXRlICptdHN0YXRlID0gY29u dGV4dC0+bXRzdGF0ZTsKKwlNb2RpZnlUYWJsZSAqbm9kZSA9IChNb2RpZnlUYWJsZSAqKSBt dHN0YXRlLT5wcy5wbGFuOworCUZvclBvcnRpb25PZkV4cHIgKmZvclBvcnRpb25PZiA9IChG b3JQb3J0aW9uT2ZFeHByICopIG5vZGUtPmZvclBvcnRpb25PZjsKKwlBdHRyTnVtYmVyCXJh bmdlQXR0bm87CisJRGF0dW0Jb2xkUmFuZ2U7CisJYm9vbCBpc051bGwgPSBmYWxzZTsKKwlU eXBlQ2FjaGVFbnRyeSAqdHlwY2FjaGU7CisJRm9yUG9ydGlvbk9mU3RhdGUgKmZwb1N0YXRl ID0gcmVzdWx0UmVsSW5mby0+cmlfZm9yUG9ydGlvbk9mOworCVR1cGxlVGFibGVTbG90ICpv bGR0dXBsZVNsb3QgPSBmcG9TdGF0ZS0+ZnBfRXhpc3Rpbmc7CisJVHVwbGVUYWJsZVNsb3Qg KmxlZnRvdmVyU2xvdCA9IGZwb1N0YXRlLT5mcF9MZWZ0b3ZlcjsKKwlUdXBsZUNvbnZlcnNp b25NYXAgKm1hcCA9IE5VTEw7CisJSGVhcFR1cGxlIG9sZHR1cGxlID0gTlVMTDsKKwlDbWRU eXBlCW9sZE9wZXJhdGlvbjsKKwlUcmFuc2l0aW9uQ2FwdHVyZVN0YXRlICpvbGRUY3M7CisJ Rm1nckluZm8gZmxpbmZvOworCVJldHVyblNldEluZm8gcnNpOworCWJvb2wgZGlkSW5pdCA9 IGZhbHNlOworCWJvb2wgc2hvdWxkRnJlZSA9IGZhbHNlOworCUxPQ0FMX0ZDSU5GTyhmY2lu Zm8sIDIpOworCisJLyoKKwkgKiBHZXQgdGhlIHJhbmdlIG9mIHRoZSBvbGQgcHJlLVVQREFU RS9ERUxFVEUgdHVwbGUsCisJICogc28gd2UgY2FuIGludGVyc2VjdCBpdCB3aXRoIHRoZSBG T1IgUE9SVElPTiBPRiB0YXJnZXQKKwkgKiBhbmQgc2VlIGlmIHRoZXJlIGFyZSBhbnkgImxl ZnRvdmVycyIgdG8gaW5zZXJ0LgorCSAqCisJICogV2UgaGF2ZSBhbHJlYWR5IGxvY2tlZCB0 aGUgdHVwbGUgaW4gRXhlY1VwZGF0ZS9FeGVjRGVsZXRlCisJICogYW5kIGl0IGhhcyBwYXNz ZWQgRXZhbFBsYW5RdWFsLgorCSAqIE1ha2Ugc3VyZSB3ZSdyZSBsb29raW5nIGF0IHRoZSBt b3N0IHJlY2VudCB2ZXJzaW9uLgorCSAqIE90aGVyd2lzZSBjb25jdXJyZW50IHVwZGF0ZXMg b2YgdGhlIHNhbWUgdHVwbGUgaW4gUkVBRCBDT01NSVRURUQKKwkgKiBjb3VsZCBpbnNlcnQg Y29uZmxpY3RpbmcgImxlZnRvdmVycyIuCisJICovCisJaWYgKCF0YWJsZV90dXBsZV9mZXRj aF9yb3dfdmVyc2lvbihyZXN1bHRSZWxJbmZvLT5yaV9SZWxhdGlvbkRlc2MsIHR1cGxlaWQs IFNuYXBzaG90QW55LCBvbGR0dXBsZVNsb3QpKQorCQllbG9nKEVSUk9SLCAiZmFpbGVkIHRv IGZldGNoIHR1cGxlIGZvciBGT1IgUE9SVElPTiBPRiIpOworCisJLyoKKwkgKiBHZXQgdGhl IG9sZCByYW5nZSBvZiB0aGUgcmVjb3JkIGJlaW5nIHVwZGF0ZWQuCisJICogTXVzdCByZWFk IHdpdGggdGhlIGF0dG5vIG9mIHRoZSBsZWFmIHBhcnRpdGlvbiBiZWluZyB1cGRhdGVkCisJ ICovCisKKwlyYW5nZUF0dG5vID0gZm9yUG9ydGlvbk9mLT5yYW5nZVZhci0+dmFyYXR0bm87 CisJaWYgKHJlc3VsdFJlbEluZm8tPnJpX1Jvb3RSZXN1bHRSZWxJbmZvKQorCQltYXAgPSBF eGVjR2V0Q2hpbGRUb1Jvb3RNYXAocmVzdWx0UmVsSW5mbyk7CisJaWYgKG1hcCAhPSBOVUxM KQorCQlyYW5nZUF0dG5vID0gbWFwLT5hdHRyTWFwLT5hdHRudW1zW3JhbmdlQXR0bm8gLSAx XTsKKwlvbGRSYW5nZSA9IHNsb3RfZ2V0YXR0cihvbGR0dXBsZVNsb3QsIHJhbmdlQXR0bm8s ICZpc051bGwpOworCisJaWYgKGlzTnVsbCkKKwkJZWxvZyhFUlJPUiwgImZvdW5kIGEgTlVM TCByYW5nZSBpbiBhIHRlbXBvcmFsIHRhYmxlIik7CisKKwkvKgorCSAqIEdldCB0aGUgcmFu Z2UncyB0eXBlIGNhY2hlIGVudHJ5LiBUaGlzIGlzIHdvcnRoIGNhY2hpbmcgZm9yIHRoZSB3 aG9sZSBVUERBVEUKKwkgKiBhcyByYW5nZSBmdW5jdGlvbnMgZG8uCisJICovCisKKwl0eXBj YWNoZSA9IGZwb1N0YXRlLT5mcF9sZWZ0b3ZlcnN0eXBjYWNoZTsKKwlpZiAodHlwY2FjaGUg PT0gTlVMTCkKKwl7CisJCXR5cGNhY2hlID0gbG9va3VwX3R5cGVfY2FjaGUoZm9yUG9ydGlv bk9mLT5yYW5nZVR5cGUsIDApOworCQlmcG9TdGF0ZS0+ZnBfbGVmdG92ZXJzdHlwY2FjaGUg PSB0eXBjYWNoZTsKKwl9CisKKwkvKgorCSAqIEdldCB0aGUgcmFuZ2VzIHRvIHRoZSBsZWZ0 L3JpZ2h0IG9mIHRoZSB0YXJnZXRlZCByYW5nZS4KKwkgKiBXZSBjYWxsIGEgU0VUT0Ygc3Vw cG9ydCBmdW5jdGlvbiBhbmQgaW5zZXJ0IGFzIG1hbnkgbGVmdG92ZXJzCisJICogYXMgaXQg Z2l2ZXMgdXMuIEFsdGhvdWdoIHJhbmdldHlwZXMgaGF2ZSAwLzEvMiBsZWZ0b3ZlcnMsCisJ ICogbXVsdGlyYW5nZXMgaGF2ZSAwLzEsIGFuZCBvdGhlciB0eXBlcyBtYXkgaGF2ZSBtb3Jl LgorCSAqLworCisJZm1ncl9pbmZvKGZvclBvcnRpb25PZi0+d2l0aG91dFBvcnRpb25Qcm9j LCAmZmxpbmZvKTsKKwlyc2kudHlwZSA9IFRfUmV0dXJuU2V0SW5mbzsKKwlyc2kuZWNvbnRl eHQgPSBtdHN0YXRlLT5wcy5wc19FeHByQ29udGV4dDsKKwlyc2kuZXhwZWN0ZWREZXNjID0g TlVMTDsKKwlyc2kuYWxsb3dlZE1vZGVzID0gKGludCkgKFNGUk1fVmFsdWVQZXJDYWxsKTsK Kwlyc2kucmV0dXJuTW9kZSA9IFNGUk1fVmFsdWVQZXJDYWxsOworCXJzaS5zZXRSZXN1bHQg PSBOVUxMOworCXJzaS5zZXREZXNjID0gTlVMTDsKKworCUluaXRGdW5jdGlvbkNhbGxJbmZv RGF0YSgqZmNpbmZvLCAmZmxpbmZvLCAyLCBJbnZhbGlkT2lkLCBOVUxMLCAoTm9kZSAqKSAm cnNpKTsKKwlmY2luZm8tPmFyZ3NbMF0udmFsdWUgPSBvbGRSYW5nZTsKKwlmY2luZm8tPmFy Z3NbMF0uaXNudWxsID0gZmFsc2U7CisJZmNpbmZvLT5hcmdzWzFdLnZhbHVlID0gZnBvU3Rh dGUtPmZwX3RhcmdldFJhbmdlOworCWZjaW5mby0+YXJnc1sxXS5pc251bGwgPSBmYWxzZTsK KworCXdoaWxlICh0cnVlKQorCXsKKwkJRGF0dW0gbGVmdG92ZXIgPSBGdW5jdGlvbkNhbGxJ bnZva2UoZmNpbmZvKTsKKworCQkvKiBBcmUgd2UgZG9uZT8gKi8KKwkJaWYgKHJzaS5pc0Rv bmUgPT0gRXhwckVuZFJlc3VsdCkKKwkJCWJyZWFrOworCisJCWlmIChmY2luZm8tPmlzbnVs bCkKKwkJCWVsb2coRVJST1IsICJHb3QgYSBudWxsIGZyb20gd2l0aG91dF9wb3J0aW9uIGZ1 bmN0aW9uIik7CisKKwkJaWYgKCFkaWRJbml0KQorCQl7CisJCQkvKgorCQkJICogTWFrZSBh IGNvcHkgb2YgdGhlIHByZS1VUERBVEUgcm93LgorCQkJICogVGhlbiB3ZSdsbCBvdmVyd3Jp dGUgdGhlIHJhbmdlIGNvbHVtbiBiZWxvdy4KKwkJCSAqIENvbnZlcnQgb2xkdHVwbGUgdG8g dGhlIGJhc2UgdGFibGUncyBmb3JtYXQgaWYgbmVjZXNzYXJ5LgorCQkJICogV2UgbmVlZCB0 byBpbnNlcnQgbGVmdG92ZXJzIHRocm91Z2ggdGhlIHJvb3QgcGFydGl0aW9uCisJCQkgKiBz byB0aGV5IGdldCByb3V0ZWQgY29ycmVjdGx5LgorCQkJICovCisJCQlpZiAobWFwICE9IE5V TEwpCisJCQkJbGVmdG92ZXJTbG90ID0gZXhlY3V0ZV9hdHRyX21hcF9zbG90KG1hcC0+YXR0 ck1hcCwKKwkJCQkJCQkJCQkJCQkgb2xkdHVwbGVTbG90LAorCQkJCQkJCQkJCQkJCSBsZWZ0 b3ZlclNsb3QpOworCQkJZWxzZQorCQkJeworCQkJCW9sZHR1cGxlID0gRXhlY0ZldGNoU2xv dEhlYXBUdXBsZShvbGR0dXBsZVNsb3QsIGZhbHNlLCAmc2hvdWxkRnJlZSk7CisJCQkJRXhl Y0ZvcmNlU3RvcmVIZWFwVHVwbGUob2xkdHVwbGUsIGxlZnRvdmVyU2xvdCwgZmFsc2UpOwor CQkJfQorCisJCQkvKiBTYXZlIHNvbWUgbXRzdGF0ZSB0aGluZ3Mgc28gd2UgY2FuIHJlc3Rv cmUgdGhlbSBiZWxvdy4gKi8KKwkJCS8vIFRPRE86IERvIHdlIG5lZWQgYSBtb3JlIHN5c3Rl bWF0aWMgd2F5IG9mIGRvaW5nIHRoaXMsCisJCQkvLyBlLmcuIGEgbmV3IG10c3RhdGUgb3Ig ZXZlbiBhIHNlcGFyYXRlIEZvclBvcnRpb25PZkxlZnRvdmVycyBub2RlPworCQkJb2xkT3Bl cmF0aW9uID0gbXRzdGF0ZS0+b3BlcmF0aW9uOworCQkJbXRzdGF0ZS0+b3BlcmF0aW9uID0g Q01EX0lOU0VSVDsKKwkJCW9sZFRjcyA9IG10c3RhdGUtPm10X3RyYW5zaXRpb25fY2FwdHVy ZTsKKworCQkJZGlkSW5pdCA9IHRydWU7CisJCX0KKworCQkvKiBzdG9yZSB0aGUgbmV3IHJh bmdlICovCisJCWxlZnRvdmVyU2xvdC0+dHRzX3ZhbHVlc1tmb3JQb3J0aW9uT2YtPnJhbmdl VmFyLT52YXJhdHRubyAtIDFdID0gbGVmdG92ZXI7CisJCWxlZnRvdmVyU2xvdC0+dHRzX2lz bnVsbFtmb3JQb3J0aW9uT2YtPnJhbmdlVmFyLT52YXJhdHRubyAtIDFdID0gZmFsc2U7CisJ CUV4ZWNNYXRlcmlhbGl6ZVNsb3QobGVmdG92ZXJTbG90KTsKKworCQkvKgorCQkgKiBJZiB0 aGVyZSBhcmUgcGFydGl0aW9ucywgd2UgbXVzdCBpbnNlcnQgaW50byB0aGUgcm9vdCB0YWJs ZSwKKwkJICogc28gd2UgZ2V0IHR1cGxlIHJvdXRpbmcuIFdlIGFscmVhZHkgc2V0IHVwIGxl ZnRvdmVyU2xvdAorCQkgKiB3aXRoIHRoZSByb290IHR1cGxlIGRlc2NyaXB0b3IuCisJCSAq LworCQlpZiAocmVzdWx0UmVsSW5mby0+cmlfUm9vdFJlc3VsdFJlbEluZm8pCisJCQlyZXN1 bHRSZWxJbmZvID0gcmVzdWx0UmVsSW5mby0+cmlfUm9vdFJlc3VsdFJlbEluZm87CisKKwkJ RXhlY1NldHVwVHJhbnNpdGlvbkNhcHR1cmVTdGF0ZShtdHN0YXRlLCBlc3RhdGUpOworCQlF eGVjSW5zZXJ0KGNvbnRleHQsIHJlc3VsdFJlbEluZm8sIGxlZnRvdmVyU2xvdCwgbm9kZS0+ Y2FuU2V0VGFnLCBOVUxMLCBOVUxMKTsKKwl9CisKKwlpZiAoZGlkSW5pdCkKKwl7CisJCW10 c3RhdGUtPm9wZXJhdGlvbiA9IG9sZE9wZXJhdGlvbjsKKwkJbXRzdGF0ZS0+bXRfdHJhbnNp dGlvbl9jYXB0dXJlID0gb2xkVGNzOworCisJCWlmIChzaG91bGRGcmVlKQorCQkJaGVhcF9m cmVldHVwbGUob2xkdHVwbGUpOworCX0KK30KKwogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoJCUV4ZWNC YXRjaEluc2VydAogICoKQEAgLTEzNTcsNyArMTUyNyw4IEBAIEV4ZWNEZWxldGVBY3QoTW9k aWZ5VGFibGVDb250ZXh0ICpjb250ZXh0LCBSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZv LAogICoKICAqIENsb3Npbmcgc3RlcHMgb2YgdHVwbGUgZGVsZXRpb247IHRoaXMgaW52b2tl cyBBRlRFUiBGT1IgRUFDSCBST1cgdHJpZ2dlcnMsCiAgKiBpbmNsdWRpbmcgdGhlIFVQREFU RSB0cmlnZ2VycyBpZiB0aGUgZGVsZXRpb24gaXMgYmVpbmcgZG9uZSBhcyBwYXJ0IG9mIGEK LSAqIGNyb3NzLXBhcnRpdGlvbiB0dXBsZSBtb3ZlLgorICogY3Jvc3MtcGFydGl0aW9uIHR1 cGxlIG1vdmUuIEl0IGFsc28gaW5zZXJ0cyBsZWZ0b3ZlcnMgZnJvbSBhIEZPUiBQT1JUSU9O IE9GCisgKiBkZWxldGUuCiAgKi8KIHN0YXRpYyB2b2lkCiBFeGVjRGVsZXRlRXBpbG9ndWUo TW9kaWZ5VGFibGVDb250ZXh0ICpjb250ZXh0LCBSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJ bmZvLApAQCAtMTM5MCw2ICsxNTYxLDExIEBAIEV4ZWNEZWxldGVFcGlsb2d1ZShNb2RpZnlU YWJsZUNvbnRleHQgKmNvbnRleHQsIFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sCiAJ CWFyX2RlbGV0ZV90cmlnX3RjcyA9IE5VTEw7CiAJfQogCisJLyogQ29tcHV0ZSBsZWZ0b3Zl cnMgaW4gRk9SIFBPUlRJT04gT0YgKi8KKwkvLyBUT0RPOiBTa2lwIHRoaXMgZm9yIEZEVyBk ZWxldGVzPworCWlmICgoKE1vZGlmeVRhYmxlICopIGNvbnRleHQtPm10c3RhdGUtPnBzLnBs YW4pLT5mb3JQb3J0aW9uT2YpCisJCUV4ZWNGb3JQb3J0aW9uT2ZMZWZ0b3ZlcnMoY29udGV4 dCwgZXN0YXRlLCByZXN1bHRSZWxJbmZvLCB0dXBsZWlkKTsKKwogCS8qIEFGVEVSIFJPVyBE RUxFVEUgVHJpZ2dlcnMgKi8KIAlFeGVjQVJEZWxldGVUcmlnZ2Vycyhlc3RhdGUsIHJlc3Vs dFJlbEluZm8sIHR1cGxlaWQsIG9sZHR1cGxlLAogCQkJCQkJIGFyX2RlbGV0ZV90cmlnX3Rj cywgY2hhbmdpbmdQYXJ0KTsKQEAgLTE3NzAsNyArMTk0NiwxMSBAQCBFeGVjQ3Jvc3NQYXJ0 aXRpb25VcGRhdGUoTW9kaWZ5VGFibGVDb250ZXh0ICpjb250ZXh0LAogCWlmIChyZXN1bHRS ZWxJbmZvID09IG10c3RhdGUtPnJvb3RSZXN1bHRSZWxJbmZvKQogCQlFeGVjUGFydGl0aW9u Q2hlY2tFbWl0RXJyb3IocmVzdWx0UmVsSW5mbywgc2xvdCwgZXN0YXRlKTsKIAotCS8qIElu aXRpYWxpemUgdHVwbGUgcm91dGluZyBpbmZvIGlmIG5vdCBhbHJlYWR5IGRvbmUuICovCisJ LyoKKwkgKiBJbml0aWFsaXplIHR1cGxlIHJvdXRpbmcgaW5mbyBpZiBub3QgYWxyZWFkeSBk b25lLgorCSAqIE5vdGUgd2hhdGV2ZXIgd2UgZG8gaGVyZSBtdXN0IGJlIGRvbmUgaW4gRXhl Y0luaXRNb2RpZnlUYWJsZQorCSAqIGZvciBGT1IgUE9SVElPTiBPRiBhcyB3ZWxsLgorCSAq LwogCWlmIChtdHN0YXRlLT5tdF9wYXJ0aXRpb25fdHVwbGVfcm91dGluZyA9PSBOVUxMKQog CXsKIAkJUmVsYXRpb24Jcm9vdFJlbCA9IG10c3RhdGUtPnJvb3RSZXN1bHRSZWxJbmZvLT5y aV9SZWxhdGlvbkRlc2M7CkBAIC0yMTM5LDYgKzIzMTksMTEgQEAgRXhlY1VwZGF0ZUVwaWxv Z3VlKE1vZGlmeVRhYmxlQ29udGV4dCAqY29udGV4dCwgVXBkYXRlQ29udGV4dCAqdXBkYXRl Q3h0LAogCQkJCQkJCQkJCQkgICBOVUxMLCBOSUwsCiAJCQkJCQkJCQkJCSAgICh1cGRhdGVD eHQtPnVwZGF0ZUluZGV4ZXMgPT0gVFVfU3VtbWFyaXppbmcpKTsKIAorCS8qIENvbXB1dGUg bGVmdG92ZXJzIGluIEZPUiBQT1JUSU9OIE9GICovCisJLy8gVE9ETzogU2tpcCB0aGlzIGZv ciBGRFcgdXBkYXRlcz8KKwlpZiAoKChNb2RpZnlUYWJsZSAqKSBjb250ZXh0LT5tdHN0YXRl LT5wcy5wbGFuKS0+Zm9yUG9ydGlvbk9mKQorCQlFeGVjRm9yUG9ydGlvbk9mTGVmdG92ZXJz KGNvbnRleHQsIGNvbnRleHQtPmVzdGF0ZSwgcmVzdWx0UmVsSW5mbywgdHVwbGVpZCk7CisK IAkvKiBBRlRFUiBST1cgVVBEQVRFIFRyaWdnZXJzICovCiAJRXhlY0FSVXBkYXRlVHJpZ2dl cnMoY29udGV4dC0+ZXN0YXRlLCByZXN1bHRSZWxJbmZvLAogCQkJCQkJIE5VTEwsIE5VTEws CkBAIC00MzAzLDYgKzQ0ODgsMTE3IEBAIEV4ZWNJbml0TW9kaWZ5VGFibGUoTW9kaWZ5VGFi bGUgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCQl9CiAJfQogCisJLyoK KwkgKiBJZiBuZWVkZWQsIGluaXRpYWxpemUgdGhlIHRhcmdldCByYW5nZSBmb3IgRk9SIFBP UlRJT04gT0YuCisJICovCisJaWYgKG5vZGUtPmZvclBvcnRpb25PZikKKwl7CisJCVR1cGxl RGVzYyB0dXBEZXNjOworCQlGb3JQb3J0aW9uT2ZFeHByICpmb3JQb3J0aW9uT2Y7CisJCURh dHVtCXRhcmdldFJhbmdlOworCQlib29sCWlzTnVsbDsKKwkJRXhwckNvbnRleHQgKmVjb250 ZXh0OworCQlFeHByU3RhdGUgKmV4cHJTdGF0ZTsKKwkJRm9yUG9ydGlvbk9mU3RhdGUgKmZw b1N0YXRlOworCisJCXJlc3VsdFJlbEluZm8gPSBtdHN0YXRlLT5yZXN1bHRSZWxJbmZvOwor CQlpZiAocmVzdWx0UmVsSW5mby0+cmlfUm9vdFJlc3VsdFJlbEluZm8pCisJCQlyZXN1bHRS ZWxJbmZvID0gcmVzdWx0UmVsSW5mby0+cmlfUm9vdFJlc3VsdFJlbEluZm87CisKKwkJdHVw RGVzYyA9IHJlc3VsdFJlbEluZm8tPnJpX1JlbGF0aW9uRGVzYy0+cmRfYXR0OworCQlmb3JQ b3J0aW9uT2YgPSAoRm9yUG9ydGlvbk9mRXhwciAqKSBub2RlLT5mb3JQb3J0aW9uT2Y7CisK KwkJLyogRXZhbCB0aGUgRk9SIFBPUlRJT04gT0YgdGFyZ2V0ICovCisJCWlmIChtdHN0YXRl LT5wcy5wc19FeHByQ29udGV4dCA9PSBOVUxMKQorCQkJRXhlY0Fzc2lnbkV4cHJDb250ZXh0 KGVzdGF0ZSwgJm10c3RhdGUtPnBzKTsKKwkJZWNvbnRleHQgPSBtdHN0YXRlLT5wcy5wc19F eHByQ29udGV4dDsKKworCQlleHByU3RhdGUgPSBFeGVjUHJlcGFyZUV4cHIoKEV4cHIgKikg Zm9yUG9ydGlvbk9mLT50YXJnZXRSYW5nZSwgZXN0YXRlKTsKKwkJdGFyZ2V0UmFuZ2UgPSBF eGVjRXZhbEV4cHIoZXhwclN0YXRlLCBlY29udGV4dCwgJmlzTnVsbCk7CisJCWlmIChpc051 bGwpCisJCQllbG9nKEVSUk9SLCAiR290IGEgTlVMTCBGT1IgUE9SVElPTiBPRiB0YXJnZXQg cmFuZ2UiKTsKKworCQkvKiBDcmVhdGUgc3RhdGUgZm9yIEZPUiBQT1JUSU9OIE9GIG9wZXJh dGlvbiAqLworCisJCWZwb1N0YXRlID0gbWFrZU5vZGUoRm9yUG9ydGlvbk9mU3RhdGUpOwor CQlmcG9TdGF0ZS0+ZnBfcmFuZ2VOYW1lID0gZm9yUG9ydGlvbk9mLT5yYW5nZV9uYW1lOwor CQlmcG9TdGF0ZS0+ZnBfcmFuZ2VUeXBlID0gZm9yUG9ydGlvbk9mLT5yYW5nZVR5cGU7CisJ CWZwb1N0YXRlLT5mcF9yYW5nZUF0dG5vID0gZm9yUG9ydGlvbk9mLT5yYW5nZVZhci0+dmFy YXR0bm87CisJCWZwb1N0YXRlLT5mcF90YXJnZXRSYW5nZSA9IHRhcmdldFJhbmdlOworCisJ CS8qIEluaXRpYWxpemUgc2xvdCBmb3IgdGhlIGV4aXN0aW5nIHR1cGxlICovCisKKwkJZnBv U3RhdGUtPmZwX0V4aXN0aW5nID0KKwkJCXRhYmxlX3Nsb3RfY3JlYXRlKHJlc3VsdFJlbElu Zm8tPnJpX1JlbGF0aW9uRGVzYywKKwkJCQkJCQkgICZtdHN0YXRlLT5wcy5zdGF0ZS0+ZXNf dHVwbGVUYWJsZSk7CisKKwkJLyogQ3JlYXRlIHRoZSB0dXBsZSBzbG90IGZvciBJTlNFUlRp bmcgdGhlIGxlZnRvdmVycyAqLworCisJCWZwb1N0YXRlLT5mcF9MZWZ0b3ZlciA9CisJCQlF eGVjSW5pdEV4dHJhVHVwbGVTbG90KG10c3RhdGUtPnBzLnN0YXRlLCB0dXBEZXNjLCAmVFRT T3BzVmlydHVhbCk7CisKKwkJLyoKKwkJICogV2UgbXVzdCBhdHRhY2ggdGhlIEZvclBvcnRp b25PZlN0YXRlIHRvIGFsbCByZXN1bHQgcmVscywKKwkJICogaW4gY2FzZSBvZiBhIGNyb3Nz LXBhcnRpdGlvbiB1cGRhdGUgb3IgdHJpZ2dlcnMgZmlyaW5nCisJCSAqIG9uIHBhcnRpdGlv bnMuCisJCSAqLworCQlmb3IgKGkgPSAwOyBpIDwgbnJlbHM7IGkrKykKKwkJeworCQkJRm9y UG9ydGlvbk9mU3RhdGUJKmxlYWZTdGF0ZTsKKwkJCXJlc3VsdFJlbEluZm8gPSAmbXRzdGF0 ZS0+cmVzdWx0UmVsSW5mb1tpXTsKKworCQkJbGVhZlN0YXRlID0gbWFrZU5vZGUoRm9yUG9y dGlvbk9mU3RhdGUpOworCQkJbGVhZlN0YXRlLT5mcF9yYW5nZU5hbWUgPSBmcG9TdGF0ZS0+ ZnBfcmFuZ2VOYW1lOworCQkJbGVhZlN0YXRlLT5mcF9yYW5nZVR5cGUgPSBmcG9TdGF0ZS0+ ZnBfcmFuZ2VUeXBlOworCQkJbGVhZlN0YXRlLT5mcF9yYW5nZUF0dG5vID0gZnBvU3RhdGUt PmZwX3JhbmdlQXR0bm87CisJCQlsZWFmU3RhdGUtPmZwX3RhcmdldFJhbmdlID0gZnBvU3Rh dGUtPmZwX3RhcmdldFJhbmdlOworCQkJbGVhZlN0YXRlLT5mcF9MZWZ0b3ZlciA9IGZwb1N0 YXRlLT5mcF9MZWZ0b3ZlcjsKKwkJCS8qIEVhY2ggcGFydGl0aW9uIG5lZWRzIGEgc2xvdCBt YXRjaGluZyBpdHMgdHVwbGUgZGVzY3JpcHRvciAqLworCQkJbGVhZlN0YXRlLT5mcF9FeGlz dGluZyA9CisJCQkJdGFibGVfc2xvdF9jcmVhdGUocmVzdWx0UmVsSW5mby0+cmlfUmVsYXRp b25EZXNjLAorCQkJCQkJCQkgICZtdHN0YXRlLT5wcy5zdGF0ZS0+ZXNfdHVwbGVUYWJsZSk7 CisKKwkJCXJlc3VsdFJlbEluZm8tPnJpX2ZvclBvcnRpb25PZiA9IGxlYWZTdGF0ZTsKKwkJ fQorCisJCS8qIE1ha2Ugc3VyZSB0aGUgcm9vdCByZWxhdGlvbiBoYXMgdGhlIEZPUiBQT1JU SU9OIE9GIGNsYXVzZSB0b28uICovCisJCWlmIChub2RlLT5yb290UmVsYXRpb24gPiAwKQor CQkJbXRzdGF0ZS0+cm9vdFJlc3VsdFJlbEluZm8tPnJpX2ZvclBvcnRpb25PZiA9IGZwb1N0 YXRlOworCisJCWlmIChyZWwtPnJkX3JlbC0+cmVsa2luZCA9PSBSRUxLSU5EX1BBUlRJVElP TkVEX1RBQkxFICYmCisJCQkJbXRzdGF0ZS0+bXRfcGFydGl0aW9uX3R1cGxlX3JvdXRpbmcg PT0gTlVMTCkKKwkJeworCQkJLyoKKwkJCSAqIFdlIHdpbGwgbmVlZCB0dXBsZSByb3V0aW5n IHRvIGluc2VydCBsZWZ0b3ZlcnMuCisJCQkgKiBTaW5jZSB3ZSBhcmUgaW5pdGlhbGl6aW5n IHRoaW5ncyBiZWZvcmUgRXhlY0Nyb3NzUGFydGl0aW9uVXBkYXRlIHJ1bnMsCisJCQkgKiB3 ZSBtdXN0IGRvIGV2ZXJ5dGhpbmcgaXQgbmVlZHMgYXMgd2VsbC4KKwkJCSAqLworCQkJaWYg KG10c3RhdGUtPm10X3BhcnRpdGlvbl90dXBsZV9yb3V0aW5nID09IE5VTEwpCisJCQl7CisJ CQkJUmVsYXRpb24Jcm9vdFJlbCA9IG10c3RhdGUtPnJvb3RSZXN1bHRSZWxJbmZvLT5yaV9S ZWxhdGlvbkRlc2M7CisJCQkJTWVtb3J5Q29udGV4dCBvbGRjeHQ7CisKKwkJCQkvKiBUaGlu Z3MgYnVpbHQgaGVyZSBoYXZlIHRvIGxhc3QgZm9yIHRoZSBxdWVyeSBkdXJhdGlvbi4gKi8K KwkJCQlvbGRjeHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oZXN0YXRlLT5lc19xdWVyeV9j eHQpOworCisJCQkJbXRzdGF0ZS0+bXRfcGFydGl0aW9uX3R1cGxlX3JvdXRpbmcgPQorCQkJ CQlFeGVjU2V0dXBQYXJ0aXRpb25UdXBsZVJvdXRpbmcoZXN0YXRlLCByb290UmVsKTsKKwor CQkJCS8qCisJCQkJICogQmVmb3JlIGEgcGFydGl0aW9uJ3MgdHVwbGUgY2FuIGJlIHJlLXJv dXRlZCwgaXQgbXVzdCBmaXJzdCBiZQorCQkJCSAqIGNvbnZlcnRlZCB0byB0aGUgcm9vdCdz IGZvcm1hdCwgc28gd2UnbGwgbmVlZCBhIHNsb3QgZm9yIHN0b3JpbmcKKwkJCQkgKiBzdWNo IHR1cGxlcy4KKwkJCQkgKi8KKwkJCQlBc3NlcnQobXRzdGF0ZS0+bXRfcm9vdF90dXBsZV9z bG90ID09IE5VTEwpOworCQkJCW10c3RhdGUtPm10X3Jvb3RfdHVwbGVfc2xvdCA9IHRhYmxl X3Nsb3RfY3JlYXRlKHJvb3RSZWwsIE5VTEwpOworCisJCQkJTWVtb3J5Q29udGV4dFN3aXRj aFRvKG9sZGN4dCk7CisJCQl9CisJCX0KKworCQkvKiBEb24ndCBmcmVlIHRoZSBFeHByQ29u dGV4dCBoZXJlIGJlY2F1c2UgdGhlIHJlc3VsdCBtdXN0IGxhc3QgZm9yIHRoZSB3aG9sZSBx dWVyeSAqLworCX0KKwogCS8qCiAJICogSWYgd2UgaGF2ZSBhbnkgc2Vjb25kYXJ5IHJlbGF0 aW9ucyBpbiBhbiBVUERBVEUgb3IgREVMRVRFLCB0aGV5IG5lZWQgdG8KIAkgKiBiZSB0cmVh dGVkIGxpa2Ugbm9uLWxvY2tlZCByZWxhdGlvbnMgaW4gU0VMRUNUIEZPUiBVUERBVEUsIGku ZS4sIHRoZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMgYi9z cmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3MuYwppbmRleCBlMWE1YmM3ZTk1ZC4uNmMxOTg0 NGUxN2UgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5jCisrKyBi L3NyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5jCkBAIC0yNDQ0LDYgKzI0NDQsMTQgQEAg ZXhwcmVzc2lvbl90cmVlX3dhbGtlcl9pbXBsKE5vZGUgKm5vZGUsCiAJCQkJCXJldHVybiB0 cnVlOwogCQkJfQogCQkJYnJlYWs7CisJCWNhc2UgVF9Gb3JQb3J0aW9uT2ZFeHByOgorCQkJ eworCQkJCUZvclBvcnRpb25PZkV4cHIgKmZvclBvcnRpb25PZiA9IChGb3JQb3J0aW9uT2ZF eHByICopIG5vZGU7CisKKwkJCQlpZiAoV0FMSyhmb3JQb3J0aW9uT2YtPnRhcmdldFJhbmdl KSkKKwkJCQkJcmV0dXJuIHRydWU7CisJCQl9CisJCQlicmVhazsKIAkJY2FzZSBUX1BhcnRp dGlvblBydW5lU3RlcE9wOgogCQkJewogCQkJCVBhcnRpdGlvblBydW5lU3RlcE9wICpvcHN0 ZXAgPSAoUGFydGl0aW9uUHJ1bmVTdGVwT3AgKikgbm9kZTsKQEAgLTI1ODQsNiArMjU5Miw4 IEBAIHF1ZXJ5X3RyZWVfd2Fsa2VyX2ltcGwoUXVlcnkgKnF1ZXJ5LAogCQlyZXR1cm4gdHJ1 ZTsKIAlpZiAoV0FMSyhxdWVyeS0+bWVyZ2VBY3Rpb25MaXN0KSkKIAkJcmV0dXJuIHRydWU7 CisJaWYgKFdBTEsocXVlcnktPmZvclBvcnRpb25PZikpCisJCXJldHVybiB0cnVlOwogCWlm IChXQUxLKHF1ZXJ5LT5yZXR1cm5pbmdMaXN0KSkKIAkJcmV0dXJuIHRydWU7CiAJaWYgKFdB TEsocXVlcnktPmpvaW50cmVlKSkKQEAgLTM0MzAsNiArMzQ0MCwxOSBAQCBleHByZXNzaW9u X3RyZWVfbXV0YXRvcl9pbXBsKE5vZGUgKm5vZGUsCiAJCQkJcmV0dXJuIChOb2RlICopIG5l d25vZGU7CiAJCQl9CiAJCQlicmVhazsKKwkJY2FzZSBUX0ZvclBvcnRpb25PZkV4cHI6CisJ CQl7CisJCQkJRm9yUG9ydGlvbk9mRXhwciAqZnBvID0gKEZvclBvcnRpb25PZkV4cHIgKikg bm9kZTsKKwkJCQlGb3JQb3J0aW9uT2ZFeHByICpuZXdub2RlOworCisJCQkJRkxBVENPUFko bmV3bm9kZSwgZnBvLCBGb3JQb3J0aW9uT2ZFeHByKTsKKwkJCQlNVVRBVEUobmV3bm9kZS0+ cmFuZ2VWYXIsIGZwby0+cmFuZ2VWYXIsIFZhciAqKTsKKwkJCQlNVVRBVEUobmV3bm9kZS0+ dGFyZ2V0UmFuZ2UsIGZwby0+dGFyZ2V0UmFuZ2UsIE5vZGUgKik7CisJCQkJTVVUQVRFKG5l d25vZGUtPnJhbmdlVGFyZ2V0TGlzdCwgZnBvLT5yYW5nZVRhcmdldExpc3QsIExpc3QgKik7 CisKKwkJCQlyZXR1cm4gKE5vZGUgKikgbmV3bm9kZTsKKwkJCX0KKwkJCWJyZWFrOwogCQlj YXNlIFRfUGFydGl0aW9uUHJ1bmVTdGVwT3A6CiAJCQl7CiAJCQkJUGFydGl0aW9uUHJ1bmVT dGVwT3AgKm9wc3RlcCA9IChQYXJ0aXRpb25QcnVuZVN0ZXBPcCAqKSBub2RlOwpAQCAtMzYw OCw2ICszNjMxLDcgQEAgcXVlcnlfdHJlZV9tdXRhdG9yX2ltcGwoUXVlcnkgKnF1ZXJ5LAog CU1VVEFURShxdWVyeS0+d2l0aENoZWNrT3B0aW9ucywgcXVlcnktPndpdGhDaGVja09wdGlv bnMsIExpc3QgKik7CiAJTVVUQVRFKHF1ZXJ5LT5vbkNvbmZsaWN0LCBxdWVyeS0+b25Db25m bGljdCwgT25Db25mbGljdEV4cHIgKik7CiAJTVVUQVRFKHF1ZXJ5LT5tZXJnZUFjdGlvbkxp c3QsIHF1ZXJ5LT5tZXJnZUFjdGlvbkxpc3QsIExpc3QgKik7CisJTVVUQVRFKHF1ZXJ5LT5m b3JQb3J0aW9uT2YsIHF1ZXJ5LT5mb3JQb3J0aW9uT2YsIEZvclBvcnRpb25PZkV4cHIgKik7 CiAJTVVUQVRFKHF1ZXJ5LT5yZXR1cm5pbmdMaXN0LCBxdWVyeS0+cmV0dXJuaW5nTGlzdCwg TGlzdCAqKTsKIAlNVVRBVEUocXVlcnktPmpvaW50cmVlLCBxdWVyeS0+am9pbnRyZWUsIEZy b21FeHByICopOwogCU1VVEFURShxdWVyeS0+c2V0T3BlcmF0aW9ucywgcXVlcnktPnNldE9w ZXJhdGlvbnMsIE5vZGUgKik7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIv cGxhbi9jcmVhdGVwbGFuLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVw bGFuLmMKaW5kZXggNjEwZjRhNTZkNmIuLjU5ZGY0NDcwMmQxIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMKKysrIGIvc3JjL2JhY2tlbmQv b3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jCkBAIC0zMTEsNyArMzExLDggQEAgc3RhdGlj IE1vZGlmeVRhYmxlICptYWtlX21vZGlmeXRhYmxlKFBsYW5uZXJJbmZvICpyb290LCBQbGFu ICpzdWJwbGFuLAogCQkJCQkJCQkJIExpc3QgKnVwZGF0ZUNvbG5vc0xpc3RzLAogCQkJCQkJ CQkJIExpc3QgKndpdGhDaGVja09wdGlvbkxpc3RzLCBMaXN0ICpyZXR1cm5pbmdMaXN0cywK IAkJCQkJCQkJCSBMaXN0ICpyb3dNYXJrcywgT25Db25mbGljdEV4cHIgKm9uY29uZmxpY3Qs Ci0JCQkJCQkJCQkgTGlzdCAqbWVyZ2VBY3Rpb25MaXN0cywgaW50IGVwcVBhcmFtKTsKKwkJ CQkJCQkJCSBMaXN0ICptZXJnZUFjdGlvbkxpc3RzLCBGb3JQb3J0aW9uT2ZFeHByICpmb3JQ b3J0aW9uT2YsCisJCQkJCQkJCQkgaW50IGVwcVBhcmFtKTsKIHN0YXRpYyBHYXRoZXJNZXJn ZSAqY3JlYXRlX2dhdGhlcl9tZXJnZV9wbGFuKFBsYW5uZXJJbmZvICpyb290LAogCQkJCQkJ CQkJCQkgR2F0aGVyTWVyZ2VQYXRoICpiZXN0X3BhdGgpOwogCkBAIC0yODM1LDYgKzI4MzYs NyBAQCBjcmVhdGVfbW9kaWZ5dGFibGVfcGxhbihQbGFubmVySW5mbyAqcm9vdCwgTW9kaWZ5 VGFibGVQYXRoICpiZXN0X3BhdGgpCiAJCQkJCQkJYmVzdF9wYXRoLT5yb3dNYXJrcywKIAkJ CQkJCQliZXN0X3BhdGgtPm9uY29uZmxpY3QsCiAJCQkJCQkJYmVzdF9wYXRoLT5tZXJnZUFj dGlvbkxpc3RzLAorCQkJCQkJCWJlc3RfcGF0aC0+Zm9yUG9ydGlvbk9mLAogCQkJCQkJCWJl c3RfcGF0aC0+ZXBxUGFyYW0pOwogCiAJY29weV9nZW5lcmljX3BhdGhfaW5mbygmcGxhbi0+ cGxhbiwgJmJlc3RfcGF0aC0+cGF0aCk7CkBAIC03MDE0LDcgKzcwMTYsOCBAQCBtYWtlX21v ZGlmeXRhYmxlKFBsYW5uZXJJbmZvICpyb290LCBQbGFuICpzdWJwbGFuLAogCQkJCSBMaXN0 ICp1cGRhdGVDb2xub3NMaXN0cywKIAkJCQkgTGlzdCAqd2l0aENoZWNrT3B0aW9uTGlzdHMs IExpc3QgKnJldHVybmluZ0xpc3RzLAogCQkJCSBMaXN0ICpyb3dNYXJrcywgT25Db25mbGlj dEV4cHIgKm9uY29uZmxpY3QsCi0JCQkJIExpc3QgKm1lcmdlQWN0aW9uTGlzdHMsIGludCBl cHFQYXJhbSkKKwkJCQkgTGlzdCAqbWVyZ2VBY3Rpb25MaXN0cywgRm9yUG9ydGlvbk9mRXhw ciAqZm9yUG9ydGlvbk9mLAorCQkJCSBpbnQgZXBxUGFyYW0pCiB7CiAJTW9kaWZ5VGFibGUg Km5vZGUgPSBtYWtlTm9kZShNb2RpZnlUYWJsZSk7CiAJTGlzdAkgICAqZmR3X3ByaXZhdGVf bGlzdDsKQEAgLTcwODAsNiArNzA4Myw3IEBAIG1ha2VfbW9kaWZ5dGFibGUoUGxhbm5lcklu Zm8gKnJvb3QsIFBsYW4gKnN1YnBsYW4sCiAJCW5vZGUtPmV4Y2xSZWxUbGlzdCA9IG9uY29u ZmxpY3QtPmV4Y2xSZWxUbGlzdDsKIAl9CiAJbm9kZS0+dXBkYXRlQ29sbm9zTGlzdHMgPSB1 cGRhdGVDb2xub3NMaXN0czsKKwlub2RlLT5mb3JQb3J0aW9uT2YgPSAoTm9kZSAqKSBmb3JQ b3J0aW9uT2Y7CiAJbm9kZS0+d2l0aENoZWNrT3B0aW9uTGlzdHMgPSB3aXRoQ2hlY2tPcHRp b25MaXN0czsKIAlub2RlLT5yZXR1cm5pbmdMaXN0cyA9IHJldHVybmluZ0xpc3RzOwogCW5v ZGUtPnJvd01hcmtzID0gcm93TWFya3M7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRp bWl6ZXIvcGxhbi9wbGFubmVyLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFu bmVyLmMKaW5kZXggYmU0ZTE4Mjg2OWEuLjRjNDM4NzA2OTk2IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0 aW1pemVyL3BsYW4vcGxhbm5lci5jCkBAIC0xOTY2LDYgKzE5NjYsNyBAQCBncm91cGluZ19w bGFubmVyKFBsYW5uZXJJbmZvICpyb290LCBkb3VibGUgdHVwbGVfZnJhY3Rpb24pCiAJCQkJ CQkJCQkJcm93TWFya3MsCiAJCQkJCQkJCQkJcGFyc2UtPm9uQ29uZmxpY3QsCiAJCQkJCQkJ CQkJbWVyZ2VBY3Rpb25MaXN0cywKKwkJCQkJCQkJCQlwYXJzZS0+Zm9yUG9ydGlvbk9mLAog CQkJCQkJCQkJCWFzc2lnbl9zcGVjaWFsX2V4ZWNfcGFyYW0ocm9vdCkpOwogCQl9CiAKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3BhdGhub2RlLmMgYi9zcmMv YmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wYXRobm9kZS5jCmluZGV4IDZmNzliMmUzZmU3Li40 OTAwYjRmNmQ3MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGF0 aG5vZGUuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wYXRobm9kZS5jCkBA IC0zNzE3LDcgKzM3MTcsOCBAQCBjcmVhdGVfbW9kaWZ5dGFibGVfcGF0aChQbGFubmVySW5m byAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsLAogCQkJCQkJTGlzdCAqdXBkYXRlQ29sbm9zTGlz dHMsCiAJCQkJCQlMaXN0ICp3aXRoQ2hlY2tPcHRpb25MaXN0cywgTGlzdCAqcmV0dXJuaW5n TGlzdHMsCiAJCQkJCQlMaXN0ICpyb3dNYXJrcywgT25Db25mbGljdEV4cHIgKm9uY29uZmxp Y3QsCi0JCQkJCQlMaXN0ICptZXJnZUFjdGlvbkxpc3RzLCBpbnQgZXBxUGFyYW0pCisJCQkJ CQlMaXN0ICptZXJnZUFjdGlvbkxpc3RzLCBGb3JQb3J0aW9uT2ZFeHByICpmb3JQb3J0aW9u T2YsCisJCQkJCQlpbnQgZXBxUGFyYW0pCiB7CiAJTW9kaWZ5VGFibGVQYXRoICpwYXRobm9k ZSA9IG1ha2VOb2RlKE1vZGlmeVRhYmxlUGF0aCk7CiAKQEAgLTM3ODMsNiArMzc4NCw3IEBA IGNyZWF0ZV9tb2RpZnl0YWJsZV9wYXRoKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZv ICpyZWwsCiAJcGF0aG5vZGUtPnJldHVybmluZ0xpc3RzID0gcmV0dXJuaW5nTGlzdHM7CiAJ cGF0aG5vZGUtPnJvd01hcmtzID0gcm93TWFya3M7CiAJcGF0aG5vZGUtPm9uY29uZmxpY3Qg PSBvbmNvbmZsaWN0OworCXBhdGhub2RlLT5mb3JQb3J0aW9uT2YgPSBmb3JQb3J0aW9uT2Y7 CiAJcGF0aG5vZGUtPmVwcVBhcmFtID0gZXBxUGFyYW07CiAJcGF0aG5vZGUtPm1lcmdlQWN0 aW9uTGlzdHMgPSBtZXJnZUFjdGlvbkxpc3RzOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9wYXJzZXIvYW5hbHl6ZS5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2FuYWx5emUuYwppbmRl eCBkYmRmNmJmODk2NC4uNDE4OTE5Y2VkOTAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bh cnNlci9hbmFseXplLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2FuYWx5emUuYwpAQCAt MjQsNyArMjQsMTAgQEAKIAogI2luY2x1ZGUgInBvc3RncmVzLmgiCiAKKyNpbmNsdWRlICJh Y2Nlc3MvZ2lzdC5oIgorI2luY2x1ZGUgImFjY2Vzcy9zdHJhdG51bS5oIgogI2luY2x1ZGUg ImFjY2Vzcy9zeXNhdHRyLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19hbS5oIgogI2luY2x1 ZGUgImNhdGFsb2cvcGdfcHJvYy5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgog I2luY2x1ZGUgImNvbW1hbmRzL2RlZnJlbS5oIgpAQCAtNDcsMTEgKzUwLDEzIEBACiAjaW5j bHVkZSAicGFyc2VyL3BhcnNlX3JlbGF0aW9uLmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNl X3RhcmdldC5oIgogI2luY2x1ZGUgInBhcnNlci9wYXJzZV90eXBlLmgiCisjaW5jbHVkZSAi cGFyc2VyL3BhcnNlci5oIgogI2luY2x1ZGUgInBhcnNlci9wYXJzZXRyZWUuaCIKICNpbmNs dWRlICJyZXdyaXRlL3Jld3JpdGVNYW5pcC5oIgogI2luY2x1ZGUgInV0aWxzL2JhY2tlbmRf c3RhdHVzLmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGls cy9ndWMuaCIKKyNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGls cy9yZWwuaCIKICNpbmNsdWRlICJ1dGlscy9zeXNjYWNoZS5oIgogCkBAIC02MCwxMCArNjUs MTYgQEAKIHBvc3RfcGFyc2VfYW5hbHl6ZV9ob29rX3R5cGUgcG9zdF9wYXJzZV9hbmFseXpl X2hvb2sgPSBOVUxMOwogCiBzdGF0aWMgUXVlcnkgKnRyYW5zZm9ybU9wdGlvbmFsU2VsZWN0 SW50byhQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKnBhcnNlVHJlZSk7CitzdGF0aWMgTm9k ZSAqYWRkRm9yUG9ydGlvbk9mV2hlcmVDb25kaXRpb25zKFF1ZXJ5ICpxcnksIEZvclBvcnRp b25PZkNsYXVzZSAqZm9yUG9ydGlvbk9mLAorCQkJCQkJCQkJCQlOb2RlICp3aGVyZUNsYXVz ZSk7CiBzdGF0aWMgUXVlcnkgKnRyYW5zZm9ybURlbGV0ZVN0bXQoUGFyc2VTdGF0ZSAqcHN0 YXRlLCBEZWxldGVTdG10ICpzdG10KTsKIHN0YXRpYyBRdWVyeSAqdHJhbnNmb3JtSW5zZXJ0 U3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIEluc2VydFN0bXQgKnN0bXQpOwogc3RhdGljIE9u Q29uZmxpY3RFeHByICp0cmFuc2Zvcm1PbkNvbmZsaWN0Q2xhdXNlKFBhcnNlU3RhdGUgKnBz dGF0ZSwKIAkJCQkJCQkJCQkJCSBPbkNvbmZsaWN0Q2xhdXNlICpvbkNvbmZsaWN0Q2xhdXNl KTsKK3N0YXRpYyBGb3JQb3J0aW9uT2ZFeHByICp0cmFuc2Zvcm1Gb3JQb3J0aW9uT2ZDbGF1 c2UoUGFyc2VTdGF0ZSAqcHN0YXRlLAorCQkJCQkJCQkJCQkJCSBpbnQgcnRpbmRleCwKKwkJ CQkJCQkJCQkJCQkgRm9yUG9ydGlvbk9mQ2xhdXNlICpmb3JQb3J0aW9uT2ZDbGF1c2UsCisJ CQkJCQkJCQkJCQkJIGJvb2wgaXNVcGRhdGUpOwogc3RhdGljIGludAljb3VudF9yb3dleHBy X2NvbHVtbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpleHByKTsKIHN0YXRpYyBRdWVy eSAqdHJhbnNmb3JtU2VsZWN0U3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIFNlbGVjdFN0bXQg KnN0bXQpOwogc3RhdGljIFF1ZXJ5ICp0cmFuc2Zvcm1WYWx1ZXNDbGF1c2UoUGFyc2VTdGF0 ZSAqcHN0YXRlLCBTZWxlY3RTdG10ICpzdG10KTsKQEAgLTQ3OSw2ICs0OTAsMjAgQEAgc3Rt dF9yZXF1aXJlc19wYXJzZV9hbmFseXNpcyhSYXdTdG10ICpwYXJzZVRyZWUpCiAJcmV0dXJu IHJlc3VsdDsKIH0KIAorc3RhdGljIE5vZGUgKgorYWRkRm9yUG9ydGlvbk9mV2hlcmVDb25k aXRpb25zKFF1ZXJ5ICpxcnksIEZvclBvcnRpb25PZkNsYXVzZSAqZm9yUG9ydGlvbk9mLCBO b2RlICp3aGVyZUNsYXVzZSkKK3sKKwlpZiAoZm9yUG9ydGlvbk9mKQorCXsKKwkJaWYgKHdo ZXJlQ2xhdXNlKQorCQkJcmV0dXJuIChOb2RlICopIG1ha2VCb29sRXhwcihBTkRfRVhQUiwg bGlzdF9tYWtlMihxcnktPmZvclBvcnRpb25PZi0+b3ZlcmxhcHNFeHByLCB3aGVyZUNsYXVz ZSksIC0xKTsKKwkJZWxzZQorCQkJcmV0dXJuIHFyeS0+Zm9yUG9ydGlvbk9mLT5vdmVybGFw c0V4cHI7CisJfQorCWVsc2UKKwkJcmV0dXJuIHdoZXJlQ2xhdXNlOworfQorCiAvKgogICog YW5hbHl6ZV9yZXF1aXJlc19zbmFwc2hvdAogICoJCVJldHVybnMgdHJ1ZSBpZiBhIHNuYXBz aG90IG11c3QgYmUgc2V0IGJlZm9yZSBkb2luZyBwYXJzZSBhbmFseXNpcwpAQCAtNTEyLDYg KzUzNyw3IEBAIHRyYW5zZm9ybURlbGV0ZVN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBEZWxl dGVTdG10ICpzdG10KQogewogCVF1ZXJ5CSAgICpxcnkgPSBtYWtlTm9kZShRdWVyeSk7CiAJ UGFyc2VOYW1lc3BhY2VJdGVtICpuc2l0ZW07CisJTm9kZQkgICAqd2hlcmVDbGF1c2U7CiAJ Tm9kZQkgICAqcXVhbDsKIAogCXFyeS0+Y29tbWFuZFR5cGUgPSBDTURfREVMRVRFOwpAQCAt NTUwLDcgKzU3NiwxMSBAQCB0cmFuc2Zvcm1EZWxldGVTdG10KFBhcnNlU3RhdGUgKnBzdGF0 ZSwgRGVsZXRlU3RtdCAqc3RtdCkKIAluc2l0ZW0tPnBfbGF0ZXJhbF9vbmx5ID0gZmFsc2U7 CiAJbnNpdGVtLT5wX2xhdGVyYWxfb2sgPSB0cnVlOwogCi0JcXVhbCA9IHRyYW5zZm9ybVdo ZXJlQ2xhdXNlKHBzdGF0ZSwgc3RtdC0+d2hlcmVDbGF1c2UsCisJaWYgKHN0bXQtPmZvclBv cnRpb25PZikKKwkJcXJ5LT5mb3JQb3J0aW9uT2YgPSB0cmFuc2Zvcm1Gb3JQb3J0aW9uT2ZD bGF1c2UocHN0YXRlLCBxcnktPnJlc3VsdFJlbGF0aW9uLCBzdG10LT5mb3JQb3J0aW9uT2Ys IGZhbHNlKTsKKworCXdoZXJlQ2xhdXNlID0gYWRkRm9yUG9ydGlvbk9mV2hlcmVDb25kaXRp b25zKHFyeSwgc3RtdC0+Zm9yUG9ydGlvbk9mLCBzdG10LT53aGVyZUNsYXVzZSk7CisJcXVh bCA9IHRyYW5zZm9ybVdoZXJlQ2xhdXNlKHBzdGF0ZSwgd2hlcmVDbGF1c2UsCiAJCQkJCQkJ CUVYUFJfS0lORF9XSEVSRSwgIldIRVJFIik7CiAKIAlxcnktPnJldHVybmluZ0xpc3QgPSB0 cmFuc2Zvcm1SZXR1cm5pbmdMaXN0KHBzdGF0ZSwgc3RtdC0+cmV0dXJuaW5nTGlzdCk7CkBA IC0xMTczLDcgKzEyMDMsNyBAQCB0cmFuc2Zvcm1PbkNvbmZsaWN0Q2xhdXNlKFBhcnNlU3Rh dGUgKnBzdGF0ZSwKIAkJICogTm93IHRyYW5zZm9ybSB0aGUgVVBEQVRFIHN1YmV4cHJlc3Np b25zLgogCQkgKi8KIAkJb25Db25mbGljdFNldCA9Ci0JCQl0cmFuc2Zvcm1VcGRhdGVUYXJn ZXRMaXN0KHBzdGF0ZSwgb25Db25mbGljdENsYXVzZS0+dGFyZ2V0TGlzdCk7CisJCQl0cmFu c2Zvcm1VcGRhdGVUYXJnZXRMaXN0KHBzdGF0ZSwgb25Db25mbGljdENsYXVzZS0+dGFyZ2V0 TGlzdCwgTlVMTCk7CiAKIAkJb25Db25mbGljdFdoZXJlID0gdHJhbnNmb3JtV2hlcmVDbGF1 c2UocHN0YXRlLAogCQkJCQkJCQkJCQkgICBvbkNvbmZsaWN0Q2xhdXNlLT53aGVyZUNsYXVz ZSwKQEAgLTEyMDMsNiArMTIzMywxODcgQEAgdHJhbnNmb3JtT25Db25mbGljdENsYXVzZShQ YXJzZVN0YXRlICpwc3RhdGUsCiAJcmV0dXJuIHJlc3VsdDsKIH0KIAorLyoKKyAqIHRyYW5z Zm9ybUZvclBvcnRpb25PZkNsYXVzZQorICoKKyAqCSAgVHJhbnNmb3JtcyBhIEZvclBvcnRp b25PZkNsYXVzZSBpbiBhbiBVUERBVEUvREVMRVRFIHN0YXRlbWVudC4KKyAqCisgKgkgIC0g TG9vayB1cCB0aGUgcmFuZ2UvcGVyaW9kIHJlcXVlc3RlZC4KKyAqCSAgLSBCdWlsZCBhIGNv bXBhdGlibGUgcmFuZ2UgdmFsdWUgZnJvbSB0aGUgRlJPTSBhbmQgVE8gZXhwcmVzc2lvbnMu CisgKgkgIC0gQnVpbGQgYW4gIm92ZXJsYXBzIiBleHByZXNzaW9uIGZvciBmaWx0ZXJpbmcu CisgKgkgIC0gRm9yIFVQREFURXMsIGJ1aWxkIGFuICJpbnRlcnNlY3RzIiBleHByZXNzaW9u IHRoZSByZXdyaXRlciBjYW4gYWRkCisgKgkJdG8gdGhlIHRhcmdldExpc3QgdG8gY2hhbmdl IHRoZSB0ZW1wb3JhbCBib3VuZHMuCisgKi8KK3N0YXRpYyBGb3JQb3J0aW9uT2ZFeHByICoK K3RyYW5zZm9ybUZvclBvcnRpb25PZkNsYXVzZShQYXJzZVN0YXRlICpwc3RhdGUsCisJCQkJ CQkJaW50IHJ0aW5kZXgsCisJCQkJCQkJRm9yUG9ydGlvbk9mQ2xhdXNlICpmb3JQb3J0aW9u T2YsCisJCQkJCQkJYm9vbCBpc1VwZGF0ZSkKK3sKKwlSZWxhdGlvbiB0YXJnZXRyZWwgPSBw c3RhdGUtPnBfdGFyZ2V0X3JlbGF0aW9uOworCVJURVBlcm1pc3Npb25JbmZvICp0YXJnZXRf cGVybWluZm8gPSBwc3RhdGUtPnBfdGFyZ2V0X25zaXRlbS0+cF9wZXJtaW5mbzsKKwljaGFy ICpyYW5nZV9uYW1lID0gZm9yUG9ydGlvbk9mLT5yYW5nZV9uYW1lOworCWNoYXIgKnJhbmdl X3R5cGVfbmFtZXNwYWNlID0gTlVMTDsKKwljaGFyICpyYW5nZV90eXBlX25hbWUgPSBOVUxM OworCWludCByYW5nZV9hdHRubyA9IEludmFsaWRBdHRyTnVtYmVyOworCUZvcm1fcGdfYXR0 cmlidXRlIGF0dHI7CisJT2lkCW9wY2xhc3M7CisJT2lkIG9wZmFtaWx5OworCU9pZCBvcGNp bnR5cGU7CisJT2lkIGZ1bmNpZCA9IEludmFsaWRPaWQ7CisJU3RyYXRlZ3lOdW1iZXIgc3Ry YXQ7CisJT2lkCW9waWQ7CisJRm9yUG9ydGlvbk9mRXhwciAqcmVzdWx0OworCVZhciAqcmFu Z2VWYXI7CisJTm9kZSAqdGFyZ2V0RXhwcjsKKworCS8qIFdlIGRvbid0IHN1cHBvcnQgRk9S IFBPUlRJT04gT0YgRkRXIHF1ZXJpZXMuICovCisJaWYgKHRhcmdldHJlbC0+cmRfcmVsLT5y ZWxraW5kID09IFJFTEtJTkRfRk9SRUlHTl9UQUJMRSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJ CQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJIGVycm1z ZygiZm9yZWlnbiB0YWJsZXMgZG9uJ3Qgc3VwcG9ydCBGT1IgUE9SVElPTiBPRiIpKSk7CisK KwlyZXN1bHQgPSBtYWtlTm9kZShGb3JQb3J0aW9uT2ZFeHByKTsKKworCS8qIExvb2sgdXAg dGhlIEZPUiBQT1JUSU9OIE9GIG5hbWUgcmVxdWVzdGVkLiAqLworCXJhbmdlX2F0dG5vID0g YXR0bmFtZUF0dE51bSh0YXJnZXRyZWwsIHJhbmdlX25hbWUsIGZhbHNlKTsKKwlpZiAocmFu Z2VfYXR0bm8gPT0gSW52YWxpZEF0dHJOdW1iZXIpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJ KGVycmNvZGUoRVJSQ09ERV9VTkRFRklORURfQ09MVU1OKSwKKwkJCQkgZXJybXNnKCJjb2x1 bW4gb3IgcGVyaW9kIFwiJXNcIiBvZiByZWxhdGlvbiBcIiVzXCIgZG9lcyBub3QgZXhpc3Qi LAorCQkJCQkJcmFuZ2VfbmFtZSwKKwkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHRh cmdldHJlbCkpLAorCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBmb3JQb3J0aW9u T2YtPmxvY2F0aW9uKSkpOworCWF0dHIgPSBUdXBsZURlc2NBdHRyKHRhcmdldHJlbC0+cmRf YXR0LCByYW5nZV9hdHRubyAtIDEpOworCisJcmFuZ2VWYXIgPSBtYWtlVmFyKAorCQkJcnRp bmRleCwKKwkJCXJhbmdlX2F0dG5vLAorCQkJYXR0ci0+YXR0dHlwaWQsCisJCQlhdHRyLT5h dHR0eXBtb2QsCisJCQlhdHRyLT5hdHRjb2xsYXRpb24sCisJCQkwKTsKKwlyYW5nZVZhci0+ bG9jYXRpb24gPSBmb3JQb3J0aW9uT2YtPmxvY2F0aW9uOworCXJlc3VsdC0+cmFuZ2VWYXIg PSByYW5nZVZhcjsKKwlyZXN1bHQtPnJhbmdlVHlwZSA9IGF0dHItPmF0dHR5cGlkOworCWlm ICghZ2V0X3R5cG5hbWVfYW5kX25hbWVzcGFjZShhdHRyLT5hdHR0eXBpZCwgJnJhbmdlX3R5 cGVfbmFtZSwgJnJhbmdlX3R5cGVfbmFtZXNwYWNlKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hl IGxvb2t1cCBmYWlsZWQgZm9yIHR5cGUgJXUiLCBhdHRyLT5hdHR0eXBpZCk7CisKKworCWlm IChmb3JQb3J0aW9uT2YtPnRhcmdldCkKKwkJLyoKKwkJICogV2Ugd2VyZSBhbHJlYWR5IGdp dmVuIGFuIGV4cHJlc3Npb24gZm9yIHRoZSB0YXJnZXQsCisJCSAqIHNvIHdlIGRvbid0IGhh dmUgdG8gYnVpbGQgYW55dGhpbmcuCisJCSAqLworCQl0YXJnZXRFeHByID0gZm9yUG9ydGlv bk9mLT50YXJnZXQ7CisJZWxzZQorCXsKKwkJLyogTWFrZSBzdXJlIGl0J3MgYSByYW5nZSBj b2x1bW4gKi8KKwkJaWYgKCF0eXBlX2lzX3JhbmdlKGF0dHItPmF0dHR5cGlkKSkKKwkJCWVy ZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9DT0xVTU5fUkVG RVJFTkNFKSwKKwkJCQkJIGVycm1zZygiY29sdW1uIFwiJXNcIiBvZiByZWxhdGlvbiBcIiVz XCIgaXMgbm90IGEgcmFuZ2UgdHlwZSIsCisJCQkJCQkJcmFuZ2VfbmFtZSwKKwkJCQkJCQlS ZWxhdGlvbkdldFJlbGF0aW9uTmFtZSh0YXJnZXRyZWwpKSwKKwkJCQkJIHBhcnNlcl9lcnJw b3NpdGlvbihwc3RhdGUsIGZvclBvcnRpb25PZi0+bG9jYXRpb24pKSk7CisKKwkJLyoKKwkJ ICogQnVpbGQgYSByYW5nZSBmcm9tIHRoZSBGUk9NIC4uLiBUTyAuLi4uIGJvdW5kcy4KKwkJ ICogVGhpcyBzaG91bGQgZ2l2ZSBhIGNvbnN0YW50IHJlc3VsdCwgc28gd2UgYWNjZXB0IGZ1 bmN0aW9ucyBsaWtlIE5PVygpCisJCSAqIGJ1dCBub3QgY29sdW1uIHJlZmVyZW5jZXMsIHN1 YnF1ZXJpZXMsIGV0Yy4KKwkJICoKKwkJICogSXQgYWxzbyBwZXJtaXRzIFVOQk9VTkRFRCBp biBlaXRoZXIgcGxhY2UuCisJCSAqLworCQl0YXJnZXRFeHByID0gKE5vZGUgKikgbWFrZUZ1 bmNDYWxsKAorCQkJCWxpc3RfbWFrZTIobWFrZVN0cmluZyhyYW5nZV90eXBlX25hbWVzcGFj ZSksIG1ha2VTdHJpbmcocmFuZ2VfdHlwZV9uYW1lKSksCisJCQkJbGlzdF9tYWtlMihmb3JQ b3J0aW9uT2YtPnRhcmdldF9zdGFydCwgZm9yUG9ydGlvbk9mLT50YXJnZXRfZW5kKSwKKwkJ CQlDT0VSQ0VfRVhQTElDSVRfQ0FMTCwKKwkJCQlmb3JQb3J0aW9uT2YtPmxvY2F0aW9uKTsK Kwl9CisJcmVzdWx0LT50YXJnZXRSYW5nZSA9IHRyYW5zZm9ybUV4cHIocHN0YXRlLCB0YXJn ZXRFeHByLCBFWFBSX0tJTkRfVVBEQVRFX1BPUlRJT04pOworCisJLyoKKwkgKiBCdWlsZCBv dmVybGFwc0V4cHIgdG8gdXNlIGluIHRoZSB3aGVyZUNsYXVzZS4KKwkgKiBUaGlzIG1lYW5z IHdlIG9ubHkgaGl0IHJvd3MgbWF0Y2hpbmcgdGhlIEZST00gJiBUTyBib3VuZHMuCisJICog V2UgbXVzdCBsb29rIHVwIHRoZSBvdmVybGFwcyBvcGVyYXRvciAodXN1YWxseSAiJiYiKS4K KwkgKi8KKwlvcGNsYXNzID0gR2V0RGVmYXVsdE9wQ2xhc3MoYXR0ci0+YXR0dHlwaWQsIEdJ U1RfQU1fT0lEKTsKKwlzdHJhdCA9IFJUT3ZlcmxhcFN0cmF0ZWd5TnVtYmVyOworCUdldE9w ZXJhdG9yRnJvbVdlbGxLbm93blN0cmF0ZWd5KG9wY2xhc3MsIEludmFsaWRPaWQsICZvcGlk LCAmc3RyYXQpOworCXJlc3VsdC0+b3ZlcmxhcHNFeHByID0gKE5vZGUgKikgbWFrZVNpbXBs ZUFfRXhwcihBRVhQUl9PUCwgZ2V0X29wbmFtZShvcGlkKSwKKwkJCShOb2RlICopIGNvcHlP YmplY3QocmFuZ2VWYXIpLCB0YXJnZXRFeHByLAorCQkJZm9yUG9ydGlvbk9mLT5sb2NhdGlv bik7CisKKwkvKgorCSAqIExvb2sgdXAgdGhlIHdpdGhvdXRQb3J0aW9uT3BlciBzbyB3ZSBj YW4gY29tcHV0ZSB0aGUgbGVmdG92ZXJzLgorCSAqIExlZnRvdmVycyB3aWxsIGJlIG9sZF9y YW5nZSBALSB0YXJnZXRfcmFuZ2UKKwkgKiAob25lIHBlciBlbGVtZW50IG9mIHRoZSByZXN1 bHQpLgorCSAqLworCWZ1bmNpZCA9IEludmFsaWRPaWQ7CisJaWYgKGdldF9vcGNsYXNzX29w ZmFtaWx5X2FuZF9pbnB1dF90eXBlKG9wY2xhc3MsICZvcGZhbWlseSwgJm9wY2ludHlwZSkp CisJCWZ1bmNpZCA9IGdldF9vcGZhbWlseV9wcm9jKG9wZmFtaWx5LCBvcGNpbnR5cGUsIG9w Y2ludHlwZSwgR0lTVF9XSVRIT1VUX1BPUlRJT05fUFJPQyk7CisKKwlpZiAoIU9pZElzVmFs aWQoZnVuY2lkKSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVfVU5E RUZJTkVEX09CSkVDVCksCisJCQkJZXJybXNnKCJjb3VsZCBub3QgaWRlbnRpZnkgYSB3aXRo b3V0X292ZXJsYXBzIHN1cHBvcnQgZnVuY3Rpb24gZm9yIHR5cGUgJXMiLCBmb3JtYXRfdHlw ZV9iZShvcGNpbnR5cGUpKSwKKwkJCQllcnJoaW50KCJEZWZpbmUgYSB3aXRob3V0X292ZXJs YXBzIHN1cHBvcnQgZnVuY3Rpb24gZm9yIG9wZXJhdG9yIGNsYXNzIFwiJWRcIiBmb3IgYWNj ZXNzIG1ldGhvZCBcIiVzXCIuIiwKKwkJCQkJIG9wY2xhc3MsICJnaXN0IikpOworCisJcmVz dWx0LT53aXRob3V0UG9ydGlvblByb2MgPSBmdW5jaWQ7CisKKwlpZiAoaXNVcGRhdGUpCisJ eworCQkvKgorCQkgKiBOb3cgbWFrZSBzdXJlIHdlIHVwZGF0ZSB0aGUgc3RhcnQvZW5kIHRp bWUgb2YgdGhlIHJlY29yZC4KKwkJICogRm9yIGEgcmFuZ2UgY29sIChyKSB0aGlzIGlzIGBy ID0gciAqIHRhcmdldFJhbmdlYC4KKwkJICovCisJCU9pZCBmdW5jbmFtZXNwYWNlOworCQlj aGFyICpmdW5jbmFtZTsKKwkJY2hhciAqZnVuY25hbWVzcGFjZW5hbWU7CisJCUV4cHIgKnJh bmdlVExFRXhwcjsKKwkJVGFyZ2V0RW50cnkgKnRsZTsKKworCQlmdW5jaWQgPSBnZXRfb3Bm YW1pbHlfcHJvYyhvcGZhbWlseSwgb3BjaW50eXBlLCBvcGNpbnR5cGUsIEdJU1RfSU5URVJT RUNUX1BST0MpOworCQlpZiAoIU9pZElzVmFsaWQoZnVuY2lkKSkKKwkJCWVyZXBvcnQoRVJS T1IsCisJCQkJCWVycmNvZGUoRVJSQ09ERV9VTkRFRklORURfT0JKRUNUKSwKKwkJCQkJZXJy bXNnKCJjb3VsZCBub3QgaWRlbnRpZnkgYW4gaW50ZXJzZWN0IHN1cHBvcnQgZnVuY3Rpb24g Zm9yIHR5cGUgJXMiLCBmb3JtYXRfdHlwZV9iZShvcGNpbnR5cGUpKSwKKwkJCQkJZXJyaGlu dCgiRGVmaW5lIGFuIGludGVyc2VjdCBzdXBwb3J0IGZ1bmN0aW9uIGZvciBvcGVyYXRvciBj bGFzcyBcIiVkXCIgZm9yIGFjY2VzcyBtZXRob2QgXCIlc1wiLiIsCisJCQkJCQkgb3BjbGFz cywgImdpc3QiKSk7CisKKwkJLy8gVE9ETzogZG8gd2UgcmVhbGx5IG5lZWQgdG8gZ28gdGhy b3VnaCB0aGUgbmFtZSBoZXJlPworCQlmdW5jbmFtZSA9IGdldF9mdW5jX25hbWUoZnVuY2lk KTsKKwkJaWYgKCFmdW5jbmFtZSkKKwkJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFp bGVkIGZvciBmdW5jdGlvbiAldSIsIGZ1bmNpZCk7CisJCWZ1bmNuYW1lc3BhY2UgPSBnZXRf ZnVuY19uYW1lc3BhY2UoZnVuY2lkLCBmYWxzZSk7CisJCWZ1bmNuYW1lc3BhY2VuYW1lID0g Z2V0X25hbWVzcGFjZV9uYW1lKGZ1bmNuYW1lc3BhY2UpOworCQlpZiAoIWZ1bmNuYW1lc3Bh Y2VuYW1lKQorCQkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIG5hbWVz cGFjZSAldSIsIGZ1bmNuYW1lc3BhY2UpOworCisJCXJhbmdlVExFRXhwciA9IChFeHByICop IG1ha2VGdW5jQ2FsbCgKKwkJCQlsaXN0X21ha2UyKG1ha2VTdHJpbmcoZnVuY25hbWVzcGFj ZW5hbWUpLCBtYWtlU3RyaW5nKGZ1bmNuYW1lKSksCisJCQkJbGlzdF9tYWtlMihjb3B5T2Jq ZWN0KHJhbmdlVmFyKSwgdGFyZ2V0RXhwciksCisJCQkJQ09FUkNFX0VYUExJQ0lUX0NBTEws CisJCQkJZm9yUG9ydGlvbk9mLT5sb2NhdGlvbik7CisJCXJhbmdlVExFRXhwciA9IChFeHBy ICopIHRyYW5zZm9ybUV4cHIocHN0YXRlLCAoTm9kZSAqKSByYW5nZVRMRUV4cHIsIEVYUFJf S0lORF9VUERBVEVfUE9SVElPTik7CisKKwkJLyogTWFrZSBhIFRMRSB0byBzZXQgdGhlIHJh bmdlIGNvbHVtbiAqLworCQlyZXN1bHQtPnJhbmdlVGFyZ2V0TGlzdCA9IE5JTDsKKwkJdGxl ID0gbWFrZVRhcmdldEVudHJ5KHJhbmdlVExFRXhwciwgcmFuZ2VfYXR0bm8sIHJhbmdlX25h bWUsIGZhbHNlKTsKKwkJcmVzdWx0LT5yYW5nZVRhcmdldExpc3QgPSBsYXBwZW5kKHJlc3Vs dC0+cmFuZ2VUYXJnZXRMaXN0LCB0bGUpOworCisJCS8qIE1hcmsgdGhlIHJhbmdlIGNvbHVt biBhcyByZXF1aXJpbmcgdXBkYXRlIHBlcm1pc3Npb25zICovCisJCXRhcmdldF9wZXJtaW5m by0+dXBkYXRlZENvbHMgPSBibXNfYWRkX21lbWJlcih0YXJnZXRfcGVybWluZm8tPnVwZGF0 ZWRDb2xzLAorCQkJCQkJCQkJCQkJCSAgcmFuZ2VfYXR0bm8gLSBGaXJzdExvd0ludmFsaWRI ZWFwQXR0cmlidXRlTnVtYmVyKTsKKwl9CisJZWxzZQorCQlyZXN1bHQtPnJhbmdlVGFyZ2V0 TGlzdCA9IE5JTDsKKworCXJlc3VsdC0+cmFuZ2VfbmFtZSA9IHJhbmdlX25hbWU7CisKKwly ZXR1cm4gcmVzdWx0OworfQogCiAvKgogICogQnVpbGRPbkNvbmZsaWN0RXhjbHVkZWRUYXJn ZXRsaXN0CkBAIC0yNDA5LDYgKzI2MjAsNyBAQCB0cmFuc2Zvcm1VcGRhdGVTdG10KFBhcnNl U3RhdGUgKnBzdGF0ZSwgVXBkYXRlU3RtdCAqc3RtdCkKIHsKIAlRdWVyeQkgICAqcXJ5ID0g bWFrZU5vZGUoUXVlcnkpOwogCVBhcnNlTmFtZXNwYWNlSXRlbSAqbnNpdGVtOworCU5vZGUJ ICAgKndoZXJlQ2xhdXNlOwogCU5vZGUJICAgKnF1YWw7CiAKIAlxcnktPmNvbW1hbmRUeXBl ID0gQ01EX1VQREFURTsKQEAgLTI0MjYsNiArMjYzOCwxMCBAQCB0cmFuc2Zvcm1VcGRhdGVT dG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwgVXBkYXRlU3RtdCAqc3RtdCkKIAkJCQkJCQkJCQkg c3RtdC0+cmVsYXRpb24tPmluaCwKIAkJCQkJCQkJCQkgdHJ1ZSwKIAkJCQkJCQkJCQkgQUNM X1VQREFURSk7CisKKwlpZiAoc3RtdC0+Zm9yUG9ydGlvbk9mKQorCQlxcnktPmZvclBvcnRp b25PZiA9IHRyYW5zZm9ybUZvclBvcnRpb25PZkNsYXVzZShwc3RhdGUsIHFyeS0+cmVzdWx0 UmVsYXRpb24sIHN0bXQtPmZvclBvcnRpb25PZiwgdHJ1ZSk7CisKIAluc2l0ZW0gPSBwc3Rh dGUtPnBfdGFyZ2V0X25zaXRlbTsKIAogCS8qIHN1YnF1ZXJpZXMgaW4gRlJPTSBjYW5ub3Qg YWNjZXNzIHRoZSByZXN1bHQgcmVsYXRpb24gKi8KQEAgLTI0NDIsNyArMjY1OCw4IEBAIHRy YW5zZm9ybVVwZGF0ZVN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBVcGRhdGVTdG10ICpzdG10 KQogCW5zaXRlbS0+cF9sYXRlcmFsX29ubHkgPSBmYWxzZTsKIAluc2l0ZW0tPnBfbGF0ZXJh bF9vayA9IHRydWU7CiAKLQlxdWFsID0gdHJhbnNmb3JtV2hlcmVDbGF1c2UocHN0YXRlLCBz dG10LT53aGVyZUNsYXVzZSwKKwl3aGVyZUNsYXVzZSA9IGFkZEZvclBvcnRpb25PZldoZXJl Q29uZGl0aW9ucyhxcnksIHN0bXQtPmZvclBvcnRpb25PZiwgc3RtdC0+d2hlcmVDbGF1c2Up OworCXF1YWwgPSB0cmFuc2Zvcm1XaGVyZUNsYXVzZShwc3RhdGUsIHdoZXJlQ2xhdXNlLAog CQkJCQkJCQlFWFBSX0tJTkRfV0hFUkUsICJXSEVSRSIpOwogCiAJcXJ5LT5yZXR1cm5pbmdM aXN0ID0gdHJhbnNmb3JtUmV0dXJuaW5nTGlzdChwc3RhdGUsIHN0bXQtPnJldHVybmluZ0xp c3QpOwpAQCAtMjQ1MSw3ICsyNjY4LDcgQEAgdHJhbnNmb3JtVXBkYXRlU3RtdChQYXJzZVN0 YXRlICpwc3RhdGUsIFVwZGF0ZVN0bXQgKnN0bXQpCiAJICogTm93IHdlIGFyZSBkb25lIHdp dGggU0VMRUNULWxpa2UgcHJvY2Vzc2luZywgYW5kIGNhbiBnZXQgb24gd2l0aAogCSAqIHRy YW5zZm9ybWluZyB0aGUgdGFyZ2V0IGxpc3QgdG8gbWF0Y2ggdGhlIFVQREFURSB0YXJnZXQg Y29sdW1ucy4KIAkgKi8KLQlxcnktPnRhcmdldExpc3QgPSB0cmFuc2Zvcm1VcGRhdGVUYXJn ZXRMaXN0KHBzdGF0ZSwgc3RtdC0+dGFyZ2V0TGlzdCk7CisJcXJ5LT50YXJnZXRMaXN0ID0g dHJhbnNmb3JtVXBkYXRlVGFyZ2V0TGlzdChwc3RhdGUsIHN0bXQtPnRhcmdldExpc3QsIHFy eS0+Zm9yUG9ydGlvbk9mKTsKIAogCXFyeS0+cnRhYmxlID0gcHN0YXRlLT5wX3J0YWJsZTsK IAlxcnktPnJ0ZXBlcm1pbmZvcyA9IHBzdGF0ZS0+cF9ydGVwZXJtaW5mb3M7CkBAIC0yNDcw LDcgKzI2ODcsNyBAQCB0cmFuc2Zvcm1VcGRhdGVTdG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwg VXBkYXRlU3RtdCAqc3RtdCkKICAqCWhhbmRsZSBTRVQgY2xhdXNlIGluIFVQREFURS9NRVJH RS9JTlNFUlQgLi4uIE9OIENPTkZMSUNUIFVQREFURQogICovCiBMaXN0ICoKLXRyYW5zZm9y bVVwZGF0ZVRhcmdldExpc3QoUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpvcmlnVGxpc3Qp Cit0cmFuc2Zvcm1VcGRhdGVUYXJnZXRMaXN0KFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAq b3JpZ1RsaXN0LCBGb3JQb3J0aW9uT2ZFeHByICpmb3JQb3J0aW9uT2YpCiB7CiAJTGlzdAkg ICAqdGxpc3QgPSBOSUw7CiAJUlRFUGVybWlzc2lvbkluZm8gKnRhcmdldF9wZXJtaW5mbzsK QEAgLTI1MjMsNiArMjc0MCwyMSBAQCB0cmFuc2Zvcm1VcGRhdGVUYXJnZXRMaXN0KFBhcnNl U3RhdGUgKnBzdGF0ZSwgTGlzdCAqb3JpZ1RsaXN0KQogCQkJCQkgZXJyaGludCgiU0VUIHRh cmdldCBjb2x1bW5zIGNhbm5vdCBiZSBxdWFsaWZpZWQgd2l0aCB0aGUgcmVsYXRpb24gbmFt ZS4iKSA6IDAsCiAJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBvcmlnVGFyZ2V0 LT5sb2NhdGlvbikpKTsKIAorCQkvKgorCQkgKiBJZiB0aGlzIGlzIGEgRk9SIFBPUlRJT04g T0YgdXBkYXRlLAorCQkgKiBmb3JiaWQgZGlyZWN0bHkgc2V0dGluZyB0aGUgcmFuZ2UgY29s dW1uLAorCQkgKiBzaW5jZSB0aGF0IHdvdWxkIGNvbmZsaWN0IHdpdGggdGhlIGltcGxpY2l0 IHVwZGF0ZXMuCisJCSAqLworCQlpZiAoZm9yUG9ydGlvbk9mICE9IE5VTEwpCisJCXsKKwkJ CWlmIChhdHRybm8gPT0gZm9yUG9ydGlvbk9mLT5yYW5nZVZhci0+dmFyYXR0bm8pCisJCQkJ ZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwK KwkJCQkJCSBlcnJtc2coImNhbid0IGRpcmVjdGx5IGFzc2lnbiB0byBcIiVzXCIgaW4gYSBG T1IgUE9SVElPTiBPRiB1cGRhdGUiLAorCQkJCQkJCQlvcmlnVGFyZ2V0LT5uYW1lKSwKKwkJ CQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBvcmlnVGFyZ2V0LT5sb2NhdGlvbikp KTsKKwkJfQorCiAJCXVwZGF0ZVRhcmdldExpc3RFbnRyeShwc3RhdGUsIHRsZSwgb3JpZ1Rh cmdldC0+bmFtZSwKIAkJCQkJCQkgIGF0dHJubywKIAkJCQkJCQkgIG9yaWdUYXJnZXQtPmlu ZGlyZWN0aW9uLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSBiL3Ny Yy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKaW5kZXggYTkzNjY3MzNmMjAuLmNhNzVlZWM3Yjc1 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CisrKyBiL3NyYy9iYWNr ZW5kL3BhcnNlci9ncmFtLnkKQEAgLTI1OCw2ICsyNTgsNyBAQCBzdGF0aWMgTm9kZSAqbWFr ZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9k ZSAqcXVlcnkpOwogCVJhbmdlVmFyICAgKnJhbmdlOwogCUludG9DbGF1c2UgKmludG87CiAJ V2l0aENsYXVzZSAqd2l0aDsKKwlGb3JQb3J0aW9uT2ZDbGF1c2UgKmZvcnBvcnRpb25vZjsK IAlJbmZlckNsYXVzZQkqaW5mZXI7CiAJT25Db25mbGljdENsYXVzZSAqb25jb25mbGljdDsK IAlBX0luZGljZXMgICphaW5kOwpAQCAtNTUxLDYgKzU1Miw3IEBAIHN0YXRpYyBOb2RlICpt YWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBO b2RlICpxdWVyeSk7CiAldHlwZSA8cmFuZ2U+CXJlbGF0aW9uX2V4cHIKICV0eXBlIDxyYW5n ZT4JZXh0ZW5kZWRfcmVsYXRpb25fZXhwcgogJXR5cGUgPHJhbmdlPglyZWxhdGlvbl9leHBy X29wdF9hbGlhcworJXR5cGUgPGZvcnBvcnRpb25vZj4gZm9yX3BvcnRpb25fb2ZfY2xhdXNl CiAldHlwZSA8bm9kZT4JdGFibGVzYW1wbGVfY2xhdXNlIG9wdF9yZXBlYXRhYmxlX2NsYXVz ZQogJXR5cGUgPHRhcmdldD4JdGFyZ2V0X2VsIHNldF90YXJnZXQgaW5zZXJ0X2NvbHVtbl9p dGVtCiAKQEAgLTc0Nyw3ICs3NDksNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZp ZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwog CiAJUEFSQUxMRUwgUEFSQU1FVEVSIFBBUlNFUiBQQVJUSUFMIFBBUlRJVElPTiBQQVNTSU5H IFBBU1NXT1JECiAJUEVSSU9EIFBMQUNJTkcgUExBTlMgUE9MSUNZCi0JUE9TSVRJT04gUFJF Q0VESU5HIFBSRUNJU0lPTiBQUkVTRVJWRSBQUkVQQVJFIFBSRVBBUkVEIFBSSU1BUlkKKwlQ T1JUSU9OIFBPU0lUSU9OIFBSRUNFRElORyBQUkVDSVNJT04gUFJFU0VSVkUgUFJFUEFSRSBQ UkVQQVJFRCBQUklNQVJZCiAJUFJJT1IgUFJJVklMRUdFUyBQUk9DRURVUkFMIFBST0NFRFVS RSBQUk9DRURVUkVTIFBST0dSQU0gUFVCTElDQVRJT04KIAogCVFVT1RFCkBAIC04NjUsNiAr ODY3LDE3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpy ZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAgKiBqc29uX3ByZWRpY2F0 ZV90eXBlX2NvbnN0cmFpbnQgYW5kIGpzb25fa2V5X3VuaXF1ZW5lc3NfY29uc3RyYWludF9v cHQKICAqIHByb2R1Y3Rpb25zIChzZWUgY29tbWVudHMgdGhlcmUpLgogICovCisvKgorICog V2UgbmVlZCB0byBoYW5kbGUgdGhpcyBzaGlmdC9yZWR1Y2UgY29uZmxpY3Q6CisgKiBGT1Ig UE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NIElOVEVSVkFMIFlFQVIgVE8gTU9OVEggVE8gZm9v LgorICogVGhpcyBpcyBiYXNpY2FsbHkgdGhlIGNsYXNzaWMgImRhbmdsaW5nIGVsc2UiIHBy b2JsZW0sIGFuZCB3ZSB3YW50IGEKKyAqIHNpbWlsYXIgcmVzb2x1dGlvbjogdHJlYXQgdGhl IFRPIGFzIHBhcnQgb2YgdGhlIElOVEVSVkFMLCBub3QgYXMgcGFydCBvZgorICogdGhlIEZS T00gLi4uIFRPIC4uLi4gVXNlcnMgY2FuIGFkZCBwYXJlbnRoZXNlcyBpZiB0aGF0J3MgYSBw cm9ibGVtLgorICogVE8ganVzdCBuZWVkcyB0byBiZSBoaWdoZXIgcHJlY2VkZW5jZSB0aGFu IFlFQVJfUCBldGMuCisgKiBUT0RPOiBJIG5lZWQgdG8gZmlndXJlIG91dCBhICVwcmVjIHNv bHV0aW9uIGJlZm9yZSB0aGlzIGdldHMgY29tbWl0dGVkIQorICovCislbm9uYXNzb2MgWUVB Ul9QIE1PTlRIX1AgREFZX1AgSE9VUl9QIE1JTlVURV9QCislbm9uYXNzb2MgVE8KICVub25h c3NvYwlVTkJPVU5ERUQJCS8qIGlkZWFsbHkgd291bGQgaGF2ZSBzYW1lIHByZWNlZGVuY2Ug YXMgSURFTlQgKi8KICVub25hc3NvYwlJREVOVCBQQVJUSVRJT04gUkFOR0UgUk9XUyBHUk9V UFMgUFJFQ0VESU5HIEZPTExPV0lORyBDVUJFIFJPTExVUAogCQkJU0VUIEtFWVMgT0JKRUNU X1AgU0NBTEFSIFZBTFVFX1AgV0lUSCBXSVRIT1VUCkBAIC0xMjIzOSwxNCArMTIyNTIsMTYg QEAgcmV0dXJuaW5nX2NsYXVzZToKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogRGVs ZXRlU3RtdDogb3B0X3dpdGhfY2xhdXNlIERFTEVURV9QIEZST00gcmVsYXRpb25fZXhwcl9v cHRfYWxpYXMKKwkJCWZvcl9wb3J0aW9uX29mX2NsYXVzZQogCQkJdXNpbmdfY2xhdXNlIHdo ZXJlX29yX2N1cnJlbnRfY2xhdXNlIHJldHVybmluZ19jbGF1c2UKIAkJCQl7CiAJCQkJCURl bGV0ZVN0bXQgKm4gPSBtYWtlTm9kZShEZWxldGVTdG10KTsKIAogCQkJCQluLT5yZWxhdGlv biA9ICQ0OwotCQkJCQluLT51c2luZ0NsYXVzZSA9ICQ1OwotCQkJCQluLT53aGVyZUNsYXVz ZSA9ICQ2OwotCQkJCQluLT5yZXR1cm5pbmdMaXN0ID0gJDc7CisJCQkJCW4tPmZvclBvcnRp b25PZiA9ICQ1OworCQkJCQluLT51c2luZ0NsYXVzZSA9ICQ2OworCQkJCQluLT53aGVyZUNs YXVzZSA9ICQ3OworCQkJCQluLT5yZXR1cm5pbmdMaXN0ID0gJDg7CiAJCQkJCW4tPndpdGhD bGF1c2UgPSAkMTsKIAkJCQkJJCQgPSAoTm9kZSAqKSBuOwogCQkJCX0KQEAgLTEyMzA5LDYg KzEyMzI0LDcgQEAgb3B0X25vd2FpdF9vcl9za2lwOgogICoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqLwogCiBVcGRhdGVTdG10OiBvcHRfd2l0aF9jbGF1c2UgVVBEQVRFIHJlbGF0aW9uX2V4 cHJfb3B0X2FsaWFzCisJCQlmb3JfcG9ydGlvbl9vZl9jbGF1c2UKIAkJCVNFVCBzZXRfY2xh dXNlX2xpc3QKIAkJCWZyb21fY2xhdXNlCiAJCQl3aGVyZV9vcl9jdXJyZW50X2NsYXVzZQpA QCAtMTIzMTcsMTAgKzEyMzMzLDExIEBAIFVwZGF0ZVN0bXQ6IG9wdF93aXRoX2NsYXVzZSBV UERBVEUgcmVsYXRpb25fZXhwcl9vcHRfYWxpYXMKIAkJCQkJVXBkYXRlU3RtdCAqbiA9IG1h a2VOb2RlKFVwZGF0ZVN0bXQpOwogCiAJCQkJCW4tPnJlbGF0aW9uID0gJDM7Ci0JCQkJCW4t PnRhcmdldExpc3QgPSAkNTsKLQkJCQkJbi0+ZnJvbUNsYXVzZSA9ICQ2OwotCQkJCQluLT53 aGVyZUNsYXVzZSA9ICQ3OwotCQkJCQluLT5yZXR1cm5pbmdMaXN0ID0gJDg7CisJCQkJCW4t PmZvclBvcnRpb25PZiA9ICQ0OworCQkJCQluLT50YXJnZXRMaXN0ID0gJDY7CisJCQkJCW4t PmZyb21DbGF1c2UgPSAkNzsKKwkJCQkJbi0+d2hlcmVDbGF1c2UgPSAkODsKKwkJCQkJbi0+ cmV0dXJuaW5nTGlzdCA9ICQ5OwogCQkJCQluLT53aXRoQ2xhdXNlID0gJDE7CiAJCQkJCSQk ID0gKE5vZGUgKikgbjsKIAkJCQl9CkBAIC0xMzc1Niw2ICsxMzc3MywyNyBAQCByZWxhdGlv bl9leHByX29wdF9hbGlhczogcmVsYXRpb25fZXhwcgkJCQkJJXByZWMgVU1JTlVTCiAJCQkJ fQogCQk7CiAKK2Zvcl9wb3J0aW9uX29mX2NsYXVzZToKKwkJCUZPUiBQT1JUSU9OIE9GIENv bElkICcoJyBhX2V4cHIgJyknCisJCQkJeworCQkJCQlGb3JQb3J0aW9uT2ZDbGF1c2UgKm4g PSBtYWtlTm9kZShGb3JQb3J0aW9uT2ZDbGF1c2UpOworCQkJCQluLT5yYW5nZV9uYW1lID0g JDQ7CisJCQkJCW4tPmxvY2F0aW9uID0gQDQ7CisJCQkJCW4tPnRhcmdldCA9ICQ2OworCQkJ CQkkJCA9IG47CisJCQkJfQorCQkJfCBGT1IgUE9SVElPTiBPRiBDb2xJZCBGUk9NIGFfZXhw ciBUTyBhX2V4cHIKKwkJCQl7CisJCQkJCUZvclBvcnRpb25PZkNsYXVzZSAqbiA9IG1ha2VO b2RlKEZvclBvcnRpb25PZkNsYXVzZSk7CisJCQkJCW4tPnJhbmdlX25hbWUgPSAkNDsKKwkJ CQkJbi0+bG9jYXRpb24gPSBANDsKKwkJCQkJbi0+dGFyZ2V0X3N0YXJ0ID0gJDY7CisJCQkJ CW4tPnRhcmdldF9lbmQgPSAkODsKKwkJCQkJJCQgPSBuOworCQkJCX0KKwkJCXwgLypFTVBU WSovCQkJCQl7ICQkID0gTlVMTDsgfQorCQk7CisKIC8qCiAgKiBUQUJMRVNBTVBMRSBkZWNv cmF0aW9uIGluIGEgRlJPTSBpdGVtCiAgKi8KQEAgLTE3MzQ5LDYgKzE3Mzg3LDcgQEAgdW5y ZXNlcnZlZF9rZXl3b3JkOgogCQkJfCBQQVNTV09SRAogCQkJfCBQTEFOUwogCQkJfCBQT0xJ Q1kKKwkJCXwgUE9SVElPTgogCQkJfCBQUkVDRURJTkcKIAkJCXwgUFJFUEFSRQogCQkJfCBQ UkVQQVJFRApAQCAtMTc5NTMsNiArMTc5OTIsNyBAQCBiYXJlX2xhYmVsX2tleXdvcmQ6CiAJ CQl8IFBMQUNJTkcKIAkJCXwgUExBTlMKIAkJCXwgUE9MSUNZCisJCQl8IFBPUlRJT04KIAkJ CXwgUE9TSVRJT04KIAkJCXwgUFJFQ0VESU5HCiAJCQl8IFBSRVBBUkUKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9hZ2cuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9w YXJzZV9hZ2cuYwppbmRleCA5ZDE1MWE4ODBiOC4uMjU5MWZmYTM0ZjcgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9hZ2cuYworKysgYi9zcmMvYmFja2VuZC9wYXJz ZXIvcGFyc2VfYWdnLmMKQEAgLTU3NSw2ICs1NzUsMTMgQEAgY2hlY2tfYWdnbGV2ZWxzX2Fu ZF9jb25zdHJhaW50cyhQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKmV4cHIpCiAJCWNhc2Ug RVhQUl9LSU5EX0NZQ0xFX01BUks6CiAJCQllcnJraW5kID0gdHJ1ZTsKIAkJCWJyZWFrOwor CQljYXNlIEVYUFJfS0lORF9VUERBVEVfUE9SVElPTjoKKwkJCWlmIChpc0FnZykKKwkJCQll cnIgPSBfKCJhZ2dyZWdhdGUgZnVuY3Rpb25zIGFyZSBub3QgYWxsb3dlZCBpbiBGT1IgUE9S VElPTiBPRiBleHByZXNzaW9ucyIpOworCQkJZWxzZQorCQkJCWVyciA9IF8oImdyb3VwaW5n IG9wZXJhdGlvbnMgYXJlIG5vdCBhbGxvd2VkIGluIEZPUiBQT1JUSU9OIE9GIGV4cHJlc3Np b25zIik7CisKKwkJCWJyZWFrOwogCiAJCQkvKgogCQkJICogVGhlcmUgaXMgaW50ZW50aW9u YWxseSBubyBkZWZhdWx0OiBjYXNlIGhlcmUsIHNvIHRoYXQgdGhlCkBAIC05NjUsNiArOTcy LDkgQEAgdHJhbnNmb3JtV2luZG93RnVuY0NhbGwoUGFyc2VTdGF0ZSAqcHN0YXRlLCBXaW5k b3dGdW5jICp3ZnVuYywKIAkJY2FzZSBFWFBSX0tJTkRfQ1lDTEVfTUFSSzoKIAkJCWVycmtp bmQgPSB0cnVlOwogCQkJYnJlYWs7CisJCWNhc2UgRVhQUl9LSU5EX1VQREFURV9QT1JUSU9O OgorCQkJZXJyID0gXygid2luZG93IGZ1bmN0aW9ucyBhcmUgbm90IGFsbG93ZWQgaW4gRk9S IFBPUlRJT04gT0YgZXhwcmVzc2lvbnMiKTsKKwkJCWJyZWFrOwogCiAJCQkvKgogCQkJICog VGhlcmUgaXMgaW50ZW50aW9uYWxseSBubyBkZWZhdWx0OiBjYXNlIGhlcmUsIHNvIHRoYXQg dGhlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfY29sbGF0ZS5jIGIv c3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2NvbGxhdGUuYwppbmRleCA0NDUyOWJiNDllNi4u MTRmZmI3YmE2NDkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9jb2xs YXRlLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2NvbGxhdGUuYwpAQCAtNDg0 LDYgKzQ4NCw3IEBAIGFzc2lnbl9jb2xsYXRpb25zX3dhbGtlcihOb2RlICpub2RlLCBhc3Np Z25fY29sbGF0aW9uc19jb250ZXh0ICpjb250ZXh0KQogCQljYXNlIFRfSm9pbkV4cHI6CiAJ CWNhc2UgVF9Gcm9tRXhwcjoKIAkJY2FzZSBUX09uQ29uZmxpY3RFeHByOgorCQljYXNlIFRf Rm9yUG9ydGlvbk9mRXhwcjoKIAkJY2FzZSBUX1NvcnRHcm91cENsYXVzZToKIAkJY2FzZSBU X01lcmdlQWN0aW9uOgogCQkJKHZvaWQpIGV4cHJlc3Npb25fdHJlZV93YWxrZXIobm9kZSwK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMgYi9zcmMvYmFj a2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jCmluZGV4IDkzMDBjN2I5YWJjLi5mM2M0OWRlODA5 OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYworKysgYi9z cmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jCkBAIC01NjYsNiArNTY2LDkgQEAgdHJh bnNmb3JtQ29sdW1uUmVmKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ29sdW1uUmVmICpjcmVmKQog CQljYXNlIEVYUFJfS0lORF9QQVJUSVRJT05fQk9VTkQ6CiAJCQllcnIgPSBfKCJjYW5ub3Qg dXNlIGNvbHVtbiByZWZlcmVuY2UgaW4gcGFydGl0aW9uIGJvdW5kIGV4cHJlc3Npb24iKTsK IAkJCWJyZWFrOworCQljYXNlIEVYUFJfS0lORF9VUERBVEVfUE9SVElPTjoKKwkJCWVyciA9 IF8oImNhbm5vdCB1c2UgY29sdW1uIHJlZmVyZW5jZSBpbiBGT1IgUE9SVElPTiBPRiBleHBy ZXNzaW9uIik7CisJCQlicmVhazsKIAogCQkJLyoKIAkJCSAqIFRoZXJlIGlzIGludGVudGlv bmFsbHkgbm8gZGVmYXVsdDogY2FzZSBoZXJlLCBzbyB0aGF0IHRoZQpAQCAtMTgxMyw2ICsx ODE2LDkgQEAgdHJhbnNmb3JtU3ViTGluayhQYXJzZVN0YXRlICpwc3RhdGUsIFN1Ykxpbmsg KnN1YmxpbmspCiAJCWNhc2UgRVhQUl9LSU5EX0dFTkVSQVRFRF9DT0xVTU46CiAJCQllcnIg PSBfKCJjYW5ub3QgdXNlIHN1YnF1ZXJ5IGluIGNvbHVtbiBnZW5lcmF0aW9uIGV4cHJlc3Np b24iKTsKIAkJCWJyZWFrOworCQljYXNlIEVYUFJfS0lORF9VUERBVEVfUE9SVElPTjoKKwkJ CWVyciA9IF8oImNhbm5vdCB1c2Ugc3VicXVlcnkgaW4gRk9SIFBPUlRJT04gT0YgZXhwcmVz c2lvbiIpOworCQkJYnJlYWs7CiAKIAkJCS8qCiAJCQkgKiBUaGVyZSBpcyBpbnRlbnRpb25h bGx5IG5vIGRlZmF1bHQ6IGNhc2UgaGVyZSwgc28gdGhhdCB0aGUKQEAgLTMxMDQsNiArMzEx MCw4IEBAIFBhcnNlRXhwcktpbmROYW1lKFBhcnNlRXhwcktpbmQgZXhwcktpbmQpCiAJCQly ZXR1cm4gIlVQREFURSI7CiAJCWNhc2UgRVhQUl9LSU5EX01FUkdFX1dIRU46CiAJCQlyZXR1 cm4gIk1FUkdFIFdIRU4iOworCQljYXNlIEVYUFJfS0lORF9VUERBVEVfUE9SVElPTjoKKwkJ CXJldHVybiAiRk9SIFBPUlRJT04gT0YiOwogCQljYXNlIEVYUFJfS0lORF9HUk9VUF9CWToK IAkJCXJldHVybiAiR1JPVVAgQlkiOwogCQljYXNlIEVYUFJfS0lORF9PUkRFUl9CWToKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9mdW5jLmMgYi9zcmMvYmFja2Vu ZC9wYXJzZXIvcGFyc2VfZnVuYy5jCmluZGV4IGZkYjNlNmRmMzM4Li5mYzE3ZGQ3ZWRmOCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2Z1bmMuYworKysgYi9zcmMv YmFja2VuZC9wYXJzZXIvcGFyc2VfZnVuYy5jCkBAIC0yNjU2LDYgKzI2NTYsOSBAQCBjaGVj a19zcmZfY2FsbF9wbGFjZW1lbnQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpsYXN0X3Ny ZiwgaW50IGxvY2F0aW9uKQogCQljYXNlIEVYUFJfS0lORF9DWUNMRV9NQVJLOgogCQkJZXJy a2luZCA9IHRydWU7CiAJCQlicmVhazsKKwkJY2FzZSBFWFBSX0tJTkRfVVBEQVRFX1BPUlRJ T046CisJCQllcnIgPSBfKCJzZXQtcmV0dXJuaW5nIGZ1bmN0aW9ucyBhcmUgbm90IGFsbG93 ZWQgaW4gRk9SIFBPUlRJT04gT0YgZXhwcmVzc2lvbnMiKTsKKwkJCWJyZWFrOwogCiAJCQkv KgogCQkJICogVGhlcmUgaXMgaW50ZW50aW9uYWxseSBubyBkZWZhdWx0OiBjYXNlIGhlcmUs IHNvIHRoYXQgdGhlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfbWVy Z2UuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9tZXJnZS5jCmluZGV4IDczZjdhNDhi M2M2Li43NDFlN2MzZjFhOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNl X21lcmdlLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX21lcmdlLmMKQEAgLTM3 Nyw3ICszNzcsNyBAQCB0cmFuc2Zvcm1NZXJnZVN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBN ZXJnZVN0bXQgKnN0bXQpCiAJCQkJCXBzdGF0ZS0+cF9pc19pbnNlcnQgPSBmYWxzZTsKIAkJ CQkJYWN0aW9uLT50YXJnZXRMaXN0ID0KIAkJCQkJCXRyYW5zZm9ybVVwZGF0ZVRhcmdldExp c3QocHN0YXRlLAotCQkJCQkJCQkJCQkJICBtZXJnZVdoZW5DbGF1c2UtPnRhcmdldExpc3Qp OworCQkJCQkJCQkJCQkJICBtZXJnZVdoZW5DbGF1c2UtPnRhcmdldExpc3QsIE5VTEwpOwog CQkJCX0KIAkJCQlicmVhazsKIAkJCWNhc2UgQ01EX0RFTEVURToKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3Jld3JpdGUvcmV3cml0ZUhhbmRsZXIuYyBiL3NyYy9iYWNrZW5kL3Jld3Jp dGUvcmV3cml0ZUhhbmRsZXIuYwppbmRleCBmNjBiMzRkZWI2NC4uNGM0YTVkZDA3MjcgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Jld3JpdGUvcmV3cml0ZUhhbmRsZXIuYworKysgYi9z cmMvYmFja2VuZC9yZXdyaXRlL3Jld3JpdGVIYW5kbGVyLmMKQEAgLTM0NzYsNiArMzQ3Niwz MCBAQCByZXdyaXRlVGFyZ2V0VmlldyhRdWVyeSAqcGFyc2V0cmVlLCBSZWxhdGlvbiB2aWV3 KQogCQkJCQkJCQkJICAmcGFyc2V0cmVlLT5oYXNTdWJMaW5rcyk7CiAJfQogCisJaWYgKHBh cnNldHJlZS0+Zm9yUG9ydGlvbk9mICYmIHBhcnNldHJlZS0+Y29tbWFuZFR5cGUgPT0gQ01E X1VQREFURSkKKwl7CisJCS8qCisJCSAqIExpa2UgdGhlIElOU0VSVC9VUERBVEUgY29kZSBh Ym92ZSwgdXBkYXRlIHRoZSByZXNub3MgaW4gdGhlCisJCSAqIGF1eGlsaWFyeSBVUERBVEUg dGFyZ2V0bGlzdCB0byByZWZlciB0byBjb2x1bW5zIG9mIHRoZSBiYXNlCisJCSAqIHJlbGF0 aW9uLgorCQkgKi8KKwkJZm9yZWFjaChsYywgcGFyc2V0cmVlLT5mb3JQb3J0aW9uT2YtPnJh bmdlVGFyZ2V0TGlzdCkKKwkJeworCQkJVGFyZ2V0RW50cnkgKnRsZSA9IChUYXJnZXRFbnRy eSAqKSBsZmlyc3QobGMpOworCQkJVGFyZ2V0RW50cnkgKnZpZXdfdGxlOworCisJCQlpZiAo dGxlLT5yZXNqdW5rKQorCQkJCWNvbnRpbnVlOworCisJCQl2aWV3X3RsZSA9IGdldF90bGVf YnlfcmVzbm8odmlld190YXJnZXRsaXN0LCB0bGUtPnJlc25vKTsKKwkJCWlmICh2aWV3X3Rs ZSAhPSBOVUxMICYmICF2aWV3X3RsZS0+cmVzanVuayAmJiBJc0Eodmlld190bGUtPmV4cHIs IFZhcikpCisJCQkJdGxlLT5yZXNubyA9ICgoVmFyICopIHZpZXdfdGxlLT5leHByKS0+dmFy YXR0bm87CisJCQllbHNlCisJCQkJZWxvZyhFUlJPUiwgImF0dHJpYnV0ZSBudW1iZXIgJWQg bm90IGZvdW5kIGluIHZpZXcgdGFyZ2V0bGlzdCIsCisJCQkJCSB0bGUtPnJlc25vKTsKKwkJ fQorCX0KKwogCS8qCiAJICogRm9yIFVQREFURS9ERUxFVEUsIHB1bGwgdXAgYW55IFdIRVJF IHF1YWxzIGZyb20gdGhlIHZpZXcuICBXZSBrbm93IHRoYXQKIAkgKiBhbnkgVmFycyBpbiB0 aGUgcXVhbHMgbXVzdCByZWZlcmVuY2UgdGhlIG9uZSBiYXNlIHJlbGF0aW9uLCBzbyB3ZSBu ZWVkCkBAIC0zODE0LDYgKzM4MzgsMjIgQEAgUmV3cml0ZVF1ZXJ5KFF1ZXJ5ICpwYXJzZXRy ZWUsIExpc3QgKnJld3JpdGVfZXZlbnRzLCBpbnQgb3JpZ19ydF9sZW5ndGgpCiAJCWVsc2Ug aWYgKGV2ZW50ID09IENNRF9VUERBVEUpCiAJCXsKIAkJCUFzc2VydChwYXJzZXRyZWUtPm92 ZXJyaWRlID09IE9WRVJSSURJTkdfTk9UX1NFVCk7CisJCQkvKgorCQkJICogVXBkYXRlIEZP UiBQT1JUSU9OIE9GIGNvbHVtbihzKSBhdXRvbWF0aWNhbGx5LiBEb24ndAorCQkJICogZG8g dGhpcyB1bnRpbCB3ZSdyZSBkb25lIHJld3JpdGluZyBhIHZpZXcgdXBkYXRlLCBzbworCQkJ ICogdGhhdCB3ZSBkb24ndCBhZGQgdGhlIHNhbWUgdXBkYXRlIG9uIHRoZSByZWN1cnNpb24u CisJCQkgKi8KKwkJCWlmIChwYXJzZXRyZWUtPmZvclBvcnRpb25PZiAmJgorCQkJCXJ0X2Vu dHJ5X3JlbGF0aW9uLT5yZF9yZWwtPnJlbGtpbmQgIT0gUkVMS0lORF9WSUVXKQorCQkJewor CQkJCUxpc3RDZWxsICp0bDsKKwkJCQlmb3JlYWNoKHRsLCBwYXJzZXRyZWUtPmZvclBvcnRp b25PZi0+cmFuZ2VUYXJnZXRMaXN0KQorCQkJCXsKKwkJCQkJVGFyZ2V0RW50cnkgKnRsZSA9 IChUYXJnZXRFbnRyeSAqKSBsZmlyc3QodGwpOworCQkJCQlwYXJzZXRyZWUtPnRhcmdldExp c3QgPSBsYXBwZW5kKHBhcnNldHJlZS0+dGFyZ2V0TGlzdCwgdGxlKTsKKwkJCQl9CisJCQl9 CisKIAkJCXBhcnNldHJlZS0+dGFyZ2V0TGlzdCA9CiAJCQkJcmV3cml0ZVRhcmdldExpc3RJ VShwYXJzZXRyZWUtPnRhcmdldExpc3QsCiAJCQkJCQkJCQlwYXJzZXRyZWUtPmNvbW1hbmRU eXBlLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JpX3RyaWdnZXJzLmMg Yi9zcmMvYmFja2VuZC91dGlscy9hZHQvcmlfdHJpZ2dlcnMuYwppbmRleCBmNWM2NTcxMmI0 Yi4uNmE5ZDM1ZjM1ZmQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yaV90 cmlnZ2Vycy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yaV90cmlnZ2Vycy5jCkBA IC0yMzAsNiArMjMwLDcgQEAgc3RhdGljIGJvb2wgcmlfUGVyZm9ybUNoZWNrKGNvbnN0IFJJ X0NvbnN0cmFpbnRJbmZvICpyaWluZm8sCiAJCQkJCQkJUklfUXVlcnlLZXkgKnFrZXksIFNQ SVBsYW5QdHIgcXBsYW4sCiAJCQkJCQkJUmVsYXRpb24gZmtfcmVsLCBSZWxhdGlvbiBwa19y ZWwsCiAJCQkJCQkJVHVwbGVUYWJsZVNsb3QgKm9sZHNsb3QsIFR1cGxlVGFibGVTbG90ICpu ZXdzbG90LAorCQkJCQkJCWludCBmb3JQb3J0aW9uT2ZQYXJhbSwgRGF0dW0gZm9yUG9ydGlv bk9mLAogCQkJCQkJCWJvb2wgZGV0ZWN0TmV3Um93cywgaW50IGV4cGVjdF9PSyk7CiBzdGF0 aWMgdm9pZCByaV9FeHRyYWN0VmFsdWVzKFJlbGF0aW9uIHJlbCwgVHVwbGVUYWJsZVNsb3Qg KnNsb3QsCiAJCQkJCQkJIGNvbnN0IFJJX0NvbnN0cmFpbnRJbmZvICpyaWluZm8sIGJvb2wg cmVsX2lzX3BrLApAQCAtMjM5LDYgKzI0MCwxMSBAQCBzdGF0aWMgdm9pZCByaV9SZXBvcnRW aW9sYXRpb24oY29uc3QgUklfQ29uc3RyYWludEluZm8gKnJpaW5mbywKIAkJCQkJCQkgICBU dXBsZVRhYmxlU2xvdCAqdmlvbGF0b3JzbG90LCBUdXBsZURlc2MgdHVwZGVzYywKIAkJCQkJ CQkgICBpbnQgcXVlcnlubywgYm9vbCBwYXJ0Z29uZSkgcGdfYXR0cmlidXRlX25vcmV0dXJu KCk7CiBzdGF0aWMgdm9pZCBsb29rdXBQZXJpb2RSSVByb2MoY29uc3QgUklfQ29uc3RyYWlu dEluZm8gKnJpaW5mbywgY2hhciAqKmFnZ25hbWUpOworc3RhdGljIGJvb2wgZnBvX3Rhcmdl dHNfcGtfcmFuZ2UoY29uc3QgRm9yUG9ydGlvbk9mU3RhdGUgKnRnX3RlbXBvcmFsLAorCQkJ CQkJCQkgY29uc3QgUklfQ29uc3RyYWludEluZm8gKnJpaW5mbyk7CitzdGF0aWMgRGF0dW0g cmVzdHJpY3RfY2FzY2FkaW5nX3JhbmdlKGNvbnN0IEZvclBvcnRpb25PZlN0YXRlICp0Z190 ZW1wb3JhbCwKKwkJCQkJCQkJCSAgY29uc3QgUklfQ29uc3RyYWludEluZm8gKnJpaW5mbywK KwkJCQkJCQkJCSAgVHVwbGVUYWJsZVNsb3QgKm9sZHNsb3QpOwogCiAKIC8qCkBAIC00NTYs NiArNDYyLDcgQEAgUklfRktleV9jaGVjayhUcmlnZ2VyRGF0YSAqdHJpZ2RhdGEpCiAJcmlf UGVyZm9ybUNoZWNrKHJpaW5mbywgJnFrZXksIHFwbGFuLAogCQkJCQlma19yZWwsIHBrX3Jl bCwKIAkJCQkJTlVMTCwgbmV3c2xvdCwKKwkJCQkJLTEsIChEYXR1bSkgMCwKIAkJCQkJcGtf cmVsLT5yZF9yZWwtPnJlbGtpbmQgPT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSwKIAkJ CQkJU1BJX09LX1NFTEVDVCk7CiAKQEAgLTYyNCw2ICs2MzEsNyBAQCByaV9DaGVja19Qa19N YXRjaChSZWxhdGlvbiBwa19yZWwsIFJlbGF0aW9uIGZrX3JlbCwKIAlyZXN1bHQgPSByaV9Q ZXJmb3JtQ2hlY2socmlpbmZvLCAmcWtleSwgcXBsYW4sCiAJCQkJCQkJIGZrX3JlbCwgcGtf cmVsLAogCQkJCQkJCSBvbGRzbG90LCBOVUxMLAorCQkJCQkJCSAtMSwgKERhdHVtKSAwLAog CQkJCQkJCSB0cnVlLAkvKiB0cmVhdCBsaWtlIHVwZGF0ZSAqLwogCQkJCQkJCSBTUElfT0tf U0VMRUNUKTsKIApAQCAtNzIzLDYgKzczMSw4IEBAIHJpX3Jlc3RyaWN0KFRyaWdnZXJEYXRh ICp0cmlnZGF0YSwgYm9vbCBpc19ub19hY3Rpb24pCiAJVHVwbGVUYWJsZVNsb3QgKm9sZHNs b3Q7CiAJUklfUXVlcnlLZXkgcWtleTsKIAlTUElQbGFuUHRyCXFwbGFuOworCWludAkJCXRh cmdldFJhbmdlUGFyYW0gPSAtMTsKKwlEYXR1bQkJdGFyZ2V0UmFuZ2UgPSAoRGF0dW0pIDA7 CiAKIAlyaWluZm8gPSByaV9GZXRjaENvbnN0cmFpbnRJbmZvKHRyaWdkYXRhLT50Z190cmln Z2VyLAogCQkJCQkJCQkJdHJpZ2RhdGEtPnRnX3JlbGF0aW9uLCB0cnVlKTsKQEAgLTgxMyw5 ICs4MjMsMTYgQEAgcmlfcmVzdHJpY3QoVHJpZ2dlckRhdGEgKnRyaWdkYXRhLCBib29sIGlz X25vX2FjdGlvbikKIAkvKgogCSAqIFdlIGhhdmUgYSBwbGFuIG5vdy4gUnVuIGl0IHRvIGNo ZWNrIGZvciBleGlzdGluZyByZWZlcmVuY2VzLgogCSAqLworCWlmICh0cmlnZGF0YS0+dGdf dGVtcG9yYWwpCisJeworCQl0YXJnZXRSYW5nZVBhcmFtID0gcmlpbmZvLT5ua2V5cyAtIDE7 CisJCXRhcmdldFJhbmdlID0gcmVzdHJpY3RfY2FzY2FkaW5nX3JhbmdlKHRyaWdkYXRhLT50 Z190ZW1wb3JhbCwgcmlpbmZvLCBvbGRzbG90KTsKKwl9CisKIAlyaV9QZXJmb3JtQ2hlY2so cmlpbmZvLCAmcWtleSwgcXBsYW4sCiAJCQkJCWZrX3JlbCwgcGtfcmVsLAogCQkJCQlvbGRz bG90LCBOVUxMLAorCQkJCQl0YXJnZXRSYW5nZVBhcmFtLCB0YXJnZXRSYW5nZSwKIAkJCQkJ dHJ1ZSwJCS8qIG11c3QgZGV0ZWN0IG5ldyByb3dzICovCiAJCQkJCVNQSV9PS19TRUxFQ1Qp OwogCkBAIC05MjIsNiArOTM5LDcgQEAgUklfRktleV9jYXNjYWRlX2RlbChQR19GVU5DVElP Tl9BUkdTKQogCXJpX1BlcmZvcm1DaGVjayhyaWluZm8sICZxa2V5LCBxcGxhbiwKIAkJCQkJ ZmtfcmVsLCBwa19yZWwsCiAJCQkJCW9sZHNsb3QsIE5VTEwsCisJCQkJCS0xLCAoRGF0dW0p IDAsCiAJCQkJCXRydWUsCQkvKiBtdXN0IGRldGVjdCBuZXcgcm93cyAqLwogCQkJCQlTUElf T0tfREVMRVRFKTsKIApAQCAtMTA0Myw2ICsxMDYxLDcgQEAgUklfRktleV9jYXNjYWRlX3Vw ZChQR19GVU5DVElPTl9BUkdTKQogCXJpX1BlcmZvcm1DaGVjayhyaWluZm8sICZxa2V5LCBx cGxhbiwKIAkJCQkJZmtfcmVsLCBwa19yZWwsCiAJCQkJCW9sZHNsb3QsIG5ld3Nsb3QsCisJ CQkJCS0xLCAoRGF0dW0pIDAsCiAJCQkJCXRydWUsCQkvKiBtdXN0IGRldGVjdCBuZXcgcm93 cyAqLwogCQkJCQlTUElfT0tfVVBEQVRFKTsKIApAQCAtMTI3NSw2ICsxMjk0LDcgQEAgcmlf c2V0KFRyaWdnZXJEYXRhICp0cmlnZGF0YSwgYm9vbCBpc19zZXRfbnVsbCwgaW50IHRna2lu ZCkKIAlyaV9QZXJmb3JtQ2hlY2socmlpbmZvLCAmcWtleSwgcXBsYW4sCiAJCQkJCWZrX3Jl bCwgcGtfcmVsLAogCQkJCQlvbGRzbG90LCBOVUxMLAorCQkJCQktMSwgKERhdHVtKSAwLAog CQkJCQl0cnVlLAkJLyogbXVzdCBkZXRlY3QgbmV3IHJvd3MgKi8KIAkJCQkJU1BJX09LX1VQ REFURSk7CiAKQEAgLTI1NTAsNiArMjU3MCw3IEBAIHJpX1BlcmZvcm1DaGVjayhjb25zdCBS SV9Db25zdHJhaW50SW5mbyAqcmlpbmZvLAogCQkJCVJJX1F1ZXJ5S2V5ICpxa2V5LCBTUElQ bGFuUHRyIHFwbGFuLAogCQkJCVJlbGF0aW9uIGZrX3JlbCwgUmVsYXRpb24gcGtfcmVsLAog CQkJCVR1cGxlVGFibGVTbG90ICpvbGRzbG90LCBUdXBsZVRhYmxlU2xvdCAqbmV3c2xvdCwK KwkJCQlpbnQgZm9yUG9ydGlvbk9mUGFyYW0sIERhdHVtIGZvclBvcnRpb25PZiwKIAkJCQli b29sIGRldGVjdE5ld1Jvd3MsIGludCBleHBlY3RfT0spCiB7CiAJUmVsYXRpb24JcXVlcnlf cmVsLApAQCAtMjYwNSw2ICsyNjI2LDEyIEBAIHJpX1BlcmZvcm1DaGVjayhjb25zdCBSSV9D b25zdHJhaW50SW5mbyAqcmlpbmZvLAogCQlyaV9FeHRyYWN0VmFsdWVzKHNvdXJjZV9yZWws IG9sZHNsb3QsIHJpaW5mbywgc291cmNlX2lzX3BrLAogCQkJCQkJIHZhbHMsIG51bGxzKTsK IAl9CisJLyogQWRkIG9uZSBtb3JlIHF1ZXJ5IHBhcmFtIGlmIHdlIGFyZSB1c2luZyBGT1Ig UE9SVElPTiBPRiAqLworCWlmIChmb3JQb3J0aW9uT2YpCisJeworCQl2YWxzW2ZvclBvcnRp b25PZlBhcmFtXSA9IGZvclBvcnRpb25PZjsKKwkJbnVsbHNbZm9yUG9ydGlvbk9mUGFyYW1d ID0gJyAnOworCX0KIAogCS8qCiAJICogSW4gUkVBRCBDT01NSVRURUQgbW9kZSwgd2UganVz dCBuZWVkIHRvIHVzZSBhbiB1cC10by1kYXRlIHJlZ3VsYXIKQEAgLTMzMTQsMyArMzM0MSw1 MCBAQCBsb29rdXBQZXJpb2RSSVByb2MoY29uc3QgUklfQ29uc3RyYWludEluZm8gKnJpaW5m bywgY2hhciAqKmFnZ25hbWUpCiAJcGZyZWUobmFtZXNwKTsKIAlSZWxlYXNlU3lzQ2FjaGUo dHApOwogfQorCisvKgorICogZnBvX3RhcmdldHNfcGtfcmFuZ2UKKyAqCisgKiBSZXR1cm5z IHRydWUgaWZmIHRoZSBwcmltYXJ5IGtleSByZWZlcmVuY2VkIGJ5IHJpaW5mbyBpbmNsdWRl cyB0aGUgcmFuZ2UKKyAqIGNvbHVtbiB0YXJnZXRlZCBieSB0aGUgRk9SIFBPUlRJT04gT0Yg Y2xhdXNlIChhY2NvcmRpbmcgdG8gdGdfdGVtcG9yYWwpLgorICovCitzdGF0aWMgYm9vbAor ZnBvX3RhcmdldHNfcGtfcmFuZ2UoY29uc3QgRm9yUG9ydGlvbk9mU3RhdGUgKnRnX3RlbXBv cmFsLCBjb25zdCBSSV9Db25zdHJhaW50SW5mbyAqcmlpbmZvKQoreworCWlmICh0Z190ZW1w b3JhbCA9PSBOVUxMKQorCQlyZXR1cm4gZmFsc2U7CisKKwlyZXR1cm4gcmlpbmZvLT5wa19h dHRudW1zW3JpaW5mby0+bmtleXMgLSAxXSA9PSB0Z190ZW1wb3JhbC0+ZnBfcmFuZ2VBdHRu bzsKK30KKworLyoKKyAqIHJlc3RyaWN0X2Nhc2NhZGluZ19yYW5nZSAtCisgKgorICogUmV0 dXJucyBhIERhdHVtIG9mIFJhbmdlVHlwZVAgaG9sZGluZyB0aGUgYXBwcm9wcmlhdGUgdGlt ZXNwYW4KKyAqIHRvIHRhcmdldCBjaGlsZCByZWNvcmRzIHdoZW4gd2UgQ0FTQ0FERS9TRVQg TlVMTC9TRVQgREVGQVVMVC4KKyAqCisgKiBJbiBhIG5vcm1hbCBVUERBVEUvREVMRVRFIHRo aXMgc2hvdWxkIGJlIHRoZSBwYXJlbnQncyBvd24gdmFsaWQgdGltZSwKKyAqIGJ1dCBpZiB0 aGVyZSB3YXMgYSBGT1IgUE9SVElPTiBPRiBjbGF1c2UsIHRoZW4gd2Ugc2hvdWxkIHVzZSB0 aGF0IHRvCisgKiB0cmltIGRvd24gdGhlIHBhcmVudCdzIHNwYW4gZnVydGhlci4KKyAqLwor c3RhdGljIERhdHVtCityZXN0cmljdF9jYXNjYWRpbmdfcmFuZ2UoY29uc3QgRm9yUG9ydGlv bk9mU3RhdGUgKnRnX3RlbXBvcmFsLCBjb25zdCBSSV9Db25zdHJhaW50SW5mbyAqcmlpbmZv LCBUdXBsZVRhYmxlU2xvdCAqb2xkc2xvdCkKK3sKKwlEYXR1bQlwa1JlY29yZFJhbmdlOwor CWJvb2wJaXNudWxsOworCisJcGtSZWNvcmRSYW5nZSA9IHNsb3RfZ2V0YXR0cihvbGRzbG90 LCByaWluZm8tPnBrX2F0dG51bXNbcmlpbmZvLT5ua2V5cyAtIDFdLCAmaXNudWxsKTsKKwlp ZiAoaXNudWxsKQorCQllbG9nKEVSUk9SLCAiYXBwbGljYXRpb24gdGltZSBzaG91bGQgbm90 IGJlIG51bGwiKTsKKworCWlmIChmcG9fdGFyZ2V0c19wa19yYW5nZSh0Z190ZW1wb3JhbCwg cmlpbmZvKSkKKwl7CisJCVJhbmdlVHlwZSAqcjEgPSBEYXR1bUdldFJhbmdlVHlwZVAocGtS ZWNvcmRSYW5nZSk7CisJCVJhbmdlVHlwZSAqcjIgPSBEYXR1bUdldFJhbmdlVHlwZVAodGdf dGVtcG9yYWwtPmZwX3RhcmdldFJhbmdlKTsKKwkJT2lkIHJuZ3R5cGlkID0gUmFuZ2VUeXBl R2V0T2lkKHIxKTsKKwkJVHlwZUNhY2hlRW50cnkgKnR5cGNhY2hlID0gbG9va3VwX3R5cGVf Y2FjaGUocm5ndHlwaWQsIFRZUEVDQUNIRV9SQU5HRV9JTkZPKTsKKwkJcmV0dXJuIFJhbmdl VHlwZVBHZXREYXR1bShyYW5nZV9pbnRlcnNlY3RfaW50ZXJuYWwodHlwY2FjaGUsIHIxLCBy MikpOworCX0KKwllbHNlCisJCXJldHVybiBwa1JlY29yZFJhbmdlOworfQpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMgYi9zcmMvYmFja2VuZC91 dGlscy9jYWNoZS9sc3lzY2FjaGUuYwppbmRleCBmNzMwYWEyNmM0Ny4uNTNlNzA2YzZjMDEg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5jCisrKyBi L3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5jCkBAIC0xNjA2LDcgKzE2MDYs NyBAQCBnZXRfZnVuY19uYW1lKE9pZCBmdW5jaWQpCiAgKgkJUmV0dXJucyB0aGUgcGdfbmFt ZXNwYWNlIE9JRCBhc3NvY2lhdGVkIHdpdGggYSBnaXZlbiBmdW5jdGlvbi4KICAqLwogT2lk Ci1nZXRfZnVuY19uYW1lc3BhY2UoT2lkIGZ1bmNpZCkKK2dldF9mdW5jX25hbWVzcGFjZShP aWQgZnVuY2lkLCBib29sIG1pc3Npbmdfb2spCiB7CiAJSGVhcFR1cGxlCXRwOwogCkBAIC0x NjIwLDYgKzE2MjAsOCBAQCBnZXRfZnVuY19uYW1lc3BhY2UoT2lkIGZ1bmNpZCkKIAkJUmVs ZWFzZVN5c0NhY2hlKHRwKTsKIAkJcmV0dXJuIHJlc3VsdDsKIAl9CisJZWxzZSBpZiAoIW1p c3Npbmdfb2spCisJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBmdW5j dGlvbiAldSIsIGZ1bmNpZCk7CiAJZWxzZQogCQlyZXR1cm4gSW52YWxpZE9pZDsKIH0KQEAg LTIxNDMsNiArMjE0NSw1OSBAQCBnZXRfdHlwaXNkZWZpbmVkKE9pZCB0eXBpZCkKIAkJcmV0 dXJuIGZhbHNlOwogfQogCisvKgorICogZ2V0X3R5cG5hbWUKKyAqCisgKgkgIFJldHVybnMg dGhlIG5hbWUgb2YgYSBnaXZlbiB0eXBlCisgKgorICogUmV0dXJucyBhIHBhbGxvYydkIGNv cHkgb2YgdGhlIHN0cmluZywgb3IgTlVMTCBpZiBubyBzdWNoIHR5cGUuCisgKi8KK2NoYXIg KgorZ2V0X3R5cG5hbWUoT2lkIHR5cGlkKQoreworCUhlYXBUdXBsZSAgIHRwOworCisJdHAg PSBTZWFyY2hTeXNDYWNoZTEoVFlQRU9JRCwgT2JqZWN0SWRHZXREYXR1bSh0eXBpZCkpOwor CWlmIChIZWFwVHVwbGVJc1ZhbGlkKHRwKSkKKwl7CisJCUZvcm1fcGdfdHlwZSB0eXB0dXAg PSAoRm9ybV9wZ190eXBlKSBHRVRTVFJVQ1QodHApOworCQljaGFyCSAgICpyZXN1bHQ7CisK KwkJcmVzdWx0ID0gcHN0cmR1cChOYW1lU3RyKHR5cHR1cC0+dHlwbmFtZSkpOworCQlSZWxl YXNlU3lzQ2FjaGUodHApOworCQlyZXR1cm4gcmVzdWx0OworCX0KKwllbHNlCisJCXJldHVy biBOVUxMOworfQorCisvKgorICogZ2V0X3R5cG5hbWVfYW5kX25hbWVzcGFjZQorICoKKyAq CSAgUmV0dXJucyB0aGUgbmFtZSBhbmQgbmFtZXNwYWNlIG9mIGEgZ2l2ZW4gdHlwZQorICoK KyAqIFJldHVybnMgdHJ1ZSBpZiBvbmUgZm91bmQsIG9yIGZhbHNlIGlmIG5vdC4KKyAqLwor Ym9vbAorZ2V0X3R5cG5hbWVfYW5kX25hbWVzcGFjZShPaWQgdHlwaWQsIGNoYXIgKip0eXBu YW1lLCBjaGFyICoqdHlwbmFtZXNwYWNlKQoreworCUhlYXBUdXBsZQl0cDsKKworCXRwID0g U2VhcmNoU3lzQ2FjaGUxKFRZUEVPSUQsIE9iamVjdElkR2V0RGF0dW0odHlwaWQpKTsKKwlp ZiAoSGVhcFR1cGxlSXNWYWxpZCh0cCkpCisJeworCQlGb3JtX3BnX3R5cGUgdHlwdHVwID0g KEZvcm1fcGdfdHlwZSkgR0VUU1RSVUNUKHRwKTsKKworCQkqdHlwbmFtZSA9IHBzdHJkdXAo TmFtZVN0cih0eXB0dXAtPnR5cG5hbWUpKTsKKwkJKnR5cG5hbWVzcGFjZSA9IGdldF9uYW1l c3BhY2VfbmFtZSh0eXB0dXAtPnR5cG5hbWVzcGFjZSk7CisJCVJlbGVhc2VTeXNDYWNoZSh0 cCk7CisJCS8qICp0eXBuYW1lc3BhY2UgaXMgTlVMTCBpZiBpdCB3YXNuJ3QgZm91bmQ6ICov CisJCXJldHVybiAqdHlwbmFtZXNwYWNlOworCX0KKwllbHNlCisJCXJldHVybiBmYWxzZTsK K30KKwogLyoKICAqIGdldF90eXBsZW4KICAqCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9h Y2Nlc3Mvc3RyYXRudW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9zdHJhdG51bS5oCmluZGV4 IDhhNDdkM2M5ZWM4Li5iODAxZWYxZTNjMCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNj ZXNzL3N0cmF0bnVtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3N0cmF0bnVtLmgKQEAg LTc5LDcgKzc5LDcgQEAgdHlwZWRlZiB1aW50MTYgU3RyYXRlZ3lOdW1iZXI7CiAjZGVmaW5l IFJUT2xkQmVsb3dTdHJhdGVneU51bWJlcgkJMjkJLyogZm9yIG9sZCBzcGVsbGluZyBvZiA8 PHwgKi8KICNkZWZpbmUgUlRPbGRBYm92ZVN0cmF0ZWd5TnVtYmVyCQkzMAkvKiBmb3Igb2xk IHNwZWxsaW5nIG9mIHw+PiAqLwogCi0jZGVmaW5lIFJUTWF4U3RyYXRlZ3lOdW1iZXIJCQkJ MzAKKyNkZWZpbmUgUlRNYXhTdHJhdGVneU51bWJlcgkJCQkzMgogCiAKICNlbmRpZgkJCQkJ CQkvKiBTVFJBVE5VTV9IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy90 cmlnZ2VyLmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy90cmlnZ2VyLmgKaW5kZXggOGE1YTlm ZTY0MjIuLjNkMTU2NDgzMzI1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy90 cmlnZ2VyLmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvdHJpZ2dlci5oCkBAIC00MSw2 ICs0MSw3IEBAIHR5cGVkZWYgc3RydWN0IFRyaWdnZXJEYXRhCiAJVHVwbGVzdG9yZXN0YXRl ICp0Z19vbGR0YWJsZTsKIAlUdXBsZXN0b3Jlc3RhdGUgKnRnX25ld3RhYmxlOwogCWNvbnN0 IEJpdG1hcHNldCAqdGdfdXBkYXRlZGNvbHM7CisJRm9yUG9ydGlvbk9mU3RhdGUgKnRnX3Rl bXBvcmFsOwogfSBUcmlnZ2VyRGF0YTsKIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L25vZGVzL2V4ZWNub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKaW5k ZXggNDQ0YTVmMGZkNTcuLjcxMWM4ZWVjNThiIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9u b2Rlcy9leGVjbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaApA QCAtNDIsMTIgKzQyLDE0IEBACiAjaW5jbHVkZSAic3RvcmFnZS9jb25kaXRpb25fdmFyaWFi bGUuaCIKICNpbmNsdWRlICJ1dGlscy9oc2VhcmNoLmgiCiAjaW5jbHVkZSAidXRpbHMvcXVl cnllbnZpcm9ubWVudC5oIgorI2luY2x1ZGUgInV0aWxzL3JhbmdldHlwZXMuaCIKICNpbmNs dWRlICJ1dGlscy9yZWx0cmlnZ2VyLmgiCiAjaW5jbHVkZSAidXRpbHMvc2hhcmVkdHVwbGVz dG9yZS5oIgogI2luY2x1ZGUgInV0aWxzL3NuYXBzaG90LmgiCiAjaW5jbHVkZSAidXRpbHMv c29ydHN1cHBvcnQuaCIKICNpbmNsdWRlICJ1dGlscy90dXBsZXNvcnQuaCIKICNpbmNsdWRl ICJ1dGlscy90dXBsZXN0b3JlLmgiCisjaW5jbHVkZSAidXRpbHMvdHlwY2FjaGUuaCIKIAog c3RydWN0IFBsYW5TdGF0ZTsJCQkJLyogZm9yd2FyZCByZWZlcmVuY2VzIGluIHRoaXMgZmls ZSAqLwogc3RydWN0IFBhcmFsbGVsSGFzaEpvaW5TdGF0ZTsKQEAgLTQyOCw2ICs0MzAsMjcg QEAgdHlwZWRlZiBzdHJ1Y3QgTWVyZ2VBY3Rpb25TdGF0ZQogCUV4cHJTdGF0ZSAgKm1hc193 aGVucXVhbDsJLyogV0hFTiBbTk9UXSBNQVRDSEVEIEFORCBjb25kaXRpb25zICovCiB9IE1l cmdlQWN0aW9uU3RhdGU7CiAKKy8qCisgKiBGb3JQb3J0aW9uT2ZTdGF0ZQorICoKKyAqIEV4 ZWN1dG9yIHN0YXRlIG9mIGEgRk9SIFBPUlRJT04gT0Ygb3BlcmF0aW9uLgorICovCit0eXBl ZGVmIHN0cnVjdCBGb3JQb3J0aW9uT2ZTdGF0ZQoreworCU5vZGVUYWcJCXR5cGU7CisKKwlj aGFyICAgKmZwX3JhbmdlTmFtZTsJCS8qIHRoZSBjb2x1bW4vUEVSSU9EIG5hbWVkIGluIEZP UiBQT1JUSU9OIE9GICovCisJT2lkCQlmcF9yYW5nZVR5cGU7CQkvKiB0aGUgdHlwZSBvZiB0 aGUgRk9SIFBPUlRJT04gT0YgZXhwcmVzc2lvbiAqLworCWJvb2wJZnBfaGFzUGVyaW9kOwkJ LyogdHJ1ZSBpZmYgdGhpcyBpcyBhIFBFUklPRCBub3QgYSByYW5nZSAqLworCWludAkJZnBf cmFuZ2VBdHRubzsJCS8qIHRoZSBhdHRubyBvZiB0aGUgcmFuZ2UgY29sdW1uIChvciAwIGZv ciBhIFBFUklPRCkgKi8KKwlpbnQJCWZwX3BlcmlvZFN0YXJ0QXR0bm87CS8qIHRoZSBhdHRu byBvZiB0aGUgUEVSSU9EIHN0YXJ0IGNvbHVtbiAob3IgMCBmb3IgYSByYW5nZSkgKi8KKwlp bnQJCWZwX3BlcmlvZEVuZEF0dG5vOwkJLyogdGhlIGF0dG5vIG9mIHRoZSBQRVJJT0QgZW5k IGNvbHVtbiAob3IgMCBmb3IgYSByYW5nZSkgKi8KKwlEYXR1bQlmcF90YXJnZXRSYW5nZTsJ CS8qIHRoZSByYW5nZSBmcm9tIEZPUiBQT1JUSU9OIE9GICovCisJVHlwZUNhY2hlRW50cnkg KmZwX2xlZnRvdmVyc3R5cGNhY2hlOwkvKiB0eXBlIGNhY2hlIGVudHJ5IG9mIHRoZSByYW5n ZSAqLworCVR1cGxlVGFibGVTbG90ICpmcF9FeGlzdGluZzsJCS8qIHNsb3QgdG8gc3RvcmUg ZXhpc3RpbmcgdGFyZ2V0IHR1cGxlIGluICovCisJVHVwbGVUYWJsZVNsb3QgKmZwX0xlZnRv dmVyOwkJLyogc2xvdCB0byBzdG9yZSBsZWZ0b3ZlciAqLworfSBGb3JQb3J0aW9uT2ZTdGF0 ZTsKKwogLyoKICAqIFJlc3VsdFJlbEluZm8KICAqCkBAIC01NDgsNiArNTcxLDkgQEAgdHlw ZWRlZiBzdHJ1Y3QgUmVzdWx0UmVsSW5mbwogCUxpc3QJICAgKnJpX21hdGNoZWRNZXJnZUFj dGlvbjsKIAlMaXN0CSAgICpyaV9ub3RNYXRjaGVkTWVyZ2VBY3Rpb247CiAKKwkvKiBGT1Ig UE9SVElPTiBPRiBldmFsdWF0aW9uIHN0YXRlICovCisJRm9yUG9ydGlvbk9mU3RhdGUgKnJp X2ZvclBvcnRpb25PZjsKKwogCS8qIHBhcnRpdGlvbiBjaGVjayBleHByZXNzaW9uIHN0YXRl IChOVUxMIGlmIG5vdCBzZXQgdXAgeWV0KSAqLwogCUV4cHJTdGF0ZSAgKnJpX1BhcnRpdGlv bkNoZWNrRXhwcjsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rl cy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCmluZGV4IGNlY2E0YzgwMWJm Li5hMjBiMzlhNGEyOCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rl cy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaApAQCAtMTQxLDYgKzE0 MSw5IEBAIHR5cGVkZWYgc3RydWN0IFF1ZXJ5CiAJICovCiAJaW50CQkJcmVzdWx0UmVsYXRp b24gcGdfbm9kZV9hdHRyKHF1ZXJ5X2p1bWJsZV9pZ25vcmUpOwogCisJLyogRk9SIFBPUlRJ T04gT0YgY2xhdXNlIGZvciBVUERBVEUvREVMRVRFICovCisJRm9yUG9ydGlvbk9mRXhwciAq Zm9yUG9ydGlvbk9mOworCiAJLyogaGFzIGFnZ3JlZ2F0ZXMgaW4gdGxpc3Qgb3IgaGF2aW5n UXVhbCAqLwogCWJvb2wJCWhhc0FnZ3MgcGdfbm9kZV9hdHRyKHF1ZXJ5X2p1bWJsZV9pZ25v cmUpOwogCS8qIGhhcyB3aW5kb3cgZnVuY3Rpb25zIGluIHRsaXN0ICovCkBAIC0xNTMwLDYg KzE1MzMsMjEgQEAgdHlwZWRlZiBzdHJ1Y3QgUm93TWFya0NsYXVzZQogCWJvb2wJCXB1c2hl ZERvd247CQkvKiBwdXNoZWQgZG93biBmcm9tIGhpZ2hlciBxdWVyeSBsZXZlbD8gKi8KIH0g Um93TWFya0NsYXVzZTsKIAorLyoKKyAqIEZvclBvcnRpb25PZkNsYXVzZQorICoJCXJlcHJl c2VudGF0aW9uIG9mIEZPUiBQT1JUSU9OIE9GIDxwZXJpb2QtbmFtZT4gRlJPTSA8dHM+IFRP IDx0ZT4KKyAqCQlvciBGT1IgUE9SVElPTiBPRiA8cGVyaW9kLW5hbWU+ICg8dGFyZ2V0PikK KyAqLwordHlwZWRlZiBzdHJ1Y3QgRm9yUG9ydGlvbk9mQ2xhdXNlCit7CisJTm9kZVRhZwkJ dHlwZTsKKwljaGFyCSAgICpyYW5nZV9uYW1lOworCWludAkJCWxvY2F0aW9uOworCU5vZGUJ ICAgKnRhcmdldDsKKwlOb2RlCSAgICp0YXJnZXRfc3RhcnQ7CisJTm9kZQkgICAqdGFyZ2V0 X2VuZDsKK30gRm9yUG9ydGlvbk9mQ2xhdXNlOworCiAvKgogICogV2l0aENsYXVzZSAtCiAg KgkgICByZXByZXNlbnRhdGlvbiBvZiBXSVRIIGNsYXVzZQpAQCAtMTg5MywxMiArMTkxMSwx MyBAQCB0eXBlZGVmIHN0cnVjdCBJbnNlcnRTdG10CiAgKi8KIHR5cGVkZWYgc3RydWN0IERl bGV0ZVN0bXQKIHsKLQlOb2RlVGFnCQl0eXBlOwotCVJhbmdlVmFyICAgKnJlbGF0aW9uOwkJ LyogcmVsYXRpb24gdG8gZGVsZXRlIGZyb20gKi8KLQlMaXN0CSAgICp1c2luZ0NsYXVzZTsJ Lyogb3B0aW9uYWwgdXNpbmcgY2xhdXNlIGZvciBtb3JlIHRhYmxlcyAqLwotCU5vZGUJICAg KndoZXJlQ2xhdXNlOwkvKiBxdWFsaWZpY2F0aW9ucyAqLwotCUxpc3QJICAgKnJldHVybmlu Z0xpc3Q7CS8qIGxpc3Qgb2YgZXhwcmVzc2lvbnMgdG8gcmV0dXJuICovCi0JV2l0aENsYXVz ZSAqd2l0aENsYXVzZTsJCS8qIFdJVEggY2xhdXNlICovCisJTm9kZVRhZwkJCQl0eXBlOwor CVJhbmdlVmFyCQkgICAqcmVsYXRpb247CQkvKiByZWxhdGlvbiB0byBkZWxldGUgZnJvbSAq LworCUZvclBvcnRpb25PZkNsYXVzZSAqZm9yUG9ydGlvbk9mOwkvKiBGT1IgUE9SVElPTiBP RiBjbGF1c2UgKi8KKwlMaXN0CQkJICAgKnVzaW5nQ2xhdXNlOwkvKiBvcHRpb25hbCB1c2lu ZyBjbGF1c2UgZm9yIG1vcmUgdGFibGVzICovCisJTm9kZQkJCSAgICp3aGVyZUNsYXVzZTsJ LyogcXVhbGlmaWNhdGlvbnMgKi8KKwlMaXN0CQkJICAgKnJldHVybmluZ0xpc3Q7CS8qIGxp c3Qgb2YgZXhwcmVzc2lvbnMgdG8gcmV0dXJuICovCisJV2l0aENsYXVzZQkJICAgKndpdGhD bGF1c2U7CQkvKiBXSVRIIGNsYXVzZSAqLwogfSBEZWxldGVTdG10OwogCiAvKiAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tCkBAIC0xOTA3LDEzICsxOTI2LDE0IEBAIHR5cGVkZWYgc3RydWN0 IERlbGV0ZVN0bXQKICAqLwogdHlwZWRlZiBzdHJ1Y3QgVXBkYXRlU3RtdAogewotCU5vZGVU YWcJCXR5cGU7Ci0JUmFuZ2VWYXIgICAqcmVsYXRpb247CQkvKiByZWxhdGlvbiB0byB1cGRh dGUgKi8KLQlMaXN0CSAgICp0YXJnZXRMaXN0OwkJLyogdGhlIHRhcmdldCBsaXN0IChvZiBS ZXNUYXJnZXQpICovCi0JTm9kZQkgICAqd2hlcmVDbGF1c2U7CS8qIHF1YWxpZmljYXRpb25z ICovCi0JTGlzdAkgICAqZnJvbUNsYXVzZTsJCS8qIG9wdGlvbmFsIGZyb20gY2xhdXNlIGZv ciBtb3JlIHRhYmxlcyAqLwotCUxpc3QJICAgKnJldHVybmluZ0xpc3Q7CS8qIGxpc3Qgb2Yg ZXhwcmVzc2lvbnMgdG8gcmV0dXJuICovCi0JV2l0aENsYXVzZSAqd2l0aENsYXVzZTsJCS8q IFdJVEggY2xhdXNlICovCisJTm9kZVRhZwkJCQl0eXBlOworCVJhbmdlVmFyCQkgICAqcmVs YXRpb247CQkvKiByZWxhdGlvbiB0byB1cGRhdGUgKi8KKwlGb3JQb3J0aW9uT2ZDbGF1c2Ug KmZvclBvcnRpb25PZjsJLyogRk9SIFBPUlRJT04gT0YgY2xhdXNlICovCisJTGlzdAkJCSAg ICp0YXJnZXRMaXN0OwkJLyogdGhlIHRhcmdldCBsaXN0IChvZiBSZXNUYXJnZXQpICovCisJ Tm9kZQkJCSAgICp3aGVyZUNsYXVzZTsJLyogcXVhbGlmaWNhdGlvbnMgKi8KKwlMaXN0CQkJ ICAgKmZyb21DbGF1c2U7CQkvKiBvcHRpb25hbCBmcm9tIGNsYXVzZSBmb3IgbW9yZSB0YWJs ZXMgKi8KKwlMaXN0CQkJICAgKnJldHVybmluZ0xpc3Q7CS8qIGxpc3Qgb2YgZXhwcmVzc2lv bnMgdG8gcmV0dXJuICovCisJV2l0aENsYXVzZQkJICAgKndpdGhDbGF1c2U7CQkvKiBXSVRI IGNsYXVzZSAqLwogfSBVcGRhdGVTdG10OwogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaCBiL3NyYy9pbmNs dWRlL25vZGVzL3BhdGhub2Rlcy5oCmluZGV4IDUzNDY5MmJlZTE4Li4yY2Q4YzM4OTYyYiAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmgKKysrIGIvc3JjL2lu Y2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmgKQEAgLTIzNjQsNiArMjM2NCw3IEBAIHR5cGVkZWYg c3RydWN0IE1vZGlmeVRhYmxlUGF0aAogCUxpc3QJICAgKnJldHVybmluZ0xpc3RzOyAvKiBw ZXItdGFyZ2V0LXRhYmxlIFJFVFVSTklORyB0bGlzdHMgKi8KIAlMaXN0CSAgICpyb3dNYXJr czsJCS8qIFBsYW5Sb3dNYXJrcyAobm9uLWxvY2tpbmcgb25seSkgKi8KIAlPbkNvbmZsaWN0 RXhwciAqb25jb25mbGljdDsgLyogT04gQ09ORkxJQ1QgY2xhdXNlLCBvciBOVUxMICovCisJ Rm9yUG9ydGlvbk9mRXhwciAqZm9yUG9ydGlvbk9mOwkvKiBGT1IgUE9SVElPTiBPRiBjbGF1 c2UgZm9yIFVQREFURS9ERUxFVEUgKi8KIAlpbnQJCQllcHFQYXJhbTsJCS8qIElEIG9mIFBh cmFtIGZvciBFdmFsUGxhblF1YWwgcmUtZXZhbCAqLwogCUxpc3QJICAgKm1lcmdlQWN0aW9u TGlzdHM7CS8qIHBlci10YXJnZXQtdGFibGUgbGlzdHMgb2YgYWN0aW9ucyBmb3IKIAkJCQkJ CQkJCSAqIE1FUkdFICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9k ZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCmluZGV4IGI0ZWY2YmM0NGM5 Li45Y2I5YjE4YTRjMSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVz LmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgKQEAgLTI0Myw2ICsyNDMs NyBAQCB0eXBlZGVmIHN0cnVjdCBNb2RpZnlUYWJsZQogCUxpc3QJICAgKnJvd01hcmtzOwkJ LyogUGxhblJvd01hcmtzIChub24tbG9ja2luZyBvbmx5KSAqLwogCWludAkJCWVwcVBhcmFt OwkJLyogSUQgb2YgUGFyYW0gZm9yIEV2YWxQbGFuUXVhbCByZS1ldmFsICovCiAJT25Db25m bGljdEFjdGlvbiBvbkNvbmZsaWN0QWN0aW9uOwkvKiBPTiBDT05GTElDVCBhY3Rpb24gKi8K KwlOb2RlCSAgICpmb3JQb3J0aW9uT2Y7CS8qIEZPUiBQT1JUSU9OIE9GIGNsYXVzZSBmb3Ig VVBEQVRFL0RFTEVURSAqLwogCUxpc3QJICAgKmFyYml0ZXJJbmRleGVzOyAvKiBMaXN0IG9m IE9OIENPTkZMSUNUIGFyYml0ZXIgaW5kZXggT0lEcyAgKi8KIAlMaXN0CSAgICpvbkNvbmZs aWN0U2V0OwkvKiBJTlNFUlQgT04gQ09ORkxJQ1QgRE8gVVBEQVRFIHRhcmdldGxpc3QgKi8K IAlMaXN0CSAgICpvbkNvbmZsaWN0Q29sczsgLyogdGFyZ2V0IGNvbHVtbiBudW1iZXJzIGZv ciBvbkNvbmZsaWN0U2V0ICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wcmlt bm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oCmluZGV4IDRhMTU0NjA2 ZDJiLi5lYTY3MDFkODNjYSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5v ZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmgKQEAgLTIwNjgsNCAr MjA2OCwzMCBAQCB0eXBlZGVmIHN0cnVjdCBPbkNvbmZsaWN0RXhwcgogCUxpc3QJICAgKmV4 Y2xSZWxUbGlzdDsJLyogdGxpc3Qgb2YgdGhlIEVYQ0xVREVEIHBzZXVkbyByZWxhdGlvbiAq LwogfSBPbkNvbmZsaWN0RXhwcjsKIAorLyotLS0tLS0tLS0tCisgKiBGb3JQb3J0aW9uT2ZF eHByIC0gcmVwcmVzZW50cyBhIEZPUiBQT1JUSU9OIE9GIC4uLiBleHByZXNzaW9uCisgKgor ICogV2Ugc2V0IHVwIGFuIGV4cHJlc3Npb24gdG8gbWFrZSBhIHJhbmdlIGZyb20gdGhlIEZS T00vVE8gYm91bmRzLAorICogc28gdGhhdCB3ZSBjYW4gdXNlIHJhbmdlIG9wZXJhdG9ycyB3 aXRoIGl0LgorICoKKyAqIFRoZW4gd2Ugc2V0IHVwIGFuIG92ZXJsYXBzIGV4cHJlc3Npb24g YmV0d2VlbiB0aGF0IGFuZCB0aGUgcmFuZ2UgY29sdW1uLAorICogc28gdGhhdCB3ZSBjYW4g ZmluZCB0aGUgcm93cyB3ZSBuZWVkIHRvIHVwZGF0ZS9kZWxldGUuCisgKgorICogSW4gdGhl IGV4ZWN1dG9yIHdlJ2xsIGFsc28gYnVpbGQgYW4gaW50ZXJzZWN0IGV4cHJlc3Npb24gYmV0 d2VlbiB0aGUKKyAqIHRhcmdldGVkIHJhbmdlIGFuZCB0aGUgcmFuZ2UgY29sdW1uLCBzbyB0 aGF0IHdlIGNhbiB1cGRhdGUgdGhlIHN0YXJ0L2VuZAorICogYm91bmRzIG9mIHRoZSBVUERB VEUnZCByZWNvcmQuCisgKi0tLS0tLS0tLS0KKyAqLwordHlwZWRlZiBzdHJ1Y3QgRm9yUG9y dGlvbk9mRXhwcgoreworCU5vZGVUYWcJCXR5cGU7CisJVmFyCQkgICAqcmFuZ2VWYXI7CQkJ LyogUmFuZ2UgY29sdW1uICovCisJY2hhcgkgICAqcmFuZ2VfbmFtZTsJCQkvKiBSYW5nZSBu YW1lICovCisJTm9kZQkgICAqdGFyZ2V0UmFuZ2U7CQkvKiBGT1IgUE9SVElPTiBPRiBib3Vu ZHMgYXMgYSByYW5nZSAqLworCU9pZAkJCXJhbmdlVHlwZTsJCQkvKiB0eXBlIG9mIHRhcmdl dFJhbmdlICovCisJTm9kZQkgICAqb3ZlcmxhcHNFeHByOwkJLyogcmFuZ2UgJiYgdGFyZ2V0 UmFuZ2UgKi8KKwlMaXN0CSAgICpyYW5nZVRhcmdldExpc3Q7CS8qIExpc3Qgb2YgVGFyZ2V0 RW50cnlzIHRvIHNldCB0aGUgdGltZSBjb2x1bW4ocykgKi8KKwlPaWQJCQl3aXRob3V0UG9y dGlvblByb2M7CS8qIHByb2MgZm9yIG9sZF9yYW5nZSBALSB0YXJnZXRfcmFuZ2UgKi8KK30g Rm9yUG9ydGlvbk9mRXhwcjsKKwogI2VuZGlmCQkJCQkJCS8qIFBSSU1OT0RFU19IICovCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGF0aG5vZGUuaCBiL3NyYy9pbmNs dWRlL29wdGltaXplci9wYXRobm9kZS5oCmluZGV4IGM0M2Q5N2I0OGE2Li4yMDE0Y2YyMzIz NCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL3BhdGhub2RlLmgKKysrIGIv c3JjL2luY2x1ZGUvb3B0aW1pemVyL3BhdGhub2RlLmgKQEAgLTI4Myw3ICsyODMsOCBAQCBl eHRlcm4gTW9kaWZ5VGFibGVQYXRoICpjcmVhdGVfbW9kaWZ5dGFibGVfcGF0aChQbGFubmVy SW5mbyAqcm9vdCwKIAkJCQkJCQkJCQkJCUxpc3QgKnVwZGF0ZUNvbG5vc0xpc3RzLAogCQkJ CQkJCQkJCQkJTGlzdCAqd2l0aENoZWNrT3B0aW9uTGlzdHMsIExpc3QgKnJldHVybmluZ0xp c3RzLAogCQkJCQkJCQkJCQkJTGlzdCAqcm93TWFya3MsIE9uQ29uZmxpY3RFeHByICpvbmNv bmZsaWN0LAotCQkJCQkJCQkJCQkJTGlzdCAqbWVyZ2VBY3Rpb25MaXN0cywgaW50IGVwcVBh cmFtKTsKKwkJCQkJCQkJCQkJCUxpc3QgKm1lcmdlQWN0aW9uTGlzdHMsCisJCQkJCQkJCQkJ CQlGb3JQb3J0aW9uT2ZFeHByICpmb3JQb3J0aW9uT2YsIGludCBlcHFQYXJhbSk7CiBleHRl cm4gTGltaXRQYXRoICpjcmVhdGVfbGltaXRfcGF0aChQbGFubmVySW5mbyAqcm9vdCwgUmVs T3B0SW5mbyAqcmVsLAogCQkJCQkJCQkJUGF0aCAqc3VicGF0aCwKIAkJCQkJCQkJCU5vZGUg KmxpbWl0T2Zmc2V0LCBOb2RlICpsaW1pdENvdW50LApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvcGFyc2VyL2FuYWx5emUuaCBiL3NyYy9pbmNsdWRlL3BhcnNlci9hbmFseXplLmgKaW5k ZXggNWVjZGQxMDk0NjYuLmU1MTJmNGIyNGVhIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9w YXJzZXIvYW5hbHl6ZS5oCisrKyBiL3NyYy9pbmNsdWRlL3BhcnNlci9hbmFseXplLmgKQEAg LTQzLDcgKzQzLDggQEAgZXh0ZXJuIExpc3QgKnRyYW5zZm9ybUluc2VydFJvdyhQYXJzZVN0 YXRlICpwc3RhdGUsIExpc3QgKmV4cHJsaXN0LAogCQkJCQkJCQlMaXN0ICpzdG10Y29scywg TGlzdCAqaWNvbHVtbnMsIExpc3QgKmF0dHJub3MsCiAJCQkJCQkJCWJvb2wgc3RyaXBfaW5k aXJlY3Rpb24pOwogZXh0ZXJuIExpc3QgKnRyYW5zZm9ybVVwZGF0ZVRhcmdldExpc3QoUGFy c2VTdGF0ZSAqcHN0YXRlLAotCQkJCQkJCQkJICAgTGlzdCAqb3JpZ1RsaXN0KTsKKwkJCQkJ CQkJCSAgIExpc3QgKm9yaWdUbGlzdCwKKwkJCQkJCQkJCSAgIEZvclBvcnRpb25PZkV4cHIg KmZvclBvcnRpb25PZik7CiBleHRlcm4gUXVlcnkgKnRyYW5zZm9ybVRvcExldmVsU3RtdChQ YXJzZVN0YXRlICpwc3RhdGUsIFJhd1N0bXQgKnBhcnNlVHJlZSk7CiBleHRlcm4gUXVlcnkg KnRyYW5zZm9ybVN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpwYXJzZVRyZWUpOwog CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmggYi9zcmMvaW5jbHVk ZS9wYXJzZXIva3dsaXN0LmgKaW5kZXggMWQzZjdiZDM3ZjIuLjcwN2E1MTczMzlhIDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmgKKysrIGIvc3JjL2luY2x1ZGUv cGFyc2VyL2t3bGlzdC5oCkBAIC0zMzAsNiArMzMwLDcgQEAgUEdfS0VZV09SRCgicGVyaW9k IiwgUEVSSU9ELCBSRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgi cGxhY2luZyIsIFBMQUNJTkcsIFJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19L RVlXT1JEKCJwbGFucyIsIFBMQU5TLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwp CiBQR19LRVlXT1JEKCJwb2xpY3kiLCBQT0xJQ1ksIFVOUkVTRVJWRURfS0VZV09SRCwgQkFS RV9MQUJFTCkKK1BHX0tFWVdPUkQoInBvcnRpb24iLCBQT1JUSU9OLCBVTlJFU0VSVkVEX0tF WVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJwb3NpdGlvbiIsIFBPU0lUSU9OLCBD T0xfTkFNRV9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgicHJlY2VkaW5nIiwg UFJFQ0VESU5HLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JE KCJwcmVjaXNpb24iLCBQUkVDSVNJT04sIENPTF9OQU1FX0tFWVdPUkQsIEFTX0xBQkVMKQpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUuaCBiL3NyYy9pbmNs dWRlL3BhcnNlci9wYXJzZV9ub2RlLmgKaW5kZXggOTlkNjUxNTczNjUuLjVlNzQwZmVmODgx IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2Vfbm9kZS5oCisrKyBiL3Ny Yy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ub2RlLmgKQEAgLTU2LDYgKzU2LDcgQEAgdHlwZWRl ZiBlbnVtIFBhcnNlRXhwcktpbmQKIAlFWFBSX0tJTkRfVVBEQVRFX1NPVVJDRSwJLyogVVBE QVRFIGFzc2lnbm1lbnQgc291cmNlIGl0ZW0gKi8KIAlFWFBSX0tJTkRfVVBEQVRFX1RBUkdF VCwJLyogVVBEQVRFIGFzc2lnbm1lbnQgdGFyZ2V0IGl0ZW0gKi8KIAlFWFBSX0tJTkRfTUVS R0VfV0hFTiwJCS8qIE1FUkdFIFdIRU4gW05PVF0gTUFUQ0hFRCBjb25kaXRpb24gKi8KKwlF WFBSX0tJTkRfVVBEQVRFX1BPUlRJT04sCS8qIFVQREFURSBGT1IgUE9SVElPTiBPRiBpdGVt ICovCiAJRVhQUl9LSU5EX0dST1VQX0JZLAkJCS8qIEdST1VQIEJZICovCiAJRVhQUl9LSU5E X09SREVSX0JZLAkJCS8qIE9SREVSIEJZICovCiAJRVhQUl9LSU5EX0RJU1RJTkNUX09OLAkJ LyogRElTVElOQ1QgT04gKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL2xzeXNj YWNoZS5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvbHN5c2NhY2hlLmgKaW5kZXggZTRhMjAwYjAw ZWMuLjQ4ZGYxMDdjMWNlIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9sc3lzY2Fj aGUuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaApAQCAtMTE5LDcgKzEx OSw3IEBAIGV4dGVybiBPaWQJZ2V0X25lZ2F0b3IoT2lkIG9wbm8pOwogZXh0ZXJuIFJlZ1By b2NlZHVyZSBnZXRfb3BycmVzdChPaWQgb3Bubyk7CiBleHRlcm4gUmVnUHJvY2VkdXJlIGdl dF9vcHJqb2luKE9pZCBvcG5vKTsKIGV4dGVybiBjaGFyICpnZXRfZnVuY19uYW1lKE9pZCBm dW5jaWQpOwotZXh0ZXJuIE9pZAlnZXRfZnVuY19uYW1lc3BhY2UoT2lkIGZ1bmNpZCk7Citl eHRlcm4gT2lkCWdldF9mdW5jX25hbWVzcGFjZShPaWQgZnVuY2lkLCBib29sIG1pc3Npbmdf b2spOwogZXh0ZXJuIE9pZAlnZXRfZnVuY19yZXR0eXBlKE9pZCBmdW5jaWQpOwogZXh0ZXJu IGludAlnZXRfZnVuY19uYXJncyhPaWQgZnVuY2lkKTsKIGV4dGVybiBPaWQJZ2V0X2Z1bmNf c2lnbmF0dXJlKE9pZCBmdW5jaWQsIE9pZCAqKmFyZ3R5cGVzLCBpbnQgKm5hcmdzKTsKQEAg LTE0Miw2ICsxNDIsOCBAQCBleHRlcm4gY2hhciBnZXRfcmVsX3BlcnNpc3RlbmNlKE9pZCBy ZWxpZCk7CiBleHRlcm4gT2lkCWdldF90cmFuc2Zvcm1fZnJvbXNxbChPaWQgdHlwaWQsIE9p ZCBsYW5naWQsIExpc3QgKnRyZnR5cGVzKTsKIGV4dGVybiBPaWQJZ2V0X3RyYW5zZm9ybV90 b3NxbChPaWQgdHlwaWQsIE9pZCBsYW5naWQsIExpc3QgKnRyZnR5cGVzKTsKIGV4dGVybiBi b29sIGdldF90eXBpc2RlZmluZWQoT2lkIHR5cGlkKTsKK2V4dGVybiBjaGFyICpnZXRfdHlw bmFtZShPaWQgdHlwaWQpOworZXh0ZXJuIGJvb2wgZ2V0X3R5cG5hbWVfYW5kX25hbWVzcGFj ZShPaWQgdHlwaWQsIGNoYXIgKip0eXBuYW1lLCBjaGFyICoqdHlwbmFtZXNwYWNlKTsKIGV4 dGVybiBpbnQxNiBnZXRfdHlwbGVuKE9pZCB0eXBpZCk7CiBleHRlcm4gYm9vbCBnZXRfdHlw Ynl2YWwoT2lkIHR5cGlkKTsKIGV4dGVybiB2b2lkIGdldF90eXBsZW5ieXZhbChPaWQgdHlw aWQsIGludDE2ICp0eXBsZW4sIGJvb2wgKnR5cGJ5dmFsKTsKZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZm9yX3BvcnRpb25fb2Yub3V0IGIvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9mb3JfcG9ydGlvbl9vZi5vdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAuLjljZDgwYjRkZmRjCi0tLSAvZGV2L251bGwKKysrIGIvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9mb3JfcG9ydGlvbl9vZi5vdXQKQEAgLTAsMCArMSw2 ODUgQEAKKy0tIFRlc3RzIGZvciBVUERBVEUvREVMRVRFIEZPUiBQT1JUSU9OIE9GCistLSBX b3JrcyBvbiBub24tUEsgY29sdW1ucworQ1JFQVRFIFRBQkxFIGZvcl9wb3J0aW9uX29mX3Rl c3QgKAorICBpZCBpbnQ0cmFuZ2UsCisgIHZhbGlkX2F0IHRzcmFuZ2UsCisgIG5hbWUgdGV4 dCBOT1QgTlVMTAorKTsKK0lOU0VSVCBJTlRPIGZvcl9wb3J0aW9uX29mX3Rlc3QgVkFMVUVT CisoJ1sxLDFdJywgJ1syMDE4LTAxLTAyLDIwMjAtMDEtMDEpJywgJ29uZScpOworVVBEQVRF IGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIw MTgtMDEtMTUnIFRPICcyMDE5LTAxLTAxJworU0VUIG5hbWUgPSAnZm9vJzsKK0RFTEVURSBG Uk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00g JzIwMTktMDEtMTUnIFRPIE5VTEw7CitTRUxFQ1QgKiBGUk9NIGZvcl9wb3J0aW9uX29mX3Rl c3Q7CisgIGlkICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAg ICAgICAgICAgICAgICAgIHwgbmFtZSAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLQorIFsxLDIpIHwg WyJNb24gSmFuIDE1IDAwOjAwOjAwIDIwMTgiLCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTki KSB8IGZvbworIFsxLDIpIHwgWyJUdWUgSmFuIDAyIDAwOjAwOjAwIDIwMTgiLCJNb24gSmFu IDE1IDAwOjAwOjAwIDIwMTgiKSB8IG9uZQorIFsxLDIpIHwgWyJUdWUgSmFuIDAxIDAwOjAw OjAwIDIwMTkiLCJUdWUgSmFuIDE1IDAwOjAwOjAwIDIwMTkiKSB8IG9uZQorKDMgcm93cykK KworLS0gV29ya3Mgb24gbW9yZSB0aGFuIG9uZSByYW5nZQorRFJPUCBUQUJMRSBmb3JfcG9y dGlvbl9vZl90ZXN0OworQ1JFQVRFIFRBQkxFIGZvcl9wb3J0aW9uX29mX3Rlc3QgKAorICBp ZCBpbnQ0cmFuZ2UsCisgIHZhbGlkMV9hdCB0c3JhbmdlLAorICB2YWxpZDJfYXQgdHNyYW5n ZSwKKyAgbmFtZSB0ZXh0IE5PVCBOVUxMCispOworSU5TRVJUIElOVE8gZm9yX3BvcnRpb25f b2ZfdGVzdCBWQUxVRVMKKygnWzEsMV0nLCAnWzIwMTgtMDEtMDIsMjAxOC0wMi0wMyknLCAn WzIwMTUtMDEtMDEsMjAyNS0wMS0wMSknLCAnb25lJyk7CitVUERBVEUgZm9yX3BvcnRpb25f b2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWQxX2F0IEZST00gJzIwMTgtMDEtMTUnIFRP IE5VTEwKK1NFVCBuYW1lID0gJ2Zvbyc7CitTRUxFQ1QgKiBGUk9NIGZvcl9wb3J0aW9uX29m X3Rlc3Q7CisgIGlkICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkMV9hdCAgICAg ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZDJfYXQg ICAgICAgICAgICAgICAgICAgICAgICB8IG5hbWUgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t CisgWzEsMikgfCBbIk1vbiBKYW4gMTUgMDA6MDA6MDAgMjAxOCIsIlNhdCBGZWIgMDMgMDA6 MDA6MDAgMjAxOCIpIHwgWyJUaHUgSmFuIDAxIDAwOjAwOjAwIDIwMTUiLCJXZWQgSmFuIDAx IDAwOjAwOjAwIDIwMjUiKSB8IGZvbworIFsxLDIpIHwgWyJUdWUgSmFuIDAyIDAwOjAwOjAw IDIwMTgiLCJNb24gSmFuIDE1IDAwOjAwOjAwIDIwMTgiKSB8IFsiVGh1IEphbiAwMSAwMDow MDowMCAyMDE1IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDI1IikgfCBvbmUKKygyIHJvd3Mp CisKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZDJf YXQgRlJPTSAnMjAxOC0wMS0xNScgVE8gTlVMTAorU0VUIG5hbWUgPSAnYmFyJzsKK1NFTEVD VCAqIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdDsKKyAgaWQgICB8ICAgICAgICAgICAgICAg ICAgICAgICAgdmFsaWQxX2F0ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAg ICAgICAgICAgICAgIHZhbGlkMl9hdCAgICAgICAgICAgICAgICAgICAgICAgIHwgbmFtZSAK Ky0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0KKyBbMSwyKSB8IFsiTW9uIEphbiAxNSAwMDowMDow MCAyMDE4IiwiU2F0IEZlYiAwMyAwMDowMDowMCAyMDE4IikgfCBbIk1vbiBKYW4gMTUgMDA6 MDA6MDAgMjAxOCIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyNSIpIHwgYmFyCisgWzEsMikg fCBbIk1vbiBKYW4gMTUgMDA6MDA6MDAgMjAxOCIsIlNhdCBGZWIgMDMgMDA6MDA6MDAgMjAx OCIpIHwgWyJUaHUgSmFuIDAxIDAwOjAwOjAwIDIwMTUiLCJNb24gSmFuIDE1IDAwOjAwOjAw IDIwMTgiKSB8IGZvbworIFsxLDIpIHwgWyJUdWUgSmFuIDAyIDAwOjAwOjAwIDIwMTgiLCJN b24gSmFuIDE1IDAwOjAwOjAwIDIwMTgiKSB8IFsiTW9uIEphbiAxNSAwMDowMDowMCAyMDE4 IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDI1IikgfCBiYXIKKyBbMSwyKSB8IFsiVHVlIEph biAwMiAwMDowMDowMCAyMDE4IiwiTW9uIEphbiAxNSAwMDowMDowMCAyMDE4IikgfCBbIlRo dSBKYW4gMDEgMDA6MDA6MDAgMjAxNSIsIk1vbiBKYW4gMTUgMDA6MDA6MDAgMjAxOCIpIHwg b25lCisoNCByb3dzKQorCitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1Ig UE9SVElPTiBPRiB2YWxpZDFfYXQgRlJPTSAnMjAxOC0wMS0yMCcgVE8gTlVMTDsKK1NFTEVD VCAqIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdDsKKyAgaWQgICB8ICAgICAgICAgICAgICAg ICAgICAgICAgdmFsaWQxX2F0ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAg ICAgICAgICAgICAgIHZhbGlkMl9hdCAgICAgICAgICAgICAgICAgICAgICAgIHwgbmFtZSAK Ky0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0KKyBbMSwyKSB8IFsiVHVlIEphbiAwMiAwMDowMDow MCAyMDE4IiwiTW9uIEphbiAxNSAwMDowMDowMCAyMDE4IikgfCBbIk1vbiBKYW4gMTUgMDA6 MDA6MDAgMjAxOCIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyNSIpIHwgYmFyCisgWzEsMikg fCBbIlR1ZSBKYW4gMDIgMDA6MDA6MDAgMjAxOCIsIk1vbiBKYW4gMTUgMDA6MDA6MDAgMjAx OCIpIHwgWyJUaHUgSmFuIDAxIDAwOjAwOjAwIDIwMTUiLCJNb24gSmFuIDE1IDAwOjAwOjAw IDIwMTgiKSB8IG9uZQorIFsxLDIpIHwgWyJNb24gSmFuIDE1IDAwOjAwOjAwIDIwMTgiLCJT YXQgSmFuIDIwIDAwOjAwOjAwIDIwMTgiKSB8IFsiTW9uIEphbiAxNSAwMDowMDowMCAyMDE4 IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDI1IikgfCBiYXIKKyBbMSwyKSB8IFsiTW9uIEph biAxNSAwMDowMDowMCAyMDE4IiwiU2F0IEphbiAyMCAwMDowMDowMCAyMDE4IikgfCBbIlRo dSBKYW4gMDEgMDA6MDA6MDAgMjAxNSIsIk1vbiBKYW4gMTUgMDA6MDA6MDAgMjAxOCIpIHwg Zm9vCisoNCByb3dzKQorCitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1Ig UE9SVElPTiBPRiB2YWxpZDJfYXQgRlJPTSAnMjAxOC0wMS0yMCcgVE8gTlVMTDsKK1NFTEVD VCAqIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdDsKKyAgaWQgICB8ICAgICAgICAgICAgICAg ICAgICAgICAgdmFsaWQxX2F0ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAg ICAgICAgICAgICAgIHZhbGlkMl9hdCAgICAgICAgICAgICAgICAgICAgICAgIHwgbmFtZSAK Ky0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0KKyBbMSwyKSB8IFsiVHVlIEphbiAwMiAwMDowMDow MCAyMDE4IiwiTW9uIEphbiAxNSAwMDowMDowMCAyMDE4IikgfCBbIlRodSBKYW4gMDEgMDA6 MDA6MDAgMjAxNSIsIk1vbiBKYW4gMTUgMDA6MDA6MDAgMjAxOCIpIHwgb25lCisgWzEsMikg fCBbIk1vbiBKYW4gMTUgMDA6MDA6MDAgMjAxOCIsIlNhdCBKYW4gMjAgMDA6MDA6MDAgMjAx OCIpIHwgWyJUaHUgSmFuIDAxIDAwOjAwOjAwIDIwMTUiLCJNb24gSmFuIDE1IDAwOjAwOjAw IDIwMTgiKSB8IGZvbworIFsxLDIpIHwgWyJUdWUgSmFuIDAyIDAwOjAwOjAwIDIwMTgiLCJN b24gSmFuIDE1IDAwOjAwOjAwIDIwMTgiKSB8IFsiTW9uIEphbiAxNSAwMDowMDowMCAyMDE4 IiwiU2F0IEphbiAyMCAwMDowMDowMCAyMDE4IikgfCBiYXIKKyBbMSwyKSB8IFsiTW9uIEph biAxNSAwMDowMDowMCAyMDE4IiwiU2F0IEphbiAyMCAwMDowMDowMCAyMDE4IikgfCBbIk1v biBKYW4gMTUgMDA6MDA6MDAgMjAxOCIsIlNhdCBKYW4gMjAgMDA6MDA6MDAgMjAxOCIpIHwg YmFyCisoNCByb3dzKQorCistLSBUZXN0IHdpdGggTlVMTHMgaW4gdGhlIHNjYWxhci9yYW5n ZSBrZXkgY29sdW1ucy4KKy0tIFRoaXMgd29uJ3QgaGFwcGVuIGlmIHRoZXJlIGlzIGEgUFJJ TUFSWSBLRVkgb3IgVU5JUVVFIGNvbnN0cmFpbnQKKy0tIGJ1dCBGT1IgUE9SVElPTiBPRiBz aG91bGRuJ3QgcmVxdWlyZSB0aGF0LgorRFJPUCBUQUJMRSBmb3JfcG9ydGlvbl9vZl90ZXN0 OworQ1JFQVRFIFVOTE9HR0VEIFRBQkxFIGZvcl9wb3J0aW9uX29mX3Rlc3QgKAorICBpZCBp bnQ0cmFuZ2UsCisgIHZhbGlkX2F0IHRzcmFuZ2UsCisgIG5hbWUgdGV4dAorKTsKK0lOU0VS VCBJTlRPIGZvcl9wb3J0aW9uX29mX3Rlc3QgVkFMVUVTCisgICgnWzEsMV0nLCBOVUxMLCAn MSBudWxsJyksCisgICgnWzEsMV0nLCAnKCwpJywgJzEgdW5ib3VuZGVkJyksCisgICgnWzEs MV0nLCAnZW1wdHknLCAnMSBlbXB0eScpLAorICAoTlVMTCwgTlVMTCwgTlVMTCksCisgIChO VUxMLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTktMDEtMDEnKSwgJ251bGwga2V5Jyk7 CitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorICBGT1IgUE9SVElPTiBPRiB2YWxpZF9h dCBGUk9NIE5VTEwgVE8gTlVMTAorICBTRVQgbmFtZSA9ICdOVUxMIHRvIE5VTEwnOworU0VM RUNUICogRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0OworICBpZCAgIHwgICAgICAgICAgICAg ICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICBuYW1l ICAgICAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tCisgWzEsMikgfCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMSBudWxs CisgWzEsMikgfCBlbXB0eSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgMSBlbXB0eQorICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IAorIFsxLDIpIHwgKCwpICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5V TEwgdG8gTlVMTAorICAgICAgIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUdWUg SmFuIDAxIDAwOjAwOjAwIDIwMTkiKSB8IE5VTEwgdG8gTlVMTAorKDUgcm93cykKKworRFJP UCBUQUJMRSBmb3JfcG9ydGlvbl9vZl90ZXN0OworQ1JFQVRFIFRBQkxFIGZvcl9wb3J0aW9u X29mX3Rlc3QgKAorICBpZCBpbnQ0cmFuZ2UgTk9UIE5VTEwsCisgIHZhbGlkX2F0IHRzcmFu Z2UgTk9UIE5VTEwsCisgIG5hbWUgdGV4dCBOT1QgTlVMTCwKKwlDT05TVFJBSU5UIGZvcl9w b3J0aW9uX29mX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQ UykKKyk7CitJTlNFUlQgSU5UTyBmb3JfcG9ydGlvbl9vZl90ZXN0CitWQUxVRVMKKygnWzEs MV0nLCAnWzIwMTgtMDEtMDIsMjAxOC0wMi0wMyknLCAnb25lJyksCisoJ1sxLDFdJywgJ1sy MDE4LTAyLTAzLDIwMTgtMDMtMDMpJywgJ29uZScpLAorKCdbMSwxXScsICdbMjAxOC0wMy0w MywyMDE4LTA0LTA0KScsICdvbmUnKSwKKygnWzIsMl0nLCAnWzIwMTgtMDEtMDEsMjAxOC0w MS0wNSknLCAndHdvJyksCisoJ1szLDNdJywgJ1syMDE4LTAxLTAxLCknLCAndGhyZWUnKSwK KygnWzQsNF0nLCAnKCwyMDE4LTA0LTAxKScsICdmb3VyJyksCisoJ1s1LDVdJywgJygsKScs ICdmaXZlJykKKzsKKy0tCistLSBVUERBVEUgdGVzdHMKKy0tCistLSBTZXR0aW5nIHdpdGgg YSBtaXNzaW5nIGNvbHVtbiBmYWlscworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZP UiBQT1JUSU9OIE9GIGludmFsaWRfYXQgRlJPTSAnMjAxOC0wNi0wMScgVE8gTlVMTAorU0VU IG5hbWUgPSAnZm9vJworV0hFUkUgaWQgPSAnWzUsNV0nOworRVJST1I6ICBjb2x1bW4gb3Ig cGVyaW9kICJpbnZhbGlkX2F0IiBvZiByZWxhdGlvbiAiZm9yX3BvcnRpb25fb2ZfdGVzdCIg ZG9lcyBub3QgZXhpc3QKK0xJTkUgMjogRk9SIFBPUlRJT04gT0YgaW52YWxpZF9hdCBGUk9N ICcyMDE4LTA2LTAxJyBUTyBOVUxMCisgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIFNl dHRpbmcgdGhlIHJhbmdlIGZhaWxzCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9S IFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wNi0wMScgVE8gTlVMTAorU0VUIHZh bGlkX2F0ID0gJ1sxOTkwLTAxLTAxLDE5OTktMDEtMDEpJworV0hFUkUgaWQgPSAnWzUsNV0n OworRVJST1I6ICBjYW4ndCBkaXJlY3RseSBhc3NpZ24gdG8gInZhbGlkX2F0IiBpbiBhIEZP UiBQT1JUSU9OIE9GIHVwZGF0ZQorTElORSAzOiBTRVQgdmFsaWRfYXQgPSAnWzE5OTAtMDEt MDEsMTk5OS0wMS0wMSknCisgICAgICAgICAgICBeCistLSBUaGUgd3JvbmcgdHlwZSBmYWls cworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0 IEZST00gMSBUTyA0CitTRVQgbmFtZSA9ICdub3BlJworV0hFUkUgaWQgPSAnWzMsM10nOwor RVJST1I6ICBmdW5jdGlvbiBwZ19jYXRhbG9nLnRzcmFuZ2UoaW50ZWdlciwgaW50ZWdlcikg ZG9lcyBub3QgZXhpc3QKK0xJTkUgMjogRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAx IFRPIDQKKyAgICAgICAgICAgICAgICAgICAgICAgXgorSElOVDogIE5vIGZ1bmN0aW9uIG1h dGNoZXMgdGhlIGdpdmVuIG5hbWUgYW5kIGFyZ3VtZW50IHR5cGVzLiBZb3UgbWlnaHQgbmVl ZCB0byBhZGQgZXhwbGljaXQgdHlwZSBjYXN0cy4KKy0tIFNldHRpbmcgd2l0aCB0aW1lc3Rh bXBzIHJldmVyc2VkIGZhaWxzCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBP UlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wNi0wMScgVE8gJzIwMTgtMDEtMDEnCitT RVQgbmFtZSA9ICd0aHJlZV4xJworV0hFUkUgaWQgPSAnWzMsM10nOworRVJST1I6ICByYW5n ZSBsb3dlciBib3VuZCBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byByYW5nZSB1cHBl ciBib3VuZAorLS0gU2V0dGluZyB3aXRoIGEgc3VicXVlcnkgZmFpbHMKK1VQREFURSBmb3Jf cG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NIChTRUxFQ1Qg JzIwMTgtMDEtMDEnKSBUTyAnMjAxOC0wNi0wMScKK1NFVCBuYW1lID0gJ25vcGUnCitXSEVS RSBpZCA9ICdbMywzXSc7CitFUlJPUjogIGNhbm5vdCB1c2Ugc3VicXVlcnkgaW4gRk9SIFBP UlRJT04gT0YgZXhwcmVzc2lvbgorTElORSAyOiBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBG Uk9NIChTRUxFQ1QgJzIwMTgtMDEtMDEnKSBUTyAnMjAxOC0uLi4KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBeCistLSBTZXR0aW5nIHdpdGggYSBjb2x1bW4gZmFp bHMKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9h dCBGUk9NIGxvd2VyKHZhbGlkX2F0KSBUTyBOVUxMCitTRVQgbmFtZSA9ICdub3BlJworV0hF UkUgaWQgPSAnWzMsM10nOworRVJST1I6ICBjYW5ub3QgdXNlIGNvbHVtbiByZWZlcmVuY2Ug aW4gRk9SIFBPUlRJT04gT0YgZXhwcmVzc2lvbgorTElORSAyOiBGT1IgUE9SVElPTiBPRiB2 YWxpZF9hdCBGUk9NIGxvd2VyKHZhbGlkX2F0KSBUTyBOVUxMCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gU2V0dGluZyB3aXRoIHRpbWVzdGFt cHMgZXF1YWwgZG9lcyBub3RoaW5nCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9S IFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wNC0wMScgVE8gJzIwMTgtMDQtMDEn CitTRVQgbmFtZSA9ICd0aHJlZV4wJworV0hFUkUgaWQgPSAnWzMsM10nOworLS0gVXBkYXRp bmcgYSBmaW5pdGUvb3BlbiBwb3J0aW9uIHdpdGggYSBmaW5pdGUvb3BlbiB0YXJnZXQKK1VQ REFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9N ICcyMDE4LTA2LTAxJyBUTyBOVUxMCitTRVQgbmFtZSA9ICd0aHJlZV4xJworV0hFUkUgaWQg PSAnWzMsM10nOworLS0gVXBkYXRpbmcgYSBmaW5pdGUvb3BlbiBwb3J0aW9uIHdpdGggYW4g b3Blbi9maW5pdGUgdGFyZ2V0CitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBP UlRJT04gT0YgdmFsaWRfYXQgRlJPTSBOVUxMIFRPICcyMDE4LTAzLTAxJworU0VUIG5hbWUg PSAndGhyZWVeMicKK1dIRVJFIGlkID0gJ1szLDNdJzsKKy0tIFVwZGF0aW5nIGFuIG9wZW4v ZmluaXRlIHBvcnRpb24gd2l0aCBhbiBvcGVuL2Zpbml0ZSB0YXJnZXQKK1VQREFURSBmb3Jf cG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NIE5VTEwgVE8g JzIwMTgtMDItMDEnCitTRVQgbmFtZSA9ICdmb3VyXjEnCitXSEVSRSBpZCA9ICdbNCw0XSc7 CistLSBVcGRhdGluZyBhbiBvcGVuL2Zpbml0ZSBwb3J0aW9uIHdpdGggYSBmaW5pdGUvb3Bl biB0YXJnZXQKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2 YWxpZF9hdCBGUk9NICcyMDE3LTAxLTAxJyBUTyBOVUxMCitTRVQgbmFtZSA9ICdmb3VyXjIn CitXSEVSRSBpZCA9ICdbNCw0XSc7CistLSBVcGRhdGluZyBhIGZpbml0ZS9maW5pdGUgcG9y dGlvbiB3aXRoIGFuIGV4YWN0IGZpdAorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZP UiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTctMDEtMDEnIFRPICcyMDE4LTAyLTAx JworU0VUIG5hbWUgPSAnZm91cl4zJworV0hFUkUgaWQgPSAnWzQsNF0nOworLS0gVXBkYXRp bmcgYW4gZW5jbG9zZWQgc3BhbgorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQ T1JUSU9OIE9GIHZhbGlkX2F0IEZST00gTlVMTCBUTyBOVUxMCitTRVQgbmFtZSA9ICd0d29e MicKK1dIRVJFIGlkID0gJ1syLDJdJzsKKy0tIFVwZGF0aW5nIGFuIG9wZW4vb3BlbiBwb3J0 aW9uIHdpdGggYSBmaW5pdGUvZmluaXRlIHRhcmdldAorVVBEQVRFIGZvcl9wb3J0aW9uX29m X3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDEtMDEnIFRPICcy MDE5LTAxLTAxJworU0VUIG5hbWUgPSAnZml2ZV4yJworV0hFUkUgaWQgPSAnWzUsNV0nOwor LS0gVXBkYXRpbmcgYW4gZW5jbG9zZWQgc3BhbiB3aXRoIHNlcGFyYXRlIHByb3RydWRpbmcg c3BhbnMKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxp ZF9hdCBGUk9NICcyMDE3LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScKK1NFVCBuYW1lID0gJ2Zp dmVeMycKK1dIRVJFIGlkID0gJ1s1LDVdJzsKKy0tIFVwZGF0aW5nIG11bHRpcGxlIGVuY2xv c2VkIHNwYW5zCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0Yg dmFsaWRfYXQgRlJPTSBOVUxMIFRPIE5VTEwKK1NFVCBuYW1lID0gJ29uZV4yJworV0hFUkUg aWQgPSAnWzEsMV0nOworLS0gVXBkYXRpbmcgd2l0aCBhIHNoaWZ0L3JlZHVjZSBjb25mbGlj dAorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0 CisgIEZST00gJzIwMTgtMDMtMDEnIEFUIFRJTUUgWk9ORSBJTlRFUlZBTCAnMScgSE9VUiBU TyBNSU5VVEUKKyAgVE8gJzIwMTktMDEtMDEnCitTRVQgbmFtZSA9ICdvbmVeMycKK1dIRVJF IGlkID0gJ1sxLDFdJzsKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElP TiBPRiB2YWxpZF9hdAorICBGUk9NICcyMDE4LTAzLTAxJyBBVCBUSU1FIFpPTkUgSU5URVJW QUwgJzInIEhPVVIKKyAgVE8gJzIwMTktMDEtMDEnCitTRVQgbmFtZSA9ICdvbmVeNCcKK1dI RVJFIGlkID0gJ1sxLDFdJzsKK0VSUk9SOiAgc3ludGF4IGVycm9yIGF0IG9yIG5lYXIgIicy MDE5LTAxLTAxJyIKK0xJTkUgNDogICBUTyAnMjAxOS0wMS0wMScKKyAgICAgICAgICAgICBe CitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQK KyAgRlJPTSAoJzIwMTgtMDMtMDEnIEFUIFRJTUUgWk9ORSBJTlRFUlZBTCAnMicgSE9VUikK KyAgVE8gJzIwMTktMDEtMDEnCitTRVQgbmFtZSA9ICdvbmVeNCcKK1dIRVJFIGlkID0gJ1sx LDFdJzsKKy0tIFdpdGggYSBkaXJlY3QgdGFyZ2V0CitVUERBVEUgZm9yX3BvcnRpb25fb2Zf dGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgKHRzcmFuZ2UoJzIwMTgtMDMtMTAnLCAn MjAxOC0wMy0xNycpKQorU0VUIG5hbWUgPSAnb25lXjUnCitXSEVSRSBpZCA9ICdbMSwxXSc7 CistLSBVcGRhdGluZyB0aGUgbm9uLXJhbmdlIHBhcnQgb2YgdGhlIFBLOgorVVBEQVRFIGZv cl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgt MDItMTUnIFRPIE5VTEwKK1NFVCBpZCA9ICdbNiw2XScKK1dIRVJFIGlkID0gJ1sxLDFdJzsK Ky0tIFVQREFURSB3aXRoIG5vIFdIRVJFIGNsYXVzZQorVVBEQVRFIGZvcl9wb3J0aW9uX29m X3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMzAtMDEtMDEnIFRPIE5V TEwKK1NFVCBuYW1lID0gbmFtZSB8fCAnKic7CitTRUxFQ1QgKiBGUk9NIGZvcl9wb3J0aW9u X29mX3Rlc3QgT1JERVIgQlkgaWQsIHZhbGlkX2F0OworICBpZCAgIHwgICAgICAgICAgICAg ICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgbmFtZSAg IAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIFsxLDIpIHwgWyJUdWUgSmFuIDAyIDAwOjAw OjAwIDIwMTgiLCJTYXQgRmViIDAzIDAwOjAwOjAwIDIwMTgiKSB8IG9uZV4yCisgWzEsMikg fCBbIlNhdCBGZWIgMDMgMDA6MDA6MDAgMjAxOCIsIlRodSBGZWIgMTUgMDA6MDA6MDAgMjAx OCIpIHwgb25lXjIKKyBbMiwzKSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiRnJp IEphbiAwNSAwMDowMDowMCAyMDE4IikgfCB0d29eMgorIFszLDQpIHwgWyJNb24gSmFuIDAx IDAwOjAwOjAwIDIwMTgiLCJUaHUgTWFyIDAxIDAwOjAwOjAwIDIwMTgiKSB8IHRocmVlXjIK KyBbMyw0KSB8IFsiVGh1IE1hciAwMSAwMDowMDowMCAyMDE4IiwiRnJpIEp1biAwMSAwMDow MDowMCAyMDE4IikgfCB0aHJlZQorIFszLDQpIHwgWyJGcmkgSnVuIDAxIDAwOjAwOjAwIDIw MTgiLCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMzAiKSB8IHRocmVlXjEKKyBbMyw0KSB8IFsi VHVlIEphbiAwMSAwMDowMDowMCAyMDMwIiwpICAgICAgICAgICAgICAgICAgICAgICAgICAg fCB0aHJlZV4xKgorIFs0LDUpIHwgKCwiU3VuIEphbiAwMSAwMDowMDowMCAyMDE3IikgICAg ICAgICAgICAgICAgICAgICAgICAgICB8IGZvdXJeMQorIFs0LDUpIHwgWyJTdW4gSmFuIDAx IDAwOjAwOjAwIDIwMTciLCJUaHUgRmViIDAxIDAwOjAwOjAwIDIwMTgiKSB8IGZvdXJeMwor IFs0LDUpIHwgWyJUaHUgRmViIDAxIDAwOjAwOjAwIDIwMTgiLCJTdW4gQXByIDAxIDAwOjAw OjAwIDIwMTgiKSB8IGZvdXJeMgorIFs1LDYpIHwgKCwiU3VuIEphbiAwMSAwMDowMDowMCAy MDE3IikgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZpdmUKKyBbNSw2KSB8IFsiU3Vu IEphbiAwMSAwMDowMDowMCAyMDE3IiwiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IikgfCBm aXZlXjMKKyBbNSw2KSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVHVlIEphbiAw MSAwMDowMDowMCAyMDE5IikgfCBmaXZlXjMKKyBbNSw2KSB8IFsiVHVlIEphbiAwMSAwMDow MDowMCAyMDE5IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikgfCBmaXZlXjMKKyBbNSw2 KSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiVHVlIEphbiAwMSAwMDowMDowMCAy MDMwIikgfCBmaXZlCisgWzUsNikgfCBbIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAzMCIsKSAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgZml2ZSoKKyBbNiw3KSB8IFsiVGh1IEZlYiAx NSAwMDowMDowMCAyMDE4IiwiVGh1IE1hciAwMSAwODowMTowMCAyMDE4IikgfCBvbmVeMgor IFs2LDcpIHwgWyJUaHUgTWFyIDAxIDA4OjAxOjAwIDIwMTgiLCJUaHUgTWFyIDAxIDEwOjAw OjAwIDIwMTgiKSB8IG9uZV4zCisgWzYsNykgfCBbIlRodSBNYXIgMDEgMTA6MDA6MDAgMjAx OCIsIlNhdCBNYXIgMDMgMDA6MDA6MDAgMjAxOCIpIHwgb25lXjQKKyBbNiw3KSB8IFsiU2F0 IE1hciAwMyAwMDowMDowMCAyMDE4IiwiU2F0IE1hciAxMCAwMDowMDowMCAyMDE4IikgfCBv bmVeNAorIFs2LDcpIHwgWyJTYXQgTWFyIDEwIDAwOjAwOjAwIDIwMTgiLCJTYXQgTWFyIDE3 IDAwOjAwOjAwIDIwMTgiKSB8IG9uZV41CisgWzYsNykgfCBbIlNhdCBNYXIgMTcgMDA6MDA6 MDAgMjAxOCIsIldlZCBBcHIgMDQgMDA6MDA6MDAgMjAxOCIpIHwgb25lXjQKKygyMiByb3dz KQorCistLQorLS0gREVMRVRFIHRlc3RzCistLQorLS0gRGVsZXRpbmcgd2l0aCBhIG1pc3Np bmcgY29sdW1uIGZhaWxzCitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1Ig UE9SVElPTiBPRiBpbnZhbGlkX2F0IEZST00gJzIwMTgtMDYtMDEnIFRPIE5VTEwKK1dIRVJF IGlkID0gJ1s1LDVdJzsKK0VSUk9SOiAgY29sdW1uIG9yIHBlcmlvZCAiaW52YWxpZF9hdCIg b2YgcmVsYXRpb24gImZvcl9wb3J0aW9uX29mX3Rlc3QiIGRvZXMgbm90IGV4aXN0CitMSU5F IDI6IEZPUiBQT1JUSU9OIE9GIGludmFsaWRfYXQgRlJPTSAnMjAxOC0wNi0wMScgVE8gTlVM TAorICAgICAgICAgICAgICAgICAgICAgICBeCistLSBEZWxldGluZyB3aXRoIHRpbWVzdGFt cHMgcmV2ZXJzZWQgZmFpbHMKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZP UiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDYtMDEnIFRPICcyMDE4LTAxLTAx JworV0hFUkUgaWQgPSAnWzMsM10nOworRVJST1I6ICByYW5nZSBsb3dlciBib3VuZCBtdXN0 IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byByYW5nZSB1cHBlciBib3VuZAorLS0gRGVsZXRp bmcgd2l0aCB0aW1lc3RhbXBzIGVxdWFsIGRvZXMgbm90aGluZworREVMRVRFIEZST00gZm9y X3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0w NC0wMScgVE8gJzIwMTgtMDQtMDEnCitXSEVSRSBpZCA9ICdbMywzXSc7CistLSBEZWxldGlu ZyB3aXRoIGEgY2xvc2VkL2Nsb3NlZCB0YXJnZXQKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9u X29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDYtMDEnIFRP ICcyMDIwLTA2LTAxJworV0hFUkUgaWQgPSAnWzUsNV0nOworLS0gRGVsZXRpbmcgd2l0aCBh IGNsb3NlZC9vcGVuIHRhcmdldAorREVMRVRFIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdAor Rk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wNC0wMScgVE8gTlVMTAorV0hF UkUgaWQgPSAnWzMsM10nOworLS0gRGVsZXRpbmcgd2l0aCBhbiBvcGVuL2Nsb3NlZCB0YXJn ZXQKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZh bGlkX2F0IEZST00gTlVMTCBUTyAnMjAxOC0wMi0wOCcKK1dIRVJFIGlkID0gJ1sxLDFdJzsK Ky0tIERlbGV0aW5nIHdpdGggYW4gb3Blbi9vcGVuIHRhcmdldAorREVMRVRFIEZST00gZm9y X3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSBOVUxMIFRP IE5VTEwKK1dIRVJFIGlkID0gJ1s2LDZdJzsKKy0tIERFTEVURSB3aXRoIG5vIFdIRVJFIGNs YXVzZQorREVMRVRFIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0Yg dmFsaWRfYXQgRlJPTSAnMjAyNS0wMS0wMScgVE8gTlVMTDsKK1NFTEVDVCAqIEZST00gZm9y X3BvcnRpb25fb2ZfdGVzdCBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CisgIGlkICAgfCAgICAg ICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwg IG5hbWUgICAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLQorIFsxLDIpIHwgWyJUaHUgRmViIDA4 IDAwOjAwOjAwIDIwMTgiLCJUaHUgRmViIDE1IDAwOjAwOjAwIDIwMTgiKSB8IG9uZV4yCisg WzIsMykgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIkZyaSBKYW4gMDUgMDA6MDA6 MDAgMjAxOCIpIHwgdHdvXjIKKyBbMyw0KSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4 IiwiVGh1IE1hciAwMSAwMDowMDowMCAyMDE4IikgfCB0aHJlZV4yCisgWzMsNCkgfCBbIlRo dSBNYXIgMDEgMDA6MDA6MDAgMjAxOCIsIlN1biBBcHIgMDEgMDA6MDA6MDAgMjAxOCIpIHwg dGhyZWUKKyBbNCw1KSB8ICgsIlN1biBKYW4gMDEgMDA6MDA6MDAgMjAxNyIpICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCBmb3VyXjEKKyBbNCw1KSB8IFsiU3VuIEphbiAwMSAwMDow MDowMCAyMDE3IiwiVGh1IEZlYiAwMSAwMDowMDowMCAyMDE4IikgfCBmb3VyXjMKKyBbNCw1 KSB8IFsiVGh1IEZlYiAwMSAwMDowMDowMCAyMDE4IiwiU3VuIEFwciAwMSAwMDowMDowMCAy MDE4IikgfCBmb3VyXjIKKyBbNSw2KSB8ICgsIlN1biBKYW4gMDEgMDA6MDA6MDAgMjAxNyIp ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBmaXZlCisgWzUsNikgfCBbIlN1biBKYW4g MDEgMDA6MDA6MDAgMjAxNyIsIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIpIHwgZml2ZV4z CisgWzUsNikgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIkZyaSBKdW4gMDEgMDA6 MDA6MDAgMjAxOCIpIHwgZml2ZV4zCisgWzUsNikgfCBbIk1vbiBKdW4gMDEgMDA6MDA6MDAg MjAyMCIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyNSIpIHwgZml2ZQorKDExIHJvd3MpCisK Ky0tIFVQREFURSAuLi4gUkVUVVJOSU5HIHJldHVybnMgb25seSB0aGUgdXBkYXRlZCB2YWx1 ZXMgKG5vdCB0aGUgaW5zZXJ0ZWQgc2lkZSB2YWx1ZXMpCitVUERBVEUgZm9yX3BvcnRpb25f b2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wMi0wMScgVE8g JzIwMTgtMDItMTUnCitTRVQgbmFtZSA9ICd0aHJlZV4zJworV0hFUkUgaWQgPSAnWzMsM10n CitSRVRVUk5JTkcgKjsKKyAgaWQgICB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRf YXQgICAgICAgICAgICAgICAgICAgICAgICAgfCAgbmFtZSAgIAorLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tCisgWzMsNCkgfCBbIlRodSBGZWIgMDEgMDA6MDA6MDAgMjAxOCIsIlRodSBGZWIg MTUgMDA6MDA6MDAgMjAxOCIpIHwgdGhyZWVeMworKDEgcm93KQorCistLSB0ZXN0IHRoYXQg d2UgcnVuIHRyaWdnZXJzIG9uIHRoZSBVUERBVEUvREVMRVRFZCByb3cgYW5kIHRoZSBJTlNF UlRlZCByb3dzCitDUkVBVEUgRlVOQ1RJT04gZm9yX3BvcnRpb25fb2ZfdHJpZ2dlcigpCitS RVRVUk5TIHRyaWdnZXIKK0FTCiskJAorQkVHSU4KKyAgUkFJU0UgTk9USUNFICclICUgJSBv ZiAlJywgVEdfV0hFTiwgVEdfT1AsIE5FVy52YWxpZF9hdCwgT0xELnZhbGlkX2F0OworICBJ RiBUR19PUCA9ICdERUxFVEUnIFRIRU4KKyAgICBSRVRVUk4gT0xEOworICBFTFNFCisgICAg UkVUVVJOIE5FVzsKKyAgRU5EIElGOworRU5EOworJCQKK0xBTkdVQUdFIHBscGdzcWw7CitD UkVBVEUgVFJJR0dFUiB0cmdfZm9yX3BvcnRpb25fb2ZfYmVmb3JlCisgIEJFRk9SRSBJTlNF UlQgT1IgVVBEQVRFIE9SIERFTEVURSBPTiBmb3JfcG9ydGlvbl9vZl90ZXN0CisgIEZPUiBF QUNIIFJPVworICBFWEVDVVRFIEZVTkNUSU9OIGZvcl9wb3J0aW9uX29mX3RyaWdnZXIoKTsK K0NSRUFURSBUUklHR0VSIHRyZ19mb3JfcG9ydGlvbl9vZl9hZnRlcgorICBBRlRFUiBJTlNF UlQgT1IgVVBEQVRFIE9SIERFTEVURSBPTiBmb3JfcG9ydGlvbl9vZl90ZXN0CisgIEZPUiBF QUNIIFJPVworICBFWEVDVVRFIEZVTkNUSU9OIGZvcl9wb3J0aW9uX29mX3RyaWdnZXIoKTsK K1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBG Uk9NICcyMDIxLTAxLTAxJyBUTyAnMjAyMi0wMS0wMScKK1NFVCBuYW1lID0gJ2ZpdmVeNCcK K1dIRVJFIGlkID0gJ1s1LDVdJzsKK05PVElDRTogIEJFRk9SRSBVUERBVEUgWyJGcmkgSmFu IDAxIDAwOjAwOjAwIDIwMjEiLCJTYXQgSmFuIDAxIDAwOjAwOjAwIDIwMjIiKSBvZiBbIk1v biBKdW4gMDEgMDA6MDA6MDAgMjAyMCIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyNSIpCitO T1RJQ0U6ICBCRUZPUkUgSU5TRVJUIFsiTW9uIEp1biAwMSAwMDowMDowMCAyMDIwIiwiRnJp IEphbiAwMSAwMDowMDowMCAyMDIxIikgb2YgPE5VTEw+CitOT1RJQ0U6ICBCRUZPUkUgSU5T RVJUIFsiU2F0IEphbiAwMSAwMDowMDowMCAyMDIyIiwiV2VkIEphbiAwMSAwMDowMDowMCAy MDI1Iikgb2YgPE5VTEw+CitOT1RJQ0U6ICBBRlRFUiBJTlNFUlQgWyJNb24gSnVuIDAxIDAw OjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSBvZiA8TlVMTD4KK05P VElDRTogIEFGVEVSIElOU0VSVCBbIlNhdCBKYW4gMDEgMDA6MDA6MDAgMjAyMiIsIldlZCBK YW4gMDEgMDA6MDA6MDAgMjAyNSIpIG9mIDxOVUxMPgorTk9USUNFOiAgQUZURVIgVVBEQVRF IFsiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIiwiU2F0IEphbiAwMSAwMDowMDowMCAyMDIy Iikgb2YgWyJNb24gSnVuIDAxIDAwOjAwOjAwIDIwMjAiLCJXZWQgSmFuIDAxIDAwOjAwOjAw IDIwMjUiKQorREVMRVRFIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04g T0YgdmFsaWRfYXQgRlJPTSAnMjAyMy0wMS0wMScgVE8gJzIwMjQtMDEtMDEnCitXSEVSRSBp ZCA9ICdbNSw1XSc7CitOT1RJQ0U6ICBCRUZPUkUgREVMRVRFIDxOVUxMPiBvZiBbIlNhdCBK YW4gMDEgMDA6MDA6MDAgMjAyMiIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyNSIpCitOT1RJ Q0U6ICBCRUZPUkUgSU5TRVJUIFsiU2F0IEphbiAwMSAwMDowMDowMCAyMDIyIiwiU3VuIEph biAwMSAwMDowMDowMCAyMDIzIikgb2YgPE5VTEw+CitOT1RJQ0U6ICBCRUZPUkUgSU5TRVJU IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDI0IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDI1 Iikgb2YgPE5VTEw+CitOT1RJQ0U6ICBBRlRFUiBJTlNFUlQgWyJTYXQgSmFuIDAxIDAwOjAw OjAwIDIwMjIiLCJTdW4gSmFuIDAxIDAwOjAwOjAwIDIwMjMiKSBvZiA8TlVMTD4KK05PVElD RTogIEFGVEVSIElOU0VSVCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAyNCIsIldlZCBKYW4g MDEgMDA6MDA6MDAgMjAyNSIpIG9mIDxOVUxMPgorTk9USUNFOiAgQUZURVIgREVMRVRFIDxO VUxMPiBvZiBbIlNhdCBKYW4gMDEgMDA6MDA6MDAgMjAyMiIsIldlZCBKYW4gMDEgMDA6MDA6 MDAgMjAyNSIpCitTRUxFQ1QgKiBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QgT1JERVIgQlkg aWQsIHZhbGlkX2F0OworICBpZCAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9h dCAgICAgICAgICAgICAgICAgICAgICAgICB8ICBuYW1lICAgCistLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0KKyBbMSwyKSB8IFsiVGh1IEZlYiAwOCAwMDowMDowMCAyMDE4IiwiVGh1IEZlYiAx NSAwMDowMDowMCAyMDE4IikgfCBvbmVeMgorIFsyLDMpIHwgWyJNb24gSmFuIDAxIDAwOjAw OjAwIDIwMTgiLCJGcmkgSmFuIDA1IDAwOjAwOjAwIDIwMTgiKSB8IHR3b14yCisgWzMsNCkg fCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlRodSBGZWIgMDEgMDA6MDA6MDAgMjAx OCIpIHwgdGhyZWVeMgorIFszLDQpIHwgWyJUaHUgRmViIDAxIDAwOjAwOjAwIDIwMTgiLCJU aHUgRmViIDE1IDAwOjAwOjAwIDIwMTgiKSB8IHRocmVlXjMKKyBbMyw0KSB8IFsiVGh1IEZl YiAxNSAwMDowMDowMCAyMDE4IiwiVGh1IE1hciAwMSAwMDowMDowMCAyMDE4IikgfCB0aHJl ZV4yCisgWzMsNCkgfCBbIlRodSBNYXIgMDEgMDA6MDA6MDAgMjAxOCIsIlN1biBBcHIgMDEg MDA6MDA6MDAgMjAxOCIpIHwgdGhyZWUKKyBbNCw1KSB8ICgsIlN1biBKYW4gMDEgMDA6MDA6 MDAgMjAxNyIpICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBmb3VyXjEKKyBbNCw1KSB8 IFsiU3VuIEphbiAwMSAwMDowMDowMCAyMDE3IiwiVGh1IEZlYiAwMSAwMDowMDowMCAyMDE4 IikgfCBmb3VyXjMKKyBbNCw1KSB8IFsiVGh1IEZlYiAwMSAwMDowMDowMCAyMDE4IiwiU3Vu IEFwciAwMSAwMDowMDowMCAyMDE4IikgfCBmb3VyXjIKKyBbNSw2KSB8ICgsIlN1biBKYW4g MDEgMDA6MDA6MDAgMjAxNyIpICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBmaXZlCisg WzUsNikgfCBbIlN1biBKYW4gMDEgMDA6MDA6MDAgMjAxNyIsIk1vbiBKYW4gMDEgMDA6MDA6 MDAgMjAxOCIpIHwgZml2ZV4zCisgWzUsNikgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAx OCIsIkZyaSBKdW4gMDEgMDA6MDA6MDAgMjAxOCIpIHwgZml2ZV4zCisgWzUsNikgfCBbIk1v biBKdW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwg Zml2ZQorIFs1LDYpIHwgWyJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiLCJTYXQgSmFuIDAx IDAwOjAwOjAwIDIwMjIiKSB8IGZpdmVeNAorIFs1LDYpIHwgWyJTYXQgSmFuIDAxIDAwOjAw OjAwIDIwMjIiLCJTdW4gSmFuIDAxIDAwOjAwOjAwIDIwMjMiKSB8IGZpdmUKKyBbNSw2KSB8 IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDI0IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDI1 IikgfCBmaXZlCisoMTYgcm93cykKKworRFJPUCBGVU5DVElPTiBmb3JfcG9ydGlvbl9vZl90 cmlnZ2VyIENBU0NBREU7CitOT1RJQ0U6ICBkcm9wIGNhc2NhZGVzIHRvIDIgb3RoZXIgb2Jq ZWN0cworREVUQUlMOiAgZHJvcCBjYXNjYWRlcyB0byB0cmlnZ2VyIHRyZ19mb3JfcG9ydGlv bl9vZl9iZWZvcmUgb24gdGFibGUgZm9yX3BvcnRpb25fb2ZfdGVzdAorZHJvcCBjYXNjYWRl cyB0byB0cmlnZ2VyIHRyZ19mb3JfcG9ydGlvbl9vZl9hZnRlciBvbiB0YWJsZSBmb3JfcG9y dGlvbl9vZl90ZXN0CistLSBUcmlnZ2VycyB3aXRoIGEgY3VzdG9tIHRyYW5zaXRpb24gdGFi bGUgbmFtZToKK0RST1AgVEFCTEUgZm9yX3BvcnRpb25fb2ZfdGVzdDsKK0NSRUFURSBUQUJM RSBmb3JfcG9ydGlvbl9vZl90ZXN0ICgKKyAgaWQgaW50NHJhbmdlLAorICB2YWxpZF9hdCBk YXRlcmFuZ2UsCisgIG5hbWUgdGV4dAorKTsKK0lOU0VSVCBJTlRPIGZvcl9wb3J0aW9uX29m X3Rlc3QgVkFMVUVTICgnWzEsMV0nLCAnWzIwMTgtMDEtMDEsMjAyMC0wMS0wMSknLCAnb25l Jyk7CitDUkVBVEUgRlVOQ1RJT04gZHVtcF90cmlnZ2VyKCkKK1JFVFVSTlMgVFJJR0dFUiBM QU5HVUFHRSBwbHBnc3FsIEFTCiskJAorQkVHSU4KKyAgUkFJU0UgTk9USUNFICdUR19PUCA9 ICUnLCBUR19PUDsKKyAgSUYgVEdfT1AgPSAnSU5TRVJUJyBUSEVOCisgICAgUkFJU0UgTk9U SUNFICd0cmlnZ2VyID0gJSwgVEdfTEVWRUwgPSAlLCBORVcgdGFibGUgPSAlJywKKyAgICAg IFRHX05BTUUsIFRHX0xFVkVMLCAoU0VMRUNUIHN0cmluZ19hZ2cobmV3X3RhYmxlOjp0ZXh0 LCAnLCAnIE9SREVSIEJZIGlkKSBGUk9NIG5ld190YWJsZSk7CisgIEVMU0lGIFRHX09QID0g J1VQREFURScgVEhFTgorICAgIFJBSVNFIE5PVElDRSAndHJpZ2dlciA9ICUsIFRHX0xFVkVM ID0gJSwgT0xEIHRhYmxlID0gJSwgTkVXIHRhYmxlID0gJScsCisgICAgICBUR19OQU1FLCBU R19MRVZFTCwKKyAgICAgIChTRUxFQ1Qgc3RyaW5nX2FnZyhvbGRfdGFibGU6OnRleHQsICcs ICcgT1JERVIgQlkgaWQpIEZST00gb2xkX3RhYmxlKSwKKyAgICAgIChTRUxFQ1Qgc3RyaW5n X2FnZyhuZXdfdGFibGU6OnRleHQsICcsICcgT1JERVIgQlkgaWQpIEZST00gbmV3X3RhYmxl KTsKKyAgRUxTSUYgVEdfT1AgPSAnREVMRVRFJyBUSEVOCisgICAgUkFJU0UgTk9USUNFICd0 cmlnZ2VyID0gJSwgVEdfTEVWRUwgPSAlLCBPTEQgdGFibGUgPSAlJywKKyAgICAgIFRHX05B TUUsIFRHX0xFVkVMLCAoU0VMRUNUIHN0cmluZ19hZ2cob2xkX3RhYmxlOjp0ZXh0LCAnLCAn IE9SREVSIEJZIGlkKSBGUk9NIG9sZF90YWJsZSk7CisgIEVORCBJRjsKKyAgUkVUVVJOIE5V TEw7CitFTkQ7CiskJDsKK0NSRUFURSBUUklHR0VSIGZvcl9wb3J0aW9uX29mX3Rlc3RfaW5z ZXJ0X3RyaWcKK0FGVEVSIElOU0VSVCBPTiBmb3JfcG9ydGlvbl9vZl90ZXN0CitSRUZFUkVO Q0lORyBORVcgVEFCTEUgQVMgbmV3X3RhYmxlCitGT1IgRUFDSCBST1cgRVhFQ1VURSBQUk9D RURVUkUgZHVtcF90cmlnZ2VyKCk7CitDUkVBVEUgVFJJR0dFUiBmb3JfcG9ydGlvbl9vZl90 ZXN0X2luc2VydF90cmlnX3N0bXQKK0FGVEVSIElOU0VSVCBPTiBmb3JfcG9ydGlvbl9vZl90 ZXN0CitSRUZFUkVOQ0lORyBORVcgVEFCTEUgQVMgbmV3X3RhYmxlCitGT1IgRUFDSCBTVEFU RU1FTlQgRVhFQ1VURSBQUk9DRURVUkUgZHVtcF90cmlnZ2VyKCk7CitDUkVBVEUgVFJJR0dF UiBmb3JfcG9ydGlvbl9vZl90ZXN0X3VwZGF0ZV90cmlnCitBRlRFUiBVUERBVEUgT04gZm9y X3BvcnRpb25fb2ZfdGVzdAorUkVGRVJFTkNJTkcgT0xEIFRBQkxFIEFTIG9sZF90YWJsZSBO RVcgVEFCTEUgQVMgbmV3X3RhYmxlCitGT1IgRUFDSCBST1cgRVhFQ1VURSBQUk9DRURVUkUg ZHVtcF90cmlnZ2VyKCk7CitDUkVBVEUgVFJJR0dFUiBmb3JfcG9ydGlvbl9vZl90ZXN0X3Vw ZGF0ZV90cmlnX3N0bXQKK0FGVEVSIFVQREFURSBPTiBmb3JfcG9ydGlvbl9vZl90ZXN0CitS RUZFUkVOQ0lORyBPTEQgVEFCTEUgQVMgb2xkX3RhYmxlIE5FVyBUQUJMRSBBUyBuZXdfdGFi bGUKK0ZPUiBFQUNIIFNUQVRFTUVOVCBFWEVDVVRFIFBST0NFRFVSRSBkdW1wX3RyaWdnZXIo KTsKK0NSRUFURSBUUklHR0VSIGZvcl9wb3J0aW9uX29mX3Rlc3RfZGVsZXRlX3RyaWcKK0FG VEVSIERFTEVURSBPTiBmb3JfcG9ydGlvbl9vZl90ZXN0CitSRUZFUkVOQ0lORyBPTEQgVEFC TEUgQVMgb2xkX3RhYmxlCitGT1IgRUFDSCBST1cgRVhFQ1VURSBQUk9DRURVUkUgZHVtcF90 cmlnZ2VyKCk7CitDUkVBVEUgVFJJR0dFUiBmb3JfcG9ydGlvbl9vZl90ZXN0X2RlbGV0ZV90 cmlnX3N0bXQKK0FGVEVSIERFTEVURSBPTiBmb3JfcG9ydGlvbl9vZl90ZXN0CitSRUZFUkVO Q0lORyBPTEQgVEFCTEUgQVMgb2xkX3RhYmxlCitGT1IgRUFDSCBTVEFURU1FTlQgRVhFQ1VU RSBQUk9DRURVUkUgZHVtcF90cmlnZ2VyKCk7CitCRUdJTjsKK1VQREFURSBmb3JfcG9ydGlv bl9vZl90ZXN0CisgIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDEtMTUn IFRPICcyMDE5LTAxLTAxJworICBTRVQgbmFtZSA9ICcyMDE4LTAxLTE1X3RvXzIwMTktMDEt MDEnOworTk9USUNFOiAgVEdfT1AgPSBJTlNFUlQKK05PVElDRTogIHRyaWdnZXIgPSBmb3Jf cG9ydGlvbl9vZl90ZXN0X2luc2VydF90cmlnLCBUR19MRVZFTCA9IFJPVywgTkVXIHRhYmxl ID0gKCJbMSwyKSIsIlswMS0wMS0yMDE4LDAxLTE1LTIwMTgpIixvbmUpLCAoIlsxLDIpIiwi WzAxLTAxLTIwMTksMDEtMDEtMjAyMCkiLG9uZSkKK05PVElDRTogIFRHX09QID0gSU5TRVJU CitOT1RJQ0U6ICB0cmlnZ2VyID0gZm9yX3BvcnRpb25fb2ZfdGVzdF9pbnNlcnRfdHJpZywg VEdfTEVWRUwgPSBST1csIE5FVyB0YWJsZSA9ICgiWzEsMikiLCJbMDEtMDEtMjAxOCwwMS0x NS0yMDE4KSIsb25lKSwgKCJbMSwyKSIsIlswMS0wMS0yMDE5LDAxLTAxLTIwMjApIixvbmUp CitOT1RJQ0U6ICBUR19PUCA9IFVQREFURQorTk9USUNFOiAgdHJpZ2dlciA9IGZvcl9wb3J0 aW9uX29mX3Rlc3RfdXBkYXRlX3RyaWcsIFRHX0xFVkVMID0gUk9XLCBPTEQgdGFibGUgPSAo IlsxLDIpIiwiWzAxLTAxLTIwMTgsMDEtMDEtMjAyMCkiLG9uZSksIE5FVyB0YWJsZSA9ICgi WzEsMikiLCJbMDEtMTUtMjAxOCwwMS0wMS0yMDE5KSIsMjAxOC0wMS0xNV90b18yMDE5LTAx LTAxKQorTk9USUNFOiAgVEdfT1AgPSBVUERBVEUKK05PVElDRTogIHRyaWdnZXIgPSBmb3Jf cG9ydGlvbl9vZl90ZXN0X3VwZGF0ZV90cmlnX3N0bXQsIFRHX0xFVkVMID0gU1RBVEVNRU5U LCBPTEQgdGFibGUgPSAoIlsxLDIpIiwiWzAxLTAxLTIwMTgsMDEtMDEtMjAyMCkiLG9uZSks IE5FVyB0YWJsZSA9ICgiWzEsMikiLCJbMDEtMTUtMjAxOCwwMS0wMS0yMDE5KSIsMjAxOC0w MS0xNV90b18yMDE5LTAxLTAxKQorUk9MTEJBQ0s7CitCRUdJTjsKK0RFTEVURSBGUk9NIGZv cl9wb3J0aW9uX29mX3Rlc3QKKyAgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSBOVUxM IFRPICcyMDE4LTAxLTIxJzsKK05PVElDRTogIFRHX09QID0gSU5TRVJUCitOT1RJQ0U6ICB0 cmlnZ2VyID0gZm9yX3BvcnRpb25fb2ZfdGVzdF9pbnNlcnRfdHJpZywgVEdfTEVWRUwgPSBS T1csIE5FVyB0YWJsZSA9ICgiWzEsMikiLCJbMDEtMjEtMjAxOCwwMS0wMS0yMDIwKSIsb25l KQorTk9USUNFOiAgVEdfT1AgPSBERUxFVEUKK05PVElDRTogIHRyaWdnZXIgPSBmb3JfcG9y dGlvbl9vZl90ZXN0X2RlbGV0ZV90cmlnLCBUR19MRVZFTCA9IFJPVywgT0xEIHRhYmxlID0g KCJbMSwyKSIsIlswMS0wMS0yMDE4LDAxLTAxLTIwMjApIixvbmUpCitOT1RJQ0U6ICBUR19P UCA9IERFTEVURQorTk9USUNFOiAgdHJpZ2dlciA9IGZvcl9wb3J0aW9uX29mX3Rlc3RfZGVs ZXRlX3RyaWdfc3RtdCwgVEdfTEVWRUwgPSBTVEFURU1FTlQsIE9MRCB0YWJsZSA9ICgiWzEs MikiLCJbMDEtMDEtMjAxOCwwMS0wMS0yMDIwKSIsb25lKQorUk9MTEJBQ0s7CitCRUdJTjsK K1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CisgIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0 IEZST00gTlVMTCBUTyAnMjAxOC0wMS0wMicKKyAgU0VUIG5hbWUgPSAnTlVMTF90b18yMDE4 LTAxLTAxJzsKK05PVElDRTogIFRHX09QID0gSU5TRVJUCitOT1RJQ0U6ICB0cmlnZ2VyID0g Zm9yX3BvcnRpb25fb2ZfdGVzdF9pbnNlcnRfdHJpZywgVEdfTEVWRUwgPSBST1csIE5FVyB0 YWJsZSA9ICgiWzEsMikiLCJbMDEtMDItMjAxOCwwMS0wMS0yMDIwKSIsb25lKQorTk9USUNF OiAgVEdfT1AgPSBVUERBVEUKK05PVElDRTogIHRyaWdnZXIgPSBmb3JfcG9ydGlvbl9vZl90 ZXN0X3VwZGF0ZV90cmlnLCBUR19MRVZFTCA9IFJPVywgT0xEIHRhYmxlID0gKCJbMSwyKSIs IlswMS0wMS0yMDE4LDAxLTAxLTIwMjApIixvbmUpLCBORVcgdGFibGUgPSAoIlsxLDIpIiwi WzAxLTAxLTIwMTgsMDEtMDItMjAxOCkiLE5VTExfdG9fMjAxOC0wMS0wMSkKK05PVElDRTog IFRHX09QID0gVVBEQVRFCitOT1RJQ0U6ICB0cmlnZ2VyID0gZm9yX3BvcnRpb25fb2ZfdGVz dF91cGRhdGVfdHJpZ19zdG10LCBUR19MRVZFTCA9IFNUQVRFTUVOVCwgT0xEIHRhYmxlID0g KCJbMSwyKSIsIlswMS0wMS0yMDE4LDAxLTAxLTIwMjApIixvbmUpLCBORVcgdGFibGUgPSAo IlsxLDIpIiwiWzAxLTAxLTIwMTgsMDEtMDItMjAxOCkiLE5VTExfdG9fMjAxOC0wMS0wMSkK K1JPTExCQUNLOworLS0gVGVzdCB3aXRoIG11bHRpcmFuZ2VzCitDUkVBVEUgVEFCTEUgZm9y X3BvcnRpb25fb2ZfdGVzdDIgKAorICBpZCBpbnQ0cmFuZ2UgTk9UIE5VTEwsCisgIHZhbGlk X2F0IGRhdGVtdWx0aXJhbmdlIE5PVCBOVUxMLAorICBuYW1lIHRleHQgTk9UIE5VTEwsCisJ Q09OU1RSQUlOVCBmb3JfcG9ydGlvbl9vZl90ZXN0Ml9wayBQUklNQVJZIEtFWSAoaWQsIHZh bGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworSU5TRVJUIElOVE8gZm9yX3BvcnRpb25f b2ZfdGVzdDIKK1ZBTFVFUworKCdbMSwxXScsIGRhdGVtdWx0aXJhbmdlKGRhdGVyYW5nZSgn MjAxOC0wMS0wMicsICcyMDE4LTAyLTAzKScpLCBkYXRlcmFuZ2UoJzIwMTgtMDItMDQnLCAn MjAxOC0wMy0wMycpKSwgJ29uZScpLAorKCdbMSwxXScsIGRhdGVtdWx0aXJhbmdlKGRhdGVy YW5nZSgnMjAxOC0wMy0wMycsICcyMDE4LTA0LTA0KScpKSwgJ29uZScpLAorKCdbMiwyXScs IGRhdGVtdWx0aXJhbmdlKGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTA1LTAxKScp KSwgJ3R3bycpLAorKCdbMywzXScsIGRhdGVtdWx0aXJhbmdlKGRhdGVyYW5nZSgnMjAxOC0w MS0wMScsIG51bGwpKSwgJ3RocmVlJyk7Cis7CitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVz dDIKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IChkYXRlbXVsdGlyYW5nZShkYXRlcmFuZ2Uo JzIwMTgtMDEtMTAnLCAnMjAxOC0wMi0xMCcpLCBkYXRlcmFuZ2UoJzIwMTgtMDMtMDUnLCAn MjAxOC0wNS0wMScpKSkKK1NFVCBuYW1lID0gJ29uZV4xJworV0hFUkUgaWQgPSAnWzEsMV0n OworREVMRVRFIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdDIKK0ZPUiBQT1JUSU9OIE9GIHZh bGlkX2F0IChkYXRlbXVsdGlyYW5nZShkYXRlcmFuZ2UoJzIwMTgtMDEtMTUnLCAnMjAxOC0w Mi0xNScpLCBkYXRlcmFuZ2UoJzIwMTgtMDMtMDEnLCAnMjAxOC0wMy0xNScpKSkKK1dIRVJF IGlkID0gJ1syLDJdJzsKK1NFTEVDVCAqIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdDIgT1JE RVIgQlkgaWQsIHZhbGlkX2F0OworICBpZCAgIHwgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IG5h bWUgIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLQorIFsxLDIpIHwg e1swMS0wMi0yMDE4LDAxLTEwLTIwMTgpLFswMi0xMC0yMDE4LDAzLTAzLTIwMTgpfSAgICAg ICAgICAgICAgICAgICAgICAgICB8IG9uZQorIFsxLDIpIHwge1swMS0xMC0yMDE4LDAyLTAz LTIwMTgpLFswMi0wNC0yMDE4LDAyLTEwLTIwMTgpfSAgICAgICAgICAgICAgICAgICAgICAg ICB8IG9uZV4xCisgWzEsMikgfCB7WzAzLTAzLTIwMTgsMDMtMDUtMjAxOCl9ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgb25lCisgWzEsMikg fCB7WzAzLTA1LTIwMTgsMDQtMDQtMjAxOCl9ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgb25lXjEKKyBbMiwzKSB8IHtbMDEtMDEtMjAxOCww MS0xNS0yMDE4KSxbMDItMTUtMjAxOCwwMy0wMS0yMDE4KSxbMDMtMTUtMjAxOCwwNS0wMS0y MDE4KX0gfCB0d28KKyBbMyw0KSB8IHtbMDEtMDEtMjAxOCwpfSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0aHJlZQorKDYg cm93cykKKworRFJPUCBUQUJMRSBmb3JfcG9ydGlvbl9vZl90ZXN0MjsKKy0tIFRlc3Qgd2l0 aCBhIGN1c3RvbSByYW5nZSB0eXBlCitDUkVBVEUgVFlQRSBteWRhdGVyYW5nZSBBUyByYW5n ZShzdWJ0eXBlPWRhdGUpOworQ1JFQVRFIFRBQkxFIGZvcl9wb3J0aW9uX29mX3Rlc3QyICgK KyAgaWQgaW50NHJhbmdlIE5PVCBOVUxMLAorICB2YWxpZF9hdCBteWRhdGVyYW5nZSBOT1Qg TlVMTCwKKyAgbmFtZSB0ZXh0IE5PVCBOVUxMLAorCUNPTlNUUkFJTlQgZm9yX3BvcnRpb25f b2ZfdGVzdDJfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBT KQorKTsKK0lOU0VSVCBJTlRPIGZvcl9wb3J0aW9uX29mX3Rlc3QyCitWQUxVRVMKKygnWzEs MV0nLCAnWzIwMTgtMDEtMDIsMjAxOC0wMi0wMyknLCAnb25lJyksCisoJ1sxLDFdJywgJ1sy MDE4LTAyLTAzLDIwMTgtMDMtMDMpJywgJ29uZScpLAorKCdbMSwxXScsICdbMjAxOC0wMy0w MywyMDE4LTA0LTA0KScsICdvbmUnKSwKKygnWzIsMl0nLCAnWzIwMTgtMDEtMDEsMjAxOC0w NS0wMSknLCAndHdvJyksCisoJ1szLDNdJywgJ1syMDE4LTAxLTAxLCknLCAndGhyZWUnKTsK KzsKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0MgorRk9SIFBPUlRJT04gT0YgdmFsaWRf YXQgRlJPTSAnMjAxOC0wMS0xMCcgVE8gJzIwMTgtMDItMTAnCitTRVQgbmFtZSA9ICdvbmVe MScKK1dIRVJFIGlkID0gJ1sxLDFdJzsKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rl c3QyCitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTAxLTE1JyBUTyAnMjAx OC0wMi0xNScKK1dIRVJFIGlkID0gJ1syLDJdJzsKK1NFTEVDVCAqIEZST00gZm9yX3BvcnRp b25fb2ZfdGVzdDIgT1JERVIgQlkgaWQsIHZhbGlkX2F0OworICBpZCAgIHwgICAgICAgIHZh bGlkX2F0ICAgICAgICAgfCBuYW1lICAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tCisgWzEsMikgfCBbMDEtMDItMjAxOCwwMS0xMC0yMDE4KSB8IG9uZQor IFsxLDIpIHwgWzAxLTEwLTIwMTgsMDItMDMtMjAxOCkgfCBvbmVeMQorIFsxLDIpIHwgWzAy LTAzLTIwMTgsMDItMTAtMjAxOCkgfCBvbmVeMQorIFsxLDIpIHwgWzAyLTEwLTIwMTgsMDMt MDMtMjAxOCkgfCBvbmUKKyBbMSwyKSB8IFswMy0wMy0yMDE4LDA0LTA0LTIwMTgpIHwgb25l CisgWzIsMykgfCBbMDEtMDEtMjAxOCwwMS0xNS0yMDE4KSB8IHR3bworIFsyLDMpIHwgWzAy LTE1LTIwMTgsMDUtMDEtMjAxOCkgfCB0d28KKyBbMyw0KSB8IFswMS0wMS0yMDE4LCkgICAg ICAgICAgIHwgdGhyZWUKKyg4IHJvd3MpCisKK0RST1AgVEFCTEUgZm9yX3BvcnRpb25fb2Zf dGVzdDI7CitEUk9QIFRZUEUgbXlkYXRlcmFuZ2U7CistLSBUZXN0IEZPUiBQT1JUSU9OIE9G IGFnYWluc3QgYSBwYXJ0aXRpb25lZCB0YWJsZS4KKy0tIHRlbXBvcmFsX3BhcnRpdGlvbmVk XzEgaGFzIHRoZSBzYW1lIGF0dG51bXMgYXMgdGhlIHJvb3QKKy0tIHRlbXBvcmFsX3BhcnRp dGlvbmVkXzMgaGFzIHRoZSBkaWZmZXJlbnQgYXR0bnVtcyBmcm9tIHRoZSByb290CistLSB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF81IGhhcyB0aGUgZGlmZmVyZW50IGF0dG51bXMgdG9vLCBi dXQgcmV2ZXJzZWQKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCAoCisJaWQg aW50NHJhbmdlLAorCXZhbGlkX2F0IGRhdGVyYW5nZSwKKyAgbmFtZSB0ZXh0LAorCUNPTlNU UkFJTlQgdGVtcG9yYWxfcGFyaXRpb25lZF91cSBVTklRVUUgKGlkLCB2YWxpZF9hdCBXSVRI T1VUIE9WRVJMQVBTKQorKSBQQVJUSVRJT04gQlkgTElTVCAoaWQpOworQ1JFQVRFIFRBQkxF IHRlbXBvcmFsX3BhcnRpdGlvbmVkXzEgUEFSVElUSU9OIE9GIHRlbXBvcmFsX3BhcnRpdGlv bmVkIEZPUiBWQUxVRVMgSU4gKCdbMSwxXScsICdbMiwyXScpOworQ1JFQVRFIFRBQkxFIHRl bXBvcmFsX3BhcnRpdGlvbmVkXzMgUEFSVElUSU9OIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVk IEZPUiBWQUxVRVMgSU4gKCdbMywzXScsICdbNCw0XScpOworQ1JFQVRFIFRBQkxFIHRlbXBv cmFsX3BhcnRpdGlvbmVkXzUgUEFSVElUSU9OIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkIEZP UiBWQUxVRVMgSU4gKCdbNSw1XScsICdbNiw2XScpOworQUxURVIgVEFCTEUgdGVtcG9yYWxf cGFydGl0aW9uZWQgREVUQUNIIFBBUlRJVElPTiB0ZW1wb3JhbF9wYXJ0aXRpb25lZF8zOwor QUxURVIgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfMyBEUk9QIENPTFVNTiBpZCwgRFJP UCBDT0xVTU4gdmFsaWRfYXQ7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF8z IEFERCBDT0xVTU4gaWQgaW50NHJhbmdlIE5PVCBOVUxMLCBBREQgQ09MVU1OIHZhbGlkX2F0 IGRhdGVyYW5nZSBOT1QgTlVMTDsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVk IEFUVEFDSCBQQVJUSVRJT04gdGVtcG9yYWxfcGFydGl0aW9uZWRfMyBGT1IgVkFMVUVTIElO ICgnWzMsM10nLCAnWzQsNF0nKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVk IERFVEFDSCBQQVJUSVRJT04gdGVtcG9yYWxfcGFydGl0aW9uZWRfNTsKK0FMVEVSIFRBQkxF IHRlbXBvcmFsX3BhcnRpdGlvbmVkXzUgRFJPUCBDT0xVTU4gaWQsIERST1AgQ09MVU1OIHZh bGlkX2F0OworQUxURVIgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfNSBBREQgQ09MVU1O IHZhbGlkX2F0IGRhdGVyYW5nZSBOT1QgTlVMTCwgQUREIENPTFVNTiBpZCBpbnQ0cmFuZ2Ug Tk9UIE5VTEw7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBBVFRBQ0ggUEFS VElUSU9OIHRlbXBvcmFsX3BhcnRpdGlvbmVkXzUgRk9SIFZBTFVFUyBJTiAoJ1s1LDVdJywg J1s2LDZdJyk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBWQUxVRVMKKyAg KCdbMSwxXScsIGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDEwLTAxLTAxJyksICdvbmUn KSwKKyAgKCdbMywzXScsIGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDEwLTAxLTAxJyks ICd0aHJlZScpLAorICAoJ1s1LDVdJywgZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIwMTAt MDEtMDEnKSwgJ2ZpdmUnKTsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWQ7 CisgIGlkICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8IG5hbWUgIAorLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0KKyBbMSwyKSB8IFswMS0wMS0yMDAw LDAxLTAxLTIwMTApIHwgb25lCisgWzMsNCkgfCBbMDEtMDEtMjAwMCwwMS0wMS0yMDEwKSB8 IHRocmVlCisgWzUsNikgfCBbMDEtMDEtMjAwMCwwMS0wMS0yMDEwKSB8IGZpdmUKKygzIHJv d3MpCisKKy0tIFVwZGF0ZSB3aXRob3V0IG1vdmluZyB3aXRoaW4gcGFydGl0aW9uIDEKK1VQ REFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9N ICcyMDAwLTAzLTAxJyBUTyAnMjAwMC0wNC0wMScKKyAgU0VUIG5hbWUgPSAnb25lXjEnCisg IFdIRVJFIGlkID0gJ1sxLDFdJzsKKy0tIFVwZGF0ZSB3aXRob3V0IG1vdmluZyB3aXRoaW4g cGFydGl0aW9uIDMKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBGT1IgUE9SVElPTiBP RiB2YWxpZF9hdCBGUk9NICcyMDAwLTAzLTAxJyBUTyAnMjAwMC0wNC0wMScKKyAgU0VUIG5h bWUgPSAndGhyZWVeMScKKyAgV0hFUkUgaWQgPSAnWzMsM10nOworLS0gVXBkYXRlIHdpdGhv dXQgbW92aW5nIHdpdGhpbiBwYXJ0aXRpb24gNQorVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlv bmVkIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMDAtMDMtMDEnIFRPICcyMDAw LTA0LTAxJworICBTRVQgbmFtZSA9ICdmaXZlXjEnCisgIFdIRVJFIGlkID0gJ1s1LDVdJzsK Ky0tIE1vdmUgZnJvbSBwYXJ0aXRpb24gMSB0byBwYXJ0aXRpb24gMworVVBEQVRFIHRlbXBv cmFsX3BhcnRpdGlvbmVkIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMDAtMDYt MDEnIFRPICcyMDAwLTA3LTAxJworICBTRVQgbmFtZSA9ICdvbmVeMicsCisgICAgICBpZCA9 ICdbNCw0XScKKyAgV0hFUkUgaWQgPSAnWzEsMV0nOworLS0gTW92ZSBmcm9tIHBhcnRpdGlv biAzIHRvIHBhcnRpdGlvbiAxCitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWQgRk9SIFBP UlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAwMC0wNi0wMScgVE8gJzIwMDAtMDctMDEnCisg IFNFVCBuYW1lID0gJ3RocmVlXjInLAorICAgICAgaWQgPSAnWzIsMl0nCisgIFdIRVJFIGlk ID0gJ1szLDNdJzsKKy0tIE1vdmUgZnJvbSBwYXJ0aXRpb24gNSB0byBwYXJ0aXRpb24gMwor VVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZS T00gJzIwMDAtMDYtMDEnIFRPICcyMDAwLTA3LTAxJworICBTRVQgbmFtZSA9ICdmaXZlXjIn LAorICAgICAgaWQgPSAnWzMsM10nCisgIFdIRVJFIGlkID0gJ1s1LDVdJzsKKy0tIFVwZGF0 ZSBhbGwgcGFydGl0aW9ucyBhdCBvbmNlIChlYWNoIHdpdGggbGVmdG92ZXJzKQorU0VMRUNU ICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7Cisg IGlkICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8ICBuYW1lICAgCistLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tCisgWzEsMikgfCBbMDEtMDEtMjAw MCwwMy0wMS0yMDAwKSB8IG9uZQorIFsxLDIpIHwgWzAzLTAxLTIwMDAsMDQtMDEtMjAwMCkg fCBvbmVeMQorIFsxLDIpIHwgWzA0LTAxLTIwMDAsMDYtMDEtMjAwMCkgfCBvbmUKKyBbMSwy KSB8IFswNy0wMS0yMDAwLDAxLTAxLTIwMTApIHwgb25lCisgWzIsMykgfCBbMDYtMDEtMjAw MCwwNy0wMS0yMDAwKSB8IHRocmVlXjIKKyBbMyw0KSB8IFswMS0wMS0yMDAwLDAzLTAxLTIw MDApIHwgdGhyZWUKKyBbMyw0KSB8IFswMy0wMS0yMDAwLDA0LTAxLTIwMDApIHwgdGhyZWVe MQorIFszLDQpIHwgWzA0LTAxLTIwMDAsMDYtMDEtMjAwMCkgfCB0aHJlZQorIFszLDQpIHwg WzA2LTAxLTIwMDAsMDctMDEtMjAwMCkgfCBmaXZlXjIKKyBbMyw0KSB8IFswNy0wMS0yMDAw LDAxLTAxLTIwMTApIHwgdGhyZWUKKyBbNCw1KSB8IFswNi0wMS0yMDAwLDA3LTAxLTIwMDAp IHwgb25lXjIKKyBbNSw2KSB8IFswMS0wMS0yMDAwLDAzLTAxLTIwMDApIHwgZml2ZQorIFs1 LDYpIHwgWzAzLTAxLTIwMDAsMDQtMDEtMjAwMCkgfCBmaXZlXjEKKyBbNSw2KSB8IFswNC0w MS0yMDAwLDA2LTAxLTIwMDApIHwgZml2ZQorIFs1LDYpIHwgWzA3LTAxLTIwMDAsMDEtMDEt MjAxMCkgfCBmaXZlCisoMTUgcm93cykKKworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0 aXRpb25lZF8xIE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKKyAgaWQgICB8ICAgICAgICB2YWxp ZF9hdCAgICAgICAgIHwgIG5hbWUgICAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0KKyBbMSwyKSB8IFswMS0wMS0yMDAwLDAzLTAxLTIwMDApIHwgb25l CisgWzEsMikgfCBbMDMtMDEtMjAwMCwwNC0wMS0yMDAwKSB8IG9uZV4xCisgWzEsMikgfCBb MDQtMDEtMjAwMCwwNi0wMS0yMDAwKSB8IG9uZQorIFsxLDIpIHwgWzA3LTAxLTIwMDAsMDEt MDEtMjAxMCkgfCBvbmUKKyBbMiwzKSB8IFswNi0wMS0yMDAwLDA3LTAxLTIwMDApIHwgdGhy ZWVeMgorKDUgcm93cykKKworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF8z IE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKKyAgbmFtZSAgIHwgIGlkICAgfCAgICAgICAgdmFs aWRfYXQgICAgICAgICAKKy0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyB0aHJlZSAgIHwgWzMsNCkgfCBbMDEtMDEtMjAwMCwwMy0wMS0yMDAwKQorIHRo cmVlXjEgfCBbMyw0KSB8IFswMy0wMS0yMDAwLDA0LTAxLTIwMDApCisgdGhyZWUgICB8IFsz LDQpIHwgWzA0LTAxLTIwMDAsMDYtMDEtMjAwMCkKKyBmaXZlXjIgIHwgWzMsNCkgfCBbMDYt MDEtMjAwMCwwNy0wMS0yMDAwKQorIHRocmVlICAgfCBbMyw0KSB8IFswNy0wMS0yMDAwLDAx LTAxLTIwMTApCisgb25lXjIgICB8IFs0LDUpIHwgWzA2LTAxLTIwMDAsMDctMDEtMjAwMCkK Kyg2IHJvd3MpCisKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfNSBPUkRF UiBCWSBpZCwgdmFsaWRfYXQ7CisgIG5hbWUgIHwgICAgICAgIHZhbGlkX2F0ICAgICAgICAg fCAgaWQgICAKKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLQor IGZpdmUgICB8IFswMS0wMS0yMDAwLDAzLTAxLTIwMDApIHwgWzUsNikKKyBmaXZlXjEgfCBb MDMtMDEtMjAwMCwwNC0wMS0yMDAwKSB8IFs1LDYpCisgZml2ZSAgIHwgWzA0LTAxLTIwMDAs MDYtMDEtMjAwMCkgfCBbNSw2KQorIGZpdmUgICB8IFswNy0wMS0yMDAwLDAxLTAxLTIwMTAp IHwgWzUsNikKKyg0IHJvd3MpCisKK0RST1AgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWQ7 CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL29wcl9zYW5pdHkub3V0 IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9vcHJfc2FuaXR5Lm91dAppbmRleCA3NjEw YjAxMWQ2OC4uZTgxMTE1M2E0MDkgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvb3ByX3Nhbml0eS5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9v cHJfc2FuaXR5Lm91dApAQCAtMTk0Miw2ICsxOTQyLDcgQEAgV0hFUkUgYTEuYW1vcGZhbWls eSA9IDAgT1IgYTEuYW1vcGxlZnR0eXBlID0gMCBPUiBhMS5hbW9wcmlnaHR0eXBlID0gMAog U0VMRUNUIGExLmFtb3BmYW1pbHksIGExLmFtb3BzdHJhdGVneQogRlJPTSBwZ19hbW9wIGFz IGExCiBXSEVSRSBOT1QgKChhMS5hbW9wcHVycG9zZSA9ICdzJyBBTkQgYTEuYW1vcHNvcnRm YW1pbHkgPSAwKSBPUgorICAgICAgICAgICAoYTEuYW1vcHB1cnBvc2UgPSAncCcgQU5EIGEx LmFtb3Bzb3J0ZmFtaWx5ID0gMCkgT1IKICAgICAgICAgICAgKGExLmFtb3BwdXJwb3NlID0g J28nIEFORCBhMS5hbW9wc29ydGZhbWlseSA8PiAwKSk7CiAgYW1vcGZhbWlseSB8IGFtb3Bz dHJhdGVneSAKIC0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wcml2aWxlZ2VzLm91dCBiL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvcHJpdmlsZWdlcy5vdXQKaW5kZXggZmJiMDQ4OWE0ZmYuLjMzOTVkMjE1 MGZmIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3ByaXZpbGVnZXMu b3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHJpdmlsZWdlcy5vdXQKQEAg LTk4NSw2ICs5ODUsMjQgQEAgRVJST1I6ICBudWxsIHZhbHVlIGluIGNvbHVtbiAiYiIgb2Yg cmVsYXRpb24gImVycnRzdF9wYXJ0XzIiIHZpb2xhdGVzIG5vdC1udWxsIGMKIERFVEFJTDog IEZhaWxpbmcgcm93IGNvbnRhaW5zIChhLCBiLCBjKSA9IChhYWFhLCBudWxsLCBjY2MpLgog U0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3ByaXZfdXNlcjE7CiBEUk9QIFRB QkxFIGVycnRzdDsKKy0tIHRlc3QgY29sdW1uLWxldmVsIHByaXZpbGVnZXMgb24gdGhlIHJh bmdlL1BFUklPRCB1c2VkIGluIEZPUiBQT1JUSU9OIE9GCitTRVQgU0VTU0lPTiBBVVRIT1JJ WkFUSU9OIHJlZ3Jlc3NfcHJpdl91c2VyMTsKK0NSRUFURSBUQUJMRSB0MSAoCisgIGMxIGlu dDRyYW5nZSwKKyAgdmFsaWRfYXQgdHNyYW5nZSwKKwlDT05TVFJBSU5UIHQxcGsgUFJJTUFS WSBLRVkgKGMxLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK0dSQU5UIFNFTEVD VCBPTiB0MSBUTyByZWdyZXNzX3ByaXZfdXNlcjI7CitHUkFOVCBTRUxFQ1QgT04gdDEgVE8g cmVncmVzc19wcml2X3VzZXIzOworR1JBTlQgVVBEQVRFIChjMSkgT04gdDEgVE8gcmVncmVz c19wcml2X3VzZXIyOworR1JBTlQgVVBEQVRFIChjMSwgdmFsaWRfYXQpIE9OIHQxIFRPIHJl Z3Jlc3NfcHJpdl91c2VyMzsKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19w cml2X3VzZXIyOworVVBEQVRFIHQxIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIw MDAtMDEtMDEnIFRPICcyMDAxLTAxLTAxJyBTRVQgYzEgPSAnWzIsMyknOworRVJST1I6ICBw ZXJtaXNzaW9uIGRlbmllZCBmb3IgdGFibGUgdDEKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJ T04gcmVncmVzc19wcml2X3VzZXIzOworVVBEQVRFIHQxIEZPUiBQT1JUSU9OIE9GIHZhbGlk X2F0IEZST00gJzIwMDAtMDEtMDEnIFRPICcyMDAxLTAxLTAxJyBTRVQgYzEgPSAnWzIsMykn OworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3ByaXZfdXNlcjE7CitEUk9Q IFRBQkxFIHQxOwogLS0gdGVzdCBjb2x1bW4tbGV2ZWwgcHJpdmlsZWdlcyB3aGVuIGludm9s dmVkIHdpdGggREVMRVRFCiBTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcHJp dl91c2VyMTsKIEFMVEVSIFRBQkxFIGF0ZXN0NiBBREQgQ09MVU1OIHRocmVlIGludGVnZXI7 CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3VwZGF0YWJsZV92aWV3 cy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3VwZGF0YWJsZV92aWV3cy5vdXQK aW5kZXggMTk1MGU2ZjI4MWYuLmY0Yjg4YmNjMzhkIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3VwZGF0YWJsZV92aWV3cy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC91cGRhdGFibGVfdmlld3Mub3V0CkBAIC0zMDIzLDYgKzMwMjMsMzgg QEAgc2VsZWN0ICogZnJvbSB1dl9pb2N1X3RhYjsKIAogZHJvcCB2aWV3IHV2X2lvY3Vfdmll dzsKIGRyb3AgdGFibGUgdXZfaW9jdV90YWI7CistLSBDaGVjayBVUERBVEUgRk9SIFBPUlRJ T04gT0Ygd29ya3MgY29ycmVjdGx5CitjcmVhdGUgdGFibGUgdXZfZnBvX3RhYiAoaWQgaW50 NHJhbmdlLCB2YWxpZF9hdCB0c3JhbmdlLCBiIGZsb2F0LAorICAgIGNvbnN0cmFpbnQgcGtf dXZfZnBvX3RhYiBwcmltYXJ5IGtleSAoaWQsIHZhbGlkX2F0IHdpdGhvdXQgb3ZlcmxhcHMp KTsKK2luc2VydCBpbnRvIHV2X2Zwb190YWIgdmFsdWVzICgnWzEsMV0nLCAnWzIwMjAtMDEt MDEsIDIwMzAtMDEtMDEpJywgMCk7CitjcmVhdGUgdmlldyB1dl9mcG9fdmlldyBhcworICAg IHNlbGVjdCBiLCBiKzEgYXMgYywgdmFsaWRfYXQsIGlkLCAnMi4wJzo6dGV4dCBhcyB0d28g ZnJvbSB1dl9mcG9fdGFiOworaW5zZXJ0IGludG8gdXZfZnBvX3ZpZXcgKGlkLCB2YWxpZF9h dCwgYikgdmFsdWVzICgnWzEsMV0nLCAnWzIwMTAtMDEtMDEsIDIwMjAtMDEtMDEpJywgMSk7 CitzZWxlY3QgKiBmcm9tIHV2X2Zwb192aWV3OworIGIgfCBjIHwgICAgICAgICAgICAgICAg ICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8ICBpZCAgIHwgdHdv IAorLS0tKy0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLQorIDAgfCAxIHwgWyJXZWQgSmFuIDAxIDAw OjAwOjAwIDIwMjAiLCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMzAiKSB8IFsxLDIpIHwgMi4w CisgMSB8IDIgfCBbIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAxMCIsIldlZCBKYW4gMDEgMDA6 MDA6MDAgMjAyMCIpIHwgWzEsMikgfCAyLjAKKygyIHJvd3MpCisKK3VwZGF0ZSB1dl9mcG9f dmlldyBmb3IgcG9ydGlvbiBvZiB2YWxpZF9hdCBmcm9tICcyMDE1LTAxLTAxJyB0byAnMjAy MC0wMS0wMScgc2V0IGIgPSAyIHdoZXJlIGlkID0gJ1sxLDFdJzsKK3NlbGVjdCAqIGZyb20g dXZfZnBvX3ZpZXc7CisgYiB8IGMgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0 ICAgICAgICAgICAgICAgICAgICAgICAgIHwgIGlkICAgfCB0d28gCistLS0rLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tKy0tLS0tCisgMCB8IDEgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIlR1 ZSBKYW4gMDEgMDA6MDA6MDAgMjAzMCIpIHwgWzEsMikgfCAyLjAKKyAyIHwgMyB8IFsiVGh1 IEphbiAwMSAwMDowMDowMCAyMDE1IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikgfCBb MSwyKSB8IDIuMAorIDEgfCAyIHwgWyJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMTAiLCJUaHUg SmFuIDAxIDAwOjAwOjAwIDIwMTUiKSB8IFsxLDIpIHwgMi4wCisoMyByb3dzKQorCitkZWxl dGUgZnJvbSB1dl9mcG9fdmlldyBmb3IgcG9ydGlvbiBvZiB2YWxpZF9hdCBmcm9tICcyMDE3 LTAxLTAxJyB0byAnMjAyMi0wMS0wMScgd2hlcmUgaWQgPSAnWzEsMV0nOworc2VsZWN0ICog ZnJvbSB1dl9mcG9fdmlldzsKKyBiIHwgYyB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFs aWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCAgaWQgICB8IHR3byAKKy0tLSstLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0rLS0tLS0KKyAxIHwgMiB8IFsiRnJpIEphbiAwMSAwMDowMDowMCAyMDEw IiwiVGh1IEphbiAwMSAwMDowMDowMCAyMDE1IikgfCBbMSwyKSB8IDIuMAorIDAgfCAxIHwg WyJTYXQgSmFuIDAxIDAwOjAwOjAwIDIwMjIiLCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMzAi KSB8IFsxLDIpIHwgMi4wCisgMiB8IDMgfCBbIlRodSBKYW4gMDEgMDA6MDA6MDAgMjAxNSIs IlN1biBKYW4gMDEgMDA6MDA6MDAgMjAxNyIpIHwgWzEsMikgfCAyLjAKKygzIHJvd3MpCisK IC0tIFRlc3Qgd2hvbGUtcm93IHJlZmVyZW5jZXMgdG8gdGhlIHZpZXcKIGNyZWF0ZSB0YWJs ZSB1dl9pb2N1X3RhYiAoYSBpbnQgdW5pcXVlLCBiIHRleHQpOwogY3JlYXRlIHZpZXcgdXZf aW9jdV92aWV3IGFzCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3dp dGhvdXRfb3ZlcmxhcHMub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC93aXRob3V0 X292ZXJsYXBzLm91dAppbmRleCAyMTM5YTM5M2RkZS4uMGM4MjI0YTM1ZjUgMTAwNjQ0Ci0t LSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvd2l0aG91dF9vdmVybGFwcy5vdXQKKysr IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC93aXRob3V0X292ZXJsYXBzLm91dApAQCAt MzU5LDYgKzM1OSwzNiBAQCBJTlNFUlQgSU5UTyB0ZW1wb3JhbDMgKGlkLCB2YWxpZF9hdCwg aWQyLCBuYW1lKQogICAoJ1sxLDFdJywgZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIwMTAt MDEtMDEnKSwgJ1s3LDddJywgJ2ZvbycpLAogICAoJ1syLDJdJywgZGF0ZXJhbmdlKCcyMDAw LTAxLTAxJywgJzIwMTAtMDEtMDEnKSwgJ1s5LDldJywgJ2JhcicpCiA7CitVUERBVEUgdGVt cG9yYWwzIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMDAtMDUtMDEnIFRPICcy MDAwLTA3LTAxJworICBTRVQgbmFtZSA9IG5hbWUgfHwgJzEnOworVVBEQVRFIHRlbXBvcmFs MyBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDAwLTA0LTAxJyBUTyAnMjAwMC0w Ni0wMScKKyAgU0VUIG5hbWUgPSBuYW1lIHx8ICcyJworICBXSEVSRSBpZCA9ICdbMiwyXSc7 CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsMyBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CisgIGlk ICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8ICBpZDIgICB8IG5hbWUgIAorLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0KKyBbMSwyKSB8 IFswMS0wMS0yMDAwLDA1LTAxLTIwMDApIHwgWzcsOCkgIHwgZm9vCisgWzEsMikgfCBbMDUt MDEtMjAwMCwwNy0wMS0yMDAwKSB8IFs3LDgpICB8IGZvbzEKKyBbMSwyKSB8IFswNy0wMS0y MDAwLDAxLTAxLTIwMTApIHwgWzcsOCkgIHwgZm9vCisgWzIsMykgfCBbMDEtMDEtMjAwMCww NC0wMS0yMDAwKSB8IFs5LDEwKSB8IGJhcgorIFsyLDMpIHwgWzA0LTAxLTIwMDAsMDUtMDEt MjAwMCkgfCBbOSwxMCkgfCBiYXIyCisgWzIsMykgfCBbMDUtMDEtMjAwMCwwNi0wMS0yMDAw KSB8IFs5LDEwKSB8IGJhcjEyCisgWzIsMykgfCBbMDYtMDEtMjAwMCwwNy0wMS0yMDAwKSB8 IFs5LDEwKSB8IGJhcjEKKyBbMiwzKSB8IFswNy0wMS0yMDAwLDAxLTAxLTIwMTApIHwgWzks MTApIHwgYmFyCisoOCByb3dzKQorCistLSBjb25mbGljdGluZyBpZCBvbmx5OgorSU5TRVJU IElOVE8gdGVtcG9yYWwzIChpZCwgdmFsaWRfYXQsIGlkMiwgbmFtZSkKKyAgVkFMVUVTCisg ICgnWzEsMV0nLCBkYXRlcmFuZ2UoJzIwMDUtMDEtMDEnLCAnMjAwNi0wMS0wMScpLCAnWzgs OF0nLCAnZm9vMycpOworRVJST1I6ICBjb25mbGljdGluZyBrZXkgdmFsdWUgdmlvbGF0ZXMg ZXhjbHVzaW9uIGNvbnN0cmFpbnQgInRlbXBvcmFsM19wayIKK0RFVEFJTDogIEtleSAoaWQs IHZhbGlkX2F0KT0oWzEsMiksIFswMS0wMS0yMDA1LDAxLTAxLTIwMDYpKSBjb25mbGljdHMg d2l0aCBleGlzdGluZyBrZXkgKGlkLCB2YWxpZF9hdCk9KFsxLDIpLCBbMDctMDEtMjAwMCww MS0wMS0yMDEwKSkuCistLSBjb25mbGljdGluZyBpZDIgb25seToKK0lOU0VSVCBJTlRPIHRl bXBvcmFsMyAoaWQsIHZhbGlkX2F0LCBpZDIsIG5hbWUpCisgIFZBTFVFUworICAoJ1szLDNd JywgZGF0ZXJhbmdlKCcyMDA1LTAxLTAxJywgJzIwMTAtMDEtMDEnKSwgJ1s5LDldJywgJ2Jh cjMnKTsKK0VSUk9SOiAgY29uZmxpY3Rpbmcga2V5IHZhbHVlIHZpb2xhdGVzIGV4Y2x1c2lv biBjb25zdHJhaW50ICJ0ZW1wb3JhbDNfdW5pcSIKK0RFVEFJTDogIEtleSAoaWQyLCB2YWxp ZF9hdCk9KFs5LDEwKSwgWzAxLTAxLTIwMDUsMDEtMDEtMjAxMCkpIGNvbmZsaWN0cyB3aXRo IGV4aXN0aW5nIGtleSAoaWQyLCB2YWxpZF9hdCk9KFs5LDEwKSwgWzA3LTAxLTIwMDAsMDEt MDEtMjAxMCkpLgogRFJPUCBUQUJMRSB0ZW1wb3JhbDM7CiAtLQogLS0gdGVzdCBjaGFuZ2lu ZyB0aGUgUEsncyBkZXBlbmRlbmNpZXMKQEAgLTQxMSw2ICs0NDEsMzYgQEAgU0VMRUNUICog RlJPTSB0cDIgT1JERVIgQlkgaWQsIHZhbGlkX2F0OwogIFszLDQpIHwgWzAxLTAxLTIwMDAs MDEtMDEtMjAxMCkgfCB0aHJlZQogKDEgcm93KQogCitVUERBVEUgIHRlbXBvcmFsX3BhcnRp dGlvbmVkCisgIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMDAtMDEtMTUnIFRP ICcyMDAwLTAyLTE1JworICBTRVQgbmFtZSA9ICdvbmUyJworICBXSEVSRSBpZCA9ICdbMSwx XSc7CitVUERBVEUgIHRlbXBvcmFsX3BhcnRpdGlvbmVkCisgIEZPUiBQT1JUSU9OIE9GIHZh bGlkX2F0IEZST00gJzIwMDAtMDItMjAnIFRPICcyMDAwLTAyLTI1JworICBTRVQgaWQgPSAn WzQsNF0nCisgIFdIRVJFIG5hbWUgPSAnb25lJzsKK1VQREFURSAgdGVtcG9yYWxfcGFydGl0 aW9uZWQKKyAgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAwMi0wMS0wMScgVE8g JzIwMDMtMDEtMDEnCisgIFNFVCBpZCA9ICdbMiwyXScKKyAgV0hFUkUgbmFtZSA9ICd0aHJl ZSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZAorICBGT1IgUE9SVElPTiBP RiB2YWxpZF9hdCBGUk9NICcyMDAwLTAxLTE1JyBUTyAnMjAwMC0wMi0xNScKKyAgV0hFUkUg aWQgPSAnWzMsM10nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBPUkRF UiBCWSBpZCwgdmFsaWRfYXQ7CisgIGlkICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8 IG5hbWUgIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0KKyBb MSwyKSB8IFswMS0wMS0yMDAwLDAxLTE1LTIwMDApIHwgb25lCisgWzEsMikgfCBbMDEtMTUt MjAwMCwwMi0wMS0yMDAwKSB8IG9uZTIKKyBbMSwyKSB8IFswMi0wMS0yMDAwLDAyLTE1LTIw MDApIHwgb25lMgorIFsxLDIpIHwgWzAyLTE1LTIwMDAsMDItMjAtMjAwMCkgfCBvbmUKKyBb MSwyKSB8IFswMi0yNS0yMDAwLDAzLTAxLTIwMDApIHwgb25lCisgWzIsMykgfCBbMDEtMDEt MjAwMiwwMS0wMS0yMDAzKSB8IHRocmVlCisgWzMsNCkgfCBbMDEtMDEtMjAwMCwwMS0xNS0y MDAwKSB8IHRocmVlCisgWzMsNCkgfCBbMDItMTUtMjAwMCwwMS0wMS0yMDAyKSB8IHRocmVl CisgWzMsNCkgfCBbMDEtMDEtMjAwMywwMS0wMS0yMDEwKSB8IHRocmVlCisgWzQsNSkgfCBb MDItMjAtMjAwMCwwMi0yNS0yMDAwKSB8IG9uZQorKDEwIHJvd3MpCisKIERST1AgVEFCTEUg dGVtcG9yYWxfcGFydGl0aW9uZWQ7CiAtLSB0ZW1wb3JhbCBVTklRVUU6CiBDUkVBVEUgVEFC TEUgdGVtcG9yYWxfcGFydGl0aW9uZWQgKApAQCAtNDQ2LDYgKzUwNiwzNiBAQCBTRUxFQ1Qg KiBGUk9NIHRwMiBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CiAgWzMsNCkgfCBbMDEtMDEtMjAw MCwwMS0wMS0yMDEwKSB8IHRocmVlCiAoMSByb3cpCiAKK1VQREFURSAgdGVtcG9yYWxfcGFy dGl0aW9uZWQKKyAgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAwMC0wMS0xNScg VE8gJzIwMDAtMDItMTUnCisgIFNFVCBuYW1lID0gJ29uZTInCisgIFdIRVJFIGlkID0gJ1sx LDFdJzsKK1VQREFURSAgdGVtcG9yYWxfcGFydGl0aW9uZWQKKyAgRk9SIFBPUlRJT04gT0Yg dmFsaWRfYXQgRlJPTSAnMjAwMC0wMi0yMCcgVE8gJzIwMDAtMDItMjUnCisgIFNFVCBpZCA9 ICdbNCw0XScKKyAgV0hFUkUgbmFtZSA9ICdvbmUnOworVVBEQVRFICB0ZW1wb3JhbF9wYXJ0 aXRpb25lZAorICBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDAyLTAxLTAxJyBU TyAnMjAwMy0wMS0wMScKKyAgU0VUIGlkID0gJ1syLDJdJworICBXSEVSRSBuYW1lID0gJ3Ro cmVlJzsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkCisgIEZPUiBQT1JUSU9O IE9GIHZhbGlkX2F0IEZST00gJzIwMDAtMDEtMTUnIFRPICcyMDAwLTAyLTE1JworICBXSEVS RSBpZCA9ICdbMywzXSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkIE9S REVSIEJZIGlkLCB2YWxpZF9hdDsKKyAgaWQgICB8ICAgICAgICB2YWxpZF9hdCAgICAgICAg IHwgbmFtZSAgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLQor IFsxLDIpIHwgWzAxLTAxLTIwMDAsMDEtMTUtMjAwMCkgfCBvbmUKKyBbMSwyKSB8IFswMS0x NS0yMDAwLDAyLTAxLTIwMDApIHwgb25lMgorIFsxLDIpIHwgWzAyLTAxLTIwMDAsMDItMTUt MjAwMCkgfCBvbmUyCisgWzEsMikgfCBbMDItMTUtMjAwMCwwMi0yMC0yMDAwKSB8IG9uZQor IFsxLDIpIHwgWzAyLTI1LTIwMDAsMDMtMDEtMjAwMCkgfCBvbmUKKyBbMiwzKSB8IFswMS0w MS0yMDAyLDAxLTAxLTIwMDMpIHwgdGhyZWUKKyBbMyw0KSB8IFswMS0wMS0yMDAwLDAxLTE1 LTIwMDApIHwgdGhyZWUKKyBbMyw0KSB8IFswMi0xNS0yMDAwLDAxLTAxLTIwMDIpIHwgdGhy ZWUKKyBbMyw0KSB8IFswMS0wMS0yMDAzLDAxLTAxLTIwMTApIHwgdGhyZWUKKyBbNCw1KSB8 IFswMi0yMC0yMDAwLDAyLTI1LTIwMDApIHwgb25lCisoMTAgcm93cykKKwogRFJPUCBUQUJM RSB0ZW1wb3JhbF9wYXJ0aXRpb25lZDsKIC0tCiAtLSB0ZXN0IEZLIGRlcGVuZGVuY2llcwpA QCAtNzcwLDEzICs4NjAsMjUgQEAgVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgaWQgPSAnWzcs N10nCiBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0w MS0wMScsICcyMDE4LTAyLTAxJyk7CiBFUlJPUjogIHVwZGF0ZSBvciBkZWxldGUgb24gdGFi bGUgInRlbXBvcmFsX3JuZyIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVt cG9yYWxfZmtfcm5nMnJuZ19mayIgb24gdGFibGUgInRlbXBvcmFsX2ZrX3JuZzJybmciCiBE RVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9hdCk9KFs1LDYpLCBbIk1vbiBKYW4gMDEgMDA6MDA6 MDAgMjAxOCIsIlRodSBGZWIgMDEgMDA6MDA6MDAgMjAxOCIpKSBpcyBzdGlsbCByZWZlcmVu Y2VkIGZyb20gdGFibGUgInRlbXBvcmFsX2ZrX3JuZzJybmciLgorLS0gY2hhbmdpbmcgYW4g dW5yZWZlcmVuY2VkIHBhcnQgaXMgb2theToKK1VQREFURSB0ZW1wb3JhbF9ybmcKK0ZPUiBQ T1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDEtMDInIFRPICcyMDE4LTAxLTAzJwor U0VUIGlkID0gJ1s3LDddJworV0hFUkUgaWQgPSAnWzUsNV0nOworLS0gY2hhbmdpbmcganVz dCBhIHBhcnQgZmFpbHM6CitVUERBVEUgdGVtcG9yYWxfcm5nCitGT1IgUE9SVElPTiBPRiB2 YWxpZF9hdCBGUk9NICcyMDE4LTAxLTA1JyBUTyAnMjAxOC0wMS0xMCcKK1NFVCBpZCA9ICdb Nyw3XScKK1dIRVJFIGlkID0gJ1s1LDVdJzsKK0VSUk9SOiAgdXBkYXRlIG9yIGRlbGV0ZSBv biB0YWJsZSAidGVtcG9yYWxfcm5nIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50 ICJ0ZW1wb3JhbF9ma19ybmcycm5nX2ZrIiBvbiB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJu ZyIKK0RFVEFJTDogIEtleSAoaWQsIHZhbGlkX2F0KT0oWzUsNiksIFsiV2VkIEphbiAwMyAw MDowMDowMCAyMDE4IiwiVGh1IEZlYiAwMSAwMDowMDowMCAyMDE4IikpIGlzIHN0aWxsIHJl ZmVyZW5jZWQgZnJvbSB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIuCiAtLSB0aGVuIGRl bGV0ZSB0aGUgb2JqZWN0aW5nIEZLIHJlY29yZCBhbmQgdGhlIHNhbWUgUEsgdXBkYXRlIHN1 Y2NlZWRzOgogREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdb MywzXSc7CiBVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIw MTYtMDEtMDEnLCAnMjAxNi0wMi0wMScpCiBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlk X2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CiAtLSBjbGVhbiB1 cDoKIERFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgcGFyZW50X2lkID0g J1s1LDVdJzsKLURFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XSc7 CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgSU4gKCdbNSw1XScsICdbNyw3 XScpOwogLS0KIC0tIHRlc3QgRksgcGFyZW50IHVwZGF0ZXMgUkVTVFJJQ1QKIC0tCkBAIC04 MDgsMTMgKzkxMCwyNSBAQCBVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCBpZCA9ICdbNyw3XScK IFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAx JywgJzIwMTgtMDItMDEnKTsKIEVSUk9SOiAgdXBkYXRlIG9yIGRlbGV0ZSBvbiB0YWJsZSAi dGVtcG9yYWxfcm5nIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3Jh bF9ma19ybmcycm5nX2ZrIiBvbiB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIKIERFVEFJ TDogIEtleSAoaWQsIHZhbGlkX2F0KT0oWzUsNiksIFsiTW9uIEphbiAwMSAwMDowMDowMCAy MDE4IiwiVGh1IEZlYiAwMSAwMDowMDowMCAyMDE4IikpIGlzIHN0aWxsIHJlZmVyZW5jZWQg ZnJvbSB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIuCistLSBjaGFuZ2luZyBhbiB1bnJl ZmVyZW5jZWQgcGFydCBpcyBva2F5OgorVVBEQVRFIHRlbXBvcmFsX3JuZworRk9SIFBPUlRJ T04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wMS0wMicgVE8gJzIwMTgtMDEtMDMnCitTRVQg aWQgPSAnWzcsN10nCitXSEVSRSBpZCA9ICdbNSw1XSc7CistLSBjaGFuZ2luZyBqdXN0IGEg cGFydCBmYWlsczoKK1VQREFURSB0ZW1wb3JhbF9ybmcKK0ZPUiBQT1JUSU9OIE9GIHZhbGlk X2F0IEZST00gJzIwMTgtMDEtMDUnIFRPICcyMDE4LTAxLTEwJworU0VUIGlkID0gJ1s3LDdd JworV0hFUkUgaWQgPSAnWzUsNV0nOworRVJST1I6ICB1cGRhdGUgb3IgZGVsZXRlIG9uIHRh YmxlICJ0ZW1wb3JhbF9ybmciIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRl bXBvcmFsX2ZrX3JuZzJybmdfZmsiIG9uIHRhYmxlICJ0ZW1wb3JhbF9ma19ybmcycm5nIgor REVUQUlMOiAgS2V5IChpZCwgdmFsaWRfYXQpPShbNSw2KSwgWyJXZWQgSmFuIDAzIDAwOjAw OjAwIDIwMTgiLCJUaHUgRmViIDAxIDAwOjAwOjAwIDIwMTgiKSkgaXMgc3RpbGwgcmVmZXJl bmNlZCBmcm9tIHRhYmxlICJ0ZW1wb3JhbF9ma19ybmcycm5nIi4KIC0tIHRoZW4gZGVsZXRl IHRoZSBvYmplY3RpbmcgRksgcmVjb3JkIGFuZCB0aGUgc2FtZSBQSyB1cGRhdGUgc3VjY2Vl ZHM6CiBERUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1szLDNd JzsKIFVQREFURSB0ZW1wb3JhbF9ybmcgU0VUIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxNi0w MS0wMScsICcyMDE2LTAyLTAxJykKIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQg PSB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKIC0tIGNsZWFuIHVwOgog REVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBwYXJlbnRfaWQgPSAnWzUs NV0nOwotREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsKK0RF TEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCBJTiAoJ1s1LDVdJywgJ1s3LDddJyk7 CiAtLQogLS0gdGVzdCBGSyBwYXJlbnQgZGVsZXRlcyBOTyBBQ1RJT04KIC0tCkBAIC04Mzcs OSArOTUxLDIyIEBAIERFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1 XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMi0wMScsCiBERUxFVEUgRlJPTSB0 ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2Uo JzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOwogRVJST1I6ICB1cGRhdGUgb3IgZGVsZXRl IG9uIHRhYmxlICJ0ZW1wb3JhbF9ybmciIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFp bnQgInRlbXBvcmFsX2ZrX3JuZzJybmdfZmsiIG9uIHRhYmxlICJ0ZW1wb3JhbF9ma19ybmcy cm5nIgogREVUQUlMOiAgS2V5IChpZCwgdmFsaWRfYXQpPShbNSw2KSwgWyJNb24gSmFuIDAx IDAwOjAwOjAwIDIwMTgiLCJUaHUgRmViIDAxIDAwOjAwOjAwIDIwMTgiKSkgaXMgc3RpbGwg cmVmZXJlbmNlZCBmcm9tIHRhYmxlICJ0ZW1wb3JhbF9ma19ybmcycm5nIi4KKy0tIGRlbGV0 aW5nIGFuIHVucmVmZXJlbmNlZCBwYXJ0IGlzIG9rYXk6CitERUxFVEUgRlJPTSB0ZW1wb3Jh bF9ybmcKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDEtMDInIFRPICcy MDE4LTAxLTAzJworV0hFUkUgaWQgPSAnWzUsNV0nOworLS0gZGVsZXRpbmcganVzdCBhIHBh cnQgZmFpbHM6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcKK0ZPUiBQT1JUSU9OIE9GIHZh bGlkX2F0IEZST00gJzIwMTgtMDEtMDUnIFRPICcyMDE4LTAxLTEwJworV0hFUkUgaWQgPSAn WzUsNV0nOworRVJST1I6ICB1cGRhdGUgb3IgZGVsZXRlIG9uIHRhYmxlICJ0ZW1wb3JhbF9y bmciIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBvcmFsX2ZrX3JuZzJy bmdfZmsiIG9uIHRhYmxlICJ0ZW1wb3JhbF9ma19ybmcycm5nIgorREVUQUlMOiAgS2V5IChp ZCwgdmFsaWRfYXQpPShbNSw2KSwgWyJXZWQgSmFuIDAzIDAwOjAwOjAwIDIwMTgiLCJUaHUg RmViIDAxIDAwOjAwOjAwIDIwMTgiKSkgaXMgc3RpbGwgcmVmZXJlbmNlZCBmcm9tIHRhYmxl ICJ0ZW1wb3JhbF9ma19ybmcycm5nIi4KIC0tIHRoZW4gZGVsZXRlIHRoZSBvYmplY3Rpbmcg RksgcmVjb3JkIGFuZCB0aGUgc2FtZSBQSyBkZWxldGUgc3VjY2VlZHM6CiBERUxFVEUgRlJP TSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1szLDNdJzsKIERFTEVURSBGUk9N IHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5n ZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CistLSBjbGVhbiB1cDoKK0RFTEVURSBG Uk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgcGFyZW50X2lkID0gJ1s1LDVdJzsKK0RF TEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCBJTiAoJ1s1LDVdJyk7CiAtLQogLS0g dGVzdCBGSyBwYXJlbnQgZGVsZXRlcyBSRVNUUklDVAogLS0KQEAgLTg2Miw5ICs5ODksMjIg QEAgREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFs aWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAyLTAxJywKIERFTEVURSBGUk9NIHRlbXBvcmFsX3Ju ZyBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0w MScsICcyMDE4LTAyLTAxJyk7CiBFUlJPUjogIHVwZGF0ZSBvciBkZWxldGUgb24gdGFibGUg InRlbXBvcmFsX3JuZyIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9y YWxfZmtfcm5nMnJuZ19mayIgb24gdGFibGUgInRlbXBvcmFsX2ZrX3JuZzJybmciCiBERVRB SUw6ICBLZXkgKGlkLCB2YWxpZF9hdCk9KFs1LDYpLCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAg MjAxOCIsIlRodSBGZWIgMDEgMDA6MDA6MDAgMjAxOCIpKSBpcyBzdGlsbCByZWZlcmVuY2Vk IGZyb20gdGFibGUgInRlbXBvcmFsX2ZrX3JuZzJybmciLgorLS0gZGVsZXRpbmcgYW4gdW5y ZWZlcmVuY2VkIHBhcnQgaXMgb2theToKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZworRk9S IFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wMS0wMicgVE8gJzIwMTgtMDEtMDMn CitXSEVSRSBpZCA9ICdbNSw1XSc7CistLSBkZWxldGluZyBqdXN0IGEgcGFydCBmYWlsczoK K0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZworRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJP TSAnMjAxOC0wMS0wNScgVE8gJzIwMTgtMDEtMTAnCitXSEVSRSBpZCA9ICdbNSw1XSc7CitF UlJPUjogIHVwZGF0ZSBvciBkZWxldGUgb24gdGFibGUgInRlbXBvcmFsX3JuZyIgdmlvbGF0 ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxfZmtfcm5nMnJuZ19mayIgb24g dGFibGUgInRlbXBvcmFsX2ZrX3JuZzJybmciCitERVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9h dCk9KFs1LDYpLCBbIldlZCBKYW4gMDMgMDA6MDA6MDAgMjAxOCIsIlRodSBGZWIgMDEgMDA6 MDA6MDAgMjAxOCIpKSBpcyBzdGlsbCByZWZlcmVuY2VkIGZyb20gdGFibGUgInRlbXBvcmFs X2ZrX3JuZzJybmciLgogLS0gdGhlbiBkZWxldGUgdGhlIG9iamVjdGluZyBGSyByZWNvcmQg YW5kIHRoZSBzYW1lIFBLIGRlbGV0ZSBzdWNjZWVkczoKIERFTEVURSBGUk9NIHRlbXBvcmFs X2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzMsM10nOwogREVMRVRFIEZST00gdGVtcG9yYWxf cm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAx LTAxJywgJzIwMTgtMDItMDEnKTsKKy0tIGNsZWFuIHVwOgorREVMRVRFIEZST00gdGVtcG9y YWxfZmtfcm5nMnJuZyBXSEVSRSBwYXJlbnRfaWQgPSAnWzUsNV0nOworREVMRVRFIEZST00g dGVtcG9yYWxfcm5nIFdIRVJFIGlkIElOICgnWzUsNV0nKTsKIC0tCiAtLSB0ZXN0IE9OIFVQ REFURS9ERUxFVEUgb3B0aW9ucwogLS0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mv cGFyYWxsZWxfc2NoZWR1bGUgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxl CmluZGV4IDFkOGE0MTRlZWE3Li40ZmQ3ZjNkMGM3MyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv cmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFs bGVsX3NjaGVkdWxlCkBAIC00OCw3ICs0OCw3IEBAIHRlc3Q6IGNyZWF0ZV9pbmRleCBjcmVh dGVfaW5kZXhfc3BnaXN0IGNyZWF0ZV92aWV3IGluZGV4X2luY2x1ZGluZyBpbmRleF9pbmNs dWRpCiAjIC0tLS0tLS0tLS0KICMgQW5vdGhlciBncm91cCBvZiBwYXJhbGxlbCB0ZXN0cwog IyAtLS0tLS0tLS0tCi10ZXN0OiBjcmVhdGVfYWdncmVnYXRlIGNyZWF0ZV9mdW5jdGlvbl9z cWwgY3JlYXRlX2Nhc3QgY29uc3RyYWludHMgdHJpZ2dlcnMgc2VsZWN0IGluaGVyaXQgdHlw ZWRfdGFibGUgdmFjdXVtIGRyb3BfaWZfZXhpc3RzIHVwZGF0YWJsZV92aWV3cyByb2xlYXR0 cmlidXRlcyBjcmVhdGVfYW0gaGFzaF9mdW5jIGVycm9ycyBpbmZpbml0ZV9yZWN1cnNlCit0 ZXN0OiBjcmVhdGVfYWdncmVnYXRlIGNyZWF0ZV9mdW5jdGlvbl9zcWwgY3JlYXRlX2Nhc3Qg Y29uc3RyYWludHMgdHJpZ2dlcnMgc2VsZWN0IGluaGVyaXQgdHlwZWRfdGFibGUgdmFjdXVt IGRyb3BfaWZfZXhpc3RzIHVwZGF0YWJsZV92aWV3cyByb2xlYXR0cmlidXRlcyBjcmVhdGVf YW0gaGFzaF9mdW5jIGVycm9ycyBpbmZpbml0ZV9yZWN1cnNlIGZvcl9wb3J0aW9uX29mCiAK ICMgLS0tLS0tLS0tLQogIyBzYW5pdHlfY2hlY2sgZG9lcyBhIHZhY3V1bSwgYWZmZWN0aW5n IHRoZSBzb3J0IG9yZGVyIG9mIFNFTEVDVCAqCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdy ZXNzL3NxbC9mb3JfcG9ydGlvbl9vZi5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9mb3Jf cG9ydGlvbl9vZi5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAu LjAzZDVjYzc1NTk5Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwv Zm9yX3BvcnRpb25fb2Yuc3FsCkBAIC0wLDAgKzEsNTMxIEBACistLSBUZXN0cyBmb3IgVVBE QVRFL0RFTEVURSBGT1IgUE9SVElPTiBPRgorCistLSBXb3JrcyBvbiBub24tUEsgY29sdW1u cworQ1JFQVRFIFRBQkxFIGZvcl9wb3J0aW9uX29mX3Rlc3QgKAorICBpZCBpbnQ0cmFuZ2Us CisgIHZhbGlkX2F0IHRzcmFuZ2UsCisgIG5hbWUgdGV4dCBOT1QgTlVMTAorKTsKK0lOU0VS VCBJTlRPIGZvcl9wb3J0aW9uX29mX3Rlc3QgVkFMVUVTCisoJ1sxLDFdJywgJ1syMDE4LTAx LTAyLDIwMjAtMDEtMDEpJywgJ29uZScpOworCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVz dAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wMS0xNScgVE8gJzIwMTkt MDEtMDEnCitTRVQgbmFtZSA9ICdmb28nOworCitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9v Zl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTE1JyBUTyBO VUxMOworCitTRUxFQ1QgKiBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3Q7CisKKy0tIFdvcmtz IG9uIG1vcmUgdGhhbiBvbmUgcmFuZ2UKK0RST1AgVEFCTEUgZm9yX3BvcnRpb25fb2ZfdGVz dDsKK0NSRUFURSBUQUJMRSBmb3JfcG9ydGlvbl9vZl90ZXN0ICgKKyAgaWQgaW50NHJhbmdl LAorICB2YWxpZDFfYXQgdHNyYW5nZSwKKyAgdmFsaWQyX2F0IHRzcmFuZ2UsCisgIG5hbWUg dGV4dCBOT1QgTlVMTAorKTsKK0lOU0VSVCBJTlRPIGZvcl9wb3J0aW9uX29mX3Rlc3QgVkFM VUVTCisoJ1sxLDFdJywgJ1syMDE4LTAxLTAyLDIwMTgtMDItMDMpJywgJ1syMDE1LTAxLTAx LDIwMjUtMDEtMDEpJywgJ29uZScpOworCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAor Rk9SIFBPUlRJT04gT0YgdmFsaWQxX2F0IEZST00gJzIwMTgtMDEtMTUnIFRPIE5VTEwKK1NF VCBuYW1lID0gJ2Zvbyc7CitTRUxFQ1QgKiBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3Q7CisK K1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZDJfYXQg RlJPTSAnMjAxOC0wMS0xNScgVE8gTlVMTAorU0VUIG5hbWUgPSAnYmFyJzsKK1NFTEVDVCAq IEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdDsKKworREVMRVRFIEZST00gZm9yX3BvcnRpb25f b2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWQxX2F0IEZST00gJzIwMTgtMDEtMjAnIFRP IE5VTEw7CitTRUxFQ1QgKiBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3Q7CisKK0RFTEVURSBG Uk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkMl9hdCBGUk9N ICcyMDE4LTAxLTIwJyBUTyBOVUxMOworU0VMRUNUICogRlJPTSBmb3JfcG9ydGlvbl9vZl90 ZXN0OworCistLSBUZXN0IHdpdGggTlVMTHMgaW4gdGhlIHNjYWxhci9yYW5nZSBrZXkgY29s dW1ucy4KKy0tIFRoaXMgd29uJ3QgaGFwcGVuIGlmIHRoZXJlIGlzIGEgUFJJTUFSWSBLRVkg b3IgVU5JUVVFIGNvbnN0cmFpbnQKKy0tIGJ1dCBGT1IgUE9SVElPTiBPRiBzaG91bGRuJ3Qg cmVxdWlyZSB0aGF0LgorRFJPUCBUQUJMRSBmb3JfcG9ydGlvbl9vZl90ZXN0OworQ1JFQVRF IFVOTE9HR0VEIFRBQkxFIGZvcl9wb3J0aW9uX29mX3Rlc3QgKAorICBpZCBpbnQ0cmFuZ2Us CisgIHZhbGlkX2F0IHRzcmFuZ2UsCisgIG5hbWUgdGV4dAorKTsKK0lOU0VSVCBJTlRPIGZv cl9wb3J0aW9uX29mX3Rlc3QgVkFMVUVTCisgICgnWzEsMV0nLCBOVUxMLCAnMSBudWxsJyks CisgICgnWzEsMV0nLCAnKCwpJywgJzEgdW5ib3VuZGVkJyksCisgICgnWzEsMV0nLCAnZW1w dHknLCAnMSBlbXB0eScpLAorICAoTlVMTCwgTlVMTCwgTlVMTCksCisgIChOVUxMLCB0c3Jh bmdlKCcyMDE4LTAxLTAxJywgJzIwMTktMDEtMDEnKSwgJ251bGwga2V5Jyk7CitVUERBVEUg Zm9yX3BvcnRpb25fb2ZfdGVzdAorICBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NIE5V TEwgVE8gTlVMTAorICBTRVQgbmFtZSA9ICdOVUxMIHRvIE5VTEwnOworU0VMRUNUICogRlJP TSBmb3JfcG9ydGlvbl9vZl90ZXN0OworCitEUk9QIFRBQkxFIGZvcl9wb3J0aW9uX29mX3Rl c3Q7CitDUkVBVEUgVEFCTEUgZm9yX3BvcnRpb25fb2ZfdGVzdCAoCisgIGlkIGludDRyYW5n ZSBOT1QgTlVMTCwKKyAgdmFsaWRfYXQgdHNyYW5nZSBOT1QgTlVMTCwKKyAgbmFtZSB0ZXh0 IE5PVCBOVUxMLAorCUNPTlNUUkFJTlQgZm9yX3BvcnRpb25fb2ZfcGsgUFJJTUFSWSBLRVkg KGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK0lOU0VSVCBJTlRPIGZvcl9w b3J0aW9uX29mX3Rlc3QKK1ZBTFVFUworKCdbMSwxXScsICdbMjAxOC0wMS0wMiwyMDE4LTAy LTAzKScsICdvbmUnKSwKKygnWzEsMV0nLCAnWzIwMTgtMDItMDMsMjAxOC0wMy0wMyknLCAn b25lJyksCisoJ1sxLDFdJywgJ1syMDE4LTAzLTAzLDIwMTgtMDQtMDQpJywgJ29uZScpLAor KCdbMiwyXScsICdbMjAxOC0wMS0wMSwyMDE4LTAxLTA1KScsICd0d28nKSwKKygnWzMsM10n LCAnWzIwMTgtMDEtMDEsKScsICd0aHJlZScpLAorKCdbNCw0XScsICcoLDIwMTgtMDQtMDEp JywgJ2ZvdXInKSwKKygnWzUsNV0nLCAnKCwpJywgJ2ZpdmUnKQorOworCistLQorLS0gVVBE QVRFIHRlc3RzCistLQorCistLSBTZXR0aW5nIHdpdGggYSBtaXNzaW5nIGNvbHVtbiBmYWls cworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIGludmFsaWRf YXQgRlJPTSAnMjAxOC0wNi0wMScgVE8gTlVMTAorU0VUIG5hbWUgPSAnZm9vJworV0hFUkUg aWQgPSAnWzUsNV0nOworCistLSBTZXR0aW5nIHRoZSByYW5nZSBmYWlscworVVBEQVRFIGZv cl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgt MDYtMDEnIFRPIE5VTEwKK1NFVCB2YWxpZF9hdCA9ICdbMTk5MC0wMS0wMSwxOTk5LTAxLTAx KScKK1dIRVJFIGlkID0gJ1s1LDVdJzsKKworLS0gVGhlIHdyb25nIHR5cGUgZmFpbHMKK1VQ REFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9N IDEgVE8gNAorU0VUIG5hbWUgPSAnbm9wZScKK1dIRVJFIGlkID0gJ1szLDNdJzsKKworLS0g U2V0dGluZyB3aXRoIHRpbWVzdGFtcHMgcmV2ZXJzZWQgZmFpbHMKK1VQREFURSBmb3JfcG9y dGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTA2LTAx JyBUTyAnMjAxOC0wMS0wMScKK1NFVCBuYW1lID0gJ3RocmVlXjEnCitXSEVSRSBpZCA9ICdb MywzXSc7CisKKy0tIFNldHRpbmcgd2l0aCBhIHN1YnF1ZXJ5IGZhaWxzCitVUERBVEUgZm9y X3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAoU0VMRUNU ICcyMDE4LTAxLTAxJykgVE8gJzIwMTgtMDYtMDEnCitTRVQgbmFtZSA9ICdub3BlJworV0hF UkUgaWQgPSAnWzMsM10nOworCistLSBTZXR0aW5nIHdpdGggYSBjb2x1bW4gZmFpbHMKK1VQ REFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9N IGxvd2VyKHZhbGlkX2F0KSBUTyBOVUxMCitTRVQgbmFtZSA9ICdub3BlJworV0hFUkUgaWQg PSAnWzMsM10nOworCistLSBTZXR0aW5nIHdpdGggdGltZXN0YW1wcyBlcXVhbCBkb2VzIG5v dGhpbmcKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxp ZF9hdCBGUk9NICcyMDE4LTA0LTAxJyBUTyAnMjAxOC0wNC0wMScKK1NFVCBuYW1lID0gJ3Ro cmVlXjAnCitXSEVSRSBpZCA9ICdbMywzXSc7CisKKy0tIFVwZGF0aW5nIGEgZmluaXRlL29w ZW4gcG9ydGlvbiB3aXRoIGEgZmluaXRlL29wZW4gdGFyZ2V0CitVUERBVEUgZm9yX3BvcnRp b25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wNi0wMScg VE8gTlVMTAorU0VUIG5hbWUgPSAndGhyZWVeMScKK1dIRVJFIGlkID0gJ1szLDNdJzsKKwor LS0gVXBkYXRpbmcgYSBmaW5pdGUvb3BlbiBwb3J0aW9uIHdpdGggYW4gb3Blbi9maW5pdGUg dGFyZ2V0CitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFs aWRfYXQgRlJPTSBOVUxMIFRPICcyMDE4LTAzLTAxJworU0VUIG5hbWUgPSAndGhyZWVeMicK K1dIRVJFIGlkID0gJ1szLDNdJzsKKworLS0gVXBkYXRpbmcgYW4gb3Blbi9maW5pdGUgcG9y dGlvbiB3aXRoIGFuIG9wZW4vZmluaXRlIHRhcmdldAorVVBEQVRFIGZvcl9wb3J0aW9uX29m X3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gTlVMTCBUTyAnMjAxOC0wMi0w MScKK1NFVCBuYW1lID0gJ2ZvdXJeMScKK1dIRVJFIGlkID0gJ1s0LDRdJzsKKworLS0gVXBk YXRpbmcgYW4gb3Blbi9maW5pdGUgcG9ydGlvbiB3aXRoIGEgZmluaXRlL29wZW4gdGFyZ2V0 CitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQg RlJPTSAnMjAxNy0wMS0wMScgVE8gTlVMTAorU0VUIG5hbWUgPSAnZm91cl4yJworV0hFUkUg aWQgPSAnWzQsNF0nOworCistLSBVcGRhdGluZyBhIGZpbml0ZS9maW5pdGUgcG9ydGlvbiB3 aXRoIGFuIGV4YWN0IGZpdAorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JU SU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTctMDEtMDEnIFRPICcyMDE4LTAyLTAxJworU0VU IG5hbWUgPSAnZm91cl4zJworV0hFUkUgaWQgPSAnWzQsNF0nOworCistLSBVcGRhdGluZyBh biBlbmNsb3NlZCBzcGFuCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJ T04gT0YgdmFsaWRfYXQgRlJPTSBOVUxMIFRPIE5VTEwKK1NFVCBuYW1lID0gJ3R3b14yJwor V0hFUkUgaWQgPSAnWzIsMl0nOworCistLSBVcGRhdGluZyBhbiBvcGVuL29wZW4gcG9ydGlv biB3aXRoIGEgZmluaXRlL2Zpbml0ZSB0YXJnZXQKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90 ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTAxLTAxJyBUTyAnMjAx OS0wMS0wMScKK1NFVCBuYW1lID0gJ2ZpdmVeMicKK1dIRVJFIGlkID0gJ1s1LDVdJzsKKwor LS0gVXBkYXRpbmcgYW4gZW5jbG9zZWQgc3BhbiB3aXRoIHNlcGFyYXRlIHByb3RydWRpbmcg c3BhbnMKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxp ZF9hdCBGUk9NICcyMDE3LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScKK1NFVCBuYW1lID0gJ2Zp dmVeMycKK1dIRVJFIGlkID0gJ1s1LDVdJzsKKworLS0gVXBkYXRpbmcgbXVsdGlwbGUgZW5j bG9zZWQgc3BhbnMKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBP RiB2YWxpZF9hdCBGUk9NIE5VTEwgVE8gTlVMTAorU0VUIG5hbWUgPSAnb25lXjInCitXSEVS RSBpZCA9ICdbMSwxXSc7CisKKy0tIFVwZGF0aW5nIHdpdGggYSBzaGlmdC9yZWR1Y2UgY29u ZmxpY3QKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxp ZF9hdAorICBGUk9NICcyMDE4LTAzLTAxJyBBVCBUSU1FIFpPTkUgSU5URVJWQUwgJzEnIEhP VVIgVE8gTUlOVVRFCisgIFRPICcyMDE5LTAxLTAxJworU0VUIG5hbWUgPSAnb25lXjMnCitX SEVSRSBpZCA9ICdbMSwxXSc7CisKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1Ig UE9SVElPTiBPRiB2YWxpZF9hdAorICBGUk9NICcyMDE4LTAzLTAxJyBBVCBUSU1FIFpPTkUg SU5URVJWQUwgJzInIEhPVVIKKyAgVE8gJzIwMTktMDEtMDEnCitTRVQgbmFtZSA9ICdvbmVe NCcKK1dIRVJFIGlkID0gJ1sxLDFdJzsKKworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QK K0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0CisgIEZST00gKCcyMDE4LTAzLTAxJyBBVCBUSU1F IFpPTkUgSU5URVJWQUwgJzInIEhPVVIpCisgIFRPICcyMDE5LTAxLTAxJworU0VUIG5hbWUg PSAnb25lXjQnCitXSEVSRSBpZCA9ICdbMSwxXSc7CisKKy0tIFdpdGggYSBkaXJlY3QgdGFy Z2V0CitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRf YXQgKHRzcmFuZ2UoJzIwMTgtMDMtMTAnLCAnMjAxOC0wMy0xNycpKQorU0VUIG5hbWUgPSAn b25lXjUnCitXSEVSRSBpZCA9ICdbMSwxXSc7CisKKy0tIFVwZGF0aW5nIHRoZSBub24tcmFu Z2UgcGFydCBvZiB0aGUgUEs6CitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBP UlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wMi0xNScgVE8gTlVMTAorU0VUIGlkID0g J1s2LDZdJworV0hFUkUgaWQgPSAnWzEsMV0nOworCistLSBVUERBVEUgd2l0aCBubyBXSEVS RSBjbGF1c2UKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2 YWxpZF9hdCBGUk9NICcyMDMwLTAxLTAxJyBUTyBOVUxMCitTRVQgbmFtZSA9IG5hbWUgfHwg JyonOworCitTRUxFQ1QgKiBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QgT1JERVIgQlkgaWQs IHZhbGlkX2F0OworCistLQorLS0gREVMRVRFIHRlc3RzCistLQorCistLSBEZWxldGluZyB3 aXRoIGEgbWlzc2luZyBjb2x1bW4gZmFpbHMKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29m X3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIGludmFsaWRfYXQgRlJPTSAnMjAxOC0wNi0wMScgVE8g TlVMTAorV0hFUkUgaWQgPSAnWzUsNV0nOworCistLSBEZWxldGluZyB3aXRoIHRpbWVzdGFt cHMgcmV2ZXJzZWQgZmFpbHMKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZP UiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDYtMDEnIFRPICcyMDE4LTAxLTAx JworV0hFUkUgaWQgPSAnWzMsM10nOworCistLSBEZWxldGluZyB3aXRoIHRpbWVzdGFtcHMg ZXF1YWwgZG9lcyBub3RoaW5nCitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0CitG T1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTA0LTAxJyBUTyAnMjAxOC0wNC0w MScKK1dIRVJFIGlkID0gJ1szLDNdJzsKKworLS0gRGVsZXRpbmcgd2l0aCBhIGNsb3NlZC9j bG9zZWQgdGFyZ2V0CitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9S VElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTA2LTAxJyBUTyAnMjAyMC0wNi0wMScKK1dI RVJFIGlkID0gJ1s1LDVdJzsKKworLS0gRGVsZXRpbmcgd2l0aCBhIGNsb3NlZC9vcGVuIHRh cmdldAorREVMRVRFIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0Yg dmFsaWRfYXQgRlJPTSAnMjAxOC0wNC0wMScgVE8gTlVMTAorV0hFUkUgaWQgPSAnWzMsM10n OworCistLSBEZWxldGluZyB3aXRoIGFuIG9wZW4vY2xvc2VkIHRhcmdldAorREVMRVRFIEZS T00gZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSBO VUxMIFRPICcyMDE4LTAyLTA4JworV0hFUkUgaWQgPSAnWzEsMV0nOworCistLSBEZWxldGlu ZyB3aXRoIGFuIG9wZW4vb3BlbiB0YXJnZXQKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29m X3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gTlVMTCBUTyBOVUxMCitXSEVS RSBpZCA9ICdbNiw2XSc7CisKKy0tIERFTEVURSB3aXRoIG5vIFdIRVJFIGNsYXVzZQorREVM RVRFIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQg RlJPTSAnMjAyNS0wMS0wMScgVE8gTlVMTDsKKworU0VMRUNUICogRlJPTSBmb3JfcG9ydGlv bl9vZl90ZXN0IE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKKworLS0gVVBEQVRFIC4uLiBSRVRV Uk5JTkcgcmV0dXJucyBvbmx5IHRoZSB1cGRhdGVkIHZhbHVlcyAobm90IHRoZSBpbnNlcnRl ZCBzaWRlIHZhbHVlcykKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElP TiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTAyLTAxJyBUTyAnMjAxOC0wMi0xNScKK1NFVCBu YW1lID0gJ3RocmVlXjMnCitXSEVSRSBpZCA9ICdbMywzXScKK1JFVFVSTklORyAqOworCist LSB0ZXN0IHRoYXQgd2UgcnVuIHRyaWdnZXJzIG9uIHRoZSBVUERBVEUvREVMRVRFZCByb3cg YW5kIHRoZSBJTlNFUlRlZCByb3dzCisKK0NSRUFURSBGVU5DVElPTiBmb3JfcG9ydGlvbl9v Zl90cmlnZ2VyKCkKK1JFVFVSTlMgdHJpZ2dlcgorQVMKKyQkCitCRUdJTgorICBSQUlTRSBO T1RJQ0UgJyUgJSAlIG9mICUnLCBUR19XSEVOLCBUR19PUCwgTkVXLnZhbGlkX2F0LCBPTEQu dmFsaWRfYXQ7CisgIElGIFRHX09QID0gJ0RFTEVURScgVEhFTgorICAgIFJFVFVSTiBPTEQ7 CisgIEVMU0UKKyAgICBSRVRVUk4gTkVXOworICBFTkQgSUY7CitFTkQ7CiskJAorTEFOR1VB R0UgcGxwZ3NxbDsKKworQ1JFQVRFIFRSSUdHRVIgdHJnX2Zvcl9wb3J0aW9uX29mX2JlZm9y ZQorICBCRUZPUkUgSU5TRVJUIE9SIFVQREFURSBPUiBERUxFVEUgT04gZm9yX3BvcnRpb25f b2ZfdGVzdAorICBGT1IgRUFDSCBST1cKKyAgRVhFQ1VURSBGVU5DVElPTiBmb3JfcG9ydGlv bl9vZl90cmlnZ2VyKCk7CitDUkVBVEUgVFJJR0dFUiB0cmdfZm9yX3BvcnRpb25fb2ZfYWZ0 ZXIKKyAgQUZURVIgSU5TRVJUIE9SIFVQREFURSBPUiBERUxFVEUgT04gZm9yX3BvcnRpb25f b2ZfdGVzdAorICBGT1IgRUFDSCBST1cKKyAgRVhFQ1VURSBGVU5DVElPTiBmb3JfcG9ydGlv bl9vZl90cmlnZ2VyKCk7CisKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9S VElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDIxLTAxLTAxJyBUTyAnMjAyMi0wMS0wMScKK1NF VCBuYW1lID0gJ2ZpdmVeNCcKK1dIRVJFIGlkID0gJ1s1LDVdJzsKKworREVMRVRFIEZST00g Zm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAy My0wMS0wMScgVE8gJzIwMjQtMDEtMDEnCitXSEVSRSBpZCA9ICdbNSw1XSc7CisKK1NFTEVD VCAqIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdCBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CitE Uk9QIEZVTkNUSU9OIGZvcl9wb3J0aW9uX29mX3RyaWdnZXIgQ0FTQ0FERTsKKworLS0gVHJp Z2dlcnMgd2l0aCBhIGN1c3RvbSB0cmFuc2l0aW9uIHRhYmxlIG5hbWU6CisKK0RST1AgVEFC TEUgZm9yX3BvcnRpb25fb2ZfdGVzdDsKK0NSRUFURSBUQUJMRSBmb3JfcG9ydGlvbl9vZl90 ZXN0ICgKKyAgaWQgaW50NHJhbmdlLAorICB2YWxpZF9hdCBkYXRlcmFuZ2UsCisgIG5hbWUg dGV4dAorKTsKK0lOU0VSVCBJTlRPIGZvcl9wb3J0aW9uX29mX3Rlc3QgVkFMVUVTICgnWzEs MV0nLCAnWzIwMTgtMDEtMDEsMjAyMC0wMS0wMSknLCAnb25lJyk7CisKK0NSRUFURSBGVU5D VElPTiBkdW1wX3RyaWdnZXIoKQorUkVUVVJOUyBUUklHR0VSIExBTkdVQUdFIHBscGdzcWwg QVMKKyQkCitCRUdJTgorICBSQUlTRSBOT1RJQ0UgJ1RHX09QID0gJScsIFRHX09QOworICBJ RiBUR19PUCA9ICdJTlNFUlQnIFRIRU4KKyAgICBSQUlTRSBOT1RJQ0UgJ3RyaWdnZXIgPSAl LCBUR19MRVZFTCA9ICUsIE5FVyB0YWJsZSA9ICUnLAorICAgICAgVEdfTkFNRSwgVEdfTEVW RUwsIChTRUxFQ1Qgc3RyaW5nX2FnZyhuZXdfdGFibGU6OnRleHQsICcsICcgT1JERVIgQlkg aWQpIEZST00gbmV3X3RhYmxlKTsKKyAgRUxTSUYgVEdfT1AgPSAnVVBEQVRFJyBUSEVOCisg ICAgUkFJU0UgTk9USUNFICd0cmlnZ2VyID0gJSwgVEdfTEVWRUwgPSAlLCBPTEQgdGFibGUg PSAlLCBORVcgdGFibGUgPSAlJywKKyAgICAgIFRHX05BTUUsIFRHX0xFVkVMLAorICAgICAg KFNFTEVDVCBzdHJpbmdfYWdnKG9sZF90YWJsZTo6dGV4dCwgJywgJyBPUkRFUiBCWSBpZCkg RlJPTSBvbGRfdGFibGUpLAorICAgICAgKFNFTEVDVCBzdHJpbmdfYWdnKG5ld190YWJsZTo6 dGV4dCwgJywgJyBPUkRFUiBCWSBpZCkgRlJPTSBuZXdfdGFibGUpOworICBFTFNJRiBUR19P UCA9ICdERUxFVEUnIFRIRU4KKyAgICBSQUlTRSBOT1RJQ0UgJ3RyaWdnZXIgPSAlLCBUR19M RVZFTCA9ICUsIE9MRCB0YWJsZSA9ICUnLAorICAgICAgVEdfTkFNRSwgVEdfTEVWRUwsIChT RUxFQ1Qgc3RyaW5nX2FnZyhvbGRfdGFibGU6OnRleHQsICcsICcgT1JERVIgQlkgaWQpIEZS T00gb2xkX3RhYmxlKTsKKyAgRU5EIElGOworICBSRVRVUk4gTlVMTDsKK0VORDsKKyQkOwor CitDUkVBVEUgVFJJR0dFUiBmb3JfcG9ydGlvbl9vZl90ZXN0X2luc2VydF90cmlnCitBRlRF UiBJTlNFUlQgT04gZm9yX3BvcnRpb25fb2ZfdGVzdAorUkVGRVJFTkNJTkcgTkVXIFRBQkxF IEFTIG5ld190YWJsZQorRk9SIEVBQ0ggUk9XIEVYRUNVVEUgUFJPQ0VEVVJFIGR1bXBfdHJp Z2dlcigpOworCitDUkVBVEUgVFJJR0dFUiBmb3JfcG9ydGlvbl9vZl90ZXN0X2luc2VydF90 cmlnX3N0bXQKK0FGVEVSIElOU0VSVCBPTiBmb3JfcG9ydGlvbl9vZl90ZXN0CitSRUZFUkVO Q0lORyBORVcgVEFCTEUgQVMgbmV3X3RhYmxlCitGT1IgRUFDSCBTVEFURU1FTlQgRVhFQ1VU RSBQUk9DRURVUkUgZHVtcF90cmlnZ2VyKCk7CisKK0NSRUFURSBUUklHR0VSIGZvcl9wb3J0 aW9uX29mX3Rlc3RfdXBkYXRlX3RyaWcKK0FGVEVSIFVQREFURSBPTiBmb3JfcG9ydGlvbl9v Zl90ZXN0CitSRUZFUkVOQ0lORyBPTEQgVEFCTEUgQVMgb2xkX3RhYmxlIE5FVyBUQUJMRSBB UyBuZXdfdGFibGUKK0ZPUiBFQUNIIFJPVyBFWEVDVVRFIFBST0NFRFVSRSBkdW1wX3RyaWdn ZXIoKTsKKworQ1JFQVRFIFRSSUdHRVIgZm9yX3BvcnRpb25fb2ZfdGVzdF91cGRhdGVfdHJp Z19zdG10CitBRlRFUiBVUERBVEUgT04gZm9yX3BvcnRpb25fb2ZfdGVzdAorUkVGRVJFTkNJ TkcgT0xEIFRBQkxFIEFTIG9sZF90YWJsZSBORVcgVEFCTEUgQVMgbmV3X3RhYmxlCitGT1Ig RUFDSCBTVEFURU1FTlQgRVhFQ1VURSBQUk9DRURVUkUgZHVtcF90cmlnZ2VyKCk7CisKK0NS RUFURSBUUklHR0VSIGZvcl9wb3J0aW9uX29mX3Rlc3RfZGVsZXRlX3RyaWcKK0FGVEVSIERF TEVURSBPTiBmb3JfcG9ydGlvbl9vZl90ZXN0CitSRUZFUkVOQ0lORyBPTEQgVEFCTEUgQVMg b2xkX3RhYmxlCitGT1IgRUFDSCBST1cgRVhFQ1VURSBQUk9DRURVUkUgZHVtcF90cmlnZ2Vy KCk7CisKK0NSRUFURSBUUklHR0VSIGZvcl9wb3J0aW9uX29mX3Rlc3RfZGVsZXRlX3RyaWdf c3RtdAorQUZURVIgREVMRVRFIE9OIGZvcl9wb3J0aW9uX29mX3Rlc3QKK1JFRkVSRU5DSU5H IE9MRCBUQUJMRSBBUyBvbGRfdGFibGUKK0ZPUiBFQUNIIFNUQVRFTUVOVCBFWEVDVVRFIFBS T0NFRFVSRSBkdW1wX3RyaWdnZXIoKTsKKworQkVHSU47CitVUERBVEUgZm9yX3BvcnRpb25f b2ZfdGVzdAorICBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTAxLTE1JyBU TyAnMjAxOS0wMS0wMScKKyAgU0VUIG5hbWUgPSAnMjAxOC0wMS0xNV90b18yMDE5LTAxLTAx JzsKK1JPTExCQUNLOworCitCRUdJTjsKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rl c3QKKyAgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSBOVUxMIFRPICcyMDE4LTAxLTIx JzsKK1JPTExCQUNLOworCitCRUdJTjsKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0Cisg IEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gTlVMTCBUTyAnMjAxOC0wMS0wMicKKyAg U0VUIG5hbWUgPSAnTlVMTF90b18yMDE4LTAxLTAxJzsKK1JPTExCQUNLOworCistLSBUZXN0 IHdpdGggbXVsdGlyYW5nZXMKKworQ1JFQVRFIFRBQkxFIGZvcl9wb3J0aW9uX29mX3Rlc3Qy ICgKKyAgaWQgaW50NHJhbmdlIE5PVCBOVUxMLAorICB2YWxpZF9hdCBkYXRlbXVsdGlyYW5n ZSBOT1QgTlVMTCwKKyAgbmFtZSB0ZXh0IE5PVCBOVUxMLAorCUNPTlNUUkFJTlQgZm9yX3Bv cnRpb25fb2ZfdGVzdDJfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9W RVJMQVBTKQorKTsKK0lOU0VSVCBJTlRPIGZvcl9wb3J0aW9uX29mX3Rlc3QyCitWQUxVRVMK KygnWzEsMV0nLCBkYXRlbXVsdGlyYW5nZShkYXRlcmFuZ2UoJzIwMTgtMDEtMDInLCAnMjAx OC0wMi0wMyknKSwgZGF0ZXJhbmdlKCcyMDE4LTAyLTA0JywgJzIwMTgtMDMtMDMnKSksICdv bmUnKSwKKygnWzEsMV0nLCBkYXRlbXVsdGlyYW5nZShkYXRlcmFuZ2UoJzIwMTgtMDMtMDMn LCAnMjAxOC0wNC0wNCknKSksICdvbmUnKSwKKygnWzIsMl0nLCBkYXRlbXVsdGlyYW5nZShk YXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wNS0wMSknKSksICd0d28nKSwKKygnWzMs M10nLCBkYXRlbXVsdGlyYW5nZShkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCBudWxsKSksICd0 aHJlZScpOworOworCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdDIKK0ZPUiBQT1JUSU9O IE9GIHZhbGlkX2F0IChkYXRlbXVsdGlyYW5nZShkYXRlcmFuZ2UoJzIwMTgtMDEtMTAnLCAn MjAxOC0wMi0xMCcpLCBkYXRlcmFuZ2UoJzIwMTgtMDMtMDUnLCAnMjAxOC0wNS0wMScpKSkK K1NFVCBuYW1lID0gJ29uZV4xJworV0hFUkUgaWQgPSAnWzEsMV0nOworCitERUxFVEUgRlJP TSBmb3JfcG9ydGlvbl9vZl90ZXN0MgorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgKGRhdGVt dWx0aXJhbmdlKGRhdGVyYW5nZSgnMjAxOC0wMS0xNScsICcyMDE4LTAyLTE1JyksIGRhdGVy YW5nZSgnMjAxOC0wMy0wMScsICcyMDE4LTAzLTE1JykpKQorV0hFUkUgaWQgPSAnWzIsMl0n OworCitTRUxFQ1QgKiBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QyIE9SREVSIEJZIGlkLCB2 YWxpZF9hdDsKKworRFJPUCBUQUJMRSBmb3JfcG9ydGlvbl9vZl90ZXN0MjsKKworLS0gVGVz dCB3aXRoIGEgY3VzdG9tIHJhbmdlIHR5cGUKKworQ1JFQVRFIFRZUEUgbXlkYXRlcmFuZ2Ug QVMgcmFuZ2Uoc3VidHlwZT1kYXRlKTsKKworQ1JFQVRFIFRBQkxFIGZvcl9wb3J0aW9uX29m X3Rlc3QyICgKKyAgaWQgaW50NHJhbmdlIE5PVCBOVUxMLAorICB2YWxpZF9hdCBteWRhdGVy YW5nZSBOT1QgTlVMTCwKKyAgbmFtZSB0ZXh0IE5PVCBOVUxMLAorCUNPTlNUUkFJTlQgZm9y X3BvcnRpb25fb2ZfdGVzdDJfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VU IE9WRVJMQVBTKQorKTsKK0lOU0VSVCBJTlRPIGZvcl9wb3J0aW9uX29mX3Rlc3QyCitWQUxV RVMKKygnWzEsMV0nLCAnWzIwMTgtMDEtMDIsMjAxOC0wMi0wMyknLCAnb25lJyksCisoJ1sx LDFdJywgJ1syMDE4LTAyLTAzLDIwMTgtMDMtMDMpJywgJ29uZScpLAorKCdbMSwxXScsICdb MjAxOC0wMy0wMywyMDE4LTA0LTA0KScsICdvbmUnKSwKKygnWzIsMl0nLCAnWzIwMTgtMDEt MDEsMjAxOC0wNS0wMSknLCAndHdvJyksCisoJ1szLDNdJywgJ1syMDE4LTAxLTAxLCknLCAn dGhyZWUnKTsKKzsKKworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QyCitGT1IgUE9SVElP TiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTAxLTEwJyBUTyAnMjAxOC0wMi0xMCcKK1NFVCBu YW1lID0gJ29uZV4xJworV0hFUkUgaWQgPSAnWzEsMV0nOworCitERUxFVEUgRlJPTSBmb3Jf cG9ydGlvbl9vZl90ZXN0MgorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0w MS0xNScgVE8gJzIwMTgtMDItMTUnCitXSEVSRSBpZCA9ICdbMiwyXSc7CisKK1NFTEVDVCAq IEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdDIgT1JERVIgQlkgaWQsIHZhbGlkX2F0OworCitE Uk9QIFRBQkxFIGZvcl9wb3J0aW9uX29mX3Rlc3QyOworRFJPUCBUWVBFIG15ZGF0ZXJhbmdl OworCistLSBUZXN0IEZPUiBQT1JUSU9OIE9GIGFnYWluc3QgYSBwYXJ0aXRpb25lZCB0YWJs ZS4KKy0tIHRlbXBvcmFsX3BhcnRpdGlvbmVkXzEgaGFzIHRoZSBzYW1lIGF0dG51bXMgYXMg dGhlIHJvb3QKKy0tIHRlbXBvcmFsX3BhcnRpdGlvbmVkXzMgaGFzIHRoZSBkaWZmZXJlbnQg YXR0bnVtcyBmcm9tIHRoZSByb290CistLSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF81IGhhcyB0 aGUgZGlmZmVyZW50IGF0dG51bXMgdG9vLCBidXQgcmV2ZXJzZWQKKworQ1JFQVRFIFRBQkxF IHRlbXBvcmFsX3BhcnRpdGlvbmVkICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgZGF0 ZXJhbmdlLAorICBuYW1lIHRleHQsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJpdGlvbmVk X3VxIFVOSVFVRSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispIFBBUlRJVElP TiBCWSBMSVNUIChpZCk7CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfMSBQ QVJUSVRJT04gT0YgdGVtcG9yYWxfcGFydGl0aW9uZWQgRk9SIFZBTFVFUyBJTiAoJ1sxLDFd JywgJ1syLDJdJyk7CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfMyBQQVJU SVRJT04gT0YgdGVtcG9yYWxfcGFydGl0aW9uZWQgRk9SIFZBTFVFUyBJTiAoJ1szLDNdJywg J1s0LDRdJyk7CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfNSBQQVJUSVRJ T04gT0YgdGVtcG9yYWxfcGFydGl0aW9uZWQgRk9SIFZBTFVFUyBJTiAoJ1s1LDVdJywgJ1s2 LDZdJyk7CisKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkIERFVEFDSCBQQVJU SVRJT04gdGVtcG9yYWxfcGFydGl0aW9uZWRfMzsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX3Bh cnRpdGlvbmVkXzMgRFJPUCBDT0xVTU4gaWQsIERST1AgQ09MVU1OIHZhbGlkX2F0OworQUxU RVIgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfMyBBREQgQ09MVU1OIGlkIGludDRyYW5n ZSBOT1QgTlVMTCwgQUREIENPTFVNTiB2YWxpZF9hdCBkYXRlcmFuZ2UgTk9UIE5VTEw7CitB TFRFUiBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBBVFRBQ0ggUEFSVElUSU9OIHRlbXBv cmFsX3BhcnRpdGlvbmVkXzMgRk9SIFZBTFVFUyBJTiAoJ1szLDNdJywgJ1s0LDRdJyk7CisK K0FMVEVSIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkIERFVEFDSCBQQVJUSVRJT04gdGVt cG9yYWxfcGFydGl0aW9uZWRfNTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVk XzUgRFJPUCBDT0xVTU4gaWQsIERST1AgQ09MVU1OIHZhbGlkX2F0OworQUxURVIgVEFCTEUg dGVtcG9yYWxfcGFydGl0aW9uZWRfNSBBREQgQ09MVU1OIHZhbGlkX2F0IGRhdGVyYW5nZSBO T1QgTlVMTCwgQUREIENPTFVNTiBpZCBpbnQ0cmFuZ2UgTk9UIE5VTEw7CitBTFRFUiBUQUJM RSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBBVFRBQ0ggUEFSVElUSU9OIHRlbXBvcmFsX3BhcnRp dGlvbmVkXzUgRk9SIFZBTFVFUyBJTiAoJ1s1LDVdJywgJ1s2LDZdJyk7CisKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkIFZBTFVFUworICAoJ1sxLDFdJywgZGF0ZXJhbmdl KCcyMDAwLTAxLTAxJywgJzIwMTAtMDEtMDEnKSwgJ29uZScpLAorICAoJ1szLDNdJywgZGF0 ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIwMTAtMDEtMDEnKSwgJ3RocmVlJyksCisgICgnWzUs NV0nLCBkYXRlcmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAxMC0wMS0wMScpLCAnZml2ZScpOwor CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkOworCistLSBVcGRhdGUgd2l0 aG91dCBtb3Zpbmcgd2l0aGluIHBhcnRpdGlvbiAxCitVUERBVEUgdGVtcG9yYWxfcGFydGl0 aW9uZWQgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAwMC0wMy0wMScgVE8gJzIw MDAtMDQtMDEnCisgIFNFVCBuYW1lID0gJ29uZV4xJworICBXSEVSRSBpZCA9ICdbMSwxXSc7 CisKKy0tIFVwZGF0ZSB3aXRob3V0IG1vdmluZyB3aXRoaW4gcGFydGl0aW9uIDMKK1VQREFU RSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcy MDAwLTAzLTAxJyBUTyAnMjAwMC0wNC0wMScKKyAgU0VUIG5hbWUgPSAndGhyZWVeMScKKyAg V0hFUkUgaWQgPSAnWzMsM10nOworCistLSBVcGRhdGUgd2l0aG91dCBtb3Zpbmcgd2l0aGlu IHBhcnRpdGlvbiA1CitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWQgRk9SIFBPUlRJT04g T0YgdmFsaWRfYXQgRlJPTSAnMjAwMC0wMy0wMScgVE8gJzIwMDAtMDQtMDEnCisgIFNFVCBu YW1lID0gJ2ZpdmVeMScKKyAgV0hFUkUgaWQgPSAnWzUsNV0nOworCistLSBNb3ZlIGZyb20g cGFydGl0aW9uIDEgdG8gcGFydGl0aW9uIDMKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25l ZCBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDAwLTA2LTAxJyBUTyAnMjAwMC0w Ny0wMScKKyAgU0VUIG5hbWUgPSAnb25lXjInLAorICAgICAgaWQgPSAnWzQsNF0nCisgIFdI RVJFIGlkID0gJ1sxLDFdJzsKKworLS0gTW92ZSBmcm9tIHBhcnRpdGlvbiAzIHRvIHBhcnRp dGlvbiAxCitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWQgRk9SIFBPUlRJT04gT0YgdmFs aWRfYXQgRlJPTSAnMjAwMC0wNi0wMScgVE8gJzIwMDAtMDctMDEnCisgIFNFVCBuYW1lID0g J3RocmVlXjInLAorICAgICAgaWQgPSAnWzIsMl0nCisgIFdIRVJFIGlkID0gJ1szLDNdJzsK KworLS0gTW92ZSBmcm9tIHBhcnRpdGlvbiA1IHRvIHBhcnRpdGlvbiAzCitVUERBVEUgdGVt cG9yYWxfcGFydGl0aW9uZWQgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAwMC0w Ni0wMScgVE8gJzIwMDAtMDctMDEnCisgIFNFVCBuYW1lID0gJ2ZpdmVeMicsCisgICAgICBp ZCA9ICdbMywzXScKKyAgV0hFUkUgaWQgPSAnWzUsNV0nOworCistLSBVcGRhdGUgYWxsIHBh cnRpdGlvbnMgYXQgb25jZSAoZWFjaCB3aXRoIGxlZnRvdmVycykKKworU0VMRUNUICogRlJP TSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CitTRUxFQ1Qg KiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkXzEgT1JERVIgQlkgaWQsIHZhbGlkX2F0Owor U0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF8zIE9SREVSIEJZIGlkLCB2YWxp ZF9hdDsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfNSBPUkRFUiBCWSBp ZCwgdmFsaWRfYXQ7CisKK0RST1AgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWQ7CmRpZmYg LS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9vcHJfc2FuaXR5LnNxbCBiL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL29wcl9zYW5pdHkuc3FsCmluZGV4IDJmZTdiNmRjYzQ5Li4yZGZmZTdj NWI2YSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvb3ByX3Nhbml0eS5zcWwK KysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvb3ByX3Nhbml0eS5zcWwKQEAgLTEyNDEsNiAr MTI0MSw3IEBAIFdIRVJFIGExLmFtb3BmYW1pbHkgPSAwIE9SIGExLmFtb3BsZWZ0dHlwZSA9 IDAgT1IgYTEuYW1vcHJpZ2h0dHlwZSA9IDAKIFNFTEVDVCBhMS5hbW9wZmFtaWx5LCBhMS5h bW9wc3RyYXRlZ3kKIEZST00gcGdfYW1vcCBhcyBhMQogV0hFUkUgTk9UICgoYTEuYW1vcHB1 cnBvc2UgPSAncycgQU5EIGExLmFtb3Bzb3J0ZmFtaWx5ID0gMCkgT1IKKyAgICAgICAgICAg KGExLmFtb3BwdXJwb3NlID0gJ3AnIEFORCBhMS5hbW9wc29ydGZhbWlseSA9IDApIE9SCiAg ICAgICAgICAgIChhMS5hbW9wcHVycG9zZSA9ICdvJyBBTkQgYTEuYW1vcHNvcnRmYW1pbHkg PD4gMCkpOwogCiAtLSBhbW9wbWV0aG9kIG11c3QgbWF0Y2ggb3duaW5nIG9wZmFtaWx5J3Mg b3BmbWV0aG9kCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wcml2aWxlZ2Vz LnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3ByaXZpbGVnZXMuc3FsCmluZGV4IDNmNjhj YWZjZDFlLi5lMTBhZGRlZDlkOSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwv cHJpdmlsZWdlcy5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHJpdmlsZWdlcy5z cWwKQEAgLTcxMyw2ICs3MTMsMjQgQEAgVVBEQVRFIGVycnRzdCBTRVQgYSA9ICdhYWFhJywg YiA9IE5VTEwgV0hFUkUgYSA9ICdhYWEnOwogU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiBy ZWdyZXNzX3ByaXZfdXNlcjE7CiBEUk9QIFRBQkxFIGVycnRzdDsKIAorLS0gdGVzdCBjb2x1 bW4tbGV2ZWwgcHJpdmlsZWdlcyBvbiB0aGUgcmFuZ2UvUEVSSU9EIHVzZWQgaW4gRk9SIFBP UlRJT04gT0YKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wcml2X3VzZXIx OworQ1JFQVRFIFRBQkxFIHQxICgKKyAgYzEgaW50NHJhbmdlLAorICB2YWxpZF9hdCB0c3Jh bmdlLAorCUNPTlNUUkFJTlQgdDFwayBQUklNQVJZIEtFWSAoYzEsIHZhbGlkX2F0IFdJVEhP VVQgT1ZFUkxBUFMpCispOworR1JBTlQgU0VMRUNUIE9OIHQxIFRPIHJlZ3Jlc3NfcHJpdl91 c2VyMjsKK0dSQU5UIFNFTEVDVCBPTiB0MSBUTyByZWdyZXNzX3ByaXZfdXNlcjM7CitHUkFO VCBVUERBVEUgKGMxKSBPTiB0MSBUTyByZWdyZXNzX3ByaXZfdXNlcjI7CitHUkFOVCBVUERB VEUgKGMxLCB2YWxpZF9hdCkgT04gdDEgVE8gcmVncmVzc19wcml2X3VzZXIzOworU0VUIFNF U1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3ByaXZfdXNlcjI7CitVUERBVEUgdDEgRk9S IFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAwMC0wMS0wMScgVE8gJzIwMDEtMDEtMDEn IFNFVCBjMSA9ICdbMiwzKSc7CitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3Nf cHJpdl91c2VyMzsKK1VQREFURSB0MSBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcy MDAwLTAxLTAxJyBUTyAnMjAwMS0wMS0wMScgU0VUIGMxID0gJ1syLDMpJzsKK1NFVCBTRVNT SU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wcml2X3VzZXIxOworRFJPUCBUQUJMRSB0MTsK KwogLS0gdGVzdCBjb2x1bW4tbGV2ZWwgcHJpdmlsZWdlcyB3aGVuIGludm9sdmVkIHdpdGgg REVMRVRFCiBTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcHJpdl91c2VyMTsK IEFMVEVSIFRBQkxFIGF0ZXN0NiBBREQgQ09MVU1OIHRocmVlIGludGVnZXI7CmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC91cGRhdGFibGVfdmlld3Muc3FsIGIvc3JjL3Rl c3QvcmVncmVzcy9zcWwvdXBkYXRhYmxlX3ZpZXdzLnNxbAppbmRleCBlYWVlMGI3ZTFkNy4u ZjgxNDcwMWE0M2EgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3VwZGF0YWJs ZV92aWV3cy5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdXBkYXRhYmxlX3ZpZXdz LnNxbApAQCAtMTU0MSw2ICsxNTQxLDIwIEBAIHNlbGVjdCAqIGZyb20gdXZfaW9jdV90YWI7 CiBkcm9wIHZpZXcgdXZfaW9jdV92aWV3OwogZHJvcCB0YWJsZSB1dl9pb2N1X3RhYjsKIAor LS0gQ2hlY2sgVVBEQVRFIEZPUiBQT1JUSU9OIE9GIHdvcmtzIGNvcnJlY3RseQorY3JlYXRl IHRhYmxlIHV2X2Zwb190YWIgKGlkIGludDRyYW5nZSwgdmFsaWRfYXQgdHNyYW5nZSwgYiBm bG9hdCwKKyAgICBjb25zdHJhaW50IHBrX3V2X2Zwb190YWIgcHJpbWFyeSBrZXkgKGlkLCB2 YWxpZF9hdCB3aXRob3V0IG92ZXJsYXBzKSk7CitpbnNlcnQgaW50byB1dl9mcG9fdGFiIHZh bHVlcyAoJ1sxLDFdJywgJ1syMDIwLTAxLTAxLCAyMDMwLTAxLTAxKScsIDApOworY3JlYXRl IHZpZXcgdXZfZnBvX3ZpZXcgYXMKKyAgICBzZWxlY3QgYiwgYisxIGFzIGMsIHZhbGlkX2F0 LCBpZCwgJzIuMCc6OnRleHQgYXMgdHdvIGZyb20gdXZfZnBvX3RhYjsKKworaW5zZXJ0IGlu dG8gdXZfZnBvX3ZpZXcgKGlkLCB2YWxpZF9hdCwgYikgdmFsdWVzICgnWzEsMV0nLCAnWzIw MTAtMDEtMDEsIDIwMjAtMDEtMDEpJywgMSk7CitzZWxlY3QgKiBmcm9tIHV2X2Zwb192aWV3 OwordXBkYXRlIHV2X2Zwb192aWV3IGZvciBwb3J0aW9uIG9mIHZhbGlkX2F0IGZyb20gJzIw MTUtMDEtMDEnIHRvICcyMDIwLTAxLTAxJyBzZXQgYiA9IDIgd2hlcmUgaWQgPSAnWzEsMV0n Oworc2VsZWN0ICogZnJvbSB1dl9mcG9fdmlldzsKK2RlbGV0ZSBmcm9tIHV2X2Zwb192aWV3 IGZvciBwb3J0aW9uIG9mIHZhbGlkX2F0IGZyb20gJzIwMTctMDEtMDEnIHRvICcyMDIyLTAx LTAxJyB3aGVyZSBpZCA9ICdbMSwxXSc7CitzZWxlY3QgKiBmcm9tIHV2X2Zwb192aWV3Owor CiAtLSBUZXN0IHdob2xlLXJvdyByZWZlcmVuY2VzIHRvIHRoZSB2aWV3CiBjcmVhdGUgdGFi bGUgdXZfaW9jdV90YWIgKGEgaW50IHVuaXF1ZSwgYiB0ZXh0KTsKIGNyZWF0ZSB2aWV3IHV2 X2lvY3VfdmlldyBhcwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvd2l0aG91 dF9vdmVybGFwcy5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC93aXRob3V0X292ZXJsYXBz LnNxbAppbmRleCA1NDBmYzc0ZWNjZC4uYzExMWY2YTZiY2EgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL3dpdGhvdXRfb3ZlcmxhcHMuc3FsCisrKyBiL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL3dpdGhvdXRfb3ZlcmxhcHMuc3FsCkBAIC0yNTUsNiArMjU1LDIwIEBAIElO U0VSVCBJTlRPIHRlbXBvcmFsMyAoaWQsIHZhbGlkX2F0LCBpZDIsIG5hbWUpCiAgICgnWzEs MV0nLCBkYXRlcmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAxMC0wMS0wMScpLCAnWzcsN10nLCAn Zm9vJyksCiAgICgnWzIsMl0nLCBkYXRlcmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAxMC0wMS0w MScpLCAnWzksOV0nLCAnYmFyJykKIDsKK1VQREFURSB0ZW1wb3JhbDMgRk9SIFBPUlRJT04g T0YgdmFsaWRfYXQgRlJPTSAnMjAwMC0wNS0wMScgVE8gJzIwMDAtMDctMDEnCisgIFNFVCBu YW1lID0gbmFtZSB8fCAnMSc7CitVUERBVEUgdGVtcG9yYWwzIEZPUiBQT1JUSU9OIE9GIHZh bGlkX2F0IEZST00gJzIwMDAtMDQtMDEnIFRPICcyMDAwLTA2LTAxJworICBTRVQgbmFtZSA9 IG5hbWUgfHwgJzInCisgIFdIRVJFIGlkID0gJ1syLDJdJzsKK1NFTEVDVCAqIEZST00gdGVt cG9yYWwzIE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKKy0tIGNvbmZsaWN0aW5nIGlkIG9ubHk6 CitJTlNFUlQgSU5UTyB0ZW1wb3JhbDMgKGlkLCB2YWxpZF9hdCwgaWQyLCBuYW1lKQorICBW QUxVRVMKKyAgKCdbMSwxXScsIGRhdGVyYW5nZSgnMjAwNS0wMS0wMScsICcyMDA2LTAxLTAx JyksICdbOCw4XScsICdmb28zJyk7CistLSBjb25mbGljdGluZyBpZDIgb25seToKK0lOU0VS VCBJTlRPIHRlbXBvcmFsMyAoaWQsIHZhbGlkX2F0LCBpZDIsIG5hbWUpCisgIFZBTFVFUwor ICAoJ1szLDNdJywgZGF0ZXJhbmdlKCcyMDA1LTAxLTAxJywgJzIwMTAtMDEtMDEnKSwgJ1s5 LDldJywgJ2JhcjMnKTsKIERST1AgVEFCTEUgdGVtcG9yYWwzOwogCiAtLQpAQCAtMjkzLDYg KzMwNywyMiBAQCBJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBWQUxVRVMKIFNF TEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWQgT1JERVIgQlkgaWQsIHZhbGlkX2F0 OwogU0VMRUNUICogRlJPTSB0cDEgT1JERVIgQlkgaWQsIHZhbGlkX2F0OwogU0VMRUNUICog RlJPTSB0cDIgT1JERVIgQlkgaWQsIHZhbGlkX2F0OworVVBEQVRFICB0ZW1wb3JhbF9wYXJ0 aXRpb25lZAorICBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDAwLTAxLTE1JyBU TyAnMjAwMC0wMi0xNScKKyAgU0VUIG5hbWUgPSAnb25lMicKKyAgV0hFUkUgaWQgPSAnWzEs MV0nOworVVBEQVRFICB0ZW1wb3JhbF9wYXJ0aXRpb25lZAorICBGT1IgUE9SVElPTiBPRiB2 YWxpZF9hdCBGUk9NICcyMDAwLTAyLTIwJyBUTyAnMjAwMC0wMi0yNScKKyAgU0VUIGlkID0g J1s0LDRdJworICBXSEVSRSBuYW1lID0gJ29uZSc7CitVUERBVEUgIHRlbXBvcmFsX3BhcnRp dGlvbmVkCisgIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMDItMDEtMDEnIFRP ICcyMDAzLTAxLTAxJworICBTRVQgaWQgPSAnWzIsMl0nCisgIFdIRVJFIG5hbWUgPSAndGhy ZWUnOworREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWQKKyAgRk9SIFBPUlRJT04g T0YgdmFsaWRfYXQgRlJPTSAnMjAwMC0wMS0xNScgVE8gJzIwMDAtMDItMTUnCisgIFdIRVJF IGlkID0gJ1szLDNdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWQgT1JE RVIgQlkgaWQsIHZhbGlkX2F0OwogRFJPUCBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZDsK IAogLS0gdGVtcG9yYWwgVU5JUVVFOgpAQCAtMzExLDYgKzM0MSwyMiBAQCBJTlNFUlQgSU5U TyB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBWQUxVRVMKIFNFTEVDVCAqIEZST00gdGVtcG9yYWxf cGFydGl0aW9uZWQgT1JERVIgQlkgaWQsIHZhbGlkX2F0OwogU0VMRUNUICogRlJPTSB0cDEg T1JERVIgQlkgaWQsIHZhbGlkX2F0OwogU0VMRUNUICogRlJPTSB0cDIgT1JERVIgQlkgaWQs IHZhbGlkX2F0OworVVBEQVRFICB0ZW1wb3JhbF9wYXJ0aXRpb25lZAorICBGT1IgUE9SVElP TiBPRiB2YWxpZF9hdCBGUk9NICcyMDAwLTAxLTE1JyBUTyAnMjAwMC0wMi0xNScKKyAgU0VU IG5hbWUgPSAnb25lMicKKyAgV0hFUkUgaWQgPSAnWzEsMV0nOworVVBEQVRFICB0ZW1wb3Jh bF9wYXJ0aXRpb25lZAorICBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDAwLTAy LTIwJyBUTyAnMjAwMC0wMi0yNScKKyAgU0VUIGlkID0gJ1s0LDRdJworICBXSEVSRSBuYW1l ID0gJ29uZSc7CitVUERBVEUgIHRlbXBvcmFsX3BhcnRpdGlvbmVkCisgIEZPUiBQT1JUSU9O IE9GIHZhbGlkX2F0IEZST00gJzIwMDItMDEtMDEnIFRPICcyMDAzLTAxLTAxJworICBTRVQg aWQgPSAnWzIsMl0nCisgIFdIRVJFIG5hbWUgPSAndGhyZWUnOworREVMRVRFIEZST00gdGVt cG9yYWxfcGFydGl0aW9uZWQKKyAgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAw MC0wMS0xNScgVE8gJzIwMDAtMDItMTUnCisgIFdIRVJFIGlkID0gJ1szLDNdJzsKK1NFTEVD VCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWQgT1JERVIgQlkgaWQsIHZhbGlkX2F0Owog RFJPUCBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZDsKIAogLS0KQEAgLTYwOCwxMyArNjU0 LDIzIEBAIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4 LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKIC0tIGNoYW5naW5nIHRoZSBzY2FsYXIgcGFydCBm YWlsczoKIFVQREFURSB0ZW1wb3JhbF9ybmcgU0VUIGlkID0gJ1s3LDddJwogV0hFUkUgaWQg PSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0w Mi0wMScpOworLS0gY2hhbmdpbmcgYW4gdW5yZWZlcmVuY2VkIHBhcnQgaXMgb2theToKK1VQ REFURSB0ZW1wb3JhbF9ybmcKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgt MDEtMDInIFRPICcyMDE4LTAxLTAzJworU0VUIGlkID0gJ1s3LDddJworV0hFUkUgaWQgPSAn WzUsNV0nOworLS0gY2hhbmdpbmcganVzdCBhIHBhcnQgZmFpbHM6CitVUERBVEUgdGVtcG9y YWxfcm5nCitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTAxLTA1JyBUTyAn MjAxOC0wMS0xMCcKK1NFVCBpZCA9ICdbNyw3XScKK1dIRVJFIGlkID0gJ1s1LDVdJzsKIC0t IHRoZW4gZGVsZXRlIHRoZSBvYmplY3RpbmcgRksgcmVjb3JkIGFuZCB0aGUgc2FtZSBQSyB1 cGRhdGUgc3VjY2VlZHM6CiBERUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJF IGlkID0gJ1szLDNdJzsKIFVQREFURSB0ZW1wb3JhbF9ybmcgU0VUIHZhbGlkX2F0ID0gdHNy YW5nZSgnMjAxNi0wMS0wMScsICcyMDE2LTAyLTAxJykKIFdIRVJFIGlkID0gJ1s1LDVdJyBB TkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKIC0t IGNsZWFuIHVwOgogREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBwYXJl bnRfaWQgPSAnWzUsNV0nOwotREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0g J1s1LDVdJzsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCBJTiAoJ1s1LDVd JywgJ1s3LDddJyk7CiAKIC0tCiAtLSB0ZXN0IEZLIHBhcmVudCB1cGRhdGVzIFJFU1RSSUNU CkBAIC02NDQsMTMgKzcwMCwyMyBAQCBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0 ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CiAtLSBjaGFuZ2luZyB0 aGUgc2NhbGFyIHBhcnQgZmFpbHM6CiBVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCBpZCA9ICdb Nyw3XScKIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4 LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKKy0tIGNoYW5naW5nIGFuIHVucmVmZXJlbmNlZCBw YXJ0IGlzIG9rYXk6CitVUERBVEUgdGVtcG9yYWxfcm5nCitGT1IgUE9SVElPTiBPRiB2YWxp ZF9hdCBGUk9NICcyMDE4LTAxLTAyJyBUTyAnMjAxOC0wMS0wMycKK1NFVCBpZCA9ICdbNyw3 XScKK1dIRVJFIGlkID0gJ1s1LDVdJzsKKy0tIGNoYW5naW5nIGp1c3QgYSBwYXJ0IGZhaWxz OgorVVBEQVRFIHRlbXBvcmFsX3JuZworRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAn MjAxOC0wMS0wNScgVE8gJzIwMTgtMDEtMTAnCitTRVQgaWQgPSAnWzcsN10nCitXSEVSRSBp ZCA9ICdbNSw1XSc7CiAtLSB0aGVuIGRlbGV0ZSB0aGUgb2JqZWN0aW5nIEZLIHJlY29yZCBh bmQgdGhlIHNhbWUgUEsgdXBkYXRlIHN1Y2NlZWRzOgogREVMRVRFIEZST00gdGVtcG9yYWxf Zmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMywzXSc7CiBVUERBVEUgdGVtcG9yYWxfcm5nIFNF VCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTYtMDEtMDEnLCAnMjAxNi0wMi0wMScpCiBXSEVS RSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcy MDE4LTAyLTAxJyk7CiAtLSBjbGVhbiB1cDoKIERFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3Ju ZzJybmcgV0hFUkUgcGFyZW50X2lkID0gJ1s1LDVdJzsKLURFTEVURSBGUk9NIHRlbXBvcmFs X3JuZyBXSEVSRSBpZCA9ICdbNSw1XSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hF UkUgaWQgSU4gKCdbNSw1XScsICdbNyw3XScpOwogLS0KIC0tIHRlc3QgRksgcGFyZW50IGRl bGV0ZXMgTk8gQUNUSU9OCiAtLQpAQCAtNjcxLDE0ICs3MzcsMjQgQEAgSU5TRVJUIElOVE8g dGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMywzXScsIHRzcmFuZ2UoJzIwMTgtMDEt MDUnLCAnMjAxOC0wMS0KIERFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdb NSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAx Jyk7CiAtLSBhIFBLIGRlbGV0ZSB0aGF0IGZhaWxzIGJlY2F1c2UgYm90aCBhcmUgcmVmZXJl bmNlZDoKIERFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XScgQU5E IHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CistLSBk ZWxldGluZyBhbiB1bnJlZmVyZW5jZWQgcGFydCBpcyBva2F5OgorREVMRVRFIEZST00gdGVt cG9yYWxfcm5nCitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTAxLTAyJyBU TyAnMjAxOC0wMS0wMycKK1dIRVJFIGlkID0gJ1s1LDVdJzsKKy0tIGRlbGV0aW5nIGp1c3Qg YSBwYXJ0IGZhaWxzOgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nCitGT1IgUE9SVElPTiBP RiB2YWxpZF9hdCBGUk9NICcyMDE4LTAxLTA1JyBUTyAnMjAxOC0wMS0xMCcKK1dIRVJFIGlk ID0gJ1s1LDVdJzsKIC0tIHRoZW4gZGVsZXRlIHRoZSBvYmplY3RpbmcgRksgcmVjb3JkIGFu ZCB0aGUgc2FtZSBQSyBkZWxldGUgc3VjY2VlZHM6CiBERUxFVEUgRlJPTSB0ZW1wb3JhbF9m a19ybmcycm5nIFdIRVJFIGlkID0gJ1szLDNdJzsKIERFTEVURSBGUk9NIHRlbXBvcmFsX3Ju ZyBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0w MScsICcyMDE4LTAyLTAxJyk7CistLSBjbGVhbiB1cDoKK0RFTEVURSBGUk9NIHRlbXBvcmFs X2ZrX3JuZzJybmcgV0hFUkUgcGFyZW50X2lkID0gJ1s1LDVdJzsKK0RFTEVURSBGUk9NIHRl bXBvcmFsX3JuZyBXSEVSRSBpZCBJTiAoJ1s1LDVdJyk7CiAKIC0tCiAtLSB0ZXN0IEZLIHBh cmVudCBkZWxldGVzIFJFU1RSSUNUCiAtLQotCiBBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19y bmcycm5nCiAJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZms7CiBBTFRF UiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCkBAIC02OTYsOSArNzcyLDIwIEBAIElOU0VS VCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzMsM10nLCB0c3JhbmdlKCcy MDE4LTAxLTA1JywgJzIwMTgtMDEtCiBERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUg aWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAx OC0wMy0wMScpOwogLS0gYSBQSyBkZWxldGUgdGhhdCBmYWlscyBiZWNhdXNlIGJvdGggYXJl IHJlZmVyZW5jZWQ6CiBERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUs NV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScp OworLS0gZGVsZXRpbmcgYW4gdW5yZWZlcmVuY2VkIHBhcnQgaXMgb2theToKK0RFTEVURSBG Uk9NIHRlbXBvcmFsX3JuZworRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0w MS0wMicgVE8gJzIwMTgtMDEtMDMnCitXSEVSRSBpZCA9ICdbNSw1XSc7CistLSBkZWxldGlu ZyBqdXN0IGEgcGFydCBmYWlsczoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZworRk9SIFBP UlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wMS0wNScgVE8gJzIwMTgtMDEtMTAnCitX SEVSRSBpZCA9ICdbNSw1XSc7CiAtLSB0aGVuIGRlbGV0ZSB0aGUgb2JqZWN0aW5nIEZLIHJl Y29yZCBhbmQgdGhlIHNhbWUgUEsgZGVsZXRlIHN1Y2NlZWRzOgogREVMRVRFIEZST00gdGVt cG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMywzXSc7CiBERUxFVEUgRlJPTSB0ZW1w b3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIw MTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworLS0gY2xlYW4gdXA6CitERUxFVEUgRlJPTSB0 ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIHBhcmVudF9pZCA9ICdbNSw1XSc7CitERUxFVEUg RlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgSU4gKCdbNSw1XScpOwogCiAtLQogLS0gdGVz dCBPTiBVUERBVEUvREVMRVRFIG9wdGlvbnMKLS0gCjIuNDIuMAoK --------------XirkSnpA0J2rgDaW8dSEFd2s Content-Type: text/x-patch; charset=UTF-8; name="v25-0007-Add-CASCADE-SET-NULL-SET-DEFAULT-for-temporal-fo.patch" Content-Disposition: attachment; filename*0="v25-0007-Add-CASCADE-SET-NULL-SET-DEFAULT-for-temporal-fo.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAwNGU1Y2MzMTczNjQ0OGU3YjdhNGM3OTc3YzMwZjRiYmNiMDViYzc1IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IFNhdCwgMyBKdW4gMjAyMyAyMTo0MToxMSAtMDQw MApTdWJqZWN0OiBbUEFUQ0ggdjI1IDcvOF0gQWRkIENBU0NBREUvU0VUIE5VTEwvU0VUIERF RkFVTFQgZm9yIHRlbXBvcmFsIGZvcmVpZ24KIGtleXMKCi0tLQogZG9jL3NyYy9zZ21sL3Jl Zi9jcmVhdGVfdGFibGUuc2dtbCAgICAgICAgICAgIHwgIDE0ICstCiBzcmMvYmFja2VuZC9j YXRhbG9nL3BnX2NvbnN0cmFpbnQuYyAgICAgICAgICAgfCAgMjQgKy0KIHNyYy9iYWNrZW5k L2NvbW1hbmRzL3RhYmxlY21kcy5jICAgICAgICAgICAgICB8ICA1MyArLQogc3JjL2JhY2tl bmQvdXRpbHMvYWR0L3JpX3RyaWdnZXJzLmMgICAgICAgICAgIHwgNTc1ICsrKysrKysrKyst CiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2NvbnN0cmFpbnQuaCAgICAgICAgICAgfCAgIDcg Ky0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgICAgICAgICAgICAgICB8ICAy MCArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2J0cmVlX2luZGV4Lm91dCAgICAgfCAg MTggKy0KIC4uLi9yZWdyZXNzL2V4cGVjdGVkL3dpdGhvdXRfb3ZlcmxhcHMub3V0ICAgICB8 IDk0MSArKysrKysrKysrKysrKysrKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3dpdGhvdXRf b3ZlcmxhcHMuc3FsICAgICB8IDQ5NiArKysrKysrKy0KIDkgZmlsZXMgY2hhbmdlZCwgMjA3 MyBpbnNlcnRpb25zKCspLCA3NSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3Jj L3NnbWwvcmVmL2NyZWF0ZV90YWJsZS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVf dGFibGUuc2dtbAppbmRleCAwYzM5YmFkNmM3Ni4uM2E3OTFjODljMzMgMTAwNjQ0Ci0tLSBh L2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3RhYmxlLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21s L3JlZi9jcmVhdGVfdGFibGUuc2dtbApAQCAtMTI2OSw3ICsxMjY5LDkgQEAgV0lUSCAoIE1P RFVMVVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bWVyaWNfbGl0ZXJhbDwv cmVwbGFjZWFibGU+LCBSRU0KICAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICAgPHBhcmE+ Ci0gICAgICAgICAgSW4gYSB0ZW1wb3JhbCBmb3JlaWduIGtleSwgdGhpcyBvcHRpb24gaXMg bm90IHN1cHBvcnRlZC4KKyAgICAgICAgICBJbiBhIHRlbXBvcmFsIGZvcmVpZ24ga2V5LCB0 aGUgZGVsZXRlL3VwZGF0ZSB3aWxsIHVzZQorICAgICAgICAgIDxsaXRlcmFsPkZPUiBQT1JU SU9OIE9GPC9saXRlcmFsPiBzZW1hbnRpY3MgdG8gY29uc3RyYWluIHRoZQorICAgICAgICAg IGVmZmVjdCB0byB0aGUgYm91bmRzIGJlaW5nIGRlbGV0ZWQvdXBkYXRlZCBpbiB0aGUgcmVm ZXJlbmNlZCByb3cuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvbGlzdGl0ZW0+CiAg ICAgICAgPC92YXJsaXN0ZW50cnk+CkBAIC0xMjg0LDcgKzEyODYsMTAgQEAgV0lUSCAoIE1P RFVMVVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bWVyaWNfbGl0ZXJhbDwv cmVwbGFjZWFibGU+LCBSRU0KICAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICAgPHBhcmE+ Ci0gICAgICAgICAgSW4gYSB0ZW1wb3JhbCBmb3JlaWduIGtleSwgdGhpcyBvcHRpb24gaXMg bm90IHN1cHBvcnRlZC4KKyAgICAgICAgICBJbiBhIHRlbXBvcmFsIGZvcmVpZ24ga2V5LCB0 aGUgY2hhbmdlIHdpbGwgdXNlIDxsaXRlcmFsPkZPUiBQT1JUSU9OCisgICAgICAgICAgT0Y8 L2xpdGVyYWw+IHNlbWFudGljcyB0byBjb25zdHJhaW4gdGhlIGVmZmVjdCB0byB0aGUgYm91 bmRzIGJlaW5nCisgICAgICAgICAgZGVsZXRlZC91cGRhdGVkIGluIHRoZSByZWZlcmVuY2Vk IHJvdy4gVGhlIGNvbHVtbiBtYWtlZCB3aXRoCisgICAgICAgICAgPGxpdGVyYWw+UEVSSU9E PC9saXRlcmFsPiB3aWxsIG5vdCBiZSBzZXQgdG8gbnVsbC4KICAgICAgICAgIDwvcGFyYT4K ICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KQEAgLTEzMDEs NyArMTMwNiwxMCBAQCBXSVRIICggTU9EVUxVUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+bnVtZXJpY19saXRlcmFsPC9yZXBsYWNlYWJsZT4sIFJFTQogICAgICAgICAgPC9w YXJhPgogCiAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICBJbiBhIHRlbXBvcmFsIGZvcmVp Z24ga2V5LCB0aGlzIG9wdGlvbiBpcyBub3Qgc3VwcG9ydGVkLgorICAgICAgICAgIEluIGEg dGVtcG9yYWwgZm9yZWlnbiBrZXksIHRoZSBjaGFuZ2Ugd2lsbCB1c2UgPGxpdGVyYWw+Rk9S IFBPUlRJT04KKyAgICAgICAgICBPRjwvbGl0ZXJhbD4gc2VtYW50aWNzIHRvIGNvbnN0cmFp biB0aGUgZWZmZWN0IHRvIHRoZSBib3VuZHMgYmVpbmcKKyAgICAgICAgICBkZWxldGVkL3Vw ZGF0ZWQgaW4gdGhlIHJlZmVyZW5jZWQgcm93LiBUaGUgY29sdW1uIG1hcmtlZCB3aXRoCisg ICAgICAgICAgPGxpdGVyYWw+UEVSSU9EPC9saXRlcmFsPiB3aXRoIG5vdCBiZSBzZXQgdG8g YSBkZWZhdWx0IHZhbHVlLgogICAgICAgICAgPC9wYXJhPgogICAgICAgICA8L2xpc3RpdGVt PgogICAgICAgIDwvdmFybGlzdGVudHJ5PgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0 YWxvZy9wZ19jb25zdHJhaW50LmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX2NvbnN0cmFp bnQuYwppbmRleCBiYWMxZjhmYzkxNi4uZWZiYTA1OTIwYjYgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2NhdGFsb2cvcGdfY29uc3RyYWludC5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFs b2cvcGdfY29uc3RyYWludC5jCkBAIC0xNjE1LDE1ICsxNjE1LDE2IEBAIERlY29uc3RydWN0 RmtDb25zdHJhaW50Um93KEhlYXBUdXBsZSB0dXBsZSwgaW50ICpudW1ma3MsCiAgKi8KIHZv aWQKIEZpbmRGS1BlcmlvZE9wZXJzQW5kUHJvY3MoT2lkIG9wY2xhc3MsCi0JCQkJCQkgIE9p ZCAqcGVyaW9kb3Blcm9pZCwKLQkJCQkJCSAgT2lkICphZ2dlZHBlcmlvZG9wZXJvaWQsCi0J CQkJCQkgIE9pZCAqcGVyaW9kcHJvY29pZCkKKwkJCQkJCSAgT2lkICpjb250YWluZWRieW9w ZXJvaWQsCisJCQkJCQkgIE9pZCAqYWdnZWRjb250YWluZWRieW9wZXJvaWQsCisJCQkJCQkg IE9pZCAqYWdncHJvY29pZCwKKwkJCQkJCSAgT2lkICppbnRlcnNlY3Rwcm9jb2lkKQogewog CU9pZAlvcGZhbWlseTsKIAlPaWQJb3BjaW50eXBlOwogCU9pZAlhZ2dyZXR0eXBlOwogCU9p ZAlmdW5jaWQgPSBJbnZhbGlkT2lkOwotCVN0cmF0ZWd5TnVtYmVyIHN0cmF0ID0gUlRDb250 YWluZWRCeVN0cmF0ZWd5TnVtYmVyOworCVN0cmF0ZWd5TnVtYmVyIHN0cmF0OwogCiAJLyoK IAkgKiBMb29rIHVwIHRoZSBDb250YWluZWRCeSBvcGVyYXRvciB3aXRoIHN5bW1ldHJpYyB0 eXBlcy4KQEAgLTE2MzEsOSArMTYzMiwxMCBAQCBGaW5kRktQZXJpb2RPcGVyc0FuZFByb2Nz KE9pZCBvcGNsYXNzLAogCSAqIG9mIHRoZSBvbGQgdmFsdWUsIHRoZW4gd2UgY2FuIHRyZWF0 IHRoZSBhdHRyaWJ1dGUgYXMgaWYgaXQgZGlkbid0IGNoYW5nZSwKIAkgKiBhbmQgc2tpcCB0 aGUgUkkgY2hlY2suCiAJICovCisJc3RyYXQgPSBSVENvbnRhaW5lZEJ5U3RyYXRlZ3lOdW1i ZXI7CiAJR2V0T3BlcmF0b3JGcm9tV2VsbEtub3duU3RyYXRlZ3kob3BjbGFzcywKIAkJCQkJ CQkJCSBJbnZhbGlkT2lkLAotCQkJCQkJCQkJIHBlcmlvZG9wZXJvaWQsCisJCQkJCQkJCQkg Y29udGFpbmVkYnlvcGVyb2lkLAogCQkJCQkJCQkJICZzdHJhdCk7CiAKIAkvKiBOb3cgbG9v ayB1cCB0aGUgc3VwcG9ydCBwcm9jIGZvciBhZ2dyZWdhdGlvbi4gKi8KQEAgLTE2NDYsNyAr MTY0OCw3IEBAIEZpbmRGS1BlcmlvZE9wZXJzQW5kUHJvY3MoT2lkIG9wY2xhc3MsCiAJCQkJ IGVycm1zZygibm8gc3VwcG9ydCBmdW5jICV1IGZvdW5kIGZvciBGT1JFSUdOIEtFWSBjb25z dHJhaW50IiwgR0lTVF9SRUZFUkVOQ0VEX0FHR19QUk9DKSwKIAkJCQkgZXJyaGludCgiRGVm aW5lIGEgcmVmZXJlbmNlZGFnZyBzdXBwb3J0IGZ1bmN0aW9uIGZvciB5b3VyIEdpU1Qgb3Bj bGFzcy4iKSkpOwogCi0JKnBlcmlvZHByb2NvaWQgPSBmdW5jaWQ7CisJKmFnZ3Byb2NvaWQg PSBmdW5jaWQ7CiAKIAkvKiBMb29rIHVwIHRoZSBmdW5jdGlvbidzIHJldHR5cGUuICovCiAJ YWdncmV0dHlwZSA9IGdldF9mdW5jX3JldHR5cGUoZnVuY2lkKTsKQEAgLTE2NTksOCArMTY2 MSwxNiBAQCBGaW5kRktQZXJpb2RPcGVyc0FuZFByb2NzKE9pZCBvcGNsYXNzLAogCXN0cmF0 ID0gUlRDb250YWluZWRCeVN0cmF0ZWd5TnVtYmVyOwogCUdldE9wZXJhdG9yRnJvbVdlbGxL bm93blN0cmF0ZWd5KG9wY2xhc3MsCiAJCQkJCQkJCQkgYWdncmV0dHlwZSwKLQkJCQkJCQkJ CSBhZ2dlZHBlcmlvZG9wZXJvaWQsCisJCQkJCQkJCQkgYWdnZWRjb250YWluZWRieW9wZXJv aWQsCiAJCQkJCQkJCQkgJnN0cmF0KTsKKworCS8qCisJICogSWYgdGhlIGNvbW1hbmQgdXNl cyBGT1IgUE9SVElPTiBPRiwKKwkgKiB3ZSB3aWxsIGFsc28gbmVlZCBhbiBpbnRlcnNlY3Qg c3VwcG9ydCBwcm9jLgorCSAqIElmIHRoaXMgaXMgbWlzc2luZyB3ZSBkb24ndCBuZWVkIHRv IGNvbXBsYWluIGhlcmUsCisJICogYmVjYXVzZSBGT1IgUE9SVElPTiBPRiB3aWxsIG5vdCBi ZSBhbGxvd2VkLgorCSAqLworCSppbnRlcnNlY3Rwcm9jb2lkID0gZ2V0X29wZmFtaWx5X3By b2Mob3BmYW1pbHksIG9wY2ludHlwZSwgb3BjaW50eXBlLCBHSVNUX0lOVEVSU0VDVF9QUk9D KTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21k cy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKaW5kZXggMDRiZDMyNWU3 YWMuLmU0YmYwMmI1MTYzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJs ZWNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwpAQCAtNTEz LDcgKzUxMyw3IEBAIHN0YXRpYyBPYmplY3RBZGRyZXNzIGFkZEZrUmVjdXJzZVJlZmVyZW5j ZWQoTGlzdCAqKndxdWV1ZSwgQ29uc3RyYWludCAqZmtjb25zdHJhCiAJCQkJCQkJCQkJCWJv b2wgb2xkX2NoZWNrX29rLAogCQkJCQkJCQkJCQlPaWQgcGFyZW50RGVsVHJpZ2dlciwgT2lk IHBhcmVudFVwZFRyaWdnZXIsCiAJCQkJCQkJCQkJCWJvb2wgaXNfdGVtcG9yYWwpOwotc3Rh dGljIHZvaWQgdmFsaWRhdGVGa09uRGVsZXRlU2V0Q29sdW1ucyhpbnQgbnVtZmtzLCBjb25z dCBpbnQxNiAqZmthdHRudW1zLAorc3RhdGljIHZvaWQgdmFsaWRhdGVGa09uRGVsZXRlU2V0 Q29sdW1ucyhpbnQgbnVtZmtzLCBjb25zdCBpbnQxNiAqZmthdHRudW1zLCBjb25zdCBpbnQx NiBma3BlcmlvZGF0dG51bSwKIAkJCQkJCQkJCQkgaW50IG51bWZrc2V0Y29scywgY29uc3Qg aW50MTYgKmZrc2V0Y29sc2F0dG51bXMsCiAJCQkJCQkJCQkJIExpc3QgKmZrc2V0Y29scyk7 CiBzdGF0aWMgdm9pZCBhZGRGa1JlY3Vyc2VSZWZlcmVuY2luZyhMaXN0ICoqd3F1ZXVlLCBD b25zdHJhaW50ICpma2NvbnN0cmFpbnQsCkBAIC05ODMyLDYgKzk4MzIsNyBAQCBBVEFkZEZv cmVpZ25LZXlDb25zdHJhaW50KExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRh YiwgUmVsYXRpb24gcmVsLAogCWludDE2CQlma2RlbHNldGNvbHNbSU5ERVhfTUFYX0tFWVNd ID0gezB9OwogCWJvb2wJCWlzX3RlbXBvcmFsOwogCWJvb2wJCXBrX3dpdGhfcGVyaW9kOwor CWludDE2CQlma3BlcmlvZGF0dG51bSA9IEludmFsaWRPaWQ7CiAJaW50CQkJaTsKIAlpbnQJ CQludW1ma3MsCiAJCQkJbnVtcGtzLApAQCAtOTkzMywxMiArOTkzNCwxMyBAQCBBVEFkZEZv cmVpZ25LZXlDb25zdHJhaW50KExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRh YiwgUmVsYXRpb24gcmVsLAogCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJKGVycmNvZGUoRVJS Q09ERV9JTlZBTElEX0ZPUkVJR05fS0VZKSwKIAkJCQkJZXJybXNnKCJmb3JlaWduIGtleSB1 c2VzIFBFUklPRCBvbiB0aGUgcmVmZXJlbmNlZCB0YWJsZSBidXQgbm90IHRoZSByZWZlcmVu Y2luZyB0YWJsZSIpKSk7CisJCWZrcGVyaW9kYXR0bnVtID0gZmthdHRudW1bbnVtZmtzIC0g MV07CiAJfQogCiAJbnVtZmtkZWxzZXRjb2xzID0gdHJhbnNmb3JtQ29sdW1uTmFtZUxpc3Qo UmVsYXRpb25HZXRSZWxpZChyZWwpLAogCQkJCQkJCQkJCQkgIGZrY29uc3RyYWludC0+Zmtf ZGVsX3NldF9jb2xzLAogCQkJCQkJCQkJCQkgIGZrZGVsc2V0Y29scywgTlVMTCk7Ci0JdmFs aWRhdGVGa09uRGVsZXRlU2V0Q29sdW1ucyhudW1ma3MsIGZrYXR0bnVtLAorCXZhbGlkYXRl RmtPbkRlbGV0ZVNldENvbHVtbnMobnVtZmtzLCBma2F0dG51bSwgZmtwZXJpb2RhdHRudW0s CiAJCQkJCQkJCSBudW1ma2RlbHNldGNvbHMsIGZrZGVsc2V0Y29scywKIAkJCQkJCQkJIGZr Y29uc3RyYWludC0+ZmtfZGVsX3NldF9jb2xzKTsKIApAQCAtMTAwNTYsOSArMTAwNTgsMTQg QEAgQVRBZGRGb3JlaWduS2V5Q29uc3RyYWludChMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFi bGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKIAl7CiAJCU9pZAkJCXBlcmlvZG9wZXJvaWQ7 CiAJCU9pZAkJCWFnZ2VkcGVyaW9kb3Blcm9pZDsKLQkJT2lkCQkJcGVyaW9kcHJvY29pZDsK KwkJT2lkCQkJYWdncHJvY29pZDsKKwkJT2lkCQkJaW50ZXJzZWN0cHJvY29pZDsKIAotCQlG aW5kRktQZXJpb2RPcGVyc0FuZFByb2NzKG9wY2xhc3Nlc1tudW1wa3MgLSAxXSwgJnBlcmlv ZG9wZXJvaWQsICZhZ2dlZHBlcmlvZG9wZXJvaWQsICZwZXJpb2Rwcm9jb2lkKTsKKwkJRmlu ZEZLUGVyaW9kT3BlcnNBbmRQcm9jcyhvcGNsYXNzZXNbbnVtcGtzIC0gMV0sCisJCQkJCQkJ CSAgJnBlcmlvZG9wZXJvaWQsCisJCQkJCQkJCSAgJmFnZ2VkcGVyaW9kb3Blcm9pZCwKKwkJ CQkJCQkJICAmYWdncHJvY29pZCwKKwkJCQkJCQkJICAmaW50ZXJzZWN0cHJvY29pZCk7CiAJ fQogCiAJLyoKQEAgLTEwMTEyLDYgKzEwMTE5LDcgQEAgQVRBZGRGb3JlaWduS2V5Q29uc3Ry YWludChMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJl bCwKICAqLwogdm9pZAogdmFsaWRhdGVGa09uRGVsZXRlU2V0Q29sdW1ucyhpbnQgbnVtZmtz LCBjb25zdCBpbnQxNiAqZmthdHRudW1zLAorCQkJCQkJCSBjb25zdCBpbnQxNiBma3Blcmlv ZGF0dG51bSwKIAkJCQkJCQkgaW50IG51bWZrc2V0Y29scywgY29uc3QgaW50MTYgKmZrc2V0 Y29sc2F0dG51bXMsCiAJCQkJCQkJIExpc3QgKmZrc2V0Y29scykKIHsKQEAgLTEwMTIyLDYg KzEwMTMwLDEzIEBAIHZhbGlkYXRlRmtPbkRlbGV0ZVNldENvbHVtbnMoaW50IG51bWZrcywg Y29uc3QgaW50MTYgKmZrYXR0bnVtcywKIAogCQlmb3IgKGludCBqID0gMDsgaiA8IG51bWZr czsgaisrKQogCQl7CisJCQlpZiAoZmtwZXJpb2RhdHRudW0gPT0gc2V0Y29sX2F0dG51bSkK KwkJCXsKKwkJCQljaGFyCSAgICpjb2wgPSBzdHJWYWwobGlzdF9udGgoZmtzZXRjb2xzLCBp KSk7CisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJ RF9DT0xVTU5fUkVGRVJFTkNFKSwKKwkJCQkJCSBlcnJtc2coImNvbHVtbiBcIiVzXCIgcmVm ZXJlbmNlZCBpbiBPTiBERUxFVEUgU0VUIGFjdGlvbiBjYW5ub3QgYmUgUEVSSU9EIiwgY29s KSkpOworCQkJfQogCQkJaWYgKGZrYXR0bnVtc1tqXSA9PSBzZXRjb2xfYXR0bnVtKQogCQkJ ewogCQkJCXNlZW4gPSB0cnVlOwpAQCAtMTI2OTcsMTIgKzEyNzEyLDE5IEBAIGNyZWF0ZUZv cmVpZ25LZXlBY3Rpb25UcmlnZ2VycyhSZWxhdGlvbiByZWwsIE9pZCByZWZSZWxPaWQsIENv bnN0cmFpbnQgKmZrY29uc3RyCiAJCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1G dW5jTmFtZSgiUklfRktleV9wZXJpb2RfcmVzdHJpY3RfZGVsIik7CiAJCQkJYnJlYWs7CiAJ CQljYXNlIEZLQ09OU1RSX0FDVElPTl9DQVNDQURFOgorCQkJCWZrX3RyaWdnZXItPmRlZmVy cmFibGUgPSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5pbml0ZGVmZXJyZWQgPSBmYWxzZTsK KwkJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJSSV9GS2V5X3Bl cmlvZF9jYXNjYWRlX2RlbCIpOworCQkJCWJyZWFrOwogCQkJY2FzZSBGS0NPTlNUUl9BQ1RJ T05fU0VUTlVMTDoKKwkJCQlma190cmlnZ2VyLT5kZWZlcnJhYmxlID0gZmFsc2U7CisJCQkJ ZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVkID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+ZnVu Y25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiUklfRktleV9wZXJpb2Rfc2V0bnVsbF9kZWwiKTsK KwkJCQlicmVhazsKIAkJCWNhc2UgRktDT05TVFJfQUNUSU9OX1NFVERFRkFVTFQ6Ci0JCQkJ ZXJlcG9ydChFUlJPUiwKLQkJCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQ UE9SVEVEKSwKLQkJCQkJCSBlcnJtc2coImludmFsaWQgJXMgYWN0aW9uIGZvciBmb3JlaWdu IGtleSBjb25zdHJhaW50IHVzaW5nIFBFUklPRCIsCi0JCQkJCQkJCSJPTiBERUxFVEUiKSkp OworCQkJCWZrX3RyaWdnZXItPmRlZmVycmFibGUgPSBmYWxzZTsKKwkJCQlma190cmlnZ2Vy LT5pbml0ZGVmZXJyZWQgPSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5 c3RlbUZ1bmNOYW1lKCJSSV9GS2V5X3BlcmlvZF9zZXRkZWZhdWx0X2RlbCIpOwogCQkJCWJy ZWFrOwogCQkJZGVmYXVsdDoKIAkJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIEZLIGFj dGlvbiB0eXBlOiAlZCIsCkBAIC0xMjc4OSwxMiArMTI4MTEsMTkgQEAgY3JlYXRlRm9yZWln bktleUFjdGlvblRyaWdnZXJzKFJlbGF0aW9uIHJlbCwgT2lkIHJlZlJlbE9pZCwgQ29uc3Ry YWludCAqZmtjb25zdHIKIAkJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNO YW1lKCJSSV9GS2V5X3BlcmlvZF9yZXN0cmljdF91cGQiKTsKIAkJCQlicmVhazsKIAkJCWNh c2UgRktDT05TVFJfQUNUSU9OX0NBU0NBREU6CisJCQkJZmtfdHJpZ2dlci0+ZGVmZXJyYWJs ZSA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZhbHNlOworCQkJ CWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlJJX0ZLZXlfcGVyaW9k X2Nhc2NhZGVfdXBkIik7CisJCQkJYnJlYWs7CiAJCQljYXNlIEZLQ09OU1RSX0FDVElPTl9T RVROVUxMOgorCQkJCWZrX3RyaWdnZXItPmRlZmVycmFibGUgPSBmYWxzZTsKKwkJCQlma190 cmlnZ2VyLT5pbml0ZGVmZXJyZWQgPSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5mdW5jbmFt ZSA9IFN5c3RlbUZ1bmNOYW1lKCJSSV9GS2V5X3BlcmlvZF9zZXRudWxsX3VwZCIpOworCQkJ CWJyZWFrOwogCQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fU0VUREVGQVVMVDoKLQkJCQllcmVw b3J0KEVSUk9SLAotCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JU RUQpLAotCQkJCQkJIGVycm1zZygiaW52YWxpZCAlcyBhY3Rpb24gZm9yIGZvcmVpZ24ga2V5 IGNvbnN0cmFpbnQgdXNpbmcgUEVSSU9EIiwKLQkJCQkJCQkJIk9OIFVQREFURSIpKSk7CisJ CQkJZmtfdHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmlu aXRkZWZlcnJlZCA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVt RnVuY05hbWUoIlJJX0ZLZXlfcGVyaW9kX3NldGRlZmF1bHRfdXBkIik7CiAJCQkJYnJlYWs7 CiAJCQlkZWZhdWx0OgogCQkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgRksgYWN0aW9u IHR5cGU6ICVkIiwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yaV90cmln Z2Vycy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JpX3RyaWdnZXJzLmMKaW5kZXggNmE5 ZDM1ZjM1ZmQuLjZiZGMyNjFmMjc0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9h ZHQvcmlfdHJpZ2dlcnMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcmlfdHJpZ2dl cnMuYwpAQCAtODMsNiArODMsMTIgQEAKICNkZWZpbmUgUklfUExBTl9TRVROVUxMX09OVVBE QVRFCQk3CiAjZGVmaW5lIFJJX1BMQU5fU0VUREVGQVVMVF9PTkRFTEVURQkJOAogI2RlZmlu ZSBSSV9QTEFOX1NFVERFRkFVTFRfT05VUERBVEUJCTkKKyNkZWZpbmUgUklfUExBTl9QRVJJ T0RfQ0FTQ0FERV9PTkRFTEVURQkJMTAKKyNkZWZpbmUgUklfUExBTl9QRVJJT0RfQ0FTQ0FE RV9PTlVQREFURQkJMTEKKyNkZWZpbmUgUklfUExBTl9QRVJJT0RfU0VUTlVMTF9PTlVQREFU RQkJMTIKKyNkZWZpbmUgUklfUExBTl9QRVJJT0RfU0VUTlVMTF9PTkRFTEVURQkJMTMKKyNk ZWZpbmUgUklfUExBTl9QRVJJT0RfU0VUREVGQVVMVF9PTlVQREFURQkxNAorI2RlZmluZSBS SV9QTEFOX1BFUklPRF9TRVRERUZBVUxUX09OREVMRVRFCTE1CiAKICNkZWZpbmUgTUFYX1FV T1RFRF9OQU1FX0xFTiAgKE5BTUVEQVRBTEVOKjIrMykKICNkZWZpbmUgTUFYX1FVT1RFRF9S RUxfTkFNRV9MRU4gIChNQVhfUVVPVEVEX05BTUVfTEVOKjIpCkBAIC0xMzEsNiArMTM3LDcg QEAgdHlwZWRlZiBzdHJ1Y3QgUklfQ29uc3RyYWludEluZm8KIAlPaWQJCQlhZ2dlZF9wZXJp b2RfY29udGFpbmVkX2J5X29wZXI7CS8qIG9wZXJhdG9yIGZvciBQRVJJT0QgU1FMICovCiAJ T2lkCQkJcGVyaW9kX3JlZmVyZW5jZWRfYWdnX3Byb2M7CS8qIHByb2MgZm9yIFBFUklPRCBT UUwgKi8KIAlPaWQJCQlwZXJpb2RfcmVmZXJlbmNlZF9hZ2dfcmV0dHlwZTsJLyogcmV0dHlw ZSBmb3IgcHJldmlvdXMgKi8KKwlPaWQJCQlwZXJpb2RfaW50ZXJzZWN0X3Byb2M7CS8qIG9w ZXJhdG9yIGZvciBQRVJJT0QgU1FMICovCiAJZGxpc3Rfbm9kZQl2YWxpZF9saW5rOwkJLyog TGluayBpbiBsaXN0IG9mIHZhbGlkIGVudHJpZXMgKi8KIH0gUklfQ29uc3RyYWludEluZm87 CiAKQEAgLTE5NCw2ICsyMDEsNyBAQCBzdGF0aWMgYm9vbCByaV9DaGVja19Qa19NYXRjaChS ZWxhdGlvbiBwa19yZWwsIFJlbGF0aW9uIGZrX3JlbCwKIAkJCQkJCQkgIGNvbnN0IFJJX0Nv bnN0cmFpbnRJbmZvICpyaWluZm8pOwogc3RhdGljIERhdHVtIHJpX3Jlc3RyaWN0KFRyaWdn ZXJEYXRhICp0cmlnZGF0YSwgYm9vbCBpc19ub19hY3Rpb24pOwogc3RhdGljIERhdHVtIHJp X3NldChUcmlnZ2VyRGF0YSAqdHJpZ2RhdGEsIGJvb2wgaXNfc2V0X251bGwsIGludCB0Z2tp bmQpOworc3RhdGljIERhdHVtIHRyaV9zZXQoVHJpZ2dlckRhdGEgKnRyaWdkYXRhLCBib29s IGlzX3NldF9udWxsLCBpbnQgdGdraW5kKTsKIHN0YXRpYyB2b2lkIHF1b3RlT25lTmFtZShj aGFyICpidWZmZXIsIGNvbnN0IGNoYXIgKm5hbWUpOwogc3RhdGljIHZvaWQgcXVvdGVSZWxh dGlvbk5hbWUoY2hhciAqYnVmZmVyLCBSZWxhdGlvbiByZWwpOwogc3RhdGljIHZvaWQgcmlf R2VuZXJhdGVRdWFsKFN0cmluZ0luZm8gYnVmLApAQCAtMjQyLDcgKzI1MCw3IEBAIHN0YXRp YyB2b2lkIHJpX1JlcG9ydFZpb2xhdGlvbihjb25zdCBSSV9Db25zdHJhaW50SW5mbyAqcmlp bmZvLAogc3RhdGljIHZvaWQgbG9va3VwUGVyaW9kUklQcm9jKGNvbnN0IFJJX0NvbnN0cmFp bnRJbmZvICpyaWluZm8sIGNoYXIgKiphZ2duYW1lKTsKIHN0YXRpYyBib29sIGZwb190YXJn ZXRzX3BrX3JhbmdlKGNvbnN0IEZvclBvcnRpb25PZlN0YXRlICp0Z190ZW1wb3JhbCwKIAkJ CQkJCQkJIGNvbnN0IFJJX0NvbnN0cmFpbnRJbmZvICpyaWluZm8pOwotc3RhdGljIERhdHVt IHJlc3RyaWN0X2Nhc2NhZGluZ19yYW5nZShjb25zdCBGb3JQb3J0aW9uT2ZTdGF0ZSAqdGdf dGVtcG9yYWwsCitzdGF0aWMgRGF0dW0gcmVzdHJpY3RfY2FzY2FkaW5nX3JhbmdlKFJlbGF0 aW9uIHJlbCwgY29uc3QgRm9yUG9ydGlvbk9mU3RhdGUgKnRnX3RlbXBvcmFsLAogCQkJCQkJ CQkJICBjb25zdCBSSV9Db25zdHJhaW50SW5mbyAqcmlpbmZvLAogCQkJCQkJCQkJICBUdXBs ZVRhYmxlU2xvdCAqb2xkc2xvdCk7CiAKQEAgLTgyNiw3ICs4MzQsNyBAQCByaV9yZXN0cmlj dChUcmlnZ2VyRGF0YSAqdHJpZ2RhdGEsIGJvb2wgaXNfbm9fYWN0aW9uKQogCWlmICh0cmln ZGF0YS0+dGdfdGVtcG9yYWwpCiAJewogCQl0YXJnZXRSYW5nZVBhcmFtID0gcmlpbmZvLT5u a2V5cyAtIDE7Ci0JCXRhcmdldFJhbmdlID0gcmVzdHJpY3RfY2FzY2FkaW5nX3JhbmdlKHRy aWdkYXRhLT50Z190ZW1wb3JhbCwgcmlpbmZvLCBvbGRzbG90KTsKKwkJdGFyZ2V0UmFuZ2Ug PSByZXN0cmljdF9jYXNjYWRpbmdfcmFuZ2UocGtfcmVsLCB0cmlnZGF0YS0+dGdfdGVtcG9y YWwsIHJpaW5mbywgb2xkc2xvdCk7CiAJfQogCiAJcmlfUGVyZm9ybUNoZWNrKHJpaW5mbywg JnFrZXksIHFwbGFuLApAQCAtMTQwOSw3ICsxNDE3LDEyOCBAQCBSSV9GS2V5X3BlcmlvZF9y ZXN0cmljdF9kZWwoUEdfRlVOQ1RJT05fQVJHUykKIH0KIAogLyoKLSAqIFRSSV9GS2V5X25v YWN0aW9uX3VwZCAtCisgKiBSSV9GS2V5X3BlcmlvZF9jYXNjYWRlX2RlbCAtCisgKgorICog Q2FzY2FkZWQgZGVsZXRlIGZvcmVpZ24ga2V5IHJlZmVyZW5jZXMgYXQgZGVsZXRlIGV2ZW50 IG9uIHRlbXBvcmFsIFBLIHRhYmxlLgorICovCitEYXR1bQorUklfRktleV9wZXJpb2RfY2Fz Y2FkZV9kZWwoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlUcmlnZ2VyRGF0YSAqdHJpZ2RhdGEg PSAoVHJpZ2dlckRhdGEgKikgZmNpbmZvLT5jb250ZXh0OworCWNvbnN0IFJJX0NvbnN0cmFp bnRJbmZvICpyaWluZm87CisJUmVsYXRpb24JZmtfcmVsOworCVJlbGF0aW9uCXBrX3JlbDsK KwlUdXBsZVRhYmxlU2xvdCAqb2xkc2xvdDsKKwlSSV9RdWVyeUtleSBxa2V5OworCVNQSVBs YW5QdHIgIHFwbGFuOworCURhdHVtIHRhcmdldFJhbmdlOworCisJLyogQ2hlY2sgdGhhdCB0 aGlzIGlzIGEgdmFsaWQgdHJpZ2dlciBjYWxsIG9uIHRoZSByaWdodCB0aW1lIGFuZCBldmVu dC4gKi8KKwlyaV9DaGVja1RyaWdnZXIoZmNpbmZvLCAiUklfRktleV9wZXJpb2RfY2FzY2Fk ZV9kZWwiLCBSSV9UUklHVFlQRV9ERUxFVEUpOworCisJcmlpbmZvID0gcmlfRmV0Y2hDb25z dHJhaW50SW5mbyh0cmlnZGF0YS0+dGdfdHJpZ2dlciwKKwkJCQkJCQkJCXRyaWdkYXRhLT50 Z19yZWxhdGlvbiwgdHJ1ZSk7CisKKwkvKgorCSAqIEdldCB0aGUgcmVsYXRpb24gZGVzY3Jp cHRvcnMgb2YgdGhlIEZLIGFuZCBQSyB0YWJsZXMgYW5kIHRoZSBvbGQgdHVwbGUuCisJICoK KwkgKiBma19yZWwgaXMgb3BlbmVkIGluIFJvd0V4Y2x1c2l2ZUxvY2sgbW9kZSBzaW5jZSB0 aGF0J3Mgd2hhdCBvdXIKKwkgKiBldmVudHVhbCBERUxFVEUgd2lsbCBnZXQgb24gaXQuCisJ ICovCisJZmtfcmVsID0gdGFibGVfb3BlbihyaWluZm8tPmZrX3JlbGlkLCBSb3dFeGNsdXNp dmVMb2NrKTsKKwlwa19yZWwgPSB0cmlnZGF0YS0+dGdfcmVsYXRpb247CisJb2xkc2xvdCA9 IHRyaWdkYXRhLT50Z190cmlnc2xvdDsKKworCS8qCisJICogRG9uJ3QgZGVsZXRlIHRoYW4g bW9yZSB0aGFuIHRoZSBQSydzIGR1cmF0aW9uLAorCSAqIHRyaW1tZWQgYnkgYW4gb3JpZ2lu YWwgRk9SIFBPUlRJT04gT0YgaWYgbmVjZXNzYXJ5LgorCSAqLworCXRhcmdldFJhbmdlID0g cmVzdHJpY3RfY2FzY2FkaW5nX3JhbmdlKHBrX3JlbCwgdHJpZ2RhdGEtPnRnX3RlbXBvcmFs LCByaWluZm8sIG9sZHNsb3QpOworCisJaWYgKFNQSV9jb25uZWN0KCkgIT0gU1BJX09LX0NP Tk5FQ1QpCisJCWVsb2coRVJST1IsICJTUElfY29ubmVjdCBmYWlsZWQiKTsKKworCS8qIEZl dGNoIG9yIHByZXBhcmUgYSBzYXZlZCBwbGFuIGZvciB0aGUgY2FzY2FkZWQgZGVsZXRlICov CisJcmlfQnVpbGRRdWVyeUtleSgmcWtleSwgcmlpbmZvLCBSSV9QTEFOX1BFUklPRF9DQVND QURFX09OREVMRVRFKTsKKworCWlmICgocXBsYW4gPSByaV9GZXRjaFByZXBhcmVkUGxhbigm cWtleSkpID09IE5VTEwpCisJeworCQlTdHJpbmdJbmZvRGF0YSBxdWVyeWJ1ZjsKKwkJY2hh cgkJZmtyZWxuYW1lW01BWF9RVU9URURfUkVMX05BTUVfTEVOXTsKKwkJY2hhcgkJYXR0bmFt ZVtNQVhfUVVPVEVEX05BTUVfTEVOXTsKKwkJY2hhcgkJcGFyYW1uYW1lWzE2XTsKKwkJY29u c3QgY2hhciAqcXVlcnlzZXA7CisJCU9pZAkJCXF1ZXJ5b2lkc1tSSV9NQVhfTlVNS0VZUyAr IDFdOworCQljb25zdCBjaGFyICpma19vbmx5OworCisJCS8qIC0tLS0tLS0tLS0KKwkJICog VGhlIHF1ZXJ5IHN0cmluZyBidWlsdCBpcworCQkgKiAgREVMRVRFIEZST00gW09OTFldIDxm a3RhYmxlPgorCQkgKiAgRk9SIFBPUlRJT04gT0YgJGZrYXR0IEZST00gbG93ZXIoJHtuKzF9 KSBUTyB1cHBlcigke24rMX0pCisJCSAqICBXSEVSRSAkMSA9IGZrYXR0MSBbQU5EIC4uLl0K KwkJICogVGhlIHR5cGUgaWQncyBmb3IgdGhlICQgcGFyYW1ldGVycyBhcmUgdGhvc2Ugb2Yg dGhlCisJCSAqIGNvcnJlc3BvbmRpbmcgUEsgYXR0cmlidXRlcy4KKwkJICogLS0tLS0tLS0t LQorCQkgKi8KKwkJaW5pdFN0cmluZ0luZm8oJnF1ZXJ5YnVmKTsKKwkJZmtfb25seSA9IGZr X3JlbC0+cmRfcmVsLT5yZWxraW5kID09IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUgPwor CQkJIiIgOiAiT05MWSAiOworCQlxdW90ZVJlbGF0aW9uTmFtZShma3JlbG5hbWUsIGZrX3Jl bCk7CisJCXF1b3RlT25lTmFtZShhdHRuYW1lLCBSSUF0dE5hbWUoZmtfcmVsLCByaWluZm8t PmZrX2F0dG51bXNbcmlpbmZvLT5ua2V5cyAtIDFdKSk7CisKKwkJYXBwZW5kU3RyaW5nSW5m bygmcXVlcnlidWYsICJERUxFVEUgRlJPTSAlcyVzIEZPUiBQT1JUSU9OIE9GICVzIEZST00g cGdfY2F0YWxvZy5sb3dlcigkJWQpIFRPIHBnX2NhdGFsb2cudXBwZXIoJCVkKSIsCisJCQkJ CQkgZmtfb25seSwgZmtyZWxuYW1lLCBhdHRuYW1lLCByaWluZm8tPm5rZXlzICsgMSwgcmlp bmZvLT5ua2V5cyArIDEpOworCQlxdWVyeXNlcCA9ICJXSEVSRSI7CisJCWZvciAoaW50IGkg PSAwOyBpIDwgcmlpbmZvLT5ua2V5czsgaSsrKQorCQl7CisJCQlPaWQgcGtfdHlwZSA9IFJJ QXR0VHlwZShwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tpXSk7CisJCQlPaWQgcGtfY29s bCA9IFJJQXR0Q29sbGF0aW9uKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW2ldKTsKKwkJ CU9pZCBma190eXBlID0gUklBdHRUeXBlKGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW2ld KTsKKwkJCU9pZCBma19jb2xsID0gUklBdHRDb2xsYXRpb24oZmtfcmVsLCByaWluZm8tPmZr X2F0dG51bXNbaV0pOworCisJCQlxdW90ZU9uZU5hbWUoYXR0bmFtZSwKKwkJCQkJCSBSSUF0 dE5hbWUoZmtfcmVsLCByaWluZm8tPmZrX2F0dG51bXNbaV0pKTsKKwkJCXNwcmludGYocGFy YW1uYW1lLCAiJCVkIiwgaSArIDEpOworCQkJcmlfR2VuZXJhdGVRdWFsKCZxdWVyeWJ1Ziwg cXVlcnlzZXAsCisJCQkJCQkJcGFyYW1uYW1lLCBwa190eXBlLAorCQkJCQkJCXJpaW5mby0+ cGZfZXFfb3Byc1tpXSwKKwkJCQkJCQlhdHRuYW1lLCBma190eXBlKTsKKwkJCWlmIChwa19j b2xsICE9IGZrX2NvbGwgJiYgIWdldF9jb2xsYXRpb25faXNkZXRlcm1pbmlzdGljKHBrX2Nv bGwpKQorCQkJCXJpX0dlbmVyYXRlUXVhbENvbGxhdGlvbigmcXVlcnlidWYsIHBrX2NvbGwp OworCQkJcXVlcnlzZXAgPSAiQU5EIjsKKwkJCXF1ZXJ5b2lkc1tpXSA9IHBrX3R5cGU7CisJ CX0KKworCQkvKiBTZXQgYSBwYXJhbSBmb3IgRk9SIFBPUlRJT04gT0YgVE8vRlJPTSAqLwor CQlxdWVyeW9pZHNbcmlpbmZvLT5ua2V5c10gPSBSSUF0dFR5cGUocGtfcmVsLCByaWluZm8t PnBrX2F0dG51bXNbcmlpbmZvLT5ua2V5cyAtIDFdKTsKKworCQkvKiBQcmVwYXJlIGFuZCBz YXZlIHRoZSBwbGFuICovCisJCXFwbGFuID0gcmlfUGxhbkNoZWNrKHF1ZXJ5YnVmLmRhdGEs IHJpaW5mby0+bmtleXMgKyAxLCBxdWVyeW9pZHMsCisJCQkJCQkJICZxa2V5LCBma19yZWws IHBrX3JlbCk7CisJfQorCisJLyoKKwkgKiBXZSBoYXZlIGEgcGxhbiBub3cuIEJ1aWxkIHVw IHRoZSBhcmd1bWVudHMgZnJvbSB0aGUga2V5IHZhbHVlcyBpbiB0aGUKKwkgKiBkZWxldGVk IFBLIHR1cGxlIGFuZCBkZWxldGUgdGhlIHJlZmVyZW5jaW5nIHJvd3MKKwkgKi8KKwlyaV9Q ZXJmb3JtQ2hlY2socmlpbmZvLCAmcWtleSwgcXBsYW4sCisJCQkJCWZrX3JlbCwgcGtfcmVs LAorCQkJCQlvbGRzbG90LCBOVUxMLAorCQkJCQlyaWluZm8tPm5rZXlzLCB0YXJnZXRSYW5n ZSwKKwkJCQkJdHJ1ZSwJICAgLyogbXVzdCBkZXRlY3QgbmV3IHJvd3MgKi8KKwkJCQkJU1BJ X09LX0RFTEVURSk7CisKKwlpZiAoU1BJX2ZpbmlzaCgpICE9IFNQSV9PS19GSU5JU0gpCisJ CWVsb2coRVJST1IsICJTUElfZmluaXNoIGZhaWxlZCIpOworCisJdGFibGVfY2xvc2UoZmtf cmVsLCBSb3dFeGNsdXNpdmVMb2NrKTsKKworCXJldHVybiBQb2ludGVyR2V0RGF0dW0oTlVM TCk7Cit9CisKKworLyoKKyAqIFJJX0ZLZXlfcGVyaW9kX25vYWN0aW9uX3VwZCAtCiAgKgog ICogR2l2ZSBhbiBlcnJvciBhbmQgcm9sbCBiYWNrIHRoZSBjdXJyZW50IHRyYW5zYWN0aW9u IGlmIHRoZQogICogdXBkYXRlIGhhcyByZXN1bHRlZCBpbiBhIHZpb2xhdGlvbiBvZiB0aGUg Z2l2ZW4gcmVmZXJlbnRpYWwKQEAgLTE0NDUsNiArMTU3NCw0MTUgQEAgUklfRktleV9wZXJp b2RfcmVzdHJpY3RfdXBkKFBHX0ZVTkNUSU9OX0FSR1MpCiAJcmV0dXJuIHJpX3Jlc3RyaWN0 KChUcmlnZ2VyRGF0YSAqKSBmY2luZm8tPmNvbnRleHQsIGZhbHNlKTsKIH0KIAorLyoKKyAq IFJJX0ZLZXlfcGVyaW9kX2Nhc2NhZGVfdXBkIC0KKyAqCisgKiBDYXNjYWRlZCB1cGRhdGUg Zm9yZWlnbiBrZXkgcmVmZXJlbmNlcyBhdCB1cGRhdGUgZXZlbnQgb24gdGVtcG9yYWwgUEsg dGFibGUuCisgKi8KK0RhdHVtCitSSV9GS2V5X3BlcmlvZF9jYXNjYWRlX3VwZChQR19GVU5D VElPTl9BUkdTKQoreworCVRyaWdnZXJEYXRhICp0cmlnZGF0YSA9IChUcmlnZ2VyRGF0YSAq KSBmY2luZm8tPmNvbnRleHQ7CisJY29uc3QgUklfQ29uc3RyYWludEluZm8gKnJpaW5mbzsK KwlSZWxhdGlvbglma19yZWw7CisJUmVsYXRpb24JcGtfcmVsOworCVR1cGxlVGFibGVTbG90 ICpvbGRzbG90OworCVR1cGxlVGFibGVTbG90ICpuZXdzbG90OworCVJJX1F1ZXJ5S2V5IHFr ZXk7CisJU1BJUGxhblB0ciAgcXBsYW47CisJRGF0dW0gdGFyZ2V0UmFuZ2U7CisKKwkvKiBD aGVjayB0aGF0IHRoaXMgaXMgYSB2YWxpZCB0cmlnZ2VyIGNhbGwgb24gdGhlIHJpZ2h0IHRp bWUgYW5kIGV2ZW50LiAqLworCXJpX0NoZWNrVHJpZ2dlcihmY2luZm8sICJSSV9GS2V5X3Bl cmlvZF9jYXNjYWRlX3VwZCIsIFJJX1RSSUdUWVBFX1VQREFURSk7CisKKwlyaWluZm8gPSBy aV9GZXRjaENvbnN0cmFpbnRJbmZvKHRyaWdkYXRhLT50Z190cmlnZ2VyLAorCQkJCQkJCQkJ dHJpZ2RhdGEtPnRnX3JlbGF0aW9uLCB0cnVlKTsKKworCS8qCisJICogR2V0IHRoZSByZWxh dGlvbiBkZXNjcmlwdG9ycyBvZiB0aGUgRksgYW5kIFBLIHRhYmxlcyBhbmQgdGhlIG5ldyBh bmQKKwkgKiBvbGQgdHVwbGUuCisJICoKKwkgKiBma19yZWwgaXMgb3BlbmVkIGluIFJvd0V4 Y2x1c2l2ZUxvY2sgbW9kZSBzaW5jZSB0aGF0J3Mgd2hhdCBvdXIKKwkgKiBldmVudHVhbCBV UERBVEUgd2lsbCBnZXQgb24gaXQuCisJICovCisJZmtfcmVsID0gdGFibGVfb3BlbihyaWlu Zm8tPmZrX3JlbGlkLCBSb3dFeGNsdXNpdmVMb2NrKTsKKwlwa19yZWwgPSB0cmlnZGF0YS0+ dGdfcmVsYXRpb247CisJbmV3c2xvdCA9IHRyaWdkYXRhLT50Z19uZXdzbG90OworCW9sZHNs b3QgPSB0cmlnZGF0YS0+dGdfdHJpZ3Nsb3Q7CisKKwkvKgorCSAqIERvbid0IGRlbGV0ZSB0 aGFuIG1vcmUgdGhhbiB0aGUgUEsncyBkdXJhdGlvbiwKKwkgKiB0cmltbWVkIGJ5IGFuIG9y aWdpbmFsIEZPUiBQT1JUSU9OIE9GIGlmIG5lY2Vzc2FyeS4KKwkgKi8KKwl0YXJnZXRSYW5n ZSA9IHJlc3RyaWN0X2Nhc2NhZGluZ19yYW5nZShwa19yZWwsIHRyaWdkYXRhLT50Z190ZW1w b3JhbCwgcmlpbmZvLCBvbGRzbG90KTsKKworCWlmIChTUElfY29ubmVjdCgpICE9IFNQSV9P S19DT05ORUNUKQorCQllbG9nKEVSUk9SLCAiU1BJX2Nvbm5lY3QgZmFpbGVkIik7CisKKwkv KiBGZXRjaCBvciBwcmVwYXJlIGEgc2F2ZWQgcGxhbiBmb3IgdGhlIGNhc2NhZGVkIHVwZGF0 ZSAqLworCXJpX0J1aWxkUXVlcnlLZXkoJnFrZXksIHJpaW5mbywgUklfUExBTl9QRVJJT0Rf Q0FTQ0FERV9PTlVQREFURSk7CisKKwlpZiAoKHFwbGFuID0gcmlfRmV0Y2hQcmVwYXJlZFBs YW4oJnFrZXkpKSA9PSBOVUxMKQorCXsKKwkJU3RyaW5nSW5mb0RhdGEgcXVlcnlidWY7CisJ CVN0cmluZ0luZm9EYXRhIHF1YWxidWY7CisJCWNoYXIJCWZrcmVsbmFtZVtNQVhfUVVPVEVE X1JFTF9OQU1FX0xFTl07CisJCWNoYXIJCWF0dG5hbWVbTUFYX1FVT1RFRF9OQU1FX0xFTl07 CisJCWNoYXIJCXBhcmFtbmFtZVsxNl07CisJCWNvbnN0IGNoYXIgKnF1ZXJ5c2VwOworCQlj b25zdCBjaGFyICpxdWFsc2VwOworCQlPaWQJCSBxdWVyeW9pZHNbMiAqIFJJX01BWF9OVU1L RVlTICsgMV07CisJCWNvbnN0IGNoYXIgKmZrX29ubHk7CisKKwkJLyogLS0tLS0tLS0tLQor CQkgKiBUaGUgcXVlcnkgc3RyaW5nIGJ1aWx0IGlzCisJCSAqICBVUERBVEUgW09OTFldIDxm a3RhYmxlPgorCQkgKgkJICBGT1IgUE9SVElPTiBPRiAkZmthdHQgRlJPTSBsb3dlcigkezJu KzF9KSBUTyB1cHBlcigkezJuKzF9KQorCQkgKgkJICBTRVQgZmthdHQxID0gJDEsIFssIC4u Ll0KKwkJICoJCSAgV0hFUkUgJG4gPSBma2F0dDEgW0FORCAuLi5dCisJCSAqIFRoZSB0eXBl IGlkJ3MgZm9yIHRoZSAkIHBhcmFtZXRlcnMgYXJlIHRob3NlIG9mIHRoZQorCQkgKiBjb3Jy ZXNwb25kaW5nIFBLIGF0dHJpYnV0ZXMuICBOb3RlIHRoYXQgd2UgYXJlIGFzc3VtaW5nCisJ CSAqIHRoZXJlIGlzIGFuIGFzc2lnbm1lbnQgY2FzdCBmcm9tIHRoZSBQSyB0byB0aGUgRksg dHlwZTsKKwkJICogZWxzZSB0aGUgcGFyc2VyIHdpbGwgZmFpbC4KKwkJICogLS0tLS0tLS0t LQorCQkgKi8KKwkJaW5pdFN0cmluZ0luZm8oJnF1ZXJ5YnVmKTsKKwkJaW5pdFN0cmluZ0lu Zm8oJnF1YWxidWYpOworCQlma19vbmx5ID0gZmtfcmVsLT5yZF9yZWwtPnJlbGtpbmQgPT0g UkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSA/CisJCQkiIiA6ICJPTkxZICI7CisJCXF1b3Rl UmVsYXRpb25OYW1lKGZrcmVsbmFtZSwgZmtfcmVsKTsKKwkJcXVvdGVPbmVOYW1lKGF0dG5h bWUsIFJJQXR0TmFtZShma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tyaWluZm8tPm5rZXlz IC0gMV0pKTsKKworCQlhcHBlbmRTdHJpbmdJbmZvKCZxdWVyeWJ1ZiwgIlVQREFURSAlcyVz IEZPUiBQT1JUSU9OIE9GICVzIEZST00gcGdfY2F0YWxvZy5sb3dlcigkJWQpIFRPIHBnX2Nh dGFsb2cudXBwZXIoJCVkKSBTRVQiLAorCQkJCQkJIGZrX29ubHksIGZrcmVsbmFtZSwgYXR0 bmFtZSwgMiAqIHJpaW5mby0+bmtleXMgKyAxLCAyICogcmlpbmZvLT5ua2V5cyArIDEpOwor CisJCXF1ZXJ5c2VwID0gIiI7CisJCXF1YWxzZXAgPSAiV0hFUkUiOworCQlmb3IgKGludCBp ID0gMCwgaiA9IHJpaW5mby0+bmtleXM7IGkgPCByaWluZm8tPm5rZXlzOyBpKyssIGorKykK KwkJeworCQkJT2lkIHBrX3R5cGUgPSBSSUF0dFR5cGUocGtfcmVsLCByaWluZm8tPnBrX2F0 dG51bXNbaV0pOworCQkJT2lkIHBrX2NvbGwgPSBSSUF0dENvbGxhdGlvbihwa19yZWwsIHJp aW5mby0+cGtfYXR0bnVtc1tpXSk7CisJCQlPaWQgZmtfdHlwZSA9IFJJQXR0VHlwZShma19y ZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tpXSk7CisJCQlPaWQgZmtfY29sbCA9IFJJQXR0Q29s bGF0aW9uKGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW2ldKTsKKworCQkJcXVvdGVPbmVO YW1lKGF0dG5hbWUsCisJCQkJCQkgUklBdHROYW1lKGZrX3JlbCwgcmlpbmZvLT5ma19hdHRu dW1zW2ldKSk7CisJCQkvKgorCQkJICogRG9uJ3Qgc2V0IHRoZSB0ZW1wb3JhbCBjb2x1bW4o cykuCisJCQkgKiBGT1IgUE9SVElPTiBPRiB3aWxsIHRha2UgY2FyZSBvZiB0aGF0LgorCQkJ ICovCisJCQlpZiAoaSA8IHJpaW5mby0+bmtleXMgLSAxKQorCQkJCWFwcGVuZFN0cmluZ0lu Zm8oJnF1ZXJ5YnVmLAorCQkJCQkJCQkgIiVzICVzID0gJCVkIiwKKwkJCQkJCQkJIHF1ZXJ5 c2VwLCBhdHRuYW1lLCBpICsgMSk7CisKKwkJCXNwcmludGYocGFyYW1uYW1lLCAiJCVkIiwg aiArIDEpOworCQkJcmlfR2VuZXJhdGVRdWFsKCZxdWFsYnVmLCBxdWFsc2VwLAorCQkJCQkJ CXBhcmFtbmFtZSwgcGtfdHlwZSwKKwkJCQkJCQlyaWluZm8tPnBmX2VxX29wcnNbaV0sCisJ CQkJCQkJYXR0bmFtZSwgZmtfdHlwZSk7CisJCQlpZiAocGtfY29sbCAhPSBma19jb2xsICYm ICFnZXRfY29sbGF0aW9uX2lzZGV0ZXJtaW5pc3RpYyhwa19jb2xsKSkKKwkJCQlyaV9HZW5l cmF0ZVF1YWxDb2xsYXRpb24oJnF1ZXJ5YnVmLCBwa19jb2xsKTsKKwkJCXF1ZXJ5c2VwID0g IiwiOworCQkJcXVhbHNlcCA9ICJBTkQiOworCQkJcXVlcnlvaWRzW2ldID0gcGtfdHlwZTsK KwkJCXF1ZXJ5b2lkc1tqXSA9IHBrX3R5cGU7CisJCX0KKwkJYXBwZW5kQmluYXJ5U3RyaW5n SW5mbygmcXVlcnlidWYsIHF1YWxidWYuZGF0YSwgcXVhbGJ1Zi5sZW4pOworCisJCS8qIFNl dCBhIHBhcmFtIGZvciBGT1IgUE9SVElPTiBPRiBUTy9GUk9NICovCisJCXF1ZXJ5b2lkc1sy ICogcmlpbmZvLT5ua2V5c10gPSBSSUF0dFR5cGUocGtfcmVsLCByaWluZm8tPnBrX2F0dG51 bXNbcmlpbmZvLT5ua2V5cyAtIDFdKTsKKworCQkvKiBQcmVwYXJlIGFuZCBzYXZlIHRoZSBw bGFuICovCisJCXFwbGFuID0gcmlfUGxhbkNoZWNrKHF1ZXJ5YnVmLmRhdGEsIDIgKiByaWlu Zm8tPm5rZXlzICsgMSwgcXVlcnlvaWRzLAorCQkJCQkJCSAmcWtleSwgZmtfcmVsLCBwa19y ZWwpOworCX0KKworCS8qCisJICogV2UgaGF2ZSBhIHBsYW4gbm93LiBSdW4gaXQgdG8gdXBk YXRlIHRoZSBleGlzdGluZyByZWZlcmVuY2VzLgorCSAqLworCXJpX1BlcmZvcm1DaGVjayhy aWluZm8sICZxa2V5LCBxcGxhbiwKKwkJCQkJZmtfcmVsLCBwa19yZWwsCisJCQkJCW9sZHNs b3QsIG5ld3Nsb3QsCisJCQkJCXJpaW5mby0+bmtleXMgKiAyLCB0YXJnZXRSYW5nZSwKKwkJ CQkJdHJ1ZSwJCS8qIG11c3QgZGV0ZWN0IG5ldyByb3dzICovCisJCQkJCVNQSV9PS19VUERB VEUpOworCisJaWYgKFNQSV9maW5pc2goKSAhPSBTUElfT0tfRklOSVNIKQorCQllbG9nKEVS Uk9SLCAiU1BJX2ZpbmlzaCBmYWlsZWQiKTsKKworCXRhYmxlX2Nsb3NlKGZrX3JlbCwgUm93 RXhjbHVzaXZlTG9jayk7CisKKwlyZXR1cm4gUG9pbnRlckdldERhdHVtKE5VTEwpOworfQor CisvKgorICogUklfRktleV9wZXJpb2Rfc2V0bnVsbF9kZWwgLQorICoKKyAqIFNldCBmb3Jl aWduIGtleSByZWZlcmVuY2VzIHRvIE5VTEwgdmFsdWVzIGF0IGRlbGV0ZSBldmVudCBvbiBQ SyB0YWJsZS4KKyAqLworRGF0dW0KK1JJX0ZLZXlfcGVyaW9kX3NldG51bGxfZGVsKFBHX0ZV TkNUSU9OX0FSR1MpCit7CisJLyogQ2hlY2sgdGhhdCB0aGlzIGlzIGEgdmFsaWQgdHJpZ2dl ciBjYWxsIG9uIHRoZSByaWdodCB0aW1lIGFuZCBldmVudC4gKi8KKwlyaV9DaGVja1RyaWdn ZXIoZmNpbmZvLCAiUklfRktleV9wZXJpb2Rfc2V0bnVsbF9kZWwiLCBSSV9UUklHVFlQRV9E RUxFVEUpOworCisJLyogU2hhcmUgY29kZSB3aXRoIFVQREFURSBjYXNlICovCisJcmV0dXJu IHRyaV9zZXQoKFRyaWdnZXJEYXRhICopIGZjaW5mby0+Y29udGV4dCwgdHJ1ZSwgUklfVFJJ R1RZUEVfREVMRVRFKTsKK30KKworLyoKKyAqIFJJX0ZLZXlfcGVyaW9kX3NldG51bGxfdXBk IC0KKyAqCisgKiBTZXQgZm9yZWlnbiBrZXkgcmVmZXJlbmNlcyB0byBOVUxMIGF0IHVwZGF0 ZSBldmVudCBvbiBQSyB0YWJsZS4KKyAqLworRGF0dW0KK1JJX0ZLZXlfcGVyaW9kX3NldG51 bGxfdXBkKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJLyogQ2hlY2sgdGhhdCB0aGlzIGlzIGEg dmFsaWQgdHJpZ2dlciBjYWxsIG9uIHRoZSByaWdodCB0aW1lIGFuZCBldmVudC4gKi8KKwly aV9DaGVja1RyaWdnZXIoZmNpbmZvLCAiUklfRktleV9wZXJpb2Rfc2V0bnVsbF91cGQiLCBS SV9UUklHVFlQRV9VUERBVEUpOworCisJLyogU2hhcmUgY29kZSB3aXRoIERFTEVURSBjYXNl ICovCisJcmV0dXJuIHRyaV9zZXQoKFRyaWdnZXJEYXRhICopIGZjaW5mby0+Y29udGV4dCwg dHJ1ZSwgUklfVFJJR1RZUEVfVVBEQVRFKTsKK30KKworLyoKKyAqIFJJX0ZLZXlfcGVyaW9k X3NldGRlZmF1bHRfZGVsIC0KKyAqCisgKiBTZXQgZm9yZWlnbiBrZXkgcmVmZXJlbmNlcyB0 byBkZWZhdWx0cyBhdCBkZWxldGUgZXZlbnQgb24gUEsgdGFibGUuCisgKi8KK0RhdHVtCitS SV9GS2V5X3BlcmlvZF9zZXRkZWZhdWx0X2RlbChQR19GVU5DVElPTl9BUkdTKQoreworCS8q IENoZWNrIHRoYXQgdGhpcyBpcyBhIHZhbGlkIHRyaWdnZXIgY2FsbCBvbiB0aGUgcmlnaHQg dGltZSBhbmQgZXZlbnQuICovCisJcmlfQ2hlY2tUcmlnZ2VyKGZjaW5mbywgIlJJX0ZLZXlf cGVyaW9kX3NldGRlZmF1bHRfZGVsIiwgUklfVFJJR1RZUEVfREVMRVRFKTsKKworCS8qIFNo YXJlIGNvZGUgd2l0aCBVUERBVEUgY2FzZSAqLworCXJldHVybiB0cmlfc2V0KChUcmlnZ2Vy RGF0YSAqKSBmY2luZm8tPmNvbnRleHQsIGZhbHNlLCBSSV9UUklHVFlQRV9ERUxFVEUpOwor fQorCisvKgorICogUklfRktleV9wZXJpb2Rfc2V0ZGVmYXVsdF91cGQgLQorICoKKyAqIFNl dCBmb3JlaWduIGtleSByZWZlcmVuY2VzIHRvIGRlZmF1bHRzIGF0IHVwZGF0ZSBldmVudCBv biBQSyB0YWJsZS4KKyAqLworRGF0dW0KK1JJX0ZLZXlfcGVyaW9kX3NldGRlZmF1bHRfdXBk KFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJLyogQ2hlY2sgdGhhdCB0aGlzIGlzIGEgdmFsaWQg dHJpZ2dlciBjYWxsIG9uIHRoZSByaWdodCB0aW1lIGFuZCBldmVudC4gKi8KKwlyaV9DaGVj a1RyaWdnZXIoZmNpbmZvLCAiUklfRktleV9wZXJpb2Rfc2V0ZGVmYXVsdF91cGQiLCBSSV9U UklHVFlQRV9VUERBVEUpOworCisJLyogU2hhcmUgY29kZSB3aXRoIERFTEVURSBjYXNlICov CisJcmV0dXJuIHRyaV9zZXQoKFRyaWdnZXJEYXRhICopIGZjaW5mby0+Y29udGV4dCwgZmFs c2UsIFJJX1RSSUdUWVBFX1VQREFURSk7Cit9CisKKy8qCisgKiB0cmlfc2V0IC0KKyAqCisg KiBDb21tb24gY29kZSBmb3IgdGVtcG9yYWwgT04gREVMRVRFIFNFVCBOVUxMLCBPTiBERUxF VEUgU0VUIERFRkFVTFQsIE9OCisgKiBVUERBVEUgU0VUIE5VTEwsIGFuZCBPTiBVUERBVEUg U0VUIERFRkFVTFQuCisgKi8KK3N0YXRpYyBEYXR1bQordHJpX3NldChUcmlnZ2VyRGF0YSAq dHJpZ2RhdGEsIGJvb2wgaXNfc2V0X251bGwsIGludCB0Z2tpbmQpCit7CisJY29uc3QgUklf Q29uc3RyYWludEluZm8gKnJpaW5mbzsKKwlSZWxhdGlvbglma19yZWw7CisJUmVsYXRpb24J cGtfcmVsOworCVR1cGxlVGFibGVTbG90ICpvbGRzbG90OworCVJJX1F1ZXJ5S2V5IHFrZXk7 CisJU1BJUGxhblB0cglxcGxhbjsKKwlEYXR1bQkJdGFyZ2V0UmFuZ2U7CisJaW50MzIJCXF1 ZXJ5bm87CisKKwlyaWluZm8gPSByaV9GZXRjaENvbnN0cmFpbnRJbmZvKHRyaWdkYXRhLT50 Z190cmlnZ2VyLAorCQkJCQkJCQkJdHJpZ2RhdGEtPnRnX3JlbGF0aW9uLCB0cnVlKTsKKwor CS8qCisJICogR2V0IHRoZSByZWxhdGlvbiBkZXNjcmlwdG9ycyBvZiB0aGUgRksgYW5kIFBL IHRhYmxlcyBhbmQgdGhlIG9sZCB0dXBsZS4KKwkgKgorCSAqIGZrX3JlbCBpcyBvcGVuZWQg aW4gUm93RXhjbHVzaXZlTG9jayBtb2RlIHNpbmNlIHRoYXQncyB3aGF0IG91cgorCSAqIGV2 ZW50dWFsIFVQREFURSB3aWxsIGdldCBvbiBpdC4KKwkgKi8KKwlma19yZWwgPSB0YWJsZV9v cGVuKHJpaW5mby0+ZmtfcmVsaWQsIFJvd0V4Y2x1c2l2ZUxvY2spOworCXBrX3JlbCA9IHRy aWdkYXRhLT50Z19yZWxhdGlvbjsKKwlvbGRzbG90ID0gdHJpZ2RhdGEtPnRnX3RyaWdzbG90 OworCisJLyoKKwkgKiBEb24ndCBTRVQgTlVMTC9ERUZBVUxUIHRoYW4gbW9yZSB0aGFuIHRo ZSBQSydzIGR1cmF0aW9uLAorCSAqIHRyaW1tZWQgYnkgYW4gb3JpZ2luYWwgRk9SIFBPUlRJ T04gT0YgaWYgbmVjZXNzYXJ5LgorCSAqLworCXRhcmdldFJhbmdlID0gcmVzdHJpY3RfY2Fz Y2FkaW5nX3JhbmdlKHBrX3JlbCwgdHJpZ2RhdGEtPnRnX3RlbXBvcmFsLCByaWluZm8sIG9s ZHNsb3QpOworCisJaWYgKFNQSV9jb25uZWN0KCkgIT0gU1BJX09LX0NPTk5FQ1QpCisJCWVs b2coRVJST1IsICJTUElfY29ubmVjdCBmYWlsZWQiKTsKKworCS8qCisJICogRmV0Y2ggb3Ig cHJlcGFyZSBhIHNhdmVkIHBsYW4gZm9yIHRoZSB0cmlnZ2VyLgorCSAqLworCXN3aXRjaCAo dGdraW5kKQorCXsKKwkJY2FzZSBSSV9UUklHVFlQRV9VUERBVEU6CisJCQlxdWVyeW5vID0g aXNfc2V0X251bGwKKwkJCQk/IFJJX1BMQU5fUEVSSU9EX1NFVE5VTExfT05VUERBVEUKKwkJ CQk6IFJJX1BMQU5fUEVSSU9EX1NFVERFRkFVTFRfT05VUERBVEU7CisJCQlicmVhazsKKwkJ Y2FzZSBSSV9UUklHVFlQRV9ERUxFVEU6CisJCQlxdWVyeW5vID0gaXNfc2V0X251bGwKKwkJ CQk/IFJJX1BMQU5fUEVSSU9EX1NFVE5VTExfT05ERUxFVEUKKwkJCQk6IFJJX1BMQU5fUEVS SU9EX1NFVERFRkFVTFRfT05ERUxFVEU7CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCWVs b2coRVJST1IsICJpbnZhbGlkIHRna2luZCBwYXNzZWQgdG8gcmlfc2V0Iik7CisJfQorCisJ cmlfQnVpbGRRdWVyeUtleSgmcWtleSwgcmlpbmZvLCBxdWVyeW5vKTsKKworCWlmICgocXBs YW4gPSByaV9GZXRjaFByZXBhcmVkUGxhbigmcWtleSkpID09IE5VTEwpCisJeworCQlTdHJp bmdJbmZvRGF0YSBxdWVyeWJ1ZjsKKwkJU3RyaW5nSW5mb0RhdGEgcXVhbGJ1ZjsKKwkJY2hh cgkJZmtyZWxuYW1lW01BWF9RVU9URURfUkVMX05BTUVfTEVOXTsKKwkJY2hhcgkJYXR0bmFt ZVtNQVhfUVVPVEVEX05BTUVfTEVOXTsKKwkJY2hhcgkJcGFyYW1uYW1lWzE2XTsKKwkJY29u c3QgY2hhciAqcXVlcnlzZXA7CisJCWNvbnN0IGNoYXIgKnF1YWxzZXA7CisJCU9pZAkJCXF1 ZXJ5b2lkc1tSSV9NQVhfTlVNS0VZUyArIDFdOyAvKiArMSBmb3IgRk9SIFBPUlRJT04gT0Yg Ki8KKwkJY29uc3QgY2hhciAqZmtfb25seTsKKwkJaW50CQkJbnVtX2NvbHNfdG9fc2V0Owor CQljb25zdCBpbnQxNiAqc2V0X2NvbHM7CisKKwkJc3dpdGNoICh0Z2tpbmQpCisJCXsKKwkJ CWNhc2UgUklfVFJJR1RZUEVfVVBEQVRFOgorCQkJCS8qIC0xIHNvIHdlIGxldCBGT1IgUE9S VElPTiBPRiBzZXQgdGhlIHJhbmdlLiAqLworCQkJCW51bV9jb2xzX3RvX3NldCA9IHJpaW5m by0+bmtleXMgLSAxOworCQkJCXNldF9jb2xzID0gcmlpbmZvLT5ma19hdHRudW1zOworCQkJ CWJyZWFrOworCQkJY2FzZSBSSV9UUklHVFlQRV9ERUxFVEU6CisJCQkJLyoKKwkJCQkgKiBJ ZiBjb25mZGVsc2V0Y29scyBhcmUgcHJlc2VudCwgdGhlbiB3ZSBvbmx5IHVwZGF0ZSB0aGUK KwkJCQkgKiBjb2x1bW5zIHNwZWNpZmllZCBpbiB0aGF0IGFycmF5LCBvdGhlcndpc2Ugd2Ug dXBkYXRlIGFsbAorCQkJCSAqIHRoZSByZWZlcmVuY2luZyBjb2x1bW5zLgorCQkJCSAqLwor CQkJCWlmIChyaWluZm8tPm5kZWxzZXRjb2xzICE9IDApCisJCQkJeworCQkJCQludW1fY29s c190b19zZXQgPSByaWluZm8tPm5kZWxzZXRjb2xzOworCQkJCQlzZXRfY29scyA9IHJpaW5m by0+Y29uZmRlbHNldGNvbHM7CisJCQkJfQorCQkJCWVsc2UKKwkJCQl7CisJCQkJCS8qIC0x IHNvIHdlIGxldCBGT1IgUE9SVElPTiBPRiBzZXQgdGhlIHJhbmdlLiAqLworCQkJCQludW1f Y29sc190b19zZXQgPSByaWluZm8tPm5rZXlzIC0gMTsKKwkJCQkJc2V0X2NvbHMgPSByaWlu Zm8tPmZrX2F0dG51bXM7CisJCQkJfQorCQkJCWJyZWFrOworCQkJZGVmYXVsdDoKKwkJCQll bG9nKEVSUk9SLCAiaW52YWxpZCB0Z2tpbmQgcGFzc2VkIHRvIHJpX3NldCIpOworCQl9CisK KwkJLyogLS0tLS0tLS0tLQorCQkgKiBUaGUgcXVlcnkgc3RyaW5nIGJ1aWx0IGlzCisJCSAq CVVQREFURSBbT05MWV0gPGZrdGFibGU+CisJCSAqCQkJRk9SIFBPUlRJT04gT0YgJGZrYXR0 IEZST00gbG93ZXIoJHtuKzF9KSBUTyB1cHBlcigke24rMX0pCisJCSAqCQkJU0VUIGZrYXR0 MSA9IHtOVUxMfERFRkFVTFR9IFssIC4uLl0KKwkJICoJCQlXSEVSRSAkMSA9IGZrYXR0MSBb QU5EIC4uLl0KKwkJICogVGhlIHR5cGUgaWQncyBmb3IgdGhlICQgcGFyYW1ldGVycyBhcmUg dGhvc2Ugb2YgdGhlCisJCSAqIGNvcnJlc3BvbmRpbmcgUEsgYXR0cmlidXRlcy4KKwkJICog LS0tLS0tLS0tLQorCQkgKi8KKwkJaW5pdFN0cmluZ0luZm8oJnF1ZXJ5YnVmKTsKKwkJaW5p dFN0cmluZ0luZm8oJnF1YWxidWYpOworCQlma19vbmx5ID0gZmtfcmVsLT5yZF9yZWwtPnJl bGtpbmQgPT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSA/CisJCQkiIiA6ICJPTkxZICI7 CisJCXF1b3RlUmVsYXRpb25OYW1lKGZrcmVsbmFtZSwgZmtfcmVsKTsKKwkJcXVvdGVPbmVO YW1lKGF0dG5hbWUsIFJJQXR0TmFtZShma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tyaWlu Zm8tPm5rZXlzIC0gMV0pKTsKKworCQlhcHBlbmRTdHJpbmdJbmZvKCZxdWVyeWJ1ZiwgIlVQ REFURSAlcyVzIEZPUiBQT1JUSU9OIE9GICVzIEZST00gcGdfY2F0YWxvZy5sb3dlcigkJWQp IFRPIHBnX2NhdGFsb2cudXBwZXIoJCVkKSBTRVQiLAorCQkJCQkJIGZrX29ubHksIGZrcmVs bmFtZSwgYXR0bmFtZSwgcmlpbmZvLT5ua2V5cyArIDEsIHJpaW5mby0+bmtleXMgKyAxKTsK KworCQkvKgorCQkgKiBBZGQgYXNzaWdubWVudCBjbGF1c2VzCisJCSAqLworCQlxdWVyeXNl cCA9ICIiOworCQlmb3IgKGludCBpID0gMDsgaSA8IG51bV9jb2xzX3RvX3NldDsgaSsrKQor CQl7CisJCQlxdW90ZU9uZU5hbWUoYXR0bmFtZSwgUklBdHROYW1lKGZrX3JlbCwgc2V0X2Nv bHNbaV0pKTsKKwkJCWFwcGVuZFN0cmluZ0luZm8oJnF1ZXJ5YnVmLAorCQkJCQkJCSAiJXMg JXMgPSAlcyIsCisJCQkJCQkJIHF1ZXJ5c2VwLCBhdHRuYW1lLAorCQkJCQkJCSBpc19zZXRf bnVsbCA/ICJOVUxMIiA6ICJERUZBVUxUIik7CisJCQlxdWVyeXNlcCA9ICIsIjsKKwkJfQor CisJCS8qCisJCSAqIEFkZCBXSEVSRSBjbGF1c2UKKwkJICovCisJCXF1YWxzZXAgPSAiV0hF UkUiOworCQlmb3IgKGludCBpID0gMDsgaSA8IHJpaW5mby0+bmtleXM7IGkrKykKKwkJewor CQkJT2lkCXBrX3R5cGUgPSBSSUF0dFR5cGUocGtfcmVsLCByaWluZm8tPnBrX2F0dG51bXNb aV0pOworCQkJT2lkCWZrX3R5cGUgPSBSSUF0dFR5cGUoZmtfcmVsLCByaWluZm8tPmZrX2F0 dG51bXNbaV0pOworCQkJT2lkCXBrX2NvbGwgPSBSSUF0dENvbGxhdGlvbihwa19yZWwsIHJp aW5mby0+cGtfYXR0bnVtc1tpXSk7CisJCQlPaWQJZmtfY29sbCA9IFJJQXR0Q29sbGF0aW9u KGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW2ldKTsKKworCQkJcXVvdGVPbmVOYW1lKGF0 dG5hbWUsCisJCQkJCQkgUklBdHROYW1lKGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW2ld KSk7CisKKwkJCXNwcmludGYocGFyYW1uYW1lLCAiJCVkIiwgaSArIDEpOworCQkJcmlfR2Vu ZXJhdGVRdWFsKCZxdWVyeWJ1ZiwgcXVhbHNlcCwKKwkJCQkJCQlwYXJhbW5hbWUsIHBrX3R5 cGUsCisJCQkJCQkJcmlpbmZvLT5wZl9lcV9vcHJzW2ldLAorCQkJCQkJCWF0dG5hbWUsIGZr X3R5cGUpOworCQkJaWYgKHBrX2NvbGwgIT0gZmtfY29sbCAmJiAhZ2V0X2NvbGxhdGlvbl9p c2RldGVybWluaXN0aWMocGtfY29sbCkpCisJCQkJcmlfR2VuZXJhdGVRdWFsQ29sbGF0aW9u KCZxdWVyeWJ1ZiwgcGtfY29sbCk7CisJCQlxdWFsc2VwID0gIkFORCI7CisJCQlxdWVyeW9p ZHNbaV0gPSBwa190eXBlOworCQl9CisKKwkJLyogU2V0IGEgcGFyYW0gZm9yIEZPUiBQT1JU SU9OIE9GIFRPL0ZST00gKi8KKwkJcXVlcnlvaWRzW3JpaW5mby0+bmtleXNdID0gUklBdHRU eXBlKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW3JpaW5mby0+bmtleXMgLSAxXSk7CisK KwkJLyogUHJlcGFyZSBhbmQgc2F2ZSB0aGUgcGxhbiAqLworCQlxcGxhbiA9IHJpX1BsYW5D aGVjayhxdWVyeWJ1Zi5kYXRhLCByaWluZm8tPm5rZXlzICsgMSwgcXVlcnlvaWRzLAorCQkJ CQkJCSAmcWtleSwgZmtfcmVsLCBwa19yZWwpOworCX0KKworCS8qCisJICogV2UgaGF2ZSBh IHBsYW4gbm93LiBSdW4gaXQgdG8gdXBkYXRlIHRoZSBleGlzdGluZyByZWZlcmVuY2VzLgor CSAqLworCXJpX1BlcmZvcm1DaGVjayhyaWluZm8sICZxa2V5LCBxcGxhbiwKKwkJCQkJZmtf cmVsLCBwa19yZWwsCisJCQkJCW9sZHNsb3QsIE5VTEwsCisJCQkJCXJpaW5mby0+bmtleXMs IHRhcmdldFJhbmdlLAorCQkJCQl0cnVlLAkJLyogbXVzdCBkZXRlY3QgbmV3IHJvd3MgKi8K KwkJCQkJU1BJX09LX1VQREFURSk7CisKKwlpZiAoU1BJX2ZpbmlzaCgpICE9IFNQSV9PS19G SU5JU0gpCisJCWVsb2coRVJST1IsICJTUElfZmluaXNoIGZhaWxlZCIpOworCisJdGFibGVf Y2xvc2UoZmtfcmVsLCBSb3dFeGNsdXNpdmVMb2NrKTsKKworCWlmIChpc19zZXRfbnVsbCkK KwkJcmV0dXJuIFBvaW50ZXJHZXREYXR1bShOVUxMKTsKKwllbHNlCisJeworCQkvKgorCQkg KiBJZiB3ZSBqdXN0IGRlbGV0ZWQgb3IgdXBkYXRlZCB0aGUgUEsgcm93IHdob3NlIGtleSB3 YXMgZXF1YWwgdG8gdGhlCisJCSAqIEZLIGNvbHVtbnMnIGRlZmF1bHQgdmFsdWVzLCBhbmQg YSByZWZlcmVuY2luZyByb3cgZXhpc3RzIGluIHRoZSBGSworCQkgKiB0YWJsZSwgd2Ugd291 bGQgaGF2ZSB1cGRhdGVkIHRoYXQgcm93IHRvIHRoZSBzYW1lIHZhbHVlcyBpdCBhbHJlYWR5 CisJCSAqIGhhZCAtLS0gYW5kIFJJX0ZLZXlfZmtfdXBkX2NoZWNrX3JlcXVpcmVkIHdvdWxk IGhlbmNlIGJlbGlldmUgbm8KKwkJICogY2hlY2sgaXMgbmVjZXNzYXJ5LiAgU28gd2UgbmVl ZCB0byBkbyBhbm90aGVyIGxvb2t1cCBub3cgYW5kIGluCisJCSAqIGNhc2UgYSByZWZlcmVu Y2Ugc3RpbGwgZXhpc3RzLCBhYm9ydCB0aGUgb3BlcmF0aW9uLiAgVGhhdCBpcworCQkgKiBh bHJlYWR5IGltcGxlbWVudGVkIGluIHRoZSBOTyBBQ1RJT04gdHJpZ2dlciwgc28ganVzdCBy dW4gaXQuIChUaGlzCisJCSAqIHJlY2hlY2sgaXMgb25seSBuZWVkZWQgaW4gdGhlIFNFVCBE RUZBVUxUIGNhc2UsIHNpbmNlIENBU0NBREUgd291bGQKKwkJICogcmVtb3ZlIHN1Y2ggcm93 cyBpbiBjYXNlIG9mIGEgREVMRVRFIG9wZXJhdGlvbiBvciB3b3VsZCBjaGFuZ2UgdGhlCisJ CSAqIEZLIGtleSB2YWx1ZXMgaW4gY2FzZSBvZiBhbiBVUERBVEUsIHdoaWxlIFNFVCBOVUxM IGlzIGNlcnRhaW4gdG8KKwkJICogcmVzdWx0IGluIHJvd3MgdGhhdCBzYXRpc2Z5IHRoZSBG SyBjb25zdHJhaW50LikKKwkJICovCisJCXJldHVybiByaV9yZXN0cmljdCh0cmlnZGF0YSwg dHJ1ZSk7CisJfQorfQorCiAvKgogICogUklfRktleV9wa191cGRfY2hlY2tfcmVxdWlyZWQg LQogICoKQEAgLTI0MjYsNyArMjk2NCw4IEBAIHJpX0xvYWRDb25zdHJhaW50SW5mbyhPaWQg Y29uc3RyYWludE9pZCkKIAkJRmluZEZLUGVyaW9kT3BlcnNBbmRQcm9jcyhvcGNsYXNzLAog CQkJCQkJCQkgICZyaWluZm8tPnBlcmlvZF9jb250YWluZWRfYnlfb3BlciwKIAkJCQkJCQkJ ICAmcmlpbmZvLT5hZ2dlZF9wZXJpb2RfY29udGFpbmVkX2J5X29wZXIsCi0JCQkJCQkJCSAg JnJpaW5mby0+cGVyaW9kX3JlZmVyZW5jZWRfYWdnX3Byb2MpOworCQkJCQkJCQkgICZyaWlu Zm8tPnBlcmlvZF9yZWZlcmVuY2VkX2FnZ19wcm9jLAorCQkJCQkJCQkgICZyaWluZm8tPnBl cmlvZF9pbnRlcnNlY3RfcHJvYyk7CiAJCXJpaW5mby0+cGVyaW9kX3JlZmVyZW5jZWRfYWdn X3JldHR5cGUgPSBnZXRfZnVuY19yZXR0eXBlKHJpaW5mby0+cGVyaW9kX3JlZmVyZW5jZWRf YWdnX3Byb2MpOwogCX0KIApAQCAtMjU4Miw4ICszMTIxLDggQEAgcmlfUGVyZm9ybUNoZWNr KGNvbnN0IFJJX0NvbnN0cmFpbnRJbmZvICpyaWluZm8sCiAJaW50CQkJc3BpX3Jlc3VsdDsK IAlPaWQJCQlzYXZlX3VzZXJpZDsKIAlpbnQJCQlzYXZlX3NlY19jb250ZXh0OwotCURhdHVt CQl2YWxzW1JJX01BWF9OVU1LRVlTICogMl07Ci0JY2hhcgkJbnVsbHNbUklfTUFYX05VTUtF WVMgKiAyXTsKKwlEYXR1bQkJdmFsc1tSSV9NQVhfTlVNS0VZUyAqIDIgKyAxXTsKKwljaGFy CQludWxsc1tSSV9NQVhfTlVNS0VZUyAqIDIgKyAxXTsKIAogCS8qCiAJICogVXNlIHRoZSBx dWVyeSB0eXBlIGNvZGUgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhlIHF1ZXJ5IGlzIHJ1biBh Z2FpbnN0CkBAIC0yNjE4LDggKzMxNTcsMTAgQEAgcmlfUGVyZm9ybUNoZWNrKGNvbnN0IFJJ X0NvbnN0cmFpbnRJbmZvICpyaWluZm8sCiAJCXJpX0V4dHJhY3RWYWx1ZXMoc291cmNlX3Jl bCwgbmV3c2xvdCwgcmlpbmZvLCBzb3VyY2VfaXNfcGssCiAJCQkJCQkgdmFscywgbnVsbHMp OwogCQlpZiAob2xkc2xvdCkKKwkJewogCQkJcmlfRXh0cmFjdFZhbHVlcyhzb3VyY2VfcmVs LCBvbGRzbG90LCByaWluZm8sIHNvdXJjZV9pc19waywKIAkJCQkJCQkgdmFscyArIHJpaW5m by0+bmtleXMsIG51bGxzICsgcmlpbmZvLT5ua2V5cyk7CisJCX0KIAl9CiAJZWxzZQogCXsK QEAgLTMyODgsOCArMzgyOSwxNCBAQCBSSV9GS2V5X3RyaWdnZXJfdHlwZShPaWQgdGdmb2lk KQogCQljYXNlIEZfUklfRktFWV9TRVRERUZBVUxUX1VQRDoKIAkJY2FzZSBGX1JJX0ZLRVlf Tk9BQ1RJT05fREVMOgogCQljYXNlIEZfUklfRktFWV9OT0FDVElPTl9VUEQ6CisJCWNhc2Ug Rl9SSV9GS0VZX1BFUklPRF9DQVNDQURFX0RFTDoKKwkJY2FzZSBGX1JJX0ZLRVlfUEVSSU9E X0NBU0NBREVfVVBEOgogCQljYXNlIEZfUklfRktFWV9QRVJJT0RfUkVTVFJJQ1RfREVMOgog CQljYXNlIEZfUklfRktFWV9QRVJJT0RfUkVTVFJJQ1RfVVBEOgorCQljYXNlIEZfUklfRktF WV9QRVJJT0RfU0VUTlVMTF9ERUw6CisJCWNhc2UgRl9SSV9GS0VZX1BFUklPRF9TRVROVUxM X1VQRDoKKwkJY2FzZSBGX1JJX0ZLRVlfUEVSSU9EX1NFVERFRkFVTFRfREVMOgorCQljYXNl IEZfUklfRktFWV9QRVJJT0RfU0VUREVGQVVMVF9VUEQ6CiAJCWNhc2UgRl9SSV9GS0VZX1BF UklPRF9OT0FDVElPTl9ERUw6CiAJCWNhc2UgRl9SSV9GS0VZX1BFUklPRF9OT0FDVElPTl9V UEQ6CiAJCQlyZXR1cm4gUklfVFJJR0dFUl9QSzsKQEAgLTMzNjAsNyArMzkwNyw3IEBAIGZw b190YXJnZXRzX3BrX3JhbmdlKGNvbnN0IEZvclBvcnRpb25PZlN0YXRlICp0Z190ZW1wb3Jh bCwgY29uc3QgUklfQ29uc3RyYWludEluCiAvKgogICogcmVzdHJpY3RfY2FzY2FkaW5nX3Jh bmdlIC0KICAqCi0gKiBSZXR1cm5zIGEgRGF0dW0gb2YgUmFuZ2VUeXBlUCBob2xkaW5nIHRo ZSBhcHByb3ByaWF0ZSB0aW1lc3BhbgorICogUmV0dXJucyBhIERhdHVtIGhvbGRpbmcgdGhl IGFwcHJvcHJpYXRlIHRpbWVzcGFuCiAgKiB0byB0YXJnZXQgY2hpbGQgcmVjb3JkcyB3aGVu IHdlIENBU0NBREUvU0VUIE5VTEwvU0VUIERFRkFVTFQuCiAgKgogICogSW4gYSBub3JtYWwg VVBEQVRFL0RFTEVURSB0aGlzIHNob3VsZCBiZSB0aGUgcGFyZW50J3Mgb3duIHZhbGlkIHRp bWUsCkBAIC0zMzY4LDIyICszOTE1LDIyIEBAIGZwb190YXJnZXRzX3BrX3JhbmdlKGNvbnN0 IEZvclBvcnRpb25PZlN0YXRlICp0Z190ZW1wb3JhbCwgY29uc3QgUklfQ29uc3RyYWludElu CiAgKiB0cmltIGRvd24gdGhlIHBhcmVudCdzIHNwYW4gZnVydGhlci4KICAqLwogc3RhdGlj IERhdHVtCi1yZXN0cmljdF9jYXNjYWRpbmdfcmFuZ2UoY29uc3QgRm9yUG9ydGlvbk9mU3Rh dGUgKnRnX3RlbXBvcmFsLCBjb25zdCBSSV9Db25zdHJhaW50SW5mbyAqcmlpbmZvLCBUdXBs ZVRhYmxlU2xvdCAqb2xkc2xvdCkKK3Jlc3RyaWN0X2Nhc2NhZGluZ19yYW5nZShSZWxhdGlv biByZWwsIGNvbnN0IEZvclBvcnRpb25PZlN0YXRlICp0Z190ZW1wb3JhbCwgY29uc3QgUklf Q29uc3RyYWludEluZm8gKnJpaW5mbywgVHVwbGVUYWJsZVNsb3QgKm9sZHNsb3QpCiB7CiAJ RGF0dW0JcGtSZWNvcmRSYW5nZTsKIAlib29sCWlzbnVsbDsKKwlpbnQJCWF0dG5vID0gcmlp bmZvLT5wa19hdHRudW1zW3JpaW5mby0+bmtleXMgLSAxXTsKIAotCXBrUmVjb3JkUmFuZ2Ug PSBzbG90X2dldGF0dHIob2xkc2xvdCwgcmlpbmZvLT5wa19hdHRudW1zW3JpaW5mby0+bmtl eXMgLSAxXSwgJmlzbnVsbCk7CisJcGtSZWNvcmRSYW5nZSA9IHNsb3RfZ2V0YXR0cihvbGRz bG90LCBhdHRubywgJmlzbnVsbCk7CiAJaWYgKGlzbnVsbCkKIAkJZWxvZyhFUlJPUiwgImFw cGxpY2F0aW9uIHRpbWUgc2hvdWxkIG5vdCBiZSBudWxsIik7CiAKIAlpZiAoZnBvX3Rhcmdl dHNfcGtfcmFuZ2UodGdfdGVtcG9yYWwsIHJpaW5mbykpCiAJewotCQlSYW5nZVR5cGUgKnIx ID0gRGF0dW1HZXRSYW5nZVR5cGVQKHBrUmVjb3JkUmFuZ2UpOwotCQlSYW5nZVR5cGUgKnIy ID0gRGF0dW1HZXRSYW5nZVR5cGVQKHRnX3RlbXBvcmFsLT5mcF90YXJnZXRSYW5nZSk7Ci0J CU9pZCBybmd0eXBpZCA9IFJhbmdlVHlwZUdldE9pZChyMSk7Ci0JCVR5cGVDYWNoZUVudHJ5 ICp0eXBjYWNoZSA9IGxvb2t1cF90eXBlX2NhY2hlKHJuZ3R5cGlkLCBUWVBFQ0FDSEVfUkFO R0VfSU5GTyk7Ci0JCXJldHVybiBSYW5nZVR5cGVQR2V0RGF0dW0ocmFuZ2VfaW50ZXJzZWN0 X2ludGVybmFsKHR5cGNhY2hlLCByMSwgcjIpKTsKKwkJaWYgKCFPaWRJc1ZhbGlkKHJpaW5m by0+cGVyaW9kX2ludGVyc2VjdF9wcm9jKSkKKwkJCWVsb2coRVJST1IsICJpbnZhbGlkIGlu dGVyc2VjdCBzdXBwb3J0IGZ1bmN0aW9uIik7CisKKwkJcmV0dXJuIE9pZEZ1bmN0aW9uQ2Fs bDIocmlpbmZvLT5wZXJpb2RfaW50ZXJzZWN0X3Byb2MsIHBrUmVjb3JkUmFuZ2UsIHRnX3Rl bXBvcmFsLT5mcF90YXJnZXRSYW5nZSk7CiAJfQogCWVsc2UKIAkJcmV0dXJuIHBrUmVjb3Jk UmFuZ2U7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2NvbnN0cmFpbnQu aCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfY29uc3RyYWludC5oCmluZGV4IGU0ZjRjMmZm YWYxLi41MzhlOGU2NDQ2NiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19j b25zdHJhaW50LmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19jb25zdHJhaW50LmgK QEAgLTI4NCw5ICsyODQsMTAgQEAgZXh0ZXJuIHZvaWQgRGVjb25zdHJ1Y3RGa0NvbnN0cmFp bnRSb3coSGVhcFR1cGxlIHR1cGxlLCBpbnQgKm51bWZrcywKIAkJCQkJCQkJCSAgIE9pZCAq cGZfZXFfb3BycywgT2lkICpwcF9lcV9vcHJzLCBPaWQgKmZmX2VxX29wcnMsCiAJCQkJCQkJ CQkgICBpbnQgKm51bV9ma19kZWxfc2V0X2NvbHMsIEF0dHJOdW1iZXIgKmZrX2RlbF9zZXRf Y29scyk7CiBleHRlcm4gdm9pZCBGaW5kRktQZXJpb2RPcGVyc0FuZFByb2NzKE9pZCBvcGNs YXNzLAotCQkJCQkJCQkJICBPaWQgKnBlcmlvZG9wZXJvaWQsCi0JCQkJCQkJCQkgIE9pZCAq YWdnZWRwZXJpb2RvcGVyb2lkLAotCQkJCQkJCQkJICBPaWQgKnBlcmlvZHByb2NvaWQpOwor CQkJCQkJCQkJICBPaWQgKmNvbnRhaW5lZGJ5b2RvcGVyb2lkLAorCQkJCQkJCQkJICBPaWQg KmFnZ2VkY29udGFpbmVkYnlvcGVyb2lkLAorCQkJCQkJCQkJICBPaWQgKmFnZ3Byb2NvaWQs CisJCQkJCQkJCQkgIE9pZCAqaW50ZXJzZWN0cHJvY29pZCk7CiAKIGV4dGVybiBib29sIGNo ZWNrX2Z1bmN0aW9uYWxfZ3JvdXBpbmcoT2lkIHJlbGlkLAogCQkJCQkJCQkJICBJbmRleCB2 YXJubywgSW5kZXggdmFybGV2ZWxzdXAsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRh bG9nL3BnX3Byb2MuZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAppbmRl eCA3ZmUyNTQyZjA1OC4uZmUwMWYyMTMzNDkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2Nh dGFsb2cvcGdfcHJvYy5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRh dApAQCAtMzk1Miw2ICszOTUyLDEyIEBACiB7IG9pZCA9PiAnNjEyMycsIGRlc2NyID0+ICd0 ZW1wb3JhbCByZWZlcmVudGlhbCBpbnRlZ3JpdHkgRk9SRUlHTiBLRVkgLi4uIFJFRkVSRU5D RVMnLAogICBwcm9uYW1lID0+ICdSSV9GS2V5X3BlcmlvZF9jaGVja191cGQnLCBwcm92b2xh dGlsZSA9PiAndicsIHByb3JldHR5cGUgPT4gJ3RyaWdnZXInLAogICBwcm9hcmd0eXBlcyA9 PiAnJywgcHJvc3JjID0+ICdSSV9GS2V5X3BlcmlvZF9jaGVja191cGQnIH0sCit7IG9pZCA9 PiAnNjEyNCcsIGRlc2NyID0+ICd0ZW1wb3JhbCByZWZlcmVudGlhbCBpbnRlZ3JpdHkgT04g REVMRVRFIENBU0NBREUnLAorICBwcm9uYW1lID0+ICdSSV9GS2V5X3BlcmlvZF9jYXNjYWRl X2RlbCcsIHByb3ZvbGF0aWxlID0+ICd2JywgcHJvcmV0dHlwZSA9PiAndHJpZ2dlcicsCisg IHByb2FyZ3R5cGVzID0+ICcnLCBwcm9zcmMgPT4gJ1JJX0ZLZXlfcGVyaW9kX2Nhc2NhZGVf ZGVsJyB9LAoreyBvaWQgPT4gJzYxMjUnLCBkZXNjciA9PiAndGVtcG9yYWwgcmVmZXJlbnRp YWwgaW50ZWdyaXR5IE9OIFVQREFURSBDQVNDQURFJywKKyAgcHJvbmFtZSA9PiAnUklfRktl eV9wZXJpb2RfY2FzY2FkZV91cGQnLCBwcm92b2xhdGlsZSA9PiAndicsIHByb3JldHR5cGUg PT4gJ3RyaWdnZXInLAorICBwcm9hcmd0eXBlcyA9PiAnJywgcHJvc3JjID0+ICdSSV9GS2V5 X3BlcmlvZF9jYXNjYWRlX3VwZCcgfSwKIHsgb2lkID0+ICc2MTI2JywgZGVzY3IgPT4gJ3Rl bXBvcmFsIHJlZmVyZW50aWFsIGludGVncml0eSBPTiBERUxFVEUgUkVTVFJJQ1QnLAogICBw cm9uYW1lID0+ICdSSV9GS2V5X3BlcmlvZF9yZXN0cmljdF9kZWwnLCBwcm92b2xhdGlsZSA9 PiAndicsCiAgIHByb3JldHR5cGUgPT4gJ3RyaWdnZXInLCBwcm9hcmd0eXBlcyA9PiAnJywK QEAgLTM5NjAsNiArMzk2NiwyMCBAQAogICBwcm9uYW1lID0+ICdSSV9GS2V5X3BlcmlvZF9y ZXN0cmljdF91cGQnLCBwcm92b2xhdGlsZSA9PiAndicsCiAgIHByb3JldHR5cGUgPT4gJ3Ry aWdnZXInLCBwcm9hcmd0eXBlcyA9PiAnJywKICAgcHJvc3JjID0+ICdSSV9GS2V5X3Blcmlv ZF9yZXN0cmljdF91cGQnIH0sCit7IG9pZCA9PiAnNjEyOCcsIGRlc2NyID0+ICd0ZW1wb3Jh bCByZWZlcmVudGlhbCBpbnRlZ3JpdHkgT04gREVMRVRFIFNFVCBOVUxMJywKKyAgcHJvbmFt ZSA9PiAnUklfRktleV9wZXJpb2Rfc2V0bnVsbF9kZWwnLCBwcm92b2xhdGlsZSA9PiAndics IHByb3JldHR5cGUgPT4gJ3RyaWdnZXInLAorICBwcm9hcmd0eXBlcyA9PiAnJywgcHJvc3Jj ID0+ICdSSV9GS2V5X3BlcmlvZF9zZXRudWxsX2RlbCcgfSwKK3sgb2lkID0+ICc2MTI5Jywg ZGVzY3IgPT4gJ3RlbXBvcmFsIHJlZmVyZW50aWFsIGludGVncml0eSBPTiBVUERBVEUgU0VU IE5VTEwnLAorICBwcm9uYW1lID0+ICdSSV9GS2V5X3BlcmlvZF9zZXRudWxsX3VwZCcsIHBy b3ZvbGF0aWxlID0+ICd2JywgcHJvcmV0dHlwZSA9PiAndHJpZ2dlcicsCisgIHByb2FyZ3R5 cGVzID0+ICcnLCBwcm9zcmMgPT4gJ1JJX0ZLZXlfcGVyaW9kX3NldG51bGxfdXBkJyB9LAor eyBvaWQgPT4gJzYxMzAnLCBkZXNjciA9PiAndGVtcG9yYWwgcmVmZXJlbnRpYWwgaW50ZWdy aXR5IE9OIERFTEVURSBTRVQgREVGQVVMVCcsCisgIHByb25hbWUgPT4gJ1JJX0ZLZXlfcGVy aW9kX3NldGRlZmF1bHRfZGVsJywgcHJvdm9sYXRpbGUgPT4gJ3YnLAorICBwcm9yZXR0eXBl ID0+ICd0cmlnZ2VyJywgcHJvYXJndHlwZXMgPT4gJycsCisgIHByb3NyYyA9PiAnUklfRktl eV9wZXJpb2Rfc2V0ZGVmYXVsdF9kZWwnIH0sCit7IG9pZCA9PiAnNjEzMScsIGRlc2NyID0+ ICd0ZW1wb3JhbCByZWZlcmVudGlhbCBpbnRlZ3JpdHkgT04gVVBEQVRFIFNFVCBERUZBVUxU JywKKyAgcHJvbmFtZSA9PiAnUklfRktleV9wZXJpb2Rfc2V0ZGVmYXVsdF91cGQnLCBwcm92 b2xhdGlsZSA9PiAndicsCisgIHByb3JldHR5cGUgPT4gJ3RyaWdnZXInLCBwcm9hcmd0eXBl cyA9PiAnJywKKyAgcHJvc3JjID0+ICdSSV9GS2V5X3BlcmlvZF9zZXRkZWZhdWx0X3VwZCcg fSwKIHsgb2lkID0+ICc2MTMyJywgZGVzY3IgPT4gJ3RlbXBvcmFsIHJlZmVyZW50aWFsIGlu dGVncml0eSBPTiBERUxFVEUgTk8gQUNUSU9OJywKICAgcHJvbmFtZSA9PiAnUklfRktleV9w ZXJpb2Rfbm9hY3Rpb25fZGVsJywgcHJvdm9sYXRpbGUgPT4gJ3YnLAogICBwcm9yZXR0eXBl ID0+ICd0cmlnZ2VyJywgcHJvYXJndHlwZXMgPT4gJycsCmRpZmYgLS1naXQgYS9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL2J0cmVlX2luZGV4Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvYnRyZWVfaW5kZXgub3V0CmluZGV4IGYzNTk1ZDRlYTNiLi4xMTAwMmU5MTcw OSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9idHJlZV9pbmRleC5v dXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9idHJlZV9pbmRleC5vdXQKQEAg LTIwNiwxNiArMjA2LDE5IEBAIHNlbGVjdCBwcm9uYW1lIGZyb20gcGdfcHJvYyB3aGVyZSBw cm9uYW1lIGxpa2UgRSdSSVxcX0ZLZXklZGVsJyBvcmRlciBieSAxOwogKDMgcm93cykKIAog c2VsZWN0IHByb25hbWUgZnJvbSBwZ19wcm9jIHdoZXJlIHByb25hbWUgbGlrZSBFJ1JJXFxf RktleSVkZWwnIG9yZGVyIGJ5IDE7Ci0gICAgICAgICAgIHByb25hbWUgICAgICAgICAgIAot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgIHByb25hbWUgICAg ICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBSSV9GS2V5X2Nh c2NhZGVfZGVsCiAgUklfRktleV9ub2FjdGlvbl9kZWwKKyBSSV9GS2V5X3BlcmlvZF9jYXNj YWRlX2RlbAogIFJJX0ZLZXlfcGVyaW9kX25vYWN0aW9uX2RlbAogIFJJX0ZLZXlfcGVyaW9k X3Jlc3RyaWN0X2RlbAorIFJJX0ZLZXlfcGVyaW9kX3NldGRlZmF1bHRfZGVsCisgUklfRktl eV9wZXJpb2Rfc2V0bnVsbF9kZWwKICBSSV9GS2V5X3Jlc3RyaWN0X2RlbAogIFJJX0ZLZXlf c2V0ZGVmYXVsdF9kZWwKICBSSV9GS2V5X3NldG51bGxfZGVsCi0oNyByb3dzKQorKDEwIHJv d3MpCiAKIGV4cGxhaW4gKGNvc3RzIG9mZikKIHNlbGVjdCBwcm9uYW1lIGZyb20gcGdfcHJv YyB3aGVyZSBwcm9uYW1lIGlsaWtlICcwMCVmb28nIG9yZGVyIGJ5IDE7CkBAIC0yNTQsMTYg KzI1NywxOSBAQCBzZWxlY3QgcHJvbmFtZSBmcm9tIHBnX3Byb2Mgd2hlcmUgcHJvbmFtZSBs aWtlIEUnUklcXF9GS2V5JWRlbCcgb3JkZXIgYnkgMTsKICg2IHJvd3MpCiAKIHNlbGVjdCBw cm9uYW1lIGZyb20gcGdfcHJvYyB3aGVyZSBwcm9uYW1lIGxpa2UgRSdSSVxcX0ZLZXklZGVs JyBvcmRlciBieSAxOwotICAgICAgICAgICBwcm9uYW1lICAgICAgICAgICAKLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICBwcm9uYW1lICAgICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgUklfRktleV9jYXNjYWRlX2Rl bAogIFJJX0ZLZXlfbm9hY3Rpb25fZGVsCisgUklfRktleV9wZXJpb2RfY2FzY2FkZV9kZWwK ICBSSV9GS2V5X3BlcmlvZF9ub2FjdGlvbl9kZWwKICBSSV9GS2V5X3BlcmlvZF9yZXN0cmlj dF9kZWwKKyBSSV9GS2V5X3BlcmlvZF9zZXRkZWZhdWx0X2RlbAorIFJJX0ZLZXlfcGVyaW9k X3NldG51bGxfZGVsCiAgUklfRktleV9yZXN0cmljdF9kZWwKICBSSV9GS2V5X3NldGRlZmF1 bHRfZGVsCiAgUklfRktleV9zZXRudWxsX2RlbAotKDcgcm93cykKKygxMCByb3dzKQogCiBl eHBsYWluIChjb3N0cyBvZmYpCiBzZWxlY3QgcHJvbmFtZSBmcm9tIHBnX3Byb2Mgd2hlcmUg cHJvbmFtZSBpbGlrZSAnMDAlZm9vJyBvcmRlciBieSAxOwpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC93aXRob3V0X292ZXJsYXBzLm91dCBiL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvd2l0aG91dF9vdmVybGFwcy5vdXQKaW5kZXggMGM4MjI0YTM1ZjUu LjE1ZjM1ZGZlOTUyIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3dp dGhvdXRfb3ZlcmxhcHMub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvd2l0 aG91dF9vdmVybGFwcy5vdXQKQEAgLTg3Miw2ICs4NzIsMjEgQEAgU0VUIGlkID0gJ1s3LDdd JwogV0hFUkUgaWQgPSAnWzUsNV0nOwogRVJST1I6ICB1cGRhdGUgb3IgZGVsZXRlIG9uIHRh YmxlICJ0ZW1wb3JhbF9ybmciIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRl bXBvcmFsX2ZrX3JuZzJybmdfZmsiIG9uIHRhYmxlICJ0ZW1wb3JhbF9ma19ybmcycm5nIgog REVUQUlMOiAgS2V5IChpZCwgdmFsaWRfYXQpPShbNSw2KSwgWyJXZWQgSmFuIDAzIDAwOjAw OjAwIDIwMTgiLCJUaHUgRmViIDAxIDAwOjAwOjAwIDIwMTgiKSkgaXMgc3RpbGwgcmVmZXJl bmNlZCBmcm9tIHRhYmxlICJ0ZW1wb3JhbF9ma19ybmcycm5nIi4KK1NFTEVDVCAqIEZST00g dGVtcG9yYWxfcm5nIFdIRVJFIGlkIGluICgnWzUsNV0nLCAnWzcsN10nKSBPUkRFUiBCWSBp ZCwgdmFsaWRfYXQ7CisgIGlkICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0 ICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBbNSw2KSB8IFsiTW9u IEZlYiAwMSAwMDowMDowMCAyMDE2IiwiVHVlIE1hciAwMSAwMDowMDowMCAyMDE2IikKKyBb NSw2KSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVHVlIEphbiAwMiAwMDowMDow MCAyMDE4IikKKyBbNSw2KSB8IFsiV2VkIEphbiAwMyAwMDowMDowMCAyMDE4IiwiVGh1IEZl YiAwMSAwMDowMDowMCAyMDE4IikKKyBbNyw4KSB8IFsiVHVlIEphbiAwMiAwMDowMDowMCAy MDE4IiwiV2VkIEphbiAwMyAwMDowMDowMCAyMDE4IikKKyg0IHJvd3MpCisKK1NFTEVDVCAq IEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCBpbiAoJ1szLDNdJykgT1JERVIg QlkgaWQsIHZhbGlkX2F0OworICBpZCAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxp ZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9pZCAKKy0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tCisgWzMsNCkgfCBbIkZyaSBKYW4gMDUgMDA6MDA6MDAgMjAxOCIsIldl ZCBKYW4gMTAgMDA6MDA6MDAgMjAxOCIpIHwgWzUsNikKKygxIHJvdykKKwogLS0gdGhlbiBk ZWxldGUgdGhlIG9iamVjdGluZyBGSyByZWNvcmQgYW5kIHRoZSBzYW1lIFBLIHVwZGF0ZSBz dWNjZWVkczoKIERFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAn WzMsM10nOwogVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcy MDE2LTAxLTAxJywgJzIwMTYtMDItMDEnKQpAQCAtOTIyLDYgKzkzNywyMSBAQCBTRVQgaWQg PSAnWzcsN10nCiBXSEVSRSBpZCA9ICdbNSw1XSc7CiBFUlJPUjogIHVwZGF0ZSBvciBkZWxl dGUgb24gdGFibGUgInRlbXBvcmFsX3JuZyIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3Ry YWludCAidGVtcG9yYWxfZmtfcm5nMnJuZ19mayIgb24gdGFibGUgInRlbXBvcmFsX2ZrX3Ju ZzJybmciCiBERVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9hdCk9KFs1LDYpLCBbIldlZCBKYW4g MDMgMDA6MDA6MDAgMjAxOCIsIlRodSBGZWIgMDEgMDA6MDA6MDAgMjAxOCIpKSBpcyBzdGls bCByZWZlcmVuY2VkIGZyb20gdGFibGUgInRlbXBvcmFsX2ZrX3JuZzJybmciLgorU0VMRUNU ICogRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgaW4gKCdbNSw1XScsICdbNyw3XScpIE9S REVSIEJZIGlkLCB2YWxpZF9hdDsKKyAgaWQgICB8ICAgICAgICAgICAgICAgICAgICAgICAg dmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFs1LDYp IHwgWyJNb24gRmViIDAxIDAwOjAwOjAwIDIwMTYiLCJUdWUgTWFyIDAxIDAwOjAwOjAwIDIw MTYiKQorIFs1LDYpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUdWUgSmFuIDAy IDAwOjAwOjAwIDIwMTgiKQorIFs1LDYpIHwgWyJXZWQgSmFuIDAzIDAwOjAwOjAwIDIwMTgi LCJUaHUgRmViIDAxIDAwOjAwOjAwIDIwMTgiKQorIFs3LDgpIHwgWyJUdWUgSmFuIDAyIDAw OjAwOjAwIDIwMTgiLCJXZWQgSmFuIDAzIDAwOjAwOjAwIDIwMTgiKQorKDQgcm93cykKKwor U0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkIGluICgnWzMsM10n KSBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CisgIGlkICAgfCAgICAgICAgICAgICAgICAgICAg ICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFyZW50X2lkIAorLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbMyw0KSB8IFsiRnJpIEphbiAwNSAwMDowMDowMCAy MDE4IiwiV2VkIEphbiAxMCAwMDowMDowMCAyMDE4IikgfCBbNSw2KQorKDEgcm93KQorCiAt LSB0aGVuIGRlbGV0ZSB0aGUgb2JqZWN0aW5nIEZLIHJlY29yZCBhbmQgdGhlIHNhbWUgUEsg dXBkYXRlIHN1Y2NlZWRzOgogREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVS RSBpZCA9ICdbMywzXSc7CiBVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCB2YWxpZF9hdCA9IHRz cmFuZ2UoJzIwMTYtMDEtMDEnLCAnMjAxNi0wMi0wMScpCkBAIC05NjEsNiArOTkxLDE5IEBA IEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDEtMDUnIFRPICcyMDE4LTAx LTEwJwogV0hFUkUgaWQgPSAnWzUsNV0nOwogRVJST1I6ICB1cGRhdGUgb3IgZGVsZXRlIG9u IHRhYmxlICJ0ZW1wb3JhbF9ybmciIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQg InRlbXBvcmFsX2ZrX3JuZzJybmdfZmsiIG9uIHRhYmxlICJ0ZW1wb3JhbF9ma19ybmcycm5n IgogREVUQUlMOiAgS2V5IChpZCwgdmFsaWRfYXQpPShbNSw2KSwgWyJXZWQgSmFuIDAzIDAw OjAwOjAwIDIwMTgiLCJUaHUgRmViIDAxIDAwOjAwOjAwIDIwMTgiKSkgaXMgc3RpbGwgcmVm ZXJlbmNlZCBmcm9tIHRhYmxlICJ0ZW1wb3JhbF9ma19ybmcycm5nIi4KK1NFTEVDVCAqIEZS T00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkIGluICgnWzUsNV0nLCAnWzcsN10nKSBPUkRFUiBC WSBpZCwgdmFsaWRfYXQ7CisgIGlkICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlk X2F0ICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBbNSw2KSB8IFsi TW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVHVlIEphbiAwMiAwMDowMDowMCAyMDE4IikK KyBbNSw2KSB8IFsiV2VkIEphbiAwMyAwMDowMDowMCAyMDE4IiwiVGh1IEZlYiAwMSAwMDow MDowMCAyMDE4IikKKygyIHJvd3MpCisKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcm5n MnJuZyBXSEVSRSBpZCBpbiAoJ1szLDNdJykgT1JERVIgQlkgaWQsIHZhbGlkX2F0OworICBp ZCAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAg ICAgICAgICB8IHBhcmVudF9pZCAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzMsNCkg fCBbIkZyaSBKYW4gMDUgMDA6MDA6MDAgMjAxOCIsIldlZCBKYW4gMTAgMDA6MDA6MDAgMjAx OCIpIHwgWzUsNikKKygxIHJvdykKKwogLS0gdGhlbiBkZWxldGUgdGhlIG9iamVjdGluZyBG SyByZWNvcmQgYW5kIHRoZSBzYW1lIFBLIGRlbGV0ZSBzdWNjZWVkczoKIERFTEVURSBGUk9N IHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzMsM10nOwogREVMRVRFIEZST00g dGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3Jhbmdl KCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKQEAgLTk5OSw2ICsxMDQyLDE5IEBAIEZP UiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDEtMDUnIFRPICcyMDE4LTAxLTEw JwogV0hFUkUgaWQgPSAnWzUsNV0nOwogRVJST1I6ICB1cGRhdGUgb3IgZGVsZXRlIG9uIHRh YmxlICJ0ZW1wb3JhbF9ybmciIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRl bXBvcmFsX2ZrX3JuZzJybmdfZmsiIG9uIHRhYmxlICJ0ZW1wb3JhbF9ma19ybmcycm5nIgog REVUQUlMOiAgS2V5IChpZCwgdmFsaWRfYXQpPShbNSw2KSwgWyJXZWQgSmFuIDAzIDAwOjAw OjAwIDIwMTgiLCJUaHUgRmViIDAxIDAwOjAwOjAwIDIwMTgiKSkgaXMgc3RpbGwgcmVmZXJl bmNlZCBmcm9tIHRhYmxlICJ0ZW1wb3JhbF9ma19ybmcycm5nIi4KK1NFTEVDVCAqIEZST00g dGVtcG9yYWxfcm5nIFdIRVJFIGlkIGluICgnWzUsNV0nLCAnWzcsN10nKSBPUkRFUiBCWSBp ZCwgdmFsaWRfYXQ7CisgIGlkICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0 ICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBbNSw2KSB8IFsiTW9u IEphbiAwMSAwMDowMDowMCAyMDE4IiwiVHVlIEphbiAwMiAwMDowMDowMCAyMDE4IikKKyBb NSw2KSB8IFsiV2VkIEphbiAwMyAwMDowMDowMCAyMDE4IiwiVGh1IEZlYiAwMSAwMDowMDow MCAyMDE4IikKKygyIHJvd3MpCisKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJu ZyBXSEVSRSBpZCBpbiAoJ1szLDNdJykgT1JERVIgQlkgaWQsIHZhbGlkX2F0OworICBpZCAg IHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAg ICAgICB8IHBhcmVudF9pZCAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzMsNCkgfCBb IkZyaSBKYW4gMDUgMDA6MDA6MDAgMjAxOCIsIldlZCBKYW4gMTAgMDA6MDA6MDAgMjAxOCIp IHwgWzUsNikKKygxIHJvdykKKwogLS0gdGhlbiBkZWxldGUgdGhlIG9iamVjdGluZyBGSyBy ZWNvcmQgYW5kIHRoZSBzYW1lIFBLIGRlbGV0ZSBzdWNjZWVkczoKIERFTEVURSBGUk9NIHRl bXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzMsM10nOwogREVMRVRFIEZST00gdGVt cG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcy MDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKQEAgLTEwMDgsMzAgKzEwNjQsMTg0IEBAIERF TEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCBJTiAoJ1s1LDVdJyk7CiAtLQogLS0g dGVzdCBPTiBVUERBVEUvREVMRVRFIG9wdGlvbnMKIC0tCistLSBUT0M6CistLSBwYXJlbnQg dXBkYXRlcyBDQVNDQURFCistLSBwYXJlbnQgZGVsZXRlcyBDQVNDQURFCistLSBwYXJlbnQg dXBkYXRlcyBTRVQgTlVMTAorLS0gcGFyZW50IGRlbGV0ZXMgU0VUIE5VTEwKKy0tIHBhcmVu dCB1cGRhdGVzIFNFVCBERUZBVUxUCistLSBwYXJlbnQgZGVsZXRlcyBTRVQgREVGQVVMVAor LS0gcGFyZW50IHVwZGF0ZXMgQ0FTQ0FERSAodHdvIHNjYWxhciBjb2xzKQorLS0gcGFyZW50 IGRlbGV0ZXMgQ0FTQ0FERSAodHdvIHNjYWxhciBjb2xzKQorLS0gcGFyZW50IHVwZGF0ZXMg U0VUIE5VTEwgKHR3byBzY2FsYXIgY29scykKKy0tIHBhcmVudCBkZWxldGVzIFNFVCBOVUxM ICh0d28gc2NhbGFyIGNvbHMpCistLSBwYXJlbnQgZGVsZXRlcyBTRVQgTlVMTCAodHdvIHNj YWxhciBjb2xzLCBTRVQgTlVMTCBzdWJzZXQpCistLSBwYXJlbnQgdXBkYXRlcyBTRVQgREVG QVVMVCAodHdvIHNjYWxhciBjb2xzKQorLS0gcGFyZW50IGRlbGV0ZXMgU0VUIERFRkFVTFQg KHR3byBzY2FsYXIgY29scykKKy0tIHBhcmVudCBkZWxldGVzIFNFVCBERUZBVUxUICh0d28g c2NhbGFyIGNvbHMsIFNFVCBERUZBVUxUIHN1YnNldCkKIC0tIHRlc3QgRksgcGFyZW50IHVw ZGF0ZXMgQ0FTQ0FERQogSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s2LDZd JywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOwotSU5TRVJUIElOVE8g dGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbNCw0XScsIHRzcmFuZ2UoJzIwMTgtMDEt MDEnLCAnMjAyMS0wMS0wMScpLCAnWzYsNl0nKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2Zr X3JuZzJybmcgVkFMVUVTICgnWzEwMCwxMDBdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcy MDIxLTAxLTAxJyksICdbNiw2XScpOwogQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJu ZwogCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrLAogCUFERCBDT05T VFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsKIAkJRk9SRUlHTiBLRVkgKHBhcmVudF9p ZCwgUEVSSU9EIHZhbGlkX2F0KQogCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZwogCQlPTiBE RUxFVEUgQ0FTQ0FERSBPTiBVUERBVEUgQ0FTQ0FERTsKLUVSUk9SOiAgaW52YWxpZCBPTiBE RUxFVEUgYWN0aW9uIGZvciBmb3JlaWduIGtleSBjb25zdHJhaW50IHVzaW5nIFBFUklPRAor LS0gbGVmdG92ZXJzIG9uIGJvdGggc2lkZXM6CitVUERBVEUgdGVtcG9yYWxfcm5nIEZPUiBQ T1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBT RVQgaWQgPSAnWzcsN10nIFdIRVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVt cG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworICAgIGlkICAgICB8 ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAg ICAgfCBwYXJlbnRfaWQgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbMTAwLDEw MSkgfCBbIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIsIldlZCBKYW4gMDEgMDA6MDA6MDAg MjAyMCIpIHwgWzcsOCkKKyBbMTAwLDEwMSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAx OCIsIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIpIHwgWzYsNykKKyBbMTAwLDEwMSkgfCBb IldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIp IHwgWzYsNykKKygzIHJvd3MpCisKKy0tIG5vbi1GUE8gdXBkYXRlOgorVVBEQVRFIHRlbXBv cmFsX3JuZyBTRVQgaWQgPSAnWzcsN10nIFdIRVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVDVCAq IEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworICAg IGlkICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAg ICAgICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0K KyBbMTAwLDEwMSkgfCBbIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIsIldlZCBKYW4gMDEg MDA6MDA6MDAgMjAyMCIpIHwgWzcsOCkKKyBbMTAwLDEwMSkgfCBbIk1vbiBKYW4gMDEgMDA6 MDA6MDAgMjAxOCIsIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIpIHwgWzcsOCkKKyBbMTAw LDEwMSkgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6 MDAgMjAyMSIpIHwgWzcsOCkKKygzIHJvd3MpCisKKy0tIEZLIGFjcm9zcyB0d28gcmVmZXJl bmNlZCByb3dzOgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s4LDhdJywg dHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVt cG9yYWxfcm5nIFZBTFVFUyAoJ1s4LDhdJywgdHNyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIx LTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdb MjAwLDIwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s4LDhd Jyk7CitVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCBpZCA9ICdbOSw5XScgV0hFUkUgaWQgPSAn WzgsOF0nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6OnRpbWVzdGFtcDsKK1NFTEVD VCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMjAwLDIwMF0nOwor ICAgIGlkICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAg ICAgICAgICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0KKyBbMjAwLDIwMSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIldlZCBKYW4g MDEgMDA6MDA6MDAgMjAyMCIpIHwgWzksMTApCisgWzIwMCwyMDEpIHwgWyJXZWQgSmFuIDAx IDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IFs4LDkpCiso MiByb3dzKQorCistLSBjbGVhbiB1cAorREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJu ZyBXSEVSRSBpZCBJTiAoJ1sxMDAsMTAwXScsICdbMjAwLDIwMF0nKTsKK0RFTEVURSBGUk9N IHRlbXBvcmFsX3JuZyBXSEVSRSBpZCBJTiAoJ1s2LDZdJywgJ1s3LDddJywgJ1s4LDhdJywg J1s5LDldJyk7CistLSB0ZXN0IEZLIHBhcmVudCBkZWxldGVzIENBU0NBREUKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbNiw2XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEn LCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFM VUVTICgnWzEwMCwxMDBdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyks ICdbNiw2XScpOworLS0gbGVmdG92ZXJzIG9uIGJvdGggc2lkZXM6CitERUxFVEUgRlJPTSB0 ZW1wb3JhbF9ybmcgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScg VE8gJzIwMjAtMDEtMDEnIFdIRVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVt cG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworICAgIGlkICAgICB8 ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAg ICAgfCBwYXJlbnRfaWQgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbMTAwLDEw MSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlR1ZSBKYW4gMDEgMDA6MDA6MDAg MjAxOSIpIHwgWzYsNykKKyBbMTAwLDEwMSkgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAy MCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwgWzYsNykKKygyIHJvd3MpCisKKy0t IG5vbi1GUE8gZGVsZXRlOgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0g J1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9 ICdbMTAwLDEwMF0nOworIGlkIHwgdmFsaWRfYXQgfCBwYXJlbnRfaWQgCistLS0tKy0tLS0t LS0tLS0rLS0tLS0tLS0tLS0KKygwIHJvd3MpCisKKy0tIEZLIGFjcm9zcyB0d28gcmVmZXJl bmNlZCByb3dzOgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s4LDhdJywg dHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVt cG9yYWxfcm5nIFZBTFVFUyAoJ1s4LDhdJywgdHNyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIx LTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdb MjAwLDIwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s4LDhd Jyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzgsOF0nIEFORCB2 YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZST00gdGVt cG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMjAwLDIwMF0nOworICAgIGlkICAgICB8 ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAg ICAgfCBwYXJlbnRfaWQgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbMjAwLDIw MSkgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAg MjAyMSIpIHwgWzgsOSkKKygxIHJvdykKKworLS0gY2xlYW4gdXAKK0RFTEVURSBGUk9NIHRl bXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgSU4gKCdbMTAwLDEwMF0nLCAnWzIwMCwyMDBd Jyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgSU4gKCdbNiw2XScsICdb Nyw3XScsICdbOCw4XScsICdbOSw5XScpOwogLS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRlcyBT RVQgTlVMTAotSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s5LDldJywgdHNy YW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOwotSU5TRVJUIElOVE8gdGVtcG9y YWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbNiw2XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAn MjAyMS0wMS0wMScpLCAnWzksOV0nKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxV RVMgKCdbNiw2XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lO U0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzEwMCwxMDBdJywgdHNy YW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbNiw2XScpOwogQUxURVIgVEFC TEUgdGVtcG9yYWxfZmtfcm5nMnJuZwogCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19y bmcycm5nX2ZrLAogCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsKIAkJ Rk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQogCQlSRUZFUkVOQ0VT IHRlbXBvcmFsX3JuZwogCQlPTiBERUxFVEUgU0VUIE5VTEwgT04gVVBEQVRFIFNFVCBOVUxM OwotRVJST1I6ICBpbnZhbGlkIE9OIERFTEVURSBhY3Rpb24gZm9yIGZvcmVpZ24ga2V5IGNv bnN0cmFpbnQgdXNpbmcgUEVSSU9ECistLSBsZWZ0b3ZlcnMgb24gYm90aCBzaWRlczoKK1VQ REFURSB0ZW1wb3JhbF9ybmcgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0w MS0wMScgVE8gJzIwMjAtMDEtMDEnIFNFVCBpZCA9ICdbNyw3XScgV0hFUkUgaWQgPSAnWzYs Nl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1sx MDAsMTAwXSc7CisgICAgaWQgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9h dCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9pZCAKKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLQorIFsxMDAsMTAxKSB8IFsiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5 IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikgfCAKKyBbMTAwLDEwMSkgfCBbIk1vbiBK YW4gMDEgMDA6MDA6MDAgMjAxOCIsIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIpIHwgWzYs NykKKyBbMTAwLDEwMSkgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4g MDEgMDA6MDA6MDAgMjAyMSIpIHwgWzYsNykKKygzIHJvd3MpCisKKy0tIG5vbi1GUE8gdXBk YXRlOgorVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgaWQgPSAnWzcsN10nIFdIRVJFIGlkID0g J1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9 ICdbMTAwLDEwMF0nOworICAgIGlkICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFs aWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0KKyBbMTAwLDEwMSkgfCBbIlR1ZSBKYW4gMDEgMDA6MDA6MDAg MjAxOSIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwgCisgWzEwMCwxMDEpIHwgWyJN b24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiKSB8 IAorIFsxMDAsMTAxKSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAw MSAwMDowMDowMCAyMDIxIikgfCAKKygzIHJvd3MpCisKKy0tIEZLIGFjcm9zcyB0d28gcmVm ZXJlbmNlZCByb3dzOgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s4LDhd JywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8g dGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s4LDhdJywgdHNyYW5nZSgnMjAyMC0wMS0wMScsICcy MDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMg KCdbMjAwLDIwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s4 LDhdJyk7CitVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCBpZCA9ICdbOSw5XScgV0hFUkUgaWQg PSAnWzgsOF0nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6OnRpbWVzdGFtcDsKK1NF TEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMjAwLDIwMF0n OworICAgIGlkICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAg ICAgICAgICAgICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0KKyBbMjAwLDIwMSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIldlZCBK YW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwgCisgWzIwMCwyMDEpIHwgWyJXZWQgSmFuIDAxIDAw OjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IFs4LDkpCisoMiBy b3dzKQorCistLSBjbGVhbiB1cAorREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBX SEVSRSBpZCBJTiAoJ1sxMDAsMTAwXScsICdbMjAwLDIwMF0nKTsKK0RFTEVURSBGUk9NIHRl bXBvcmFsX3JuZyBXSEVSRSBpZCBJTiAoJ1s2LDZdJywgJ1s3LDddJywgJ1s4LDhdJywgJ1s5 LDldJyk7CistLSB0ZXN0IEZLIHBhcmVudCBkZWxldGVzIFNFVCBOVUxMCitJTlNFUlQgSU5U TyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzYsNl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywg JzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVF UyAoJ1sxMDAsMTAwXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAn WzYsNl0nKTsKKy0tIGxlZnRvdmVycyBvbiBib3RoIHNpZGVzOgorREVMRVRFIEZST00gdGVt cG9yYWxfcm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRP ICcyMDIwLTAxLTAxJyBXSEVSRSBpZCA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBv cmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwMCwxMDBdJzsKKyAgICBpZCAgICAgfCAg ICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAg IHwgcGFyZW50X2lkIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzEwMCwxMDEp IHwgWyJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIw MjAiKSB8IAorIFsxMDAsMTAxKSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVHVl IEphbiAwMSAwMDowMDowMCAyMDE5IikgfCBbNiw3KQorIFsxMDAsMTAxKSB8IFsiV2VkIEph biAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgfCBbNiw3 KQorKDMgcm93cykKKworLS0gbm9uLUZQTyBkZWxldGU6CitERUxFVEUgRlJPTSB0ZW1wb3Jh bF9ybmcgV0hFUkUgaWQgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19y bmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CisgICAgaWQgICAgIHwgICAgICAgICAg ICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVu dF9pZCAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFsxMDAsMTAxKSB8IFsiVHVl IEphbiAwMSAwMDowMDowMCAyMDE5IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikgfCAK KyBbMTAwLDEwMSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlR1ZSBKYW4gMDEg MDA6MDA6MDAgMjAxOSIpIHwgCisgWzEwMCwxMDEpIHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAw IDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IAorKDMgcm93cykKKworLS0g RksgYWNyb3NzIHR3byByZWZlcmVuY2VkIHJvd3M6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9y bmcgVkFMVUVTICgnWzgsOF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEn KSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzgsOF0nLCB0c3Jhbmdl KCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9m a19ybmcycm5nIFZBTFVFUyAoJ1syMDAsMjAwXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAn MjAyMS0wMS0wMScpLCAnWzgsOF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVS RSBpZCA9ICdbOCw4XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6dGltZXN0YW1w OworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1syMDAs MjAwXSc7CisgICAgaWQgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAg ICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9pZCAKKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLQorIFsyMDAsMjAxKSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4Iiwi V2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikgfCAKKyBbMjAwLDIwMSkgfCBbIldlZCBKYW4g MDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwgWzgsOSkK KygyIHJvd3MpCisKKy0tIGNsZWFuIHVwCitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcy cm5nIFdIRVJFIGlkIElOICgnWzEwMCwxMDBdJywgJ1syMDAsMjAwXScpOworREVMRVRFIEZS T00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkIElOICgnWzYsNl0nLCAnWzcsN10nLCAnWzgsOF0n LCAnWzksOV0nKTsKIC0tIHRlc3QgRksgcGFyZW50IHVwZGF0ZXMgU0VUIERFRkFVTFQKIElO U0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbLTEsLTFdJywgdHNyYW5nZShudWxs LCBudWxsKSk7Ci1JTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzEyLDEyXScs IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKLUlOU0VSVCBJTlRPIHRl bXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzgsOF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAx JywgJzIwMjEtMDEtMDEnKSwgJ1sxMiwxMl0nKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3Ju ZyBWQUxVRVMgKCdbNiw2XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScp KTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzEwMCwxMDBd JywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbNiw2XScpOwogQUxU RVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZwogICBBTFRFUiBDT0xVTU4gcGFyZW50X2lk IFNFVCBERUZBVUxUICdbLTEsLTFdJywKIAlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtf cm5nMnJuZ19maywKQEAgLTEwMzksNyArMTI0OSw0MzMgQEAgQUxURVIgVEFCTEUgdGVtcG9y YWxfZmtfcm5nMnJuZwogCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRf YXQpCiAJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nCiAJCU9OIERFTEVURSBTRVQgREVGQVVM VCBPTiBVUERBVEUgU0VUIERFRkFVTFQ7Ci1FUlJPUjogIGludmFsaWQgT04gREVMRVRFIGFj dGlvbiBmb3IgZm9yZWlnbiBrZXkgY29uc3RyYWludCB1c2luZyBQRVJJT0QKKy0tIGxlZnRv dmVycyBvbiBib3RoIHNpZGVzOgorVVBEQVRFIHRlbXBvcmFsX3JuZyBGT1IgUE9SVElPTiBP RiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgU0VUIGlkID0g J1s3LDddJyBXSEVSRSBpZCA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2Zr X3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwMCwxMDBdJzsKKyAgICBpZCAgICAgfCAgICAgICAg ICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFy ZW50X2lkIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzEwMCwxMDEpIHwgWyJU dWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8 IFstMSwwKQorIFsxMDAsMTAxKSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVHVl IEphbiAwMSAwMDowMDowMCAyMDE5IikgfCBbNiw3KQorIFsxMDAsMTAxKSB8IFsiV2VkIEph biAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgfCBbNiw3 KQorKDMgcm93cykKKworLS0gbm9uLUZQTyB1cGRhdGU6CitVUERBVEUgdGVtcG9yYWxfcm5n IFNFVCBpZCA9ICdbNyw3XScgV0hFUkUgaWQgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0 ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CisgICAgaWQgICAg IHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAg ICAgICB8IHBhcmVudF9pZCAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFsxMDAs MTAxKSB8IFsiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IiwiV2VkIEphbiAwMSAwMDowMDow MCAyMDIwIikgfCBbLTEsMCkKKyBbMTAwLDEwMSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAg MjAxOCIsIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIpIHwgWy0xLDApCisgWzEwMCwxMDEp IHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIw MjEiKSB8IFstMSwwKQorKDMgcm93cykKKworLS0gRksgYWNyb3NzIHR3byByZWZlcmVuY2Vk IHJvd3M6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzgsOF0nLCB0c3Jh bmdlKCcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9ybmcgVkFMVUVTICgnWzgsOF0nLCB0c3JhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEt MDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1syMDAs MjAwXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzgsOF0nKTsK K1VQREFURSB0ZW1wb3JhbF9ybmcgU0VUIGlkID0gJ1s5LDldJyBXSEVSRSBpZCA9ICdbOCw4 XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6dGltZXN0YW1wOworU0VMRUNUICog RlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1syMDAsMjAwXSc7CisgICAg aWQgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAg ICAgICAgICAgICB8IHBhcmVudF9pZCAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQor IFsyMDAsMjAxKSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiV2VkIEphbiAwMSAw MDowMDowMCAyMDIwIikgfCBbLTEsMCkKKyBbMjAwLDIwMSkgfCBbIldlZCBKYW4gMDEgMDA6 MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwgWzgsOSkKKygyIHJv d3MpCisKKy0tIGNsZWFuIHVwCitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdI RVJFIGlkIElOICgnWzEwMCwxMDBdJywgJ1syMDAsMjAwXScpOworREVMRVRFIEZST00gdGVt cG9yYWxfcm5nIFdIRVJFIGlkIElOICgnWzYsNl0nLCAnWzcsN10nLCAnWzgsOF0nLCAnWzks OV0nKTsKKy0tIHRlc3QgRksgcGFyZW50IGRlbGV0ZXMgU0VUIERFRkFVTFQKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbNiw2XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEn LCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFM VUVTICgnWzEwMCwxMDBdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyks ICdbNiw2XScpOworLS0gbGVmdG92ZXJzIG9uIGJvdGggc2lkZXM6CitERUxFVEUgRlJPTSB0 ZW1wb3JhbF9ybmcgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScg VE8gJzIwMjAtMDEtMDEnIFdIRVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVt cG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworICAgIGlkICAgICB8 ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAg ICAgfCBwYXJlbnRfaWQgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbMTAwLDEw MSkgfCBbIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIsIldlZCBKYW4gMDEgMDA6MDA6MDAg MjAyMCIpIHwgWy0xLDApCisgWzEwMCwxMDEpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIw MTgiLCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiKSB8IFs2LDcpCisgWzEwMCwxMDEpIHwg WyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEi KSB8IFs2LDcpCisoMyByb3dzKQorCistLSBub24tRlBPIHVwZGF0ZToKK0RFTEVURSBGUk9N IHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBv cmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwMCwxMDBdJzsKKyAgICBpZCAgICAgfCAg ICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAg IHwgcGFyZW50X2lkIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzEwMCwxMDEp IHwgWyJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIw MjAiKSB8IFstMSwwKQorIFsxMDAsMTAxKSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4 IiwiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IikgfCBbLTEsMCkKKyBbMTAwLDEwMSkgfCBb IldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIp IHwgWy0xLDApCisoMyByb3dzKQorCistLSBGSyBhY3Jvc3MgdHdvIHJlZmVyZW5jZWQgcm93 czoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbOCw4XScsIHRzcmFuZ2Uo JzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3Ju ZyBWQUxVRVMgKCdbOCw4XScsIHRzcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScp KTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzIwMCwyMDBd JywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbOCw4XScpOworREVM RVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s4LDhdJyBBTkQgdmFsaWRfYXQg QD4gJzIwMTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2Zr X3JuZzJybmcgV0hFUkUgaWQgPSAnWzIwMCwyMDBdJzsKKyAgICBpZCAgICAgfCAgICAgICAg ICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFy ZW50X2lkIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzIwMCwyMDEpIHwgWyJN b24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8 IFstMSwwKQorIFsyMDAsMjAxKSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJp IEphbiAwMSAwMDowMDowMCAyMDIxIikgfCBbOCw5KQorKDIgcm93cykKKworLS0gY2xlYW4g dXAKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgSU4gKCdbMTAw LDEwMF0nLCAnWzIwMCwyMDBdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUg aWQgSU4gKCdbNiw2XScsICdbNyw3XScsICdbOCw4XScsICdbOSw5XScpOworLS0gdGVzdCBG SyBwYXJlbnQgdXBkYXRlcyBDQVNDQURFICh0d28gc2NhbGFyIGNvbHMpCitJTlNFUlQgSU5U TyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1s2LDZdJywgJ1s2LDZdJywgdHNyYW5nZSgnMjAx OC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmsyX3Ju ZzJybmcgVkFMVUVTICgnWzEwMCwxMDBdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIx LTAxLTAxJyksICdbNiw2XScsICdbNiw2XScpOworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmsy X3JuZzJybmcKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfZmsyX3JuZzJybmdfZmssCisJ QUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmsyX3JuZzJybmdfZmsKKwkJRk9SRUlHTiBLRVkg KHBhcmVudF9pZDEsIHBhcmVudF9pZDIsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNF UyB0ZW1wb3JhbF9ybmcyCisJCU9OIERFTEVURSBDQVNDQURFIE9OIFVQREFURSBDQVNDQURF OworLS0gbGVmdG92ZXJzIG9uIGJvdGggc2lkZXM6CitVUERBVEUgdGVtcG9yYWxfcm5nMiBG T1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0w MScgU0VUIGlkMSA9ICdbNyw3XScgV0hFUkUgaWQxID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZS T00gdGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwMCwxMDBdJzsKKyAgICBp ZCAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAg ICAgICAgICAgIHwgcGFyZW50X2lkMSB8IHBhcmVudF9pZDIgCistLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorIFsxMDAsMTAxKSB8IFsiVHVlIEphbiAwMSAw MDowMDowMCAyMDE5IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikgfCBbNyw4KSAgICAg IHwgWzYsNykKKyBbMTAwLDEwMSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlR1 ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIpIHwgWzYsNykgICAgICB8IFs2LDcpCisgWzEwMCwx MDEpIHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAw IDIwMjEiKSB8IFs2LDcpICAgICAgfCBbNiw3KQorKDMgcm93cykKKworLS0gbm9uLUZQTyB1 cGRhdGU6CitVUERBVEUgdGVtcG9yYWxfcm5nMiBTRVQgaWQxID0gJ1s3LDddJyBXSEVSRSBp ZDEgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVS RSBpZCA9ICdbMTAwLDEwMF0nOworICAgIGlkICAgICB8ICAgICAgICAgICAgICAgICAgICAg ICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYXJlbnRfaWQxIHwgcGFy ZW50X2lkMiAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisg WzEwMCwxMDEpIHwgWyJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiLCJXZWQgSmFuIDAxIDAw OjAwOjAwIDIwMjAiKSB8IFs3LDgpICAgICAgfCBbNiw3KQorIFsxMDAsMTAxKSB8IFsiTW9u IEphbiAwMSAwMDowMDowMCAyMDE4IiwiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IikgfCBb Nyw4KSAgICAgIHwgWzYsNykKKyBbMTAwLDEwMSkgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAg MjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwgWzcsOCkgICAgICB8IFs2LDcp CisoMyByb3dzKQorCistLSBGSyBhY3Jvc3MgdHdvIHJlZmVyZW5jZWQgcm93czoKK0lOU0VS VCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVTICgnWzgsOF0nLCAnWzgsOF0nLCB0c3Jhbmdl KCcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9y bmcyIFZBTFVFUyAoJ1s4LDhdJywgJ1s4LDhdJywgdHNyYW5nZSgnMjAyMC0wMS0wMScsICcy MDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmsyX3JuZzJybmcgVkFMVUVT ICgnWzIwMCwyMDBdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdb OCw4XScsICdbOCw4XScpOworVVBEQVRFIHRlbXBvcmFsX3JuZzIgU0VUIGlkMSA9ICdbOSw5 XScgV0hFUkUgaWQxID0gJ1s4LDhdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjp0 aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlk ID0gJ1syMDAsMjAwXSc7CisgICAgaWQgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2 YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9pZDEgfCBwYXJlbnRf aWQyIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyBbMjAw LDIwMSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIldlZCBKYW4gMDEgMDA6MDA6 MDAgMjAyMCIpIHwgWzksMTApICAgICB8IFs4LDkpCisgWzIwMCwyMDEpIHwgWyJXZWQgSmFu IDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IFs4LDkp ICAgICAgfCBbOCw5KQorKDIgcm93cykKKworLS0gY2xlYW4gdXAKK0RFTEVURSBGUk9NIHRl bXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkIElOICgnWzEwMCwxMDBdJywgJ1syMDAsMjAw XScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nMiBXSEVSRSBpZDEgSU4gKCdbNiw2XScs ICdbNyw3XScsICdbOCw4XScsICdbOSw5XScpOworLS0gdGVzdCBGSyBwYXJlbnQgZGVsZXRl cyBDQVNDQURFICh0d28gc2NhbGFyIGNvbHMpCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcy IFZBTFVFUyAoJ1s2LDZdJywgJ1s2LDZdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIx LTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmsyX3JuZzJybmcgVkFMVUVTICgn WzEwMCwxMDBdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbNiw2 XScsICdbNiw2XScpOworLS0gbGVmdG92ZXJzIG9uIGJvdGggc2lkZXM6CitERUxFVEUgRlJP TSB0ZW1wb3JhbF9ybmcyIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEt MDEnIFRPICcyMDIwLTAxLTAxJyBXSEVSRSBpZDEgPSAnWzYsNl0nOworU0VMRUNUICogRlJP TSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworICAgIGlk ICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAg ICAgICAgICAgfCBwYXJlbnRfaWQxIHwgcGFyZW50X2lkMiAKKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgWzEwMCwxMDEpIHwgWyJNb24gSmFuIDAxIDAw OjAwOjAwIDIwMTgiLCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiKSB8IFs2LDcpICAgICAg fCBbNiw3KQorIFsxMDAsMTAxKSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJp IEphbiAwMSAwMDowMDowMCAyMDIxIikgfCBbNiw3KSAgICAgIHwgWzYsNykKKygyIHJvd3Mp CisKKy0tIG5vbi1GUE8gZGVsZXRlOgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nMiBXSEVS RSBpZDEgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBX SEVSRSBpZCA9ICdbMTAwLDEwMF0nOworIGlkIHwgdmFsaWRfYXQgfCBwYXJlbnRfaWQxIHwg cGFyZW50X2lkMiAKKy0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t CisoMCByb3dzKQorCistLSBGSyBhY3Jvc3MgdHdvIHJlZmVyZW5jZWQgcm93czoKK0lOU0VS VCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVTICgnWzgsOF0nLCAnWzgsOF0nLCB0c3Jhbmdl KCcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9y bmcyIFZBTFVFUyAoJ1s4LDhdJywgJ1s4LDhdJywgdHNyYW5nZSgnMjAyMC0wMS0wMScsICcy MDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmsyX3JuZzJybmcgVkFMVUVT ICgnWzIwMCwyMDBdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdb OCw4XScsICdbOCw4XScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nMiBXSEVSRSBpZDEg PSAnWzgsOF0nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6OnRpbWVzdGFtcDsKK1NF TEVDVCAqIEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgPSAnWzIwMCwyMDBd JzsKKyAgICBpZCAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAg ICAgICAgICAgICAgICAgICAgIHwgcGFyZW50X2lkMSB8IHBhcmVudF9pZDIgCistLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorIFsyMDAsMjAxKSB8IFsiV2Vk IEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgfCBb OCw5KSAgICAgIHwgWzgsOSkKKygxIHJvdykKKworLS0gY2xlYW4gdXAKK0RFTEVURSBGUk9N IHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkIElOICgnWzEwMCwxMDBdJywgJ1syMDAs MjAwXScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nMiBXSEVSRSBpZDEgSU4gKCdbNiw2 XScsICdbNyw3XScsICdbOCw4XScsICdbOSw5XScpOworLS0gdGVzdCBGSyBwYXJlbnQgdXBk YXRlcyBTRVQgTlVMTCAodHdvIHNjYWxhciBjb2xzKQorSU5TRVJUIElOVE8gdGVtcG9yYWxf cm5nMiBWQUxVRVMgKCdbNiw2XScsICdbNiw2XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAn MjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFZBTFVF UyAoJ1sxMDAsMTAwXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAn WzYsNl0nLCAnWzYsNl0nKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrMl9ybmcycm5nCisJ RFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrMl9ybmcycm5nX2ZrLAorCUFERCBDT05TVFJB SU5UIHRlbXBvcmFsX2ZrMl9ybmcycm5nX2ZrCisJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQx LCBwYXJlbnRfaWQyLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxf cm5nMgorCQlPTiBERUxFVEUgU0VUIE5VTEwgT04gVVBEQVRFIFNFVCBOVUxMOworLS0gbGVm dG92ZXJzIG9uIGJvdGggc2lkZXM6CitVUERBVEUgdGVtcG9yYWxfcm5nMiBGT1IgUE9SVElP TiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgU0VUIGlk MSA9ICdbNyw3XScgV0hFUkUgaWQxID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9y YWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwMCwxMDBdJzsKKyAgICBpZCAgICAgfCAg ICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAg IHwgcGFyZW50X2lkMSB8IHBhcmVudF9pZDIgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLQorIFsxMDAsMTAxKSB8IFsiVHVlIEphbiAwMSAwMDowMDowMCAy MDE5IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikgfCAgICAgICAgICAgIHwgCisgWzEw MCwxMDEpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUdWUgSmFuIDAxIDAwOjAw OjAwIDIwMTkiKSB8IFs2LDcpICAgICAgfCBbNiw3KQorIFsxMDAsMTAxKSB8IFsiV2VkIEph biAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgfCBbNiw3 KSAgICAgIHwgWzYsNykKKygzIHJvd3MpCisKKy0tIG5vbi1GUE8gdXBkYXRlOgorVVBEQVRF IHRlbXBvcmFsX3JuZzIgU0VUIGlkMSA9ICdbNyw3XScgV0hFUkUgaWQxID0gJ1s2LDZdJzsK K1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwMCwx MDBdJzsKKyAgICBpZCAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAg ICAgICAgICAgICAgICAgICAgICAgIHwgcGFyZW50X2lkMSB8IHBhcmVudF9pZDIgCistLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorIFsxMDAsMTAxKSB8IFsi VHVlIEphbiAwMSAwMDowMDowMCAyMDE5IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikg fCAgICAgICAgICAgIHwgCisgWzEwMCwxMDEpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIw MTgiLCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiKSB8ICAgICAgICAgICAgfCAKKyBbMTAw LDEwMSkgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6 MDAgMjAyMSIpIHwgICAgICAgICAgICB8IAorKDMgcm93cykKKworLS0gRksgYWNyb3NzIHR3 byByZWZlcmVuY2VkIHJvd3M6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAo J1s4LDhdJywgJ1s4LDhdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJykp OworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdbOCw4XScsICdbOCw4XScs IHRzcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRl bXBvcmFsX2ZrMl9ybmcycm5nIFZBTFVFUyAoJ1syMDAsMjAwXScsIHRzcmFuZ2UoJzIwMTgt MDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzgsOF0nLCAnWzgsOF0nKTsKK1VQREFURSB0ZW1w b3JhbF9ybmcyIFNFVCBpZDEgPSAnWzksOV0nIFdIRVJFIGlkMSA9ICdbOCw4XScgQU5EIHZh bGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6dGltZXN0YW1wOworU0VMRUNUICogRlJPTSB0ZW1w b3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMjAwLDIwMF0nOworICAgIGlkICAgICB8 ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAg ICAgfCBwYXJlbnRfaWQxIHwgcGFyZW50X2lkMiAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tCisgWzIwMCwyMDEpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAw IDIwMTgiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8ICAgICAgICAgICAgfCAKKyBb MjAwLDIwMSkgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6 MDA6MDAgMjAyMSIpIHwgWzgsOSkgICAgICB8IFs4LDkpCisoMiByb3dzKQorCistLSBjbGVh biB1cAorREVMRVRFIEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgSU4gKCdb MTAwLDEwMF0nLCAnWzIwMCwyMDBdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcyIFdI RVJFIGlkMSBJTiAoJ1s2LDZdJywgJ1s3LDddJywgJ1s4LDhdJywgJ1s5LDldJyk7CistLSB0 ZXN0IEZLIHBhcmVudCBkZWxldGVzIFNFVCBOVUxMICh0d28gc2NhbGFyIGNvbHMpCitJTlNF UlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1s2LDZdJywgJ1s2LDZdJywgdHNyYW5n ZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxf ZmsyX3JuZzJybmcgVkFMVUVTICgnWzEwMCwxMDBdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScs ICcyMDIxLTAxLTAxJyksICdbNiw2XScsICdbNiw2XScpOworLS0gbGVmdG92ZXJzIG9uIGJv dGggc2lkZXM6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcyIEZPUiBQT1JUSU9OIE9GIHZh bGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBXSEVSRSBpZDEgPSAn WzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCA9 ICdbMTAwLDEwMF0nOworICAgIGlkICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFs aWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYXJlbnRfaWQxIHwgcGFyZW50X2lk MiAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgWzEwMCwx MDEpIHwgWyJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiLCJXZWQgSmFuIDAxIDAwOjAwOjAw IDIwMjAiKSB8ICAgICAgICAgICAgfCAKKyBbMTAwLDEwMSkgfCBbIk1vbiBKYW4gMDEgMDA6 MDA6MDAgMjAxOCIsIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIpIHwgWzYsNykgICAgICB8 IFs2LDcpCisgWzEwMCwxMDEpIHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkg SmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IFs2LDcpICAgICAgfCBbNiw3KQorKDMgcm93cykK KworLS0gbm9uLUZQTyBkZWxldGU6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcyIFdIRVJF IGlkMSA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdI RVJFIGlkID0gJ1sxMDAsMTAwXSc7CisgICAgaWQgICAgIHwgICAgICAgICAgICAgICAgICAg ICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9pZDEgfCBw YXJlbnRfaWQyIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0K KyBbMTAwLDEwMSkgfCBbIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIsIldlZCBKYW4gMDEg MDA6MDA6MDAgMjAyMCIpIHwgICAgICAgICAgICB8IAorIFsxMDAsMTAxKSB8IFsiTW9uIEph biAwMSAwMDowMDowMCAyMDE4IiwiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IikgfCAgICAg ICAgICAgIHwgCisgWzEwMCwxMDEpIHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJG cmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8ICAgICAgICAgICAgfCAKKygzIHJvd3MpCisK Ky0tIEZLIGFjcm9zcyB0d28gcmVmZXJlbmNlZCByb3dzOgorSU5TRVJUIElOVE8gdGVtcG9y YWxfcm5nMiBWQUxVRVMgKCdbOCw4XScsICdbOCw4XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEn LCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVTICgn WzgsOF0nLCAnWzgsOF0nLCB0c3JhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7 CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9mazJfcm5nMnJuZyBWQUxVRVMgKCdbMjAwLDIwMF0n LCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s4LDhdJywgJ1s4LDhd Jyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcyIFdIRVJFIGlkMSA9ICdbOCw4XScgQU5E IHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6dGltZXN0YW1wOworU0VMRUNUICogRlJPTSB0 ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMjAwLDIwMF0nOworICAgIGlkICAg ICB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAg ICAgICAgfCBwYXJlbnRfaWQxIHwgcGFyZW50X2lkMiAKKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgWzIwMCwyMDEpIHwgWyJNb24gSmFuIDAxIDAwOjAw OjAwIDIwMTgiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8ICAgICAgICAgICAgfCAK KyBbMjAwLDIwMSkgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEg MDA6MDA6MDAgMjAyMSIpIHwgWzgsOSkgICAgICB8IFs4LDkpCisoMiByb3dzKQorCistLSBj bGVhbiB1cAorREVMRVRFIEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgSU4g KCdbMTAwLDEwMF0nLCAnWzIwMCwyMDBdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcy IFdIRVJFIGlkMSBJTiAoJ1s2LDZdJywgJ1s3LDddJywgJ1s4LDhdJywgJ1s5LDldJyk7Cist LSB0ZXN0IEZLIHBhcmVudCBkZWxldGVzIFNFVCBOVUxMICh0d28gc2NhbGFyIGNvbHMsIFNF VCBOVUxMIHN1YnNldCkKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVTICgnWzYs Nl0nLCAnWzYsNl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9mazJfcm5nMnJuZyBWQUxVRVMgKCdbMTAwLDEwMF0nLCB0 c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s2LDZdJywgJ1s2LDZdJyk7 CistLSBmYWlscyBiZWNhdXNlIHlvdSBjYW4ndCBzZXQgdGhlIFBFUklPRCBjb2x1bW46CitB TFRFUiBUQUJMRSB0ZW1wb3JhbF9mazJfcm5nMnJuZworCURST1AgQ09OU1RSQUlOVCB0ZW1w b3JhbF9mazJfcm5nMnJuZ19maywKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9mazJfcm5n MnJuZ19maworCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkMSwgcGFyZW50X2lkMiwgUEVSSU9E IHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZzIKKwkJT04gREVMRVRFIFNF VCBOVUxMICh2YWxpZF9hdCkgT04gVVBEQVRFIFNFVCBOVUxMOworRVJST1I6ICBjb2x1bW4g InZhbGlkX2F0IiByZWZlcmVuY2VkIGluIE9OIERFTEVURSBTRVQgYWN0aW9uIGNhbm5vdCBi ZSBQRVJJT0QKKy0tIG9rOgorQUxURVIgVEFCTEUgdGVtcG9yYWxfZmsyX3JuZzJybmcKKwlE Uk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfZmsyX3JuZzJybmdfZmssCisJQUREIENPTlNUUkFJ TlQgdGVtcG9yYWxfZmsyX3JuZzJybmdfZmsKKwkJRk9SRUlHTiBLRVkgKHBhcmVudF9pZDEs IHBhcmVudF9pZDIsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9y bmcyCisJCU9OIERFTEVURSBTRVQgTlVMTCAocGFyZW50X2lkMSkgT04gVVBEQVRFIFNFVCBO VUxMOworLS0gbGVmdG92ZXJzIG9uIGJvdGggc2lkZXM6CitERUxFVEUgRlJPTSB0ZW1wb3Jh bF9ybmcyIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcy MDIwLTAxLTAxJyBXSEVSRSBpZDEgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3Jh bF9mazJfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworICAgIGlkICAgICB8ICAg ICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAg fCBwYXJlbnRfaWQxIHwgcGFyZW50X2lkMiAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tCisgWzEwMCwxMDEpIHwgWyJUdWUgSmFuIDAxIDAwOjAwOjAwIDIw MTkiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8ICAgICAgICAgICAgfCBbNiw3KQor IFsxMDAsMTAxKSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVHVlIEphbiAwMSAw MDowMDowMCAyMDE5IikgfCBbNiw3KSAgICAgIHwgWzYsNykKKyBbMTAwLDEwMSkgfCBbIldl ZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwg WzYsNykgICAgICB8IFs2LDcpCisoMyByb3dzKQorCistLSBub24tRlBPIGRlbGV0ZToKK0RF TEVURSBGUk9NIHRlbXBvcmFsX3JuZzIgV0hFUkUgaWQxID0gJ1s2LDZdJzsKK1NFTEVDVCAq IEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwMCwxMDBdJzsKKyAg ICBpZCAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAg ICAgICAgICAgICAgIHwgcGFyZW50X2lkMSB8IHBhcmVudF9pZDIgCistLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorIFsxMDAsMTAxKSB8IFsiVHVlIEphbiAw MSAwMDowMDowMCAyMDE5IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikgfCAgICAgICAg ICAgIHwgWzYsNykKKyBbMTAwLDEwMSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIs IlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIpIHwgICAgICAgICAgICB8IFs2LDcpCisgWzEw MCwxMDEpIHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAw OjAwIDIwMjEiKSB8ICAgICAgICAgICAgfCBbNiw3KQorKDMgcm93cykKKworLS0gRksgYWNy b3NzIHR3byByZWZlcmVuY2VkIHJvd3M6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZB TFVFUyAoJ1s4LDhdJywgJ1s4LDhdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAx LTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdbOCw4XScsICdb OCw4XScsIHRzcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFZBTFVFUyAoJ1syMDAsMjAwXScsIHRzcmFuZ2Uo JzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzgsOF0nLCAnWzgsOF0nKTsKK0RFTEVU RSBGUk9NIHRlbXBvcmFsX3JuZzIgV0hFUkUgaWQxID0gJ1s4LDhdJyBBTkQgdmFsaWRfYXQg QD4gJzIwMTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2Zr Ml9ybmcycm5nIFdIRVJFIGlkID0gJ1syMDAsMjAwXSc7CisgICAgaWQgICAgIHwgICAgICAg ICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBh cmVudF9pZDEgfCBwYXJlbnRfaWQyIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0KKyBbMjAwLDIwMSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIs IldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwgICAgICAgICAgICB8IFs4LDkpCisgWzIw MCwyMDEpIHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAw OjAwIDIwMjEiKSB8IFs4LDkpICAgICAgfCBbOCw5KQorKDIgcm93cykKKworLS0gY2xlYW4g dXAKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkIElOICgnWzEw MCwxMDBdJywgJ1syMDAsMjAwXScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nMiBXSEVS RSBpZDEgSU4gKCdbNiw2XScsICdbNyw3XScsICdbOCw4XScsICdbOSw5XScpOworLS0gdGVz dCBGSyBwYXJlbnQgdXBkYXRlcyBTRVQgREVGQVVMVCAodHdvIHNjYWxhciBjb2xzKQorSU5T RVJUIElOVE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdbLTEsLTFdJywgJ1stMSwtMV0nLCB0 c3JhbmdlKG51bGwsIG51bGwpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVT ICgnWzYsNl0nLCAnWzYsNl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEn KSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9mazJfcm5nMnJuZyBWQUxVRVMgKCdbMTAwLDEw MF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s2LDZdJywgJ1s2 LDZdJyk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9mazJfcm5nMnJuZworICBBTFRFUiBDT0xV TU4gcGFyZW50X2lkMSBTRVQgREVGQVVMVCAnWy0xLC0xXScsCisgIEFMVEVSIENPTFVNTiBw YXJlbnRfaWQyIFNFVCBERUZBVUxUICdbLTEsLTFdJywKKwlEUk9QIENPTlNUUkFJTlQgdGVt cG9yYWxfZmsyX3JuZzJybmdfZmssCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmsyX3Ju ZzJybmdfZmsKKwkJRk9SRUlHTiBLRVkgKHBhcmVudF9pZDEsIHBhcmVudF9pZDIsIFBFUklP RCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcyCisJCU9OIERFTEVURSBT RVQgREVGQVVMVCBPTiBVUERBVEUgU0VUIERFRkFVTFQ7CistLSBsZWZ0b3ZlcnMgb24gYm90 aCBzaWRlczoKK1VQREFURSB0ZW1wb3JhbF9ybmcyIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0 IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBTRVQgaWQxID0gJ1s3LDddJywg aWQyID0gJ1s3LDddJyBXSEVSRSBpZDEgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1w b3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworICAgIGlkICAgICB8 ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAg ICAgfCBwYXJlbnRfaWQxIHwgcGFyZW50X2lkMiAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tCisgWzEwMCwxMDEpIHwgWyJUdWUgSmFuIDAxIDAwOjAwOjAw IDIwMTkiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8IFstMSwwKSAgICAgfCBbLTEs MCkKKyBbMTAwLDEwMSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlR1ZSBKYW4g MDEgMDA6MDA6MDAgMjAxOSIpIHwgWzYsNykgICAgICB8IFs2LDcpCisgWzEwMCwxMDEpIHwg WyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEi KSB8IFs2LDcpICAgICAgfCBbNiw3KQorKDMgcm93cykKKworLS0gbm9uLUZQTyB1cGRhdGU6 CitVUERBVEUgdGVtcG9yYWxfcm5nMiBTRVQgaWQxID0gJ1s3LDddJywgaWQyID0gJ1s3LDdd JyBXSEVSRSBpZDEgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9mazJfcm5n MnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworICAgIGlkICAgICB8ICAgICAgICAgICAg ICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYXJlbnRf aWQxIHwgcGFyZW50X2lkMiAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tCisgWzEwMCwxMDEpIHwgWyJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiLCJXZWQg SmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8IFstMSwwKSAgICAgfCBbLTEsMCkKKyBbMTAwLDEw MSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlR1ZSBKYW4gMDEgMDA6MDA6MDAg MjAxOSIpIHwgWy0xLDApICAgICB8IFstMSwwKQorIFsxMDAsMTAxKSB8IFsiV2VkIEphbiAw MSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgfCBbLTEsMCkg ICAgIHwgWy0xLDApCisoMyByb3dzKQorCistLSBGSyBhY3Jvc3MgdHdvIHJlZmVyZW5jZWQg cm93czoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVTICgnWzgsOF0nLCAnWzgs OF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEnKSk7CitJTlNFUlQgSU5U TyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1s4LDhdJywgJ1s4LDhdJywgdHNyYW5nZSgnMjAy MC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmsyX3Ju ZzJybmcgVkFMVUVTICgnWzIwMCwyMDBdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIx LTAxLTAxJyksICdbOCw4XScsICdbOCw4XScpOworVVBEQVRFIHRlbXBvcmFsX3JuZzIgU0VU IGlkMSA9ICdbOSw5XScsIGlkMiA9ICdbOSw5XScgV0hFUkUgaWQxID0gJ1s4LDhdJyBBTkQg dmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9NIHRl bXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1syMDAsMjAwXSc7CisgICAgaWQgICAg IHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAg ICAgICB8IHBhcmVudF9pZDEgfCBwYXJlbnRfaWQyIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0KKyBbMjAwLDIwMSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6 MDAgMjAxOCIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwgWy0xLDApICAgICB8IFst MSwwKQorIFsyMDAsMjAxKSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEph biAwMSAwMDowMDowMCAyMDIxIikgfCBbOCw5KSAgICAgIHwgWzgsOSkKKygyIHJvd3MpCisK Ky0tIGNsZWFuIHVwCitERUxFVEUgRlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBp ZCBJTiAoJ1sxMDAsMTAwXScsICdbMjAwLDIwMF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFs X3JuZzIgV0hFUkUgaWQxIElOICgnWzYsNl0nLCAnWzcsN10nLCAnWzgsOF0nLCAnWzksOV0n KTsKKy0tIHRlc3QgRksgcGFyZW50IGRlbGV0ZXMgU0VUIERFRkFVTFQgKHR3byBzY2FsYXIg Y29scykKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVTICgnWzYsNl0nLCAnWzYs Nl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5U TyB0ZW1wb3JhbF9mazJfcm5nMnJuZyBWQUxVRVMgKCdbMTAwLDEwMF0nLCB0c3JhbmdlKCcy MDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s2LDZdJywgJ1s2LDZdJyk7CistLSBsZWZ0 b3ZlcnMgb24gYm90aCBzaWRlczoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZzIgRk9SIFBP UlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFdI RVJFIGlkMSA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5n IFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CisgICAgaWQgICAgIHwgICAgICAgICAgICAgICAg ICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9pZDEg fCBwYXJlbnRfaWQyIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0KKyBbMTAwLDEwMSkgfCBbIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIsIldlZCBKYW4g MDEgMDA6MDA6MDAgMjAyMCIpIHwgWy0xLDApICAgICB8IFstMSwwKQorIFsxMDAsMTAxKSB8 IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5 IikgfCBbNiw3KSAgICAgIHwgWzYsNykKKyBbMTAwLDEwMSkgfCBbIldlZCBKYW4gMDEgMDA6 MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwgWzYsNykgICAgICB8 IFs2LDcpCisoMyByb3dzKQorCistLSBub24tRlBPIHVwZGF0ZToKK0RFTEVURSBGUk9NIHRl bXBvcmFsX3JuZzIgV0hFUkUgaWQxID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9y YWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwMCwxMDBdJzsKKyAgICBpZCAgICAgfCAg ICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAg IHwgcGFyZW50X2lkMSB8IHBhcmVudF9pZDIgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLQorIFsxMDAsMTAxKSB8IFsiVHVlIEphbiAwMSAwMDowMDowMCAy MDE5IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikgfCBbLTEsMCkgICAgIHwgWy0xLDAp CisgWzEwMCwxMDEpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUdWUgSmFuIDAx IDAwOjAwOjAwIDIwMTkiKSB8IFstMSwwKSAgICAgfCBbLTEsMCkKKyBbMTAwLDEwMSkgfCBb IldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIp IHwgWy0xLDApICAgICB8IFstMSwwKQorKDMgcm93cykKKworLS0gRksgYWNyb3NzIHR3byBy ZWZlcmVuY2VkIHJvd3M6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1s4 LDhdJywgJ1s4LDhdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJykpOwor SU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdbOCw4XScsICdbOCw4XScsIHRz cmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBv cmFsX2ZrMl9ybmcycm5nIFZBTFVFUyAoJ1syMDAsMjAwXScsIHRzcmFuZ2UoJzIwMTgtMDEt MDEnLCAnMjAyMS0wMS0wMScpLCAnWzgsOF0nLCAnWzgsOF0nKTsKK0RFTEVURSBGUk9NIHRl bXBvcmFsX3JuZzIgV0hFUkUgaWQxID0gJ1s4LDhdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTkt MDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5n IFdIRVJFIGlkID0gJ1syMDAsMjAwXSc7CisgICAgaWQgICAgIHwgICAgICAgICAgICAgICAg ICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9pZDEg fCBwYXJlbnRfaWQyIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0KKyBbMjAwLDIwMSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIldlZCBKYW4g MDEgMDA6MDA6MDAgMjAyMCIpIHwgWy0xLDApICAgICB8IFstMSwwKQorIFsyMDAsMjAxKSB8 IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIx IikgfCBbOCw5KSAgICAgIHwgWzgsOSkKKygyIHJvd3MpCisKKy0tIGNsZWFuIHVwCitERUxF VEUgRlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCBJTiAoJ1sxMDAsMTAwXScs ICdbMjAwLDIwMF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZzIgV0hFUkUgaWQxIElO ICgnWzYsNl0nLCAnWzcsN10nLCAnWzgsOF0nLCAnWzksOV0nKTsKKy0tIHRlc3QgRksgcGFy ZW50IGRlbGV0ZXMgU0VUIERFRkFVTFQgKHR3byBzY2FsYXIgY29scywgU0VUIERFRkFVTFQg c3Vic2V0KQorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdbLTEsLTFdJywg J1s2LDZdJywgdHNyYW5nZShudWxsLCBudWxsKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9y bmcyIFZBTFVFUyAoJ1s2LDZdJywgJ1s2LDZdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcy MDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmsyX3JuZzJybmcgVkFMVUVT ICgnWzEwMCwxMDBdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdb Niw2XScsICdbNiw2XScpOworLS0gZmFpbHMgYmVjYXVzZSB5b3UgY2FuJ3Qgc2V0IHRoZSBQ RVJJT0QgY29sdW1uOgorQUxURVIgVEFCTEUgdGVtcG9yYWxfZmsyX3JuZzJybmcKKyAgQUxU RVIgQ09MVU1OIHBhcmVudF9pZDEgU0VUIERFRkFVTFQgJ1stMSwtMV0nLAorCURST1AgQ09O U1RSQUlOVCB0ZW1wb3JhbF9mazJfcm5nMnJuZ19maywKKwlBREQgQ09OU1RSQUlOVCB0ZW1w b3JhbF9mazJfcm5nMnJuZ19maworCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkMSwgcGFyZW50 X2lkMiwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZzIKKwkJ T04gREVMRVRFIFNFVCBERUZBVUxUICh2YWxpZF9hdCkgT04gVVBEQVRFIFNFVCBERUZBVUxU OworRVJST1I6ICBjb2x1bW4gInZhbGlkX2F0IiByZWZlcmVuY2VkIGluIE9OIERFTEVURSBT RVQgYWN0aW9uIGNhbm5vdCBiZSBQRVJJT0QKKy0tIG9rOgorQUxURVIgVEFCTEUgdGVtcG9y YWxfZmsyX3JuZzJybmcKKyAgQUxURVIgQ09MVU1OIHBhcmVudF9pZDEgU0VUIERFRkFVTFQg J1stMSwtMV0nLAorCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9mazJfcm5nMnJuZ19maywK KwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9mazJfcm5nMnJuZ19maworCQlGT1JFSUdOIEtF WSAocGFyZW50X2lkMSwgcGFyZW50X2lkMiwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVO Q0VTIHRlbXBvcmFsX3JuZzIKKwkJT04gREVMRVRFIFNFVCBERUZBVUxUIChwYXJlbnRfaWQx KSBPTiBVUERBVEUgU0VUIERFRkFVTFQ7CistLSBsZWZ0b3ZlcnMgb24gYm90aCBzaWRlczoK K0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZzIgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJP TSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFdIRVJFIGlkMSA9ICdbNiw2XSc7CitT RUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAw XSc7CisgICAgaWQgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAg ICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9pZDEgfCBwYXJlbnRfaWQyIAorLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyBbMTAwLDEwMSkgfCBbIlR1 ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwg Wy0xLDApICAgICB8IFs2LDcpCisgWzEwMCwxMDEpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAw IDIwMTgiLCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiKSB8IFs2LDcpICAgICAgfCBbNiw3 KQorIFsxMDAsMTAxKSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAw MSAwMDowMDowMCAyMDIxIikgfCBbNiw3KSAgICAgIHwgWzYsNykKKygzIHJvd3MpCisKKy0t IG5vbi1GUE8gdXBkYXRlOgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nMiBXSEVSRSBpZDEg PSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBp ZCA9ICdbMTAwLDEwMF0nOworICAgIGlkICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAg dmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYXJlbnRfaWQxIHwgcGFyZW50 X2lkMiAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgWzEw MCwxMDEpIHwgWyJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiLCJXZWQgSmFuIDAxIDAwOjAw OjAwIDIwMjAiKSB8IFstMSwwKSAgICAgfCBbNiw3KQorIFsxMDAsMTAxKSB8IFsiTW9uIEph biAwMSAwMDowMDowMCAyMDE4IiwiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IikgfCBbLTEs MCkgICAgIHwgWzYsNykKKyBbMTAwLDEwMSkgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAy MCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwgWy0xLDApICAgICB8IFs2LDcpCiso MyByb3dzKQorCistLSBGSyBhY3Jvc3MgdHdvIHJlZmVyZW5jZWQgcm93czoKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVTICgnWzgsOF0nLCAnWzgsOF0nLCB0c3JhbmdlKCcy MDE4LTAxLTAxJywgJzIwMjAtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcy IFZBTFVFUyAoJ1s4LDhdJywgJ1s4LDhdJywgdHNyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIx LTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdbLTEsLTFd JywgJ1s4LDhdJywgdHNyYW5nZShudWxsLCBudWxsKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9mazJfcm5nMnJuZyBWQUxVRVMgKCdbMjAwLDIwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAx JywgJzIwMjEtMDEtMDEnKSwgJ1s4LDhdJywgJ1s4LDhdJyk7CitERUxFVEUgRlJPTSB0ZW1w b3JhbF9ybmcyIFdIRVJFIGlkMSA9ICdbOCw4XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAx LTAxJzo6dGltZXN0YW1wOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBX SEVSRSBpZCA9ICdbMjAwLDIwMF0nOworICAgIGlkICAgICB8ICAgICAgICAgICAgICAgICAg ICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYXJlbnRfaWQxIHwg cGFyZW50X2lkMiAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t CisgWzIwMCwyMDEpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJXZWQgSmFuIDAx IDAwOjAwOjAwIDIwMjAiKSB8IFstMSwwKSAgICAgfCBbOCw5KQorIFsyMDAsMjAxKSB8IFsi V2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikg fCBbOCw5KSAgICAgIHwgWzgsOSkKKygyIHJvd3MpCisKKy0tIGNsZWFuIHVwCitERUxFVEUg RlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCBJTiAoJ1sxMDAsMTAwXScsICdb MjAwLDIwMF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZzIgV0hFUkUgaWQxIElOICgn WzYsNl0nLCAnWzcsN10nLCAnWzgsOF0nLCAnWzksOV0nKTsKIC0tCiAtLSB0ZXN0IEZPUkVJ R04gS0VZLCBtdWx0aXJhbmdlIHJlZmVyZW5jZXMgbXVsdGlyYW5nZQogLS0KQEAgLTEzMTUs NiArMTk1MSwyMiBAQCBVUERBVEUgdGVtcG9yYWxfbWx0cm5nIFNFVCBpZCA9ICdbNyw3XScK IFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRlbXVsdGlyYW5nZShkYXRl cmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKIEVSUk9SOiAgdXBkYXRlIG9y IGRlbGV0ZSBvbiB0YWJsZSAidGVtcG9yYWxfbWx0cm5nIiB2aW9sYXRlcyBmb3JlaWduIGtl eSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9ma19tbHRybmcybWx0cm5nX2ZrIiBvbiB0YWJsZSAi dGVtcG9yYWxfZmtfbWx0cm5nMm1sdHJuZyIKIERFVEFJTDogIEtleSAoaWQsIHZhbGlkX2F0 KT0oWzUsNiksIHtbMDEtMDEtMjAxOCwwMi0wMS0yMDE4KX0pIGlzIHN0aWxsIHJlZmVyZW5j ZWQgZnJvbSB0YWJsZSAidGVtcG9yYWxfZmtfbWx0cm5nMm1sdHJuZyIuCistLSBjaGFuZ2lu ZyBhbiB1bnJlZmVyZW5jZWQgcGFydCBpcyBva2F5OgorVVBEQVRFIHRlbXBvcmFsX21sdHJu ZworRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgKGRhdGVtdWx0aXJhbmdlKGRhdGVyYW5nZSgn MjAxOC0wMS0wMicsICcyMDE4LTAxLTAzJykpKQorU0VUIGlkID0gJ1s3LDddJworV0hFUkUg aWQgPSAnWzUsNV0nOworLS0gY2hhbmdpbmcganVzdCBhIHBhcnQgZmFpbHM6CitVUERBVEUg dGVtcG9yYWxfbWx0cm5nCitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCAoZGF0ZW11bHRpcmFu Z2UoZGF0ZXJhbmdlKCcyMDE4LTAxLTA1JywgJzIwMTgtMDEtMTAnKSkpCitTRVQgaWQgPSAn WzcsN10nCitXSEVSRSBpZCA9ICdbNSw1XSc7CitFUlJPUjogIHVwZGF0ZSBvciBkZWxldGUg b24gdGFibGUgInRlbXBvcmFsX21sdHJuZyIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3Ry YWludCAidGVtcG9yYWxfZmtfbWx0cm5nMm1sdHJuZ19mayIgb24gdGFibGUgInRlbXBvcmFs X2ZrX21sdHJuZzJtbHRybmciCitERVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9hdCk9KFs1LDYp LCB7WzAxLTAxLTIwMTgsMDEtMDItMjAxOCksWzAxLTAzLTIwMTgsMDItMDEtMjAxOCl9KSBp cyBzdGlsbCByZWZlcmVuY2VkIGZyb20gdGFibGUgInRlbXBvcmFsX2ZrX21sdHJuZzJtbHRy bmciLgorLS0gdGhlbiBkZWxldGUgdGhlIG9iamVjdGluZyBGSyByZWNvcmQgYW5kIHRoZSBz YW1lIFBLIHVwZGF0ZSBzdWNjZWVkczoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX21sdHJu ZzJtbHRybmcgV0hFUkUgaWQgPSAnWzMsM10nOworVVBEQVRFIHRlbXBvcmFsX21sdHJuZyBT RVQgdmFsaWRfYXQgPSBkYXRlbXVsdGlyYW5nZShkYXRlcmFuZ2UoJzIwMTYtMDEtMDEnLCAn MjAxNi0wMi0wMScpKQorV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IGRhdGVt dWx0aXJhbmdlKGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykpOwogLS0g Y2xlYW4gdXA6CiBERUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19tbHRybmcybWx0cm5nIFdIRVJF IHBhcmVudF9pZCA9ICdbNSw1XSc7CiBERUxFVEUgRlJPTSB0ZW1wb3JhbF9tbHRybmcgV0hF UkUgaWQgSU4gKCdbNSw1XScsICdbNyw3XScpOwpAQCAtMTM0OSw2ICsyMDAxLDIyIEBAIFVQ REFURSB0ZW1wb3JhbF9tbHRybmcgU0VUIGlkID0gJ1s3LDddJwogV0hFUkUgaWQgPSAnWzUs NV0nIEFORCB2YWxpZF9hdCA9IGRhdGVtdWx0aXJhbmdlKGRhdGVyYW5nZSgnMjAxOC0wMS0w MScsICcyMDE4LTAyLTAxJykpOwogRVJST1I6ICB1cGRhdGUgb3IgZGVsZXRlIG9uIHRhYmxl ICJ0ZW1wb3JhbF9tbHRybmciIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRl bXBvcmFsX2ZrX21sdHJuZzJtbHRybmdfZmsiIG9uIHRhYmxlICJ0ZW1wb3JhbF9ma19tbHRy bmcybWx0cm5nIgogREVUQUlMOiAgS2V5IChpZCwgdmFsaWRfYXQpPShbNSw2KSwge1swMS0w MS0yMDE4LDAyLTAxLTIwMTgpfSkgaXMgc3RpbGwgcmVmZXJlbmNlZCBmcm9tIHRhYmxlICJ0 ZW1wb3JhbF9ma19tbHRybmcybWx0cm5nIi4KKy0tIGNoYW5naW5nIGFuIHVucmVmZXJlbmNl ZCBwYXJ0IGlzIG9rYXk6CitVUERBVEUgdGVtcG9yYWxfbWx0cm5nCitGT1IgUE9SVElPTiBP RiB2YWxpZF9hdCAoZGF0ZW11bHRpcmFuZ2UoZGF0ZXJhbmdlKCcyMDE4LTAxLTAyJywgJzIw MTgtMDEtMDMnKSkpCitTRVQgaWQgPSAnWzcsN10nCitXSEVSRSBpZCA9ICdbNSw1XSc7Cist LSBjaGFuZ2luZyBqdXN0IGEgcGFydCBmYWlsczoKK1VQREFURSB0ZW1wb3JhbF9tbHRybmcK K0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IChkYXRlbXVsdGlyYW5nZShkYXRlcmFuZ2UoJzIw MTgtMDEtMDUnLCAnMjAxOC0wMS0xMCcpKSkKK1NFVCBpZCA9ICdbNyw3XScKK1dIRVJFIGlk ID0gJ1s1LDVdJzsKK0VSUk9SOiAgdXBkYXRlIG9yIGRlbGV0ZSBvbiB0YWJsZSAidGVtcG9y YWxfbWx0cm5nIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9m a19tbHRybmcybWx0cm5nX2ZrIiBvbiB0YWJsZSAidGVtcG9yYWxfZmtfbWx0cm5nMm1sdHJu ZyIKK0RFVEFJTDogIEtleSAoaWQsIHZhbGlkX2F0KT0oWzUsNiksIHtbMDEtMDEtMjAxOCww MS0wMi0yMDE4KSxbMDEtMDMtMjAxOCwwMi0wMS0yMDE4KX0pIGlzIHN0aWxsIHJlZmVyZW5j ZWQgZnJvbSB0YWJsZSAidGVtcG9yYWxfZmtfbWx0cm5nMm1sdHJuZyIuCistLSB0aGVuIGRl bGV0ZSB0aGUgb2JqZWN0aW5nIEZLIHJlY29yZCBhbmQgdGhlIHNhbWUgUEsgdXBkYXRlIHN1 Y2NlZWRzOgorREVMRVRFIEZST00gdGVtcG9yYWxfZmtfbWx0cm5nMm1sdHJuZyBXSEVSRSBp ZCA9ICdbMywzXSc7CitVUERBVEUgdGVtcG9yYWxfbWx0cm5nIFNFVCB2YWxpZF9hdCA9IGRh dGVtdWx0aXJhbmdlKGRhdGVyYW5nZSgnMjAxNi0wMS0wMScsICcyMDE2LTAyLTAxJykpCitX SEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gZGF0ZW11bHRpcmFuZ2UoZGF0ZXJh bmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKSk7CiAtLSBjbGVhbiB1cDoKIERFTEVU RSBGUk9NIHRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmcgV0hFUkUgcGFyZW50X2lkID0gJ1s1 LDVdJzsKIERFTEVURSBGUk9NIHRlbXBvcmFsX21sdHJuZyBXSEVSRSBpZCBJTiAoJ1s1LDVd JywgJ1s3LDddJyk7CkBAIC0xMzc0LDYgKzIwNDIsMTkgQEAgREVMRVRFIEZST00gdGVtcG9y YWxfbWx0cm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRlbXVsdGly YW5nZShkYXQKIERFTEVURSBGUk9NIHRlbXBvcmFsX21sdHJuZyBXSEVSRSBpZCA9ICdbNSw1 XScgQU5EIHZhbGlkX2F0ID0gZGF0ZW11bHRpcmFuZ2UoZGF0ZXJhbmdlKCcyMDE4LTAxLTAx JywgJzIwMTgtMDItMDEnKSk7CiBFUlJPUjogIHVwZGF0ZSBvciBkZWxldGUgb24gdGFibGUg InRlbXBvcmFsX21sdHJuZyIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVt cG9yYWxfZmtfbWx0cm5nMm1sdHJuZ19mayIgb24gdGFibGUgInRlbXBvcmFsX2ZrX21sdHJu ZzJtbHRybmciCiBERVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9hdCk9KFs1LDYpLCB7WzAxLTAx LTIwMTgsMDItMDEtMjAxOCl9KSBpcyBzdGlsbCByZWZlcmVuY2VkIGZyb20gdGFibGUgInRl bXBvcmFsX2ZrX21sdHJuZzJtbHRybmciLgorLS0gZGVsZXRpbmcgYW4gdW5yZWZlcmVuY2Vk IHBhcnQgaXMgb2theToKK0RFTEVURSBGUk9NIHRlbXBvcmFsX21sdHJuZworRk9SIFBPUlRJ T04gT0YgdmFsaWRfYXQgKGRhdGVtdWx0aXJhbmdlKGRhdGVyYW5nZSgnMjAxOC0wMS0wMics ICcyMDE4LTAxLTAzJykpKQorV0hFUkUgaWQgPSAnWzUsNV0nOworLS0gZGVsZXRpbmcganVz dCBhIHBhcnQgZmFpbHM6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9tbHRybmcKK0ZPUiBQT1JU SU9OIE9GIHZhbGlkX2F0IChkYXRlbXVsdGlyYW5nZShkYXRlcmFuZ2UoJzIwMTgtMDEtMDUn LCAnMjAxOC0wMS0xMCcpKSkKK1dIRVJFIGlkID0gJ1s1LDVdJzsKK0VSUk9SOiAgdXBkYXRl IG9yIGRlbGV0ZSBvbiB0YWJsZSAidGVtcG9yYWxfbWx0cm5nIiB2aW9sYXRlcyBmb3JlaWdu IGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9ma19tbHRybmcybWx0cm5nX2ZrIiBvbiB0YWJs ZSAidGVtcG9yYWxfZmtfbWx0cm5nMm1sdHJuZyIKK0RFVEFJTDogIEtleSAoaWQsIHZhbGlk X2F0KT0oWzUsNiksIHtbMDEtMDEtMjAxOCwwMS0wMi0yMDE4KSxbMDEtMDMtMjAxOCwwMi0w MS0yMDE4KX0pIGlzIHN0aWxsIHJlZmVyZW5jZWQgZnJvbSB0YWJsZSAidGVtcG9yYWxfZmtf bWx0cm5nMm1sdHJuZyIuCistLSB0aGVuIGRlbGV0ZSB0aGUgb2JqZWN0aW5nIEZLIHJlY29y ZCBhbmQgdGhlIHNhbWUgUEsgZGVsZXRlIHN1Y2NlZWRzOgorREVMRVRFIEZST00gdGVtcG9y YWxfZmtfbWx0cm5nMm1sdHJuZyBXSEVSRSBpZCA9ICdbMywzXSc7CitERUxFVEUgRlJPTSB0 ZW1wb3JhbF9tbHRybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IGRhdGVt dWx0aXJhbmdlKGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykpOwogLS0g Y2xlYW4gdXA6CiBERUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19tbHRybmcybWx0cm5nIFdIRVJF IHBhcmVudF9pZCA9ICdbNSw1XSc7CiBERUxFVEUgRlJPTSB0ZW1wb3JhbF9tbHRybmcgV0hF UkUgaWQgSU4gKCdbNSw1XScpOwpAQCAtMTM5OSw5ICsyMDgwLDUwIEBAIERFTEVURSBGUk9N IHRlbXBvcmFsX21sdHJuZyBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gZGF0 ZW11bHRpcmFuZ2UoZGF0CiBERUxFVEUgRlJPTSB0ZW1wb3JhbF9tbHRybmcgV0hFUkUgaWQg PSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IGRhdGVtdWx0aXJhbmdlKGRhdGVyYW5nZSgnMjAx OC0wMS0wMScsICcyMDE4LTAyLTAxJykpOwogRVJST1I6ICB1cGRhdGUgb3IgZGVsZXRlIG9u IHRhYmxlICJ0ZW1wb3JhbF9tbHRybmciIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFp bnQgInRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmdfZmsiIG9uIHRhYmxlICJ0ZW1wb3JhbF9m a19tbHRybmcybWx0cm5nIgogREVUQUlMOiAgS2V5IChpZCwgdmFsaWRfYXQpPShbNSw2KSwg e1swMS0wMS0yMDE4LDAyLTAxLTIwMTgpfSkgaXMgc3RpbGwgcmVmZXJlbmNlZCBmcm9tIHRh YmxlICJ0ZW1wb3JhbF9ma19tbHRybmcybWx0cm5nIi4KKy0tIGRlbGV0aW5nIGFuIHVucmVm ZXJlbmNlZCBwYXJ0IGlzIG9rYXk6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9tbHRybmcKK0ZP UiBQT1JUSU9OIE9GIHZhbGlkX2F0IChkYXRlbXVsdGlyYW5nZShkYXRlcmFuZ2UoJzIwMTgt MDEtMDInLCAnMjAxOC0wMS0wMycpKSkKK1dIRVJFIGlkID0gJ1s1LDVdJzsKKy0tIGRlbGV0 aW5nIGp1c3QgYSBwYXJ0IGZhaWxzOgorREVMRVRFIEZST00gdGVtcG9yYWxfbWx0cm5nCitG T1IgUE9SVElPTiBPRiB2YWxpZF9hdCAoZGF0ZW11bHRpcmFuZ2UoZGF0ZXJhbmdlKCcyMDE4 LTAxLTA1JywgJzIwMTgtMDEtMTAnKSkpCitXSEVSRSBpZCA9ICdbNSw1XSc7CitFUlJPUjog IHVwZGF0ZSBvciBkZWxldGUgb24gdGFibGUgInRlbXBvcmFsX21sdHJuZyIgdmlvbGF0ZXMg Zm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxfZmtfbWx0cm5nMm1sdHJuZ19mayIg b24gdGFibGUgInRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmciCitERVRBSUw6ICBLZXkgKGlk LCB2YWxpZF9hdCk9KFs1LDYpLCB7WzAxLTAxLTIwMTgsMDEtMDItMjAxOCksWzAxLTAzLTIw MTgsMDItMDEtMjAxOCl9KSBpcyBzdGlsbCByZWZlcmVuY2VkIGZyb20gdGFibGUgInRlbXBv cmFsX2ZrX21sdHJuZzJtbHRybmciLgorLS0gdGhlbiBkZWxldGUgdGhlIG9iamVjdGluZyBG SyByZWNvcmQgYW5kIHRoZSBzYW1lIFBLIGRlbGV0ZSBzdWNjZWVkczoKK0RFTEVURSBGUk9N IHRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmcgV0hFUkUgaWQgPSAnWzMsM10nOworREVMRVRF IEZST00gdGVtcG9yYWxfbWx0cm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQg PSBkYXRlbXVsdGlyYW5nZShkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScp KTsKIC0tIGNsZWFuIHVwOgogREVMRVRFIEZST00gdGVtcG9yYWxfZmtfbWx0cm5nMm1sdHJu ZyBXSEVSRSBwYXJlbnRfaWQgPSAnWzUsNV0nOwogREVMRVRFIEZST00gdGVtcG9yYWxfbWx0 cm5nIFdIRVJFIGlkIElOICgnWzUsNV0nKTsKKy0tIEZLIHdpdGggYSBjdXN0b20gcmFuZ2Ug dHlwZQorQ1JFQVRFIFRZUEUgbXlkYXRlcmFuZ2UgQVMgcmFuZ2Uoc3VidHlwZT1kYXRlKTsK K0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ybmczICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRf YXQgbXlkYXRlcmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ybmczX3BrIFBSSU1BUlkg S0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CitDUkVBVEUgVEFCTEUg dGVtcG9yYWxfZmszX3JuZzJybmcgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCBteWRh dGVyYW5nZSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxf ZmszX3JuZzJybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJM QVBTKSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrM19ybmcycm5nX2ZrIEZPUkVJR04gS0VZ IChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9y bmczIChpZCwgUEVSSU9EIHZhbGlkX2F0KSBPTiBERUxFVEUgQ0FTQ0FERQorKTsKK0lOU0VS VCBJTlRPIHRlbXBvcmFsX3JuZzMgVkFMVUVTICgnWzgsOF0nLCBteWRhdGVyYW5nZSgnMjAx OC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmszX3Ju ZzJybmcgVkFMVUVTICgnWzUsNV0nLCBteWRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIx LTAxLTAxJyksICdbOCw4XScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nMyBGT1IgUE9S VElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgV0hF UkUgaWQgPSAnWzgsOF0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9mazNfcm5nMnJuZyBX SEVSRSBpZCA9ICdbNSw1XSc7CisgIGlkICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8 IHBhcmVudF9pZCAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLQorIFs1LDYpIHwgWzAxLTAxLTIwMTgsMDEtMDEtMjAxOSkgfCBbOCw5KQorIFs1LDYp IHwgWzAxLTAxLTIwMjAsMDEtMDEtMjAyMSkgfCBbOCw5KQorKDIgcm93cykKKworRFJPUCBU QUJMRSB0ZW1wb3JhbF9mazNfcm5nMnJuZzsKK0RST1AgVEFCTEUgdGVtcG9yYWxfcm5nMzsK K0RST1AgVFlQRSBteWRhdGVyYW5nZTsKIC0tIEZLIGJldHdlZW4gcGFydGl0aW9uZWQgdGFi bGVzCiBDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nICgKIAlpZCBpbnQ0 cmFuZ2UsCkBAIC0xNDA5LDggKzIxMzEsOCBAQCBDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcGFy dGl0aW9uZWRfcm5nICgKICAgbmFtZSB0ZXh0LAogCUNPTlNUUkFJTlQgdGVtcG9yYWxfcGFy aXRpb25lZF9ybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJM QVBTKQogKSBQQVJUSVRJT04gQlkgTElTVCAoaWQpOwotQ1JFQVRFIFRBQkxFIHRwMSBwYXJ0 aXRpb24gT0YgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIEZPUiBWQUxVRVMgSU4gKCdbMSwx XScsICdbMywzXScsICdbNSw1XScsICdbNyw3XScsICdbOSw5XScsICdbMTEsMTFdJyk7Ci1D UkVBVEUgVEFCTEUgdHAyIHBhcnRpdGlvbiBPRiB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcg Rk9SIFZBTFVFUyBJTiAoJ1syLDJdJywgJ1s0LDRdJywgJ1s2LDZdJywgJ1s4LDhdJywgJ1sx MCwxMF0nLCAnWzEyLDEyXScpOworQ1JFQVRFIFRBQkxFIHRwMSBQQVJUSVRJT04gT0YgdGVt cG9yYWxfcGFydGl0aW9uZWRfcm5nIEZPUiBWQUxVRVMgSU4gKCdbMSwxXScsICdbMywzXScs ICdbNSw1XScsICdbNyw3XScsICdbOSw5XScsICdbMTEsMTFdJywgJ1sxMywxM10nLCAnWzE1 LDE1XScsICdbMTcsMTddJywgJ1sxOSwxOV0nLCAnWzIxLDIxXScsICdbMjMsMjNdJyk7CitD UkVBVEUgVEFCTEUgdHAyIFBBUlRJVElPTiBPRiB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcg Rk9SIFZBTFVFUyBJTiAoJ1swLDBdJywgJ1syLDJdJywgJ1s0LDRdJywgJ1s2LDZdJywgJ1s4 LDhdJywgJ1sxMCwxMF0nLCAnWzEyLDEyXScsICdbMTQsMTRdJywgJ1sxNiwxNl0nLCAnWzE4 LDE4XScsICdbMjAsMjBdJywgJ1syMiwyMl0nLCAnWzI0LDI0XScpOwogSU5TRVJUIElOVE8g dGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUwogICAoJ1sxLDFdJywgZGF0ZXJhbmdl KCcyMDAwLTAxLTAxJywgJzIwMDAtMDItMDEnKSwgJ29uZScpLAogICAoJ1sxLDFdJywgZGF0 ZXJhbmdlKCcyMDAwLTAyLTAxJywgJzIwMDAtMDMtMDEnKSwgJ29uZScpLApAQCAtMTQyMyw4 ICsyMTQ1LDggQEAgQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJy bmcgKAogCUNPTlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19mayBG T1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCiAJCVJFRkVSRU5DRVMg dGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIChpZCwgUEVSSU9EIHZhbGlkX2F0KQogKSBQQVJU SVRJT04gQlkgTElTVCAoaWQpOwotQ1JFQVRFIFRBQkxFIHRma3AxIHBhcnRpdGlvbiBPRiB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIEZPUiBWQUxVRVMgSU4gKCdbMSwxXScs ICdbMywzXScsICdbNSw1XScsICdbNyw3XScsICdbOSw5XScsICdbMTEsMTFdJyk7Ci1DUkVB VEUgVEFCTEUgdGZrcDIgcGFydGl0aW9uIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3Ju ZzJybmcgRk9SIFZBTFVFUyBJTiAoJ1syLDJdJywgJ1s0LDRdJywgJ1s2LDZdJywgJ1s4LDhd JywgJ1sxMCwxMF0nLCAnWzEyLDEyXScpOworQ1JFQVRFIFRBQkxFIHRma3AxIFBBUlRJVElP TiBPRiB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIEZPUiBWQUxVRVMgSU4gKCdb MSwxXScsICdbMywzXScsICdbNSw1XScsICdbNyw3XScsICdbOSw5XScsICdbMTEsMTFdJywg J1sxMywxM10nLCAnWzE1LDE1XScsICdbMTcsMTddJywgJ1sxOSwxOV0nLCAnWzIxLDIxXScs ICdbMjMsMjNdJyk7CitDUkVBVEUgVEFCTEUgdGZrcDIgUEFSVElUSU9OIE9GIHRlbXBvcmFs X3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgRk9SIFZBTFVFUyBJTiAoJ1swLDBdJywgJ1syLDJd JywgJ1s0LDRdJywgJ1s2LDZdJywgJ1s4LDhdJywgJ1sxMCwxMF0nLCAnWzEyLDEyXScsICdb MTQsMTRdJywgJ1sxNiwxNl0nLCAnWzE4LDE4XScsICdbMjAsMjBdJywgJ1syMiwyMl0nLCAn WzI0LDI0XScpOwogLS0gcGFydGl0aW9uZWQgRksgY2hpbGQgaW5zZXJ0cwogSU5TRVJUIElO VE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMKICAgKCdbMSwxXScs IGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDAwLTAyLTE1JyksICdbMSwxXScpLApAQCAt MTQ1OSw3ICsyMTgxLDcgQEAgVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBTRVQg dmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTYtMDItMDEnLCAnMjAxNi0wMy0KIC0tIHNob3Vs ZCBmYWlsOgogVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBTRVQgdmFsaWRfYXQg PSBkYXRlcmFuZ2UoJzIwMTYtMDEtMDEnLCAnMjAxNi0wMi0wMScpCiAgIFdIRVJFIGlkID0g J1s1LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0w Mi0wMScpOwotRVJST1I6ICB1cGRhdGUgb3IgZGVsZXRlIG9uIHRhYmxlICJ0cDEiIHZpb2xh dGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3Ju ZzJybmdfcGFyZW50X2lkX3ZhbGlkX2F0X2ZrZXkiIG9uIHRhYmxlICJ0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ma19ybmcycm5nIgorRVJST1I6ICB1cGRhdGUgb3IgZGVsZXRlIG9uIHRhYmxl ICJ0cDEiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBvcmFsX3BhcnRp dGlvbmVkX2ZrX3JuZzJybmdfcGFyZW50X2lkX3ZhbGlkX2F0X2ZrZXkxIiBvbiB0YWJsZSAi dGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyIKIERFVEFJTDogIEtleSAoaWQsIHZh bGlkX2F0KT0oWzUsNiksIFswMS0wMS0yMDE4LDAyLTAxLTIwMTgpKSBpcyBzdGlsbCByZWZl cmVuY2VkIGZyb20gdGFibGUgInRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmciLgog LS0gY2xlYW4gdXA6CiBERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcy cm5nIFdIRVJFIHBhcmVudF9pZCA9ICdbNSw1XSc7CkBAIC0xNDcxLDcgKzIxOTMsNyBAQCBJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1sz LDNdJywgZGF0ZXJhbmdlKCcyMDE4LTAxLQogREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0 aW9uZWRfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRlcmFuZ2Uo JzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpOwogLS0gc2hvdWxkIGZhaWw6CiBERUxFVEUg RlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2 YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7Ci1FUlJP UjogIHVwZGF0ZSBvciBkZWxldGUgb24gdGFibGUgInRwMSIgdmlvbGF0ZXMgZm9yZWlnbiBr ZXkgY29uc3RyYWludCAidGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19wYXJlbnRf aWRfdmFsaWRfYXRfZmtleSIgb24gdGFibGUgInRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3Ju ZzJybmciCitFUlJPUjogIHVwZGF0ZSBvciBkZWxldGUgb24gdGFibGUgInRwMSIgdmlvbGF0 ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5n MnJuZ19wYXJlbnRfaWRfdmFsaWRfYXRfZmtleTEiIG9uIHRhYmxlICJ0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ma19ybmcycm5nIgogREVUQUlMOiAgS2V5IChpZCwgdmFsaWRfYXQpPShbNSw2 KSwgWzAxLTAxLTIwMTgsMDItMDEtMjAxOCkpIGlzIHN0aWxsIHJlZmVyZW5jZWQgZnJvbSB0 YWJsZSAidGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyIuCiAtLSBjbGVhbiB1cDoK IERFTEVURSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgcGFy ZW50X2lkID0gJ1s1LDVdJzsKQEAgLTE0OTMsNyArMjIxNSw3IEBAIFVQREFURSB0ZW1wb3Jh bF9wYXJ0aXRpb25lZF9ybmcgU0VUIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE2LTAyLTAx JywgJzIwMTYtMDMtCiAtLSBzaG91bGQgZmFpbDoKIFVQREFURSB0ZW1wb3JhbF9wYXJ0aXRp b25lZF9ybmcgU0VUIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE2LTAxLTAxJywgJzIwMTYt MDItMDEnKQogICBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gZGF0ZXJhbmdl KCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKLUVSUk9SOiAgdXBkYXRlIG9yIGRlbGV0 ZSBvbiB0YWJsZSAidHAxIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1w b3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX3BhcmVudF9pZF92YWxpZF9hdF9ma2V5IiBv biB0YWJsZSAidGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyIKK0VSUk9SOiAgdXBk YXRlIG9yIGRlbGV0ZSBvbiB0YWJsZSAidHAxIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25z dHJhaW50ICJ0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX3BhcmVudF9pZF92YWxp ZF9hdF9ma2V5MSIgb24gdGFibGUgInRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmci CiBERVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9hdCk9KFs1LDYpLCBbMDEtMDEtMjAxOCwwMi0w MS0yMDE4KSkgaXMgc3RpbGwgcmVmZXJlbmNlZCBmcm9tIHRhYmxlICJ0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ma19ybmcycm5nIi4KIC0tIGNsZWFuIHVwOgogREVMRVRFIEZST00gdGVtcG9y YWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBwYXJlbnRfaWQgPSAnWzUsNV0nOwpA QCAtMTUwNSwzNSArMjIyNywyMTQgQEAgSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9u ZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMywzXScsIGRhdGVyYW5nZSgnMjAxOC0wMS0KIERF TEVURSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBXSEVSRSBpZCA9ICdbNSw1XScg QU5EIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKTsK IC0tIHNob3VsZCBmYWlsOgogREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5n IFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTgtMDEt MDEnLCAnMjAxOC0wMi0wMScpOwotRVJST1I6ICB1cGRhdGUgb3IgZGVsZXRlIG9uIHRhYmxl ICJ0cDEiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBvcmFsX3BhcnRp dGlvbmVkX2ZrX3JuZzJybmdfcGFyZW50X2lkX3ZhbGlkX2F0X2ZrZXkiIG9uIHRhYmxlICJ0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIgorRVJST1I6ICB1cGRhdGUgb3IgZGVs ZXRlIG9uIHRhYmxlICJ0cDEiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRl bXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfcGFyZW50X2lkX3ZhbGlkX2F0X2ZrZXkx IiBvbiB0YWJsZSAidGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyIKIERFVEFJTDog IEtleSAoaWQsIHZhbGlkX2F0KT0oWzUsNiksIFswMS0wMS0yMDE4LDAyLTAxLTIwMTgpKSBp cyBzdGlsbCByZWZlcmVuY2VkIGZyb20gdGFibGUgInRlbXBvcmFsX3BhcnRpdGlvbmVkX2Zr X3JuZzJybmciLgogLS0gcGFydGl0aW9uZWQgRksgcGFyZW50IHVwZGF0ZXMgQ0FTQ0FERQor SU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1s2LDZdJywg ZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1s0LDRdJywgZGF0ZXJh bmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s2LDZdJyk7CiBBTFRFUiBUQUJM RSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nCiAJRFJPUCBDT05TVFJBSU5UIHRl bXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfZmssCiAJQUREIENPTlNUUkFJTlQgdGVt cG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19mawogCQlGT1JFSUdOIEtFWSAocGFyZW50 X2lkLCBQRVJJT0QgdmFsaWRfYXQpCiAJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcGFydGl0aW9u ZWRfcm5nCiAJCU9OIERFTEVURSBDQVNDQURFIE9OIFVQREFURSBDQVNDQURFOwotRVJST1I6 ICBpbnZhbGlkIE9OIERFTEVURSBhY3Rpb24gZm9yIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQg dXNpbmcgUEVSSU9ECitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIEZPUiBQT1JU SU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBTRVQg aWQgPSAnWzcsN10nIFdIRVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9y YWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbNCw0XSc7CisgIGlkICAg fCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8IHBhcmVudF9pZCAKKy0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFs0LDUpIHwgWzAxLTAxLTIwMTks MDEtMDEtMjAyMCkgfCBbNyw4KQorIFs0LDUpIHwgWzAxLTAxLTIwMTgsMDEtMDEtMjAxOSkg fCBbNiw3KQorIFs0LDUpIHwgWzAxLTAxLTIwMjAsMDEtMDEtMjAyMSkgfCBbNiw3KQorKDMg cm93cykKKworVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBTRVQgaWQgPSAnWzcs N10nIFdIRVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0 aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbNCw0XSc7CisgIGlkICAgfCAgICAgICAg dmFsaWRfYXQgICAgICAgICB8IHBhcmVudF9pZCAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFs0LDUpIHwgWzAxLTAxLTIwMTksMDEtMDEtMjAy MCkgfCBbNyw4KQorIFs0LDUpIHwgWzAxLTAxLTIwMTgsMDEtMDEtMjAxOSkgfCBbNyw4KQor IFs0LDUpIHwgWzAxLTAxLTIwMjAsMDEtMDEtMjAyMSkgfCBbNyw4KQorKDMgcm93cykKKwor SU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1sxNSwxNV0n LCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRP IHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbMTUsMTVdJywgZGF0ZXJhbmdl KCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1sxMCwxMF0nLCBkYXRlcmFuZ2UoJzIw MTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzE1LDE1XScpOworVVBEQVRFIHRlbXBvcmFs X3BhcnRpdGlvbmVkX3JuZyBTRVQgaWQgPSAnWzE2LDE2XScgV0hFUkUgaWQgPSAnWzE1LDE1 XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6ZGF0ZTsKK1NFTEVDVCAqIEZST00g dGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAsMTBdJzsK KyAgIGlkICAgIHwgICAgICAgIHZhbGlkX2F0ICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFsxMCwxMSkg fCBbMDEtMDEtMjAxOCwwMS0wMS0yMDIwKSB8IFsxNiwxNykKKyBbMTAsMTEpIHwgWzAxLTAx LTIwMjAsMDEtMDEtMjAyMSkgfCBbMTUsMTYpCisoMiByb3dzKQorCiAtLSBwYXJ0aXRpb25l ZCBGSyBwYXJlbnQgZGVsZXRlcyBDQVNDQURFCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ybmcgVkFMVUVTICgnWzgsOF0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAn MjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3Ju ZzJybmcgVkFMVUVTICgnWzUsNV0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0w MS0wMScpLCAnWzgsOF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3Ju ZyBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0w MS0wMScgV0hFUkUgaWQgPSAnWzgsOF0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsKKyAgaWQgICB8ICAgICAg ICB2YWxpZF9hdCAgICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzUsNikgfCBbMDEtMDEtMjAxOCwwMS0wMS0y MDE5KSB8IFs4LDkpCisgWzUsNikgfCBbMDEtMDEtMjAyMCwwMS0wMS0yMDIxKSB8IFs4LDkp CisoMiByb3dzKQorCitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgV0hF UkUgaWQgPSAnWzgsOF0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9m a19ybmcycm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsKKyBpZCB8IHZhbGlkX2F0IHwgcGFyZW50 X2lkIAorLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisoMCByb3dzKQorCitJTlNFUlQg SU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzE3LDE3XScsIGRhdGVy YW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9y YWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1sxNywxN10nLCBkYXRlcmFuZ2UoJzIwMjAt MDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlv bmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzExLDExXScsIGRhdGVyYW5nZSgnMjAxOC0wMS0w MScsICcyMDIxLTAxLTAxJyksICdbMTcsMTddJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ybmcgV0hFUkUgaWQgPSAnWzE3LDE3XScgQU5EIHZhbGlkX2F0IEA+ICcy MDE5LTAxLTAxJzo6ZGF0ZTsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRf Zmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTEsMTFdJzsKKyAgIGlkICAgIHwgICAgICAgIHZh bGlkX2F0ICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFsxMSwxMikgfCBbMDEtMDEtMjAyMCwwMS0wMS0y MDIxKSB8IFsxNywxOCkKKygxIHJvdykKKwogLS0gcGFydGl0aW9uZWQgRksgcGFyZW50IHVw ZGF0ZXMgU0VUIE5VTEwKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBW QUxVRVMgKCdbOSw5XScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykp OworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMg KCdbNiw2XScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbOSw5 XScpOwogQUxURVIgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZwogCURS T1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX2ZrLAogCUFE RCBDT05TVFJBSU5UIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfZmsKIAkJRk9S RUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQogCQlSRUZFUkVOQ0VTIHRl bXBvcmFsX3BhcnRpdGlvbmVkX3JuZwogCQlPTiBERUxFVEUgU0VUIE5VTEwgT04gVVBEQVRF IFNFVCBOVUxMOwotRVJST1I6ICBpbnZhbGlkIE9OIERFTEVURSBhY3Rpb24gZm9yIGZvcmVp Z24ga2V5IGNvbnN0cmFpbnQgdXNpbmcgUEVSSU9ECitVUERBVEUgdGVtcG9yYWxfcGFydGl0 aW9uZWRfcm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRP ICcyMDIwLTAxLTAxJyBTRVQgaWQgPSAnWzEwLDEwXScgV0hFUkUgaWQgPSAnWzksOV0nOwor U0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIGlk ID0gJ1s2LDZdJzsKKyAgaWQgICB8ICAgICAgICB2YWxpZF9hdCAgICAgICAgIHwgcGFyZW50 X2lkIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisg WzYsNykgfCBbMDEtMDEtMjAxOSwwMS0wMS0yMDIwKSB8IAorIFs2LDcpIHwgWzAxLTAxLTIw MTgsMDEtMDEtMjAxOSkgfCBbOSwxMCkKKyBbNiw3KSB8IFswMS0wMS0yMDIwLDAxLTAxLTIw MjEpIHwgWzksMTApCisoMyByb3dzKQorCitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWRf cm5nIFNFVCBpZCA9ICdbMTAsMTBdJyBXSEVSRSBpZCA9ICdbOSw5XSc7CitTRUxFQ1QgKiBG Uk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzYsNl0n OworICBpZCAgIHwgICAgICAgIHZhbGlkX2F0ICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbNiw3KSB8IFsw MS0wMS0yMDE5LDAxLTAxLTIwMjApIHwgCisgWzYsNykgfCBbMDEtMDEtMjAxOCwwMS0wMS0y MDE5KSB8IAorIFs2LDcpIHwgWzAxLTAxLTIwMjAsMDEtMDEtMjAyMSkgfCAKKygzIHJvd3Mp CisKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbMTgs MThdJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEnKSk7CitJTlNFUlQg SU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzE4LDE4XScsIGRhdGVy YW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9y YWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMTIsMTJdJywgZGF0ZXJhbmdl KCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1sxOCwxOF0nKTsKK1VQREFURSB0ZW1w b3JhbF9wYXJ0aXRpb25lZF9ybmcgU0VUIGlkID0gJ1sxOSwxOV0nIFdIRVJFIGlkID0gJ1sx OCwxOF0nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6OmRhdGU7CitTRUxFQ1QgKiBG Uk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEyLDEy XSc7CisgICBpZCAgICB8ICAgICAgICB2YWxpZF9hdCAgICAgICAgIHwgcGFyZW50X2lkIAor LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbMTIs MTMpIHwgWzAxLTAxLTIwMTgsMDEtMDEtMjAyMCkgfCAKKyBbMTIsMTMpIHwgWzAxLTAxLTIw MjAsMDEtMDEtMjAyMSkgfCBbMTgsMTkpCisoMiByb3dzKQorCiAtLSBwYXJ0aXRpb25lZCBG SyBwYXJlbnQgZGVsZXRlcyBTRVQgTlVMTAorSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0 aW9uZWRfcm5nIFZBTFVFUyAoJ1sxMSwxMV0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAn MjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3Ju ZzJybmcgVkFMVUVTICgnWzcsN10nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0w MS0wMScpLCAnWzExLDExXScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRf cm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIw LTAxLTAxJyBXSEVSRSBpZCA9ICdbMTEsMTFdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxf cGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbNyw3XSc7CisgIGlkICAgfCAg ICAgICAgdmFsaWRfYXQgICAgICAgICB8IHBhcmVudF9pZCAKKy0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFs3LDgpIHwgWzAxLTAxLTIwMTksMDEt MDEtMjAyMCkgfCAKKyBbNyw4KSB8IFswMS0wMS0yMDE4LDAxLTAxLTIwMTkpIHwgWzExLDEy KQorIFs3LDgpIHwgWzAxLTAxLTIwMjAsMDEtMDEtMjAyMSkgfCBbMTEsMTIpCisoMyByb3dz KQorCitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgV0hFUkUgaWQgPSAn WzExLDExXSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJy bmcgV0hFUkUgaWQgPSAnWzcsN10nOworICBpZCAgIHwgICAgICAgIHZhbGlkX2F0ICAgICAg ICAgfCBwYXJlbnRfaWQgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0KKyBbNyw4KSB8IFswMS0wMS0yMDE5LDAxLTAxLTIwMjApIHwgCisgWzcsOCkg fCBbMDEtMDEtMjAxOCwwMS0wMS0yMDE5KSB8IAorIFs3LDgpIHwgWzAxLTAxLTIwMjAsMDEt MDEtMjAyMSkgfCAKKygzIHJvd3MpCisKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlv bmVkX3JuZyBWQUxVRVMgKCdbMjAsMjBdJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIw MjAtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFM VUVTICgnWzIwLDIwXScsIGRhdGVyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykp OworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMg KCdbMTMsMTNdJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1sy MCwyMF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBXSEVSRSBp ZCA9ICdbMjAsMjBdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjpkYXRlOworU0VM RUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIGlkID0g J1sxMywxM10nOworICAgaWQgICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8IHBhcmVu dF9pZCAKKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t CisgWzEzLDE0KSB8IFswMS0wMS0yMDE4LDAxLTAxLTIwMjApIHwgCisgWzEzLDE0KSB8IFsw MS0wMS0yMDIwLDAxLTAxLTIwMjEpIHwgWzIwLDIxKQorKDIgcm93cykKKwogLS0gcGFydGl0 aW9uZWQgRksgcGFyZW50IHVwZGF0ZXMgU0VUIERFRkFVTFQKK0lOU0VSVCBJTlRPIHRlbXBv cmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbMCwwXScsIGRhdGVyYW5nZShudWxsLCBu dWxsKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgn WzEyLDEyXScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5T RVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdbOCw4 XScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbMTIsMTJdJyk7 CiBBTFRFUiBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nCi0gIEFMVEVS IENPTFVNTiBwYXJlbnRfaWQgU0VUIERFRkFVTFQgJ1stMSwtMV0nLAorICBBTFRFUiBDT0xV TU4gcGFyZW50X2lkIFNFVCBERUZBVUxUICdbMCwwXScsCiAJRFJPUCBDT05TVFJBSU5UIHRl bXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfZmssCiAJQUREIENPTlNUUkFJTlQgdGVt cG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19mawogCQlGT1JFSUdOIEtFWSAocGFyZW50 X2lkLCBQRVJJT0QgdmFsaWRfYXQpCiAJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcGFydGl0aW9u ZWRfcm5nCiAJCU9OIERFTEVURSBTRVQgREVGQVVMVCBPTiBVUERBVEUgU0VUIERFRkFVTFQ7 Ci1FUlJPUjogIGludmFsaWQgT04gREVMRVRFIGFjdGlvbiBmb3IgZm9yZWlnbiBrZXkgY29u c3RyYWludCB1c2luZyBQRVJJT0QKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcg Rk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEt MDEnIFNFVCBpZCA9ICdbMTMsMTNdJyBXSEVSRSBpZCA9ICdbMTIsMTJdJzsKK1NFTEVDVCAq IEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbOCw4 XSc7CisgIGlkICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8IHBhcmVudF9pZCAKKy0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFs4LDkpIHwg WzAxLTAxLTIwMTksMDEtMDEtMjAyMCkgfCBbMCwxKQorIFs4LDkpIHwgWzAxLTAxLTIwMTgs MDEtMDEtMjAxOSkgfCBbMTIsMTMpCisgWzgsOSkgfCBbMDEtMDEtMjAyMCwwMS0wMS0yMDIx KSB8IFsxMiwxMykKKygzIHJvd3MpCisKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9y bmcgU0VUIGlkID0gJ1sxMywxM10nIFdIRVJFIGlkID0gJ1sxMiwxMl0nOworU0VMRUNUICog RlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1s4LDhd JzsKKyAgaWQgICB8ICAgICAgICB2YWxpZF9hdCAgICAgICAgIHwgcGFyZW50X2lkIAorLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzgsOSkgfCBb MDEtMDEtMjAxOSwwMS0wMS0yMDIwKSB8IFswLDEpCisgWzgsOSkgfCBbMDEtMDEtMjAxOCww MS0wMS0yMDE5KSB8IFswLDEpCisgWzgsOSkgfCBbMDEtMDEtMjAyMCwwMS0wMS0yMDIxKSB8 IFswLDEpCisoMyByb3dzKQorCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9y bmcgVkFMVUVTICgnWzIyLDIyXScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAx LTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAo J1syMiwyMl0nLCBkYXRlcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lO U0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzE0 LDE0XScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbMjIsMjJd Jyk7CitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFNFVCBpZCA9ICdbMjMsMjNd JyBXSEVSRSBpZCA9ICdbMjIsMjJdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjpk YXRlOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdI RVJFIGlkID0gJ1sxNCwxNF0nOworICAgaWQgICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAg ICB8IHBhcmVudF9pZCAKKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tCisgWzE0LDE1KSB8IFswMS0wMS0yMDE4LDAxLTAxLTIwMjApIHwgWzAsMSkK KyBbMTQsMTUpIHwgWzAxLTAxLTIwMjAsMDEtMDEtMjAyMSkgfCBbMjIsMjMpCisoMiByb3dz KQorCiAtLSBwYXJ0aXRpb25lZCBGSyBwYXJlbnQgZGVsZXRlcyBTRVQgREVGQVVMVAorSU5T RVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1sxNCwxNF0nLCBk YXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRl bXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzksOV0nLCBkYXRlcmFu Z2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzE0LDE0XScpOworREVMRVRFIEZS T00gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZS T00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBXSEVSRSBpZCA9ICdbMTQsMTRdJzsK K1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBp ZCA9ICdbOSw5XSc7CisgICBpZCAgIHwgICAgICAgIHZhbGlkX2F0ICAgICAgICAgfCBwYXJl bnRfaWQgCistLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t CisgWzksMTApIHwgWzAxLTAxLTIwMTksMDEtMDEtMjAyMCkgfCBbMCwxKQorIFs5LDEwKSB8 IFswMS0wMS0yMDE4LDAxLTAxLTIwMTkpIHwgWzE0LDE1KQorIFs5LDEwKSB8IFswMS0wMS0y MDIwLDAxLTAxLTIwMjEpIHwgWzE0LDE1KQorKDMgcm93cykKKworREVMRVRFIEZST00gdGVt cG9yYWxfcGFydGl0aW9uZWRfcm5nIFdIRVJFIGlkID0gJ1sxNCwxNF0nOworU0VMRUNUICog RlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1s5LDld JzsKKyAgIGlkICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8IHBhcmVudF9pZCAKKy0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbOSwxMCkg fCBbMDEtMDEtMjAxOSwwMS0wMS0yMDIwKSB8IFswLDEpCisgWzksMTApIHwgWzAxLTAxLTIw MTgsMDEtMDEtMjAxOSkgfCBbMCwxKQorIFs5LDEwKSB8IFswMS0wMS0yMDIwLDAxLTAxLTIw MjEpIHwgWzAsMSkKKygzIHJvd3MpCisKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlv bmVkX3JuZyBWQUxVRVMgKCdbMjQsMjRdJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIw MjAtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFM VUVTICgnWzI0LDI0XScsIGRhdGVyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykp OworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMg KCdbMTUsMTVdJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1sy NCwyNF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBXSEVSRSBp ZCA9ICdbMjQsMjRdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjpkYXRlOworU0VM RUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIGlkID0g J1sxNSwxNV0nOworICAgaWQgICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8IHBhcmVu dF9pZCAKKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t CisgWzE1LDE2KSB8IFswMS0wMS0yMDE4LDAxLTAxLTIwMjApIHwgWzAsMSkKKyBbMTUsMTYp IHwgWzAxLTAxLTIwMjAsMDEtMDEtMjAyMSkgfCBbMjQsMjUpCisoMiByb3dzKQorCiBEUk9Q IFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmc7CiBEUk9QIFRBQkxFIHRl bXBvcmFsX3BhcnRpdGlvbmVkX3JuZzsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL3dpdGhvdXRfb3ZlcmxhcHMuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvd2l0aG91 dF9vdmVybGFwcy5zcWwKaW5kZXggYzExMWY2YTZiY2EuLjk1OWUwYjY0MjY3IDEwMDY0NAot LS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC93aXRob3V0X292ZXJsYXBzLnNxbAorKysgYi9z cmMvdGVzdC9yZWdyZXNzL3NxbC93aXRob3V0X292ZXJsYXBzLnNxbApAQCAtNjY0LDYgKzY2 NCw4IEBAIFVQREFURSB0ZW1wb3JhbF9ybmcKIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZS T00gJzIwMTgtMDEtMDUnIFRPICcyMDE4LTAxLTEwJwogU0VUIGlkID0gJ1s3LDddJwogV0hF UkUgaWQgPSAnWzUsNV0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQg aW4gKCdbNSw1XScsICdbNyw3XScpIE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKK1NFTEVDVCAq IEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCBpbiAoJ1szLDNdJykgT1JERVIg QlkgaWQsIHZhbGlkX2F0OwogLS0gdGhlbiBkZWxldGUgdGhlIG9iamVjdGluZyBGSyByZWNv cmQgYW5kIHRoZSBzYW1lIFBLIHVwZGF0ZSBzdWNjZWVkczoKIERFTEVURSBGUk9NIHRlbXBv cmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzMsM10nOwogVVBEQVRFIHRlbXBvcmFsX3Ju ZyBTRVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE2LTAxLTAxJywgJzIwMTYtMDItMDEnKQpA QCAtNzEwLDYgKzcxMiw4IEBAIFVQREFURSB0ZW1wb3JhbF9ybmcKIEZPUiBQT1JUSU9OIE9G IHZhbGlkX2F0IEZST00gJzIwMTgtMDEtMDUnIFRPICcyMDE4LTAxLTEwJwogU0VUIGlkID0g J1s3LDddJwogV0hFUkUgaWQgPSAnWzUsNV0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9y bmcgV0hFUkUgaWQgaW4gKCdbNSw1XScsICdbNyw3XScpIE9SREVSIEJZIGlkLCB2YWxpZF9h dDsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCBpbiAoJ1sz LDNdJykgT1JERVIgQlkgaWQsIHZhbGlkX2F0OwogLS0gdGhlbiBkZWxldGUgdGhlIG9iamVj dGluZyBGSyByZWNvcmQgYW5kIHRoZSBzYW1lIFBLIHVwZGF0ZSBzdWNjZWVkczoKIERFTEVU RSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzMsM10nOwogVVBEQVRF IHRlbXBvcmFsX3JuZyBTRVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE2LTAxLTAxJywgJzIw MTYtMDItMDEnKQpAQCAtNzQ1LDYgKzc0OSw4IEBAIFdIRVJFIGlkID0gJ1s1LDVdJzsKIERF TEVURSBGUk9NIHRlbXBvcmFsX3JuZwogRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAn MjAxOC0wMS0wNScgVE8gJzIwMTgtMDEtMTAnCiBXSEVSRSBpZCA9ICdbNSw1XSc7CitTRUxF Q1QgKiBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCBpbiAoJ1s1LDVdJywgJ1s3LDddJykg T1JERVIgQlkgaWQsIHZhbGlkX2F0OworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcy cm5nIFdIRVJFIGlkIGluICgnWzMsM10nKSBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CiAtLSB0 aGVuIGRlbGV0ZSB0aGUgb2JqZWN0aW5nIEZLIHJlY29yZCBhbmQgdGhlIHNhbWUgUEsgZGVs ZXRlIHN1Y2NlZWRzOgogREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBp ZCA9ICdbMywzXSc7CiBERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUs NV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScp OwpAQCAtNzgwLDYgKzc4Niw4IEBAIFdIRVJFIGlkID0gJ1s1LDVdJzsKIERFTEVURSBGUk9N IHRlbXBvcmFsX3JuZwogRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wMS0w NScgVE8gJzIwMTgtMDEtMTAnCiBXSEVSRSBpZCA9ICdbNSw1XSc7CitTRUxFQ1QgKiBGUk9N IHRlbXBvcmFsX3JuZyBXSEVSRSBpZCBpbiAoJ1s1LDVdJywgJ1s3LDddJykgT1JERVIgQlkg aWQsIHZhbGlkX2F0OworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJF IGlkIGluICgnWzMsM10nKSBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CiAtLSB0aGVuIGRlbGV0 ZSB0aGUgb2JqZWN0aW5nIEZLIHJlY29yZCBhbmQgdGhlIHNhbWUgUEsgZGVsZXRlIHN1Y2Nl ZWRzOgogREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMywz XSc7CiBERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2 YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOwpAQCAtNzkw LDMxICs3OTgsMTE0IEBAIERFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCBJTiAo J1s1LDVdJyk7CiAtLQogLS0gdGVzdCBPTiBVUERBVEUvREVMRVRFIG9wdGlvbnMKIC0tCist LSBUT0M6CistLSBwYXJlbnQgdXBkYXRlcyBDQVNDQURFCistLSBwYXJlbnQgZGVsZXRlcyBD QVNDQURFCistLSBwYXJlbnQgdXBkYXRlcyBTRVQgTlVMTAorLS0gcGFyZW50IGRlbGV0ZXMg U0VUIE5VTEwKKy0tIHBhcmVudCB1cGRhdGVzIFNFVCBERUZBVUxUCistLSBwYXJlbnQgZGVs ZXRlcyBTRVQgREVGQVVMVAorLS0gcGFyZW50IHVwZGF0ZXMgQ0FTQ0FERSAodHdvIHNjYWxh ciBjb2xzKQorLS0gcGFyZW50IGRlbGV0ZXMgQ0FTQ0FERSAodHdvIHNjYWxhciBjb2xzKQor LS0gcGFyZW50IHVwZGF0ZXMgU0VUIE5VTEwgKHR3byBzY2FsYXIgY29scykKKy0tIHBhcmVu dCBkZWxldGVzIFNFVCBOVUxMICh0d28gc2NhbGFyIGNvbHMpCistLSBwYXJlbnQgZGVsZXRl cyBTRVQgTlVMTCAodHdvIHNjYWxhciBjb2xzLCBTRVQgTlVMTCBzdWJzZXQpCistLSBwYXJl bnQgdXBkYXRlcyBTRVQgREVGQVVMVCAodHdvIHNjYWxhciBjb2xzKQorLS0gcGFyZW50IGRl bGV0ZXMgU0VUIERFRkFVTFQgKHR3byBzY2FsYXIgY29scykKKy0tIHBhcmVudCBkZWxldGVz IFNFVCBERUZBVUxUICh0d28gc2NhbGFyIGNvbHMsIFNFVCBERUZBVUxUIHN1YnNldCkKIAog LS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRlcyBDQVNDQURFCiBJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9ybmcgVkFMVUVTICgnWzYsNl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEt MDEnKSk7Ci1JTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1s0LDRd JywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbNiw2XScpOworSU5T RVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMTAwLDEwMF0nLCB0c3Jh bmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s2LDZdJyk7CiBBTFRFUiBUQUJM RSB0ZW1wb3JhbF9ma19ybmcycm5nCiAJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3Ju ZzJybmdfZmssCiAJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19mawogCQlG T1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCiAJCVJFRkVSRU5DRVMg dGVtcG9yYWxfcm5nCiAJCU9OIERFTEVURSBDQVNDQURFIE9OIFVQREFURSBDQVNDQURFOwor LS0gbGVmdG92ZXJzIG9uIGJvdGggc2lkZXM6CitVUERBVEUgdGVtcG9yYWxfcm5nIEZPUiBQ T1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBT RVQgaWQgPSAnWzcsN10nIFdIRVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVt cG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworLS0gbm9uLUZQTyB1 cGRhdGU6CitVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCBpZCA9ICdbNyw3XScgV0hFUkUgaWQg PSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlk ID0gJ1sxMDAsMTAwXSc7CistLSBGSyBhY3Jvc3MgdHdvIHJlZmVyZW5jZWQgcm93czoKK0lO U0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbOCw4XScsIHRzcmFuZ2UoJzIwMTgt MDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxV RVMgKCdbOCw4XScsIHRzcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lO U0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzIwMCwyMDBdJywgdHNy YW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbOCw4XScpOworVVBEQVRFIHRl bXBvcmFsX3JuZyBTRVQgaWQgPSAnWzksOV0nIFdIRVJFIGlkID0gJ1s4LDhdJyBBTkQgdmFs aWRfYXQgQD4gJzIwMTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9NIHRlbXBv cmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzIwMCwyMDBdJzsKKy0tIGNsZWFuIHVwCitE RUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkIElOICgnWzEwMCwxMDBd JywgJ1syMDAsMjAwXScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkIElO ICgnWzYsNl0nLCAnWzcsN10nLCAnWzgsOF0nLCAnWzksOV0nKTsKKworLS0gdGVzdCBGSyBw YXJlbnQgZGVsZXRlcyBDQVNDQURFCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVT ICgnWzYsNl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNF UlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1sxMDAsMTAwXScsIHRzcmFu Z2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzYsNl0nKTsKKy0tIGxlZnRvdmVy cyBvbiBib3RoIHNpZGVzOgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIEZPUiBQT1JUSU9O IE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBXSEVSRSBp ZCA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUg aWQgPSAnWzEwMCwxMDBdJzsKKy0tIG5vbi1GUE8gZGVsZXRlOgorREVMRVRFIEZST00gdGVt cG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxf Zmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworLS0gRksgYWNyb3NzIHR3byBy ZWZlcmVuY2VkIHJvd3M6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzgs OF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEnKSk7CitJTlNFUlQgSU5U TyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzgsOF0nLCB0c3JhbmdlKCcyMDIwLTAxLTAxJywg JzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVF UyAoJ1syMDAsMjAwXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAn WzgsOF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbOCw4XScg QU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6dGltZXN0YW1wOworU0VMRUNUICogRlJP TSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1syMDAsMjAwXSc7CistLSBjbGVh biB1cAorREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCBJTiAoJ1sx MDAsMTAwXScsICdbMjAwLDIwMF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVS RSBpZCBJTiAoJ1s2LDZdJywgJ1s3LDddJywgJ1s4LDhdJywgJ1s5LDldJyk7CiAKIC0tIHRl c3QgRksgcGFyZW50IHVwZGF0ZXMgU0VUIE5VTEwKLUlOU0VSVCBJTlRPIHRlbXBvcmFsX3Ju ZyBWQUxVRVMgKCdbOSw5XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScp KTsKLUlOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzYsNl0nLCB0 c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s5LDldJyk7CitJTlNFUlQg SU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzYsNl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAx JywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZB TFVFUyAoJ1sxMDAsMTAwXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScp LCAnWzYsNl0nKTsKIEFMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKIAlEUk9QIENP TlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19maywKIAlBREQgQ09OU1RSQUlOVCB0ZW1w b3JhbF9ma19ybmcycm5nX2ZrCiAJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2 YWxpZF9hdCkKIAkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcKIAkJT04gREVMRVRFIFNFVCBO VUxMIE9OIFVQREFURSBTRVQgTlVMTDsKKy0tIGxlZnRvdmVycyBvbiBib3RoIHNpZGVzOgor VVBEQVRFIHRlbXBvcmFsX3JuZyBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5 LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgU0VUIGlkID0gJ1s3LDddJyBXSEVSRSBpZCA9ICdb Niw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAn WzEwMCwxMDBdJzsKKy0tIG5vbi1GUE8gdXBkYXRlOgorVVBEQVRFIHRlbXBvcmFsX3JuZyBT RVQgaWQgPSAnWzcsN10nIFdIRVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVt cG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworLS0gRksgYWNyb3Nz IHR3byByZWZlcmVuY2VkIHJvd3M6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVT ICgnWzgsOF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEnKSk7CitJTlNF UlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzgsOF0nLCB0c3JhbmdlKCcyMDIwLTAx LTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5n IFZBTFVFUyAoJ1syMDAsMjAwXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0w MScpLCAnWzgsOF0nKTsKK1VQREFURSB0ZW1wb3JhbF9ybmcgU0VUIGlkID0gJ1s5LDldJyBX SEVSRSBpZCA9ICdbOCw4XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6dGltZXN0 YW1wOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1sy MDAsMjAwXSc7CistLSBjbGVhbiB1cAorREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJu ZyBXSEVSRSBpZCBJTiAoJ1sxMDAsMTAwXScsICdbMjAwLDIwMF0nKTsKK0RFTEVURSBGUk9N IHRlbXBvcmFsX3JuZyBXSEVSRSBpZCBJTiAoJ1s2LDZdJywgJ1s3LDddJywgJ1s4LDhdJywg J1s5LDldJyk7CisKKy0tIHRlc3QgRksgcGFyZW50IGRlbGV0ZXMgU0VUIE5VTEwKK0lOU0VS VCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbNiw2XScsIHRzcmFuZ2UoJzIwMTgtMDEt MDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcg VkFMVUVTICgnWzEwMCwxMDBdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAx JyksICdbNiw2XScpOworLS0gbGVmdG92ZXJzIG9uIGJvdGggc2lkZXM6CitERUxFVEUgRlJP TSB0ZW1wb3JhbF9ybmcgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0w MScgVE8gJzIwMjAtMDEtMDEnIFdIRVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00g dGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworLS0gbm9uLUZQ TyBkZWxldGU6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzYsNl0n OworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAs MTAwXSc7CistLSBGSyBhY3Jvc3MgdHdvIHJlZmVyZW5jZWQgcm93czoKK0lOU0VSVCBJTlRP IHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbOCw4XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAn MjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbOCw4 XScsIHRzcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRP IHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzIwMCwyMDBdJywgdHNyYW5nZSgnMjAx OC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbOCw4XScpOworREVMRVRFIEZST00gdGVtcG9y YWxfcm5nIFdIRVJFIGlkID0gJ1s4LDhdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEn Ojp0aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUg aWQgPSAnWzIwMCwyMDBdJzsKKy0tIGNsZWFuIHVwCitERUxFVEUgRlJPTSB0ZW1wb3JhbF9m a19ybmcycm5nIFdIRVJFIGlkIElOICgnWzEwMCwxMDBdJywgJ1syMDAsMjAwXScpOworREVM RVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkIElOICgnWzYsNl0nLCAnWzcsN10nLCAn WzgsOF0nLCAnWzksOV0nKTsKIAogLS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRlcyBTRVQgREVG QVVMVAogSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1stMSwtMV0nLCB0c3Jh bmdlKG51bGwsIG51bGwpKTsKLUlOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdb MTIsMTJdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOwotSU5TRVJU IElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbOCw4XScsIHRzcmFuZ2UoJzIw MTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzEyLDEyXScpOworSU5TRVJUIElOVE8gdGVt cG9yYWxfcm5nIFZBTFVFUyAoJ1s2LDZdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIx LTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdb MTAwLDEwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s2LDZd Jyk7CiBBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCiAgIEFMVEVSIENPTFVNTiBw YXJlbnRfaWQgU0VUIERFRkFVTFQgJ1stMSwtMV0nLAogCURST1AgQ09OU1RSQUlOVCB0ZW1w b3JhbF9ma19ybmcycm5nX2ZrLApAQCAtODIyLDYgKzkxMywyNDUgQEAgQUxURVIgVEFCTEUg dGVtcG9yYWxfZmtfcm5nMnJuZwogCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0Qg dmFsaWRfYXQpCiAJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nCiAJCU9OIERFTEVURSBTRVQg REVGQVVMVCBPTiBVUERBVEUgU0VUIERFRkFVTFQ7CistLSBsZWZ0b3ZlcnMgb24gYm90aCBz aWRlczoKK1VQREFURSB0ZW1wb3JhbF9ybmcgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJP TSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFNFVCBpZCA9ICdbNyw3XScgV0hFUkUg aWQgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJF IGlkID0gJ1sxMDAsMTAwXSc7CistLSBub24tRlBPIHVwZGF0ZToKK1VQREFURSB0ZW1wb3Jh bF9ybmcgU0VUIGlkID0gJ1s3LDddJyBXSEVSRSBpZCA9ICdbNiw2XSc7CitTRUxFQ1QgKiBG Uk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwMCwxMDBdJzsKKy0tIEZL IGFjcm9zcyB0d28gcmVmZXJlbmNlZCByb3dzOgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5n IFZBTFVFUyAoJ1s4LDhdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJykp OworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s4LDhdJywgdHNyYW5nZSgn MjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtf cm5nMnJuZyBWQUxVRVMgKCdbMjAwLDIwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIw MjEtMDEtMDEnKSwgJ1s4LDhdJyk7CitVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCBpZCA9ICdb OSw5XScgV0hFUkUgaWQgPSAnWzgsOF0nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6 OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBp ZCA9ICdbMjAwLDIwMF0nOworLS0gY2xlYW4gdXAKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2Zr X3JuZzJybmcgV0hFUkUgaWQgSU4gKCdbMTAwLDEwMF0nLCAnWzIwMCwyMDBdJyk7CitERUxF VEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgSU4gKCdbNiw2XScsICdbNyw3XScsICdb OCw4XScsICdbOSw5XScpOworCistLSB0ZXN0IEZLIHBhcmVudCBkZWxldGVzIFNFVCBERUZB VUxUCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzYsNl0nLCB0c3Jhbmdl KCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9m a19ybmcycm5nIFZBTFVFUyAoJ1sxMDAsMTAwXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAn MjAyMS0wMS0wMScpLCAnWzYsNl0nKTsKKy0tIGxlZnRvdmVycyBvbiBib3RoIHNpZGVzOgor REVMRVRFIEZST00gdGVtcG9yYWxfcm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00g JzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBXSEVSRSBpZCA9ICdbNiw2XSc7CitTRUxF Q1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwMCwxMDBdJzsK Ky0tIG5vbi1GUE8gdXBkYXRlOgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlk ID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBp ZCA9ICdbMTAwLDEwMF0nOworLS0gRksgYWNyb3NzIHR3byByZWZlcmVuY2VkIHJvd3M6CitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzgsOF0nLCB0c3JhbmdlKCcyMDE4 LTAxLTAxJywgJzIwMjAtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFM VUVTICgnWzgsOF0nLCB0c3JhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1syMDAsMjAwXScsIHRz cmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzgsOF0nKTsKK0RFTEVURSBG Uk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbOCw4XScgQU5EIHZhbGlkX2F0IEA+ICcy MDE5LTAxLTAxJzo6dGltZXN0YW1wOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcy cm5nIFdIRVJFIGlkID0gJ1syMDAsMjAwXSc7CistLSBjbGVhbiB1cAorREVMRVRFIEZST00g dGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCBJTiAoJ1sxMDAsMTAwXScsICdbMjAwLDIw MF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCBJTiAoJ1s2LDZdJywg J1s3LDddJywgJ1s4LDhdJywgJ1s5LDldJyk7CisKKy0tIHRlc3QgRksgcGFyZW50IHVwZGF0 ZXMgQ0FTQ0FERSAodHdvIHNjYWxhciBjb2xzKQorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5n MiBWQUxVRVMgKCdbNiw2XScsICdbNiw2XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAy MS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFZBTFVFUyAo J1sxMDAsMTAwXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzYs Nl0nLCAnWzYsNl0nKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrMl9ybmcycm5nCisJRFJP UCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrMl9ybmcycm5nX2ZrLAorCUFERCBDT05TVFJBSU5U IHRlbXBvcmFsX2ZrMl9ybmcycm5nX2ZrCisJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQxLCBw YXJlbnRfaWQyLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5n MgorCQlPTiBERUxFVEUgQ0FTQ0FERSBPTiBVUERBVEUgQ0FTQ0FERTsKKy0tIGxlZnRvdmVy cyBvbiBib3RoIHNpZGVzOgorVVBEQVRFIHRlbXBvcmFsX3JuZzIgRk9SIFBPUlRJT04gT0Yg dmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFNFVCBpZDEgPSAn WzcsN10nIFdIRVJFIGlkMSA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2Zr Ml9ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CistLSBub24tRlBPIHVwZGF0ZToK K1VQREFURSB0ZW1wb3JhbF9ybmcyIFNFVCBpZDEgPSAnWzcsN10nIFdIRVJFIGlkMSA9ICdb Niw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0g J1sxMDAsMTAwXSc7CistLSBGSyBhY3Jvc3MgdHdvIHJlZmVyZW5jZWQgcm93czoKK0lOU0VS VCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVTICgnWzgsOF0nLCAnWzgsOF0nLCB0c3Jhbmdl KCcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9y bmcyIFZBTFVFUyAoJ1s4LDhdJywgJ1s4LDhdJywgdHNyYW5nZSgnMjAyMC0wMS0wMScsICcy MDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmsyX3JuZzJybmcgVkFMVUVT ICgnWzIwMCwyMDBdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdb OCw4XScsICdbOCw4XScpOworVVBEQVRFIHRlbXBvcmFsX3JuZzIgU0VUIGlkMSA9ICdbOSw5 XScgV0hFUkUgaWQxID0gJ1s4LDhdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjp0 aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlk ID0gJ1syMDAsMjAwXSc7CistLSBjbGVhbiB1cAorREVMRVRFIEZST00gdGVtcG9yYWxfZmsy X3JuZzJybmcgV0hFUkUgaWQgSU4gKCdbMTAwLDEwMF0nLCAnWzIwMCwyMDBdJyk7CitERUxF VEUgRlJPTSB0ZW1wb3JhbF9ybmcyIFdIRVJFIGlkMSBJTiAoJ1s2LDZdJywgJ1s3LDddJywg J1s4LDhdJywgJ1s5LDldJyk7CisKKy0tIHRlc3QgRksgcGFyZW50IGRlbGV0ZXMgQ0FTQ0FE RSAodHdvIHNjYWxhciBjb2xzKQorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMg KCdbNiw2XScsICdbNiw2XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScp KTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFZBTFVFUyAoJ1sxMDAsMTAw XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzYsNl0nLCAnWzYs Nl0nKTsKKy0tIGxlZnRvdmVycyBvbiBib3RoIHNpZGVzOgorREVMRVRFIEZST00gdGVtcG9y YWxfcm5nMiBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAn MjAyMC0wMS0wMScgV0hFUkUgaWQxID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9y YWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwMCwxMDBdJzsKKy0tIG5vbi1GUE8gZGVs ZXRlOgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nMiBXSEVSRSBpZDEgPSAnWzYsNl0nOwor U0VMRUNUICogRlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEw MF0nOworLS0gRksgYWNyb3NzIHR3byByZWZlcmVuY2VkIHJvd3M6CitJTlNFUlQgSU5UTyB0 ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1s4LDhdJywgJ1s4LDhdJywgdHNyYW5nZSgnMjAxOC0w MS0wMScsICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMiBWQUxV RVMgKCdbOCw4XScsICdbOCw4XScsIHRzcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0w MScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFZBTFVFUyAoJ1syMDAs MjAwXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzgsOF0nLCAn WzgsOF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZzIgV0hFUkUgaWQxID0gJ1s4LDhd JyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBG Uk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1syMDAsMjAwXSc7CistLSBj bGVhbiB1cAorREVMRVRFIEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgSU4g KCdbMTAwLDEwMF0nLCAnWzIwMCwyMDBdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcy IFdIRVJFIGlkMSBJTiAoJ1s2LDZdJywgJ1s3LDddJywgJ1s4LDhdJywgJ1s5LDldJyk7CisK Ky0tIHRlc3QgRksgcGFyZW50IHVwZGF0ZXMgU0VUIE5VTEwgKHR3byBzY2FsYXIgY29scykK K0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVTICgnWzYsNl0nLCAnWzYsNl0nLCB0 c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1w b3JhbF9mazJfcm5nMnJuZyBWQUxVRVMgKCdbMTAwLDEwMF0nLCB0c3JhbmdlKCcyMDE4LTAx LTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s2LDZdJywgJ1s2LDZdJyk7CitBTFRFUiBUQUJMRSB0 ZW1wb3JhbF9mazJfcm5nMnJuZworCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9mazJfcm5n MnJuZ19maywKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9mazJfcm5nMnJuZ19maworCQlG T1JFSUdOIEtFWSAocGFyZW50X2lkMSwgcGFyZW50X2lkMiwgUEVSSU9EIHZhbGlkX2F0KQor CQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZzIKKwkJT04gREVMRVRFIFNFVCBOVUxMIE9OIFVQ REFURSBTRVQgTlVMTDsKKy0tIGxlZnRvdmVycyBvbiBib3RoIHNpZGVzOgorVVBEQVRFIHRl bXBvcmFsX3JuZzIgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScg VE8gJzIwMjAtMDEtMDEnIFNFVCBpZDEgPSAnWzcsN10nIFdIRVJFIGlkMSA9ICdbNiw2XSc7 CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAs MTAwXSc7CistLSBub24tRlBPIHVwZGF0ZToKK1VQREFURSB0ZW1wb3JhbF9ybmcyIFNFVCBp ZDEgPSAnWzcsN10nIFdIRVJFIGlkMSA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBv cmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CistLSBGSyBhY3Jvc3Mg dHdvIHJlZmVyZW5jZWQgcm93czoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVT ICgnWzgsOF0nLCAnWzgsOF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEn KSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1s4LDhdJywgJ1s4LDhd JywgdHNyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8g dGVtcG9yYWxfZmsyX3JuZzJybmcgVkFMVUVTICgnWzIwMCwyMDBdJywgdHNyYW5nZSgnMjAx OC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbOCw4XScsICdbOCw4XScpOworVVBEQVRFIHRl bXBvcmFsX3JuZzIgU0VUIGlkMSA9ICdbOSw5XScgV0hFUkUgaWQxID0gJ1s4LDhdJyBBTkQg dmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9NIHRl bXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1syMDAsMjAwXSc7CistLSBjbGVhbiB1 cAorREVMRVRFIEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgSU4gKCdbMTAw LDEwMF0nLCAnWzIwMCwyMDBdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcyIFdIRVJF IGlkMSBJTiAoJ1s2LDZdJywgJ1s3LDddJywgJ1s4LDhdJywgJ1s5LDldJyk7CisKKy0tIHRl c3QgRksgcGFyZW50IGRlbGV0ZXMgU0VUIE5VTEwgKHR3byBzY2FsYXIgY29scykKK0lOU0VS VCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVTICgnWzYsNl0nLCAnWzYsNl0nLCB0c3Jhbmdl KCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9m azJfcm5nMnJuZyBWQUxVRVMgKCdbMTAwLDEwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywg JzIwMjEtMDEtMDEnKSwgJ1s2LDZdJywgJ1s2LDZdJyk7CistLSBsZWZ0b3ZlcnMgb24gYm90 aCBzaWRlczoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZzIgRk9SIFBPUlRJT04gT0YgdmFs aWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFdIRVJFIGlkMSA9ICdb Niw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0g J1sxMDAsMTAwXSc7CistLSBub24tRlBPIGRlbGV0ZToKK0RFTEVURSBGUk9NIHRlbXBvcmFs X3JuZzIgV0hFUkUgaWQxID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmsy X3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwMCwxMDBdJzsKKy0tIEZLIGFjcm9zcyB0d28gcmVm ZXJlbmNlZCByb3dzOgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdbOCw4 XScsICdbOCw4XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lO U0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVTICgnWzgsOF0nLCAnWzgsOF0nLCB0c3Jh bmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9mazJfcm5nMnJuZyBWQUxVRVMgKCdbMjAwLDIwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAx JywgJzIwMjEtMDEtMDEnKSwgJ1s4LDhdJywgJ1s4LDhdJyk7CitERUxFVEUgRlJPTSB0ZW1w b3JhbF9ybmcyIFdIRVJFIGlkMSA9ICdbOCw4XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAx LTAxJzo6dGltZXN0YW1wOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBX SEVSRSBpZCA9ICdbMjAwLDIwMF0nOworLS0gY2xlYW4gdXAKK0RFTEVURSBGUk9NIHRlbXBv cmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkIElOICgnWzEwMCwxMDBdJywgJ1syMDAsMjAwXScp OworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nMiBXSEVSRSBpZDEgSU4gKCdbNiw2XScsICdb Nyw3XScsICdbOCw4XScsICdbOSw5XScpOworCistLSB0ZXN0IEZLIHBhcmVudCBkZWxldGVz IFNFVCBOVUxMICh0d28gc2NhbGFyIGNvbHMsIFNFVCBOVUxMIHN1YnNldCkKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVTICgnWzYsNl0nLCAnWzYsNl0nLCB0c3JhbmdlKCcy MDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9mazJf cm5nMnJuZyBWQUxVRVMgKCdbMTAwLDEwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIw MjEtMDEtMDEnKSwgJ1s2LDZdJywgJ1s2LDZdJyk7CistLSBmYWlscyBiZWNhdXNlIHlvdSBj YW4ndCBzZXQgdGhlIFBFUklPRCBjb2x1bW46CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9mazJf cm5nMnJuZworCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9mazJfcm5nMnJuZ19maywKKwlB REQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9mazJfcm5nMnJuZ19maworCQlGT1JFSUdOIEtFWSAo cGFyZW50X2lkMSwgcGFyZW50X2lkMiwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VT IHRlbXBvcmFsX3JuZzIKKwkJT04gREVMRVRFIFNFVCBOVUxMICh2YWxpZF9hdCkgT04gVVBE QVRFIFNFVCBOVUxMOworLS0gb2s6CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9mazJfcm5nMnJu ZworCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9mazJfcm5nMnJuZ19maywKKwlBREQgQ09O U1RSQUlOVCB0ZW1wb3JhbF9mazJfcm5nMnJuZ19maworCQlGT1JFSUdOIEtFWSAocGFyZW50 X2lkMSwgcGFyZW50X2lkMiwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBv cmFsX3JuZzIKKwkJT04gREVMRVRFIFNFVCBOVUxMIChwYXJlbnRfaWQxKSBPTiBVUERBVEUg U0VUIE5VTEw7CistLSBsZWZ0b3ZlcnMgb24gYm90aCBzaWRlczoKK0RFTEVURSBGUk9NIHRl bXBvcmFsX3JuZzIgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScg VE8gJzIwMjAtMDEtMDEnIFdIRVJFIGlkMSA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRl bXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CistLSBub24tRlBP IGRlbGV0ZToKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZzIgV0hFUkUgaWQxID0gJ1s2LDZd JzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEw MCwxMDBdJzsKKy0tIEZLIGFjcm9zcyB0d28gcmVmZXJlbmNlZCByb3dzOgorSU5TRVJUIElO VE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdbOCw4XScsICdbOCw4XScsIHRzcmFuZ2UoJzIw MTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIg VkFMVUVTICgnWzgsOF0nLCAnWzgsOF0nLCB0c3JhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEt MDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9mazJfcm5nMnJuZyBWQUxVRVMgKCdb MjAwLDIwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s4LDhd JywgJ1s4LDhdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcyIFdIRVJFIGlkMSA9ICdb OCw4XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6dGltZXN0YW1wOworU0VMRUNU ICogRlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMjAwLDIwMF0nOwor LS0gY2xlYW4gdXAKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlk IElOICgnWzEwMCwxMDBdJywgJ1syMDAsMjAwXScpOworREVMRVRFIEZST00gdGVtcG9yYWxf cm5nMiBXSEVSRSBpZDEgSU4gKCdbNiw2XScsICdbNyw3XScsICdbOCw4XScsICdbOSw5XScp OworCistLSB0ZXN0IEZLIHBhcmVudCB1cGRhdGVzIFNFVCBERUZBVUxUICh0d28gc2NhbGFy IGNvbHMpCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1stMSwtMV0nLCAn Wy0xLC0xXScsIHRzcmFuZ2UobnVsbCwgbnVsbCkpOworSU5TRVJUIElOVE8gdGVtcG9yYWxf cm5nMiBWQUxVRVMgKCdbNiw2XScsICdbNiw2XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAn MjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFZBTFVF UyAoJ1sxMDAsMTAwXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAn WzYsNl0nLCAnWzYsNl0nKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrMl9ybmcycm5nCisg IEFMVEVSIENPTFVNTiBwYXJlbnRfaWQxIFNFVCBERUZBVUxUICdbLTEsLTFdJywKKyAgQUxU RVIgQ09MVU1OIHBhcmVudF9pZDIgU0VUIERFRkFVTFQgJ1stMSwtMV0nLAorCURST1AgQ09O U1RSQUlOVCB0ZW1wb3JhbF9mazJfcm5nMnJuZ19maywKKwlBREQgQ09OU1RSQUlOVCB0ZW1w b3JhbF9mazJfcm5nMnJuZ19maworCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkMSwgcGFyZW50 X2lkMiwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZzIKKwkJ T04gREVMRVRFIFNFVCBERUZBVUxUIE9OIFVQREFURSBTRVQgREVGQVVMVDsKKy0tIGxlZnRv dmVycyBvbiBib3RoIHNpZGVzOgorVVBEQVRFIHRlbXBvcmFsX3JuZzIgRk9SIFBPUlRJT04g T0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFNFVCBpZDEg PSAnWzcsN10nLCBpZDIgPSAnWzcsN10nIFdIRVJFIGlkMSA9ICdbNiw2XSc7CitTRUxFQ1Qg KiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7Cist LSBub24tRlBPIHVwZGF0ZToKK1VQREFURSB0ZW1wb3JhbF9ybmcyIFNFVCBpZDEgPSAnWzcs N10nLCBpZDIgPSAnWzcsN10nIFdIRVJFIGlkMSA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9N IHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CistLSBGSyBh Y3Jvc3MgdHdvIHJlZmVyZW5jZWQgcm93czoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIg VkFMVUVTICgnWzgsOF0nLCAnWzgsOF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjAt MDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1s4LDhdJywg J1s4LDhdJywgdHNyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJU IElOVE8gdGVtcG9yYWxfZmsyX3JuZzJybmcgVkFMVUVTICgnWzIwMCwyMDBdJywgdHNyYW5n ZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbOCw4XScsICdbOCw4XScpOworVVBE QVRFIHRlbXBvcmFsX3JuZzIgU0VUIGlkMSA9ICdbOSw5XScsIGlkMiA9ICdbOSw5XScgV0hF UkUgaWQxID0gJ1s4LDhdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjp0aW1lc3Rh bXA7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1sy MDAsMjAwXSc7CistLSBjbGVhbiB1cAorREVMRVRFIEZST00gdGVtcG9yYWxfZmsyX3JuZzJy bmcgV0hFUkUgaWQgSU4gKCdbMTAwLDEwMF0nLCAnWzIwMCwyMDBdJyk7CitERUxFVEUgRlJP TSB0ZW1wb3JhbF9ybmcyIFdIRVJFIGlkMSBJTiAoJ1s2LDZdJywgJ1s3LDddJywgJ1s4LDhd JywgJ1s5LDldJyk7CisKKy0tIHRlc3QgRksgcGFyZW50IGRlbGV0ZXMgU0VUIERFRkFVTFQg KHR3byBzY2FsYXIgY29scykKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVTICgn WzYsNl0nLCAnWzYsNl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7 CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9mazJfcm5nMnJuZyBWQUxVRVMgKCdbMTAwLDEwMF0n LCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s2LDZdJywgJ1s2LDZd Jyk7CistLSBsZWZ0b3ZlcnMgb24gYm90aCBzaWRlczoKK0RFTEVURSBGUk9NIHRlbXBvcmFs X3JuZzIgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIw MjAtMDEtMDEnIFdIRVJFIGlkMSA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFs X2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CistLSBub24tRlBPIHVwZGF0 ZToKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZzIgV0hFUkUgaWQxID0gJ1s2LDZdJzsKK1NF TEVDVCAqIEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwMCwxMDBd JzsKKy0tIEZLIGFjcm9zcyB0d28gcmVmZXJlbmNlZCByb3dzOgorSU5TRVJUIElOVE8gdGVt cG9yYWxfcm5nMiBWQUxVRVMgKCdbOCw4XScsICdbOCw4XScsIHRzcmFuZ2UoJzIwMTgtMDEt MDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVT ICgnWzgsOF0nLCAnWzgsOF0nLCB0c3JhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEn KSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9mazJfcm5nMnJuZyBWQUxVRVMgKCdbMjAwLDIw MF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s4LDhdJywgJ1s4 LDhdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcyIFdIRVJFIGlkMSA9ICdbOCw4XScg QU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6dGltZXN0YW1wOworU0VMRUNUICogRlJP TSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMjAwLDIwMF0nOworLS0gY2xl YW4gdXAKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkIElOICgn WzEwMCwxMDBdJywgJ1syMDAsMjAwXScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nMiBX SEVSRSBpZDEgSU4gKCdbNiw2XScsICdbNyw3XScsICdbOCw4XScsICdbOSw5XScpOworCist LSB0ZXN0IEZLIHBhcmVudCBkZWxldGVzIFNFVCBERUZBVUxUICh0d28gc2NhbGFyIGNvbHMs IFNFVCBERUZBVUxUIHN1YnNldCkKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVT ICgnWy0xLC0xXScsICdbNiw2XScsIHRzcmFuZ2UobnVsbCwgbnVsbCkpOworSU5TRVJUIElO VE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdbNiw2XScsICdbNiw2XScsIHRzcmFuZ2UoJzIw MTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrMl9y bmcycm5nIFZBTFVFUyAoJ1sxMDAsMTAwXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAy MS0wMS0wMScpLCAnWzYsNl0nLCAnWzYsNl0nKTsKKy0tIGZhaWxzIGJlY2F1c2UgeW91IGNh bid0IHNldCB0aGUgUEVSSU9EIGNvbHVtbjoKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrMl9y bmcycm5nCisgIEFMVEVSIENPTFVNTiBwYXJlbnRfaWQxIFNFVCBERUZBVUxUICdbLTEsLTFd JywKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfZmsyX3JuZzJybmdfZmssCisJQUREIENP TlNUUkFJTlQgdGVtcG9yYWxfZmsyX3JuZzJybmdfZmsKKwkJRk9SRUlHTiBLRVkgKHBhcmVu dF9pZDEsIHBhcmVudF9pZDIsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1w b3JhbF9ybmcyCisJCU9OIERFTEVURSBTRVQgREVGQVVMVCAodmFsaWRfYXQpIE9OIFVQREFU RSBTRVQgREVGQVVMVDsKKy0tIG9rOgorQUxURVIgVEFCTEUgdGVtcG9yYWxfZmsyX3JuZzJy bmcKKyAgQUxURVIgQ09MVU1OIHBhcmVudF9pZDEgU0VUIERFRkFVTFQgJ1stMSwtMV0nLAor CURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9mazJfcm5nMnJuZ19maywKKwlBREQgQ09OU1RS QUlOVCB0ZW1wb3JhbF9mazJfcm5nMnJuZ19maworCQlGT1JFSUdOIEtFWSAocGFyZW50X2lk MSwgcGFyZW50X2lkMiwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFs X3JuZzIKKwkJT04gREVMRVRFIFNFVCBERUZBVUxUIChwYXJlbnRfaWQxKSBPTiBVUERBVEUg U0VUIERFRkFVTFQ7CistLSBsZWZ0b3ZlcnMgb24gYm90aCBzaWRlczoKK0RFTEVURSBGUk9N IHRlbXBvcmFsX3JuZzIgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0w MScgVE8gJzIwMjAtMDEtMDEnIFdIRVJFIGlkMSA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9N IHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CistLSBub24t RlBPIHVwZGF0ZToKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZzIgV0hFUkUgaWQxID0gJ1s2 LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgPSAn WzEwMCwxMDBdJzsKKy0tIEZLIGFjcm9zcyB0d28gcmVmZXJlbmNlZCByb3dzOgorSU5TRVJU IElOVE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdbOCw4XScsICdbOCw4XScsIHRzcmFuZ2Uo JzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3Ju ZzIgVkFMVUVTICgnWzgsOF0nLCAnWzgsOF0nLCB0c3JhbmdlKCcyMDIwLTAxLTAxJywgJzIw MjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1stMSwt MV0nLCAnWzgsOF0nLCB0c3JhbmdlKG51bGwsIG51bGwpKTsKK0lOU0VSVCBJTlRPIHRlbXBv cmFsX2ZrMl9ybmcycm5nIFZBTFVFUyAoJ1syMDAsMjAwXScsIHRzcmFuZ2UoJzIwMTgtMDEt MDEnLCAnMjAyMS0wMS0wMScpLCAnWzgsOF0nLCAnWzgsOF0nKTsKK0RFTEVURSBGUk9NIHRl bXBvcmFsX3JuZzIgV0hFUkUgaWQxID0gJ1s4LDhdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTkt MDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5n IFdIRVJFIGlkID0gJ1syMDAsMjAwXSc7CistLSBjbGVhbiB1cAorREVMRVRFIEZST00gdGVt cG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgSU4gKCdbMTAwLDEwMF0nLCAnWzIwMCwyMDBd Jyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcyIFdIRVJFIGlkMSBJTiAoJ1s2LDZdJywg J1s3LDddJywgJ1s4LDhdJywgJ1s5LDldJyk7CiAKIC0tCiAtLSB0ZXN0IEZPUkVJR04gS0VZ LCBtdWx0aXJhbmdlIHJlZmVyZW5jZXMgbXVsdGlyYW5nZQpAQCAtMTA2OCw2ICsxMzk4LDIw IEBAIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRlbXVsdGlyYW5nZShk YXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wCiAtLSBjaGFuZ2luZyB0aGUgc2NhbGFy IHBhcnQgZmFpbHM6CiBVUERBVEUgdGVtcG9yYWxfbWx0cm5nIFNFVCBpZCA9ICdbNyw3XScK IFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRlbXVsdGlyYW5nZShkYXRl cmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKKy0tIGNoYW5naW5nIGFuIHVu cmVmZXJlbmNlZCBwYXJ0IGlzIG9rYXk6CitVUERBVEUgdGVtcG9yYWxfbWx0cm5nCitGT1Ig UE9SVElPTiBPRiB2YWxpZF9hdCAoZGF0ZW11bHRpcmFuZ2UoZGF0ZXJhbmdlKCcyMDE4LTAx LTAyJywgJzIwMTgtMDEtMDMnKSkpCitTRVQgaWQgPSAnWzcsN10nCitXSEVSRSBpZCA9ICdb NSw1XSc7CistLSBjaGFuZ2luZyBqdXN0IGEgcGFydCBmYWlsczoKK1VQREFURSB0ZW1wb3Jh bF9tbHRybmcKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IChkYXRlbXVsdGlyYW5nZShkYXRl cmFuZ2UoJzIwMTgtMDEtMDUnLCAnMjAxOC0wMS0xMCcpKSkKK1NFVCBpZCA9ICdbNyw3XScK K1dIRVJFIGlkID0gJ1s1LDVdJzsKKy0tIHRoZW4gZGVsZXRlIHRoZSBvYmplY3RpbmcgRksg cmVjb3JkIGFuZCB0aGUgc2FtZSBQSyB1cGRhdGUgc3VjY2VlZHM6CitERUxFVEUgRlJPTSB0 ZW1wb3JhbF9ma19tbHRybmcybWx0cm5nIFdIRVJFIGlkID0gJ1szLDNdJzsKK1VQREFURSB0 ZW1wb3JhbF9tbHRybmcgU0VUIHZhbGlkX2F0ID0gZGF0ZW11bHRpcmFuZ2UoZGF0ZXJhbmdl KCcyMDE2LTAxLTAxJywgJzIwMTYtMDItMDEnKSkKK1dIRVJFIGlkID0gJ1s1LDVdJyBBTkQg dmFsaWRfYXQgPSBkYXRlbXVsdGlyYW5nZShkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAx OC0wMi0wMScpKTsKIC0tIGNsZWFuIHVwOgogREVMRVRFIEZST00gdGVtcG9yYWxfZmtfbWx0 cm5nMm1sdHJuZyBXSEVSRSBwYXJlbnRfaWQgPSAnWzUsNV0nOwogREVMRVRFIEZST00gdGVt cG9yYWxfbWx0cm5nIFdIRVJFIGlkIElOICgnWzUsNV0nLCAnWzcsN10nKTsKQEAgLTExMDAs NiArMTQ0NCwyMCBAQCBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gZGF0ZW11 bHRpcmFuZ2UoZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMAogLS0gY2hhbmdpbmcg dGhlIHNjYWxhciBwYXJ0IGZhaWxzOgogVVBEQVRFIHRlbXBvcmFsX21sdHJuZyBTRVQgaWQg PSAnWzcsN10nCiBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gZGF0ZW11bHRp cmFuZ2UoZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKSk7CistLSBjaGFu Z2luZyBhbiB1bnJlZmVyZW5jZWQgcGFydCBpcyBva2F5OgorVVBEQVRFIHRlbXBvcmFsX21s dHJuZworRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgKGRhdGVtdWx0aXJhbmdlKGRhdGVyYW5n ZSgnMjAxOC0wMS0wMicsICcyMDE4LTAxLTAzJykpKQorU0VUIGlkID0gJ1s3LDddJworV0hF UkUgaWQgPSAnWzUsNV0nOworLS0gY2hhbmdpbmcganVzdCBhIHBhcnQgZmFpbHM6CitVUERB VEUgdGVtcG9yYWxfbWx0cm5nCitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCAoZGF0ZW11bHRp cmFuZ2UoZGF0ZXJhbmdlKCcyMDE4LTAxLTA1JywgJzIwMTgtMDEtMTAnKSkpCitTRVQgaWQg PSAnWzcsN10nCitXSEVSRSBpZCA9ICdbNSw1XSc7CistLSB0aGVuIGRlbGV0ZSB0aGUgb2Jq ZWN0aW5nIEZLIHJlY29yZCBhbmQgdGhlIHNhbWUgUEsgdXBkYXRlIHN1Y2NlZWRzOgorREVM RVRFIEZST00gdGVtcG9yYWxfZmtfbWx0cm5nMm1sdHJuZyBXSEVSRSBpZCA9ICdbMywzXSc7 CitVUERBVEUgdGVtcG9yYWxfbWx0cm5nIFNFVCB2YWxpZF9hdCA9IGRhdGVtdWx0aXJhbmdl KGRhdGVyYW5nZSgnMjAxNi0wMS0wMScsICcyMDE2LTAyLTAxJykpCitXSEVSRSBpZCA9ICdb NSw1XScgQU5EIHZhbGlkX2F0ID0gZGF0ZW11bHRpcmFuZ2UoZGF0ZXJhbmdlKCcyMDE4LTAx LTAxJywgJzIwMTgtMDItMDEnKSk7CiAtLSBjbGVhbiB1cDoKIERFTEVURSBGUk9NIHRlbXBv cmFsX2ZrX21sdHJuZzJtbHRybmcgV0hFUkUgcGFyZW50X2lkID0gJ1s1LDVdJzsKIERFTEVU RSBGUk9NIHRlbXBvcmFsX21sdHJuZyBXSEVSRSBpZCBJTiAoJ1s1LDVdJywgJ1s3LDddJyk7 CkBAIC0xMTIzLDYgKzE0ODEsMTcgQEAgSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfbWx0cm5n Mm1sdHJuZyBWQUxVRVMgKCdbMywzXScsIGRhdGVtdWx0aXJhbmdlKGRhdGVyYW5nZSgKIERF TEVURSBGUk9NIHRlbXBvcmFsX21sdHJuZyBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlk X2F0ID0gZGF0ZW11bHRpcmFuZ2UoZGF0ZXJhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMt MDEnKSk7CiAtLSBhIFBLIGRlbGV0ZSB0aGF0IGZhaWxzIGJlY2F1c2UgYm90aCBhcmUgcmVm ZXJlbmNlZDoKIERFTEVURSBGUk9NIHRlbXBvcmFsX21sdHJuZyBXSEVSRSBpZCA9ICdbNSw1 XScgQU5EIHZhbGlkX2F0ID0gZGF0ZW11bHRpcmFuZ2UoZGF0ZXJhbmdlKCcyMDE4LTAxLTAx JywgJzIwMTgtMDItMDEnKSk7CistLSBkZWxldGluZyBhbiB1bnJlZmVyZW5jZWQgcGFydCBp cyBva2F5OgorREVMRVRFIEZST00gdGVtcG9yYWxfbWx0cm5nCitGT1IgUE9SVElPTiBPRiB2 YWxpZF9hdCAoZGF0ZW11bHRpcmFuZ2UoZGF0ZXJhbmdlKCcyMDE4LTAxLTAyJywgJzIwMTgt MDEtMDMnKSkpCitXSEVSRSBpZCA9ICdbNSw1XSc7CistLSBkZWxldGluZyBqdXN0IGEgcGFy dCBmYWlsczoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX21sdHJuZworRk9SIFBPUlRJT04gT0Yg dmFsaWRfYXQgKGRhdGVtdWx0aXJhbmdlKGRhdGVyYW5nZSgnMjAxOC0wMS0wNScsICcyMDE4 LTAxLTEwJykpKQorV0hFUkUgaWQgPSAnWzUsNV0nOworLS0gdGhlbiBkZWxldGUgdGhlIG9i amVjdGluZyBGSyByZWNvcmQgYW5kIHRoZSBzYW1lIFBLIGRlbGV0ZSBzdWNjZWVkczoKK0RF TEVURSBGUk9NIHRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmcgV0hFUkUgaWQgPSAnWzMsM10n OworREVMRVRFIEZST00gdGVtcG9yYWxfbWx0cm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQg dmFsaWRfYXQgPSBkYXRlbXVsdGlyYW5nZShkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAx OC0wMi0wMScpKTsKIC0tIGNsZWFuIHVwOgogREVMRVRFIEZST00gdGVtcG9yYWxfZmtfbWx0 cm5nMm1sdHJuZyBXSEVSRSBwYXJlbnRfaWQgPSAnWzUsNV0nOwogREVMRVRFIEZST00gdGVt cG9yYWxfbWx0cm5nIFdIRVJFIGlkIElOICgnWzUsNV0nKTsKQEAgLTExNDcsMTAgKzE1MTYs NDcgQEAgSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfbWx0cm5nMm1sdHJuZyBWQUxVRVMgKCdb MywzXScsIGRhdGVtdWx0aXJhbmdlKGRhdGVyYW5nZSgKIERFTEVURSBGUk9NIHRlbXBvcmFs X21sdHJuZyBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gZGF0ZW11bHRpcmFu Z2UoZGF0ZXJhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKSk7CiAtLSBhIFBLIGRl bGV0ZSB0aGF0IGZhaWxzIGJlY2F1c2UgYm90aCBhcmUgcmVmZXJlbmNlZDoKIERFTEVURSBG Uk9NIHRlbXBvcmFsX21sdHJuZyBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0g ZGF0ZW11bHRpcmFuZ2UoZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKSk7 CistLSBkZWxldGluZyBhbiB1bnJlZmVyZW5jZWQgcGFydCBpcyBva2F5OgorREVMRVRFIEZS T00gdGVtcG9yYWxfbWx0cm5nCitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCAoZGF0ZW11bHRp cmFuZ2UoZGF0ZXJhbmdlKCcyMDE4LTAxLTAyJywgJzIwMTgtMDEtMDMnKSkpCitXSEVSRSBp ZCA9ICdbNSw1XSc7CistLSBkZWxldGluZyBqdXN0IGEgcGFydCBmYWlsczoKK0RFTEVURSBG Uk9NIHRlbXBvcmFsX21sdHJuZworRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgKGRhdGVtdWx0 aXJhbmdlKGRhdGVyYW5nZSgnMjAxOC0wMS0wNScsICcyMDE4LTAxLTEwJykpKQorV0hFUkUg aWQgPSAnWzUsNV0nOworLS0gdGhlbiBkZWxldGUgdGhlIG9iamVjdGluZyBGSyByZWNvcmQg YW5kIHRoZSBzYW1lIFBLIGRlbGV0ZSBzdWNjZWVkczoKK0RFTEVURSBGUk9NIHRlbXBvcmFs X2ZrX21sdHJuZzJtbHRybmcgV0hFUkUgaWQgPSAnWzMsM10nOworREVMRVRFIEZST00gdGVt cG9yYWxfbWx0cm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRlbXVs dGlyYW5nZShkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKIC0tIGNs ZWFuIHVwOgogREVMRVRFIEZST00gdGVtcG9yYWxfZmtfbWx0cm5nMm1sdHJuZyBXSEVSRSBw YXJlbnRfaWQgPSAnWzUsNV0nOwogREVMRVRFIEZST00gdGVtcG9yYWxfbWx0cm5nIFdIRVJF IGlkIElOICgnWzUsNV0nKTsKIAorLS0gRksgd2l0aCBhIGN1c3RvbSByYW5nZSB0eXBlCisK K0NSRUFURSBUWVBFIG15ZGF0ZXJhbmdlIEFTIHJhbmdlKHN1YnR5cGU9ZGF0ZSk7CisKK0NS RUFURSBUQUJMRSB0ZW1wb3JhbF9ybmczICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQg bXlkYXRlcmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ybmczX3BrIFBSSU1BUlkgS0VZ IChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CitDUkVBVEUgVEFCTEUgdGVt cG9yYWxfZmszX3JuZzJybmcgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCBteWRhdGVy YW5nZSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmsz X3JuZzJybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBT KSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrM19ybmcycm5nX2ZrIEZPUkVJR04gS0VZIChw YXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcz IChpZCwgUEVSSU9EIHZhbGlkX2F0KSBPTiBERUxFVEUgQ0FTQ0FERQorKTsKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX3JuZzMgVkFMVUVTICgnWzgsOF0nLCBteWRhdGVyYW5nZSgnMjAxOC0w MS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmszX3JuZzJy bmcgVkFMVUVTICgnWzUsNV0nLCBteWRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAx LTAxJyksICdbOCw4XScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nMyBGT1IgUE9SVElP TiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgV0hFUkUg aWQgPSAnWzgsOF0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9mazNfcm5nMnJuZyBXSEVS RSBpZCA9ICdbNSw1XSc7CisKK0RST1AgVEFCTEUgdGVtcG9yYWxfZmszX3JuZzJybmc7CitE Uk9QIFRBQkxFIHRlbXBvcmFsX3JuZzM7CitEUk9QIFRZUEUgbXlkYXRlcmFuZ2U7CisKIC0t IEZLIGJldHdlZW4gcGFydGl0aW9uZWQgdGFibGVzCiAKIENSRUFURSBUQUJMRSB0ZW1wb3Jh bF9wYXJ0aXRpb25lZF9ybmcgKApAQCAtMTE1OSw4ICsxNTY1LDggQEAgQ1JFQVRFIFRBQkxF IHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyAoCiAgIG5hbWUgdGV4dCwKIAlDT05TVFJBSU5U IHRlbXBvcmFsX3Bhcml0aW9uZWRfcm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQg V0lUSE9VVCBPVkVSTEFQUykKICkgUEFSVElUSU9OIEJZIExJU1QgKGlkKTsKLUNSRUFURSBU QUJMRSB0cDEgcGFydGl0aW9uIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBGT1IgVkFM VUVTIElOICgnWzEsMV0nLCAnWzMsM10nLCAnWzUsNV0nLCAnWzcsN10nLCAnWzksOV0nLCAn WzExLDExXScpOwotQ1JFQVRFIFRBQkxFIHRwMiBwYXJ0aXRpb24gT0YgdGVtcG9yYWxfcGFy dGl0aW9uZWRfcm5nIEZPUiBWQUxVRVMgSU4gKCdbMiwyXScsICdbNCw0XScsICdbNiw2XScs ICdbOCw4XScsICdbMTAsMTBdJywgJ1sxMiwxMl0nKTsKK0NSRUFURSBUQUJMRSB0cDEgUEFS VElUSU9OIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBGT1IgVkFMVUVTIElOICgnWzEs MV0nLCAnWzMsM10nLCAnWzUsNV0nLCAnWzcsN10nLCAnWzksOV0nLCAnWzExLDExXScsICdb MTMsMTNdJywgJ1sxNSwxNV0nLCAnWzE3LDE3XScsICdbMTksMTldJywgJ1syMSwyMV0nLCAn WzIzLDIzXScpOworQ1JFQVRFIFRBQkxFIHRwMiBQQVJUSVRJT04gT0YgdGVtcG9yYWxfcGFy dGl0aW9uZWRfcm5nIEZPUiBWQUxVRVMgSU4gKCdbMCwwXScsICdbMiwyXScsICdbNCw0XScs ICdbNiw2XScsICdbOCw4XScsICdbMTAsMTBdJywgJ1sxMiwxMl0nLCAnWzE0LDE0XScsICdb MTYsMTZdJywgJ1sxOCwxOF0nLCAnWzIwLDIwXScsICdbMjIsMjJdJywgJ1syNCwyNF0nKTsK IElOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMKICAgKCdbMSwx XScsIGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDAwLTAyLTAxJyksICdvbmUnKSwKICAg KCdbMSwxXScsIGRhdGVyYW5nZSgnMjAwMC0wMi0wMScsICcyMDAwLTAzLTAxJyksICdvbmUn KSwKQEAgLTExNzQsOCArMTU4MCw4IEBAIENSRUFURSBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRp b25lZF9ma19ybmcycm5nICgKIAlDT05TVFJBSU5UIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2Zr X3JuZzJybmdfZmsgRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQog CQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyAoaWQsIFBFUklPRCB2YWxp ZF9hdCkKICkgUEFSVElUSU9OIEJZIExJU1QgKGlkKTsKLUNSRUFURSBUQUJMRSB0ZmtwMSBw YXJ0aXRpb24gT0YgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBGT1IgVkFMVUVT IElOICgnWzEsMV0nLCAnWzMsM10nLCAnWzUsNV0nLCAnWzcsN10nLCAnWzksOV0nLCAnWzEx LDExXScpOwotQ1JFQVRFIFRBQkxFIHRma3AyIHBhcnRpdGlvbiBPRiB0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ma19ybmcycm5nIEZPUiBWQUxVRVMgSU4gKCdbMiwyXScsICdbNCw0XScsICdb Niw2XScsICdbOCw4XScsICdbMTAsMTBdJywgJ1sxMiwxMl0nKTsKK0NSRUFURSBUQUJMRSB0 ZmtwMSBQQVJUSVRJT04gT0YgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBGT1Ig VkFMVUVTIElOICgnWzEsMV0nLCAnWzMsM10nLCAnWzUsNV0nLCAnWzcsN10nLCAnWzksOV0n LCAnWzExLDExXScsICdbMTMsMTNdJywgJ1sxNSwxNV0nLCAnWzE3LDE3XScsICdbMTksMTld JywgJ1syMSwyMV0nLCAnWzIzLDIzXScpOworQ1JFQVRFIFRBQkxFIHRma3AyIFBBUlRJVElP TiBPRiB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIEZPUiBWQUxVRVMgSU4gKCdb MCwwXScsICdbMiwyXScsICdbNCw0XScsICdbNiw2XScsICdbOCw4XScsICdbMTAsMTBdJywg J1sxMiwxMl0nLCAnWzE0LDE0XScsICdbMTYsMTZdJywgJ1sxOCwxOF0nLCAnWzIwLDIwXScs ICdbMjIsMjJdJywgJ1syNCwyNF0nKTsKIAogLS0gcGFydGl0aW9uZWQgRksgY2hpbGQgaW5z ZXJ0cwogCkBAIC0xMjU5LDM3ICsxNjY1LDEwNyBAQCBERUxFVEUgRlJPTSB0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IGRhdGVy YW5nZQogCiAtLSBwYXJ0aXRpb25lZCBGSyBwYXJlbnQgdXBkYXRlcyBDQVNDQURFCiAKK0lO U0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbNiw2XScsIGRh dGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVt cG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdbNCw0XScsIGRhdGVyYW5n ZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbNiw2XScpOwogQUxURVIgVEFCTEUg dGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZwogCURST1AgQ09OU1RSQUlOVCB0ZW1w b3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX2ZrLAogCUFERCBDT05TVFJBSU5UIHRlbXBv cmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfZmsKIAkJRk9SRUlHTiBLRVkgKHBhcmVudF9p ZCwgUEVSSU9EIHZhbGlkX2F0KQogCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3BhcnRpdGlvbmVk X3JuZwogCQlPTiBERUxFVEUgQ0FTQ0FERSBPTiBVUERBVEUgQ0FTQ0FERTsKK1VQREFURSB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAn MjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFNFVCBpZCA9ICdbNyw3XScgV0hFUkUgaWQg PSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcy cm5nIFdIRVJFIGlkID0gJ1s0LDRdJzsKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9y bmcgU0VUIGlkID0gJ1s3LDddJyBXSEVSRSBpZCA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9N IHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzQsNF0nOwor SU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1sxNSwxNV0n LCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRP IHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbMTUsMTVdJywgZGF0ZXJhbmdl KCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1sxMCwxMF0nLCBkYXRlcmFuZ2UoJzIw MTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzE1LDE1XScpOworVVBEQVRFIHRlbXBvcmFs X3BhcnRpdGlvbmVkX3JuZyBTRVQgaWQgPSAnWzE2LDE2XScgV0hFUkUgaWQgPSAnWzE1LDE1 XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6ZGF0ZTsKK1NFTEVDVCAqIEZST00g dGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAsMTBdJzsK IAogLS0gcGFydGl0aW9uZWQgRksgcGFyZW50IGRlbGV0ZXMgQ0FTQ0FERQogCitJTlNFUlQg SU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzgsOF0nLCBkYXRlcmFu Z2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFs X3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzUsNV0nLCBkYXRlcmFuZ2UoJzIw MTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzgsOF0nKTsKK0RFTEVURSBGUk9NIHRlbXBv cmFsX3BhcnRpdGlvbmVkX3JuZyBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5 LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgV0hFUkUgaWQgPSAnWzgsOF0nOworU0VMRUNUICog RlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1s1LDVd JzsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBXSEVSRSBpZCA9ICdb OCw4XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcg V0hFUkUgaWQgPSAnWzUsNV0nOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRf cm5nIFZBTFVFUyAoJ1sxNywxN10nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0w MS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMg KCdbMTcsMTddJywgZGF0ZXJhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1sx MSwxMV0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzE3LDE3 XScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFdIRVJFIGlkID0g J1sxNywxN10nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6OmRhdGU7CitTRUxFQ1Qg KiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEx LDExXSc7CisKIC0tIHBhcnRpdGlvbmVkIEZLIHBhcmVudCB1cGRhdGVzIFNFVCBOVUxMCiAK K0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbOSw5XScs IGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8g dGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdbNiw2XScsIGRhdGVy YW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbOSw5XScpOwogQUxURVIgVEFC TEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZwogCURST1AgQ09OU1RSQUlOVCB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX2ZrLAogCUFERCBDT05TVFJBSU5UIHRl bXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfZmsKIAkJRk9SRUlHTiBLRVkgKHBhcmVu dF9pZCwgUEVSSU9EIHZhbGlkX2F0KQogCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3BhcnRpdGlv bmVkX3JuZwogCQlPTiBERUxFVEUgU0VUIE5VTEwgT04gVVBEQVRFIFNFVCBOVUxMOworVVBE QVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBG Uk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgU0VUIGlkID0gJ1sxMCwxMF0nIFdI RVJFIGlkID0gJ1s5LDldJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRf Zmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbNiw2XSc7CitVUERBVEUgdGVtcG9yYWxfcGFydGl0 aW9uZWRfcm5nIFNFVCBpZCA9ICdbMTAsMTBdJyBXSEVSRSBpZCA9ICdbOSw5XSc7CitTRUxF Q1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAn WzYsNl0nOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAo J1sxOCwxOF0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lO U0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbMTgsMThdJywg ZGF0ZXJhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1sxMiwxMl0nLCBkYXRl cmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzE4LDE4XScpOworVVBEQVRF IHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBTRVQgaWQgPSAnWzE5LDE5XScgV0hFUkUgaWQg PSAnWzE4LDE4XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6ZGF0ZTsKK1NFTEVD VCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdb MTIsMTJdJzsKIAogLS0gcGFydGl0aW9uZWQgRksgcGFyZW50IGRlbGV0ZXMgU0VUIE5VTEwK IAorSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1sxMSwx MV0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzcsN10nLCBk YXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzExLDExXScpOworREVM RVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlk X2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBXSEVSRSBpZCA9ICdbMTEs MTFdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBX SEVSRSBpZCA9ICdbNyw3XSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9y bmcgV0hFUkUgaWQgPSAnWzExLDExXSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRp dGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzcsN10nOworSU5TRVJUIElOVE8gdGVt cG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1syMCwyMF0nLCBkYXRlcmFuZ2UoJzIw MTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRp dGlvbmVkX3JuZyBWQUxVRVMgKCdbMjAsMjBdJywgZGF0ZXJhbmdlKCcyMDIwLTAxLTAxJywg JzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19y bmcycm5nIFZBTFVFUyAoJ1sxMywxM10nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAy MS0wMS0wMScpLCAnWzIwLDIwXScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9u ZWRfcm5nIFdIRVJFIGlkID0gJ1syMCwyMF0nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0w MSc6OmRhdGU7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJy bmcgV0hFUkUgaWQgPSAnWzEzLDEzXSc7CisKIC0tIHBhcnRpdGlvbmVkIEZLIHBhcmVudCB1 cGRhdGVzIFNFVCBERUZBVUxUCiAKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVk X3JuZyBWQUxVRVMgKCdbMCwwXScsIGRhdGVyYW5nZShudWxsLCBudWxsKSk7CitJTlNFUlQg SU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzEyLDEyXScsIGRhdGVy YW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9y YWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdbOCw4XScsIGRhdGVyYW5nZSgn MjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbMTIsMTJdJyk7CiBBTFRFUiBUQUJMRSB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nCi0gIEFMVEVSIENPTFVNTiBwYXJlbnRf aWQgU0VUIERFRkFVTFQgJ1stMSwtMV0nLAorICBBTFRFUiBDT0xVTU4gcGFyZW50X2lkIFNF VCBERUZBVUxUICdbMCwwXScsCiAJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX3BhcnRpdGlv bmVkX2ZrX3JuZzJybmdfZmssCiAJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0aW9u ZWRfZmtfcm5nMnJuZ19mawogCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFs aWRfYXQpCiAJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nCiAJCU9OIERF TEVURSBTRVQgREVGQVVMVCBPTiBVUERBVEUgU0VUIERFRkFVTFQ7CitVUERBVEUgdGVtcG9y YWxfcGFydGl0aW9uZWRfcm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTkt MDEtMDEnIFRPICcyMDIwLTAxLTAxJyBTRVQgaWQgPSAnWzEzLDEzXScgV0hFUkUgaWQgPSAn WzEyLDEyXSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJy bmcgV0hFUkUgaWQgPSAnWzgsOF0nOworVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3Ju ZyBTRVQgaWQgPSAnWzEzLDEzXScgV0hFUkUgaWQgPSAnWzEyLDEyXSc7CitTRUxFQ1QgKiBG Uk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzgsOF0n OworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1syMiwy Ml0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbMjIsMjJdJywgZGF0ZXJh bmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1sxNCwxNF0nLCBkYXRlcmFuZ2Uo JzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzIyLDIyXScpOworVVBEQVRFIHRlbXBv cmFsX3BhcnRpdGlvbmVkX3JuZyBTRVQgaWQgPSAnWzIzLDIzXScgV0hFUkUgaWQgPSAnWzIy LDIyXScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6ZGF0ZTsKK1NFTEVDVCAqIEZS T00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTQsMTRd JzsKIAogLS0gcGFydGl0aW9uZWQgRksgcGFyZW50IGRlbGV0ZXMgU0VUIERFRkFVTFQKIAor SU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1sxNCwxNF0n LCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRP IHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzksOV0nLCBkYXRl cmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzE0LDE0XScpOworREVMRVRF IEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0 IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBXSEVSRSBpZCA9ICdbMTQsMTRd JzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVS RSBpZCA9ICdbOSw5XSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcg V0hFUkUgaWQgPSAnWzE0LDE0XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlv bmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzksOV0nOworSU5TRVJUIElOVE8gdGVtcG9y YWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1syNCwyNF0nLCBkYXRlcmFuZ2UoJzIwMTgt MDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlv bmVkX3JuZyBWQUxVRVMgKCdbMjQsMjRdJywgZGF0ZXJhbmdlKCcyMDIwLTAxLTAxJywgJzIw MjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcy cm5nIFZBTFVFUyAoJ1sxNSwxNV0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0w MS0wMScpLCAnWzI0LDI0XScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRf cm5nIFdIRVJFIGlkID0gJ1syNCwyNF0nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6 OmRhdGU7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcg V0hFUkUgaWQgPSAnWzE1LDE1XSc7CisKIERST1AgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9u ZWRfZmtfcm5nMnJuZzsKIERST1AgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nOwot LSAKMi40Mi4wCgo= --------------XirkSnpA0J2rgDaW8dSEFd2s Content-Type: text/x-patch; charset=UTF-8; name="v25-0008-Add-PERIODs.patch" Content-Disposition: attachment; filename="v25-0008-Add-PERIODs.patch" Content-Transfer-Encoding: base64 RnJvbSAwZmZmZDZmOTg2ZDk1ZDgyODU0ODQxNWE5NjNhMzg5YmMwYzM4ODk3IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IFNhdCwgOSBKYW4gMjAyMSAyMTo1OTo0MyAtMDgw MApTdWJqZWN0OiBbUEFUQ0ggdjI1IDgvOF0gQWRkIFBFUklPRHMKCi0gQWRkZWQgcGFyc2lu ZyBmb3IgU1FMOjIwMTEgc3ludGF4IHRvIGRlZmluZSBhbiBhcHBsaWNhdGlvbi10aW1lIFBF UklPRCBvbiBhCiAgdGFibGUgKGluIGJvdGggQ1JFQVRFIFRBQkxFIGFuZCBBTFRFUiBUQUJM RSkuIE1ha2Ugc3VyZSB3ZSBjcmVhdGUgdGhlIFBFUklPRAogIGFmdGVyIGNvbHVtbnMgYXJl IGtub3duIChzaW5jZSBQRVJJT0RzIGNhbiByZWZlciB0byB0aGVtKSBidXQgYmVmb3JlCiAg Y29uc3RyYWludHMgYXJlIGhhbmRsZWQgKHNpbmNlIFBFUklPRHMgY2FuIGFwcGVhciBpbiB0 aGVtKS4KLSBBZGRlZCBBTFRFUiBUQUJMRSBEUk9QIHN1cHBvcnQgZm9yIFBFUklPRHMuCi0g Q3JlYXRlZCBwb3N0Z3Jlcy5wZ19wZXJpb2QgdGFibGUuCi0gQ3JlYXRlZCBpbmZvcm1hdGlv bl9zY2hlbWEucGVyaW9kcyB2aWV3LgotIEFkZGVkIHBnX2R1bXAgc3VwcG9ydC4KLSBBZGRl ZCB0ZXN0cyBhbmQgZG9jdW1lbnRhdGlvbi4KLSBBdXRvbWF0aWNhbGx5IGRlZmluZSBhIGNv bnN0cmFpbnQgZm9yIGVhY2ggUEVSSU9EIHJlcXVpcmluZyB0aGUgc3RhcnQgY29sdW1uCiAg dG8gYmUgbGVzcyB0aGFuIHRoZSBlbmQgY29sdW1uLgotIFdoZW4gY3JlYXRpbmcgYSBQRVJJ T0QsIGNob29zZSBhbiBhcHByb3ByaWF0ZSByYW5nZSB0eXBlIHdlIGNhbiB1c2UgdG8KICBp bXBsZW1lbnQgUEVSSU9ELXJlbGF0ZWQgb3BlcmF0aW9ucy4gWW91IGNhbiBjaG9vc2Ugb25l IGV4cGxpY2l0bHkgaWYgdGhlcmUKICBpcyBhbWJpZ3VpdHkgKGR1ZSB0byBtdWx0aXBsZSBy YW5nZSB0eXBlcyBjcmVhdGVkIG92ZXIgdGhlIHNhbWUgYmFzZSB0eXBlKS4KLS0tCiBkb2Mv c3JjL3NnbWwvY2F0YWxvZ3Muc2dtbCAgICAgICAgICAgICAgICAgICAgfCAxMTIgKysrCiBk b2Mvc3JjL3NnbWwvZGRsLnNnbWwgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNTggKysK IGRvYy9zcmMvc2dtbC9pbmZvcm1hdGlvbl9zY2hlbWEuc2dtbCAgICAgICAgICB8ICA2MyAr KwogZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl90YWJsZS5zZ21sICAgICAgICAgICAgIHwgIDI1 ICsKIGRvYy9zcmMvc2dtbC9yZWYvY29tbWVudC5zZ21sICAgICAgICAgICAgICAgICB8ICAg MiArCiBkb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90YWJsZS5zZ21sICAgICAgICAgICAgfCAg NjEgKy0KIGRvYy9zcmMvc2dtbC9yZWYvZGVsZXRlLnNnbWwgICAgICAgICAgICAgICAgICB8 ICAgMyArLQogZG9jL3NyYy9zZ21sL3JlZi91cGRhdGUuc2dtbCAgICAgICAgICAgICAgICAg IHwgICAzICstCiBzcmMvYmFja2VuZC9jYXRhbG9nL01ha2VmaWxlICAgICAgICAgICAgICAg ICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9hY2xjaGsuYyAgICAgICAgICAgICAg ICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL2NhdGFsb2cvZGVwZW5kZW5jeS5jICAgICAgICAg ICAgICB8ICAxNyArCiBzcmMvYmFja2VuZC9jYXRhbG9nL2hlYXAuYyAgICAgICAgICAgICAg ICAgICAgfCAgNzUgKysKIHNyYy9iYWNrZW5kL2NhdGFsb2cvaW5mb3JtYXRpb25fc2NoZW1h LnNxbCAgICB8ICAyMyArLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9tZXNvbi5idWlsZCAgICAg ICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL2NhdGFsb2cvb2JqZWN0YWRkcmVzcy5j ICAgICAgICAgICB8ICA3MyArKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wZXJpb2QuYyAg ICAgICAgICAgICAgIHwgMTMyICsrKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9zcWxfZmVhdHVy ZXMudHh0ICAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9hbHRlci5j ICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvY29tbWFuZHMvY29tbWVu dC5jICAgICAgICAgICAgICAgIHwgIDEwICsKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2Ryb3Bj bWRzLmMgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9jb21tYW5kcy9ldmVu dF90cmlnZ2VyLmMgICAgICAgICAgfCAgIDQgKwogc3JjL2JhY2tlbmQvY29tbWFuZHMvc2Vj bGFiZWwuYyAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3Rh YmxlY21kcy5jICAgICAgICAgICAgICB8IDg2MCArKysrKysrKysrKysrKysrKy0KIHNyYy9i YWNrZW5kL2NvbW1hbmRzL3ZpZXcuYyAgICAgICAgICAgICAgICAgICB8ICAgNCArLQogc3Jj L2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMgICAgICAgICAgICAgICAgIHwgICAzICsKIHNy Yy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgICAgICAgICAgICAgICAgICAgICB8ICA0MyArLQog c3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3JlbGF0aW9uLmMgICAgICAgICAgIHwgIDEwICsK IHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMgICAgICAgICAgICB8IDEyOCAr Ky0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9NYWtlZmlsZSAgICAgICAgICAgICAgICB8ICAg MSArCiBzcmMvYmFja2VuZC91dGlscy9hZHQvcGVyaW9kLmMgICAgICAgICAgICAgICAgfCAg NTYgKysKIHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5jICAgICAgICAgICB8 ICA4NyArKwogc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9hcmNoaXZlci5jICAgICAgICAg IHwgICAxICsKIHNyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgICAgICAgICAgICAgICAgICAg ICB8IDE3NSArKystCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oICAgICAgICAgICAgICAg ICAgICAgfCAgMTUgKwogc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXBfc29ydC5jICAgICAgICAg ICAgICAgIHwgICA3ICsKIHNyYy9iaW4vcHNxbC9kZXNjcmliZS5jICAgICAgICAgICAgICAg ICAgICAgICB8ICAzNiArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL2RlcGVuZGVuY3kuaCAgICAg ICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9oZWFwLmggICAgICAgICAg ICAgICAgICAgIHwgICA0ICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvbWVzb24uYnVpbGQgICAg ICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2luZGV4LmggICAg ICAgICAgICAgICAgfCAgIDEgLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wZXJpb2QuaCAg ICAgICAgICAgICAgIHwgIDU3ICsrCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3JhbmdlLmgg ICAgICAgICAgICAgICAgfCAgIDIgKwogc3JjL2luY2x1ZGUvY29tbWFuZHMvdGFibGVjbWRz LmggICAgICAgICAgICAgIHwgICA0ICstCiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVz LmggICAgICAgICAgICAgICAgfCAgNDAgKy0KIHNyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV91 dGlsY21kLmggICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS91dGlscy9sc3lzY2Fj aGUuaCAgICAgICAgICAgICAgICAgfCAgIDMgKwogc3JjL2luY2x1ZGUvdXRpbHMvcGVyaW9k LmggICAgICAgICAgICAgICAgICAgIHwgIDE5ICsKIC4uLi90ZXN0X2RkbF9kZXBhcnNlL3Rl c3RfZGRsX2RlcGFyc2UuYyAgICAgICB8ICAgNiArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL2dlbmVyYXRlZC5vdXQgICAgICAgfCAgIDQgKy0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvcGVyaW9kcy5vdXQgICAgICAgICB8IDI2NyArKysrKysKIHNyYy90ZXN0L3JlZ3Jl c3MvcGFyYWxsZWxfc2NoZWR1bGUgICAgICAgICAgICB8ICAgMiArLQogc3JjL3Rlc3QvcmVn cmVzcy9zcWwvcGVyaW9kcy5zcWwgICAgICAgICAgICAgIHwgMTc4ICsrKysKIDUyIGZpbGVz IGNoYW5nZWQsIDI2NDEgaW5zZXJ0aW9ucygrKSwgNDYgZGVsZXRpb25zKC0pCiBjcmVhdGUg bW9kZSAxMDA2NDQgc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wZXJpb2QuYwogY3JlYXRlIG1v ZGUgMTAwNjQ0IHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZXJpb2QuYwogY3JlYXRlIG1vZGUg MTAwNjQ0IHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcGVyaW9kLmgKIGNyZWF0ZSBtb2RlIDEw MDY0NCBzcmMvaW5jbHVkZS91dGlscy9wZXJpb2QuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNy Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGVyaW9kcy5vdXQKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBzcmMvdGVzdC9yZWdyZXNzL3NxbC9wZXJpb2RzLnNxbAoKZGlmZiAtLWdpdCBhL2RvYy9z cmMvc2dtbC9jYXRhbG9ncy5zZ21sIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKaW5k ZXggNmNlNmQwYTUwMTEuLmFmZWY2NTU4NTZjIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwv Y2F0YWxvZ3Muc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbApAQCAtMjMw LDYgKzIzMCwxMSBAQAogICAgICAgPGVudHJ5PmluZm9ybWF0aW9uIGFib3V0IHBhcnRpdGlv biBrZXkgb2YgdGFibGVzPC9lbnRyeT4KICAgICAgPC9yb3c+CiAKKyAgICAgPHJvdz4KKyAg ICAgIDxlbnRyeT48bGluayBsaW5rZW5kPSJjYXRhbG9nLXBnLXBlcmlvZCI+PHN0cnVjdG5h bWU+cGdfcGVyaW9kPC9zdHJ1Y3RuYW1lPjwvbGluaz48L2VudHJ5PgorICAgICAgPGVudHJ5 PnBlcmlvZHM8L2VudHJ5PgorICAgICA8L3Jvdz4KKwogICAgICA8cm93PgogICAgICAgPGVu dHJ5PjxsaW5rIGxpbmtlbmQ9ImNhdGFsb2ctcGctcG9saWN5Ij48c3RydWN0bmFtZT5wZ19w b2xpY3k8L3N0cnVjdG5hbWU+PC9saW5rPjwvZW50cnk+CiAgICAgICA8ZW50cnk+cm93LXNl Y3VyaXR5IHBvbGljaWVzPC9lbnRyeT4KQEAgLTU3MjMsNiArNTcyOCwxMTMgQEAgU0NSQU0t U0hBLTI1NiQ8cmVwbGFjZWFibGU+Jmx0O2l0ZXJhdGlvbiBjb3VudCZndDs8L3JlcGxhY2Vh YmxlPjo8cmVwbGFjZWFibGU+JmwKICAgICAgICBhcmUgc2ltcGxlIHJlZmVyZW5jZXMuCiAg ICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CisKKyAgICA8L3Rib2R5PgorICAg PC90Z3JvdXA+CisgIDwvdGFibGU+CisgPC9zZWN0MT4KKworCisgPHNlY3QxIGlkPSJjYXRh bG9nLXBnLXBlcmlvZCI+CisgIDx0aXRsZT48c3RydWN0bmFtZT5wZ19wZXJpb2Q8L3N0cnVj dG5hbWU+PC90aXRsZT4KKworICA8aW5kZXh0ZXJtIHpvbmU9ImNhdGFsb2ctcGctcGVyaW9k Ij4KKyAgIDxwcmltYXJ5PnBnX3BlcmlvZDwvcHJpbWFyeT4KKyAgPC9pbmRleHRlcm0+CisK KyAgPHBhcmE+CisgICBUaGUgY2F0YWxvZyA8c3RydWN0bmFtZT5wZ19wZXJpb2Q8L3N0cnVj dG5hbWU+IHN0b3JlcworICAgaW5mb3JtYXRpb24gYWJvdXQgc3lzdGVtIGFuZCBhcHBsaWNh dGlvbiB0aW1lIHBlcmlvZHMuCisgIDwvcGFyYT4KKworICA8cGFyYT4KKyAgIFBlcmlvZHMg YXJlIGRlc2NyaWJlZCBpbiA8eHJlZiBsaW5rZW5kPSJkZGwtcGVyaW9kcyIvPi4KKyAgPC9w YXJhPgorCisgIDx0YWJsZT4KKyAgIDx0aXRsZT48c3RydWN0bmFtZT5wZ19wZXJpb2Q8L3N0 cnVjdG5hbWU+IENvbHVtbnM8L3RpdGxlPgorCisgICA8dGdyb3VwIGNvbHM9IjEiPgorICAg IDx0aGVhZD4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxl X2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgQ29sdW1u IFR5cGUKKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIERlc2NyaXB0aW9u CisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisgICAgPC90aGVhZD4KKwor ICAgIDx0Ym9keT4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3Rh YmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0 cnVjdGZpZWxkPm9pZDwvc3RydWN0ZmllbGQ+IDx0eXBlPm9pZDwvdHlwZT4KKyAgICAgIDwv cGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIFJvdyBpZGVudGlmaWVyCisgICAgICA8L3Bh cmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSBy b2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlv biI+CisgICAgICAgPHN0cnVjdGZpZWxkPnBlcm5hbWU8L3N0cnVjdGZpZWxkPiA8dHlwZT50 ZXh0PC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgUGVyaW9k IG5hbWUKKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93 PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9 ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+cGVycmVsaWQ8L3N0 cnVjdGZpZWxkPiA8dHlwZT5vaWQ8L3R5cGU+CisgICAgICAgKHJlZmVyZW5jZXMgPGxpbmsg bGlua2VuZD0iY2F0YWxvZy1wZy1jbGFzcyI+PHN0cnVjdG5hbWU+cGdfY2xhc3M8L3N0cnVj dG5hbWU+PC9saW5rPi48c3RydWN0ZmllbGQ+b2lkPC9zdHJ1Y3RmaWVsZD4pCisgICAgICA8 L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBUaGUgdGFibGUgdGhpcyBwZXJpb2QgYmVs b25ncyB0bworICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxy b3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9s ZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5wZXJzdGFydDwv c3RydWN0ZmllbGQ+IDx0eXBlPmludDI8L3R5cGU+CisgICAgICAgKHJlZmVyZW5jZXMgPGxp bmsgbGlua2VuZD0iY2F0YWxvZy1wZy1hdHRyaWJ1dGUiPjxzdHJ1Y3RuYW1lPnBnX2F0dHJp YnV0ZTwvc3RydWN0bmFtZT48L2xpbms+LjxzdHJ1Y3RmaWVsZD5hdHRudW08L3N0cnVjdGZp ZWxkPikKKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIFRoZSBudW1iZXIg b2YgdGhlIHN0YXJ0IGNvbHVtbgorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93 PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRy eSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVs ZD5wZXJlbmQ8L3N0cnVjdGZpZWxkPiA8dHlwZT5pbnQyPC90eXBlPgorICAgICAgIChyZWZl cmVuY2VzIDxsaW5rIGxpbmtlbmQ9ImNhdGFsb2ctcGctYXR0cmlidXRlIj48c3RydWN0bmFt ZT5wZ19hdHRyaWJ1dGU8L3N0cnVjdG5hbWU+PC9saW5rPi48c3RydWN0ZmllbGQ+YXR0bnVt PC9zdHJ1Y3RmaWVsZD4pCisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBU aGUgbnVtYmVyIG9mIHRoZSBlbmQgY29sdW1uCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAg ICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3Rh YmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0 cnVjdGZpZWxkPnBlcnJhbmdlPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+aW50MjwvdHlwZT4KKyAg ICAgICAocmVmZXJlbmNlcyA8bGluayBsaW5rZW5kPSJjYXRhbG9nLXBnLWF0dHJpYnV0ZSI+ PHN0cnVjdG5hbWU+cGdfYXR0cmlidXRlPC9zdHJ1Y3RuYW1lPjwvbGluaz4uPHN0cnVjdGZp ZWxkPmF0dG51bTwvc3RydWN0ZmllbGQ+KQorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+ CisgICAgICAgVGhlIG51bWJlciBvZiB0aGUgPGxpdGVyYWw+R0VORVJBVEVEPC9saXRlcmFs PiBjb2x1bW4gdGhhdCBpbXBsZW1lbnRzIHRoZSA8bGl0ZXJhbD5QRVJJT0Q8L2xpdGVyYWw+ LgorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+Cisg ICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29s dW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5wZXJjb25zdHJhaW50PC9z dHJ1Y3RmaWVsZD4gPHR5cGU+b2lkPC90eXBlPgorICAgICAgIChyZWZlcmVuY2VzIDxsaW5r IGxpbmtlbmQ9ImNhdGFsb2ctcGctY29uc3RyYWludCI+PHN0cnVjdG5hbWU+cGdfY29uc3Ry YWludDwvc3RydWN0bmFtZT48L2xpbms+LjxzdHJ1Y3RmaWVsZD5vaWQ8L3N0cnVjdGZpZWxk PikKKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIFRoZSBPSUQgb2YgdGhl IHBlcmlvZCdzIDxsaXRlcmFsPkNIRUNLPC9saXRlcmFsPiBjb25zdHJhaW50CisgICAgICA8 L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKICAgICA8L3Rib2R5PgogICAgPC90Z3Jv dXA+CiAgIDwvdGFibGU+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvZGRsLnNnbWwgYi9k b2Mvc3JjL3NnbWwvZGRsLnNnbWwKaW5kZXggOWQ3ZTJjNzU2YmUuLjBiYzk0ODdmNGIxIDEw MDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvZGRsLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2Rk bC5zZ21sCkBAIC0xMzc1LDYgKzEzNzUsNjQgQEAgQ1JFQVRFIFRBQkxFIGNpcmNsZXMgKAog ICA8L3NlY3QyPgogIDwvc2VjdDE+CiAKKyA8c2VjdDEgaWQ9ImRkbC1wZXJpb2RzIj4KKyAg PHRpdGxlPlBlcmlvZHM8L3RpdGxlPgorCisgIDxwYXJhPgorICAgUGVyaW9kcyBhcmUgZGVm aW5pdGlvbnMgb24gYSB0YWJsZSB0aGF0IGFzc29jaWF0ZSBhIHBlcmlvZCBuYW1lIHdpdGgg YSBzdGFydAorICAgY29sdW1uIGFuZCBhbiBlbmQgY29sdW1uLiAgQm90aCBjb2x1bW5zIG11 c3QgYmUgb2YgZXhhY3RseSB0aGUgc2FtZSB0eXBlCisgICAoaW5jbHVkaW5nIGNvbGxhdGlv biksIGhhdmUgYSBidHJlZSBvcGVyYXRvciBjbGFzcywgYW5kIHRoZSBzdGFydCBjb2x1bW4K KyAgIHZhbHVlIG11c3QgYmUgc3RyaWN0bHkgbGVzcyB0aGFuIHRoZSBlbmQgY29sdW1uIHZh bHVlLgorICA8L3BhcmE+CisKKyAgPHBhcmE+CisgICBUaGVyZSBhcmUgdHdvIHR5cGVzIG9m IHBlcmlvZHM6IGFwcGxpY2F0aW9uIGFuZCBzeXN0ZW0uICBTeXN0ZW0gcGVyaW9kcyBhcmUK KyAgIGRpc3Rpbmd1aXNoZWQgYnkgdGhlaXIgbmFtZSB3aGljaCBtdXN0IGJlIDxsaXRlcmFs PlNZU1RFTV9USU1FPC9saXRlcmFsPi4gIEFueQorICAgb3RoZXIgbmFtZSBpcyBhbiBhcHBs aWNhdGlvbiBwZXJpb2QuCisgIDwvcGFyYT4KKworICA8c2VjdDIgaWQ9ImRkbC1wZXJpb2Rz LWFwcGxpY2F0aW9uLXBlcmlvZHMiPgorICA8dGl0bGU+QXBwbGljYXRpb24gUGVyaW9kczwv dGl0bGU+CisKKyAgIDxpbmRleHRlcm0+CisgICAgPHByaW1hcnk+cGVyaW9kPC9wcmltYXJ5 PgorICAgIDxzZWNvbmRhcnk+YXBwbGljYXRpb248L3NlY29uZGFyeT4KKyAgIDwvaW5kZXh0 ZXJtPgorCisgICA8cGFyYT4KKyAgICBBcHBsaWNhdGlvbiBwZXJpb2RzIGFyZSBkZWZpbmVk IG9uIGEgdGFibGUgdXNpbmcgdGhlIGZvbGxvd2luZyBzeW50YXg6CisgICA8L3BhcmE+CisK Kzxwcm9ncmFtbGlzdGluZz4KK0NSRUFURSBUQUJMRSBiaWxsaW5nX2FkZHJlc3NlcyAoCisg IGN1c3RvbWVyX2lkIGludGVnZXIsCisgIGFkZHJlc3NfaWQgaW50ZWdlciwKKyAgdmFsaWRf ZnJvbSBkYXRlLAorICB2YWxpZF90byBkYXRlLAorICA8ZW1waGFzaXM+UEVSSU9EIEZPUiB2 YWxpZGl0eSAodmFsaWRfZnJvbSwgdmFsaWRfdG8pPC9lbXBoYXNpcz4KKyk7Cis8L3Byb2dy YW1saXN0aW5nPgorCisgICA8cGFyYT4KKyAgICBBcHBsaWNhdGlvbiBwZXJpb2RzIGNhbiBi ZSB1c2VkIHRvIGRlZmluZSB0ZW1wb3JhbCBwcmltYXJ5IGFuZCBmb3JlaWduIGtleXMuCisg ICAgQW55IHRhYmxlIHdpdGggYSB0ZW1wb3JhbCBwcmltYXJ5IGtleSBpcyBhIHRlbXBvcmFs IHRhYmxlIGFuZCBzdXBwb3J0cyB0ZW1wb3JhbCB1cGRhdGUgYW5kIGRlbGV0ZSBjb21tYW5k cy4KKyAgIDwvcGFyYT4KKyAgPC9zZWN0Mj4KKworICA8c2VjdDIgaWQ9ImRkbC1wZXJpb2Rz LXN5c3RlbS1wZXJpb2RzIj4KKyAgIDx0aXRsZT5TeXN0ZW0gUGVyaW9kczwvdGl0bGU+CisK KyAgIDxpbmRleHRlcm0+CisgICAgPHByaW1hcnk+cGVyaW9kPC9wcmltYXJ5PgorICAgIDxz ZWNvbmRhcnk+c3lzdGVtPC9zZWNvbmRhcnk+CisgICA8L2luZGV4dGVybT4KKworICAgPHBh cmE+CisgICAgUGVyaW9kcyBmb3IgPGxpdGVyYWw+U1lTVEVNX1RJTUU8L2xpdGVyYWw+IGFy ZSBjdXJyZW50bHkgbm90IGltcGxlbWVudGVkLgorICAgPC9wYXJhPgorICA8L3NlY3QyPgor IDwvc2VjdDE+CisKICA8c2VjdDEgaWQ9ImRkbC1zeXN0ZW0tY29sdW1ucyI+CiAgIDx0aXRs ZT5TeXN0ZW0gQ29sdW1uczwvdGl0bGU+CiAKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9p bmZvcm1hdGlvbl9zY2hlbWEuc2dtbCBiL2RvYy9zcmMvc2dtbC9pbmZvcm1hdGlvbl9zY2hl bWEuc2dtbAppbmRleCA5ZTY2YmU0ZTgzZC4uNTU4Y2M3YjNmMTUgMTAwNjQ0Ci0tLSBhL2Rv Yy9zcmMvc2dtbC9pbmZvcm1hdGlvbl9zY2hlbWEuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwv aW5mb3JtYXRpb25fc2NoZW1hLnNnbWwKQEAgLTQxNzEsNiArNDE3MSw2OSBAQCBPUkRFUiBC WSBjLm9yZGluYWxfcG9zaXRpb247CiAgIDwvdGFibGU+CiAgPC9zZWN0MT4KIAorIDxzZWN0 MSBpZD0iaW5mb3NjaGVtYS1wZXJpb2RzIj4KKyAgPHRpdGxlPjxsaXRlcmFsPnBlcmlvZHM8 L2xpdGVyYWw+PC90aXRsZT4KKworICA8cGFyYT4KKyAgIFRoZSB2aWV3IDxsaXRlcmFsPnBh cmFtZXRlcnM8L2xpdGVyYWw+IGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IHRoZQorICAg cGVyaW9kcyBvZiBhbGwgdGFibGVzIGluIHRoZSBjdXJyZW50IGRhdGFiYXNlLiAgVGhlIHN0 YXJ0IGFuZCBlbmQgY29sdW1uCisgICBuYW1lcyBhcmUgb25seSBzaG93biBpZiB0aGUgY3Vy cmVudCB1c2VyIGhhcyBhY2Nlc3MgdG8gdGhlbSAoYnkgd2F5IG9mIGJlaW5nCisgICB0aGUg b3duZXIgb3IgaGF2aW5nIHNvbWUgcHJpdmlsZWdlKS4KKyAgPC9wYXJhPgorCisgIDx0YWJs ZT4KKyAgIDx0aXRsZT48bGl0ZXJhbD5wZXJpb2RzPC9saXRlcmFsPiBDb2x1bW5zPC90aXRs ZT4KKworICAgPHRncm91cCBjb2xzPSIzIj4KKyAgICA8dGhlYWQ+CisgICAgIDxyb3c+Cisg ICAgICA8ZW50cnk+TmFtZTwvZW50cnk+CisgICAgICA8ZW50cnk+RGF0YSBUeXBlPC9lbnRy eT4KKyAgICAgIDxlbnRyeT5EZXNjcmlwdGlvbjwvZW50cnk+CisgICAgIDwvcm93PgorICAg IDwvdGhlYWQ+CisKKyAgICA8dGJvZHk+CisgICAgIDxyb3c+CisgICAgICA8ZW50cnk+PGxp dGVyYWw+dGFibGVfY2F0YWxvZzwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgPGVudHJ5Pjx0 eXBlPnNxbF9pZGVudGlmaWVyPC90eXBlPjwvZW50cnk+CisgICAgICA8ZW50cnk+TmFtZSBv ZiB0aGUgZGF0YWJhc2UgY29udGFpbmluZyB0aGUgcGVyaW9kIChhbHdheXMgdGhlIGN1cnJl bnQgZGF0YWJhc2UpPC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAg IDxlbnRyeT48bGl0ZXJhbD50YWJsZV9zY2hlbWE8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAg IDxlbnRyeT48dHlwZT5zcWxfaWRlbnRpZmllcjwvdHlwZT48L2VudHJ5PgorICAgICAgPGVu dHJ5Pk5hbWUgb2YgdGhlIHNjaGVtYSBjb250YWluaW5nIHRoZSBwZXJpb2Q8L2VudHJ5Pgor ICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5PjxsaXRlcmFsPnRhYmxl X25hbWU8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT48dHlwZT5zcWxfaWRlbnRp ZmllcjwvdHlwZT48L2VudHJ5PgorICAgICAgPGVudHJ5Pk5hbWUgb2YgdGhlIHRhYmxlIGNv bnRhaW5pbmcgdGhlIHBlcmlvZDwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+ CisgICAgICA8ZW50cnk+PGxpdGVyYWw+cGVyaW9kX25hbWU8L2xpdGVyYWw+PC9lbnRyeT4K KyAgICAgIDxlbnRyeT48dHlwZT5zcWxfaWRlbnRpZmllcjwvdHlwZT48L2VudHJ5PgorICAg ICAgPGVudHJ5Pk5hbWUgb2YgdGhlIHBlcmlvZDwvZW50cnk+CisgICAgIDwvcm93PgorCisg ICAgIDxyb3c+CisgICAgICA8ZW50cnk+PGxpdGVyYWw+c3RhcnRfY29sdW1uX25hbWU8L2xp dGVyYWw+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT48dHlwZT5zcWxfaWRlbnRpZmllcjwvdHlw ZT48L2VudHJ5PgorICAgICAgPGVudHJ5Pk5hbWUgb2YgdGhlIHN0YXJ0IGNvbHVtbiBmb3Ig dGhlIHBlcmlvZDwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8 ZW50cnk+PGxpdGVyYWw+ZW5kX2NvbHVtbl9uYW1lPC9saXRlcmFsPjwvZW50cnk+CisgICAg ICA8ZW50cnk+PHR5cGU+c3FsX2lkZW50aWZpZXI8L3R5cGU+PC9lbnRyeT4KKyAgICAgIDxl bnRyeT5OYW1lIG9mIHRoZSBlbmQgY29sdW1uIGZvciB0aGUgcGVyaW9kPC9lbnRyeT4KKyAg ICAgPC9yb3c+CisgICAgPC90Ym9keT4KKyAgIDwvdGdyb3VwPgorICA8L3RhYmxlPgorIDwv c2VjdDE+CisKICA8c2VjdDEgaWQ9ImluZm9zY2hlbWEtcmVmZXJlbnRpYWwtY29uc3RyYWlu dHMiPgogICA8dGl0bGU+PGxpdGVyYWw+cmVmZXJlbnRpYWxfY29uc3RyYWludHM8L2xpdGVy YWw+PC90aXRsZT4KIApkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl90YWJs ZS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl90YWJsZS5zZ21sCmluZGV4IDk2NzA2 NzExMDdlLi5lY2E5YzNiYTU0NSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9hbHRl cl90YWJsZS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfdGFibGUuc2dtbApA QCAtNjEsNiArNjEsOCBAQCBBTFRFUiBUQUJMRSBbIElGIEVYSVNUUyBdIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4KICAgICBBTFRFUiBDT05T VFJBSU5UIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb25zdHJhaW50X25hbWU8 L3JlcGxhY2VhYmxlPiBbIERFRkVSUkFCTEUgfCBOT1QgREVGRVJSQUJMRSBdIFsgSU5JVElB TExZIERFRkVSUkVEIHwgSU5JVElBTExZIElNTUVESUFURSBdCiAgICAgVkFMSURBVEUgQ09O U1RSQUlOVCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29uc3RyYWludF9uYW1l PC9yZXBsYWNlYWJsZT4KICAgICBEUk9QIENPTlNUUkFJTlQgWyBJRiBFWElTVFMgXSAgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbnN0cmFpbnRfbmFtZTwvcmVwbGFjZWFi bGU+IFsgUkVTVFJJQ1QgfCBDQVNDQURFIF0KKyAgICBBREQgUEVSSU9EIEZPUiA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGVyaW9kX25hbWU8L3JlcGxhY2VhYmxlPiAoIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zdGFydF9jb2x1bW48L3JlcGxhY2VhYmxl PiwgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmVuZF9jb2x1bW48L3JlcGxhY2Vh YmxlPiApIFsgV0lUSCAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wZXJpb2Rf b3B0aW9uPC9yZXBsYWNlYWJsZT4gPSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ dmFsdWU8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSApIF0KKyAgICBEUk9QIFBFUklPRCBGT1Ig PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBlcmlvZF9uYW1lPC9yZXBsYWNlYWJs ZT4gWyBSRVNUUklDVCB8IENBU0NBREUgXQogICAgIERJU0FCTEUgVFJJR0dFUiBbIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50cmlnZ2VyX25hbWU8L3JlcGxhY2VhYmxlPiB8 IEFMTCB8IFVTRVIgXQogICAgIEVOQUJMRSBUUklHR0VSIFsgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnRyaWdnZXJfbmFtZTwvcmVwbGFjZWFibGU+IHwgQUxMIHwgVVNFUiBd CiAgICAgRU5BQkxFIFJFUExJQ0EgVFJJR0dFUiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+dHJpZ2dlcl9uYW1lPC9yZXBsYWNlYWJsZT4KQEAgLTU4NSw2ICs1ODcsMjkgQEAg V0lUSCAoIE1PRFVMVVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bWVyaWNf bGl0ZXJhbDwvcmVwbGFjZWFibGU+LCBSRU0KICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJs aXN0ZW50cnk+CiAKKyAgIDx2YXJsaXN0ZW50cnkgaWQ9InNxbC1hbHRlcnRhYmxlLWRlc2Mt YWRkLXBlcmlvZCI+CisgICAgPHRlcm0+PGxpdGVyYWw+QUREIFBFUklPRCBGT1I8L2xpdGVy YWw+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBUaGlzIGZv cm0gYWRkcyBhIG5ldyBwZXJpb2QgdG8gYSB0YWJsZSB1c2luZyB0aGUgc2FtZSBzeW50YXgg YXMKKyAgICAgIDx4cmVmIGxpbmtlbmQ9InNxbC1jcmVhdGV0YWJsZSIvPi4KKyAgICAgPC9w YXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgPHZhcmxp c3RlbnRyeSBpZD0ic3FsLWFsdGVydGFibGUtZGVzYy1kcm9wLXBlcmlvZCI+CisgICAgPHRl cm0+PGxpdGVyYWw+RFJPUCBQRVJJT0QgRk9SPC9saXRlcmFsPjwvdGVybT4KKyAgICA8bGlz dGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgVGhpcyBmb3JtIGRyb3BzIHRoZSBzcGVjaWZp ZWQgcGVyaW9kIG9uIGEgdGFibGUuICBUaGUgc3RhcnQgYW5kIGVuZAorICAgICAgY29sdW1u cyB3aWxsIG5vdCBiZSBkcm9wcGVkIGJ5IHRoaXMgY29tbWFuZCBidXQgdGhlCisgICAgICA8 bGl0ZXJhbD5DSEVDSzwvbGl0ZXJhbD4gY29uc3RyYWludCB3aWxsIGJlLiAgWW91IHdpbGwg bmVlZCB0byBzYXkKKyAgICAgIDxsaXRlcmFsPkNBU0NBREU8L2xpdGVyYWw+IGlmIGFueXRo aW5nIG91dHNpZGUgdGhlIHRhYmxlIGRlcGVuZHMgb24gdGhlCisgICAgICBjb2x1bW4uCisg ICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKICAg IDx2YXJsaXN0ZW50cnkgaWQ9InNxbC1hbHRlcnRhYmxlLWRlc2MtZGlzYWJsZS1lbmFibGUt dHJpZ2dlciI+CiAgICAgPHRlcm0+PGxpdGVyYWw+RElTQUJMRTwvbGl0ZXJhbD4vPGxpdGVy YWw+RU5BQkxFIFsgUkVQTElDQSB8IEFMV0FZUyBdIFRSSUdHRVI8L2xpdGVyYWw+PC90ZXJt PgogICAgIDxsaXN0aXRlbT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY29tbWVu dC5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jb21tZW50LnNnbWwKaW5kZXggNWI0M2M1NmIx MzMuLjQ5YzJkZjk5NDQ5IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2NvbW1lbnQu c2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2NvbW1lbnQuc2dtbApAQCAtNDQsNiArNDQs NyBAQCBDT01NRU5UIE9OCiAgIE9QRVJBVE9SIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5vcGVyYXRvcl9uYW1lPC9yZXBsYWNlYWJsZT4gKDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5sZWZ0X3R5cGU8L3JlcGxhY2VhYmxlPiwgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnJpZ2h0X3R5cGU8L3JlcGxhY2VhYmxlPikgfAogICBPUEVSQVRPUiBD TEFTUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+b2JqZWN0X25hbWU8L3JlcGxh Y2VhYmxlPiBVU0lORyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+aW5kZXhfbWV0 aG9kPC9yZXBsYWNlYWJsZT4gfAogICBPUEVSQVRPUiBGQU1JTFkgPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPm9iamVjdF9uYW1lPC9yZXBsYWNlYWJsZT4gVVNJTkcgPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmluZGV4X21ldGhvZDwvcmVwbGFjZWFibGU+IHwK KyAgUEVSSU9EIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yZWxhdGlvbl9uYW1l PC9yZXBsYWNlYWJsZT4uPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBlcmlvZF9u YW1lPC9yZXBsYWNlYWJsZT4gfAogICBQT0xJQ1kgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPnBvbGljeV9uYW1lPC9yZXBsYWNlYWJsZT4gT04gPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiB8CiAgIFsgUFJPQ0VEVVJB TCBdIExBTkdVQUdFIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5vYmplY3RfbmFt ZTwvcmVwbGFjZWFibGU+IHwKICAgUFJPQ0VEVVJFIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5wcm9jZWR1cmVfbmFtZTwvcmVwbGFjZWFibGU+IFsgKCBbIFsgPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmFyZ21vZGU8L3JlcGxhY2VhYmxlPiBdIFsgPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmFyZ25hbWU8L3JlcGxhY2VhYmxlPiBdIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5hcmd0eXBlPC9yZXBsYWNlYWJsZT4gWywgLi4u XSBdICkgXSB8CkBAIC0zNDEsNiArMzQyLDcgQEAgQ09NTUVOVCBPTiBPUEVSQVRPUiBeICh0 ZXh0LCB0ZXh0KSBJUyAnUGVyZm9ybXMgaW50ZXJzZWN0aW9uIG9mIHR3byB0ZXh0cyc7CiBD T01NRU5UIE9OIE9QRVJBVE9SIC0gKE5PTkUsIGludGVnZXIpIElTICdVbmFyeSBtaW51cyc7 CiBDT01NRU5UIE9OIE9QRVJBVE9SIENMQVNTIGludDRvcHMgVVNJTkcgYnRyZWUgSVMgJzQg Ynl0ZSBpbnRlZ2VyIG9wZXJhdG9ycyBmb3IgYnRyZWVzJzsKIENPTU1FTlQgT04gT1BFUkFU T1IgRkFNSUxZIGludGVnZXJfb3BzIFVTSU5HIGJ0cmVlIElTICdhbGwgaW50ZWdlciBvcGVy YXRvcnMgZm9yIGJ0cmVlcyc7CitDT01NRU5UIE9OIFBFUklPRCBteV90YWJsZS5teV9jb2x1 bW4gSVMgJ1NhbGVzIHByb21vdGlvbiB2YWxpZGl0eSc7CiBDT01NRU5UIE9OIFBPTElDWSBt eV9wb2xpY3kgT04gbXl0YWJsZSBJUyAnRmlsdGVyIHJvd3MgYnkgdXNlcnMnOwogQ09NTUVO VCBPTiBQUk9DRURVUkUgbXlfcHJvYyAoaW50ZWdlciwgaW50ZWdlcikgSVMgJ1J1bnMgYSBy ZXBvcnQnOwogQ09NTUVOVCBPTiBQVUJMSUNBVElPTiBhbGx0YWJsZXMgSVMgJ1B1Ymxpc2hl cyBhbGwgb3BlcmF0aW9ucyBvbiBhbGwgdGFibGVzJzsKZGlmZiAtLWdpdCBhL2RvYy9zcmMv c2dtbC9yZWYvY3JlYXRlX3RhYmxlLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90 YWJsZS5zZ21sCmluZGV4IDNhNzkxYzg5YzMzLi5lNWQ2YTE3MmJkNyAxMDA2NDQKLS0tIGEv ZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFibGUuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwv cmVmL2NyZWF0ZV90YWJsZS5zZ21sCkBAIC0yMyw2ICsyMyw3IEBAIFBvc3RncmVTUUwgZG9j dW1lbnRhdGlvbgogPHN5bm9wc2lzPgogQ1JFQVRFIFsgWyBHTE9CQUwgfCBMT0NBTCBdIHsg VEVNUE9SQVJZIHwgVEVNUCB9IHwgVU5MT0dHRUQgXSBUQUJMRSBbIElGIE5PVCBFWElTVFMg XSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfbmFtZTwvcmVwbGFjZWFi bGU+ICggWwogICB7IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFt ZTwvcmVwbGFjZWFibGU+IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5kYXRhX3R5 cGU8L3JlcGxhY2VhYmxlPiBbIFNUT1JBR0UgeyBQTEFJTiB8IEVYVEVSTkFMIHwgRVhURU5E RUQgfCBNQUlOIHwgREVGQVVMVCB9IF0gWyBDT01QUkVTU0lPTiA8cmVwbGFjZWFibGU+Y29t cHJlc3Npb25fbWV0aG9kPC9yZXBsYWNlYWJsZT4gXSBbIENPTExBVEUgPHJlcGxhY2VhYmxl PmNvbGxhdGlvbjwvcmVwbGFjZWFibGU+IF0gWyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+Y29sdW1uX2NvbnN0cmFpbnQ8L3JlcGxhY2VhYmxlPiBbIC4uLiBdIF0KKyAgICB8 IDxyZXBsYWNlYWJsZT5wZXJpb2RfZGVmaW5pdGlvbjwvcmVwbGFjZWFibGU+CiAgICAgfCA8 cmVwbGFjZWFibGU+dGFibGVfY29uc3RyYWludDwvcmVwbGFjZWFibGU+CiAgICAgfCBMSUtF IDxyZXBsYWNlYWJsZT5zb3VyY2VfdGFibGU8L3JlcGxhY2VhYmxlPiBbIDxyZXBsYWNlYWJs ZT5saWtlX29wdGlvbjwvcmVwbGFjZWFibGU+IC4uLiBdIH0KICAgICBbLCAuLi4gXQpAQCAt MzcsNiArMzgsNyBAQCBDUkVBVEUgWyBbIEdMT0JBTCB8IExPQ0FMIF0geyBURU1QT1JBUlkg fCBURU1QIH0gfCBVTkxPR0dFRCBdIFRBQkxFIFsgSUYgTk9UIEVYSQogQ1JFQVRFIFsgWyBH TE9CQUwgfCBMT0NBTCBdIHsgVEVNUE9SQVJZIHwgVEVNUCB9IHwgVU5MT0dHRUQgXSBUQUJM RSBbIElGIE5PVCBFWElTVFMgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFi bGVfbmFtZTwvcmVwbGFjZWFibGU+CiAgICAgT0YgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPnR5cGVfbmFtZTwvcmVwbGFjZWFibGU+IFsgKAogICB7IDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFsgV0lUSCBPUFRJ T05TIF0gWyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX2NvbnN0cmFp bnQ8L3JlcGxhY2VhYmxlPiBbIC4uLiBdIF0KKyAgICB8IDxyZXBsYWNlYWJsZT5wZXJpb2Rf ZGVmaW5pdGlvbjwvcmVwbGFjZWFibGU+CiAgICAgfCA8cmVwbGFjZWFibGU+dGFibGVfY29u c3RyYWludDwvcmVwbGFjZWFibGU+IH0KICAgICBbLCAuLi4gXQogKSBdCkBAIC00OSw2ICs1 MSw3IEBAIENSRUFURSBbIFsgR0xPQkFMIHwgTE9DQUwgXSB7IFRFTVBPUkFSWSB8IFRFTVAg fSB8IFVOTE9HR0VEIF0gVEFCTEUgWyBJRiBOT1QgRVhJCiBDUkVBVEUgWyBbIEdMT0JBTCB8 IExPQ0FMIF0geyBURU1QT1JBUlkgfCBURU1QIH0gfCBVTkxPR0dFRCBdIFRBQkxFIFsgSUYg Tk9UIEVYSVNUUyBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1l PC9yZXBsYWNlYWJsZT4KICAgICBQQVJUSVRJT04gT0YgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnBhcmVudF90YWJsZTwvcmVwbGFjZWFibGU+IFsgKAogICB7IDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFsgV0lU SCBPUFRJT05TIF0gWyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX2Nv bnN0cmFpbnQ8L3JlcGxhY2VhYmxlPiBbIC4uLiBdIF0KKyAgICB8IDxyZXBsYWNlYWJsZT5w ZXJpb2RfZGVmaW5pdGlvbjwvcmVwbGFjZWFibGU+CiAgICAgfCA8cmVwbGFjZWFibGU+dGFi bGVfY29uc3RyYWludDwvcmVwbGFjZWFibGU+IH0KICAgICBbLCAuLi4gXQogKSBdIHsgRk9S IFZBTFVFUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX2JvdW5k X3NwZWM8L3JlcGxhY2VhYmxlPiB8IERFRkFVTFQgfQpAQCAtNzMsNiArNzYsMTEgQEAgQ1JF QVRFIFsgWyBHTE9CQUwgfCBMT0NBTCBdIHsgVEVNUE9SQVJZIHwgVEVNUCB9IHwgVU5MT0dH RUQgXSBUQUJMRSBbIElGIE5PVCBFWEkKICAgICBbIE9OIERFTEVURSA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+cmVmZXJlbnRpYWxfYWN0aW9uPC9yZXBsYWNlYWJsZT4gXSBb IE9OIFVQREFURSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVmZXJlbnRpYWxf YWN0aW9uPC9yZXBsYWNlYWJsZT4gXSB9CiBbIERFRkVSUkFCTEUgfCBOT1QgREVGRVJSQUJM RSBdIFsgSU5JVElBTExZIERFRkVSUkVEIHwgSU5JVElBTExZIElNTUVESUFURSBdCiAKKzxw aHJhc2U+YW5kIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wZXJpb2RfZGVmaW5p dGlvbjwvcmVwbGFjZWFibGU+IGlzOjwvcGhyYXNlPgorCitQRVJJT0QgRk9SIHsgPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBlcmlvZF9uYW1lPC9yZXBsYWNlYWJsZT4gfCBT WVNURU1fVElNRSB9ICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9u YW1lPC9yZXBsYWNlYWJsZT4sIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1 bW5fbmFtZTwvcmVwbGFjZWFibGU+ICkKK1sgV0lUSCAoIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5wZXJpb2Rfb3B0aW9uPC9yZXBsYWNlYWJsZT4gPSA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+dmFsdWU8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSApIF0KKwog PHBocmFzZT5hbmQgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX2NvbnN0 cmFpbnQ8L3JlcGxhY2VhYmxlPiBpczo8L3BocmFzZT4KIAogWyBDT05TVFJBSU5UIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb25zdHJhaW50X25hbWU8L3JlcGxhY2VhYmxl PiBdCkBAIC04MSw3ICs4OSw3IEBAIENSRUFURSBbIFsgR0xPQkFMIHwgTE9DQUwgXSB7IFRF TVBPUkFSWSB8IFRFTVAgfSB8IFVOTE9HR0VEIF0gVEFCTEUgWyBJRiBOT1QgRVhJCiAgIFVO SVFVRSBbIE5VTExTIFsgTk9UIF0gRElTVElOQ1QgXSAoIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLiBdIFssIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFdJ VEhPVVQgT1ZFUkxBUFMgXSApIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5pbmRl eF9wYXJhbWV0ZXJzPC9yZXBsYWNlYWJsZT4gfAogICBQUklNQVJZIEtFWSAoIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFssIC4u LiBdIFssIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVw bGFjZWFibGU+IFdJVEhPVVQgT1ZFUkxBUFMgXSApIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5pbmRleF9wYXJhbWV0ZXJzPC9yZXBsYWNlYWJsZT4gfAogICBFWENMVURFIFsg VVNJTkcgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmluZGV4X21ldGhvZDwvcmVw bGFjZWFibGU+IF0gKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZXhjbHVkZV9l bGVtZW50PC9yZXBsYWNlYWJsZT4gV0lUSCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+b3BlcmF0b3I8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSApIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5pbmRleF9wYXJhbWV0ZXJzPC9yZXBsYWNlYWJsZT4gWyBXSEVSRSAo IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wcmVkaWNhdGU8L3JlcGxhY2VhYmxl PiApIF0gfAotICBGT1JFSUdOIEtFWSAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLiBdIFssIFBFUklPRCA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiBdICkg UkVGRVJFTkNFUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVmdGFibGU8L3Jl cGxhY2VhYmxlPiBbICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJlZmNvbHVt bjwvcmVwbGFjZWFibGU+IFssIC4uLiBdIFssIFBFUklPRCA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiBdICkgXQorICBGT1JFSUdO IEtFWSAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVw bGFjZWFibGU+IFssIC4uLiBdIFssIFBFUklPRCB7IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IHwgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnBlcmlvZF9uYW1lPC9yZXBsYWNlYWJsZT4gfSBdICkgUkVGRVJFTkNF UyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVmdGFibGU8L3JlcGxhY2VhYmxl PiBbICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJlZmNvbHVtbjwvcmVwbGFj ZWFibGU+IFssIC4uLiBdIFssIFBFUklPRCB7IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IHwgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnBlcmlvZF9uYW1lPC9yZXBsYWNlYWJsZT4gfSBdICkgXQogICAgIFsgTUFU Q0ggRlVMTCB8IE1BVENIIFBBUlRJQUwgfCBNQVRDSCBTSU1QTEUgXSBbIE9OIERFTEVURSA8 cmVwbGFjZWFibGUKIGNsYXNzPSJwYXJhbWV0ZXIiPnJlZmVyZW50aWFsX2FjdGlvbjwvcmVw bGFjZWFibGU+IF0gWyBPTiBVUERBVEUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PnJlZmVyZW50aWFsX2FjdGlvbjwvcmVwbGFjZWFibGU+IF0gfQogWyBERUZFUlJBQkxFIHwg Tk9UIERFRkVSUkFCTEUgXSBbIElOSVRJQUxMWSBERUZFUlJFRCB8IElOSVRJQUxMWSBJTU1F RElBVEUgXQpAQCAtMTQwLDYgKzE0OCwxNCBAQCBXSVRIICggTU9EVUxVUyA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+bnVtZXJpY19saXRlcmFsPC9yZXBsYWNlYWJsZT4sIFJF TQogICAgbmFtZSBhcyBhbnkgZXhpc3RpbmcgZGF0YSB0eXBlIGluIHRoZSBzYW1lIHNjaGVt YS4KICAgPC9wYXJhPgogCisgIDxwYXJhPgorICAgUGVyaW9kcyBteSBiZSBkZWZpbmVkIG9u IHRhYmxlcywgc3BlY2lmeWluZyB0aGF0IHR3byBleGlzdGluZyBjb2x1bW5zCisgICByZXBy ZXNlbnQgc3RhcnQgYW5kIGVuZCB2YWx1ZXMgZm9yIHRoZSBwZXJpb2QuICBQZXJpb2RzIG1h eSBoYXZlIGFueSBuYW1lCisgICB0aGF0IGRvZXNuJ3QgY29uZmxpY3Qgd2l0aCBhIGNvbHVt biBuYW1lLCBidXQgdGhlIG5hbWUKKyAgIDxsaXRlcmFsPlNZU1RFTV9USU1FPC9saXRlcmFs PiBpcyBzcGVjaWFsLCB1c2VkIGZvciB2ZXJzaW9uaW5nIHRhYmxlcy4KKyAgIFN5c3RlbSBw ZXJpb2RzIGFyZSBub3QgeWV0IGltcGxlbWVudGVkLiAgU2VlIDx4cmVmIGxpbmtlbmQ9ImRk bC1wZXJpb2RzIi8+IGZvciBtb3JlIGRldGFpbHMuCisgIDwvcGFyYT4KKwogICA8cGFyYT4K ICAgIFRoZSBvcHRpb25hbCBjb25zdHJhaW50IGNsYXVzZXMgc3BlY2lmeSBjb25zdHJhaW50 cyAodGVzdHMpIHRoYXQKICAgIG5ldyBvciB1cGRhdGVkIHJvd3MgbXVzdCBzYXRpc2Z5IGZv ciBhbiBpbnNlcnQgb3IgdXBkYXRlIG9wZXJhdGlvbgpAQCAtODAwLDYgKzgxNiwzNyBAQCBX SVRIICggTU9EVUxVUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtZXJpY19s aXRlcmFsPC9yZXBsYWNlYWJsZT4sIFJFTQogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxp c3RlbnRyeT4KIAorICAgPHZhcmxpc3RlbnRyeSBpZD0ic3FsLWNyZWF0ZXRhYmxlLXBhcm1z LXBlcmlvZCI+CisgICAgPHRlcm0+PGxpdGVyYWw+UEVSSU9EIEZPUiA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+cGVyaW9kX25hbWU8L3JlcGxhY2VhYmxlPiAoIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+LCA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiAp IFsgV0lUSCAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wZXJpb2Rfb3B0aW9u PC9yZXBsYWNlYWJsZT4gPSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dmFsdWU8 L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSApIF08L2xpdGVyYWw+PC90ZXJtPgorICAgIDxsaXN0 aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBBIHBlcmlvZCBkZWZpbml0aW9uIGdpdmVzIHNl bWFudGljIG1lYW5pbmcgdG8gdHdvIGV4aXN0aW5nIGNvbHVtbnMgb2YKKyAgICAgIHRoZSB0 YWJsZS4gIEl0IGRlZmluZXMgYSAic3RhcnQgY29sdW1uIiBhbmQgYW4gImVuZCBjb2x1bW4i IHdoZXJlIHRoZQorICAgICAgc3RhcnQgdmFsdWUgaXMgc3RyaWN0bHkgbGVzcyB0aGFuIHRo ZSBlbmQgdmFsdWUuICBBCisgICAgICA8bGl0ZXJhbD5DSEVDSzwvbGl0ZXJhbD4gY29uc3Ry YWludCBpcyBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgdG8gZW5mb3JjZQorICAgICAgdGhpcy4g WW91IGNhbiBzcGVjaWZ5IHRoZSBuYW1lIG9mIHRoYXQgY29uc3RyYWludCB3aXRoIHRoZQor ICAgICAgPGxpdGVyYWw+Y2hlY2tfY29uc3RyYWludF9uYW1lPC9saXRlcmFsPiA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGVyaW9kX29wdGlvbjwvcmVwbGFjZWFibGU+Lgor ICAgICA8L3BhcmE+CisKKyAgICAgPHBhcmE+CisgICAgICBCb3RoIGNvbHVtbnMgbXVzdCBo YXZlIGV4YWN0bHkgdGhlIHNhbWUgdHlwZSBhbmQgbXVzdCBoYXZlIGEgcmFuZ2UgdHlwZQor ICAgICAgZGVmaW5lZCBmcm9tIHRoZWlyIGJhc2UgdHlwZS4gIElmIHRoZXJlIGFyZSBzZXZl cmFsIHJhbmdlIHR5cGVzIGZvciB0aGF0CisgICAgICBiYXNlIHR5cGUsIHlvdSBtdXN0IHNw ZWNpZnkgd2hpY2ggb25lIHlvdSB3YW50IGJ5IHVzaW5nIHRoZQorICAgICAgPGxpdGVyYWw+ cmFuZ2V0eXBlPC9saXRlcmFsPiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGVy aW9kX29wdGlvbjwvcmVwbGFjZWFibGU+LgorICAgICAgQW55IGJhc2UgdHlwZSBpcyBhbGxv d2VkLCBhcyBsb25nIGFzIGl0IGhhcyBhIHJhbmdlIHR5cGUsIGFsdGhvdWdoIGl0IGlzCisg ICAgICBleHBlY3RlZCB0aGF0IG1vc3QgcGVyaW9kcyB3aWxsIHVzZSB0ZW1wb3JhbCB0eXBl cyBsaWtlIDxsaXRlcmFsPnRpbWVzdGFtcHR6PC9saXRlcmFsPgorICAgICAgb3IgPGxpdGVy YWw+ZGF0ZTwvbGl0ZXJhbD4uCisgICAgIDwvcGFyYT4KKworICAgICA8cGFyYT4KKyAgICAg IEEgaGlkZGVuIDxsaXRlcmFsPkdFTkVSQVRFRDwvbGl0ZXJhbD4gY29sdW1uIGlzIHVzZWQg dG8gaW1wbGVtZW50IHRoZSBwZXJpb2QsCisgICAgICB3aXRoIHRoZSBzYW1lIG5hbWUgYXMg dGhlIHBlcmlvZC4gIElmIHN1Y2ggYSBjb2x1bW4gYWxyZWFkeSBleGlzdHMsIHlvdQorICAg ICAgY2FuIHVzZSB0aGUgPGxpdGVyYWw+Y29sZXhpc3RzPC9saXRlcmFsPiA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+cGVyaW9kX29wdGlvbjwvcmVwbGFjZWFibGU+CisgICAg ICB3aXRoIHZhbHVlIDxsaXRlcmFsPnRydWU8L2xpdGVyYWw+IHRvIGF2b2lkIGNyZWF0aW5n IGl0LgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5 PgorCiAgICA8dmFybGlzdGVudHJ5IGlkPSJzcWwtY3JlYXRldGFibGUtcGFybXMtY29uc3Ry YWludCI+CiAgICAgPHRlcm0+PGxpdGVyYWw+Q09OU1RSQUlOVCA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+Y29uc3RyYWludF9uYW1lPC9yZXBsYWNlYWJsZT48L2xpdGVyYWw+ PC90ZXJtPgogICAgIDxsaXN0aXRlbT4KQEAgLTExNTIsOCArMTE5OSw4IEBAIFdJVEggKCBN T0RVTFVTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1lcmljX2xpdGVyYWw8 L3JlcGxhY2VhYmxlPiwgUkVNCiAgICA8dmFybGlzdGVudHJ5IGlkPSJzcWwtY3JlYXRldGFi bGUtcGFybXMtcmVmZXJlbmNlcyI+CiAgICAgPHRlcm0+PGxpdGVyYWw+UkVGRVJFTkNFUyA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVmdGFibGU8L3JlcGxhY2VhYmxlPiBb ICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJlZmNvbHVtbjwvcmVwbGFjZWFi bGU+ICkgXSBbIE1BVENIIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5tYXRjaHR5 cGU8L3JlcGxhY2VhYmxlPiBdIFsgT04gREVMRVRFIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5yZWZlcmVudGlhbF9hY3Rpb248L3JlcGxhY2VhYmxlPiBdIFsgT04gVVBEQVRF IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yZWZlcmVudGlhbF9hY3Rpb248L3Jl cGxhY2VhYmxlPiBdPC9saXRlcmFsPiAoY29sdW1uIGNvbnN0cmFpbnQpPC90ZXJtPgogCi0g ICA8dGVybT48bGl0ZXJhbD5GT1JFSUdOIEtFWSAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLiBdIFssIFBFUklPRCA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxl PiBdICkKLSAgICBSRUZFUkVOQ0VTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5y ZWZ0YWJsZTwvcmVwbGFjZWFibGU+IFsgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+cmVmY29sdW1uPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gWywgUEVSSU9EIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IF0gKSBd CisgICA8dGVybT48bGl0ZXJhbD5GT1JFSUdOIEtFWSAoIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLiBdIFssIFBFUklP RCB7IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFj ZWFibGU+IHwgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBlcmlvZF9uYW1lPC9y ZXBsYWNlYWJsZT4gfSBdICkKKyAgICBSRUZFUkVOQ0VTIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5yZWZ0YWJsZTwvcmVwbGFjZWFibGU+IFsgKCA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+cmVmY29sdW1uPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gWywgUEVS SU9EIHsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBs YWNlYWJsZT4gfCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGVyaW9kX25hbWU8 L3JlcGxhY2VhYmxlPiB9IF0gKSBdCiAgICAgWyBNQVRDSCA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+bWF0Y2h0eXBlPC9yZXBsYWNlYWJsZT4gXQogICAgIFsgT04gREVMRVRF IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yZWZlcmVudGlhbF9hY3Rpb248L3Jl cGxhY2VhYmxlPiBdCiAgICAgWyBPTiBVUERBVEUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPnJlZmVyZW50aWFsX2FjdGlvbjwvcmVwbGFjZWFibGU+IF08L2xpdGVyYWw+CkBA IC0xMTczLDE4ICsxMjIwLDIwIEBAIFdJVEggKCBNT0RVTFVTIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5udW1lcmljX2xpdGVyYWw8L3JlcGxhY2VhYmxlPiwgUkVNCiAgICAg IDwvcGFyYT4KIAogICAgICA8cGFyYT4KLSAgICAgIElmIHRoZSBsYXN0IGNvbHVtbiBpcyBt YXJrZWQgd2l0aCA8bGl0ZXJhbD5QRVJJT0Q8L2xpdGVyYWw+LAorICAgICAgSWYgdGhlIGxh c3Qga2V5IHBhcnQgaXMgbWFya2VkIHdpdGggPGxpdGVyYWw+UEVSSU9EPC9saXRlcmFsPiwK ICAgICAgIGl0IGlzIHRyZWF0ZWQgaW4gYSBzcGVjaWFsIHdheS4KICAgICAgIFdoaWxlIHRo ZSBub24tPGxpdGVyYWw+UEVSSU9EPC9saXRlcmFsPiBjb2x1bW5zIGFyZSB0cmVhdGVkIG5v cm1hbGx5CiAgICAgICAoYW5kIHRoZXJlIG11c3QgYmUgYXQgbGVhc3Qgb25lIG9mIHRoZW0p LAotICAgICAgdGhlIDxsaXRlcmFsPlBFUklPRDwvbGl0ZXJhbD4gY29sdW1uIGlzIG5vdCBj b21wYXJlZCBmb3IgZXF1YWxpdHkuCisgICAgICB0aGUgPGxpdGVyYWw+UEVSSU9EPC9saXRl cmFsPiBwYXJ0IGlzIG5vdCBjb21wYXJlZCBmb3IgZXF1YWxpdHkuCiAgICAgICBJbnN0ZWFk IHRoZSBjb25zdHJhaW50IGlzIGNvbnNpZGVyZWQgc2F0aXNmaWVkCiAgICAgICBpZiB0aGUg cmVmZXJlbmNlZCB0YWJsZSBoYXMgbWF0Y2hpbmcgcmVjb3JkcwogICAgICAgKGJhc2VkIG9u IHRoZSBub24tPGxpdGVyYWw+UEVSSU9EPC9saXRlcmFsPiBwYXJ0cyBvZiB0aGUga2V5KQog ICAgICAgd2hvc2UgY29tYmluZWQgPGxpdGVyYWw+UEVSSU9EPC9saXRlcmFsPiB2YWx1ZXMg Y29tcGxldGVseSBjb3ZlcgogICAgICAgdGhlIHJlZmVyZW5jaW5nIHJlY29yZCdzLgogICAg ICAgSW4gb3RoZXIgd29yZHMsIHRoZSByZWZlcmVuY2UgbXVzdCBoYXZlIGEgcmVmZXJlbnQg Zm9yIGl0cyBlbnRpcmUgZHVyYXRpb24uCi0gICAgICBOb3JtYWxseSB0aGlzIGNvbHVtbiB3 b3VsZCBiZSBhIHJhbmdlIG9yIG11bHRpcmFuZ2UgdHlwZSwKKyAgICAgIE5vcm1hbGx5IHRo aXMgcGFydCB3b3VsZCBiZSBlaXRoZXIgYQorICAgICAgPGxpbmsgbGlua2VuZD0ic3FsLWNy ZWF0ZXRhYmxlLXBhcm1zLXBlcmlvZCI+PGxpdGVyYWw+UEVSSU9EPC9saXRlcmFsPjwvbGlu az4KKyAgICAgIG9yIGEgY29sdW1uIHdpdGggYSByYW5nZSBvciBtdWx0aXJhbmdlIHR5cGUs CiAgICAgICBhbHRob3VnaCBhbnkgdHlwZSB3aG9zZSBHaVNUIG9wY2xhc3MgaGFzIGEgImNv bnRhaW5lZCBieSIgb3BlcmF0b3IKICAgICAgIGFuZCBhIDxsaXRlcmFsPnJlZmVyZW5jZWRf YWdnPC9saXRlcmFsPiBzdXBwb3J0IGZ1bmN0aW9uIGlzIGFsbG93ZWQuCiAgICAgICAoU2Vl IDx4cmVmIGxpbmtlbmQ9Imdpc3QtZXh0ZW5zaWJpbGl0eSIvPi4pCmRpZmYgLS1naXQgYS9k b2Mvc3JjL3NnbWwvcmVmL2RlbGV0ZS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9kZWxldGUu c2dtbAppbmRleCAxYzcyNzUzNDFlYS4uYjM4OGJlNzUwOGMgMTAwNjQ0Ci0tLSBhL2RvYy9z cmMvc2dtbC9yZWYvZGVsZXRlLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9kZWxldGUu c2dtbApAQCAtNTYsNyArNTYsOCBAQCBERUxFVEUgRlJPTSBbIE9OTFkgXSA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfbmFtZTwvcmVwbGFjZWFibGU+IFsgKgogICA8 L3BhcmE+CiAKICAgPHBhcmE+Ci0gICBJZiB0aGUgdGFibGUgaGFzIGEgcmFuZ2Ugb3IgbXVs dGlyYW5nZSBjb2x1bW4sCisgICBJZiB0aGUgdGFibGUgaGFzIGEgcmFuZ2Ugb3IgbXVsdGly YW5nZSBjb2x1bW4sIG9yIGEKKyAgIDxsaW5rIGxpbmtlbmQ9ImRkbC1wZXJpb2RzLWFwcGxp Y2F0aW9uLXBlcmlvZHMiPjxsaXRlcmFsPlBFUklPRDwvbGl0ZXJhbD48L2xpbms+LAogICAg eW91IG1heSBzdXBwbHkgYSA8bGl0ZXJhbD5GT1IgUE9SVElPTiBPRjwvbGl0ZXJhbD4gY2xh dXNlLCBhbmQgeW91ciBkZWxldGUgd2lsbAogICAgb25seSBhZmZlY3Qgcm93cyB0aGF0IG92 ZXJsYXAgdGhlIGdpdmVuIGludGVydmFsLiBGdXJ0aGVybW9yZSwgaWYgYSByb3cncyBzcGFu CiAgICBleHRlbmRzIG91dHNpZGUgdGhlIDxsaXRlcmFsPkZPUiBQT1JUSU9OIE9GPC9saXRl cmFsPiBib3VuZHMsIHRoZW4geW91ciBkZWxldGUKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dt bC9yZWYvdXBkYXRlLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL3VwZGF0ZS5zZ21sCmluZGV4 IDcxYTAyNjk3ZjJkLi5hMWI4ODU3MWQwYSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3Jl Zi91cGRhdGUuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL3VwZGF0ZS5zZ21sCkBAIC01 Myw3ICs1Myw4IEBAIFVQREFURSBbIE9OTFkgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+dGFibGVfbmFtZTwvcmVwbGFjZWFibGU+IFsgKiBdIFsKICAgPC9wYXJhPgogCiAg IDxwYXJhPgotICAgSWYgdGhlIHRhYmxlIGhhcyBhIHJhbmdlIG9yIG11bHRpcmFuZ2UgY29s dW1uLAorICAgSWYgdGhlIHRhYmxlIGhhcyBhIHJhbmdlIG9yIG11bHRpcmFuZ2UgY29sdW1u LCBvciBhCisgICA8bGluayBsaW5rZW5kPSJkZGwtcGVyaW9kcy1hcHBsaWNhdGlvbi1wZXJp b2RzIj48bGl0ZXJhbD5QRVJJT0Q8L2xpdGVyYWw+PC9saW5rPiwKICAgIHlvdSBtYXkgc3Vw cGx5IGEgPGxpdGVyYWw+Rk9SIFBPUlRJT04gT0Y8L2xpdGVyYWw+IGNsYXVzZSwgYW5kIHlv dXIgdXBkYXRlIHdpbGwKICAgIG9ubHkgYWZmZWN0IHJvd3MgdGhhdCBvdmVybGFwIHRoZSBn aXZlbiBpbnRlcnZhbC4gRnVydGhlcm1vcmUsIGlmIGEgcm93J3Mgc3BhbgogICAgZXh0ZW5k cyBvdXRzaWRlIHRoZSA8bGl0ZXJhbD5GT1IgUE9SVElPTiBPRjwvbGl0ZXJhbD4gYm91bmRz LCB0aGVuIHlvdXIgdXBkYXRlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL01h a2VmaWxlIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9NYWtlZmlsZQppbmRleCAxOTZlY2FmYzkw OS4uNDRmMGZmNjNjZWQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvTWFrZWZp bGUKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9NYWtlZmlsZQpAQCAtMzksNiArMzksNyBA QCBPQkpTID0gXAogCXBnX25hbWVzcGFjZS5vIFwKIAlwZ19vcGVyYXRvci5vIFwKIAlwZ19w YXJhbWV0ZXJfYWNsLm8gXAorCXBnX3BlcmlvZC5vIFwKIAlwZ19wcm9jLm8gXAogCXBnX3B1 YmxpY2F0aW9uLm8gXAogCXBnX3JhbmdlLm8gXApAQCAtMTExLDYgKzExMiw3IEBAIENBVEFM T0dfSEVBREVSUyA6PSBcCiAJcGdfY29sbGF0aW9uLmggXAogCXBnX3BhcmFtZXRlcl9hY2wu aCBcCiAJcGdfcGFydGl0aW9uZWRfdGFibGUuaCBcCisJcGdfcGVyaW9kLmggXAogCXBnX3Jh bmdlLmggXAogCXBnX3RyYW5zZm9ybS5oIFwKIAlwZ19zZXF1ZW5jZS5oIFwKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvYWNsY2hrLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9n L2FjbGNoay5jCmluZGV4IDFlNDRhNzFmNjFjLi5lMjYxOWY1MmUwMSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvY2F0YWxvZy9hY2xjaGsuYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9n L2FjbGNoay5jCkBAIC0yODIzLDYgKzI4MjMsNyBAQCBhY2xjaGVja19lcnJvcihBY2xSZXN1 bHQgYWNsZXJyLCBPYmplY3RUeXBlIG9ianR5cGUsCiAJCQkJCWNhc2UgT0JKRUNUX0RFRkFV TFQ6CiAJCQkJCWNhc2UgT0JKRUNUX0RFRkFDTDoKIAkJCQkJY2FzZSBPQkpFQ1RfRE9NQ09O U1RSQUlOVDoKKwkJCQkJY2FzZSBPQkpFQ1RfUEVSSU9EOgogCQkJCQljYXNlIE9CSkVDVF9Q VUJMSUNBVElPTl9OQU1FU1BBQ0U6CiAJCQkJCWNhc2UgT0JKRUNUX1BVQkxJQ0FUSU9OX1JF TDoKIAkJCQkJY2FzZSBPQkpFQ1RfUk9MRToKQEAgLTI5NjQsNiArMjk2NSw3IEBAIGFjbGNo ZWNrX2Vycm9yKEFjbFJlc3VsdCBhY2xlcnIsIE9iamVjdFR5cGUgb2JqdHlwZSwKIAkJCQkJ Y2FzZSBPQkpFQ1RfREVGQUNMOgogCQkJCQljYXNlIE9CSkVDVF9ET01DT05TVFJBSU5UOgog CQkJCQljYXNlIE9CSkVDVF9QQVJBTUVURVJfQUNMOgorCQkJCQljYXNlIE9CSkVDVF9QRVJJ T0Q6CiAJCQkJCWNhc2UgT0JKRUNUX1BVQkxJQ0FUSU9OX05BTUVTUEFDRToKIAkJCQkJY2Fz ZSBPQkpFQ1RfUFVCTElDQVRJT05fUkVMOgogCQkJCQljYXNlIE9CSkVDVF9ST0xFOgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9kZXBlbmRlbmN5LmMgYi9zcmMvYmFja2Vu ZC9jYXRhbG9nL2RlcGVuZGVuY3kuYwppbmRleCAyZWI0MWQ1MzdiYi4uNGU1MmU1YTZmYzUg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvZGVwZW5kZW5jeS5jCisrKyBiL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvZGVwZW5kZW5jeS5jCkBAIC00OCw2ICs0OCw3IEBACiAjaW5j bHVkZSAiY2F0YWxvZy9wZ19vcGVyYXRvci5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfb3Bm YW1pbHkuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3BhcmFtZXRlcl9hY2wuaCIKKyNpbmNs dWRlICJjYXRhbG9nL3BnX3BlcmlvZC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfcG9saWN5 LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19wcm9jLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9w Z19wdWJsaWNhdGlvbi5oIgpAQCAtNjI0LDYgKzYyNSwxNSBAQCBmaW5kRGVwZW5kZW50T2Jq ZWN0cyhjb25zdCBPYmplY3RBZGRyZXNzICpvYmplY3QsCiAJCQkJCQlyZXR1cm47CiAJCQkJ CX0KIAorCQkJCQkvKgorCQkJCQkgKiBJZiBhIHRhYmxlIGF0dHJpYnV0ZSBpcyBhbiBpbnRl cm5hbCBwYXJ0IG9mIHNvbWV0aGluZyBlbHNlCisJCQkJCSAqIChlLmcuIHRoZSBHRU5FUkFU RUQgY29sdW1uIHVzZWQgYnkgYSBQRVJJT0QpLAorCQkJCQkgKiBhbmQgd2UgYXJlIGRlbGV0 aW5nIHRoZSB3aG9sZSB0YWJsZSwKKwkJCQkJICogdGhlbiBpdCdzIG9rYXkuCisJCQkJCSAq LworCQkJCQlpZiAoZm91bmREZXAtPm9ianN1YmlkICYmICFvYmplY3QtPm9iamVjdFN1Yklk KQorCQkJCQkJYnJlYWs7CisKIAkJCQkJLyoKIAkJCQkJICogV2UgcG9zdHBvbmUgYWN0dWFs bHkgaXNzdWluZyB0aGUgZXJyb3IgbWVzc2FnZSB1bnRpbAogCQkJCQkgKiBhZnRlciB0aGlz IGxvb3AsIHNvIHRoYXQgd2UgY2FuIG1ha2UgdGhlIGJlaGF2aW9yCkBAIC0xMzk2LDYgKzE0 MDYsMTAgQEAgZG9EZWxldGlvbihjb25zdCBPYmplY3RBZGRyZXNzICpvYmplY3QsIGludCBm bGFncykKIAkJCVJlbW92ZUNvbnN0cmFpbnRCeUlkKG9iamVjdC0+b2JqZWN0SWQpOwogCQkJ YnJlYWs7CiAKKwkJY2FzZSBPQ0xBU1NfUEVSSU9EOgorCQkJUmVtb3ZlUGVyaW9kQnlJZChv YmplY3QtPm9iamVjdElkKTsKKwkJCWJyZWFrOworCiAJCWNhc2UgT0NMQVNTX0RFRkFVTFQ6 CiAJCQlSZW1vdmVBdHRyRGVmYXVsdEJ5SWQob2JqZWN0LT5vYmplY3RJZCk7CiAJCQlicmVh azsKQEAgLTI4MTIsNiArMjgyNiw5IEBAIGdldE9iamVjdENsYXNzKGNvbnN0IE9iamVjdEFk ZHJlc3MgKm9iamVjdCkKIAkJY2FzZSBDb25zdHJhaW50UmVsYXRpb25JZDoKIAkJCXJldHVy biBPQ0xBU1NfQ09OU1RSQUlOVDsKIAorCQljYXNlIFBlcmlvZFJlbGF0aW9uSWQ6CisJCQly ZXR1cm4gT0NMQVNTX1BFUklPRDsKKwogCQljYXNlIENvbnZlcnNpb25SZWxhdGlvbklkOgog CQkJcmV0dXJuIE9DTEFTU19DT05WRVJTSU9OOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9jYXRhbG9nL2hlYXAuYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaGVhcC5jCmluZGV4IDVl NzczNzQwZjRkLi5hZWE5NGUwYmNkZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxv Zy9oZWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9oZWFwLmMKQEAgLTQ5LDYgKzQ5 LDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX25hbWVzcGFjZS5oIgogI2luY2x1ZGUgImNh dGFsb2cvcGdfb3BjbGFzcy5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfcGFydGl0aW9uZWRf dGFibGUuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3BlcmlvZC5oIgogI2luY2x1ZGUgImNh dGFsb2cvcGdfc3RhdGlzdGljLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19zdWJzY3JpcHRp b25fcmVsLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190YWJsZXNwYWNlLmgiCkBAIC0yMDQ0 LDYgKzIwNDUsODAgQEAgU2V0QXR0ck1pc3NpbmcoT2lkIHJlbGlkLCBjaGFyICphdHRuYW1l LCBjaGFyICp2YWx1ZSkKIAl0YWJsZV9jbG9zZSh0YWJsZXJlbCwgQWNjZXNzRXhjbHVzaXZl TG9jayk7CiB9CiAKKy8qCisgKiBTdG9yZSBhIHBlcmlvZCBvZiByZWxhdGlvbiByZWwuCisg KgorICogUmV0dXJucyB0aGUgT0lEIG9mIHRoZSBuZXcgcGdfcGVyaW9kIHR1cGxlLgorICov CitPaWQKK1N0b3JlUGVyaW9kKFJlbGF0aW9uIHJlbCwgY29uc3QgY2hhciAqcGVyaW9kbmFt ZSwgQXR0ck51bWJlciBzdGFydG51bSwKKwkJCUF0dHJOdW1iZXIgZW5kbnVtLCBBdHRyTnVt YmVyIHJhbmdlbnVtLCBPaWQgY29ub2lkKQoreworCURhdHVtCQl2YWx1ZXNbTmF0dHNfcGdf cGVyaW9kXTsKKwlib29sCQludWxsc1tOYXR0c19wZ19wZXJpb2RdOworCVJlbGF0aW9uCXBn X3BlcmlvZDsKKwlIZWFwVHVwbGUJdHVwbGU7CisJT2lkCQkJb2lkOworCU5hbWVEYXRhCXBl cm5hbWU7CisJT2JqZWN0QWRkcmVzcwlteXNlbGYsIHJlZmVyZW5jZWQ7CisKKwlBc3NlcnQo cmFuZ2VudW0gIT0gSW52YWxpZEF0dHJOdW1iZXIpOworCisJbmFtZXN0cmNweSgmcGVybmFt ZSwgcGVyaW9kbmFtZSk7CisKKwlNZW1TZXQodmFsdWVzLCAwLCBzaXplb2YodmFsdWVzKSk7 CisJTWVtU2V0KG51bGxzLCBmYWxzZSwgc2l6ZW9mKG51bGxzKSk7CisKKwlwZ19wZXJpb2Qg PSB0YWJsZV9vcGVuKFBlcmlvZFJlbGF0aW9uSWQsIFJvd0V4Y2x1c2l2ZUxvY2spOworCisJ b2lkID0gR2V0TmV3T2lkV2l0aEluZGV4KHBnX3BlcmlvZCwgQXR0ckRlZmF1bHRPaWRJbmRl eElkLCBBbnVtX3BnX3BlcmlvZF9vaWQpOworCXZhbHVlc1tBbnVtX3BnX3BlcmlvZF9vaWQg LSAxXSA9IE9iamVjdElkR2V0RGF0dW0ob2lkKTsKKwl2YWx1ZXNbQW51bV9wZ19wZXJpb2Rf cGVybmFtZSAtIDFdID0gTmFtZUdldERhdHVtKCZwZXJuYW1lKTsKKwl2YWx1ZXNbQW51bV9w Z19wZXJpb2RfcGVycmVsaWQgLSAxXSA9IFJlbGF0aW9uR2V0UmVsaWQocmVsKTsKKwl2YWx1 ZXNbQW51bV9wZ19wZXJpb2RfcGVyc3RhcnQgLSAxXSA9IHN0YXJ0bnVtOworCXZhbHVlc1tB bnVtX3BnX3BlcmlvZF9wZXJlbmQgLSAxXSA9IGVuZG51bTsKKwl2YWx1ZXNbQW51bV9wZ19w ZXJpb2RfcGVycmFuZ2UgLSAxXSA9IHJhbmdlbnVtOworCXZhbHVlc1tBbnVtX3BnX3Blcmlv ZF9wZXJjb25zdHJhaW50IC0gMV0gPSBjb25vaWQ7CisKKwl0dXBsZSA9IGhlYXBfZm9ybV90 dXBsZShSZWxhdGlvbkdldERlc2NyKHBnX3BlcmlvZCksIHZhbHVlcywgbnVsbHMpOworCUNh dGFsb2dUdXBsZUluc2VydChwZ19wZXJpb2QsIHR1cGxlKTsKKworCU9iamVjdEFkZHJlc3NT ZXQobXlzZWxmLCBQZXJpb2RSZWxhdGlvbklkLCBvaWQpOworCisJLyogRHJvcCB0aGUgcGVy aW9kIHdoZW4gdGhlIHRhYmxlIGlzIGRyb3BwZWQuICovCisJT2JqZWN0QWRkcmVzc1NldChy ZWZlcmVuY2VkLCBSZWxhdGlvblJlbGF0aW9uSWQsIFJlbGF0aW9uR2V0UmVsaWQocmVsKSk7 CisJcmVjb3JkRGVwZW5kZW5jeU9uKCZteXNlbGYsICZyZWZlcmVuY2VkLCBERVBFTkRFTkNZ X0FVVE8pOworCisJLyogRm9yYmlkIGRyb3BwaW5nIHRoZSBjb2x1bW5zIG9mIHRoZSBwZXJp b2QuICovCisJT2JqZWN0QWRkcmVzc1N1YlNldChyZWZlcmVuY2VkLCBSZWxhdGlvblJlbGF0 aW9uSWQsIFJlbGF0aW9uR2V0UmVsaWQocmVsKSwgc3RhcnRudW0pOworCXJlY29yZERlcGVu ZGVuY3lPbigmbXlzZWxmLCAmcmVmZXJlbmNlZCwgREVQRU5ERU5DWV9OT1JNQUwpOworCU9i amVjdEFkZHJlc3NTdWJTZXQocmVmZXJlbmNlZCwgUmVsYXRpb25SZWxhdGlvbklkLCBSZWxh dGlvbkdldFJlbGlkKHJlbCksIGVuZG51bSk7CisJcmVjb3JkRGVwZW5kZW5jeU9uKCZteXNl bGYsICZyZWZlcmVuY2VkLCBERVBFTkRFTkNZX05PUk1BTCk7CisKKwkvKgorCSAqIFRoZSBy YW5nZSBjb2x1bW4gaXMgYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsLAorCSAqIGJ1dCB3ZSBj YW4ndCB1c2UgREVQRU5ERU5DWV9JTlRFUk5BTAorCSAqIGJlY2F1c2UgZHJvcHBpbmcgdGhl IHRhYmxlIHdpbGwgY2hlY2sgZm9yIGRlcGVuZGVuY2llcyBvbiBhbGwgc3Vib2JqZWN0cyB0 b28KKwkgKiAoaW4gZmluZERlcGVuZGVudE9iamVjdHMpLgorCSAqIEJ1dCBpZiB3ZSBtYWtl IGFuIEFVVE8gZGVwZW5kZW5jeSBvbmUgd2F5IHdlIHdpbGwgYXV0by1kcm9wIHRoZSBjb2x1 bW4KKwkgKiB3aGVuIHdlIGRyb3AgdGhlIFBFUklPRCwKKwkgKiBhbmQgYSBOT1JNQUwgZGVw ZW5kZW5jeSB0aGUgb3RoZXIgd2F5IHdlIHdpbGwgZm9yYmlkIGRyb3BwaW5nIHRoZSBjb2x1 bW4gZGlyZWN0bHkuCisJICovCisJT2JqZWN0QWRkcmVzc1N1YlNldChyZWZlcmVuY2VkLCBS ZWxhdGlvblJlbGF0aW9uSWQsIFJlbGF0aW9uR2V0UmVsaWQocmVsKSwgcmFuZ2VudW0pOwor CXJlY29yZERlcGVuZGVuY3lPbigmcmVmZXJlbmNlZCwgJm15c2VsZiwgREVQRU5ERU5DWV9J TlRFUk5BTCk7CisKKwkvKgorCSAqIFRoZSBjb25zdHJhaW50IGlzIGFuIGltcGxlbWVudGF0 aW9uIGRldGFpbCwgc28gd2UgbWFyayBpdCBhcyBzdWNoLgorCSAqIChOb3RlIHRoYXQgbXlz ZWxmIGFuZCByZWZlcmVuY2VkIGFyZSByZXZlcnNlZCBmb3IgdGhpcyBvbmUuKQorCSAqLwor CU9iamVjdEFkZHJlc3NTZXQocmVmZXJlbmNlZCwgQ29uc3RyYWludFJlbGF0aW9uSWQsIGNv bm9pZCk7CisJcmVjb3JkRGVwZW5kZW5jeU9uKCZyZWZlcmVuY2VkLCAmbXlzZWxmLCBERVBF TkRFTkNZX0lOVEVSTkFMKTsKKworCXRhYmxlX2Nsb3NlKHBnX3BlcmlvZCwgUm93RXhjbHVz aXZlTG9jayk7CisKKwlyZXR1cm4gb2lkOworfQorCiAvKgogICogU3RvcmUgYSBjaGVjay1j b25zdHJhaW50IGV4cHJlc3Npb24gZm9yIHRoZSBnaXZlbiByZWxhdGlvbi4KICAqCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL2luZm9ybWF0aW9uX3NjaGVtYS5zcWwgYi9z cmMvYmFja2VuZC9jYXRhbG9nL2luZm9ybWF0aW9uX3NjaGVtYS5zcWwKaW5kZXggYzQwMmFl NzI3NDEuLjUwY2EwZDA1Zjg3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL2lu Zm9ybWF0aW9uX3NjaGVtYS5zcWwKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmZvcm1h dGlvbl9zY2hlbWEuc3FsCkBAIC0xMjA3LDcgKzEyMDcsMjggQEAgR1JBTlQgU0VMRUNUIE9O IHBhcmFtZXRlcnMgVE8gUFVCTElDOwogICogUEVSSU9EUyB2aWV3CiAgKi8KIAotLS0gZmVh dHVyZSBub3Qgc3VwcG9ydGVkCitDUkVBVEUgVklFVyBwZXJpb2RzIEFTCisgICAgU0VMRUNU IGN1cnJlbnRfZGF0YWJhc2UoKTo6aW5mb3JtYXRpb25fc2NoZW1hLnNxbF9pZGVudGlmaWVy IEFTIHRhYmxlX2NhdGFsb2csCisgICAgICAgICAgIG5jLm5zcG5hbWU6OmluZm9ybWF0aW9u X3NjaGVtYS5zcWxfaWRlbnRpZmllciBBUyB0YWJsZV9zY2hlbWEsCisgICAgICAgICAgIGMu cmVsbmFtZTo6aW5mb3JtYXRpb25fc2NoZW1hLnNxbF9pZGVudGlmaWVyIEFTIHRhYmxlX25h bWUsCisgICAgICAgICAgIHAucGVybmFtZTo6aW5mb3JtYXRpb25fc2NoZW1hLnNxbF9pZGVu dGlmaWVyIEFTIHBlcmlvZF9uYW1lLAorICAgICAgICAgICBDQVNFIFdIRU4gcGdfaGFzX3Jv bGUoYy5yZWxvd25lciwgJ1VTQUdFJykKKyAgICAgICAgICAgICAgICAgIE9SIGhhc19jb2x1 bW5fcHJpdmlsZWdlKHNhLmF0dHJlbGlkLCBzYS5hdHRudW0sICdTRUxFQ1QsIElOU0VSVCwg VVBEQVRFLCBSRUZFUkVOQ0VTJykKKyAgICAgICAgICAgICAgICBUSEVOIHNhLmF0dG5hbWU6 OmluZm9ybWF0aW9uX3NjaGVtYS5zcWxfaWRlbnRpZmllcgorICAgICAgICAgICBFTkQgQVMg c3RhcnRfY29sdW1uX25hbWUsCisgICAgICAgICAgIENBU0UgV0hFTiBwZ19oYXNfcm9sZShj LnJlbG93bmVyLCAnVVNBR0UnKQorICAgICAgICAgICAgICAgICAgT1IgaGFzX2NvbHVtbl9w cml2aWxlZ2UoZWEuYXR0cmVsaWQsIGVhLmF0dG51bSwgJ1NFTEVDVCwgSU5TRVJULCBVUERB VEUsIFJFRkVSRU5DRVMnKQorICAgICAgICAgICAgICAgIFRIRU4gZWEuYXR0bmFtZTo6aW5m b3JtYXRpb25fc2NoZW1hLnNxbF9pZGVudGlmaWVyCisgICAgICAgICAgIEVORCBBUyBlbmRf Y29sdW1uX25hbWUKKyAgICBGUk9NIHBnX3BlcmlvZCBBUyBwCisgICAgSk9JTiBwZ19jbGFz cyBBUyBjIE9OIGMub2lkID0gcC5wZXJyZWxpZAorICAgIEpPSU4gcGdfbmFtZXNwYWNlIEFT IG5jIE9OIG5jLm9pZCA9IGMucmVsbmFtZXNwYWNlCisgICAgSk9JTiBwZ19hdHRyaWJ1dGUg QVMgc2EgT04gKHNhLmF0dHJlbGlkLCBzYS5hdHRudW0pID0gKHAucGVycmVsaWQsIHAucGVy c3RhcnQpCisgICAgSk9JTiBwZ19hdHRyaWJ1dGUgQVMgZWEgT04gKGVhLmF0dHJlbGlkLCBl YS5hdHRudW0pID0gKHAucGVycmVsaWQsIHAucGVyZW5kKQorICAgIFdIRVJFIE5PVCBwZ19p c19vdGhlcl90ZW1wX3NjaGVtYShuYy5vaWQpCisgICAgICBBTkQgYy5yZWxraW5kIElOICgn cicsICd2Jyk7CisKK0dSQU5UIFNFTEVDVCBPTiBwZXJpb2RzIFRPIFBVQkxJQzsKIAogCiAv KgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9tZXNvbi5idWlsZCBiL3NyYy9i YWNrZW5kL2NhdGFsb2cvbWVzb24uYnVpbGQKaW5kZXggMmYzZGVkOGEwZTcuLmEzNzJmYjBh YWU4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL21lc29uLmJ1aWxkCisrKyBi L3NyYy9iYWNrZW5kL2NhdGFsb2cvbWVzb24uYnVpbGQKQEAgLTI2LDYgKzI2LDcgQEAgYmFj a2VuZF9zb3VyY2VzICs9IGZpbGVzKAogICAncGdfbmFtZXNwYWNlLmMnLAogICAncGdfb3Bl cmF0b3IuYycsCiAgICdwZ19wYXJhbWV0ZXJfYWNsLmMnLAorICAncGdfcGVyaW9kLmMnLAog ICAncGdfcHJvYy5jJywKICAgJ3BnX3B1YmxpY2F0aW9uLmMnLAogICAncGdfcmFuZ2UuYycs CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL29iamVjdGFkZHJlc3MuYyBiL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvb2JqZWN0YWRkcmVzcy5jCmluZGV4IDhiYjI5MjRiOWNkLi44 NTk3YjBjYzJhZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9vYmplY3RhZGRy ZXNzLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9vYmplY3RhZGRyZXNzLmMKQEAgLTQ3 LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX29wZXJhdG9yLmgiCiAjaW5jbHVk ZSAiY2F0YWxvZy9wZ19vcGZhbWlseS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfcGFyYW1l dGVyX2FjbC5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfcGVyaW9kLmgiCiAjaW5jbHVkZSAi Y2F0YWxvZy9wZ19wb2xpY3kuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3Byb2MuaCIKICNp bmNsdWRlICJjYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmgiCkBAIC03MzYsNiArNzM3LDEwIEBA IHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2JqZWN0X3R5cGVfbWFwCiAJewogCQkiZG9tYWluIGNv bnN0cmFpbnQiLCBPQkpFQ1RfRE9NQ09OU1RSQUlOVAogCX0sCisJLyogT0NMQVNTX1BFUklP RCAqLworCXsKKwkJInBlcmlvZCIsIE9CSkVDVF9QRVJJT0QKKwl9LAogCS8qIE9DTEFTU19D T05WRVJTSU9OICovCiAJewogCQkiY29udmVyc2lvbiIsIE9CSkVDVF9DT05WRVJTSU9OCkBA IC0xMDE0LDYgKzEwMTksNyBAQCBnZXRfb2JqZWN0X2FkZHJlc3MoT2JqZWN0VHlwZSBvYmp0 eXBlLCBOb2RlICpvYmplY3QsCiAJCQljYXNlIE9CSkVDVF9UUklHR0VSOgogCQkJY2FzZSBP QkpFQ1RfVEFCQ09OU1RSQUlOVDoKIAkJCWNhc2UgT0JKRUNUX1BPTElDWToKKwkJCWNhc2Ug T0JKRUNUX1BFUklPRDoKIAkJCQlhZGRyZXNzID0gZ2V0X29iamVjdF9hZGRyZXNzX3JlbG9i amVjdChvYmp0eXBlLCBjYXN0Tm9kZShMaXN0LCBvYmplY3QpLAogCQkJCQkJCQkJCQkJCSAg ICZyZWxhdGlvbiwgbWlzc2luZ19vayk7CiAJCQkJYnJlYWs7CkBAIC0xNTEyLDYgKzE1MTgs MTMgQEAgZ2V0X29iamVjdF9hZGRyZXNzX3JlbG9iamVjdChPYmplY3RUeXBlIG9ianR5cGUs IExpc3QgKm9iamVjdCwKIAkJCQlJbnZhbGlkT2lkOwogCQkJYWRkcmVzcy5vYmplY3RTdWJJ ZCA9IDA7CiAJCQlicmVhazsKKwkJY2FzZSBPQkpFQ1RfUEVSSU9EOgorCQkJYWRkcmVzcy5j bGFzc0lkID0gUGVyaW9kUmVsYXRpb25JZDsKKwkJCWFkZHJlc3Mub2JqZWN0SWQgPSByZWxh dGlvbiA/CisJCQkJZ2V0X3JlbGF0aW9uX3BlcmlvZF9vaWQocmVsb2lkLCBkZXBuYW1lLCBt aXNzaW5nX29rKSA6CisJCQkJSW52YWxpZE9pZDsKKwkJCWFkZHJlc3Mub2JqZWN0U3ViSWQg PSAwOworCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25p emVkIG9iamVjdCB0eXBlOiAlZCIsIChpbnQpIG9ianR5cGUpOwogCX0KQEAgLTIzMjksNiAr MjM0Miw3IEBAIHBnX2dldF9vYmplY3RfYWRkcmVzcyhQR19GVU5DVElPTl9BUkdTKQogCQlj YXNlIE9CSkVDVF9SVUxFOgogCQljYXNlIE9CSkVDVF9UUklHR0VSOgogCQljYXNlIE9CSkVD VF9UQUJDT05TVFJBSU5UOgorCQljYXNlIE9CSkVDVF9QRVJJT0Q6CiAJCWNhc2UgT0JKRUNU X09QQ0xBU1M6CiAJCWNhc2UgT0JKRUNUX09QRkFNSUxZOgogCQkJb2Jqbm9kZSA9IChOb2Rl ICopIG5hbWU7CkBAIC0yNDM5LDYgKzI0NTMsNyBAQCBjaGVja19vYmplY3Rfb3duZXJzaGlw KE9pZCByb2xlaWQsIE9iamVjdFR5cGUgb2JqdHlwZSwgT2JqZWN0QWRkcmVzcyBhZGRyZXNz LAogCQljYXNlIE9CSkVDVF9UUklHR0VSOgogCQljYXNlIE9CSkVDVF9QT0xJQ1k6CiAJCWNh c2UgT0JKRUNUX1RBQkNPTlNUUkFJTlQ6CisJCWNhc2UgT0JKRUNUX1BFUklPRDoKIAkJCWlm ICghb2JqZWN0X293bmVyY2hlY2soUmVsYXRpb25SZWxhdGlvbklkLCBSZWxhdGlvbkdldFJl bGlkKHJlbGF0aW9uKSwgcm9sZWlkKSkKIAkJCQlhY2xjaGVja19lcnJvcihBQ0xDSEVDS19O T1RfT1dORVIsIG9ianR5cGUsCiAJCQkJCQkJICAgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUo cmVsYXRpb24pKTsKQEAgLTMwODcsNiArMzEwMiwzOCBAQCBnZXRPYmplY3REZXNjcmlwdGlv bihjb25zdCBPYmplY3RBZGRyZXNzICpvYmplY3QsIGJvb2wgbWlzc2luZ19vaykKIAkJCQli cmVhazsKIAkJCX0KIAorCQljYXNlIE9DTEFTU19QRVJJT0Q6CisJCQl7CisJCQkJSGVhcFR1 cGxlCXBlclR1cDsKKwkJCQlGb3JtX3BnX3BlcmlvZCBwZXI7CisKKwkJCQlwZXJUdXAgPSBT ZWFyY2hTeXNDYWNoZTEoUEVSSU9ET0lELAorCQkJCQkJCQkJCSBPYmplY3RJZEdldERhdHVt KG9iamVjdC0+b2JqZWN0SWQpKTsKKwkJCQlpZiAoIUhlYXBUdXBsZUlzVmFsaWQocGVyVHVw KSkKKwkJCQkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHBlcmlvZCAl dSIsCisJCQkJCQkgb2JqZWN0LT5vYmplY3RJZCk7CisJCQkJcGVyID0gKEZvcm1fcGdfcGVy aW9kKSBHRVRTVFJVQ1QocGVyVHVwKTsKKworCQkJCWlmIChPaWRJc1ZhbGlkKHBlci0+cGVy cmVsaWQpKQorCQkJCXsKKwkJCQkJU3RyaW5nSW5mb0RhdGEgcmVsOworCisJCQkJCWluaXRT dHJpbmdJbmZvKCZyZWwpOworCQkJCQlnZXRSZWxhdGlvbkRlc2NyaXB0aW9uKCZyZWwsIHBl ci0+cGVycmVsaWQsIGZhbHNlKTsKKwkJCQkJYXBwZW5kU3RyaW5nSW5mbygmYnVmZmVyLCBf KCJwZXJpb2QgJXMgb24gJXMiKSwKKwkJCQkJCQkJCSBOYW1lU3RyKHBlci0+cGVybmFtZSks IHJlbC5kYXRhKTsKKwkJCQkJcGZyZWUocmVsLmRhdGEpOworCQkJCX0KKwkJCQllbHNlCisJ CQkJeworCQkJCQlhcHBlbmRTdHJpbmdJbmZvKCZidWZmZXIsIF8oInBlcmlvZCAlcyIpLAor CQkJCQkJCQkJIE5hbWVTdHIocGVyLT5wZXJuYW1lKSk7CisJCQkJfQorCisJCQkJUmVsZWFz ZVN5c0NhY2hlKHBlclR1cCk7CisJCQkJYnJlYWs7CisJCQl9CisKIAkJY2FzZSBPQ0xBU1Nf Q09OVkVSU0lPTjoKIAkJCXsKIAkJCQlIZWFwVHVwbGUJY29uVHVwOwpAQCAtNDQ1MSw2ICs0 NDk4LDEwIEBAIGdldE9iamVjdFR5cGVEZXNjcmlwdGlvbihjb25zdCBPYmplY3RBZGRyZXNz ICpvYmplY3QsIGJvb2wgbWlzc2luZ19vaykKIAkJCQkJCQkJCQkgbWlzc2luZ19vayk7CiAJ CQlicmVhazsKIAorCQljYXNlIE9DTEFTU19QRVJJT0Q6CisJCQlhcHBlbmRTdHJpbmdJbmZv U3RyaW5nKCZidWZmZXIsICJwZXJpb2QiKTsKKwkJCWJyZWFrOworCiAJCWNhc2UgT0NMQVNT X0NPTlZFUlNJT046CiAJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZidWZmZXIsICJjb252 ZXJzaW9uIik7CiAJCQlicmVhazsKQEAgLTQ5NTgsNiArNTAwOSwyOCBAQCBnZXRPYmplY3RJ ZGVudGl0eVBhcnRzKGNvbnN0IE9iamVjdEFkZHJlc3MgKm9iamVjdCwKIAkJCQlicmVhazsK IAkJCX0KIAorCQljYXNlIE9DTEFTU19QRVJJT0Q6CisJCQl7CisJCQkJSGVhcFR1cGxlCXBl clR1cDsKKwkJCQlGb3JtX3BnX3BlcmlvZCBwZXI7CisKKwkJCQlwZXJUdXAgPSBTZWFyY2hT eXNDYWNoZTEoUEVSSU9ET0lELAorCQkJCQkJCQkJCSBPYmplY3RJZEdldERhdHVtKG9iamVj dC0+b2JqZWN0SWQpKTsKKwkJCQlpZiAoIUhlYXBUdXBsZUlzVmFsaWQocGVyVHVwKSkKKwkJ CQkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHBlcmlvZCAldSIsCisJ CQkJCQkgb2JqZWN0LT5vYmplY3RJZCk7CisJCQkJcGVyID0gKEZvcm1fcGdfcGVyaW9kKSBH RVRTVFJVQ1QocGVyVHVwKTsKKworCQkJCWFwcGVuZFN0cmluZ0luZm8oJmJ1ZmZlciwgIiVz IG9uICIsCisJCQkJCQkJCSBxdW90ZV9pZGVudGlmaWVyKE5hbWVTdHIocGVyLT5wZXJuYW1l KSkpOworCQkJCWdldFJlbGF0aW9uSWRlbnRpdHkoJmJ1ZmZlciwgcGVyLT5wZXJyZWxpZCwg b2JqbmFtZSwgZmFsc2UpOworCQkJCWlmIChvYmpuYW1lKQorCQkJCQkqb2JqbmFtZSA9IGxh cHBlbmQoKm9iam5hbWUsIHBzdHJkdXAoTmFtZVN0cihwZXItPnBlcm5hbWUpKSk7CisKKwkJ CQlSZWxlYXNlU3lzQ2FjaGUocGVyVHVwKTsKKwkJCQlicmVhazsKKwkJCX0KKwogCQljYXNl IE9DTEFTU19DT05WRVJTSU9OOgogCQkJewogCQkJCUhlYXBUdXBsZQljb25UdXA7CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3BlcmlvZC5jIGIvc3JjL2JhY2tlbmQv Y2F0YWxvZy9wZ19wZXJpb2QuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMC4uNDY1YjViNjc1ZTMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvYmFja2VuZC9jYXRh bG9nL3BnX3BlcmlvZC5jCkBAIC0wLDAgKzEsMTMyIEBACisvKi0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAqCisgKiBwZ19wZXJpb2QuYworICoJICByb3V0aW5lcyB0byBzdXBwb3J0IG1hbmlw dWxhdGlvbiBvZiB0aGUgcGdfcGVyaW9kIHJlbGF0aW9uCisgKgorICogUG9ydGlvbnMgQ29w eXJpZ2h0IChjKSAxOTk2LTIwMjEsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdy b3VwCisgKgorICoKKyAqIElERU5USUZJQ0FUSU9OCisgKgkgIHNyYy9iYWNrZW5kL2NhdGFs b2cvcGdfcGVyaW9kLmMKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworI2luY2x1 ZGUgInBvc3RncmVzLmgiCisKKyNpbmNsdWRlICJhY2Nlc3MvZ2VuYW0uaCIKKyNpbmNsdWRl ICJhY2Nlc3MvaGVhcGFtLmgiCisjaW5jbHVkZSAiYWNjZXNzL2h0dXBfZGV0YWlscy5oIgor I2luY2x1ZGUgImNhdGFsb2cvaW5kZXhpbmcuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3Bl cmlvZC5oIgorI2luY2x1ZGUgInV0aWxzL2ZtZ3JvaWRzLmgiCisjaW5jbHVkZSAidXRpbHMv bHN5c2NhY2hlLmgiCisjaW5jbHVkZSAidXRpbHMvcmVsLmgiCisjaW5jbHVkZSAidXRpbHMv c3lzY2FjaGUuaCIKKworCisvKgorICogRGVsZXRlIGEgc2luZ2xlIHBlcmlvZCByZWNvcmQu CisgKi8KK3ZvaWQKK1JlbW92ZVBlcmlvZEJ5SWQoT2lkIHBlcmlvZElkKQoreworCVJlbGF0 aW9uCXBnX3BlcmlvZDsKKwlIZWFwVHVwbGUJdHVwOworCisJcGdfcGVyaW9kID0gdGFibGVf b3BlbihQZXJpb2RSZWxhdGlvbklkLCBSb3dFeGNsdXNpdmVMb2NrKTsKKworCXR1cCA9IFNl YXJjaFN5c0NhY2hlMShQRVJJT0RPSUQsIE9iamVjdElkR2V0RGF0dW0ocGVyaW9kSWQpKTsK KwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHVwKSkgLyogc2hvdWxkIG5vdCBoYXBwZW4gKi8K KwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHBlcmlvZCAldSIsIHBl cmlvZElkKTsKKworCS8qIEZyeSB0aGUgcGVyaW9kIGl0c2VsZiAqLworCUNhdGFsb2dUdXBs ZURlbGV0ZShwZ19wZXJpb2QsICZ0dXAtPnRfc2VsZik7CisKKwkvKiBDbGVhbiB1cCAqLwor CVJlbGVhc2VTeXNDYWNoZSh0dXApOworCXRhYmxlX2Nsb3NlKHBnX3BlcmlvZCwgUm93RXhj bHVzaXZlTG9jayk7Cit9CisKKy8qCisgKiBnZXRfcmVsYXRpb25fcGVyaW9kX29pZAorICoJ CUZpbmQgYSBwZXJpb2Qgb24gdGhlIHNwZWNpZmllZCByZWxhdGlvbiB3aXRoIHRoZSBzcGVj aWZpZWQgbmFtZS4KKyAqCQlSZXR1cm5zIHBlcmlvZCdzIE9JRC4KKyAqLworT2lkCitnZXRf cmVsYXRpb25fcGVyaW9kX29pZChPaWQgcmVsaWQsIGNvbnN0IGNoYXIgKnBlcm5hbWUsIGJv b2wgbWlzc2luZ19vaykKK3sKKwlSZWxhdGlvbglwZ19wZXJpb2Q7CisJSGVhcFR1cGxlCXR1 cGxlOworCVN5c1NjYW5EZXNjIHNjYW47CisJU2NhbktleURhdGEgc2tleVsyXTsKKwlPaWQJ CQlwZXJPaWQgPSBJbnZhbGlkT2lkOworCisJLyogRmV0Y2ggdGhlIHBlcmlvZCB0dXBsZSBm cm9tIHBnX3BlcmlvZC4gKi8KKwlwZ19wZXJpb2QgPSB0YWJsZV9vcGVuKFBlcmlvZFJlbGF0 aW9uSWQsIEFjY2Vzc1NoYXJlTG9jayk7CisKKwlTY2FuS2V5SW5pdCgmc2tleVswXSwKKwkJ CQlBbnVtX3BnX3BlcmlvZF9wZXJyZWxpZCwKKwkJCQlCVEVxdWFsU3RyYXRlZ3lOdW1iZXIs IEZfT0lERVEsCisJCQkJT2JqZWN0SWRHZXREYXR1bShyZWxpZCkpOworCVNjYW5LZXlJbml0 KCZza2V5WzFdLAorCQkJCUFudW1fcGdfcGVyaW9kX3Blcm5hbWUsCisJCQkJQlRFcXVhbFN0 cmF0ZWd5TnVtYmVyLCBGX05BTUVFUSwKKwkJCQlDU3RyaW5nR2V0RGF0dW0ocGVybmFtZSkp OworCisJc2NhbiA9IHN5c3RhYmxlX2JlZ2luc2NhbihwZ19wZXJpb2QsIFBlcmlvZFJlbGlk TmFtZUluZGV4SWQsIHRydWUsCisJCQkJCQkJICBOVUxMLCAyLCBza2V5KTsKKworCS8qIFRo ZXJlIGNhbiBiZSBhdCBtb3N0IG9uZSBtYXRjaGluZyByb3cgKi8KKwlpZiAoSGVhcFR1cGxl SXNWYWxpZCh0dXBsZSA9IHN5c3RhYmxlX2dldG5leHQoc2NhbikpKQorCQlwZXJPaWQgPSAo KEZvcm1fcGdfcGVyaW9kKSBHRVRTVFJVQ1QodHVwbGUpKS0+b2lkOworCisJc3lzdGFibGVf ZW5kc2NhbihzY2FuKTsKKworCS8qIElmIG5vIHN1Y2ggcGVyaW9kIGV4aXN0cywgY29tcGxh aW4gKi8KKwlpZiAoIU9pZElzVmFsaWQocGVyT2lkKSAmJiAhbWlzc2luZ19vaykKKwkJZXJl cG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9PQkpFQ1QpLAor CQkJCSBlcnJtc2coInBlcmlvZCBcIiVzXCIgZm9yIHRhYmxlIFwiJXNcIiBkb2VzIG5vdCBl eGlzdCIsCisJCQkJCQlwZXJuYW1lLCBnZXRfcmVsX25hbWUocmVsaWQpKSkpOworCisJdGFi bGVfY2xvc2UocGdfcGVyaW9kLCBBY2Nlc3NTaGFyZUxvY2spOworCisJcmV0dXJuIHBlck9p ZDsKK30KKworLyoKKyAqIGdldF9wZXJpb2RfYXR0bm9zCisgKgkJR2V0IHRoZSBhdHRubyBv ZiB0aGUgR0VORVJBVEVEIHJhbmdldHlwZSBjb2x1bW4KKyAqCQlmb3IgYWxsIFBFUklPRHMg aW4gdGhpcyB0YWJsZS4KKyAqLworZXh0ZXJuIEJpdG1hcHNldAorKmdldF9wZXJpb2RfYXR0 bm9zKE9pZCByZWxpZCkKK3sKKwlCaXRtYXBzZXQgKmF0dG5vcyA9IE5VTEw7CisJUmVsYXRp b24JcGdfcGVyaW9kOworCUhlYXBUdXBsZQl0dXBsZTsKKwlTeXNTY2FuRGVzYyBzY2FuOwor CVNjYW5LZXlEYXRhIHNrZXlbMV07CisKKwlwZ19wZXJpb2QgPSB0YWJsZV9vcGVuKFBlcmlv ZFJlbGF0aW9uSWQsIEFjY2Vzc1NoYXJlTG9jayk7CisKKwlTY2FuS2V5SW5pdCgmc2tleVsw XSwKKwkJCQlBbnVtX3BnX3BlcmlvZF9wZXJyZWxpZCwKKwkJCQlCVEVxdWFsU3RyYXRlZ3lO dW1iZXIsIEZfT0lERVEsCisJCQkJT2JqZWN0SWRHZXREYXR1bShyZWxpZCkpOworCisJc2Nh biA9IHN5c3RhYmxlX2JlZ2luc2NhbihwZ19wZXJpb2QsIFBlcmlvZFJlbGlkTmFtZUluZGV4 SWQsIHRydWUsCisJCQkJCQkJICBOVUxMLCAxLCBza2V5KTsKKworCXdoaWxlIChIZWFwVHVw bGVJc1ZhbGlkKHR1cGxlID0gc3lzdGFibGVfZ2V0bmV4dChzY2FuKSkpCisJeworCQlGb3Jt X3BnX3BlcmlvZCBwZXJpb2QgPSAoRm9ybV9wZ19wZXJpb2QpIEdFVFNUUlVDVCh0dXBsZSk7 CisKKwkJYXR0bm9zID0gYm1zX2FkZF9tZW1iZXIoYXR0bm9zLCBwZXJpb2QtPnBlcnJhbmdl KTsKKwl9CisKKwlzeXN0YWJsZV9lbmRzY2FuKHNjYW4pOworCXRhYmxlX2Nsb3NlKHBnX3Bl cmlvZCwgQWNjZXNzU2hhcmVMb2NrKTsKKworCXJldHVybiBhdHRub3M7Cit9CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3NxbF9mZWF0dXJlcy50eHQgYi9zcmMvYmFja2Vu ZC9jYXRhbG9nL3NxbF9mZWF0dXJlcy50eHQKaW5kZXggOTI1ZDE1YTJjMzguLmM5M2M2OTc1 MGFiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3NxbF9mZWF0dXJlcy50eHQK KysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zcWxfZmVhdHVyZXMudHh0CkBAIC00NDgsNyAr NDQ4LDcgQEAgVDE3NglTZXF1ZW5jZSBnZW5lcmF0b3Igc3VwcG9ydAkJCU5PCXN1cHBvcnRl ZCBleGNlcHQgZm9yIE5FWFQgVkFMVUUgRk9SCiBUMTc3CVNlcXVlbmNlIGdlbmVyYXRvciBz dXBwb3J0OiBzaW1wbGUgcmVzdGFydCBvcHRpb24JCQlZRVMJCiBUMTc4CUlkZW50aXR5IGNv bHVtbnM6IHNpbXBsZSByZXN0YXJ0IG9wdGlvbgkJCVlFUwkKIFQxODAJU3lzdGVtLXZlcnNp b25lZCB0YWJsZXMJCQlOTwkKLVQxODEJQXBwbGljYXRpb24tdGltZSBwZXJpb2QgdGFibGVz CQkJTk8JCitUMTgxCUFwcGxpY2F0aW9uLXRpbWUgcGVyaW9kIHRhYmxlcwkJCVlFUwkKIFQx OTEJUmVmZXJlbnRpYWwgYWN0aW9uIFJFU1RSSUNUCQkJWUVTCQogVDIwMAlUcmlnZ2VyIERE TAkJCU5PCXNpbWlsYXIgYnV0IG5vdCBmdWxseSBjb21wYXRpYmxlCiBUMjAxCUNvbXBhcmFi bGUgZGF0YSB0eXBlcyBmb3IgcmVmZXJlbnRpYWwgY29uc3RyYWludHMJCQlZRVMJCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9hbHRlci5jIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvYWx0ZXIuYwppbmRleCBiMmU0MjYwYWVmNy4uMzQ2N2I2OGMwYzYgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FsdGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvYWx0ZXIuYwpAQCAtNjY5LDYgKzY2OSw3IEBAIEFsdGVyT2JqZWN0TmFtZXNwYWNl X29pZChPaWQgY2xhc3NJZCwgT2lkIG9iamlkLCBPaWQgbnNwT2lkLAogCiAJCWNhc2UgT0NM QVNTX0NBU1Q6CiAJCWNhc2UgT0NMQVNTX0NPTlNUUkFJTlQ6CisJCWNhc2UgT0NMQVNTX1BF UklPRDoKIAkJY2FzZSBPQ0xBU1NfREVGQVVMVDoKIAkJY2FzZSBPQ0xBU1NfTEFOR1VBR0U6 CiAJCWNhc2UgT0NMQVNTX0xBUkdFT0JKRUNUOgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvY29tbWVudC5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29tbWVudC5jCmlu ZGV4IGU5ZDUwZmM3ZDg3Li4wNWZlZmI1YjVjZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvY29tbWVudC5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvbW1lbnQu YwpAQCAtMTAyLDYgKzEwMiwxNiBAQCBDb21tZW50T2JqZWN0KENvbW1lbnRTdG10ICpzdG10 KQogCQkJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWxhdGlvbikpLAogCQkJCQkJ IGVycmRldGFpbF9yZWxraW5kX25vdF9zdXBwb3J0ZWQocmVsYXRpb24tPnJkX3JlbC0+cmVs a2luZCkpKTsKIAkJCWJyZWFrOworCisJCWNhc2UgT0JKRUNUX1BFUklPRDoKKwkJCS8qIFBl cmlvZHMgY2FuIG9ubHkgZ28gb24gdGFibGVzICovCisJCQlpZiAocmVsYXRpb24tPnJkX3Jl bC0+cmVsa2luZCAhPSBSRUxLSU5EX1JFTEFUSU9OKQorCQkJCWVyZXBvcnQoRVJST1IsCisJ CQkJCQkoZXJyY29kZShFUlJDT0RFX1dST05HX09CSkVDVF9UWVBFKSwKKwkJCQkJCSBlcnJt c2coIlwiJXNcIiBpcyBub3QgYSB0YWJsZSIsCisJCQkJCQkJCVJlbGF0aW9uR2V0UmVsYXRp b25OYW1lKHJlbGF0aW9uKSkpKTsKKwkJCWJyZWFrOworCiAJCWRlZmF1bHQ6CiAJCQlicmVh azsKIAl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9kcm9wY21kcy5jIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvZHJvcGNtZHMuYwppbmRleCA4N2EyZGI0ZTBmNS4uNGFl OTkyMWQzY2IgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2Ryb3BjbWRzLmMK KysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZHJvcGNtZHMuYwpAQCAtNTA5LDYgKzUwOSw3 IEBAIGRvZXNfbm90X2V4aXN0X3NraXBwaW5nKE9iamVjdFR5cGUgb2JqdHlwZSwgTm9kZSAq b2JqZWN0KQogCQljYXNlIE9CSkVDVF9ET01DT05TVFJBSU5UOgogCQljYXNlIE9CSkVDVF9M QVJHRU9CSkVDVDoKIAkJY2FzZSBPQkpFQ1RfUEFSQU1FVEVSX0FDTDoKKwkJY2FzZSBPQkpF Q1RfUEVSSU9EOgogCQljYXNlIE9CSkVDVF9QVUJMSUNBVElPTl9OQU1FU1BBQ0U6CiAJCWNh c2UgT0JKRUNUX1BVQkxJQ0FUSU9OX1JFTDoKIAkJY2FzZSBPQkpFQ1RfVEFCQ09OU1RSQUlO VDoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V2ZW50X3RyaWdnZXIuYyBi L3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V2ZW50X3RyaWdnZXIuYwppbmRleCBjOGI2NjIxMzFj My4uYzBjMWMzNDI5YjAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V2ZW50 X3RyaWdnZXIuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9ldmVudF90cmlnZ2VyLmMK QEAgLTExNjYsNiArMTE2Niw3IEBAIEV2ZW50VHJpZ2dlclN1cHBvcnRzT2JqZWN0VHlwZShP YmplY3RUeXBlIG9idHlwZSkKIAkJY2FzZSBPQkpFQ1RfT1BDTEFTUzoKIAkJY2FzZSBPQkpF Q1RfT1BFUkFUT1I6CiAJCWNhc2UgT0JKRUNUX09QRkFNSUxZOgorCQljYXNlIE9CSkVDVF9Q RVJJT0Q6CiAJCWNhc2UgT0JKRUNUX1BPTElDWToKIAkJY2FzZSBPQkpFQ1RfUFJPQ0VEVVJF OgogCQljYXNlIE9CSkVDVF9QVUJMSUNBVElPTjoKQEAgLTEyMjQsNiArMTIyNSw3IEBAIEV2 ZW50VHJpZ2dlclN1cHBvcnRzT2JqZWN0Q2xhc3MoT2JqZWN0Q2xhc3Mgb2JqY2xhc3MpCiAJ CWNhc2UgT0NMQVNTX0NBU1Q6CiAJCWNhc2UgT0NMQVNTX0NPTExBVElPTjoKIAkJY2FzZSBP Q0xBU1NfQ09OU1RSQUlOVDoKKwkJY2FzZSBPQ0xBU1NfUEVSSU9EOgogCQljYXNlIE9DTEFT U19DT05WRVJTSU9OOgogCQljYXNlIE9DTEFTU19ERUZBVUxUOgogCQljYXNlIE9DTEFTU19M QU5HVUFHRToKQEAgLTIyNjUsNiArMjI2Nyw3IEBAIHN0cmluZ2lmeV9ncmFudF9vYmp0eXBl KE9iamVjdFR5cGUgb2JqdHlwZSkKIAkJY2FzZSBPQkpFQ1RfT1BDTEFTUzoKIAkJY2FzZSBP QkpFQ1RfT1BFUkFUT1I6CiAJCWNhc2UgT0JKRUNUX09QRkFNSUxZOgorCQljYXNlIE9CSkVD VF9QRVJJT0Q6CiAJCWNhc2UgT0JKRUNUX1BPTElDWToKIAkJY2FzZSBPQkpFQ1RfUFVCTElD QVRJT046CiAJCWNhc2UgT0JKRUNUX1BVQkxJQ0FUSU9OX05BTUVTUEFDRToKQEAgLTIzNDks NiArMjM1Miw3IEBAIHN0cmluZ2lmeV9hZGVmcHJpdnNfb2JqdHlwZShPYmplY3RUeXBlIG9i anR5cGUpCiAJCWNhc2UgT0JKRUNUX09QRVJBVE9SOgogCQljYXNlIE9CSkVDVF9PUEZBTUlM WToKIAkJY2FzZSBPQkpFQ1RfUEFSQU1FVEVSX0FDTDoKKwkJY2FzZSBPQkpFQ1RfUEVSSU9E OgogCQljYXNlIE9CSkVDVF9QT0xJQ1k6CiAJCWNhc2UgT0JKRUNUX1BVQkxJQ0FUSU9OOgog CQljYXNlIE9CSkVDVF9QVUJMSUNBVElPTl9OQU1FU1BBQ0U6CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9jb21tYW5kcy9zZWNsYWJlbC5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc2Vj bGFiZWwuYwppbmRleCA1NjA3MjczYmY5Zi4uYWY3MTc3MTc5Y2UgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL3NlY2xhYmVsLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFu ZHMvc2VjbGFiZWwuYwpAQCAtNzksNiArNzksNyBAQCBTZWNMYWJlbFN1cHBvcnRzT2JqZWN0 VHlwZShPYmplY3RUeXBlIG9ianR5cGUpCiAJCWNhc2UgT0JKRUNUX09QRVJBVE9SOgogCQlj YXNlIE9CSkVDVF9PUEZBTUlMWToKIAkJY2FzZSBPQkpFQ1RfUEFSQU1FVEVSX0FDTDoKKwkJ Y2FzZSBPQkpFQ1RfUEVSSU9EOgogCQljYXNlIE9CSkVDVF9QT0xJQ1k6CiAJCWNhc2UgT0JK RUNUX1BVQkxJQ0FUSU9OX05BTUVTUEFDRToKIAkJY2FzZSBPQkpFQ1RfUFVCTElDQVRJT05f UkVMOgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgYi9z cmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwppbmRleCBlNGJmMDJiNTE2My4uZmNk NjViN2UxNjIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5j CisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCkBAIC00NCw2ICs0NCw3 IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19sYXJnZW9iamVjdC5oIgogI2luY2x1ZGUgImNh dGFsb2cvcGdfbmFtZXNwYWNlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19vcGNsYXNzLmgi CisjaW5jbHVkZSAiY2F0YWxvZy9wZ19wZXJpb2QuaCIKICNpbmNsdWRlICJjYXRhbG9nL3Bn X3N0YXRpc3RpY19leHQuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3RhYmxlc3BhY2UuaCIK ICNpbmNsdWRlICJjYXRhbG9nL3BnX3RyaWdnZXIuaCIKQEAgLTE1Myw2ICsxNTQsMTEgQEAg dHlwZWRlZiBlbnVtIEFsdGVyVGFibGVQYXNzCiAJQVRfUEFTU19PTERfSU5ERVgsCQkJLyog cmUtYWRkIGV4aXN0aW5nIGluZGV4ZXMgKi8KIAlBVF9QQVNTX09MRF9DT05TVFIsCQkJLyog cmUtYWRkIGV4aXN0aW5nIGNvbnN0cmFpbnRzICovCiAJLyogV2UgY291bGQgc3VwcG9ydCBh IFJFTkFNRSBDT0xVTU4gcGFzcyBoZXJlLCBidXQgbm90IGN1cnJlbnRseSB1c2VkICovCisJ LyoKKwkgKiBXZSBtdXN0IGFkZCBQRVJJT0RzIGFmdGVyIGNvbHVtbnMsIGluIGNhc2UgdGhl eSByZWZlcmVuY2UgYSBuZXdseS1hZGRlZCBjb2x1bW4sCisJICogYW5kIGJlZm9yZSBjb25z dHJhaW50cywgaW4gY2FzZSBhIG5ld2x5LWFkZGVkIFBLL0ZLIHJlZmVyZW5jZXMgdGhlbS4K KwkgKi8KKwlBVF9QQVNTX0FERF9QRVJJT0QsCQkJLyogQUREIFBFUklPRCAqLwogCUFUX1BB U1NfQUREX0NPTlNUUiwJCQkvKiBBREQgY29uc3RyYWludHMgKGluaXRpYWwgZXhhbWluYXRp b24pICovCiAJQVRfUEFTU19DT0xfQVRUUlMsCQkJLyogc2V0IGNvbHVtbiBhdHRyaWJ1dGVz LCBlZyBOT1QgTlVMTCAqLwogCUFUX1BBU1NfQUREX0lOREVYQ09OU1RSLAkvKiBBREQgaW5k ZXgtYmFzZWQgY29uc3RyYWludHMgKi8KQEAgLTM2MCw2ICszNjYsNyBAQCBzdGF0aWMgdm9p ZCBSYW5nZVZhckNhbGxiYWNrRm9yVHJ1bmNhdGUoY29uc3QgUmFuZ2VWYXIgKnJlbGF0aW9u LAogc3RhdGljIExpc3QgKk1lcmdlQXR0cmlidXRlcyhMaXN0ICpjb2x1bW5zLCBjb25zdCBM aXN0ICpzdXBlcnMsIGNoYXIgcmVscGVyc2lzdGVuY2UsCiAJCQkJCQkJIGJvb2wgaXNfcGFy dGl0aW9uLCBMaXN0ICoqc3VwY29uc3RyLAogCQkJCQkJCSBMaXN0ICoqc3Vwbm90bnVsbHMp Oworc3RhdGljIExpc3QgKk1lcmdlUGVyaW9kcyhjaGFyICpyZWxuYW1lLCBMaXN0ICpwZXJp b2RzLCBMaXN0ICp0YWJsZUVsdHMsIExpc3QgKnN1cGVycyk7CiBzdGF0aWMgTGlzdCAqTWVy Z2VDaGVja0NvbnN0cmFpbnQoTGlzdCAqY29uc3RyYWludHMsIGNvbnN0IGNoYXIgKm5hbWUs IE5vZGUgKmV4cHIpOwogc3RhdGljIHZvaWQgTWVyZ2VDaGlsZEF0dHJpYnV0ZShMaXN0ICpp bmhfY29sdW1ucywgaW50IGV4aXN0X2F0dG5vLCBpbnQgbmV3Y29sX2F0dG5vLCBjb25zdCBD b2x1bW5EZWYgKm5ld2RlZik7CiBzdGF0aWMgQ29sdW1uRGVmICpNZXJnZUluaGVyaXRlZEF0 dHJpYnV0ZShMaXN0ICppbmhfY29sdW1ucywgaW50IGV4aXN0X2F0dG5vLCBjb25zdCBDb2x1 bW5EZWYgKm5ld2RlZik7CkBAIC00NDAsNiArNDQ3LDggQEAgc3RhdGljIE9iamVjdEFkZHJl c3MgQVRFeGVjQWRkQ29sdW1uKExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRh YiwKIAkJCQkJCQkJCSBBbHRlclRhYmxlVXRpbGl0eUNvbnRleHQgKmNvbnRleHQpOwogc3Rh dGljIGJvb2wgY2hlY2tfZm9yX2NvbHVtbl9uYW1lX2NvbGxpc2lvbihSZWxhdGlvbiByZWws IGNvbnN0IGNoYXIgKmNvbG5hbWUsCiAJCQkJCQkJCQkJCWJvb2wgaWZfbm90X2V4aXN0cyk7 CitzdGF0aWMgYm9vbCBjaGVja19mb3JfcGVyaW9kX25hbWVfY29sbGlzaW9uKFJlbGF0aW9u IHJlbCwgY29uc3QgY2hhciAqcGVybmFtZSwKKwkJCQkJCQkJCQkJYm9vbCBjb2xleGlzdHMs IGJvb2wgaWZfbm90X2V4aXN0cyk7CiBzdGF0aWMgdm9pZCBhZGRfY29sdW1uX2RhdGF0eXBl X2RlcGVuZGVuY3koT2lkIHJlbGlkLCBpbnQzMiBhdHRudW0sIE9pZCB0eXBpZCk7CiBzdGF0 aWMgdm9pZCBhZGRfY29sdW1uX2NvbGxhdGlvbl9kZXBlbmRlbmN5KE9pZCByZWxpZCwgaW50 MzIgYXR0bnVtLCBPaWQgY29sbGlkKTsKIHN0YXRpYyBPYmplY3RBZGRyZXNzIEFURXhlY0Ry b3BOb3ROdWxsKFJlbGF0aW9uIHJlbCwgY29uc3QgY2hhciAqY29sTmFtZSwgYm9vbCByZWN1 cnNlLApAQCAtNDU5LDYgKzQ2OCwxMiBAQCBzdGF0aWMgT2JqZWN0QWRkcmVzcyBBVEV4ZWND b2x1bW5EZWZhdWx0KFJlbGF0aW9uIHJlbCwgY29uc3QgY2hhciAqY29sTmFtZSwKIAkJCQkJ CQkJCQkgTm9kZSAqbmV3RGVmYXVsdCwgTE9DS01PREUgbG9ja21vZGUpOwogc3RhdGljIE9i amVjdEFkZHJlc3MgQVRFeGVjQ29va2VkQ29sdW1uRGVmYXVsdChSZWxhdGlvbiByZWwsIEF0 dHJOdW1iZXIgYXR0bnVtLAogCQkJCQkJCQkJCQkgICBOb2RlICpuZXdEZWZhdWx0KTsKK3N0 YXRpYyBPYmplY3RBZGRyZXNzIEFURXhlY0FkZFBlcmlvZChSZWxhdGlvbiByZWwsIFBlcmlv ZERlZiAqcGVyaW9kLAorCQkJCQkJCQkJIEFsdGVyVGFibGVVdGlsaXR5Q29udGV4dCAqY29u dGV4dCk7CitzdGF0aWMgdm9pZCBBVEV4ZWNEcm9wUGVyaW9kKFJlbGF0aW9uIHJlbCwgY29u c3QgY2hhciAqcGVyaW9kTmFtZSwKKwkJCQkJCQkgRHJvcEJlaGF2aW9yIGJlaGF2aW9yLAor CQkJCQkJCSBib29sIHJlY3Vyc2UsIGJvb2wgcmVjdXJzaW5nLAorCQkJCQkJCSBib29sIG1p c3Npbmdfb2spOwogc3RhdGljIE9iamVjdEFkZHJlc3MgQVRFeGVjQWRkSWRlbnRpdHkoUmVs YXRpb24gcmVsLCBjb25zdCBjaGFyICpjb2xOYW1lLAogCQkJCQkJCQkJICAgTm9kZSAqZGVm LCBMT0NLTU9ERSBsb2NrbW9kZSwgYm9vbCByZWN1cnNlLCBib29sIHJlY3Vyc2luZyk7CiBz dGF0aWMgT2JqZWN0QWRkcmVzcyBBVEV4ZWNTZXRJZGVudGl0eShSZWxhdGlvbiByZWwsIGNv bnN0IGNoYXIgKmNvbE5hbWUsCkBAIC02NzUsNiArNjkwLDEwIEBAIHN0YXRpYyBMaXN0ICpH ZXRQYXJlbnRlZEZvcmVpZ25LZXlSZWZzKFJlbGF0aW9uIHBhcnRpdGlvbik7CiBzdGF0aWMg dm9pZCBBVERldGFjaENoZWNrTm9Gb3JlaWduS2V5UmVmcyhSZWxhdGlvbiBwYXJ0aXRpb24p Owogc3RhdGljIGNoYXIgR2V0QXR0cmlidXRlQ29tcHJlc3Npb24oT2lkIGF0dHR5cGlkLCBj b25zdCBjaGFyICpjb21wcmVzc2lvbik7CiBzdGF0aWMgY2hhciBHZXRBdHRyaWJ1dGVTdG9y YWdlKE9pZCBhdHR0eXBpZCwgY29uc3QgY2hhciAqc3RvcmFnZW1vZGUpOworc3RhdGljIHZv aWQgQWRkUmVsYXRpb25OZXdQZXJpb2QoUmVsYXRpb24gcmVsLCBQZXJpb2REZWYgKnBlcmlv ZCk7CitzdGF0aWMgdm9pZCBWYWxpZGF0ZVBlcmlvZChSZWxhdGlvbiByZWwsIFBlcmlvZERl ZiAqcGVyaW9kKTsKK3N0YXRpYyBDb25zdHJhaW50ICptYWtlX2NvbnN0cmFpbnRfZm9yX3Bl cmlvZChSZWxhdGlvbiByZWwsIFBlcmlvZERlZiAqcGVyaW9kKTsKK3N0YXRpYyBDb2x1bW5E ZWYgKm1ha2VfcmFuZ2VfY29sdW1uX2Zvcl9wZXJpb2QoUGVyaW9kRGVmICpwZXJpb2QpOwog CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KQEAgLTkwMyw2ICs5MjIsNzkgQEAgRGVmaW5lUmVsYXRpb24o Q3JlYXRlU3RtdCAqc3RtdCwgY2hhciByZWxraW5kLCBPaWQgb3duZXJJZCwKIAkJCQkJCXN0 bXQtPnBhcnRib3VuZCAhPSBOVUxMLAogCQkJCQkJJm9sZF9jb25zdHJhaW50cywgJm9sZF9u b3RudWxscyk7CiAKKwkvKgorCSAqIFVzaW5nIHRoZSBjb2x1bW4gbGlzdCAoaW5jbHVkaW5n IGluaGVyaXRlZCBjb2x1bW5zKSwKKwkgKiBmaW5kIHRoZSBzdGFydC9lbmQgY29sdW1ucyBm b3IgZWFjaCBwZXJpb2QuCisJICogUEVSSU9EcyBzaG91bGQgYmUgaW5oZXJpdGVkIHRvbyAo YnV0IGFyZW4ndCB5ZXQpLgorCSAqLworCXN0bXQtPnBlcmlvZHMgPSBNZXJnZVBlcmlvZHMo cmVsbmFtZSwgc3RtdC0+cGVyaW9kcywgc3RtdC0+dGFibGVFbHRzLCBpbmhlcml0T2lkcyk7 CisKKwkvKgorCSAqIEZvciBlYWNoIFBFUklPRCB3ZSBuZWVkIGEgR0VORVJBVEVEIGNvbHVt bi4KKwkgKiBVc3VhbGx5IHdlIG11c3QgY3JlYXRlIHRoaXMsIHNvIHdlIGFkZCBpdCB0byB0 YWJsZUVsdHMuCisJICogSWYgdGhlIHVzZXIgc2F5cyB0aGUgY29sdW1uIGFscmVhZHkgZXhp c3RzLAorCSAqIG1ha2Ugc3VyZSBpdCBpcyBzZW5zaWJsZS4KKwkgKiBUaGVzZSBjb2x1bW5z IGFyZSBub3QgaW5oZXJpdGVkLAorCSAqIHNvIHdlIGRvbid0IHdvcnJ5IGFib3V0IGNvbmZs aWN0cyBpbiB0YWJsZUVsdHMuCisJICoKKwkgKiBXZSBhbGxvdyB0aGlzIGNvbGV4aXN0cyBv cHRpb24gdG8gc3VwcG9ydCBwZ191cGdyYWRlLAorCSAqIHNvIHdlIGhhdmUgbW9yZSBjb250 cm9sIG92ZXIgdGhlIEdFTkVSQVRFRCBjb2x1bW4KKwkgKiAod2hvc2UgYXR0bnVtIG11c3Qg bWF0Y2ggdGhlIG9sZCB2YWx1ZSkuCisJICovCisJZm9yZWFjaChsaXN0cHRyLCBzdG10LT5w ZXJpb2RzKQorCXsKKwkJUGVyaW9kRGVmICpwZXJpb2QgPSAoUGVyaW9kRGVmICopIGxmaXJz dChsaXN0cHRyKTsKKworCQlpZiAocGVyaW9kLT5jb2xleGlzdHMpCisJCXsKKwkJCUxpc3RD ZWxsICpjZWxsOworCQkJYm9vbCBmb3VuZCA9IGZhbHNlOworCisJCQlmb3JlYWNoKGNlbGws IHN0bXQtPnRhYmxlRWx0cykKKwkJCXsKKwkJCQlDb2x1bW5EZWYgICpjb2xEZWYgPSBsZmly c3QoY2VsbCk7CisKKwkJCQlpZiAoc3RyY21wKHBlcmlvZC0+cGVyaW9kbmFtZSwgY29sRGVm LT5jb2xuYW1lKSA9PSAwKQorCQkJCXsKKwkJCQkJLyoKKwkJCQkJICogTG90cyB0byBjaGVj ayBoZXJlOgorCQkJCQkgKiBJdCBtdXN0IGJlIEdFTkVSQVRFRCBBTFdBWVMsCisJCQkJCSAq IGl0IG11c3QgaGF2ZSB0aGUgcmlnaHQgZXhwcmVzc2lvbiwKKwkJCQkJICogaXQgbXVzdCBi ZSB0aGUgcmlnaHQgdHlwZSwKKwkJCQkJICogaXQgbXVzdCBiZSBOT1QgTlVMTCwKKwkJCQkJ ICogaXQgbXVzdCBub3QgYmUgaW5oZXJpdGVkLgorCQkJCQkgKi8KKwkJCQkJaWYgKGNvbERl Zi0+Z2VuZXJhdGVkID09ICdcMCcpCisJCQkJCQllcmVwb3J0KEVSUk9SLCAoZXJybXNnKCJQ ZXJpb2QgJXMgdXNlcyBhIG5vbi1nZW5lcmF0ZWQgY29sdW1uIiwgcGVyaW9kLT5wZXJpb2Ru YW1lKSkpOworCisJCQkJCWlmIChjb2xEZWYtPmdlbmVyYXRlZCAhPSBBVFRSSUJVVEVfR0VO RVJBVEVEX1NUT1JFRCkKKwkJCQkJCWVyZXBvcnQoRVJST1IsIChlcnJtc2coIlBlcmlvZCAl cyB1c2VzIGEgZ2VuZXJhdGVkIGNvbHVtbiB0aGF0IGlzIG5vdCBTVE9SRUQiLCBwZXJpb2Qt PnBlcmlvZG5hbWUpKSk7CisKKwkJCQkJLy8gVE9ETzogY2hlY2sgdGhlIEdFTkVSQVRFRCBl eHByZXNzaW9uIGFsc28uCisKKwkJCQkJaWYgKCFjb2xEZWYtPmlzX25vdF9udWxsICYmICFJ c0JpbmFyeVVwZ3JhZGUpCisJCQkJCQllcmVwb3J0KEVSUk9SLCAoZXJybXNnKCJQZXJpb2Qg JXMgdXNlcyBhIGdlbmVyYXRlZCBjb2x1bW4gdGhhdCBhbGxvd3MgbnVsbHMiLCBwZXJpb2Qt PnBlcmlvZG5hbWUpKSk7CisKKwkJCQkJaWYgKHBlcmlvZC0+cm5ndHlwaWQgIT0gdHlwZW5h bWVUeXBlSWQoTlVMTCwgY29sRGVmLT50eXBlTmFtZSkpCisJCQkJCQllcmVwb3J0KEVSUk9S LCAoZXJybXNnKCJQZXJpb2QgJXMgdXNlcyBhIGdlbmVyYXRlZCBjb2x1bW4gd2l0aCB0aGUg d3JvbmcgdHlwZSIsIHBlcmlvZC0+cGVyaW9kbmFtZSkpKTsKKworCQkJCQlpZiAoIWNvbERl Zi0+aXNfbG9jYWwpCisJCQkJCQllcmVwb3J0KEVSUk9SLCAoZXJybXNnKCJQZXJpb2QgJXMg dXNlcyBhIGdlbmVyYXRlZCBjb2x1bW4gdGhhdCBpcyBpbmhlcml0ZWQiLCBwZXJpb2QtPnBl cmlvZG5hbWUpKSk7CisKKwkJCQkJZm91bmQgPSB0cnVlOworCQkJCX0KKwkJCX0KKworCQkJ aWYgKCFmb3VuZCkKKwkJCQllcmVwb3J0KEVSUk9SLCAoZXJybXNnKCJObyBjb2x1bW4gZm91 bmQgd2l0aCBuYW1lICVzIiwgcGVyaW9kLT5wZXJpb2RuYW1lKSkpOworCQl9CisJCWVsc2UK KwkJeworCQkJQ29sdW1uRGVmICpjb2wgPSBtYWtlX3JhbmdlX2NvbHVtbl9mb3JfcGVyaW9k KHBlcmlvZCk7CisJCQlzdG10LT50YWJsZUVsdHMgPSBsYXBwZW5kKHN0bXQtPnRhYmxlRWx0 cywgY29sKTsKKwkJfQorCX0KKwogCS8qCiAJICogQ3JlYXRlIGEgdHVwbGUgZGVzY3JpcHRv ciBmcm9tIHRoZSByZWxhdGlvbiBzY2hlbWEuICBOb3RlIHRoYXQgdGhpcwogCSAqIGRlYWxz IHdpdGggY29sdW1uIG5hbWVzLCB0eXBlcywgYW5kIGluLWRlc2NyaXB0b3IgTk9UIE5VTEwg ZmxhZ3MsIGJ1dApAQCAtMTI4OCw2ICsxMzgwLDIxIEBAIERlZmluZVJlbGF0aW9uKENyZWF0 ZVN0bXQgKnN0bXQsIGNoYXIgcmVsa2luZCwgT2lkIG93bmVySWQsCiAJZm9yZWFjaChsaXN0 cHRyLCBubmNvbHMpCiAJCXNldF9hdHRub3RudWxsKE5VTEwsIHJlbCwgbGZpcnN0X2ludChs aXN0cHRyKSwgZmFsc2UsIE5vTG9jayk7CiAKKwkvKgorCSAqIENyZWF0ZSBwZXJpb2RzIGZv ciB0aGUgdGFibGUuIFRoaXMgbXVzdCBjb21lIGFmdGVyIHdlIGNyZWF0ZSBjb2x1bW5zCisJ ICogYW5kIGJlZm9yZSB3ZSBjcmVhdGUgaW5kZXggY29uc3RyYWludHMuIEl0IHdpbGwgYXV0 b21hdGljYWxseSBjcmVhdGUKKwkgKiBhIENIRUNLIGNvbnN0cmFpbnQgZm9yIHRoZSBwZXJp b2QuCisJICovCisJZm9yZWFjaChsaXN0cHRyLCBzdG10LT5wZXJpb2RzKQorCXsKKwkJUGVy aW9kRGVmICpwZXJpb2QgPSAoUGVyaW9kRGVmICopIGxmaXJzdChsaXN0cHRyKTsKKworCQkv KiBEb24ndCB1cGRhdGUgdGhlIGNvdW50IG9mIGNoZWNrIGNvbnN0cmFpbnRzIHR3aWNlICov CisJCUNvbW1hbmRDb3VudGVySW5jcmVtZW50KCk7CisKKwkJQWRkUmVsYXRpb25OZXdQZXJp b2QocmVsLCBwZXJpb2QpOworCX0KKwogCU9iamVjdEFkZHJlc3NTZXQoYWRkcmVzcywgUmVs YXRpb25SZWxhdGlvbklkLCByZWxhdGlvbklkKTsKIAogCS8qCkBAIC0xNDA0LDYgKzE1MTEs MzA5IEBAIEJ1aWxkRGVzY0ZvclJlbGF0aW9uKGNvbnN0IExpc3QgKmNvbHVtbnMpCiAJcmV0 dXJuIGRlc2M7CiB9CiAKKy8qCisgKiBtYWtlX2NvbnN0cmFpbnRfZm9yX3BlcmlvZAorICoK KyAqIEJ1aWxkcyBhIENIRUNLIENvbnN0cmFpbnQgdG8gZW5zdXJlIHN0YXJ0IDwgZW5kLgor ICogUmV0dXJucyB0aGUgQ0hFQ0sgQ29uc3RyYWludC4KKyAqIEFsc28gZmlsbHMgaW4gcGVy aW9kLT5jb25zdHJhaW50bmFtZSBpZiBuZWVkZWQuCisgKi8KK3N0YXRpYyBDb25zdHJhaW50 ICoKK21ha2VfY29uc3RyYWludF9mb3JfcGVyaW9kKFJlbGF0aW9uIHJlbCwgUGVyaW9kRGVm ICpwZXJpb2QpCit7CisJQ29sdW1uUmVmICAqc2NvbCwgKmVjb2w7CisJQ29uc3RyYWludCAq Y29uc3RyOworCVR5cGVDYWNoZUVudHJ5ICp0eXBlOworCisJaWYgKHBlcmlvZC0+Y29uc3Ry YWludG5hbWUgPT0gTlVMTCkKKwkJcGVyaW9kLT5jb25zdHJhaW50bmFtZSA9IENob29zZUNv bnN0cmFpbnROYW1lKFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCksCisJCQkJCQkJCQkJ CQkJICBwZXJpb2QtPnBlcmlvZG5hbWUsCisJCQkJCQkJCQkJCQkJICAiY2hlY2siLAorCQkJ CQkJCQkJCQkJCSAgUmVsYXRpb25HZXROYW1lc3BhY2UocmVsKSwKKwkJCQkJCQkJCQkJCQkg IE5JTCk7CisJc2NvbCA9IG1ha2VOb2RlKENvbHVtblJlZik7CisJc2NvbC0+ZmllbGRzID0g bGlzdF9tYWtlMShtYWtlU3RyaW5nKHBzdHJkdXAocGVyaW9kLT5zdGFydGNvbG5hbWUpKSk7 CisJc2NvbC0+bG9jYXRpb24gPSAwOworCisJZWNvbCA9IG1ha2VOb2RlKENvbHVtblJlZik7 CisJZWNvbC0+ZmllbGRzID0gbGlzdF9tYWtlMShtYWtlU3RyaW5nKHBzdHJkdXAocGVyaW9k LT5lbmRjb2xuYW1lKSkpOworCWVjb2wtPmxvY2F0aW9uID0gMDsKKworCXR5cGUgPSBsb29r dXBfdHlwZV9jYWNoZShwZXJpb2QtPmNvbHR5cGlkLCBUWVBFQ0FDSEVfTFRfT1BSKTsKKwlp ZiAodHlwZS0+bHRfb3ByID09IEludmFsaWRPaWQpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJ KGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCSBlcnJtc2co ImNvbHVtbiBcIiVzXCIgY2Fubm90IGJlIHVzZWQgaW4gYSBQRVJJT0QgYmVjYXVzZSBpdHMg dHlwZSAlcyBoYXMgbm8gbGVzcyB0aGFuIG9wZXJhdG9yIiwKKwkJCQkJCXBlcmlvZC0+c3Rh cnRjb2xuYW1lLCBmb3JtYXRfdHlwZV9iZShwZXJpb2QtPmNvbHR5cGlkKSkpKTsKKworCWNv bnN0ciA9IG1ha2VOb2RlKENvbnN0cmFpbnQpOworCWNvbnN0ci0+Y29udHlwZSA9IENPTlNU Ul9DSEVDSzsKKwljb25zdHItPmNvbm5hbWUgPSBwZXJpb2QtPmNvbnN0cmFpbnRuYW1lOwor CWNvbnN0ci0+ZGVmZXJyYWJsZSA9IGZhbHNlOworCWNvbnN0ci0+aW5pdGRlZmVycmVkID0g ZmFsc2U7CisJY29uc3RyLT5sb2NhdGlvbiA9IC0xOworCWNvbnN0ci0+aXNfbm9faW5oZXJp dCA9IGZhbHNlOworCWNvbnN0ci0+cmF3X2V4cHIgPSAoTm9kZSAqKSBtYWtlU2ltcGxlQV9F eHByKEFFWFBSX09QLAorCQkJCQkJCQkJCQkJIGdldF9vcG5hbWUodHlwZS0+bHRfb3ByKSwK KwkJCQkJCQkJCQkJCSAoTm9kZSAqKSBzY29sLAorCQkJCQkJCQkJCQkJIChOb2RlICopIGVj b2wsCisJCQkJCQkJCQkJCQkgMCk7CisJY29uc3RyLT5jb29rZWRfZXhwciA9IE5VTEw7CisJ Y29uc3RyLT5za2lwX3ZhbGlkYXRpb24gPSBmYWxzZTsKKwljb25zdHItPmluaXRpYWxseV92 YWxpZCA9IHRydWU7CisKKwlyZXR1cm4gY29uc3RyOworfQorCisvKgorICogbWFrZV9yYW5n ZV9jb2x1bW5fZm9yX3BlcmlvZAorICoKKyAqIEJ1aWxkcyBhIEdFTkVSQVRFRCBBTFdBWVMg cmFuZ2UgY29sdW1uIGJhc2VkIG9uIHRoZSBQRVJJT0QKKyAqIHN0YXJ0L2VuZCBjb2x1bW5z LiBSZXR1cm5zIHRoZSBDb2x1bW5EZWYuCisgKi8KK0NvbHVtbkRlZiAqCittYWtlX3Jhbmdl X2NvbHVtbl9mb3JfcGVyaW9kKFBlcmlvZERlZiAqcGVyaW9kKQoreworCWNoYXIgKnJhbmdl X3R5cGVfbmFtZXNwYWNlOworCWNoYXIgKnJhbmdlX3R5cGVfbmFtZTsKKwlDb2x1bW5EZWYg KmNvbCA9IG1ha2VOb2RlKENvbHVtbkRlZik7CisJQ29sdW1uUmVmICpzdGFydHZhciwgKmVu ZHZhcjsKKwlFeHByICpyYW5nZUNvbnN0cnVjdG9yOworCisJaWYgKCFnZXRfdHlwbmFtZV9h bmRfbmFtZXNwYWNlKHBlcmlvZC0+cm5ndHlwaWQsICZyYW5nZV90eXBlX25hbWUsICZyYW5n ZV90eXBlX25hbWVzcGFjZSkpCisJCWVsb2coRVJST1IsICJtaXNzaW5nIHJhbmdlIHR5cGUg JWQiLCBwZXJpb2QtPnJuZ3R5cGlkKTsKKworCXN0YXJ0dmFyID0gbWFrZU5vZGUoQ29sdW1u UmVmKTsKKwlzdGFydHZhci0+ZmllbGRzID0gbGlzdF9tYWtlMShtYWtlU3RyaW5nKHBzdHJk dXAocGVyaW9kLT5zdGFydGNvbG5hbWUpKSk7CisJZW5kdmFyID0gbWFrZU5vZGUoQ29sdW1u UmVmKTsKKwllbmR2YXItPmZpZWxkcyA9IGxpc3RfbWFrZTEobWFrZVN0cmluZyhwc3RyZHVw KHBlcmlvZC0+ZW5kY29sbmFtZSkpKTsKKwlyYW5nZUNvbnN0cnVjdG9yID0gKEV4cHIgKikg bWFrZUZ1bmNDYWxsKAorCQkJbGlzdF9tYWtlMihtYWtlU3RyaW5nKHJhbmdlX3R5cGVfbmFt ZXNwYWNlKSwgbWFrZVN0cmluZyhyYW5nZV90eXBlX25hbWUpKSwKKwkJCWxpc3RfbWFrZTIo c3RhcnR2YXIsIGVuZHZhciksCisJCQlDT0VSQ0VfRVhQTElDSVRfQ0FMTCwKKwkJCXBlcmlv ZC0+bG9jYXRpb24pOworCisJY29sLT5jb2xuYW1lID0gcHN0cmR1cChwZXJpb2QtPnBlcmlv ZG5hbWUpOworCWNvbC0+dHlwZU5hbWUgPSBtYWtlVHlwZU5hbWUocmFuZ2VfdHlwZV9uYW1l KTsKKwljb2wtPmNvbXByZXNzaW9uID0gTlVMTDsKKwljb2wtPmluaGNvdW50ID0gMDsKKwlj b2wtPmlzX2xvY2FsID0gdHJ1ZTsKKwljb2wtPmlzX25vdF9udWxsID0gdHJ1ZTsKKwljb2wt PmlzX2Zyb21fdHlwZSA9IGZhbHNlOworCWNvbC0+c3RvcmFnZSA9IDA7CisJY29sLT5zdG9y YWdlX25hbWUgPSBOVUxMOworCWNvbC0+cmF3X2RlZmF1bHQgPSAoTm9kZSAqKSByYW5nZUNv bnN0cnVjdG9yOworCWNvbC0+Y29va2VkX2RlZmF1bHQgPSBOVUxMOworCWNvbC0+aWRlbnRp dHkgPSAwOworCWNvbC0+Z2VuZXJhdGVkID0gQVRUUklCVVRFX0dFTkVSQVRFRF9TVE9SRUQ7 CisJY29sLT5jb2xsQ2xhdXNlID0gTlVMTDsKKwljb2wtPmNvbGxPaWQgPSBJbnZhbGlkT2lk OworCWNvbC0+ZmR3b3B0aW9ucyA9IE5JTDsKKwljb2wtPmxvY2F0aW9uID0gcGVyaW9kLT5s b2NhdGlvbjsKKworCXJldHVybiBjb2w7Cit9CisKKy8qCisgKiBWYWxpZGF0ZVBlcmlvZAor ICoKKyAqIExvb2sgdXAgdGhlIGF0dHJpYnV0ZXMgdXNlZCBieSB0aGUgUEVSSU9ELAorICog bWFrZSBzdXJlIHRoZXkgZXhpc3QsIGFyZSBub3Qgc3lzdGVtIGNvbHVtbnMsCisgKiBhbmQg aGF2ZSB0aGUgc2FtZSB0eXBlIGFuZCBjb2xsYXRpb24uCisgKgorICogWW91IG11c3QgaGF2 ZSBhIFJvd0V4Y2x1c2l2ZUxvY2sgb24gcGdfYXR0cmlidXRlCisgKiBiZWZvcmUgY2FsbGlu ZyB0aGlzIGZ1bmN0aW9uLgorICoKKyAqIEFkZCBvdXIgZmluZGluZ3MgdG8gdGhlc2UgUGVy aW9kRGVmIGZpZWxkczoKKyAqCisgKiBjb2x0eXBpZCAtIHRoZSB0eXBlIG9mIFBFUklPRCBj b2x1bW5zLgorICogc3RhcnRhdHRudW0gLSB0aGUgYXR0bnVtIG9mIHRoZSBzdGFydCBjb2x1 bW4uCisgKiBlbmRhdHRudW0gLSB0aGUgYXR0bnVtIG9mIHRoZSBlbmQgY29sdW1uLgorICog cm5ndHlwaWQgLSB0aGUgcmFuZ2UgdHlwZSB0byB1c2UuCisgKiBybmdhdHRudW0gLSB0aGUg YXR0bnVtIG9mIGEgcHJlLWV4aXN0aW5nIHJhbmdlIGNvbHVtbiwgb3IgSW52YWxpZC4KKyAq Lworc3RhdGljIHZvaWQKK1ZhbGlkYXRlUGVyaW9kKFJlbGF0aW9uIHJlbCwgUGVyaW9kRGVm ICpwZXJpb2QpCit7CisJSGVhcFR1cGxlIHN0YXJ0dHVwbGU7CisJSGVhcFR1cGxlIGVuZHR1 cGxlOworCUZvcm1fcGdfYXR0cmlidXRlCWF0dHR1cGxlOworCU9pZAlhdHRjb2xsYXRpb247 CisKKwkvKiBGaW5kIHRoZSBzdGFydCBjb2x1bW4gKi8KKwlzdGFydHR1cGxlID0gU2VhcmNo U3lzQ2FjaGVDb3B5QXR0TmFtZShSZWxhdGlvbkdldFJlbGlkKHJlbCksIHBlcmlvZC0+c3Rh cnRjb2xuYW1lKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQoc3RhcnR0dXBsZSkpCisJCWVy ZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9VTkRFRklORURfQ09MVU1OKSwK KwkJCQkgZXJybXNnKCJjb2x1bW4gXCIlc1wiIG9mIHJlbGF0aW9uIFwiJXNcIiBkb2VzIG5v dCBleGlzdCIsCisJCQkJCQlwZXJpb2QtPnN0YXJ0Y29sbmFtZSwgUmVsYXRpb25HZXRSZWxh dGlvbk5hbWUocmVsKSkpKTsKKwlhdHR0dXBsZSA9IChGb3JtX3BnX2F0dHJpYnV0ZSkgR0VU U1RSVUNUKHN0YXJ0dHVwbGUpOworCXBlcmlvZC0+Y29sdHlwaWQgPSBhdHR0dXBsZS0+YXR0 dHlwaWQ7CisJYXR0Y29sbGF0aW9uID0gYXR0dHVwbGUtPmF0dGNvbGxhdGlvbjsKKwlwZXJp b2QtPnN0YXJ0YXR0bnVtID0gYXR0dHVwbGUtPmF0dG51bTsKKworCS8qIE1ha2Ugc3VyZSBp dCdzIG5vdCBhIHN5c3RlbSBjb2x1bW4gKi8KKwlpZiAocGVyaW9kLT5zdGFydGF0dG51bSA8 PSAwKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9P QkpFQ1RfREVGSU5JVElPTiksCisJCQkJIGVycm1zZygiY2Fubm90IHVzZSBzeXN0ZW0gY29s dW1uIFwiJXNcIiBpbiBwZXJpb2QiLAorCQkJCQkJcGVyaW9kLT5zdGFydGNvbG5hbWUpKSk7 CisKKwkvKiBGaW5kIHRoZSBlbmQgY29sdW1uICovCisJZW5kdHVwbGUgPSBTZWFyY2hTeXND YWNoZUNvcHlBdHROYW1lKFJlbGF0aW9uR2V0UmVsaWQocmVsKSwgcGVyaW9kLT5lbmRjb2xu YW1lKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQoZW5kdHVwbGUpKQorCQllcmVwb3J0KEVS Uk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVEX0NPTFVNTiksCisJCQkJIGVy cm1zZygiY29sdW1uIFwiJXNcIiBvZiByZWxhdGlvbiBcIiVzXCIgZG9lcyBub3QgZXhpc3Qi LAorCQkJCQkJcGVyaW9kLT5lbmRjb2xuYW1lLCBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShy ZWwpKSkpOworCWF0dHR1cGxlID0gKEZvcm1fcGdfYXR0cmlidXRlKSBHRVRTVFJVQ1QoZW5k dHVwbGUpOworCXBlcmlvZC0+ZW5kYXR0bnVtID0gYXR0dHVwbGUtPmF0dG51bTsKKworCS8q IE1ha2Ugc3VyZSBpdCdzIG5vdCBhIHN5c3RlbSBjb2x1bW4gKi8KKwlpZiAocGVyaW9kLT5l bmRhdHRudW0gPD0gMCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RF X0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCSBlcnJtc2coImNhbm5vdCB1c2Ug c3lzdGVtIGNvbHVtbiBcIiVzXCIgaW4gcGVyaW9kIiwKKwkJCQkJCXBlcmlvZC0+ZW5kY29s bmFtZSkpKTsKKworCS8qIEJvdGggY29sdW1ucyBtdXN0IGJlIG9mIHNhbWUgdHlwZSAqLwor CWlmIChwZXJpb2QtPmNvbHR5cGlkICE9IGF0dHR1cGxlLT5hdHR0eXBpZCkKKwkJZXJlcG9y dChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFUWVBFX01JU01BVENIKSwKKwkJ CQkgZXJybXNnKCJzdGFydCBhbmQgZW5kIGNvbHVtbnMgb2YgcGVyaW9kIG11c3QgYmUgb2Yg c2FtZSB0eXBlIikpKTsKKworCS8qIEJvdGggY29sdW1ucyBtdXN0IGhhdmUgdGhlIHNhbWUg Y29sbGF0aW9uICovCisJaWYgKGF0dGNvbGxhdGlvbiAhPSBhdHR0dXBsZS0+YXR0Y29sbGF0 aW9uKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfQ09MTEFUSU9O X01JU01BVENIKSwKKwkJCQkgZXJybXNnKCJzdGFydCBhbmQgZW5kIGNvbHVtbnMgb2YgcGVy aW9kIG11c3QgaGF2ZSBzYW1lIGNvbGxhdGlvbiIpKSk7CisKKwkvKiBHZXQgdGhlIHJhbmdl IHR5cGUgYmFzZWQgb24gdGhlIHN0YXJ0L2VuZCBjb2xzIG9yIHRoZSB1c2VyJ3MgY2hvaWNl ICovCisJcGVyaW9kLT5ybmd0eXBpZCA9IGNob29zZV9yYW5nZXR5cGVfZm9yX3BlcmlvZChw ZXJpb2QpOworCisJLyogSWYgdGhlIEdFTkVSQVRFRCBjb2x1bW5zIHNob3VsZCBhbHJlYWR5 IGV4aXN0LCBtYWtlIHN1cmUgaXQgaXMgc2Vuc2libGUuICovCisJaWYgKHBlcmlvZC0+Y29s ZXhpc3RzKQorCXsKKwkJSGVhcFR1cGxlIHJuZ3R1cGxlID0gU2VhcmNoU3lzQ2FjaGVDb3B5 QXR0TmFtZShSZWxhdGlvbkdldFJlbGlkKHJlbCksIHBlcmlvZC0+cGVyaW9kbmFtZSk7CisJ CWlmICghSGVhcFR1cGxlSXNWYWxpZChybmd0dXBsZSkpCisJCQllcmVwb3J0KEVSUk9SLAor CQkJCQkoZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9DT0xVTU4pLAorCQkJCQkgZXJybXNn KCJjb2x1bW4gXCIlc1wiIG9mIHJlbGF0aW9uIFwiJXNcIiBkb2VzIG5vdCBleGlzdCIsCisJ CQkJCQkJcGVyaW9kLT5wZXJpb2RuYW1lLCBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwp KSkpOworCQlhdHR0dXBsZSA9IChGb3JtX3BnX2F0dHJpYnV0ZSkgR0VUU1RSVUNUKHJuZ3R1 cGxlKTsKKworCQkvKgorCQkgKiBMb3RzIHRvIGNoZWNrIGhlcmU6CisJCSAqIEl0IG11c3Qg YmUgR0VORVJBVEVEIEFMV0FZUywKKwkJICogaXQgbXVzdCBoYXZlIHRoZSByaWdodCBleHBy ZXNzaW9uLAorCQkgKiBpdCBtdXN0IGJlIHRoZSByaWdodCB0eXBlLAorCQkgKiBpdCBtdXN0 IGJlIE5PVCBOVUxMLAorCQkgKiBpdCBtdXN0IG5vdCBiZSBpbmhlcml0ZWQuCisJCSAqLwor CQlpZiAoYXR0dHVwbGUtPmF0dGdlbmVyYXRlZCA9PSAnXDAnKQorCQkJZXJlcG9ydChFUlJP UiwgKGVycm1zZygiUGVyaW9kICVzIHVzZXMgYSBub24tZ2VuZXJhdGVkIGNvbHVtbiIsIHBl cmlvZC0+cGVyaW9kbmFtZSkpKTsKKworCQlpZiAoYXR0dHVwbGUtPmF0dGdlbmVyYXRlZCAh PSBBVFRSSUJVVEVfR0VORVJBVEVEX1NUT1JFRCkKKwkJCWVyZXBvcnQoRVJST1IsIChlcnJt c2coIlBlcmlvZCAlcyB1c2VzIGEgZ2VuZXJhdGVkIGNvbHVtbiB0aGF0IGlzIG5vdCBTVE9S RUQiLCBwZXJpb2QtPnBlcmlvZG5hbWUpKSk7CisKKwkJLy8gVE9ETzogY2hlY2sgdGhlIEdF TkVSQVRFRCBleHByZXNzaW9uIGFsc28uCisKKwkJaWYgKCFhdHR0dXBsZS0+YXR0bm90bnVs bCAmJiAhSXNCaW5hcnlVcGdyYWRlKQorCQkJZXJlcG9ydChFUlJPUiwgKGVycm1zZygiUGVy aW9kICVzIHVzZXMgYSBnZW5lcmF0ZWQgY29sdW1uIHRoYXQgYWxsb3dzIG51bGxzIiwgcGVy aW9kLT5wZXJpb2RuYW1lKSkpOworCisJCWlmIChwZXJpb2QtPnJuZ3R5cGlkICE9IGF0dHR1 cGxlLT5hdHR0eXBpZCkKKwkJCWVyZXBvcnQoRVJST1IsIChlcnJtc2coIlBlcmlvZCAlcyB1 c2VzIGEgZ2VuZXJhdGVkIGNvbHVtbiB3aXRoIHRoZSB3cm9uZyB0eXBlIiwgcGVyaW9kLT5w ZXJpb2RuYW1lKSkpOworCisJCWlmICghYXR0dHVwbGUtPmF0dGlzbG9jYWwpCisJCQllcmVw b3J0KEVSUk9SLCAoZXJybXNnKCJQZXJpb2QgJXMgdXNlcyBhIGdlbmVyYXRlZCBjb2x1bW4g dGhhdCBpcyBpbmhlcml0ZWQiLCBwZXJpb2QtPnBlcmlvZG5hbWUpKSk7CisKKwkJcGVyaW9k LT5ybmdhdHRudW0gPSBhdHR0dXBsZS0+YXR0bnVtOworCisJCWhlYXBfZnJlZXR1cGxlKHJu Z3R1cGxlKTsKKwl9CisKKwloZWFwX2ZyZWV0dXBsZShzdGFydHR1cGxlKTsKKwloZWFwX2Zy ZWV0dXBsZShlbmR0dXBsZSk7Cit9CisKKy8qCisgKiBjaG9vc2VfcmFuZ2V0eXBlX2Zvcl9w ZXJpb2QKKyAqCisgKiBGaW5kIGEgc3VpdGFibGUgcmFuZ2UgdHlwZSBmb3Igb3BlcmF0aW9u cyBpbnZvbHZpbmcgdGhpcyBwZXJpb2QuCisgKiBVc2UgdGhlIHJhbmdldHlwZSBvcHRpb24g aWYgcHJvdmlkZWQsIG90aGVyd2lzZSB0cnkgdG8gZmluZCBhCisgKiBub24tYW1iaWd1b3Vz IGV4aXN0aW5nIHR5cGUuCisgKi8KK09pZAorY2hvb3NlX3JhbmdldHlwZV9mb3JfcGVyaW9k KFBlcmlvZERlZiAqcGVyaW9kKQoreworCU9pZAlybmd0eXBpZDsKKworCWlmIChwZXJpb2Qt PnJhbmdldHlwZW5hbWUgIT0gTlVMTCkKKwl7CisJCS8qIE1ha2Ugc3VyZSBpdCBleGlzdHMg Ki8KKwkJcm5ndHlwaWQgPSBUeXBlbmFtZUdldFR5cGlkRXh0ZW5kZWQocGVyaW9kLT5yYW5n ZXR5cGVuYW1lLCBmYWxzZSk7CisJCWlmIChybmd0eXBpZCA9PSBJbnZhbGlkT2lkKQorCQkJ ZXJlcG9ydChFUlJPUiwgKGVycmNvZGUoRVJSQ09ERV9VTkRFRklORURfT0JKRUNUKSwKKwkJ CQkJIGVycm1zZygiUmFuZ2UgdHlwZSAlcyBub3QgZm91bmQiLCBwZXJpb2QtPnJhbmdldHlw ZW5hbWUpKSk7CisKKwkJLyogTWFrZSBzdXJlIGl0IGlzIGEgcmFuZ2UgdHlwZSAqLworCQlp ZiAoIXR5cGVfaXNfcmFuZ2Uocm5ndHlwaWQpKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJ KGVycmNvZGUoRVJSQ09ERV9EQVRBVFlQRV9NSVNNQVRDSCksCisJCQkJCSBlcnJtc2coIlR5 cGUgJXMgaXMgbm90IGEgcmFuZ2UgdHlwZSIsIHBlcmlvZC0+cmFuZ2V0eXBlbmFtZSkpKTsK KworCQkvKiBNYWtlIHN1cmUgaXQgbWF0Y2hlcyB0aGUgY29sdW1uIHR5cGUgKi8KKwkJaWYg KGdldF9yYW5nZV9zdWJ0eXBlKHJuZ3R5cGlkKSAhPSBwZXJpb2QtPmNvbHR5cGlkKQorCQkJ ZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBVFlQRV9NSVNNQVRD SCksCisJCQkJCSBlcnJtc2coIlJhbmdlIHR5cGUgJXMgZG9lcyBub3QgbWF0Y2ggY29sdW1u IHR5cGUgJXMiLAorCQkJCQkJIHBlcmlvZC0+cmFuZ2V0eXBlbmFtZSwKKwkJCQkJCSBmb3Jt YXRfdHlwZV9iZShwZXJpb2QtPmNvbHR5cGlkKSkpKTsKKwl9CisJZWxzZQorCXsKKwkJcm5n dHlwaWQgPSBnZXRfc3VidHlwZV9yYW5nZShwZXJpb2QtPmNvbHR5cGlkKTsKKwkJaWYgKHJu Z3R5cGlkID09IEludmFsaWRPaWQpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29k ZShFUlJDT0RFX1VOREVGSU5FRF9PQkpFQ1QpLAorCQkJCQkgZXJybXNnKCJubyByYW5nZSB0 eXBlIGZvciAlcyBmb3VuZCBmb3IgcGVyaW9kICVzIiwKKwkJCQkJCQlmb3JtYXRfdHlwZV9i ZShwZXJpb2QtPmNvbHR5cGlkKSwKKwkJCQkJCQlwZXJpb2QtPnBlcmlvZG5hbWUpLAorCQkJ CQkgZXJyaGludCgiWW91IGNhbiBkZWZpbmUgYSBjdXN0b20gcmFuZ2UgdHlwZSB3aXRoIENS RUFURSBUWVBFIikpKTsKKworCX0KKworCXJldHVybiBybmd0eXBpZDsKK30KKworc3RhdGlj IHZvaWQKK0FkZFJlbGF0aW9uTmV3UGVyaW9kKFJlbGF0aW9uIHJlbCwgUGVyaW9kRGVmICpw ZXJpb2QpCit7CisJUmVsYXRpb24JYXR0cmVsYXRpb247CisJT2lkCQkJY29ub2lkOworCUNv bnN0cmFpbnQgKmNvbnN0cjsKKwlMaXN0CSAgICpuZXdjb25zdHJzOworCisJYXR0cmVsYXRp b24gPSB0YWJsZV9vcGVuKEF0dHJpYnV0ZVJlbGF0aW9uSWQsIFJvd0V4Y2x1c2l2ZUxvY2sp OworCisJLyogRmluZCB0aGUgR0VORVJBVEVEIHJhbmdlIGNvbHVtbiAqLworCisJcGVyaW9k LT5ybmdhdHRudW0gPSBnZXRfYXR0bnVtKFJlbGF0aW9uR2V0UmVsaWQocmVsKSwgcGVyaW9k LT5wZXJpb2RuYW1lKTsKKwlpZiAocGVyaW9kLT5ybmdhdHRudW0gPT0gSW52YWxpZEF0dHJO dW1iZXIpCisJCWVsb2coRVJST1IsICJtaXNzaW5nIGF0dHJpYnV0ZSAlcyIsIHBlcmlvZC0+ cGVyaW9kbmFtZSk7CisKKwkvKiBUaGUgcGFyc2VyIGhhcyBhbHJlYWR5IGZvdW5kIHBlcmlv ZC0+Y29sdHlwaWQgKi8KKworCWNvbnN0ciA9IG1ha2VfY29uc3RyYWludF9mb3JfcGVyaW9k KHJlbCwgcGVyaW9kKTsKKwluZXdjb25zdHJzID0gQWRkUmVsYXRpb25OZXdDb25zdHJhaW50 cyhyZWwsIE5JTCwgbGlzdF9tYWtlMShjb25zdHIpLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgTlVM TCk7CisJY29ub2lkID0gKChDb29rZWRDb25zdHJhaW50ICopIGxpbml0aWFsKG5ld2NvbnN0 cnMpKS0+Y29ub2lkOworCisJLyogU2F2ZSBpdCAqLworCVN0b3JlUGVyaW9kKHJlbCwgcGVy aW9kLT5wZXJpb2RuYW1lLCBwZXJpb2QtPnN0YXJ0YXR0bnVtLCBwZXJpb2QtPmVuZGF0dG51 bSwgcGVyaW9kLT5ybmdhdHRudW0sIGNvbm9pZCk7CisKKwl0YWJsZV9jbG9zZShhdHRyZWxh dGlvbiwgUm93RXhjbHVzaXZlTG9jayk7Cit9CisKIC8qCiAgKiBFbWl0IHRoZSByaWdodCBl cnJvciBvciB3YXJuaW5nIG1lc3NhZ2UgZm9yIGEgIkRST1AiIGNvbW1hbmQgaXNzdWVkIG9u IGEKICAqIG5vbi1leGlzdGVudCByZWxhdGlvbgpAQCAtMzEyNSw2ICszNTM1LDE2OCBAQCBN ZXJnZUF0dHJpYnV0ZXMoTGlzdCAqY29sdW1ucywgY29uc3QgTGlzdCAqc3VwZXJzLCBjaGFy IHJlbHBlcnNpc3RlbmNlLAogfQogCiAKKy8qLS0tLS0tLS0tLQorICogTWVyZ2VQZXJpb2Rz CisgKgkJUmV0dXJucyBuZXcgcGVyaW9kIGxpc3QgZ2l2ZW4gaW5pdGlhbCBwZXJpb2RzIGFu ZCBzdXBlcmNsYXNzZXMuCisgKgorICogRm9yIG5vdyB3ZSBkb24ndCBzdXBwb3J0IGluaGVy aXRlbmNlIHdpdGggUEVSSU9EcywKKyAqIGJ1dCB3ZSBtaWdodCBtYWtlIGl0IHdvcmsgZXZl bnR1YWxseS4KKyAqCisgKiBXZSBjYW4gb21pdCBsb3RzIG9mIGNoZWNrcyBoZXJlIGFuZCBh c3N1bWUgTWVyZ2VBdHRyaWJ1dGVzIGFscmVhZHkgZGlkIHRoZW0sCisgKiBmb3IgZXhhbXBs ZSB0aGF0IGNoaWxkICYgcGFyZW50cyBhcmUgbm90IGEgbWl4IG9mIHBlcm1hbmVudCBhbmQg dGVtcC4KKyAqLworc3RhdGljIExpc3QgKgorTWVyZ2VQZXJpb2RzKGNoYXIgKnJlbG5hbWUs IExpc3QgKnBlcmlvZHMsIExpc3QgKnRhYmxlRWx0cywgTGlzdCAqc3VwZXJzKQoreworCUxp c3RDZWxsICAgKmVudHJ5OworCisJLyogSWYgd2UgaGF2ZSBhIFBFUklPRCB0aGVuIHN1cGVy cyBtdXN0IGJlIGVtcHR5LiAqLworCisJaWYgKGxpc3RfbGVuZ3RoKHBlcmlvZHMpID4gMCAm JiBsaXN0X2xlbmd0aChzdXBlcnMpID4gMCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJy Y29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJIGVycm1zZygiSW5o ZXJpdGluZyBpcyBub3Qgc3VwcG9ydGVkIHdoZW4gYSB0YWJsZSBoYXMgYSBQRVJJT0QiKSkp OworCisJLyogSWYgYW55IHBhcmVudCB0YWJsZSBoYXMgYSBQRVJJT0QsIHRoZW4gZmFpbC4g Ki8KKworCWZvcmVhY2goZW50cnksIHN1cGVycykKKwl7CisJCU9pZAkJCXBhcmVudCA9IGxm aXJzdF9vaWQoZW50cnkpOworCQlSZWxhdGlvbglyZWxhdGlvbjsKKwkJUmVsYXRpb24JcGdf cGVyaW9kOworCQlTeXNTY2FuRGVzYyBzY2FuOworCQlTY2FuS2V5RGF0YSBza2V5WzFdOwor CQlIZWFwVHVwbGUJdHVwbGU7CisKKwkJLyogY2FsbGVyIGFscmVhZHkgZ290IGxvY2sgKi8K KwkJcmVsYXRpb24gPSB0YWJsZV9vcGVuKHBhcmVudCwgTm9Mb2NrKTsKKwkJcGdfcGVyaW9k ID0gdGFibGVfb3BlbihQZXJpb2RSZWxhdGlvbklkLCBBY2Nlc3NTaGFyZUxvY2spOworCisJ CVNjYW5LZXlJbml0KCZza2V5WzBdLAorCQkJCQlBbnVtX3BnX3BlcmlvZF9wZXJyZWxpZCwK KwkJCQkJQlRFcXVhbFN0cmF0ZWd5TnVtYmVyLCBGX09JREVRLAorCQkJCQlPYmplY3RJZEdl dERhdHVtKHBhcmVudCkpOworCisJCXNjYW4gPSBzeXN0YWJsZV9iZWdpbnNjYW4ocGdfcGVy aW9kLCBQZXJpb2RSZWxpZE5hbWVJbmRleElkLCB0cnVlLAorCQkJCQkJCQkgIE5VTEwsIDEs IHNrZXkpOworCisJCWlmIChIZWFwVHVwbGVJc1ZhbGlkKHR1cGxlID0gc3lzdGFibGVfZ2V0 bmV4dChzY2FuKSkpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RF X0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJCSBlcnJtc2coIkluaGVyaXRpbmcgZnJv bSBhIHRhYmxlIHdpdGggYSBQRVJJT0QgaXMgbm90IHN1cHBvcnRlZCIpKSk7CisKKwkJc3lz dGFibGVfZW5kc2NhbihzY2FuKTsKKwkJdGFibGVfY2xvc2UocGdfcGVyaW9kLCBBY2Nlc3NT aGFyZUxvY2spOworCQl0YWJsZV9jbG9zZShyZWxhdGlvbiwgTm9Mb2NrKTsKKwl9CisKKwkv KgorCSAqIEZpbmQgdGhlIHN0YXJ0ICYgZW5kIGNvbHVtbnMgYW5kIGdldCB0aGVpciBhdHRu byBhbmQgdHlwZS4KKwkgKiBJbiB0aGUgc2FtZSBwYXNzLCBtYWtlIHN1cmUgdGhlIHBlcmlv ZCBkb2Vzbid0IGNvbmZsaWN0IHdpdGggYW55IGNvbHVtbiBuYW1lcy4KKwkgKiBBbHNvIG1h a2Ugc3VyZSB0aGUgc2FtZSBwZXJpb2QgbmFtZSBpc24ndCB1c2VkIG1vcmUgdGhhbiBvbmNl LgorCSAqLworCWZvcmVhY2ggKGVudHJ5LCBwZXJpb2RzKQorCXsKKwkJUGVyaW9kRGVmICpw ZXJpb2QgPSBsZmlyc3QoZW50cnkpOworCQlMaXN0Q2VsbCAqZW50cnkyOworCQlpbnQgaSA9 IDE7CisJCU9pZCBzdGFydGNvbHR5cGlkID0gSW52YWxpZE9pZDsKKwkJT2lkIGVuZGNvbHR5 cGlkID0gSW52YWxpZE9pZDsKKwkJT2lkCXN0YXJ0Y29sY29sbGF0aW9uID0gSW52YWxpZE9p ZDsKKwkJT2lkCWVuZGNvbGNvbGxhdGlvbiA9IEludmFsaWRPaWQ7CisKKwkJcGVyaW9kLT5z dGFydGF0dG51bSA9IEludmFsaWRBdHRyTnVtYmVyOworCQlwZXJpb2QtPmVuZGF0dG51bSA9 IEludmFsaWRBdHRyTnVtYmVyOworCisJCWlmIChTeXN0ZW1BdHRyaWJ1dGVCeU5hbWUocGVy aW9kLT5wZXJpb2RuYW1lKSAhPSBOVUxMKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVy cmNvZGUoRVJSQ09ERV9EVVBMSUNBVEVfQ09MVU1OKSwKKwkJCQkJIGVycm1zZygicGVyaW9k IG5hbWUgXCIlc1wiIGNvbmZsaWN0cyB3aXRoIGEgc3lzdGVtIGNvbHVtbiBuYW1lIiwKKwkJ CQkJCQlwZXJpb2QtPnBlcmlvZG5hbWUpKSk7CisKKwkJZm9yZWFjaCAoZW50cnkyLCBwZXJp b2RzKQorCQl7CisJCQlQZXJpb2REZWYgKnBlcmlvZDIgPSBsZmlyc3QoZW50cnkyKTsKKwor CQkJaWYgKHBlcmlvZCAhPSBwZXJpb2QyICYmIHN0cmNtcChwZXJpb2QtPnBlcmlvZG5hbWUs IHBlcmlvZDItPnBlcmlvZG5hbWUpID09IDApCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJ CShlcnJjb2RlKEVSUkNPREVfRFVQTElDQVRFX09CSkVDVCksCisJCQkJCQkgZXJybXNnKCJw ZXJpb2QgbmFtZSBcIiVzXCIgc3BlY2lmaWVkIG1vcmUgdGhhbiBvbmNlIiwKKwkJCQkJCQkJ cGVyaW9kLT5wZXJpb2RuYW1lKSkpOworCQl9CisKKwkJZm9yZWFjaCAoZW50cnkyLCB0YWJs ZUVsdHMpCisJCXsKKwkJCUNvbHVtbkRlZiAqY29sID0gbGZpcnN0KGVudHJ5Mik7CisJCQlp bnQzMglhdHR0eXBtb2Q7CisJCQlBY2xSZXN1bHQgYWNscmVzdWx0OworCisJCQlpZiAoIXBl cmlvZC0+Y29sZXhpc3RzICYmIHN0cmNtcChwZXJpb2QtPnBlcmlvZG5hbWUsIGNvbC0+Y29s bmFtZSkgPT0gMCkKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVycmNvZGUoRVJSQ09E RV9EVVBMSUNBVEVfQ09MVU1OKSwKKwkJCQkJCSBlcnJtc2coInBlcmlvZCBuYW1lIFwiJXNc IiBjb25mbGljdHMgd2l0aCBhIGNvbHVtbiBuYW1lIiwKKwkJCQkJCQkJcGVyaW9kLT5wZXJp b2RuYW1lKSkpOworCisJCQlpZiAoc3RyY21wKHBlcmlvZC0+c3RhcnRjb2xuYW1lLCBjb2wt PmNvbG5hbWUpID09IDApCisJCQl7CisJCQkJcGVyaW9kLT5zdGFydGF0dG51bSA9IGk7CisK KwkJCQl0eXBlbmFtZVR5cGVJZEFuZE1vZChOVUxMLCBjb2wtPnR5cGVOYW1lLCAmc3RhcnRj b2x0eXBpZCwgJmF0dHR5cG1vZCk7CisKKwkJCQlhY2xyZXN1bHQgPSBvYmplY3RfYWNsY2hl Y2soVHlwZVJlbGF0aW9uSWQsIHN0YXJ0Y29sdHlwaWQsIEdldFVzZXJJZCgpLCBBQ0xfVVNB R0UpOworCQkJCWlmIChhY2xyZXN1bHQgIT0gQUNMQ0hFQ0tfT0spCisJCQkJCWFjbGNoZWNr X2Vycm9yX3R5cGUoYWNscmVzdWx0LCBzdGFydGNvbHR5cGlkKTsKKworCQkJCXN0YXJ0Y29s Y29sbGF0aW9uID0gR2V0Q29sdW1uRGVmQ29sbGF0aW9uKE5VTEwsIGNvbCwgc3RhcnRjb2x0 eXBpZCk7CisJCQl9CisKKwkJCWlmIChzdHJjbXAocGVyaW9kLT5lbmRjb2xuYW1lLCBjb2wt PmNvbG5hbWUpID09IDApCisJCQl7CisJCQkJcGVyaW9kLT5lbmRhdHRudW0gPSBpOworCisJ CQkJdHlwZW5hbWVUeXBlSWRBbmRNb2QoTlVMTCwgY29sLT50eXBlTmFtZSwgJmVuZGNvbHR5 cGlkLCAmYXR0dHlwbW9kKTsKKworCQkJCWFjbHJlc3VsdCA9IG9iamVjdF9hY2xjaGVjayhU eXBlUmVsYXRpb25JZCwgZW5kY29sdHlwaWQsIEdldFVzZXJJZCgpLCBBQ0xfVVNBR0UpOwor CQkJCWlmIChhY2xyZXN1bHQgIT0gQUNMQ0hFQ0tfT0spCisJCQkJCWFjbGNoZWNrX2Vycm9y X3R5cGUoYWNscmVzdWx0LCBlbmRjb2x0eXBpZCk7CisKKwkJCQllbmRjb2xjb2xsYXRpb24g PSBHZXRDb2x1bW5EZWZDb2xsYXRpb24oTlVMTCwgY29sLCBlbmRjb2x0eXBpZCk7CisJCQl9 CisKKwkJCWkrKzsKKwkJfQorCisJCS8qIERpZCB3ZSBmaW5kIHRoZSBjb2x1bW5zPyAqLwor CQlpZiAocGVyaW9kLT5zdGFydGF0dG51bSA9PSBJbnZhbGlkQXR0ck51bWJlcikKKwkJCWVy ZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVEX0NPTFVNTiks CisJCQkJCSBlcnJtc2coImNvbHVtbiBcIiVzXCIgb2YgcmVsYXRpb24gXCIlc1wiIGRvZXMg bm90IGV4aXN0IiwKKwkJCQkJCQlwZXJpb2QtPnN0YXJ0Y29sbmFtZSwgcmVsbmFtZSkpKTsK KwkJaWYgKHBlcmlvZC0+ZW5kYXR0bnVtID09IEludmFsaWRBdHRyTnVtYmVyKQorCQkJZXJl cG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9VTkRFRklORURfQ09MVU1OKSwK KwkJCQkJIGVycm1zZygiY29sdW1uIFwiJXNcIiBvZiByZWxhdGlvbiBcIiVzXCIgZG9lcyBu b3QgZXhpc3QiLAorCQkJCQkJCXBlcmlvZC0+ZW5kY29sbmFtZSwgcmVsbmFtZSkpKTsKKwor CQkvKiBCb3RoIGNvbHVtbnMgbXVzdCBiZSBvZiBzYW1lIHR5cGUgKi8KKwkJaWYgKHN0YXJ0 Y29sdHlwaWQgIT0gZW5kY29sdHlwaWQpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJy Y29kZShFUlJDT0RFX0RBVEFUWVBFX01JU01BVENIKSwKKwkJCQkJIGVycm1zZygic3RhcnQg YW5kIGVuZCBjb2x1bW5zIG9mIHBlcmlvZCBtdXN0IGJlIG9mIHNhbWUgdHlwZSIpKSk7CisK KwkJLyogQm90aCBjb2x1bW5zIG11c3QgaGF2ZSB0aGUgc2FtZSBjb2xsYXRpb24gKi8KKwkJ aWYgKHN0YXJ0Y29sY29sbGF0aW9uICE9IGVuZGNvbGNvbGxhdGlvbikKKwkJCWVyZXBvcnQo RVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfQ09MTEFUSU9OX01JU01BVENIKSwKKwkJ CQkJIGVycm1zZygic3RhcnQgYW5kIGVuZCBjb2x1bW5zIG9mIHBlcmlvZCBtdXN0IGhhdmUg c2FtZSBjb2xsYXRpb24iKSkpOworCisJCXBlcmlvZC0+Y29sdHlwaWQgPSBzdGFydGNvbHR5 cGlkOworCQlwZXJpb2QtPnJuZ3R5cGlkID0gY2hvb3NlX3JhbmdldHlwZV9mb3JfcGVyaW9k KHBlcmlvZCk7CisJfQorCisJcmV0dXJuIHBlcmlvZHM7Cit9CisKIC8qCiAgKiBNZXJnZUNo ZWNrQ29uc3RyYWludAogICoJCVRyeSB0byBtZXJnZSBhbiBpbmhlcml0ZWQgQ0hFQ0sgY29u c3RyYWludCB3aXRoIHByZXZpb3VzIG9uZXMKQEAgLTQ0NTcsMTIgKzUwMjksMTIgQEAgQWx0 ZXJUYWJsZShBbHRlclRhYmxlU3RtdCAqc3RtdCwgTE9DS01PREUgbG9ja21vZGUsCiAgKiBl eGlzdGluZyBxdWVyeSBwbGFucy4gIE9uIHRoZSBhc3N1bXB0aW9uIGl0J3Mgbm90IHVzZWQg Zm9yIHN1Y2gsIHdlCiAgKiBkb24ndCBoYXZlIHRvIHJlamVjdCBwZW5kaW5nIEFGVEVSIHRy aWdnZXJzLCBlaXRoZXIuCiAgKgotICogQWxzbywgc2luY2Ugd2UgZG9uJ3QgaGF2ZSBhbiBB bHRlclRhYmxlVXRpbGl0eUNvbnRleHQsIHRoaXMgY2Fubm90IGJlCisgKiBBbHNvLCBpZiB5 b3UgZG9uJ3QgcGFzcyBhbiBBbHRlclRhYmxlVXRpbGl0eUNvbnRleHQsIHRoaXMgY2Fubm90 IGJlCiAgKiB1c2VkIGZvciBhbnkgc3ViY29tbWFuZCB0eXBlcyB0aGF0IHJlcXVpcmUgcGFy c2UgdHJhbnNmb3JtYXRpb24gb3IKICAqIGNvdWxkIGdlbmVyYXRlIHN1YmNvbW1hbmRzIHRo YXQgaGF2ZSB0byBiZSBwYXNzZWQgdG8gUHJvY2Vzc1V0aWxpdHkuCiAgKi8KIHZvaWQKLUFs dGVyVGFibGVJbnRlcm5hbChPaWQgcmVsaWQsIExpc3QgKmNtZHMsIGJvb2wgcmVjdXJzZSkK K0FsdGVyVGFibGVJbnRlcm5hbChPaWQgcmVsaWQsIExpc3QgKmNtZHMsIGJvb2wgcmVjdXJz ZSwgQWx0ZXJUYWJsZVV0aWxpdHlDb250ZXh0ICpjb250ZXh0KQogewogCVJlbGF0aW9uCXJl bDsKIAlMT0NLTU9ERQlsb2NrbW9kZSA9IEFsdGVyVGFibGVHZXRMb2NrTGV2ZWwoY21kcyk7 CkBAIC00NDcxLDcgKzUwNDMsNyBAQCBBbHRlclRhYmxlSW50ZXJuYWwoT2lkIHJlbGlkLCBM aXN0ICpjbWRzLCBib29sIHJlY3Vyc2UpCiAKIAlFdmVudFRyaWdnZXJBbHRlclRhYmxlUmVs aWQocmVsaWQpOwogCi0JQVRDb250cm9sbGVyKE5VTEwsIHJlbCwgY21kcywgcmVjdXJzZSwg bG9ja21vZGUsIE5VTEwpOworCUFUQ29udHJvbGxlcihOVUxMLCByZWwsIGNtZHMsIHJlY3Vy c2UsIGxvY2ttb2RlLCBjb250ZXh0KTsKIH0KIAogLyoKQEAgLTQ1NjQsNiArNTEzNiw4IEBA IEFsdGVyVGFibGVHZXRMb2NrTGV2ZWwoTGlzdCAqY21kcykKIAkJCWNhc2UgQVRfRW5hYmxl UmVwbGljYVJ1bGU6CS8qIG1heSBjaGFuZ2UgU0VMRUNUIHJ1bGVzICovCiAJCQljYXNlIEFU X0VuYWJsZVJ1bGU6IC8qIG1heSBjaGFuZ2UgU0VMRUNUIHJ1bGVzICovCiAJCQljYXNlIEFU X0Rpc2FibGVSdWxlOgkvKiBtYXkgY2hhbmdlIFNFTEVDVCBydWxlcyAqLworCQkJY2FzZSBB VF9BZGRQZXJpb2Q6IC8qIHNoYXJlcyBuYW1lc3BhY2Ugd2l0aCBjb2x1bW5zLCBhZGRzIGNv bnN0cmFpbnQgKi8KKwkJCWNhc2UgQVRfRHJvcFBlcmlvZDoKIAkJCQljbWRfbG9ja21vZGUg PSBBY2Nlc3NFeGNsdXNpdmVMb2NrOwogCQkJCWJyZWFrOwogCkBAIC00ODgwLDYgKzU0NTQs MTQgQEAgQVRQcmVwQ21kKExpc3QgKip3cXVldWUsIFJlbGF0aW9uIHJlbCwgQWx0ZXJUYWJs ZUNtZCAqY21kLAogCQkJLyogVGhpcyBjb21tYW5kIG5ldmVyIHJlY3Vyc2VzICovCiAJCQlw YXNzID0gQVRfUEFTU19BRERfT1RIRVJDT05TVFI7CiAJCQlicmVhazsKKwkJY2FzZSBBVF9B ZGRQZXJpb2Q6IC8qIEFMVEVSIFRBQkxFIC4uLiBBREQgUEVSSU9EIEZPUiBuYW1lIChzdGFy dCwgZW5kKSAqLworCQkJQVRTaW1wbGVQZXJtaXNzaW9ucyhjbWQtPnN1YnR5cGUsIHJlbCwg QVRUX1RBQkxFKTsKKwkJCXBhc3MgPSBBVF9QQVNTX0FERF9QRVJJT0Q7CisJCQlicmVhazsK KwkJY2FzZSBBVF9Ecm9wUGVyaW9kOiAvKiBBTFRFUiBUQUJMRSAuLi4gRFJPUCBQRVJJT0Qg Rk9SIG5hbWUgKi8KKwkJCUFUU2ltcGxlUGVybWlzc2lvbnMoY21kLT5zdWJ0eXBlLCByZWws IEFUVF9UQUJMRSk7CisJCQlwYXNzID0gQVRfUEFTU19EUk9QOworCQkJYnJlYWs7CiAJCWNh c2UgQVRfQWRkSWRlbnRpdHk6CiAJCQlBVFNpbXBsZVBlcm1pc3Npb25zKGNtZC0+c3VidHlw ZSwgcmVsLCBBVFRfVEFCTEUgfCBBVFRfVklFVyB8IEFUVF9GT1JFSUdOX1RBQkxFKTsKIAkJ CS8qIFNldCB1cCByZWN1cnNpb24gZm9yIHBoYXNlIDI7IG5vIG90aGVyIHByZXAgbmVlZGVk ICovCkBAIC01Mjg3LDYgKzU4NjksMTQgQEAgQVRFeGVjQ21kKExpc3QgKip3cXVldWUsIEFs dGVyZWRUYWJsZUluZm8gKnRhYiwKIAkJY2FzZSBBVF9Db29rZWRDb2x1bW5EZWZhdWx0Ogkv KiBhZGQgYSBwcmUtY29va2VkIGRlZmF1bHQgKi8KIAkJCWFkZHJlc3MgPSBBVEV4ZWNDb29r ZWRDb2x1bW5EZWZhdWx0KHJlbCwgY21kLT5udW0sIGNtZC0+ZGVmKTsKIAkJCWJyZWFrOwor CQljYXNlIEFUX0FkZFBlcmlvZDoKKwkJCWFkZHJlc3MgPSBBVEV4ZWNBZGRQZXJpb2QocmVs LCAoUGVyaW9kRGVmICopIGNtZC0+ZGVmLCBjb250ZXh0KTsKKwkJCWJyZWFrOworCQljYXNl IEFUX0Ryb3BQZXJpb2Q6CisJCQlBVEV4ZWNEcm9wUGVyaW9kKHJlbCwgY21kLT5uYW1lLCBj bWQtPmJlaGF2aW9yLAorCQkJCQkJCQkgZmFsc2UsIGZhbHNlLAorCQkJCQkJCQkgY21kLT5t aXNzaW5nX29rKTsKKwkJCWJyZWFrOwogCQljYXNlIEFUX0FkZElkZW50aXR5OgogCQkJY21k ID0gQVRQYXJzZVRyYW5zZm9ybUNtZCh3cXVldWUsIHRhYiwgcmVsLCBjbWQsIGZhbHNlLCBs b2NrbW9kZSwKIAkJCQkJCQkJCSAgY3VyX3Bhc3MsIGNvbnRleHQpOwpAQCAtNjQzNCw2ICs3 MDI0LDggQEAgYWx0ZXJfdGFibGVfdHlwZV90b19zdHJpbmcoQWx0ZXJUYWJsZVR5cGUgY21k dHlwZSkKIAkJY2FzZSBBVF9BZGRDb2x1bW46CiAJCWNhc2UgQVRfQWRkQ29sdW1uVG9WaWV3 OgogCQkJcmV0dXJuICJBREQgQ09MVU1OIjsKKwkJY2FzZSBBVF9BZGRQZXJpb2Q6CisJCQly ZXR1cm4gIkFERCBQRVJJT0QiOwogCQljYXNlIEFUX0NvbHVtbkRlZmF1bHQ6CiAJCWNhc2Ug QVRfQ29va2VkQ29sdW1uRGVmYXVsdDoKIAkJCXJldHVybiAiQUxURVIgQ09MVU1OIC4uLiBT RVQgREVGQVVMVCI7CkBAIC02NDU5LDYgKzcwNTEsOCBAQCBhbHRlcl90YWJsZV90eXBlX3Rv X3N0cmluZyhBbHRlclRhYmxlVHlwZSBjbWR0eXBlKQogCQkJcmV0dXJuICJBTFRFUiBDT0xV TU4gLi4uIFNFVCBDT01QUkVTU0lPTiI7CiAJCWNhc2UgQVRfRHJvcENvbHVtbjoKIAkJCXJl dHVybiAiRFJPUCBDT0xVTU4iOworCQljYXNlIEFUX0Ryb3BQZXJpb2Q6CisJCQlyZXR1cm4g IkRST1AgUEVSSU9EIjsKIAkJY2FzZSBBVF9BZGRJbmRleDoKIAkJY2FzZSBBVF9SZUFkZElu ZGV4OgogCQkJcmV0dXJuIE5VTEw7CQkvKiBub3QgcmVhbCBncmFtbWFyICovCkBAIC03NDMy LDE0ICs4MDI2LDI5IEBAIEFURXhlY0FkZENvbHVtbihMaXN0ICoqd3F1ZXVlLCBBbHRlcmVk VGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKIC8qCiAgKiBJZiBhIG5ldyBvciByZW5h bWVkIGNvbHVtbiB3aWxsIGNvbGxpZGUgd2l0aCB0aGUgbmFtZSBvZiBhbiBleGlzdGluZwog ICogY29sdW1uIGFuZCBpZl9ub3RfZXhpc3RzIGlzIGZhbHNlIHRoZW4gZXJyb3Igb3V0LCBl bHNlIGRvIG5vdGhpbmcuCisgKgorICogU2VlIGFsc28gY2hlY2tfZm9yX3BlcmlvZF9uYW1l X2NvbGxpc2lvbi4KICAqLwogc3RhdGljIGJvb2wKIGNoZWNrX2Zvcl9jb2x1bW5fbmFtZV9j b2xsaXNpb24oUmVsYXRpb24gcmVsLCBjb25zdCBjaGFyICpjb2xuYW1lLAogCQkJCQkJCQli b29sIGlmX25vdF9leGlzdHMpCiB7Ci0JSGVhcFR1cGxlCWF0dFR1cGxlOworCUhlYXBUdXBs ZQlhdHRUdXBsZSwgcGVyVHVwbGU7CiAJaW50CQkJYXR0bnVtOwogCisJLyogSWYgdGhlIG5h bWUgZXhpc3RzIGFzIGEgcGVyaW9kLCB3ZSdyZSBkb25lLiAqLworCXBlclR1cGxlID0gU2Vh cmNoU3lzQ2FjaGUyKFBFUklPRE5BTUUsCisJCQkJCQkJICAgT2JqZWN0SWRHZXREYXR1bShS ZWxhdGlvbkdldFJlbGlkKHJlbCkpLAorCQkJCQkJCSAgIFBvaW50ZXJHZXREYXR1bShjb2xu YW1lKSk7CisJaWYgKEhlYXBUdXBsZUlzVmFsaWQocGVyVHVwbGUpKQorCXsKKwkJUmVsZWFz ZVN5c0NhY2hlKHBlclR1cGxlKTsKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShF UlJDT0RFX0RVUExJQ0FURV9DT0xVTU4pLAorCQkJCSBlcnJtc2coImNvbHVtbiBuYW1lIFwi JXNcIiBjb25mbGljdHMgd2l0aCBhIHBlcmlvZCBuYW1lIiwKKwkJCQkJCWNvbG5hbWUpKSk7 CisJfQorCiAJLyoKIAkgKiB0aGlzIHRlc3QgaXMgZGVsaWJlcmF0ZWx5IG5vdCBhdHRpc2Ry b3BwZWQtYXdhcmUsIHNpbmNlIGlmIG9uZSB0cmllcyB0bwogCSAqIGFkZCBhIGNvbHVtbiBt YXRjaGluZyBhIGRyb3BwZWQgY29sdW1uIG5hbWUsIGl0J3MgZ29ubmEgZmFpbCBhbnl3YXku CkBAIC03NDgzLDYgKzgwOTIsNzcgQEAgY2hlY2tfZm9yX2NvbHVtbl9uYW1lX2NvbGxpc2lv bihSZWxhdGlvbiByZWwsIGNvbnN0IGNoYXIgKmNvbG5hbWUsCiAJcmV0dXJuIHRydWU7CiB9 CiAKKy8qCisgKiBJZiBhIG5ldyBwZXJpb2QgbmFtZSB3aWxsIGNvbGxpZGUgd2l0aCB0aGUg bmFtZSBvZiBhbiBleGlzdGluZyBjb2x1bW4gb3IKKyAqIHBlcmlvZCBbYW5kIGlmX25vdF9l eGlzdHMgaXMgZmFsc2VdIHRoZW4gZXJyb3Igb3V0LCBlbHNlIGRvIG5vdGhpbmcuCisgKgor ICogU2VlIGFsc28gY2hlY2tfZm9yX2NvbHVtbl9uYW1lX2NvbGxpc2lvbi4KKyAqLworc3Rh dGljIGJvb2wKK2NoZWNrX2Zvcl9wZXJpb2RfbmFtZV9jb2xsaXNpb24oUmVsYXRpb24gcmVs LCBjb25zdCBjaGFyICpwZXJuYW1lLAorCQkJCQkJCQlib29sIGNvbGV4aXN0cywgYm9vbCBp Zl9ub3RfZXhpc3RzKQoreworCUhlYXBUdXBsZQlhdHRUdXBsZSwgcGVyVHVwbGU7CisJaW50 CQkJYXR0bnVtOworCisJLyogVE9ETzogaW1wbGVtZW50IElGIFtOT1RdIEVYSVNUUyBmb3Ig cGVyaW9kcyAqLworCUFzc2VydCghaWZfbm90X2V4aXN0cyk7CisKKwkvKiBJZiB0aGVyZSBp cyBhbHJlYWR5IGEgcGVyaW9kIHdpdGggdGhpcyBuYW1lLCB0aGVuIHdlJ3JlIGRvbmUuICov CisJcGVyVHVwbGUgPSBTZWFyY2hTeXNDYWNoZTIoUEVSSU9ETkFNRSwKKwkJCQkJCQkgICBP YmplY3RJZEdldERhdHVtKFJlbGF0aW9uR2V0UmVsaWQocmVsKSksCisJCQkJCQkJICAgUG9p bnRlckdldERhdHVtKHBlcm5hbWUpKTsKKwlpZiAoSGVhcFR1cGxlSXNWYWxpZChwZXJUdXBs ZSkpCisJeworCQlpZiAoaWZfbm90X2V4aXN0cykKKwkJeworCQkJUmVsZWFzZVN5c0NhY2hl KHBlclR1cGxlKTsKKworCQkJZXJlcG9ydChOT1RJQ0UsCisJCQkJCShlcnJjb2RlKEVSUkNP REVfRFVQTElDQVRFX0NPTFVNTiksCisJCQkJCSBlcnJtc2coInBlcmlvZCBcIiVzXCIgb2Yg cmVsYXRpb24gXCIlc1wiIGFscmVhZHkgZXhpc3RzLCBza2lwcGluZyIsCisJCQkJCQkJcGVy bmFtZSwgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSkpKTsKKwkJCXJldHVybiBmYWxz ZTsKKwkJfQorCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9EVVBM SUNBVEVfQ09MVU1OKSwKKwkJCQkgZXJybXNnKCJwZXJpb2QgXCIlc1wiIG9mIHJlbGF0aW9u IFwiJXNcIiBhbHJlYWR5IGV4aXN0cyIsCisJCQkJCQlwZXJuYW1lLCBSZWxhdGlvbkdldFJl bGF0aW9uTmFtZShyZWwpKSkpOworCX0KKworCS8qCisJICogdGhpcyB0ZXN0IGlzIGRlbGli ZXJhdGVseSBub3QgYXR0aXNkcm9wcGVkLWF3YXJlLCBzaW5jZSBpZiBvbmUgdHJpZXMgdG8K KwkgKiBhZGQgYSBjb2x1bW4gbWF0Y2hpbmcgYSBkcm9wcGVkIGNvbHVtbiBuYW1lLCBpdCdz IGdvbm5hIGZhaWwgYW55d2F5LgorCSAqLworCWF0dFR1cGxlID0gU2VhcmNoU3lzQ2FjaGUy KEFUVE5BTUUsCisJCQkJCQkJICAgT2JqZWN0SWRHZXREYXR1bShSZWxhdGlvbkdldFJlbGlk KHJlbCkpLAorCQkJCQkJCSAgIFBvaW50ZXJHZXREYXR1bShwZXJuYW1lKSk7CisJaWYgKEhl YXBUdXBsZUlzVmFsaWQoYXR0VHVwbGUpKQorCXsKKwkJYXR0bnVtID0gKChGb3JtX3BnX2F0 dHJpYnV0ZSkgR0VUU1RSVUNUKGF0dFR1cGxlKSktPmF0dG51bTsKKwkJUmVsZWFzZVN5c0Nh Y2hlKGF0dFR1cGxlKTsKKworCQkvKgorCQkgKiBXZSB0aHJvdyBhIGRpZmZlcmVudCBlcnJv ciBtZXNzYWdlIGZvciBjb25mbGljdHMgd2l0aCBzeXN0ZW0gY29sdW1uCisJCSAqIG5hbWVz LCBzaW5jZSB0aGV5IGFyZSBub3JtYWxseSBub3Qgc2hvd24gYW5kIHRoZSB1c2VyIG1pZ2h0 IG90aGVyd2lzZQorCQkgKiBiZSBjb25mdXNlZCBhYm91dCB0aGUgcmVhc29uIGZvciB0aGUg Y29uZmxpY3QuCisJCSAqLworCQlpZiAoYXR0bnVtIDw9IDApCisJCQllcmVwb3J0KEVSUk9S LAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0RVUExJQ0FURV9DT0xVTU4pLAorCQkJCQkgZXJy bXNnKCJwZXJpb2QgbmFtZSBcIiVzXCIgY29uZmxpY3RzIHdpdGggYSBzeXN0ZW0gY29sdW1u IG5hbWUiLAorCQkJCQkJCXBlcm5hbWUpKSk7CisJCWlmICghY29sZXhpc3RzKQorCQkJZXJl cG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9EVVBMSUNBVEVfQ09MVU1OKSwK KwkJCQkJIGVycm1zZygicGVyaW9kIG5hbWUgXCIlc1wiIGNvbmZsaWN0cyB3aXRoIGEgY29s dW1uIG5hbWUiLAorCQkJCQkJCXBlcm5hbWUpKSk7CisJfQorCisJcmV0dXJuIHRydWU7Cit9 CisKIC8qCiAgKiBJbnN0YWxsIGEgY29sdW1uJ3MgZGVwZW5kZW5jeSBvbiBpdHMgZGF0YXR5 cGUuCiAgKi8KQEAgLTgxMzQsNiArODgxNCwxNTcgQEAgQVRFeGVjQ29va2VkQ29sdW1uRGVm YXVsdChSZWxhdGlvbiByZWwsIEF0dHJOdW1iZXIgYXR0bnVtLAogCXJldHVybiBhZGRyZXNz OwogfQogCisvKgorICogQUxURVIgVEFCTEUgQUREIFBFUklPRAorICoKKyAqIFJldHVybiB0 aGUgYWRkcmVzcyBvZiB0aGUgcGVyaW9kLgorICovCitzdGF0aWMgT2JqZWN0QWRkcmVzcwor QVRFeGVjQWRkUGVyaW9kKFJlbGF0aW9uIHJlbCwgUGVyaW9kRGVmICpwZXJpb2QsIEFsdGVy VGFibGVVdGlsaXR5Q29udGV4dCAqY29udGV4dCkKK3sKKwlSZWxhdGlvbgkJYXR0cmVsYXRp b247CisJT2JqZWN0QWRkcmVzcwlhZGRyZXNzID0gSW52YWxpZE9iamVjdEFkZHJlc3M7CisJ Q29uc3RyYWludAkgICAqY29uc3RyOworCUNvbHVtbkRlZgkgICAqcmFuZ2Vjb2w7CisJT2lk CQkJCWNvbm9pZCwgcGVyaW9kb2lkOworCUxpc3QJCSAgICpjbWRzID0gTklMOworCUFsdGVy VGFibGVDbWQgICpjbWQ7CisKKwkvKgorCSAqIFBFUklPRCBGT1IgU1lTVEVNX1RJTUUgaXMg bm90IHlldCBpbXBsZW1lbnRlZCwgYnV0IG1ha2Ugc3VyZSBubyBvbmUgdXNlcworCSAqIHRo ZSBuYW1lLgorCSAqLworCWlmIChzdHJjbXAocGVyaW9kLT5wZXJpb2RuYW1lLCAic3lzdGVt X3RpbWUiKSA9PSAwKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09E RV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCQkgZXJybXNnKCJQRVJJT0QgRk9SIFNZ U1RFTV9USU1FIGlzIG5vdCBzdXBwb3J0ZWQiKSkpOworCisJLyogUGFyc2Ugb3B0aW9ucyAq LworCXRyYW5zZm9ybVBlcmlvZE9wdGlvbnMocGVyaW9kKTsKKworCS8qIFRoZSBwZXJpb2Qg bmFtZSBtdXN0IG5vdCBhbHJlYWR5IGV4aXN0ICovCisJKHZvaWQpIGNoZWNrX2Zvcl9wZXJp b2RfbmFtZV9jb2xsaXNpb24ocmVsLCBwZXJpb2QtPnBlcmlvZG5hbWUsIHBlcmlvZC0+Y29s ZXhpc3RzLCBmYWxzZSk7CisKKwlhdHRyZWxhdGlvbiA9IHRhYmxlX29wZW4oQXR0cmlidXRl UmVsYXRpb25JZCwgUm93RXhjbHVzaXZlTG9jayk7CisJVmFsaWRhdGVQZXJpb2QocmVsLCBw ZXJpb2QpOworCisJLyogTWFrZSB0aGUgQ0hFQ0sgY29uc3RyYWludCAqLworCWNvbnN0ciA9 IG1ha2VfY29uc3RyYWludF9mb3JfcGVyaW9kKHJlbCwgcGVyaW9kKTsKKwljbWQgPSBtYWtl Tm9kZShBbHRlclRhYmxlQ21kKTsKKwljbWQtPnN1YnR5cGUgPSBBVF9BZGRDb25zdHJhaW50 OworCWNtZC0+ZGVmID0gKE5vZGUgKikgY29uc3RyOworCWNtZHMgPSBsYXBwZW5kKGNtZHMs IGNtZCk7CisJQWx0ZXJUYWJsZUludGVybmFsKFJlbGF0aW9uR2V0UmVsaWQocmVsKSwgY21k cywgdHJ1ZSwgY29udGV4dCk7CisJY29ub2lkID0gZ2V0X3JlbGF0aW9uX2NvbnN0cmFpbnRf b2lkKFJlbGF0aW9uR2V0UmVsaWQocmVsKSwgcGVyaW9kLT5jb25zdHJhaW50bmFtZSwgZmFs c2UpOworCisJaWYgKCFwZXJpb2QtPmNvbGV4aXN0cykKKwl7CisJCS8qIE1ha2UgdGhlIHJh bmdlIGNvbHVtbiAqLworCQlyYW5nZWNvbCA9IG1ha2VfcmFuZ2VfY29sdW1uX2Zvcl9wZXJp b2QocGVyaW9kKTsKKwkJY21kID0gbWFrZU5vZGUoQWx0ZXJUYWJsZUNtZCk7CisJCWNtZC0+ c3VidHlwZSA9IEFUX0FkZENvbHVtbjsKKwkJY21kLT5kZWYgPSAoTm9kZSAqKSByYW5nZWNv bDsKKwkJY21kLT5uYW1lID0gcGVyaW9kLT5wZXJpb2RuYW1lOworCQljbWQtPnJlY3Vyc2Ug PSBmYWxzZTsgLyogbm8sIGxldCB0aGUgUEVSSU9EIHJlY3Vyc2UgaW5zdGVhZCAqLworCQlB bHRlclRhYmxlSW50ZXJuYWwoUmVsYXRpb25HZXRSZWxpZChyZWwpLCBsaXN0X21ha2UxKGNt ZCksIHRydWUsIGNvbnRleHQpOworCQlwZXJpb2QtPnJuZ2F0dG51bSA9IGdldF9hdHRudW0o UmVsYXRpb25HZXRSZWxpZChyZWwpLCBwZXJpb2QtPnBlcmlvZG5hbWUpOworCQlpZiAocGVy aW9kLT5ybmdhdHRudW0gPT0gSW52YWxpZEF0dHJOdW1iZXIpCisJCQllbG9nKEVSUk9SLCAi bWlzc2luZyBhdHRyaWJ1dGUgJXMiLCBwZXJpb2QtPnBlcmlvZG5hbWUpOworCisJfQorCisJ LyogU2F2ZSB0aGUgUGVyaW9kICovCisJcGVyaW9kb2lkID0gU3RvcmVQZXJpb2QocmVsLCBw ZXJpb2QtPnBlcmlvZG5hbWUsIHBlcmlvZC0+c3RhcnRhdHRudW0sIHBlcmlvZC0+ZW5kYXR0 bnVtLCBwZXJpb2QtPnJuZ2F0dG51bSwgY29ub2lkKTsKKworCU9iamVjdEFkZHJlc3NTZXQo YWRkcmVzcywgUGVyaW9kUmVsYXRpb25JZCwgcGVyaW9kb2lkKTsKKworCXRhYmxlX2Nsb3Nl KGF0dHJlbGF0aW9uLCBSb3dFeGNsdXNpdmVMb2NrKTsKKworCXJldHVybiBhZGRyZXNzOwor fQorCisvKgorICogQUxURVIgVEFCTEUgRFJPUCBQRVJJT0QKKyAqCisgKiBMaWtlIERST1Ag Q09MVU1OLCB3ZSBjYW4ndCB1c2UgdGhlIG5vcm1hbCBBTFRFUiBUQUJMRSByZWN1cnNpb24g bWVjaGFuaXNtLgorICovCitzdGF0aWMgdm9pZAorQVRFeGVjRHJvcFBlcmlvZChSZWxhdGlv biByZWwsIGNvbnN0IGNoYXIgKnBlcmlvZE5hbWUsCisJCQkJCSBEcm9wQmVoYXZpb3IgYmVo YXZpb3IsCisJCQkJCSBib29sIHJlY3Vyc2UsIGJvb2wgcmVjdXJzaW5nLAorCQkJCQkgYm9v bCBtaXNzaW5nX29rKQoreworCVJlbGF0aW9uCXBnX3BlcmlvZDsKKwlGb3JtX3BnX3Blcmlv ZCBwZXJpb2Q7CisJU3lzU2NhbkRlc2Mgc2NhbjsKKwlTY2FuS2V5RGF0YSBrZXk7CisJSGVh cFR1cGxlCXR1cGxlOworCWJvb2wJCWZvdW5kID0gZmFsc2U7CisKKwkvKiBBdCB0b3AgbGV2 ZWwsIHBlcm1pc3Npb24gY2hlY2sgd2FzIGRvbmUgaW4gQVRQcmVwQ21kLCBlbHNlIGRvIGl0 ICovCisJaWYgKHJlY3Vyc2luZykKKwkJQVRTaW1wbGVQZXJtaXNzaW9ucyhBVF9Ecm9wUGVy aW9kLCByZWwsIEFUVF9UQUJMRSk7CisKKwlwZ19wZXJpb2QgPSB0YWJsZV9vcGVuKFBlcmlv ZFJlbGF0aW9uSWQsIFJvd0V4Y2x1c2l2ZUxvY2spOworCisJLyoKKwkgKiBGaW5kIGFuZCBk cm9wIHRoZSB0YXJnZXQgcGVyaW9kCisJICovCisJU2NhbktleUluaXQoJmtleSwKKwkJCQlB bnVtX3BnX3BlcmlvZF9wZXJyZWxpZCwKKwkJCQlCVEVxdWFsU3RyYXRlZ3lOdW1iZXIsIEZf T0lERVEsCisJCQkJT2JqZWN0SWRHZXREYXR1bShSZWxhdGlvbkdldFJlbGlkKHJlbCkpKTsK KwlzY2FuID0gc3lzdGFibGVfYmVnaW5zY2FuKHBnX3BlcmlvZCwgUGVyaW9kUmVsaWROYW1l SW5kZXhJZCwKKwkJCQkJCQkgIHRydWUsIE5VTEwsIDEsICZrZXkpOworCisJd2hpbGUgKEhl YXBUdXBsZUlzVmFsaWQodHVwbGUgPSBzeXN0YWJsZV9nZXRuZXh0KHNjYW4pKSkKKwl7CisJ CU9iamVjdEFkZHJlc3MgcGVyb2JqOworCisJCXBlcmlvZCA9IChGb3JtX3BnX3BlcmlvZCkg R0VUU1RSVUNUKHR1cGxlKTsKKworCQlpZiAoc3RyY21wKE5hbWVTdHIocGVyaW9kLT5wZXJu YW1lKSwgcGVyaW9kTmFtZSkgIT0gMCkKKwkJCWNvbnRpbnVlOworCisJCS8qCisJCSAqIFBl cmZvcm0gdGhlIGFjdHVhbCBwZXJpb2QgZGVsZXRpb24KKwkJICovCisJCXBlcm9iai5jbGFz c0lkID0gUGVyaW9kUmVsYXRpb25JZDsKKwkJcGVyb2JqLm9iamVjdElkID0gcGVyaW9kLT5v aWQ7CisJCXBlcm9iai5vYmplY3RTdWJJZCA9IDA7CisKKwkJcGVyZm9ybURlbGV0aW9uKCZw ZXJvYmosIGJlaGF2aW9yLCAwKTsKKworCQlmb3VuZCA9IHRydWU7CisKKwkJLyogcGVyaW9k IGZvdW5kIGFuZCBkcm9wcGVkIC0tIG5vIG5lZWQgdG8ga2VlcCBsb29waW5nICovCisJCWJy ZWFrOworCX0KKworCXN5c3RhYmxlX2VuZHNjYW4oc2Nhbik7CisKKwlpZiAoIWZvdW5kKQor CXsKKwkJaWYgKCFtaXNzaW5nX29rKQorCQl7CisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQko ZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9PQkpFQ1QpLAorCQkJCQkgZXJybXNnKCJwZXJp b2QgXCIlc1wiIG9uIHJlbGF0aW9uIFwiJXNcIiBkb2VzIG5vdCBleGlzdCIsCisJCQkJCQkJ cGVyaW9kTmFtZSwgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSkpKTsKKwkJfQorCQll bHNlCisJCXsKKwkJCWVyZXBvcnQoTk9USUNFLAorCQkJCQkoZXJybXNnKCJwZXJpb2QgXCIl c1wiIG9uIHJlbGF0aW9uIFwiJXNcIiBkb2VzIG5vdCBleGlzdCwgc2tpcHBpbmciLAorCQkJ CQkJCXBlcmlvZE5hbWUsIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCkpKSk7CisJCQl0 YWJsZV9jbG9zZShwZ19wZXJpb2QsIFJvd0V4Y2x1c2l2ZUxvY2spOworCQkJcmV0dXJuOwor CQl9CisJfQorCisJdGFibGVfY2xvc2UocGdfcGVyaW9kLCBSb3dFeGNsdXNpdmVMb2NrKTsK K30KKwogLyoKICAqIEFMVEVSIFRBQkxFIEFMVEVSIENPTFVNTiBBREQgSURFTlRJVFkKICAq CkBAIC0xNDEyNCw2ICsxNDk1NSwxNiBAQCBSZW1lbWJlckFsbERlcGVuZGVudEZvclJlYnVp bGRpbmcoQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLCBBbHRlclRhYmxlVHlwZSBzdWJ0eXBlLAog CQkJCVJlbWVtYmVyQ29uc3RyYWludEZvclJlYnVpbGRpbmcoZm91bmRPYmplY3Qub2JqZWN0 SWQsIHRhYik7CiAJCQkJYnJlYWs7CiAKKwkJCWNhc2UgT0NMQVNTX1BFUklPRDoKKwkJCQlp ZiAoc3VidHlwZSA9PSBBVF9BbHRlckNvbHVtblR5cGUpCisJCQkJCWVyZXBvcnQoRVJST1Is CisJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJ CQkJCSBlcnJtc2coImNhbm5vdCBhbHRlciB0eXBlIG9mIGEgY29sdW1uIHVzZWQgYnkgYSBw ZXJpb2QiKSwKKwkJCQkJCQkgZXJyZGV0YWlsKCIlcyBkZXBlbmRzIG9uIGNvbHVtbiBcIiVz XCIiLAorCQkJCQkJCQkJICAgZ2V0T2JqZWN0RGVzY3JpcHRpb24oJmZvdW5kT2JqZWN0LCBm YWxzZSksCisJCQkJCQkJCQkgICBjb2xOYW1lKSkpOworCQkJCWJyZWFrOworCiAJCQljYXNl IE9DTEFTU19SRVdSSVRFOgogCQkJCS8qIFhYWCBzb21lZGF5IHNlZSBpZiB3ZSBjYW4gY29w ZSB3aXRoIHJldmlzaW5nIHZpZXdzICovCiAJCQkJaWYgKHN1YnR5cGUgPT0gQVRfQWx0ZXJD b2x1bW5UeXBlKQpAQCAtMTQxODgsNiArMTUwMjksMTUgQEAgUmVtZW1iZXJBbGxEZXBlbmRl bnRGb3JSZWJ1aWxkaW5nKEFsdGVyZWRUYWJsZUluZm8gKnRhYiwgQWx0ZXJUYWJsZVR5cGUg c3VidHlwZSwKIAkJCQkJfQogCQkJCQllbHNlCiAJCQkJCXsKKwkJCQkJCS8qCisJCQkJCQkg KiBJZiB0aGlzIEdFTkVSQVRFRCBjb2x1bW4gaXMgaW1wbGVtZW50aW5nIGEgUEVSSU9ELAor CQkJCQkJICoga2VlcCBnb2luZyBhbmQgd2UnbGwgZmFpbCBmcm9tIHRoZSBQRVJJT0QgaW5z dGVhZC4KKwkJCQkJCSAqIFRoaXMgZ2l2ZXMgYSBtb3JlIGNsZWFyIGVycm9yIG1lc3NhZ2Uu CisJCQkJCQkgKi8KKwkJCQkJCUJpdG1hcHNldCAqcGVyaW9kYXR0cyA9IGdldF9wZXJpb2Rf YXR0bm9zKFJlbGF0aW9uR2V0UmVsaWQocmVsKSk7CisJCQkJCQlpZiAoYm1zX2lzX21lbWJl cihjb2wub2JqZWN0U3ViSWQsIHBlcmlvZGF0dHMpKQorCQkJCQkJCWJyZWFrOworCiAJCQkJ CQkvKgogCQkJCQkJICogVGhpcyBtdXN0IGJlIGEgcmVmZXJlbmNlIGZyb20gdGhlIGV4cHJl c3Npb24gb2YgYQogCQkJCQkJICogZ2VuZXJhdGVkIGNvbHVtbiBlbHNld2hlcmUgaW4gdGhl IHNhbWUgdGFibGUuCkBAIC0xNjAwMCw3ICsxNjg1MCw3IEBAIEFsdGVyVGFibGVNb3ZlQWxs KEFsdGVyVGFibGVNb3ZlQWxsU3RtdCAqc3RtdCkKIAogCQlFdmVudFRyaWdnZXJBbHRlclRh YmxlU3RhcnQoKE5vZGUgKikgc3RtdCk7CiAJCS8qIE9JRCBpcyBzZXQgYnkgQWx0ZXJUYWJs ZUludGVybmFsICovCi0JCUFsdGVyVGFibGVJbnRlcm5hbChsZmlyc3Rfb2lkKGwpLCBjbWRz LCBmYWxzZSk7CisJCUFsdGVyVGFibGVJbnRlcm5hbChsZmlyc3Rfb2lkKGwpLCBjbWRzLCBm YWxzZSwgTlVMTCk7CiAJCUV2ZW50VHJpZ2dlckFsdGVyVGFibGVFbmQoKTsKIAl9CiAKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZpZXcuYyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3ZpZXcuYwppbmRleCBkY2U4OThjNzUxYy4uNTRiZGI0YmRlYWYgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZpZXcuYworKysgYi9zcmMvYmFja2VuZC9jb21t YW5kcy92aWV3LmMKQEAgLTE2OSw3ICsxNjksNyBAQCBEZWZpbmVWaXJ0dWFsUmVsYXRpb24o UmFuZ2VWYXIgKnJlbGF0aW9uLCBMaXN0ICp0bGlzdCwgYm9vbCByZXBsYWNlLAogCQkJfQog CiAJCQkvKiBFdmVudFRyaWdnZXJBbHRlclRhYmxlU3RhcnQgY2FsbGVkIGJ5IFByb2Nlc3NV dGlsaXR5U2xvdyAqLwotCQkJQWx0ZXJUYWJsZUludGVybmFsKHZpZXdPaWQsIGF0Y21kcywg dHJ1ZSk7CisJCQlBbHRlclRhYmxlSW50ZXJuYWwodmlld09pZCwgYXRjbWRzLCB0cnVlLCBO VUxMKTsKIAogCQkJLyogTWFrZSB0aGUgbmV3IHZpZXcgY29sdW1ucyB2aXNpYmxlICovCiAJ CQlDb21tYW5kQ291bnRlckluY3JlbWVudCgpOwpAQCAtMjAxLDcgKzIwMSw3IEBAIERlZmlu ZVZpcnR1YWxSZWxhdGlvbihSYW5nZVZhciAqcmVsYXRpb24sIExpc3QgKnRsaXN0LCBib29s IHJlcGxhY2UsCiAJCWF0Y21kcyA9IGxpc3RfbWFrZTEoYXRjbWQpOwogCiAJCS8qIEV2ZW50 VHJpZ2dlckFsdGVyVGFibGVTdGFydCBjYWxsZWQgYnkgUHJvY2Vzc1V0aWxpdHlTbG93ICov Ci0JCUFsdGVyVGFibGVJbnRlcm5hbCh2aWV3T2lkLCBhdGNtZHMsIHRydWUpOworCQlBbHRl clRhYmxlSW50ZXJuYWwodmlld09pZCwgYXRjbWRzLCB0cnVlLCBOVUxMKTsKIAogCQkvKgog CQkgKiBUaGVyZSBpcyB2ZXJ5IGxpdHRsZSB0byBkbyBoZXJlIHRvIHVwZGF0ZSB0aGUgdmll dydzIGRlcGVuZGVuY2llcy4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL25vZGVG dW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMKaW5kZXggNmMxOTg0NGUx N2UuLjY3NmVkODVkMjAzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVu Y3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3MuYwpAQCAtMTYzOSw2ICsx NjM5LDkgQEAgZXhwckxvY2F0aW9uKGNvbnN0IE5vZGUgKmV4cHIpCiAJCWNhc2UgVF9Db25z dHJhaW50OgogCQkJbG9jID0gKChjb25zdCBDb25zdHJhaW50ICopIGV4cHIpLT5sb2NhdGlv bjsKIAkJCWJyZWFrOworCQljYXNlIFRfUGVyaW9kRGVmOgorCQkJbG9jID0gKChjb25zdCBQ ZXJpb2REZWYgKikgZXhwciktPmxvY2F0aW9uOworCQkJYnJlYWs7CiAJCWNhc2UgVF9GdW5j dGlvblBhcmFtZXRlcjoKIAkJCS8qIGp1c3QgdXNlIHR5cGVuYW1lJ3MgbG9jYXRpb24gKi8K IAkJCWxvYyA9IGV4cHJMb2NhdGlvbigoTm9kZSAqKSAoKGNvbnN0IEZ1bmN0aW9uUGFyYW1l dGVyICopIGV4cHIpLT5hcmdUeXBlKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNl ci9ncmFtLnkgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CmluZGV4IGNhNzVlZWM3Yjc1 Li4zMzIwYTU0ZjBiMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQor KysgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CkBAIC01OTUsNyArNTk1LDcgQEAgc3Rh dGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3Qg KmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKICV0eXBlIDxrZXl3b3JkPiBjb2xfbmFtZV9rZXl3 b3JkIHJlc2VydmVkX2tleXdvcmQKICV0eXBlIDxrZXl3b3JkPiBiYXJlX2xhYmVsX2tleXdv cmQKIAotJXR5cGUgPG5vZGU+CVRhYmxlQ29uc3RyYWludCBUYWJsZUxpa2VDbGF1c2UKKyV0 eXBlIDxub2RlPglUYWJsZUNvbnN0cmFpbnQgVGFibGVMaWtlQ2xhdXNlIFRhYmxlUGVyaW9k CiAldHlwZSA8aXZhbD4JVGFibGVMaWtlT3B0aW9uTGlzdCBUYWJsZUxpa2VPcHRpb24KICV0 eXBlIDxzdHI+CQljb2x1bW5fY29tcHJlc3Npb24gb3B0X2NvbHVtbl9jb21wcmVzc2lvbiBj b2x1bW5fc3RvcmFnZSBvcHRfY29sdW1uX3N0b3JhZ2UKICV0eXBlIDxsaXN0PglDb2xRdWFs TGlzdApAQCAtMjYyNSw2ICsyNjI1LDI0IEBAIGFsdGVyX3RhYmxlX2NtZDoKIAkJCQkJbi0+ ZGVmID0gKE5vZGUgKikgJDQ7CiAJCQkJCSQkID0gKE5vZGUgKikgbjsKIAkJCQl9CisJCQkv KiBBTFRFUiBUQUJMRSA8bmFtZT4gQUREIFBFUklPRCBGT1IgPG5hbWU+ICg8bmFtZT4sIDxu YW1lPikgKi8KKwkJCXwgQUREX1AgVGFibGVQZXJpb2QKKwkJCQl7CisJCQkJCUFsdGVyVGFi bGVDbWQgKm4gPSBtYWtlTm9kZShBbHRlclRhYmxlQ21kKTsKKwkJCQkJbi0+c3VidHlwZSA9 IEFUX0FkZFBlcmlvZDsKKwkJCQkJbi0+ZGVmID0gJDI7CisJCQkJCSQkID0gKE5vZGUgKilu OworCQkJCX0KKwkJCS8qIEFMVEVSIFRBQkxFIDxuYW1lPiBEUk9QIFBFUklPRCBGT1IgPG5h bWU+IFtSRVNUUklDVHxDQVNDQURFXSAqLworCQkJfCBEUk9QIFBFUklPRCBGT1IgbmFtZSBv cHRfZHJvcF9iZWhhdmlvcgorCQkJCXsKKwkJCQkJQWx0ZXJUYWJsZUNtZCAqbiA9IG1ha2VO b2RlKEFsdGVyVGFibGVDbWQpOworCQkJCQluLT5zdWJ0eXBlID0gQVRfRHJvcFBlcmlvZDsK KwkJCQkJbi0+bmFtZSA9ICQ0OworCQkJCQluLT5iZWhhdmlvciA9ICQ1OworCQkJCQluLT5t aXNzaW5nX29rID0gZmFsc2U7CisJCQkJCSQkID0gKE5vZGUgKiluOworCQkJCX0KIAkJCS8q IEFMVEVSIFRBQkxFIDxuYW1lPiBBREQgQ09OU1RSQUlOVCAuLi4gKi8KIAkJCXwgQUREX1Ag VGFibGVDb25zdHJhaW50CiAJCQkJewpAQCAtMzc0OSw4ICszNzY3LDEwIEBAIFRhYmxlRWxl bWVudDoKIAkJCWNvbHVtbkRlZgkJCQkJCQl7ICQkID0gJDE7IH0KIAkJCXwgVGFibGVMaWtl Q2xhdXNlCQkJCQl7ICQkID0gJDE7IH0KIAkJCXwgVGFibGVDb25zdHJhaW50CQkJCQl7ICQk ID0gJDE7IH0KKwkJCXwgVGFibGVQZXJpb2QJCQkJCQl7ICQkID0gJDE7IH0KIAkJOwogCisK IFR5cGVkVGFibGVFbGVtZW50OgogCQkJY29sdW1uT3B0aW9ucwkJCQkJCXsgJCQgPSAkMTsg fQogCQkJfCBUYWJsZUNvbnN0cmFpbnQJCQkJCXsgJCQgPSAkMTsgfQpAQCAtNDEwMiw2ICs0 MTIyLDE5IEBAIFRhYmxlTGlrZU9wdGlvbjoKIAkJOwogCiAKK1RhYmxlUGVyaW9kOgorCQkJ UEVSSU9EIEZPUiBuYW1lICcoJyBuYW1lICcsJyBuYW1lICcpJyBvcHRfZGVmaW5pdGlvbgor CQkJCXsKKwkJCQkJUGVyaW9kRGVmICpuID0gbWFrZU5vZGUoUGVyaW9kRGVmKTsKKwkJCQkJ bi0+cGVyaW9kbmFtZSA9ICQzOworCQkJCQluLT5zdGFydGNvbG5hbWUgPSAkNTsKKwkJCQkJ bi0+ZW5kY29sbmFtZSA9ICQ3OworCQkJCQluLT5vcHRpb25zID0gJDk7CisJCQkJCW4tPmxv Y2F0aW9uID0gQDE7CisJCQkJCSQkID0gKE5vZGUgKikgbjsKKwkJCQl9CisJCTsKKwogLyog Q29uc3RyYWludEVsZW0gc3BlY2lmaWVzIGNvbnN0cmFpbnQgc3ludGF4IHdoaWNoIGlzIG5v dCBlbWJlZGRlZCBpbnRvCiAgKglhIGNvbHVtbiBkZWZpbml0aW9uLiBDb2xDb25zdHJhaW50 RWxlbSBzcGVjaWZpZXMgdGhlIGVtYmVkZGVkIGZvcm0uCiAgKiAtIHRob21hcyAxOTk3LTEy LTAzCkBAIC03MTY4LDYgKzcyMDEsMTQgQEAgQ29tbWVudFN0bXQ6CiAJCQkJCW4tPmNvbW1l bnQgPSAkOTsKIAkJCQkJJCQgPSAoTm9kZSAqKSBuOwogCQkJCX0KKwkJCXwgQ09NTUVOVCBP TiBQRVJJT0QgYW55X25hbWUgSVMgY29tbWVudF90ZXh0CisJCQkJeworCQkJCQlDb21tZW50 U3RtdCAqbiA9IG1ha2VOb2RlKENvbW1lbnRTdG10KTsKKwkJCQkJbi0+b2JqdHlwZSA9IE9C SkVDVF9QRVJJT0Q7CisJCQkJCW4tPm9iamVjdCA9IChOb2RlICopICQ0OworCQkJCQluLT5j b21tZW50ID0gJDY7CisJCQkJCSQkID0gKE5vZGUgKikgbjsKKwkJCQl9CiAJCQl8IENPTU1F TlQgT04gTEFSR0VfUCBPQkpFQ1RfUCBOdW1lcmljT25seSBJUyBjb21tZW50X3RleHQKIAkJ CQl7CiAJCQkJCUNvbW1lbnRTdG10ICpuID0gbWFrZU5vZGUoQ29tbWVudFN0bXQpOwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3JlbGF0aW9uLmMgYi9zcmMvYmFj a2VuZC9wYXJzZXIvcGFyc2VfcmVsYXRpb24uYwppbmRleCAzNGEwZWM1OTAxOS4uMTdlODVh N2M4M2IgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9yZWxhdGlvbi5j CisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9yZWxhdGlvbi5jCkBAIC0yMiw2ICsy Miw3IEBACiAjaW5jbHVkZSAiYWNjZXNzL3RhYmxlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9o ZWFwLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9uYW1lc3BhY2UuaCIKKyNpbmNsdWRlICJjYXRh bG9nL3BnX3BlcmlvZC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgogI2luY2x1 ZGUgImZ1bmNhcGkuaCIKICNpbmNsdWRlICJub2Rlcy9tYWtlZnVuY3MuaCIKQEAgLTMxODks NiArMzE5MCw3IEBAIGV4cGFuZE5TSXRlbUF0dHJzKFBhcnNlU3RhdGUgKnBzdGF0ZSwgUGFy c2VOYW1lc3BhY2VJdGVtICpuc2l0ZW0sCiAJCQkJICBpbnQgc3VibGV2ZWxzX3VwLCBib29s IHJlcXVpcmVfY29sX3ByaXZzLCBpbnQgbG9jYXRpb24pCiB7CiAJUmFuZ2VUYmxFbnRyeSAq cnRlID0gbnNpdGVtLT5wX3J0ZTsKKwlCaXRtYXBzZXQgICpwZXJpb2RhdHRzID0gTlVMTDsK IAlSVEVQZXJtaXNzaW9uSW5mbyAqcGVybWluZm8gPSBuc2l0ZW0tPnBfcGVybWluZm87CiAJ TGlzdAkgICAqbmFtZXMsCiAJCQkgICAqdmFyczsKQEAgLTMyMTIsMTIgKzMyMTQsMjAgQEAg ZXhwYW5kTlNJdGVtQXR0cnMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBQYXJzZU5hbWVzcGFjZUl0 ZW0gKm5zaXRlbSwKIAkJcGVybWluZm8tPnJlcXVpcmVkUGVybXMgfD0gQUNMX1NFTEVDVDsK IAl9CiAKKwkvKiBHZXQgUEVSSU9EIGNvbHVtbnMgdG8gZXhjbHVkZSAqLworCWlmIChydGUt PnJ0ZWtpbmQgPT0gUlRFX1JFTEFUSU9OKQorCQlwZXJpb2RhdHRzID0gZ2V0X3BlcmlvZF9h dHRub3MocnRlLT5yZWxpZCk7CisKIAlmb3Jib3RoKG5hbWUsIG5hbWVzLCB2YXIsIHZhcnMp CiAJewogCQljaGFyCSAgICpsYWJlbCA9IHN0clZhbChsZmlyc3QobmFtZSkpOwogCQlWYXIJ CSAgICp2YXJub2RlID0gKFZhciAqKSBsZmlyc3QodmFyKTsKIAkJVGFyZ2V0RW50cnkgKnRl OwogCisJCS8qIElmIHRoaXMgY29sdW1uIGlzIGZyb20gYSBQRVJJT0QsIHNraXAgaXQgKi8K KwkJaWYgKGJtc19pc19tZW1iZXIocHN0YXRlLT5wX25leHRfcmVzbm8sIHBlcmlvZGF0dHMp KQorCQkJCWNvbnRpbnVlOworCiAJCXRlID0gbWFrZVRhcmdldEVudHJ5KChFeHByICopIHZh cm5vZGUsCiAJCQkJCQkJIChBdHRyTnVtYmVyKSBwc3RhdGUtPnBfbmV4dF9yZXNubysrLAog CQkJCQkJCSBsYWJlbCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91 dGlsY21kLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jCmluZGV4IGM3 ZWZkOGQ4Y2VlLi5mOTk4OTA2ZmRiYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2Vy L3BhcnNlX3V0aWxjbWQuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNt ZC5jCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19jb25zdHJhaW50 LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19vcGNsYXNzLmgiCiAjaW5jbHVkZSAiY2F0YWxv Zy9wZ19vcGVyYXRvci5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfcGVyaW9kLmgiCiAjaW5j bHVkZSAiY2F0YWxvZy9wZ19zdGF0aXN0aWNfZXh0LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9w Z190eXBlLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvY29tbWVudC5oIgpAQCAtODAsNiArODEs NyBAQCB0eXBlZGVmIHN0cnVjdAogCWJvb2wJCWlzZm9yZWlnbjsJCS8qIHRydWUgaWYgQ1JF QVRFL0FMVEVSIEZPUkVJR04gVEFCTEUgKi8KIAlib29sCQlpc2FsdGVyOwkJLyogdHJ1ZSBp ZiBhbHRlcmluZyBleGlzdGluZyB0YWJsZSAqLwogCUxpc3QJICAgKmNvbHVtbnM7CQkvKiBD b2x1bW5EZWYgaXRlbXMgKi8KKwlMaXN0CSAgICpwZXJpb2RzOwkJLyogUGVyaW9kRGVmIGl0 ZW1zICovCiAJTGlzdAkgICAqY2tjb25zdHJhaW50czsJLyogQ0hFQ0sgY29uc3RyYWludHMg Ki8KIAlMaXN0CSAgICpubmNvbnN0cmFpbnRzOwkvKiBOT1QgTlVMTCBjb25zdHJhaW50cyAq LwogCUxpc3QJICAgKmZrY29uc3RyYWludHM7CS8qIEZPUkVJR04gS0VZIGNvbnN0cmFpbnRz ICovCkBAIC0xMTEsNiArMTEzLDggQEAgdHlwZWRlZiBzdHJ1Y3QKIAogc3RhdGljIHZvaWQg dHJhbnNmb3JtQ29sdW1uRGVmaW5pdGlvbihDcmVhdGVTdG10Q29udGV4dCAqY3h0LAogCQkJ CQkJCQkJICBDb2x1bW5EZWYgKmNvbHVtbik7CitzdGF0aWMgdm9pZCB0cmFuc2Zvcm1UYWJs ZVBlcmlvZChDcmVhdGVTdG10Q29udGV4dCAqY3h0LAorCQkJCQkJCQkgUGVyaW9kRGVmICpw ZXJpb2QpOwogc3RhdGljIHZvaWQgdHJhbnNmb3JtVGFibGVDb25zdHJhaW50KENyZWF0ZVN0 bXRDb250ZXh0ICpjeHQsCiAJCQkJCQkJCQkgQ29uc3RyYWludCAqY29uc3RyYWludCk7CiBz dGF0aWMgdm9pZCB0cmFuc2Zvcm1UYWJsZUxpa2VDbGF1c2UoQ3JlYXRlU3RtdENvbnRleHQg KmN4dCwKQEAgLTI0MCw2ICsyNDQsNyBAQCB0cmFuc2Zvcm1DcmVhdGVTdG10KENyZWF0ZVN0 bXQgKnN0bXQsIGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5nKQogCWN4dC5pbmhSZWxhdGlvbnMg PSBzdG10LT5pbmhSZWxhdGlvbnM7CiAJY3h0LmlzYWx0ZXIgPSBmYWxzZTsKIAljeHQuY29s dW1ucyA9IE5JTDsKKwljeHQucGVyaW9kcyA9IE5JTDsKIAljeHQuY2tjb25zdHJhaW50cyA9 IE5JTDsKIAljeHQubm5jb25zdHJhaW50cyA9IE5JTDsKIAljeHQuZmtjb25zdHJhaW50cyA9 IE5JTDsKQEAgLTI4MCw2ICsyODUsMTAgQEAgdHJhbnNmb3JtQ3JlYXRlU3RtdChDcmVhdGVT dG10ICpzdG10LCBjb25zdCBjaGFyICpxdWVyeVN0cmluZykKIAkJCQl0cmFuc2Zvcm1Db2x1 bW5EZWZpbml0aW9uKCZjeHQsIChDb2x1bW5EZWYgKikgZWxlbWVudCk7CiAJCQkJYnJlYWs7 CiAKKwkJCWNhc2UgVF9QZXJpb2REZWY6CisJCQkJdHJhbnNmb3JtVGFibGVQZXJpb2QoJmN4 dCwgKFBlcmlvZERlZiAqKSBlbGVtZW50KTsKKwkJCQlicmVhazsKKwogCQkJY2FzZSBUX0Nv bnN0cmFpbnQ6CiAJCQkJdHJhbnNmb3JtVGFibGVDb25zdHJhaW50KCZjeHQsIChDb25zdHJh aW50ICopIGVsZW1lbnQpOwogCQkJCWJyZWFrOwpAQCAtMzQ3LDYgKzM1Niw3IEBAIHRyYW5z Zm9ybUNyZWF0ZVN0bXQoQ3JlYXRlU3RtdCAqc3RtdCwgY29uc3QgY2hhciAqcXVlcnlTdHJp bmcpCiAJICogT3V0cHV0IHJlc3VsdHMuCiAJICovCiAJc3RtdC0+dGFibGVFbHRzID0gY3h0 LmNvbHVtbnM7CisJc3RtdC0+cGVyaW9kcyA9IGN4dC5wZXJpb2RzOwogCXN0bXQtPmNvbnN0 cmFpbnRzID0gY3h0LmNrY29uc3RyYWludHM7CiAJc3RtdC0+bm5jb25zdHJhaW50cyA9IGN4 dC5ubmNvbnN0cmFpbnRzOwogCkBAIC05MjIsNiArOTMyLDk2IEBAIHRyYW5zZm9ybUNvbHVt bkRlZmluaXRpb24oQ3JlYXRlU3RtdENvbnRleHQgKmN4dCwgQ29sdW1uRGVmICpjb2x1bW4p CiAJfQogfQogCit2b2lkCit0cmFuc2Zvcm1QZXJpb2RPcHRpb25zKFBlcmlvZERlZiAqcGVy aW9kKQoreworCUxpc3RDZWxsICAgKm9wdGlvbjsKKwlEZWZFbGVtCSAgICpkY29uc3RyYWlu dG5hbWUgPSBOVUxMOworCURlZkVsZW0JICAgKmRyYW5nZXR5cGVuYW1lID0gTlVMTDsKKwlE ZWZFbGVtCSAgICpkY29sZXhpc3RzID0gTlVMTDsKKworCWZvcmVhY2gob3B0aW9uLCBwZXJp b2QtPm9wdGlvbnMpCisJeworCQlEZWZFbGVtICAgICpkZWZlbCA9IChEZWZFbGVtICopIGxm aXJzdChvcHRpb24pOworCisJCWlmIChzdHJjbXAoZGVmZWwtPmRlZm5hbWUsICJjaGVja19j b25zdHJhaW50X25hbWUiKSA9PSAwKQorCQl7CisJCQlpZiAoZGNvbnN0cmFpbnRuYW1lKQor CQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJP UiksCisJCQkJCQkgZXJybXNnKCJjb25mbGljdGluZyBvciByZWR1bmRhbnQgb3B0aW9ucyIp KSk7CisJCQlkY29uc3RyYWludG5hbWUgPSBkZWZlbDsKKwkJfQorCQllbHNlIGlmIChzdHJj bXAoZGVmZWwtPmRlZm5hbWUsICJyYW5nZXR5cGUiKSA9PSAwKQorCQl7CisJCQlpZiAoZHJh bmdldHlwZW5hbWUpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNP REVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJCSBlcnJtc2coImNvbmZsaWN0aW5nIG9yIHJlZHVu ZGFudCBvcHRpb25zIikpKTsKKwkJCWRyYW5nZXR5cGVuYW1lID0gZGVmZWw7CisJCX0KKwkJ ZWxzZSBpZiAoc3RyY21wKGRlZmVsLT5kZWZuYW1lLCAiY29sZXhpc3RzIikgPT0gMCkKKwkJ eworCQkJaWYgKGRjb2xleGlzdHMpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJj b2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJCSBlcnJtc2coImNvbmZsaWN0aW5n IG9yIHJlZHVuZGFudCBvcHRpb25zIikpKTsKKwkJCWRjb2xleGlzdHMgPSBkZWZlbDsKKwkJ fQorCQllbHNlCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX1NZ TlRBWF9FUlJPUiksCisJCQkJCSBlcnJtc2coIm9wdGlvbiBcIiVzXCIgbm90IHJlY29nbml6 ZWQiLCBkZWZlbC0+ZGVmbmFtZSkpKTsKKwl9CisKKwlpZiAoZGNvbnN0cmFpbnRuYW1lICE9 IE5VTEwpCisJCXBlcmlvZC0+Y29uc3RyYWludG5hbWUgPSBkZWZHZXRTdHJpbmcoZGNvbnN0 cmFpbnRuYW1lKTsKKwllbHNlCisJCXBlcmlvZC0+Y29uc3RyYWludG5hbWUgPSBOVUxMOwor CisJaWYgKGRyYW5nZXR5cGVuYW1lICE9IE5VTEwpCisJCXBlcmlvZC0+cmFuZ2V0eXBlbmFt ZSA9IGRlZkdldFN0cmluZyhkcmFuZ2V0eXBlbmFtZSk7CisJZWxzZQorCQlwZXJpb2QtPnJh bmdldHlwZW5hbWUgPSBOVUxMOworCisJaWYgKGRjb2xleGlzdHMgIT0gTlVMTCkKKwkJcGVy aW9kLT5jb2xleGlzdHMgPSBkZWZHZXRCb29sZWFuKGRjb2xleGlzdHMpOworCWVsc2UKKwkJ cGVyaW9kLT5jb2xleGlzdHMgPSBmYWxzZTsKK30KKworLyoKKyAqIHRyYW5zZm9ybVRhYmxl UGVyaW9kCisgKgkJdHJhbnNmb3JtIGEgUGVyaW9kRGVmIG5vZGUgd2l0aGluIENSRUFURSBU QUJMRSBvciBBTFRFUiBUQUJMRQorICoJCVRPRE86IERvZXMgQUxURVIgVEFCTEUgcmVhbGx5 IGNhbGwgdXM/PyBJdCBkb2Vzbid0IHNlZW0gbGlrZSBpdCBkb2VzLiBNYXliZSBpdCBzaG91 bGQuIERpZCBpdCBpbiBWaWsncyBvcmlnaW5hbCBwYXRjaD8KKyAqLworc3RhdGljIHZvaWQK K3RyYW5zZm9ybVRhYmxlUGVyaW9kKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQsIFBlcmlvZERl ZiAqcGVyaW9kKQoreworCS8vIE9pZAkJCWNvbHR5cGlkOworCS8vIENvbHVtbkRlZiAgKmNv bDsKKwkvLyBMaXN0Q2VsbCAgICpjb2x1bW5zOworCisJaWYgKHN0cmNtcChwZXJpb2QtPnBl cmlvZG5hbWUsICJzeXN0ZW1fdGltZSIpID09IDApCisJCQllcmVwb3J0KEVSUk9SLAorCQkJ CQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJCSBlcnJt c2coIlBFUklPRCBGT1IgU1lTVEVNX1RJTUUgaXMgbm90IHN1cHBvcnRlZCIpLAorCQkJCQkg cGFyc2VyX2VycnBvc2l0aW9uKGN4dC0+cHN0YXRlLAorCQkJCQkJCQkJCXBlcmlvZC0+bG9j YXRpb24pKSk7CisKKwlpZiAoc3RyY21wKHBlcmlvZC0+c3RhcnRjb2xuYW1lLCBwZXJpb2Qt PmVuZGNvbG5hbWUpID09IDApCisJCWVyZXBvcnQoRVJST1IsIChlcnJtc2coImNvbHVtbiBc IiVzXCIgY2FuJ3QgYmUgdGhlIHN0YXJ0IGFuZCBlbmQgY29sdW1uIGZvciBwZXJpb2QgXCIl c1wiIiwKKwkJCQkJCXBlcmlvZC0+c3RhcnRjb2xuYW1lLCBwZXJpb2QtPnBlcmlvZG5hbWUp KSk7CisKKwkvKgorCSAqIERldGVybWluZSB0aGUgY29sdW1uIGluZm8gYW5kIHJhbmdlIHR5 cGUgc28gdGhhdCB0cmFuc2Zvcm1JbmRleENvbnN0cmFpbnRzCisJICoga25vd3MgaG93IHRv IGNyZWF0ZSBQUklNQVJZIEtFWS9VTklRVUUgY29uc3RyYWludHMgdXNpbmcgdGhpcyBQRVJJ T0QuCisJICovCisJdHJhbnNmb3JtUGVyaW9kT3B0aW9ucyhwZXJpb2QpOworCisJY3h0LT5w ZXJpb2RzID0gbGFwcGVuZChjeHQtPnBlcmlvZHMsIHBlcmlvZCk7Cit9CisKIC8qCiAgKiB0 cmFuc2Zvcm1UYWJsZUNvbnN0cmFpbnQKICAqCQl0cmFuc2Zvcm0gYSBDb25zdHJhaW50IG5v ZGUgd2l0aGluIENSRUFURSBUQUJMRSBvciBBTFRFUiBUQUJMRQpAQCAtMTAxMiw2ICsxMTEy LDcgQEAgdHJhbnNmb3JtVGFibGVMaWtlQ2xhdXNlKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQs IFRhYmxlTGlrZUNsYXVzZSAqdGFibGVfbGlrZV9jbGEKIAlBdHRyTnVtYmVyCXBhcmVudF9h dHRubzsKIAlSZWxhdGlvbglyZWxhdGlvbjsKIAlUdXBsZURlc2MJdHVwbGVEZXNjOworCUJp dG1hcHNldCAgKnBlcmlvZGF0dHM7CiAJQWNsUmVzdWx0CWFjbHJlc3VsdDsKIAljaGFyCSAg ICpjb21tZW50OwogCVBhcnNlQ2FsbGJhY2tTdGF0ZSBwY2JzdGF0ZTsKQEAgLTEwNjQsNiAr MTE2NSw3IEBAIHRyYW5zZm9ybVRhYmxlTGlrZUNsYXVzZShDcmVhdGVTdG10Q29udGV4dCAq Y3h0LCBUYWJsZUxpa2VDbGF1c2UgKnRhYmxlX2xpa2VfY2xhCiAJfQogCiAJdHVwbGVEZXNj ID0gUmVsYXRpb25HZXREZXNjcihyZWxhdGlvbik7CisJcGVyaW9kYXR0cyA9IGdldF9wZXJp b2RfYXR0bm9zKFJlbGF0aW9uR2V0UmVsaWQocmVsYXRpb24pKTsKIAogCS8qCiAJICogSW5z ZXJ0IHRoZSBjb3BpZWQgYXR0cmlidXRlcyBpbnRvIHRoZSBjeHQgZm9yIHRoZSBuZXcgdGFi bGUgZGVmaW5pdGlvbi4KQEAgLTEwNzMsMTAgKzExNzUsMTggQEAgdHJhbnNmb3JtVGFibGVM aWtlQ2xhdXNlKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQsIFRhYmxlTGlrZUNsYXVzZSAqdGFi bGVfbGlrZV9jbGEKIAlmb3IgKHBhcmVudF9hdHRubyA9IDE7IHBhcmVudF9hdHRubyA8PSB0 dXBsZURlc2MtPm5hdHRzOwogCQkgcGFyZW50X2F0dG5vKyspCiAJewotCQlGb3JtX3BnX2F0 dHJpYnV0ZSBhdHRyaWJ1dGUgPSBUdXBsZURlc2NBdHRyKHR1cGxlRGVzYywKLQkJCQkJCQkJ CQkJCQlwYXJlbnRfYXR0bm8gLSAxKTsKKwkJRm9ybV9wZ19hdHRyaWJ1dGUgYXR0cmlidXRl OwogCQlDb2x1bW5EZWYgICpkZWY7CiAKKwkJLyoKKwkJICogSWYgdGhpcyBjb2x1bW4gaXMg ZnJvbSBhIFBFUklPRCwgc2tpcCBpdAorCQkgKiAoc2luY2UgTElLRSBuZXZlciBjb3BpZXMg UEVSSU9EcykuCisJCSAqLworCQlpZiAoYm1zX2lzX21lbWJlcihwYXJlbnRfYXR0bm8sIHBl cmlvZGF0dHMpKQorCQkJY29udGludWU7CisKKwkJYXR0cmlidXRlID0gVHVwbGVEZXNjQXR0 cih0dXBsZURlc2MsIHBhcmVudF9hdHRubyAtIDEpOworCiAJCS8qCiAJCSAqIElnbm9yZSBk cm9wcGVkIGNvbHVtbnMgaW4gdGhlIHBhcmVudC4KIAkJICovCkBAIC0zMDE3LDYgKzMxMjcs MTAgQEAgdHJhbnNmb3JtSW5kZXhTdG10KE9pZCByZWxpZCwgSW5kZXhTdG10ICpzdG10LCBj b25zdCBjaGFyICpxdWVyeVN0cmluZykKIAkJfQogCX0KIAorCS8qIHRha2UgY2FyZSBvZiB0 aGUgcGVyaW9kICovCisJaWYgKHN0bXQtPnBlcmlvZCkKKwkJc3RtdC0+cGVyaW9kLT5vaWQg PSBnZXRfcGVyaW9kX29pZChyZWxpZCwgc3RtdC0+cGVyaW9kLT5wZXJpb2RuYW1lLCBmYWxz ZSk7CisKIAkvKgogCSAqIENoZWNrIHRoYXQgb25seSB0aGUgYmFzZSByZWwgaXMgbWVudGlv bmVkLiAgKFRoaXMgc2hvdWxkIGJlIGRlYWQgY29kZQogCSAqIG5vdyB0aGF0IGFkZF9taXNz aW5nX2Zyb20gaXMgaGlzdG9yeS4pCkBAIC0zNDc0LDYgKzM1ODgsNyBAQCB0cmFuc2Zvcm1B bHRlclRhYmxlU3RtdChPaWQgcmVsaWQsIEFsdGVyVGFibGVTdG10ICpzdG10LAogCWN4dC5p bmhSZWxhdGlvbnMgPSBOSUw7CiAJY3h0LmlzYWx0ZXIgPSB0cnVlOwogCWN4dC5jb2x1bW5z ID0gTklMOworCWN4dC5wZXJpb2RzID0gTklMOwogCWN4dC5ja2NvbnN0cmFpbnRzID0gTklM OwogCWN4dC5ubmNvbnN0cmFpbnRzID0gTklMOwogCWN4dC5ma2NvbnN0cmFpbnRzID0gTklM OwpAQCAtMzUzNiw2ICszNjUxLDE1IEBAIHRyYW5zZm9ybUFsdGVyVGFibGVTdG10KE9pZCBy ZWxpZCwgQWx0ZXJUYWJsZVN0bXQgKnN0bXQsCiAJCQkJCQkgKGludCkgbm9kZVRhZyhjbWQt PmRlZikpOwogCQkJCWJyZWFrOwogCisJCQljYXNlIEFUX0FkZFBlcmlvZDoKKwkJCQl7CisJ CQkJCW5ld2NtZHMgPSBsYXBwZW5kKG5ld2NtZHMsIGNtZCk7CisJCQkJCS8vIFdoeSBub3Qg Y2FsbCB0cmFuc2Zvcm1UYWJsZVBlcmlvZCBoZXJlPworCQkJCQkvLyBBaCBiZWNhdXNlIGl0 IGxvb2tzIGF0IGN4dC0+Y29sdW1ucworCQkJCQkvLyBhbmQgaW4gYW4gQUxURVIgc3RhdGVt ZW50IHRoZSBjb2x1bW5zIG1pZ2h0IGFscmVhZHkgZXhpc3QgKG9yIG5vdCkuCisJCQkJCWJy ZWFrOworCQkJCX0KKwogCQkJY2FzZSBBVF9BbHRlckNvbHVtblR5cGU6CiAJCQkJewogCQkJ CQlDb2x1bW5EZWYgICpkZWYgPSBjYXN0Tm9kZShDb2x1bW5EZWYsIGNtZC0+ZGVmKTsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9NYWtlZmlsZSBiL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9NYWtlZmlsZQppbmRleCAxOTllYWU1MjVkMS4uZDA0Yzc1YjM5ODAgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9NYWtlZmlsZQorKysgYi9zcmMvYmFj a2VuZC91dGlscy9hZHQvTWFrZWZpbGUKQEAgLTc4LDYgKzc4LDcgQEAgT0JKUyA9IFwKIAlv cmFjbGVfY29tcGF0Lm8gXAogCW9yZGVyZWRzZXRhZ2dzLm8gXAogCXBhcnRpdGlvbmZ1bmNz Lm8gXAorCXBlcmlvZC5vIFwKIAlwZ19sb2NhbGUubyBcCiAJcGdfbHNuLm8gXAogCXBnX3Vw Z3JhZGVfc3VwcG9ydC5vIFwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9w ZXJpb2QuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZXJpb2QuYwpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMGVkNDMwNGUxNmQKLS0tIC9kZXYvbnVsbAor KysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcGVyaW9kLmMKQEAgLTAsMCArMSw1NiBAQAor LyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogcGVyaW9kLmMKKyAqCSAgRnVuY3Rpb25z IHRvIHN1cHBvcnQgcGVyaW9kcy4KKyAqCisgKgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChj KSAxOTk2LTIwMjIsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKiBQ b3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTQsIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkg b2YgQ2FsaWZvcm5pYQorICoKKyAqCisgKiBJREVOVElGSUNBVElPTgorICoJICBzcmMvYmFj a2VuZC91dGlscy9hZHQvcGVyaW9kLmMKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAq LworI2luY2x1ZGUgInBvc3RncmVzLmgiCisKKyNpbmNsdWRlICJleGVjdXRvci90dXB0YWJs ZS5oIgorI2luY2x1ZGUgImZtZ3IuaCIKKyNpbmNsdWRlICJub2Rlcy9wcmltbm9kZXMuaCIK KyNpbmNsdWRlICJ1dGlscy9mbWdycHJvdG9zLmgiCisjaW5jbHVkZSAidXRpbHMvcGVyaW9k LmgiCisjaW5jbHVkZSAidXRpbHMvcmFuZ2V0eXBlcy5oIgorCitEYXR1bSBwZXJpb2RfdG9f cmFuZ2UoVHVwbGVUYWJsZVNsb3QgKnNsb3QsIGludCBzdGFydGF0dG5vLCBpbnQgZW5kYXR0 bm8sIE9pZCByYW5nZXR5cGUpCit7CisJRGF0dW0gc3RhcnR2YWx1ZTsKKwlEYXR1bSBlbmR2 YWx1ZTsKKwlEYXR1bSByZXN1bHQ7CisJYm9vbAlzdGFydGlzbnVsbDsKKwlib29sCWVuZGlz bnVsbDsKKwlMT0NBTF9GQ0lORk8oZmNpbmZvLCAyKTsKKwlGbWdySW5mbwlmbGluZm87CisJ RnVuY0V4cHIgICAqZjsKKworCUluaXRGdW5jdGlvbkNhbGxJbmZvRGF0YSgqZmNpbmZvLCAm ZmxpbmZvLCAyLCBJbnZhbGlkT2lkLCBOVUxMLCBOVUxMKTsKKwlmID0gbWFrZU5vZGUoRnVu Y0V4cHIpOworCWYtPmZ1bmNyZXN1bHR0eXBlID0gcmFuZ2V0eXBlOworCWZsaW5mby5mbl9l eHByID0gKE5vZGUgKikgZjsKKwlmbGluZm8uZm5fZXh0cmEgPSBOVUxMOworCisJLyogY29t cHV0ZSBvbGR2YWx1ZSAqLworCXN0YXJ0dmFsdWUgPSBzbG90X2dldGF0dHIoc2xvdCwgc3Rh cnRhdHRubywgJnN0YXJ0aXNudWxsKTsKKwllbmR2YWx1ZSA9IHNsb3RfZ2V0YXR0cihzbG90 LCBlbmRhdHRubywgJmVuZGlzbnVsbCk7CisKKwlmY2luZm8tPmFyZ3NbMF0udmFsdWUgPSBz dGFydHZhbHVlOworCWZjaW5mby0+YXJnc1swXS5pc251bGwgPSBzdGFydGlzbnVsbDsKKwlm Y2luZm8tPmFyZ3NbMV0udmFsdWUgPSBlbmR2YWx1ZTsKKwlmY2luZm8tPmFyZ3NbMV0uaXNu dWxsID0gZW5kaXNudWxsOworCisJcmVzdWx0ID0gcmFuZ2VfY29uc3RydWN0b3IyKGZjaW5m byk7CisJaWYgKGZjaW5mby0+aXNudWxsKQorCQllbG9nKEVSUk9SLCAiZnVuY3Rpb24gJXUg cmV0dXJuZWQgTlVMTCIsIGZsaW5mby5mbl9vaWQpOworCisJcmV0dXJuIHJlc3VsdDsKK30K ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5jIGIvc3Jj L2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMKaW5kZXggNTNlNzA2YzZjMDEuLmQ5 M2Y4ZjRiOTZmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9sc3lzY2Fj aGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9sc3lzY2FjaGUuYwpAQCAtMzAs NiArMzAsNyBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfbmFtZXNwYWNlLmgiCiAjaW5jbHVk ZSAiY2F0YWxvZy9wZ19vcGNsYXNzLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19vcGVyYXRv ci5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfcGVyaW9kLmgiCiAjaW5jbHVkZSAiY2F0YWxv Zy9wZ19wcm9jLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19yYW5nZS5oIgogI2luY2x1ZGUg ImNhdGFsb2cvcGdfc3RhdGlzdGljLmgiCkBAIC05OTQsNiArOTk1LDY4IEBAIGdldF9hdHRv cHRpb25zKE9pZCByZWxpZCwgaW50MTYgYXR0bnVtKQogCXJldHVybiByZXN1bHQ7CiB9CiAK Ky8qCQkJCS0tLS0tLS0tLS0gUEdfUEVSSU9EIENBQ0hFIC0tLS0tLS0tLS0JCQkJICovCisK Ky8qCisgKiBnZXRfcGVyaW9kbmFtZSAtIGdpdmVuIGl0cyBPSUQsIGxvb2sgdXAgYSBwZXJp b2QKKyAqCisgKiBJZiBtaXNzaW5nX29rIGlzIGZhbHNlLCB0aHJvdyBhbiBlcnJvciBpZiB0 aGUgcGVyaW9kIGlzIG5vdCBmb3VuZC4KKyAqIElmIHRydWUsIGp1c3QgcmV0dXJuIEludmFs aWRPaWQuCisgKi8KK2NoYXIgKgorZ2V0X3BlcmlvZG5hbWUoT2lkIHBlcmlvZGlkLCBib29s IG1pc3Npbmdfb2spCit7CisJSGVhcFR1cGxlCXRwOworCisJdHAgPSBTZWFyY2hTeXNDYWNo ZTEoUEVSSU9ET0lELAorCQkJCQkJIE9iamVjdElkR2V0RGF0dW0ocGVyaW9kaWQpKTsKKwlp ZiAoSGVhcFR1cGxlSXNWYWxpZCh0cCkpCisJeworCQlGb3JtX3BnX3BlcmlvZCBwZXJpb2Rf dHVwID0gKEZvcm1fcGdfcGVyaW9kKSBHRVRTVFJVQ1QodHApOworCQljaGFyCSAgICpyZXN1 bHQ7CisKKwkJcmVzdWx0ID0gcHN0cmR1cChOYW1lU3RyKHBlcmlvZF90dXAtPnBlcm5hbWUp KTsKKwkJUmVsZWFzZVN5c0NhY2hlKHRwKTsKKwkJcmV0dXJuIHJlc3VsdDsKKwl9CisKKwlp ZiAoIW1pc3Npbmdfb2spCisJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZv ciBwZXJpb2QgJWQiLAorCQkJIHBlcmlvZGlkKTsKKwlyZXR1cm4gTlVMTDsKK30KKworLyoK KyAqIGdldF9wZXJpb2Rfb2lkIC0gZ2V0cyBpdHMgcmVsYXRpb24gYW5kIG5hbWUsIGxvb2sg dXAgYSBwZXJpb2QKKyAqCisgKiBJZiBtaXNzaW5nX29rIGlzIGZhbHNlLCB0aHJvdyBhbiBl cnJvciBpZiB0aGUgY2FzdCBpcyBub3QgZm91bmQuICBJZgorICogdHJ1ZSwganVzdCByZXR1 cm4gSW52YWxpZE9pZC4KKyAqLworT2lkCitnZXRfcGVyaW9kX29pZChPaWQgcmVsaWQsIGNv bnN0IGNoYXIgKnBlcmlvZG5hbWUsIGJvb2wgbWlzc2luZ19vaykKK3sKKwlIZWFwVHVwbGUJ dHA7CisKKwl0cCA9IFNlYXJjaFN5c0NhY2hlMihQRVJJT0ROQU1FLAorCQkJCQkJIE9iamVj dElkR2V0RGF0dW0ocmVsaWQpLAorCQkJCQkJIFBvaW50ZXJHZXREYXR1bShwZXJpb2RuYW1l KSk7CisKKwlpZiAoSGVhcFR1cGxlSXNWYWxpZCh0cCkpCisJeworCQlGb3JtX3BnX3Blcmlv ZCBwZXJpb2RfdHVwID0gKEZvcm1fcGdfcGVyaW9kKSBHRVRTVFJVQ1QodHApOworCQlPaWQg cmVzdWx0OworCisJCXJlc3VsdCA9IHBlcmlvZF90dXAtPm9pZDsKKwkJUmVsZWFzZVN5c0Nh Y2hlKHRwKTsKKwkJcmV0dXJuIHJlc3VsdDsKKwl9CisKKwlpZiAoIW1pc3Npbmdfb2spCisJ CWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBwZXJpb2QgJXMiLAorCQkJ IHBlcmlvZG5hbWUpOworCXJldHVybiBJbnZhbGlkT2lkOworfQorCiAvKgkJCQktLS0tLS0t LS0tIFBHX0NBU1QgQ0FDSEUgLS0tLS0tLS0tLQkJCQkJICovCiAKIC8qCkBAIC0zNTA4LDYg KzM1NzEsMzAgQEAgZ2V0X211bHRpcmFuZ2VfcmFuZ2UoT2lkIG11bHRpcmFuZ2VPaWQpCiAJ CXJldHVybiBJbnZhbGlkT2lkOwogfQogCitPaWQKK2dldF9zdWJ0eXBlX3JhbmdlKE9pZCBz dWJ0eXBlT2lkKQoreworCUNhdENMaXN0ICpjYXRsaXN0OworCU9pZAlyZXN1bHQgPSBJbnZh bGlkT2lkOworCisJY2F0bGlzdCA9IFNlYXJjaFN5c0NhY2hlTGlzdDEoUkFOR0VTVUJUWVBF LCBPYmplY3RJZEdldERhdHVtKHN1YnR5cGVPaWQpKTsKKworCWlmIChjYXRsaXN0LT5uX21l bWJlcnMgPT0gMSkKKwl7CisJCUhlYXBUdXBsZQl0dXBsZSA9ICZjYXRsaXN0LT5tZW1iZXJz WzBdLT50dXBsZTsKKwkJRm9ybV9wZ19yYW5nZSBybmd0dXAgPSAoRm9ybV9wZ19yYW5nZSkg R0VUU1RSVUNUKHR1cGxlKTsKKwkJcmVzdWx0ID0gcm5ndHVwLT5ybmd0eXBpZDsKKwkJUmVs ZWFzZUNhdENhY2hlTGlzdChjYXRsaXN0KTsKKwl9CisJZWxzZSBpZiAoY2F0bGlzdC0+bl9t ZW1iZXJzID4gMSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0lO REVURVJNSU5BVEVfREFUQVRZUEUpLAorCQkJCSBlcnJtc2coImFtYmlndW91cyByYW5nZSBm b3IgdHlwZSAlcyIsCisJCQkJCQlmb3JtYXRfdHlwZV9iZShzdWJ0eXBlT2lkKSkpKTsKKwor CXJldHVybiByZXN1bHQ7Cit9CisKIC8qCQkJCS0tLS0tLS0tLS0gUEdfSU5ERVggQ0FDSEUg LS0tLS0tLS0tLQkJCQkgKi8KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9w Z19iYWNrdXBfYXJjaGl2ZXIuYyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfYXJjaGl2 ZXIuYwppbmRleCBkOTdlYmFmZjViOC4uMGU4MzU1ZDY1OWUgMTAwNjQ0Ci0tLSBhL3NyYy9i aW4vcGdfZHVtcC9wZ19iYWNrdXBfYXJjaGl2ZXIuYworKysgYi9zcmMvYmluL3BnX2R1bXAv cGdfYmFja3VwX2FyY2hpdmVyLmMKQEAgLTM1MTksNiArMzUxOSw3IEBAIF9nZXRPYmplY3RE ZXNjcmlwdGlvbihQUUV4cEJ1ZmZlciBidWYsIGNvbnN0IFRvY0VudHJ5ICp0ZSkKIAkJCSBz dHJjbXAodHlwZSwgIkRBVEFCQVNFIFBST1BFUlRJRVMiKSA9PSAwIHx8CiAJCQkgc3RyY21w KHR5cGUsICJERUZBVUxUIikgPT0gMCB8fAogCQkJIHN0cmNtcCh0eXBlLCAiRksgQ09OU1RS QUlOVCIpID09IDAgfHwKKwkJCSBzdHJjbXAodHlwZSwgIlBFUklPRCIpID09IDAgfHwKIAkJ CSBzdHJjbXAodHlwZSwgIklOREVYIikgPT0gMCB8fAogCQkJIHN0cmNtcCh0eXBlLCAiUlVM RSIpID09IDAgfHwKIAkJCSBzdHJjbXAodHlwZSwgIlRSSUdHRVIiKSA9PSAwIHx8CmRpZmYg LS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jIGIvc3JjL2Jpbi9wZ19kdW1wL3Bn X2R1bXAuYwppbmRleCAxMGNiZjAyYmViZC4uYzVhYjFiN2FkOGIgMTAwNjQ0Ci0tLSBhL3Ny Yy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAu YwpAQCAtNjYxOSw2ICs2NjE5LDcgQEAgZ2V0VGFibGVzKEFyY2hpdmUgKmZvdXQsIGludCAq bnVtVGFibGVzKQogCWludAkJCWlfcmVsdHlwZTsKIAlpbnQJCQlpX3JlbG93bmVyOwogCWlu dAkJCWlfcmVsY2hlY2tzOworCWludAkJCWlfbnBlcmlvZDsKIAlpbnQJCQlpX3JlbGhhc2lu ZGV4OwogCWludAkJCWlfcmVsaGFzcnVsZXM7CiAJaW50CQkJaV9yZWxwYWdlczsKQEAgLTY2 OTYsNiArNjY5NywxNCBAQCBnZXRUYWJsZXMoQXJjaGl2ZSAqZm91dCwgaW50ICpudW1UYWJs ZXMpCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LAogCQkJCQkJCSAiYy5yZWxoYXNv aWRzLCAiKTsKIAorCS8qIEluIFBHMTcgdXB3YXJkcyB3ZSBoYXZlIFBFUklPRHMuICovCisJ aWYgKGZvdXQtPnJlbW90ZVZlcnNpb24gPj0gMTcwMDAwKQorCQlhcHBlbmRQUUV4cEJ1ZmZl clN0cihxdWVyeSwKKwkJCQkJCQkgIihTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wZXJpb2Qg V0hFUkUgcGVycmVsaWQgPSBjLm9pZCkgQVMgbnBlcmlvZHMsICIpOworCWVsc2UKKwkJYXBw ZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksCisJCQkJCQkJICIwIEFTIG5wZXJpb2RzLCAiKTsK KwogCWlmIChmb3V0LT5yZW1vdGVWZXJzaW9uID49IDkwMzAwKQogCQlhcHBlbmRQUUV4cEJ1 ZmZlclN0cihxdWVyeSwKIAkJCQkJCQkgImMucmVsaXNwb3B1bGF0ZWQsICIpOwpAQCAtNjgz Myw2ICs2ODQyLDcgQEAgZ2V0VGFibGVzKEFyY2hpdmUgKmZvdXQsIGludCAqbnVtVGFibGVz KQogCWlfcmVsdHlwZSA9IFBRZm51bWJlcihyZXMsICJyZWx0eXBlIik7CiAJaV9yZWxvd25l ciA9IFBRZm51bWJlcihyZXMsICJyZWxvd25lciIpOwogCWlfcmVsY2hlY2tzID0gUFFmbnVt YmVyKHJlcywgInJlbGNoZWNrcyIpOworCWlfbnBlcmlvZCA9IFBRZm51bWJlcihyZXMsICJu cGVyaW9kcyIpOwogCWlfcmVsaGFzaW5kZXggPSBQUWZudW1iZXIocmVzLCAicmVsaGFzaW5k ZXgiKTsKIAlpX3JlbGhhc3J1bGVzID0gUFFmbnVtYmVyKHJlcywgInJlbGhhc3J1bGVzIik7 CiAJaV9yZWxwYWdlcyA9IFBRZm51bWJlcihyZXMsICJyZWxwYWdlcyIpOwpAQCAtNjkxNiw2 ICs2OTI2LDcgQEAgZ2V0VGFibGVzKEFyY2hpdmUgKmZvdXQsIGludCAqbnVtVGFibGVzKQog CQl9CiAJCXRibGluZm9baV0ucmVsdGFibGVzcGFjZSA9IHBnX3N0cmR1cChQUWdldHZhbHVl KHJlcywgaSwgaV9yZWx0YWJsZXNwYWNlKSk7CiAJCXRibGluZm9baV0uaGFzb2lkcyA9IChz dHJjbXAoUFFnZXR2YWx1ZShyZXMsIGksIGlfcmVsaGFzb2lkcyksICJ0IikgPT0gMCk7CisJ CXRibGluZm9baV0ubnBlcmlvZCA9IGF0b2koUFFnZXR2YWx1ZShyZXMsIGksIGlfbnBlcmlv ZCkpOwogCQl0YmxpbmZvW2ldLmhhc3RyaWdnZXJzID0gKHN0cmNtcChQUWdldHZhbHVlKHJl cywgaSwgaV9yZWxoYXN0cmlnZ2VycyksICJ0IikgPT0gMCk7CiAJCXRibGluZm9baV0ucmVs cGVyc2lzdGVuY2UgPSAqKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3JlbHBlcnNpc3RlbmNlKSk7 CiAJCXRibGluZm9baV0ucmVsaXNwb3B1bGF0ZWQgPSAoc3RyY21wKFBRZ2V0dmFsdWUocmVz LCBpLCBpX3JlbGlzcG9wdWxhdGVkKSwgInQiKSA9PSAwKTsKQEAgLTg1ODAsNyArODU5MSw3 IEBAIGdldFRyYW5zZm9ybXMoQXJjaGl2ZSAqZm91dCwgaW50ICpudW1UcmFuc2Zvcm1zKQog LyoKICAqIGdldFRhYmxlQXR0cnMgLQogICoJICBmb3IgZWFjaCBpbnRlcmVzdGluZyB0YWJs ZSwgcmVhZCBpbmZvIGFib3V0IGl0cyBhdHRyaWJ1dGVzCi0gKgkgIChuYW1lcywgdHlwZXMs IGRlZmF1bHQgdmFsdWVzLCBDSEVDSyBjb25zdHJhaW50cywgZXRjKQorICoJICAobmFtZXMs IHR5cGVzLCBkZWZhdWx0IHZhbHVlcywgQ0hFQ0sgY29uc3RyYWludHMsIFBFUklPRHMsIGV0 YykKICAqCiAgKgltb2RpZmllcyB0YmxpbmZvCiAgKi8KQEAgLTg2MzMsNiArODY0NCw4IEBA IGdldFRhYmxlQXR0cnMoQXJjaGl2ZSAqZm91dCwgVGFibGVJbmZvICp0YmxpbmZvLCBpbnQg bnVtVGFibGVzKQogCWZvciAoaW50IGkgPSAwOyBpIDwgbnVtVGFibGVzOyBpKyspCiAJewog CQlUYWJsZUluZm8gICp0YmluZm8gPSAmdGJsaW5mb1tpXTsKKwkJaW50CQkJbmR1bXBhYmxl Y2hlY2tzOwkvKiBudW1iZXIgb2YgQ0hFQ0sgY29uc3RyYWludHMgdGhhdCBkbworCQkJCQkJ CQkJCSAgIG5vdCBiZWxvbmcgdG8gYSBwZXJpb2QgKi8KIAogCQkvKiBEb24ndCBib3RoZXIg dG8gY29sbGVjdCBpbmZvIGZvciBzZXF1ZW5jZXMgKi8KIAkJaWYgKHRiaW5mby0+cmVsa2lu ZCA9PSBSRUxLSU5EX1NFUVVFTkNFKQpAQCAtODY0Nyw3ICs4NjYwLDggQEAgZ2V0VGFibGVB dHRycyhBcmNoaXZlICpmb3V0LCBUYWJsZUluZm8gKnRibGluZm8sIGludCBudW1UYWJsZXMp CiAJCQlhcHBlbmRQUUV4cEJ1ZmZlckNoYXIodGJsb2lkcywgJywnKTsKIAkJYXBwZW5kUFFF eHBCdWZmZXIodGJsb2lkcywgIiV1IiwgdGJpbmZvLT5kb2JqLmNhdElkLm9pZCk7CiAKLQkJ aWYgKHRiaW5mby0+bmNoZWNrID4gMCkKKwkJbmR1bXBhYmxlY2hlY2tzID0gdGJpbmZvLT5u Y2hlY2sgLSB0YmluZm8tPm5wZXJpb2Q7CisJCWlmIChuZHVtcGFibGVjaGVja3MgPiAwKQog CQl7CiAJCQkvKiBBbHNvIG1ha2UgYSBsaXN0IG9mIHRoZSBvbmVzIHdpdGggY2hlY2sgY29u c3RyYWludHMgKi8KIAkJCWlmIChjaGVja29pZHMtPmxlbiA+IDEpIC8qIGRvIHdlIGhhdmUg bW9yZSB0aGFuIHRoZSAneyc/ICovCkBAIC05MTg2LDE1ICs5MjAwLDM2IEBAIGdldFRhYmxl QXR0cnMoQXJjaGl2ZSAqZm91dCwgVGFibGVJbmZvICp0YmxpbmZvLCBpbnQgbnVtVGFibGVz KQogCQlwZ19sb2dfaW5mbygiZmluZGluZyB0YWJsZSBjaGVjayBjb25zdHJhaW50cyIpOwog CiAJCXJlc2V0UFFFeHBCdWZmZXIocSk7Ci0JCWFwcGVuZFBRRXhwQnVmZmVyKHEsCi0JCQkJ CQkgICJTRUxFQ1QgYy50YWJsZW9pZCwgYy5vaWQsIGNvbnJlbGlkLCBjb25uYW1lLCAiCi0J CQkJCQkgICJwZ19jYXRhbG9nLnBnX2dldF9jb25zdHJhaW50ZGVmKGMub2lkKSBBUyBjb25z cmMsICIKLQkJCQkJCSAgImNvbmlzbG9jYWwsIGNvbnZhbGlkYXRlZCAiCi0JCQkJCQkgICJG Uk9NIHVubmVzdCgnJXMnOjpwZ19jYXRhbG9nLm9pZFtdKSBBUyBzcmModGJsb2lkKVxuIgot CQkJCQkJICAiSk9JTiBwZ19jYXRhbG9nLnBnX2NvbnN0cmFpbnQgYyBPTiAoc3JjLnRibG9p ZCA9IGMuY29ucmVsaWQpXG4iCi0JCQkJCQkgICJXSEVSRSBjb250eXBlID0gJ2MnICIKLQkJ CQkJCSAgIk9SREVSIEJZIGMuY29ucmVsaWQsIGMuY29ubmFtZSIsCi0JCQkJCQkgIGNoZWNr b2lkcy0+ZGF0YSk7CisJCWlmIChmb3V0LT5yZW1vdGVWZXJzaW9uID49IDE3MDAwMCkKKwkJ eworCQkJLyoKKwkJCSAqIFBFUklPRHMgd2VyZSBhZGRlZCBpbiB2MTcgYW5kIHdlIGRvbid0 IGR1bXAgQ0hFQ0sKKwkJCSAqIGNvbnN0cmFpbnRzIGZvciB0aGVtLgorCQkJICovCisJCQlh cHBlbmRQUUV4cEJ1ZmZlcihxLAorCQkJCQkJCSAgIlNFTEVDVCBjLnRhYmxlb2lkLCBjLm9p ZCwgY29ucmVsaWQsIGNvbm5hbWUsICIKKwkJCQkJCQkgICJwZ19jYXRhbG9nLnBnX2dldF9j b25zdHJhaW50ZGVmKGMub2lkKSBBUyBjb25zcmMsICIKKwkJCQkJCQkgICJjb25pc2xvY2Fs LCBjb252YWxpZGF0ZWQgIgorCQkJCQkJCSAgIkZST00gdW5uZXN0KCclcyc6OnBnX2NhdGFs b2cub2lkW10pIEFTIHNyYyh0YmxvaWQpXG4iCisJCQkJCQkJICAiSk9JTiBwZ19jYXRhbG9n LnBnX2NvbnN0cmFpbnQgYyBPTiAoc3JjLnRibG9pZCA9IGMuY29ucmVsaWQpXG4iCisJCQkJ CQkJICAiV0hFUkUgY29udHlwZSA9ICdjJyAiCisJCQkJCQkJICAiICAgQU5EIE5PVCBFWElT VFMgKFNFTEVDVCBGUk9NIHBnX3BlcmlvZCAiCisJCQkJCQkJICAiICAgICAgICAgICAgICAg ICAgIFdIRVJFIChwZXJyZWxpZCwgcGVyY29uc3RyYWludCkgPSAoY29ucmVsaWQsIGMub2lk KSkgIgorCQkJCQkJCSAgIk9SREVSIEJZIGMuY29ucmVsaWQsIGMuY29ubmFtZSIsCisJCQkJ CQkJICBjaGVja29pZHMtPmRhdGEpOworCQl9CisJCWVsc2UKKwkJeworCQkJYXBwZW5kUFFF eHBCdWZmZXIocSwKKwkJCQkJCQkgICJTRUxFQ1QgYy50YWJsZW9pZCwgYy5vaWQsIGNvbnJl bGlkLCBjb25uYW1lLCAiCisJCQkJCQkJICAicGdfY2F0YWxvZy5wZ19nZXRfY29uc3RyYWlu dGRlZihjLm9pZCkgQVMgY29uc3JjLCAiCisJCQkJCQkJICAiY29uaXNsb2NhbCwgY29udmFs aWRhdGVkICIKKwkJCQkJCQkgICJGUk9NIHVubmVzdCgnJXMnOjpwZ19jYXRhbG9nLm9pZFtd KSBBUyBzcmModGJsb2lkKVxuIgorCQkJCQkJCSAgIkpPSU4gcGdfY2F0YWxvZy5wZ19jb25z dHJhaW50IGMgT04gKHNyYy50YmxvaWQgPSBjLmNvbnJlbGlkKVxuIgorCQkJCQkJCSAgIldI RVJFIGNvbnR5cGUgPSAnYycgIgorCQkJCQkJCSAgIk9SREVSIEJZIGMuY29ucmVsaWQsIGMu Y29ubmFtZSIsCisJCQkJCQkJICBjaGVja29pZHMtPmRhdGEpOworCQl9CiAKIAkJcmVzID0g RXhlY3V0ZVNxbFF1ZXJ5KGZvdXQsIHEtPmRhdGEsIFBHUkVTX1RVUExFU19PSyk7CiAKQEAg LTkyMTYsNiArOTI1MSw3IEBAIGdldFRhYmxlQXR0cnMoQXJjaGl2ZSAqZm91dCwgVGFibGVJ bmZvICp0YmxpbmZvLCBpbnQgbnVtVGFibGVzKQogCQkJT2lkCQkJY29ucmVsaWQgPSBhdG9v aWQoUFFnZXR2YWx1ZShyZXMsIGosIGlfY29ucmVsaWQpKTsKIAkJCVRhYmxlSW5mbyAgKnRi aW5mbyA9IE5VTEw7CiAJCQlpbnQJCQludW1jb25zOworCQkJaW50CQkJbmR1bXBhYmxlY2hl Y2tzOwogCiAJCQkvKiBDb3VudCByb3dzIGZvciB0aGlzIHRhYmxlICovCiAJCQlmb3IgKG51 bWNvbnMgPSAxOyBudW1jb25zIDwgbnVtQ29uc3RycyAtIGo7IG51bWNvbnMrKykKQEAgLTky MzUsMTIgKzkyNzEsMTMgQEAgZ2V0VGFibGVBdHRycyhBcmNoaXZlICpmb3V0LCBUYWJsZUlu Zm8gKnRibGluZm8sIGludCBudW1UYWJsZXMpCiAJCQlpZiAoY3VydGJsaW5keCA+PSBudW1U YWJsZXMpCiAJCQkJcGdfZmF0YWwoInVucmVjb2duaXplZCB0YWJsZSBPSUQgJXUiLCBjb25y ZWxpZCk7CiAKLQkJCWlmIChudW1jb25zICE9IHRiaW5mby0+bmNoZWNrKQorCQkJbmR1bXBh YmxlY2hlY2tzID0gdGJpbmZvLT5uY2hlY2sgLSB0YmluZm8tPm5wZXJpb2Q7CisJCQlpZiAo bnVtY29ucyAhPSBuZHVtcGFibGVjaGVja3MpCiAJCQl7CiAJCQkJcGdfbG9nX2Vycm9yKG5n ZXR0ZXh0KCJleHBlY3RlZCAlZCBjaGVjayBjb25zdHJhaW50IG9uIHRhYmxlIFwiJXNcIiBi dXQgZm91bmQgJWQiLAogCQkJCQkJCQkJICAiZXhwZWN0ZWQgJWQgY2hlY2sgY29uc3RyYWlu dHMgb24gdGFibGUgXCIlc1wiIGJ1dCBmb3VuZCAlZCIsCi0JCQkJCQkJCQkgIHRiaW5mby0+ bmNoZWNrKSwKLQkJCQkJCQkgdGJpbmZvLT5uY2hlY2ssIHRiaW5mby0+ZG9iai5uYW1lLCBu dW1jb25zKTsKKwkJCQkJCQkJCSAgbmR1bXBhYmxlY2hlY2tzKSwKKwkJCQkJCQkgbmR1bXBh YmxlY2hlY2tzLCB0YmluZm8tPmRvYmoubmFtZSwgbnVtY29ucyk7CiAJCQkJcGdfbG9nX2Vy cm9yX2hpbnQoIlRoZSBzeXN0ZW0gY2F0YWxvZ3MgbWlnaHQgYmUgY29ycnVwdGVkLiIpOwog CQkJCWV4aXRfbmljZWx5KDEpOwogCQkJfQpAQCAtOTI5OSw2ICs5MzM2LDgwIEBAIGdldFRh YmxlQXR0cnMoQXJjaGl2ZSAqZm91dCwgVGFibGVJbmZvICp0YmxpbmZvLCBpbnQgbnVtVGFi bGVzKQogCQlQUWNsZWFyKHJlcyk7CiAJfQogCisJZm9yIChpbnQgaSA9IDA7IGkgPCBudW1U YWJsZXM7IGkrKykKKwl7CisJCVRhYmxlSW5mbyAgKnRiaW5mbyA9ICZ0YmxpbmZvW2ldOwor CisJCS8qCisJCSAqIEdldCBpbmZvIGFib3V0IFBFUklPRCBkZWZpbml0aW9ucworCQkgKi8K KwkJaWYgKHRiaW5mby0+bnBlcmlvZCA+IDApCisJCXsKKwkJCVBlcmlvZEluZm8gKnBlcmlv ZHM7CisJCQlpbnQJCQludW1QZXJpb2RzOworCQkJaW50CQkJajsKKworCQkJLyogV2Ugc2hv dWxkbid0IGhhdmUgYW55IHBlcmlvZHMgYmVmb3JlIHYxNyAqLworCQkJQXNzZXJ0KGZvdXQt PnJlbW90ZVZlcnNpb24gPj0gMTcwMDAwKTsKKworCQkJcGdfbG9nX2luZm8oImZpbmRpbmcg cGVyaW9kcyBmb3IgdGFibGUgXCIlcy4lc1wiIiwKKwkJCQkJCXRiaW5mby0+ZG9iai5uYW1l c3BhY2UtPmRvYmoubmFtZSwKKwkJCQkJCXRiaW5mby0+ZG9iai5uYW1lKTsKKworCQkJcmVz ZXRQUUV4cEJ1ZmZlcihxKTsKKwkJCWFwcGVuZFBRRXhwQnVmZmVyKHEsCisJCQkJIlNFTEVD VCBwLnRhYmxlb2lkLCBwLm9pZCwgcC5wZXJuYW1lLCAiCisJCQkJIiAgICAgICBzYS5hdHRu YW1lIEFTIHBlcnN0YXJ0LCBlYS5hdHRuYW1lIEFTIHBlcmVuZCwgIgorCQkJCSIgICAgICAg ci50eXBuYW1lIEFTIHJuZ3R5cGUsICIKKwkJCQkiICAgICAgIGMuY29ubmFtZSBBUyBjb25u YW1lICIKKwkJCQkiRlJPTSBwZ19jYXRhbG9nLnBnX3BlcmlvZCBBUyBwICIKKwkJCQkiSk9J TiBwZ19jYXRhbG9nLnBnX2F0dHJpYnV0ZSBBUyBzYSBPTiAoc2EuYXR0cmVsaWQsIHNhLmF0 dG51bSkgPSAocC5wZXJyZWxpZCwgcC5wZXJzdGFydCkgIgorCQkJCSJKT0lOIHBnX2NhdGFs b2cucGdfYXR0cmlidXRlIEFTIGVhIE9OIChlYS5hdHRyZWxpZCwgZWEuYXR0bnVtKSA9IChw LnBlcnJlbGlkLCBwLnBlcmVuZCkgIgorCQkJCSJKT0lOIHBnX2NhdGFsb2cucGdfYXR0cmli dXRlIEFTIHJhIE9OIChyYS5hdHRyZWxpZCwgcmEuYXR0bnVtKSA9IChwLnBlcnJlbGlkLCBw LnBlcnJhbmdlKSAiCisJCQkJIkpPSU4gcGdfY2F0YWxvZy5wZ190eXBlIEFTIHIgT04gci5v aWQgPSByYS5hdHR0eXBpZCAiCisJCQkJIkpPSU4gcGdfY2F0YWxvZy5wZ19jb25zdHJhaW50 IEFTIGMgT04gYy5vaWQgPSBwLnBlcmNvbnN0cmFpbnQgIgorCQkJCSJXSEVSRSBwLnBlcnJl bGlkID0gJyV1Jzo6cGdfY2F0YWxvZy5vaWQgIgorCQkJCSJPUkRFUiBCWSBwLnBlcm5hbWUi LAorCQkJCXRiaW5mby0+ZG9iai5jYXRJZC5vaWQpOworCisJCQlyZXMgPSBFeGVjdXRlU3Fs UXVlcnkoZm91dCwgcS0+ZGF0YSwgUEdSRVNfVFVQTEVTX09LKTsKKworCQkJLyoKKwkJCSAq IElmIHdlIGRpZG4ndCBnZXQgdGhlIG51bWJlciBvZiByb3dzIHdlIHRob3VnaHQgd2Ugd2Vy ZSBnb2luZyB0bywKKwkJCSAqIHRoZW4gdGhvc2UgSk9JTnMgZGlkbid0IHdvcmsuCisJCQkg Ki8KKwkJCW51bVBlcmlvZHMgPSBQUW50dXBsZXMocmVzKTsKKwkJCWlmIChudW1QZXJpb2Rz ICE9IHRiaW5mby0+bnBlcmlvZCkKKwkJCXsKKwkJCQlwZ19sb2dfaW5mbyhuZ2V0dGV4dCgi ZXhwZWN0ZWQgJWQgcGVyaW9kIG9uIHRhYmxlIFwiJXNcIiBidXQgZm91bmQgJWQiLAorCQkJ CQkJCQkJICJleHBlY3RlZCAlZCBwZXJpb2RzIG9uIHRhYmxlIFwiJXNcIiBidXQgZm91bmQg JWQiLAorCQkJCQkJCQkJIHRiaW5mby0+bnBlcmlvZCksCisJCQkJCQkJdGJpbmZvLT5ucGVy aW9kLCB0YmluZm8tPmRvYmoubmFtZSwgbnVtUGVyaW9kcyk7CisJCQkJcGdfbG9nX2luZm8o IihUaGUgc3lzdGVtIGNhdGFsb2dzIG1pZ2h0IGJlIGNvcnJ1cHRlZC4pIik7CisJCQkJZXhp dF9uaWNlbHkoMSk7CisJCQl9CisKKwkJCXBlcmlvZHMgPSAoUGVyaW9kSW5mbyAqKSBwZ19t YWxsb2MobnVtUGVyaW9kcyAqIHNpemVvZihQZXJpb2RJbmZvKSk7CisJCQl0YmluZm8tPnBl cmlvZHMgPSBwZXJpb2RzOworCisJCQlmb3IgKGogPSAwOyBqIDwgbnVtUGVyaW9kczsgaisr KQorCQkJeworCQkJCXBlcmlvZHNbal0uZG9iai5vYmpUeXBlID0gRE9fUEVSSU9EOworCQkJ CXBlcmlvZHNbal0uZG9iai5jYXRJZC50YWJsZW9pZCA9IGF0b29pZChQUWdldHZhbHVlKHJl cywgaiwgMCkpOworCQkJCXBlcmlvZHNbal0uZG9iai5jYXRJZC5vaWQgPSBhdG9vaWQoUFFn ZXR2YWx1ZShyZXMsIGosIDEpKTsKKwkJCQlBc3NpZ25EdW1wSWQoJnBlcmlvZHNbal0uZG9i aik7CisJCQkJcGVyaW9kc1tqXS5kb2JqLm5hbWUgPSBwZ19zdHJkdXAoUFFnZXR2YWx1ZShy ZXMsIGosIDIpKTsKKwkJCQlwZXJpb2RzW2pdLmRvYmoubmFtZXNwYWNlID0gdGJpbmZvLT5k b2JqLm5hbWVzcGFjZTsKKwkJCQlwZXJpb2RzW2pdLnBlcnRhYmxlID0gdGJpbmZvOworCQkJ CXBlcmlvZHNbal0ucGVyc3RhcnQgPSBwZ19zdHJkdXAoUFFnZXR2YWx1ZShyZXMsIGosIDMp KTsKKwkJCQlwZXJpb2RzW2pdLnBlcmVuZCA9IHBnX3N0cmR1cChQUWdldHZhbHVlKHJlcywg aiwgNCkpOworCQkJCXBlcmlvZHNbal0ucm5ndHlwZSA9IHBnX3N0cmR1cChQUWdldHZhbHVl KHJlcywgaiwgNSkpOworCQkJCXBlcmlvZHNbal0uY29ubmFtZSA9IHBnX3N0cmR1cChQUWdl dHZhbHVlKHJlcywgaiwgNikpOworCQkJfQorCQkJUFFjbGVhcihyZXMpOworCQl9CisJfQor CiAJZGVzdHJveVBRRXhwQnVmZmVyKHEpOwogCWRlc3Ryb3lQUUV4cEJ1ZmZlcih0YmxvaWRz KTsKIAlkZXN0cm95UFFFeHBCdWZmZXIoY2hlY2tvaWRzKTsKQEAgLTEwNTY5LDYgKzEwNjgw LDggQEAgZHVtcER1bXBhYmxlT2JqZWN0KEFyY2hpdmUgKmZvdXQsIER1bXBhYmxlT2JqZWN0 ICpkb2JqKQogCQljYXNlIERPX0ZLX0NPTlNUUkFJTlQ6CiAJCQlkdW1wQ29uc3RyYWludChm b3V0LCAoY29uc3QgQ29uc3RyYWludEluZm8gKikgZG9iaik7CiAJCQlicmVhazsKKwkJY2Fz ZSBET19QRVJJT0Q6CisJCQlicmVhazsKIAkJY2FzZSBET19QUk9DTEFORzoKIAkJCWR1bXBQ cm9jTGFuZyhmb3V0LCAoY29uc3QgUHJvY0xhbmdJbmZvICopIGRvYmopOwogCQkJYnJlYWs7 CkBAIC0xNjEwNyw2ICsxNjIyMCwzMyBAQCBkdW1wVGFibGVTY2hlbWEoQXJjaGl2ZSAqZm91 dCwgY29uc3QgVGFibGVJbmZvICp0YmluZm8pCiAJCQkJfQogCQkJfQogCisJCQkvKgorCQkJ ICogQWRkIG5vbi1pbmhlcml0ZWQgUEVSSU9EIGRlZmluaXRpb25zLCBpZiBhbnkuCisJCQkg Ki8KKwkJCWZvciAoaiA9IDA7IGogPCB0YmluZm8tPm5wZXJpb2Q7IGorKykKKwkJCXsKKwkJ CQlQZXJpb2RJbmZvICpwZXJpb2QgPSAmKHRiaW5mby0+cGVyaW9kc1tqXSk7CisKKwkJCQlj aGFyCSAgICpuYW1lID0gcGdfc3RyZHVwKGZtdElkKHBlcmlvZC0+ZG9iai5uYW1lKSk7CisJ CQkJY2hhcgkgICAqc3RhcnQgPSBwZ19zdHJkdXAoZm10SWQocGVyaW9kLT5wZXJzdGFydCkp OworCQkJCWNoYXIJICAgKmVuZCA9IHBnX3N0cmR1cChmbXRJZChwZXJpb2QtPnBlcmVuZCkp OworCQkJCWNoYXIJICAgKnJuZ3R5cGUgPSBwZ19zdHJkdXAoZm10SWQocGVyaW9kLT5ybmd0 eXBlKSk7CisJCQkJY2hhcgkgICAqY29ubmFtZSA9IHBnX3N0cmR1cChmbXRJZChwZXJpb2Qt PmNvbm5hbWUpKTsKKworCQkJCWlmIChhY3R1YWxfYXR0cyA9PSAwKQorCQkJCQlhcHBlbmRQ UUV4cEJ1ZmZlclN0cihxLCAiIChcbiAgICAiKTsKKwkJCQllbHNlCisJCQkJCWFwcGVuZFBR RXhwQnVmZmVyU3RyKHEsICIsXG4gICAgIik7CisKKwkJCQkvKiBBbHdheXMgc2F5IGNvbGV4 aXN0cyBzbyB3ZSBjYW4ganVzdCBwcmludCB0aGUgR0VORVJBVEVEIGNvbHVtbiAqLworCQkJ CWFwcGVuZFBRRXhwQnVmZmVyKHEsICJQRVJJT0QgRk9SICVzICglcywgJXMpICIKKwkJCQkJ CSJXSVRIIChyYW5nZXR5cGUgPSAlcywgY2hlY2tfY29uc3RyYWludF9uYW1lID0gJXMsIGNv bGV4aXN0cyA9IHRydWUpIiwKKwkJCQkJCQkJICBuYW1lLCBzdGFydCwgZW5kLAorCQkJCQkJ CQkgIHJuZ3R5cGUsIGNvbm5hbWUpOworCisJCQkJYWN0dWFsX2F0dHMrKzsKKwkJCX0KKwog CQkJLyoKIAkJCSAqIEFkZCBub24taW5oZXJpdGVkIENIRUNLIGNvbnN0cmFpbnRzLCBpZiBh bnkuCiAJCQkgKgpAQCAtMTYxMTUsNyArMTYyNTUsNyBAQCBkdW1wVGFibGVTY2hlbWEoQXJj aGl2ZSAqZm91dCwgY29uc3QgVGFibGVJbmZvICp0YmluZm8pCiAJCQkgKiBQQVJUSVRJT04g dGhhdCB3ZSdsbCBlbWl0IGxhdGVyIGV4cGVjdHMgdGhlIGNvbnN0cmFpbnQgdG8gYmUKIAkJ CSAqIHRoZXJlLiAgKE5vIG5lZWQgdG8gZml4IGNvbmlzbG9jYWw6IEFUVEFDSCBQQVJUSVRJ T04gZG9lcyB0aGF0KQogCQkJICovCi0JCQlmb3IgKGogPSAwOyBqIDwgdGJpbmZvLT5uY2hl Y2s7IGorKykKKwkJCWZvciAoaiA9IDA7IGogPCB0YmluZm8tPm5jaGVjayAtIHRiaW5mby0+ bnBlcmlvZDsgaisrKQogCQkJewogCQkJCUNvbnN0cmFpbnRJbmZvICpjb25zdHIgPSAmKHRi aW5mby0+Y2hlY2tleHByc1tqXSk7CiAKQEAgLTE2MzMzLDcgKzE2NDczLDcgQEAgZHVtcFRh YmxlU2NoZW1hKEFyY2hpdmUgKmZvdXQsIGNvbnN0IFRhYmxlSW5mbyAqdGJpbmZvKQogCQkJ ICogRm9yIHBhcnRpdGlvbnMsIHRoZXkgd2VyZSBhbHJlYWR5IGR1bXBlZCwgYW5kIGNvbmlz bG9jYWwKIAkJCSAqIGRvZXNuJ3QgbmVlZCBmaXhpbmcuCiAJCQkgKi8KLQkJCWZvciAoayA9 IDA7IGsgPCB0YmluZm8tPm5jaGVjazsgaysrKQorCQkJZm9yIChrID0gMDsgayA8IHRiaW5m by0+bmNoZWNrIC0gdGJpbmZvLT5ucGVyaW9kOyBrKyspCiAJCQl7CiAJCQkJQ29uc3RyYWlu dEluZm8gKmNvbnN0ciA9ICYodGJpbmZvLT5jaGVja2V4cHJzW2tdKTsKIApAQCAtMTY2MzUs NyArMTY3NzUsNyBAQCBkdW1wVGFibGVTY2hlbWEoQXJjaGl2ZSAqZm91dCwgY29uc3QgVGFi bGVJbmZvICp0YmluZm8pCiAJCWR1bXBUYWJsZVNlY0xhYmVsKGZvdXQsIHRiaW5mbywgcmVs dHlwZW5hbWUpOwogCiAJLyogRHVtcCBjb21tZW50cyBvbiBpbmxpbmVkIHRhYmxlIGNvbnN0 cmFpbnRzICovCi0JZm9yIChqID0gMDsgaiA8IHRiaW5mby0+bmNoZWNrOyBqKyspCisJZm9y IChqID0gMDsgaiA8IHRiaW5mby0+bmNoZWNrIC0gdGJpbmZvLT5ucGVyaW9kOyBqKyspCiAJ ewogCQlDb25zdHJhaW50SW5mbyAqY29uc3RyID0gJih0YmluZm8tPmNoZWNrZXhwcnNbal0p OwogCkBAIC0xODYwNCw2ICsxODc0NCw3IEBAIGFkZEJvdW5kYXJ5RGVwZW5kZW5jaWVzKER1 bXBhYmxlT2JqZWN0ICoqZG9ianMsIGludCBudW1PYmpzLAogCQkJY2FzZSBET19UUklHR0VS OgogCQkJY2FzZSBET19FVkVOVF9UUklHR0VSOgogCQkJY2FzZSBET19ERUZBVUxUX0FDTDoK KwkJCWNhc2UgRE9fUEVSSU9EOgogCQkJY2FzZSBET19QT0xJQ1k6CiAJCQljYXNlIERPX1BV QkxJQ0FUSU9OOgogCQkJY2FzZSBET19QVUJMSUNBVElPTl9SRUw6CmRpZmYgLS1naXQgYS9z cmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaApp bmRleCBmNDllYjg4ZGNiZi4uMTgzZjc3NjcxZDYgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdf ZHVtcC9wZ19kdW1wLmgKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaApAQCAtNTks NiArNTksNyBAQCB0eXBlZGVmIGVudW0KIAlET19UUklHR0VSLAogCURPX0NPTlNUUkFJTlQs CiAJRE9fRktfQ09OU1RSQUlOVCwJCQkvKiBzZWUgbm90ZSBmb3IgQ29uc3RyYWludEluZm8g Ki8KKwlET19QRVJJT0QsCiAJRE9fUFJPQ0xBTkcsCiAJRE9fQ0FTVCwKIAlET19UQUJMRV9E QVRBLApAQCAtMzAwLDEyICszMDEsMTQgQEAgdHlwZWRlZiBzdHJ1Y3QgX3RhYmxlSW5mbwog CWJvb2wJCXJvd3NlYzsJCQkvKiBpcyByb3cgc2VjdXJpdHkgZW5hYmxlZD8gKi8KIAlib29s CQlmb3JjZXJvd3NlYzsJLyogaXMgcm93IHNlY3VyaXR5IGZvcmNlZD8gKi8KIAlib29sCQlo YXNvaWRzOwkJLyogZG9lcyBpdCBoYXZlIE9JRHM/ICovCisJYm9vbAkJaGFzcGVyaW9kczsJ CS8qIGRvZXMgaXQgaGF2ZSBhbnkgcGVyaW9kcz8gKi8KIAl1aW50MzIJCWZyb3plbnhpZDsJ CS8qIHRhYmxlJ3MgcmVsZnJvemVueGlkICovCiAJdWludDMyCQltaW5teGlkOwkJLyogdGFi bGUncyByZWxtaW5teGlkICovCiAJT2lkCQkJdG9hc3Rfb2lkOwkJLyogdG9hc3QgdGFibGUn cyBPSUQsIG9yIDAgaWYgbm9uZSAqLwogCXVpbnQzMgkJdG9hc3RfZnJvemVueGlkOwkvKiB0 b2FzdCB0YWJsZSdzIHJlbGZyb3plbnhpZCwgaWYgYW55ICovCiAJdWludDMyCQl0b2FzdF9t aW5teGlkOwkvKiB0b2FzdCB0YWJsZSdzIHJlbG1pbm14aWQgKi8KIAlpbnQJCQluY2hlY2s7 CQkJLyogIyBvZiBDSEVDSyBleHByZXNzaW9ucyAqLworCWludAkJCW5wZXJpb2Q7CQkvKiAj IG9mIFBFUklPRCBkZWZpbml0aW9ucyAqLwogCU9pZAkJCXJlbHR5cGU7CQkvKiBPSUQgb2Yg dGFibGUncyBjb21wb3NpdGUgdHlwZSwgaWYgYW55ICovCiAJT2lkCQkJcmVsb2Z0eXBlOwkJ LyogdW5kZXJseWluZyB0eXBlIGZvciB0eXBlZCB0YWJsZSAqLwogCU9pZAkJCWZvcmVpZ25f c2VydmVyOyAvKiBmb3JlaWduIHNlcnZlciBvaWQsIGlmIGFwcGxpY2FibGUgKi8KQEAgLTMz Niw2ICszMzksNyBAQCB0eXBlZGVmIHN0cnVjdCBfdGFibGVJbmZvCiAJY2hhcgkgICAqYXR0 c3RvcmFnZTsJCS8qIGF0dHJpYnV0ZSBzdG9yYWdlIHNjaGVtZSAqLwogCWNoYXIJICAgKnR5 cHN0b3JhZ2U7CQkvKiB0eXBlIHN0b3JhZ2Ugc2NoZW1lICovCiAJYm9vbAkgICAqYXR0aXNk cm9wcGVkOwkvKiB0cnVlIGlmIGF0dHIgaXMgZHJvcHBlZDsgZG9uJ3QgZHVtcCBpdCAqLwor CWJvb2wJICAgKmF0dGlzcGVyaW9kOwkvKiB0cnVlIGlmIGF0dHIgaXMgYSBQRVJJT0Q7IGRv bid0IGR1bXAgaXQgKi8KIAljaGFyCSAgICphdHRpZGVudGl0eTsKIAljaGFyCSAgICphdHRn ZW5lcmF0ZWQ7CiAJaW50CQkgICAqYXR0bGVuOwkJCS8qIGF0dHJpYnV0ZSBsZW5ndGgsIHVz ZWQgYnkgYmluYXJ5X3VwZ3JhZGUgKi8KQEAgLTM1NSw2ICszNTksNyBAQCB0eXBlZGVmIHN0 cnVjdCBfdGFibGVJbmZvCiAJYm9vbAkgICAqbm90bnVsbF9pbmg7CS8qIHRydWUgaWYgTk9U IE5VTEwgaGFzIG5vIGxvY2FsIGRlZmluaXRpb24gKi8KIAlzdHJ1Y3QgX2F0dHJEZWZJbmZv ICoqYXR0cmRlZnM7IC8qIERFRkFVTFQgZXhwcmVzc2lvbnMgKi8KIAlzdHJ1Y3QgX2NvbnN0 cmFpbnRJbmZvICpjaGVja2V4cHJzOyAvKiBDSEVDSyBjb25zdHJhaW50cyAqLworCXN0cnVj dCBfcGVyaW9kSW5mbyAqcGVyaW9kczsJLyogUEVSSU9EIGRlZmluaXRpb25zICovCiAJYm9v bAkJbmVlZHNfb3ZlcnJpZGU7IC8qIGhhcyBHRU5FUkFURUQgQUxXQVlTIEFTIElERU5USVRZ ICovCiAJY2hhcgkgICAqYW1uYW1lOwkJCS8qIHJlbGF0aW9uIGFjY2VzcyBtZXRob2QgKi8K IApAQCAtNDg1LDYgKzQ5MCwxNiBAQCB0eXBlZGVmIHN0cnVjdCBfY29uc3RyYWludEluZm8K IAlib29sCQlzZXBhcmF0ZTsJCS8qIHRydWUgaWYgbXVzdCBkdW1wIGFzIHNlcGFyYXRlIGl0 ZW0gKi8KIH0gQ29uc3RyYWludEluZm87CiAKK3R5cGVkZWYgc3RydWN0IF9wZXJpb2RJbmZv Cit7CisJRHVtcGFibGVPYmplY3QgZG9iajsKKwlUYWJsZUluZm8gICpwZXJ0YWJsZTsKKwlj aGFyCSAgICpwZXJzdGFydDsJCS8qIHRoZSBuYW1lIG9mIHRoZSBzdGFydCBjb2x1bW4gKi8K KwljaGFyCSAgICpwZXJlbmQ7CQkJLyogdGhlIG5hbWUgb2YgdGhlIGVuZCBjb2x1bW4gKi8K KwljaGFyCSAgICpybmd0eXBlOwkJLyogdGhlIG5hbWUgb2YgdGhlIHJhbmdlIHR5cGUgKi8K KwljaGFyCSAgICpjb25uYW1lOwkJLyogdGhlIG5hbWUgb2YgdGhlIENIRUNLIGNvbnN0cmFp bnQgKi8KK30gUGVyaW9kSW5mbzsKKwogdHlwZWRlZiBzdHJ1Y3QgX3Byb2NMYW5nSW5mbwog ewogCUR1bXBhYmxlT2JqZWN0IGRvYmo7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAv cGdfZHVtcF9zb3J0LmMgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcF9zb3J0LmMKaW5kZXgg NGNiNzU0Y2FhNTUuLjU2MDJjZGE0ZDVjIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAv cGdfZHVtcF9zb3J0LmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXBfc29ydC5jCkBA IC04Niw2ICs4Niw3IEBAIGVudW0gZGJPYmplY3RUeXBlUHJpb3JpdGllcwogCVBSSU9fQ09O U1RSQUlOVCwKIAlQUklPX0lOREVYLAogCVBSSU9fSU5ERVhfQVRUQUNILAorCVBSSU9fUEVS SU9ELAogCVBSSU9fU1RBVFNFWFQsCiAJUFJJT19SVUxFLAogCVBSSU9fVFJJR0dFUiwKQEAg LTEyMSw2ICsxMjIsNyBAQCBzdGF0aWMgY29uc3QgaW50IGRiT2JqZWN0VHlwZVByaW9yaXR5 W10gPQogCVtET19BVFRSREVGXSA9IFBSSU9fQVRUUkRFRiwKIAlbRE9fSU5ERVhdID0gUFJJ T19JTkRFWCwKIAlbRE9fSU5ERVhfQVRUQUNIXSA9IFBSSU9fSU5ERVhfQVRUQUNILAorCVtE T19QRVJJT0RdID0gUFJJT19QRVJJT0QsCiAJW0RPX1NUQVRTRVhUXSA9IFBSSU9fU1RBVFNF WFQsCiAJW0RPX1JVTEVdID0gUFJJT19SVUxFLAogCVtET19UUklHR0VSXSA9IFBSSU9fVFJJ R0dFUiwKQEAgLTEzNzEsNiArMTM3MywxMSBAQCBkZXNjcmliZUR1bXBhYmxlT2JqZWN0KER1 bXBhYmxlT2JqZWN0ICpvYmosIGNoYXIgKmJ1ZiwgaW50IGJ1ZnNpemUpCiAJCQkJCSAiRksg Q09OU1RSQUlOVCAlcyAgKElEICVkIE9JRCAldSkiLAogCQkJCQkgb2JqLT5uYW1lLCBvYmot PmR1bXBJZCwgb2JqLT5jYXRJZC5vaWQpOwogCQkJcmV0dXJuOworCQljYXNlIERPX1BFUklP RDoKKwkJCXNucHJpbnRmKGJ1ZiwgYnVmc2l6ZSwKKwkJCQkJICJQRVJJT0QgJXMgIChJRCAl ZCBPSUQgJXUpIiwKKwkJCQkJIG9iai0+bmFtZSwgb2JqLT5kdW1wSWQsIG9iai0+Y2F0SWQu b2lkKTsKKwkJCXJldHVybjsKIAkJY2FzZSBET19QUk9DTEFORzoKIAkJCXNucHJpbnRmKGJ1 ZiwgYnVmc2l6ZSwKIAkJCQkJICJQUk9DRURVUkFMIExBTkdVQUdFICVzICAoSUQgJWQgT0lE ICV1KSIsCmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYyBiL3NyYy9iaW4v cHNxbC9kZXNjcmliZS5jCmluZGV4IGMwNWJlZmJiNmYyLi5mZDcxMmU1NzlmZSAxMDA2NDQK LS0tIGEvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKKysrIGIvc3JjL2Jpbi9wc3FsL2Rlc2Ny aWJlLmMKQEAgLTE5NDMsNiArMTk0Myw4IEBAIGRlc2NyaWJlT25lVGFibGVEZXRhaWxzKGNv bnN0IGNoYXIgKnNjaGVtYW5hbWUsCiAKIAlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmYnVmLCAi XG5GUk9NIHBnX2NhdGFsb2cucGdfYXR0cmlidXRlIGEiKTsKIAlhcHBlbmRQUUV4cEJ1ZmZl cigmYnVmLCAiXG5XSEVSRSBhLmF0dHJlbGlkID0gJyVzJyBBTkQgYS5hdHRudW0gPiAwIEFO RCBOT1QgYS5hdHRpc2Ryb3BwZWQiLCBvaWQpOworCWlmIChwc2V0LnN2ZXJzaW9uID49IDE3 MDAwMCkKKwkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwgIlxuQU5EIE5PVCBFWElTVFMgKFNF TEVDVCAxIEZST00gcGdfY2F0YWxvZy5wZ19wZXJpb2QgcCBXSEVSRSBwLnBlcnJlbGlkID0g YS5hdHRyZWxpZCBBTkQgcC5wZXJyYW5nZSA9IGEuYXR0bnVtKSIpOwogCWFwcGVuZFBRRXhw QnVmZmVyU3RyKCZidWYsICJcbk9SREVSIEJZIGEuYXR0bnVtOyIpOwogCiAJcmVzID0gUFNR TGV4ZWMoYnVmLmRhdGEpOwpAQCAtMjM2NSw2ICsyMzY3LDQwIEBAIGRlc2NyaWJlT25lVGFi bGVEZXRhaWxzKGNvbnN0IGNoYXIgKnNjaGVtYW5hbWUsCiAJCVBHcmVzdWx0ICAgKnJlc3Vs dCA9IE5VTEw7CiAJCWludAkJCXR1cGxlcyA9IDA7CiAKKwkJLyogcHJpbnQgcGVyaW9kcyAq LworCQlpZiAocHNldC5zdmVyc2lvbiA+PSAxNzAwMDApCisJCXsKKwkJCXByaW50ZlBRRXhw QnVmZmVyKCZidWYsCisJCQkJCQkJICAiU0VMRUNUIHF1b3RlX2lkZW50KHAucGVybmFtZSks IHF1b3RlX2lkZW50KHMuYXR0bmFtZSkgQVMgc3RhcnRhdHQsIHF1b3RlX2lkZW50KGUuYXR0 bmFtZSkgQVMgZW5kYXR0XG4iCisJCQkJCQkJICAiRlJPTSBwZ19wZXJpb2QgQVMgcFxuIgor CQkJCQkJCSAgIkpPSU4gcGdfYXR0cmlidXRlIEFTIHMgT04gKHMuYXR0cmVsaWQsIHMuYXR0 bnVtKSA9IChwLnBlcnJlbGlkLCBwLnBlcnN0YXJ0KVxuIgorCQkJCQkJCSAgIkpPSU4gcGdf YXR0cmlidXRlIEFTIGUgT04gKGUuYXR0cmVsaWQsIGUuYXR0bnVtKSA9IChwLnBlcnJlbGlk LCBwLnBlcmVuZClcbiIKKwkJCQkJCQkgICJXSEVSRSBwLnBlcnJlbGlkID0gJyVzJ1xuIgor CQkJCQkJCSAgIk9SREVSIEJZIDE7IiwKKwkJCQkJCQkgIG9pZCk7CisJCQlyZXN1bHQgPSBQ U1FMZXhlYyhidWYuZGF0YSk7CisJCQlpZiAoIXJlc3VsdCkKKwkJCQlnb3RvIGVycm9yX3Jl dHVybjsKKwkJCWVsc2UKKwkJCQl0dXBsZXMgPSBQUW50dXBsZXMocmVzdWx0KTsKKworCQkJ aWYgKHR1cGxlcyA+IDApCisJCQl7CisJCQkJcHJpbnRUYWJsZUFkZEZvb3RlcigmY29udCwg XygiUGVyaW9kczoiKSk7CisJCQkJZm9yIChpID0gMDsgaSA8IHR1cGxlczsgaSsrKQorCQkJ CXsKKwkJCQkJLyogdW50cmFuc2xhdGVkIGNvbnN0cmFpbnQgbmFtZSBhbmQgZGVmICovCisJ CQkJCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsICIgICAgJXMgKCVzLCAlcykiLAorCQkJCQkJ CQkJICBQUWdldHZhbHVlKHJlc3VsdCwgaSwgMCksCisJCQkJCQkJCQkgIFBRZ2V0dmFsdWUo cmVzdWx0LCBpLCAxKSwKKwkJCQkJCQkJCSAgUFFnZXR2YWx1ZShyZXN1bHQsIGksIDIpKTsK KworCQkJCQlwcmludFRhYmxlQWRkRm9vdGVyKCZjb250LCBidWYuZGF0YSk7CisJCQkJfQor CQkJfQorCQkJUFFjbGVhcihyZXN1bHQpOworCQl9CisKIAkJLyogcHJpbnQgaW5kZXhlcyAq LwogCQlpZiAodGFibGVpbmZvLmhhc2luZGV4KQogCQl7CmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9jYXRhbG9nL2RlcGVuZGVuY3kuaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvZGVwZW5k ZW5jeS5oCmluZGV4IDQzNmIwODE3MzhiLi40NTYyM2U4NmE0NSAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvY2F0YWxvZy9kZXBlbmRlbmN5LmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxv Zy9kZXBlbmRlbmN5LmgKQEAgLTkzLDYgKzkzLDcgQEAgdHlwZWRlZiBlbnVtIE9iamVjdENs YXNzCiAJT0NMQVNTX0NBU1QsCQkJCS8qIHBnX2Nhc3QgKi8KIAlPQ0xBU1NfQ09MTEFUSU9O LAkJCS8qIHBnX2NvbGxhdGlvbiAqLwogCU9DTEFTU19DT05TVFJBSU5ULAkJCS8qIHBnX2Nv bnN0cmFpbnQgKi8KKwlPQ0xBU1NfUEVSSU9ELAkJCQkvKiBwZ19wZXJpb2QgKi8KIAlPQ0xB U1NfQ09OVkVSU0lPTiwJCQkvKiBwZ19jb252ZXJzaW9uICovCiAJT0NMQVNTX0RFRkFVTFQs CQkJCS8qIHBnX2F0dHJkZWYgKi8KIAlPQ0xBU1NfTEFOR1VBR0UsCQkJLyogcGdfbGFuZ3Vh Z2UgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvaGVhcC5oIGIvc3JjL2lu Y2x1ZGUvY2F0YWxvZy9oZWFwLmgKaW5kZXggMWQ3ZjgzODBkOTAuLjM1OTJhNDQ0YmQxIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL2hlYXAuaAorKysgYi9zcmMvaW5jbHVk ZS9jYXRhbG9nL2hlYXAuaApAQCAtMTIxLDYgKzEyMSwxMCBAQCBleHRlcm4gTGlzdCAqQWRk UmVsYXRpb25Ob3ROdWxsQ29uc3RyYWludHMoUmVsYXRpb24gcmVsLAogZXh0ZXJuIHZvaWQg UmVsYXRpb25DbGVhck1pc3NpbmcoUmVsYXRpb24gcmVsKTsKIGV4dGVybiB2b2lkIFNldEF0 dHJNaXNzaW5nKE9pZCByZWxpZCwgY2hhciAqYXR0bmFtZSwgY2hhciAqdmFsdWUpOwogCitl eHRlcm4gT2lkIFN0b3JlUGVyaW9kKFJlbGF0aW9uIHJlbCwgY29uc3QgY2hhciAqcGVyaW9k LAorCQkJCQkgICBBdHRyTnVtYmVyIHN0YXJ0bnVtLCBBdHRyTnVtYmVyIGVuZG51bSwKKwkJ CQkJICAgQXR0ck51bWJlciByYW5nZW51bSwgT2lkIGNvbm9pZCk7CisKIGV4dGVybiBOb2Rl ICpjb29rRGVmYXVsdChQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkgTm9kZSAqcmF3X2Rl ZmF1bHQsCiAJCQkJCQkgT2lkIGF0dHR5cGlkLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv Y2F0YWxvZy9tZXNvbi5idWlsZCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvbWVzb24uYnVpbGQK aW5kZXggNmIzYzU2YzIwZTguLmVhOThlMDNmNWRjIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9jYXRhbG9nL21lc29uLmJ1aWxkCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvbWVzb24u YnVpbGQKQEAgLTYxLDYgKzYxLDcgQEAgY2F0YWxvZ19oZWFkZXJzID0gWwogICAncGdfY29s bGF0aW9uLmgnLAogICAncGdfcGFyYW1ldGVyX2FjbC5oJywKICAgJ3BnX3BhcnRpdGlvbmVk X3RhYmxlLmgnLAorICAncGdfcGVyaW9kLmgnLAogICAncGdfcmFuZ2UuaCcsCiAgICdwZ190 cmFuc2Zvcm0uaCcsCiAgICdwZ19zZXF1ZW5jZS5oJywKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL2NhdGFsb2cvcGdfaW5kZXguaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfaW5kZXgu aAppbmRleCAzNDYyNTcyZWI1NS4uMGEzYzgxMTFiNjcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL2NhdGFsb2cvcGdfaW5kZXguaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2lu ZGV4LmgKQEAgLTQ4LDcgKzQ4LDYgQEAgQ0FUQUxPRyhwZ19pbmRleCwyNjEwLEluZGV4UmVs YXRpb25JZCkgQktJX1NDSEVNQV9NQUNSTwogCS8qIHZhcmlhYmxlLWxlbmd0aCBmaWVsZHMg c3RhcnQgaGVyZSwgYnV0IHdlIGFsbG93IGRpcmVjdCBhY2Nlc3MgdG8gaW5ka2V5ICovCiAJ aW50MnZlY3RvcglpbmRrZXkgQktJX0ZPUkNFX05PVF9OVUxMOwkvKiBjb2x1bW4gbnVtYmVy cyBvZiBpbmRleGVkIGNvbHMsCiAJCQkJCQkJCQkJCSAqIG9yIDAgKi8KLQogI2lmZGVmIENB VEFMT0dfVkFSTEVOCiAJb2lkdmVjdG9yCWluZGNvbGxhdGlvbiBCS0lfTE9PS1VQX09QVChw Z19jb2xsYXRpb24pIEJLSV9GT1JDRV9OT1RfTlVMTDsJLyogY29sbGF0aW9uIGlkZW50aWZp ZXJzICovCiAJb2lkdmVjdG9yCWluZGNsYXNzIEJLSV9MT09LVVAocGdfb3BjbGFzcykgQktJ X0ZPUkNFX05PVF9OVUxMOyAvKiBvcGNsYXNzIGlkZW50aWZpZXJzICovCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3BlcmlvZC5oIGIvc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19wZXJpb2QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u ZGY5ZDczYTNmNTQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X3BlcmlvZC5oCkBAIC0wLDAgKzEsNTcgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoK KyAqIHBnX3BlcmlvZC5oCisgKgkgIGRlZmluaXRpb24gb2YgdGhlICJwZXJpb2QiIHN5c3Rl bSBjYXRhbG9nIChwZ19wZXJpb2QpCisgKgorICoKKyAqIFBvcnRpb25zIENvcHlyaWdodCAo YykgMTk5Ni0yMDIxLCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICoK KyAqIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcGVyaW9kLmgKKyAqCisgKiBOT1RFUworICoJ ICBUaGUgQ2F0YWxvZy5wbSBtb2R1bGUgcmVhZHMgdGhpcyBmaWxlIGFuZCBkZXJpdmVzIHNj aGVtYQorICoJICBpbmZvcm1hdGlvbi4KKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAq LworI2lmbmRlZiBQR19QRVJJT0RfSAorI2RlZmluZSBQR19QRVJJT0RfSAorCisjaW5jbHVk ZSAiY2F0YWxvZy9nZW5ia2kuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3BlcmlvZF9kLmgi CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0KKyAqCQlwZ19wZXJpb2QgZGVmaW5pdGlvbi4gIGNw cCB0dXJucyB0aGlzIGludG8KKyAqCQl0eXBlZGVmIHN0cnVjdCBGb3JtRGF0YV9wZ19wZXJp b2QKKyAqIC0tLS0tLS0tLS0tLS0tLS0KKyAqLworQ0FUQUxPRyhwZ19wZXJpb2QsODAwMCxQ ZXJpb2RSZWxhdGlvbklkKQoreworCU9pZAkJCW9pZDsJCQkvKiBPSUQgb2YgdGhlIHBlcmlv ZCAqLworCU5hbWVEYXRhCXBlcm5hbWU7CQkvKiBuYW1lIG9mIHBlcmlvZCAqLworCU9pZAkJ CXBlcnJlbGlkOwkJLyogT0lEIG9mIHJlbGF0aW9uIGNvbnRhaW5pbmcgdGhpcyBwZXJpb2Qg Ki8KKwlpbnQxNgkJcGVyc3RhcnQ7CQkvKiBjb2x1bW4gZm9yIHN0YXJ0IHZhbHVlICovCisJ aW50MTYJCXBlcmVuZDsJCQkvKiBjb2x1bW4gZm9yIGVuZCB2YWx1ZSAqLworCWludDE2CQlw ZXJyYW5nZTsJCS8qIGNvbHVtbiBmb3IgcmFuZ2UgdmFsdWUgKi8KKwlPaWQJCQlwZXJjb25z dHJhaW50OwkvKiBPSUQgb2YgKHN0YXJ0IDwgZW5kKSBjb25zdHJhaW50ICovCit9IEZvcm1E YXRhX3BnX3BlcmlvZDsKKworLyogLS0tLS0tLS0tLS0tLS0tLQorICoJCUZvcm1fcGdfcGVy aW9kIGNvcnJlc3BvbmRzIHRvIGEgcG9pbnRlciB0byBhIHR1cGxlIHdpdGgKKyAqCQl0aGUg Zm9ybWF0IG9mIHBnX3BlcmlvZCByZWxhdGlvbi4KKyAqIC0tLS0tLS0tLS0tLS0tLS0KKyAq LwordHlwZWRlZiBGb3JtRGF0YV9wZ19wZXJpb2QgKkZvcm1fcGdfcGVyaW9kOworCitERUNM QVJFX1VOSVFVRV9JTkRFWF9QS0VZKHBnX3BlcmlvZF9vaWRfaW5kZXgsIDgwMDEsIFBlcmlv ZE9iamVjdEluZGV4SWQsIHBnX3BlcmlvZCwgYnRyZWUob2lkIG9pZF9vcHMpKTsKK0RFQ0xB UkVfVU5JUVVFX0lOREVYKHBnX3BlcmlvZF9wZXJyZWxpZF9wZXJuYW1lX2luZGV4LCA4MDAy LCBQZXJpb2RSZWxpZE5hbWVJbmRleElkLCBwZ19wZXJpb2QsIGJ0cmVlKHBlcnJlbGlkIG9p ZF9vcHMsIHBlcm5hbWUgbmFtZV9vcHMpKTsKKworTUFLRV9TWVNDQUNIRShQRVJJT0RPSUQs IHBnX3BlcmlvZF9vaWRfaW5kZXgsIDMyKTsKK01BS0VfU1lTQ0FDSEUoUEVSSU9ETkFNRSwg cGdfcGVyaW9kX3BlcnJlbGlkX3Blcm5hbWVfaW5kZXgsIDMyKTsKKworZXh0ZXJuIHZvaWQg UmVtb3ZlUGVyaW9kQnlJZChPaWQgcGVyaW9kSWQpOworCitleHRlcm4gT2lkIGdldF9yZWxh dGlvbl9wZXJpb2Rfb2lkKE9pZCByZWxpZCwgY29uc3QgY2hhciAqcGVybmFtZSwgYm9vbCBt aXNzaW5nX29rKTsKK2V4dGVybiBCaXRtYXBzZXQgKmdldF9wZXJpb2RfYXR0bm9zKE9pZCBy ZWxpZCk7CisKKyNlbmRpZgkJCQkJCQkvKiBQR19QRVJJT0RfSCAqLwpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19yYW5nZS5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19yYW5nZS5oCmluZGV4IDBiZDNhYjY4OGJkLi4xMGE5NGRkMTFmMSAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19yYW5nZS5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFs b2cvcGdfcmFuZ2UuaApAQCAtNTksOCArNTksMTAgQEAgdHlwZWRlZiBGb3JtRGF0YV9wZ19y YW5nZSAqRm9ybV9wZ19yYW5nZTsKIAogREVDTEFSRV9VTklRVUVfSU5ERVhfUEtFWShwZ19y YW5nZV9ybmd0eXBpZF9pbmRleCwgMzU0MiwgUmFuZ2VUeXBpZEluZGV4SWQsIHBnX3Jhbmdl LCBidHJlZShybmd0eXBpZCBvaWRfb3BzKSk7CiBERUNMQVJFX1VOSVFVRV9JTkRFWChwZ19y YW5nZV9ybmdtdWx0aXR5cGlkX2luZGV4LCAyMjI4LCBSYW5nZU11bHRpcmFuZ2VUeXBpZElu ZGV4SWQsIHBnX3JhbmdlLCBidHJlZShybmdtdWx0aXR5cGlkIG9pZF9vcHMpKTsKK0RFQ0xB UkVfVU5JUVVFX0lOREVYKHBnX3JhbmdlX3JuZ3N1YnR5cGVfcm5ndHlwaWRfaW5kZXgsIDgw MDMsIFJhbmdlU3ViVHlwaWRUeXBpZEluZGV4SWQsIHBnX3JhbmdlLCBidHJlZShybmdzdWJ0 eXBlIG9pZF9vcHMsIHJuZ3R5cGlkIG9pZF9vcHMpKTsKIAogTUFLRV9TWVNDQUNIRShSQU5H RVRZUEUsIHBnX3JhbmdlX3JuZ3R5cGlkX2luZGV4LCA0KTsKK01BS0VfU1lTQ0FDSEUoUkFO R0VTVUJUWVBFLCBwZ19yYW5nZV9ybmdzdWJ0eXBlX3JuZ3R5cGlkX2luZGV4LCA0KTsKIE1B S0VfU1lTQ0FDSEUoUkFOR0VNVUxUSVJBTkdFLCBwZ19yYW5nZV9ybmdtdWx0aXR5cGlkX2lu ZGV4LCA0KTsKIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3RhYmxl Y21kcy5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvdGFibGVjbWRzLmgKaW5kZXggNjBkOWI4 ZjViNWYuLjdjZTMyODc4ZTRiIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy90 YWJsZWNtZHMuaAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy90YWJsZWNtZHMuaApAQCAt NDAsNyArNDAsOCBAQCBleHRlcm4gTE9DS01PREUgQWx0ZXJUYWJsZUdldExvY2tMZXZlbChM aXN0ICpjbWRzKTsKIAogZXh0ZXJuIHZvaWQgQVRFeGVjQ2hhbmdlT3duZXIoT2lkIHJlbGF0 aW9uT2lkLCBPaWQgbmV3T3duZXJJZCwgYm9vbCByZWN1cnNpbmcsIExPQ0tNT0RFIGxvY2tt b2RlKTsKIAotZXh0ZXJuIHZvaWQgQWx0ZXJUYWJsZUludGVybmFsKE9pZCByZWxpZCwgTGlz dCAqY21kcywgYm9vbCByZWN1cnNlKTsKK2V4dGVybiB2b2lkIEFsdGVyVGFibGVJbnRlcm5h bChPaWQgcmVsaWQsIExpc3QgKmNtZHMsIGJvb2wgcmVjdXJzZSwKKwkJCQkJCQkgICBzdHJ1 Y3QgQWx0ZXJUYWJsZVV0aWxpdHlDb250ZXh0ICpjb250ZXh0KTsKIAogZXh0ZXJuIE9pZAlB bHRlclRhYmxlTW92ZUFsbChBbHRlclRhYmxlTW92ZUFsbFN0bXQgKnN0bXQpOwogCkBAIC0x MDUsNSArMTA2LDYgQEAgZXh0ZXJuIHZvaWQgUmFuZ2VWYXJDYWxsYmFja093bnNSZWxhdGlv bihjb25zdCBSYW5nZVZhciAqcmVsYXRpb24sCiAJCQkJCQkJCQkJIE9pZCByZWxJZCwgT2lk IG9sZFJlbElkLCB2b2lkICphcmcpOwogZXh0ZXJuIGJvb2wgUGFydENvbnN0cmFpbnRJbXBs aWVkQnlSZWxDb25zdHJhaW50KFJlbGF0aW9uIHNjYW5yZWwsCiAJCQkJCQkJCQkJCQkgTGlz dCAqcGFydENvbnN0cmFpbnQpOworZXh0ZXJuIE9pZCBjaG9vc2VfcmFuZ2V0eXBlX2Zvcl9w ZXJpb2QoUGVyaW9kRGVmICpwZXJpb2QpOwogCiAjZW5kaWYJCQkJCQkJLyogVEFCTEVDTURT X0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCBiL3Ny Yy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAppbmRleCBhMjBiMzlhNGEyOC4uZDExMWUx MjhiNjcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAorKysg Yi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKQEAgLTIxNDEsNiArMjE0MSw3IEBA IHR5cGVkZWYgZW51bSBPYmplY3RUeXBlCiAJT0JKRUNUX09QRVJBVE9SLAogCU9CSkVDVF9P UEZBTUlMWSwKIAlPQkpFQ1RfUEFSQU1FVEVSX0FDTCwKKwlPQkpFQ1RfUEVSSU9ELAogCU9C SkVDVF9QT0xJQ1ksCiAJT0JKRUNUX1BST0NFRFVSRSwKIAlPQkpFQ1RfUFVCTElDQVRJT04s CkBAIC0yMjI5LDYgKzIyMzAsOCBAQCB0eXBlZGVmIGVudW0gQWx0ZXJUYWJsZVR5cGUKIAlB VF9WYWxpZGF0ZUNvbnN0cmFpbnQsCQkvKiB2YWxpZGF0ZSBjb25zdHJhaW50ICovCiAJQVRf QWRkSW5kZXhDb25zdHJhaW50LAkJLyogYWRkIGNvbnN0cmFpbnQgdXNpbmcgZXhpc3Rpbmcg aW5kZXggKi8KIAlBVF9Ecm9wQ29uc3RyYWludCwJCQkvKiBkcm9wIGNvbnN0cmFpbnQgKi8K KwlBVF9BZGRQZXJpb2QsCQkJCS8qIEFERCBQRVJJT0QgKi8KKwlBVF9Ecm9wUGVyaW9kLAkJ CQkvKiBEUk9QIFBFUklPRCAqLwogCUFUX1JlQWRkQ29tbWVudCwJCQkvKiBpbnRlcm5hbCB0 byBjb21tYW5kcy90YWJsZWNtZHMuYyAqLwogCUFUX0FsdGVyQ29sdW1uVHlwZSwJCQkvKiBh bHRlciBjb2x1bW4gdHlwZSAqLwogCUFUX0FsdGVyQ29sdW1uR2VuZXJpY09wdGlvbnMsCS8q IGFsdGVyIGNvbHVtbiBPUFRJT05TICguLi4pICovCkBAIC0yNDk1LDExICsyNDk4LDExIEBA IHR5cGVkZWYgc3RydWN0IFZhcmlhYmxlU2hvd1N0bXQKIC8qIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KICAqCQlDcmVhdGUgVGFibGUgU3RhdGVtZW50CiAgKgotICogTk9URTogaW4gdGhl IHJhdyBncmFtLnkgb3V0cHV0LCBDb2x1bW5EZWYgYW5kIENvbnN0cmFpbnQgbm9kZXMgYXJl Ci0gKiBpbnRlcm1peGVkIGluIHRhYmxlRWx0cywgYW5kIGNvbnN0cmFpbnRzIGFuZCBubmNv bnN0cmFpbnRzIGFyZSBOSUwuICBBZnRlcgotICogcGFyc2UgYW5hbHlzaXMsIHRhYmxlRWx0 cyBjb250YWlucyBqdXN0IENvbHVtbkRlZnMsIG5uY29uc3RyYWludHMgY29udGFpbnMKLSAq IENvbnN0cmFpbnQgbm9kZXMgb2YgQ09OU1RSX05PVE5VTEwgdHlwZSBmcm9tIHZhcmlvdXMg c291cmNlcywgYW5kCi0gKiBjb25zdHJhaW50cyBjb250YWlucyBqdXN0IENPTlNUUl9DSEVD SyBDb25zdHJhaW50IG5vZGVzLgorICogTk9URTogaW4gdGhlIHJhdyBncmFtLnkgb3V0cHV0 LCBDb2x1bW5EZWYsIFBlcmlvZERlZiwgYW5kIENvbnN0cmFpbnQgbm9kZXMgYXJlCisgKiBp bnRlcm1peGVkIGluIHRhYmxlRWx0czsgcGVyaW9kcywgY29uc3RyYWludHMsIGFuZCBubmNv bnN0cmFpbnRzIGFyZSBOSUwuICBBZnRlcgorICogcGFyc2UgYW5hbHlzaXMsIHRhYmxlRWx0 cyBjb250YWlucyBqdXN0IENvbHVtbkRlZnMsIHBlcmlvZHMgY29udGFpbnMganVzdCBQZXJp b2REZWZzLAorICogbm5jb25zdHJhaW50cyBjb250YWlucyBDb25zdHJhaW50IG5vZGVzIG9m IENPTlNUUl9OT1ROVUxMIHR5cGUgZnJvbSB2YXJpb3VzIHNvdXJjZXMsCisgKiBhbmQgY29u c3RyYWludHMgY29udGFpbnMganVzdCBDT05TVFJfQ0hFQ0sgQ29uc3RyYWludCBub2Rlcy4K ICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqLwogCkBAIC0yNTA4LDYgKzI1MTEsNyBA QCB0eXBlZGVmIHN0cnVjdCBDcmVhdGVTdG10CiAJTm9kZVRhZwkJdHlwZTsKIAlSYW5nZVZh ciAgICpyZWxhdGlvbjsJCS8qIHJlbGF0aW9uIHRvIGNyZWF0ZSAqLwogCUxpc3QJICAgKnRh YmxlRWx0czsJCS8qIGNvbHVtbiBkZWZpbml0aW9ucyAobGlzdCBvZiBDb2x1bW5EZWYpICov CisJTGlzdAkgICAqcGVyaW9kczsJCS8qIHBlcmlvZHMgKGxpc3Qgb2YgUGVyaW9kRGVmIG5v ZGVzKSAqLwogCUxpc3QJICAgKmluaFJlbGF0aW9uczsJLyogcmVsYXRpb25zIHRvIGluaGVy aXQgZnJvbSAobGlzdCBvZgogCQkJCQkJCQkgKiBSYW5nZVZhcikgKi8KIAlQYXJ0aXRpb25C b3VuZFNwZWMgKnBhcnRib3VuZDsJLyogRk9SIFZBTFVFUyBjbGF1c2UgKi8KQEAgLTI1MjIs NiArMjUyNiwzMSBAQCB0eXBlZGVmIHN0cnVjdCBDcmVhdGVTdG10CiAJYm9vbAkJaWZfbm90 X2V4aXN0czsJLyoganVzdCBkbyBub3RoaW5nIGlmIGl0IGFscmVhZHkgZXhpc3RzPyAqLwog fSBDcmVhdGVTdG10OwogCisKKy8qIC0tLS0tLS0tLS0KKyAqIERlZmluaXRpb25zIGZvciBw ZXJpb2RzIGluIENyZWF0ZVN0bXQKKyAqIC0tLS0tLS0tLS0KKyAqLworCit0eXBlZGVmIHN0 cnVjdCBQZXJpb2REZWYKK3sKKwlOb2RlVGFnCQl0eXBlOworCU9pZAkJCW9pZDsJCQkvKiBw ZXJpb2Qgb2lkLCBvbmNlIGl0J3MgdHJhbnNmb3JtZWQgKi8KKwljaGFyCSAgICpwZXJpb2Ru YW1lOwkJLyogcGVyaW9kIG5hbWUgKi8KKwljaGFyCSAgICpzdGFydGNvbG5hbWU7CS8qIG5h bWUgb2Ygc3RhcnQgY29sdW1uICovCisJY2hhcgkgICAqZW5kY29sbmFtZTsJCS8qIG5hbWUg b2YgZW5kIGNvbHVtbiAqLworCUF0dHJOdW1iZXIJc3RhcnRhdHRudW07CS8qIGF0dG51bSBv ZiB0aGUgc3RhcnQgY29sdW1uICovCisJQXR0ck51bWJlcgllbmRhdHRudW07CQkvKiBhdHRu dW0gb2YgdGhlIGVuZCBjb2x1bW4gKi8KKwlBdHRyTnVtYmVyCXJuZ2F0dG51bTsJCS8qIGF0 dG51bSBvZiB0aGUgR0VORVJBVEVEIHJhbmdlIGNvbHVtbiAqLworCUxpc3QJICAgKm9wdGlv bnM7CQkvKiBvcHRpb25zIGZyb20gV0lUSCBjbGF1c2UgKi8KKwljaGFyCSAgICpjb25zdHJh aW50bmFtZTsJLyogbmFtZSBvZiB0aGUgQ0hFQ0sgY29uc3RyYWludCAqLworCWNoYXIJICAg KnJhbmdldHlwZW5hbWU7CS8qIG5hbWUgb2YgdGhlIHJhbmdlIHR5cGUgKi8KKwlPaWQJCQlj b2x0eXBpZDsJCS8qIHRoZSBzdGFydC9lbmQgY29sIHR5cGUgKi8KKwlPaWQJCQlybmd0eXBp ZDsJCS8qIHRoZSByYW5nZSB0eXBlIHRvIHVzZSAqLworCWJvb2wJCWNvbGV4aXN0czsJCS8q IHVzZSBhbiBleGlzdGluZyBHRU5FUkFURUQgY29sdW1uICovCisJaW50CQkJbG9jYXRpb247 CQkvKiB0b2tlbiBsb2NhdGlvbiwgb3IgLTEgaWYgdW5rbm93biAqLworfSBQZXJpb2REZWY7 CisKIC8qIC0tLS0tLS0tLS0KICAqIERlZmluaXRpb25zIGZvciBjb25zdHJhaW50cyBpbiBD cmVhdGVTdG10CiAgKgpAQCAtMzIxNyw2ICszMjQ2LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgSW5k ZXhTdG10CiAJTGlzdAkgICAqaW5kZXhQYXJhbXM7CS8qIGNvbHVtbnMgdG8gaW5kZXg6IGEg bGlzdCBvZiBJbmRleEVsZW0gKi8KIAlMaXN0CSAgICppbmRleEluY2x1ZGluZ1BhcmFtczsJ LyogYWRkaXRpb25hbCBjb2x1bW5zIHRvIGluZGV4OiBhIGxpc3QKIAkJCQkJCQkJCQkgKiBv ZiBJbmRleEVsZW0gKi8KKwlQZXJpb2REZWYgICpwZXJpb2Q7CQkJLyogVGhlIHBlcmlvZCBp bmNsdWRlZCBpbiB0aGUgaW5kZXggKi8KIAlMaXN0CSAgICpvcHRpb25zOwkJLyogV0lUSCBj bGF1c2Ugb3B0aW9uczogYSBsaXN0IG9mIERlZkVsZW0gKi8KIAlOb2RlCSAgICp3aGVyZUNs YXVzZTsJLyogcXVhbGlmaWNhdGlvbiAocGFydGlhbC1pbmRleCBwcmVkaWNhdGUpICovCiAJ TGlzdAkgICAqZXhjbHVkZU9wTmFtZXM7IC8qIGV4Y2x1c2lvbiBvcGVyYXRvciBuYW1lcywg b3IgTklMIGlmIG5vbmUgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJz ZV91dGlsY21kLmggYi9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfdXRpbGNtZC5oCmluZGV4 IDE0MDY1ODk0Nzc5Li5kODRkMDJiMDI4MCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGFy c2VyL3BhcnNlX3V0aWxjbWQuaAorKysgYi9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfdXRp bGNtZC5oCkBAIC00MCw1ICs0MCw2IEBAIGV4dGVybiBJbmRleFN0bXQgKmdlbmVyYXRlQ2xv bmVkSW5kZXhTdG10KFJhbmdlVmFyICpoZWFwUmVsLAogCQkJCQkJCQkJCSAgUmVsYXRpb24g c291cmNlX2lkeCwKIAkJCQkJCQkJCQkgIGNvbnN0IHN0cnVjdCBBdHRyTWFwICphdHRtYXAs CiAJCQkJCQkJCQkJICBPaWQgKmNvbnN0cmFpbnRPaWQpOworZXh0ZXJuIHZvaWQgdHJhbnNm b3JtUGVyaW9kT3B0aW9ucyhQZXJpb2REZWYgKnBlcmlvZCk7CiAKICNlbmRpZgkJCQkJCQkv KiBQQVJTRV9VVElMQ01EX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL2xz eXNjYWNoZS5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvbHN5c2NhY2hlLmgKaW5kZXggNDhkZjEw N2MxY2UuLmNkOWZlNWM5ODhkIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9sc3lz Y2FjaGUuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaApAQCAtOTUsNiAr OTUsOCBAQCBleHRlcm4gT2lkCWdldF9hdHR0eXBlKE9pZCByZWxpZCwgQXR0ck51bWJlciBh dHRudW0pOwogZXh0ZXJuIHZvaWQgZ2V0X2F0dHR5cGV0eXBtb2Rjb2xsKE9pZCByZWxpZCwg QXR0ck51bWJlciBhdHRudW0sCiAJCQkJCQkJCSAgT2lkICp0eXBpZCwgaW50MzIgKnR5cG1v ZCwgT2lkICpjb2xsaWQpOwogZXh0ZXJuIERhdHVtIGdldF9hdHRvcHRpb25zKE9pZCByZWxp ZCwgaW50MTYgYXR0bnVtKTsKK2V4dGVybiBjaGFyICpnZXRfcGVyaW9kbmFtZShPaWQgcGVy aW9kaWQsIGJvb2wgbWlzc2luZ19vayk7CitleHRlcm4gT2lkCWdldF9wZXJpb2Rfb2lkKE9p ZCByZWxpZCwgY29uc3QgY2hhciAqcGVyaW9kbmFtZSwgYm9vbCBtaXNzaW5nX29rKTsKIGV4 dGVybiBPaWQJZ2V0X2Nhc3Rfb2lkKE9pZCBzb3VyY2V0eXBlaWQsIE9pZCB0YXJnZXR0eXBl aWQsIGJvb2wgbWlzc2luZ19vayk7CiBleHRlcm4gY2hhciAqZ2V0X2NvbGxhdGlvbl9uYW1l KE9pZCBjb2xsb2lkKTsKIGV4dGVybiBib29sIGdldF9jb2xsYXRpb25faXNkZXRlcm1pbmlz dGljKE9pZCBjb2xsb2lkKTsKQEAgLTE5Niw2ICsxOTgsNyBAQCBleHRlcm4gT2lkCWdldF9y YW5nZV9zdWJ0eXBlKE9pZCByYW5nZU9pZCk7CiBleHRlcm4gT2lkCWdldF9yYW5nZV9jb2xs YXRpb24oT2lkIHJhbmdlT2lkKTsKIGV4dGVybiBPaWQJZ2V0X3JhbmdlX211bHRpcmFuZ2Uo T2lkIHJhbmdlT2lkKTsKIGV4dGVybiBPaWQJZ2V0X211bHRpcmFuZ2VfcmFuZ2UoT2lkIG11 bHRpcmFuZ2VPaWQpOworZXh0ZXJuIE9pZAlnZXRfc3VidHlwZV9yYW5nZShPaWQgc3VidHlw ZU9pZCk7CiBleHRlcm4gT2lkCWdldF9pbmRleF9jb2x1bW5fb3BjbGFzcyhPaWQgaW5kZXhf b2lkLCBpbnQgYXR0bm8pOwogZXh0ZXJuIGJvb2wgZ2V0X2luZGV4X2lzcmVwbGlkZW50KE9p ZCBpbmRleF9vaWQpOwogZXh0ZXJuIGJvb2wgZ2V0X2luZGV4X2lzdmFsaWQoT2lkIGluZGV4 X29pZCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9wZXJpb2QuaCBiL3NyYy9p bmNsdWRlL3V0aWxzL3BlcmlvZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwLi4wYThhZjNlZGIwMQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9pbmNsdWRlL3V0 aWxzL3BlcmlvZC5oCkBAIC0wLDAgKzEsMTkgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor ICoKKyAqIHBlcmlvZC5oCisgKgkgIHN1cHBvcnQgZm9yIFBvc3RncmVzIHBlcmlvZHMuCisg KgorICoKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0yMDIyLCBQb3N0Z3JlU1FM IEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAx OTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEKKyAqCisgKiBz cmMvaW5jbHVkZS91dGlscy9wZXJpb2QuaAorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor ICovCisjaWZuZGVmIFBFUklPRF9ICisjZGVmaW5lIFBFUklPRF9ICisKK2V4dGVybiBEYXR1 bSBwZXJpb2RfdG9fcmFuZ2UoVHVwbGVUYWJsZVNsb3QgKnNsb3QsIGludCBzdGFydGF0dG5v LCBpbnQgZW5kYXR0bm8sIE9pZCByYW5nZXR5cGUpOworCisjZW5kaWYJCQkJCQkJLyogUEVS SU9EX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9kZGxfZGVwYXJz ZS90ZXN0X2RkbF9kZXBhcnNlLmMgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZGRsX2RlcGFy c2UvdGVzdF9kZGxfZGVwYXJzZS5jCmluZGV4IDQ4NTYzYjJjZjAxLi5hOTU0ZTcwMzM4NCAx MDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2RkbF9kZXBhcnNlL3Rlc3RfZGRs X2RlcGFyc2UuYworKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZGRsX2RlcGFyc2UvdGVz dF9kZGxfZGVwYXJzZS5jCkBAIC0xODMsNiArMTgzLDEyIEBAIGdldF9hbHRlcnRhYmxlX3N1 YmNtZGluZm8oUEdfRlVOQ1RJT05fQVJHUykKIAkJCWNhc2UgQVRfRHJvcENvbnN0cmFpbnQ6 CiAJCQkJc3RydHlwZSA9ICJEUk9QIENPTlNUUkFJTlQiOwogCQkJCWJyZWFrOworCQkJY2Fz ZSBBVF9BZGRQZXJpb2Q6CisJCQkJc3RydHlwZSA9ICJBREQgUEVSSU9EIjsKKwkJCQlicmVh azsKKwkJCWNhc2UgQVRfRHJvcFBlcmlvZDoKKwkJCQlzdHJ0eXBlID0gIkRST1AgUEVSSU9E IjsKKwkJCQlicmVhazsKIAkJCWNhc2UgQVRfUmVBZGRDb21tZW50OgogCQkJCXN0cnR5cGUg PSAiKHJlKSBBREQgQ09NTUVOVCI7CiAJCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL2dlbmVyYXRlZC5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL2dlbmVyYXRlZC5vdXQKaW5kZXggYTRmMzc3MzY2MjMuLmQ5YzFmNzhlZDhiIDEw MDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2dlbmVyYXRlZC5vdXQKKysr IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9nZW5lcmF0ZWQub3V0CkBAIC0xOSw3ICsx OSw5IEBAIFNFTEVDVCB0YWJsZV9uYW1lLCBjb2x1bW5fbmFtZSwgZGVwZW5kZW50X2NvbHVt biBGUk9NIGluZm9ybWF0aW9uX3NjaGVtYS5jb2x1bW5fCiAgdGFibGVfbmFtZSB8IGNvbHVt bl9uYW1lIHwgZGVwZW5kZW50X2NvbHVtbiAKIC0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLQogIGd0ZXN0MSAgICAgfCBhICAgICAgICAgICB8IGIKLSgx IHJvdykKKyBwdCAgICAgICAgIHwgZGUgICAgICAgICAgfCBwCisgcHQgICAgICAgICB8IGRz ICAgICAgICAgIHwgcAorKDMgcm93cykKIAogXGQgZ3Rlc3QxCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgVGFibGUgInB1YmxpYy5ndGVzdDEiCmRpZmYgLS1naXQgYS9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL3BlcmlvZHMub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9wZXJpb2RzLm91dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MC4uZWZkM2E4NDZhYjkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL3BlcmlvZHMub3V0CkBAIC0wLDAgKzEsMjY3IEBACisvKiBTeXN0ZW0gcGVyaW9k cyBhcmUgbm90IGltcGxlbWVudGVkICovCitjcmVhdGUgdGFibGUgcHQgKGlkIGludGVnZXIs IGRzIGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBmb3Igc3lzdGVtX3RpbWUgKGRzLCBkZSkpOwor RVJST1I6ICBQRVJJT0QgRk9SIFNZU1RFTV9USU1FIGlzIG5vdCBzdXBwb3J0ZWQKK0xJTkUg MjogY3JlYXRlIHRhYmxlIHB0IChpZCBpbnRlZ2VyLCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJp b2QgZm9yIHN5Li4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXgorLyogUGVyaW9kcyBtdXN0IHNwZWNpZnkgYWN0dWFsIGNvbHVt bnMgKi8KK2NyZWF0ZSB0YWJsZSBwdCAoaWQgaW50ZWdlciwgZHMgZGF0ZSwgZGUgZGF0ZSwg cGVyaW9kIGZvciBwIChib2d1cywgZGUpKTsKK0VSUk9SOiAgY29sdW1uICJib2d1cyIgb2Yg cmVsYXRpb24gInB0IiBkb2VzIG5vdCBleGlzdAorY3JlYXRlIHRhYmxlIHB0IChpZCBpbnRl Z2VyLCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJpb2QgZm9yIHAgKGRzLCBib2d1cykpOworRVJS T1I6ICBjb2x1bW4gImJvZ3VzIiBvZiByZWxhdGlvbiAicHQiIGRvZXMgbm90IGV4aXN0Cisv KiBEYXRhIHR5cGVzIG11c3QgbWF0Y2ggZXhhY3RseSAqLworY3JlYXRlIHRhYmxlIHB0IChp ZCBpbnRlZ2VyLCBkcyBkYXRlLCBkZSB0aW1lc3RhbXAsIHBlcmlvZCBmb3IgcCAoZHMsIGRl KSk7CitFUlJPUjogIHN0YXJ0IGFuZCBlbmQgY29sdW1ucyBvZiBwZXJpb2QgbXVzdCBiZSBv ZiBzYW1lIHR5cGUKK2NyZWF0ZSB0YWJsZSBwdCAoaWQgaW50ZWdlciwgZHMgdGV4dCBjb2xs YXRlICJDIiwgZGUgdGV4dCBjb2xsYXRlICJQT1NJWCIsIHBlcmlvZCBmb3IgcCAoZHMsIGRl KSk7CitFUlJPUjogIHN0YXJ0IGFuZCBlbmQgY29sdW1ucyBvZiBwZXJpb2QgbXVzdCBoYXZl IHNhbWUgY29sbGF0aW9uCisvKiBQZXJpb2RzIG11c3QgaGF2ZSBhIGRlZmF1bHQgQlRyZWUg b3BlcmF0b3IgY2xhc3MgKi8KK2NyZWF0ZSB0YWJsZSBwdCAoaWQgaW50ZWdlciwgZHMgeG1s LCBkZSB4bWwsIHBlcmlvZCBmb3IgcCAoZHMsIGRlKSk7CitFUlJPUjogIG5vIHJhbmdlIHR5 cGUgZm9yIHhtbCBmb3VuZCBmb3IgcGVyaW9kIHAKK0hJTlQ6ICBZb3UgY2FuIGRlZmluZSBh IGN1c3RvbSByYW5nZSB0eXBlIHdpdGggQ1JFQVRFIFRZUEUKKy8qIFBlcmlvZCBhbmQgY29s dW1uIG5hbWVzIGFyZSBpbiB0aGUgc2FtZSBuYW1lc3BhY2UgKi8KK2NyZWF0ZSB0YWJsZSBw dCAoaWQgaW50ZWdlciwgZHMgZGF0ZSwgZGUgZGF0ZSwgcGVyaW9kIGZvciBjdGlkIChkcywg ZGUpKTsKK0VSUk9SOiAgcGVyaW9kIG5hbWUgImN0aWQiIGNvbmZsaWN0cyB3aXRoIGEgc3lz dGVtIGNvbHVtbiBuYW1lCitjcmVhdGUgdGFibGUgcHQgKGlkIGludGVnZXIsIGRzIGRhdGUs IGRlIGRhdGUsIHBlcmlvZCBmb3IgaWQgKGRzLCBkZSkpOworRVJST1I6ICBwZXJpb2QgbmFt ZSAiaWQiIGNvbmZsaWN0cyB3aXRoIGEgY29sdW1uIG5hbWUKKy8qIFBlcmlvZCBuYW1lIGNh bid0IGJlIGdpdmVuIG1vcmUgdGhhbiBvbmNlICovCitjcmVhdGUgdGFibGUgcHQgKGlkIGlu dGVnZXIsIGRzIGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBmb3IgcCAoZHMsIGRlKSwgcGVyaW9k IGZvciBwIChkcywgZGUpKTsKK0VSUk9SOiAgcGVyaW9kIG5hbWUgInAiIHNwZWNpZmllZCBt b3JlIHRoYW4gb25jZQorLyogTm93IG1ha2Ugb25lIHRoYXQgd29ya3MgKi8KK2NyZWF0ZSB0 YWJsZSBwdCAoaWQgaW50ZWdlciwgZHMgZGF0ZSwgZGUgZGF0ZSwgcGVyaW9kIGZvciBwIChk cywgZGUpKTsKKy8qIFNFTEVDVCAqIGV4Y2x1ZGVzIHRoZSBQRVJJT0QgKi8KK2luc2VydCBp bnRvIHB0IHZhbHVlcyAoMSwgJzIwMDAtMDEtMDEnLCAnMjAwMS0wMS0wMScpOworc2VsZWN0 ICogZnJvbSBwdDsKKyBpZCB8ICAgICBkcyAgICAgfCAgICAgZGUgICAgIAorLS0tLSstLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgIDEgfCAwMS0wMS0yMDAwIHwgMDEtMDEtMjAwMQor KDEgcm93KQorCisvKiBZb3UgY2FuIGdldCBpdCBpZiB5b3Ugd2FudCAqLworc2VsZWN0ICos IHAgZnJvbSBwdDsKKyBpZCB8ICAgICBkcyAgICAgfCAgICAgZGUgICAgIHwgICAgICAgICAg ICBwICAgICAgICAgICAgCistLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorICAxIHwgMDEtMDEtMjAwMCB8IDAxLTAxLTIwMDEgfCBb MDEtMDEtMjAwMCwwMS0wMS0yMDAxKQorKDEgcm93KQorCisvKiBUd28gYXJlIG9rYXkgKi8K K2NyZWF0ZSB0YWJsZSBwdDIgKGlkIGludGVnZXIsIGRzIGRhdGUsIGRlIGRhdGUsIHBlcmlv ZCBmb3IgcDEgKGRzLCBkZSksIHBlcmlvZCBmb3IgcDIgKGRzLCBkZSkpOworZHJvcCB0YWJs ZSBwdDI7CisvKiBTa2lwIGNyZWF0aW5nIEdFTkVSQVRFRCBjb2x1bW46IHdvcmtzICovCitj cmVhdGUgdGFibGUgcHQyIChpZCBpbnRlZ2VyLCBkcyBkYXRlLCBkZSBkYXRlLCBwIGRhdGVy YW5nZSBub3QgbnVsbCBnZW5lcmF0ZWQgYWx3YXlzIGFzIChkYXRlcmFuZ2UoZHMsIGRlKSkg c3RvcmVkLCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkgd2l0aCAoY29sZXhpc3RzID0gdHJ1ZSkp OworXGQgcHQyCisgICAgICAgICAgICAgICAgVGFibGUgInB1YmxpYy5wdDIiCisgQ29sdW1u IHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgRGVmYXVsdCAKKy0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLQorIGlkICAgICB8 IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IAorIGRzICAgICB8IGRhdGUgICAg fCAgICAgICAgICAgfCAgICAgICAgICB8IAorIGRlICAgICB8IGRhdGUgICAgfCAgICAgICAg ICAgfCAgICAgICAgICB8IAorUGVyaW9kczoKKyAgICBwIChkcywgZGUpCitDaGVjayBjb25z dHJhaW50czoKKyAgICAicHQyX3BfY2hlY2siIENIRUNLIChkcyA8IGRlKQorCitkcm9wIHRh YmxlIHB0MjsKKy8qIFNraXAgY3JlYXRpbmcgR0VORVJBVEVEIGNvbHVtbjogZmFpbHMgYmVj YXVzZSB0aGUgY29sIGlzbid0IHRoZXJlICovCitjcmVhdGUgdGFibGUgcHQyIChpZCBpbnRl Z2VyLCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkgd2l0aCAoY29s ZXhpc3RzID0gdHJ1ZSkpOworRVJST1I6ICBObyBjb2x1bW4gZm91bmQgd2l0aCBuYW1lIHAK Ky8qIFNraXAgY3JlYXRpbmcgR0VORVJBVEVEIGNvbHVtbjogZmFpbHMgYmVjYXVzZSB0aGUg b3B0aW9uIGhhcyBhbiBpbnZhbGlkIHZhbHVlICovCitjcmVhdGUgdGFibGUgcHQyIChpZCBp bnRlZ2VyLCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkgd2l0aCAo Y29sZXhpc3RzID0gJ3doYXRldmVyJykpOworRVJST1I6ICBjb2xleGlzdHMgcmVxdWlyZXMg YSBCb29sZWFuIHZhbHVlCisvKiBTa2lwIGNyZWF0aW5nIEdFTkVSQVRFRCBjb2x1bW46IGZh aWxzIGJlY2F1c2UgdGhlIGNvbHVtbiBpcyBub3QgTk9UIE5VTEwgKi8KK2NyZWF0ZSB0YWJs ZSBwdDIgKGlkIGludGVnZXIsIGRzIGRhdGUsIGRlIGRhdGUsIHAgZGF0ZXJhbmdlIGdlbmVy YXRlZCBhbHdheXMgYXMgKGRhdGVyYW5nZShkcywgZGUpKSBzdG9yZWQsIHBlcmlvZCBmb3Ig cCAoZHMsIGRlKSB3aXRoIChjb2xleGlzdHMgPSB0cnVlKSk7CitFUlJPUjogIFBlcmlvZCBw IHVzZXMgYSBnZW5lcmF0ZWQgY29sdW1uIHRoYXQgYWxsb3dzIG51bGxzCisvKiBTa2lwIGNy ZWF0aW5nIEdFTkVSQVRFRCBjb2x1bW46IGZhaWxzIGJlY2F1c2UgdGhlIGNvbHVtbiBpcyBu b3QgR0VORVJBVEVEICovCitjcmVhdGUgdGFibGUgcHQyIChpZCBpbnRlZ2VyLCBkcyBkYXRl LCBkZSBkYXRlLCBwIGRhdGVyYW5nZSBub3QgbnVsbCwgcGVyaW9kIGZvciBwIChkcywgZGUp IHdpdGggKGNvbGV4aXN0cyA9IHRydWUpKTsKK0VSUk9SOiAgUGVyaW9kIHAgdXNlcyBhIG5v bi1nZW5lcmF0ZWQgY29sdW1uCisvKiBTa2lwIGNyZWF0aW5nIEdFTkVSQVRFRCBjb2x1bW46 IGZhaWxzIGJlY2F1c2UgdGhlIGNvbHVtbiBpcyBHRU5FUkFURUQgYnV0IHdpdGggdGhlIHdy b25nIGV4cHJlc3Npb24gKi8KKy0tIFRPRE86CistLSBjcmVhdGUgdGFibGUgcHQyIChpZCBp bnRlZ2VyLCBkcyBkYXRlLCBkZSBkYXRlLCBwIGRhdGVyYW5nZSBub3QgbnVsbCBnZW5lcmF0 ZWQgYWx3YXlzIGFzIChkYXRlcmFuZ2UoZGUsIGRzKSkgc3RvcmVkLCBwZXJpb2QgZm9yIHAg KGRzLCBkZSkgd2l0aCAoY29sZXhpc3RzID0gdHJ1ZSkpOworLyogU2tpcCBjcmVhdGluZyBH RU5FUkFURUQgY29sdW1uOiBmYWlscyBiZWNhdXNlIHRoZSBjb2x1bW4gaXMgdGhlIHdyb25n IHR5cGUgKi8KK2NyZWF0ZSB0YWJsZSBwdDIgKGlkIGludGVnZXIsIGRzIGRhdGUsIGRlIGRh dGUsIHAgdHNyYW5nZSBub3QgbnVsbCBnZW5lcmF0ZWQgYWx3YXlzIGFzICh0c3JhbmdlKGRz LCBkZSkpIHN0b3JlZCwgcGVyaW9kIGZvciBwIChkcywgZGUpIHdpdGggKGNvbGV4aXN0cyA9 IHRydWUpKTsKK0VSUk9SOiAgUGVyaW9kIHAgdXNlcyBhIGdlbmVyYXRlZCBjb2x1bW4gd2l0 aCB0aGUgd3JvbmcgdHlwZQorLyogU2tpcCBjcmVhdGluZyBHRU5FUkFURUQgY29sdW1uOiBm YWlscyBiZWNhdXNlIHRoZSBjb2x1bW4gaXMgaW5oZXJpdGVkICovCitjcmVhdGUgdGFibGUg cHQycGFyZW50IChpZCBpbnRlZ2VyLCBkcyBkYXRlLCBkZSBkYXRlLCBwIGRhdGVyYW5nZSBu b3QgbnVsbCBnZW5lcmF0ZWQgYWx3YXlzIGFzIChkYXRlcmFuZ2UoZHMsIGRlKSkgc3RvcmVk KTsKK2NyZWF0ZSB0YWJsZSBwdDIgKHBlcmlvZCBmb3IgcCAoZHMsIGRlKSB3aXRoIChjb2xl eGlzdHMgPSB0cnVlKSkgaW5oZXJpdHMgKHB0MnBhcmVudCk7CitFUlJPUjogIEluaGVyaXRp bmcgaXMgbm90IHN1cHBvcnRlZCB3aGVuIGEgdGFibGUgaGFzIGEgUEVSSU9ECitkcm9wIHRh YmxlIHB0MnBhcmVudDsKKy8qCisgKiBBTFRFUiBUQUJMRSB0ZXN0cworICovCithbHRlciB0 YWJsZSBwdCBkcm9wIHBlcmlvZCBmb3IgcDsKK2FsdGVyIHRhYmxlIHB0IGFkZCBwZXJpb2Qg Zm9yIHN5c3RlbV90aW1lIChkcywgZGUpOworRVJST1I6ICBQRVJJT0QgRk9SIFNZU1RFTV9U SU1FIGlzIG5vdCBzdXBwb3J0ZWQKK2FsdGVyIHRhYmxlIHB0IGFkZCBwZXJpb2QgZm9yIHAg KGRzLCBkZSk7CisvKiBBZGRpbmcgYSBzZWNvbmQgb25lICovCitjcmVhdGUgdGFibGUgcHQy IChpZCBpbnRlZ2VyLCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJpb2QgZm9yIHAxIChkcywgZGUp KTsKK2FsdGVyIHRhYmxlIHB0MiBhZGQgcGVyaW9kIGZvciBwMiAoZHMsIGRlKTsKK2Ryb3Ag dGFibGUgcHQyOworLyogQ2FuJ3QgZHJvcCBpdHMgY29sdW1ucyAqLworYWx0ZXIgdGFibGUg cHQgZHJvcCBjb2x1bW4gZHM7CitFUlJPUjogIGNhbm5vdCBkcm9wIGNvbHVtbiBkcyBvZiB0 YWJsZSBwdCBiZWNhdXNlIG90aGVyIG9iamVjdHMgZGVwZW5kIG9uIGl0CitERVRBSUw6ICBw ZXJpb2QgcCBvbiB0YWJsZSBwdCBkZXBlbmRzIG9uIGNvbHVtbiBkcyBvZiB0YWJsZSBwdAor SElOVDogIFVzZSBEUk9QIC4uLiBDQVNDQURFIHRvIGRyb3AgdGhlIGRlcGVuZGVudCBvYmpl Y3RzIHRvby4KK2FsdGVyIHRhYmxlIHB0IGRyb3AgY29sdW1uIGRlOworRVJST1I6ICBjYW5u b3QgZHJvcCBjb2x1bW4gZGUgb2YgdGFibGUgcHQgYmVjYXVzZSBvdGhlciBvYmplY3RzIGRl cGVuZCBvbiBpdAorREVUQUlMOiAgcGVyaW9kIHAgb24gdGFibGUgcHQgZGVwZW5kcyBvbiBj b2x1bW4gZGUgb2YgdGFibGUgcHQKK0hJTlQ6ICBVc2UgRFJPUCAuLi4gQ0FTQ0FERSB0byBk cm9wIHRoZSBkZXBlbmRlbnQgb2JqZWN0cyB0b28uCisvKiBDYW4ndCBjaGFuZ2UgdGhlIGRh dGEgdHlwZXMgKi8KK2FsdGVyIHRhYmxlIHB0IGFsdGVyIGNvbHVtbiBkcyB0eXBlIHRpbWVz dGFtcDsKK0VSUk9SOiAgY2Fubm90IGFsdGVyIHR5cGUgb2YgYSBjb2x1bW4gdXNlZCBieSBh IHBlcmlvZAorREVUQUlMOiAgcGVyaW9kIHAgb24gdGFibGUgcHQgZGVwZW5kcyBvbiBjb2x1 bW4gImRzIgorYWx0ZXIgdGFibGUgcHQgYWx0ZXIgY29sdW1uIGRzIHR5cGUgdGltZXN0YW1w OworRVJST1I6ICBjYW5ub3QgYWx0ZXIgdHlwZSBvZiBhIGNvbHVtbiB1c2VkIGJ5IGEgcGVy aW9kCitERVRBSUw6ICBwZXJpb2QgcCBvbiB0YWJsZSBwdCBkZXBlbmRzIG9uIGNvbHVtbiAi ZHMiCisvKiBjb2x1bW4vcGVyaW9kIG5hbWVzcGFjZSBjb25mbGljdHMgKi8KK2FsdGVyIHRh YmxlIHB0IGFkZCBjb2x1bW4gcCBpbnRlZ2VyOworRVJST1I6ICBjb2x1bW4gbmFtZSAicCIg Y29uZmxpY3RzIHdpdGggYSBwZXJpb2QgbmFtZQorYWx0ZXIgdGFibGUgcHQgcmVuYW1lIGNv bHVtbiBpZCB0byBwOworRVJST1I6ICBjb2x1bW4gbmFtZSAicCIgY29uZmxpY3RzIHdpdGgg YSBwZXJpb2QgbmFtZQorYWx0ZXIgdGFibGUgcHQgYWRkIHBlcmlvZCBmb3IgdGFibGVvaWQg KGRzLCBkZSk7CitFUlJPUjogIHBlcmlvZCBuYW1lICJ0YWJsZW9pZCIgY29uZmxpY3RzIHdp dGggYSBzeXN0ZW0gY29sdW1uIG5hbWUKK2FsdGVyIHRhYmxlIHB0IGFkZCBwZXJpb2QgZm9y ICIuLi4uLi4uLnBnLmRyb3BwZWQuNC4uLi4uLi4uIiAoZHMsIGRlKTsKK0VSUk9SOiAgcGVy aW9kIG5hbWUgIi4uLi4uLi4ucGcuZHJvcHBlZC40Li4uLi4uLi4iIGNvbmZsaWN0cyB3aXRo IGEgY29sdW1uIG5hbWUKKy8qIGFkZGluZyBjb2x1bW5zIGFuZCB0aGUgcGVyaW9kIGF0IHRo ZSBzYW1lIHRpbWUgKi8KK2NyZWF0ZSB0YWJsZSBwdDIgKGlkIGludGVnZXIpOworYWx0ZXIg dGFibGUgcHQyIGFkZCBjb2x1bW4gZHMgZGF0ZSwgYWRkIGNvbHVtbiBkZSBkYXRlLCBhZGQg cGVyaW9kIGZvciBwIChkcywgZGUpOworZHJvcCB0YWJsZSBwdDI7CisvKiBBbWJpZ3VvdXMg cmFuZ2UgdHlwZXMgcmFpc2UgYW4gZXJyb3IgKi8KK2NyZWF0ZSB0eXBlIG15ZGF0ZXJhbmdl IGFzIHJhbmdlKHN1YnR5cGU9ZGF0ZSk7CitjcmVhdGUgdGFibGUgcHQyIChpZCBpbnQsIGRz IGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBmb3IgcCAoZHMsIGRlKSk7CitFUlJPUjogIGFtYmln dW91cyByYW5nZSBmb3IgdHlwZSBkYXRlCisvKiBZb3UgY2FuIGdpdmUgYW4gZXhwbGljaXQg cmFuZ2UgdHlwZSAqLworY3JlYXRlIHRhYmxlIHB0MiAoaWQgaW50LCBkcyBkYXRlLCBkZSBk YXRlLCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkgd2l0aCAocmFuZ2V0eXBlID0gJ215ZGF0ZXJh bmdlJykpOworZHJvcCB0eXBlIG15ZGF0ZXJhbmdlOworRVJST1I6ICBjYW5ub3QgZHJvcCB0 eXBlIG15ZGF0ZXJhbmdlIGJlY2F1c2Ugb3RoZXIgb2JqZWN0cyBkZXBlbmQgb24gaXQKK0RF VEFJTDogIHBlcmlvZCBwIG9uIHRhYmxlIHB0MiBkZXBlbmRzIG9uIHR5cGUgbXlkYXRlcmFu Z2UKK0hJTlQ6ICBVc2UgRFJPUCAuLi4gQ0FTQ0FERSB0byBkcm9wIHRoZSBkZXBlbmRlbnQg b2JqZWN0cyB0b28uCitkcm9wIHR5cGUgbXlkYXRlcmFuZ2UgY2FzY2FkZTsKK05PVElDRTog IGRyb3AgY2FzY2FkZXMgdG8gcGVyaW9kIHAgb24gdGFibGUgcHQyCitkcm9wIHRhYmxlIHB0 MjsKK2NyZWF0ZSB0YWJsZSBwdDIgKGlkIGludCwgZHMgZGF0ZSwgZGUgZGF0ZSwgcGVyaW9k IGZvciBwIChkcywgZGUpIHdpdGggKHJhbmdldHlwZSA9ICdkYXRlcmFuZ2UnKSk7CisvKiBS YW5nZSB0eXBlIGlzIG5vdCBmb3VuZCAqLworY3JlYXRlIHRhYmxlIHB0MyAoaWQgaW50LCBk cyBkYXRlLCBkZSBkYXRlLCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkgd2l0aCAocmFuZ2V0eXBl ID0gJ25vdGFyYW5nZScpKTsKK0VSUk9SOiAgUmFuZ2UgdHlwZSBub3RhcmFuZ2Ugbm90IGZv dW5kCisvKiBSYW5nZSB0eXBlIGlzIHRoZSB3cm9uZyB0eXBlICovCitjcmVhdGUgdGFibGUg cHQzIChpZCBpbnQsIGRzIGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBmb3IgcCAoZHMsIGRlKSB3 aXRoIChyYW5nZXR5cGUgPSAndHN0enJhbmdlJykpOworRVJST1I6ICBSYW5nZSB0eXBlIHRz dHpyYW5nZSBkb2VzIG5vdCBtYXRjaCBjb2x1bW4gdHlwZSBkYXRlCitkcm9wIHRhYmxlIHB0 MjsKKy8qIFNraXAgY3JlYXRpbmcgR0VORVJBVEVEIGNvbHVtbjogd29ya3MgKi8KK2NyZWF0 ZSB0YWJsZSBwdDIgKGlkIGludGVnZXIsIGRzIGRhdGUsIGRlIGRhdGUsIHAgZGF0ZXJhbmdl IG5vdCBudWxsIGdlbmVyYXRlZCBhbHdheXMgYXMgKGRhdGVyYW5nZShkcywgZGUpKSBzdG9y ZWQpOworYWx0ZXIgdGFibGUgcHQyIGFkZCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkgd2l0aCAo Y29sZXhpc3RzID0gdHJ1ZSk7CitcZCBwdDIKKyAgICAgICAgICAgICAgICBUYWJsZSAicHVi bGljLnB0MiIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBE ZWZhdWx0IAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0t LS0tLS0tCisgaWQgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCisg ZHMgICAgIHwgZGF0ZSAgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCisgZGUgICAgIHwg ZGF0ZSAgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCitQZXJpb2RzOgorICAgIHAgKGRz LCBkZSkKK0NoZWNrIGNvbnN0cmFpbnRzOgorICAgICJwdDJfcF9jaGVjayIgQ0hFQ0sgKGRz IDwgZGUpCisKK2Ryb3AgdGFibGUgcHQyOworLyogU2tpcCBjcmVhdGluZyBHRU5FUkFURUQg Y29sdW1uOiBmYWlscyBiZWNhdXNlIHRoZSBjb2wgaXNuJ3QgdGhlcmUgKi8KK2NyZWF0ZSB0 YWJsZSBwdDIgKGlkIGludGVnZXIsIGRzIGRhdGUsIGRlIGRhdGUpOworYWx0ZXIgdGFibGUg cHQyIGFkZCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkgd2l0aCAoY29sZXhpc3RzID0gdHJ1ZSk7 CitFUlJPUjogIGNvbHVtbiAicCIgb2YgcmVsYXRpb24gInB0MiIgZG9lcyBub3QgZXhpc3QK K2Ryb3AgdGFibGUgcHQyOworLyogU2tpcCBjcmVhdGluZyBHRU5FUkFURUQgY29sdW1uOiBm YWlscyBiZWNhdXNlIHRoZSBvcHRpb24gaGFzIGFuIGludmFsaWQgdmFsdWUgKi8KK2NyZWF0 ZSB0YWJsZSBwdDIgKGlkIGludGVnZXIsIGRzIGRhdGUsIGRlIGRhdGUsIHAgZGF0ZXJhbmdl IG5vdCBudWxsIGdlbmVyYXRlZCBhbHdheXMgYXMgKGRhdGVyYW5nZShkcywgZGUpKSBzdG9y ZWQpOworYWx0ZXIgdGFibGUgcHQyIGFkZCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkgd2l0aCAo Y29sZXhpc3RzID0gJ3doYXRldmVyJyk7CitFUlJPUjogIGNvbGV4aXN0cyByZXF1aXJlcyBh IEJvb2xlYW4gdmFsdWUKK2Ryb3AgdGFibGUgcHQyOworLyogU2tpcCBjcmVhdGluZyBHRU5F UkFURUQgY29sdW1uOiBmYWlscyBiZWNhdXNlIHRoZSBjb2x1bW4gaXMgbm90IE5PVCBOVUxM ICovCitjcmVhdGUgdGFibGUgcHQyIChpZCBpbnRlZ2VyLCBkcyBkYXRlLCBkZSBkYXRlLCBw IGRhdGVyYW5nZSBnZW5lcmF0ZWQgYWx3YXlzIGFzIChkYXRlcmFuZ2UoZHMsIGRlKSkgc3Rv cmVkKTsKK2FsdGVyIHRhYmxlIHB0MiBhZGQgcGVyaW9kIGZvciBwIChkcywgZGUpIHdpdGgg KGNvbGV4aXN0cyA9IHRydWUpOworRVJST1I6ICBQZXJpb2QgcCB1c2VzIGEgZ2VuZXJhdGVk IGNvbHVtbiB0aGF0IGFsbG93cyBudWxscworZHJvcCB0YWJsZSBwdDI7CisvKiBTa2lwIGNy ZWF0aW5nIEdFTkVSQVRFRCBjb2x1bW46IGZhaWxzIGJlY2F1c2UgdGhlIGNvbHVtbiBpcyBu b3QgR0VORVJBVEVEICovCitjcmVhdGUgdGFibGUgcHQyIChpZCBpbnRlZ2VyLCBkcyBkYXRl LCBkZSBkYXRlLCBwIGRhdGVyYW5nZSBub3QgbnVsbCk7CithbHRlciB0YWJsZSBwdDIgYWRk IHBlcmlvZCBmb3IgcCAoZHMsIGRlKSB3aXRoIChjb2xleGlzdHMgPSB0cnVlKTsKK0VSUk9S OiAgUGVyaW9kIHAgdXNlcyBhIG5vbi1nZW5lcmF0ZWQgY29sdW1uCitkcm9wIHRhYmxlIHB0 MjsKKy8qIFNraXAgY3JlYXRpbmcgR0VORVJBVEVEIGNvbHVtbjogZmFpbHMgYmVjYXVzZSB0 aGUgY29sdW1uIGlzIEdFTkVSQVRFRCBidXQgd2l0aCB0aGUgd3JvbmcgZXhwcmVzc2lvbiAq LworLS0gVE9ETzoKKy0tIGNyZWF0ZSB0YWJsZSBwdDIgKGlkIGludGVnZXIsIGRzIGRhdGUs IGRlIGRhdGUsIHAgZGF0ZXJhbmdlIG5vdCBudWxsIGdlbmVyYXRlZCBhbHdheXMgYXMgKGRh dGVyYW5nZShkZSwgZHMpKSBzdG9yZWQpOworLS0gYWx0ZXIgdGFibGUgcHQyIGFkZCBwZXJp b2QgZm9yIHAgKGRzLCBkZSkgd2l0aCAoY29sZXhpc3RzID0gdHJ1ZSk7CisvKiBTa2lwIGNy ZWF0aW5nIEdFTkVSQVRFRCBjb2x1bW46IGZhaWxzIGJlY2F1c2UgdGhlIGNvbHVtbiBpcyB0 aGUgd3JvbmcgdHlwZSAqLworY3JlYXRlIHRhYmxlIHB0MiAoaWQgaW50ZWdlciwgZHMgZGF0 ZSwgZGUgZGF0ZSwgcCB0c3JhbmdlIG5vdCBudWxsIGdlbmVyYXRlZCBhbHdheXMgYXMgKHRz cmFuZ2UoZHMsIGRlKSkgc3RvcmVkKTsKK2FsdGVyIHRhYmxlIHB0MiBhZGQgcGVyaW9kIGZv ciBwIChkcywgZGUpIHdpdGggKGNvbGV4aXN0cyA9IHRydWUpOworRVJST1I6ICBQZXJpb2Qg cCB1c2VzIGEgZ2VuZXJhdGVkIGNvbHVtbiB3aXRoIHRoZSB3cm9uZyB0eXBlCitkcm9wIHRh YmxlIHB0MjsKKy8qIFNraXAgY3JlYXRpbmcgR0VORVJBVEVEIGNvbHVtbjogZmFpbHMgYmVj YXVzZSB0aGUgY29sdW1uIGlzIGluaGVyaXRlZCAqLworY3JlYXRlIHRhYmxlIHB0MnBhcmVu dCAoaWQgaW50ZWdlciwgZHMgZGF0ZSwgZGUgZGF0ZSwgcCBkYXRlcmFuZ2Ugbm90IG51bGwg Z2VuZXJhdGVkIGFsd2F5cyBhcyAoZGF0ZXJhbmdlKGRzLCBkZSkpIHN0b3JlZCk7CitjcmVh dGUgdGFibGUgcHQyICgpIGluaGVyaXRzIChwdDJwYXJlbnQpOworYWx0ZXIgdGFibGUgcHQy IGFkZCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkgd2l0aCAoY29sZXhpc3RzID0gdHJ1ZSk7CitF UlJPUjogIFBlcmlvZCBwIHVzZXMgYSBnZW5lcmF0ZWQgY29sdW1uIHRoYXQgaXMgaW5oZXJp dGVkCitkcm9wIHRhYmxlIHB0MjsKK2Ryb3AgdGFibGUgcHQycGFyZW50OworLyogQ1JFQVRF IFRBQkxFIChMSUtFIC4uLikgKi8KKy8qIFBlcmlvZHMgYXJlIG5vdCBjb3BpZWQgYnkgTElL RSwgc28gdGhlaXIgY29sdW1ucyBhcmVuJ3QgZWl0aGVyICovCitjcmVhdGUgdGFibGUgcHQy IChsaWtlIHB0KTsKK1xkIHB0MgorICAgICAgICAgICAgICAgIFRhYmxlICJwdWJsaWMucHQy IgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1bHQg CistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0K KyBpZCAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKKyBkcyAgICAg fCBkYXRlICAgIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKKyBkZSAgICAgfCBkYXRlICAg IHwgICAgICAgICAgIHwgICAgICAgICAgfCAKKworZHJvcCB0YWJsZSBwdDI7CisvKiBDYW4g YWRkIGEgcGVyaW9kIHJlZmVycmluZyB0byBMSUtFJ2QgY29sdW1ucyAqLworY3JlYXRlIHRh YmxlIG5vdF9wIChpZCBpbnRlZ2VyLCBkcyBkYXRlLCBkZSBkYXRlKTsKK2NyZWF0ZSB0YWJs ZSBwdDIgKGxpa2Ugbm90X3AsIHBlcmlvZCBmb3IgcCAoZHMsIGRlKSk7CitcZCBwdDIKKyAg ICAgICAgICAgICAgICBUYWJsZSAicHVibGljLnB0MiIKKyBDb2x1bW4gfCAgVHlwZSAgIHwg Q29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tCisgaWQgICAgIHwgaW50ZWdlciB8ICAg ICAgICAgICB8ICAgICAgICAgIHwgCisgZHMgICAgIHwgZGF0ZSAgICB8ICAgICAgICAgICB8 ICAgICAgICAgIHwgCisgZGUgICAgIHwgZGF0ZSAgICB8ICAgICAgICAgICB8ICAgICAgICAg IHwgCitQZXJpb2RzOgorICAgIHAgKGRzLCBkZSkKK0NoZWNrIGNvbnN0cmFpbnRzOgorICAg ICJwdDJfcF9jaGVjayIgQ0hFQ0sgKGRzIDwgZGUpCisKK2Ryb3AgdGFibGUgcHQyOworLyog Q2FuIGFkZCBhIHBlcmlvZCB3aXRoIHRoZSBzYW1lIG5hbWUgKi8KK2NyZWF0ZSB0YWJsZSBw dDIgKGxpa2UgcHQsIHBlcmlvZCBmb3IgcCAoZHMsIGRlKSk7CitcZCBwdDIKKyAgICAgICAg ICAgICAgICBUYWJsZSAicHVibGljLnB0MiIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0 aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tCisgaWQgICAgIHwgaW50ZWdlciB8ICAgICAgICAg ICB8ICAgICAgICAgIHwgCisgZHMgICAgIHwgZGF0ZSAgICB8ICAgICAgICAgICB8ICAgICAg ICAgIHwgCisgZGUgICAgIHwgZGF0ZSAgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCitQ ZXJpb2RzOgorICAgIHAgKGRzLCBkZSkKK0NoZWNrIGNvbnN0cmFpbnRzOgorICAgICJwdDJf cF9jaGVjayIgQ0hFQ0sgKGRzIDwgZGUpCisKK2Ryb3AgdGFibGUgcHQyOworLyogQ2FuIGFk ZCBhIHBlcmlvZCB3aXRoIGEgZGlmZmVyZW50IG5hbWUgKi8KK2NyZWF0ZSB0YWJsZSBwdDIg KGxpa2UgcHQsIHBlcmlvZCBmb3IgcDIgKGRzLCBkZSkpOworXGQgcHQyCisgICAgICAgICAg ICAgICAgVGFibGUgInB1YmxpYy5wdDIiCisgQ29sdW1uIHwgIFR5cGUgICB8IENvbGxhdGlv biB8IE51bGxhYmxlIHwgRGVmYXVsdCAKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tKy0tLS0tLS0tLQorIGlkICAgICB8IGludGVnZXIgfCAgICAgICAgICAg fCAgICAgICAgICB8IAorIGRzICAgICB8IGRhdGUgICAgfCAgICAgICAgICAgfCAgICAgICAg ICB8IAorIGRlICAgICB8IGRhdGUgICAgfCAgICAgICAgICAgfCAgICAgICAgICB8IAorUGVy aW9kczoKKyAgICBwMiAoZHMsIGRlKQorQ2hlY2sgY29uc3RyYWludHM6CisgICAgInB0Ml9w Ml9jaGVjayIgQ0hFQ0sgKGRzIDwgZGUpCisKK2Ryb3AgdGFibGUgcHQyOworLyogQ2FuJ3Qg YWRkIGEgcGVyaW9kIHdob3NlIG5hbWUgY29uZmxpY3RzIHdpdGggYSBMSUtFJ2QgY29sdW1u ICovCitjcmVhdGUgdGFibGUgcHQyIChsaWtlIHB0LCBwZXJpb2QgZm9yIGlkIChkcywgZGUp KTsKK0VSUk9SOiAgcGVyaW9kIG5hbWUgImlkIiBjb25mbGljdHMgd2l0aCBhIGNvbHVtbiBu YW1lCisvKiBDUkVBVEUgVEFMQkUgSU5IRVJJVFMgKi8KKy8qIENhbid0IGluaGVyaXQgZnJv bSBhIHRhYmxlIHdpdGggYSBwZXJpb2QgKi8KK2NyZWF0ZSB0YWJsZSBwdDIgKG5hbWUgdGV4 dCkgaW5oZXJpdHMgKHB0KTsKK0VSUk9SOiAgSW5oZXJpdGluZyBmcm9tIGEgdGFibGUgd2l0 aCBhIFBFUklPRCBpcyBub3Qgc3VwcG9ydGVkCisvKiBDYW4ndCBpbmhlcml0IHdpdGggYSBw ZXJpb2QgKi8KK2NyZWF0ZSB0YWJsZSBwdDIgKGQycyBkYXRlLCBkMmUgZGF0ZSwgcGVyaW9k IGZvciBwIChkMnMsIGQyZSkpIGluaGVyaXRzIChub3RfcCk7CitFUlJPUjogIEluaGVyaXRp bmcgaXMgbm90IHN1cHBvcnRlZCB3aGVuIGEgdGFibGUgaGFzIGEgUEVSSU9ECitkcm9wIHRh YmxlIG5vdF9wOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hl ZHVsZSBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKaW5kZXggNGZkN2Yz ZDBjNzMuLjY2ODVjYzM1N2RmIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFs bGVsX3NjaGVkdWxlCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUK QEAgLTQzLDcgKzQzLDcgQEAgdGVzdDogY29weSBjb3B5c2VsZWN0IGNvcHlkbWwgaW5zZXJ0 IGluc2VydF9jb25mbGljdAogIyBOb3RlOiBtYW55IG9mIHRoZSB0ZXN0cyBpbiBsYXRlciBn cm91cHMgZGVwZW5kIG9uIGNyZWF0ZV9pbmRleAogIyAtLS0tLS0tLS0tCiB0ZXN0OiBjcmVh dGVfZnVuY3Rpb25fYyBjcmVhdGVfbWlzYyBjcmVhdGVfb3BlcmF0b3IgY3JlYXRlX3Byb2Nl ZHVyZSBjcmVhdGVfdGFibGUgY3JlYXRlX3R5cGUgY3JlYXRlX3NjaGVtYQotdGVzdDogY3Jl YXRlX2luZGV4IGNyZWF0ZV9pbmRleF9zcGdpc3QgY3JlYXRlX3ZpZXcgaW5kZXhfaW5jbHVk aW5nIGluZGV4X2luY2x1ZGluZ19naXN0Cit0ZXN0OiBjcmVhdGVfaW5kZXggY3JlYXRlX2lu ZGV4X3NwZ2lzdCBjcmVhdGVfdmlldyBpbmRleF9pbmNsdWRpbmcgaW5kZXhfaW5jbHVkaW5n X2dpc3QgcGVyaW9kcwogCiAjIC0tLS0tLS0tLS0KICMgQW5vdGhlciBncm91cCBvZiBwYXJh bGxlbCB0ZXN0cwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGVyaW9kcy5z cWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wZXJpb2RzLnNxbApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNWQzOTcxMmQyYjQKLS0tIC9kZXYvbnVsbAorKysg Yi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wZXJpb2RzLnNxbApAQCAtMCwwICsxLDE3OCBAQAor LyogU3lzdGVtIHBlcmlvZHMgYXJlIG5vdCBpbXBsZW1lbnRlZCAqLworY3JlYXRlIHRhYmxl IHB0IChpZCBpbnRlZ2VyLCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJpb2QgZm9yIHN5c3RlbV90 aW1lIChkcywgZGUpKTsKKworLyogUGVyaW9kcyBtdXN0IHNwZWNpZnkgYWN0dWFsIGNvbHVt bnMgKi8KK2NyZWF0ZSB0YWJsZSBwdCAoaWQgaW50ZWdlciwgZHMgZGF0ZSwgZGUgZGF0ZSwg cGVyaW9kIGZvciBwIChib2d1cywgZGUpKTsKK2NyZWF0ZSB0YWJsZSBwdCAoaWQgaW50ZWdl ciwgZHMgZGF0ZSwgZGUgZGF0ZSwgcGVyaW9kIGZvciBwIChkcywgYm9ndXMpKTsKKworLyog RGF0YSB0eXBlcyBtdXN0IG1hdGNoIGV4YWN0bHkgKi8KK2NyZWF0ZSB0YWJsZSBwdCAoaWQg aW50ZWdlciwgZHMgZGF0ZSwgZGUgdGltZXN0YW1wLCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkp OworY3JlYXRlIHRhYmxlIHB0IChpZCBpbnRlZ2VyLCBkcyB0ZXh0IGNvbGxhdGUgIkMiLCBk ZSB0ZXh0IGNvbGxhdGUgIlBPU0lYIiwgcGVyaW9kIGZvciBwIChkcywgZGUpKTsKKworLyog UGVyaW9kcyBtdXN0IGhhdmUgYSBkZWZhdWx0IEJUcmVlIG9wZXJhdG9yIGNsYXNzICovCitj cmVhdGUgdGFibGUgcHQgKGlkIGludGVnZXIsIGRzIHhtbCwgZGUgeG1sLCBwZXJpb2QgZm9y IHAgKGRzLCBkZSkpOworCisvKiBQZXJpb2QgYW5kIGNvbHVtbiBuYW1lcyBhcmUgaW4gdGhl IHNhbWUgbmFtZXNwYWNlICovCitjcmVhdGUgdGFibGUgcHQgKGlkIGludGVnZXIsIGRzIGRh dGUsIGRlIGRhdGUsIHBlcmlvZCBmb3IgY3RpZCAoZHMsIGRlKSk7CitjcmVhdGUgdGFibGUg cHQgKGlkIGludGVnZXIsIGRzIGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBmb3IgaWQgKGRzLCBk ZSkpOworCisvKiBQZXJpb2QgbmFtZSBjYW4ndCBiZSBnaXZlbiBtb3JlIHRoYW4gb25jZSAq LworY3JlYXRlIHRhYmxlIHB0IChpZCBpbnRlZ2VyLCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJp b2QgZm9yIHAgKGRzLCBkZSksIHBlcmlvZCBmb3IgcCAoZHMsIGRlKSk7CisKKy8qIE5vdyBt YWtlIG9uZSB0aGF0IHdvcmtzICovCitjcmVhdGUgdGFibGUgcHQgKGlkIGludGVnZXIsIGRz IGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBmb3IgcCAoZHMsIGRlKSk7CisKKy8qIFNFTEVDVCAq IGV4Y2x1ZGVzIHRoZSBQRVJJT0QgKi8KK2luc2VydCBpbnRvIHB0IHZhbHVlcyAoMSwgJzIw MDAtMDEtMDEnLCAnMjAwMS0wMS0wMScpOworc2VsZWN0ICogZnJvbSBwdDsKKworLyogWW91 IGNhbiBnZXQgaXQgaWYgeW91IHdhbnQgKi8KK3NlbGVjdCAqLCBwIGZyb20gcHQ7CisKKy8q IFR3byBhcmUgb2theSAqLworY3JlYXRlIHRhYmxlIHB0MiAoaWQgaW50ZWdlciwgZHMgZGF0 ZSwgZGUgZGF0ZSwgcGVyaW9kIGZvciBwMSAoZHMsIGRlKSwgcGVyaW9kIGZvciBwMiAoZHMs IGRlKSk7Citkcm9wIHRhYmxlIHB0MjsKKworLyogU2tpcCBjcmVhdGluZyBHRU5FUkFURUQg Y29sdW1uOiB3b3JrcyAqLworY3JlYXRlIHRhYmxlIHB0MiAoaWQgaW50ZWdlciwgZHMgZGF0 ZSwgZGUgZGF0ZSwgcCBkYXRlcmFuZ2Ugbm90IG51bGwgZ2VuZXJhdGVkIGFsd2F5cyBhcyAo ZGF0ZXJhbmdlKGRzLCBkZSkpIHN0b3JlZCwgcGVyaW9kIGZvciBwIChkcywgZGUpIHdpdGgg KGNvbGV4aXN0cyA9IHRydWUpKTsKK1xkIHB0MgorZHJvcCB0YWJsZSBwdDI7CisvKiBTa2lw IGNyZWF0aW5nIEdFTkVSQVRFRCBjb2x1bW46IGZhaWxzIGJlY2F1c2UgdGhlIGNvbCBpc24n dCB0aGVyZSAqLworY3JlYXRlIHRhYmxlIHB0MiAoaWQgaW50ZWdlciwgZHMgZGF0ZSwgZGUg ZGF0ZSwgcGVyaW9kIGZvciBwIChkcywgZGUpIHdpdGggKGNvbGV4aXN0cyA9IHRydWUpKTsK Ky8qIFNraXAgY3JlYXRpbmcgR0VORVJBVEVEIGNvbHVtbjogZmFpbHMgYmVjYXVzZSB0aGUg b3B0aW9uIGhhcyBhbiBpbnZhbGlkIHZhbHVlICovCitjcmVhdGUgdGFibGUgcHQyIChpZCBp bnRlZ2VyLCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkgd2l0aCAo Y29sZXhpc3RzID0gJ3doYXRldmVyJykpOworLyogU2tpcCBjcmVhdGluZyBHRU5FUkFURUQg Y29sdW1uOiBmYWlscyBiZWNhdXNlIHRoZSBjb2x1bW4gaXMgbm90IE5PVCBOVUxMICovCitj cmVhdGUgdGFibGUgcHQyIChpZCBpbnRlZ2VyLCBkcyBkYXRlLCBkZSBkYXRlLCBwIGRhdGVy YW5nZSBnZW5lcmF0ZWQgYWx3YXlzIGFzIChkYXRlcmFuZ2UoZHMsIGRlKSkgc3RvcmVkLCBw ZXJpb2QgZm9yIHAgKGRzLCBkZSkgd2l0aCAoY29sZXhpc3RzID0gdHJ1ZSkpOworLyogU2tp cCBjcmVhdGluZyBHRU5FUkFURUQgY29sdW1uOiBmYWlscyBiZWNhdXNlIHRoZSBjb2x1bW4g aXMgbm90IEdFTkVSQVRFRCAqLworY3JlYXRlIHRhYmxlIHB0MiAoaWQgaW50ZWdlciwgZHMg ZGF0ZSwgZGUgZGF0ZSwgcCBkYXRlcmFuZ2Ugbm90IG51bGwsIHBlcmlvZCBmb3IgcCAoZHMs IGRlKSB3aXRoIChjb2xleGlzdHMgPSB0cnVlKSk7CisvKiBTa2lwIGNyZWF0aW5nIEdFTkVS QVRFRCBjb2x1bW46IGZhaWxzIGJlY2F1c2UgdGhlIGNvbHVtbiBpcyBHRU5FUkFURUQgYnV0 IHdpdGggdGhlIHdyb25nIGV4cHJlc3Npb24gKi8KKy0tIFRPRE86CistLSBjcmVhdGUgdGFi bGUgcHQyIChpZCBpbnRlZ2VyLCBkcyBkYXRlLCBkZSBkYXRlLCBwIGRhdGVyYW5nZSBub3Qg bnVsbCBnZW5lcmF0ZWQgYWx3YXlzIGFzIChkYXRlcmFuZ2UoZGUsIGRzKSkgc3RvcmVkLCBw ZXJpb2QgZm9yIHAgKGRzLCBkZSkgd2l0aCAoY29sZXhpc3RzID0gdHJ1ZSkpOworLyogU2tp cCBjcmVhdGluZyBHRU5FUkFURUQgY29sdW1uOiBmYWlscyBiZWNhdXNlIHRoZSBjb2x1bW4g aXMgdGhlIHdyb25nIHR5cGUgKi8KK2NyZWF0ZSB0YWJsZSBwdDIgKGlkIGludGVnZXIsIGRz IGRhdGUsIGRlIGRhdGUsIHAgdHNyYW5nZSBub3QgbnVsbCBnZW5lcmF0ZWQgYWx3YXlzIGFz ICh0c3JhbmdlKGRzLCBkZSkpIHN0b3JlZCwgcGVyaW9kIGZvciBwIChkcywgZGUpIHdpdGgg KGNvbGV4aXN0cyA9IHRydWUpKTsKKy8qIFNraXAgY3JlYXRpbmcgR0VORVJBVEVEIGNvbHVt bjogZmFpbHMgYmVjYXVzZSB0aGUgY29sdW1uIGlzIGluaGVyaXRlZCAqLworY3JlYXRlIHRh YmxlIHB0MnBhcmVudCAoaWQgaW50ZWdlciwgZHMgZGF0ZSwgZGUgZGF0ZSwgcCBkYXRlcmFu Z2Ugbm90IG51bGwgZ2VuZXJhdGVkIGFsd2F5cyBhcyAoZGF0ZXJhbmdlKGRzLCBkZSkpIHN0 b3JlZCk7CitjcmVhdGUgdGFibGUgcHQyIChwZXJpb2QgZm9yIHAgKGRzLCBkZSkgd2l0aCAo Y29sZXhpc3RzID0gdHJ1ZSkpIGluaGVyaXRzIChwdDJwYXJlbnQpOworZHJvcCB0YWJsZSBw dDJwYXJlbnQ7CisKKworLyoKKyAqIEFMVEVSIFRBQkxFIHRlc3RzCisgKi8KK2FsdGVyIHRh YmxlIHB0IGRyb3AgcGVyaW9kIGZvciBwOworYWx0ZXIgdGFibGUgcHQgYWRkIHBlcmlvZCBm b3Igc3lzdGVtX3RpbWUgKGRzLCBkZSk7CithbHRlciB0YWJsZSBwdCBhZGQgcGVyaW9kIGZv ciBwIChkcywgZGUpOworCisvKiBBZGRpbmcgYSBzZWNvbmQgb25lICovCitjcmVhdGUgdGFi bGUgcHQyIChpZCBpbnRlZ2VyLCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJpb2QgZm9yIHAxIChk cywgZGUpKTsKK2FsdGVyIHRhYmxlIHB0MiBhZGQgcGVyaW9kIGZvciBwMiAoZHMsIGRlKTsK K2Ryb3AgdGFibGUgcHQyOworCisvKiBDYW4ndCBkcm9wIGl0cyBjb2x1bW5zICovCithbHRl ciB0YWJsZSBwdCBkcm9wIGNvbHVtbiBkczsKK2FsdGVyIHRhYmxlIHB0IGRyb3AgY29sdW1u IGRlOworCisvKiBDYW4ndCBjaGFuZ2UgdGhlIGRhdGEgdHlwZXMgKi8KK2FsdGVyIHRhYmxl IHB0IGFsdGVyIGNvbHVtbiBkcyB0eXBlIHRpbWVzdGFtcDsKK2FsdGVyIHRhYmxlIHB0IGFs dGVyIGNvbHVtbiBkcyB0eXBlIHRpbWVzdGFtcDsKKworLyogY29sdW1uL3BlcmlvZCBuYW1l c3BhY2UgY29uZmxpY3RzICovCithbHRlciB0YWJsZSBwdCBhZGQgY29sdW1uIHAgaW50ZWdl cjsKK2FsdGVyIHRhYmxlIHB0IHJlbmFtZSBjb2x1bW4gaWQgdG8gcDsKK2FsdGVyIHRhYmxl IHB0IGFkZCBwZXJpb2QgZm9yIHRhYmxlb2lkIChkcywgZGUpOworYWx0ZXIgdGFibGUgcHQg YWRkIHBlcmlvZCBmb3IgIi4uLi4uLi4ucGcuZHJvcHBlZC40Li4uLi4uLi4iIChkcywgZGUp OworCisvKiBhZGRpbmcgY29sdW1ucyBhbmQgdGhlIHBlcmlvZCBhdCB0aGUgc2FtZSB0aW1l ICovCitjcmVhdGUgdGFibGUgcHQyIChpZCBpbnRlZ2VyKTsKK2FsdGVyIHRhYmxlIHB0MiBh ZGQgY29sdW1uIGRzIGRhdGUsIGFkZCBjb2x1bW4gZGUgZGF0ZSwgYWRkIHBlcmlvZCBmb3Ig cCAoZHMsIGRlKTsKK2Ryb3AgdGFibGUgcHQyOworCisvKiBBbWJpZ3VvdXMgcmFuZ2UgdHlw ZXMgcmFpc2UgYW4gZXJyb3IgKi8KK2NyZWF0ZSB0eXBlIG15ZGF0ZXJhbmdlIGFzIHJhbmdl KHN1YnR5cGU9ZGF0ZSk7CitjcmVhdGUgdGFibGUgcHQyIChpZCBpbnQsIGRzIGRhdGUsIGRl IGRhdGUsIHBlcmlvZCBmb3IgcCAoZHMsIGRlKSk7CisKKy8qIFlvdSBjYW4gZ2l2ZSBhbiBl eHBsaWNpdCByYW5nZSB0eXBlICovCitjcmVhdGUgdGFibGUgcHQyIChpZCBpbnQsIGRzIGRh dGUsIGRlIGRhdGUsIHBlcmlvZCBmb3IgcCAoZHMsIGRlKSB3aXRoIChyYW5nZXR5cGUgPSAn bXlkYXRlcmFuZ2UnKSk7Citkcm9wIHR5cGUgbXlkYXRlcmFuZ2U7Citkcm9wIHR5cGUgbXlk YXRlcmFuZ2UgY2FzY2FkZTsKK2Ryb3AgdGFibGUgcHQyOworY3JlYXRlIHRhYmxlIHB0MiAo aWQgaW50LCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkgd2l0aCAo cmFuZ2V0eXBlID0gJ2RhdGVyYW5nZScpKTsKKworLyogUmFuZ2UgdHlwZSBpcyBub3QgZm91 bmQgKi8KK2NyZWF0ZSB0YWJsZSBwdDMgKGlkIGludCwgZHMgZGF0ZSwgZGUgZGF0ZSwgcGVy aW9kIGZvciBwIChkcywgZGUpIHdpdGggKHJhbmdldHlwZSA9ICdub3RhcmFuZ2UnKSk7CisK Ky8qIFJhbmdlIHR5cGUgaXMgdGhlIHdyb25nIHR5cGUgKi8KK2NyZWF0ZSB0YWJsZSBwdDMg KGlkIGludCwgZHMgZGF0ZSwgZGUgZGF0ZSwgcGVyaW9kIGZvciBwIChkcywgZGUpIHdpdGgg KHJhbmdldHlwZSA9ICd0c3R6cmFuZ2UnKSk7Citkcm9wIHRhYmxlIHB0MjsKKworLyogU2tp cCBjcmVhdGluZyBHRU5FUkFURUQgY29sdW1uOiB3b3JrcyAqLworY3JlYXRlIHRhYmxlIHB0 MiAoaWQgaW50ZWdlciwgZHMgZGF0ZSwgZGUgZGF0ZSwgcCBkYXRlcmFuZ2Ugbm90IG51bGwg Z2VuZXJhdGVkIGFsd2F5cyBhcyAoZGF0ZXJhbmdlKGRzLCBkZSkpIHN0b3JlZCk7CithbHRl ciB0YWJsZSBwdDIgYWRkIHBlcmlvZCBmb3IgcCAoZHMsIGRlKSB3aXRoIChjb2xleGlzdHMg PSB0cnVlKTsKK1xkIHB0MgorZHJvcCB0YWJsZSBwdDI7CisvKiBTa2lwIGNyZWF0aW5nIEdF TkVSQVRFRCBjb2x1bW46IGZhaWxzIGJlY2F1c2UgdGhlIGNvbCBpc24ndCB0aGVyZSAqLwor Y3JlYXRlIHRhYmxlIHB0MiAoaWQgaW50ZWdlciwgZHMgZGF0ZSwgZGUgZGF0ZSk7CithbHRl ciB0YWJsZSBwdDIgYWRkIHBlcmlvZCBmb3IgcCAoZHMsIGRlKSB3aXRoIChjb2xleGlzdHMg PSB0cnVlKTsKK2Ryb3AgdGFibGUgcHQyOworLyogU2tpcCBjcmVhdGluZyBHRU5FUkFURUQg Y29sdW1uOiBmYWlscyBiZWNhdXNlIHRoZSBvcHRpb24gaGFzIGFuIGludmFsaWQgdmFsdWUg Ki8KK2NyZWF0ZSB0YWJsZSBwdDIgKGlkIGludGVnZXIsIGRzIGRhdGUsIGRlIGRhdGUsIHAg ZGF0ZXJhbmdlIG5vdCBudWxsIGdlbmVyYXRlZCBhbHdheXMgYXMgKGRhdGVyYW5nZShkcywg ZGUpKSBzdG9yZWQpOworYWx0ZXIgdGFibGUgcHQyIGFkZCBwZXJpb2QgZm9yIHAgKGRzLCBk ZSkgd2l0aCAoY29sZXhpc3RzID0gJ3doYXRldmVyJyk7Citkcm9wIHRhYmxlIHB0MjsKKy8q IFNraXAgY3JlYXRpbmcgR0VORVJBVEVEIGNvbHVtbjogZmFpbHMgYmVjYXVzZSB0aGUgY29s dW1uIGlzIG5vdCBOT1QgTlVMTCAqLworY3JlYXRlIHRhYmxlIHB0MiAoaWQgaW50ZWdlciwg ZHMgZGF0ZSwgZGUgZGF0ZSwgcCBkYXRlcmFuZ2UgZ2VuZXJhdGVkIGFsd2F5cyBhcyAoZGF0 ZXJhbmdlKGRzLCBkZSkpIHN0b3JlZCk7CithbHRlciB0YWJsZSBwdDIgYWRkIHBlcmlvZCBm b3IgcCAoZHMsIGRlKSB3aXRoIChjb2xleGlzdHMgPSB0cnVlKTsKK2Ryb3AgdGFibGUgcHQy OworLyogU2tpcCBjcmVhdGluZyBHRU5FUkFURUQgY29sdW1uOiBmYWlscyBiZWNhdXNlIHRo ZSBjb2x1bW4gaXMgbm90IEdFTkVSQVRFRCAqLworY3JlYXRlIHRhYmxlIHB0MiAoaWQgaW50 ZWdlciwgZHMgZGF0ZSwgZGUgZGF0ZSwgcCBkYXRlcmFuZ2Ugbm90IG51bGwpOworYWx0ZXIg dGFibGUgcHQyIGFkZCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkgd2l0aCAoY29sZXhpc3RzID0g dHJ1ZSk7Citkcm9wIHRhYmxlIHB0MjsKKy8qIFNraXAgY3JlYXRpbmcgR0VORVJBVEVEIGNv bHVtbjogZmFpbHMgYmVjYXVzZSB0aGUgY29sdW1uIGlzIEdFTkVSQVRFRCBidXQgd2l0aCB0 aGUgd3JvbmcgZXhwcmVzc2lvbiAqLworLS0gVE9ETzoKKy0tIGNyZWF0ZSB0YWJsZSBwdDIg KGlkIGludGVnZXIsIGRzIGRhdGUsIGRlIGRhdGUsIHAgZGF0ZXJhbmdlIG5vdCBudWxsIGdl bmVyYXRlZCBhbHdheXMgYXMgKGRhdGVyYW5nZShkZSwgZHMpKSBzdG9yZWQpOworLS0gYWx0 ZXIgdGFibGUgcHQyIGFkZCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkgd2l0aCAoY29sZXhpc3Rz ID0gdHJ1ZSk7CisvKiBTa2lwIGNyZWF0aW5nIEdFTkVSQVRFRCBjb2x1bW46IGZhaWxzIGJl Y2F1c2UgdGhlIGNvbHVtbiBpcyB0aGUgd3JvbmcgdHlwZSAqLworY3JlYXRlIHRhYmxlIHB0 MiAoaWQgaW50ZWdlciwgZHMgZGF0ZSwgZGUgZGF0ZSwgcCB0c3JhbmdlIG5vdCBudWxsIGdl bmVyYXRlZCBhbHdheXMgYXMgKHRzcmFuZ2UoZHMsIGRlKSkgc3RvcmVkKTsKK2FsdGVyIHRh YmxlIHB0MiBhZGQgcGVyaW9kIGZvciBwIChkcywgZGUpIHdpdGggKGNvbGV4aXN0cyA9IHRy dWUpOworZHJvcCB0YWJsZSBwdDI7CisvKiBTa2lwIGNyZWF0aW5nIEdFTkVSQVRFRCBjb2x1 bW46IGZhaWxzIGJlY2F1c2UgdGhlIGNvbHVtbiBpcyBpbmhlcml0ZWQgKi8KK2NyZWF0ZSB0 YWJsZSBwdDJwYXJlbnQgKGlkIGludGVnZXIsIGRzIGRhdGUsIGRlIGRhdGUsIHAgZGF0ZXJh bmdlIG5vdCBudWxsIGdlbmVyYXRlZCBhbHdheXMgYXMgKGRhdGVyYW5nZShkcywgZGUpKSBz dG9yZWQpOworY3JlYXRlIHRhYmxlIHB0MiAoKSBpbmhlcml0cyAocHQycGFyZW50KTsKK2Fs dGVyIHRhYmxlIHB0MiBhZGQgcGVyaW9kIGZvciBwIChkcywgZGUpIHdpdGggKGNvbGV4aXN0 cyA9IHRydWUpOworZHJvcCB0YWJsZSBwdDI7Citkcm9wIHRhYmxlIHB0MnBhcmVudDsKKwor LyogQ1JFQVRFIFRBQkxFIChMSUtFIC4uLikgKi8KKworLyogUGVyaW9kcyBhcmUgbm90IGNv cGllZCBieSBMSUtFLCBzbyB0aGVpciBjb2x1bW5zIGFyZW4ndCBlaXRoZXIgKi8KK2NyZWF0 ZSB0YWJsZSBwdDIgKGxpa2UgcHQpOworXGQgcHQyCitkcm9wIHRhYmxlIHB0MjsKKworLyog Q2FuIGFkZCBhIHBlcmlvZCByZWZlcnJpbmcgdG8gTElLRSdkIGNvbHVtbnMgKi8KK2NyZWF0 ZSB0YWJsZSBub3RfcCAoaWQgaW50ZWdlciwgZHMgZGF0ZSwgZGUgZGF0ZSk7CitjcmVhdGUg dGFibGUgcHQyIChsaWtlIG5vdF9wLCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkpOworXGQgcHQy Citkcm9wIHRhYmxlIHB0MjsKKworLyogQ2FuIGFkZCBhIHBlcmlvZCB3aXRoIHRoZSBzYW1l IG5hbWUgKi8KK2NyZWF0ZSB0YWJsZSBwdDIgKGxpa2UgcHQsIHBlcmlvZCBmb3IgcCAoZHMs IGRlKSk7CitcZCBwdDIKK2Ryb3AgdGFibGUgcHQyOworCisvKiBDYW4gYWRkIGEgcGVyaW9k IHdpdGggYSBkaWZmZXJlbnQgbmFtZSAqLworY3JlYXRlIHRhYmxlIHB0MiAobGlrZSBwdCwg cGVyaW9kIGZvciBwMiAoZHMsIGRlKSk7CitcZCBwdDIKK2Ryb3AgdGFibGUgcHQyOworCisv KiBDYW4ndCBhZGQgYSBwZXJpb2Qgd2hvc2UgbmFtZSBjb25mbGljdHMgd2l0aCBhIExJS0Un ZCBjb2x1bW4gKi8KK2NyZWF0ZSB0YWJsZSBwdDIgKGxpa2UgcHQsIHBlcmlvZCBmb3IgaWQg KGRzLCBkZSkpOworCisvKiBDUkVBVEUgVEFMQkUgSU5IRVJJVFMgKi8KKworLyogQ2FuJ3Qg aW5oZXJpdCBmcm9tIGEgdGFibGUgd2l0aCBhIHBlcmlvZCAqLworY3JlYXRlIHRhYmxlIHB0 MiAobmFtZSB0ZXh0KSBpbmhlcml0cyAocHQpOworCisvKiBDYW4ndCBpbmhlcml0IHdpdGgg YSBwZXJpb2QgKi8KK2NyZWF0ZSB0YWJsZSBwdDIgKGQycyBkYXRlLCBkMmUgZGF0ZSwgcGVy aW9kIGZvciBwIChkMnMsIGQyZSkpIGluaGVyaXRzIChub3RfcCk7CisKK2Ryb3AgdGFibGUg bm90X3A7Ci0tIAoyLjQyLjAKCg== --------------XirkSnpA0J2rgDaW8dSEFd2s--