<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>84174</bug_id>
          
          <creation_ts>2012-04-17 11:28:25 -0700</creation_ts>
          <short_desc>IndexedDB: implement cursor.advance()</short_desc>
          <delta_ts>2012-04-25 19:22:56 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>84280</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alec Flett">alecflett</reporter>
          <assigned_to name="Alec Flett">alecflett</assigned_to>
          <cc>abarth</cc>
    
    <cc>jsbell</cc>
    
    <cc>levin+threading</cc>
    
    <cc>ojan</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>604175</commentid>
    <comment_count>0</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-04-17 11:28:25 -0700</bug_when>
    <thetext>As per the spec.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608227</commentid>
    <comment_count>1</comment_count>
      <attachid>138470</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-04-23 17:30:42 -0700</bug_when>
    <thetext>Created attachment 138470
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608884</commentid>
    <comment_count>2</comment_count>
      <attachid>138610</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-04-24 11:35:52 -0700</bug_when>
    <thetext>Created attachment 138610
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608886</commentid>
    <comment_count>3</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-04-24 11:37:51 -0700</bug_when>
    <thetext>jsbell@ - here&apos;s the webkit side of things - with a patch for prefetching

the one open issue I had was how to throw a JS type error. Spec sez:

If the value for count is 0 (zero) or a negative number, this method must throw a JavaScript TypeError exception.

I couldn&apos;t for the life of me figure out how to throw a non-DOM TypeError - I suspect it&apos;s in the ScriptExecutionContext somewhere...?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608899</commentid>
    <comment_count>4</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-04-24 11:46:38 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; the one open issue I had was how to throw a JS type error.

Yeah, we&apos;re not wired up to do that yet. &quot;IDB Exception Reform&quot; is tracked on the Chromium side as crbug.com/112664 - we need to set up DOM4-style exceptions and use JS errors for certain things. Use TYPE_MISMATCH_ERR</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608923</commentid>
    <comment_count>5</comment_count>
      <attachid>138618</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-04-24 12:16:32 -0700</bug_when>
    <thetext>Created attachment 138618
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608925</commentid>
    <comment_count>6</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-04-24 12:17:52 -0700</bug_when>
    <thetext>added TYPE_MISMATCH_ERR and a test with relevant  FIXMEs (can&apos;t add bug#&apos;s yet because we don&apos;t have webkit bugs for the exception stuff)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608971</commentid>
    <comment_count>7</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-04-24 13:06:21 -0700</bug_when>
    <thetext>My comments (against the second patch):

View in context: https://bugs.webkit.org/attachment.cgi?id=138610&amp;action=review

&gt; Source/WebCore/ChangeLog:10
&gt; +        Implement IDBCursor.advance() to spec.

This should go above the Test: line

&gt; Source/WebCore/Modules/indexeddb/IDBCursor.cpp:132
&gt; +    // FIXME: spec says if count == 0, we should throw a JavaScript TypeError

As noted: if (!count) { ec = TYPE_MISMATCH_ERR; return; }

&gt; Source/WebCore/Modules/indexeddb/IDBCursorBackendImpl.cpp:135
&gt;  // IMPORTANT: If this ever 1) fires an &apos;error&apos; event and 2) it&apos;s possible to fire another event afterwards,

This comment should probably either stick with continueFunctionInternal or be duplicated.

&gt; Source/WebCore/Modules/indexeddb/IDBCursorBackendImpl.cpp:147
&gt; +    // do I need something special here?

Remove comment

&gt; Source/WebCore/Modules/indexeddb/IDBLevelDBBackingStore.cpp:984
&gt; +    virtual bool continueFunction(const IDBKey* = 0, IteratorState = Seek);

Are these default values necessary? Won&apos;t they be provided by the declaration in IDBBackingStore::Cursor?

&gt; LayoutTests/storage/indexeddb/resources/cursor-advance.js:8
&gt; +// test advance within range

Remove these comments.

&gt; LayoutTests/storage/indexeddb/resources/cursor-advance.js:31
&gt; +var indexData = [

This is unused, remove it.

&gt; LayoutTests/storage/indexeddb/resources/cursor-advance.js:41
&gt; +    description = &quot;My Test Database&quot;;

Remove description (obsolete API; dgrogan is working on a patch to drop this from all tests)

&gt; LayoutTests/storage/indexeddb/resources/cursor-advance.js:74
&gt; +// make a test that uses continue() to get to startPos, then passes

Capitalization, punctuation.

&gt; LayoutTests/storage/indexeddb/resources/cursor-advance.js:76
&gt; +function makeAdvanceTest(startPos, bounds, direction, count, expectedValue)

It looks like all callers pass null for bounds and direction - are further tests forthcoming?

&gt; LayoutTests/storage/indexeddb/resources/cursor-advance.js:119
&gt; +

Use blank lines consistently.

&gt; LayoutTests/storage/indexeddb/resources/shared.js:120
&gt; +function waitFor()

Unused - don&apos;t think you want this in this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>609061</commentid>
    <comment_count>8</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-04-24 14:23:58 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; &gt; Source/WebCore/Modules/indexeddb/IDBCursorBackendImpl.cpp:135
&gt; &gt;  // IMPORTANT: If this ever 1) fires an &apos;error&apos; event and 2) it&apos;s possible to fire another event afterwards,
&gt; 
&gt; This comment should probably either stick with continueFunctionInternal or be duplicated.

Duplicated.

&gt; &gt; Source/WebCore/Modules/indexeddb/IDBLevelDBBackingStore.cpp:984
&gt; &gt; +    virtual bool continueFunction(const IDBKey* = 0, IteratorState = Seek);
&gt; 
&gt; Are these default values necessary? Won&apos;t they be provided by the declaration in IDBBackingStore::Cursor?

You&apos;d think, but no. That&apos;s why I had to add them here...


&gt; 
&gt; It looks like all callers pass null for bounds and direction - are further tests forthcoming?
&gt; 

Ah yes that was the original intention, got lost...adding now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>609143</commentid>
    <comment_count>9</comment_count>
      <attachid>138666</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-04-24 15:25:29 -0700</bug_when>
    <thetext>Created attachment 138666
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>609148</commentid>
    <comment_count>10</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-04-24 15:27:50 -0700</bug_when>
    <thetext>jsbell@ latest patch has issues addressed, and adds more tests. The tests are not totally exhaustive but they address the most painful / error-prone stuff like PREV_NO_DUPLICATE. (They don&apos;t, for example, test PREV/PREV_NO_DUPLICATE for IDBObjectStore)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>609165</commentid>
    <comment_count>11</comment_count>
      <attachid>138666</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-04-24 15:45:48 -0700</bug_when>
    <thetext>Comment on attachment 138666
Patch

Overall lgtm, with nits. It would be nice to simplify the test data, though.

View in context: https://bugs.webkit.org/attachment.cgi?id=138666&amp;action=review

&gt; Source/WebCore/Modules/indexeddb/IDBCursor.idl:49
&gt; +

Delete these blank lines.

&gt; Source/WebCore/Modules/indexeddb/IDBCursorBackendImpl.cpp:135
&gt; +// IMPORTANT: If this ever 1) fires an &apos;error&apos; event and 2) it&apos;s possible to fire another event afterwards,

Not relevant for this patch, but on further consideration we can probably delete these comments. There is a ton of logic in IDBRequest that asserts this, so the comment(s) don&apos;t add value.

&gt; LayoutTests/ChangeLog:26
&gt; +        * storage/indexeddb/resources/shared.js:

This can be removed.

&gt; LayoutTests/storage/indexeddb/resources/cursor-advance.js:192
&gt; +                    // Sue (weight 130 - skipping weight 100, 110, 120)

These tests might be simpler to read if the data was less real-world, and instead had e.g. primary keys &quot;p0&quot; ... &quot;p9&quot; and index keys &quot;i0&quot; ... &quot;i9&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>609859</commentid>
    <comment_count>12</comment_count>
      <attachid>138831</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-04-25 10:01:46 -0700</bug_when>
    <thetext>Created attachment 138831
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>609861</commentid>
    <comment_count>13</comment_count>
      <attachid>138666</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-04-25 10:02:34 -0700</bug_when>
    <thetext>Comment on attachment 138666
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=138666&amp;action=review

&gt;&gt; Source/WebCore/Modules/indexeddb/IDBCursor.idl:49
&gt;&gt; +
&gt; 
&gt; Delete these blank lines.

Done.

&gt;&gt; Source/WebCore/Modules/indexeddb/IDBCursorBackendImpl.cpp:135
&gt;&gt; +// IMPORTANT: If this ever 1) fires an &apos;error&apos; event and 2) it&apos;s possible to fire another event afterwards,
&gt; 
&gt; Not relevant for this patch, but on further consideration we can probably delete these comments. There is a ton of logic in IDBRequest that asserts this, so the comment(s) don&apos;t add value.

Removed.

&gt;&gt; LayoutTests/ChangeLog:26
&gt;&gt; +        * storage/indexeddb/resources/shared.js:
&gt; 
&gt; This can be removed.

Done.

&gt;&gt; LayoutTests/storage/indexeddb/resources/cursor-advance.js:192
&gt;&gt; +                    // Sue (weight 130 - skipping weight 100, 110, 120)
&gt; 
&gt; These tests might be simpler to read if the data was less real-world, and instead had e.g. primary keys &quot;p0&quot; ... &quot;p9&quot; and index keys &quot;i0&quot; ... &quot;i9&quot;

As discussed, I personally find the real-world data more readable, easier to keep in your head, so I&apos;m leaving it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>610059</commentid>
    <comment_count>14</comment_count>
      <attachid>138831</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-04-25 14:44:37 -0700</bug_when>
    <thetext>Comment on attachment 138831
Patch

ojan@ - one more - cq? r?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>610106</commentid>
    <comment_count>15</comment_count>
      <attachid>138831</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-04-25 15:43:59 -0700</bug_when>
    <thetext>Comment on attachment 138831
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=138831&amp;action=review

&gt; Source/WebCore/Modules/indexeddb/IDBCursor.cpp:143
&gt; +    if (m_request-&gt;resetReadyState(m_transaction.get())) {
&gt; +        m_request-&gt;setCursor(this);
&gt; +        m_gotValue = false;
&gt; +        m_backend-&gt;advance(count, m_request, ec);
&gt; +    } else
&gt; +        ec = IDBDatabaseException::NOT_ALLOWED_ERR;

Nit: I&apos;d reverse the order of this if-statement to early return in the exceptional case. Typical webkit style is to do all the exceptional cases first with early returns and then the common-case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>610134</commentid>
    <comment_count>16</comment_count>
      <attachid>138892</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-04-25 16:21:58 -0700</bug_when>
    <thetext>Created attachment 138892
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>610137</commentid>
    <comment_count>17</comment_count>
      <attachid>138892</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-25 16:23:22 -0700</bug_when>
    <thetext>Comment on attachment 138892
Patch for landing

Rejecting attachment 138892 from commit-queue.

alecflett@chromium.org does not have committer permissions according to http://trac.webkit.org/browser/trunk/Tools/Scripts/webkitpy/common/config/committers.py.

- If you do not have committer rights please read http://webkit.org/coding/contributing.html for instructions on how to use bugzilla flags.

- If you have committer rights please correct the error in Tools/Scripts/webkitpy/common/config/committers.py by adding yourself to the file (no review needed).  The commit-queue restarts itself every 2 hours.  After restart the commit-queue will correctly respect your committer rights.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>610308</commentid>
    <comment_count>18</comment_count>
      <attachid>138892</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-25 19:22:50 -0700</bug_when>
    <thetext>Comment on attachment 138892
Patch for landing

Clearing flags on attachment: 138892

Committed r115282: &lt;http://trac.webkit.org/changeset/115282&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>610309</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-25 19:22:56 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>138470</attachid>
            <date>2012-04-23 17:30:42 -0700</date>
            <delta_ts>2012-04-24 11:35:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-84174-20120423173041.patch</filename>
            <type>text/plain</type>
            <size>27757</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE0OTI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGU1MzRlZjE1ZWQ2OTJh
Mjg2OGYxYTU5NjFhMWMwODRiNDdhYzRlYS4uZjc5YjE0Nzg5NjFhZjczN2YyZDMwN2ExZjc1Njcz
MzhiZTc1MTc0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTA0LTIzICBBbGVj
IEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IGlt
cGxlbWVudCBjdXJzb3IuYWR2YW5jZSgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD04NDE3NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRlc3Q6IHN0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1hZHZhbmNlLmh0
bWwKKworICAgICAgICBJbXBsZW1lbnQgSURCQ3Vyc29yLmFkdmFuY2UoKSB0byBzcGVjLgorCisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmg6CisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1
cnNvcjo6YWR2YW5jZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9JREJDdXJzb3IuaDoKKyAgICAgICAgKElEQkN1cnNvcik6CisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9JREJDdXJzb3JCYWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3JC
YWNrZW5kSW1wbDo6YWR2YW5jZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQkN1cnNvckJhY2tlbmRJbXBsOjphZHZhbmNlSW50ZXJuYWwpOgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbXBsLmg6CisgICAgICAgIChJREJDdXJz
b3JCYWNrZW5kSW1wbCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFj
a2VuZEludGVyZmFjZS5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJC
YWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisKIDIwMTItMDQtMjMgIEtlbnRh
cm8gSGFyYSAgPGhhcmFrZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtWOF0gUGFzcyBJc29s
YXRlIHRvIHRvVjgoKSAoUGFydDMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGNmMjQ1
ZDhmZGFiNGVhMjg0YmMyNTQ0NzhhMWY5NjE0OTFkMmFiNmQuLjMzMTI4NDI1NmY4NzYxNGMzODIx
NjM3OTFhMTFhODk0ZmFhZTFhNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjAgQEAKKzIwMTItMDQtMjMgIEFsZWMgRmxldHQgIDxhbGVjZmxldHRAY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIEluZGV4ZWREQjogaW1wbGVtZW50IGN1cnNvci5hZHZhbmNlKCkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg0MTc0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSG9vayB1cCBjaHJvbWl1
bSBJUEMgdG8gSURCQ3Vyc29yLmFkdmFuY2UoKS4KKworICAgICAgICAqIHNyYy9JREJDdXJzb3JC
YWNrZW5kUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpJREJDdXJzb3JCYWNrZW5kUHJveHk6
OmFkdmFuY2UpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBzcmMvSURCQ3Vyc29yQmFj
a2VuZFByb3h5Lmg6CisgICAgICAgIChJREJDdXJzb3JCYWNrZW5kUHJveHkpOgorICAgICAgICAq
IHNyYy9XZWJJREJDdXJzb3JJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ3Vyc29y
SW1wbDo6YWR2YW5jZSk6CisKIDIwMTItMDQtMjMgIElhbiBWb2xsaWNrICA8dm9sbGlja0BjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBQcm9wZXJseSBpZ25vcmUgdW5zdXBwb3J0
ZWQgYW5pbWF0aW9uIGRpcmVjdGlvbnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5oCmluZGV4IDU1MWI4MjY4OTViNmMzMmQ5N2IwNzdm
MmEyN2E1MmMyN2ZmZDJmYTMuLmY2YmIxMGFhYWM1Yzg1OTM4NjliODVkYWMxNjdhOWI4NGUwNjc1
N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tp
bmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tp
bmdTdG9yZS5oCkBAIC05NCw3ICs5NCw4IEBAIHB1YmxpYzoKICAgICAgICAgfTsKIAogICAgICAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q3Vyc29yPiBjbG9uZSgpID0gMDsKLSAgICAgICAgdmlydHVh
bCBib29sIGNvbnRpbnVlRnVuY3Rpb24oY29uc3QgSURCS2V5KiA9IDAsIEl0ZXJhdG9yU3RhdGUg
bmV4dFN0YXRlID0gU2VlaykgPSAwOworICAgICAgICB2aXJ0dWFsIGJvb2wgYWR2YW5jZSh1bnNp
Z25lZCBsb25nKSA9IDA7CisgICAgICAgIHZpcnR1YWwgYm9vbCBjb250aW51ZUZ1bmN0aW9uKGNv
bnN0IElEQktleSogPSAwLCBJdGVyYXRvclN0YXRlID0gU2VlaykgPSAwOwogICAgICAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8SURCS2V5PiBrZXkoKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxJREJLZXk+IHByaW1hcnlLZXkoKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgU3RyaW5nIHZh
bHVlKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCQ3Vyc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNv
ci5jcHAKaW5kZXggNzM4N2UxYjFlMjhjY2JiZGJiODk5MGQwZjg0YjljNDcxMWI5ODZlOS4uNTgz
MzVhY2ZhOWVjZjNkZjk5NDg4YWJlY2I2M2Y2MzMzZTNmMzY3MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwCkBAIC0xMTYsNiArMTE2LDMxIEBA
IFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCQ3Vyc29yOjp1cGRhdGUoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgUGFzc1JlCiAgICAgcmV0dXJuIHJlcXVlc3QucmVsZWFzZSgpOwog
fQogCit2b2lkIElEQkN1cnNvcjo6YWR2YW5jZSh1bnNpZ25lZCBsb25nIGNvdW50LCBFeGNlcHRp
b25Db2RlJiBlYykKK3sKKyAgICBJREJfVFJBQ0UoIklEQkN1cnNvcjo6YWR2YW5jZSIpOworICAg
IGlmICghbV9nb3RWYWx1ZSkgeworICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFtX3JlcXVlc3QpIHsKKyAgICAgICAgZWMg
PSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSOworICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIC8vIGlmIChjb3VudCA9PSAwKSB7CisgICAgLy8gICAgIGVj
ID0gVFlQRV9FUlI7CisgICAgLy8gICAgIHJldHVybjsKKyAgICAvLyB9CisKKyAgICBpZiAobV9y
ZXF1ZXN0LT5yZXNldFJlYWR5U3RhdGUobV90cmFuc2FjdGlvbi5nZXQoKSkpIHsKKyAgICAgICAg
bV9yZXF1ZXN0LT5zZXRDdXJzb3IodGhpcyk7CisgICAgICAgIG1fZ290VmFsdWUgPSBmYWxzZTsK
KyAgICAgICAgbV9iYWNrZW5kLT5hZHZhbmNlKGNvdW50LCBtX3JlcXVlc3QsIGVjKTsKKyAgICB9
IGVsc2UKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6Tk9UX0FMTE9XRURfRVJS
OworfQorCiB2b2lkIElEQkN1cnNvcjo6Y29udGludWVGdW5jdGlvbihQYXNzUmVmUHRyPElEQktl
eT4ga2V5LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBJREJfVFJBQ0UoIklEQkN1cnNvcjo6
Y29udGludWUiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkN1cnNvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29y
LmgKaW5kZXggMjM3ZjI3MmMwNWUyYjJiNDNkYjc2YzQyNDFiNDhlNzdhMTNlMjU4NC4uNWI5NTkz
YjlmOGRmY2U3NDVjOTlmZmVlY2ZjNzZiZTY4MjVkYjRhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmgKQEAgLTY3LDYgKzY3LDcgQEAgcHVibGljOgog
ICAgIElEQkFueSogc291cmNlKCkgY29uc3Q7CiAKICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+
IHVwZGF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+LCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBhZHZhbmNlKHVuc2lnbmVkIGxv
bmcsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIGNvbnRpbnVlRnVuY3Rpb24oUGFzc1JlZlB0
cjxJREJLZXk+LCBFeGNlcHRpb25Db2RlJik7CiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBk
ZWxldGVGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXhjZXB0aW9uQ29kZSYpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3Iu
aWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmlkbAppbmRl
eCA0MTU0MGUyZjJiYjA3MTMzNWI4MjlmMTcxODdlNmQ2NTIwYTliZGYzLi5kMGY0MTFkM2I4YTJh
ZGNmZTUzZDRjMmRmY2M2ZDIzMTExZWFlYmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5pZGwKQEAgLTQwLDkgKzQwLDEzIEBAIG1vZHVsZSBzdG9y
YWdlIHsKIAogICAgICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gSURCUmVx
dWVzdCB1cGRhdGUoaW4gU2VyaWFsaXplZFNjcmlwdFZhbHVlIHZhbHVlKQogICAgICAgICAgICAg
cmFpc2VzIChJREJEYXRhYmFzZUV4Y2VwdGlvbik7CisgICAgICAgIHZvaWQgYWR2YW5jZShpbiB1
bnNpZ25lZCBsb25nIGNvdW50KQorICAgICAgICAgICAgcmFpc2VzIChJREJEYXRhYmFzZUV4Y2Vw
dGlvbik7CiAgICAgICAgIFtJbXBsZW1lbnRlZEFzPWNvbnRpbnVlRnVuY3Rpb25dIHZvaWQgY29u
dGludWUoaW4gW09wdGlvbmFsXSBJREJLZXkga2V5KQogICAgICAgICAgICAgcmFpc2VzIChJREJE
YXRhYmFzZUV4Y2VwdGlvbik7CiAgICAgICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250
ZXh0LCBJbXBsZW1lbnRlZEFzPWRlbGV0ZUZ1bmN0aW9uXSBJREJSZXF1ZXN0IGRlbGV0ZSgpCiAg
ICAgICAgICAgICByYWlzZXMgKElEQkRhdGFiYXNlRXhjZXB0aW9uKTsKKworCiAgICAgfTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJh
Y2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNv
ckJhY2tlbmRJbXBsLmNwcAppbmRleCBjZGJlNzA3ZmNlMTI5NTRiZGQ1YjlkOWRmYWJlYWE0MTg4
NDQ0ZWJkLi4zY2ZlZjgwMGRhOGM1YjI2MjgzNzJlNzkyOWI3OTY2NmQzZDJjOWMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5kSW1w
bC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFj
a2VuZEltcGwuY3BwCkBAIC0xMjQsOCArMTI0LDMwIEBAIHZvaWQgSURCQ3Vyc29yQmFja2VuZElt
cGw6OmNvbnRpbnVlRnVuY3Rpb24oUGFzc1JlZlB0cjxJREJLZXk+IHBycEtleSwgUGFzc1JlZlB0
CiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlRSQU5TQUNUSU9OX0lOQUNUSVZF
X0VSUjsKIH0KIAordm9pZCBJREJDdXJzb3JCYWNrZW5kSW1wbDo6YWR2YW5jZSh1bnNpZ25lZCBs
b25nIGNvdW50LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBFeGNlcHRp
b25Db2RlJiBlYykKK3sKKyAgICBJREJfVFJBQ0UoIklEQkN1cnNvckJhY2tlbmRJbXBsOjphZHZh
bmNlIik7CisKKyAgICBpZiAoIW1fdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhjcmVhdGVDYWxs
YmFja1Rhc2soJklEQkN1cnNvckJhY2tlbmRJbXBsOjphZHZhbmNlSW50ZXJuYWwsIHRoaXMsIGNv
dW50LCBwcnBDYWxsYmFja3MpKSkKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6
VFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSOworfQorCiAvLyBJTVBPUlRBTlQ6IElmIHRoaXMgZXZl
ciAxKSBmaXJlcyBhbiAnZXJyb3InIGV2ZW50IGFuZCAyKSBpdCdzIHBvc3NpYmxlIHRvIGZpcmUg
YW5vdGhlciBldmVudCBhZnRlcndhcmRzLAogLy8gICAgICAgICAgICBJREJSZXF1ZXN0OjpoYXNQ
ZW5kaW5nQWN0aXZpdHkoKSB3aWxsIG5lZWQgdG8gYmUgbW9kaWZpZWQgdG8gaGFuZGxlIHRoaXMh
ISEKK3ZvaWQgSURCQ3Vyc29yQmFja2VuZEltcGw6OmFkdmFuY2VJbnRlcm5hbChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW1wbD4gcHJwQ3Vyc29y
LCB1bnNpZ25lZCBsb25nIGNvdW50LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tz
KQoreworICAgIElEQl9UUkFDRSgiSURCQ3Vyc29yQmFja2VuZEltcGw6OmFkdmFuY2VJbnRlcm5h
bCIpOworICAgIFJlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW1wbD4gY3Vyc29yID0gcHJwQ3Vyc29y
OworICAgIGlmICghY3Vyc29yLT5tX2N1cnNvciB8fCAhY3Vyc29yLT5tX2N1cnNvci0+YWR2YW5j
ZShjb3VudCkpIHsKKyAgICAgICAgY3Vyc29yLT5tX2N1cnNvciA9IDA7CisgICAgICAgIGNhbGxi
YWNrcy0+b25TdWNjZXNzKFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6bnVsbFZhbHVlKCkpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gZG8gSSBuZWVkIHNvbWV0aGluZyBzcGVjaWFs
IGhlcmU/CisgICAgY2FsbGJhY2tzLT5vblN1Y2Nlc3NXaXRoQ29udGludWF0aW9uKCk7Cit9CisK
IHZvaWQgSURCQ3Vyc29yQmFja2VuZEltcGw6OmNvbnRpbnVlRnVuY3Rpb25JbnRlcm5hbChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW1wbD4gcHJw
Q3Vyc29yLCBQYXNzUmVmUHRyPElEQktleT4gcHJwS2V5LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNr
cz4gY2FsbGJhY2tzKQogewogICAgIElEQl9UUkFDRSgiSURCQ3Vyc29yQmFja2VuZEltcGw6OmNv
bnRpbnVlSW50ZXJuYWwiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5kSW1wbC5oCmluZGV4IDRlZTVhYzQwYWU2MjkzMmFmMzQ2
ZmU3NTcxMmMyOTczOTY3NWQ5NTEuLmI3YjhlOTI0YTQwODJhZDhhZDFhOGI0ZGVhZGQ1MjFjMWZk
M2UzYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1
cnNvckJhY2tlbmRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCQ3Vyc29yQmFja2VuZEltcGwuaApAQCAtNTksNiArNTksNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCBQYXNzUmVmUHRyPElEQktleT4gcHJpbWFyeUtleSgpIGNvbnN0OwogICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlKCkgY29uc3Q7CiAgICAgdmly
dHVhbCB2b2lkIHVwZGF0ZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIFBhc3NS
ZWZQdHI8SURCQ2FsbGJhY2tzPiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZpcnR1YWwgdm9pZCBh
ZHZhbmNlKHVuc2lnbmVkIGxvbmcsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgRXhjZXB0aW9u
Q29kZSYpOwogICAgIHZpcnR1YWwgdm9pZCBjb250aW51ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURC
S2V5PiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBFeGNlcHRpb25Db2RlJik7CiAgICAgdmly
dHVhbCB2b2lkIGRlbGV0ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgRXhjZXB0
aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwcmVmZXRjaENvbnRpbnVlKGludCBudW1iZXJU
b0ZldGNoLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIEV4Y2VwdGlvbkNvZGUmKTsKQEAgLTY5
LDYgKzcwLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBJREJDdXJzb3JCYWNrZW5kSW1wbChQ
YXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yPiwgSURCQ3Vyc29yOjpEaXJlY3Rpb24s
IEN1cnNvclR5cGUsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIElEQk9iamVjdFN0
b3JlQmFja2VuZEludGVyZmFjZSopOwogCisgICAgc3RhdGljIHZvaWQgYWR2YW5jZUludGVybmFs
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbXBs
PiwgdW5zaWduZWQgbG9uZywgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KTsKICAgICBzdGF0aWMg
dm9pZCBjb250aW51ZUZ1bmN0aW9uSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBh
c3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEltcGw+LCBQYXNzUmVmUHRyPElEQktleT4sIFBhc3NS
ZWZQdHI8SURCQ2FsbGJhY2tzPik7CiAgICAgc3RhdGljIHZvaWQgcHJlZmV0Y2hDb250aW51ZUlu
dGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tl
bmRJbXBsPiwgaW50IG51bWJlclRvRmV0Y2gsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPik7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJh
Y2tlbmRJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1
cnNvckJhY2tlbmRJbnRlcmZhY2UuaAppbmRleCBiNTdiYjU4NjhlZTE2Yjg5N2RiNzdkODFkMDVj
Y2JmNmRiMDc2YzAzLi45NzEyMzI4MjZmZDdhNWQwM2I5NTU5OWM3MGQ5NWQ4MmFmMTVkZDBlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNr
ZW5kSW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
Q3Vyc29yQmFja2VuZEludGVyZmFjZS5oCkBAIC01OSw2ICs1OSw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSgpIGNvbnN0ID0g
MDsKIAogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGUoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIEV4Y2VwdGlvbkNvZGUmKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIGFkdmFuY2UodW5zaWduZWQgbG9uZyBjb3VudCwgUGFzc1JlZlB0cjxJ
REJDYWxsYmFja3M+LCBFeGNlcHRpb25Db2RlJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjb250
aW51ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIFBhc3NSZWZQdHI8SURCQ2FsbGJh
Y2tzPiwgRXhjZXB0aW9uQ29kZSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlRnVuY3Rp
b24oUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBFeGNlcHRpb25Db2RlJikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBwcmVmZXRjaENvbnRpbnVlKGludCBudW1iZXJUb0ZldGNoLCBQYXNzUmVmUHRy
PElEQkNhbGxiYWNrcz4sIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuY3Bw
CmluZGV4IDZhN2VkMjg0YmFlZGRkZWFmY2ZhYjc4MWExNGRmMTA5Zjk4MjllZmEuLmY5NTY3MDk1
MjA5ODUwYjE4Y2M4NjAyOTU1N2ZhNzBlZjY3YTYzM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuY3Bw
CkBAIC05ODAsNyArOTgwLDggQEAgc3RydWN0IEN1cnNvck9wdGlvbnMgewogY2xhc3MgQ3Vyc29y
SW1wbENvbW1vbiA6IHB1YmxpYyBJREJCYWNraW5nU3RvcmU6OkN1cnNvciB7CiBwdWJsaWM6CiAg
ICAgLy8gSURCQmFja2luZ1N0b3JlOjpDdXJzb3IKLSAgICB2aXJ0dWFsIGJvb2wgY29udGludWVG
dW5jdGlvbihjb25zdCBJREJLZXkqLCBJdGVyYXRvclN0YXRlKTsKKyAgICB2aXJ0dWFsIGJvb2wg
YWR2YW5jZSh1bnNpZ25lZCBsb25nKTsKKyAgICB2aXJ0dWFsIGJvb2wgY29udGludWVGdW5jdGlv
bihjb25zdCBJREJLZXkqID0gMCwgSXRlcmF0b3JTdGF0ZSA9IFNlZWspOwogICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxJREJLZXk+IGtleSgpIHsgcmV0dXJuIG1fY3VycmVudEtleTsgfQogICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxJREJLZXk+IHByaW1hcnlLZXkoKSB7IHJldHVybiBtX2N1cnJlbnRL
ZXk7IH0KICAgICB2aXJ0dWFsIFN0cmluZyB2YWx1ZSgpID0gMDsKQEAgLTEwMzUsNiArMTAzNiwx
NSBAQCBib29sIEN1cnNvckltcGxDb21tb246OmZpcnN0U2VlaygpCiAgICAgcmV0dXJuIGNvbnRp
bnVlRnVuY3Rpb24oMCwgUmVhZHkpOwogfQogCitib29sIEN1cnNvckltcGxDb21tb246OmFkdmFu
Y2UodW5zaWduZWQgbG9uZyBjb3VudCkKK3sKKyAgICB3aGlsZSAoY291bnQtLSkgeworICAgICAg
ICBpZiAoIWNvbnRpbnVlRnVuY3Rpb24oKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKIGJvb2wgQ3Vyc29ySW1wbENvbW1vbjo6Y29udGlu
dWVGdW5jdGlvbihjb25zdCBJREJLZXkqIGtleSwgSXRlcmF0b3JTdGF0ZSBuZXh0U3RhdGUpCiB7
CiAgICAgUmVmUHRyPElEQktleT4gcHJldmlvdXNLZXkgPSBtX2N1cnJlbnRLZXk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDdXJzb3JCYWNrZW5kUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ3Vyc29yQmFja2VuZFByb3h5LmNwcApp
bmRleCA0MjhjMzdmNWViNjg5YWU2N2I1M2U4MzQ4ZDY1NGRkNjI0NWRkMmNlLi4yYTYyYjkyNmY1
ZjY2NGVlNmQ3NDlkZDA1MDI3NzY3ZWUyNTRlZjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9JREJDdXJzb3JCYWNrZW5kUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0lEQkN1cnNvckJhY2tlbmRQcm94eS5jcHAKQEAgLTc5LDYgKzc5LDEx
IEBAIHZvaWQgSURCQ3Vyc29yQmFja2VuZFByb3h5Ojp1cGRhdGUoUGFzc1JlZlB0cjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+IHZhbHVlLCBQYXNzCiAgICAgbV9pZGJDdXJzb3ItPnVwZGF0ZSh2YWx1
ZSwgbmV3IFdlYklEQkNhbGxiYWNrc0ltcGwoY2FsbGJhY2tzKSwgZWMpOwogfQogCit2b2lkIElE
QkN1cnNvckJhY2tlbmRQcm94eTo6YWR2YW5jZSh1bnNpZ25lZCBsb25nIGNvdW50LCBQYXNzUmVm
UHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBt
X2lkYkN1cnNvci0+YWR2YW5jZShjb3VudCwgbmV3IFdlYklEQkNhbGxiYWNrc0ltcGwoY2FsbGJh
Y2tzKSwgZWMpOworfQorCiB2b2lkIElEQkN1cnNvckJhY2tlbmRQcm94eTo6Y29udGludWVGdW5j
dGlvbihQYXNzUmVmUHRyPElEQktleT4ga2V5LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2Fs
bGJhY2tzLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBtX2lkYkN1cnNvci0+Y29udGludWVG
dW5jdGlvbihrZXksIG5ldyBXZWJJREJDYWxsYmFja3NJbXBsKGNhbGxiYWNrcyksIGVjKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkN1cnNvckJhY2tlbmRQcm94
eS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ3Vyc29yQmFja2VuZFByb3h5LmgK
aW5kZXggY2ZlNmRhZjVkZGVkNzhkN2VhNWRmNGQ5M2UwZmIzYmExZGQ5YWQwNi4uMjRhM2U0MmM0
N2E3YjYxZWI2OTIxMDEwZjdjZjE4ZjgwMThmNDczNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvSURCQ3Vyc29yQmFja2VuZFByb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvSURCQ3Vyc29yQmFja2VuZFByb3h5LmgKQEAgLTQ3LDYgKzQ3LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJLZXk+IHByaW1hcnlL
ZXkoKSBjb25zdDsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiB2YWx1ZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGUoUGFzc1Jl
ZlB0cjxXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBQYXNzUmVmUHRyPFdlYkNvcmU6
OklEQkNhbGxiYWNrcz4sIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2aXJ0dWFsIHZv
aWQgYWR2YW5jZSh1bnNpZ25lZCBsb25nLCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNr
cz4sIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIHZvaWQgY29udGludWVG
dW5jdGlvbihQYXNzUmVmUHRyPFdlYkNvcmU6OklEQktleT4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6
SURCQ2FsbGJhY2tzPiwgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgdm9p
ZCBkZWxldGVGdW5jdGlvbihQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4sIFdlYkNv
cmU6OkV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIHZvaWQgcHJlZmV0Y2hDb250aW51ZShp
bnQgbnVtYmVyVG9GZXRjaCwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+LCBXZWJD
b3JlOjpFeGNlcHRpb25Db2RlJikgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfSAvLyBPbmx5IHVz
ZWQgaW4gdGhlIGJhY2tlbmQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJJREJDdXJzb3JJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklE
QkN1cnNvckltcGwuY3BwCmluZGV4IGY3M2FiMmMzNWJlZGY5MjhlOWNjNWUwNmVhZTFhODg0ZjY4
YTAxYjAuLjZmMTBlZmU5ZTA5NmY5M2ZmZDU3ZDc2ZWZlOTMzNDA2OWI4NzkyYWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkN1cnNvckltcGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkN1cnNvckltcGwuY3BwCkBAIC03NCw3
ICs3NCw3IEBAIHZvaWQgV2ViSURCQ3Vyc29ySW1wbDo6dXBkYXRlKGNvbnN0IFdlYlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSYgdmFsdWUsIFdlYklEQkNhbGxiCiAKIHZvaWQgV2ViSURCQ3Vyc29ySW1w
bDo6YWR2YW5jZSh1bnNpZ25lZCBsb25nIGNvdW50LCBXZWJJREJDYWxsYmFja3MqIGNhbGxiYWNr
cywgV2ViRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgLy8gRklYTUU6IG5vdCBpbXBsZW1lbnRl
ZCBpbiBpbmRleGVkZGIgeWV0CisgICAgbV9pZGJDdXJzb3JCYWNrZW5kLT5hZHZhbmNlKGNvdW50
LCBJREJDYWxsYmFja3NQcm94eTo6Y3JlYXRlKGFkb3B0UHRyKGNhbGxiYWNrcykpLCBlYyk7CiB9
CiAKIHZvaWQgV2ViSURCQ3Vyc29ySW1wbDo6Y29udGludWVGdW5jdGlvbihjb25zdCBXZWJJREJL
ZXkmIGtleSwgV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MsIFdlYkV4Y2VwdGlvbkNvZGUmIGVj
KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCmluZGV4IDhiOGM2ZWNiMGU4ZjhjMTYxN2IyZDUxOTlhMmNiNDg2NWRhMDY2ODMuLjcyNzUy
YjU5YWI3OGFhMjQwODljYjc4Y2JjMTIxMjkwZTBmNGIxZDEgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNSBA
QAorMjAxMi0wNC0yMyAgQWxlYyBGbGV0dCAgPGFsZWNmbGV0dEBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgSW5kZXhlZERCOiBpbXBsZW1lbnQgY3Vyc29yLmFkdmFuY2UoKQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQxNzQKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0cyBmb3IgY3Vyc29yLmFkdmFu
Y2UoKS4KKworICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1hZHZhbmNlLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLWFkdmFu
Y2UuaHRtbDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1
cnNvci1hZHZhbmNlLmpzOiBBZGRlZC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAob3BlblN1
Y2Nlc3MpOgorICAgICAgICAoY3JlYXRlQW5kUG9wdWxhdGVPYmplY3RTdG9yZSk6CisgICAgICAg
IChtYWtlQWR2YW5jZVRlc3QuY29udGludWVUb1Rlc3QpOgorICAgICAgICAobWFrZUFkdmFuY2VU
ZXN0LnJlcXVlc3Qub25lcnJvcik6CisgICAgICAgIChtYWtlQWR2YW5jZVRlc3QpOgorICAgICAg
ICAobWtDdXJzb3IpOgorICAgICAgICAocnVuVGVzdCk6CisgICAgICAgICh0ZXN0QWxsKToKKyAg
ICAgICAgKHRlc3RTaW1wbGUpOgorICAgICAgICAodGVzdENvbnRpbnVlVGhlbkFkdmFuY2UpOgor
ICAgICAgICAodGVzdEFkdmFuY2VNdWx0aXBsZSk6CisgICAgICAgICh0ZXN0QWR2YW5jZVRvRW5k
KToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvc2hhcmVkLmpzOgorICAg
ICAgICAod2FpdEZvci5vbmVycm9yKToKKyAgICAgICAgKHdhaXRGb3Iub25hYm9ydCk6CisgICAg
ICAgICh3YWl0Rm9yKToKKyAgICAgICAgKHdhaXRGb3Jfb25zdWNjZXNzLm9uc3VjY2Vzcyk6Cisg
ICAgICAgICh3YWl0Rm9yX29uc3VjY2Vzcyk6CisKIDIwMTItMDQtMjMgIERtaXRyeSBUaXRvdiAg
PGRpbWljaEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBOb3QgcmV2aWV3ZWQs
IHJlYmFzZWxpbmUgb2YgYnV0dG9uIGltYWdlcyBhZnRlcgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLWFkdmFuY2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLWFkdmFuY2UtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjIyYTc0NTFhY2YzMmVkY2ZmOGYyNDQ5MWYxZGRjMWFlNGQ4YWJlMTAKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItYWR2YW5jZS1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSw2MyBAQAorVGVzdCBJbmRleGVkREIgY3Vyc29yLmFkdmFu
Y2UoKS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK2luZGV4ZWREQiA9IHdpbmRv
dy5pbmRleGVkREIgfHwgd2luZG93LndlYmtpdEluZGV4ZWREQiB8fCB3aW5kb3cubW96SW5kZXhl
ZERCOworUEFTUyBpbmRleGVkREIgPT0gbnVsbCBpcyBmYWxzZQorSURCRGF0YWJhc2VFeGNlcHRp
b24gPSB3aW5kb3cuSURCRGF0YWJhc2VFeGNlcHRpb24gfHwgd2luZG93LndlYmtpdElEQkRhdGFi
YXNlRXhjZXB0aW9uOworUEFTUyBJREJEYXRhYmFzZUV4Y2VwdGlvbiA9PSBudWxsIGlzIGZhbHNl
CitJREJUcmFuc2FjdGlvbiA9IHdpbmRvdy5JREJUcmFuc2FjdGlvbiB8fCB3aW5kb3cud2Via2l0
SURCVHJhbnNhY3Rpb247CitQQVNTIElEQlRyYW5zYWN0aW9uID09IG51bGwgaXMgZmFsc2UKK0lE
QkN1cnNvciA9IHdpbmRvdy5JREJDdXJzb3IgfHwgd2luZG93LndlYmtpdElEQkN1cnNvcjsKK1BB
U1MgSURCQ3Vyc29yID09IG51bGwgaXMgZmFsc2UKK0lEQktleVJhbmdlID0gd2luZG93LklEQktl
eVJhbmdlIHx8IHdpbmRvdy53ZWJraXRJREJLZXlSYW5nZTsKK1BBU1MgSURCS2V5UmFuZ2UgPT0g
bnVsbCBpcyBmYWxzZQoraW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pCitvcGVuU3Vj
Y2VzcygpOgorZGIgPSBldmVudC50YXJnZXQucmVzdWx0CityZXF1ZXN0ID0gZGIuc2V0VmVyc2lv
bignMScpCitEZWxldGVkIGFsbCBvYmplY3Qgc3RvcmVzLgorb2JqZWN0U3RvcmUgPSBkYi5jcmVh
dGVPYmplY3RTdG9yZShvYmplY3RTdG9yZU5hbWUpOworRmlyc3QsIGFkZCBhbGwgb3VyIGRhdGEg
dG8gdGhlIG9iamVjdCBzdG9yZS4KK3JlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQob2JqZWN0U3Rv
cmVEYXRhW2ldLnZhbHVlLCBvYmplY3RTdG9yZURhdGFbaV0ua2V5KTsKK3JlcXVlc3QgPSBvYmpl
Y3RTdG9yZS5hZGQob2JqZWN0U3RvcmVEYXRhW2ldLnZhbHVlLCBvYmplY3RTdG9yZURhdGFbaV0u
a2V5KTsKK3JlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQob2JqZWN0U3RvcmVEYXRhW2ldLnZhbHVl
LCBvYmplY3RTdG9yZURhdGFbaV0ua2V5KTsKK3JlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQob2Jq
ZWN0U3RvcmVEYXRhW2ldLnZhbHVlLCBvYmplY3RTdG9yZURhdGFbaV0ua2V5KTsKK3JlcXVlc3Qg
PSBvYmplY3RTdG9yZS5hZGQob2JqZWN0U3RvcmVEYXRhW2ldLnZhbHVlLCBvYmplY3RTdG9yZURh
dGFbaV0ua2V5KTsKK3JlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQob2JqZWN0U3RvcmVEYXRhW2ld
LnZhbHVlLCBvYmplY3RTdG9yZURhdGFbaV0ua2V5KTsKK3JlcXVlc3QgPSBvYmplY3RTdG9yZS5h
ZGQob2JqZWN0U3RvcmVEYXRhW2ldLnZhbHVlLCBvYmplY3RTdG9yZURhdGFbaV0ua2V5KTsKK3Jl
cXVlc3QgPSBvYmplY3RTdG9yZS5hZGQob2JqZWN0U3RvcmVEYXRhW2ldLnZhbHVlLCBvYmplY3RT
dG9yZURhdGFbaV0ua2V5KTsKK3JlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQob2JqZWN0U3RvcmVE
YXRhW2ldLnZhbHVlLCBvYmplY3RTdG9yZURhdGFbaV0ua2V5KTsKK3Rlc3RBbGwoKQordGVzdFNp
bXBsZSgpCit0cmFucyA9IGRiLnRyYW5zYWN0aW9uKG9iamVjdFN0b3JlTmFtZSkKK29iamVjdFN0
b3JlID0gdHJhbnMub2JqZWN0U3RvcmUob2JqZWN0U3RvcmVOYW1lKQorcmVxdWVzdCA9IG9iamVj
dFN0b3JlLm9wZW5DdXJzb3IobnVsbCwgbnVsbCkKK2N1cnNvci5hZHZhbmNlKDEpCitQQVNTICd7
ImtleSI6IjIzNy0yMy03NzMzIiwidmFsdWUiOnsibmFtZSI6IkFubiIsImhlaWdodCI6NTIsIndl
aWdodCI6MTEwfSwicHJpbWFyeUtleSI6IjIzNy0yMy03NzMzIn0nIGlzICd7ImtleSI6IjIzNy0y
My03NzMzIiwidmFsdWUiOnsibmFtZSI6IkFubiIsImhlaWdodCI6NTIsIndlaWdodCI6MTEwfSwi
cHJpbWFyeUtleSI6IjIzNy0yMy03NzMzIn0nCit0ZXN0Q29udGludWVUaGVuQWR2YW5jZSgpCit0
cmFucyA9IGRiLnRyYW5zYWN0aW9uKG9iamVjdFN0b3JlTmFtZSkKK29iamVjdFN0b3JlID0gdHJh
bnMub2JqZWN0U3RvcmUob2JqZWN0U3RvcmVOYW1lKQorcmVxdWVzdCA9IG9iamVjdFN0b3JlLm9w
ZW5DdXJzb3IobnVsbCwgbnVsbCkKK2N1cnNvci5jb250aW51ZSgpOworY3Vyc29yLmNvbnRpbnVl
KCk7CitjdXJzb3IuY29udGludWUoKTsKK2N1cnNvci5hZHZhbmNlKDEpCitQQVNTICd7ImtleSI6
IjIzNy0yMy03NzM2IiwidmFsdWUiOnsibmFtZSI6IkpvZSIsImhlaWdodCI6NjUsIndlaWdodCI6
MTUwfSwicHJpbWFyeUtleSI6IjIzNy0yMy03NzM2In0nIGlzICd7ImtleSI6IjIzNy0yMy03NzM2
IiwidmFsdWUiOnsibmFtZSI6IkpvZSIsImhlaWdodCI6NjUsIndlaWdodCI6MTUwfSwicHJpbWFy
eUtleSI6IjIzNy0yMy03NzM2In0nCit0ZXN0QWR2YW5jZU11bHRpcGxlKCkKK3RyYW5zID0gZGIu
dHJhbnNhY3Rpb24ob2JqZWN0U3RvcmVOYW1lKQorb2JqZWN0U3RvcmUgPSB0cmFucy5vYmplY3RT
dG9yZShvYmplY3RTdG9yZU5hbWUpCityZXF1ZXN0ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNvcihu
dWxsLCBudWxsKQorY3Vyc29yLmFkdmFuY2UoMykKK1BBU1MgJ3sia2V5IjoiMjM3LTIzLTc3MzUi
LCJ2YWx1ZSI6eyJuYW1lIjoiU3VlIiwiaGVpZ2h0Ijo1OCwid2VpZ2h0IjoxMzB9LCJwcmltYXJ5
S2V5IjoiMjM3LTIzLTc3MzUifScgaXMgJ3sia2V5IjoiMjM3LTIzLTc3MzUiLCJ2YWx1ZSI6eyJu
YW1lIjoiU3VlIiwiaGVpZ2h0Ijo1OCwid2VpZ2h0IjoxMzB9LCJwcmltYXJ5S2V5IjoiMjM3LTIz
LTc3MzUifScKK3Rlc3RBZHZhbmNlVG9FbmQoKQordHJhbnMgPSBkYi50cmFuc2FjdGlvbihvYmpl
Y3RTdG9yZU5hbWUpCitvYmplY3RTdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKG9iamVjdFN0b3Jl
TmFtZSkKK3JlcXVlc3QgPSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKG51bGwsIG51bGwpCitjdXJz
b3IuYWR2YW5jZSgxMDApCitQQVNTICdudWxsJyBpcyAnbnVsbCcKK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItYWR2YW5jZS5odG1sIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvY3Vyc29yLWFkdmFuY2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMGU0ZGM0Y2Nm
ZTkwODExMjJlMWY0YzEyZDFjYjNmZmYzOWQyZDg2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLWFkdmFuY2UuaHRtbApAQCAtMCwwICsxLDEw
IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVk
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9j
dXJzb3ItYWR2YW5jZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jdXJzb3It
YWR2YW5jZS5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jdXJz
b3ItYWR2YW5jZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZTZiMWUxOTVhYjdiMTdhMGU3NmZkOWYxOGJjZDIx
MmY5YTAyYWMxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvcmVzb3VyY2VzL2N1cnNvci1hZHZhbmNlLmpzCkBAIC0wLDAgKzEsMTgzIEBACitpZiAodGhp
cy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMn
KTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIGN1cnNvci5hZHZhbmNlKCkuIik7
CisKKy8vIHRlc3QgYWR2YW5jZSB3aXRoaW4gcmFuZ2UKKy8vIHRlc3QgYWR2YW5jZSB3aXRoaW4g
cmFuZ2UgcmV2ZXJzZQorLy8gdGVzdCBhZHZhbmNlIHdpdGhpbiByYW5nZSBubyBkdXBlCisvLyB0
ZXN0IGFkdmFuY2Ugd2l0aGluIHJhbmdlIHJldmVyc2Ugbm8gZHVwZQorLy8gdGVzdCBhZHZhbmNl
IHBhc3QgZGF0YQorLy8gdGVzdCBhZHZhbmNlIHBhc3QgZGF0YSByZXZlcnNlCisvLyB0ZXN0IGFk
dmFuY2UgcGFzdCBjdXJzb3IgYm91bmRzCit2YXIgb2JqZWN0U3RvcmVEYXRhID0gWworICAgIHsg
a2V5OiAiMjM3LTIzLTc3MzIiLCB2YWx1ZTogeyBuYW1lOiAiQm9iIiwgaGVpZ2h0OiA2MCwgd2Vp
Z2h0OiAxMjAgfSB9LAorICAgIHsga2V5OiAiMjM3LTIzLTc3MzMiLCB2YWx1ZTogeyBuYW1lOiAi
QW5uIiwgaGVpZ2h0OiA1Miwgd2VpZ2h0OiAxMTAgfSB9LAorICAgIHsga2V5OiAiMjM3LTIzLTc3
MzQiLCB2YWx1ZTogeyBuYW1lOiAiUm9uIiwgaGVpZ2h0OiA3Mywgd2VpZ2h0OiAxODAgfSB9LAor
ICAgIHsga2V5OiAiMjM3LTIzLTc3MzUiLCB2YWx1ZTogeyBuYW1lOiAiU3VlIiwgaGVpZ2h0OiA1
OCwgd2VpZ2h0OiAxMzAgfSB9LAorICAgIHsga2V5OiAiMjM3LTIzLTc3MzYiLCB2YWx1ZTogeyBu
YW1lOiAiSm9lIiwgaGVpZ2h0OiA2NSwgd2VpZ2h0OiAxNTAgfSB9LAorICAgIHsga2V5OiAiMjM3
LTIzLTc3MzciLCB2YWx1ZTogeyBuYW1lOiAiUGF0IiwgaGVpZ2h0OiA2NSwgd2VpZ2h0OiAxMDAg
fSB9LAorICAgIHsga2V5OiAiMjM3LTIzLTc3MzgiLCB2YWx1ZTogeyBuYW1lOiAiTGVvIiwgaGVp
Z2h0OiA2NSwgd2VpZ2h0OiAxODAgfSB9LAorICAgIHsga2V5OiAiMjM3LTIzLTc3MzkiLCB2YWx1
ZTogeyBuYW1lOiAiSmVmIiwgaGVpZ2h0OiA2NSwgd2VpZ2h0OiAxMjAgfSB9LAorICAgIHsga2V5
OiAiMjM3LTIzLTc3NDAiLCB2YWx1ZTogeyBuYW1lOiAiU2FtIiwgaGVpZ2h0OiA3Mywgd2VpZ2h0
OiAxMTAgfSB9LAorXTsKKwordmFyIGluZGV4RGF0YSA9IFsKKyAgICB7IG5hbWU6ICJuYW1lIiwg
a2V5UGF0aDogIm5hbWUiLCBvcHRpb25zOiB7IHVuaXF1ZTogdHJ1ZSB9IH0sCisgICAgeyBuYW1l
OiAiaGVpZ2h0Iiwga2V5UGF0aDogImhlaWdodCIsIG9wdGlvbnM6IHsgfSB9LAorICAgIHsgbmFt
ZTogIndlaWdodCIsIGtleVBhdGg6ICJ3ZWlnaHQiLCBvcHRpb25zOiB7IHVuaXF1ZTogZmFsc2Ug
fSB9CitdOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBpbmRleGVkREIgPSBldmFsQW5kTG9n
KCJpbmRleGVkREIgPSB3aW5kb3cuaW5kZXhlZERCIHx8IHdpbmRvdy53ZWJraXRJbmRleGVkREIg
fHwgd2luZG93Lm1vekluZGV4ZWREQjsiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJpbmRleGVkREIg
PT0gbnVsbCIpOworICAgIElEQkRhdGFiYXNlRXhjZXB0aW9uID0gZXZhbEFuZExvZygiSURCRGF0
YWJhc2VFeGNlcHRpb24gPSB3aW5kb3cuSURCRGF0YWJhc2VFeGNlcHRpb24gfHwgd2luZG93Lndl
YmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uOyIpOworICAgIHNob3VsZEJlRmFsc2UoIklEQkRhdGFi
YXNlRXhjZXB0aW9uID09IG51bGwiKTsKKyAgICBJREJUcmFuc2FjdGlvbiA9IGV2YWxBbmRMb2co
IklEQlRyYW5zYWN0aW9uID0gd2luZG93LklEQlRyYW5zYWN0aW9uIHx8IHdpbmRvdy53ZWJraXRJ
REJUcmFuc2FjdGlvbjsiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJJREJUcmFuc2FjdGlvbiA9PSBu
dWxsIik7CisgICAgSURCQ3Vyc29yID0gZXZhbEFuZExvZygiSURCQ3Vyc29yID0gd2luZG93LklE
QkN1cnNvciB8fCB3aW5kb3cud2Via2l0SURCQ3Vyc29yOyIpOworICAgIHNob3VsZEJlRmFsc2Uo
IklEQkN1cnNvciA9PSBudWxsIik7CisgICAgSURCS2V5UmFuZ2UgPSBldmFsQW5kTG9nKCJJREJL
ZXlSYW5nZSA9IHdpbmRvdy5JREJLZXlSYW5nZSB8fCB3aW5kb3cud2Via2l0SURCS2V5UmFuZ2U7
Iik7CisgICAgc2hvdWxkQmVGYWxzZSgiSURCS2V5UmFuZ2UgPT0gbnVsbCIpOworCisgICAgbmFt
ZSA9IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZTsKKyAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0
IERhdGFiYXNlIjsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFt
ZSwgZGVzY3JpcHRpb24pIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsK
KyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVu
Y3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIGRlYnVnKCJvcGVuU3VjY2VzcygpOiIpOworICAg
IGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICBvYmpl
Y3RTdG9yZU5hbWUgPSAiUGVvcGxlIjsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1
ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjcmVh
dGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0
b3JlKCkKK3sKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgb2JqZWN0U3Rv
cmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKG9iamVj
dFN0b3JlTmFtZSk7Iik7CisKKyAgICBkZWJ1ZygiRmlyc3QsIGFkZCBhbGwgb3VyIGRhdGEgdG8g
dGhlIG9iamVjdCBzdG9yZS4iKTsKKyAgICBhZGRlZERhdGEgPSAwOworICAgIGZvciAoaSBpbiBv
YmplY3RTdG9yZURhdGEpIHsKKyAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0g
b2JqZWN0U3RvcmUuYWRkKG9iamVjdFN0b3JlRGF0YVtpXS52YWx1ZSwgb2JqZWN0U3RvcmVEYXRh
W2ldLmtleSk7Iik7CisgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKKyAgICB9CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB0ZXN0QWxsOworfQorCisvLyBt
YWtlIGEgdGVzdCB0aGF0IHVzZXMgY29udGludWUoKSB0byBnZXQgdG8gc3RhcnRQb3MsIHRoZW4g
cGFzc2VzCisvLyAnY291bnQnIHRvIGdldCB0byBhIHBvc2l0aW9uCitmdW5jdGlvbiBtYWtlQWR2
YW5jZVRlc3Qoc3RhcnRQb3MsIGJvdW5kcywgZGlyZWN0aW9uLCBjb3VudCwgZXhwZWN0ZWRWYWx1
ZSkKK3sKKyAgICByZXN1bHQgPSB7fTsKKyAgICBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5z
YWN0aW9uKG9iamVjdFN0b3JlTmFtZSkiKTsKKyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2co
Im9iamVjdFN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUob2JqZWN0U3RvcmVOYW1lKSIpOworCisg
ICAgZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLm9wZW5DdXJzb3IoIisgYm91bmRz
ICsgIiwgIiArIGRpcmVjdGlvbiArICIpIik7CisgICAgdmFyIGN1cnJlbnRQb3MgPSAwOworICAg
IGZ1bmN0aW9uIGNvbnRpbnVlVG9UZXN0KGV2ZW50KQorICAgIHsKKyAgICAgICAgY3Vyc29yID0g
ZXZlbnQudGFyZ2V0LnJlc3VsdDsKKyAgICAgICAgaWYgKGN1cnJlbnRQb3MgPT0gc3RhcnRQb3Mp
IHsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5hZHZhbmNlKCIgKyBjb3VudCArICIp
Iik7CisgICAgICAgIH0gZWxzZSBpZiAoY3VycmVudFBvcyA9PSBzdGFydFBvcyArIDEpIHsKKyAg
ICAgICAgICAgIHJ1blRlc3QoY3Vyc29yLCBleHBlY3RlZFZhbHVlKTsKKyAgICAgICAgICAgIHJl
c3VsdC5vbnN1Y2Nlc3MoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChjdXJz
b3IgPT0gbnVsbCkKKyAgICAgICAgICAgICAgICByZXN1bHQub25zdWNjZXNzKCk7CisgICAgICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUo
KTsiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBjdXJyZW50UG9zKys7Cisg
ICAgfQorCisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjb250aW51ZVRvVGVzdDsKKyAgICByZXF1
ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbihlKSB7CisgICAgICAgIHJlc3VsdC5vbmVycm9yKGUpOwor
ICAgIH07CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitmdW5jdGlvbiBta0N1cnNvcihjdXJz
b3IpCit7CisgICAgdmFyIG9iaiA9IHt9OworICAgIGlmIChjdXJzb3IgPT09IG51bGwpIHsKKyAg
ICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorICAgIGlmICgna2V5JyBpbiBjdXJzb3IpIHsKKyAg
ICAgICAgb2JqLmtleSA9IGN1cnNvci5rZXk7CisgICAgfQorCisgICAgaWYgKCd2YWx1ZScgaW4g
Y3Vyc29yKSB7CisgICAgICAgIG9iai52YWx1ZSA9IGN1cnNvci52YWx1ZTsKKyAgICB9CisKKyAg
ICBpZiAoJ3ByaW1hcnlLZXknIGluIGN1cnNvcikgeworICAgICAgICBvYmoucHJpbWFyeUtleSA9
IGN1cnNvci5wcmltYXJ5S2V5OworICAgIH0KKyAgICByZXR1cm4gb2JqOworfQorZnVuY3Rpb24g
cnVuVGVzdChjdXJzb3IsIGV4cGVjdGVkVmFsdWUpCit7CisgICAgc2hvdWxkQmUoIiciICsgSlNP
Ti5zdHJpbmdpZnkobWtDdXJzb3IoY3Vyc29yKSkgKyAiJyIsICInIiArIEpTT04uc3RyaW5naWZ5
KGV4cGVjdGVkVmFsdWUpICsgIiciKTsKK30KKworZnVuY3Rpb24gdGVzdEFsbCgpCit7CisgICAg
ZGVidWcoInRlc3RBbGwoKSIpOworICAgIHRlc3RTaW1wbGUoKTsKK30KKworZnVuY3Rpb24gdGVz
dFNpbXBsZSgpCit7CisgICAgZGVidWcoInRlc3RTaW1wbGUoKSIpOworICAgIG1ha2VBZHZhbmNl
VGVzdCgwLCBudWxsLCBudWxsLCAxLAorICAgICAgICAgICAgICAgICAgICB7a2V5OiBvYmplY3RT
dG9yZURhdGFbMV0ua2V5LAorICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IG9iamVjdFN0b3Jl
RGF0YVsxXS52YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgIHByaW1hcnlLZXk6IG9iamVjdFN0
b3JlRGF0YVsxXS5rZXl9KQorICAgICAgICAgICAgICAgICAgICAgICAgIC5vbnN1Y2Nlc3M9IHRl
c3RDb250aW51ZVRoZW5BZHZhbmNlOworfQorCitmdW5jdGlvbiB0ZXN0Q29udGludWVUaGVuQWR2
YW5jZSgpCit7CisgICAgZGVidWcoInRlc3RDb250aW51ZVRoZW5BZHZhbmNlKCkiKTsKKyAgICBt
YWtlQWR2YW5jZVRlc3QoMywgbnVsbCwgbnVsbCwgMSwKKyAgICAgICAgICAgICAgICAgICAge2tl
eTogb2JqZWN0U3RvcmVEYXRhWzRdLmtleSwKKyAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBv
YmplY3RTdG9yZURhdGFbNF0udmFsdWUsCisgICAgICAgICAgICAgICAgICAgICBwcmltYXJ5S2V5
OiBvYmplY3RTdG9yZURhdGFbNF0ua2V5fSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAub25z
dWNjZXNzPSB0ZXN0QWR2YW5jZU11bHRpcGxlOworfQorCitmdW5jdGlvbiB0ZXN0QWR2YW5jZU11
bHRpcGxlKCkKK3sKKyAgICBkZWJ1ZygidGVzdEFkdmFuY2VNdWx0aXBsZSgpIik7CisgICAgbWFr
ZUFkdmFuY2VUZXN0KDAsIG51bGwsIG51bGwsIDMsCisgICAgICAgICAgICAgICAgICAgIHtrZXk6
IG9iamVjdFN0b3JlRGF0YVszXS5rZXksCisgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogb2Jq
ZWN0U3RvcmVEYXRhWzNdLnZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgcHJpbWFyeUtleTog
b2JqZWN0U3RvcmVEYXRhWzNdLmtleX0pCisgICAgICAgICAgICAgICAgICAgICAgICAgLm9uc3Vj
Y2VzcyA9IHRlc3RBZHZhbmNlVG9FbmQ7Cit9CisKK2Z1bmN0aW9uIHRlc3RBZHZhbmNlVG9FbmQo
KQoreworICAgIGRlYnVnKCJ0ZXN0QWR2YW5jZVRvRW5kKCkiKTsKKyAgICBtYWtlQWR2YW5jZVRl
c3QoMCwgbnVsbCwgbnVsbCwgMTAwLCBudWxsKQorICAgICAgICAub25zdWNjZXNzID0gZmluaXNo
SlNUZXN0OworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3NoYXJlZC5qcyBi
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9zaGFyZWQuanMKaW5kZXgg
ZTRiOGQzZjBjNGNhOGEwOWMyMWRlYzc0MTBiN2JlN2I1ZGQxYWRlZi4uNDkxYzE3YmNjYzM4MzE5
NWVmNDA4MzlkZTVlNjJiMjhhNGJhZGJkNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvcmVzb3VyY2VzL3NoYXJlZC5qcworKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9yZXNvdXJjZXMvc2hhcmVkLmpzCkBAIC0xMTIsMyArMTEyLDUwIEBAIGZ1bmN0
aW9uIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYikKICAgICAgICAgZGIuZGVsZXRlT2JqZWN0U3Rv
cmUoZGIub2JqZWN0U3RvcmVOYW1lcy5pdGVtKDApKTsKICAgICBkZWJ1ZygiRGVsZXRlZCBhbGwg
b2JqZWN0IHN0b3Jlcy4iKTsKIH0KKworLy8gdGFrZSBhbiB1bnNwZWNpZmllZCBudW1iZXIgb2Yg
Y2FsbGJhY2stbGlrZSBvYmplY3RzLCB3YWl0IGZvciBlYWNoCisvLyBvbmUsIGFuZCBmaXJlIGFu
IG9uc3VjY2VzcyBldmVudCB3aGVuIGFsbCBvZiB0aGVtIGNvbXBsZXRlLiBJZiBhbnkKKy8vIG9m
IHRoZSBjYWxsYmFjayBvYmplY3RzIHRocm93IGFuIGVycm9yIG9yIGFib3J0LCBmaXJlIHRoZQor
Ly8gYXBwcm9wcmlhdGUgb25lcnJvci9vbmFib3J0IGltbWVkaWF0ZWx5LgorZnVuY3Rpb24gd2Fp
dEZvcigpCit7CisKKyAgICB2YXIgcHJvZ3Jlc3MgPSBbXTsgICAgICAgICAgLy8gd2hlbiBhbGwg
b2YgdGhlc2UgYXJlIHRydWUsIHdlJ3JlIGRvbmUKKyAgICB2YXIgZXZlbnRSZXN1bHQgPSB7Cisg
ICAgICAgIG9uZXJyb3I6IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrLAorICAgICAgICBvbmFib3J0
OiB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjaywKKyAgICB9OworCisgICAgZnVuY3Rpb24gb25lcnJv
cihlKQorICAgIHsKKyAgICAgICAgZXZlbnRSZXN1bHQub25lcnJvcihlKTsKKyAgICB9CisKKyAg
ICBmdW5jdGlvbiBvbmFib3J0KGUpCisgICAgeworICAgICAgICBldmVudFJlc3VsdC5vbmFib3J0
KGUpOworICAgIH0KKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsg
aSsrKSB7CisgICAgICAgIHZhciBldmVudCA9IGFyZ3VtZW50c1tpXTsKKyAgICAgICAgcHJvZ3Jl
c3MucHVzaChmYWxzZSk7CisgICAgICAgIGV2ZW50Lm9uc3VjY2VzcyA9IHdhaXRGb3Jfb25zdWNj
ZXNzKGksIHByb2dyZXNzLCBldmVudFJlc3VsdCk7CisgICAgICAgIGV2ZW50Lm9uYWJvcnQgPSBv
bmFib3J0OworICAgICAgICBldmVudC5vbmVycm9yID0gb25lcnJvcjsKKyAgICB9CisgICAgcmV0
dXJuIGV2ZW50UmVzdWx0OworfQorCitmdW5jdGlvbiB3YWl0Rm9yX29uc3VjY2VzcyhpbmRleCwg
c3VjY2Vzc2VzLCBldmVudFJlc3VsdCkKK3sKKyAgICBmdW5jdGlvbiBvbnN1Y2Nlc3MoKQorICAg
IHsKKyAgICAgICAgc3VjY2Vzc2VzW2luZGV4XSA9IHRydWU7CisgICAgICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgc3VjY2Vzc2VzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICBpZiAoIXN1Y2Nl
c3Nlc1tpXSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgZXZl
bnRSZXN1bHQub25zdWNjZXNzKCk7CisgICAgfQorICAgIHJldHVybiBvbnN1Y2Nlc3M7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>138610</attachid>
            <date>2012-04-24 11:35:52 -0700</date>
            <delta_ts>2012-04-24 12:16:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-84174-20120424113551.patch</filename>
            <type>text/plain</type>
            <size>38198</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE1MDUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWQxZTc1NGRiMTM3NWEx
MmUxN2ZiMDExODVjM2JkOGE2NGVhMzA2OS4uYzhlZGMyMzQzN2Q5MWUwMTNhNDJkYzFlYjc3OWQw
NzlhNjljMjhiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTA0LTIzICBBbGVj
IEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IGlt
cGxlbWVudCBjdXJzb3IuYWR2YW5jZSgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD04NDE3NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRlc3Q6IHN0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1hZHZhbmNlLmh0
bWwKKworICAgICAgICBJbXBsZW1lbnQgSURCQ3Vyc29yLmFkdmFuY2UoKSB0byBzcGVjLgorCisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmg6CisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1
cnNvcjo6YWR2YW5jZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9JREJDdXJzb3IuaDoKKyAgICAgICAgKElEQkN1cnNvcik6CisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9JREJDdXJzb3JCYWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3JC
YWNrZW5kSW1wbDo6YWR2YW5jZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQkN1cnNvckJhY2tlbmRJbXBsOjphZHZhbmNlSW50ZXJuYWwpOgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbXBsLmg6CisgICAgICAgIChJREJDdXJz
b3JCYWNrZW5kSW1wbCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFj
a2VuZEludGVyZmFjZS5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJC
YWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisKIDIwMTItMDQtMjQgIEFsZXhp
cyBNZW5hcmQgIDxhbGV4aXMubWVuYXJkQG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAgQW5vdGhl
ciB1bnJldmlld2VkIGJ1aWxkIGZpeCBmb3IgTWFjLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpp
bmRleCBhYmI2MzYwNzA4MmRmMGFkNmY3YjdhNTE5MzUzMjZkMjQ5N2U0MDYwLi43OThlZjEwMDZl
MDQzYjE1NTNkMDhiYjI2NjFkZTM1MDdiYTZmYjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDIwIEBACisyMDEyLTA0LTIzICBBbGVjIEZsZXR0ICA8YWxlY2ZsZXR0QGNo
cm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IGltcGxlbWVudCBjdXJzb3IuYWR2YW5j
ZSgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NDE3
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEhvb2sg
dXAgY2hyb21pdW0gSVBDIHRvIElEQkN1cnNvci5hZHZhbmNlKCkuCisKKyAgICAgICAgKiBzcmMv
SURCQ3Vyc29yQmFja2VuZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SURCQ3Vyc29yQmFj
a2VuZFByb3h5OjphZHZhbmNlKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogc3JjL0lE
QkN1cnNvckJhY2tlbmRQcm94eS5oOgorICAgICAgICAoSURCQ3Vyc29yQmFja2VuZFByb3h5KToK
KyAgICAgICAgKiBzcmMvV2ViSURCQ3Vyc29ySW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YklEQkN1cnNvckltcGw6OmFkdmFuY2UpOgorCiAyMDEyLTA0LTI0ICBTaGVyaWZmIEJvdCAgPHdl
YmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5n
IG91dCByMTE1MDAwLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJCYWNraW5nU3RvcmUuaAppbmRleCA1NTFiODI2ODk1YjZjMzJkOTdiMDc3ZjJhMjdhNTJjMjdm
ZmQyZmEzLi5mNmJiMTBhYWFjNWM4NTkzODY5Yjg1ZGFjMTY3YTliODRlMDY3NTdkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuaApA
QCAtOTQsNyArOTQsOCBAQCBwdWJsaWM6CiAgICAgICAgIH07CiAKICAgICAgICAgdmlydHVhbCBQ
YXNzUmVmUHRyPEN1cnNvcj4gY2xvbmUoKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBjb250
aW51ZUZ1bmN0aW9uKGNvbnN0IElEQktleSogPSAwLCBJdGVyYXRvclN0YXRlIG5leHRTdGF0ZSA9
IFNlZWspID0gMDsKKyAgICAgICAgdmlydHVhbCBib29sIGFkdmFuY2UodW5zaWduZWQgbG9uZykg
PSAwOworICAgICAgICB2aXJ0dWFsIGJvb2wgY29udGludWVGdW5jdGlvbihjb25zdCBJREJLZXkq
ID0gMCwgSXRlcmF0b3JTdGF0ZSA9IFNlZWspID0gMDsKICAgICAgICAgdmlydHVhbCBQYXNzUmVm
UHRyPElEQktleT4ga2V5KCkgPSAwOwogICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCS2V5
PiBwcmltYXJ5S2V5KCkgPSAwOwogICAgICAgICB2aXJ0dWFsIFN0cmluZyB2YWx1ZSgpID0gMDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwCmluZGV4
IDczODdlMWIxZTI4Y2NiYmRiYjg5OTBkMGY4NGI5YzQ3MTFiOTg2ZTkuLmM4ODIzZTYzMWIzMzc1
NTFlZTE4NDU1MTlkZTk3YzEzNDVjNjE2YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcApAQCAtMTE2LDYgKzExNiwyOSBAQCBQYXNzUmVmUHRy
PElEQlJlcXVlc3Q+IElEQkN1cnNvcjo6dXBkYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIFBhc3NSZQogICAgIHJldHVybiByZXF1ZXN0LnJlbGVhc2UoKTsKIH0KIAordm9pZCBJ
REJDdXJzb3I6OmFkdmFuY2UodW5zaWduZWQgbG9uZyBjb3VudCwgRXhjZXB0aW9uQ29kZSYgZWMp
Cit7CisgICAgSURCX1RSQUNFKCJJREJDdXJzb3I6OmFkdmFuY2UiKTsKKyAgICBpZiAoIW1fZ290
VmFsdWUpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGlmICghbV9yZXF1ZXN0KSB7CisgICAgICAgIGVjID0gSURCRGF0YWJh
c2VFeGNlcHRpb246OlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUjsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIC8vIEZJWE1FOiBzcGVjIHNheXMgaWYgY291bnQgPT0gMCwgd2Ugc2hvdWxk
IHRocm93IGEgSmF2YVNjcmlwdCBUeXBlRXJyb3IKKworICAgIGlmIChtX3JlcXVlc3QtPnJlc2V0
UmVhZHlTdGF0ZShtX3RyYW5zYWN0aW9uLmdldCgpKSkgeworICAgICAgICBtX3JlcXVlc3QtPnNl
dEN1cnNvcih0aGlzKTsKKyAgICAgICAgbV9nb3RWYWx1ZSA9IGZhbHNlOworICAgICAgICBtX2Jh
Y2tlbmQtPmFkdmFuY2UoY291bnQsIG1fcmVxdWVzdCwgZWMpOworICAgIH0gZWxzZQorICAgICAg
ICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpOT1RfQUxMT1dFRF9FUlI7Cit9CisKIHZvaWQg
SURCQ3Vyc29yOjpjb250aW51ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogewogICAgIElEQl9UUkFDRSgiSURCQ3Vyc29yOjpjb250aW51ZSIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuaAppbmRleCAyMzdm
MjcyYzA1ZTJiMmI0M2RiNzZjNDI0MWI0OGU3N2ExM2UyNTg0Li41Yjk1OTNiOWY4ZGZjZTc0NWM5
OWZmZWVjZmM3NmJlNjgyNWRiNGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJDdXJzb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJDdXJzb3IuaApAQCAtNjcsNiArNjcsNyBAQCBwdWJsaWM6CiAgICAgSURCQW55KiBz
b3VyY2UoKSBjb25zdDsKIAogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gdXBkYXRlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIEV4
Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIGFkdmFuY2UodW5zaWduZWQgbG9uZywgRXhjZXB0aW9u
Q29kZSYpOwogICAgIHZvaWQgY29udGludWVGdW5jdGlvbihQYXNzUmVmUHRyPElEQktleT4sIEV4
Y2VwdGlvbkNvZGUmKTsKICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGRlbGV0ZUZ1bmN0aW9u
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFeGNlcHRpb25Db2RlJik7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuaWRsCmluZGV4IDQxNTQwZTJmMmJi
MDcxMzM1YjgyOWYxNzE4N2U2ZDY1MjBhOWJkZjMuLmQwZjQxMWQzYjhhMmFkY2ZlNTNkNGMyZGZj
YzZkMjMxMTFlYWViYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkN1cnNvci5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCQ3Vyc29yLmlkbApAQCAtNDAsOSArNDAsMTMgQEAgbW9kdWxlIHN0b3JhZ2UgewogCiAgICAg
ICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBJREJSZXF1ZXN0IHVwZGF0ZShp
biBTZXJpYWxpemVkU2NyaXB0VmFsdWUgdmFsdWUpCiAgICAgICAgICAgICByYWlzZXMgKElEQkRh
dGFiYXNlRXhjZXB0aW9uKTsKKyAgICAgICAgdm9pZCBhZHZhbmNlKGluIHVuc2lnbmVkIGxvbmcg
Y291bnQpCisgICAgICAgICAgICByYWlzZXMgKElEQkRhdGFiYXNlRXhjZXB0aW9uKTsKICAgICAg
ICAgW0ltcGxlbWVudGVkQXM9Y29udGludWVGdW5jdGlvbl0gdm9pZCBjb250aW51ZShpbiBbT3B0
aW9uYWxdIElEQktleSBrZXkpCiAgICAgICAgICAgICByYWlzZXMgKElEQkRhdGFiYXNlRXhjZXB0
aW9uKTsKICAgICAgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIEltcGxlbWVu
dGVkQXM9ZGVsZXRlRnVuY3Rpb25dIElEQlJlcXVlc3QgZGVsZXRlKCkKICAgICAgICAgICAgIHJh
aXNlcyAoSURCRGF0YWJhc2VFeGNlcHRpb24pOworCisKICAgICB9OwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZEltcGwuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZEltcGwu
Y3BwCmluZGV4IGNkYmU3MDdmY2UxMjk1NGJkZDViOWQ5ZGZhYmVhYTQxODg0NDRlYmQuLjNjZmVm
ODAwZGE4YzViMjYyODM3MmU3OTI5Yjc5NjY2ZDNkMmM5YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbXBsLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5kSW1wbC5jcHAK
QEAgLTEyNCw4ICsxMjQsMzAgQEAgdm9pZCBJREJDdXJzb3JCYWNrZW5kSW1wbDo6Y29udGludWVG
dW5jdGlvbihQYXNzUmVmUHRyPElEQktleT4gcHJwS2V5LCBQYXNzUmVmUHQKICAgICAgICAgZWMg
PSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSOwogfQogCit2
b2lkIElEQkN1cnNvckJhY2tlbmRJbXBsOjphZHZhbmNlKHVuc2lnbmVkIGxvbmcgY291bnQsIFBh
c3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIEV4Y2VwdGlvbkNvZGUmIGVjKQor
eworICAgIElEQl9UUkFDRSgiSURCQ3Vyc29yQmFja2VuZEltcGw6OmFkdmFuY2UiKTsKKworICAg
IGlmICghbV90cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKGNyZWF0ZUNhbGxiYWNrVGFzaygmSURC
Q3Vyc29yQmFja2VuZEltcGw6OmFkdmFuY2VJbnRlcm5hbCwgdGhpcywgY291bnQsIHBycENhbGxi
YWNrcykpKQorICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpUUkFOU0FDVElPTl9J
TkFDVElWRV9FUlI7Cit9CisKIC8vIElNUE9SVEFOVDogSWYgdGhpcyBldmVyIDEpIGZpcmVzIGFu
ICdlcnJvcicgZXZlbnQgYW5kIDIpIGl0J3MgcG9zc2libGUgdG8gZmlyZSBhbm90aGVyIGV2ZW50
IGFmdGVyd2FyZHMsCiAvLyAgICAgICAgICAgIElEQlJlcXVlc3Q6Omhhc1BlbmRpbmdBY3Rpdml0
eSgpIHdpbGwgbmVlZCB0byBiZSBtb2RpZmllZCB0byBoYW5kbGUgdGhpcyEhIQordm9pZCBJREJD
dXJzb3JCYWNrZW5kSW1wbDo6YWR2YW5jZUludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbXBsPiBwcnBDdXJzb3IsIHVuc2lnbmVkIGxv
bmcgY291bnQsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit7CisgICAgSURC
X1RSQUNFKCJJREJDdXJzb3JCYWNrZW5kSW1wbDo6YWR2YW5jZUludGVybmFsIik7CisgICAgUmVm
UHRyPElEQkN1cnNvckJhY2tlbmRJbXBsPiBjdXJzb3IgPSBwcnBDdXJzb3I7CisgICAgaWYgKCFj
dXJzb3ItPm1fY3Vyc29yIHx8ICFjdXJzb3ItPm1fY3Vyc29yLT5hZHZhbmNlKGNvdW50KSkgewor
ICAgICAgICBjdXJzb3ItPm1fY3Vyc29yID0gMDsKKyAgICAgICAgY2FsbGJhY2tzLT5vblN1Y2Nl
c3MoU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpudWxsVmFsdWUoKSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICAvLyBkbyBJIG5lZWQgc29tZXRoaW5nIHNwZWNpYWwgaGVyZT8KKyAgICBj
YWxsYmFja3MtPm9uU3VjY2Vzc1dpdGhDb250aW51YXRpb24oKTsKK30KKwogdm9pZCBJREJDdXJz
b3JCYWNrZW5kSW1wbDo6Y29udGludWVGdW5jdGlvbkludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbXBsPiBwcnBDdXJzb3IsIFBhc3NS
ZWZQdHI8SURCS2V5PiBwcnBLZXksIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3Mp
CiB7CiAgICAgSURCX1RSQUNFKCJJREJDdXJzb3JCYWNrZW5kSW1wbDo6Y29udGludWVJbnRlcm5h
bCIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vy
c29yQmFja2VuZEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1
cnNvckJhY2tlbmRJbXBsLmgKaW5kZXggNGVlNWFjNDBhZTYyOTMyYWYzNDZmZTc1NzEyYzI5NzM5
Njc1ZDk1MS4uYjdiOGU5MjRhNDA4MmFkOGFkMWE4YjRkZWFkZDUyMWMxZmQzZTNhNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZElt
cGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNr
ZW5kSW1wbC5oCkBAIC01OSw2ICs1OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8SURCS2V5PiBwcmltYXJ5S2V5KCkgY29uc3Q7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgdXBk
YXRlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgUGFzc1JlZlB0cjxJREJDYWxs
YmFja3M+LCBFeGNlcHRpb25Db2RlJik7CisgICAgdmlydHVhbCB2b2lkIGFkdmFuY2UodW5zaWdu
ZWQgbG9uZywgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBFeGNlcHRpb25Db2RlJik7CiAgICAg
dmlydHVhbCB2b2lkIGNvbnRpbnVlRnVuY3Rpb24oUGFzc1JlZlB0cjxJREJLZXk+LCBQYXNzUmVm
UHRyPElEQkNhbGxiYWNrcz4sIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIHZvaWQgZGVs
ZXRlRnVuY3Rpb24oUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBFeGNlcHRpb25Db2RlJik7CiAg
ICAgdmlydHVhbCB2b2lkIHByZWZldGNoQ29udGludWUoaW50IG51bWJlclRvRmV0Y2gsIFBhc3NS
ZWZQdHI8SURCQ2FsbGJhY2tzPiwgRXhjZXB0aW9uQ29kZSYpOwpAQCAtNjksNiArNzAsNyBAQCBw
dWJsaWM6CiBwcml2YXRlOgogICAgIElEQkN1cnNvckJhY2tlbmRJbXBsKFBhc3NSZWZQdHI8SURC
QmFja2luZ1N0b3JlOjpDdXJzb3I+LCBJREJDdXJzb3I6OkRpcmVjdGlvbiwgQ3Vyc29yVHlwZSwg
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50
ZXJmYWNlKik7CiAKKyAgICBzdGF0aWMgdm9pZCBhZHZhbmNlSW50ZXJuYWwoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEltcGw+LCB1bnNpZ25lZCBs
b25nLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pOwogICAgIHN0YXRpYyB2b2lkIGNvbnRpbnVl
RnVuY3Rpb25JbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJD
dXJzb3JCYWNrZW5kSW1wbD4sIFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxJREJDYWxs
YmFja3M+KTsKICAgICBzdGF0aWMgdm9pZCBwcmVmZXRjaENvbnRpbnVlSW50ZXJuYWwoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEltcGw+LCBpbnQg
bnVtYmVyVG9GZXRjaCwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZEludGVyZmFj
ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZElu
dGVyZmFjZS5oCmluZGV4IGI1N2JiNTg2OGVlMTZiODk3ZGI3N2Q4MWQwNWNjYmY2ZGIwNzZjMDMu
Ljk3MTIzMjgyNmZkN2E1ZDAzYjk1NTk5YzcwZDk1ZDgyYWYxNWRkMGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5k
SW50ZXJmYWNlLmgKQEAgLTU5LDYgKzU5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlKCkgY29uc3QgPSAwOwogCiAgICAgdmly
dHVhbCB2b2lkIHVwZGF0ZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIFBhc3NS
ZWZQdHI8SURCQ2FsbGJhY2tzPiwgRXhjZXB0aW9uQ29kZSYpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgYWR2YW5jZSh1bnNpZ25lZCBsb25nIGNvdW50LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4s
IEV4Y2VwdGlvbkNvZGUmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNvbnRpbnVlRnVuY3Rpb24o
UGFzc1JlZlB0cjxJREJLZXk+IGtleSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBFeGNlcHRp
b25Db2RlJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVGdW5jdGlvbihQYXNzUmVmUHRy
PElEQkNhbGxiYWNrcz4sIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHBy
ZWZldGNoQ29udGludWUoaW50IG51bWJlclRvRmV0Y2gsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tz
PiwgRXhjZXB0aW9uQ29kZSYpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggNmE3ZWQy
ODRiYWVkZGRlYWZjZmFiNzgxYTE0ZGYxMDlmOTgyOWVmYS4uZjk1NjcwOTUyMDk4NTBiMThjYzg2
MDI5NTU3ZmE3MGVmNjdhNjMzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5jcHAKQEAgLTk4MCw3ICs5
ODAsOCBAQCBzdHJ1Y3QgQ3Vyc29yT3B0aW9ucyB7CiBjbGFzcyBDdXJzb3JJbXBsQ29tbW9uIDog
cHVibGljIElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yIHsKIHB1YmxpYzoKICAgICAvLyBJREJCYWNr
aW5nU3RvcmU6OkN1cnNvcgotICAgIHZpcnR1YWwgYm9vbCBjb250aW51ZUZ1bmN0aW9uKGNvbnN0
IElEQktleSosIEl0ZXJhdG9yU3RhdGUpOworICAgIHZpcnR1YWwgYm9vbCBhZHZhbmNlKHVuc2ln
bmVkIGxvbmcpOworICAgIHZpcnR1YWwgYm9vbCBjb250aW51ZUZ1bmN0aW9uKGNvbnN0IElEQktl
eSogPSAwLCBJdGVyYXRvclN0YXRlID0gU2Vlayk7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPElE
QktleT4ga2V5KCkgeyByZXR1cm4gbV9jdXJyZW50S2V5OyB9CiAgICAgdmlydHVhbCBQYXNzUmVm
UHRyPElEQktleT4gcHJpbWFyeUtleSgpIHsgcmV0dXJuIG1fY3VycmVudEtleTsgfQogICAgIHZp
cnR1YWwgU3RyaW5nIHZhbHVlKCkgPSAwOwpAQCAtMTAzNSw2ICsxMDM2LDE1IEBAIGJvb2wgQ3Vy
c29ySW1wbENvbW1vbjo6Zmlyc3RTZWVrKCkKICAgICByZXR1cm4gY29udGludWVGdW5jdGlvbigw
LCBSZWFkeSk7CiB9CiAKK2Jvb2wgQ3Vyc29ySW1wbENvbW1vbjo6YWR2YW5jZSh1bnNpZ25lZCBs
b25nIGNvdW50KQoreworICAgIHdoaWxlIChjb3VudC0tKSB7CisgICAgICAgIGlmICghY29udGlu
dWVGdW5jdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1
cm4gdHJ1ZTsKK30KKwogYm9vbCBDdXJzb3JJbXBsQ29tbW9uOjpjb250aW51ZUZ1bmN0aW9uKGNv
bnN0IElEQktleSoga2V5LCBJdGVyYXRvclN0YXRlIG5leHRTdGF0ZSkKIHsKICAgICBSZWZQdHI8
SURCS2V5PiBwcmV2aW91c0tleSA9IG1fY3VycmVudEtleTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0lEQkN1cnNvckJhY2tlbmRQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9JREJDdXJzb3JCYWNrZW5kUHJveHkuY3BwCmluZGV4IDQyOGMzN2Y1
ZWI2ODlhZTY3YjUzZTgzNDhkNjU0ZGQ2MjQ1ZGQyY2UuLjJhNjJiOTI2ZjVmNjY0ZWU2ZDc0OWRk
MDUwMjc3NjdlZTI1NGVmODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0lEQkN1cnNvckJhY2tlbmRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvSURCQ3Vyc29yQmFja2VuZFByb3h5LmNwcApAQCAtNzksNiArNzksMTEgQEAgdm9pZCBJREJD
dXJzb3JCYWNrZW5kUHJveHk6OnVwZGF0ZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gdmFsdWUsIFBhc3MKICAgICBtX2lkYkN1cnNvci0+dXBkYXRlKHZhbHVlLCBuZXcgV2ViSURC
Q2FsbGJhY2tzSW1wbChjYWxsYmFja3MpLCBlYyk7CiB9CiAKK3ZvaWQgSURCQ3Vyc29yQmFja2Vu
ZFByb3h5OjphZHZhbmNlKHVuc2lnbmVkIGxvbmcgY291bnQsIFBhc3NSZWZQdHI8SURCQ2FsbGJh
Y2tzPiBjYWxsYmFja3MsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIG1faWRiQ3Vyc29yLT5h
ZHZhbmNlKGNvdW50LCBuZXcgV2ViSURCQ2FsbGJhY2tzSW1wbChjYWxsYmFja3MpLCBlYyk7Cit9
CisKIHZvaWQgSURCQ3Vyc29yQmFja2VuZFByb3h5Ojpjb250aW51ZUZ1bmN0aW9uKFBhc3NSZWZQ
dHI8SURCS2V5PiBrZXksIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogewogICAgIG1faWRiQ3Vyc29yLT5jb250aW51ZUZ1bmN0aW9uKGtleSwg
bmV3IFdlYklEQkNhbGxiYWNrc0ltcGwoY2FsbGJhY2tzKSwgZWMpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ3Vyc29yQmFja2VuZFByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9JREJDdXJzb3JCYWNrZW5kUHJveHkuaAppbmRleCBjZmU2ZGFm
NWRkZWQ3OGQ3ZWE1ZGY0ZDkzZTBmYjNiYTFkZDlhZDA2Li4yNGEzZTQyYzQ3YTdiNjFlYjY5MjEw
MTBmN2NmMThmODAxOGY0NzM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9JREJDdXJzb3JCYWNrZW5kUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9JREJDdXJzb3JCYWNrZW5kUHJveHkuaApAQCAtNDcsNiArNDcsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQktleT4gcHJpbWFyeUtleSgpIGNvbnN0Owog
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZh
bHVlKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZShQYXNzUmVmUHRyPFdlYkNvcmU6
OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tz
PiwgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSYpOworICAgIHZpcnR1YWwgdm9pZCBhZHZhbmNlKHVu
c2lnbmVkIGxvbmcsIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPiwgV2ViQ29yZTo6
RXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgdm9pZCBjb250aW51ZUZ1bmN0aW9uKFBhc3NS
ZWZQdHI8V2ViQ29yZTo6SURCS2V5PiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+
LCBXZWJDb3JlOjpFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUZ1bmN0
aW9uKFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPiwgV2ViQ29yZTo6RXhjZXB0aW9u
Q29kZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwcmVmZXRjaENvbnRpbnVlKGludCBudW1iZXJUb0Zl
dGNoLCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4sIFdlYkNvcmU6OkV4Y2VwdGlv
bkNvZGUmKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9IC8vIE9ubHkgdXNlZCBpbiB0aGUgYmFj
a2VuZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkN1cnNv
ckltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ3Vyc29ySW1wbC5j
cHAKaW5kZXggZjczYWIyYzM1YmVkZjkyOGU5Y2M1ZTA2ZWFlMWE4ODRmNjhhMDFiMC4uNmYxMGVm
ZTllMDk2ZjkzZmZkNTdkNzZlZmU5MzM0MDY5Yjg3OTJhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ3Vyc29ySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViSURCQ3Vyc29ySW1wbC5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgdm9p
ZCBXZWJJREJDdXJzb3JJbXBsOjp1cGRhdGUoY29uc3QgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVl
JiB2YWx1ZSwgV2ViSURCQ2FsbGIKIAogdm9pZCBXZWJJREJDdXJzb3JJbXBsOjphZHZhbmNlKHVu
c2lnbmVkIGxvbmcgY291bnQsIFdlYklEQkNhbGxiYWNrcyogY2FsbGJhY2tzLCBXZWJFeGNlcHRp
b25Db2RlJiBlYykKIHsKLSAgICAvLyBGSVhNRTogbm90IGltcGxlbWVudGVkIGluIGluZGV4ZWRk
YiB5ZXQKKyAgICBtX2lkYkN1cnNvckJhY2tlbmQtPmFkdmFuY2UoY291bnQsIElEQkNhbGxiYWNr
c1Byb3h5OjpjcmVhdGUoYWRvcHRQdHIoY2FsbGJhY2tzKSksIGVjKTsKIH0KIAogdm9pZCBXZWJJ
REJDdXJzb3JJbXBsOjpjb250aW51ZUZ1bmN0aW9uKGNvbnN0IFdlYklEQktleSYga2V5LCBXZWJJ
REJDYWxsYmFja3MqIGNhbGxiYWNrcywgV2ViRXhjZXB0aW9uQ29kZSYgZWMpCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZmM5
NTc0OWUyYTQ4MDVlNTQ1MzViMjU5NWZkYTE2YjBiZGRmZTBlMy4uZmRkMTY0ZTUzYjJlNTU0ZDFl
N2Q0YTEwOTYyNjFmNDcyNDg0Y2YyMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEyLTA0LTIz
ICBBbGVjIEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVk
REI6IGltcGxlbWVudCBjdXJzb3IuYWR2YW5jZSgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NDE3NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzIGZvciBjdXJzb3IuYWR2YW5jZSgpLgorCisgICAg
ICAgICogc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLWFkdmFuY2UtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItYWR2YW5jZS5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLWFkdmFuY2Uu
anM6IEFkZGVkLgorICAgICAgICAodGVzdCk6CisgICAgICAgIChvcGVuU3VjY2Vzcyk6CisgICAg
ICAgIChjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKG1ha2VBZHZhbmNl
VGVzdC5jb250aW51ZVRvVGVzdCk6CisgICAgICAgIChtYWtlQWR2YW5jZVRlc3QucmVxdWVzdC5v
bmVycm9yKToKKyAgICAgICAgKG1ha2VBZHZhbmNlVGVzdCk6CisgICAgICAgIChta0N1cnNvcik6
CisgICAgICAgIChydW5UZXN0KToKKyAgICAgICAgKHRlc3RBbGwpOgorICAgICAgICAodGVzdFNp
bXBsZSk6CisgICAgICAgICh0ZXN0Q29udGludWVUaGVuQWR2YW5jZSk6CisgICAgICAgICh0ZXN0
QWR2YW5jZU11bHRpcGxlKToKKyAgICAgICAgKHRlc3RBZHZhbmNlVG9FbmQpOgorICAgICAgICAq
IHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9zaGFyZWQuanM6CisgICAgICAgICh3YWl0Rm9y
Lm9uZXJyb3IpOgorICAgICAgICAod2FpdEZvci5vbmFib3J0KToKKyAgICAgICAgKHdhaXRGb3Ip
OgorICAgICAgICAod2FpdEZvcl9vbnN1Y2Nlc3Mub25zdWNjZXNzKToKKyAgICAgICAgKHdhaXRG
b3Jfb25zdWNjZXNzKToKKwogMjAxMi0wNC0yNCAgTWlraGFpbCBOYWdhbm92ICA8bW5hZ2Fub3ZA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtDaHJvbWl1bV0gVW5yZXZpZXdlZCB0ZXN0IGV4cGVj
dGF0aW9ucyB1cGRhdGUuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9jdXJzb3ItYWR2YW5jZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9jdXJzb3ItYWR2YW5jZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODBiMWQ0MzQ0YTll
ZWM2M2EwMzI4MGNjNDY1OGJiZDNiODJhMWNiZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1hZHZhbmNlLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDEyOSBAQAorVGVzdCBJbmRleGVkREIgY3Vyc29yLmFkdmFuY2UoKS4KKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCisKK2luZGV4ZWREQiA9IHNlbGYuaW5kZXhlZERCIHx8IHNlbGYu
d2Via2l0SW5kZXhlZERCIHx8IHNlbGYubW96SW5kZXhlZERCIHx8IHNlbGYubXNJbmRleGVkREIg
fHwgc2VsZi5PSW5kZXhlZERCOworCitpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikK
K29wZW5TdWNjZXNzKCk6CitkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQKK3JlcXVlc3QgPSBkYi5z
ZXRWZXJzaW9uKCcxJykKK0RlbGV0ZWQgYWxsIG9iamVjdCBzdG9yZXMuCitvYmplY3RTdG9yZSA9
IGRiLmNyZWF0ZU9iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSk7CitGaXJzdCwgYWRkIGFsbCBv
dXIgZGF0YSB0byB0aGUgb2JqZWN0IHN0b3JlLgorcmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChv
YmplY3RTdG9yZURhdGFbaV0udmFsdWUsIG9iamVjdFN0b3JlRGF0YVtpXS5rZXkpOworcmVxdWVz
dCA9IG9iamVjdFN0b3JlLmFkZChvYmplY3RTdG9yZURhdGFbaV0udmFsdWUsIG9iamVjdFN0b3Jl
RGF0YVtpXS5rZXkpOworcmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChvYmplY3RTdG9yZURhdGFb
aV0udmFsdWUsIG9iamVjdFN0b3JlRGF0YVtpXS5rZXkpOworcmVxdWVzdCA9IG9iamVjdFN0b3Jl
LmFkZChvYmplY3RTdG9yZURhdGFbaV0udmFsdWUsIG9iamVjdFN0b3JlRGF0YVtpXS5rZXkpOwor
cmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChvYmplY3RTdG9yZURhdGFbaV0udmFsdWUsIG9iamVj
dFN0b3JlRGF0YVtpXS5rZXkpOworcmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChvYmplY3RTdG9y
ZURhdGFbaV0udmFsdWUsIG9iamVjdFN0b3JlRGF0YVtpXS5rZXkpOworcmVxdWVzdCA9IG9iamVj
dFN0b3JlLmFkZChvYmplY3RTdG9yZURhdGFbaV0udmFsdWUsIG9iamVjdFN0b3JlRGF0YVtpXS5r
ZXkpOworcmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChvYmplY3RTdG9yZURhdGFbaV0udmFsdWUs
IG9iamVjdFN0b3JlRGF0YVtpXS5rZXkpOworcmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChvYmpl
Y3RTdG9yZURhdGFbaV0udmFsdWUsIG9iamVjdFN0b3JlRGF0YVtpXS5rZXkpOworcmVxdWVzdCA9
IG9iamVjdFN0b3JlLmFkZChvYmplY3RTdG9yZURhdGFbaV0udmFsdWUsIG9iamVjdFN0b3JlRGF0
YVtpXS5rZXkpOworcmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChvYmplY3RTdG9yZURhdGFbaV0u
dmFsdWUsIG9iamVjdFN0b3JlRGF0YVtpXS5rZXkpOworcmVxdWVzdCA9IG9iamVjdFN0b3JlLmFk
ZChvYmplY3RTdG9yZURhdGFbaV0udmFsdWUsIG9iamVjdFN0b3JlRGF0YVtpXS5rZXkpOworcmVx
dWVzdCA9IG9iamVjdFN0b3JlLmFkZChvYmplY3RTdG9yZURhdGFbaV0udmFsdWUsIG9iamVjdFN0
b3JlRGF0YVtpXS5rZXkpOwordGVzdEFsbCgpCit0ZXN0U2ltcGxlKCkKK3RyYW5zID0gZGIudHJh
bnNhY3Rpb24ob2JqZWN0U3RvcmVOYW1lKQorb2JqZWN0U3RvcmUgPSB0cmFucy5vYmplY3RTdG9y
ZShvYmplY3RTdG9yZU5hbWUpCityZXF1ZXN0ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNvcihudWxs
LCBudWxsKQorY3Vyc29yLmFkdmFuY2UoMSkKK1BBU1MgJ3sia2V5IjoiMjM3LTIzLTc3MzMiLCJ2
YWx1ZSI6eyJuYW1lIjoiQW5uIiwiaGVpZ2h0Ijo1Miwid2VpZ2h0IjoxMTB9LCJwcmltYXJ5S2V5
IjoiMjM3LTIzLTc3MzMifScgaXMgJ3sia2V5IjoiMjM3LTIzLTc3MzMiLCJ2YWx1ZSI6eyJuYW1l
IjoiQW5uIiwiaGVpZ2h0Ijo1Miwid2VpZ2h0IjoxMTB9LCJwcmltYXJ5S2V5IjoiMjM3LTIzLTc3
MzMifScKK3Rlc3RDb250aW51ZVRoZW5BZHZhbmNlKCkKK3RyYW5zID0gZGIudHJhbnNhY3Rpb24o
b2JqZWN0U3RvcmVOYW1lKQorb2JqZWN0U3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZShvYmplY3RT
dG9yZU5hbWUpCityZXF1ZXN0ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNvcihudWxsLCBudWxsKQor
Y3Vyc29yLmNvbnRpbnVlKCk7CitjdXJzb3IuY29udGludWUoKTsKK2N1cnNvci5jb250aW51ZSgp
OworY3Vyc29yLmFkdmFuY2UoMSkKK1BBU1MgJ3sia2V5IjoiMjM3LTIzLTc3MzYiLCJ2YWx1ZSI6
eyJuYW1lIjoiSm9lIiwiaGVpZ2h0Ijo2NSwid2VpZ2h0IjoxNTB9LCJwcmltYXJ5S2V5IjoiMjM3
LTIzLTc3MzYifScgaXMgJ3sia2V5IjoiMjM3LTIzLTc3MzYiLCJ2YWx1ZSI6eyJuYW1lIjoiSm9l
IiwiaGVpZ2h0Ijo2NSwid2VpZ2h0IjoxNTB9LCJwcmltYXJ5S2V5IjoiMjM3LTIzLTc3MzYifScK
K3Rlc3RBZHZhbmNlTXVsdGlwbGUoKQordHJhbnMgPSBkYi50cmFuc2FjdGlvbihvYmplY3RTdG9y
ZU5hbWUpCitvYmplY3RTdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSkK
K3JlcXVlc3QgPSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKG51bGwsIG51bGwpCitjdXJzb3IuYWR2
YW5jZSgzKQorUEFTUyAneyJrZXkiOiIyMzctMjMtNzczNSIsInZhbHVlIjp7Im5hbWUiOiJTdWUi
LCJoZWlnaHQiOjU4LCJ3ZWlnaHQiOjEzMH0sInByaW1hcnlLZXkiOiIyMzctMjMtNzczNSJ9JyBp
cyAneyJrZXkiOiIyMzctMjMtNzczNSIsInZhbHVlIjp7Im5hbWUiOiJTdWUiLCJoZWlnaHQiOjU4
LCJ3ZWlnaHQiOjEzMH0sInByaW1hcnlLZXkiOiIyMzctMjMtNzczNSJ9JwordGVzdEFkdmFuY2VU
b0VuZCgpCit0cmFucyA9IGRiLnRyYW5zYWN0aW9uKG9iamVjdFN0b3JlTmFtZSkKK29iamVjdFN0
b3JlID0gdHJhbnMub2JqZWN0U3RvcmUob2JqZWN0U3RvcmVOYW1lKQorcmVxdWVzdCA9IG9iamVj
dFN0b3JlLm9wZW5DdXJzb3IobnVsbCwgbnVsbCkKK2N1cnNvci5hZHZhbmNlKDEwMCkKK1BBU1Mg
J251bGwnIGlzICdudWxsJwordGVzdFByZWZldGNoSW5SYW5nZSgpCit0cmFucyA9IGRiLnRyYW5z
YWN0aW9uKG9iamVjdFN0b3JlTmFtZSkKK29iamVjdFN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUo
b2JqZWN0U3RvcmVOYW1lKQorcmVxdWVzdCA9IG9iamVjdFN0b3JlLm9wZW5DdXJzb3IoKQorUEFT
UyAneyJrZXkiOiIyMzctMjMtNzczMiIsInZhbHVlIjp7Im5hbWUiOiJCb2IiLCJoZWlnaHQiOjYw
LCJ3ZWlnaHQiOjEyMH0sInByaW1hcnlLZXkiOiIyMzctMjMtNzczMiJ9JyBpcyAneyJrZXkiOiIy
MzctMjMtNzczMiIsInZhbHVlIjp7Im5hbWUiOiJCb2IiLCJoZWlnaHQiOjYwLCJ3ZWlnaHQiOjEy
MH0sInByaW1hcnlLZXkiOiIyMzctMjMtNzczMiJ9JworY3Vyc29yLmNvbnRpbnVlKCkKK1BBU1Mg
J3sia2V5IjoiMjM3LTIzLTc3MzMiLCJ2YWx1ZSI6eyJuYW1lIjoiQW5uIiwiaGVpZ2h0Ijo1Miwi
d2VpZ2h0IjoxMTB9LCJwcmltYXJ5S2V5IjoiMjM3LTIzLTc3MzMifScgaXMgJ3sia2V5IjoiMjM3
LTIzLTc3MzMiLCJ2YWx1ZSI6eyJuYW1lIjoiQW5uIiwiaGVpZ2h0Ijo1Miwid2VpZ2h0IjoxMTB9
LCJwcmltYXJ5S2V5IjoiMjM3LTIzLTc3MzMifScKK2N1cnNvci5jb250aW51ZSgpCitQQVNTICd7
ImtleSI6IjIzNy0yMy03NzM0IiwidmFsdWUiOnsibmFtZSI6IlJvbiIsImhlaWdodCI6NzMsIndl
aWdodCI6MTgwfSwicHJpbWFyeUtleSI6IjIzNy0yMy03NzM0In0nIGlzICd7ImtleSI6IjIzNy0y
My03NzM0IiwidmFsdWUiOnsibmFtZSI6IlJvbiIsImhlaWdodCI6NzMsIndlaWdodCI6MTgwfSwi
cHJpbWFyeUtleSI6IjIzNy0yMy03NzM0In0nCitjdXJzb3IuY29udGludWUoKQorUEFTUyAneyJr
ZXkiOiIyMzctMjMtNzczNSIsInZhbHVlIjp7Im5hbWUiOiJTdWUiLCJoZWlnaHQiOjU4LCJ3ZWln
aHQiOjEzMH0sInByaW1hcnlLZXkiOiIyMzctMjMtNzczNSJ9JyBpcyAneyJrZXkiOiIyMzctMjMt
NzczNSIsInZhbHVlIjp7Im5hbWUiOiJTdWUiLCJoZWlnaHQiOjU4LCJ3ZWlnaHQiOjEzMH0sInBy
aW1hcnlLZXkiOiIyMzctMjMtNzczNSJ9JworY3Vyc29yLmFkdmFuY2UoMikKK1BBU1MgJ3sia2V5
IjoiMjM3LTIzLTc3MzciLCJ2YWx1ZSI6eyJuYW1lIjoiUGF0IiwiaGVpZ2h0Ijo2NSwid2VpZ2h0
IjoxMDB9LCJwcmltYXJ5S2V5IjoiMjM3LTIzLTc3MzcifScgaXMgJ3sia2V5IjoiMjM3LTIzLTc3
MzciLCJ2YWx1ZSI6eyJuYW1lIjoiUGF0IiwiaGVpZ2h0Ijo2NSwid2VpZ2h0IjoxMDB9LCJwcmlt
YXJ5S2V5IjoiMjM3LTIzLTc3MzcifScKK2N1cnNvci5jb250aW51ZSgpCitQQVNTICd7ImtleSI6
IjIzNy0yMy03NzM4IiwidmFsdWUiOnsibmFtZSI6IkxlbyIsImhlaWdodCI6NjUsIndlaWdodCI6
MTgwfSwicHJpbWFyeUtleSI6IjIzNy0yMy03NzM4In0nIGlzICd7ImtleSI6IjIzNy0yMy03NzM4
IiwidmFsdWUiOnsibmFtZSI6IkxlbyIsImhlaWdodCI6NjUsIndlaWdodCI6MTgwfSwicHJpbWFy
eUtleSI6IjIzNy0yMy03NzM4In0nCitjdXJzb3IuY29udGludWUoKQorUEFTUyAneyJrZXkiOiIy
MzctMjMtNzczOSIsInZhbHVlIjp7Im5hbWUiOiJKZWYiLCJoZWlnaHQiOjY1LCJ3ZWlnaHQiOjEy
MH0sInByaW1hcnlLZXkiOiIyMzctMjMtNzczOSJ9JyBpcyAneyJrZXkiOiIyMzctMjMtNzczOSIs
InZhbHVlIjp7Im5hbWUiOiJKZWYiLCJoZWlnaHQiOjY1LCJ3ZWlnaHQiOjEyMH0sInByaW1hcnlL
ZXkiOiIyMzctMjMtNzczOSJ9JworY3Vyc29yLmNvbnRpbnVlKCkKK1BBU1MgJ3sia2V5IjoiMjM3
LTIzLTc3NDAiLCJ2YWx1ZSI6eyJuYW1lIjoiU2FtIiwiaGVpZ2h0Ijo3MSwid2VpZ2h0IjoxMTB9
LCJwcmltYXJ5S2V5IjoiMjM3LTIzLTc3NDAifScgaXMgJ3sia2V5IjoiMjM3LTIzLTc3NDAiLCJ2
YWx1ZSI6eyJuYW1lIjoiU2FtIiwiaGVpZ2h0Ijo3MSwid2VpZ2h0IjoxMTB9LCJwcmltYXJ5S2V5
IjoiMjM3LTIzLTc3NDAifScKK2N1cnNvci5jb250aW51ZSgpCitQQVNTICd7ImtleSI6IjIzNy0y
My03NzQxIiwidmFsdWUiOnsibmFtZSI6IlBhdCIsImhlaWdodCI6NjMsIndlaWdodCI6MTAwfSwi
cHJpbWFyeUtleSI6IjIzNy0yMy03NzQxIn0nIGlzICd7ImtleSI6IjIzNy0yMy03NzQxIiwidmFs
dWUiOnsibmFtZSI6IlBhdCIsImhlaWdodCI6NjMsIndlaWdodCI6MTAwfSwicHJpbWFyeUtleSI6
IjIzNy0yMy03NzQxIn0nCitjdXJzb3IuY29udGludWUoKQorUEFTUyAneyJrZXkiOiIyMzctMjMt
Nzc0MiIsInZhbHVlIjp7Im5hbWUiOiJMZW8iLCJoZWlnaHQiOjY5LCJ3ZWlnaHQiOjE4MH0sInBy
aW1hcnlLZXkiOiIyMzctMjMtNzc0MiJ9JyBpcyAneyJrZXkiOiIyMzctMjMtNzc0MiIsInZhbHVl
Ijp7Im5hbWUiOiJMZW8iLCJoZWlnaHQiOjY5LCJ3ZWlnaHQiOjE4MH0sInByaW1hcnlLZXkiOiIy
MzctMjMtNzc0MiJ9JworY3Vyc29yLmNvbnRpbnVlKCkKK1BBU1MgJ3sia2V5IjoiMjM3LTIzLTc3
NDMiLCJ2YWx1ZSI6eyJuYW1lIjoiSmVmIiwiaGVpZ2h0Ijo3Nywid2VpZ2h0IjoxMjB9LCJwcmlt
YXJ5S2V5IjoiMjM3LTIzLTc3NDMifScgaXMgJ3sia2V5IjoiMjM3LTIzLTc3NDMiLCJ2YWx1ZSI6
eyJuYW1lIjoiSmVmIiwiaGVpZ2h0Ijo3Nywid2VpZ2h0IjoxMjB9LCJwcmltYXJ5S2V5IjoiMjM3
LTIzLTc3NDMifScKK2N1cnNvci5jb250aW51ZSgpCitQQVNTICd7ImtleSI6IjIzNy0yMy03NzQ0
IiwidmFsdWUiOnsibmFtZSI6IlNhbSIsImhlaWdodCI6NjYsIndlaWdodCI6MTEwfSwicHJpbWFy
eUtleSI6IjIzNy0yMy03NzQ0In0nIGlzICd7ImtleSI6IjIzNy0yMy03NzQ0IiwidmFsdWUiOnsi
bmFtZSI6IlNhbSIsImhlaWdodCI6NjYsIndlaWdodCI6MTEwfSwicHJpbWFyeUtleSI6IjIzNy0y
My03NzQ0In0nCitjdXJzb3IuY29udGludWUoKQordGVzdFByZWZldGNoT3V0T2ZSYW5nZSgpCit0
cmFucyA9IGRiLnRyYW5zYWN0aW9uKG9iamVjdFN0b3JlTmFtZSkKK29iamVjdFN0b3JlID0gdHJh
bnMub2JqZWN0U3RvcmUob2JqZWN0U3RvcmVOYW1lKQorcmVxdWVzdCA9IG9iamVjdFN0b3JlLm9w
ZW5DdXJzb3IoKQorUEFTUyAneyJrZXkiOiIyMzctMjMtNzczMiIsInZhbHVlIjp7Im5hbWUiOiJC
b2IiLCJoZWlnaHQiOjYwLCJ3ZWlnaHQiOjEyMH0sInByaW1hcnlLZXkiOiIyMzctMjMtNzczMiJ9
JyBpcyAneyJrZXkiOiIyMzctMjMtNzczMiIsInZhbHVlIjp7Im5hbWUiOiJCb2IiLCJoZWlnaHQi
OjYwLCJ3ZWlnaHQiOjEyMH0sInByaW1hcnlLZXkiOiIyMzctMjMtNzczMiJ9JworY3Vyc29yLmNv
bnRpbnVlKCkKK1BBU1MgJ3sia2V5IjoiMjM3LTIzLTc3MzMiLCJ2YWx1ZSI6eyJuYW1lIjoiQW5u
IiwiaGVpZ2h0Ijo1Miwid2VpZ2h0IjoxMTB9LCJwcmltYXJ5S2V5IjoiMjM3LTIzLTc3MzMifScg
aXMgJ3sia2V5IjoiMjM3LTIzLTc3MzMiLCJ2YWx1ZSI6eyJuYW1lIjoiQW5uIiwiaGVpZ2h0Ijo1
Miwid2VpZ2h0IjoxMTB9LCJwcmltYXJ5S2V5IjoiMjM3LTIzLTc3MzMifScKK2N1cnNvci5jb250
aW51ZSgpCitQQVNTICd7ImtleSI6IjIzNy0yMy03NzM0IiwidmFsdWUiOnsibmFtZSI6IlJvbiIs
ImhlaWdodCI6NzMsIndlaWdodCI6MTgwfSwicHJpbWFyeUtleSI6IjIzNy0yMy03NzM0In0nIGlz
ICd7ImtleSI6IjIzNy0yMy03NzM0IiwidmFsdWUiOnsibmFtZSI6IlJvbiIsImhlaWdodCI6NzMs
IndlaWdodCI6MTgwfSwicHJpbWFyeUtleSI6IjIzNy0yMy03NzM0In0nCitjdXJzb3IuY29udGlu
dWUoKQorUEFTUyAneyJrZXkiOiIyMzctMjMtNzczNSIsInZhbHVlIjp7Im5hbWUiOiJTdWUiLCJo
ZWlnaHQiOjU4LCJ3ZWlnaHQiOjEzMH0sInByaW1hcnlLZXkiOiIyMzctMjMtNzczNSJ9JyBpcyAn
eyJrZXkiOiIyMzctMjMtNzczNSIsInZhbHVlIjp7Im5hbWUiOiJTdWUiLCJoZWlnaHQiOjU4LCJ3
ZWlnaHQiOjEzMH0sInByaW1hcnlLZXkiOiIyMzctMjMtNzczNSJ9JworY3Vyc29yLmFkdmFuY2Uo
NykKK1BBU1MgJ3sia2V5IjoiMjM3LTIzLTc3NDIiLCJ2YWx1ZSI6eyJuYW1lIjoiTGVvIiwiaGVp
Z2h0Ijo2OSwid2VpZ2h0IjoxODB9LCJwcmltYXJ5S2V5IjoiMjM3LTIzLTc3NDIifScgaXMgJ3si
a2V5IjoiMjM3LTIzLTc3NDIiLCJ2YWx1ZSI6eyJuYW1lIjoiTGVvIiwiaGVpZ2h0Ijo2OSwid2Vp
Z2h0IjoxODB9LCJwcmltYXJ5S2V5IjoiMjM3LTIzLTc3NDIifScKK2N1cnNvci5jb250aW51ZSgp
CitQQVNTICd7ImtleSI6IjIzNy0yMy03NzQzIiwidmFsdWUiOnsibmFtZSI6IkplZiIsImhlaWdo
dCI6NzcsIndlaWdodCI6MTIwfSwicHJpbWFyeUtleSI6IjIzNy0yMy03NzQzIn0nIGlzICd7Imtl
eSI6IjIzNy0yMy03NzQzIiwidmFsdWUiOnsibmFtZSI6IkplZiIsImhlaWdodCI6NzcsIndlaWdo
dCI6MTIwfSwicHJpbWFyeUtleSI6IjIzNy0yMy03NzQzIn0nCitjdXJzb3IuY29udGludWUoKQor
UEFTUyAneyJrZXkiOiIyMzctMjMtNzc0NCIsInZhbHVlIjp7Im5hbWUiOiJTYW0iLCJoZWlnaHQi
OjY2LCJ3ZWlnaHQiOjExMH0sInByaW1hcnlLZXkiOiIyMzctMjMtNzc0NCJ9JyBpcyAneyJrZXki
OiIyMzctMjMtNzc0NCIsInZhbHVlIjp7Im5hbWUiOiJTYW0iLCJoZWlnaHQiOjY2LCJ3ZWlnaHQi
OjExMH0sInByaW1hcnlLZXkiOiIyMzctMjMtNzc0NCJ9JworY3Vyc29yLmNvbnRpbnVlKCkKK3Rl
c3REZWxldGUoKQordHJhbnMgPSBkYi50cmFuc2FjdGlvbihvYmplY3RTdG9yZU5hbWUsIElEQlRy
YW5zYWN0aW9uLlJFQURfV1JJVEUpCitvYmplY3RTdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKG9i
amVjdFN0b3JlTmFtZSkKK3JlcXVlc3QgPSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCkKK1BBU1Mg
J3sia2V5IjoiMjM3LTIzLTc3MzIiLCJ2YWx1ZSI6eyJuYW1lIjoiQm9iIiwiaGVpZ2h0Ijo2MCwi
d2VpZ2h0IjoxMjB9LCJwcmltYXJ5S2V5IjoiMjM3LTIzLTc3MzIifScgaXMgJ3sia2V5IjoiMjM3
LTIzLTc3MzIiLCJ2YWx1ZSI6eyJuYW1lIjoiQm9iIiwiaGVpZ2h0Ijo2MCwid2VpZ2h0IjoxMjB9
LCJwcmltYXJ5S2V5IjoiMjM3LTIzLTc3MzIifScKK2N1cnNvci5hZHZhbmNlKDEpCitQQVNTICd7
ImtleSI6IjIzNy0yMy03NzMzIiwidmFsdWUiOnsibmFtZSI6IkFubiIsImhlaWdodCI6NTIsIndl
aWdodCI6MTEwfSwicHJpbWFyeUtleSI6IjIzNy0yMy03NzMzIn0nIGlzICd7ImtleSI6IjIzNy0y
My03NzMzIiwidmFsdWUiOnsibmFtZSI6IkFubiIsImhlaWdodCI6NTIsIndlaWdodCI6MTEwfSwi
cHJpbWFyeUtleSI6IjIzNy0yMy03NzMzIn0nCitjdXJzb3IuYWR2YW5jZSgxKQorUEFTUyAneyJr
ZXkiOiIyMzctMjMtNzczNCIsInZhbHVlIjp7Im5hbWUiOiJSb24iLCJoZWlnaHQiOjczLCJ3ZWln
aHQiOjE4MH0sInByaW1hcnlLZXkiOiIyMzctMjMtNzczNCJ9JyBpcyAneyJrZXkiOiIyMzctMjMt
NzczNCIsInZhbHVlIjp7Im5hbWUiOiJSb24iLCJoZWlnaHQiOjczLCJ3ZWlnaHQiOjE4MH0sInBy
aW1hcnlLZXkiOiIyMzctMjMtNzczNCJ9JworY3Vyc29yLmRlbGV0ZSgpCitQQVNTICd7ImtleSI6
IjIzNy0yMy03NzM4IiwidmFsdWUiOnsibmFtZSI6IkxlbyIsImhlaWdodCI6NjUsIndlaWdodCI6
MTgwfSwicHJpbWFyeUtleSI6IjIzNy0yMy03NzM4In0nIGlzICd7ImtleSI6IjIzNy0yMy03NzM4
IiwidmFsdWUiOnsibmFtZSI6IkxlbyIsImhlaWdodCI6NjUsIndlaWdodCI6MTgwfSwicHJpbWFy
eUtleSI6IjIzNy0yMy03NzM4In0nCitjdXJzb3IuYWR2YW5jZSgxKQorUEFTUyAneyJrZXkiOiIy
MzctMjMtNzczOSIsInZhbHVlIjp7Im5hbWUiOiJKZWYiLCJoZWlnaHQiOjY1LCJ3ZWlnaHQiOjEy
MH0sInByaW1hcnlLZXkiOiIyMzctMjMtNzczOSJ9JyBpcyAneyJrZXkiOiIyMzctMjMtNzczOSIs
InZhbHVlIjp7Im5hbWUiOiJKZWYiLCJoZWlnaHQiOjY1LCJ3ZWlnaHQiOjEyMH0sInByaW1hcnlL
ZXkiOiIyMzctMjMtNzczOSJ9JworY3Vyc29yLmFkdmFuY2UoMSkKK1BBU1MgJ3sia2V5IjoiMjM3
LTIzLTc3NDAiLCJ2YWx1ZSI6eyJuYW1lIjoiU2FtIiwiaGVpZ2h0Ijo3MSwid2VpZ2h0IjoxMTB9
LCJwcmltYXJ5S2V5IjoiMjM3LTIzLTc3NDAifScgaXMgJ3sia2V5IjoiMjM3LTIzLTc3NDAiLCJ2
YWx1ZSI6eyJuYW1lIjoiU2FtIiwiaGVpZ2h0Ijo3MSwid2VpZ2h0IjoxMTB9LCJwcmltYXJ5S2V5
IjoiMjM3LTIzLTc3NDAifScKK2N1cnNvci5hZHZhbmNlKDEpCitQQVNTICd7ImtleSI6IjIzNy0y
My03NzQxIiwidmFsdWUiOnsibmFtZSI6IlBhdCIsImhlaWdodCI6NjMsIndlaWdodCI6MTAwfSwi
cHJpbWFyeUtleSI6IjIzNy0yMy03NzQxIn0nIGlzICd7ImtleSI6IjIzNy0yMy03NzQxIiwidmFs
dWUiOnsibmFtZSI6IlBhdCIsImhlaWdodCI6NjMsIndlaWdodCI6MTAwfSwicHJpbWFyeUtleSI6
IjIzNy0yMy03NzQxIn0nCitjdXJzb3IuYWR2YW5jZSgxKQorUEFTUyAneyJrZXkiOiIyMzctMjMt
Nzc0MiIsInZhbHVlIjp7Im5hbWUiOiJMZW8iLCJoZWlnaHQiOjY5LCJ3ZWlnaHQiOjE4MH0sInBy
aW1hcnlLZXkiOiIyMzctMjMtNzc0MiJ9JyBpcyAneyJrZXkiOiIyMzctMjMtNzc0MiIsInZhbHVl
Ijp7Im5hbWUiOiJMZW8iLCJoZWlnaHQiOjY5LCJ3ZWlnaHQiOjE4MH0sInByaW1hcnlLZXkiOiIy
MzctMjMtNzc0MiJ9JworY3Vyc29yLmFkdmFuY2UoMSkKK1BBU1MgJ3sia2V5IjoiMjM3LTIzLTc3
NDMiLCJ2YWx1ZSI6eyJuYW1lIjoiSmVmIiwiaGVpZ2h0Ijo3Nywid2VpZ2h0IjoxMjB9LCJwcmlt
YXJ5S2V5IjoiMjM3LTIzLTc3NDMifScgaXMgJ3sia2V5IjoiMjM3LTIzLTc3NDMiLCJ2YWx1ZSI6
eyJuYW1lIjoiSmVmIiwiaGVpZ2h0Ijo3Nywid2VpZ2h0IjoxMjB9LCJwcmltYXJ5S2V5IjoiMjM3
LTIzLTc3NDMifScKK2N1cnNvci5hZHZhbmNlKDEpCitQQVNTICd7ImtleSI6IjIzNy0yMy03NzQ0
IiwidmFsdWUiOnsibmFtZSI6IlNhbSIsImhlaWdodCI6NjYsIndlaWdodCI6MTEwfSwicHJpbWFy
eUtleSI6IjIzNy0yMy03NzQ0In0nIGlzICd7ImtleSI6IjIzNy0yMy03NzQ0IiwidmFsdWUiOnsi
bmFtZSI6IlNhbSIsImhlaWdodCI6NjYsIndlaWdodCI6MTEwfSwicHJpbWFyeUtleSI6IjIzNy0y
My03NzQ0In0nCitjdXJzb3IuYWR2YW5jZSgxKQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL2N1cnNvci1hZHZhbmNlLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9jdXJzb3ItYWR2YW5jZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUwZTRkYzRjY2ZlOTA4MTEyMmUx
ZjRjMTJkMWNiM2ZmZjM5ZDJkODYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9jdXJzb3ItYWR2YW5jZS5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2N1cnNvci1hZHZh
bmNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci1hZHZhbmNlLmpz
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci1hZHZhbmNl
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjY3NTdhMjkwMWUxMjcyYjY4NWRmOGQ3NTRlMDg2MmVmMzBhNDdjNDAK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJj
ZXMvY3Vyc29yLWFkdmFuY2UuanMKQEAgLTAsMCArMSwzMDAgQEAKK2lmICh0aGlzLmltcG9ydFNj
cmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitk
ZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIgY3Vyc29yLmFkdmFuY2UoKS4iKTsKKworLy8gdGVz
dCBhZHZhbmNlIHdpdGhpbiByYW5nZQorLy8gdGVzdCBhZHZhbmNlIHdpdGhpbiByYW5nZSByZXZl
cnNlCisvLyB0ZXN0IGFkdmFuY2Ugd2l0aGluIHJhbmdlIG5vIGR1cGUKKy8vIHRlc3QgYWR2YW5j
ZSB3aXRoaW4gcmFuZ2UgcmV2ZXJzZSBubyBkdXBlCisvLyB0ZXN0IGFkdmFuY2UgcGFzdCBkYXRh
CisvLyB0ZXN0IGFkdmFuY2UgcGFzdCBkYXRhIHJldmVyc2UKKy8vIHRlc3QgYWR2YW5jZSBwYXN0
IGN1cnNvciBib3VuZHMKK3ZhciBvYmplY3RTdG9yZURhdGEgPSBbCisgICAgeyBrZXk6ICIyMzct
MjMtNzczMiIsIHZhbHVlOiB7IG5hbWU6ICJCb2IiLCBoZWlnaHQ6IDYwLCB3ZWlnaHQ6IDEyMCB9
IH0sCisgICAgeyBrZXk6ICIyMzctMjMtNzczMyIsIHZhbHVlOiB7IG5hbWU6ICJBbm4iLCBoZWln
aHQ6IDUyLCB3ZWlnaHQ6IDExMCB9IH0sCisgICAgeyBrZXk6ICIyMzctMjMtNzczNCIsIHZhbHVl
OiB7IG5hbWU6ICJSb24iLCBoZWlnaHQ6IDczLCB3ZWlnaHQ6IDE4MCB9IH0sCisgICAgeyBrZXk6
ICIyMzctMjMtNzczNSIsIHZhbHVlOiB7IG5hbWU6ICJTdWUiLCBoZWlnaHQ6IDU4LCB3ZWlnaHQ6
IDEzMCB9IH0sCisgICAgeyBrZXk6ICIyMzctMjMtNzczNiIsIHZhbHVlOiB7IG5hbWU6ICJKb2Ui
LCBoZWlnaHQ6IDY1LCB3ZWlnaHQ6IDE1MCB9IH0sCisgICAgeyBrZXk6ICIyMzctMjMtNzczNyIs
IHZhbHVlOiB7IG5hbWU6ICJQYXQiLCBoZWlnaHQ6IDY1LCB3ZWlnaHQ6IDEwMCB9IH0sCisgICAg
eyBrZXk6ICIyMzctMjMtNzczOCIsIHZhbHVlOiB7IG5hbWU6ICJMZW8iLCBoZWlnaHQ6IDY1LCB3
ZWlnaHQ6IDE4MCB9IH0sCisgICAgeyBrZXk6ICIyMzctMjMtNzczOSIsIHZhbHVlOiB7IG5hbWU6
ICJKZWYiLCBoZWlnaHQ6IDY1LCB3ZWlnaHQ6IDEyMCB9IH0sCisgICAgeyBrZXk6ICIyMzctMjMt
Nzc0MCIsIHZhbHVlOiB7IG5hbWU6ICJTYW0iLCBoZWlnaHQ6IDcxLCB3ZWlnaHQ6IDExMCB9IH0s
CisgICAgeyBrZXk6ICIyMzctMjMtNzc0MSIsIHZhbHVlOiB7IG5hbWU6ICJQYXQiLCBoZWlnaHQ6
IDYzLCB3ZWlnaHQ6IDEwMCB9IH0sCisgICAgeyBrZXk6ICIyMzctMjMtNzc0MiIsIHZhbHVlOiB7
IG5hbWU6ICJMZW8iLCBoZWlnaHQ6IDY5LCB3ZWlnaHQ6IDE4MCB9IH0sCisgICAgeyBrZXk6ICIy
MzctMjMtNzc0MyIsIHZhbHVlOiB7IG5hbWU6ICJKZWYiLCBoZWlnaHQ6IDc3LCB3ZWlnaHQ6IDEy
MCB9IH0sCisgICAgeyBrZXk6ICIyMzctMjMtNzc0NCIsIHZhbHVlOiB7IG5hbWU6ICJTYW0iLCBo
ZWlnaHQ6IDY2LCB3ZWlnaHQ6IDExMCB9IH0sCitdOworCit2YXIgaW5kZXhEYXRhID0gWworICAg
IHsgbmFtZTogIm5hbWUiLCBrZXlQYXRoOiAibmFtZSIsIG9wdGlvbnM6IHsgdW5pcXVlOiB0cnVl
IH0gfSwKKyAgICB7IG5hbWU6ICJoZWlnaHQiLCBrZXlQYXRoOiAiaGVpZ2h0Iiwgb3B0aW9uczog
eyB9IH0sCisgICAgeyBuYW1lOiAid2VpZ2h0Iiwga2V5UGF0aDogIndlaWdodCIsIG9wdGlvbnM6
IHsgdW5pcXVlOiBmYWxzZSB9IH0KK107CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92
ZVZlbmRvclByZWZpeGVzKCk7CisgICAgbmFtZSA9IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZTsK
KyAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKKyAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7CisgICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIGRl
YnVnKCJvcGVuU3VjY2VzcygpOiIpOworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50
YXJnZXQucmVzdWx0Iik7CisKKyAgICBvYmplY3RTdG9yZU5hbWUgPSAiUGVvcGxlIjsKKworICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7Cisg
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlOworICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlv
biBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlKCkKK3sKKyAgICBkZWxldGVBbGxPYmplY3RT
dG9yZXMoZGIpOworCisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9
IGRiLmNyZWF0ZU9iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSk7Iik7CisKKyAgICBkZWJ1Zygi
Rmlyc3QsIGFkZCBhbGwgb3VyIGRhdGEgdG8gdGhlIG9iamVjdCBzdG9yZS4iKTsKKyAgICBhZGRl
ZERhdGEgPSAwOworICAgIGZvciAoaSBpbiBvYmplY3RTdG9yZURhdGEpIHsKKyAgICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKG9iamVjdFN0b3JlRGF0
YVtpXS52YWx1ZSwgb2JqZWN0U3RvcmVEYXRhW2ldLmtleSk7Iik7CisgICAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICB9CisgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSB0ZXN0QWxsOworfQorCisvLyBtYWtlIGEgdGVzdCB0aGF0IHVzZXMgY29udGludWUo
KSB0byBnZXQgdG8gc3RhcnRQb3MsIHRoZW4gcGFzc2VzCisvLyAnY291bnQnIHRvIGdldCB0byBh
IHBvc2l0aW9uCitmdW5jdGlvbiBtYWtlQWR2YW5jZVRlc3Qoc3RhcnRQb3MsIGJvdW5kcywgZGly
ZWN0aW9uLCBjb3VudCwgZXhwZWN0ZWRWYWx1ZSkKK3sKKyAgICByZXN1bHQgPSB7fTsKKyAgICBl
dmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKG9iamVjdFN0b3JlTmFtZSkiKTsKKyAg
ICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gdHJhbnMub2JqZWN0U3Rv
cmUob2JqZWN0U3RvcmVOYW1lKSIpOworCisgICAgZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVj
dFN0b3JlLm9wZW5DdXJzb3IoIisgYm91bmRzICsgIiwgIiArIGRpcmVjdGlvbiArICIpIik7Cisg
ICAgdmFyIGN1cnJlbnRQb3MgPSAwOworICAgIGZ1bmN0aW9uIGNvbnRpbnVlVG9UZXN0KGV2ZW50
KQorICAgIHsKKyAgICAgICAgY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKKyAgICAgICAg
aWYgKGN1cnJlbnRQb3MgPT0gc3RhcnRQb3MpIHsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImN1
cnNvci5hZHZhbmNlKCIgKyBjb3VudCArICIpIik7CisgICAgICAgIH0gZWxzZSBpZiAoY3VycmVu
dFBvcyA9PSBzdGFydFBvcyArIDEpIHsKKyAgICAgICAgICAgIHJ1blRlc3QoY3Vyc29yLCBleHBl
Y3RlZFZhbHVlKTsKKyAgICAgICAgICAgIHJlc3VsdC5vbnN1Y2Nlc3MoKTsKKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIGlmIChjdXJzb3IgPT0gbnVsbCkKKyAgICAgICAgICAgICAgICBy
ZXN1bHQub25zdWNjZXNzKCk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBl
dmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKTsiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgICAgICBjdXJyZW50UG9zKys7CisgICAgfQorCisgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBjb250aW51ZVRvVGVzdDsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbihlKSB7Cisg
ICAgICAgIHJlc3VsdC5vbmVycm9yKGUpOworICAgIH07CisKKyAgICByZXR1cm4gcmVzdWx0Owor
fQorCitmdW5jdGlvbiBzaW1wbGlmeUN1cnNvcihjdXJzb3IpCit7CisgICAgdmFyIG9iaiA9IHt9
OworICAgIGlmIChjdXJzb3IgPT09IG51bGwpIHsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAg
fQorICAgIGlmICgna2V5JyBpbiBjdXJzb3IpIHsKKyAgICAgICAgb2JqLmtleSA9IGN1cnNvci5r
ZXk7CisgICAgfQorCisgICAgaWYgKCd2YWx1ZScgaW4gY3Vyc29yKSB7CisgICAgICAgIG9iai52
YWx1ZSA9IGN1cnNvci52YWx1ZTsKKyAgICB9CisKKyAgICBpZiAoJ3ByaW1hcnlLZXknIGluIGN1
cnNvcikgeworICAgICAgICBvYmoucHJpbWFyeUtleSA9IGN1cnNvci5wcmltYXJ5S2V5OworICAg
IH0KKyAgICByZXR1cm4gb2JqOworfQorZnVuY3Rpb24gcnVuVGVzdChjdXJzb3IsIGV4cGVjdGVk
VmFsdWUpCit7CisgICAgc2hvdWxkQmUoIiciICsgSlNPTi5zdHJpbmdpZnkoc2ltcGxpZnlDdXJz
b3IoY3Vyc29yKSkgKyAiJyIsICInIiArIEpTT04uc3RyaW5naWZ5KGV4cGVjdGVkVmFsdWUpICsg
IiciKTsKK30KKworZnVuY3Rpb24gdGVzdEFsbCgpCit7CisgICAgZGVidWcoInRlc3RBbGwoKSIp
OworICAgIHRlc3RTaW1wbGUoKTsKK30KKworZnVuY3Rpb24gdGVzdFNpbXBsZSgpCit7CisgICAg
ZGVidWcoInRlc3RTaW1wbGUoKSIpOworICAgIG1ha2VBZHZhbmNlVGVzdCgwLCBudWxsLCBudWxs
LCAxLAorICAgICAgICAgICAgICAgICAgICB7a2V5OiBvYmplY3RTdG9yZURhdGFbMV0ua2V5LAor
ICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IG9iamVjdFN0b3JlRGF0YVsxXS52YWx1ZSwKKyAg
ICAgICAgICAgICAgICAgICAgIHByaW1hcnlLZXk6IG9iamVjdFN0b3JlRGF0YVsxXS5rZXl9KQor
ICAgICAgICAgICAgICAgICAgICAgICAgIC5vbnN1Y2Nlc3M9IHRlc3RDb250aW51ZVRoZW5BZHZh
bmNlOworfQorCitmdW5jdGlvbiB0ZXN0Q29udGludWVUaGVuQWR2YW5jZSgpCit7CisgICAgZGVi
dWcoInRlc3RDb250aW51ZVRoZW5BZHZhbmNlKCkiKTsKKyAgICBtYWtlQWR2YW5jZVRlc3QoMywg
bnVsbCwgbnVsbCwgMSwKKyAgICAgICAgICAgICAgICAgICAge2tleTogb2JqZWN0U3RvcmVEYXRh
WzRdLmtleSwKKyAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBvYmplY3RTdG9yZURhdGFbNF0u
dmFsdWUsCisgICAgICAgICAgICAgICAgICAgICBwcmltYXJ5S2V5OiBvYmplY3RTdG9yZURhdGFb
NF0ua2V5fSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAub25zdWNjZXNzPSB0ZXN0QWR2YW5j
ZU11bHRpcGxlOworfQorCitmdW5jdGlvbiB0ZXN0QWR2YW5jZU11bHRpcGxlKCkKK3sKKyAgICBk
ZWJ1ZygidGVzdEFkdmFuY2VNdWx0aXBsZSgpIik7CisgICAgbWFrZUFkdmFuY2VUZXN0KDAsIG51
bGwsIG51bGwsIDMsCisgICAgICAgICAgICAgICAgICAgIHtrZXk6IG9iamVjdFN0b3JlRGF0YVsz
XS5rZXksCisgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogb2JqZWN0U3RvcmVEYXRhWzNdLnZh
bHVlLAorICAgICAgICAgICAgICAgICAgICAgcHJpbWFyeUtleTogb2JqZWN0U3RvcmVEYXRhWzNd
LmtleX0pCisgICAgICAgICAgICAgICAgICAgICAgICAgLm9uc3VjY2VzcyA9IHRlc3RBZHZhbmNl
VG9FbmQ7Cit9CisKK2Z1bmN0aW9uIHRlc3RBZHZhbmNlVG9FbmQoKQoreworICAgIGRlYnVnKCJ0
ZXN0QWR2YW5jZVRvRW5kKCkiKTsKKyAgICBtYWtlQWR2YW5jZVRlc3QoMCwgbnVsbCwgbnVsbCwg
MTAwLCBudWxsKQorICAgICAgICAub25zdWNjZXNzID0gdGVzdFByZWZldGNoSW5SYW5nZTsKK30K
KworLy8gTWFrZSBzdXJlIHRoZSBwcmVmZXRjaGluZyB0aGF0IGV4aXN0cyBvbiBzb21lIHBsYXRm
b3JtcyAoY2hyb21pdW0pCisvLyBkb2Vzbid0IG1lc3Mgd2l0aCBhZHZhbmNlKCksIG9yIHZpY2Ug
dmVyc2EuCitmdW5jdGlvbiB0ZXN0UHJlZmV0Y2hJblJhbmdlKCkKK3sKKyAgICBkZWJ1ZygidGVz
dFByZWZldGNoSW5SYW5nZSgpIik7CisgICAgdmFyIGtQcmVmZXRjaENvbnRpbnVlVGhyZXNob2xk
ID0gMjsKKyAgICBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKG9iamVjdFN0b3Jl
TmFtZSkiKTsKKyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gdHJh
bnMub2JqZWN0U3RvcmUob2JqZWN0U3RvcmVOYW1lKSIpOworCisgICAgZXZhbEFuZExvZygicmVx
dWVzdCA9IG9iamVjdFN0b3JlLm9wZW5DdXJzb3IoKSIpOworCisgICAgdmFyIGN1cnJlbnRQb3Mg
PSAwOworICAgIGZ1bmN0aW9uIHByZWZldGNoKCkgeworICAgICAgICBjdXJzb3IgPSBldmVudC50
YXJnZXQucmVzdWx0OworCisgICAgICAgIGlmICghY3Vyc29yKSB7CisgICAgICAgICAgICB0ZXN0
UHJlZmV0Y2hPdXRPZlJhbmdlKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwor
ICAgICAgICBydW5UZXN0KGN1cnNvciwge2tleTogb2JqZWN0U3RvcmVEYXRhW2N1cnJlbnRQb3Nd
LmtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogb2JqZWN0U3RvcmVEYXRhW2N1
cnJlbnRQb3NdLnZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgIHByaW1hcnlLZXk6IG9i
amVjdFN0b3JlRGF0YVtjdXJyZW50UG9zXS5rZXl9KTsKKworICAgICAgICAvLyBmb3JjZSBzb21l
IHByZWZldGNoaW5nLAorICAgICAgICBpZiAoY3VycmVudFBvcyA8IChrUHJlZmV0Y2hDb250aW51
ZVRocmVzaG9sZCsxKSkgeworICAgICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVl
KCkiKTsKKyAgICAgICAgICAgIGN1cnJlbnRQb3MrKzsKKyAgICAgICAgfSBlbHNlIGlmIChjdXJy
ZW50UG9zID09IChrUHJlZmV0Y2hDb250aW51ZVRocmVzaG9sZCsxKSkgeworICAgICAgICAgICAg
Ly8gc3RheSB3aXRoaW4gdGhlIHByZWZldGNoIHJhbmdlCisgICAgICAgICAgICBldmFsQW5kTG9n
KCJjdXJzb3IuYWR2YW5jZSgyKSIpOworICAgICAgICAgICAgY3VycmVudFBvcyArPSAyOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gd2UncmUganVzdCBwYXN0IHRoZSB0aHJlc2hv
bGQKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgpIik7CisgICAgICAg
ICAgICBjdXJyZW50UG9zKys7CisgICAgICAgIH0KKyAgICB9CisgICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBwcmVmZXRjaDsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKK30KKworLy8gTWFrZSBzdXJlIHRoZSBwcmVmZXRjaGluZyB0aGF0IGV4aXN0cyBvbiBz
b21lIHBsYXRmb3JtcyAoY2hyb21pdW0pCisvLyBkb2Vzbid0IG1lc3Mgd2l0aCBhZHZhbmNlKCks
IG9yIHZpY2UgdmVyc2EuCitmdW5jdGlvbiB0ZXN0UHJlZmV0Y2hPdXRPZlJhbmdlKCkKK3sKKyAg
ICBkZWJ1ZygidGVzdFByZWZldGNoT3V0T2ZSYW5nZSgpIik7CisgICAgdmFyIGtQcmVmZXRjaENv
bnRpbnVlVGhyZXNob2xkID0gMjsKKyAgICBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0
aW9uKG9iamVjdFN0b3JlTmFtZSkiKTsKKyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9i
amVjdFN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUob2JqZWN0U3RvcmVOYW1lKSIpOworCisgICAg
ZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLm9wZW5DdXJzb3IoKSIpOworCisgICAg
dmFyIGN1cnJlbnRQb3MgPSAwOworICAgIGZ1bmN0aW9uIHByZWZldGNoKCkgeworICAgICAgICBj
dXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OworCisgICAgICAgIGlmICghY3Vyc29yKSB7Cisg
ICAgICAgICAgICB0ZXN0RGVsZXRlKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KworICAgICAgICBydW5UZXN0KGN1cnNvciwge2tleTogb2JqZWN0U3RvcmVEYXRhW2N1cnJlbnRQ
b3NdLmtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogb2JqZWN0U3RvcmVEYXRh
W2N1cnJlbnRQb3NdLnZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgIHByaW1hcnlLZXk6
IG9iamVjdFN0b3JlRGF0YVtjdXJyZW50UG9zXS5rZXl9KTsKKworICAgICAgICAvLyBmb3JjZSBz
b21lIHByZWZldGNoaW5nLAorICAgICAgICBpZiAoY3VycmVudFBvcyA8IChrUHJlZmV0Y2hDb250
aW51ZVRocmVzaG9sZCsxKSkgeworICAgICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRp
bnVlKCkiKTsKKyAgICAgICAgICAgIGN1cnJlbnRQb3MrKzsKKyAgICAgICAgfSBlbHNlIGlmIChj
dXJyZW50UG9zID09IChrUHJlZmV0Y2hDb250aW51ZVRocmVzaG9sZCsxKSkgeworICAgICAgICAg
ICAgLy8gYWR2YW5jZSBwYXN0IHRoZSBwcmVmZXRjaCByYW5nZQorICAgICAgICAgICAgZXZhbEFu
ZExvZygiY3Vyc29yLmFkdmFuY2UoNykiKTsKKyAgICAgICAgICAgIGN1cnJlbnRQb3MgKz0gNzsK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIHdlJ3JlIHBhc3QgdGhlIHRocmVzaG9s
ZAorICAgICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCkiKTsKKyAgICAgICAg
ICAgIGN1cnJlbnRQb3MrKzsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IHByZWZldGNoOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOworfQorCitmdW5jdGlvbiB0ZXN0RGVsZXRlKCkKK3sKKyAgICBkZWJ1ZygidGVzdERlbGV0
ZSgpIik7CisgICAgZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihvYmplY3RTdG9y
ZU5hbWUsIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAgb2JqZWN0U3RvcmUgPSBl
dmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFt
ZSkiKTsKKworICAgIGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29y
KCkiKTsKKworICAgIHZhciBjdXJyZW50UG9zID0gMDsKKyAgICBmdW5jdGlvbiBkZWxldGVTZWNv
bmQoKQorICAgIHsKKyAgICAgICAgY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKKworICAg
ICAgICBpZiAoIWN1cnNvcikgeworICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBydW5UZXN0KGN1cnNvciwge2tleTog
b2JqZWN0U3RvcmVEYXRhW2N1cnJlbnRQb3NdLmtleSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICB2YWx1ZTogb2JqZWN0U3RvcmVEYXRhW2N1cnJlbnRQb3NdLnZhbHVlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgIHByaW1hcnlLZXk6IG9iamVjdFN0b3JlRGF0YVtjdXJyZW50UG9zXS5rZXl9
KTsKKworCisgICAgICAgIC8vIHRoaXMgaXMgaW4gdGhlIG1pZGRsZSBvZiB0aGUgZGF0YSwgc28g
aXQgd2lsbCB0ZXN0IHZhbGlkaXR5CisgICAgICAgIGlmIChjdXJyZW50UG9zID09IDIpIHsKKyAg
ICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5kZWxldGUoKSIpOworICAgICAgICAgICAgY3Vy
c29yLmFkdmFuY2UoNCk7CisgICAgICAgICAgICBjdXJyZW50UG9zICs9IDQ7CisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IuYWR2YW5jZSgxKSIpOworICAg
ICAgICAgICAgY3VycmVudFBvcysrOworICAgICAgICB9CisKKyAgICB9CisgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBkZWxldGVTZWNvbmQ7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Cit9CisKKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9z
aGFyZWQuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvc2hhcmVk
LmpzCmluZGV4IGU0YjhkM2YwYzRjYThhMDljMjFkZWM3NDEwYjdiZTdiNWRkMWFkZWYuLjQ5MWMx
N2JjY2MzODMxOTVlZjQwODM5ZGU1ZTYyYjI4YTRiYWRiZDQgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9zaGFyZWQuanMKKysrIGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3NoYXJlZC5qcwpAQCAtMTEyLDMgKzExMiw1
MCBAQCBmdW5jdGlvbiBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpCiAgICAgICAgIGRiLmRlbGV0
ZU9iamVjdFN0b3JlKGRiLm9iamVjdFN0b3JlTmFtZXMuaXRlbSgwKSk7CiAgICAgZGVidWcoIkRl
bGV0ZWQgYWxsIG9iamVjdCBzdG9yZXMuIik7CiB9CisKKy8vIHRha2UgYW4gdW5zcGVjaWZpZWQg
bnVtYmVyIG9mIGNhbGxiYWNrLWxpa2Ugb2JqZWN0cywgd2FpdCBmb3IgZWFjaAorLy8gb25lLCBh
bmQgZmlyZSBhbiBvbnN1Y2Nlc3MgZXZlbnQgd2hlbiBhbGwgb2YgdGhlbSBjb21wbGV0ZS4gSWYg
YW55CisvLyBvZiB0aGUgY2FsbGJhY2sgb2JqZWN0cyB0aHJvdyBhbiBlcnJvciBvciBhYm9ydCwg
ZmlyZSB0aGUKKy8vIGFwcHJvcHJpYXRlIG9uZXJyb3Ivb25hYm9ydCBpbW1lZGlhdGVseS4KK2Z1
bmN0aW9uIHdhaXRGb3IoKQoreworCisgICAgdmFyIHByb2dyZXNzID0gW107ICAgICAgICAgIC8v
IHdoZW4gYWxsIG9mIHRoZXNlIGFyZSB0cnVlLCB3ZSdyZSBkb25lCisgICAgdmFyIGV2ZW50UmVz
dWx0ID0geworICAgICAgICBvbmVycm9yOiB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjaywKKyAgICAg
ICAgb25hYm9ydDogdW5leHBlY3RlZEFib3J0Q2FsbGJhY2ssCisgICAgfTsKKworICAgIGZ1bmN0
aW9uIG9uZXJyb3IoZSkKKyAgICB7CisgICAgICAgIGV2ZW50UmVzdWx0Lm9uZXJyb3IoZSk7Cisg
ICAgfQorCisgICAgZnVuY3Rpb24gb25hYm9ydChlKQorICAgIHsKKyAgICAgICAgZXZlbnRSZXN1
bHQub25hYm9ydChlKTsKKyAgICB9CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFyZ3VtZW50
cy5sZW5ndGg7IGkrKykgeworICAgICAgICB2YXIgZXZlbnQgPSBhcmd1bWVudHNbaV07CisgICAg
ICAgIHByb2dyZXNzLnB1c2goZmFsc2UpOworICAgICAgICBldmVudC5vbnN1Y2Nlc3MgPSB3YWl0
Rm9yX29uc3VjY2VzcyhpLCBwcm9ncmVzcywgZXZlbnRSZXN1bHQpOworICAgICAgICBldmVudC5v
bmFib3J0ID0gb25hYm9ydDsKKyAgICAgICAgZXZlbnQub25lcnJvciA9IG9uZXJyb3I7CisgICAg
fQorICAgIHJldHVybiBldmVudFJlc3VsdDsKK30KKworZnVuY3Rpb24gd2FpdEZvcl9vbnN1Y2Nl
c3MoaW5kZXgsIHN1Y2Nlc3NlcywgZXZlbnRSZXN1bHQpCit7CisgICAgZnVuY3Rpb24gb25zdWNj
ZXNzKCkKKyAgICB7CisgICAgICAgIHN1Y2Nlc3Nlc1tpbmRleF0gPSB0cnVlOworICAgICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IHN1Y2Nlc3Nlcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAg
aWYgKCFzdWNjZXNzZXNbaV0pCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9Cisg
ICAgICAgIGV2ZW50UmVzdWx0Lm9uc3VjY2VzcygpOworICAgIH0KKyAgICByZXR1cm4gb25zdWNj
ZXNzOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>138618</attachid>
            <date>2012-04-24 12:16:32 -0700</date>
            <delta_ts>2012-04-24 15:25:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-84174-20120424121631.patch</filename>
            <type>text/plain</type>
            <size>38903</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE1MDUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWQxZTc1NGRiMTM3NWEx
MmUxN2ZiMDExODVjM2JkOGE2NGVhMzA2OS4uYzhlZGMyMzQzN2Q5MWUwMTNhNDJkYzFlYjc3OWQw
NzlhNjljMjhiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTA0LTIzICBBbGVj
IEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IGlt
cGxlbWVudCBjdXJzb3IuYWR2YW5jZSgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD04NDE3NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRlc3Q6IHN0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1hZHZhbmNlLmh0
bWwKKworICAgICAgICBJbXBsZW1lbnQgSURCQ3Vyc29yLmFkdmFuY2UoKSB0byBzcGVjLgorCisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmg6CisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1
cnNvcjo6YWR2YW5jZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9JREJDdXJzb3IuaDoKKyAgICAgICAgKElEQkN1cnNvcik6CisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9JREJDdXJzb3JCYWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3JC
YWNrZW5kSW1wbDo6YWR2YW5jZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQkN1cnNvckJhY2tlbmRJbXBsOjphZHZhbmNlSW50ZXJuYWwpOgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbXBsLmg6CisgICAgICAgIChJREJDdXJz
b3JCYWNrZW5kSW1wbCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFj
a2VuZEludGVyZmFjZS5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJC
YWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisKIDIwMTItMDQtMjQgIEFsZXhp
cyBNZW5hcmQgIDxhbGV4aXMubWVuYXJkQG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAgQW5vdGhl
ciB1bnJldmlld2VkIGJ1aWxkIGZpeCBmb3IgTWFjLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpp
bmRleCBhYmI2MzYwNzA4MmRmMGFkNmY3YjdhNTE5MzUzMjZkMjQ5N2U0MDYwLi43OThlZjEwMDZl
MDQzYjE1NTNkMDhiYjI2NjFkZTM1MDdiYTZmYjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDIwIEBACisyMDEyLTA0LTIzICBBbGVjIEZsZXR0ICA8YWxlY2ZsZXR0QGNo
cm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IGltcGxlbWVudCBjdXJzb3IuYWR2YW5j
ZSgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NDE3
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEhvb2sg
dXAgY2hyb21pdW0gSVBDIHRvIElEQkN1cnNvci5hZHZhbmNlKCkuCisKKyAgICAgICAgKiBzcmMv
SURCQ3Vyc29yQmFja2VuZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SURCQ3Vyc29yQmFj
a2VuZFByb3h5OjphZHZhbmNlKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogc3JjL0lE
QkN1cnNvckJhY2tlbmRQcm94eS5oOgorICAgICAgICAoSURCQ3Vyc29yQmFja2VuZFByb3h5KToK
KyAgICAgICAgKiBzcmMvV2ViSURCQ3Vyc29ySW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YklEQkN1cnNvckltcGw6OmFkdmFuY2UpOgorCiAyMDEyLTA0LTI0ICBTaGVyaWZmIEJvdCAgPHdl
YmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5n
IG91dCByMTE1MDAwLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJCYWNraW5nU3RvcmUuaAppbmRleCA1NTFiODI2ODk1YjZjMzJkOTdiMDc3ZjJhMjdhNTJjMjdm
ZmQyZmEzLi5mNmJiMTBhYWFjNWM4NTkzODY5Yjg1ZGFjMTY3YTliODRlMDY3NTdkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuaApA
QCAtOTQsNyArOTQsOCBAQCBwdWJsaWM6CiAgICAgICAgIH07CiAKICAgICAgICAgdmlydHVhbCBQ
YXNzUmVmUHRyPEN1cnNvcj4gY2xvbmUoKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBjb250
aW51ZUZ1bmN0aW9uKGNvbnN0IElEQktleSogPSAwLCBJdGVyYXRvclN0YXRlIG5leHRTdGF0ZSA9
IFNlZWspID0gMDsKKyAgICAgICAgdmlydHVhbCBib29sIGFkdmFuY2UodW5zaWduZWQgbG9uZykg
PSAwOworICAgICAgICB2aXJ0dWFsIGJvb2wgY29udGludWVGdW5jdGlvbihjb25zdCBJREJLZXkq
ID0gMCwgSXRlcmF0b3JTdGF0ZSA9IFNlZWspID0gMDsKICAgICAgICAgdmlydHVhbCBQYXNzUmVm
UHRyPElEQktleT4ga2V5KCkgPSAwOwogICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCS2V5
PiBwcmltYXJ5S2V5KCkgPSAwOwogICAgICAgICB2aXJ0dWFsIFN0cmluZyB2YWx1ZSgpID0gMDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwCmluZGV4
IDczODdlMWIxZTI4Y2NiYmRiYjg5OTBkMGY4NGI5YzQ3MTFiOTg2ZTkuLjlhZTliMmY5OGMzNjdk
NDZlNmUwN2U4ZjkzNmUzN2Q5ZjNhMmY2NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcApAQCAtMTE2LDYgKzExNiwzMyBAQCBQYXNzUmVmUHRy
PElEQlJlcXVlc3Q+IElEQkN1cnNvcjo6dXBkYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIFBhc3NSZQogICAgIHJldHVybiByZXF1ZXN0LnJlbGVhc2UoKTsKIH0KIAordm9pZCBJ
REJDdXJzb3I6OmFkdmFuY2UodW5zaWduZWQgbG9uZyBjb3VudCwgRXhjZXB0aW9uQ29kZSYgZWMp
Cit7CisgICAgSURCX1RSQUNFKCJJREJDdXJzb3I6OmFkdmFuY2UiKTsKKyAgICBpZiAoIW1fZ290
VmFsdWUpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGlmICghbV9yZXF1ZXN0KSB7CisgICAgICAgIGVjID0gSURCRGF0YWJh
c2VFeGNlcHRpb246OlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUjsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIGlmICghY291bnQpIHsKKyAgICAgICAgLy8gRklYTUU6IHNwZWMgc2F5cyB3
ZSBzaG91bGQgdGhyb3cgYSBKYXZhU2NyaXB0IFR5cGVFcnJvcgorICAgICAgICBlYyA9IFRZUEVf
TUlTTUFUQ0hfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKG1fcmVxdWVz
dC0+cmVzZXRSZWFkeVN0YXRlKG1fdHJhbnNhY3Rpb24uZ2V0KCkpKSB7CisgICAgICAgIG1fcmVx
dWVzdC0+c2V0Q3Vyc29yKHRoaXMpOworICAgICAgICBtX2dvdFZhbHVlID0gZmFsc2U7CisgICAg
ICAgIG1fYmFja2VuZC0+YWR2YW5jZShjb3VudCwgbV9yZXF1ZXN0LCBlYyk7CisgICAgfSBlbHNl
CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246Ok5PVF9BTExPV0VEX0VSUjsKK30K
Kwogdm9pZCBJREJDdXJzb3I6OmNvbnRpbnVlRnVuY3Rpb24oUGFzc1JlZlB0cjxJREJLZXk+IGtl
eSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgSURCX1RSQUNFKCJJREJDdXJzb3I6OmNvbnRp
bnVlIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJD
dXJzb3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5oCmlu
ZGV4IDIzN2YyNzJjMDVlMmIyYjQzZGI3NmM0MjQxYjQ4ZTc3YTEzZTI1ODQuLjViOTU5M2I5Zjhk
ZmNlNzQ1Yzk5ZmZlZWNmYzc2YmU2ODI1ZGI0YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5oCkBAIC02Nyw2ICs2Nyw3IEBAIHB1YmxpYzoKICAgICBJ
REJBbnkqIHNvdXJjZSgpIGNvbnN0OwogCiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiB1cGRh
dGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgYWR2YW5jZSh1bnNpZ25lZCBsb25nLCBF
eGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBjb250aW51ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURC
S2V5PiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gZGVsZXRl
RnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV4Y2VwdGlvbkNvZGUmKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmlkbCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5pZGwKaW5kZXggNDE1
NDBlMmYyYmIwNzEzMzViODI5ZjE3MTg3ZTZkNjUyMGE5YmRmMy4uZDBmNDExZDNiOGEyYWRjZmU1
M2Q0YzJkZmNjNmQyMzExMWVhZWJiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCQ3Vyc29yLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJDdXJzb3IuaWRsCkBAIC00MCw5ICs0MCwxMyBAQCBtb2R1bGUgc3RvcmFnZSB7
CiAKICAgICAgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIElEQlJlcXVlc3Qg
dXBkYXRlKGluIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSB2YWx1ZSkKICAgICAgICAgICAgIHJhaXNl
cyAoSURCRGF0YWJhc2VFeGNlcHRpb24pOworICAgICAgICB2b2lkIGFkdmFuY2UoaW4gdW5zaWdu
ZWQgbG9uZyBjb3VudCkKKyAgICAgICAgICAgIHJhaXNlcyAoSURCRGF0YWJhc2VFeGNlcHRpb24p
OwogICAgICAgICBbSW1wbGVtZW50ZWRBcz1jb250aW51ZUZ1bmN0aW9uXSB2b2lkIGNvbnRpbnVl
KGluIFtPcHRpb25hbF0gSURCS2V5IGtleSkKICAgICAgICAgICAgIHJhaXNlcyAoSURCRGF0YWJh
c2VFeGNlcHRpb24pOwogICAgICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwg
SW1wbGVtZW50ZWRBcz1kZWxldGVGdW5jdGlvbl0gSURCUmVxdWVzdCBkZWxldGUoKQogICAgICAg
ICAgICAgcmFpc2VzIChJREJEYXRhYmFzZUV4Y2VwdGlvbik7CisKKwogICAgIH07CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5k
SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNr
ZW5kSW1wbC5jcHAKaW5kZXggY2RiZTcwN2ZjZTEyOTU0YmRkNWI5ZDlkZmFiZWFhNDE4ODQ0NGVi
ZC4uM2NmZWY4MDBkYThjNWIyNjI4MzcyZTc5MjliNzk2NjZkM2QyYzljMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZEltcGwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJ
bXBsLmNwcApAQCAtMTI0LDggKzEyNCwzMCBAQCB2b2lkIElEQkN1cnNvckJhY2tlbmRJbXBsOjpj
b250aW51ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURCS2V5PiBwcnBLZXksIFBhc3NSZWZQdAogICAg
ICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpUUkFOU0FDVElPTl9JTkFDVElWRV9FUlI7
CiB9CiAKK3ZvaWQgSURCQ3Vyc29yQmFja2VuZEltcGw6OmFkdmFuY2UodW5zaWduZWQgbG9uZyBj
b3VudCwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgRXhjZXB0aW9uQ29k
ZSYgZWMpCit7CisgICAgSURCX1RSQUNFKCJJREJDdXJzb3JCYWNrZW5kSW1wbDo6YWR2YW5jZSIp
OworCisgICAgaWYgKCFtX3RyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soY3JlYXRlQ2FsbGJhY2tU
YXNrKCZJREJDdXJzb3JCYWNrZW5kSW1wbDo6YWR2YW5jZUludGVybmFsLCB0aGlzLCBjb3VudCwg
cHJwQ2FsbGJhY2tzKSkpCisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlRSQU5T
QUNUSU9OX0lOQUNUSVZFX0VSUjsKK30KKwogLy8gSU1QT1JUQU5UOiBJZiB0aGlzIGV2ZXIgMSkg
ZmlyZXMgYW4gJ2Vycm9yJyBldmVudCBhbmQgMikgaXQncyBwb3NzaWJsZSB0byBmaXJlIGFub3Ro
ZXIgZXZlbnQgYWZ0ZXJ3YXJkcywKIC8vICAgICAgICAgICAgSURCUmVxdWVzdDo6aGFzUGVuZGlu
Z0FjdGl2aXR5KCkgd2lsbCBuZWVkIHRvIGJlIG1vZGlmaWVkIHRvIGhhbmRsZSB0aGlzISEhCit2
b2lkIElEQkN1cnNvckJhY2tlbmRJbXBsOjphZHZhbmNlSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEltcGw+IHBycEN1cnNvciwgdW5z
aWduZWQgbG9uZyBjb3VudCwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKK3sK
KyAgICBJREJfVFJBQ0UoIklEQkN1cnNvckJhY2tlbmRJbXBsOjphZHZhbmNlSW50ZXJuYWwiKTsK
KyAgICBSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEltcGw+IGN1cnNvciA9IHBycEN1cnNvcjsKKyAg
ICBpZiAoIWN1cnNvci0+bV9jdXJzb3IgfHwgIWN1cnNvci0+bV9jdXJzb3ItPmFkdmFuY2UoY291
bnQpKSB7CisgICAgICAgIGN1cnNvci0+bV9jdXJzb3IgPSAwOworICAgICAgICBjYWxsYmFja3Mt
Pm9uU3VjY2VzcyhTZXJpYWxpemVkU2NyaXB0VmFsdWU6Om51bGxWYWx1ZSgpKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIC8vIGRvIEkgbmVlZCBzb21ldGhpbmcgc3BlY2lhbCBoZXJl
PworICAgIGNhbGxiYWNrcy0+b25TdWNjZXNzV2l0aENvbnRpbnVhdGlvbigpOworfQorCiB2b2lk
IElEQkN1cnNvckJhY2tlbmRJbXBsOjpjb250aW51ZUZ1bmN0aW9uSW50ZXJuYWwoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEltcGw+IHBycEN1cnNv
ciwgUGFzc1JlZlB0cjxJREJLZXk+IHBycEtleSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNh
bGxiYWNrcykKIHsKICAgICBJREJfVFJBQ0UoIklEQkN1cnNvckJhY2tlbmRJbXBsOjpjb250aW51
ZUludGVybmFsIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJDdXJzb3JCYWNrZW5kSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCQ3Vyc29yQmFja2VuZEltcGwuaAppbmRleCA0ZWU1YWM0MGFlNjI5MzJhZjM0NmZlNzU3
MTJjMjk3Mzk2NzVkOTUxLi5iN2I4ZTkyNGE0MDgyYWQ4YWQxYThiNGRlYWRkNTIxYzFmZDNlM2E3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JC
YWNrZW5kSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1
cnNvckJhY2tlbmRJbXBsLmgKQEAgLTU5LDYgKzU5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxJREJLZXk+IHByaW1hcnlLZXkoKSBjb25zdDsKICAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSgpIGNvbnN0OwogICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGUoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBQYXNzUmVmUHRy
PElEQkNhbGxiYWNrcz4sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgYWR2YW5j
ZSh1bnNpZ25lZCBsb25nLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIEV4Y2VwdGlvbkNvZGUm
KTsKICAgICB2aXJ0dWFsIHZvaWQgY29udGludWVGdW5jdGlvbihQYXNzUmVmUHRyPElEQktleT4s
IFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwg
dm9pZCBkZWxldGVGdW5jdGlvbihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIEV4Y2VwdGlvbkNv
ZGUmKTsKICAgICB2aXJ0dWFsIHZvaWQgcHJlZmV0Y2hDb250aW51ZShpbnQgbnVtYmVyVG9GZXRj
aCwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBFeGNlcHRpb25Db2RlJik7CkBAIC02OSw2ICs3
MCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSURCQ3Vyc29yQmFja2VuZEltcGwoUGFzc1Jl
ZlB0cjxJREJCYWNraW5nU3RvcmU6OkN1cnNvcj4sIElEQkN1cnNvcjo6RGlyZWN0aW9uLCBDdXJz
b3JUeXBlLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBJREJPYmplY3RTdG9yZUJh
Y2tlbmRJbnRlcmZhY2UqKTsKIAorICAgIHN0YXRpYyB2b2lkIGFkdmFuY2VJbnRlcm5hbChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW1wbD4sIHVu
c2lnbmVkIGxvbmcsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPik7CiAgICAgc3RhdGljIHZvaWQg
Y29udGludWVGdW5jdGlvbkludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVm
UHRyPElEQkN1cnNvckJhY2tlbmRJbXBsPiwgUGFzc1JlZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRy
PElEQkNhbGxiYWNrcz4pOwogICAgIHN0YXRpYyB2b2lkIHByZWZldGNoQ29udGludWVJbnRlcm5h
bChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW1w
bD4sIGludCBudW1iZXJUb0ZldGNoLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5k
SW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JC
YWNrZW5kSW50ZXJmYWNlLmgKaW5kZXggYjU3YmI1ODY4ZWUxNmI4OTdkYjc3ZDgxZDA1Y2NiZjZk
YjA3NmMwMy4uOTcxMjMyODI2ZmQ3YTVkMDNiOTU1OTljNzBkOTVkODJhZjE1ZGQwZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZElu
dGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNv
ckJhY2tlbmRJbnRlcmZhY2UuaApAQCAtNTksNiArNTksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUoKSBjb25zdCA9IDA7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBFeGNlcHRpb25Db2RlJikgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBhZHZhbmNlKHVuc2lnbmVkIGxvbmcgY291bnQsIFBhc3NSZWZQdHI8SURCQ2Fs
bGJhY2tzPiwgRXhjZXB0aW9uQ29kZSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY29udGludWVG
dW5jdGlvbihQYXNzUmVmUHRyPElEQktleT4ga2V5LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4s
IEV4Y2VwdGlvbkNvZGUmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUZ1bmN0aW9uKFBh
c3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgRXhjZXB0aW9uQ29kZSYpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgcHJlZmV0Y2hDb250aW51ZShpbnQgbnVtYmVyVG9GZXRjaCwgUGFzc1JlZlB0cjxJREJD
YWxsYmFja3M+LCBFeGNlcHRpb25Db2RlJikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmNwcAppbmRl
eCA2YTdlZDI4NGJhZWRkZGVhZmNmYWI3ODFhMTRkZjEwOWY5ODI5ZWZhLi5mOTU2NzA5NTIwOTg1
MGIxOGNjODYwMjk1NTdmYTcwZWY2N2E2MzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmNwcApAQCAt
OTgwLDcgKzk4MCw4IEBAIHN0cnVjdCBDdXJzb3JPcHRpb25zIHsKIGNsYXNzIEN1cnNvckltcGxD
b21tb24gOiBwdWJsaWMgSURCQmFja2luZ1N0b3JlOjpDdXJzb3IgewogcHVibGljOgogICAgIC8v
IElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yCi0gICAgdmlydHVhbCBib29sIGNvbnRpbnVlRnVuY3Rp
b24oY29uc3QgSURCS2V5KiwgSXRlcmF0b3JTdGF0ZSk7CisgICAgdmlydHVhbCBib29sIGFkdmFu
Y2UodW5zaWduZWQgbG9uZyk7CisgICAgdmlydHVhbCBib29sIGNvbnRpbnVlRnVuY3Rpb24oY29u
c3QgSURCS2V5KiA9IDAsIEl0ZXJhdG9yU3RhdGUgPSBTZWVrKTsKICAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8SURCS2V5PiBrZXkoKSB7IHJldHVybiBtX2N1cnJlbnRLZXk7IH0KICAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5KCkgeyByZXR1cm4gbV9jdXJyZW50S2V5OyB9
CiAgICAgdmlydHVhbCBTdHJpbmcgdmFsdWUoKSA9IDA7CkBAIC0xMDM1LDYgKzEwMzYsMTUgQEAg
Ym9vbCBDdXJzb3JJbXBsQ29tbW9uOjpmaXJzdFNlZWsoKQogICAgIHJldHVybiBjb250aW51ZUZ1
bmN0aW9uKDAsIFJlYWR5KTsKIH0KIAorYm9vbCBDdXJzb3JJbXBsQ29tbW9uOjphZHZhbmNlKHVu
c2lnbmVkIGxvbmcgY291bnQpCit7CisgICAgd2hpbGUgKGNvdW50LS0pIHsKKyAgICAgICAgaWYg
KCFjb250aW51ZUZ1bmN0aW9uKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
ICAgIHJldHVybiB0cnVlOworfQorCiBib29sIEN1cnNvckltcGxDb21tb246OmNvbnRpbnVlRnVu
Y3Rpb24oY29uc3QgSURCS2V5KiBrZXksIEl0ZXJhdG9yU3RhdGUgbmV4dFN0YXRlKQogewogICAg
IFJlZlB0cjxJREJLZXk+IHByZXZpb3VzS2V5ID0gbV9jdXJyZW50S2V5OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ3Vyc29yQmFja2VuZFByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkN1cnNvckJhY2tlbmRQcm94eS5jcHAKaW5kZXgg
NDI4YzM3ZjVlYjY4OWFlNjdiNTNlODM0OGQ2NTRkZDYyNDVkZDJjZS4uMmE2MmI5MjZmNWY2NjRl
ZTZkNzQ5ZGQwNTAyNzc2N2VlMjU0ZWY4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvSURCQ3Vyc29yQmFja2VuZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9JREJDdXJzb3JCYWNrZW5kUHJveHkuY3BwCkBAIC03OSw2ICs3OSwxMSBAQCB2
b2lkIElEQkN1cnNvckJhY2tlbmRQcm94eTo6dXBkYXRlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiB2YWx1ZSwgUGFzcwogICAgIG1faWRiQ3Vyc29yLT51cGRhdGUodmFsdWUsIG5l
dyBXZWJJREJDYWxsYmFja3NJbXBsKGNhbGxiYWNrcyksIGVjKTsKIH0KIAordm9pZCBJREJDdXJz
b3JCYWNrZW5kUHJveHk6OmFkdmFuY2UodW5zaWduZWQgbG9uZyBjb3VudCwgUGFzc1JlZlB0cjxJ
REJDYWxsYmFja3M+IGNhbGxiYWNrcywgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgbV9pZGJD
dXJzb3ItPmFkdmFuY2UoY291bnQsIG5ldyBXZWJJREJDYWxsYmFja3NJbXBsKGNhbGxiYWNrcyks
IGVjKTsKK30KKwogdm9pZCBJREJDdXJzb3JCYWNrZW5kUHJveHk6OmNvbnRpbnVlRnVuY3Rpb24o
UGFzc1JlZlB0cjxJREJLZXk+IGtleSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNr
cywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgbV9pZGJDdXJzb3ItPmNvbnRpbnVlRnVuY3Rp
b24oa2V5LCBuZXcgV2ViSURCQ2FsbGJhY2tzSW1wbChjYWxsYmFja3MpLCBlYyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDdXJzb3JCYWNrZW5kUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkN1cnNvckJhY2tlbmRQcm94eS5oCmluZGV4
IGNmZTZkYWY1ZGRlZDc4ZDdlYTVkZjRkOTNlMGZiM2JhMWRkOWFkMDYuLjI0YTNlNDJjNDdhN2I2
MWViNjkyMTAxMGY3Y2YxOGY4MDE4ZjQ3MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0lEQkN1cnNvckJhY2tlbmRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0lEQkN1cnNvckJhY2tlbmRQcm94eS5oCkBAIC00Nyw2ICs0Nyw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5PiBwcmltYXJ5S2V5KCkg
Y29uc3Q7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gdmFsdWUoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlKFBhc3NSZWZQdHI8
V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJD
YWxsYmFja3M+LCBXZWJDb3JlOjpFeGNlcHRpb25Db2RlJik7CisgICAgdmlydHVhbCB2b2lkIGFk
dmFuY2UodW5zaWduZWQgbG9uZywgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+LCBX
ZWJDb3JlOjpFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIGNvbnRpbnVlRnVuY3Rp
b24oUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJLZXk+LCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNh
bGxiYWNrcz4sIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIHZvaWQgZGVs
ZXRlRnVuY3Rpb24oUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+LCBXZWJDb3JlOjpF
eGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIHByZWZldGNoQ29udGludWUoaW50IG51
bWJlclRvRmV0Y2gsIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPiwgV2ViQ29yZTo6
RXhjZXB0aW9uQ29kZSYpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0gLy8gT25seSB1c2VkIGlu
IHRoZSBiYWNrZW5kLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
SURCQ3Vyc29ySW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJDdXJz
b3JJbXBsLmNwcAppbmRleCBmNzNhYjJjMzViZWRmOTI4ZTljYzVlMDZlYWUxYTg4NGY2OGEwMWIw
Li42ZjEwZWZlOWUwOTZmOTNmZmQ1N2Q3NmVmZTkzMzQwNjliODc5MmFiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJDdXJzb3JJbXBsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJDdXJzb3JJbXBsLmNwcApAQCAtNzQsNyArNzQs
NyBAQCB2b2lkIFdlYklEQkN1cnNvckltcGw6OnVwZGF0ZShjb25zdCBXZWJTZXJpYWxpemVkU2Ny
aXB0VmFsdWUmIHZhbHVlLCBXZWJJREJDYWxsYgogCiB2b2lkIFdlYklEQkN1cnNvckltcGw6OmFk
dmFuY2UodW5zaWduZWQgbG9uZyBjb3VudCwgV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MsIFdl
YkV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIC8vIEZJWE1FOiBub3QgaW1wbGVtZW50ZWQgaW4g
aW5kZXhlZGRiIHlldAorICAgIG1faWRiQ3Vyc29yQmFja2VuZC0+YWR2YW5jZShjb3VudCwgSURC
Q2FsbGJhY2tzUHJveHk6OmNyZWF0ZShhZG9wdFB0cihjYWxsYmFja3MpKSwgZWMpOwogfQogCiB2
b2lkIFdlYklEQkN1cnNvckltcGw6OmNvbnRpbnVlRnVuY3Rpb24oY29uc3QgV2ViSURCS2V5JiBr
ZXksIFdlYklEQkNhbGxiYWNrcyogY2FsbGJhY2tzLCBXZWJFeGNlcHRpb25Db2RlJiBlYykKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpp
bmRleCBmYzk1NzQ5ZTJhNDgwNWU1NDUzNWIyNTk1ZmRhMTZiMGJkZGZlMGUzLi5mZGQxNjRlNTNi
MmU1NTRkMWU3ZDRhMTA5NjI2MWY0NzI0ODRjZjIzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIw
MTItMDQtMjMgIEFsZWMgRmxldHQgIDxhbGVjZmxldHRAY2hyb21pdW0ub3JnPgorCisgICAgICAg
IEluZGV4ZWREQjogaW1wbGVtZW50IGN1cnNvci5hZHZhbmNlKCkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg0MTc0CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHMgZm9yIGN1cnNvci5hZHZhbmNlKCku
CisKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItYWR2YW5jZS1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1hZHZhbmNlLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jdXJzb3It
YWR2YW5jZS5qczogQWRkZWQuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKG9wZW5TdWNjZXNz
KToKKyAgICAgICAgKGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAobWFr
ZUFkdmFuY2VUZXN0LmNvbnRpbnVlVG9UZXN0KToKKyAgICAgICAgKG1ha2VBZHZhbmNlVGVzdC5y
ZXF1ZXN0Lm9uZXJyb3IpOgorICAgICAgICAobWFrZUFkdmFuY2VUZXN0KToKKyAgICAgICAgKG1r
Q3Vyc29yKToKKyAgICAgICAgKHJ1blRlc3QpOgorICAgICAgICAodGVzdEFsbCk6CisgICAgICAg
ICh0ZXN0U2ltcGxlKToKKyAgICAgICAgKHRlc3RDb250aW51ZVRoZW5BZHZhbmNlKToKKyAgICAg
ICAgKHRlc3RBZHZhbmNlTXVsdGlwbGUpOgorICAgICAgICAodGVzdEFkdmFuY2VUb0VuZCk6Cisg
ICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3NoYXJlZC5qczoKKyAgICAgICAg
KHdhaXRGb3Iub25lcnJvcik6CisgICAgICAgICh3YWl0Rm9yLm9uYWJvcnQpOgorICAgICAgICAo
d2FpdEZvcik6CisgICAgICAgICh3YWl0Rm9yX29uc3VjY2Vzcy5vbnN1Y2Nlc3MpOgorICAgICAg
ICAod2FpdEZvcl9vbnN1Y2Nlc3MpOgorCiAyMDEyLTA0LTI0ICBNaWtoYWlsIE5hZ2Fub3YgIDxt
bmFnYW5vdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBVbnJldmlld2VkIHRl
c3QgZXhwZWN0YXRpb25zIHVwZGF0ZS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL2N1cnNvci1hZHZhbmNlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL2N1cnNvci1hZHZhbmNlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MGIx
ZDQzNDRhOWVlYzYzYTAzMjgwY2M0NjU4YmJkM2I4MmExY2JlCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLWFkdmFuY2UtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMTI5IEBACitUZXN0IEluZGV4ZWREQiBjdXJzb3IuYWR2YW5jZSgpLgorCitP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworaW5kZXhlZERCID0gc2VsZi5pbmRleGVkREIg
fHwgc2VsZi53ZWJraXRJbmRleGVkREIgfHwgc2VsZi5tb3pJbmRleGVkREIgfHwgc2VsZi5tc0lu
ZGV4ZWREQiB8fCBzZWxmLk9JbmRleGVkREI7CisKK2luZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2Ny
aXB0aW9uKQorb3BlblN1Y2Nlc3MoKToKK2RiID0gZXZlbnQudGFyZ2V0LnJlc3VsdAorcmVxdWVz
dCA9IGRiLnNldFZlcnNpb24oJzEnKQorRGVsZXRlZCBhbGwgb2JqZWN0IHN0b3Jlcy4KK29iamVj
dFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUob2JqZWN0U3RvcmVOYW1lKTsKK0ZpcnN0LCBh
ZGQgYWxsIG91ciBkYXRhIHRvIHRoZSBvYmplY3Qgc3RvcmUuCityZXF1ZXN0ID0gb2JqZWN0U3Rv
cmUuYWRkKG9iamVjdFN0b3JlRGF0YVtpXS52YWx1ZSwgb2JqZWN0U3RvcmVEYXRhW2ldLmtleSk7
CityZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKG9iamVjdFN0b3JlRGF0YVtpXS52YWx1ZSwgb2Jq
ZWN0U3RvcmVEYXRhW2ldLmtleSk7CityZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKG9iamVjdFN0
b3JlRGF0YVtpXS52YWx1ZSwgb2JqZWN0U3RvcmVEYXRhW2ldLmtleSk7CityZXF1ZXN0ID0gb2Jq
ZWN0U3RvcmUuYWRkKG9iamVjdFN0b3JlRGF0YVtpXS52YWx1ZSwgb2JqZWN0U3RvcmVEYXRhW2ld
LmtleSk7CityZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKG9iamVjdFN0b3JlRGF0YVtpXS52YWx1
ZSwgb2JqZWN0U3RvcmVEYXRhW2ldLmtleSk7CityZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKG9i
amVjdFN0b3JlRGF0YVtpXS52YWx1ZSwgb2JqZWN0U3RvcmVEYXRhW2ldLmtleSk7CityZXF1ZXN0
ID0gb2JqZWN0U3RvcmUuYWRkKG9iamVjdFN0b3JlRGF0YVtpXS52YWx1ZSwgb2JqZWN0U3RvcmVE
YXRhW2ldLmtleSk7CityZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKG9iamVjdFN0b3JlRGF0YVtp
XS52YWx1ZSwgb2JqZWN0U3RvcmVEYXRhW2ldLmtleSk7CityZXF1ZXN0ID0gb2JqZWN0U3RvcmUu
YWRkKG9iamVjdFN0b3JlRGF0YVtpXS52YWx1ZSwgb2JqZWN0U3RvcmVEYXRhW2ldLmtleSk7City
ZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKG9iamVjdFN0b3JlRGF0YVtpXS52YWx1ZSwgb2JqZWN0
U3RvcmVEYXRhW2ldLmtleSk7CityZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKG9iamVjdFN0b3Jl
RGF0YVtpXS52YWx1ZSwgb2JqZWN0U3RvcmVEYXRhW2ldLmtleSk7CityZXF1ZXN0ID0gb2JqZWN0
U3RvcmUuYWRkKG9iamVjdFN0b3JlRGF0YVtpXS52YWx1ZSwgb2JqZWN0U3RvcmVEYXRhW2ldLmtl
eSk7CityZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKG9iamVjdFN0b3JlRGF0YVtpXS52YWx1ZSwg
b2JqZWN0U3RvcmVEYXRhW2ldLmtleSk7Cit0ZXN0QWxsKCkKK3Rlc3RTaW1wbGUoKQordHJhbnMg
PSBkYi50cmFuc2FjdGlvbihvYmplY3RTdG9yZU5hbWUpCitvYmplY3RTdG9yZSA9IHRyYW5zLm9i
amVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSkKK3JlcXVlc3QgPSBvYmplY3RTdG9yZS5vcGVuQ3Vy
c29yKG51bGwsIG51bGwpCitjdXJzb3IuYWR2YW5jZSgxKQorUEFTUyAneyJrZXkiOiIyMzctMjMt
NzczMyIsInZhbHVlIjp7Im5hbWUiOiJBbm4iLCJoZWlnaHQiOjUyLCJ3ZWlnaHQiOjExMH0sInBy
aW1hcnlLZXkiOiIyMzctMjMtNzczMyJ9JyBpcyAneyJrZXkiOiIyMzctMjMtNzczMyIsInZhbHVl
Ijp7Im5hbWUiOiJBbm4iLCJoZWlnaHQiOjUyLCJ3ZWlnaHQiOjExMH0sInByaW1hcnlLZXkiOiIy
MzctMjMtNzczMyJ9JwordGVzdENvbnRpbnVlVGhlbkFkdmFuY2UoKQordHJhbnMgPSBkYi50cmFu
c2FjdGlvbihvYmplY3RTdG9yZU5hbWUpCitvYmplY3RTdG9yZSA9IHRyYW5zLm9iamVjdFN0b3Jl
KG9iamVjdFN0b3JlTmFtZSkKK3JlcXVlc3QgPSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKG51bGws
IG51bGwpCitjdXJzb3IuY29udGludWUoKTsKK2N1cnNvci5jb250aW51ZSgpOworY3Vyc29yLmNv
bnRpbnVlKCk7CitjdXJzb3IuYWR2YW5jZSgxKQorUEFTUyAneyJrZXkiOiIyMzctMjMtNzczNiIs
InZhbHVlIjp7Im5hbWUiOiJKb2UiLCJoZWlnaHQiOjY1LCJ3ZWlnaHQiOjE1MH0sInByaW1hcnlL
ZXkiOiIyMzctMjMtNzczNiJ9JyBpcyAneyJrZXkiOiIyMzctMjMtNzczNiIsInZhbHVlIjp7Im5h
bWUiOiJKb2UiLCJoZWlnaHQiOjY1LCJ3ZWlnaHQiOjE1MH0sInByaW1hcnlLZXkiOiIyMzctMjMt
NzczNiJ9JwordGVzdEFkdmFuY2VNdWx0aXBsZSgpCit0cmFucyA9IGRiLnRyYW5zYWN0aW9uKG9i
amVjdFN0b3JlTmFtZSkKK29iamVjdFN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUob2JqZWN0U3Rv
cmVOYW1lKQorcmVxdWVzdCA9IG9iamVjdFN0b3JlLm9wZW5DdXJzb3IobnVsbCwgbnVsbCkKK2N1
cnNvci5hZHZhbmNlKDMpCitQQVNTICd7ImtleSI6IjIzNy0yMy03NzM1IiwidmFsdWUiOnsibmFt
ZSI6IlN1ZSIsImhlaWdodCI6NTgsIndlaWdodCI6MTMwfSwicHJpbWFyeUtleSI6IjIzNy0yMy03
NzM1In0nIGlzICd7ImtleSI6IjIzNy0yMy03NzM1IiwidmFsdWUiOnsibmFtZSI6IlN1ZSIsImhl
aWdodCI6NTgsIndlaWdodCI6MTMwfSwicHJpbWFyeUtleSI6IjIzNy0yMy03NzM1In0nCit0ZXN0
QWR2YW5jZVRvRW5kKCkKK3RyYW5zID0gZGIudHJhbnNhY3Rpb24ob2JqZWN0U3RvcmVOYW1lKQor
b2JqZWN0U3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZShvYmplY3RTdG9yZU5hbWUpCityZXF1ZXN0
ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNvcihudWxsLCBudWxsKQorY3Vyc29yLmFkdmFuY2UoMTAw
KQorUEFTUyAnbnVsbCcgaXMgJ251bGwnCit0ZXN0UHJlZmV0Y2hJblJhbmdlKCkKK3RyYW5zID0g
ZGIudHJhbnNhY3Rpb24ob2JqZWN0U3RvcmVOYW1lKQorb2JqZWN0U3RvcmUgPSB0cmFucy5vYmpl
Y3RTdG9yZShvYmplY3RTdG9yZU5hbWUpCityZXF1ZXN0ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNv
cigpCitQQVNTICd7ImtleSI6IjIzNy0yMy03NzMyIiwidmFsdWUiOnsibmFtZSI6IkJvYiIsImhl
aWdodCI6NjAsIndlaWdodCI6MTIwfSwicHJpbWFyeUtleSI6IjIzNy0yMy03NzMyIn0nIGlzICd7
ImtleSI6IjIzNy0yMy03NzMyIiwidmFsdWUiOnsibmFtZSI6IkJvYiIsImhlaWdodCI6NjAsIndl
aWdodCI6MTIwfSwicHJpbWFyeUtleSI6IjIzNy0yMy03NzMyIn0nCitjdXJzb3IuY29udGludWUo
KQorUEFTUyAneyJrZXkiOiIyMzctMjMtNzczMyIsInZhbHVlIjp7Im5hbWUiOiJBbm4iLCJoZWln
aHQiOjUyLCJ3ZWlnaHQiOjExMH0sInByaW1hcnlLZXkiOiIyMzctMjMtNzczMyJ9JyBpcyAneyJr
ZXkiOiIyMzctMjMtNzczMyIsInZhbHVlIjp7Im5hbWUiOiJBbm4iLCJoZWlnaHQiOjUyLCJ3ZWln
aHQiOjExMH0sInByaW1hcnlLZXkiOiIyMzctMjMtNzczMyJ9JworY3Vyc29yLmNvbnRpbnVlKCkK
K1BBU1MgJ3sia2V5IjoiMjM3LTIzLTc3MzQiLCJ2YWx1ZSI6eyJuYW1lIjoiUm9uIiwiaGVpZ2h0
Ijo3Mywid2VpZ2h0IjoxODB9LCJwcmltYXJ5S2V5IjoiMjM3LTIzLTc3MzQifScgaXMgJ3sia2V5
IjoiMjM3LTIzLTc3MzQiLCJ2YWx1ZSI6eyJuYW1lIjoiUm9uIiwiaGVpZ2h0Ijo3Mywid2VpZ2h0
IjoxODB9LCJwcmltYXJ5S2V5IjoiMjM3LTIzLTc3MzQifScKK2N1cnNvci5jb250aW51ZSgpCitQ
QVNTICd7ImtleSI6IjIzNy0yMy03NzM1IiwidmFsdWUiOnsibmFtZSI6IlN1ZSIsImhlaWdodCI6
NTgsIndlaWdodCI6MTMwfSwicHJpbWFyeUtleSI6IjIzNy0yMy03NzM1In0nIGlzICd7ImtleSI6
IjIzNy0yMy03NzM1IiwidmFsdWUiOnsibmFtZSI6IlN1ZSIsImhlaWdodCI6NTgsIndlaWdodCI6
MTMwfSwicHJpbWFyeUtleSI6IjIzNy0yMy03NzM1In0nCitjdXJzb3IuYWR2YW5jZSgyKQorUEFT
UyAneyJrZXkiOiIyMzctMjMtNzczNyIsInZhbHVlIjp7Im5hbWUiOiJQYXQiLCJoZWlnaHQiOjY1
LCJ3ZWlnaHQiOjEwMH0sInByaW1hcnlLZXkiOiIyMzctMjMtNzczNyJ9JyBpcyAneyJrZXkiOiIy
MzctMjMtNzczNyIsInZhbHVlIjp7Im5hbWUiOiJQYXQiLCJoZWlnaHQiOjY1LCJ3ZWlnaHQiOjEw
MH0sInByaW1hcnlLZXkiOiIyMzctMjMtNzczNyJ9JworY3Vyc29yLmNvbnRpbnVlKCkKK1BBU1Mg
J3sia2V5IjoiMjM3LTIzLTc3MzgiLCJ2YWx1ZSI6eyJuYW1lIjoiTGVvIiwiaGVpZ2h0Ijo2NSwi
d2VpZ2h0IjoxODB9LCJwcmltYXJ5S2V5IjoiMjM3LTIzLTc3MzgifScgaXMgJ3sia2V5IjoiMjM3
LTIzLTc3MzgiLCJ2YWx1ZSI6eyJuYW1lIjoiTGVvIiwiaGVpZ2h0Ijo2NSwid2VpZ2h0IjoxODB9
LCJwcmltYXJ5S2V5IjoiMjM3LTIzLTc3MzgifScKK2N1cnNvci5jb250aW51ZSgpCitQQVNTICd7
ImtleSI6IjIzNy0yMy03NzM5IiwidmFsdWUiOnsibmFtZSI6IkplZiIsImhlaWdodCI6NjUsIndl
aWdodCI6MTIwfSwicHJpbWFyeUtleSI6IjIzNy0yMy03NzM5In0nIGlzICd7ImtleSI6IjIzNy0y
My03NzM5IiwidmFsdWUiOnsibmFtZSI6IkplZiIsImhlaWdodCI6NjUsIndlaWdodCI6MTIwfSwi
cHJpbWFyeUtleSI6IjIzNy0yMy03NzM5In0nCitjdXJzb3IuY29udGludWUoKQorUEFTUyAneyJr
ZXkiOiIyMzctMjMtNzc0MCIsInZhbHVlIjp7Im5hbWUiOiJTYW0iLCJoZWlnaHQiOjcxLCJ3ZWln
aHQiOjExMH0sInByaW1hcnlLZXkiOiIyMzctMjMtNzc0MCJ9JyBpcyAneyJrZXkiOiIyMzctMjMt
Nzc0MCIsInZhbHVlIjp7Im5hbWUiOiJTYW0iLCJoZWlnaHQiOjcxLCJ3ZWlnaHQiOjExMH0sInBy
aW1hcnlLZXkiOiIyMzctMjMtNzc0MCJ9JworY3Vyc29yLmNvbnRpbnVlKCkKK1BBU1MgJ3sia2V5
IjoiMjM3LTIzLTc3NDEiLCJ2YWx1ZSI6eyJuYW1lIjoiUGF0IiwiaGVpZ2h0Ijo2Mywid2VpZ2h0
IjoxMDB9LCJwcmltYXJ5S2V5IjoiMjM3LTIzLTc3NDEifScgaXMgJ3sia2V5IjoiMjM3LTIzLTc3
NDEiLCJ2YWx1ZSI6eyJuYW1lIjoiUGF0IiwiaGVpZ2h0Ijo2Mywid2VpZ2h0IjoxMDB9LCJwcmlt
YXJ5S2V5IjoiMjM3LTIzLTc3NDEifScKK2N1cnNvci5jb250aW51ZSgpCitQQVNTICd7ImtleSI6
IjIzNy0yMy03NzQyIiwidmFsdWUiOnsibmFtZSI6IkxlbyIsImhlaWdodCI6NjksIndlaWdodCI6
MTgwfSwicHJpbWFyeUtleSI6IjIzNy0yMy03NzQyIn0nIGlzICd7ImtleSI6IjIzNy0yMy03NzQy
IiwidmFsdWUiOnsibmFtZSI6IkxlbyIsImhlaWdodCI6NjksIndlaWdodCI6MTgwfSwicHJpbWFy
eUtleSI6IjIzNy0yMy03NzQyIn0nCitjdXJzb3IuY29udGludWUoKQorUEFTUyAneyJrZXkiOiIy
MzctMjMtNzc0MyIsInZhbHVlIjp7Im5hbWUiOiJKZWYiLCJoZWlnaHQiOjc3LCJ3ZWlnaHQiOjEy
MH0sInByaW1hcnlLZXkiOiIyMzctMjMtNzc0MyJ9JyBpcyAneyJrZXkiOiIyMzctMjMtNzc0MyIs
InZhbHVlIjp7Im5hbWUiOiJKZWYiLCJoZWlnaHQiOjc3LCJ3ZWlnaHQiOjEyMH0sInByaW1hcnlL
ZXkiOiIyMzctMjMtNzc0MyJ9JworY3Vyc29yLmNvbnRpbnVlKCkKK1BBU1MgJ3sia2V5IjoiMjM3
LTIzLTc3NDQiLCJ2YWx1ZSI6eyJuYW1lIjoiU2FtIiwiaGVpZ2h0Ijo2Niwid2VpZ2h0IjoxMTB9
LCJwcmltYXJ5S2V5IjoiMjM3LTIzLTc3NDQifScgaXMgJ3sia2V5IjoiMjM3LTIzLTc3NDQiLCJ2
YWx1ZSI6eyJuYW1lIjoiU2FtIiwiaGVpZ2h0Ijo2Niwid2VpZ2h0IjoxMTB9LCJwcmltYXJ5S2V5
IjoiMjM3LTIzLTc3NDQifScKK2N1cnNvci5jb250aW51ZSgpCit0ZXN0UHJlZmV0Y2hPdXRPZlJh
bmdlKCkKK3RyYW5zID0gZGIudHJhbnNhY3Rpb24ob2JqZWN0U3RvcmVOYW1lKQorb2JqZWN0U3Rv
cmUgPSB0cmFucy5vYmplY3RTdG9yZShvYmplY3RTdG9yZU5hbWUpCityZXF1ZXN0ID0gb2JqZWN0
U3RvcmUub3BlbkN1cnNvcigpCitQQVNTICd7ImtleSI6IjIzNy0yMy03NzMyIiwidmFsdWUiOnsi
bmFtZSI6IkJvYiIsImhlaWdodCI6NjAsIndlaWdodCI6MTIwfSwicHJpbWFyeUtleSI6IjIzNy0y
My03NzMyIn0nIGlzICd7ImtleSI6IjIzNy0yMy03NzMyIiwidmFsdWUiOnsibmFtZSI6IkJvYiIs
ImhlaWdodCI6NjAsIndlaWdodCI6MTIwfSwicHJpbWFyeUtleSI6IjIzNy0yMy03NzMyIn0nCitj
dXJzb3IuY29udGludWUoKQorUEFTUyAneyJrZXkiOiIyMzctMjMtNzczMyIsInZhbHVlIjp7Im5h
bWUiOiJBbm4iLCJoZWlnaHQiOjUyLCJ3ZWlnaHQiOjExMH0sInByaW1hcnlLZXkiOiIyMzctMjMt
NzczMyJ9JyBpcyAneyJrZXkiOiIyMzctMjMtNzczMyIsInZhbHVlIjp7Im5hbWUiOiJBbm4iLCJo
ZWlnaHQiOjUyLCJ3ZWlnaHQiOjExMH0sInByaW1hcnlLZXkiOiIyMzctMjMtNzczMyJ9JworY3Vy
c29yLmNvbnRpbnVlKCkKK1BBU1MgJ3sia2V5IjoiMjM3LTIzLTc3MzQiLCJ2YWx1ZSI6eyJuYW1l
IjoiUm9uIiwiaGVpZ2h0Ijo3Mywid2VpZ2h0IjoxODB9LCJwcmltYXJ5S2V5IjoiMjM3LTIzLTc3
MzQifScgaXMgJ3sia2V5IjoiMjM3LTIzLTc3MzQiLCJ2YWx1ZSI6eyJuYW1lIjoiUm9uIiwiaGVp
Z2h0Ijo3Mywid2VpZ2h0IjoxODB9LCJwcmltYXJ5S2V5IjoiMjM3LTIzLTc3MzQifScKK2N1cnNv
ci5jb250aW51ZSgpCitQQVNTICd7ImtleSI6IjIzNy0yMy03NzM1IiwidmFsdWUiOnsibmFtZSI6
IlN1ZSIsImhlaWdodCI6NTgsIndlaWdodCI6MTMwfSwicHJpbWFyeUtleSI6IjIzNy0yMy03NzM1
In0nIGlzICd7ImtleSI6IjIzNy0yMy03NzM1IiwidmFsdWUiOnsibmFtZSI6IlN1ZSIsImhlaWdo
dCI6NTgsIndlaWdodCI6MTMwfSwicHJpbWFyeUtleSI6IjIzNy0yMy03NzM1In0nCitjdXJzb3Iu
YWR2YW5jZSg3KQorUEFTUyAneyJrZXkiOiIyMzctMjMtNzc0MiIsInZhbHVlIjp7Im5hbWUiOiJM
ZW8iLCJoZWlnaHQiOjY5LCJ3ZWlnaHQiOjE4MH0sInByaW1hcnlLZXkiOiIyMzctMjMtNzc0MiJ9
JyBpcyAneyJrZXkiOiIyMzctMjMtNzc0MiIsInZhbHVlIjp7Im5hbWUiOiJMZW8iLCJoZWlnaHQi
OjY5LCJ3ZWlnaHQiOjE4MH0sInByaW1hcnlLZXkiOiIyMzctMjMtNzc0MiJ9JworY3Vyc29yLmNv
bnRpbnVlKCkKK1BBU1MgJ3sia2V5IjoiMjM3LTIzLTc3NDMiLCJ2YWx1ZSI6eyJuYW1lIjoiSmVm
IiwiaGVpZ2h0Ijo3Nywid2VpZ2h0IjoxMjB9LCJwcmltYXJ5S2V5IjoiMjM3LTIzLTc3NDMifScg
aXMgJ3sia2V5IjoiMjM3LTIzLTc3NDMiLCJ2YWx1ZSI6eyJuYW1lIjoiSmVmIiwiaGVpZ2h0Ijo3
Nywid2VpZ2h0IjoxMjB9LCJwcmltYXJ5S2V5IjoiMjM3LTIzLTc3NDMifScKK2N1cnNvci5jb250
aW51ZSgpCitQQVNTICd7ImtleSI6IjIzNy0yMy03NzQ0IiwidmFsdWUiOnsibmFtZSI6IlNhbSIs
ImhlaWdodCI6NjYsIndlaWdodCI6MTEwfSwicHJpbWFyeUtleSI6IjIzNy0yMy03NzQ0In0nIGlz
ICd7ImtleSI6IjIzNy0yMy03NzQ0IiwidmFsdWUiOnsibmFtZSI6IlNhbSIsImhlaWdodCI6NjYs
IndlaWdodCI6MTEwfSwicHJpbWFyeUtleSI6IjIzNy0yMy03NzQ0In0nCitjdXJzb3IuY29udGlu
dWUoKQordGVzdERlbGV0ZSgpCit0cmFucyA9IGRiLnRyYW5zYWN0aW9uKG9iamVjdFN0b3JlTmFt
ZSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkKK29iamVjdFN0b3JlID0gdHJhbnMub2JqZWN0
U3RvcmUob2JqZWN0U3RvcmVOYW1lKQorcmVxdWVzdCA9IG9iamVjdFN0b3JlLm9wZW5DdXJzb3Io
KQorUEFTUyAneyJrZXkiOiIyMzctMjMtNzczMiIsInZhbHVlIjp7Im5hbWUiOiJCb2IiLCJoZWln
aHQiOjYwLCJ3ZWlnaHQiOjEyMH0sInByaW1hcnlLZXkiOiIyMzctMjMtNzczMiJ9JyBpcyAneyJr
ZXkiOiIyMzctMjMtNzczMiIsInZhbHVlIjp7Im5hbWUiOiJCb2IiLCJoZWlnaHQiOjYwLCJ3ZWln
aHQiOjEyMH0sInByaW1hcnlLZXkiOiIyMzctMjMtNzczMiJ9JworY3Vyc29yLmFkdmFuY2UoMSkK
K1BBU1MgJ3sia2V5IjoiMjM3LTIzLTc3MzMiLCJ2YWx1ZSI6eyJuYW1lIjoiQW5uIiwiaGVpZ2h0
Ijo1Miwid2VpZ2h0IjoxMTB9LCJwcmltYXJ5S2V5IjoiMjM3LTIzLTc3MzMifScgaXMgJ3sia2V5
IjoiMjM3LTIzLTc3MzMiLCJ2YWx1ZSI6eyJuYW1lIjoiQW5uIiwiaGVpZ2h0Ijo1Miwid2VpZ2h0
IjoxMTB9LCJwcmltYXJ5S2V5IjoiMjM3LTIzLTc3MzMifScKK2N1cnNvci5hZHZhbmNlKDEpCitQ
QVNTICd7ImtleSI6IjIzNy0yMy03NzM0IiwidmFsdWUiOnsibmFtZSI6IlJvbiIsImhlaWdodCI6
NzMsIndlaWdodCI6MTgwfSwicHJpbWFyeUtleSI6IjIzNy0yMy03NzM0In0nIGlzICd7ImtleSI6
IjIzNy0yMy03NzM0IiwidmFsdWUiOnsibmFtZSI6IlJvbiIsImhlaWdodCI6NzMsIndlaWdodCI6
MTgwfSwicHJpbWFyeUtleSI6IjIzNy0yMy03NzM0In0nCitjdXJzb3IuZGVsZXRlKCkKK1BBU1Mg
J3sia2V5IjoiMjM3LTIzLTc3MzgiLCJ2YWx1ZSI6eyJuYW1lIjoiTGVvIiwiaGVpZ2h0Ijo2NSwi
d2VpZ2h0IjoxODB9LCJwcmltYXJ5S2V5IjoiMjM3LTIzLTc3MzgifScgaXMgJ3sia2V5IjoiMjM3
LTIzLTc3MzgiLCJ2YWx1ZSI6eyJuYW1lIjoiTGVvIiwiaGVpZ2h0Ijo2NSwid2VpZ2h0IjoxODB9
LCJwcmltYXJ5S2V5IjoiMjM3LTIzLTc3MzgifScKK2N1cnNvci5hZHZhbmNlKDEpCitQQVNTICd7
ImtleSI6IjIzNy0yMy03NzM5IiwidmFsdWUiOnsibmFtZSI6IkplZiIsImhlaWdodCI6NjUsIndl
aWdodCI6MTIwfSwicHJpbWFyeUtleSI6IjIzNy0yMy03NzM5In0nIGlzICd7ImtleSI6IjIzNy0y
My03NzM5IiwidmFsdWUiOnsibmFtZSI6IkplZiIsImhlaWdodCI6NjUsIndlaWdodCI6MTIwfSwi
cHJpbWFyeUtleSI6IjIzNy0yMy03NzM5In0nCitjdXJzb3IuYWR2YW5jZSgxKQorUEFTUyAneyJr
ZXkiOiIyMzctMjMtNzc0MCIsInZhbHVlIjp7Im5hbWUiOiJTYW0iLCJoZWlnaHQiOjcxLCJ3ZWln
aHQiOjExMH0sInByaW1hcnlLZXkiOiIyMzctMjMtNzc0MCJ9JyBpcyAneyJrZXkiOiIyMzctMjMt
Nzc0MCIsInZhbHVlIjp7Im5hbWUiOiJTYW0iLCJoZWlnaHQiOjcxLCJ3ZWlnaHQiOjExMH0sInBy
aW1hcnlLZXkiOiIyMzctMjMtNzc0MCJ9JworY3Vyc29yLmFkdmFuY2UoMSkKK1BBU1MgJ3sia2V5
IjoiMjM3LTIzLTc3NDEiLCJ2YWx1ZSI6eyJuYW1lIjoiUGF0IiwiaGVpZ2h0Ijo2Mywid2VpZ2h0
IjoxMDB9LCJwcmltYXJ5S2V5IjoiMjM3LTIzLTc3NDEifScgaXMgJ3sia2V5IjoiMjM3LTIzLTc3
NDEiLCJ2YWx1ZSI6eyJuYW1lIjoiUGF0IiwiaGVpZ2h0Ijo2Mywid2VpZ2h0IjoxMDB9LCJwcmlt
YXJ5S2V5IjoiMjM3LTIzLTc3NDEifScKK2N1cnNvci5hZHZhbmNlKDEpCitQQVNTICd7ImtleSI6
IjIzNy0yMy03NzQyIiwidmFsdWUiOnsibmFtZSI6IkxlbyIsImhlaWdodCI6NjksIndlaWdodCI6
MTgwfSwicHJpbWFyeUtleSI6IjIzNy0yMy03NzQyIn0nIGlzICd7ImtleSI6IjIzNy0yMy03NzQy
IiwidmFsdWUiOnsibmFtZSI6IkxlbyIsImhlaWdodCI6NjksIndlaWdodCI6MTgwfSwicHJpbWFy
eUtleSI6IjIzNy0yMy03NzQyIn0nCitjdXJzb3IuYWR2YW5jZSgxKQorUEFTUyAneyJrZXkiOiIy
MzctMjMtNzc0MyIsInZhbHVlIjp7Im5hbWUiOiJKZWYiLCJoZWlnaHQiOjc3LCJ3ZWlnaHQiOjEy
MH0sInByaW1hcnlLZXkiOiIyMzctMjMtNzc0MyJ9JyBpcyAneyJrZXkiOiIyMzctMjMtNzc0MyIs
InZhbHVlIjp7Im5hbWUiOiJKZWYiLCJoZWlnaHQiOjc3LCJ3ZWlnaHQiOjEyMH0sInByaW1hcnlL
ZXkiOiIyMzctMjMtNzc0MyJ9JworY3Vyc29yLmFkdmFuY2UoMSkKK1BBU1MgJ3sia2V5IjoiMjM3
LTIzLTc3NDQiLCJ2YWx1ZSI6eyJuYW1lIjoiU2FtIiwiaGVpZ2h0Ijo2Niwid2VpZ2h0IjoxMTB9
LCJwcmltYXJ5S2V5IjoiMjM3LTIzLTc3NDQifScgaXMgJ3sia2V5IjoiMjM3LTIzLTc3NDQiLCJ2
YWx1ZSI6eyJuYW1lIjoiU2FtIiwiaGVpZ2h0Ijo2Niwid2VpZ2h0IjoxMTB9LCJwcmltYXJ5S2V5
IjoiMjM3LTIzLTc3NDQifScKK2N1cnNvci5hZHZhbmNlKDEpCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLWFkdmFuY2UuaHRtbCBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL2N1cnNvci1hZHZhbmNlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTBlNGRjNGNjZmU5
MDgxMTIyZTFmNGMxMmQxY2IzZmZmMzlkMmQ4NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1hZHZhbmNlLmh0bWwKQEAgLTAsMCArMSwxMCBA
QAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvY3Vy
c29yLWFkdmFuY2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLWFk
dmFuY2UuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29y
LWFkdmFuY2UuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGEyZWRkNTlhMGQxYWU2YmU1NmFkMmI2ZmM5YzMwOWMx
ZjJjMDRhOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L3Jlc291cmNlcy9jdXJzb3ItYWR2YW5jZS5qcwpAQCAtMCwwICsxLDMyMyBAQAoraWYgKHRoaXMu
aW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7
Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiBjdXJzb3IuYWR2YW5jZSgpLiIpOwor
CisvLyB0ZXN0IGFkdmFuY2Ugd2l0aGluIHJhbmdlCisvLyB0ZXN0IGFkdmFuY2Ugd2l0aGluIHJh
bmdlIHJldmVyc2UKKy8vIHRlc3QgYWR2YW5jZSB3aXRoaW4gcmFuZ2Ugbm8gZHVwZQorLy8gdGVz
dCBhZHZhbmNlIHdpdGhpbiByYW5nZSByZXZlcnNlIG5vIGR1cGUKKy8vIHRlc3QgYWR2YW5jZSBw
YXN0IGRhdGEKKy8vIHRlc3QgYWR2YW5jZSBwYXN0IGRhdGEgcmV2ZXJzZQorLy8gdGVzdCBhZHZh
bmNlIHBhc3QgY3Vyc29yIGJvdW5kcwordmFyIG9iamVjdFN0b3JlRGF0YSA9IFsKKyAgICB7IGtl
eTogIjIzNy0yMy03NzMyIiwgdmFsdWU6IHsgbmFtZTogIkJvYiIsIGhlaWdodDogNjAsIHdlaWdo
dDogMTIwIH0gfSwKKyAgICB7IGtleTogIjIzNy0yMy03NzMzIiwgdmFsdWU6IHsgbmFtZTogIkFu
biIsIGhlaWdodDogNTIsIHdlaWdodDogMTEwIH0gfSwKKyAgICB7IGtleTogIjIzNy0yMy03NzM0
IiwgdmFsdWU6IHsgbmFtZTogIlJvbiIsIGhlaWdodDogNzMsIHdlaWdodDogMTgwIH0gfSwKKyAg
ICB7IGtleTogIjIzNy0yMy03NzM1IiwgdmFsdWU6IHsgbmFtZTogIlN1ZSIsIGhlaWdodDogNTgs
IHdlaWdodDogMTMwIH0gfSwKKyAgICB7IGtleTogIjIzNy0yMy03NzM2IiwgdmFsdWU6IHsgbmFt
ZTogIkpvZSIsIGhlaWdodDogNjUsIHdlaWdodDogMTUwIH0gfSwKKyAgICB7IGtleTogIjIzNy0y
My03NzM3IiwgdmFsdWU6IHsgbmFtZTogIlBhdCIsIGhlaWdodDogNjUsIHdlaWdodDogMTAwIH0g
fSwKKyAgICB7IGtleTogIjIzNy0yMy03NzM4IiwgdmFsdWU6IHsgbmFtZTogIkxlbyIsIGhlaWdo
dDogNjUsIHdlaWdodDogMTgwIH0gfSwKKyAgICB7IGtleTogIjIzNy0yMy03NzM5IiwgdmFsdWU6
IHsgbmFtZTogIkplZiIsIGhlaWdodDogNjUsIHdlaWdodDogMTIwIH0gfSwKKyAgICB7IGtleTog
IjIzNy0yMy03NzQwIiwgdmFsdWU6IHsgbmFtZTogIlNhbSIsIGhlaWdodDogNzEsIHdlaWdodDog
MTEwIH0gfSwKKyAgICB7IGtleTogIjIzNy0yMy03NzQxIiwgdmFsdWU6IHsgbmFtZTogIlBhdCIs
IGhlaWdodDogNjMsIHdlaWdodDogMTAwIH0gfSwKKyAgICB7IGtleTogIjIzNy0yMy03NzQyIiwg
dmFsdWU6IHsgbmFtZTogIkxlbyIsIGhlaWdodDogNjksIHdlaWdodDogMTgwIH0gfSwKKyAgICB7
IGtleTogIjIzNy0yMy03NzQzIiwgdmFsdWU6IHsgbmFtZTogIkplZiIsIGhlaWdodDogNzcsIHdl
aWdodDogMTIwIH0gfSwKKyAgICB7IGtleTogIjIzNy0yMy03NzQ0IiwgdmFsdWU6IHsgbmFtZTog
IlNhbSIsIGhlaWdodDogNjYsIHdlaWdodDogMTEwIH0gfSwKK107CisKK3ZhciBpbmRleERhdGEg
PSBbCisgICAgeyBuYW1lOiAibmFtZSIsIGtleVBhdGg6ICJuYW1lIiwgb3B0aW9uczogeyB1bmlx
dWU6IHRydWUgfSB9LAorICAgIHsgbmFtZTogImhlaWdodCIsIGtleVBhdGg6ICJoZWlnaHQiLCBv
cHRpb25zOiB7IH0gfSwKKyAgICB7IG5hbWU6ICJ3ZWlnaHQiLCBrZXlQYXRoOiAid2VpZ2h0Iiwg
b3B0aW9uczogeyB1bmlxdWU6IGZhbHNlIH0gfQorXTsKKworZnVuY3Rpb24gdGVzdCgpCit7Cisg
ICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICBuYW1lID0gd2luZG93LmxvY2F0aW9uLnBh
dGhuYW1lOworICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOworICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKKyAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7
CisgICAgZGVidWcoIm9wZW5TdWNjZXNzKCk6Iik7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9
IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIG9iamVjdFN0b3JlTmFtZSA9ICJQZW9wbGUi
OworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcx
JykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3Rv
cmU7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisK
K2Z1bmN0aW9uIGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmUoKQoreworICAgIGRlbGV0ZUFs
bE9iamVjdFN0b3JlcyhkYik7CisKKyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVj
dFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUob2JqZWN0U3RvcmVOYW1lKTsiKTsKKworICAg
IGRlYnVnKCJGaXJzdCwgYWRkIGFsbCBvdXIgZGF0YSB0byB0aGUgb2JqZWN0IHN0b3JlLiIpOwor
ICAgIGFkZGVkRGF0YSA9IDA7CisgICAgZm9yIChpIGluIG9iamVjdFN0b3JlRGF0YSkgeworICAg
ICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChvYmpl
Y3RTdG9yZURhdGFbaV0udmFsdWUsIG9iamVjdFN0b3JlRGF0YVtpXS5rZXkpOyIpOworICAgICAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICB9CisgICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSB0ZXN0QWxsOworfQorCisvLyBtYWtlIGEgdGVzdCB0aGF0IHVz
ZXMgY29udGludWUoKSB0byBnZXQgdG8gc3RhcnRQb3MsIHRoZW4gcGFzc2VzCisvLyAnY291bnQn
IHRvIGdldCB0byBhIHBvc2l0aW9uCitmdW5jdGlvbiBtYWtlQWR2YW5jZVRlc3Qoc3RhcnRQb3Ms
IGJvdW5kcywgZGlyZWN0aW9uLCBjb3VudCwgZXhwZWN0ZWRWYWx1ZSkKK3sKKyAgICByZXN1bHQg
PSB7fTsKKyAgICBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKG9iamVjdFN0b3Jl
TmFtZSkiKTsKKyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gdHJh
bnMub2JqZWN0U3RvcmUob2JqZWN0U3RvcmVOYW1lKSIpOworCisgICAgZXZhbEFuZExvZygicmVx
dWVzdCA9IG9iamVjdFN0b3JlLm9wZW5DdXJzb3IoIisgYm91bmRzICsgIiwgIiArIGRpcmVjdGlv
biArICIpIik7CisgICAgdmFyIGN1cnJlbnRQb3MgPSAwOworICAgIGZ1bmN0aW9uIGNvbnRpbnVl
VG9UZXN0KGV2ZW50KQorICAgIHsKKyAgICAgICAgY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3Vs
dDsKKyAgICAgICAgaWYgKGN1cnJlbnRQb3MgPT0gc3RhcnRQb3MpIHsKKyAgICAgICAgICAgIGV2
YWxBbmRMb2coImN1cnNvci5hZHZhbmNlKCIgKyBjb3VudCArICIpIik7CisgICAgICAgIH0gZWxz
ZSBpZiAoY3VycmVudFBvcyA9PSBzdGFydFBvcyArIDEpIHsKKyAgICAgICAgICAgIHJ1blRlc3Qo
Y3Vyc29yLCBleHBlY3RlZFZhbHVlKTsKKyAgICAgICAgICAgIHJlc3VsdC5vbnN1Y2Nlc3MoKTsK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChjdXJzb3IgPT0gbnVsbCkKKyAgICAg
ICAgICAgICAgICByZXN1bHQub25zdWNjZXNzKCk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKTsiKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgICAgICBjdXJyZW50UG9zKys7CisgICAgfQorCisgICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBjb250aW51ZVRvVGVzdDsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5j
dGlvbihlKQorICAgIHsKKyAgICAgICAgcmVzdWx0Lm9uZXJyb3IoZSk7CisgICAgfTsKKworICAg
IHJldHVybiByZXN1bHQ7Cit9CisKK2Z1bmN0aW9uIHNpbXBsaWZ5Q3Vyc29yKGN1cnNvcikKK3sK
KyAgICB2YXIgb2JqID0ge307CisgICAgaWYgKGN1cnNvciA9PT0gbnVsbCkgeworICAgICAgICBy
ZXR1cm4gbnVsbDsKKyAgICB9CisgICAgaWYgKCdrZXknIGluIGN1cnNvcikgeworICAgICAgICBv
Ymoua2V5ID0gY3Vyc29yLmtleTsKKyAgICB9CisKKyAgICBpZiAoJ3ZhbHVlJyBpbiBjdXJzb3Ip
IHsKKyAgICAgICAgb2JqLnZhbHVlID0gY3Vyc29yLnZhbHVlOworICAgIH0KKworICAgIGlmICgn
cHJpbWFyeUtleScgaW4gY3Vyc29yKSB7CisgICAgICAgIG9iai5wcmltYXJ5S2V5ID0gY3Vyc29y
LnByaW1hcnlLZXk7CisgICAgfQorICAgIHJldHVybiBvYmo7Cit9CisKK2Z1bmN0aW9uIHJ1blRl
c3QoY3Vyc29yLCBleHBlY3RlZFZhbHVlKQoreworICAgIHNob3VsZEJlKCInIiArIEpTT04uc3Ry
aW5naWZ5KHNpbXBsaWZ5Q3Vyc29yKGN1cnNvcikpICsgIiciLCAiJyIgKyBKU09OLnN0cmluZ2lm
eShleHBlY3RlZFZhbHVlKSArICInIik7Cit9CisKK2Z1bmN0aW9uIHRlc3RBbGwoKQoreworICAg
IGRlYnVnKCJ0ZXN0QWxsKCkiKTsKKyAgICB0ZXN0U2ltcGxlKCk7Cit9CisKK2Z1bmN0aW9uIHRl
c3RTaW1wbGUoKQoreworICAgIGRlYnVnKCJ0ZXN0U2ltcGxlKCkiKTsKKyAgICBtYWtlQWR2YW5j
ZVRlc3QoMCwgbnVsbCwgbnVsbCwgMSwKKyAgICAgICAgICAgICAgICAgICAge2tleTogb2JqZWN0
U3RvcmVEYXRhWzFdLmtleSwKKyAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBvYmplY3RTdG9y
ZURhdGFbMV0udmFsdWUsCisgICAgICAgICAgICAgICAgICAgICBwcmltYXJ5S2V5OiBvYmplY3RT
dG9yZURhdGFbMV0ua2V5fSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAub25zdWNjZXNzPSB0
ZXN0Q29udGludWVUaGVuQWR2YW5jZTsKK30KKworZnVuY3Rpb24gdGVzdENvbnRpbnVlVGhlbkFk
dmFuY2UoKQoreworICAgIGRlYnVnKCJ0ZXN0Q29udGludWVUaGVuQWR2YW5jZSgpIik7CisgICAg
bWFrZUFkdmFuY2VUZXN0KDMsIG51bGwsIG51bGwsIDEsCisgICAgICAgICAgICAgICAgICAgIHtr
ZXk6IG9iamVjdFN0b3JlRGF0YVs0XS5rZXksCisgICAgICAgICAgICAgICAgICAgICB2YWx1ZTog
b2JqZWN0U3RvcmVEYXRhWzRdLnZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgcHJpbWFyeUtl
eTogb2JqZWN0U3RvcmVEYXRhWzRdLmtleX0pCisgICAgICAgICAgICAgICAgICAgICAgICAgLm9u
c3VjY2Vzcz0gdGVzdEFkdmFuY2VNdWx0aXBsZTsKK30KKworZnVuY3Rpb24gdGVzdEFkdmFuY2VN
dWx0aXBsZSgpCit7CisgICAgZGVidWcoInRlc3RBZHZhbmNlTXVsdGlwbGUoKSIpOworICAgIG1h
a2VBZHZhbmNlVGVzdCgwLCBudWxsLCBudWxsLCAzLAorICAgICAgICAgICAgICAgICAgICB7a2V5
OiBvYmplY3RTdG9yZURhdGFbM10ua2V5LAorICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IG9i
amVjdFN0b3JlRGF0YVszXS52YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgIHByaW1hcnlLZXk6
IG9iamVjdFN0b3JlRGF0YVszXS5rZXl9KQorICAgICAgICAgICAgICAgICAgICAgICAgIC5vbnN1
Y2Nlc3MgPSB0ZXN0QWR2YW5jZVRvRW5kOworfQorCitmdW5jdGlvbiB0ZXN0QWR2YW5jZVRvRW5k
KCkKK3sKKyAgICBkZWJ1ZygidGVzdEFkdmFuY2VUb0VuZCgpIik7CisgICAgbWFrZUFkdmFuY2VU
ZXN0KDAsIG51bGwsIG51bGwsIDEwMCwgbnVsbCkKKyAgICAgICAgLm9uc3VjY2VzcyA9IHRlc3RQ
cmVmZXRjaEluUmFuZ2U7Cit9CisKKy8vIE1ha2Ugc3VyZSB0aGUgcHJlZmV0Y2hpbmcgdGhhdCBl
eGlzdHMgb24gc29tZSBwbGF0Zm9ybXMgKGNocm9taXVtKQorLy8gZG9lc24ndCBtZXNzIHdpdGgg
YWR2YW5jZSgpLCBvciB2aWNlIHZlcnNhLgorZnVuY3Rpb24gdGVzdFByZWZldGNoSW5SYW5nZSgp
Cit7CisgICAgZGVidWcoInRlc3RQcmVmZXRjaEluUmFuZ2UoKSIpOworICAgIHZhciBrUHJlZmV0
Y2hDb250aW51ZVRocmVzaG9sZCA9IDI7CisgICAgZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFu
c2FjdGlvbihvYmplY3RTdG9yZU5hbWUpIik7CisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9n
KCJvYmplY3RTdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSkiKTsKKwor
ICAgIGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCkiKTsKKwor
ICAgIHZhciBjdXJyZW50UG9zID0gMDsKKyAgICBmdW5jdGlvbiBwcmVmZXRjaCgpIHsKKyAgICAg
ICAgY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKKworICAgICAgICBpZiAoIWN1cnNvcikg
eworICAgICAgICAgICAgdGVzdFByZWZldGNoT3V0T2ZSYW5nZSgpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisKKyAgICAgICAgcnVuVGVzdChjdXJzb3IsIHtrZXk6IG9iamVjdFN0
b3JlRGF0YVtjdXJyZW50UG9zXS5rZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6
IG9iamVjdFN0b3JlRGF0YVtjdXJyZW50UG9zXS52YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICBwcmltYXJ5S2V5OiBvYmplY3RTdG9yZURhdGFbY3VycmVudFBvc10ua2V5fSk7CisKKyAg
ICAgICAgLy8gZm9yY2Ugc29tZSBwcmVmZXRjaGluZywKKyAgICAgICAgaWYgKGN1cnJlbnRQb3Mg
PCAoa1ByZWZldGNoQ29udGludWVUaHJlc2hvbGQrMSkpIHsKKyAgICAgICAgICAgIGV2YWxBbmRM
b2coImN1cnNvci5jb250aW51ZSgpIik7CisgICAgICAgICAgICBjdXJyZW50UG9zKys7CisgICAg
ICAgIH0gZWxzZSBpZiAoY3VycmVudFBvcyA9PSAoa1ByZWZldGNoQ29udGludWVUaHJlc2hvbGQr
MSkpIHsKKyAgICAgICAgICAgIC8vIHN0YXkgd2l0aGluIHRoZSBwcmVmZXRjaCByYW5nZQorICAg
ICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmFkdmFuY2UoMikiKTsKKyAgICAgICAgICAgIGN1
cnJlbnRQb3MgKz0gMjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIHdlJ3JlIGp1
c3QgcGFzdCB0aGUgdGhyZXNob2xkCisgICAgICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29u
dGludWUoKSIpOworICAgICAgICAgICAgY3VycmVudFBvcysrOworICAgICAgICB9CisgICAgfQor
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcHJlZmV0Y2g7CisgICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKKy8vIE1ha2Ugc3VyZSB0aGUgcHJlZmV0Y2hp
bmcgdGhhdCBleGlzdHMgb24gc29tZSBwbGF0Zm9ybXMgKGNocm9taXVtKQorLy8gZG9lc24ndCBt
ZXNzIHdpdGggYWR2YW5jZSgpLCBvciB2aWNlIHZlcnNhLgorZnVuY3Rpb24gdGVzdFByZWZldGNo
T3V0T2ZSYW5nZSgpCit7CisgICAgZGVidWcoInRlc3RQcmVmZXRjaE91dE9mUmFuZ2UoKSIpOwor
ICAgIHZhciBrUHJlZmV0Y2hDb250aW51ZVRocmVzaG9sZCA9IDI7CisgICAgZXZhbEFuZExvZygi
dHJhbnMgPSBkYi50cmFuc2FjdGlvbihvYmplY3RTdG9yZU5hbWUpIik7CisgICAgb2JqZWN0U3Rv
cmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKG9iamVjdFN0
b3JlTmFtZSkiKTsKKworICAgIGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5vcGVu
Q3Vyc29yKCkiKTsKKworICAgIHZhciBjdXJyZW50UG9zID0gMDsKKyAgICBmdW5jdGlvbiBwcmVm
ZXRjaCgpCisgICAgeworICAgICAgICBjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OworCisg
ICAgICAgIGlmICghY3Vyc29yKSB7CisgICAgICAgICAgICB0ZXN0QmFkQWR2YW5jZSgpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgcnVuVGVzdChjdXJzb3IsIHtr
ZXk6IG9iamVjdFN0b3JlRGF0YVtjdXJyZW50UG9zXS5rZXksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgdmFsdWU6IG9iamVjdFN0b3JlRGF0YVtjdXJyZW50UG9zXS52YWx1ZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICBwcmltYXJ5S2V5OiBvYmplY3RTdG9yZURhdGFbY3VycmVudFBvc10u
a2V5fSk7CisKKyAgICAgICAgLy8gZm9yY2Ugc29tZSBwcmVmZXRjaGluZywKKyAgICAgICAgaWYg
KGN1cnJlbnRQb3MgPCAoa1ByZWZldGNoQ29udGludWVUaHJlc2hvbGQrMSkpIHsKKyAgICAgICAg
ICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgpIik7CisgICAgICAgICAgICBjdXJyZW50
UG9zKys7CisgICAgICAgIH0gZWxzZSBpZiAoY3VycmVudFBvcyA9PSAoa1ByZWZldGNoQ29udGlu
dWVUaHJlc2hvbGQrMSkpIHsKKyAgICAgICAgICAgIC8vIGFkdmFuY2UgcGFzdCB0aGUgcHJlZmV0
Y2ggcmFuZ2UKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5hZHZhbmNlKDcpIik7Cisg
ICAgICAgICAgICBjdXJyZW50UG9zICs9IDc7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAvLyB3ZSdyZSBwYXN0IHRoZSB0aHJlc2hvbGQKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImN1
cnNvci5jb250aW51ZSgpIik7CisgICAgICAgICAgICBjdXJyZW50UG9zKys7CisgICAgICAgIH0K
KyAgICB9CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwcmVmZXRjaDsKKyAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gdGVzdEJhZEFk
dmFuY2UoKQoreworICAgIGRlYnVnKCJ0ZXN0QmFkQWR2YW5jZSgpIik7CisgICAgZXZhbEFuZExv
ZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihvYmplY3RTdG9yZU5hbWUsIElEQlRyYW5zYWN0aW9u
LlJFQURfV1JJVEUpIik7CisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9y
ZSA9IHRyYW5zLm9iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSkiKTsKKworICAgIGV2YWxBbmRM
b2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCkiKTsKKworICAgIGZ1bmN0aW9u
IGFkdmFuY2VCYWRseSgpCisgICAgeworICAgICAgICBjdXJzb3IgPSBldmVudC50YXJnZXQucmVz
dWx0OworCisgICAgICAgIC8vIEZJWE1FOiB0aGlzIHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvci4g
KFNlZSBJREJDdXJzb3IuY3BwKQorICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJjdXJz
b3IuYWR2YW5jZSgwKSIsICJET01FeGNlcHRpb24uVFlQRV9NSVNNQVRDSF9FUlIiKTsKKyAgICAg
ICAgdGVzdERlbGV0ZSgpOworICAgIH0KKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkdmFuY2VC
YWRseTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKwor
fQorCitmdW5jdGlvbiB0ZXN0RGVsZXRlKCkKK3sKKyAgICBkZWJ1ZygidGVzdERlbGV0ZSgpIik7
CisgICAgZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihvYmplY3RTdG9yZU5hbWUs
IElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5k
TG9nKCJvYmplY3RTdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSkiKTsK
KworICAgIGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCkiKTsK
KworICAgIHZhciBjdXJyZW50UG9zID0gMDsKKyAgICBmdW5jdGlvbiBkZWxldGVTZWNvbmQoKQor
ICAgIHsKKyAgICAgICAgY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKKworICAgICAgICBp
ZiAoIWN1cnNvcikgeworICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBydW5UZXN0KGN1cnNvciwge2tleTogb2JqZWN0
U3RvcmVEYXRhW2N1cnJlbnRQb3NdLmtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1
ZTogb2JqZWN0U3RvcmVEYXRhW2N1cnJlbnRQb3NdLnZhbHVlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgIHByaW1hcnlLZXk6IG9iamVjdFN0b3JlRGF0YVtjdXJyZW50UG9zXS5rZXl9KTsKKwor
CisgICAgICAgIC8vIHRoaXMgaXMgaW4gdGhlIG1pZGRsZSBvZiB0aGUgZGF0YSwgc28gaXQgd2ls
bCB0ZXN0IHZhbGlkaXR5CisgICAgICAgIGlmIChjdXJyZW50UG9zID09IDIpIHsKKyAgICAgICAg
ICAgIGV2YWxBbmRMb2coImN1cnNvci5kZWxldGUoKSIpOworICAgICAgICAgICAgY3Vyc29yLmFk
dmFuY2UoNCk7CisgICAgICAgICAgICBjdXJyZW50UG9zICs9IDQ7CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IuYWR2YW5jZSgxKSIpOworICAgICAgICAg
ICAgY3VycmVudFBvcysrOworICAgICAgICB9CisKKyAgICB9CisgICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBkZWxldGVTZWNvbmQ7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Cit9CisKK3Rlc3QoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3Jlc291cmNlcy9zaGFyZWQuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9yZXNvdXJjZXMvc2hhcmVkLmpzCmluZGV4IGU0YjhkM2YwYzRjYThhMDljMjFkZWM3NDEw
YjdiZTdiNWRkMWFkZWYuLjQ5MWMxN2JjY2MzODMxOTVlZjQwODM5ZGU1ZTYyYjI4YTRiYWRiZDQg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9zaGFy
ZWQuanMKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3NoYXJl
ZC5qcwpAQCAtMTEyLDMgKzExMiw1MCBAQCBmdW5jdGlvbiBkZWxldGVBbGxPYmplY3RTdG9yZXMo
ZGIpCiAgICAgICAgIGRiLmRlbGV0ZU9iamVjdFN0b3JlKGRiLm9iamVjdFN0b3JlTmFtZXMuaXRl
bSgwKSk7CiAgICAgZGVidWcoIkRlbGV0ZWQgYWxsIG9iamVjdCBzdG9yZXMuIik7CiB9CisKKy8v
IHRha2UgYW4gdW5zcGVjaWZpZWQgbnVtYmVyIG9mIGNhbGxiYWNrLWxpa2Ugb2JqZWN0cywgd2Fp
dCBmb3IgZWFjaAorLy8gb25lLCBhbmQgZmlyZSBhbiBvbnN1Y2Nlc3MgZXZlbnQgd2hlbiBhbGwg
b2YgdGhlbSBjb21wbGV0ZS4gSWYgYW55CisvLyBvZiB0aGUgY2FsbGJhY2sgb2JqZWN0cyB0aHJv
dyBhbiBlcnJvciBvciBhYm9ydCwgZmlyZSB0aGUKKy8vIGFwcHJvcHJpYXRlIG9uZXJyb3Ivb25h
Ym9ydCBpbW1lZGlhdGVseS4KK2Z1bmN0aW9uIHdhaXRGb3IoKQoreworCisgICAgdmFyIHByb2dy
ZXNzID0gW107ICAgICAgICAgIC8vIHdoZW4gYWxsIG9mIHRoZXNlIGFyZSB0cnVlLCB3ZSdyZSBk
b25lCisgICAgdmFyIGV2ZW50UmVzdWx0ID0geworICAgICAgICBvbmVycm9yOiB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjaywKKyAgICAgICAgb25hYm9ydDogdW5leHBlY3RlZEFib3J0Q2FsbGJhY2ss
CisgICAgfTsKKworICAgIGZ1bmN0aW9uIG9uZXJyb3IoZSkKKyAgICB7CisgICAgICAgIGV2ZW50
UmVzdWx0Lm9uZXJyb3IoZSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gb25hYm9ydChlKQorICAg
IHsKKyAgICAgICAgZXZlbnRSZXN1bHQub25hYm9ydChlKTsKKyAgICB9CisKKyAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeworICAgICAgICB2YXIgZXZlbnQg
PSBhcmd1bWVudHNbaV07CisgICAgICAgIHByb2dyZXNzLnB1c2goZmFsc2UpOworICAgICAgICBl
dmVudC5vbnN1Y2Nlc3MgPSB3YWl0Rm9yX29uc3VjY2VzcyhpLCBwcm9ncmVzcywgZXZlbnRSZXN1
bHQpOworICAgICAgICBldmVudC5vbmFib3J0ID0gb25hYm9ydDsKKyAgICAgICAgZXZlbnQub25l
cnJvciA9IG9uZXJyb3I7CisgICAgfQorICAgIHJldHVybiBldmVudFJlc3VsdDsKK30KKworZnVu
Y3Rpb24gd2FpdEZvcl9vbnN1Y2Nlc3MoaW5kZXgsIHN1Y2Nlc3NlcywgZXZlbnRSZXN1bHQpCit7
CisgICAgZnVuY3Rpb24gb25zdWNjZXNzKCkKKyAgICB7CisgICAgICAgIHN1Y2Nlc3Nlc1tpbmRl
eF0gPSB0cnVlOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN1Y2Nlc3Nlcy5sZW5ndGg7
IGkrKykgeworICAgICAgICAgICAgaWYgKCFzdWNjZXNzZXNbaV0pCisgICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisgICAgICAgIGV2ZW50UmVzdWx0Lm9uc3VjY2VzcygpOworICAg
IH0KKyAgICByZXR1cm4gb25zdWNjZXNzOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>138666</attachid>
            <date>2012-04-24 15:25:29 -0700</date>
            <delta_ts>2012-04-25 10:02:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-84174-20120424152528.patch</filename>
            <type>text/plain</type>
            <size>40938</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE1MDYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGVmNjQzZDdhMWRhMDJm
MDE4NjliYzFiNDY2YzkzMzdlN2MzYWQ3OC4uYjQ1Mjc5OGViNzJlNDRkMDJhYjc5ODU4NmJhMjc3
MzhjZGQxMDUyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTA0LTIzICBBbGVj
IEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IGlt
cGxlbWVudCBjdXJzb3IuYWR2YW5jZSgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD04NDE3NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEltcGxlbWVudCBJREJDdXJzb3IuYWR2YW5jZSgpIHRvIHNwZWMuCisK
KyAgICAgICAgVGVzdDogc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLWFkdmFuY2UuaHRtbAorCisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmg6CisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1
cnNvcjo6YWR2YW5jZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9JREJDdXJzb3IuaDoKKyAgICAgICAgKElEQkN1cnNvcik6CisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9JREJDdXJzb3JCYWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3JC
YWNrZW5kSW1wbDo6YWR2YW5jZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQkN1cnNvckJhY2tlbmRJbXBsOjphZHZhbmNlSW50ZXJuYWwpOgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbXBsLmg6CisgICAgICAgIChJREJDdXJz
b3JCYWNrZW5kSW1wbCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFj
a2VuZEludGVyZmFjZS5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJC
YWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisKIDIwMTItMDQtMjQgIFl1cnkg
U2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3Rv
cjogYSBidW5jaCBvZiBoZWFwIHByb2ZpbGVyIGNsZWFudXBzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCmluZGV4IDlhYWYxZWZhNmYzMGY5MGE0Y2M0YmU3ZTc1ZmFkYTQ3MTkyMGEzYzkuLjhhY2I5
OTJiMmY0NjBlYTgwMzM3ZmRhNWY3OGFlMDhjM2EyYmFjNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTItMDQtMjMgIEFsZWMgRmxldHQgIDxhbGVjZmxl
dHRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEluZGV4ZWREQjogaW1wbGVtZW50IGN1cnNvci5h
ZHZhbmNlKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTg0MTc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
SG9vayB1cCBjaHJvbWl1bSBJUEMgdG8gSURCQ3Vyc29yLmFkdmFuY2UoKS4KKworICAgICAgICAq
IHNyYy9JREJDdXJzb3JCYWNrZW5kUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpJREJDdXJz
b3JCYWNrZW5kUHJveHk6OmFkdmFuY2UpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBz
cmMvSURCQ3Vyc29yQmFja2VuZFByb3h5Lmg6CisgICAgICAgIChJREJDdXJzb3JCYWNrZW5kUHJv
eHkpOgorICAgICAgICAqIHNyYy9XZWJJREJDdXJzb3JJbXBsLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViSURCQ3Vyc29ySW1wbDo6YWR2YW5jZSk6CisKIDIwMTItMDQtMjQgIFNoZXJpZmYgQm90
ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQuICBS
b2xsZWQgREVQUy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
QmFja2luZ1N0b3JlLmgKaW5kZXggNTUxYjgyNjg5NWI2YzMyZDk3YjA3N2YyYTI3YTUyYzI3ZmZk
MmZhMy4uZjZiYjEwYWFhYzVjODU5Mzg2OWI4NWRhYzE2N2E5Yjg0ZTA2NzU3ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmgKQEAg
LTk0LDcgKzk0LDggQEAgcHVibGljOgogICAgICAgICB9OwogCiAgICAgICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxDdXJzb3I+IGNsb25lKCkgPSAwOwotICAgICAgICB2aXJ0dWFsIGJvb2wgY29udGlu
dWVGdW5jdGlvbihjb25zdCBJREJLZXkqID0gMCwgSXRlcmF0b3JTdGF0ZSBuZXh0U3RhdGUgPSBT
ZWVrKSA9IDA7CisgICAgICAgIHZpcnR1YWwgYm9vbCBhZHZhbmNlKHVuc2lnbmVkIGxvbmcpID0g
MDsKKyAgICAgICAgdmlydHVhbCBib29sIGNvbnRpbnVlRnVuY3Rpb24oY29uc3QgSURCS2V5KiA9
IDAsIEl0ZXJhdG9yU3RhdGUgPSBTZWVrKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxJREJLZXk+IGtleSgpID0gMDsKICAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQktleT4g
cHJpbWFyeUtleSgpID0gMDsKICAgICAgICAgdmlydHVhbCBTdHJpbmcgdmFsdWUoKSA9IDA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcAppbmRleCA3
Mzg3ZTFiMWUyOGNjYmJkYmI4OTkwZDBmODRiOWM0NzExYjk4NmU5Li45YWU5YjJmOThjMzY3ZDQ2
ZTZlMDdlOGY5MzZlMzdkOWYzYTJmNjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkN1cnNvci5jcHAKQEAgLTExNiw2ICsxMTYsMzMgQEAgUGFzc1JlZlB0cjxJ
REJSZXF1ZXN0PiBJREJDdXJzb3I6OnVwZGF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LCBQYXNzUmUKICAgICByZXR1cm4gcmVxdWVzdC5yZWxlYXNlKCk7CiB9CiAKK3ZvaWQgSURC
Q3Vyc29yOjphZHZhbmNlKHVuc2lnbmVkIGxvbmcgY291bnQsIEV4Y2VwdGlvbkNvZGUmIGVjKQor
eworICAgIElEQl9UUkFDRSgiSURCQ3Vyc29yOjphZHZhbmNlIik7CisgICAgaWYgKCFtX2dvdFZh
bHVlKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBpZiAoIW1fcmVxdWVzdCkgeworICAgICAgICBlYyA9IElEQkRhdGFiYXNl
RXhjZXB0aW9uOjpUUkFOU0FDVElPTl9JTkFDVElWRV9FUlI7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBpZiAoIWNvdW50KSB7CisgICAgICAgIC8vIEZJWE1FOiBzcGVjIHNheXMgd2Ug
c2hvdWxkIHRocm93IGEgSmF2YVNjcmlwdCBUeXBlRXJyb3IKKyAgICAgICAgZWMgPSBUWVBFX01J
U01BVENIX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChtX3JlcXVlc3Qt
PnJlc2V0UmVhZHlTdGF0ZShtX3RyYW5zYWN0aW9uLmdldCgpKSkgeworICAgICAgICBtX3JlcXVl
c3QtPnNldEN1cnNvcih0aGlzKTsKKyAgICAgICAgbV9nb3RWYWx1ZSA9IGZhbHNlOworICAgICAg
ICBtX2JhY2tlbmQtPmFkdmFuY2UoY291bnQsIG1fcmVxdWVzdCwgZWMpOworICAgIH0gZWxzZQor
ICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpOT1RfQUxMT1dFRF9FUlI7Cit9CisK
IHZvaWQgSURCQ3Vyc29yOjpjb250aW51ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURCS2V5PiBrZXks
IEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIElEQl9UUkFDRSgiSURCQ3Vyc29yOjpjb250aW51
ZSIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vy
c29yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuaAppbmRl
eCAyMzdmMjcyYzA1ZTJiMmI0M2RiNzZjNDI0MWI0OGU3N2ExM2UyNTg0Li41Yjk1OTNiOWY4ZGZj
ZTc0NWM5OWZmZWVjZmM3NmJlNjgyNWRiNGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJDdXJzb3IuaApAQCAtNjcsNiArNjcsNyBAQCBwdWJsaWM6CiAgICAgSURC
QW55KiBzb3VyY2UoKSBjb25zdDsKIAogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gdXBkYXRl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIGFkdmFuY2UodW5zaWduZWQgbG9uZywgRXhj
ZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgY29udGludWVGdW5jdGlvbihQYXNzUmVmUHRyPElEQktl
eT4sIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGRlbGV0ZUZ1
bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFeGNlcHRpb25Db2RlJik7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5pZGwgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuaWRsCmluZGV4IDQxNTQw
ZTJmMmJiMDcxMzM1YjgyOWYxNzE4N2U2ZDY1MjBhOWJkZjMuLmQwZjQxMWQzYjhhMmFkY2ZlNTNk
NGMyZGZjYzZkMjMxMTFlYWViYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkN1cnNvci5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCQ3Vyc29yLmlkbApAQCAtNDAsOSArNDAsMTMgQEAgbW9kdWxlIHN0b3JhZ2Ugewog
CiAgICAgICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBJREJSZXF1ZXN0IHVw
ZGF0ZShpbiBTZXJpYWxpemVkU2NyaXB0VmFsdWUgdmFsdWUpCiAgICAgICAgICAgICByYWlzZXMg
KElEQkRhdGFiYXNlRXhjZXB0aW9uKTsKKyAgICAgICAgdm9pZCBhZHZhbmNlKGluIHVuc2lnbmVk
IGxvbmcgY291bnQpCisgICAgICAgICAgICByYWlzZXMgKElEQkRhdGFiYXNlRXhjZXB0aW9uKTsK
ICAgICAgICAgW0ltcGxlbWVudGVkQXM9Y29udGludWVGdW5jdGlvbl0gdm9pZCBjb250aW51ZShp
biBbT3B0aW9uYWxdIElEQktleSBrZXkpCiAgICAgICAgICAgICByYWlzZXMgKElEQkRhdGFiYXNl
RXhjZXB0aW9uKTsKICAgICAgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIElt
cGxlbWVudGVkQXM9ZGVsZXRlRnVuY3Rpb25dIElEQlJlcXVlc3QgZGVsZXRlKCkKICAgICAgICAg
ICAgIHJhaXNlcyAoSURCRGF0YWJhc2VFeGNlcHRpb24pOworCisKICAgICB9OwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZElt
cGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2Vu
ZEltcGwuY3BwCmluZGV4IGNkYmU3MDdmY2UxMjk1NGJkZDViOWQ5ZGZhYmVhYTQxODg0NDRlYmQu
LmQ1MTlhZmNmYjliOTg0N2YxMjIzZGE1NzJlM2FhN2FiMTJjM2M4ZmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbXBsLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5kSW1w
bC5jcHAKQEAgLTEyNCw2ICsxMjQsMjkgQEAgdm9pZCBJREJDdXJzb3JCYWNrZW5kSW1wbDo6Y29u
dGludWVGdW5jdGlvbihQYXNzUmVmUHRyPElEQktleT4gcHJwS2V5LCBQYXNzUmVmUHQKICAgICAg
ICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSOwog
fQogCit2b2lkIElEQkN1cnNvckJhY2tlbmRJbXBsOjphZHZhbmNlKHVuc2lnbmVkIGxvbmcgY291
bnQsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIEV4Y2VwdGlvbkNvZGUm
IGVjKQoreworICAgIElEQl9UUkFDRSgiSURCQ3Vyc29yQmFja2VuZEltcGw6OmFkdmFuY2UiKTsK
KworICAgIGlmICghbV90cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKGNyZWF0ZUNhbGxiYWNrVGFz
aygmSURCQ3Vyc29yQmFja2VuZEltcGw6OmFkdmFuY2VJbnRlcm5hbCwgdGhpcywgY291bnQsIHBy
cENhbGxiYWNrcykpKQorICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpUUkFOU0FD
VElPTl9JTkFDVElWRV9FUlI7Cit9CisKKy8vIElNUE9SVEFOVDogSWYgdGhpcyBldmVyIDEpIGZp
cmVzIGFuICdlcnJvcicgZXZlbnQgYW5kIDIpIGl0J3MgcG9zc2libGUgdG8gZmlyZSBhbm90aGVy
IGV2ZW50IGFmdGVyd2FyZHMsCisvLyAgICAgICAgICAgIElEQlJlcXVlc3Q6Omhhc1BlbmRpbmdB
Y3Rpdml0eSgpIHdpbGwgbmVlZCB0byBiZSBtb2RpZmllZCB0byBoYW5kbGUgdGhpcyEhIQordm9p
ZCBJREJDdXJzb3JCYWNrZW5kSW1wbDo6YWR2YW5jZUludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbXBsPiBwcnBDdXJzb3IsIHVuc2ln
bmVkIGxvbmcgY291bnQsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit7Cisg
ICAgSURCX1RSQUNFKCJJREJDdXJzb3JCYWNrZW5kSW1wbDo6YWR2YW5jZUludGVybmFsIik7Cisg
ICAgUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbXBsPiBjdXJzb3IgPSBwcnBDdXJzb3I7CisgICAg
aWYgKCFjdXJzb3ItPm1fY3Vyc29yIHx8ICFjdXJzb3ItPm1fY3Vyc29yLT5hZHZhbmNlKGNvdW50
KSkgeworICAgICAgICBjdXJzb3ItPm1fY3Vyc29yID0gMDsKKyAgICAgICAgY2FsbGJhY2tzLT5v
blN1Y2Nlc3MoU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpudWxsVmFsdWUoKSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBjYWxsYmFja3MtPm9uU3VjY2Vzc1dpdGhDb250aW51YXRpb24o
KTsKK30KKwogLy8gSU1QT1JUQU5UOiBJZiB0aGlzIGV2ZXIgMSkgZmlyZXMgYW4gJ2Vycm9yJyBl
dmVudCBhbmQgMikgaXQncyBwb3NzaWJsZSB0byBmaXJlIGFub3RoZXIgZXZlbnQgYWZ0ZXJ3YXJk
cywKIC8vICAgICAgICAgICAgSURCUmVxdWVzdDo6aGFzUGVuZGluZ0FjdGl2aXR5KCkgd2lsbCBu
ZWVkIHRvIGJlIG1vZGlmaWVkIHRvIGhhbmRsZSB0aGlzISEhCiB2b2lkIElEQkN1cnNvckJhY2tl
bmRJbXBsOjpjb250aW51ZUZ1bmN0aW9uSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEltcGw+IHBycEN1cnNvciwgUGFzc1JlZlB0cjxJ
REJLZXk+IHBycEtleSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJ
bXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5k
SW1wbC5oCmluZGV4IDRlZTVhYzQwYWU2MjkzMmFmMzQ2ZmU3NTcxMmMyOTczOTY3NWQ5NTEuLmI3
YjhlOTI0YTQwODJhZDhhZDFhOGI0ZGVhZGQ1MjFjMWZkM2UzYTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbXBsLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZEltcGwuaApA
QCAtNTksNiArNTksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQktleT4g
cHJpbWFyeUtleSgpIGNvbnN0OwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+IHZhbHVlKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZShQYXNzUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgRXhj
ZXB0aW9uQ29kZSYpOworICAgIHZpcnR1YWwgdm9pZCBhZHZhbmNlKHVuc2lnbmVkIGxvbmcsIFBh
c3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgdm9p
ZCBjb250aW51ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxJREJDYWxs
YmFja3M+LCBFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUZ1bmN0aW9u
KFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwg
dm9pZCBwcmVmZXRjaENvbnRpbnVlKGludCBudW1iZXJUb0ZldGNoLCBQYXNzUmVmUHRyPElEQkNh
bGxiYWNrcz4sIEV4Y2VwdGlvbkNvZGUmKTsKQEAgLTY5LDYgKzcwLDcgQEAgcHVibGljOgogcHJp
dmF0ZToKICAgICBJREJDdXJzb3JCYWNrZW5kSW1wbChQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9y
ZTo6Q3Vyc29yPiwgSURCQ3Vyc29yOjpEaXJlY3Rpb24sIEN1cnNvclR5cGUsIElEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZSosIElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZSopOwog
CisgICAgc3RhdGljIHZvaWQgYWR2YW5jZUludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbXBsPiwgdW5zaWduZWQgbG9uZywgUGFzc1Jl
ZlB0cjxJREJDYWxsYmFja3M+KTsKICAgICBzdGF0aWMgdm9pZCBjb250aW51ZUZ1bmN0aW9uSW50
ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2Vu
ZEltcGw+LCBQYXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPik7CiAg
ICAgc3RhdGljIHZvaWQgcHJlZmV0Y2hDb250aW51ZUludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbXBsPiwgaW50IG51bWJlclRvRmV0
Y2gsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2UuaApp
bmRleCBiNTdiYjU4NjhlZTE2Yjg5N2RiNzdkODFkMDVjY2JmNmRiMDc2YzAzLi45NzEyMzI4MjZm
ZDdhNWQwM2I5NTU5OWM3MGQ5NWQ4MmFmMTVkZDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZS5o
CkBAIC01OSw2ICs1OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiB2YWx1ZSgpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCB1
cGRhdGUoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBQYXNzUmVmUHRyPElEQkNh
bGxiYWNrcz4sIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFkdmFuY2Uo
dW5zaWduZWQgbG9uZyBjb3VudCwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBFeGNlcHRpb25D
b2RlJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjb250aW51ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8
SURCS2V5PiBrZXksIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgRXhjZXB0aW9uQ29kZSYpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlRnVuY3Rpb24oUGFzc1JlZlB0cjxJREJDYWxsYmFj
a3M+LCBFeGNlcHRpb25Db2RlJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwcmVmZXRjaENvbnRp
bnVlKGludCBudW1iZXJUb0ZldGNoLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIEV4Y2VwdGlv
bkNvZGUmKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuY3BwCmluZGV4IDZhN2VkMjg0YmFlZGRkZWFm
Y2ZhYjc4MWExNGRmMTA5Zjk4MjllZmEuLmY5NTY3MDk1MjA5ODUwYjE4Y2M4NjAyOTU1N2ZhNzBl
ZjY3YTYzM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkxldmVsREJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuY3BwCkBAIC05ODAsNyArOTgwLDggQEAgc3Ry
dWN0IEN1cnNvck9wdGlvbnMgewogY2xhc3MgQ3Vyc29ySW1wbENvbW1vbiA6IHB1YmxpYyBJREJC
YWNraW5nU3RvcmU6OkN1cnNvciB7CiBwdWJsaWM6CiAgICAgLy8gSURCQmFja2luZ1N0b3JlOjpD
dXJzb3IKLSAgICB2aXJ0dWFsIGJvb2wgY29udGludWVGdW5jdGlvbihjb25zdCBJREJLZXkqLCBJ
dGVyYXRvclN0YXRlKTsKKyAgICB2aXJ0dWFsIGJvb2wgYWR2YW5jZSh1bnNpZ25lZCBsb25nKTsK
KyAgICB2aXJ0dWFsIGJvb2wgY29udGludWVGdW5jdGlvbihjb25zdCBJREJLZXkqID0gMCwgSXRl
cmF0b3JTdGF0ZSA9IFNlZWspOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJLZXk+IGtleSgp
IHsgcmV0dXJuIG1fY3VycmVudEtleTsgfQogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJLZXk+
IHByaW1hcnlLZXkoKSB7IHJldHVybiBtX2N1cnJlbnRLZXk7IH0KICAgICB2aXJ0dWFsIFN0cmlu
ZyB2YWx1ZSgpID0gMDsKQEAgLTEwMzUsNiArMTAzNiwxNSBAQCBib29sIEN1cnNvckltcGxDb21t
b246OmZpcnN0U2VlaygpCiAgICAgcmV0dXJuIGNvbnRpbnVlRnVuY3Rpb24oMCwgUmVhZHkpOwog
fQogCitib29sIEN1cnNvckltcGxDb21tb246OmFkdmFuY2UodW5zaWduZWQgbG9uZyBjb3VudCkK
K3sKKyAgICB3aGlsZSAoY291bnQtLSkgeworICAgICAgICBpZiAoIWNvbnRpbnVlRnVuY3Rpb24o
KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9
CisKIGJvb2wgQ3Vyc29ySW1wbENvbW1vbjo6Y29udGludWVGdW5jdGlvbihjb25zdCBJREJLZXkq
IGtleSwgSXRlcmF0b3JTdGF0ZSBuZXh0U3RhdGUpCiB7CiAgICAgUmVmUHRyPElEQktleT4gcHJl
dmlvdXNLZXkgPSBtX2N1cnJlbnRLZXk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9JREJDdXJzb3JCYWNrZW5kUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvSURCQ3Vyc29yQmFja2VuZFByb3h5LmNwcAppbmRleCA0MjhjMzdmNWViNjg5YWU2N2I1
M2U4MzQ4ZDY1NGRkNjI0NWRkMmNlLi4yYTYyYjkyNmY1ZjY2NGVlNmQ3NDlkZDA1MDI3NzY3ZWUy
NTRlZjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDdXJzb3JC
YWNrZW5kUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkN1cnNv
ckJhY2tlbmRQcm94eS5jcHAKQEAgLTc5LDYgKzc5LDExIEBAIHZvaWQgSURCQ3Vyc29yQmFja2Vu
ZFByb3h5Ojp1cGRhdGUoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlLCBQ
YXNzCiAgICAgbV9pZGJDdXJzb3ItPnVwZGF0ZSh2YWx1ZSwgbmV3IFdlYklEQkNhbGxiYWNrc0lt
cGwoY2FsbGJhY2tzKSwgZWMpOwogfQogCit2b2lkIElEQkN1cnNvckJhY2tlbmRQcm94eTo6YWR2
YW5jZSh1bnNpZ25lZCBsb25nIGNvdW50LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJh
Y2tzLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBtX2lkYkN1cnNvci0+YWR2YW5jZShjb3Vu
dCwgbmV3IFdlYklEQkNhbGxiYWNrc0ltcGwoY2FsbGJhY2tzKSwgZWMpOworfQorCiB2b2lkIElE
QkN1cnNvckJhY2tlbmRQcm94eTo6Y29udGludWVGdW5jdGlvbihQYXNzUmVmUHRyPElEQktleT4g
a2V5LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBFeGNlcHRpb25Db2RlJiBl
YykKIHsKICAgICBtX2lkYkN1cnNvci0+Y29udGludWVGdW5jdGlvbihrZXksIG5ldyBXZWJJREJD
YWxsYmFja3NJbXBsKGNhbGxiYWNrcyksIGVjKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0lEQkN1cnNvckJhY2tlbmRQcm94eS5oIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvSURCQ3Vyc29yQmFja2VuZFByb3h5LmgKaW5kZXggY2ZlNmRhZjVkZGVkNzhkN2Vh
NWRmNGQ5M2UwZmIzYmExZGQ5YWQwNi4uMjRhM2U0MmM0N2E3YjYxZWI2OTIxMDEwZjdjZjE4Zjgw
MThmNDczNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ3Vyc29y
QmFja2VuZFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ3Vyc29y
QmFja2VuZFByb3h5LmgKQEAgLTQ3LDYgKzQ3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxXZWJDb3JlOjpJREJLZXk+IHByaW1hcnlLZXkoKSBjb25zdDsKICAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSgpIGNvbnN0
OwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGUoUGFzc1JlZlB0cjxXZWJDb3JlOjpTZXJpYWxpemVk
U2NyaXB0VmFsdWU+LCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4sIFdlYkNvcmU6
OkV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgYWR2YW5jZSh1bnNpZ25lZCBsb25n
LCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4sIFdlYkNvcmU6OkV4Y2VwdGlvbkNv
ZGUmKTsKICAgICB2aXJ0dWFsIHZvaWQgY29udGludWVGdW5jdGlvbihQYXNzUmVmUHRyPFdlYkNv
cmU6OklEQktleT4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPiwgV2ViQ29yZTo6
RXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVGdW5jdGlvbihQYXNzUmVm
UHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4sIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUmKTsKICAg
ICB2aXJ0dWFsIHZvaWQgcHJlZmV0Y2hDb250aW51ZShpbnQgbnVtYmVyVG9GZXRjaCwgUGFzc1Jl
ZlB0cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+LCBXZWJDb3JlOjpFeGNlcHRpb25Db2RlJikgeyBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsgfSAvLyBPbmx5IHVzZWQgaW4gdGhlIGJhY2tlbmQuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJDdXJzb3JJbXBsLmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkN1cnNvckltcGwuY3BwCmluZGV4IGY3
M2FiMmMzNWJlZGY5MjhlOWNjNWUwNmVhZTFhODg0ZjY4YTAxYjAuLjZmMTBlZmU5ZTA5NmY5M2Zm
ZDU3ZDc2ZWZlOTMzNDA2OWI4NzkyYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYklEQkN1cnNvckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYklEQkN1cnNvckltcGwuY3BwCkBAIC03NCw3ICs3NCw3IEBAIHZvaWQgV2ViSURCQ3Vy
c29ySW1wbDo6dXBkYXRlKGNvbnN0IFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYgdmFsdWUsIFdl
YklEQkNhbGxiCiAKIHZvaWQgV2ViSURCQ3Vyc29ySW1wbDo6YWR2YW5jZSh1bnNpZ25lZCBsb25n
IGNvdW50LCBXZWJJREJDYWxsYmFja3MqIGNhbGxiYWNrcywgV2ViRXhjZXB0aW9uQ29kZSYgZWMp
CiB7Ci0gICAgLy8gRklYTUU6IG5vdCBpbXBsZW1lbnRlZCBpbiBpbmRleGVkZGIgeWV0CisgICAg
bV9pZGJDdXJzb3JCYWNrZW5kLT5hZHZhbmNlKGNvdW50LCBJREJDYWxsYmFja3NQcm94eTo6Y3Jl
YXRlKGFkb3B0UHRyKGNhbGxiYWNrcykpLCBlYyk7CiB9CiAKIHZvaWQgV2ViSURCQ3Vyc29ySW1w
bDo6Y29udGludWVGdW5jdGlvbihjb25zdCBXZWJJREJLZXkmIGtleSwgV2ViSURCQ2FsbGJhY2tz
KiBjYWxsYmFja3MsIFdlYkV4Y2VwdGlvbkNvZGUmIGVjKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGYzZmNlZWUyMzc5ZmE1
OGFjZGI2NDJjZmVlNDE1YTYyNmE2MTg5MDAuLmMyYWEzYTk1MjY1OGJmMjU1NWEzYjY2OTU3Yjdj
ZDhjYmY1ODU4M2EgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNSBAQAorMjAxMi0wNC0yMyAgQWxlYyBGbGV0
dCAgPGFsZWNmbGV0dEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBpbXBsZW1l
bnQgY3Vyc29yLmFkdmFuY2UoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODQxNzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUZXN0cyBmb3IgY3Vyc29yLmFkdmFuY2UoKS4KKworICAgICAgICAqIHN0b3Jh
Z2UvaW5kZXhlZGRiL2N1cnNvci1hZHZhbmNlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLWFkdmFuY2UuaHRtbDogQWRkZWQuCisgICAgICAg
ICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci1hZHZhbmNlLmpzOiBBZGRlZC4K
KyAgICAgICAgKHRlc3QpOgorICAgICAgICAob3BlblN1Y2Nlc3MpOgorICAgICAgICAoY3JlYXRl
QW5kUG9wdWxhdGVPYmplY3RTdG9yZSk6CisgICAgICAgIChtYWtlQWR2YW5jZVRlc3QuY29udGlu
dWVUb1Rlc3QpOgorICAgICAgICAobWFrZUFkdmFuY2VUZXN0LnJlcXVlc3Qub25lcnJvcik6Cisg
ICAgICAgIChtYWtlQWR2YW5jZVRlc3QpOgorICAgICAgICAobWtDdXJzb3IpOgorICAgICAgICAo
cnVuVGVzdCk6CisgICAgICAgICh0ZXN0QWxsKToKKyAgICAgICAgKHRlc3RTaW1wbGUpOgorICAg
ICAgICAodGVzdENvbnRpbnVlVGhlbkFkdmFuY2UpOgorICAgICAgICAodGVzdEFkdmFuY2VNdWx0
aXBsZSk6CisgICAgICAgICh0ZXN0QWR2YW5jZVRvRW5kKToKKyAgICAgICAgKiBzdG9yYWdlL2lu
ZGV4ZWRkYi9yZXNvdXJjZXMvc2hhcmVkLmpzOgorICAgICAgICAod2FpdEZvci5vbmVycm9yKToK
KyAgICAgICAgKHdhaXRGb3Iub25hYm9ydCk6CisgICAgICAgICh3YWl0Rm9yKToKKyAgICAgICAg
KHdhaXRGb3Jfb25zdWNjZXNzLm9uc3VjY2Vzcyk6CisgICAgICAgICh3YWl0Rm9yX29uc3VjY2Vz
cyk6CisKIDIwMTItMDQtMjQgIE1pa2hhaWwgTmFnYW5vdiAgPG1uYWdhbm92QGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBbQ2hyb21pdW1dIFVucmV2aWV3ZWQgdGVzdCBleHBlY3RhdGlvbnMgdXBk
YXRlLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLWFk
dmFuY2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29y
LWFkdmFuY2UtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQzZWNiNWVhOGEwYmJlOGJkMzVkMzFm
N2FlOWYyNzI4YjBhMzIzNjkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9jdXJzb3ItYWR2YW5jZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNjQgQEAK
K1Rlc3QgSW5kZXhlZERCIGN1cnNvci5hZHZhbmNlKCkuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KKworCitpbmRleGVkREIgPSBzZWxmLmluZGV4ZWREQiB8fCBzZWxmLndlYmtpdEluZGV4
ZWREQiB8fCBzZWxmLm1vekluZGV4ZWREQiB8fCBzZWxmLm1zSW5kZXhlZERCIHx8IHNlbGYuT0lu
ZGV4ZWREQjsKKworaW5kZXhlZERCLm9wZW4obmFtZSkKK29wZW5TdWNjZXNzKCk6CitkYiA9IGV2
ZW50LnRhcmdldC5yZXN1bHQKK3JlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykKK0RlbGV0ZWQg
YWxsIG9iamVjdCBzdG9yZXMuCitvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKG9i
amVjdFN0b3JlTmFtZSk7CitGaXJzdCwgYWRkIGFsbCBvdXIgZGF0YSB0byB0aGUgb2JqZWN0IHN0
b3JlLgorcmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChvYmplY3RTdG9yZURhdGFbaV0udmFsdWUs
IG9iamVjdFN0b3JlRGF0YVtpXS5rZXkpOworcmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChvYmpl
Y3RTdG9yZURhdGFbaV0udmFsdWUsIG9iamVjdFN0b3JlRGF0YVtpXS5rZXkpOworcmVxdWVzdCA9
IG9iamVjdFN0b3JlLmFkZChvYmplY3RTdG9yZURhdGFbaV0udmFsdWUsIG9iamVjdFN0b3JlRGF0
YVtpXS5rZXkpOworcmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChvYmplY3RTdG9yZURhdGFbaV0u
dmFsdWUsIG9iamVjdFN0b3JlRGF0YVtpXS5rZXkpOworcmVxdWVzdCA9IG9iamVjdFN0b3JlLmFk
ZChvYmplY3RTdG9yZURhdGFbaV0udmFsdWUsIG9iamVjdFN0b3JlRGF0YVtpXS5rZXkpOworcmVx
dWVzdCA9IG9iamVjdFN0b3JlLmFkZChvYmplY3RTdG9yZURhdGFbaV0udmFsdWUsIG9iamVjdFN0
b3JlRGF0YVtpXS5rZXkpOworcmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChvYmplY3RTdG9yZURh
dGFbaV0udmFsdWUsIG9iamVjdFN0b3JlRGF0YVtpXS5rZXkpOworcmVxdWVzdCA9IG9iamVjdFN0
b3JlLmFkZChvYmplY3RTdG9yZURhdGFbaV0udmFsdWUsIG9iamVjdFN0b3JlRGF0YVtpXS5rZXkp
OworcmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChvYmplY3RTdG9yZURhdGFbaV0udmFsdWUsIG9i
amVjdFN0b3JlRGF0YVtpXS5rZXkpOworcmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChvYmplY3RT
dG9yZURhdGFbaV0udmFsdWUsIG9iamVjdFN0b3JlRGF0YVtpXS5rZXkpOworcmVxdWVzdCA9IG9i
amVjdFN0b3JlLmFkZChvYmplY3RTdG9yZURhdGFbaV0udmFsdWUsIG9iamVjdFN0b3JlRGF0YVtp
XS5rZXkpOworcmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChvYmplY3RTdG9yZURhdGFbaV0udmFs
dWUsIG9iamVjdFN0b3JlRGF0YVtpXS5rZXkpOworcmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChv
YmplY3RTdG9yZURhdGFbaV0udmFsdWUsIG9iamVjdFN0b3JlRGF0YVtpXS5rZXkpOworTm93IGNy
ZWF0ZSB0aGUgaW5kZXhlcy4KK29iamVjdFN0b3JlLmNyZWF0ZUluZGV4KGluZGV4RGF0YVtpXS5u
YW1lLCBpbmRleERhdGFbaV0ua2V5UGF0aCwgaW5kZXhEYXRhW2ldLm9wdGlvbnMpOworb2JqZWN0
U3RvcmUuY3JlYXRlSW5kZXgoaW5kZXhEYXRhW2ldLm5hbWUsIGluZGV4RGF0YVtpXS5rZXlQYXRo
LCBpbmRleERhdGFbaV0ub3B0aW9ucyk7CitvYmplY3RTdG9yZS5jcmVhdGVJbmRleChpbmRleERh
dGFbaV0ubmFtZSwgaW5kZXhEYXRhW2ldLmtleVBhdGgsIGluZGV4RGF0YVtpXS5vcHRpb25zKTsK
K3Rlc3RBbGwoKQordGVzdFNpbXBsZSgpCit0cmFucyA9IGRiLnRyYW5zYWN0aW9uKG9iamVjdFN0
b3JlTmFtZSkKK3N0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUob2JqZWN0U3RvcmVOYW1lKQorcmVx
dWVzdCA9IHN0b3JlLm9wZW5DdXJzb3IobnVsbCwgbnVsbCkKK2N1cnNvci5hZHZhbmNlKDEpCitQ
QVNTICd7ImtleSI6IjIzNy0yMy03NzMzIiwidmFsdWUiOnsibmFtZSI6IkFubiIsImhlaWdodCI6
NTIsIndlaWdodCI6MTEwfSwicHJpbWFyeUtleSI6IjIzNy0yMy03NzMzIn0nIGlzICd7ImtleSI6
IjIzNy0yMy03NzMzIiwidmFsdWUiOnsibmFtZSI6IkFubiIsImhlaWdodCI6NTIsIndlaWdodCI6
MTEwfSwicHJpbWFyeUtleSI6IjIzNy0yMy03NzMzIn0nCit0ZXN0Q29udGludWVUaGVuQWR2YW5j
ZSgpCit0cmFucyA9IGRiLnRyYW5zYWN0aW9uKG9iamVjdFN0b3JlTmFtZSkKK3N0b3JlID0gdHJh
bnMub2JqZWN0U3RvcmUob2JqZWN0U3RvcmVOYW1lKQorcmVxdWVzdCA9IHN0b3JlLm9wZW5DdXJz
b3IobnVsbCwgbnVsbCkKK2N1cnNvci5jb250aW51ZSgpOworY3Vyc29yLmNvbnRpbnVlKCk7Citj
dXJzb3IuY29udGludWUoKTsKK2N1cnNvci5hZHZhbmNlKDEpCitQQVNTICd7ImtleSI6IjIzNy0y
My03NzM2IiwidmFsdWUiOnsibmFtZSI6IkpvZSIsImhlaWdodCI6NjUsIndlaWdodCI6MTUwfSwi
cHJpbWFyeUtleSI6IjIzNy0yMy03NzM2In0nIGlzICd7ImtleSI6IjIzNy0yMy03NzM2IiwidmFs
dWUiOnsibmFtZSI6IkpvZSIsImhlaWdodCI6NjUsIndlaWdodCI6MTUwfSwicHJpbWFyeUtleSI6
IjIzNy0yMy03NzM2In0nCit0ZXN0QWR2YW5jZU11bHRpcGxlKCkKK3RyYW5zID0gZGIudHJhbnNh
Y3Rpb24ob2JqZWN0U3RvcmVOYW1lKQorc3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZShvYmplY3RT
dG9yZU5hbWUpCityZXF1ZXN0ID0gc3RvcmUub3BlbkN1cnNvcihudWxsLCBudWxsKQorY3Vyc29y
LmFkdmFuY2UoMykKK1BBU1MgJ3sia2V5IjoiMjM3LTIzLTc3MzUiLCJ2YWx1ZSI6eyJuYW1lIjoi
U3VlIiwiaGVpZ2h0Ijo1OCwid2VpZ2h0IjoxMzB9LCJwcmltYXJ5S2V5IjoiMjM3LTIzLTc3MzUi
fScgaXMgJ3sia2V5IjoiMjM3LTIzLTc3MzUiLCJ2YWx1ZSI6eyJuYW1lIjoiU3VlIiwiaGVpZ2h0
Ijo1OCwid2VpZ2h0IjoxMzB9LCJwcmltYXJ5S2V5IjoiMjM3LTIzLTc3MzUifScKK3Rlc3RBZHZh
bmNlSW5kZXgoKQordHJhbnMgPSBkYi50cmFuc2FjdGlvbihvYmplY3RTdG9yZU5hbWUpCitzdG9y
ZSA9IHRyYW5zLm9iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSkKK3JlcXVlc3QgPSBzdG9yZS5v
cGVuQ3Vyc29yKG51bGwsIG51bGwpCitjdXJzb3IuYWR2YW5jZSgzKQorUEFTUyAneyJrZXkiOiJK
ZWYiLCJ2YWx1ZSI6eyJuYW1lIjoiSmVmIiwiaGVpZ2h0Ijo2NSwid2VpZ2h0IjoxMjB9LCJwcmlt
YXJ5S2V5IjoiMjM3LTIzLTc3MzkifScgaXMgJ3sia2V5IjoiSmVmIiwidmFsdWUiOnsibmFtZSI6
IkplZiIsImhlaWdodCI6NjUsIndlaWdodCI6MTIwfSwicHJpbWFyeUtleSI6IjIzNy0yMy03NzM5
In0nCit0ZXN0QWR2YW5jZUluZGV4Tm9EdXBlKCkKK3RyYW5zID0gZGIudHJhbnNhY3Rpb24ob2Jq
ZWN0U3RvcmVOYW1lKQorc3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZShvYmplY3RTdG9yZU5hbWUp
CityZXF1ZXN0ID0gc3RvcmUub3BlbkN1cnNvcihudWxsLCAxKQorY3Vyc29yLmFkdmFuY2UoMykK
K1BBU1MgJ3sia2V5IjoxMzAsInZhbHVlIjp7Im5hbWUiOiJTdWUiLCJoZWlnaHQiOjU4LCJ3ZWln
aHQiOjEzMH0sInByaW1hcnlLZXkiOiIyMzctMjMtNzczNSJ9JyBpcyAneyJrZXkiOjEzMCwidmFs
dWUiOnsibmFtZSI6IlN1ZSIsImhlaWdodCI6NTgsIndlaWdodCI6MTMwfSwicHJpbWFyeUtleSI6
IjIzNy0yMy03NzM1In0nCit0ZXN0QWR2YW5jZUluZGV4UHJldigpCit0cmFucyA9IGRiLnRyYW5z
YWN0aW9uKG9iamVjdFN0b3JlTmFtZSkKK3N0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUob2JqZWN0
U3RvcmVOYW1lKQorcmVxdWVzdCA9IHN0b3JlLm9wZW5DdXJzb3IobnVsbCwgMikKK2N1cnNvci5h
ZHZhbmNlKDMpCitQQVNTICd7ImtleSI6MTUwLCJ2YWx1ZSI6eyJuYW1lIjoiSm9lIiwiaGVpZ2h0
Ijo2NSwid2VpZ2h0IjoxNTB9LCJwcmltYXJ5S2V5IjoiMjM3LTIzLTc3MzYifScgaXMgJ3sia2V5
IjoxNTAsInZhbHVlIjp7Im5hbWUiOiJKb2UiLCJoZWlnaHQiOjY1LCJ3ZWlnaHQiOjE1MH0sInBy
aW1hcnlLZXkiOiIyMzctMjMtNzczNiJ9JwordGVzdEFkdmFuY2VJbmRleFByZXZOb0R1cGUoKQor
dHJhbnMgPSBkYi50cmFuc2FjdGlvbihvYmplY3RTdG9yZU5hbWUpCitzdG9yZSA9IHRyYW5zLm9i
amVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSkKK3JlcXVlc3QgPSBzdG9yZS5vcGVuQ3Vyc29yKG51
bGwsIDMpCitjdXJzb3IuYWR2YW5jZSgzKQorUEFTUyAneyJrZXkiOjEyMCwidmFsdWUiOnsibmFt
ZSI6IkJvYiIsImhlaWdodCI6NjAsIndlaWdodCI6MTIwfSwicHJpbWFyeUtleSI6IjIzNy0yMy03
NzMyIn0nIGlzICd7ImtleSI6MTIwLCJ2YWx1ZSI6eyJuYW1lIjoiQm9iIiwiaGVpZ2h0Ijo2MCwi
d2VpZ2h0IjoxMjB9LCJwcmltYXJ5S2V5IjoiMjM3LTIzLTc3MzIifScKK3Rlc3RBZHZhbmNlVG9F
bmQoKQordHJhbnMgPSBkYi50cmFuc2FjdGlvbihvYmplY3RTdG9yZU5hbWUpCitzdG9yZSA9IHRy
YW5zLm9iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSkKK3JlcXVlc3QgPSBzdG9yZS5vcGVuQ3Vy
c29yKG51bGwsIG51bGwpCitjdXJzb3IuYWR2YW5jZSgxMDApCitQQVNTICdudWxsJyBpcyAnbnVs
bCcKK3Rlc3RQcmVmZXRjaEluUmFuZ2UoKQordHJhbnMgPSBkYi50cmFuc2FjdGlvbihvYmplY3RT
dG9yZU5hbWUpCitvYmplY3RTdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFt
ZSkKK3JlcXVlc3QgPSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCkKK1BBU1MgJ3sia2V5IjoiMjM3
LTIzLTc3MzIiLCJ2YWx1ZSI6eyJuYW1lIjoiQm9iIiwiaGVpZ2h0Ijo2MCwid2VpZ2h0IjoxMjB9
LCJwcmltYXJ5S2V5IjoiMjM3LTIzLTc3MzIifScgaXMgJ3sia2V5IjoiMjM3LTIzLTc3MzIiLCJ2
YWx1ZSI6eyJuYW1lIjoiQm9iIiwiaGVpZ2h0Ijo2MCwid2VpZ2h0IjoxMjB9LCJwcmltYXJ5S2V5
IjoiMjM3LTIzLTc3MzIifScKK2N1cnNvci5jb250aW51ZSgpCitQQVNTICd7ImtleSI6IjIzNy0y
My03NzMzIiwidmFsdWUiOnsibmFtZSI6IkFubiIsImhlaWdodCI6NTIsIndlaWdodCI6MTEwfSwi
cHJpbWFyeUtleSI6IjIzNy0yMy03NzMzIn0nIGlzICd7ImtleSI6IjIzNy0yMy03NzMzIiwidmFs
dWUiOnsibmFtZSI6IkFubiIsImhlaWdodCI6NTIsIndlaWdodCI6MTEwfSwicHJpbWFyeUtleSI6
IjIzNy0yMy03NzMzIn0nCitjdXJzb3IuY29udGludWUoKQorUEFTUyAneyJrZXkiOiIyMzctMjMt
NzczNCIsInZhbHVlIjp7Im5hbWUiOiJSb24iLCJoZWlnaHQiOjczLCJ3ZWlnaHQiOjE4MH0sInBy
aW1hcnlLZXkiOiIyMzctMjMtNzczNCJ9JyBpcyAneyJrZXkiOiIyMzctMjMtNzczNCIsInZhbHVl
Ijp7Im5hbWUiOiJSb24iLCJoZWlnaHQiOjczLCJ3ZWlnaHQiOjE4MH0sInByaW1hcnlLZXkiOiIy
MzctMjMtNzczNCJ9JworY3Vyc29yLmNvbnRpbnVlKCkKK1BBU1MgJ3sia2V5IjoiMjM3LTIzLTc3
MzUiLCJ2YWx1ZSI6eyJuYW1lIjoiU3VlIiwiaGVpZ2h0Ijo1OCwid2VpZ2h0IjoxMzB9LCJwcmlt
YXJ5S2V5IjoiMjM3LTIzLTc3MzUifScgaXMgJ3sia2V5IjoiMjM3LTIzLTc3MzUiLCJ2YWx1ZSI6
eyJuYW1lIjoiU3VlIiwiaGVpZ2h0Ijo1OCwid2VpZ2h0IjoxMzB9LCJwcmltYXJ5S2V5IjoiMjM3
LTIzLTc3MzUifScKK2N1cnNvci5hZHZhbmNlKDIpCitQQVNTICd7ImtleSI6IjIzNy0yMy03NzM3
IiwidmFsdWUiOnsibmFtZSI6IlBhdCIsImhlaWdodCI6NjUsIndlaWdodCI6MTAwfSwicHJpbWFy
eUtleSI6IjIzNy0yMy03NzM3In0nIGlzICd7ImtleSI6IjIzNy0yMy03NzM3IiwidmFsdWUiOnsi
bmFtZSI6IlBhdCIsImhlaWdodCI6NjUsIndlaWdodCI6MTAwfSwicHJpbWFyeUtleSI6IjIzNy0y
My03NzM3In0nCitjdXJzb3IuY29udGludWUoKQorUEFTUyAneyJrZXkiOiIyMzctMjMtNzczOCIs
InZhbHVlIjp7Im5hbWUiOiJMZW8iLCJoZWlnaHQiOjY1LCJ3ZWlnaHQiOjE4MH0sInByaW1hcnlL
ZXkiOiIyMzctMjMtNzczOCJ9JyBpcyAneyJrZXkiOiIyMzctMjMtNzczOCIsInZhbHVlIjp7Im5h
bWUiOiJMZW8iLCJoZWlnaHQiOjY1LCJ3ZWlnaHQiOjE4MH0sInByaW1hcnlLZXkiOiIyMzctMjMt
NzczOCJ9JworY3Vyc29yLmNvbnRpbnVlKCkKK1BBU1MgJ3sia2V5IjoiMjM3LTIzLTc3MzkiLCJ2
YWx1ZSI6eyJuYW1lIjoiSmVmIiwiaGVpZ2h0Ijo2NSwid2VpZ2h0IjoxMjB9LCJwcmltYXJ5S2V5
IjoiMjM3LTIzLTc3MzkifScgaXMgJ3sia2V5IjoiMjM3LTIzLTc3MzkiLCJ2YWx1ZSI6eyJuYW1l
IjoiSmVmIiwiaGVpZ2h0Ijo2NSwid2VpZ2h0IjoxMjB9LCJwcmltYXJ5S2V5IjoiMjM3LTIzLTc3
MzkifScKK2N1cnNvci5jb250aW51ZSgpCitQQVNTICd7ImtleSI6IjIzNy0yMy03NzQwIiwidmFs
dWUiOnsibmFtZSI6IlNhbSIsImhlaWdodCI6NzEsIndlaWdodCI6MTEwfSwicHJpbWFyeUtleSI6
IjIzNy0yMy03NzQwIn0nIGlzICd7ImtleSI6IjIzNy0yMy03NzQwIiwidmFsdWUiOnsibmFtZSI6
IlNhbSIsImhlaWdodCI6NzEsIndlaWdodCI6MTEwfSwicHJpbWFyeUtleSI6IjIzNy0yMy03NzQw
In0nCitjdXJzb3IuY29udGludWUoKQorUEFTUyAneyJrZXkiOiIyMzctMjMtNzc0MSIsInZhbHVl
Ijp7Im5hbWUiOiJCdWciLCJoZWlnaHQiOjYzLCJ3ZWlnaHQiOjEwMH0sInByaW1hcnlLZXkiOiIy
MzctMjMtNzc0MSJ9JyBpcyAneyJrZXkiOiIyMzctMjMtNzc0MSIsInZhbHVlIjp7Im5hbWUiOiJC
dWciLCJoZWlnaHQiOjYzLCJ3ZWlnaHQiOjEwMH0sInByaW1hcnlLZXkiOiIyMzctMjMtNzc0MSJ9
JworY3Vyc29yLmNvbnRpbnVlKCkKK1BBU1MgJ3sia2V5IjoiMjM3LTIzLTc3NDIiLCJ2YWx1ZSI6
eyJuYW1lIjoiVHViIiwiaGVpZ2h0Ijo2OSwid2VpZ2h0IjoxODB9LCJwcmltYXJ5S2V5IjoiMjM3
LTIzLTc3NDIifScgaXMgJ3sia2V5IjoiMjM3LTIzLTc3NDIiLCJ2YWx1ZSI6eyJuYW1lIjoiVHVi
IiwiaGVpZ2h0Ijo2OSwid2VpZ2h0IjoxODB9LCJwcmltYXJ5S2V5IjoiMjM3LTIzLTc3NDIifScK
K2N1cnNvci5jb250aW51ZSgpCitQQVNTICd7ImtleSI6IjIzNy0yMy03NzQzIiwidmFsdWUiOnsi
bmFtZSI6IlJ1ZyIsImhlaWdodCI6NzcsIndlaWdodCI6MTIwfSwicHJpbWFyeUtleSI6IjIzNy0y
My03NzQzIn0nIGlzICd7ImtleSI6IjIzNy0yMy03NzQzIiwidmFsdWUiOnsibmFtZSI6IlJ1ZyIs
ImhlaWdodCI6NzcsIndlaWdodCI6MTIwfSwicHJpbWFyeUtleSI6IjIzNy0yMy03NzQzIn0nCitj
dXJzb3IuY29udGludWUoKQorUEFTUyAneyJrZXkiOiIyMzctMjMtNzc0NCIsInZhbHVlIjp7Im5h
bWUiOiJQdWciLCJoZWlnaHQiOjY2LCJ3ZWlnaHQiOjExMH0sInByaW1hcnlLZXkiOiIyMzctMjMt
Nzc0NCJ9JyBpcyAneyJrZXkiOiIyMzctMjMtNzc0NCIsInZhbHVlIjp7Im5hbWUiOiJQdWciLCJo
ZWlnaHQiOjY2LCJ3ZWlnaHQiOjExMH0sInByaW1hcnlLZXkiOiIyMzctMjMtNzc0NCJ9JworY3Vy
c29yLmNvbnRpbnVlKCkKK3Rlc3RQcmVmZXRjaE91dE9mUmFuZ2UoKQordHJhbnMgPSBkYi50cmFu
c2FjdGlvbihvYmplY3RTdG9yZU5hbWUpCitvYmplY3RTdG9yZSA9IHRyYW5zLm9iamVjdFN0b3Jl
KG9iamVjdFN0b3JlTmFtZSkKK3JlcXVlc3QgPSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCkKK1BB
U1MgJ3sia2V5IjoiMjM3LTIzLTc3MzIiLCJ2YWx1ZSI6eyJuYW1lIjoiQm9iIiwiaGVpZ2h0Ijo2
MCwid2VpZ2h0IjoxMjB9LCJwcmltYXJ5S2V5IjoiMjM3LTIzLTc3MzIifScgaXMgJ3sia2V5Ijoi
MjM3LTIzLTc3MzIiLCJ2YWx1ZSI6eyJuYW1lIjoiQm9iIiwiaGVpZ2h0Ijo2MCwid2VpZ2h0Ijox
MjB9LCJwcmltYXJ5S2V5IjoiMjM3LTIzLTc3MzIifScKK2N1cnNvci5jb250aW51ZSgpCitQQVNT
ICd7ImtleSI6IjIzNy0yMy03NzMzIiwidmFsdWUiOnsibmFtZSI6IkFubiIsImhlaWdodCI6NTIs
IndlaWdodCI6MTEwfSwicHJpbWFyeUtleSI6IjIzNy0yMy03NzMzIn0nIGlzICd7ImtleSI6IjIz
Ny0yMy03NzMzIiwidmFsdWUiOnsibmFtZSI6IkFubiIsImhlaWdodCI6NTIsIndlaWdodCI6MTEw
fSwicHJpbWFyeUtleSI6IjIzNy0yMy03NzMzIn0nCitjdXJzb3IuY29udGludWUoKQorUEFTUyAn
eyJrZXkiOiIyMzctMjMtNzczNCIsInZhbHVlIjp7Im5hbWUiOiJSb24iLCJoZWlnaHQiOjczLCJ3
ZWlnaHQiOjE4MH0sInByaW1hcnlLZXkiOiIyMzctMjMtNzczNCJ9JyBpcyAneyJrZXkiOiIyMzct
MjMtNzczNCIsInZhbHVlIjp7Im5hbWUiOiJSb24iLCJoZWlnaHQiOjczLCJ3ZWlnaHQiOjE4MH0s
InByaW1hcnlLZXkiOiIyMzctMjMtNzczNCJ9JworY3Vyc29yLmNvbnRpbnVlKCkKK1BBU1MgJ3si
a2V5IjoiMjM3LTIzLTc3MzUiLCJ2YWx1ZSI6eyJuYW1lIjoiU3VlIiwiaGVpZ2h0Ijo1OCwid2Vp
Z2h0IjoxMzB9LCJwcmltYXJ5S2V5IjoiMjM3LTIzLTc3MzUifScgaXMgJ3sia2V5IjoiMjM3LTIz
LTc3MzUiLCJ2YWx1ZSI6eyJuYW1lIjoiU3VlIiwiaGVpZ2h0Ijo1OCwid2VpZ2h0IjoxMzB9LCJw
cmltYXJ5S2V5IjoiMjM3LTIzLTc3MzUifScKK2N1cnNvci5hZHZhbmNlKDcpCitQQVNTICd7Imtl
eSI6IjIzNy0yMy03NzQyIiwidmFsdWUiOnsibmFtZSI6IlR1YiIsImhlaWdodCI6NjksIndlaWdo
dCI6MTgwfSwicHJpbWFyeUtleSI6IjIzNy0yMy03NzQyIn0nIGlzICd7ImtleSI6IjIzNy0yMy03
NzQyIiwidmFsdWUiOnsibmFtZSI6IlR1YiIsImhlaWdodCI6NjksIndlaWdodCI6MTgwfSwicHJp
bWFyeUtleSI6IjIzNy0yMy03NzQyIn0nCitjdXJzb3IuY29udGludWUoKQorUEFTUyAneyJrZXki
OiIyMzctMjMtNzc0MyIsInZhbHVlIjp7Im5hbWUiOiJSdWciLCJoZWlnaHQiOjc3LCJ3ZWlnaHQi
OjEyMH0sInByaW1hcnlLZXkiOiIyMzctMjMtNzc0MyJ9JyBpcyAneyJrZXkiOiIyMzctMjMtNzc0
MyIsInZhbHVlIjp7Im5hbWUiOiJSdWciLCJoZWlnaHQiOjc3LCJ3ZWlnaHQiOjEyMH0sInByaW1h
cnlLZXkiOiIyMzctMjMtNzc0MyJ9JworY3Vyc29yLmNvbnRpbnVlKCkKK1BBU1MgJ3sia2V5Ijoi
MjM3LTIzLTc3NDQiLCJ2YWx1ZSI6eyJuYW1lIjoiUHVnIiwiaGVpZ2h0Ijo2Niwid2VpZ2h0Ijox
MTB9LCJwcmltYXJ5S2V5IjoiMjM3LTIzLTc3NDQifScgaXMgJ3sia2V5IjoiMjM3LTIzLTc3NDQi
LCJ2YWx1ZSI6eyJuYW1lIjoiUHVnIiwiaGVpZ2h0Ijo2Niwid2VpZ2h0IjoxMTB9LCJwcmltYXJ5
S2V5IjoiMjM3LTIzLTc3NDQifScKK2N1cnNvci5jb250aW51ZSgpCit0ZXN0QmFkQWR2YW5jZSgp
Cit0cmFucyA9IGRiLnRyYW5zYWN0aW9uKG9iamVjdFN0b3JlTmFtZSwgSURCVHJhbnNhY3Rpb24u
UkVBRF9XUklURSkKK29iamVjdFN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUob2JqZWN0U3RvcmVO
YW1lKQorcmVxdWVzdCA9IG9iamVjdFN0b3JlLm9wZW5DdXJzb3IoKQorRXhwZWN0aW5nIGV4Y2Vw
dGlvbiBmcm9tIGN1cnNvci5hZHZhbmNlKDApCitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgor
UEFTUyBjb2RlIGlzIERPTUV4Y2VwdGlvbi5UWVBFX01JU01BVENIX0VSUgordGVzdERlbGV0ZSgp
Cit0cmFucyA9IGRiLnRyYW5zYWN0aW9uKG9iamVjdFN0b3JlTmFtZSwgSURCVHJhbnNhY3Rpb24u
UkVBRF9XUklURSkKK29iamVjdFN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUob2JqZWN0U3RvcmVO
YW1lKQorcmVxdWVzdCA9IG9iamVjdFN0b3JlLm9wZW5DdXJzb3IoKQorUEFTUyAneyJrZXkiOiIy
MzctMjMtNzczMiIsInZhbHVlIjp7Im5hbWUiOiJCb2IiLCJoZWlnaHQiOjYwLCJ3ZWlnaHQiOjEy
MH0sInByaW1hcnlLZXkiOiIyMzctMjMtNzczMiJ9JyBpcyAneyJrZXkiOiIyMzctMjMtNzczMiIs
InZhbHVlIjp7Im5hbWUiOiJCb2IiLCJoZWlnaHQiOjYwLCJ3ZWlnaHQiOjEyMH0sInByaW1hcnlL
ZXkiOiIyMzctMjMtNzczMiJ9JworY3Vyc29yLmFkdmFuY2UoMSkKK1BBU1MgJ3sia2V5IjoiMjM3
LTIzLTc3MzMiLCJ2YWx1ZSI6eyJuYW1lIjoiQW5uIiwiaGVpZ2h0Ijo1Miwid2VpZ2h0IjoxMTB9
LCJwcmltYXJ5S2V5IjoiMjM3LTIzLTc3MzMifScgaXMgJ3sia2V5IjoiMjM3LTIzLTc3MzMiLCJ2
YWx1ZSI6eyJuYW1lIjoiQW5uIiwiaGVpZ2h0Ijo1Miwid2VpZ2h0IjoxMTB9LCJwcmltYXJ5S2V5
IjoiMjM3LTIzLTc3MzMifScKK2N1cnNvci5hZHZhbmNlKDEpCitQQVNTICd7ImtleSI6IjIzNy0y
My03NzM0IiwidmFsdWUiOnsibmFtZSI6IlJvbiIsImhlaWdodCI6NzMsIndlaWdodCI6MTgwfSwi
cHJpbWFyeUtleSI6IjIzNy0yMy03NzM0In0nIGlzICd7ImtleSI6IjIzNy0yMy03NzM0IiwidmFs
dWUiOnsibmFtZSI6IlJvbiIsImhlaWdodCI6NzMsIndlaWdodCI6MTgwfSwicHJpbWFyeUtleSI6
IjIzNy0yMy03NzM0In0nCitjdXJzb3IuZGVsZXRlKCkKK1BBU1MgJ3sia2V5IjoiMjM3LTIzLTc3
MzgiLCJ2YWx1ZSI6eyJuYW1lIjoiTGVvIiwiaGVpZ2h0Ijo2NSwid2VpZ2h0IjoxODB9LCJwcmlt
YXJ5S2V5IjoiMjM3LTIzLTc3MzgifScgaXMgJ3sia2V5IjoiMjM3LTIzLTc3MzgiLCJ2YWx1ZSI6
eyJuYW1lIjoiTGVvIiwiaGVpZ2h0Ijo2NSwid2VpZ2h0IjoxODB9LCJwcmltYXJ5S2V5IjoiMjM3
LTIzLTc3MzgifScKK2N1cnNvci5hZHZhbmNlKDEpCitQQVNTICd7ImtleSI6IjIzNy0yMy03NzM5
IiwidmFsdWUiOnsibmFtZSI6IkplZiIsImhlaWdodCI6NjUsIndlaWdodCI6MTIwfSwicHJpbWFy
eUtleSI6IjIzNy0yMy03NzM5In0nIGlzICd7ImtleSI6IjIzNy0yMy03NzM5IiwidmFsdWUiOnsi
bmFtZSI6IkplZiIsImhlaWdodCI6NjUsIndlaWdodCI6MTIwfSwicHJpbWFyeUtleSI6IjIzNy0y
My03NzM5In0nCitjdXJzb3IuYWR2YW5jZSgxKQorUEFTUyAneyJrZXkiOiIyMzctMjMtNzc0MCIs
InZhbHVlIjp7Im5hbWUiOiJTYW0iLCJoZWlnaHQiOjcxLCJ3ZWlnaHQiOjExMH0sInByaW1hcnlL
ZXkiOiIyMzctMjMtNzc0MCJ9JyBpcyAneyJrZXkiOiIyMzctMjMtNzc0MCIsInZhbHVlIjp7Im5h
bWUiOiJTYW0iLCJoZWlnaHQiOjcxLCJ3ZWlnaHQiOjExMH0sInByaW1hcnlLZXkiOiIyMzctMjMt
Nzc0MCJ9JworY3Vyc29yLmFkdmFuY2UoMSkKK1BBU1MgJ3sia2V5IjoiMjM3LTIzLTc3NDEiLCJ2
YWx1ZSI6eyJuYW1lIjoiQnVnIiwiaGVpZ2h0Ijo2Mywid2VpZ2h0IjoxMDB9LCJwcmltYXJ5S2V5
IjoiMjM3LTIzLTc3NDEifScgaXMgJ3sia2V5IjoiMjM3LTIzLTc3NDEiLCJ2YWx1ZSI6eyJuYW1l
IjoiQnVnIiwiaGVpZ2h0Ijo2Mywid2VpZ2h0IjoxMDB9LCJwcmltYXJ5S2V5IjoiMjM3LTIzLTc3
NDEifScKK2N1cnNvci5hZHZhbmNlKDEpCitQQVNTICd7ImtleSI6IjIzNy0yMy03NzQyIiwidmFs
dWUiOnsibmFtZSI6IlR1YiIsImhlaWdodCI6NjksIndlaWdodCI6MTgwfSwicHJpbWFyeUtleSI6
IjIzNy0yMy03NzQyIn0nIGlzICd7ImtleSI6IjIzNy0yMy03NzQyIiwidmFsdWUiOnsibmFtZSI6
IlR1YiIsImhlaWdodCI6NjksIndlaWdodCI6MTgwfSwicHJpbWFyeUtleSI6IjIzNy0yMy03NzQy
In0nCitjdXJzb3IuYWR2YW5jZSgxKQorUEFTUyAneyJrZXkiOiIyMzctMjMtNzc0MyIsInZhbHVl
Ijp7Im5hbWUiOiJSdWciLCJoZWlnaHQiOjc3LCJ3ZWlnaHQiOjEyMH0sInByaW1hcnlLZXkiOiIy
MzctMjMtNzc0MyJ9JyBpcyAneyJrZXkiOiIyMzctMjMtNzc0MyIsInZhbHVlIjp7Im5hbWUiOiJS
dWciLCJoZWlnaHQiOjc3LCJ3ZWlnaHQiOjEyMH0sInByaW1hcnlLZXkiOiIyMzctMjMtNzc0MyJ9
JworY3Vyc29yLmFkdmFuY2UoMSkKK1BBU1MgJ3sia2V5IjoiMjM3LTIzLTc3NDQiLCJ2YWx1ZSI6
eyJuYW1lIjoiUHVnIiwiaGVpZ2h0Ijo2Niwid2VpZ2h0IjoxMTB9LCJwcmltYXJ5S2V5IjoiMjM3
LTIzLTc3NDQifScgaXMgJ3sia2V5IjoiMjM3LTIzLTc3NDQiLCJ2YWx1ZSI6eyJuYW1lIjoiUHVn
IiwiaGVpZ2h0Ijo2Niwid2VpZ2h0IjoxMTB9LCJwcmltYXJ5S2V5IjoiMjM3LTIzLTc3NDQifScK
K2N1cnNvci5hZHZhbmNlKDEpCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
Y3Vyc29yLWFkdmFuY2UuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNv
ci1hZHZhbmNlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTBlNGRjNGNjZmU5MDgxMTIyZTFmNGMxMmQxY2Iz
ZmZmMzlkMmQ4NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL2N1cnNvci1hZHZhbmNlLmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPGh0bWw+Cis8aGVhZD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvY3Vyc29yLWFkdmFuY2UuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLWFkdmFuY2UuanMgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLWFkdmFuY2UuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZTNmNTQ1ZmNiYmZhMTA1YjkwNmY5NmNlYjVjMmU2YjM0MDNiMjkzYQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jdXJzb3It
YWR2YW5jZS5qcwpAQCAtMCwwICsxLDM3MyBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgewor
ICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9u
KCJUZXN0IEluZGV4ZWREQiBjdXJzb3IuYWR2YW5jZSgpLiIpOworCit2YXIgb2JqZWN0U3RvcmVE
YXRhID0gWworICAgIHsga2V5OiAiMjM3LTIzLTc3MzIiLCB2YWx1ZTogeyBuYW1lOiAiQm9iIiwg
aGVpZ2h0OiA2MCwgd2VpZ2h0OiAxMjAgfSB9LAorICAgIHsga2V5OiAiMjM3LTIzLTc3MzMiLCB2
YWx1ZTogeyBuYW1lOiAiQW5uIiwgaGVpZ2h0OiA1Miwgd2VpZ2h0OiAxMTAgfSB9LAorICAgIHsg
a2V5OiAiMjM3LTIzLTc3MzQiLCB2YWx1ZTogeyBuYW1lOiAiUm9uIiwgaGVpZ2h0OiA3Mywgd2Vp
Z2h0OiAxODAgfSB9LAorICAgIHsga2V5OiAiMjM3LTIzLTc3MzUiLCB2YWx1ZTogeyBuYW1lOiAi
U3VlIiwgaGVpZ2h0OiA1OCwgd2VpZ2h0OiAxMzAgfSB9LAorICAgIHsga2V5OiAiMjM3LTIzLTc3
MzYiLCB2YWx1ZTogeyBuYW1lOiAiSm9lIiwgaGVpZ2h0OiA2NSwgd2VpZ2h0OiAxNTAgfSB9LAor
ICAgIHsga2V5OiAiMjM3LTIzLTc3MzciLCB2YWx1ZTogeyBuYW1lOiAiUGF0IiwgaGVpZ2h0OiA2
NSwgd2VpZ2h0OiAxMDAgfSB9LAorICAgIHsga2V5OiAiMjM3LTIzLTc3MzgiLCB2YWx1ZTogeyBu
YW1lOiAiTGVvIiwgaGVpZ2h0OiA2NSwgd2VpZ2h0OiAxODAgfSB9LAorICAgIHsga2V5OiAiMjM3
LTIzLTc3MzkiLCB2YWx1ZTogeyBuYW1lOiAiSmVmIiwgaGVpZ2h0OiA2NSwgd2VpZ2h0OiAxMjAg
fSB9LAorICAgIHsga2V5OiAiMjM3LTIzLTc3NDAiLCB2YWx1ZTogeyBuYW1lOiAiU2FtIiwgaGVp
Z2h0OiA3MSwgd2VpZ2h0OiAxMTAgfSB9LAorICAgIHsga2V5OiAiMjM3LTIzLTc3NDEiLCB2YWx1
ZTogeyBuYW1lOiAiQnVnIiwgaGVpZ2h0OiA2Mywgd2VpZ2h0OiAxMDAgfSB9LAorICAgIHsga2V5
OiAiMjM3LTIzLTc3NDIiLCB2YWx1ZTogeyBuYW1lOiAiVHViIiwgaGVpZ2h0OiA2OSwgd2VpZ2h0
OiAxODAgfSB9LAorICAgIHsga2V5OiAiMjM3LTIzLTc3NDMiLCB2YWx1ZTogeyBuYW1lOiAiUnVn
IiwgaGVpZ2h0OiA3Nywgd2VpZ2h0OiAxMjAgfSB9LAorICAgIHsga2V5OiAiMjM3LTIzLTc3NDQi
LCB2YWx1ZTogeyBuYW1lOiAiUHVnIiwgaGVpZ2h0OiA2Niwgd2VpZ2h0OiAxMTAgfSB9LAorXTsK
KwordmFyIGluZGV4RGF0YSA9IFsKKyAgICB7IG5hbWU6ICJuYW1lIiwga2V5UGF0aDogIm5hbWUi
LCBvcHRpb25zOiB7IHVuaXF1ZTogdHJ1ZSB9IH0sCisgICAgeyBuYW1lOiAiaGVpZ2h0Iiwga2V5
UGF0aDogImhlaWdodCIsIG9wdGlvbnM6IHsgfSB9LAorICAgIHsgbmFtZTogIndlaWdodCIsIGtl
eVBhdGg6ICJ3ZWlnaHQiLCBvcHRpb25zOiB7IHVuaXF1ZTogZmFsc2UgfSB9CitdOworCitmdW5j
dGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworICAgIG5hbWUgPSB3
aW5kb3cubG9jYXRpb24ucGF0aG5hbWU7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4
ZWREQi5vcGVuKG5hbWUpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsK
KyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVu
Y3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIGRlYnVnKCJvcGVuU3VjY2VzcygpOiIpOworICAg
IGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICBvYmpl
Y3RTdG9yZU5hbWUgPSAiUGVvcGxlIjsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1
ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjcmVh
dGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0
b3JlKCkKK3sKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgb2JqZWN0U3Rv
cmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKG9iamVj
dFN0b3JlTmFtZSk7Iik7CisKKyAgICBkZWJ1ZygiRmlyc3QsIGFkZCBhbGwgb3VyIGRhdGEgdG8g
dGhlIG9iamVjdCBzdG9yZS4iKTsKKyAgICBhZGRlZERhdGEgPSAwOworICAgIGZvciAoaSBpbiBv
YmplY3RTdG9yZURhdGEpIHsKKyAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3Qg
PSBvYmplY3RTdG9yZS5hZGQob2JqZWN0U3RvcmVEYXRhW2ldLnZhbHVlLCBvYmplY3RTdG9yZURh
dGFbaV0ua2V5KTsiKTsKKyAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7CisgICAgfQorICAgIGNyZWF0ZUluZGV4ZXMoKTsKKyAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IHRlc3RBbGw7Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZUluZGV4ZXMoKQoreworICAgIGRl
YnVnKCJOb3cgY3JlYXRlIHRoZSBpbmRleGVzLiIpOworICAgIGZvciAoaSBpbiBpbmRleERhdGEp
IHsKKyAgICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KGluZGV4RGF0YVtp
XS5uYW1lLCBpbmRleERhdGFbaV0ua2V5UGF0aCwgaW5kZXhEYXRhW2ldLm9wdGlvbnMpOyIpOwor
ICAgIH0KK30KKworLy8gTWFrZSBhIHRlc3QgdGhhdCB1c2VzIGNvbnRpbnVlKCkgdG8gZ2V0IHRv
IHN0YXJ0UG9zLCB0aGVuIHBhc3NlcworLy8gJ2NvdW50JyB0byBnZXQgdG8gYSBwb3NpdGlvbi4K
K2Z1bmN0aW9uIG1ha2VBZHZhbmNlVGVzdChzdGFydFBvcywgZGlyZWN0aW9uLCBjb3VudCwgZXhw
ZWN0ZWRWYWx1ZSwgaW5kZXhOYW1lKQoreworICAgIHJlc3VsdCA9IHt9OworICAgIGV2YWxBbmRM
b2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24ob2JqZWN0U3RvcmVOYW1lKSIpOworICAgIHN0b3Jl
ID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZShvYmplY3RTdG9yZU5hbWUp
Iik7CisgICAgaWYgKGluZGV4TmFtZSkKKyAgICAgICAgc3RvcmUgPSBzdG9yZS5pbmRleChpbmRl
eE5hbWUpOworCisgICAgZXZhbEFuZExvZygicmVxdWVzdCA9IHN0b3JlLm9wZW5DdXJzb3IobnVs
bCwgIiArIGRpcmVjdGlvbiArICIpIik7CisgICAgdmFyIGN1cnJlbnRQb3MgPSAwOworICAgIGZ1
bmN0aW9uIGNvbnRpbnVlVG9UZXN0KGV2ZW50KQorICAgIHsKKyAgICAgICAgY3Vyc29yID0gZXZl
bnQudGFyZ2V0LnJlc3VsdDsKKyAgICAgICAgaWYgKGN1cnJlbnRQb3MgPT0gc3RhcnRQb3MpIHsK
KyAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5hZHZhbmNlKCIgKyBjb3VudCArICIpIik7
CisgICAgICAgIH0gZWxzZSBpZiAoY3VycmVudFBvcyA9PSBzdGFydFBvcyArIDEpIHsKKyAgICAg
ICAgICAgIHJ1blRlc3QoY3Vyc29yLCBleHBlY3RlZFZhbHVlKTsKKyAgICAgICAgICAgIHJlc3Vs
dC5vbnN1Y2Nlc3MoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChjdXJzb3Ig
PT0gbnVsbCkKKyAgICAgICAgICAgICAgICByZXN1bHQub25zdWNjZXNzKCk7CisgICAgICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKTsi
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBjdXJyZW50UG9zKys7CisgICAg
fQorCisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjb250aW51ZVRvVGVzdDsKKyAgICByZXF1ZXN0
Lm9uZXJyb3IgPSBmdW5jdGlvbihlKQorICAgIHsKKyAgICAgICAgcmVzdWx0Lm9uZXJyb3IoZSk7
CisgICAgfTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2Z1bmN0aW9uIHNpbXBsaWZ5Q3Vy
c29yKGN1cnNvcikKK3sKKyAgICB2YXIgb2JqID0ge307CisgICAgaWYgKGN1cnNvciA9PT0gbnVs
bCkgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisgICAgaWYgKCdrZXknIGluIGN1cnNv
cikgeworICAgICAgICBvYmoua2V5ID0gY3Vyc29yLmtleTsKKyAgICB9CisKKyAgICBpZiAoJ3Zh
bHVlJyBpbiBjdXJzb3IpIHsKKyAgICAgICAgb2JqLnZhbHVlID0gY3Vyc29yLnZhbHVlOworICAg
IH0KKworICAgIGlmICgncHJpbWFyeUtleScgaW4gY3Vyc29yKSB7CisgICAgICAgIG9iai5wcmlt
YXJ5S2V5ID0gY3Vyc29yLnByaW1hcnlLZXk7CisgICAgfQorICAgIHJldHVybiBvYmo7Cit9CisK
K2Z1bmN0aW9uIHJ1blRlc3QoY3Vyc29yLCBleHBlY3RlZFZhbHVlKQoreworICAgIHNob3VsZEJl
KCInIiArIEpTT04uc3RyaW5naWZ5KHNpbXBsaWZ5Q3Vyc29yKGN1cnNvcikpICsgIiciLAorICAg
ICAgICAgICAgICInIiArIEpTT04uc3RyaW5naWZ5KGV4cGVjdGVkVmFsdWUpICsgIiciKTsKK30K
KworZnVuY3Rpb24gdGVzdEFsbCgpCit7CisgICAgZGVidWcoInRlc3RBbGwoKSIpOworICAgIHRl
c3RTaW1wbGUoKTsKK30KKworZnVuY3Rpb24gdGVzdFNpbXBsZSgpCit7CisgICAgZGVidWcoInRl
c3RTaW1wbGUoKSIpOworICAgIG1ha2VBZHZhbmNlVGVzdCgwLCBudWxsLCAxLAorICAgICAgICAg
ICAgICAgICAgICB7a2V5OiBvYmplY3RTdG9yZURhdGFbMV0ua2V5LAorICAgICAgICAgICAgICAg
ICAgICAgdmFsdWU6IG9iamVjdFN0b3JlRGF0YVsxXS52YWx1ZSwKKyAgICAgICAgICAgICAgICAg
ICAgIHByaW1hcnlLZXk6IG9iamVjdFN0b3JlRGF0YVsxXS5rZXl9KQorICAgICAgICAgICAgICAg
ICAgICAgICAgIC5vbnN1Y2Nlc3M9IHRlc3RDb250aW51ZVRoZW5BZHZhbmNlOworfQorCitmdW5j
dGlvbiB0ZXN0Q29udGludWVUaGVuQWR2YW5jZSgpCit7CisgICAgZGVidWcoInRlc3RDb250aW51
ZVRoZW5BZHZhbmNlKCkiKTsKKyAgICBtYWtlQWR2YW5jZVRlc3QoMywgbnVsbCwgMSwKKyAgICAg
ICAgICAgICAgICAgICAgLy8gSm9lCisgICAgICAgICAgICAgICAgICAgIHtrZXk6IG9iamVjdFN0
b3JlRGF0YVs0XS5rZXksCisgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogb2JqZWN0U3RvcmVE
YXRhWzRdLnZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgcHJpbWFyeUtleTogb2JqZWN0U3Rv
cmVEYXRhWzRdLmtleX0pCisgICAgICAgICAgICAgICAgICAgICAgICAgLm9uc3VjY2Vzcz0gdGVz
dEFkdmFuY2VNdWx0aXBsZTsKK30KKworZnVuY3Rpb24gdGVzdEFkdmFuY2VNdWx0aXBsZSgpCit7
CisgICAgZGVidWcoInRlc3RBZHZhbmNlTXVsdGlwbGUoKSIpOworICAgIG1ha2VBZHZhbmNlVGVz
dCgwLCBudWxsLCAzLAorICAgICAgICAgICAgICAgICAgICB7a2V5OiBvYmplY3RTdG9yZURhdGFb
M10ua2V5LAorICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IG9iamVjdFN0b3JlRGF0YVszXS52
YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgIHByaW1hcnlLZXk6IG9iamVjdFN0b3JlRGF0YVsz
XS5rZXl9KQorICAgICAgICAgICAgICAgICAgICAgICAgIC5vbnN1Y2Nlc3MgPSB0ZXN0QWR2YW5j
ZUluZGV4OworfQorCitmdW5jdGlvbiB0ZXN0QWR2YW5jZUluZGV4KCkKK3sKKyAgICBkZWJ1Zygi
dGVzdEFkdmFuY2VJbmRleCgpIik7CisgICAgbWFrZUFkdmFuY2VUZXN0KDAsIG51bGwsIDMsCisg
ICAgICAgICAgICAgICAgICAgIC8vIEplZgorICAgICAgICAgICAgICAgICAgICB7a2V5OiBvYmpl
Y3RTdG9yZURhdGFbN10udmFsdWUubmFtZSwKKyAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBv
YmplY3RTdG9yZURhdGFbN10udmFsdWUsCisgICAgICAgICAgICAgICAgICAgICBwcmltYXJ5S2V5
OiBvYmplY3RTdG9yZURhdGFbN10ua2V5fSwKKyAgICAgICAgICAgICAgICAgICAgIm5hbWUiKS5v
bnN1Y2Nlc3MgPSB0ZXN0QWR2YW5jZUluZGV4Tm9EdXBlOworfQorCitmdW5jdGlvbiB0ZXN0QWR2
YW5jZUluZGV4Tm9EdXBlKCkKK3sKKyAgICBkZWJ1ZygidGVzdEFkdmFuY2VJbmRleE5vRHVwZSgp
Iik7CisgICAgbWFrZUFkdmFuY2VUZXN0KDAsIElEQkN1cnNvci5ORVhUX05PX0RVUExJQ0FURSwg
MywKKyAgICAgICAgICAgICAgICAgICAgLy8gU3VlICh3ZWlnaHQgMTMwIC0gc2tpcHBpbmcgd2Vp
Z2h0IDEwMCwgMTEwLCAxMjApCisgICAgICAgICAgICAgICAgICAgIHtrZXk6IG9iamVjdFN0b3Jl
RGF0YVszXS52YWx1ZS53ZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogb2JqZWN0
U3RvcmVEYXRhWzNdLnZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgcHJpbWFyeUtleTogb2Jq
ZWN0U3RvcmVEYXRhWzNdLmtleX0sCisgICAgICAgICAgICAgICAgICAgICJ3ZWlnaHQiKS5vbnN1
Y2Nlc3MgPSB0ZXN0QWR2YW5jZUluZGV4UHJldjsKK30KKworZnVuY3Rpb24gdGVzdEFkdmFuY2VJ
bmRleFByZXYoKQoreworICAgIGRlYnVnKCJ0ZXN0QWR2YW5jZUluZGV4UHJldigpIik7CisgICAg
bWFrZUFkdmFuY2VUZXN0KDAsIElEQkN1cnNvci5QUkVWLCAzLAorICAgICAgICAgICAgICAgICAg
ICAvLyBCb2IgKHdlaWdodCAxMjAgLSBza2lwcGluZyB3ZWlnaHRzIDE4MCwgMTUwLCAxMzApCisg
ICAgICAgICAgICAgICAgICAgIHtrZXk6IG9iamVjdFN0b3JlRGF0YVs0XS52YWx1ZS53ZWlnaHQs
CisgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogb2JqZWN0U3RvcmVEYXRhWzRdLnZhbHVlLAor
ICAgICAgICAgICAgICAgICAgICAgcHJpbWFyeUtleTogb2JqZWN0U3RvcmVEYXRhWzRdLmtleX0s
CisgICAgICAgICAgICAgICAgICAgICJ3ZWlnaHQiKS5vbnN1Y2Nlc3MgPSB0ZXN0QWR2YW5jZUlu
ZGV4UHJldk5vRHVwZTsKK30KKworZnVuY3Rpb24gdGVzdEFkdmFuY2VJbmRleFByZXZOb0R1cGUo
KQoreworICAgIGRlYnVnKCJ0ZXN0QWR2YW5jZUluZGV4UHJldk5vRHVwZSgpIik7CisgICAgbWFr
ZUFkdmFuY2VUZXN0KDAsIElEQkN1cnNvci5QUkVWX05PX0RVUExJQ0FURSwgMywKKyAgICAgICAg
ICAgICAgICAgICAgLy8gQm9iICh3ZWlnaHQgMTIwIC0gc2tpcHBpbmcgd2VpZ2h0cyAxODAsIDE1
MCwgMTMwKQorICAgICAgICAgICAgICAgICAgICB7a2V5OiBvYmplY3RTdG9yZURhdGFbMF0udmFs
dWUud2VpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IG9iamVjdFN0b3JlRGF0YVsw
XS52YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgIHByaW1hcnlLZXk6IG9iamVjdFN0b3JlRGF0
YVswXS5rZXl9LAorICAgICAgICAgICAgICAgICAgICAid2VpZ2h0Iikub25zdWNjZXNzID0gdGVz
dEFkdmFuY2VUb0VuZDsKK30KKworZnVuY3Rpb24gdGVzdEFkdmFuY2VUb0VuZCgpCit7CisgICAg
ZGVidWcoInRlc3RBZHZhbmNlVG9FbmQoKSIpOworICAgIG1ha2VBZHZhbmNlVGVzdCgwLCBudWxs
LCAxMDAsIG51bGwpCisgICAgICAgIC5vbnN1Y2Nlc3MgPSB0ZXN0UHJlZmV0Y2hJblJhbmdlOwor
fQorCisvLyBNYWtlIHN1cmUgdGhlIHByZWZldGNoaW5nIHRoYXQgZXhpc3RzIG9uIHNvbWUgcGxh
dGZvcm1zIChjaHJvbWl1bSkKKy8vIGRvZXNuJ3QgbWVzcyB3aXRoIGFkdmFuY2UoKSwgb3Igdmlj
ZSB2ZXJzYS4KK2Z1bmN0aW9uIHRlc3RQcmVmZXRjaEluUmFuZ2UoKQoreworICAgIGRlYnVnKCJ0
ZXN0UHJlZmV0Y2hJblJhbmdlKCkiKTsKKyAgICB2YXIga1ByZWZldGNoQ29udGludWVUaHJlc2hv
bGQgPSAyOworICAgIGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24ob2JqZWN0U3Rv
cmVOYW1lKSIpOworICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSB0
cmFucy5vYmplY3RTdG9yZShvYmplY3RTdG9yZU5hbWUpIik7CisKKyAgICBldmFsQW5kTG9nKCJy
ZXF1ZXN0ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNvcigpIik7CisKKyAgICB2YXIgY3VycmVudFBv
cyA9IDA7CisgICAgZnVuY3Rpb24gcHJlZmV0Y2goKQorICAgIHsKKyAgICAgICAgY3Vyc29yID0g
ZXZlbnQudGFyZ2V0LnJlc3VsdDsKKworICAgICAgICBpZiAoIWN1cnNvcikgeworICAgICAgICAg
ICAgdGVzdFByZWZldGNoT3V0T2ZSYW5nZSgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisKKyAgICAgICAgcnVuVGVzdChjdXJzb3IsIHtrZXk6IG9iamVjdFN0b3JlRGF0YVtjdXJy
ZW50UG9zXS5rZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IG9iamVjdFN0b3Jl
RGF0YVtjdXJyZW50UG9zXS52YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBwcmltYXJ5
S2V5OiBvYmplY3RTdG9yZURhdGFbY3VycmVudFBvc10ua2V5fSk7CisKKyAgICAgICAgLy8gZm9y
Y2Ugc29tZSBwcmVmZXRjaGluZywKKyAgICAgICAgaWYgKGN1cnJlbnRQb3MgPCAoa1ByZWZldGNo
Q29udGludWVUaHJlc2hvbGQrMSkpIHsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5j
b250aW51ZSgpIik7CisgICAgICAgICAgICBjdXJyZW50UG9zKys7CisgICAgICAgIH0gZWxzZSBp
ZiAoY3VycmVudFBvcyA9PSAoa1ByZWZldGNoQ29udGludWVUaHJlc2hvbGQrMSkpIHsKKyAgICAg
ICAgICAgIC8vIHN0YXkgd2l0aGluIHRoZSBwcmVmZXRjaCByYW5nZQorICAgICAgICAgICAgZXZh
bEFuZExvZygiY3Vyc29yLmFkdmFuY2UoMikiKTsKKyAgICAgICAgICAgIGN1cnJlbnRQb3MgKz0g
MjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIHdlJ3JlIGp1c3QgcGFzdCB0aGUg
dGhyZXNob2xkCisgICAgICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKSIpOwor
ICAgICAgICAgICAgY3VycmVudFBvcysrOworICAgICAgICB9CisgICAgfQorICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gcHJlZmV0Y2g7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Cit9CisKKy8vIE1ha2Ugc3VyZSB0aGUgcHJlZmV0Y2hpbmcgdGhhdCBleGlz
dHMgb24gc29tZSBwbGF0Zm9ybXMgKGNocm9taXVtKQorLy8gZG9lc24ndCBtZXNzIHdpdGggYWR2
YW5jZSgpLCBvciB2aWNlIHZlcnNhLgorZnVuY3Rpb24gdGVzdFByZWZldGNoT3V0T2ZSYW5nZSgp
Cit7CisgICAgZGVidWcoInRlc3RQcmVmZXRjaE91dE9mUmFuZ2UoKSIpOworICAgIHZhciBrUHJl
ZmV0Y2hDb250aW51ZVRocmVzaG9sZCA9IDI7CisgICAgZXZhbEFuZExvZygidHJhbnMgPSBkYi50
cmFuc2FjdGlvbihvYmplY3RTdG9yZU5hbWUpIik7CisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5k
TG9nKCJvYmplY3RTdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSkiKTsK
KworICAgIGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCkiKTsK
KworICAgIHZhciBjdXJyZW50UG9zID0gMDsKKyAgICBmdW5jdGlvbiBwcmVmZXRjaCgpCisgICAg
eworICAgICAgICBjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OworCisgICAgICAgIGlmICgh
Y3Vyc29yKSB7CisgICAgICAgICAgICB0ZXN0QmFkQWR2YW5jZSgpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisKKyAgICAgICAgcnVuVGVzdChjdXJzb3IsIHtrZXk6IG9iamVjdFN0
b3JlRGF0YVtjdXJyZW50UG9zXS5rZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6
IG9iamVjdFN0b3JlRGF0YVtjdXJyZW50UG9zXS52YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICBwcmltYXJ5S2V5OiBvYmplY3RTdG9yZURhdGFbY3VycmVudFBvc10ua2V5fSk7CisKKyAg
ICAgICAgLy8gZm9yY2Ugc29tZSBwcmVmZXRjaGluZywKKyAgICAgICAgaWYgKGN1cnJlbnRQb3Mg
PCAoa1ByZWZldGNoQ29udGludWVUaHJlc2hvbGQrMSkpIHsKKyAgICAgICAgICAgIGV2YWxBbmRM
b2coImN1cnNvci5jb250aW51ZSgpIik7CisgICAgICAgICAgICBjdXJyZW50UG9zKys7CisgICAg
ICAgIH0gZWxzZSBpZiAoY3VycmVudFBvcyA9PSAoa1ByZWZldGNoQ29udGludWVUaHJlc2hvbGQr
MSkpIHsKKyAgICAgICAgICAgIC8vIGFkdmFuY2UgcGFzdCB0aGUgcHJlZmV0Y2ggcmFuZ2UKKyAg
ICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5hZHZhbmNlKDcpIik7CisgICAgICAgICAgICBj
dXJyZW50UG9zICs9IDc7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyB3ZSdyZSBw
YXN0IHRoZSB0aHJlc2hvbGQKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51
ZSgpIik7CisgICAgICAgICAgICBjdXJyZW50UG9zKys7CisgICAgICAgIH0KKyAgICB9CisgICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBwcmVmZXRjaDsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gdGVzdEJhZEFkdmFuY2UoKQorewor
ICAgIGRlYnVnKCJ0ZXN0QmFkQWR2YW5jZSgpIik7CisgICAgZXZhbEFuZExvZygidHJhbnMgPSBk
Yi50cmFuc2FjdGlvbihvYmplY3RTdG9yZU5hbWUsIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUp
Iik7CisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IHRyYW5zLm9i
amVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSkiKTsKKworICAgIGV2YWxBbmRMb2coInJlcXVlc3Qg
PSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCkiKTsKKworICAgIGZ1bmN0aW9uIGFkdmFuY2VCYWRs
eSgpCisgICAgeworICAgICAgICBjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OworCisgICAg
ICAgIC8vIEZJWE1FOiB0aGlzIHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvci4gKFNlZSBJREJDdXJz
b3IuY3BwKQorICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJjdXJzb3IuYWR2YW5jZSgw
KSIsICJET01FeGNlcHRpb24uVFlQRV9NSVNNQVRDSF9FUlIiKTsKKyAgICAgICAgdGVzdERlbGV0
ZSgpOworICAgIH0KKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkdmFuY2VCYWRseTsKKyAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKworfQorCitmdW5jdGlv
biB0ZXN0RGVsZXRlKCkKK3sKKyAgICBkZWJ1ZygidGVzdERlbGV0ZSgpIik7CisgICAgZXZhbEFu
ZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihvYmplY3RTdG9yZU5hbWUsIElEQlRyYW5zYWN0
aW9uLlJFQURfV1JJVEUpIik7CisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RT
dG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSkiKTsKKworICAgIGV2YWxB
bmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCkiKTsKKworICAgIHZhciBj
dXJyZW50UG9zID0gMDsKKyAgICBmdW5jdGlvbiBkZWxldGVTZWNvbmQoKQorICAgIHsKKyAgICAg
ICAgY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKKworICAgICAgICBpZiAoIWN1cnNvcikg
eworICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKworICAgICAgICBydW5UZXN0KGN1cnNvciwge2tleTogb2JqZWN0U3RvcmVEYXRhW2N1
cnJlbnRQb3NdLmtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogb2JqZWN0U3Rv
cmVEYXRhW2N1cnJlbnRQb3NdLnZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgIHByaW1h
cnlLZXk6IG9iamVjdFN0b3JlRGF0YVtjdXJyZW50UG9zXS5rZXl9KTsKKworCisgICAgICAgIC8v
IHRoaXMgaXMgaW4gdGhlIG1pZGRsZSBvZiB0aGUgZGF0YSwgc28gaXQgd2lsbCB0ZXN0IHZhbGlk
aXR5CisgICAgICAgIGlmIChjdXJyZW50UG9zID09IDIpIHsKKyAgICAgICAgICAgIGV2YWxBbmRM
b2coImN1cnNvci5kZWxldGUoKSIpOworICAgICAgICAgICAgY3Vyc29yLmFkdmFuY2UoNCk7Cisg
ICAgICAgICAgICBjdXJyZW50UG9zICs9IDQ7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICBldmFsQW5kTG9nKCJjdXJzb3IuYWR2YW5jZSgxKSIpOworICAgICAgICAgICAgY3VycmVudFBv
cysrOworICAgICAgICB9CisKKyAgICB9CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZWxldGVT
ZWNvbmQ7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9
CisKK3Rlc3QoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>138831</attachid>
            <date>2012-04-25 10:01:46 -0700</date>
            <delta_ts>2012-04-25 16:21:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-84174-20120425100145.patch</filename>
            <type>text/plain</type>
            <size>40609</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE1MjAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDE4ZTEzNmZkMDMxZWRh
MDdkOGVjM2Q2ZGFmNjU0ZTRkMmE0ZTQ1Ni4uYTI1N2FiNWNlYjYxOTU4NjVlNTM0Mjc2OTM4YTQx
NDRkYTg4MWRkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTA0LTIzICBBbGVj
IEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IGlt
cGxlbWVudCBjdXJzb3IuYWR2YW5jZSgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD04NDE3NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEltcGxlbWVudCBJREJDdXJzb3IuYWR2YW5jZSgpIHRvIHNwZWMuCisK
KyAgICAgICAgVGVzdDogc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLWFkdmFuY2UuaHRtbAorCisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmg6CisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1
cnNvcjo6YWR2YW5jZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9JREJDdXJzb3IuaDoKKyAgICAgICAgKElEQkN1cnNvcik6CisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9JREJDdXJzb3JCYWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3JC
YWNrZW5kSW1wbDo6YWR2YW5jZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQkN1cnNvckJhY2tlbmRJbXBsOjphZHZhbmNlSW50ZXJuYWwpOgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbXBsLmg6CisgICAgICAgIChJREJDdXJz
b3JCYWNrZW5kSW1wbCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFj
a2VuZEludGVyZmFjZS5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJC
YWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisKIDIwMTItMDQtMjUgICdQYXZl
bCBGZWxkbWFuJyAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBOb3QgcmV2aWV3
ZWQ6IGluc3BlY3RvciBmcm9udGVuZCB0ZXN0cyBmaXguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CmluZGV4IDM1MzEwOGI2MzMzZjRlMTkwYTVkMzdkMjRlOTQyZDlmNTkyN2MyNDEuLjk5NjMxMGVi
NzViMTQzY2MxZWI2MGY2YWUxNTE2ZTJjN2QyNTk4OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTItMDQtMjMgIEFsZWMgRmxldHQgIDxhbGVjZmxldHRA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIEluZGV4ZWREQjogaW1wbGVtZW50IGN1cnNvci5hZHZh
bmNlKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg0
MTc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSG9v
ayB1cCBjaHJvbWl1bSBJUEMgdG8gSURCQ3Vyc29yLmFkdmFuY2UoKS4KKworICAgICAgICAqIHNy
Yy9JREJDdXJzb3JCYWNrZW5kUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpJREJDdXJzb3JC
YWNrZW5kUHJveHk6OmFkdmFuY2UpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBzcmMv
SURCQ3Vyc29yQmFja2VuZFByb3h5Lmg6CisgICAgICAgIChJREJDdXJzb3JCYWNrZW5kUHJveHkp
OgorICAgICAgICAqIHNyYy9XZWJJREJDdXJzb3JJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViSURCQ3Vyc29ySW1wbDo6YWR2YW5jZSk6CisKIDIwMTItMDQtMjUgIElhbiBWb2xsaWNrICA8
dm9sbGlja0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBBbmltYXRpb25zIHdh
aXRpbmcgZm9yIGEgc3luY2hyb25pemVkIHN0YXJ0IHRpbWUgc2hvdWxkIG5ldmVyIGJlIG1hcmtl
ZCBmaW5pc2hlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
QmFja2luZ1N0b3JlLmgKaW5kZXggNTUxYjgyNjg5NWI2YzMyZDk3YjA3N2YyYTI3YTUyYzI3ZmZk
MmZhMy4uZjZiYjEwYWFhYzVjODU5Mzg2OWI4NWRhYzE2N2E5Yjg0ZTA2NzU3ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmgKQEAg
LTk0LDcgKzk0LDggQEAgcHVibGljOgogICAgICAgICB9OwogCiAgICAgICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxDdXJzb3I+IGNsb25lKCkgPSAwOwotICAgICAgICB2aXJ0dWFsIGJvb2wgY29udGlu
dWVGdW5jdGlvbihjb25zdCBJREJLZXkqID0gMCwgSXRlcmF0b3JTdGF0ZSBuZXh0U3RhdGUgPSBT
ZWVrKSA9IDA7CisgICAgICAgIHZpcnR1YWwgYm9vbCBhZHZhbmNlKHVuc2lnbmVkIGxvbmcpID0g
MDsKKyAgICAgICAgdmlydHVhbCBib29sIGNvbnRpbnVlRnVuY3Rpb24oY29uc3QgSURCS2V5KiA9
IDAsIEl0ZXJhdG9yU3RhdGUgPSBTZWVrKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxJREJLZXk+IGtleSgpID0gMDsKICAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQktleT4g
cHJpbWFyeUtleSgpID0gMDsKICAgICAgICAgdmlydHVhbCBTdHJpbmcgdmFsdWUoKSA9IDA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcAppbmRleCA3
Mzg3ZTFiMWUyOGNjYmJkYmI4OTkwZDBmODRiOWM0NzExYjk4NmU5Li45YWU5YjJmOThjMzY3ZDQ2
ZTZlMDdlOGY5MzZlMzdkOWYzYTJmNjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkN1cnNvci5jcHAKQEAgLTExNiw2ICsxMTYsMzMgQEAgUGFzc1JlZlB0cjxJ
REJSZXF1ZXN0PiBJREJDdXJzb3I6OnVwZGF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LCBQYXNzUmUKICAgICByZXR1cm4gcmVxdWVzdC5yZWxlYXNlKCk7CiB9CiAKK3ZvaWQgSURC
Q3Vyc29yOjphZHZhbmNlKHVuc2lnbmVkIGxvbmcgY291bnQsIEV4Y2VwdGlvbkNvZGUmIGVjKQor
eworICAgIElEQl9UUkFDRSgiSURCQ3Vyc29yOjphZHZhbmNlIik7CisgICAgaWYgKCFtX2dvdFZh
bHVlKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBpZiAoIW1fcmVxdWVzdCkgeworICAgICAgICBlYyA9IElEQkRhdGFiYXNl
RXhjZXB0aW9uOjpUUkFOU0FDVElPTl9JTkFDVElWRV9FUlI7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBpZiAoIWNvdW50KSB7CisgICAgICAgIC8vIEZJWE1FOiBzcGVjIHNheXMgd2Ug
c2hvdWxkIHRocm93IGEgSmF2YVNjcmlwdCBUeXBlRXJyb3IKKyAgICAgICAgZWMgPSBUWVBFX01J
U01BVENIX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChtX3JlcXVlc3Qt
PnJlc2V0UmVhZHlTdGF0ZShtX3RyYW5zYWN0aW9uLmdldCgpKSkgeworICAgICAgICBtX3JlcXVl
c3QtPnNldEN1cnNvcih0aGlzKTsKKyAgICAgICAgbV9nb3RWYWx1ZSA9IGZhbHNlOworICAgICAg
ICBtX2JhY2tlbmQtPmFkdmFuY2UoY291bnQsIG1fcmVxdWVzdCwgZWMpOworICAgIH0gZWxzZQor
ICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpOT1RfQUxMT1dFRF9FUlI7Cit9CisK
IHZvaWQgSURCQ3Vyc29yOjpjb250aW51ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURCS2V5PiBrZXks
IEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIElEQl9UUkFDRSgiSURCQ3Vyc29yOjpjb250aW51
ZSIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vy
c29yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuaAppbmRl
eCAyMzdmMjcyYzA1ZTJiMmI0M2RiNzZjNDI0MWI0OGU3N2ExM2UyNTg0Li41Yjk1OTNiOWY4ZGZj
ZTc0NWM5OWZmZWVjZmM3NmJlNjgyNWRiNGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJDdXJzb3IuaApAQCAtNjcsNiArNjcsNyBAQCBwdWJsaWM6CiAgICAgSURC
QW55KiBzb3VyY2UoKSBjb25zdDsKIAogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gdXBkYXRl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIGFkdmFuY2UodW5zaWduZWQgbG9uZywgRXhj
ZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgY29udGludWVGdW5jdGlvbihQYXNzUmVmUHRyPElEQktl
eT4sIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGRlbGV0ZUZ1
bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFeGNlcHRpb25Db2RlJik7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5pZGwgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuaWRsCmluZGV4IDQxNTQw
ZTJmMmJiMDcxMzM1YjgyOWYxNzE4N2U2ZDY1MjBhOWJkZjMuLjgwZWI2YjIzMzBmOGJjNjg4Zjc5
YmQ2YTA3MWE4NDkyMzY4M2JhZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkN1cnNvci5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCQ3Vyc29yLmlkbApAQCAtNDAsNiArNDAsOCBAQCBtb2R1bGUgc3RvcmFnZSB7CiAK
ICAgICAgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIElEQlJlcXVlc3QgdXBk
YXRlKGluIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSB2YWx1ZSkKICAgICAgICAgICAgIHJhaXNlcyAo
SURCRGF0YWJhc2VFeGNlcHRpb24pOworICAgICAgICB2b2lkIGFkdmFuY2UoaW4gdW5zaWduZWQg
bG9uZyBjb3VudCkKKyAgICAgICAgICAgIHJhaXNlcyAoSURCRGF0YWJhc2VFeGNlcHRpb24pOwog
ICAgICAgICBbSW1wbGVtZW50ZWRBcz1jb250aW51ZUZ1bmN0aW9uXSB2b2lkIGNvbnRpbnVlKGlu
IFtPcHRpb25hbF0gSURCS2V5IGtleSkKICAgICAgICAgICAgIHJhaXNlcyAoSURCRGF0YWJhc2VF
eGNlcHRpb24pOwogICAgICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgSW1w
bGVtZW50ZWRBcz1kZWxldGVGdW5jdGlvbl0gSURCUmVxdWVzdCBkZWxldGUoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZEltcGwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZElt
cGwuY3BwCmluZGV4IGNkYmU3MDdmY2UxMjk1NGJkZDViOWQ5ZGZhYmVhYTQxODg0NDRlYmQuLjU0
ODAzYjU0ZmQ4ZTU0MGM0NzNmNDE0ZmU0ODMxYTA5MjIwM2I2NzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbXBsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5kSW1wbC5j
cHAKQEAgLTEyNCw4ICsxMjQsMjcgQEAgdm9pZCBJREJDdXJzb3JCYWNrZW5kSW1wbDo6Y29udGlu
dWVGdW5jdGlvbihQYXNzUmVmUHRyPElEQktleT4gcHJwS2V5LCBQYXNzUmVmUHQKICAgICAgICAg
ZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSOwogfQog
Ci0vLyBJTVBPUlRBTlQ6IElmIHRoaXMgZXZlciAxKSBmaXJlcyBhbiAnZXJyb3InIGV2ZW50IGFu
ZCAyKSBpdCdzIHBvc3NpYmxlIHRvIGZpcmUgYW5vdGhlciBldmVudCBhZnRlcndhcmRzLAotLy8g
ICAgICAgICAgICBJREJSZXF1ZXN0OjpoYXNQZW5kaW5nQWN0aXZpdHkoKSB3aWxsIG5lZWQgdG8g
YmUgbW9kaWZpZWQgdG8gaGFuZGxlIHRoaXMhISEKK3ZvaWQgSURCQ3Vyc29yQmFja2VuZEltcGw6
OmFkdmFuY2UodW5zaWduZWQgbG9uZyBjb3VudCwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBy
cENhbGxiYWNrcywgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgSURCX1RSQUNFKCJJREJDdXJz
b3JCYWNrZW5kSW1wbDo6YWR2YW5jZSIpOworCisgICAgaWYgKCFtX3RyYW5zYWN0aW9uLT5zY2hl
ZHVsZVRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZJREJDdXJzb3JCYWNrZW5kSW1wbDo6YWR2YW5j
ZUludGVybmFsLCB0aGlzLCBjb3VudCwgcHJwQ2FsbGJhY2tzKSkpCisgICAgICAgIGVjID0gSURC
RGF0YWJhc2VFeGNlcHRpb246OlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUjsKK30KKwordm9pZCBJ
REJDdXJzb3JCYWNrZW5kSW1wbDo6YWR2YW5jZUludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbXBsPiBwcnBDdXJzb3IsIHVuc2lnbmVk
IGxvbmcgY291bnQsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit7CisgICAg
SURCX1RSQUNFKCJJREJDdXJzb3JCYWNrZW5kSW1wbDo6YWR2YW5jZUludGVybmFsIik7CisgICAg
UmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbXBsPiBjdXJzb3IgPSBwcnBDdXJzb3I7CisgICAgaWYg
KCFjdXJzb3ItPm1fY3Vyc29yIHx8ICFjdXJzb3ItPm1fY3Vyc29yLT5hZHZhbmNlKGNvdW50KSkg
eworICAgICAgICBjdXJzb3ItPm1fY3Vyc29yID0gMDsKKyAgICAgICAgY2FsbGJhY2tzLT5vblN1
Y2Nlc3MoU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpudWxsVmFsdWUoKSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBjYWxsYmFja3MtPm9uU3VjY2Vzc1dpdGhDb250aW51YXRpb24oKTsK
K30KKwogdm9pZCBJREJDdXJzb3JCYWNrZW5kSW1wbDo6Y29udGludWVGdW5jdGlvbkludGVybmFs
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbXBs
PiBwcnBDdXJzb3IsIFBhc3NSZWZQdHI8SURCS2V5PiBwcnBLZXksIFBhc3NSZWZQdHI8SURCQ2Fs
bGJhY2tzPiBjYWxsYmFja3MpCiB7CiAgICAgSURCX1RSQUNFKCJJREJDdXJzb3JCYWNrZW5kSW1w
bDo6Y29udGludWVJbnRlcm5hbCIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbXBsLmgKaW5kZXggNGVlNWFjNDBhZTYyOTMy
YWYzNDZmZTc1NzEyYzI5NzM5Njc1ZDk1MS4uYjdiOGU5MjRhNDA4MmFkOGFkMWE4YjRkZWFkZDUy
MWMxZmQzZTNhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCQ3Vyc29yQmFja2VuZEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJDdXJzb3JCYWNrZW5kSW1wbC5oCkBAIC01OSw2ICs1OSw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5KCkgY29uc3Q7CiAgICAgdmly
dHVhbCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUoKSBjb25zdDsKICAg
ICB2aXJ0dWFsIHZvaWQgdXBkYXRlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwg
UGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBFeGNlcHRpb25Db2RlJik7CisgICAgdmlydHVhbCB2
b2lkIGFkdmFuY2UodW5zaWduZWQgbG9uZywgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBFeGNl
cHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIGNvbnRpbnVlRnVuY3Rpb24oUGFzc1JlZlB0
cjxJREJLZXk+LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIEV4Y2VwdGlvbkNvZGUmKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGVsZXRlRnVuY3Rpb24oUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBF
eGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIHByZWZldGNoQ29udGludWUoaW50IG51
bWJlclRvRmV0Y2gsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgRXhjZXB0aW9uQ29kZSYpOwpA
QCAtNjksNiArNzAsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIElEQkN1cnNvckJhY2tlbmRJ
bXBsKFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+LCBJREJDdXJzb3I6OkRpcmVj
dGlvbiwgQ3Vyc29yVHlwZSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgSURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlKik7CiAKKyAgICBzdGF0aWMgdm9pZCBhZHZhbmNlSW50
ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2Vu
ZEltcGw+LCB1bnNpZ25lZCBsb25nLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pOwogICAgIHN0
YXRpYyB2b2lkIGNvbnRpbnVlRnVuY3Rpb25JbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW1wbD4sIFBhc3NSZWZQdHI8SURCS2V5Piwg
UGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KTsKICAgICBzdGF0aWMgdm9pZCBwcmVmZXRjaENvbnRp
bnVlSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCQ3Vyc29y
QmFja2VuZEltcGw+LCBpbnQgbnVtYmVyVG9GZXRjaCwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vy
c29yQmFja2VuZEludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZS5oCmluZGV4IGI1N2JiNTg2OGVlMTZiODk3ZGI3N2Q4
MWQwNWNjYmY2ZGIwNzZjMDMuLjk3MTIzMjgyNmZkN2E1ZDAzYjk1NTk5YzcwZDk1ZDgyYWYxNWRk
MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNv
ckJhY2tlbmRJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlLmgKQEAgLTU5LDYgKzU5LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlKCkgY29u
c3QgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgRXhjZXB0aW9uQ29kZSYpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgYWR2YW5jZSh1bnNpZ25lZCBsb25nIGNvdW50LCBQYXNzUmVm
UHRyPElEQkNhbGxiYWNrcz4sIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IGNvbnRpbnVlRnVuY3Rpb24oUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgUGFzc1JlZlB0cjxJREJD
YWxsYmFja3M+LCBFeGNlcHRpb25Db2RlJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVG
dW5jdGlvbihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHByZWZldGNoQ29udGludWUoaW50IG51bWJlclRvRmV0Y2gsIFBhc3NS
ZWZQdHI8SURCQ2FsbGJhY2tzPiwgRXhjZXB0aW9uQ29kZSYpID0gMDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9y
ZS5jcHAKaW5kZXggNmE3ZWQyODRiYWVkZGRlYWZjZmFiNzgxYTE0ZGYxMDlmOTgyOWVmYS4uZjk1
NjcwOTUyMDk4NTBiMThjYzg2MDI5NTU3ZmE3MGVmNjdhNjMzZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9y
ZS5jcHAKQEAgLTk4MCw3ICs5ODAsOCBAQCBzdHJ1Y3QgQ3Vyc29yT3B0aW9ucyB7CiBjbGFzcyBD
dXJzb3JJbXBsQ29tbW9uIDogcHVibGljIElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yIHsKIHB1Ymxp
YzoKICAgICAvLyBJREJCYWNraW5nU3RvcmU6OkN1cnNvcgotICAgIHZpcnR1YWwgYm9vbCBjb250
aW51ZUZ1bmN0aW9uKGNvbnN0IElEQktleSosIEl0ZXJhdG9yU3RhdGUpOworICAgIHZpcnR1YWwg
Ym9vbCBhZHZhbmNlKHVuc2lnbmVkIGxvbmcpOworICAgIHZpcnR1YWwgYm9vbCBjb250aW51ZUZ1
bmN0aW9uKGNvbnN0IElEQktleSogPSAwLCBJdGVyYXRvclN0YXRlID0gU2Vlayk7CiAgICAgdmly
dHVhbCBQYXNzUmVmUHRyPElEQktleT4ga2V5KCkgeyByZXR1cm4gbV9jdXJyZW50S2V5OyB9CiAg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQktleT4gcHJpbWFyeUtleSgpIHsgcmV0dXJuIG1fY3Vy
cmVudEtleTsgfQogICAgIHZpcnR1YWwgU3RyaW5nIHZhbHVlKCkgPSAwOwpAQCAtMTAzNSw2ICsx
MDM2LDE1IEBAIGJvb2wgQ3Vyc29ySW1wbENvbW1vbjo6Zmlyc3RTZWVrKCkKICAgICByZXR1cm4g
Y29udGludWVGdW5jdGlvbigwLCBSZWFkeSk7CiB9CiAKK2Jvb2wgQ3Vyc29ySW1wbENvbW1vbjo6
YWR2YW5jZSh1bnNpZ25lZCBsb25nIGNvdW50KQoreworICAgIHdoaWxlIChjb3VudC0tKSB7Cisg
ICAgICAgIGlmICghY29udGludWVGdW5jdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogYm9vbCBDdXJzb3JJbXBsQ29tbW9uOjpj
b250aW51ZUZ1bmN0aW9uKGNvbnN0IElEQktleSoga2V5LCBJdGVyYXRvclN0YXRlIG5leHRTdGF0
ZSkKIHsKICAgICBSZWZQdHI8SURCS2V5PiBwcmV2aW91c0tleSA9IG1fY3VycmVudEtleTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkN1cnNvckJhY2tlbmRQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDdXJzb3JCYWNrZW5kUHJveHku
Y3BwCmluZGV4IDQyOGMzN2Y1ZWI2ODlhZTY3YjUzZTgzNDhkNjU0ZGQ2MjQ1ZGQyY2UuLjJhNjJi
OTI2ZjVmNjY0ZWU2ZDc0OWRkMDUwMjc3NjdlZTI1NGVmODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0lEQkN1cnNvckJhY2tlbmRQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ3Vyc29yQmFja2VuZFByb3h5LmNwcApAQCAtNzksNiAr
NzksMTEgQEAgdm9pZCBJREJDdXJzb3JCYWNrZW5kUHJveHk6OnVwZGF0ZShQYXNzUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUsIFBhc3MKICAgICBtX2lkYkN1cnNvci0+dXBkYXRl
KHZhbHVlLCBuZXcgV2ViSURCQ2FsbGJhY2tzSW1wbChjYWxsYmFja3MpLCBlYyk7CiB9CiAKK3Zv
aWQgSURCQ3Vyc29yQmFja2VuZFByb3h5OjphZHZhbmNlKHVuc2lnbmVkIGxvbmcgY291bnQsIFBh
c3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIEV4Y2VwdGlvbkNvZGUmIGVjKQorewor
ICAgIG1faWRiQ3Vyc29yLT5hZHZhbmNlKGNvdW50LCBuZXcgV2ViSURCQ2FsbGJhY2tzSW1wbChj
YWxsYmFja3MpLCBlYyk7Cit9CisKIHZvaWQgSURCQ3Vyc29yQmFja2VuZFByb3h5Ojpjb250aW51
ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tz
PiBjYWxsYmFja3MsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIG1faWRiQ3Vyc29yLT5jb250
aW51ZUZ1bmN0aW9uKGtleSwgbmV3IFdlYklEQkNhbGxiYWNrc0ltcGwoY2FsbGJhY2tzKSwgZWMp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ3Vyc29yQmFja2Vu
ZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDdXJzb3JCYWNrZW5kUHJv
eHkuaAppbmRleCBjZmU2ZGFmNWRkZWQ3OGQ3ZWE1ZGY0ZDkzZTBmYjNiYTFkZDlhZDA2Li4yNGEz
ZTQyYzQ3YTdiNjFlYjY5MjEwMTBmN2NmMThmODAxOGY0NzM2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9JREJDdXJzb3JCYWNrZW5kUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9JREJDdXJzb3JCYWNrZW5kUHJveHkuaApAQCAtNDcsNiArNDcs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQktleT4gcHJp
bWFyeUtleSgpIGNvbnN0OwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpTZXJpYWxp
emVkU2NyaXB0VmFsdWU+IHZhbHVlKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZShQ
YXNzUmVmUHRyPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIFBhc3NSZWZQdHI8V2Vi
Q29yZTo6SURCQ2FsbGJhY2tzPiwgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSYpOworICAgIHZpcnR1
YWwgdm9pZCBhZHZhbmNlKHVuc2lnbmVkIGxvbmcsIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCQ2Fs
bGJhY2tzPiwgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgdm9pZCBjb250
aW51ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5PiwgUGFzc1JlZlB0cjxXZWJD
b3JlOjpJREJDYWxsYmFja3M+LCBXZWJDb3JlOjpFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVh
bCB2b2lkIGRlbGV0ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPiwg
V2ViQ29yZTo6RXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwcmVmZXRjaENvbnRp
bnVlKGludCBudW1iZXJUb0ZldGNoLCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4s
IFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUmKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9IC8vIE9u
bHkgdXNlZCBpbiB0aGUgYmFja2VuZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYklEQkN1cnNvckltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViSURCQ3Vyc29ySW1wbC5jcHAKaW5kZXggZjczYWIyYzM1YmVkZjkyOGU5Y2M1ZTA2ZWFlMWE4
ODRmNjhhMDFiMC4uNmYxMGVmZTllMDk2ZjkzZmZkNTdkNzZlZmU5MzM0MDY5Yjg3OTJhYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ3Vyc29ySW1wbC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ3Vyc29ySW1wbC5jcHAKQEAg
LTc0LDcgKzc0LDcgQEAgdm9pZCBXZWJJREJDdXJzb3JJbXBsOjp1cGRhdGUoY29uc3QgV2ViU2Vy
aWFsaXplZFNjcmlwdFZhbHVlJiB2YWx1ZSwgV2ViSURCQ2FsbGIKIAogdm9pZCBXZWJJREJDdXJz
b3JJbXBsOjphZHZhbmNlKHVuc2lnbmVkIGxvbmcgY291bnQsIFdlYklEQkNhbGxiYWNrcyogY2Fs
bGJhY2tzLCBXZWJFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICAvLyBGSVhNRTogbm90IGltcGxl
bWVudGVkIGluIGluZGV4ZWRkYiB5ZXQKKyAgICBtX2lkYkN1cnNvckJhY2tlbmQtPmFkdmFuY2Uo
Y291bnQsIElEQkNhbGxiYWNrc1Byb3h5OjpjcmVhdGUoYWRvcHRQdHIoY2FsbGJhY2tzKSksIGVj
KTsKIH0KIAogdm9pZCBXZWJJREJDdXJzb3JJbXBsOjpjb250aW51ZUZ1bmN0aW9uKGNvbnN0IFdl
YklEQktleSYga2V5LCBXZWJJREJDYWxsYmFja3MqIGNhbGxiYWNrcywgV2ViRXhjZXB0aW9uQ29k
ZSYgZWMpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggYmMyM2ZhZTUwNzRiMTA2YTEzYTBjOGIyMzcxNTMzNGVlMTViNWYyZi4u
NGJkMWRlMTBiYzNmZGRkZWNiODQxY2VlZTNhZDQ1ZTZiYWRiY2M3ZCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDI5IEBACisyMDEyLTA0LTIzICBBbGVjIEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4K
KworICAgICAgICBJbmRleGVkREI6IGltcGxlbWVudCBjdXJzb3IuYWR2YW5jZSgpCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NDE3NAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzIGZvciBjdXJzb3Iu
YWR2YW5jZSgpLgorCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLWFkdmFuY2Ut
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3It
YWR2YW5jZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJj
ZXMvY3Vyc29yLWFkdmFuY2UuanM6IEFkZGVkLgorICAgICAgICAodGVzdCk6CisgICAgICAgIChv
cGVuU3VjY2Vzcyk6CisgICAgICAgIChjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlKToKKyAg
ICAgICAgKG1ha2VBZHZhbmNlVGVzdC5jb250aW51ZVRvVGVzdCk6CisgICAgICAgIChtYWtlQWR2
YW5jZVRlc3QucmVxdWVzdC5vbmVycm9yKToKKyAgICAgICAgKG1ha2VBZHZhbmNlVGVzdCk6Cisg
ICAgICAgIChta0N1cnNvcik6CisgICAgICAgIChydW5UZXN0KToKKyAgICAgICAgKHRlc3RBbGwp
OgorICAgICAgICAodGVzdFNpbXBsZSk6CisgICAgICAgICh0ZXN0Q29udGludWVUaGVuQWR2YW5j
ZSk6CisgICAgICAgICh0ZXN0QWR2YW5jZU11bHRpcGxlKToKKyAgICAgICAgKHRlc3RBZHZhbmNl
VG9FbmQpOgorCiAyMDEyLTA0LTI1ICBQaWVycmUgUm9zc2kgIDxwaWVycmUucm9zc2lAZ21haWwu
Y29tPgogCiAgICAgICAgIFtTVkddIE5vdGhpbmcgc2hvdWxkIGJlIHN0cm9rZWQgd2hlbiB0aGUg
c3Ryb2tlLXdpZHRoIGlzIDAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL2N1cnNvci1hZHZhbmNlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL2N1cnNvci1hZHZhbmNlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40M2VjYjVlYThh
MGJiZThiZDM1ZDMxZjdhZTlmMjcyOGIwYTMyMzY5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLWFkdmFuY2UtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMTY0IEBACitUZXN0IEluZGV4ZWREQiBjdXJzb3IuYWR2YW5jZSgpLgorCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKKworaW5kZXhlZERCID0gc2VsZi5pbmRleGVkREIgfHwgc2Vs
Zi53ZWJraXRJbmRleGVkREIgfHwgc2VsZi5tb3pJbmRleGVkREIgfHwgc2VsZi5tc0luZGV4ZWRE
QiB8fCBzZWxmLk9JbmRleGVkREI7CisKK2luZGV4ZWREQi5vcGVuKG5hbWUpCitvcGVuU3VjY2Vz
cygpOgorZGIgPSBldmVudC50YXJnZXQucmVzdWx0CityZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbign
MScpCitEZWxldGVkIGFsbCBvYmplY3Qgc3RvcmVzLgorb2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVP
YmplY3RTdG9yZShvYmplY3RTdG9yZU5hbWUpOworRmlyc3QsIGFkZCBhbGwgb3VyIGRhdGEgdG8g
dGhlIG9iamVjdCBzdG9yZS4KK3JlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQob2JqZWN0U3RvcmVE
YXRhW2ldLnZhbHVlLCBvYmplY3RTdG9yZURhdGFbaV0ua2V5KTsKK3JlcXVlc3QgPSBvYmplY3RT
dG9yZS5hZGQob2JqZWN0U3RvcmVEYXRhW2ldLnZhbHVlLCBvYmplY3RTdG9yZURhdGFbaV0ua2V5
KTsKK3JlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQob2JqZWN0U3RvcmVEYXRhW2ldLnZhbHVlLCBv
YmplY3RTdG9yZURhdGFbaV0ua2V5KTsKK3JlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQob2JqZWN0
U3RvcmVEYXRhW2ldLnZhbHVlLCBvYmplY3RTdG9yZURhdGFbaV0ua2V5KTsKK3JlcXVlc3QgPSBv
YmplY3RTdG9yZS5hZGQob2JqZWN0U3RvcmVEYXRhW2ldLnZhbHVlLCBvYmplY3RTdG9yZURhdGFb
aV0ua2V5KTsKK3JlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQob2JqZWN0U3RvcmVEYXRhW2ldLnZh
bHVlLCBvYmplY3RTdG9yZURhdGFbaV0ua2V5KTsKK3JlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQo
b2JqZWN0U3RvcmVEYXRhW2ldLnZhbHVlLCBvYmplY3RTdG9yZURhdGFbaV0ua2V5KTsKK3JlcXVl
c3QgPSBvYmplY3RTdG9yZS5hZGQob2JqZWN0U3RvcmVEYXRhW2ldLnZhbHVlLCBvYmplY3RTdG9y
ZURhdGFbaV0ua2V5KTsKK3JlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQob2JqZWN0U3RvcmVEYXRh
W2ldLnZhbHVlLCBvYmplY3RTdG9yZURhdGFbaV0ua2V5KTsKK3JlcXVlc3QgPSBvYmplY3RTdG9y
ZS5hZGQob2JqZWN0U3RvcmVEYXRhW2ldLnZhbHVlLCBvYmplY3RTdG9yZURhdGFbaV0ua2V5KTsK
K3JlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQob2JqZWN0U3RvcmVEYXRhW2ldLnZhbHVlLCBvYmpl
Y3RTdG9yZURhdGFbaV0ua2V5KTsKK3JlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQob2JqZWN0U3Rv
cmVEYXRhW2ldLnZhbHVlLCBvYmplY3RTdG9yZURhdGFbaV0ua2V5KTsKK3JlcXVlc3QgPSBvYmpl
Y3RTdG9yZS5hZGQob2JqZWN0U3RvcmVEYXRhW2ldLnZhbHVlLCBvYmplY3RTdG9yZURhdGFbaV0u
a2V5KTsKK05vdyBjcmVhdGUgdGhlIGluZGV4ZXMuCitvYmplY3RTdG9yZS5jcmVhdGVJbmRleChp
bmRleERhdGFbaV0ubmFtZSwgaW5kZXhEYXRhW2ldLmtleVBhdGgsIGluZGV4RGF0YVtpXS5vcHRp
b25zKTsKK29iamVjdFN0b3JlLmNyZWF0ZUluZGV4KGluZGV4RGF0YVtpXS5uYW1lLCBpbmRleERh
dGFbaV0ua2V5UGF0aCwgaW5kZXhEYXRhW2ldLm9wdGlvbnMpOworb2JqZWN0U3RvcmUuY3JlYXRl
SW5kZXgoaW5kZXhEYXRhW2ldLm5hbWUsIGluZGV4RGF0YVtpXS5rZXlQYXRoLCBpbmRleERhdGFb
aV0ub3B0aW9ucyk7Cit0ZXN0QWxsKCkKK3Rlc3RTaW1wbGUoKQordHJhbnMgPSBkYi50cmFuc2Fj
dGlvbihvYmplY3RTdG9yZU5hbWUpCitzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKG9iamVjdFN0
b3JlTmFtZSkKK3JlcXVlc3QgPSBzdG9yZS5vcGVuQ3Vyc29yKG51bGwsIG51bGwpCitjdXJzb3Iu
YWR2YW5jZSgxKQorUEFTUyAneyJrZXkiOiIyMzctMjMtNzczMyIsInZhbHVlIjp7Im5hbWUiOiJB
bm4iLCJoZWlnaHQiOjUyLCJ3ZWlnaHQiOjExMH0sInByaW1hcnlLZXkiOiIyMzctMjMtNzczMyJ9
JyBpcyAneyJrZXkiOiIyMzctMjMtNzczMyIsInZhbHVlIjp7Im5hbWUiOiJBbm4iLCJoZWlnaHQi
OjUyLCJ3ZWlnaHQiOjExMH0sInByaW1hcnlLZXkiOiIyMzctMjMtNzczMyJ9JwordGVzdENvbnRp
bnVlVGhlbkFkdmFuY2UoKQordHJhbnMgPSBkYi50cmFuc2FjdGlvbihvYmplY3RTdG9yZU5hbWUp
CitzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSkKK3JlcXVlc3QgPSBz
dG9yZS5vcGVuQ3Vyc29yKG51bGwsIG51bGwpCitjdXJzb3IuY29udGludWUoKTsKK2N1cnNvci5j
b250aW51ZSgpOworY3Vyc29yLmNvbnRpbnVlKCk7CitjdXJzb3IuYWR2YW5jZSgxKQorUEFTUyAn
eyJrZXkiOiIyMzctMjMtNzczNiIsInZhbHVlIjp7Im5hbWUiOiJKb2UiLCJoZWlnaHQiOjY1LCJ3
ZWlnaHQiOjE1MH0sInByaW1hcnlLZXkiOiIyMzctMjMtNzczNiJ9JyBpcyAneyJrZXkiOiIyMzct
MjMtNzczNiIsInZhbHVlIjp7Im5hbWUiOiJKb2UiLCJoZWlnaHQiOjY1LCJ3ZWlnaHQiOjE1MH0s
InByaW1hcnlLZXkiOiIyMzctMjMtNzczNiJ9JwordGVzdEFkdmFuY2VNdWx0aXBsZSgpCit0cmFu
cyA9IGRiLnRyYW5zYWN0aW9uKG9iamVjdFN0b3JlTmFtZSkKK3N0b3JlID0gdHJhbnMub2JqZWN0
U3RvcmUob2JqZWN0U3RvcmVOYW1lKQorcmVxdWVzdCA9IHN0b3JlLm9wZW5DdXJzb3IobnVsbCwg
bnVsbCkKK2N1cnNvci5hZHZhbmNlKDMpCitQQVNTICd7ImtleSI6IjIzNy0yMy03NzM1IiwidmFs
dWUiOnsibmFtZSI6IlN1ZSIsImhlaWdodCI6NTgsIndlaWdodCI6MTMwfSwicHJpbWFyeUtleSI6
IjIzNy0yMy03NzM1In0nIGlzICd7ImtleSI6IjIzNy0yMy03NzM1IiwidmFsdWUiOnsibmFtZSI6
IlN1ZSIsImhlaWdodCI6NTgsIndlaWdodCI6MTMwfSwicHJpbWFyeUtleSI6IjIzNy0yMy03NzM1
In0nCit0ZXN0QWR2YW5jZUluZGV4KCkKK3RyYW5zID0gZGIudHJhbnNhY3Rpb24ob2JqZWN0U3Rv
cmVOYW1lKQorc3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZShvYmplY3RTdG9yZU5hbWUpCityZXF1
ZXN0ID0gc3RvcmUub3BlbkN1cnNvcihudWxsLCBudWxsKQorY3Vyc29yLmFkdmFuY2UoMykKK1BB
U1MgJ3sia2V5IjoiSmVmIiwidmFsdWUiOnsibmFtZSI6IkplZiIsImhlaWdodCI6NjUsIndlaWdo
dCI6MTIwfSwicHJpbWFyeUtleSI6IjIzNy0yMy03NzM5In0nIGlzICd7ImtleSI6IkplZiIsInZh
bHVlIjp7Im5hbWUiOiJKZWYiLCJoZWlnaHQiOjY1LCJ3ZWlnaHQiOjEyMH0sInByaW1hcnlLZXki
OiIyMzctMjMtNzczOSJ9JwordGVzdEFkdmFuY2VJbmRleE5vRHVwZSgpCit0cmFucyA9IGRiLnRy
YW5zYWN0aW9uKG9iamVjdFN0b3JlTmFtZSkKK3N0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUob2Jq
ZWN0U3RvcmVOYW1lKQorcmVxdWVzdCA9IHN0b3JlLm9wZW5DdXJzb3IobnVsbCwgMSkKK2N1cnNv
ci5hZHZhbmNlKDMpCitQQVNTICd7ImtleSI6MTMwLCJ2YWx1ZSI6eyJuYW1lIjoiU3VlIiwiaGVp
Z2h0Ijo1OCwid2VpZ2h0IjoxMzB9LCJwcmltYXJ5S2V5IjoiMjM3LTIzLTc3MzUifScgaXMgJ3si
a2V5IjoxMzAsInZhbHVlIjp7Im5hbWUiOiJTdWUiLCJoZWlnaHQiOjU4LCJ3ZWlnaHQiOjEzMH0s
InByaW1hcnlLZXkiOiIyMzctMjMtNzczNSJ9JwordGVzdEFkdmFuY2VJbmRleFByZXYoKQordHJh
bnMgPSBkYi50cmFuc2FjdGlvbihvYmplY3RTdG9yZU5hbWUpCitzdG9yZSA9IHRyYW5zLm9iamVj
dFN0b3JlKG9iamVjdFN0b3JlTmFtZSkKK3JlcXVlc3QgPSBzdG9yZS5vcGVuQ3Vyc29yKG51bGws
IDIpCitjdXJzb3IuYWR2YW5jZSgzKQorUEFTUyAneyJrZXkiOjE1MCwidmFsdWUiOnsibmFtZSI6
IkpvZSIsImhlaWdodCI6NjUsIndlaWdodCI6MTUwfSwicHJpbWFyeUtleSI6IjIzNy0yMy03NzM2
In0nIGlzICd7ImtleSI6MTUwLCJ2YWx1ZSI6eyJuYW1lIjoiSm9lIiwiaGVpZ2h0Ijo2NSwid2Vp
Z2h0IjoxNTB9LCJwcmltYXJ5S2V5IjoiMjM3LTIzLTc3MzYifScKK3Rlc3RBZHZhbmNlSW5kZXhQ
cmV2Tm9EdXBlKCkKK3RyYW5zID0gZGIudHJhbnNhY3Rpb24ob2JqZWN0U3RvcmVOYW1lKQorc3Rv
cmUgPSB0cmFucy5vYmplY3RTdG9yZShvYmplY3RTdG9yZU5hbWUpCityZXF1ZXN0ID0gc3RvcmUu
b3BlbkN1cnNvcihudWxsLCAzKQorY3Vyc29yLmFkdmFuY2UoMykKK1BBU1MgJ3sia2V5IjoxMjAs
InZhbHVlIjp7Im5hbWUiOiJCb2IiLCJoZWlnaHQiOjYwLCJ3ZWlnaHQiOjEyMH0sInByaW1hcnlL
ZXkiOiIyMzctMjMtNzczMiJ9JyBpcyAneyJrZXkiOjEyMCwidmFsdWUiOnsibmFtZSI6IkJvYiIs
ImhlaWdodCI6NjAsIndlaWdodCI6MTIwfSwicHJpbWFyeUtleSI6IjIzNy0yMy03NzMyIn0nCit0
ZXN0QWR2YW5jZVRvRW5kKCkKK3RyYW5zID0gZGIudHJhbnNhY3Rpb24ob2JqZWN0U3RvcmVOYW1l
KQorc3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZShvYmplY3RTdG9yZU5hbWUpCityZXF1ZXN0ID0g
c3RvcmUub3BlbkN1cnNvcihudWxsLCBudWxsKQorY3Vyc29yLmFkdmFuY2UoMTAwKQorUEFTUyAn
bnVsbCcgaXMgJ251bGwnCit0ZXN0UHJlZmV0Y2hJblJhbmdlKCkKK3RyYW5zID0gZGIudHJhbnNh
Y3Rpb24ob2JqZWN0U3RvcmVOYW1lKQorb2JqZWN0U3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZShv
YmplY3RTdG9yZU5hbWUpCityZXF1ZXN0ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNvcigpCitQQVNT
ICd7ImtleSI6IjIzNy0yMy03NzMyIiwidmFsdWUiOnsibmFtZSI6IkJvYiIsImhlaWdodCI6NjAs
IndlaWdodCI6MTIwfSwicHJpbWFyeUtleSI6IjIzNy0yMy03NzMyIn0nIGlzICd7ImtleSI6IjIz
Ny0yMy03NzMyIiwidmFsdWUiOnsibmFtZSI6IkJvYiIsImhlaWdodCI6NjAsIndlaWdodCI6MTIw
fSwicHJpbWFyeUtleSI6IjIzNy0yMy03NzMyIn0nCitjdXJzb3IuY29udGludWUoKQorUEFTUyAn
eyJrZXkiOiIyMzctMjMtNzczMyIsInZhbHVlIjp7Im5hbWUiOiJBbm4iLCJoZWlnaHQiOjUyLCJ3
ZWlnaHQiOjExMH0sInByaW1hcnlLZXkiOiIyMzctMjMtNzczMyJ9JyBpcyAneyJrZXkiOiIyMzct
MjMtNzczMyIsInZhbHVlIjp7Im5hbWUiOiJBbm4iLCJoZWlnaHQiOjUyLCJ3ZWlnaHQiOjExMH0s
InByaW1hcnlLZXkiOiIyMzctMjMtNzczMyJ9JworY3Vyc29yLmNvbnRpbnVlKCkKK1BBU1MgJ3si
a2V5IjoiMjM3LTIzLTc3MzQiLCJ2YWx1ZSI6eyJuYW1lIjoiUm9uIiwiaGVpZ2h0Ijo3Mywid2Vp
Z2h0IjoxODB9LCJwcmltYXJ5S2V5IjoiMjM3LTIzLTc3MzQifScgaXMgJ3sia2V5IjoiMjM3LTIz
LTc3MzQiLCJ2YWx1ZSI6eyJuYW1lIjoiUm9uIiwiaGVpZ2h0Ijo3Mywid2VpZ2h0IjoxODB9LCJw
cmltYXJ5S2V5IjoiMjM3LTIzLTc3MzQifScKK2N1cnNvci5jb250aW51ZSgpCitQQVNTICd7Imtl
eSI6IjIzNy0yMy03NzM1IiwidmFsdWUiOnsibmFtZSI6IlN1ZSIsImhlaWdodCI6NTgsIndlaWdo
dCI6MTMwfSwicHJpbWFyeUtleSI6IjIzNy0yMy03NzM1In0nIGlzICd7ImtleSI6IjIzNy0yMy03
NzM1IiwidmFsdWUiOnsibmFtZSI6IlN1ZSIsImhlaWdodCI6NTgsIndlaWdodCI6MTMwfSwicHJp
bWFyeUtleSI6IjIzNy0yMy03NzM1In0nCitjdXJzb3IuYWR2YW5jZSgyKQorUEFTUyAneyJrZXki
OiIyMzctMjMtNzczNyIsInZhbHVlIjp7Im5hbWUiOiJQYXQiLCJoZWlnaHQiOjY1LCJ3ZWlnaHQi
OjEwMH0sInByaW1hcnlLZXkiOiIyMzctMjMtNzczNyJ9JyBpcyAneyJrZXkiOiIyMzctMjMtNzcz
NyIsInZhbHVlIjp7Im5hbWUiOiJQYXQiLCJoZWlnaHQiOjY1LCJ3ZWlnaHQiOjEwMH0sInByaW1h
cnlLZXkiOiIyMzctMjMtNzczNyJ9JworY3Vyc29yLmNvbnRpbnVlKCkKK1BBU1MgJ3sia2V5Ijoi
MjM3LTIzLTc3MzgiLCJ2YWx1ZSI6eyJuYW1lIjoiTGVvIiwiaGVpZ2h0Ijo2NSwid2VpZ2h0Ijox
ODB9LCJwcmltYXJ5S2V5IjoiMjM3LTIzLTc3MzgifScgaXMgJ3sia2V5IjoiMjM3LTIzLTc3Mzgi
LCJ2YWx1ZSI6eyJuYW1lIjoiTGVvIiwiaGVpZ2h0Ijo2NSwid2VpZ2h0IjoxODB9LCJwcmltYXJ5
S2V5IjoiMjM3LTIzLTc3MzgifScKK2N1cnNvci5jb250aW51ZSgpCitQQVNTICd7ImtleSI6IjIz
Ny0yMy03NzM5IiwidmFsdWUiOnsibmFtZSI6IkplZiIsImhlaWdodCI6NjUsIndlaWdodCI6MTIw
fSwicHJpbWFyeUtleSI6IjIzNy0yMy03NzM5In0nIGlzICd7ImtleSI6IjIzNy0yMy03NzM5Iiwi
dmFsdWUiOnsibmFtZSI6IkplZiIsImhlaWdodCI6NjUsIndlaWdodCI6MTIwfSwicHJpbWFyeUtl
eSI6IjIzNy0yMy03NzM5In0nCitjdXJzb3IuY29udGludWUoKQorUEFTUyAneyJrZXkiOiIyMzct
MjMtNzc0MCIsInZhbHVlIjp7Im5hbWUiOiJTYW0iLCJoZWlnaHQiOjcxLCJ3ZWlnaHQiOjExMH0s
InByaW1hcnlLZXkiOiIyMzctMjMtNzc0MCJ9JyBpcyAneyJrZXkiOiIyMzctMjMtNzc0MCIsInZh
bHVlIjp7Im5hbWUiOiJTYW0iLCJoZWlnaHQiOjcxLCJ3ZWlnaHQiOjExMH0sInByaW1hcnlLZXki
OiIyMzctMjMtNzc0MCJ9JworY3Vyc29yLmNvbnRpbnVlKCkKK1BBU1MgJ3sia2V5IjoiMjM3LTIz
LTc3NDEiLCJ2YWx1ZSI6eyJuYW1lIjoiQnVnIiwiaGVpZ2h0Ijo2Mywid2VpZ2h0IjoxMDB9LCJw
cmltYXJ5S2V5IjoiMjM3LTIzLTc3NDEifScgaXMgJ3sia2V5IjoiMjM3LTIzLTc3NDEiLCJ2YWx1
ZSI6eyJuYW1lIjoiQnVnIiwiaGVpZ2h0Ijo2Mywid2VpZ2h0IjoxMDB9LCJwcmltYXJ5S2V5Ijoi
MjM3LTIzLTc3NDEifScKK2N1cnNvci5jb250aW51ZSgpCitQQVNTICd7ImtleSI6IjIzNy0yMy03
NzQyIiwidmFsdWUiOnsibmFtZSI6IlR1YiIsImhlaWdodCI6NjksIndlaWdodCI6MTgwfSwicHJp
bWFyeUtleSI6IjIzNy0yMy03NzQyIn0nIGlzICd7ImtleSI6IjIzNy0yMy03NzQyIiwidmFsdWUi
OnsibmFtZSI6IlR1YiIsImhlaWdodCI6NjksIndlaWdodCI6MTgwfSwicHJpbWFyeUtleSI6IjIz
Ny0yMy03NzQyIn0nCitjdXJzb3IuY29udGludWUoKQorUEFTUyAneyJrZXkiOiIyMzctMjMtNzc0
MyIsInZhbHVlIjp7Im5hbWUiOiJSdWciLCJoZWlnaHQiOjc3LCJ3ZWlnaHQiOjEyMH0sInByaW1h
cnlLZXkiOiIyMzctMjMtNzc0MyJ9JyBpcyAneyJrZXkiOiIyMzctMjMtNzc0MyIsInZhbHVlIjp7
Im5hbWUiOiJSdWciLCJoZWlnaHQiOjc3LCJ3ZWlnaHQiOjEyMH0sInByaW1hcnlLZXkiOiIyMzct
MjMtNzc0MyJ9JworY3Vyc29yLmNvbnRpbnVlKCkKK1BBU1MgJ3sia2V5IjoiMjM3LTIzLTc3NDQi
LCJ2YWx1ZSI6eyJuYW1lIjoiUHVnIiwiaGVpZ2h0Ijo2Niwid2VpZ2h0IjoxMTB9LCJwcmltYXJ5
S2V5IjoiMjM3LTIzLTc3NDQifScgaXMgJ3sia2V5IjoiMjM3LTIzLTc3NDQiLCJ2YWx1ZSI6eyJu
YW1lIjoiUHVnIiwiaGVpZ2h0Ijo2Niwid2VpZ2h0IjoxMTB9LCJwcmltYXJ5S2V5IjoiMjM3LTIz
LTc3NDQifScKK2N1cnNvci5jb250aW51ZSgpCit0ZXN0UHJlZmV0Y2hPdXRPZlJhbmdlKCkKK3Ry
YW5zID0gZGIudHJhbnNhY3Rpb24ob2JqZWN0U3RvcmVOYW1lKQorb2JqZWN0U3RvcmUgPSB0cmFu
cy5vYmplY3RTdG9yZShvYmplY3RTdG9yZU5hbWUpCityZXF1ZXN0ID0gb2JqZWN0U3RvcmUub3Bl
bkN1cnNvcigpCitQQVNTICd7ImtleSI6IjIzNy0yMy03NzMyIiwidmFsdWUiOnsibmFtZSI6IkJv
YiIsImhlaWdodCI6NjAsIndlaWdodCI6MTIwfSwicHJpbWFyeUtleSI6IjIzNy0yMy03NzMyIn0n
IGlzICd7ImtleSI6IjIzNy0yMy03NzMyIiwidmFsdWUiOnsibmFtZSI6IkJvYiIsImhlaWdodCI6
NjAsIndlaWdodCI6MTIwfSwicHJpbWFyeUtleSI6IjIzNy0yMy03NzMyIn0nCitjdXJzb3IuY29u
dGludWUoKQorUEFTUyAneyJrZXkiOiIyMzctMjMtNzczMyIsInZhbHVlIjp7Im5hbWUiOiJBbm4i
LCJoZWlnaHQiOjUyLCJ3ZWlnaHQiOjExMH0sInByaW1hcnlLZXkiOiIyMzctMjMtNzczMyJ9JyBp
cyAneyJrZXkiOiIyMzctMjMtNzczMyIsInZhbHVlIjp7Im5hbWUiOiJBbm4iLCJoZWlnaHQiOjUy
LCJ3ZWlnaHQiOjExMH0sInByaW1hcnlLZXkiOiIyMzctMjMtNzczMyJ9JworY3Vyc29yLmNvbnRp
bnVlKCkKK1BBU1MgJ3sia2V5IjoiMjM3LTIzLTc3MzQiLCJ2YWx1ZSI6eyJuYW1lIjoiUm9uIiwi
aGVpZ2h0Ijo3Mywid2VpZ2h0IjoxODB9LCJwcmltYXJ5S2V5IjoiMjM3LTIzLTc3MzQifScgaXMg
J3sia2V5IjoiMjM3LTIzLTc3MzQiLCJ2YWx1ZSI6eyJuYW1lIjoiUm9uIiwiaGVpZ2h0Ijo3Mywi
d2VpZ2h0IjoxODB9LCJwcmltYXJ5S2V5IjoiMjM3LTIzLTc3MzQifScKK2N1cnNvci5jb250aW51
ZSgpCitQQVNTICd7ImtleSI6IjIzNy0yMy03NzM1IiwidmFsdWUiOnsibmFtZSI6IlN1ZSIsImhl
aWdodCI6NTgsIndlaWdodCI6MTMwfSwicHJpbWFyeUtleSI6IjIzNy0yMy03NzM1In0nIGlzICd7
ImtleSI6IjIzNy0yMy03NzM1IiwidmFsdWUiOnsibmFtZSI6IlN1ZSIsImhlaWdodCI6NTgsIndl
aWdodCI6MTMwfSwicHJpbWFyeUtleSI6IjIzNy0yMy03NzM1In0nCitjdXJzb3IuYWR2YW5jZSg3
KQorUEFTUyAneyJrZXkiOiIyMzctMjMtNzc0MiIsInZhbHVlIjp7Im5hbWUiOiJUdWIiLCJoZWln
aHQiOjY5LCJ3ZWlnaHQiOjE4MH0sInByaW1hcnlLZXkiOiIyMzctMjMtNzc0MiJ9JyBpcyAneyJr
ZXkiOiIyMzctMjMtNzc0MiIsInZhbHVlIjp7Im5hbWUiOiJUdWIiLCJoZWlnaHQiOjY5LCJ3ZWln
aHQiOjE4MH0sInByaW1hcnlLZXkiOiIyMzctMjMtNzc0MiJ9JworY3Vyc29yLmNvbnRpbnVlKCkK
K1BBU1MgJ3sia2V5IjoiMjM3LTIzLTc3NDMiLCJ2YWx1ZSI6eyJuYW1lIjoiUnVnIiwiaGVpZ2h0
Ijo3Nywid2VpZ2h0IjoxMjB9LCJwcmltYXJ5S2V5IjoiMjM3LTIzLTc3NDMifScgaXMgJ3sia2V5
IjoiMjM3LTIzLTc3NDMiLCJ2YWx1ZSI6eyJuYW1lIjoiUnVnIiwiaGVpZ2h0Ijo3Nywid2VpZ2h0
IjoxMjB9LCJwcmltYXJ5S2V5IjoiMjM3LTIzLTc3NDMifScKK2N1cnNvci5jb250aW51ZSgpCitQ
QVNTICd7ImtleSI6IjIzNy0yMy03NzQ0IiwidmFsdWUiOnsibmFtZSI6IlB1ZyIsImhlaWdodCI6
NjYsIndlaWdodCI6MTEwfSwicHJpbWFyeUtleSI6IjIzNy0yMy03NzQ0In0nIGlzICd7ImtleSI6
IjIzNy0yMy03NzQ0IiwidmFsdWUiOnsibmFtZSI6IlB1ZyIsImhlaWdodCI6NjYsIndlaWdodCI6
MTEwfSwicHJpbWFyeUtleSI6IjIzNy0yMy03NzQ0In0nCitjdXJzb3IuY29udGludWUoKQordGVz
dEJhZEFkdmFuY2UoKQordHJhbnMgPSBkYi50cmFuc2FjdGlvbihvYmplY3RTdG9yZU5hbWUsIElE
QlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpCitvYmplY3RTdG9yZSA9IHRyYW5zLm9iamVjdFN0b3Jl
KG9iamVjdFN0b3JlTmFtZSkKK3JlcXVlc3QgPSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCkKK0V4
cGVjdGluZyBleGNlcHRpb24gZnJvbSBjdXJzb3IuYWR2YW5jZSgwKQorUEFTUyBFeGNlcHRpb24g
d2FzIHRocm93bi4KK1BBU1MgY29kZSBpcyBET01FeGNlcHRpb24uVFlQRV9NSVNNQVRDSF9FUlIK
K3Rlc3REZWxldGUoKQordHJhbnMgPSBkYi50cmFuc2FjdGlvbihvYmplY3RTdG9yZU5hbWUsIElE
QlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpCitvYmplY3RTdG9yZSA9IHRyYW5zLm9iamVjdFN0b3Jl
KG9iamVjdFN0b3JlTmFtZSkKK3JlcXVlc3QgPSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCkKK1BB
U1MgJ3sia2V5IjoiMjM3LTIzLTc3MzIiLCJ2YWx1ZSI6eyJuYW1lIjoiQm9iIiwiaGVpZ2h0Ijo2
MCwid2VpZ2h0IjoxMjB9LCJwcmltYXJ5S2V5IjoiMjM3LTIzLTc3MzIifScgaXMgJ3sia2V5Ijoi
MjM3LTIzLTc3MzIiLCJ2YWx1ZSI6eyJuYW1lIjoiQm9iIiwiaGVpZ2h0Ijo2MCwid2VpZ2h0Ijox
MjB9LCJwcmltYXJ5S2V5IjoiMjM3LTIzLTc3MzIifScKK2N1cnNvci5hZHZhbmNlKDEpCitQQVNT
ICd7ImtleSI6IjIzNy0yMy03NzMzIiwidmFsdWUiOnsibmFtZSI6IkFubiIsImhlaWdodCI6NTIs
IndlaWdodCI6MTEwfSwicHJpbWFyeUtleSI6IjIzNy0yMy03NzMzIn0nIGlzICd7ImtleSI6IjIz
Ny0yMy03NzMzIiwidmFsdWUiOnsibmFtZSI6IkFubiIsImhlaWdodCI6NTIsIndlaWdodCI6MTEw
fSwicHJpbWFyeUtleSI6IjIzNy0yMy03NzMzIn0nCitjdXJzb3IuYWR2YW5jZSgxKQorUEFTUyAn
eyJrZXkiOiIyMzctMjMtNzczNCIsInZhbHVlIjp7Im5hbWUiOiJSb24iLCJoZWlnaHQiOjczLCJ3
ZWlnaHQiOjE4MH0sInByaW1hcnlLZXkiOiIyMzctMjMtNzczNCJ9JyBpcyAneyJrZXkiOiIyMzct
MjMtNzczNCIsInZhbHVlIjp7Im5hbWUiOiJSb24iLCJoZWlnaHQiOjczLCJ3ZWlnaHQiOjE4MH0s
InByaW1hcnlLZXkiOiIyMzctMjMtNzczNCJ9JworY3Vyc29yLmRlbGV0ZSgpCitQQVNTICd7Imtl
eSI6IjIzNy0yMy03NzM4IiwidmFsdWUiOnsibmFtZSI6IkxlbyIsImhlaWdodCI6NjUsIndlaWdo
dCI6MTgwfSwicHJpbWFyeUtleSI6IjIzNy0yMy03NzM4In0nIGlzICd7ImtleSI6IjIzNy0yMy03
NzM4IiwidmFsdWUiOnsibmFtZSI6IkxlbyIsImhlaWdodCI6NjUsIndlaWdodCI6MTgwfSwicHJp
bWFyeUtleSI6IjIzNy0yMy03NzM4In0nCitjdXJzb3IuYWR2YW5jZSgxKQorUEFTUyAneyJrZXki
OiIyMzctMjMtNzczOSIsInZhbHVlIjp7Im5hbWUiOiJKZWYiLCJoZWlnaHQiOjY1LCJ3ZWlnaHQi
OjEyMH0sInByaW1hcnlLZXkiOiIyMzctMjMtNzczOSJ9JyBpcyAneyJrZXkiOiIyMzctMjMtNzcz
OSIsInZhbHVlIjp7Im5hbWUiOiJKZWYiLCJoZWlnaHQiOjY1LCJ3ZWlnaHQiOjEyMH0sInByaW1h
cnlLZXkiOiIyMzctMjMtNzczOSJ9JworY3Vyc29yLmFkdmFuY2UoMSkKK1BBU1MgJ3sia2V5Ijoi
MjM3LTIzLTc3NDAiLCJ2YWx1ZSI6eyJuYW1lIjoiU2FtIiwiaGVpZ2h0Ijo3MSwid2VpZ2h0Ijox
MTB9LCJwcmltYXJ5S2V5IjoiMjM3LTIzLTc3NDAifScgaXMgJ3sia2V5IjoiMjM3LTIzLTc3NDAi
LCJ2YWx1ZSI6eyJuYW1lIjoiU2FtIiwiaGVpZ2h0Ijo3MSwid2VpZ2h0IjoxMTB9LCJwcmltYXJ5
S2V5IjoiMjM3LTIzLTc3NDAifScKK2N1cnNvci5hZHZhbmNlKDEpCitQQVNTICd7ImtleSI6IjIz
Ny0yMy03NzQxIiwidmFsdWUiOnsibmFtZSI6IkJ1ZyIsImhlaWdodCI6NjMsIndlaWdodCI6MTAw
fSwicHJpbWFyeUtleSI6IjIzNy0yMy03NzQxIn0nIGlzICd7ImtleSI6IjIzNy0yMy03NzQxIiwi
dmFsdWUiOnsibmFtZSI6IkJ1ZyIsImhlaWdodCI6NjMsIndlaWdodCI6MTAwfSwicHJpbWFyeUtl
eSI6IjIzNy0yMy03NzQxIn0nCitjdXJzb3IuYWR2YW5jZSgxKQorUEFTUyAneyJrZXkiOiIyMzct
MjMtNzc0MiIsInZhbHVlIjp7Im5hbWUiOiJUdWIiLCJoZWlnaHQiOjY5LCJ3ZWlnaHQiOjE4MH0s
InByaW1hcnlLZXkiOiIyMzctMjMtNzc0MiJ9JyBpcyAneyJrZXkiOiIyMzctMjMtNzc0MiIsInZh
bHVlIjp7Im5hbWUiOiJUdWIiLCJoZWlnaHQiOjY5LCJ3ZWlnaHQiOjE4MH0sInByaW1hcnlLZXki
OiIyMzctMjMtNzc0MiJ9JworY3Vyc29yLmFkdmFuY2UoMSkKK1BBU1MgJ3sia2V5IjoiMjM3LTIz
LTc3NDMiLCJ2YWx1ZSI6eyJuYW1lIjoiUnVnIiwiaGVpZ2h0Ijo3Nywid2VpZ2h0IjoxMjB9LCJw
cmltYXJ5S2V5IjoiMjM3LTIzLTc3NDMifScgaXMgJ3sia2V5IjoiMjM3LTIzLTc3NDMiLCJ2YWx1
ZSI6eyJuYW1lIjoiUnVnIiwiaGVpZ2h0Ijo3Nywid2VpZ2h0IjoxMjB9LCJwcmltYXJ5S2V5Ijoi
MjM3LTIzLTc3NDMifScKK2N1cnNvci5hZHZhbmNlKDEpCitQQVNTICd7ImtleSI6IjIzNy0yMy03
NzQ0IiwidmFsdWUiOnsibmFtZSI6IlB1ZyIsImhlaWdodCI6NjYsIndlaWdodCI6MTEwfSwicHJp
bWFyeUtleSI6IjIzNy0yMy03NzQ0In0nIGlzICd7ImtleSI6IjIzNy0yMy03NzQ0IiwidmFsdWUi
OnsibmFtZSI6IlB1ZyIsImhlaWdodCI6NjYsIndlaWdodCI6MTEwfSwicHJpbWFyeUtleSI6IjIz
Ny0yMy03NzQ0In0nCitjdXJzb3IuYWR2YW5jZSgxKQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL2N1cnNvci1hZHZhbmNlLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9jdXJzb3ItYWR2YW5jZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUwZTRkYzRjY2ZlOTA4MTEy
MmUxZjRjMTJkMWNiM2ZmZjM5ZDJkODYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItYWR2YW5jZS5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzxo
dG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2N1cnNvci1h
ZHZhbmNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci1hZHZhbmNl
LmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci1hZHZh
bmNlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmUzZjU0NWZjYmJmYTEwNWI5MDZmOTZjZWI1YzJlNmIzNDAzYjI5
M2EKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNv
dXJjZXMvY3Vyc29yLWFkdmFuY2UuanMKQEAgLTAsMCArMSwzNzMgQEAKK2lmICh0aGlzLmltcG9y
dFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQor
CitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIgY3Vyc29yLmFkdmFuY2UoKS4iKTsKKwordmFy
IG9iamVjdFN0b3JlRGF0YSA9IFsKKyAgICB7IGtleTogIjIzNy0yMy03NzMyIiwgdmFsdWU6IHsg
bmFtZTogIkJvYiIsIGhlaWdodDogNjAsIHdlaWdodDogMTIwIH0gfSwKKyAgICB7IGtleTogIjIz
Ny0yMy03NzMzIiwgdmFsdWU6IHsgbmFtZTogIkFubiIsIGhlaWdodDogNTIsIHdlaWdodDogMTEw
IH0gfSwKKyAgICB7IGtleTogIjIzNy0yMy03NzM0IiwgdmFsdWU6IHsgbmFtZTogIlJvbiIsIGhl
aWdodDogNzMsIHdlaWdodDogMTgwIH0gfSwKKyAgICB7IGtleTogIjIzNy0yMy03NzM1IiwgdmFs
dWU6IHsgbmFtZTogIlN1ZSIsIGhlaWdodDogNTgsIHdlaWdodDogMTMwIH0gfSwKKyAgICB7IGtl
eTogIjIzNy0yMy03NzM2IiwgdmFsdWU6IHsgbmFtZTogIkpvZSIsIGhlaWdodDogNjUsIHdlaWdo
dDogMTUwIH0gfSwKKyAgICB7IGtleTogIjIzNy0yMy03NzM3IiwgdmFsdWU6IHsgbmFtZTogIlBh
dCIsIGhlaWdodDogNjUsIHdlaWdodDogMTAwIH0gfSwKKyAgICB7IGtleTogIjIzNy0yMy03NzM4
IiwgdmFsdWU6IHsgbmFtZTogIkxlbyIsIGhlaWdodDogNjUsIHdlaWdodDogMTgwIH0gfSwKKyAg
ICB7IGtleTogIjIzNy0yMy03NzM5IiwgdmFsdWU6IHsgbmFtZTogIkplZiIsIGhlaWdodDogNjUs
IHdlaWdodDogMTIwIH0gfSwKKyAgICB7IGtleTogIjIzNy0yMy03NzQwIiwgdmFsdWU6IHsgbmFt
ZTogIlNhbSIsIGhlaWdodDogNzEsIHdlaWdodDogMTEwIH0gfSwKKyAgICB7IGtleTogIjIzNy0y
My03NzQxIiwgdmFsdWU6IHsgbmFtZTogIkJ1ZyIsIGhlaWdodDogNjMsIHdlaWdodDogMTAwIH0g
fSwKKyAgICB7IGtleTogIjIzNy0yMy03NzQyIiwgdmFsdWU6IHsgbmFtZTogIlR1YiIsIGhlaWdo
dDogNjksIHdlaWdodDogMTgwIH0gfSwKKyAgICB7IGtleTogIjIzNy0yMy03NzQzIiwgdmFsdWU6
IHsgbmFtZTogIlJ1ZyIsIGhlaWdodDogNzcsIHdlaWdodDogMTIwIH0gfSwKKyAgICB7IGtleTog
IjIzNy0yMy03NzQ0IiwgdmFsdWU6IHsgbmFtZTogIlB1ZyIsIGhlaWdodDogNjYsIHdlaWdodDog
MTEwIH0gfSwKK107CisKK3ZhciBpbmRleERhdGEgPSBbCisgICAgeyBuYW1lOiAibmFtZSIsIGtl
eVBhdGg6ICJuYW1lIiwgb3B0aW9uczogeyB1bmlxdWU6IHRydWUgfSB9LAorICAgIHsgbmFtZTog
ImhlaWdodCIsIGtleVBhdGg6ICJoZWlnaHQiLCBvcHRpb25zOiB7IH0gfSwKKyAgICB7IG5hbWU6
ICJ3ZWlnaHQiLCBrZXlQYXRoOiAid2VpZ2h0Iiwgb3B0aW9uczogeyB1bmlxdWU6IGZhbHNlIH0g
fQorXTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsK
KyAgICBuYW1lID0gd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lOworICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
b3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkZWJ1Zygib3BlblN1Y2Nl
c3MoKToiKTsKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIp
OworCisgICAgb2JqZWN0U3RvcmVOYW1lID0gIlBlb3BsZSI7CisKKyAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOworICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gY3JlYXRlQW5kUG9wdWxhdGVPYmplY3RTdG9yZTsKKyAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gY3JlYXRlQW5kUG9w
dWxhdGVPYmplY3RTdG9yZSgpCit7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKwor
ICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmpl
Y3RTdG9yZShvYmplY3RTdG9yZU5hbWUpOyIpOworCisgICAgZGVidWcoIkZpcnN0LCBhZGQgYWxs
IG91ciBkYXRhIHRvIHRoZSBvYmplY3Qgc3RvcmUuIik7CisgICAgYWRkZWREYXRhID0gMDsKKyAg
ICBmb3IgKGkgaW4gb2JqZWN0U3RvcmVEYXRhKSB7CisgICAgICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKG9iamVjdFN0b3JlRGF0YVtpXS52YWx1ZSwg
b2JqZWN0U3RvcmVEYXRhW2ldLmtleSk7Iik7CisgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIH0KKyAgICBjcmVhdGVJbmRleGVzKCk7CisgICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSB0ZXN0QWxsOworfQorCitmdW5jdGlvbiBjcmVhdGVJbmRleGVz
KCkKK3sKKyAgICBkZWJ1ZygiTm93IGNyZWF0ZSB0aGUgaW5kZXhlcy4iKTsKKyAgICBmb3IgKGkg
aW4gaW5kZXhEYXRhKSB7CisgICAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5jcmVhdGVJbmRl
eChpbmRleERhdGFbaV0ubmFtZSwgaW5kZXhEYXRhW2ldLmtleVBhdGgsIGluZGV4RGF0YVtpXS5v
cHRpb25zKTsiKTsKKyAgICB9Cit9CisKKy8vIE1ha2UgYSB0ZXN0IHRoYXQgdXNlcyBjb250aW51
ZSgpIHRvIGdldCB0byBzdGFydFBvcywgdGhlbiBwYXNzZXMKKy8vICdjb3VudCcgdG8gZ2V0IHRv
IGEgcG9zaXRpb24uCitmdW5jdGlvbiBtYWtlQWR2YW5jZVRlc3Qoc3RhcnRQb3MsIGRpcmVjdGlv
biwgY291bnQsIGV4cGVjdGVkVmFsdWUsIGluZGV4TmFtZSkKK3sKKyAgICByZXN1bHQgPSB7fTsK
KyAgICBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKG9iamVjdFN0b3JlTmFtZSki
KTsKKyAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUob2Jq
ZWN0U3RvcmVOYW1lKSIpOworICAgIGlmIChpbmRleE5hbWUpCisgICAgICAgIHN0b3JlID0gc3Rv
cmUuaW5kZXgoaW5kZXhOYW1lKTsKKworICAgIGV2YWxBbmRMb2coInJlcXVlc3QgPSBzdG9yZS5v
cGVuQ3Vyc29yKG51bGwsICIgKyBkaXJlY3Rpb24gKyAiKSIpOworICAgIHZhciBjdXJyZW50UG9z
ID0gMDsKKyAgICBmdW5jdGlvbiBjb250aW51ZVRvVGVzdChldmVudCkKKyAgICB7CisgICAgICAg
IGN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CisgICAgICAgIGlmIChjdXJyZW50UG9zID09
IHN0YXJ0UG9zKSB7CisgICAgICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IuYWR2YW5jZSgiICsg
Y291bnQgKyAiKSIpOworICAgICAgICB9IGVsc2UgaWYgKGN1cnJlbnRQb3MgPT0gc3RhcnRQb3Mg
KyAxKSB7CisgICAgICAgICAgICBydW5UZXN0KGN1cnNvciwgZXhwZWN0ZWRWYWx1ZSk7CisgICAg
ICAgICAgICByZXN1bHQub25zdWNjZXNzKCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICBpZiAoY3Vyc29yID09IG51bGwpCisgICAgICAgICAgICAgICAgcmVzdWx0Lm9uc3VjY2Vzcygp
OworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29y
LmNvbnRpbnVlKCk7Iik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY3VycmVu
dFBvcysrOworICAgIH0KKworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY29udGludWVUb1Rlc3Q7
CisgICAgcmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24oZSkKKyAgICB7CisgICAgICAgIHJlc3Vs
dC5vbmVycm9yKGUpOworICAgIH07CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitmdW5jdGlv
biBzaW1wbGlmeUN1cnNvcihjdXJzb3IpCit7CisgICAgdmFyIG9iaiA9IHt9OworICAgIGlmIChj
dXJzb3IgPT09IG51bGwpIHsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorICAgIGlmICgn
a2V5JyBpbiBjdXJzb3IpIHsKKyAgICAgICAgb2JqLmtleSA9IGN1cnNvci5rZXk7CisgICAgfQor
CisgICAgaWYgKCd2YWx1ZScgaW4gY3Vyc29yKSB7CisgICAgICAgIG9iai52YWx1ZSA9IGN1cnNv
ci52YWx1ZTsKKyAgICB9CisKKyAgICBpZiAoJ3ByaW1hcnlLZXknIGluIGN1cnNvcikgeworICAg
ICAgICBvYmoucHJpbWFyeUtleSA9IGN1cnNvci5wcmltYXJ5S2V5OworICAgIH0KKyAgICByZXR1
cm4gb2JqOworfQorCitmdW5jdGlvbiBydW5UZXN0KGN1cnNvciwgZXhwZWN0ZWRWYWx1ZSkKK3sK
KyAgICBzaG91bGRCZSgiJyIgKyBKU09OLnN0cmluZ2lmeShzaW1wbGlmeUN1cnNvcihjdXJzb3Ip
KSArICInIiwKKyAgICAgICAgICAgICAiJyIgKyBKU09OLnN0cmluZ2lmeShleHBlY3RlZFZhbHVl
KSArICInIik7Cit9CisKK2Z1bmN0aW9uIHRlc3RBbGwoKQoreworICAgIGRlYnVnKCJ0ZXN0QWxs
KCkiKTsKKyAgICB0ZXN0U2ltcGxlKCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RTaW1wbGUoKQorewor
ICAgIGRlYnVnKCJ0ZXN0U2ltcGxlKCkiKTsKKyAgICBtYWtlQWR2YW5jZVRlc3QoMCwgbnVsbCwg
MSwKKyAgICAgICAgICAgICAgICAgICAge2tleTogb2JqZWN0U3RvcmVEYXRhWzFdLmtleSwKKyAg
ICAgICAgICAgICAgICAgICAgIHZhbHVlOiBvYmplY3RTdG9yZURhdGFbMV0udmFsdWUsCisgICAg
ICAgICAgICAgICAgICAgICBwcmltYXJ5S2V5OiBvYmplY3RTdG9yZURhdGFbMV0ua2V5fSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAub25zdWNjZXNzPSB0ZXN0Q29udGludWVUaGVuQWR2YW5j
ZTsKK30KKworZnVuY3Rpb24gdGVzdENvbnRpbnVlVGhlbkFkdmFuY2UoKQoreworICAgIGRlYnVn
KCJ0ZXN0Q29udGludWVUaGVuQWR2YW5jZSgpIik7CisgICAgbWFrZUFkdmFuY2VUZXN0KDMsIG51
bGwsIDEsCisgICAgICAgICAgICAgICAgICAgIC8vIEpvZQorICAgICAgICAgICAgICAgICAgICB7
a2V5OiBvYmplY3RTdG9yZURhdGFbNF0ua2V5LAorICAgICAgICAgICAgICAgICAgICAgdmFsdWU6
IG9iamVjdFN0b3JlRGF0YVs0XS52YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgIHByaW1hcnlL
ZXk6IG9iamVjdFN0b3JlRGF0YVs0XS5rZXl9KQorICAgICAgICAgICAgICAgICAgICAgICAgIC5v
bnN1Y2Nlc3M9IHRlc3RBZHZhbmNlTXVsdGlwbGU7Cit9CisKK2Z1bmN0aW9uIHRlc3RBZHZhbmNl
TXVsdGlwbGUoKQoreworICAgIGRlYnVnKCJ0ZXN0QWR2YW5jZU11bHRpcGxlKCkiKTsKKyAgICBt
YWtlQWR2YW5jZVRlc3QoMCwgbnVsbCwgMywKKyAgICAgICAgICAgICAgICAgICAge2tleTogb2Jq
ZWN0U3RvcmVEYXRhWzNdLmtleSwKKyAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBvYmplY3RT
dG9yZURhdGFbM10udmFsdWUsCisgICAgICAgICAgICAgICAgICAgICBwcmltYXJ5S2V5OiBvYmpl
Y3RTdG9yZURhdGFbM10ua2V5fSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAub25zdWNjZXNz
ID0gdGVzdEFkdmFuY2VJbmRleDsKK30KKworZnVuY3Rpb24gdGVzdEFkdmFuY2VJbmRleCgpCit7
CisgICAgZGVidWcoInRlc3RBZHZhbmNlSW5kZXgoKSIpOworICAgIG1ha2VBZHZhbmNlVGVzdCgw
LCBudWxsLCAzLAorICAgICAgICAgICAgICAgICAgICAvLyBKZWYKKyAgICAgICAgICAgICAgICAg
ICAge2tleTogb2JqZWN0U3RvcmVEYXRhWzddLnZhbHVlLm5hbWUsCisgICAgICAgICAgICAgICAg
ICAgICB2YWx1ZTogb2JqZWN0U3RvcmVEYXRhWzddLnZhbHVlLAorICAgICAgICAgICAgICAgICAg
ICAgcHJpbWFyeUtleTogb2JqZWN0U3RvcmVEYXRhWzddLmtleX0sCisgICAgICAgICAgICAgICAg
ICAgICJuYW1lIikub25zdWNjZXNzID0gdGVzdEFkdmFuY2VJbmRleE5vRHVwZTsKK30KKworZnVu
Y3Rpb24gdGVzdEFkdmFuY2VJbmRleE5vRHVwZSgpCit7CisgICAgZGVidWcoInRlc3RBZHZhbmNl
SW5kZXhOb0R1cGUoKSIpOworICAgIG1ha2VBZHZhbmNlVGVzdCgwLCBJREJDdXJzb3IuTkVYVF9O
T19EVVBMSUNBVEUsIDMsCisgICAgICAgICAgICAgICAgICAgIC8vIFN1ZSAod2VpZ2h0IDEzMCAt
IHNraXBwaW5nIHdlaWdodCAxMDAsIDExMCwgMTIwKQorICAgICAgICAgICAgICAgICAgICB7a2V5
OiBvYmplY3RTdG9yZURhdGFbM10udmFsdWUud2VpZ2h0LAorICAgICAgICAgICAgICAgICAgICAg
dmFsdWU6IG9iamVjdFN0b3JlRGF0YVszXS52YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgIHBy
aW1hcnlLZXk6IG9iamVjdFN0b3JlRGF0YVszXS5rZXl9LAorICAgICAgICAgICAgICAgICAgICAi
d2VpZ2h0Iikub25zdWNjZXNzID0gdGVzdEFkdmFuY2VJbmRleFByZXY7Cit9CisKK2Z1bmN0aW9u
IHRlc3RBZHZhbmNlSW5kZXhQcmV2KCkKK3sKKyAgICBkZWJ1ZygidGVzdEFkdmFuY2VJbmRleFBy
ZXYoKSIpOworICAgIG1ha2VBZHZhbmNlVGVzdCgwLCBJREJDdXJzb3IuUFJFViwgMywKKyAgICAg
ICAgICAgICAgICAgICAgLy8gQm9iICh3ZWlnaHQgMTIwIC0gc2tpcHBpbmcgd2VpZ2h0cyAxODAs
IDE1MCwgMTMwKQorICAgICAgICAgICAgICAgICAgICB7a2V5OiBvYmplY3RTdG9yZURhdGFbNF0u
dmFsdWUud2VpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IG9iamVjdFN0b3JlRGF0
YVs0XS52YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgIHByaW1hcnlLZXk6IG9iamVjdFN0b3Jl
RGF0YVs0XS5rZXl9LAorICAgICAgICAgICAgICAgICAgICAid2VpZ2h0Iikub25zdWNjZXNzID0g
dGVzdEFkdmFuY2VJbmRleFByZXZOb0R1cGU7Cit9CisKK2Z1bmN0aW9uIHRlc3RBZHZhbmNlSW5k
ZXhQcmV2Tm9EdXBlKCkKK3sKKyAgICBkZWJ1ZygidGVzdEFkdmFuY2VJbmRleFByZXZOb0R1cGUo
KSIpOworICAgIG1ha2VBZHZhbmNlVGVzdCgwLCBJREJDdXJzb3IuUFJFVl9OT19EVVBMSUNBVEUs
IDMsCisgICAgICAgICAgICAgICAgICAgIC8vIEJvYiAod2VpZ2h0IDEyMCAtIHNraXBwaW5nIHdl
aWdodHMgMTgwLCAxNTAsIDEzMCkKKyAgICAgICAgICAgICAgICAgICAge2tleTogb2JqZWN0U3Rv
cmVEYXRhWzBdLnZhbHVlLndlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBvYmpl
Y3RTdG9yZURhdGFbMF0udmFsdWUsCisgICAgICAgICAgICAgICAgICAgICBwcmltYXJ5S2V5OiBv
YmplY3RTdG9yZURhdGFbMF0ua2V5fSwKKyAgICAgICAgICAgICAgICAgICAgIndlaWdodCIpLm9u
c3VjY2VzcyA9IHRlc3RBZHZhbmNlVG9FbmQ7Cit9CisKK2Z1bmN0aW9uIHRlc3RBZHZhbmNlVG9F
bmQoKQoreworICAgIGRlYnVnKCJ0ZXN0QWR2YW5jZVRvRW5kKCkiKTsKKyAgICBtYWtlQWR2YW5j
ZVRlc3QoMCwgbnVsbCwgMTAwLCBudWxsKQorICAgICAgICAub25zdWNjZXNzID0gdGVzdFByZWZl
dGNoSW5SYW5nZTsKK30KKworLy8gTWFrZSBzdXJlIHRoZSBwcmVmZXRjaGluZyB0aGF0IGV4aXN0
cyBvbiBzb21lIHBsYXRmb3JtcyAoY2hyb21pdW0pCisvLyBkb2Vzbid0IG1lc3Mgd2l0aCBhZHZh
bmNlKCksIG9yIHZpY2UgdmVyc2EuCitmdW5jdGlvbiB0ZXN0UHJlZmV0Y2hJblJhbmdlKCkKK3sK
KyAgICBkZWJ1ZygidGVzdFByZWZldGNoSW5SYW5nZSgpIik7CisgICAgdmFyIGtQcmVmZXRjaENv
bnRpbnVlVGhyZXNob2xkID0gMjsKKyAgICBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0
aW9uKG9iamVjdFN0b3JlTmFtZSkiKTsKKyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9i
amVjdFN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUob2JqZWN0U3RvcmVOYW1lKSIpOworCisgICAg
ZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLm9wZW5DdXJzb3IoKSIpOworCisgICAg
dmFyIGN1cnJlbnRQb3MgPSAwOworICAgIGZ1bmN0aW9uIHByZWZldGNoKCkKKyAgICB7CisgICAg
ICAgIGN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CisKKyAgICAgICAgaWYgKCFjdXJzb3Ip
IHsKKyAgICAgICAgICAgIHRlc3RQcmVmZXRjaE91dE9mUmFuZ2UoKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHJ1blRlc3QoY3Vyc29yLCB7a2V5OiBvYmplY3RT
dG9yZURhdGFbY3VycmVudFBvc10ua2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVl
OiBvYmplY3RTdG9yZURhdGFbY3VycmVudFBvc10udmFsdWUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgcHJpbWFyeUtleTogb2JqZWN0U3RvcmVEYXRhW2N1cnJlbnRQb3NdLmtleX0pOworCisg
ICAgICAgIC8vIGZvcmNlIHNvbWUgcHJlZmV0Y2hpbmcsCisgICAgICAgIGlmIChjdXJyZW50UG9z
IDwgKGtQcmVmZXRjaENvbnRpbnVlVGhyZXNob2xkKzEpKSB7CisgICAgICAgICAgICBldmFsQW5k
TG9nKCJjdXJzb3IuY29udGludWUoKSIpOworICAgICAgICAgICAgY3VycmVudFBvcysrOworICAg
ICAgICB9IGVsc2UgaWYgKGN1cnJlbnRQb3MgPT0gKGtQcmVmZXRjaENvbnRpbnVlVGhyZXNob2xk
KzEpKSB7CisgICAgICAgICAgICAvLyBzdGF5IHdpdGhpbiB0aGUgcHJlZmV0Y2ggcmFuZ2UKKyAg
ICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5hZHZhbmNlKDIpIik7CisgICAgICAgICAgICBj
dXJyZW50UG9zICs9IDI7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyB3ZSdyZSBq
dXN0IHBhc3QgdGhlIHRocmVzaG9sZAorICAgICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNv
bnRpbnVlKCkiKTsKKyAgICAgICAgICAgIGN1cnJlbnRQb3MrKzsKKyAgICAgICAgfQorICAgIH0K
KyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHByZWZldGNoOworICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCisvLyBNYWtlIHN1cmUgdGhlIHByZWZldGNo
aW5nIHRoYXQgZXhpc3RzIG9uIHNvbWUgcGxhdGZvcm1zIChjaHJvbWl1bSkKKy8vIGRvZXNuJ3Qg
bWVzcyB3aXRoIGFkdmFuY2UoKSwgb3IgdmljZSB2ZXJzYS4KK2Z1bmN0aW9uIHRlc3RQcmVmZXRj
aE91dE9mUmFuZ2UoKQoreworICAgIGRlYnVnKCJ0ZXN0UHJlZmV0Y2hPdXRPZlJhbmdlKCkiKTsK
KyAgICB2YXIga1ByZWZldGNoQ29udGludWVUaHJlc2hvbGQgPSAyOworICAgIGV2YWxBbmRMb2co
InRyYW5zID0gZGIudHJhbnNhY3Rpb24ob2JqZWN0U3RvcmVOYW1lKSIpOworICAgIG9iamVjdFN0
b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZShvYmplY3RT
dG9yZU5hbWUpIik7CisKKyAgICBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUub3Bl
bkN1cnNvcigpIik7CisKKyAgICB2YXIgY3VycmVudFBvcyA9IDA7CisgICAgZnVuY3Rpb24gcHJl
ZmV0Y2goKQorICAgIHsKKyAgICAgICAgY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKKwor
ICAgICAgICBpZiAoIWN1cnNvcikgeworICAgICAgICAgICAgdGVzdEJhZEFkdmFuY2UoKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHJ1blRlc3QoY3Vyc29yLCB7
a2V5OiBvYmplY3RTdG9yZURhdGFbY3VycmVudFBvc10ua2V5LAorICAgICAgICAgICAgICAgICAg
ICAgICAgIHZhbHVlOiBvYmplY3RTdG9yZURhdGFbY3VycmVudFBvc10udmFsdWUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgcHJpbWFyeUtleTogb2JqZWN0U3RvcmVEYXRhW2N1cnJlbnRQb3Nd
LmtleX0pOworCisgICAgICAgIC8vIGZvcmNlIHNvbWUgcHJlZmV0Y2hpbmcsCisgICAgICAgIGlm
IChjdXJyZW50UG9zIDwgKGtQcmVmZXRjaENvbnRpbnVlVGhyZXNob2xkKzEpKSB7CisgICAgICAg
ICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKSIpOworICAgICAgICAgICAgY3VycmVu
dFBvcysrOworICAgICAgICB9IGVsc2UgaWYgKGN1cnJlbnRQb3MgPT0gKGtQcmVmZXRjaENvbnRp
bnVlVGhyZXNob2xkKzEpKSB7CisgICAgICAgICAgICAvLyBhZHZhbmNlIHBhc3QgdGhlIHByZWZl
dGNoIHJhbmdlCisgICAgICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IuYWR2YW5jZSg3KSIpOwor
ICAgICAgICAgICAgY3VycmVudFBvcyArPSA3OworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgLy8gd2UncmUgcGFzdCB0aGUgdGhyZXNob2xkCisgICAgICAgICAgICBldmFsQW5kTG9nKCJj
dXJzb3IuY29udGludWUoKSIpOworICAgICAgICAgICAgY3VycmVudFBvcysrOworICAgICAgICB9
CisgICAgfQorICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcHJlZmV0Y2g7CisgICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHRlc3RCYWRB
ZHZhbmNlKCkKK3sKKyAgICBkZWJ1ZygidGVzdEJhZEFkdmFuY2UoKSIpOworICAgIGV2YWxBbmRM
b2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24ob2JqZWN0U3RvcmVOYW1lLCBJREJUcmFuc2FjdGlv
bi5SRUFEX1dSSVRFKSIpOworICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3Rv
cmUgPSB0cmFucy5vYmplY3RTdG9yZShvYmplY3RTdG9yZU5hbWUpIik7CisKKyAgICBldmFsQW5k
TG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNvcigpIik7CisKKyAgICBmdW5jdGlv
biBhZHZhbmNlQmFkbHkoKQorICAgIHsKKyAgICAgICAgY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJl
c3VsdDsKKworICAgICAgICAvLyBGSVhNRTogdGhpcyBzaG91bGQgdGhyb3cgYSBUeXBlRXJyb3Iu
IChTZWUgSURCQ3Vyc29yLmNwcCkKKyAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiY3Vy
c29yLmFkdmFuY2UoMCkiLCAiRE9NRXhjZXB0aW9uLlRZUEVfTUlTTUFUQ0hfRVJSIik7CisgICAg
ICAgIHRlc3REZWxldGUoKTsKKyAgICB9CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZHZhbmNl
QmFkbHk7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisK
K30KKworZnVuY3Rpb24gdGVzdERlbGV0ZSgpCit7CisgICAgZGVidWcoInRlc3REZWxldGUoKSIp
OworICAgIGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24ob2JqZWN0U3RvcmVOYW1l
LCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOworICAgIG9iamVjdFN0b3JlID0gZXZhbEFu
ZExvZygib2JqZWN0U3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZShvYmplY3RTdG9yZU5hbWUpIik7
CisKKyAgICBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNvcigpIik7
CisKKyAgICB2YXIgY3VycmVudFBvcyA9IDA7CisgICAgZnVuY3Rpb24gZGVsZXRlU2Vjb25kKCkK
KyAgICB7CisgICAgICAgIGN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CisKKyAgICAgICAg
aWYgKCFjdXJzb3IpIHsKKyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgcnVuVGVzdChjdXJzb3IsIHtrZXk6IG9iamVj
dFN0b3JlRGF0YVtjdXJyZW50UG9zXS5rZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgdmFs
dWU6IG9iamVjdFN0b3JlRGF0YVtjdXJyZW50UG9zXS52YWx1ZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICBwcmltYXJ5S2V5OiBvYmplY3RTdG9yZURhdGFbY3VycmVudFBvc10ua2V5fSk7CisK
KworICAgICAgICAvLyB0aGlzIGlzIGluIHRoZSBtaWRkbGUgb2YgdGhlIGRhdGEsIHNvIGl0IHdp
bGwgdGVzdCB2YWxpZGl0eQorICAgICAgICBpZiAoY3VycmVudFBvcyA9PSAyKSB7CisgICAgICAg
ICAgICBldmFsQW5kTG9nKCJjdXJzb3IuZGVsZXRlKCkiKTsKKyAgICAgICAgICAgIGN1cnNvci5h
ZHZhbmNlKDQpOworICAgICAgICAgICAgY3VycmVudFBvcyArPSA0OworICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmFkdmFuY2UoMSkiKTsKKyAgICAgICAg
ICAgIGN1cnJlbnRQb3MrKzsKKyAgICAgICAgfQorCisgICAgfQorICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gZGVsZXRlU2Vjb25kOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOworfQorCit0ZXN0KCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>138892</attachid>
            <date>2012-04-25 16:21:58 -0700</date>
            <delta_ts>2012-04-25 19:22:50 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-84174-20120425162157.patch</filename>
            <type>text/plain</type>
            <size>40560</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE1MjE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzVhYThjYmFkNjE4OWU4
NzNjYzFhNjAyZjNiNGUxNDU5MWJlNDdmOS4uNTY5NmU3YjU1ZWEzNGQ2ZGQ5NjRlMGM5N2ZhYTVh
ZmI0MmUxYWViNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTA0LTIzICBBbGVj
IEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IGlt
cGxlbWVudCBjdXJzb3IuYWR2YW5jZSgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD04NDE3NAorCisgICAgICAgIFJldmlld2VkIGJ5IE9qYW4gVmFmYWku
CisKKyAgICAgICAgSW1wbGVtZW50IElEQkN1cnNvci5hZHZhbmNlKCkgdG8gc3BlYy4KKworICAg
ICAgICBUZXN0OiBzdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItYWR2YW5jZS5odG1sCisKKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuaDoKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29y
OjphZHZhbmNlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL0lEQkN1cnNvci5oOgorICAgICAgICAoSURCQ3Vyc29yKToKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9JREJDdXJzb3IuaWRsOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lE
QkN1cnNvckJhY2tlbmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvckJhY2tl
bmRJbXBsOjphZHZhbmNlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
SURCQ3Vyc29yQmFja2VuZEltcGw6OmFkdmFuY2VJbnRlcm5hbCk6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZEltcGwuaDoKKyAgICAgICAgKElEQkN1cnNvckJh
Y2tlbmRJbXBsKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5k
SW50ZXJmYWNlLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tp
bmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKwogMjAxMi0wNC0yNSAgQ3J5c3RhbCBa
aGFuZyAgPGhhaXpoYW5nQHJpbS5jb20+CiAgICAgICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQ4NzUKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
aW5kZXggNWNhYzExNWY3ZGU2NDRjZWQyMGQxNWI4YzUzNDFiMDc5NjYxY2U4My4uMTM5OTljODM1
NTljODMzYzM3MWI2YzMzMjZhNjc2NTA0MGNjYjFlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyMCBAQAorMjAxMi0wNC0yMyAgQWxlYyBGbGV0dCAgPGFsZWNmbGV0dEBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBpbXBsZW1lbnQgY3Vyc29yLmFkdmFu
Y2UoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQx
NzQKKworICAgICAgICBSZXZpZXdlZCBieSBPamFuIFZhZmFpLgorCisgICAgICAgIEhvb2sgdXAg
Y2hyb21pdW0gSVBDIHRvIElEQkN1cnNvci5hZHZhbmNlKCkuCisKKyAgICAgICAgKiBzcmMvSURC
Q3Vyc29yQmFja2VuZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SURCQ3Vyc29yQmFja2Vu
ZFByb3h5OjphZHZhbmNlKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogc3JjL0lEQkN1
cnNvckJhY2tlbmRQcm94eS5oOgorICAgICAgICAoSURCQ3Vyc29yQmFja2VuZFByb3h5KToKKyAg
ICAgICAgKiBzcmMvV2ViSURCQ3Vyc29ySW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYklE
QkN1cnNvckltcGw6OmFkdmFuY2UpOgorCiAyMDEyLTA0LTI1ICBHYXZpbiBQZXRlcnMgIDxnYXZp
bnBAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtDaHJvbWl1bV0gRml4IHNvbWUgY29uZGl0aW9u
YWwgY29tcGlsYXRpb24gbG9naWMgaW4gUGxhdGZvcm0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmgKaW5kZXggNTUxYjgyNjg5NWI2YzMy
ZDk3YjA3N2YyYTI3YTUyYzI3ZmZkMmZhMy4uZjZiYjEwYWFhYzVjODU5Mzg2OWI4NWRhYzE2N2E5
Yjg0ZTA2NzU3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCQmFja2luZ1N0b3JlLmgKQEAgLTk0LDcgKzk0LDggQEAgcHVibGljOgogICAgICAgICB9Owog
CiAgICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDdXJzb3I+IGNsb25lKCkgPSAwOwotICAgICAg
ICB2aXJ0dWFsIGJvb2wgY29udGludWVGdW5jdGlvbihjb25zdCBJREJLZXkqID0gMCwgSXRlcmF0
b3JTdGF0ZSBuZXh0U3RhdGUgPSBTZWVrKSA9IDA7CisgICAgICAgIHZpcnR1YWwgYm9vbCBhZHZh
bmNlKHVuc2lnbmVkIGxvbmcpID0gMDsKKyAgICAgICAgdmlydHVhbCBib29sIGNvbnRpbnVlRnVu
Y3Rpb24oY29uc3QgSURCS2V5KiA9IDAsIEl0ZXJhdG9yU3RhdGUgPSBTZWVrKSA9IDA7CiAgICAg
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJLZXk+IGtleSgpID0gMDsKICAgICAgICAgdmlydHVh
bCBQYXNzUmVmUHRyPElEQktleT4gcHJpbWFyeUtleSgpID0gMDsKICAgICAgICAgdmlydHVhbCBT
dHJpbmcgdmFsdWUoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJDdXJzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCQ3Vyc29yLmNwcAppbmRleCA3Mzg3ZTFiMWUyOGNjYmJkYmI4OTkwZDBmODRiOWM0NzExYjk4
NmU5Li44YTFiY2Y3ZDAyNjJjY2E5NDQ0MTFiMmJjMDA1MGFhNDRlZWM0ZTZkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAKQEAgLTExNiw2ICsx
MTYsMzQgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJDdXJzb3I6OnVwZGF0ZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmUKICAgICByZXR1cm4gcmVxdWVzdC5yZWxl
YXNlKCk7CiB9CiAKK3ZvaWQgSURCQ3Vyc29yOjphZHZhbmNlKHVuc2lnbmVkIGxvbmcgY291bnQs
IEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIElEQl9UUkFDRSgiSURCQ3Vyc29yOjphZHZhbmNl
Iik7CisgICAgaWYgKCFtX2dvdFZhbHVlKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9F
UlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIW1fcmVxdWVzdCkgeworICAg
ICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpUUkFOU0FDVElPTl9JTkFDVElWRV9FUlI7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIWNvdW50KSB7CisgICAgICAgIC8v
IEZJWE1FOiBzcGVjIHNheXMgd2Ugc2hvdWxkIHRocm93IGEgSmF2YVNjcmlwdCBUeXBlRXJyb3IK
KyAgICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGlmICghbV9yZXF1ZXN0LT5yZXNldFJlYWR5U3RhdGUobV90cmFuc2FjdGlvbi5nZXQo
KSkpIHsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6Tk9UX0FMTE9XRURfRVJS
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1fcmVxdWVzdC0+c2V0Q3Vyc29yKHRoaXMp
OworICAgIG1fZ290VmFsdWUgPSBmYWxzZTsKKyAgICBtX2JhY2tlbmQtPmFkdmFuY2UoY291bnQs
IG1fcmVxdWVzdCwgZWMpOworfQorCiB2b2lkIElEQkN1cnNvcjo6Y29udGludWVGdW5jdGlvbihQ
YXNzUmVmUHRyPElEQktleT4ga2V5LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBJREJfVFJB
Q0UoIklEQkN1cnNvcjo6Y29udGludWUiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCQ3Vyc29yLmgKaW5kZXggMjM3ZjI3MmMwNWUyYjJiNDNkYjc2YzQyNDFiNDhlNzdh
MTNlMjU4NC4uNWI5NTkzYjlmOGRmY2U3NDVjOTlmZmVlY2ZjNzZiZTY4MjVkYjRhYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmgKQEAgLTY3LDYgKzY3
LDcgQEAgcHVibGljOgogICAgIElEQkFueSogc291cmNlKCkgY29uc3Q7CiAKICAgICBQYXNzUmVm
UHRyPElEQlJlcXVlc3Q+IHVwZGF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBhZHZh
bmNlKHVuc2lnbmVkIGxvbmcsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIGNvbnRpbnVlRnVu
Y3Rpb24oUGFzc1JlZlB0cjxJREJLZXk+LCBFeGNlcHRpb25Db2RlJik7CiAgICAgUGFzc1JlZlB0
cjxJREJSZXF1ZXN0PiBkZWxldGVGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXhj
ZXB0aW9uQ29kZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJDdXJzb3IuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
Q3Vyc29yLmlkbAppbmRleCA0MTU0MGUyZjJiYjA3MTMzNWI4MjlmMTcxODdlNmQ2NTIwYTliZGYz
Li44MGViNmIyMzMwZjhiYzY4OGY3OWJkNmEwNzFhODQ5MjM2ODNiYWQ0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuaWRsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5pZGwKQEAgLTQwLDYgKzQwLDgg
QEAgbW9kdWxlIHN0b3JhZ2UgewogCiAgICAgICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25D
b250ZXh0XSBJREJSZXF1ZXN0IHVwZGF0ZShpbiBTZXJpYWxpemVkU2NyaXB0VmFsdWUgdmFsdWUp
CiAgICAgICAgICAgICByYWlzZXMgKElEQkRhdGFiYXNlRXhjZXB0aW9uKTsKKyAgICAgICAgdm9p
ZCBhZHZhbmNlKGluIHVuc2lnbmVkIGxvbmcgY291bnQpCisgICAgICAgICAgICByYWlzZXMgKElE
QkRhdGFiYXNlRXhjZXB0aW9uKTsKICAgICAgICAgW0ltcGxlbWVudGVkQXM9Y29udGludWVGdW5j
dGlvbl0gdm9pZCBjb250aW51ZShpbiBbT3B0aW9uYWxdIElEQktleSBrZXkpCiAgICAgICAgICAg
ICByYWlzZXMgKElEQkRhdGFiYXNlRXhjZXB0aW9uKTsKICAgICAgICAgW0NhbGxXaXRoPVNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQsIEltcGxlbWVudGVkQXM9ZGVsZXRlRnVuY3Rpb25dIElEQlJlcXVl
c3QgZGVsZXRlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkN1cnNvckJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkN1cnNvckJhY2tlbmRJbXBsLmNwcAppbmRleCBjZGJlNzA3ZmNlMTI5NTRiZGQ1Yjlk
OWRmYWJlYWE0MTg4NDQ0ZWJkLi41NDgwM2I1NGZkOGU1NDBjNDczZjQxNGZlNDgzMWEwOTIyMDNi
NjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJz
b3JCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCQ3Vyc29yQmFja2VuZEltcGwuY3BwCkBAIC0xMjQsOCArMTI0LDI3IEBAIHZvaWQgSURCQ3Vy
c29yQmFja2VuZEltcGw6OmNvbnRpbnVlRnVuY3Rpb24oUGFzc1JlZlB0cjxJREJLZXk+IHBycEtl
eSwgUGFzc1JlZlB0CiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlRSQU5TQUNU
SU9OX0lOQUNUSVZFX0VSUjsKIH0KIAotLy8gSU1QT1JUQU5UOiBJZiB0aGlzIGV2ZXIgMSkgZmly
ZXMgYW4gJ2Vycm9yJyBldmVudCBhbmQgMikgaXQncyBwb3NzaWJsZSB0byBmaXJlIGFub3RoZXIg
ZXZlbnQgYWZ0ZXJ3YXJkcywKLS8vICAgICAgICAgICAgSURCUmVxdWVzdDo6aGFzUGVuZGluZ0Fj
dGl2aXR5KCkgd2lsbCBuZWVkIHRvIGJlIG1vZGlmaWVkIHRvIGhhbmRsZSB0aGlzISEhCit2b2lk
IElEQkN1cnNvckJhY2tlbmRJbXBsOjphZHZhbmNlKHVuc2lnbmVkIGxvbmcgY291bnQsIFBhc3NS
ZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIEV4Y2VwdGlvbkNvZGUmIGVjKQorewor
ICAgIElEQl9UUkFDRSgiSURCQ3Vyc29yQmFja2VuZEltcGw6OmFkdmFuY2UiKTsKKworICAgIGlm
ICghbV90cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKGNyZWF0ZUNhbGxiYWNrVGFzaygmSURCQ3Vy
c29yQmFja2VuZEltcGw6OmFkdmFuY2VJbnRlcm5hbCwgdGhpcywgY291bnQsIHBycENhbGxiYWNr
cykpKQorICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpUUkFOU0FDVElPTl9JTkFD
VElWRV9FUlI7Cit9CisKK3ZvaWQgSURCQ3Vyc29yQmFja2VuZEltcGw6OmFkdmFuY2VJbnRlcm5h
bChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW1w
bD4gcHJwQ3Vyc29yLCB1bnNpZ25lZCBsb25nIGNvdW50LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNr
cz4gY2FsbGJhY2tzKQoreworICAgIElEQl9UUkFDRSgiSURCQ3Vyc29yQmFja2VuZEltcGw6OmFk
dmFuY2VJbnRlcm5hbCIpOworICAgIFJlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW1wbD4gY3Vyc29y
ID0gcHJwQ3Vyc29yOworICAgIGlmICghY3Vyc29yLT5tX2N1cnNvciB8fCAhY3Vyc29yLT5tX2N1
cnNvci0+YWR2YW5jZShjb3VudCkpIHsKKyAgICAgICAgY3Vyc29yLT5tX2N1cnNvciA9IDA7Cisg
ICAgICAgIGNhbGxiYWNrcy0+b25TdWNjZXNzKFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6bnVsbFZh
bHVlKCkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY2FsbGJhY2tzLT5vblN1Y2Nl
c3NXaXRoQ29udGludWF0aW9uKCk7Cit9CisKIHZvaWQgSURCQ3Vyc29yQmFja2VuZEltcGw6OmNv
bnRpbnVlRnVuY3Rpb25JbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0
cjxJREJDdXJzb3JCYWNrZW5kSW1wbD4gcHJwQ3Vyc29yLCBQYXNzUmVmUHRyPElEQktleT4gcHJw
S2V5LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewogICAgIElEQl9UUkFD
RSgiSURCQ3Vyc29yQmFja2VuZEltcGw6OmNvbnRpbnVlSW50ZXJuYWwiKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbXBsLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5kSW1wbC5o
CmluZGV4IDRlZTVhYzQwYWU2MjkzMmFmMzQ2ZmU3NTcxMmMyOTczOTY3NWQ5NTEuLmI3YjhlOTI0
YTQwODJhZDhhZDFhOGI0ZGVhZGQ1MjFjMWZkM2UzYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbXBsLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZEltcGwuaApAQCAtNTks
NiArNTksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQktleT4gcHJpbWFy
eUtleSgpIGNvbnN0OwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+IHZhbHVlKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZShQYXNzUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgRXhjZXB0aW9u
Q29kZSYpOworICAgIHZpcnR1YWwgdm9pZCBhZHZhbmNlKHVuc2lnbmVkIGxvbmcsIFBhc3NSZWZQ
dHI8SURCQ2FsbGJhY2tzPiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgdm9pZCBjb250
aW51ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+
LCBFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUZ1bmN0aW9uKFBhc3NS
ZWZQdHI8SURCQ2FsbGJhY2tzPiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgdm9pZCBw
cmVmZXRjaENvbnRpbnVlKGludCBudW1iZXJUb0ZldGNoLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNr
cz4sIEV4Y2VwdGlvbkNvZGUmKTsKQEAgLTY5LDYgKzcwLDcgQEAgcHVibGljOgogcHJpdmF0ZToK
ICAgICBJREJDdXJzb3JCYWNrZW5kSW1wbChQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6Q3Vy
c29yPiwgSURCQ3Vyc29yOjpEaXJlY3Rpb24sIEN1cnNvclR5cGUsIElEQlRyYW5zYWN0aW9uQmFj
a2VuZEludGVyZmFjZSosIElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZSopOwogCisgICAg
c3RhdGljIHZvaWQgYWR2YW5jZUludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNz
UmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbXBsPiwgdW5zaWduZWQgbG9uZywgUGFzc1JlZlB0cjxJ
REJDYWxsYmFja3M+KTsKICAgICBzdGF0aWMgdm9pZCBjb250aW51ZUZ1bmN0aW9uSW50ZXJuYWwo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEltcGw+
LCBQYXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPik7CiAgICAgc3Rh
dGljIHZvaWQgcHJlZmV0Y2hDb250aW51ZUludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbXBsPiwgaW50IG51bWJlclRvRmV0Y2gsIFBh
c3NSZWZQdHI8SURCQ2FsbGJhY2tzPik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2UuaAppbmRleCBi
NTdiYjU4NjhlZTE2Yjg5N2RiNzdkODFkMDVjY2JmNmRiMDc2YzAzLi45NzEyMzI4MjZmZDdhNWQw
M2I5NTU5OWM3MGQ5NWQ4MmFmMTVkZDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZS5oCkBAIC01
OSw2ICs1OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiB2YWx1ZSgpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGUo
UGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNr
cz4sIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFkdmFuY2UodW5zaWdu
ZWQgbG9uZyBjb3VudCwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBFeGNlcHRpb25Db2RlJikg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBjb250aW51ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURCS2V5
PiBrZXksIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgRXhjZXB0aW9uQ29kZSYpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgZGVsZXRlRnVuY3Rpb24oUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBF
eGNlcHRpb25Db2RlJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwcmVmZXRjaENvbnRpbnVlKGlu
dCBudW1iZXJUb0ZldGNoLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIEV4Y2VwdGlvbkNvZGUm
KSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJM
ZXZlbERCQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkxldmVsREJCYWNraW5nU3RvcmUuY3BwCmluZGV4IDZhN2VkMjg0YmFlZGRkZWFmY2ZhYjc4
MWExNGRmMTA5Zjk4MjllZmEuLmY5NTY3MDk1MjA5ODUwYjE4Y2M4NjAyOTU1N2ZhNzBlZjY3YTYz
M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVs
REJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkxldmVsREJCYWNraW5nU3RvcmUuY3BwCkBAIC05ODAsNyArOTgwLDggQEAgc3RydWN0IEN1
cnNvck9wdGlvbnMgewogY2xhc3MgQ3Vyc29ySW1wbENvbW1vbiA6IHB1YmxpYyBJREJCYWNraW5n
U3RvcmU6OkN1cnNvciB7CiBwdWJsaWM6CiAgICAgLy8gSURCQmFja2luZ1N0b3JlOjpDdXJzb3IK
LSAgICB2aXJ0dWFsIGJvb2wgY29udGludWVGdW5jdGlvbihjb25zdCBJREJLZXkqLCBJdGVyYXRv
clN0YXRlKTsKKyAgICB2aXJ0dWFsIGJvb2wgYWR2YW5jZSh1bnNpZ25lZCBsb25nKTsKKyAgICB2
aXJ0dWFsIGJvb2wgY29udGludWVGdW5jdGlvbihjb25zdCBJREJLZXkqID0gMCwgSXRlcmF0b3JT
dGF0ZSA9IFNlZWspOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJLZXk+IGtleSgpIHsgcmV0
dXJuIG1fY3VycmVudEtleTsgfQogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJLZXk+IHByaW1h
cnlLZXkoKSB7IHJldHVybiBtX2N1cnJlbnRLZXk7IH0KICAgICB2aXJ0dWFsIFN0cmluZyB2YWx1
ZSgpID0gMDsKQEAgLTEwMzUsNiArMTAzNiwxNSBAQCBib29sIEN1cnNvckltcGxDb21tb246OmZp
cnN0U2VlaygpCiAgICAgcmV0dXJuIGNvbnRpbnVlRnVuY3Rpb24oMCwgUmVhZHkpOwogfQogCiti
b29sIEN1cnNvckltcGxDb21tb246OmFkdmFuY2UodW5zaWduZWQgbG9uZyBjb3VudCkKK3sKKyAg
ICB3aGlsZSAoY291bnQtLSkgeworICAgICAgICBpZiAoIWNvbnRpbnVlRnVuY3Rpb24oKSkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKIGJv
b2wgQ3Vyc29ySW1wbENvbW1vbjo6Y29udGludWVGdW5jdGlvbihjb25zdCBJREJLZXkqIGtleSwg
SXRlcmF0b3JTdGF0ZSBuZXh0U3RhdGUpCiB7CiAgICAgUmVmUHRyPElEQktleT4gcHJldmlvdXNL
ZXkgPSBtX2N1cnJlbnRLZXk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9JREJDdXJzb3JCYWNrZW5kUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
SURCQ3Vyc29yQmFja2VuZFByb3h5LmNwcAppbmRleCA0MjhjMzdmNWViNjg5YWU2N2I1M2U4MzQ4
ZDY1NGRkNjI0NWRkMmNlLi4yYTYyYjkyNmY1ZjY2NGVlNmQ3NDlkZDA1MDI3NzY3ZWUyNTRlZjg2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDdXJzb3JCYWNrZW5k
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkN1cnNvckJhY2tl
bmRQcm94eS5jcHAKQEAgLTc5LDYgKzc5LDExIEBAIHZvaWQgSURCQ3Vyc29yQmFja2VuZFByb3h5
Ojp1cGRhdGUoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlLCBQYXNzCiAg
ICAgbV9pZGJDdXJzb3ItPnVwZGF0ZSh2YWx1ZSwgbmV3IFdlYklEQkNhbGxiYWNrc0ltcGwoY2Fs
bGJhY2tzKSwgZWMpOwogfQogCit2b2lkIElEQkN1cnNvckJhY2tlbmRQcm94eTo6YWR2YW5jZSh1
bnNpZ25lZCBsb25nIGNvdW50LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBF
eGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBtX2lkYkN1cnNvci0+YWR2YW5jZShjb3VudCwgbmV3
IFdlYklEQkNhbGxiYWNrc0ltcGwoY2FsbGJhY2tzKSwgZWMpOworfQorCiB2b2lkIElEQkN1cnNv
ckJhY2tlbmRQcm94eTo6Y29udGludWVGdW5jdGlvbihQYXNzUmVmUHRyPElEQktleT4ga2V5LCBQ
YXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBFeGNlcHRpb25Db2RlJiBlYykKIHsK
ICAgICBtX2lkYkN1cnNvci0+Y29udGludWVGdW5jdGlvbihrZXksIG5ldyBXZWJJREJDYWxsYmFj
a3NJbXBsKGNhbGxiYWNrcyksIGVjKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0lEQkN1cnNvckJhY2tlbmRQcm94eS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvSURCQ3Vyc29yQmFja2VuZFByb3h5LmgKaW5kZXggY2ZlNmRhZjVkZGVkNzhkN2VhNWRmNGQ5
M2UwZmIzYmExZGQ5YWQwNi4uMjRhM2U0MmM0N2E3YjYxZWI2OTIxMDEwZjdjZjE4ZjgwMThmNDcz
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ3Vyc29yQmFja2Vu
ZFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ3Vyc29yQmFja2Vu
ZFByb3h5LmgKQEAgLTQ3LDYgKzQ3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxXZWJDb3JlOjpJREJLZXk+IHByaW1hcnlLZXkoKSBjb25zdDsKICAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSgpIGNvbnN0OwogICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGUoUGFzc1JlZlB0cjxXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0
VmFsdWU+LCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4sIFdlYkNvcmU6OkV4Y2Vw
dGlvbkNvZGUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgYWR2YW5jZSh1bnNpZ25lZCBsb25nLCBQYXNz
UmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4sIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUmKTsK
ICAgICB2aXJ0dWFsIHZvaWQgY29udGludWVGdW5jdGlvbihQYXNzUmVmUHRyPFdlYkNvcmU6OklE
QktleT4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPiwgV2ViQ29yZTo6RXhjZXB0
aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVGdW5jdGlvbihQYXNzUmVmUHRyPFdl
YkNvcmU6OklEQkNhbGxiYWNrcz4sIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0
dWFsIHZvaWQgcHJlZmV0Y2hDb250aW51ZShpbnQgbnVtYmVyVG9GZXRjaCwgUGFzc1JlZlB0cjxX
ZWJDb3JlOjpJREJDYWxsYmFja3M+LCBXZWJDb3JlOjpFeGNlcHRpb25Db2RlJikgeyBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsgfSAvLyBPbmx5IHVzZWQgaW4gdGhlIGJhY2tlbmQuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJDdXJzb3JJbXBsLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkN1cnNvckltcGwuY3BwCmluZGV4IGY3M2FiMmMz
NWJlZGY5MjhlOWNjNWUwNmVhZTFhODg0ZjY4YTAxYjAuLjZmMTBlZmU5ZTA5NmY5M2ZmZDU3ZDc2
ZWZlOTMzNDA2OWI4NzkyYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYklEQkN1cnNvckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YklEQkN1cnNvckltcGwuY3BwCkBAIC03NCw3ICs3NCw3IEBAIHZvaWQgV2ViSURCQ3Vyc29ySW1w
bDo6dXBkYXRlKGNvbnN0IFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYgdmFsdWUsIFdlYklEQkNh
bGxiCiAKIHZvaWQgV2ViSURCQ3Vyc29ySW1wbDo6YWR2YW5jZSh1bnNpZ25lZCBsb25nIGNvdW50
LCBXZWJJREJDYWxsYmFja3MqIGNhbGxiYWNrcywgV2ViRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0g
ICAgLy8gRklYTUU6IG5vdCBpbXBsZW1lbnRlZCBpbiBpbmRleGVkZGIgeWV0CisgICAgbV9pZGJD
dXJzb3JCYWNrZW5kLT5hZHZhbmNlKGNvdW50LCBJREJDYWxsYmFja3NQcm94eTo6Y3JlYXRlKGFk
b3B0UHRyKGNhbGxiYWNrcykpLCBlYyk7CiB9CiAKIHZvaWQgV2ViSURCQ3Vyc29ySW1wbDo6Y29u
dGludWVGdW5jdGlvbihjb25zdCBXZWJJREJLZXkmIGtleSwgV2ViSURCQ2FsbGJhY2tzKiBjYWxs
YmFja3MsIFdlYkV4Y2VwdGlvbkNvZGUmIGVjKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDY5MGJhMjNjN2EyMGE4Y2JkODE3
NTVmMjIwNjA1YTljZTUyMmEwZDQuLmI4N2Y0YTFhZTgyMzk3NGE5NTY5ZDAxZWVkZDk2MmJhYmM2
YTI0ZDYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAxMi0wNC0yMyAgQWxlYyBGbGV0dCAgPGFs
ZWNmbGV0dEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBpbXBsZW1lbnQgY3Vy
c29yLmFkdmFuY2UoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9ODQxNzQKKworICAgICAgICBSZXZpZXdlZCBieSBPamFuIFZhZmFpLgorCisgICAgICAg
IFRlc3RzIGZvciBjdXJzb3IuYWR2YW5jZSgpLgorCisgICAgICAgICogc3RvcmFnZS9pbmRleGVk
ZGIvY3Vyc29yLWFkdmFuY2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdl
L2luZGV4ZWRkYi9jdXJzb3ItYWR2YW5jZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdl
L2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLWFkdmFuY2UuanM6IEFkZGVkLgorICAgICAgICAo
dGVzdCk6CisgICAgICAgIChvcGVuU3VjY2Vzcyk6CisgICAgICAgIChjcmVhdGVBbmRQb3B1bGF0
ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKG1ha2VBZHZhbmNlVGVzdC5jb250aW51ZVRvVGVzdCk6
CisgICAgICAgIChtYWtlQWR2YW5jZVRlc3QucmVxdWVzdC5vbmVycm9yKToKKyAgICAgICAgKG1h
a2VBZHZhbmNlVGVzdCk6CisgICAgICAgIChta0N1cnNvcik6CisgICAgICAgIChydW5UZXN0KToK
KyAgICAgICAgKHRlc3RBbGwpOgorICAgICAgICAodGVzdFNpbXBsZSk6CisgICAgICAgICh0ZXN0
Q29udGludWVUaGVuQWR2YW5jZSk6CisgICAgICAgICh0ZXN0QWR2YW5jZU11bHRpcGxlKToKKyAg
ICAgICAgKHRlc3RBZHZhbmNlVG9FbmQpOgorCiAyMDEyLTA0LTI1ICBNaWtoYWlsIE5hZ2Fub3Yg
IDxtbmFnYW5vdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBVbnJldmlld2Vk
IHRlc3QgZXhwZWN0YXRpb25zIHVwZGF0ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvY3Vyc29yLWFkdmFuY2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvY3Vyc29yLWFkdmFuY2UtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQz
ZWNiNWVhOGEwYmJlOGJkMzVkMzFmN2FlOWYyNzI4YjBhMzIzNjkKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItYWR2YW5jZS1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwxNjQgQEAKK1Rlc3QgSW5kZXhlZERCIGN1cnNvci5hZHZhbmNlKCkuCisK
K09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZv
bGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitpbmRleGVkREIgPSBzZWxmLmluZGV4ZWRE
QiB8fCBzZWxmLndlYmtpdEluZGV4ZWREQiB8fCBzZWxmLm1vekluZGV4ZWREQiB8fCBzZWxmLm1z
SW5kZXhlZERCIHx8IHNlbGYuT0luZGV4ZWREQjsKKworaW5kZXhlZERCLm9wZW4obmFtZSkKK29w
ZW5TdWNjZXNzKCk6CitkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQKK3JlcXVlc3QgPSBkYi5zZXRW
ZXJzaW9uKCcxJykKK0RlbGV0ZWQgYWxsIG9iamVjdCBzdG9yZXMuCitvYmplY3RTdG9yZSA9IGRi
LmNyZWF0ZU9iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSk7CitGaXJzdCwgYWRkIGFsbCBvdXIg
ZGF0YSB0byB0aGUgb2JqZWN0IHN0b3JlLgorcmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChvYmpl
Y3RTdG9yZURhdGFbaV0udmFsdWUsIG9iamVjdFN0b3JlRGF0YVtpXS5rZXkpOworcmVxdWVzdCA9
IG9iamVjdFN0b3JlLmFkZChvYmplY3RTdG9yZURhdGFbaV0udmFsdWUsIG9iamVjdFN0b3JlRGF0
YVtpXS5rZXkpOworcmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChvYmplY3RTdG9yZURhdGFbaV0u
dmFsdWUsIG9iamVjdFN0b3JlRGF0YVtpXS5rZXkpOworcmVxdWVzdCA9IG9iamVjdFN0b3JlLmFk
ZChvYmplY3RTdG9yZURhdGFbaV0udmFsdWUsIG9iamVjdFN0b3JlRGF0YVtpXS5rZXkpOworcmVx
dWVzdCA9IG9iamVjdFN0b3JlLmFkZChvYmplY3RTdG9yZURhdGFbaV0udmFsdWUsIG9iamVjdFN0
b3JlRGF0YVtpXS5rZXkpOworcmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChvYmplY3RTdG9yZURh
dGFbaV0udmFsdWUsIG9iamVjdFN0b3JlRGF0YVtpXS5rZXkpOworcmVxdWVzdCA9IG9iamVjdFN0
b3JlLmFkZChvYmplY3RTdG9yZURhdGFbaV0udmFsdWUsIG9iamVjdFN0b3JlRGF0YVtpXS5rZXkp
OworcmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChvYmplY3RTdG9yZURhdGFbaV0udmFsdWUsIG9i
amVjdFN0b3JlRGF0YVtpXS5rZXkpOworcmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChvYmplY3RT
dG9yZURhdGFbaV0udmFsdWUsIG9iamVjdFN0b3JlRGF0YVtpXS5rZXkpOworcmVxdWVzdCA9IG9i
amVjdFN0b3JlLmFkZChvYmplY3RTdG9yZURhdGFbaV0udmFsdWUsIG9iamVjdFN0b3JlRGF0YVtp
XS5rZXkpOworcmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChvYmplY3RTdG9yZURhdGFbaV0udmFs
dWUsIG9iamVjdFN0b3JlRGF0YVtpXS5rZXkpOworcmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChv
YmplY3RTdG9yZURhdGFbaV0udmFsdWUsIG9iamVjdFN0b3JlRGF0YVtpXS5rZXkpOworcmVxdWVz
dCA9IG9iamVjdFN0b3JlLmFkZChvYmplY3RTdG9yZURhdGFbaV0udmFsdWUsIG9iamVjdFN0b3Jl
RGF0YVtpXS5rZXkpOworTm93IGNyZWF0ZSB0aGUgaW5kZXhlcy4KK29iamVjdFN0b3JlLmNyZWF0
ZUluZGV4KGluZGV4RGF0YVtpXS5uYW1lLCBpbmRleERhdGFbaV0ua2V5UGF0aCwgaW5kZXhEYXRh
W2ldLm9wdGlvbnMpOworb2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoaW5kZXhEYXRhW2ldLm5hbWUs
IGluZGV4RGF0YVtpXS5rZXlQYXRoLCBpbmRleERhdGFbaV0ub3B0aW9ucyk7CitvYmplY3RTdG9y
ZS5jcmVhdGVJbmRleChpbmRleERhdGFbaV0ubmFtZSwgaW5kZXhEYXRhW2ldLmtleVBhdGgsIGlu
ZGV4RGF0YVtpXS5vcHRpb25zKTsKK3Rlc3RBbGwoKQordGVzdFNpbXBsZSgpCit0cmFucyA9IGRi
LnRyYW5zYWN0aW9uKG9iamVjdFN0b3JlTmFtZSkKK3N0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUo
b2JqZWN0U3RvcmVOYW1lKQorcmVxdWVzdCA9IHN0b3JlLm9wZW5DdXJzb3IobnVsbCwgbnVsbCkK
K2N1cnNvci5hZHZhbmNlKDEpCitQQVNTICd7ImtleSI6IjIzNy0yMy03NzMzIiwidmFsdWUiOnsi
bmFtZSI6IkFubiIsImhlaWdodCI6NTIsIndlaWdodCI6MTEwfSwicHJpbWFyeUtleSI6IjIzNy0y
My03NzMzIn0nIGlzICd7ImtleSI6IjIzNy0yMy03NzMzIiwidmFsdWUiOnsibmFtZSI6IkFubiIs
ImhlaWdodCI6NTIsIndlaWdodCI6MTEwfSwicHJpbWFyeUtleSI6IjIzNy0yMy03NzMzIn0nCit0
ZXN0Q29udGludWVUaGVuQWR2YW5jZSgpCit0cmFucyA9IGRiLnRyYW5zYWN0aW9uKG9iamVjdFN0
b3JlTmFtZSkKK3N0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUob2JqZWN0U3RvcmVOYW1lKQorcmVx
dWVzdCA9IHN0b3JlLm9wZW5DdXJzb3IobnVsbCwgbnVsbCkKK2N1cnNvci5jb250aW51ZSgpOwor
Y3Vyc29yLmNvbnRpbnVlKCk7CitjdXJzb3IuY29udGludWUoKTsKK2N1cnNvci5hZHZhbmNlKDEp
CitQQVNTICd7ImtleSI6IjIzNy0yMy03NzM2IiwidmFsdWUiOnsibmFtZSI6IkpvZSIsImhlaWdo
dCI6NjUsIndlaWdodCI6MTUwfSwicHJpbWFyeUtleSI6IjIzNy0yMy03NzM2In0nIGlzICd7Imtl
eSI6IjIzNy0yMy03NzM2IiwidmFsdWUiOnsibmFtZSI6IkpvZSIsImhlaWdodCI6NjUsIndlaWdo
dCI6MTUwfSwicHJpbWFyeUtleSI6IjIzNy0yMy03NzM2In0nCit0ZXN0QWR2YW5jZU11bHRpcGxl
KCkKK3RyYW5zID0gZGIudHJhbnNhY3Rpb24ob2JqZWN0U3RvcmVOYW1lKQorc3RvcmUgPSB0cmFu
cy5vYmplY3RTdG9yZShvYmplY3RTdG9yZU5hbWUpCityZXF1ZXN0ID0gc3RvcmUub3BlbkN1cnNv
cihudWxsLCBudWxsKQorY3Vyc29yLmFkdmFuY2UoMykKK1BBU1MgJ3sia2V5IjoiMjM3LTIzLTc3
MzUiLCJ2YWx1ZSI6eyJuYW1lIjoiU3VlIiwiaGVpZ2h0Ijo1OCwid2VpZ2h0IjoxMzB9LCJwcmlt
YXJ5S2V5IjoiMjM3LTIzLTc3MzUifScgaXMgJ3sia2V5IjoiMjM3LTIzLTc3MzUiLCJ2YWx1ZSI6
eyJuYW1lIjoiU3VlIiwiaGVpZ2h0Ijo1OCwid2VpZ2h0IjoxMzB9LCJwcmltYXJ5S2V5IjoiMjM3
LTIzLTc3MzUifScKK3Rlc3RBZHZhbmNlSW5kZXgoKQordHJhbnMgPSBkYi50cmFuc2FjdGlvbihv
YmplY3RTdG9yZU5hbWUpCitzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFt
ZSkKK3JlcXVlc3QgPSBzdG9yZS5vcGVuQ3Vyc29yKG51bGwsIG51bGwpCitjdXJzb3IuYWR2YW5j
ZSgzKQorUEFTUyAneyJrZXkiOiJKZWYiLCJ2YWx1ZSI6eyJuYW1lIjoiSmVmIiwiaGVpZ2h0Ijo2
NSwid2VpZ2h0IjoxMjB9LCJwcmltYXJ5S2V5IjoiMjM3LTIzLTc3MzkifScgaXMgJ3sia2V5Ijoi
SmVmIiwidmFsdWUiOnsibmFtZSI6IkplZiIsImhlaWdodCI6NjUsIndlaWdodCI6MTIwfSwicHJp
bWFyeUtleSI6IjIzNy0yMy03NzM5In0nCit0ZXN0QWR2YW5jZUluZGV4Tm9EdXBlKCkKK3RyYW5z
ID0gZGIudHJhbnNhY3Rpb24ob2JqZWN0U3RvcmVOYW1lKQorc3RvcmUgPSB0cmFucy5vYmplY3RT
dG9yZShvYmplY3RTdG9yZU5hbWUpCityZXF1ZXN0ID0gc3RvcmUub3BlbkN1cnNvcihudWxsLCAx
KQorY3Vyc29yLmFkdmFuY2UoMykKK1BBU1MgJ3sia2V5IjoxMzAsInZhbHVlIjp7Im5hbWUiOiJT
dWUiLCJoZWlnaHQiOjU4LCJ3ZWlnaHQiOjEzMH0sInByaW1hcnlLZXkiOiIyMzctMjMtNzczNSJ9
JyBpcyAneyJrZXkiOjEzMCwidmFsdWUiOnsibmFtZSI6IlN1ZSIsImhlaWdodCI6NTgsIndlaWdo
dCI6MTMwfSwicHJpbWFyeUtleSI6IjIzNy0yMy03NzM1In0nCit0ZXN0QWR2YW5jZUluZGV4UHJl
digpCit0cmFucyA9IGRiLnRyYW5zYWN0aW9uKG9iamVjdFN0b3JlTmFtZSkKK3N0b3JlID0gdHJh
bnMub2JqZWN0U3RvcmUob2JqZWN0U3RvcmVOYW1lKQorcmVxdWVzdCA9IHN0b3JlLm9wZW5DdXJz
b3IobnVsbCwgMikKK2N1cnNvci5hZHZhbmNlKDMpCitQQVNTICd7ImtleSI6MTUwLCJ2YWx1ZSI6
eyJuYW1lIjoiSm9lIiwiaGVpZ2h0Ijo2NSwid2VpZ2h0IjoxNTB9LCJwcmltYXJ5S2V5IjoiMjM3
LTIzLTc3MzYifScgaXMgJ3sia2V5IjoxNTAsInZhbHVlIjp7Im5hbWUiOiJKb2UiLCJoZWlnaHQi
OjY1LCJ3ZWlnaHQiOjE1MH0sInByaW1hcnlLZXkiOiIyMzctMjMtNzczNiJ9JwordGVzdEFkdmFu
Y2VJbmRleFByZXZOb0R1cGUoKQordHJhbnMgPSBkYi50cmFuc2FjdGlvbihvYmplY3RTdG9yZU5h
bWUpCitzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSkKK3JlcXVlc3Qg
PSBzdG9yZS5vcGVuQ3Vyc29yKG51bGwsIDMpCitjdXJzb3IuYWR2YW5jZSgzKQorUEFTUyAneyJr
ZXkiOjEyMCwidmFsdWUiOnsibmFtZSI6IkJvYiIsImhlaWdodCI6NjAsIndlaWdodCI6MTIwfSwi
cHJpbWFyeUtleSI6IjIzNy0yMy03NzMyIn0nIGlzICd7ImtleSI6MTIwLCJ2YWx1ZSI6eyJuYW1l
IjoiQm9iIiwiaGVpZ2h0Ijo2MCwid2VpZ2h0IjoxMjB9LCJwcmltYXJ5S2V5IjoiMjM3LTIzLTc3
MzIifScKK3Rlc3RBZHZhbmNlVG9FbmQoKQordHJhbnMgPSBkYi50cmFuc2FjdGlvbihvYmplY3RT
dG9yZU5hbWUpCitzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSkKK3Jl
cXVlc3QgPSBzdG9yZS5vcGVuQ3Vyc29yKG51bGwsIG51bGwpCitjdXJzb3IuYWR2YW5jZSgxMDAp
CitQQVNTICdudWxsJyBpcyAnbnVsbCcKK3Rlc3RQcmVmZXRjaEluUmFuZ2UoKQordHJhbnMgPSBk
Yi50cmFuc2FjdGlvbihvYmplY3RTdG9yZU5hbWUpCitvYmplY3RTdG9yZSA9IHRyYW5zLm9iamVj
dFN0b3JlKG9iamVjdFN0b3JlTmFtZSkKK3JlcXVlc3QgPSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29y
KCkKK1BBU1MgJ3sia2V5IjoiMjM3LTIzLTc3MzIiLCJ2YWx1ZSI6eyJuYW1lIjoiQm9iIiwiaGVp
Z2h0Ijo2MCwid2VpZ2h0IjoxMjB9LCJwcmltYXJ5S2V5IjoiMjM3LTIzLTc3MzIifScgaXMgJ3si
a2V5IjoiMjM3LTIzLTc3MzIiLCJ2YWx1ZSI6eyJuYW1lIjoiQm9iIiwiaGVpZ2h0Ijo2MCwid2Vp
Z2h0IjoxMjB9LCJwcmltYXJ5S2V5IjoiMjM3LTIzLTc3MzIifScKK2N1cnNvci5jb250aW51ZSgp
CitQQVNTICd7ImtleSI6IjIzNy0yMy03NzMzIiwidmFsdWUiOnsibmFtZSI6IkFubiIsImhlaWdo
dCI6NTIsIndlaWdodCI6MTEwfSwicHJpbWFyeUtleSI6IjIzNy0yMy03NzMzIn0nIGlzICd7Imtl
eSI6IjIzNy0yMy03NzMzIiwidmFsdWUiOnsibmFtZSI6IkFubiIsImhlaWdodCI6NTIsIndlaWdo
dCI6MTEwfSwicHJpbWFyeUtleSI6IjIzNy0yMy03NzMzIn0nCitjdXJzb3IuY29udGludWUoKQor
UEFTUyAneyJrZXkiOiIyMzctMjMtNzczNCIsInZhbHVlIjp7Im5hbWUiOiJSb24iLCJoZWlnaHQi
OjczLCJ3ZWlnaHQiOjE4MH0sInByaW1hcnlLZXkiOiIyMzctMjMtNzczNCJ9JyBpcyAneyJrZXki
OiIyMzctMjMtNzczNCIsInZhbHVlIjp7Im5hbWUiOiJSb24iLCJoZWlnaHQiOjczLCJ3ZWlnaHQi
OjE4MH0sInByaW1hcnlLZXkiOiIyMzctMjMtNzczNCJ9JworY3Vyc29yLmNvbnRpbnVlKCkKK1BB
U1MgJ3sia2V5IjoiMjM3LTIzLTc3MzUiLCJ2YWx1ZSI6eyJuYW1lIjoiU3VlIiwiaGVpZ2h0Ijo1
OCwid2VpZ2h0IjoxMzB9LCJwcmltYXJ5S2V5IjoiMjM3LTIzLTc3MzUifScgaXMgJ3sia2V5Ijoi
MjM3LTIzLTc3MzUiLCJ2YWx1ZSI6eyJuYW1lIjoiU3VlIiwiaGVpZ2h0Ijo1OCwid2VpZ2h0Ijox
MzB9LCJwcmltYXJ5S2V5IjoiMjM3LTIzLTc3MzUifScKK2N1cnNvci5hZHZhbmNlKDIpCitQQVNT
ICd7ImtleSI6IjIzNy0yMy03NzM3IiwidmFsdWUiOnsibmFtZSI6IlBhdCIsImhlaWdodCI6NjUs
IndlaWdodCI6MTAwfSwicHJpbWFyeUtleSI6IjIzNy0yMy03NzM3In0nIGlzICd7ImtleSI6IjIz
Ny0yMy03NzM3IiwidmFsdWUiOnsibmFtZSI6IlBhdCIsImhlaWdodCI6NjUsIndlaWdodCI6MTAw
fSwicHJpbWFyeUtleSI6IjIzNy0yMy03NzM3In0nCitjdXJzb3IuY29udGludWUoKQorUEFTUyAn
eyJrZXkiOiIyMzctMjMtNzczOCIsInZhbHVlIjp7Im5hbWUiOiJMZW8iLCJoZWlnaHQiOjY1LCJ3
ZWlnaHQiOjE4MH0sInByaW1hcnlLZXkiOiIyMzctMjMtNzczOCJ9JyBpcyAneyJrZXkiOiIyMzct
MjMtNzczOCIsInZhbHVlIjp7Im5hbWUiOiJMZW8iLCJoZWlnaHQiOjY1LCJ3ZWlnaHQiOjE4MH0s
InByaW1hcnlLZXkiOiIyMzctMjMtNzczOCJ9JworY3Vyc29yLmNvbnRpbnVlKCkKK1BBU1MgJ3si
a2V5IjoiMjM3LTIzLTc3MzkiLCJ2YWx1ZSI6eyJuYW1lIjoiSmVmIiwiaGVpZ2h0Ijo2NSwid2Vp
Z2h0IjoxMjB9LCJwcmltYXJ5S2V5IjoiMjM3LTIzLTc3MzkifScgaXMgJ3sia2V5IjoiMjM3LTIz
LTc3MzkiLCJ2YWx1ZSI6eyJuYW1lIjoiSmVmIiwiaGVpZ2h0Ijo2NSwid2VpZ2h0IjoxMjB9LCJw
cmltYXJ5S2V5IjoiMjM3LTIzLTc3MzkifScKK2N1cnNvci5jb250aW51ZSgpCitQQVNTICd7Imtl
eSI6IjIzNy0yMy03NzQwIiwidmFsdWUiOnsibmFtZSI6IlNhbSIsImhlaWdodCI6NzEsIndlaWdo
dCI6MTEwfSwicHJpbWFyeUtleSI6IjIzNy0yMy03NzQwIn0nIGlzICd7ImtleSI6IjIzNy0yMy03
NzQwIiwidmFsdWUiOnsibmFtZSI6IlNhbSIsImhlaWdodCI6NzEsIndlaWdodCI6MTEwfSwicHJp
bWFyeUtleSI6IjIzNy0yMy03NzQwIn0nCitjdXJzb3IuY29udGludWUoKQorUEFTUyAneyJrZXki
OiIyMzctMjMtNzc0MSIsInZhbHVlIjp7Im5hbWUiOiJCdWciLCJoZWlnaHQiOjYzLCJ3ZWlnaHQi
OjEwMH0sInByaW1hcnlLZXkiOiIyMzctMjMtNzc0MSJ9JyBpcyAneyJrZXkiOiIyMzctMjMtNzc0
MSIsInZhbHVlIjp7Im5hbWUiOiJCdWciLCJoZWlnaHQiOjYzLCJ3ZWlnaHQiOjEwMH0sInByaW1h
cnlLZXkiOiIyMzctMjMtNzc0MSJ9JworY3Vyc29yLmNvbnRpbnVlKCkKK1BBU1MgJ3sia2V5Ijoi
MjM3LTIzLTc3NDIiLCJ2YWx1ZSI6eyJuYW1lIjoiVHViIiwiaGVpZ2h0Ijo2OSwid2VpZ2h0Ijox
ODB9LCJwcmltYXJ5S2V5IjoiMjM3LTIzLTc3NDIifScgaXMgJ3sia2V5IjoiMjM3LTIzLTc3NDIi
LCJ2YWx1ZSI6eyJuYW1lIjoiVHViIiwiaGVpZ2h0Ijo2OSwid2VpZ2h0IjoxODB9LCJwcmltYXJ5
S2V5IjoiMjM3LTIzLTc3NDIifScKK2N1cnNvci5jb250aW51ZSgpCitQQVNTICd7ImtleSI6IjIz
Ny0yMy03NzQzIiwidmFsdWUiOnsibmFtZSI6IlJ1ZyIsImhlaWdodCI6NzcsIndlaWdodCI6MTIw
fSwicHJpbWFyeUtleSI6IjIzNy0yMy03NzQzIn0nIGlzICd7ImtleSI6IjIzNy0yMy03NzQzIiwi
dmFsdWUiOnsibmFtZSI6IlJ1ZyIsImhlaWdodCI6NzcsIndlaWdodCI6MTIwfSwicHJpbWFyeUtl
eSI6IjIzNy0yMy03NzQzIn0nCitjdXJzb3IuY29udGludWUoKQorUEFTUyAneyJrZXkiOiIyMzct
MjMtNzc0NCIsInZhbHVlIjp7Im5hbWUiOiJQdWciLCJoZWlnaHQiOjY2LCJ3ZWlnaHQiOjExMH0s
InByaW1hcnlLZXkiOiIyMzctMjMtNzc0NCJ9JyBpcyAneyJrZXkiOiIyMzctMjMtNzc0NCIsInZh
bHVlIjp7Im5hbWUiOiJQdWciLCJoZWlnaHQiOjY2LCJ3ZWlnaHQiOjExMH0sInByaW1hcnlLZXki
OiIyMzctMjMtNzc0NCJ9JworY3Vyc29yLmNvbnRpbnVlKCkKK3Rlc3RQcmVmZXRjaE91dE9mUmFu
Z2UoKQordHJhbnMgPSBkYi50cmFuc2FjdGlvbihvYmplY3RTdG9yZU5hbWUpCitvYmplY3RTdG9y
ZSA9IHRyYW5zLm9iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSkKK3JlcXVlc3QgPSBvYmplY3RT
dG9yZS5vcGVuQ3Vyc29yKCkKK1BBU1MgJ3sia2V5IjoiMjM3LTIzLTc3MzIiLCJ2YWx1ZSI6eyJu
YW1lIjoiQm9iIiwiaGVpZ2h0Ijo2MCwid2VpZ2h0IjoxMjB9LCJwcmltYXJ5S2V5IjoiMjM3LTIz
LTc3MzIifScgaXMgJ3sia2V5IjoiMjM3LTIzLTc3MzIiLCJ2YWx1ZSI6eyJuYW1lIjoiQm9iIiwi
aGVpZ2h0Ijo2MCwid2VpZ2h0IjoxMjB9LCJwcmltYXJ5S2V5IjoiMjM3LTIzLTc3MzIifScKK2N1
cnNvci5jb250aW51ZSgpCitQQVNTICd7ImtleSI6IjIzNy0yMy03NzMzIiwidmFsdWUiOnsibmFt
ZSI6IkFubiIsImhlaWdodCI6NTIsIndlaWdodCI6MTEwfSwicHJpbWFyeUtleSI6IjIzNy0yMy03
NzMzIn0nIGlzICd7ImtleSI6IjIzNy0yMy03NzMzIiwidmFsdWUiOnsibmFtZSI6IkFubiIsImhl
aWdodCI6NTIsIndlaWdodCI6MTEwfSwicHJpbWFyeUtleSI6IjIzNy0yMy03NzMzIn0nCitjdXJz
b3IuY29udGludWUoKQorUEFTUyAneyJrZXkiOiIyMzctMjMtNzczNCIsInZhbHVlIjp7Im5hbWUi
OiJSb24iLCJoZWlnaHQiOjczLCJ3ZWlnaHQiOjE4MH0sInByaW1hcnlLZXkiOiIyMzctMjMtNzcz
NCJ9JyBpcyAneyJrZXkiOiIyMzctMjMtNzczNCIsInZhbHVlIjp7Im5hbWUiOiJSb24iLCJoZWln
aHQiOjczLCJ3ZWlnaHQiOjE4MH0sInByaW1hcnlLZXkiOiIyMzctMjMtNzczNCJ9JworY3Vyc29y
LmNvbnRpbnVlKCkKK1BBU1MgJ3sia2V5IjoiMjM3LTIzLTc3MzUiLCJ2YWx1ZSI6eyJuYW1lIjoi
U3VlIiwiaGVpZ2h0Ijo1OCwid2VpZ2h0IjoxMzB9LCJwcmltYXJ5S2V5IjoiMjM3LTIzLTc3MzUi
fScgaXMgJ3sia2V5IjoiMjM3LTIzLTc3MzUiLCJ2YWx1ZSI6eyJuYW1lIjoiU3VlIiwiaGVpZ2h0
Ijo1OCwid2VpZ2h0IjoxMzB9LCJwcmltYXJ5S2V5IjoiMjM3LTIzLTc3MzUifScKK2N1cnNvci5h
ZHZhbmNlKDcpCitQQVNTICd7ImtleSI6IjIzNy0yMy03NzQyIiwidmFsdWUiOnsibmFtZSI6IlR1
YiIsImhlaWdodCI6NjksIndlaWdodCI6MTgwfSwicHJpbWFyeUtleSI6IjIzNy0yMy03NzQyIn0n
IGlzICd7ImtleSI6IjIzNy0yMy03NzQyIiwidmFsdWUiOnsibmFtZSI6IlR1YiIsImhlaWdodCI6
NjksIndlaWdodCI6MTgwfSwicHJpbWFyeUtleSI6IjIzNy0yMy03NzQyIn0nCitjdXJzb3IuY29u
dGludWUoKQorUEFTUyAneyJrZXkiOiIyMzctMjMtNzc0MyIsInZhbHVlIjp7Im5hbWUiOiJSdWci
LCJoZWlnaHQiOjc3LCJ3ZWlnaHQiOjEyMH0sInByaW1hcnlLZXkiOiIyMzctMjMtNzc0MyJ9JyBp
cyAneyJrZXkiOiIyMzctMjMtNzc0MyIsInZhbHVlIjp7Im5hbWUiOiJSdWciLCJoZWlnaHQiOjc3
LCJ3ZWlnaHQiOjEyMH0sInByaW1hcnlLZXkiOiIyMzctMjMtNzc0MyJ9JworY3Vyc29yLmNvbnRp
bnVlKCkKK1BBU1MgJ3sia2V5IjoiMjM3LTIzLTc3NDQiLCJ2YWx1ZSI6eyJuYW1lIjoiUHVnIiwi
aGVpZ2h0Ijo2Niwid2VpZ2h0IjoxMTB9LCJwcmltYXJ5S2V5IjoiMjM3LTIzLTc3NDQifScgaXMg
J3sia2V5IjoiMjM3LTIzLTc3NDQiLCJ2YWx1ZSI6eyJuYW1lIjoiUHVnIiwiaGVpZ2h0Ijo2Niwi
d2VpZ2h0IjoxMTB9LCJwcmltYXJ5S2V5IjoiMjM3LTIzLTc3NDQifScKK2N1cnNvci5jb250aW51
ZSgpCit0ZXN0QmFkQWR2YW5jZSgpCit0cmFucyA9IGRiLnRyYW5zYWN0aW9uKG9iamVjdFN0b3Jl
TmFtZSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkKK29iamVjdFN0b3JlID0gdHJhbnMub2Jq
ZWN0U3RvcmUob2JqZWN0U3RvcmVOYW1lKQorcmVxdWVzdCA9IG9iamVjdFN0b3JlLm9wZW5DdXJz
b3IoKQorRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIGN1cnNvci5hZHZhbmNlKDApCitQQVNTIEV4
Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBjb2RlIGlzIERPTUV4Y2VwdGlvbi5UWVBFX01JU01B
VENIX0VSUgordGVzdERlbGV0ZSgpCit0cmFucyA9IGRiLnRyYW5zYWN0aW9uKG9iamVjdFN0b3Jl
TmFtZSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkKK29iamVjdFN0b3JlID0gdHJhbnMub2Jq
ZWN0U3RvcmUob2JqZWN0U3RvcmVOYW1lKQorcmVxdWVzdCA9IG9iamVjdFN0b3JlLm9wZW5DdXJz
b3IoKQorUEFTUyAneyJrZXkiOiIyMzctMjMtNzczMiIsInZhbHVlIjp7Im5hbWUiOiJCb2IiLCJo
ZWlnaHQiOjYwLCJ3ZWlnaHQiOjEyMH0sInByaW1hcnlLZXkiOiIyMzctMjMtNzczMiJ9JyBpcyAn
eyJrZXkiOiIyMzctMjMtNzczMiIsInZhbHVlIjp7Im5hbWUiOiJCb2IiLCJoZWlnaHQiOjYwLCJ3
ZWlnaHQiOjEyMH0sInByaW1hcnlLZXkiOiIyMzctMjMtNzczMiJ9JworY3Vyc29yLmFkdmFuY2Uo
MSkKK1BBU1MgJ3sia2V5IjoiMjM3LTIzLTc3MzMiLCJ2YWx1ZSI6eyJuYW1lIjoiQW5uIiwiaGVp
Z2h0Ijo1Miwid2VpZ2h0IjoxMTB9LCJwcmltYXJ5S2V5IjoiMjM3LTIzLTc3MzMifScgaXMgJ3si
a2V5IjoiMjM3LTIzLTc3MzMiLCJ2YWx1ZSI6eyJuYW1lIjoiQW5uIiwiaGVpZ2h0Ijo1Miwid2Vp
Z2h0IjoxMTB9LCJwcmltYXJ5S2V5IjoiMjM3LTIzLTc3MzMifScKK2N1cnNvci5hZHZhbmNlKDEp
CitQQVNTICd7ImtleSI6IjIzNy0yMy03NzM0IiwidmFsdWUiOnsibmFtZSI6IlJvbiIsImhlaWdo
dCI6NzMsIndlaWdodCI6MTgwfSwicHJpbWFyeUtleSI6IjIzNy0yMy03NzM0In0nIGlzICd7Imtl
eSI6IjIzNy0yMy03NzM0IiwidmFsdWUiOnsibmFtZSI6IlJvbiIsImhlaWdodCI6NzMsIndlaWdo
dCI6MTgwfSwicHJpbWFyeUtleSI6IjIzNy0yMy03NzM0In0nCitjdXJzb3IuZGVsZXRlKCkKK1BB
U1MgJ3sia2V5IjoiMjM3LTIzLTc3MzgiLCJ2YWx1ZSI6eyJuYW1lIjoiTGVvIiwiaGVpZ2h0Ijo2
NSwid2VpZ2h0IjoxODB9LCJwcmltYXJ5S2V5IjoiMjM3LTIzLTc3MzgifScgaXMgJ3sia2V5Ijoi
MjM3LTIzLTc3MzgiLCJ2YWx1ZSI6eyJuYW1lIjoiTGVvIiwiaGVpZ2h0Ijo2NSwid2VpZ2h0Ijox
ODB9LCJwcmltYXJ5S2V5IjoiMjM3LTIzLTc3MzgifScKK2N1cnNvci5hZHZhbmNlKDEpCitQQVNT
ICd7ImtleSI6IjIzNy0yMy03NzM5IiwidmFsdWUiOnsibmFtZSI6IkplZiIsImhlaWdodCI6NjUs
IndlaWdodCI6MTIwfSwicHJpbWFyeUtleSI6IjIzNy0yMy03NzM5In0nIGlzICd7ImtleSI6IjIz
Ny0yMy03NzM5IiwidmFsdWUiOnsibmFtZSI6IkplZiIsImhlaWdodCI6NjUsIndlaWdodCI6MTIw
fSwicHJpbWFyeUtleSI6IjIzNy0yMy03NzM5In0nCitjdXJzb3IuYWR2YW5jZSgxKQorUEFTUyAn
eyJrZXkiOiIyMzctMjMtNzc0MCIsInZhbHVlIjp7Im5hbWUiOiJTYW0iLCJoZWlnaHQiOjcxLCJ3
ZWlnaHQiOjExMH0sInByaW1hcnlLZXkiOiIyMzctMjMtNzc0MCJ9JyBpcyAneyJrZXkiOiIyMzct
MjMtNzc0MCIsInZhbHVlIjp7Im5hbWUiOiJTYW0iLCJoZWlnaHQiOjcxLCJ3ZWlnaHQiOjExMH0s
InByaW1hcnlLZXkiOiIyMzctMjMtNzc0MCJ9JworY3Vyc29yLmFkdmFuY2UoMSkKK1BBU1MgJ3si
a2V5IjoiMjM3LTIzLTc3NDEiLCJ2YWx1ZSI6eyJuYW1lIjoiQnVnIiwiaGVpZ2h0Ijo2Mywid2Vp
Z2h0IjoxMDB9LCJwcmltYXJ5S2V5IjoiMjM3LTIzLTc3NDEifScgaXMgJ3sia2V5IjoiMjM3LTIz
LTc3NDEiLCJ2YWx1ZSI6eyJuYW1lIjoiQnVnIiwiaGVpZ2h0Ijo2Mywid2VpZ2h0IjoxMDB9LCJw
cmltYXJ5S2V5IjoiMjM3LTIzLTc3NDEifScKK2N1cnNvci5hZHZhbmNlKDEpCitQQVNTICd7Imtl
eSI6IjIzNy0yMy03NzQyIiwidmFsdWUiOnsibmFtZSI6IlR1YiIsImhlaWdodCI6NjksIndlaWdo
dCI6MTgwfSwicHJpbWFyeUtleSI6IjIzNy0yMy03NzQyIn0nIGlzICd7ImtleSI6IjIzNy0yMy03
NzQyIiwidmFsdWUiOnsibmFtZSI6IlR1YiIsImhlaWdodCI6NjksIndlaWdodCI6MTgwfSwicHJp
bWFyeUtleSI6IjIzNy0yMy03NzQyIn0nCitjdXJzb3IuYWR2YW5jZSgxKQorUEFTUyAneyJrZXki
OiIyMzctMjMtNzc0MyIsInZhbHVlIjp7Im5hbWUiOiJSdWciLCJoZWlnaHQiOjc3LCJ3ZWlnaHQi
OjEyMH0sInByaW1hcnlLZXkiOiIyMzctMjMtNzc0MyJ9JyBpcyAneyJrZXkiOiIyMzctMjMtNzc0
MyIsInZhbHVlIjp7Im5hbWUiOiJSdWciLCJoZWlnaHQiOjc3LCJ3ZWlnaHQiOjEyMH0sInByaW1h
cnlLZXkiOiIyMzctMjMtNzc0MyJ9JworY3Vyc29yLmFkdmFuY2UoMSkKK1BBU1MgJ3sia2V5Ijoi
MjM3LTIzLTc3NDQiLCJ2YWx1ZSI6eyJuYW1lIjoiUHVnIiwiaGVpZ2h0Ijo2Niwid2VpZ2h0Ijox
MTB9LCJwcmltYXJ5S2V5IjoiMjM3LTIzLTc3NDQifScgaXMgJ3sia2V5IjoiMjM3LTIzLTc3NDQi
LCJ2YWx1ZSI6eyJuYW1lIjoiUHVnIiwiaGVpZ2h0Ijo2Niwid2VpZ2h0IjoxMTB9LCJwcmltYXJ5
S2V5IjoiMjM3LTIzLTc3NDQifScKK2N1cnNvci5hZHZhbmNlKDEpCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLWFkdmFuY2UuaHRtbCBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1hZHZhbmNlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTBlNGRjNGNj
ZmU5MDgxMTIyZTFmNGMxMmQxY2IzZmZmMzlkMmQ4NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1hZHZhbmNlLmh0bWwKQEAgLTAsMCArMSwx
MCBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJl
ZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
Y3Vyc29yLWFkdmFuY2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29y
LWFkdmFuY2UuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vy
c29yLWFkdmFuY2UuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTNmNTQ1ZmNiYmZhMTA1YjkwNmY5NmNlYjVjMmU2
YjM0MDNiMjkzYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL3Jlc291cmNlcy9jdXJzb3ItYWR2YW5jZS5qcwpAQCAtMCwwICsxLDM3MyBAQAoraWYgKHRo
aXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpz
Jyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiBjdXJzb3IuYWR2YW5jZSgpLiIp
OworCit2YXIgb2JqZWN0U3RvcmVEYXRhID0gWworICAgIHsga2V5OiAiMjM3LTIzLTc3MzIiLCB2
YWx1ZTogeyBuYW1lOiAiQm9iIiwgaGVpZ2h0OiA2MCwgd2VpZ2h0OiAxMjAgfSB9LAorICAgIHsg
a2V5OiAiMjM3LTIzLTc3MzMiLCB2YWx1ZTogeyBuYW1lOiAiQW5uIiwgaGVpZ2h0OiA1Miwgd2Vp
Z2h0OiAxMTAgfSB9LAorICAgIHsga2V5OiAiMjM3LTIzLTc3MzQiLCB2YWx1ZTogeyBuYW1lOiAi
Um9uIiwgaGVpZ2h0OiA3Mywgd2VpZ2h0OiAxODAgfSB9LAorICAgIHsga2V5OiAiMjM3LTIzLTc3
MzUiLCB2YWx1ZTogeyBuYW1lOiAiU3VlIiwgaGVpZ2h0OiA1OCwgd2VpZ2h0OiAxMzAgfSB9LAor
ICAgIHsga2V5OiAiMjM3LTIzLTc3MzYiLCB2YWx1ZTogeyBuYW1lOiAiSm9lIiwgaGVpZ2h0OiA2
NSwgd2VpZ2h0OiAxNTAgfSB9LAorICAgIHsga2V5OiAiMjM3LTIzLTc3MzciLCB2YWx1ZTogeyBu
YW1lOiAiUGF0IiwgaGVpZ2h0OiA2NSwgd2VpZ2h0OiAxMDAgfSB9LAorICAgIHsga2V5OiAiMjM3
LTIzLTc3MzgiLCB2YWx1ZTogeyBuYW1lOiAiTGVvIiwgaGVpZ2h0OiA2NSwgd2VpZ2h0OiAxODAg
fSB9LAorICAgIHsga2V5OiAiMjM3LTIzLTc3MzkiLCB2YWx1ZTogeyBuYW1lOiAiSmVmIiwgaGVp
Z2h0OiA2NSwgd2VpZ2h0OiAxMjAgfSB9LAorICAgIHsga2V5OiAiMjM3LTIzLTc3NDAiLCB2YWx1
ZTogeyBuYW1lOiAiU2FtIiwgaGVpZ2h0OiA3MSwgd2VpZ2h0OiAxMTAgfSB9LAorICAgIHsga2V5
OiAiMjM3LTIzLTc3NDEiLCB2YWx1ZTogeyBuYW1lOiAiQnVnIiwgaGVpZ2h0OiA2Mywgd2VpZ2h0
OiAxMDAgfSB9LAorICAgIHsga2V5OiAiMjM3LTIzLTc3NDIiLCB2YWx1ZTogeyBuYW1lOiAiVHVi
IiwgaGVpZ2h0OiA2OSwgd2VpZ2h0OiAxODAgfSB9LAorICAgIHsga2V5OiAiMjM3LTIzLTc3NDMi
LCB2YWx1ZTogeyBuYW1lOiAiUnVnIiwgaGVpZ2h0OiA3Nywgd2VpZ2h0OiAxMjAgfSB9LAorICAg
IHsga2V5OiAiMjM3LTIzLTc3NDQiLCB2YWx1ZTogeyBuYW1lOiAiUHVnIiwgaGVpZ2h0OiA2Niwg
d2VpZ2h0OiAxMTAgfSB9LAorXTsKKwordmFyIGluZGV4RGF0YSA9IFsKKyAgICB7IG5hbWU6ICJu
YW1lIiwga2V5UGF0aDogIm5hbWUiLCBvcHRpb25zOiB7IHVuaXF1ZTogdHJ1ZSB9IH0sCisgICAg
eyBuYW1lOiAiaGVpZ2h0Iiwga2V5UGF0aDogImhlaWdodCIsIG9wdGlvbnM6IHsgfSB9LAorICAg
IHsgbmFtZTogIndlaWdodCIsIGtleVBhdGg6ICJ3ZWlnaHQiLCBvcHRpb25zOiB7IHVuaXF1ZTog
ZmFsc2UgfSB9CitdOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVm
aXhlcygpOworICAgIG5hbWUgPSB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWU7CisgICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUpIik7CisgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIGRlYnVnKCJv
cGVuU3VjY2VzcygpOiIpOworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQu
cmVzdWx0Iik7CisKKyAgICBvYmplY3RTdG9yZU5hbWUgPSAiUGVvcGxlIjsKKworICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlOworICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBjcmVh
dGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlKCkKK3sKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMo
ZGIpOworCisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNy
ZWF0ZU9iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSk7Iik7CisKKyAgICBkZWJ1ZygiRmlyc3Qs
IGFkZCBhbGwgb3VyIGRhdGEgdG8gdGhlIG9iamVjdCBzdG9yZS4iKTsKKyAgICBhZGRlZERhdGEg
PSAwOworICAgIGZvciAoaSBpbiBvYmplY3RTdG9yZURhdGEpIHsKKyAgICAgICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQob2JqZWN0U3RvcmVEYXRhW2ld
LnZhbHVlLCBvYmplY3RTdG9yZURhdGFbaV0ua2V5KTsiKTsKKyAgICAgICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgfQorICAgIGNyZWF0ZUluZGV4ZXMo
KTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHRlc3RBbGw7Cit9CisKK2Z1bmN0aW9uIGNyZWF0
ZUluZGV4ZXMoKQoreworICAgIGRlYnVnKCJOb3cgY3JlYXRlIHRoZSBpbmRleGVzLiIpOworICAg
IGZvciAoaSBpbiBpbmRleERhdGEpIHsKKyAgICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmNy
ZWF0ZUluZGV4KGluZGV4RGF0YVtpXS5uYW1lLCBpbmRleERhdGFbaV0ua2V5UGF0aCwgaW5kZXhE
YXRhW2ldLm9wdGlvbnMpOyIpOworICAgIH0KK30KKworLy8gTWFrZSBhIHRlc3QgdGhhdCB1c2Vz
IGNvbnRpbnVlKCkgdG8gZ2V0IHRvIHN0YXJ0UG9zLCB0aGVuIHBhc3NlcworLy8gJ2NvdW50JyB0
byBnZXQgdG8gYSBwb3NpdGlvbi4KK2Z1bmN0aW9uIG1ha2VBZHZhbmNlVGVzdChzdGFydFBvcywg
ZGlyZWN0aW9uLCBjb3VudCwgZXhwZWN0ZWRWYWx1ZSwgaW5kZXhOYW1lKQoreworICAgIHJlc3Vs
dCA9IHt9OworICAgIGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24ob2JqZWN0U3Rv
cmVOYW1lKSIpOworICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5vYmplY3RT
dG9yZShvYmplY3RTdG9yZU5hbWUpIik7CisgICAgaWYgKGluZGV4TmFtZSkKKyAgICAgICAgc3Rv
cmUgPSBzdG9yZS5pbmRleChpbmRleE5hbWUpOworCisgICAgZXZhbEFuZExvZygicmVxdWVzdCA9
IHN0b3JlLm9wZW5DdXJzb3IobnVsbCwgIiArIGRpcmVjdGlvbiArICIpIik7CisgICAgdmFyIGN1
cnJlbnRQb3MgPSAwOworICAgIGZ1bmN0aW9uIGNvbnRpbnVlVG9UZXN0KGV2ZW50KQorICAgIHsK
KyAgICAgICAgY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKKyAgICAgICAgaWYgKGN1cnJl
bnRQb3MgPT0gc3RhcnRQb3MpIHsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5hZHZh
bmNlKCIgKyBjb3VudCArICIpIik7CisgICAgICAgIH0gZWxzZSBpZiAoY3VycmVudFBvcyA9PSBz
dGFydFBvcyArIDEpIHsKKyAgICAgICAgICAgIHJ1blRlc3QoY3Vyc29yLCBleHBlY3RlZFZhbHVl
KTsKKyAgICAgICAgICAgIHJlc3VsdC5vbnN1Y2Nlc3MoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgIGlmIChjdXJzb3IgPT0gbnVsbCkKKyAgICAgICAgICAgICAgICByZXN1bHQub25z
dWNjZXNzKCk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBldmFsQW5kTG9n
KCJjdXJzb3IuY29udGludWUoKTsiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAg
ICBjdXJyZW50UG9zKys7CisgICAgfQorCisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjb250aW51
ZVRvVGVzdDsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbihlKQorICAgIHsKKyAgICAg
ICAgcmVzdWx0Lm9uZXJyb3IoZSk7CisgICAgfTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisK
K2Z1bmN0aW9uIHNpbXBsaWZ5Q3Vyc29yKGN1cnNvcikKK3sKKyAgICB2YXIgb2JqID0ge307Cisg
ICAgaWYgKGN1cnNvciA9PT0gbnVsbCkgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9Cisg
ICAgaWYgKCdrZXknIGluIGN1cnNvcikgeworICAgICAgICBvYmoua2V5ID0gY3Vyc29yLmtleTsK
KyAgICB9CisKKyAgICBpZiAoJ3ZhbHVlJyBpbiBjdXJzb3IpIHsKKyAgICAgICAgb2JqLnZhbHVl
ID0gY3Vyc29yLnZhbHVlOworICAgIH0KKworICAgIGlmICgncHJpbWFyeUtleScgaW4gY3Vyc29y
KSB7CisgICAgICAgIG9iai5wcmltYXJ5S2V5ID0gY3Vyc29yLnByaW1hcnlLZXk7CisgICAgfQor
ICAgIHJldHVybiBvYmo7Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3QoY3Vyc29yLCBleHBlY3RlZFZh
bHVlKQoreworICAgIHNob3VsZEJlKCInIiArIEpTT04uc3RyaW5naWZ5KHNpbXBsaWZ5Q3Vyc29y
KGN1cnNvcikpICsgIiciLAorICAgICAgICAgICAgICInIiArIEpTT04uc3RyaW5naWZ5KGV4cGVj
dGVkVmFsdWUpICsgIiciKTsKK30KKworZnVuY3Rpb24gdGVzdEFsbCgpCit7CisgICAgZGVidWco
InRlc3RBbGwoKSIpOworICAgIHRlc3RTaW1wbGUoKTsKK30KKworZnVuY3Rpb24gdGVzdFNpbXBs
ZSgpCit7CisgICAgZGVidWcoInRlc3RTaW1wbGUoKSIpOworICAgIG1ha2VBZHZhbmNlVGVzdCgw
LCBudWxsLCAxLAorICAgICAgICAgICAgICAgICAgICB7a2V5OiBvYmplY3RTdG9yZURhdGFbMV0u
a2V5LAorICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IG9iamVjdFN0b3JlRGF0YVsxXS52YWx1
ZSwKKyAgICAgICAgICAgICAgICAgICAgIHByaW1hcnlLZXk6IG9iamVjdFN0b3JlRGF0YVsxXS5r
ZXl9KQorICAgICAgICAgICAgICAgICAgICAgICAgIC5vbnN1Y2Nlc3M9IHRlc3RDb250aW51ZVRo
ZW5BZHZhbmNlOworfQorCitmdW5jdGlvbiB0ZXN0Q29udGludWVUaGVuQWR2YW5jZSgpCit7Cisg
ICAgZGVidWcoInRlc3RDb250aW51ZVRoZW5BZHZhbmNlKCkiKTsKKyAgICBtYWtlQWR2YW5jZVRl
c3QoMywgbnVsbCwgMSwKKyAgICAgICAgICAgICAgICAgICAgLy8gSm9lCisgICAgICAgICAgICAg
ICAgICAgIHtrZXk6IG9iamVjdFN0b3JlRGF0YVs0XS5rZXksCisgICAgICAgICAgICAgICAgICAg
ICB2YWx1ZTogb2JqZWN0U3RvcmVEYXRhWzRdLnZhbHVlLAorICAgICAgICAgICAgICAgICAgICAg
cHJpbWFyeUtleTogb2JqZWN0U3RvcmVEYXRhWzRdLmtleX0pCisgICAgICAgICAgICAgICAgICAg
ICAgICAgLm9uc3VjY2Vzcz0gdGVzdEFkdmFuY2VNdWx0aXBsZTsKK30KKworZnVuY3Rpb24gdGVz
dEFkdmFuY2VNdWx0aXBsZSgpCit7CisgICAgZGVidWcoInRlc3RBZHZhbmNlTXVsdGlwbGUoKSIp
OworICAgIG1ha2VBZHZhbmNlVGVzdCgwLCBudWxsLCAzLAorICAgICAgICAgICAgICAgICAgICB7
a2V5OiBvYmplY3RTdG9yZURhdGFbM10ua2V5LAorICAgICAgICAgICAgICAgICAgICAgdmFsdWU6
IG9iamVjdFN0b3JlRGF0YVszXS52YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgIHByaW1hcnlL
ZXk6IG9iamVjdFN0b3JlRGF0YVszXS5rZXl9KQorICAgICAgICAgICAgICAgICAgICAgICAgIC5v
bnN1Y2Nlc3MgPSB0ZXN0QWR2YW5jZUluZGV4OworfQorCitmdW5jdGlvbiB0ZXN0QWR2YW5jZUlu
ZGV4KCkKK3sKKyAgICBkZWJ1ZygidGVzdEFkdmFuY2VJbmRleCgpIik7CisgICAgbWFrZUFkdmFu
Y2VUZXN0KDAsIG51bGwsIDMsCisgICAgICAgICAgICAgICAgICAgIC8vIEplZgorICAgICAgICAg
ICAgICAgICAgICB7a2V5OiBvYmplY3RTdG9yZURhdGFbN10udmFsdWUubmFtZSwKKyAgICAgICAg
ICAgICAgICAgICAgIHZhbHVlOiBvYmplY3RTdG9yZURhdGFbN10udmFsdWUsCisgICAgICAgICAg
ICAgICAgICAgICBwcmltYXJ5S2V5OiBvYmplY3RTdG9yZURhdGFbN10ua2V5fSwKKyAgICAgICAg
ICAgICAgICAgICAgIm5hbWUiKS5vbnN1Y2Nlc3MgPSB0ZXN0QWR2YW5jZUluZGV4Tm9EdXBlOwor
fQorCitmdW5jdGlvbiB0ZXN0QWR2YW5jZUluZGV4Tm9EdXBlKCkKK3sKKyAgICBkZWJ1ZygidGVz
dEFkdmFuY2VJbmRleE5vRHVwZSgpIik7CisgICAgbWFrZUFkdmFuY2VUZXN0KDAsIElEQkN1cnNv
ci5ORVhUX05PX0RVUExJQ0FURSwgMywKKyAgICAgICAgICAgICAgICAgICAgLy8gU3VlICh3ZWln
aHQgMTMwIC0gc2tpcHBpbmcgd2VpZ2h0IDEwMCwgMTEwLCAxMjApCisgICAgICAgICAgICAgICAg
ICAgIHtrZXk6IG9iamVjdFN0b3JlRGF0YVszXS52YWx1ZS53ZWlnaHQsCisgICAgICAgICAgICAg
ICAgICAgICB2YWx1ZTogb2JqZWN0U3RvcmVEYXRhWzNdLnZhbHVlLAorICAgICAgICAgICAgICAg
ICAgICAgcHJpbWFyeUtleTogb2JqZWN0U3RvcmVEYXRhWzNdLmtleX0sCisgICAgICAgICAgICAg
ICAgICAgICJ3ZWlnaHQiKS5vbnN1Y2Nlc3MgPSB0ZXN0QWR2YW5jZUluZGV4UHJldjsKK30KKwor
ZnVuY3Rpb24gdGVzdEFkdmFuY2VJbmRleFByZXYoKQoreworICAgIGRlYnVnKCJ0ZXN0QWR2YW5j
ZUluZGV4UHJldigpIik7CisgICAgbWFrZUFkdmFuY2VUZXN0KDAsIElEQkN1cnNvci5QUkVWLCAz
LAorICAgICAgICAgICAgICAgICAgICAvLyBCb2IgKHdlaWdodCAxMjAgLSBza2lwcGluZyB3ZWln
aHRzIDE4MCwgMTUwLCAxMzApCisgICAgICAgICAgICAgICAgICAgIHtrZXk6IG9iamVjdFN0b3Jl
RGF0YVs0XS52YWx1ZS53ZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogb2JqZWN0
U3RvcmVEYXRhWzRdLnZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgcHJpbWFyeUtleTogb2Jq
ZWN0U3RvcmVEYXRhWzRdLmtleX0sCisgICAgICAgICAgICAgICAgICAgICJ3ZWlnaHQiKS5vbnN1
Y2Nlc3MgPSB0ZXN0QWR2YW5jZUluZGV4UHJldk5vRHVwZTsKK30KKworZnVuY3Rpb24gdGVzdEFk
dmFuY2VJbmRleFByZXZOb0R1cGUoKQoreworICAgIGRlYnVnKCJ0ZXN0QWR2YW5jZUluZGV4UHJl
dk5vRHVwZSgpIik7CisgICAgbWFrZUFkdmFuY2VUZXN0KDAsIElEQkN1cnNvci5QUkVWX05PX0RV
UExJQ0FURSwgMywKKyAgICAgICAgICAgICAgICAgICAgLy8gQm9iICh3ZWlnaHQgMTIwIC0gc2tp
cHBpbmcgd2VpZ2h0cyAxODAsIDE1MCwgMTMwKQorICAgICAgICAgICAgICAgICAgICB7a2V5OiBv
YmplY3RTdG9yZURhdGFbMF0udmFsdWUud2VpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgdmFs
dWU6IG9iamVjdFN0b3JlRGF0YVswXS52YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgIHByaW1h
cnlLZXk6IG9iamVjdFN0b3JlRGF0YVswXS5rZXl9LAorICAgICAgICAgICAgICAgICAgICAid2Vp
Z2h0Iikub25zdWNjZXNzID0gdGVzdEFkdmFuY2VUb0VuZDsKK30KKworZnVuY3Rpb24gdGVzdEFk
dmFuY2VUb0VuZCgpCit7CisgICAgZGVidWcoInRlc3RBZHZhbmNlVG9FbmQoKSIpOworICAgIG1h
a2VBZHZhbmNlVGVzdCgwLCBudWxsLCAxMDAsIG51bGwpCisgICAgICAgIC5vbnN1Y2Nlc3MgPSB0
ZXN0UHJlZmV0Y2hJblJhbmdlOworfQorCisvLyBNYWtlIHN1cmUgdGhlIHByZWZldGNoaW5nIHRo
YXQgZXhpc3RzIG9uIHNvbWUgcGxhdGZvcm1zIChjaHJvbWl1bSkKKy8vIGRvZXNuJ3QgbWVzcyB3
aXRoIGFkdmFuY2UoKSwgb3IgdmljZSB2ZXJzYS4KK2Z1bmN0aW9uIHRlc3RQcmVmZXRjaEluUmFu
Z2UoKQoreworICAgIGRlYnVnKCJ0ZXN0UHJlZmV0Y2hJblJhbmdlKCkiKTsKKyAgICB2YXIga1By
ZWZldGNoQ29udGludWVUaHJlc2hvbGQgPSAyOworICAgIGV2YWxBbmRMb2coInRyYW5zID0gZGIu
dHJhbnNhY3Rpb24ob2JqZWN0U3RvcmVOYW1lKSIpOworICAgIG9iamVjdFN0b3JlID0gZXZhbEFu
ZExvZygib2JqZWN0U3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZShvYmplY3RTdG9yZU5hbWUpIik7
CisKKyAgICBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNvcigpIik7
CisKKyAgICB2YXIgY3VycmVudFBvcyA9IDA7CisgICAgZnVuY3Rpb24gcHJlZmV0Y2goKQorICAg
IHsKKyAgICAgICAgY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKKworICAgICAgICBpZiAo
IWN1cnNvcikgeworICAgICAgICAgICAgdGVzdFByZWZldGNoT3V0T2ZSYW5nZSgpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgcnVuVGVzdChjdXJzb3IsIHtrZXk6
IG9iamVjdFN0b3JlRGF0YVtjdXJyZW50UG9zXS5rZXksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgdmFsdWU6IG9iamVjdFN0b3JlRGF0YVtjdXJyZW50UG9zXS52YWx1ZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICBwcmltYXJ5S2V5OiBvYmplY3RTdG9yZURhdGFbY3VycmVudFBvc10ua2V5
fSk7CisKKyAgICAgICAgLy8gZm9yY2Ugc29tZSBwcmVmZXRjaGluZywKKyAgICAgICAgaWYgKGN1
cnJlbnRQb3MgPCAoa1ByZWZldGNoQ29udGludWVUaHJlc2hvbGQrMSkpIHsKKyAgICAgICAgICAg
IGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgpIik7CisgICAgICAgICAgICBjdXJyZW50UG9z
Kys7CisgICAgICAgIH0gZWxzZSBpZiAoY3VycmVudFBvcyA9PSAoa1ByZWZldGNoQ29udGludWVU
aHJlc2hvbGQrMSkpIHsKKyAgICAgICAgICAgIC8vIHN0YXkgd2l0aGluIHRoZSBwcmVmZXRjaCBy
YW5nZQorICAgICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmFkdmFuY2UoMikiKTsKKyAgICAg
ICAgICAgIGN1cnJlbnRQb3MgKz0gMjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8v
IHdlJ3JlIGp1c3QgcGFzdCB0aGUgdGhyZXNob2xkCisgICAgICAgICAgICBldmFsQW5kTG9nKCJj
dXJzb3IuY29udGludWUoKSIpOworICAgICAgICAgICAgY3VycmVudFBvcysrOworICAgICAgICB9
CisgICAgfQorICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcHJlZmV0Y2g7CisgICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKKy8vIE1ha2Ugc3VyZSB0aGUg
cHJlZmV0Y2hpbmcgdGhhdCBleGlzdHMgb24gc29tZSBwbGF0Zm9ybXMgKGNocm9taXVtKQorLy8g
ZG9lc24ndCBtZXNzIHdpdGggYWR2YW5jZSgpLCBvciB2aWNlIHZlcnNhLgorZnVuY3Rpb24gdGVz
dFByZWZldGNoT3V0T2ZSYW5nZSgpCit7CisgICAgZGVidWcoInRlc3RQcmVmZXRjaE91dE9mUmFu
Z2UoKSIpOworICAgIHZhciBrUHJlZmV0Y2hDb250aW51ZVRocmVzaG9sZCA9IDI7CisgICAgZXZh
bEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihvYmplY3RTdG9yZU5hbWUpIik7CisgICAg
b2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IHRyYW5zLm9iamVjdFN0b3Jl
KG9iamVjdFN0b3JlTmFtZSkiKTsKKworICAgIGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RT
dG9yZS5vcGVuQ3Vyc29yKCkiKTsKKworICAgIHZhciBjdXJyZW50UG9zID0gMDsKKyAgICBmdW5j
dGlvbiBwcmVmZXRjaCgpCisgICAgeworICAgICAgICBjdXJzb3IgPSBldmVudC50YXJnZXQucmVz
dWx0OworCisgICAgICAgIGlmICghY3Vyc29yKSB7CisgICAgICAgICAgICB0ZXN0QmFkQWR2YW5j
ZSgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgcnVuVGVzdChj
dXJzb3IsIHtrZXk6IG9iamVjdFN0b3JlRGF0YVtjdXJyZW50UG9zXS5rZXksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgdmFsdWU6IG9iamVjdFN0b3JlRGF0YVtjdXJyZW50UG9zXS52YWx1ZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICBwcmltYXJ5S2V5OiBvYmplY3RTdG9yZURhdGFbY3Vy
cmVudFBvc10ua2V5fSk7CisKKyAgICAgICAgLy8gZm9yY2Ugc29tZSBwcmVmZXRjaGluZywKKyAg
ICAgICAgaWYgKGN1cnJlbnRQb3MgPCAoa1ByZWZldGNoQ29udGludWVUaHJlc2hvbGQrMSkpIHsK
KyAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgpIik7CisgICAgICAgICAg
ICBjdXJyZW50UG9zKys7CisgICAgICAgIH0gZWxzZSBpZiAoY3VycmVudFBvcyA9PSAoa1ByZWZl
dGNoQ29udGludWVUaHJlc2hvbGQrMSkpIHsKKyAgICAgICAgICAgIC8vIGFkdmFuY2UgcGFzdCB0
aGUgcHJlZmV0Y2ggcmFuZ2UKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5hZHZhbmNl
KDcpIik7CisgICAgICAgICAgICBjdXJyZW50UG9zICs9IDc7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAvLyB3ZSdyZSBwYXN0IHRoZSB0aHJlc2hvbGQKKyAgICAgICAgICAgIGV2YWxB
bmRMb2coImN1cnNvci5jb250aW51ZSgpIik7CisgICAgICAgICAgICBjdXJyZW50UG9zKys7Cisg
ICAgICAgIH0KKyAgICB9CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwcmVmZXRjaDsKKyAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24g
dGVzdEJhZEFkdmFuY2UoKQoreworICAgIGRlYnVnKCJ0ZXN0QmFkQWR2YW5jZSgpIik7CisgICAg
ZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihvYmplY3RTdG9yZU5hbWUsIElEQlRy
YW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJv
YmplY3RTdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSkiKTsKKworICAg
IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCkiKTsKKworICAg
IGZ1bmN0aW9uIGFkdmFuY2VCYWRseSgpCisgICAgeworICAgICAgICBjdXJzb3IgPSBldmVudC50
YXJnZXQucmVzdWx0OworCisgICAgICAgIC8vIEZJWE1FOiB0aGlzIHNob3VsZCB0aHJvdyBhIFR5
cGVFcnJvci4gKFNlZSBJREJDdXJzb3IuY3BwKQorICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0
aW9uKCJjdXJzb3IuYWR2YW5jZSgwKSIsICJET01FeGNlcHRpb24uVFlQRV9NSVNNQVRDSF9FUlIi
KTsKKyAgICAgICAgdGVzdERlbGV0ZSgpOworICAgIH0KKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IGFkdmFuY2VCYWRseTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKKworfQorCitmdW5jdGlvbiB0ZXN0RGVsZXRlKCkKK3sKKyAgICBkZWJ1ZygidGVzdERl
bGV0ZSgpIik7CisgICAgZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihvYmplY3RT
dG9yZU5hbWUsIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAgb2JqZWN0U3RvcmUg
PSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKG9iamVjdFN0b3Jl
TmFtZSkiKTsKKworICAgIGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5vcGVuQ3Vy
c29yKCkiKTsKKworICAgIHZhciBjdXJyZW50UG9zID0gMDsKKyAgICBmdW5jdGlvbiBkZWxldGVT
ZWNvbmQoKQorICAgIHsKKyAgICAgICAgY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKKwor
ICAgICAgICBpZiAoIWN1cnNvcikgeworICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBydW5UZXN0KGN1cnNvciwge2tl
eTogb2JqZWN0U3RvcmVEYXRhW2N1cnJlbnRQb3NdLmtleSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICB2YWx1ZTogb2JqZWN0U3RvcmVEYXRhW2N1cnJlbnRQb3NdLnZhbHVlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgIHByaW1hcnlLZXk6IG9iamVjdFN0b3JlRGF0YVtjdXJyZW50UG9zXS5r
ZXl9KTsKKworCisgICAgICAgIC8vIHRoaXMgaXMgaW4gdGhlIG1pZGRsZSBvZiB0aGUgZGF0YSwg
c28gaXQgd2lsbCB0ZXN0IHZhbGlkaXR5CisgICAgICAgIGlmIChjdXJyZW50UG9zID09IDIpIHsK
KyAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5kZWxldGUoKSIpOworICAgICAgICAgICAg
Y3Vyc29yLmFkdmFuY2UoNCk7CisgICAgICAgICAgICBjdXJyZW50UG9zICs9IDQ7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IuYWR2YW5jZSgxKSIpOwor
ICAgICAgICAgICAgY3VycmVudFBvcysrOworICAgICAgICB9CisKKyAgICB9CisgICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBkZWxldGVTZWNvbmQ7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK3Rlc3QoKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>