<?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>213068</bug_id>
          
          <creation_ts>2020-06-10 22:23:58 -0700</creation_ts>
          <short_desc>Replace instances of whitelist in WebCore with allowlist</short_desc>
          <delta_ts>2020-06-11 13:48:19 -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>WebKit Local 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>213092</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Beth Dakin">bdakin</reporter>
          <assigned_to name="Beth Dakin">bdakin</assigned_to>
          <cc>bdakin</cc>
    
    <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>japhet</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>pdr</cc>
    
    <cc>sihui_liu</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1661506</commentid>
    <comment_count>0</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2020-06-10 22:23:58 -0700</bug_when>
    <thetext>Continue the work started in https://bugs.webkit.org/show_bug.cgi?id=213000 and https://bugs.webkit.org/show_bug.cgi?id=213064 to replace instances of whitelist in WebCore with allowlist.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661509</commentid>
    <comment_count>1</comment_count>
      <attachid>401620</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2020-06-10 22:35:00 -0700</bug_when>
    <thetext>Created attachment 401620
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661511</commentid>
    <comment_count>2</comment_count>
      <attachid>401620</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-06-10 22:38:42 -0700</bug_when>
    <thetext>Comment on attachment 401620
Patch

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

&gt; Source/WebCore/loader/appcache/ApplicationCacheStorage.cpp:608
&gt; -    executeSQLCommand(&quot;CREATE TABLE IF NOT EXISTS CacheWhitelistURLs (url TEXT NOT NULL ON CONFLICT FAIL, cache INTEGER NOT NULL ON CONFLICT FAIL)&quot;);
&gt; +    executeSQLCommand(&quot;CREATE TABLE IF NOT EXISTS CacheAllowlistURLs (url TEXT NOT NULL ON CONFLICT FAIL, cache INTEGER NOT NULL ON CONFLICT FAIL)&quot;);

This seems like a no-go.

&gt; Source/WebCore/loader/appcache/ApplicationCacheStorage.cpp:623
&gt; -                      &quot;  DELETE FROM CacheWhitelistURLs WHERE cache = OLD.id;&quot;
&gt; +                      &quot;  DELETE FROM CacheAllowlistURLs WHERE cache = OLD.id;&quot;

This seems like a no-go.

&gt; Source/WebCore/loader/appcache/ApplicationCacheStorage.cpp:728
&gt; +            SQLiteStatement statement(m_database, &quot;INSERT INTO CacheAllowlistURLs (url, cache) VALUES (?, ?)&quot;);

This seems like a no-go.

&gt; Source/WebCore/loader/appcache/ApplicationCacheStorage.cpp:1158
&gt; +    SQLiteStatement allowlistStatement(m_database, &quot;SELECT url FROM CacheAllowlistURLs WHERE cache=?&quot;);

This seems like a no-go.

&gt; Source/WebCore/loader/appcache/ApplicationCacheStorage.cpp:1173
&gt; +    SQLiteStatement allowlistWildcardStatement(m_database, &quot;SELECT wildcard FROM CacheAllowsAllNetworkRequests WHERE cache=?&quot;);

This seems like a no-go.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661512</commentid>
    <comment_count>3</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-06-10 22:39:16 -0700</bug_when>
    <thetext>(But it&apos;s possible someone Databasey can say that they&apos;re OK)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661623</commentid>
    <comment_count>4</comment_count>
      <attachid>401656</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2020-06-11 09:40:11 -0700</bug_when>
    <thetext>Created attachment 401656
Patch

Here&apos;s a patch to try to make the Windows bots happy. I&apos;ll ping Brady and Sihui about the database changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661626</commentid>
    <comment_count>5</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-06-11 10:08:29 -0700</bug_when>
    <thetext>(In reply to Beth Dakin from comment #4)
&gt; Created attachment 401656 [details]
&gt; Patch
&gt; 
&gt; Here&apos;s a patch to try to make the Windows bots happy. I&apos;ll ping Brady and
&gt; Sihui about the database changes.

I think Tim&apos;s right. We need to migrate the data from the old table to new table. The current patch creates a new table with new name and leave the old table behind.

For the migration part, you probably can refer to something like
static bool createOrMigrateRecordsTableIfNecessary(SQLiteDatabase&amp; database) in SQLiteIDBBackingStore.cpp: if old table exists, create a temp table and copy the data to temp table, then drop the old table and rename the temp table to new name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661628</commentid>
    <comment_count>6</comment_count>
      <attachid>401657</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2020-06-11 10:09:59 -0700</bug_when>
    <thetext>Created attachment 401657
Patch that leaves SQL in a functioning state</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661640</commentid>
    <comment_count>7</comment_count>
      <attachid>401657</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-06-11 10:51:01 -0700</bug_when>
    <thetext>Comment on attachment 401657
Patch that leaves SQL in a functioning state

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

&gt; Source/WebCore/loader/appcache/ApplicationCacheStorage.cpp:1158
&gt; +    SQLiteStatement allowlistStatement(m_database, &quot;SELECT url FROM CacheWhitelistURLs WHERE cache=?&quot;);

You missed one.

&gt; Source/WebCore/loader/appcache/ApplicationCacheStorage.cpp:1173
&gt; +    SQLiteStatement allowlistWildcardStatement(m_database, &quot;SELECT wildcard FROM CacheWhiteAllNetworkRequests WHERE cache=?&quot;);

You missed one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661641</commentid>
    <comment_count>8</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-06-11 10:51:23 -0700</bug_when>
    <thetext>(In reply to Tim Horton from comment #7)
&gt; Comment on attachment 401657 [details]
&gt; Patch that leaves SQL in a functioning state
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=401657&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/loader/appcache/ApplicationCacheStorage.cpp:1158
&gt; &gt; +    SQLiteStatement allowlistStatement(m_database, &quot;SELECT url FROM CacheWhitelistURLs WHERE cache=?&quot;);
&gt; 
&gt; You missed one.
&gt; 
&gt; &gt; Source/WebCore/loader/appcache/ApplicationCacheStorage.cpp:1173
&gt; &gt; +    SQLiteStatement allowlistWildcardStatement(m_database, &quot;SELECT wildcard FROM CacheWhiteAllNetworkRequests WHERE cache=?&quot;);
&gt; 
&gt; You missed one.

WAIT NEVERMIND</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661685</commentid>
    <comment_count>9</comment_count>
      <attachid>401657</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-06-11 12:11:30 -0700</bug_when>
    <thetext>Comment on attachment 401657
Patch that leaves SQL in a functioning state

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

&gt;&gt; Source/WebCore/loader/appcache/ApplicationCacheStorage.cpp:1173
&gt;&gt; +    SQLiteStatement allowlistWildcardStatement(m_database, &quot;SELECT wildcard FROM CacheWhiteAllNetworkRequests WHERE cache=?&quot;);
&gt; 
&gt; You missed one.

Oh wait, you did actually miss this one!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661689</commentid>
    <comment_count>10</comment_count>
      <attachid>401667</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2020-06-11 12:24:42 -0700</bug_when>
    <thetext>Created attachment 401667
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661692</commentid>
    <comment_count>11</comment_count>
      <attachid>401670</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2020-06-11 12:32:47 -0700</bug_when>
    <thetext>Created attachment 401670
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661702</commentid>
    <comment_count>12</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-06-11 12:43:57 -0700</bug_when>
    <thetext>Found 2 new test failures: http/tests/appcache/crash-when-navigating-away-then-back.html, imported/w3c/web-platform-tests/service-workers/service-worker/claim-fetch-with-appcache.https.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661727</commentid>
    <comment_count>13</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-06-11 13:47:26 -0700</bug_when>
    <thetext>Committed r262922: &lt;https://trac.webkit.org/changeset/262922&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 401670.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661728</commentid>
    <comment_count>14</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-06-11 13:48:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/64268181&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401620</attachid>
            <date>2020-06-10 22:35:00 -0700</date>
            <delta_ts>2020-06-11 09:40:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>for-review.txt</filename>
            <type>text/plain</type>
            <size>66864</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2Mjg5NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDk3IEBACisyMDIwLTA2LTEwICBCZXRoIERh
a2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIGluc3RhbmNlcyBvZiB3
aGl0ZWxpc3QgaW4gV2ViQ29yZSB3aXRoIGFsbG93bGlzdAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzMDY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNl
QXV0aG9yaXplci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZUF1dGhvcml6ZXI6OkRh
dGFiYXNlQXV0aG9yaXplcik6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZUF1dGhvcml6ZXI6
OmFkZEFsbG93ZWRGdW5jdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VBdXRob3Jp
emVyOjphbGxvd0Z1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlQXV0aG9yaXpl
cjo6YWRkV2hpdGVsaXN0ZWRGdW5jdGlvbnMpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VBdXRob3JpemVyLmg6CisgICAgICAgICogZG9tL0V4dGVuc2lv
blN0eWxlU2hlZXRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvblN0eWxlU2hlZXRz
Ojp1cGRhdGVJbmplY3RlZFN0eWxlU2hlZXRDYWNoZSBjb25zdCk6CisgICAgICAgICogbG9hZGVy
L0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc09uQWNj
ZXNzQ29udHJvbFNpbXBsZVJlcXVlc3RNZXRob2RBbGxvd2xpc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6aXNTaW1wbGVDcm9zc09yaWdpbkFjY2Vzc1JlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6
aXNPbkFjY2Vzc0NvbnRyb2xTaW1wbGVSZXF1ZXN0TWV0aG9kV2hpdGVsaXN0KTogRGVsZXRlZC4K
KyAgICAgICAgKiBsb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmg6CisgICAgICAgICog
bG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZUl0ZW06OmFsbG93c0Nyb3NzT3Jp
Z2luTWV0aG9kIGNvbnN0KToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlOjpzZXRPbmxpbmVB
bGxvd2xpc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZTo6aXNVUkxJbk9u
bGluZUFsbG93bGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlOjpzZXRP
bmxpbmVXaGl0ZWxpc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25D
YWNoZTo6aXNVUkxJbk9ubGluZVdoaXRlbGlzdCk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0
aW9uQ2FjaGU6Om9ubGluZUFsbG93bGlzdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBs
aWNhdGlvbkNhY2hlOjpvbmxpbmVXaGl0ZWxpc3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAq
IGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hMb2FkaW5nTWFuaWZlc3QpOgor
ICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlSG9zdDo6c2hvdWxkTG9hZFJlc291cmNlRnJv
bUFwcGxpY2F0aW9uQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhv
c3Q6OmdldEFwcGxpY2F0aW9uQ2FjaGVGYWxsYmFja1Jlc291cmNlKToKKyAgICAgICAgKiBsb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmZhbGxiYWNrQ2FjaGVHcm91cEZvclVSTCk6Cisg
ICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6b3BlbkRhdGFiYXNlKToK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bG9hZENhY2hlKToKKyAgICAg
ICAgKiBsb2FkZXIvYXBwY2FjaGUvTWFuaWZlc3RQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6cGFyc2VNYW5pZmVzdCk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL01hbmlmZXN0UGFy
c2VyLmg6CisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZTo6aW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5KToKKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5
T3JpZ2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjYW5SZXF1ZXN0
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjYW5EaXNwbGF5IGNv
bnN0KToKKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5UG9saWN5LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNlY3VyaXR5UG9saWN5Ojppc0FjY2Vzc0FsbG93ZWQpOgorICAgICAgICAoV2ViQ29yZTo6
U2VjdXJpdHlQb2xpY3k6OmFkZE9yaWdpbkFjY2Vzc0FsbG93bGlzdEVudHJ5KToKKyAgICAgICAg
KFdlYkNvcmU6OlNlY3VyaXR5UG9saWN5OjpyZW1vdmVPcmlnaW5BY2Nlc3NBbGxvd2xpc3RFbnRy
eSk6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eVBvbGljeTo6cmVzZXRPcmlnaW5BY2Nlc3NB
bGxvd2xpc3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5UG9saWN5Ojppc0FjY2Vzc1do
aXRlTGlzdGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5UG9saWN5Ojph
ZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpTZWN1cml0eVBvbGljeTo6cmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlQb2xpY3k6OnJlc2V0T3JpZ2luQWNjZXNz
V2hpdGVsaXN0cyk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9TZWN1cml0eVBvbGljeS5oOgor
ICAgICAgICAqIHBhZ2UvVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlVzZXJDb250ZW50VVJMUGF0dGVybjo6bWF0Y2hlc1BhdHRlcm5zKToKKyAgICAgICAgKiBw
YWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5oOgorICAgICAgICAqIHBhZ2UvVXNlclNjcmlwdC5o
OgorICAgICAgICAoV2ViQ29yZTo6VXNlclNjcmlwdDo6VXNlclNjcmlwdCk6CisgICAgICAgIChX
ZWJDb3JlOjpVc2VyU2NyaXB0OjphbGxvd2xpc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
VXNlclNjcmlwdDo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJTY3JpcHQ6
OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpVc2VyU2NyaXB0Ojp3aGl0ZWxpc3QgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAqIHBhZ2UvVXNlclN0eWxlU2hlZXQuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlVzZXJTdHlsZVNoZWV0OjpVc2VyU3R5bGVTaGVldCk6CisgICAgICAgIChXZWJDb3Jl
OjpVc2VyU3R5bGVTaGVldDo6YWxsb3dsaXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlVz
ZXJTdHlsZVNoZWV0Ojp3aGl0ZWxpc3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZvbnRBbGxvd2xp
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpzZXRGb250QWxsb3dsaXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OnBsYXRmb3JtRm9udExvb2t1cFdpdGhGYW1pbHkpOgorICAgICAgICAo
V2ViQ29yZTo6Zm9udFdoaXRlbGlzdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpGb250
Q2FjaGU6OnNldEZvbnRXaGl0ZWxpc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvSFRUUFBhcnNlcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNWYWxpZEFjY2VwdEhl
YWRlclZhbHVlKToKKyAgICAgICAgKiByZW5kZXJpbmcvRmxvYXRpbmdPYmplY3RzLmg6CisgICAg
ICAgICogc3R5bGUvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGU6OkVsZW1lbnRSdWxlQ29sbGVjdG9yOjp0cmFuc2Zlck1hdGNoZWRSdWxlcyk6CisgICAg
ICAgICogc3R5bGUvRWxlbWVudFJ1bGVDb2xsZWN0b3IuaDoKKyAgICAgICAgKiBzdHlsZS9Qcm9w
ZXJ0eUNhc2NhZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlByb3BlcnR5Q2FzY2Fk
ZTo6YWRkTWF0Y2gpOgorICAgICAgICAqIHN0eWxlL1J1bGVEYXRhLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlOjpkZXRlcm1pbmVQcm9wZXJ0eUFsbG93bGlzdFR5cGUpOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGU6OlJ1bGVEYXRhOjpSdWxlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZTo6ZGV0ZXJtaW5lUHJvcGVydHlXaGl0ZWxpc3RUeXBlKTogRGVsZXRlZC4KKyAgICAgICAg
KiBzdHlsZS9SdWxlRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlJ1bGVEYXRhOjpw
cm9wZXJ0eUFsbG93bGlzdFR5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlJ1
bGVEYXRhOjpwcm9wZXJ0eVdoaXRlbGlzdFR5cGUgY29uc3QpOiBEZWxldGVkLgorCiAyMDIwLTA2
LTEwICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXBsYWNlIGlu
c3RhbmNlcyBvZiBibGFja2xpc3QgaW4gV2ViQ29yZSB3aXRoIGJsb2NrbGlzdApJbmRleDogU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUF1dGhvcml6ZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VB
dXRob3JpemVyLmNwcAkocmV2aXNpb24gMjYyODk0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZUF1dGhvcml6ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
Myw3ICs0Myw3IEBAIERhdGFiYXNlQXV0aG9yaXplcjo6RGF0YWJhc2VBdXRob3JpemVyKGMKICAg
ICAsIG1fZGF0YWJhc2VJbmZvVGFibGVOYW1lKGRhdGFiYXNlSW5mb1RhYmxlTmFtZSkKIHsKICAg
ICByZXNldCgpOwotICAgIGFkZFdoaXRlbGlzdGVkRnVuY3Rpb25zKCk7CisgICAgYWRkQWxsb3dl
ZEZ1bmN0aW9ucygpOwogfQogCiB2b2lkIERhdGFiYXNlQXV0aG9yaXplcjo6cmVzZXQoKQpAQCAt
NTgsNjggKzU4LDY4IEBAIHZvaWQgRGF0YWJhc2VBdXRob3JpemVyOjpyZXNldERlbGV0ZXMoKQog
ICAgIG1faGFkRGVsZXRlcyA9IGZhbHNlOwogfQogCi12b2lkIERhdGFiYXNlQXV0aG9yaXplcjo6
YWRkV2hpdGVsaXN0ZWRGdW5jdGlvbnMoKQordm9pZCBEYXRhYmFzZUF1dGhvcml6ZXI6OmFkZEFs
bG93ZWRGdW5jdGlvbnMoKQogewogICAgIC8vIFNRTGl0ZSBmdW5jdGlvbnMgdXNlZCB0byBoZWxw
IGltcGxlbWVudCBzb21lIG9wZXJhdGlvbnMKICAgICAvLyBBTFRFUiBUQUJMRSBoZWxwZXJzCi0g
ICAgbV93aGl0ZWxpc3RlZEZ1bmN0aW9ucy5hZGQoInNxbGl0ZV9yZW5hbWVfdGFibGUiKTsKLSAg
ICBtX3doaXRlbGlzdGVkRnVuY3Rpb25zLmFkZCgic3FsaXRlX3JlbmFtZV90cmlnZ2VyIik7Cisg
ICAgbV9hbGxvd2VkRnVuY3Rpb25zLmFkZCgic3FsaXRlX3JlbmFtZV90YWJsZSIpOworICAgIG1f
YWxsb3dlZEZ1bmN0aW9ucy5hZGQoInNxbGl0ZV9yZW5hbWVfdHJpZ2dlciIpOwogICAgIC8vIEdM
T0IgaGVscGVycwotICAgIG1fd2hpdGVsaXN0ZWRGdW5jdGlvbnMuYWRkKCJnbG9iIik7CisgICAg
bV9hbGxvd2VkRnVuY3Rpb25zLmFkZCgiZ2xvYiIpOwogCiAgICAgLy8gU1FMaXRlIGNvcmUgZnVu
Y3Rpb25zCi0gICAgbV93aGl0ZWxpc3RlZEZ1bmN0aW9ucy5hZGQoImFicyIpOwotICAgIG1fd2hp
dGVsaXN0ZWRGdW5jdGlvbnMuYWRkKCJjaGFuZ2VzIik7Ci0gICAgbV93aGl0ZWxpc3RlZEZ1bmN0
aW9ucy5hZGQoImNvYWxlc2NlIik7Ci0gICAgbV93aGl0ZWxpc3RlZEZ1bmN0aW9ucy5hZGQoImds
b2IiKTsKLSAgICBtX3doaXRlbGlzdGVkRnVuY3Rpb25zLmFkZCgiaWZudWxsIik7Ci0gICAgbV93
aGl0ZWxpc3RlZEZ1bmN0aW9ucy5hZGQoImhleCIpOwotICAgIG1fd2hpdGVsaXN0ZWRGdW5jdGlv
bnMuYWRkKCJsYXN0X2luc2VydF9yb3dpZCIpOwotICAgIG1fd2hpdGVsaXN0ZWRGdW5jdGlvbnMu
YWRkKCJsZW5ndGgiKTsKLSAgICBtX3doaXRlbGlzdGVkRnVuY3Rpb25zLmFkZCgibGlrZSIpOwot
ICAgIG1fd2hpdGVsaXN0ZWRGdW5jdGlvbnMuYWRkKCJsb3dlciIpOwotICAgIG1fd2hpdGVsaXN0
ZWRGdW5jdGlvbnMuYWRkKCJsdHJpbSIpOwotICAgIG1fd2hpdGVsaXN0ZWRGdW5jdGlvbnMuYWRk
KCJtYXgiKTsKLSAgICBtX3doaXRlbGlzdGVkRnVuY3Rpb25zLmFkZCgibWluIik7Ci0gICAgbV93
aGl0ZWxpc3RlZEZ1bmN0aW9ucy5hZGQoIm51bGxpZiIpOwotICAgIG1fd2hpdGVsaXN0ZWRGdW5j
dGlvbnMuYWRkKCJxdW90ZSIpOwotICAgIG1fd2hpdGVsaXN0ZWRGdW5jdGlvbnMuYWRkKCJyZXBs
YWNlIik7Ci0gICAgbV93aGl0ZWxpc3RlZEZ1bmN0aW9ucy5hZGQoInJvdW5kIik7Ci0gICAgbV93
aGl0ZWxpc3RlZEZ1bmN0aW9ucy5hZGQoInJ0cmltIik7Ci0gICAgbV93aGl0ZWxpc3RlZEZ1bmN0
aW9ucy5hZGQoInNvdW5kZXgiKTsKLSAgICBtX3doaXRlbGlzdGVkRnVuY3Rpb25zLmFkZCgic3Fs
aXRlX3NvdXJjZV9pZCIpOwotICAgIG1fd2hpdGVsaXN0ZWRGdW5jdGlvbnMuYWRkKCJzcWxpdGVf
dmVyc2lvbiIpOwotICAgIG1fd2hpdGVsaXN0ZWRGdW5jdGlvbnMuYWRkKCJzdWJzdHIiKTsKLSAg
ICBtX3doaXRlbGlzdGVkRnVuY3Rpb25zLmFkZCgidG90YWxfY2hhbmdlcyIpOwotICAgIG1fd2hp
dGVsaXN0ZWRGdW5jdGlvbnMuYWRkKCJ0cmltIik7Ci0gICAgbV93aGl0ZWxpc3RlZEZ1bmN0aW9u
cy5hZGQoInR5cGVvZiIpOwotICAgIG1fd2hpdGVsaXN0ZWRGdW5jdGlvbnMuYWRkKCJ1cHBlciIp
OwotICAgIG1fd2hpdGVsaXN0ZWRGdW5jdGlvbnMuYWRkKCJ6ZXJvYmxvYiIpOworICAgIG1fYWxs
b3dlZEZ1bmN0aW9ucy5hZGQoImFicyIpOworICAgIG1fYWxsb3dlZEZ1bmN0aW9ucy5hZGQoImNo
YW5nZXMiKTsKKyAgICBtX2FsbG93ZWRGdW5jdGlvbnMuYWRkKCJjb2FsZXNjZSIpOworICAgIG1f
YWxsb3dlZEZ1bmN0aW9ucy5hZGQoImdsb2IiKTsKKyAgICBtX2FsbG93ZWRGdW5jdGlvbnMuYWRk
KCJpZm51bGwiKTsKKyAgICBtX2FsbG93ZWRGdW5jdGlvbnMuYWRkKCJoZXgiKTsKKyAgICBtX2Fs
bG93ZWRGdW5jdGlvbnMuYWRkKCJsYXN0X2luc2VydF9yb3dpZCIpOworICAgIG1fYWxsb3dlZEZ1
bmN0aW9ucy5hZGQoImxlbmd0aCIpOworICAgIG1fYWxsb3dlZEZ1bmN0aW9ucy5hZGQoImxpa2Ui
KTsKKyAgICBtX2FsbG93ZWRGdW5jdGlvbnMuYWRkKCJsb3dlciIpOworICAgIG1fYWxsb3dlZEZ1
bmN0aW9ucy5hZGQoImx0cmltIik7CisgICAgbV9hbGxvd2VkRnVuY3Rpb25zLmFkZCgibWF4Iik7
CisgICAgbV9hbGxvd2VkRnVuY3Rpb25zLmFkZCgibWluIik7CisgICAgbV9hbGxvd2VkRnVuY3Rp
b25zLmFkZCgibnVsbGlmIik7CisgICAgbV9hbGxvd2VkRnVuY3Rpb25zLmFkZCgicXVvdGUiKTsK
KyAgICBtX2FsbG93ZWRGdW5jdGlvbnMuYWRkKCJyZXBsYWNlIik7CisgICAgbV9hbGxvd2VkRnVu
Y3Rpb25zLmFkZCgicm91bmQiKTsKKyAgICBtX2FsbG93ZWRGdW5jdGlvbnMuYWRkKCJydHJpbSIp
OworICAgIG1fYWxsb3dlZEZ1bmN0aW9ucy5hZGQoInNvdW5kZXgiKTsKKyAgICBtX2FsbG93ZWRG
dW5jdGlvbnMuYWRkKCJzcWxpdGVfc291cmNlX2lkIik7CisgICAgbV9hbGxvd2VkRnVuY3Rpb25z
LmFkZCgic3FsaXRlX3ZlcnNpb24iKTsKKyAgICBtX2FsbG93ZWRGdW5jdGlvbnMuYWRkKCJzdWJz
dHIiKTsKKyAgICBtX2FsbG93ZWRGdW5jdGlvbnMuYWRkKCJ0b3RhbF9jaGFuZ2VzIik7CisgICAg
bV9hbGxvd2VkRnVuY3Rpb25zLmFkZCgidHJpbSIpOworICAgIG1fYWxsb3dlZEZ1bmN0aW9ucy5h
ZGQoInR5cGVvZiIpOworICAgIG1fYWxsb3dlZEZ1bmN0aW9ucy5hZGQoInVwcGVyIik7CisgICAg
bV9hbGxvd2VkRnVuY3Rpb25zLmFkZCgiemVyb2Jsb2IiKTsKIAogICAgIC8vIFNRTGl0ZSBkYXRl
IGFuZCB0aW1lIGZ1bmN0aW9ucwotICAgIG1fd2hpdGVsaXN0ZWRGdW5jdGlvbnMuYWRkKCJkYXRl
Iik7Ci0gICAgbV93aGl0ZWxpc3RlZEZ1bmN0aW9ucy5hZGQoInRpbWUiKTsKLSAgICBtX3doaXRl
bGlzdGVkRnVuY3Rpb25zLmFkZCgiZGF0ZXRpbWUiKTsKLSAgICBtX3doaXRlbGlzdGVkRnVuY3Rp
b25zLmFkZCgianVsaWFuZGF5Iik7Ci0gICAgbV93aGl0ZWxpc3RlZEZ1bmN0aW9ucy5hZGQoInN0
cmZ0aW1lIik7CisgICAgbV9hbGxvd2VkRnVuY3Rpb25zLmFkZCgiZGF0ZSIpOworICAgIG1fYWxs
b3dlZEZ1bmN0aW9ucy5hZGQoInRpbWUiKTsKKyAgICBtX2FsbG93ZWRGdW5jdGlvbnMuYWRkKCJk
YXRldGltZSIpOworICAgIG1fYWxsb3dlZEZ1bmN0aW9ucy5hZGQoImp1bGlhbmRheSIpOworICAg
IG1fYWxsb3dlZEZ1bmN0aW9ucy5hZGQoInN0cmZ0aW1lIik7CiAKICAgICAvLyBTUUxpdGUgYWdn
cmVnYXRlIGZ1bmN0aW9ucwogICAgIC8vIG1heCgpIGFuZCBtaW4oKSBhcmUgYWxyZWFkeSBpbiB0
aGUgbGlzdAotICAgIG1fd2hpdGVsaXN0ZWRGdW5jdGlvbnMuYWRkKCJhdmciKTsKLSAgICBtX3do
aXRlbGlzdGVkRnVuY3Rpb25zLmFkZCgiY291bnQiKTsKLSAgICBtX3doaXRlbGlzdGVkRnVuY3Rp
b25zLmFkZCgiZ3JvdXBfY29uY2F0Iik7Ci0gICAgbV93aGl0ZWxpc3RlZEZ1bmN0aW9ucy5hZGQo
InN1bSIpOwotICAgIG1fd2hpdGVsaXN0ZWRGdW5jdGlvbnMuYWRkKCJ0b3RhbCIpOworICAgIG1f
YWxsb3dlZEZ1bmN0aW9ucy5hZGQoImF2ZyIpOworICAgIG1fYWxsb3dlZEZ1bmN0aW9ucy5hZGQo
ImNvdW50Iik7CisgICAgbV9hbGxvd2VkRnVuY3Rpb25zLmFkZCgiZ3JvdXBfY29uY2F0Iik7Cisg
ICAgbV9hbGxvd2VkRnVuY3Rpb25zLmFkZCgic3VtIik7CisgICAgbV9hbGxvd2VkRnVuY3Rpb25z
LmFkZCgidG90YWwiKTsKIAogICAgIC8vIFNRTGl0ZSBGVFMgZnVuY3Rpb25zCi0gICAgbV93aGl0
ZWxpc3RlZEZ1bmN0aW9ucy5hZGQoIm1hdGNoIik7Ci0gICAgbV93aGl0ZWxpc3RlZEZ1bmN0aW9u
cy5hZGQoInNuaXBwZXQiKTsKLSAgICBtX3doaXRlbGlzdGVkRnVuY3Rpb25zLmFkZCgib2Zmc2V0
cyIpOwotICAgIG1fd2hpdGVsaXN0ZWRGdW5jdGlvbnMuYWRkKCJvcHRpbWl6ZSIpOworICAgIG1f
YWxsb3dlZEZ1bmN0aW9ucy5hZGQoIm1hdGNoIik7CisgICAgbV9hbGxvd2VkRnVuY3Rpb25zLmFk
ZCgic25pcHBldCIpOworICAgIG1fYWxsb3dlZEZ1bmN0aW9ucy5hZGQoIm9mZnNldHMiKTsKKyAg
ICBtX2FsbG93ZWRGdW5jdGlvbnMuYWRkKCJvcHRpbWl6ZSIpOwogCiAgICAgLy8gU1FMaXRlIElD
VSBmdW5jdGlvbnMKICAgICAvLyBsaWtlKCksIGxvd2VyKCkgYW5kIHVwcGVyKCkgYXJlIGFscmVh
ZHkgaW4gdGhlIGxpc3QKLSAgICBtX3doaXRlbGlzdGVkRnVuY3Rpb25zLmFkZCgicmVnZXhwIik7
CisgICAgbV9hbGxvd2VkRnVuY3Rpb25zLmFkZCgicmVnZXhwIik7CiB9CiAKIGludCBEYXRhYmFz
ZUF1dGhvcml6ZXI6OmNyZWF0ZVRhYmxlKGNvbnN0IFN0cmluZyYgdGFibGVOYW1lKQpAQCAtMzU5
LDcgKzM1OSw3IEBAIGludCBEYXRhYmFzZUF1dGhvcml6ZXI6OmFsbG93RGV0YWNoKGNvbnMKIAog
aW50IERhdGFiYXNlQXV0aG9yaXplcjo6YWxsb3dGdW5jdGlvbihjb25zdCBTdHJpbmcmIGZ1bmN0
aW9uTmFtZSkKIHsKLSAgICBpZiAobV9zZWN1cml0eUVuYWJsZWQgJiYgIW1fd2hpdGVsaXN0ZWRG
dW5jdGlvbnMuY29udGFpbnMoZnVuY3Rpb25OYW1lKSkKKyAgICBpZiAobV9zZWN1cml0eUVuYWJs
ZWQgJiYgIW1fYWxsb3dlZEZ1bmN0aW9ucy5jb250YWlucyhmdW5jdGlvbk5hbWUpKQogICAgICAg
ICByZXR1cm4gU1FMQXV0aERlbnk7CiAKICAgICByZXR1cm4gU1FMQXV0aEFsbG93OwpJbmRleDog
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUF1dGhvcml6ZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNl
QXV0aG9yaXplci5oCShyZXZpc2lvbiAyNjI4OTQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmRhdGFiYXNlL0RhdGFiYXNlQXV0aG9yaXplci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQs
NyArMTA0LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IERhdGFiYXNlQXV0
aG9yaXplcihjb25zdCBTdHJpbmcmIGRhdGFiYXNlSW5mb1RhYmxlTmFtZSk7Ci0gICAgdm9pZCBh
ZGRXaGl0ZWxpc3RlZEZ1bmN0aW9ucygpOworICAgIHZvaWQgYWRkQWxsb3dlZEZ1bmN0aW9ucygp
OwogICAgIGludCBkZW55QmFzZWRPblRhYmxlTmFtZShjb25zdCBTdHJpbmcmKSBjb25zdDsKICAg
ICBpbnQgdXBkYXRlRGVsZXRlc0Jhc2VkT25UYWJsZU5hbWUoY29uc3QgU3RyaW5nJik7CiAgICAg
Ym9vbCBhbGxvd1dyaXRlKCk7CkBAIC0xMTcsNyArMTE3LDcgQEAgcHJpdmF0ZToKIAogICAgIGNv
bnN0IFN0cmluZyBtX2RhdGFiYXNlSW5mb1RhYmxlTmFtZTsKIAotICAgIEhhc2hTZXQ8U3RyaW5n
LCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IG1fd2hpdGVsaXN0ZWRGdW5jdGlvbnM7CisgICAg
SGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4gbV9hbGxvd2VkRnVuY3Rp
b25zOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUv
ZG9tL0V4dGVuc2lvblN0eWxlU2hlZXRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9kb20vRXh0ZW5zaW9uU3R5bGVTaGVldHMuY3BwCShyZXZpc2lvbiAyNjI4OTQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9kb20vRXh0ZW5zaW9uU3R5bGVTaGVldHMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNDgsNyArMTQ4LDcgQEAgdm9pZCBFeHRlbnNpb25TdHlsZVNoZWV0czo6dXBkYXRlSW5qZWN0
ZQogICAgICAgICBpZiAodXNlclN0eWxlU2hlZXQuaW5qZWN0ZWRGcmFtZXMoKSA9PSBVc2VyQ29u
dGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJblRvcEZyYW1lT25seSAmJiBtX2RvY3VtZW50Lm93
bmVyRWxlbWVudCgpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlmICghVXNlckNv
bnRlbnRVUkxQYXR0ZXJuOjptYXRjaGVzUGF0dGVybnMobV9kb2N1bWVudC51cmwoKSwgdXNlclN0
eWxlU2hlZXQud2hpdGVsaXN0KCksIHVzZXJTdHlsZVNoZWV0LmJsb2NrbGlzdCgpKSkKKyAgICAg
ICAgaWYgKCFVc2VyQ29udGVudFVSTFBhdHRlcm46Om1hdGNoZXNQYXR0ZXJucyhtX2RvY3VtZW50
LnVybCgpLCB1c2VyU3R5bGVTaGVldC5hbGxvd2xpc3QoKSwgdXNlclN0eWxlU2hlZXQuYmxvY2ts
aXN0KCkpKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGFkZFN0eWxlU2hlZXQodXNl
clN0eWxlU2hlZXQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNj
ZXNzQ29udHJvbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3Nz
T3JpZ2luQWNjZXNzQ29udHJvbC5jcHAJKHJldmlzaW9uIDI2Mjg5NCkKKysrIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00NSwxNCArNDUsMTQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1ib29sIGlzT25BY2Nl
c3NDb250cm9sU2ltcGxlUmVxdWVzdE1ldGhvZFdoaXRlbGlzdChjb25zdCBTdHJpbmcmIG1ldGhv
ZCkKK2Jvb2wgaXNPbkFjY2Vzc0NvbnRyb2xTaW1wbGVSZXF1ZXN0TWV0aG9kQWxsb3dsaXN0KGNv
bnN0IFN0cmluZyYgbWV0aG9kKQogewogICAgIHJldHVybiBtZXRob2QgPT0gIkdFVCIgfHwgbWV0
aG9kID09ICJIRUFEIiB8fCBtZXRob2QgPT0gIlBPU1QiOwogfQogCiBib29sIGlzU2ltcGxlQ3Jv
c3NPcmlnaW5BY2Nlc3NSZXF1ZXN0KGNvbnN0IFN0cmluZyYgbWV0aG9kLCBjb25zdCBIVFRQSGVh
ZGVyTWFwJiBoZWFkZXJNYXApCiB7Ci0gICAgaWYgKCFpc09uQWNjZXNzQ29udHJvbFNpbXBsZVJl
cXVlc3RNZXRob2RXaGl0ZWxpc3QobWV0aG9kKSkKKyAgICBpZiAoIWlzT25BY2Nlc3NDb250cm9s
U2ltcGxlUmVxdWVzdE1ldGhvZEFsbG93bGlzdChtZXRob2QpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICBmb3IgKGNvbnN0IGF1dG8mIGhlYWRlciA6IGhlYWRlck1hcCkgewpJbmRleDog
U291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuaAko
cmV2aXNpb24gMjYyODk0KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNj
ZXNzQ29udHJvbC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBAIGNsYXNzIFNlY3Vy
aXR5T3JpZ2luOwogc3RydWN0IFJlc291cmNlTG9hZGVyT3B0aW9uczsKIAogV0VCQ09SRV9FWFBP
UlQgYm9vbCBpc1NpbXBsZUNyb3NzT3JpZ2luQWNjZXNzUmVxdWVzdChjb25zdCBTdHJpbmcmIG1l
dGhvZCwgY29uc3QgSFRUUEhlYWRlck1hcCYpOwotYm9vbCBpc09uQWNjZXNzQ29udHJvbFNpbXBs
ZVJlcXVlc3RNZXRob2RXaGl0ZWxpc3QoY29uc3QgU3RyaW5nJik7Citib29sIGlzT25BY2Nlc3ND
b250cm9sU2ltcGxlUmVxdWVzdE1ldGhvZEFsbG93bGlzdChjb25zdCBTdHJpbmcmKTsKIAogdm9p
ZCB1cGRhdGVSZXF1ZXN0UmVmZXJyZXIoUmVzb3VyY2VSZXF1ZXN0JiwgUmVmZXJyZXJQb2xpY3ks
IGNvbnN0IFN0cmluZyYpOwogICAgIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3Nz
T3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmNwcAkocmV2aXNpb24g
MjYyODk0KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0UmVz
dWx0Q2FjaGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NCw3ICs4NCw3IEBAIE9wdGlvbmFsPFN0
cmluZz4gQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXMKIAogYm9vbCBDcm9zc09yaWdpblByZWZsaWdo
dFJlc3VsdENhY2hlSXRlbTo6YWxsb3dzQ3Jvc3NPcmlnaW5NZXRob2QoY29uc3QgU3RyaW5nJiBt
ZXRob2QsIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5KSBj
b25zdAogewotICAgIHJldHVybiBtX21ldGhvZHMuY29udGFpbnMobWV0aG9kKSB8fCAobV9tZXRo
b2RzLmNvbnRhaW5zKCIqIikgJiYgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgIT0gU3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3k6OlVzZSkgfHwgaXNPbkFjY2Vzc0NvbnRyb2xTaW1wbGVSZXF1ZXN0TWV0
aG9kV2hpdGVsaXN0KG1ldGhvZCk7CisgICAgcmV0dXJuIG1fbWV0aG9kcy5jb250YWlucyhtZXRo
b2QpIHx8IChtX21ldGhvZHMuY29udGFpbnMoIioiKSAmJiBzdG9yZWRDcmVkZW50aWFsc1BvbGlj
eSAhPSBTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6VXNlKSB8fCBpc09uQWNjZXNzQ29udHJvbFNp
bXBsZVJlcXVlc3RNZXRob2RBbGxvd2xpc3QobWV0aG9kKTsKIH0KIAogT3B0aW9uYWw8U3RyaW5n
PiBDcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlSXRlbTo6dmFsaWRhdGVDcm9zc09yaWdp
bkhlYWRlcnMoY29uc3QgSFRUUEhlYWRlck1hcCYgcmVxdWVzdEhlYWRlcnMsIFN0b3JlZENyZWRl
bnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5KSBjb25zdApJbmRleDogU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlLmNwcAko
cmV2aXNpb24gMjYyODk0KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjQsMTYgKzEyNCwxNiBAQCBBcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2UqIEFwcGxpY2F0aW9uQ2FjCiAgICAgcmV0dXJuIHJlc291cmNl
Rm9yVVJMKHVybC5zdHJpbmcoKSk7CiB9CiAKLXZvaWQgQXBwbGljYXRpb25DYWNoZTo6c2V0T25s
aW5lV2hpdGVsaXN0KGNvbnN0IFZlY3RvcjxVUkw+JiBvbmxpbmVXaGl0ZWxpc3QpCit2b2lkIEFw
cGxpY2F0aW9uQ2FjaGU6OnNldE9ubGluZUFsbG93bGlzdChjb25zdCBWZWN0b3I8VVJMPiYgb25s
aW5lQWxsb3dsaXN0KQogewotICAgIEFTU0VSVChtX29ubGluZVdoaXRlbGlzdC5pc0VtcHR5KCkp
OwotICAgIG1fb25saW5lV2hpdGVsaXN0ID0gb25saW5lV2hpdGVsaXN0OyAKKyAgICBBU1NFUlQo
bV9vbmxpbmVBbGxvd2xpc3QuaXNFbXB0eSgpKTsKKyAgICBtX29ubGluZUFsbG93bGlzdCA9IG9u
bGluZUFsbG93bGlzdDsKIH0KIAotYm9vbCBBcHBsaWNhdGlvbkNhY2hlOjppc1VSTEluT25saW5l
V2hpdGVsaXN0KGNvbnN0IFVSTCYgdXJsKQorYm9vbCBBcHBsaWNhdGlvbkNhY2hlOjppc1VSTElu
T25saW5lQWxsb3dsaXN0KGNvbnN0IFVSTCYgdXJsKQogewotICAgIGZvciAoYXV0byYgd2hpdGVs
aXN0VVJMIDogbV9vbmxpbmVXaGl0ZWxpc3QpIHsKLSAgICAgICAgaWYgKHByb3RvY29sSG9zdEFu
ZFBvcnRBcmVFcXVhbCh1cmwsIHdoaXRlbGlzdFVSTCkgJiYgdXJsLnN0cmluZygpLnN0YXJ0c1dp
dGgod2hpdGVsaXN0VVJMLnN0cmluZygpKSkKKyAgICBmb3IgKGF1dG8mIGFsbG93bGlzdFVSTCA6
IG1fb25saW5lQWxsb3dsaXN0KSB7CisgICAgICAgIGlmIChwcm90b2NvbEhvc3RBbmRQb3J0QXJl
RXF1YWwodXJsLCBhbGxvd2xpc3RVUkwpICYmIHVybC5zdHJpbmcoKS5zdGFydHNXaXRoKGFsbG93
bGlzdFVSTC5zdHJpbmcoKSkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAg
cmV0dXJuIGZhbHNlOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZS5oCShyZXZpc2lvbiAyNjI4OTQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01
OCw5ICs1OCw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0QWxsb3dzQWxsTmV0d29ya1JlcXVl
c3RzKGJvb2wgdmFsdWUpIHsgbV9hbGxvd0FsbE5ldHdvcmtSZXF1ZXN0cyA9IHZhbHVlOyB9CiAg
ICAgYm9vbCBhbGxvd3NBbGxOZXR3b3JrUmVxdWVzdHMoKSBjb25zdCB7IHJldHVybiBtX2FsbG93
QWxsTmV0d29ya1JlcXVlc3RzOyB9Ci0gICAgdm9pZCBzZXRPbmxpbmVXaGl0ZWxpc3QoY29uc3Qg
VmVjdG9yPFVSTD4mIG9ubGluZVdoaXRlbGlzdCk7Ci0gICAgY29uc3QgVmVjdG9yPFVSTD4mIG9u
bGluZVdoaXRlbGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1fb25saW5lV2hpdGVsaXN0OyB9Ci0gICAg
Ym9vbCBpc1VSTEluT25saW5lV2hpdGVsaXN0KGNvbnN0IFVSTCYpOyAvLyBUaGVyZSBpcyBhbiBl
bnRyeSBpbiBvbmxpbmUgd2hpdGVsaXN0IHRoYXQgaGFzIHRoZSBzYW1lIG9yaWdpbiBhcyB0aGUg
cmVzb3VyY2UncyBVUkwgYW5kIHRoYXQgaXMgYSBwcmVmaXggbWF0Y2ggZm9yIHRoZSByZXNvdXJj
ZSdzIFVSTC4KKyAgICB2b2lkIHNldE9ubGluZUFsbG93bGlzdChjb25zdCBWZWN0b3I8VVJMPiYg
b25saW5lQWxsb3dsaXN0KTsKKyAgICBjb25zdCBWZWN0b3I8VVJMPiYgb25saW5lQWxsb3dsaXN0
KCkgY29uc3QgeyByZXR1cm4gbV9vbmxpbmVBbGxvd2xpc3Q7IH0KKyAgICBib29sIGlzVVJMSW5P
bmxpbmVBbGxvd2xpc3QoY29uc3QgVVJMJik7IC8vIFRoZXJlIGlzIGFuIGVudHJ5IGluIG9ubGlu
ZSBhbGxvd2xpc3QgdGhhdCBoYXMgdGhlIHNhbWUgb3JpZ2luIGFzIHRoZSByZXNvdXJjZSdzIFVS
TCBhbmQgdGhhdCBpcyBhIHByZWZpeCBtYXRjaCBmb3IgdGhlIHJlc291cmNlJ3MgVVJMLgogCiAg
ICAgdm9pZCBzZXRGYWxsYmFja1VSTHMoY29uc3QgRmFsbGJhY2tVUkxWZWN0b3ImKTsKICAgICBj
b25zdCBGYWxsYmFja1VSTFZlY3RvciYgZmFsbGJhY2tVUkxzKCkgY29uc3QgeyByZXR1cm4gbV9m
YWxsYmFja1VSTHM7IH0KQEAgLTg5LDcgKzg5LDcgQEAgcHJpdmF0ZToKICAgICBXZWFrUHRyPEFw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT4gbV9tYW5pZmVzdDsKIAogICAgIGJvb2wgbV9hbGxvd0Fs
bE5ldHdvcmtSZXF1ZXN0cyB7IGZhbHNlIH07Ci0gICAgVmVjdG9yPFVSTD4gbV9vbmxpbmVXaGl0
ZWxpc3Q7CisgICAgVmVjdG9yPFVSTD4gbV9vbmxpbmVBbGxvd2xpc3Q7CiAgICAgRmFsbGJhY2tV
UkxWZWN0b3IgbV9mYWxsYmFja1VSTHM7CiAKICAgICAvLyBUaGUgdG90YWwgc2l6ZSBvZiB0aGUg
cmVzb3VyY2VzIGJlbG9uZ2luZyB0byB0aGlzIEFwcGxpY2F0aW9uIENhY2hlIGluc3RhbmNlLgpJ
bmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91
cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVHcm91cC5jcHAJKHJldmlzaW9uIDI2Mjg5NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02NDEsNyArNjQxLDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZEZpbmlz
aExvYQogICAgIGZvciAoYXV0byYgZmFsbGJhY2tVUkwgOiBtYW5pZmVzdC5mYWxsYmFja1VSTHMp
CiAgICAgICAgIGFkZEVudHJ5KGZhbGxiYWNrVVJMLnNlY29uZC5zdHJpbmcoKSwgQXBwbGljYXRp
b25DYWNoZVJlc291cmNlOjpGYWxsYmFjayk7CiAgICAgCi0gICAgbV9jYWNoZUJlaW5nVXBkYXRl
ZC0+c2V0T25saW5lV2hpdGVsaXN0KG1hbmlmZXN0Lm9ubGluZVdoaXRlbGlzdGVkVVJMcyk7Cisg
ICAgbV9jYWNoZUJlaW5nVXBkYXRlZC0+c2V0T25saW5lQWxsb3dsaXN0KG1hbmlmZXN0Lm9ubGlu
ZUFsbG93ZWRVUkxzKTsKICAgICBtX2NhY2hlQmVpbmdVcGRhdGVkLT5zZXRGYWxsYmFja1VSTHMo
bWFuaWZlc3QuZmFsbGJhY2tVUkxzKTsKICAgICBtX2NhY2hlQmVpbmdVcGRhdGVkLT5zZXRBbGxv
d3NBbGxOZXR3b3JrUmVxdWVzdHMobWFuaWZlc3QuYWxsb3dBbGxOZXR3b3JrUmVxdWVzdHMpOwog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhv
c3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlSG9zdC5jcHAJKHJldmlzaW9uIDI2Mjg5NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQzMCw5ICs0MzAsOSBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpzaG91bGRMb2Fk
UmVzCiAgICAgLy8gaW4gdGhlIGFwcGxpY2F0aW9uIGNhY2hlLCB0aGVuIGdldCB0aGUgcmVzb3Vy
Y2UgZnJvbSB0aGUgY2FjaGUgKGluc3RlYWQgb2YgZmV0Y2hpbmcgaXQpLgogICAgIHJlc291cmNl
ID0gY2FjaGUtPnJlc291cmNlRm9yVVJMKHJlcXVlc3QudXJsKCkuc3RyaW5nKCkpOwogCi0gICAg
Ly8gUmVzb3VyY2VzIHRoYXQgbWF0Y2ggZmFsbGJhY2sgbmFtZXNwYWNlcyBvciBvbmxpbmUgd2hp
dGVsaXN0IGVudHJpZXMgYXJlIGZldGNoZWQgZnJvbSB0aGUgbmV0d29yaywKKyAgICAvLyBSZXNv
dXJjZXMgdGhhdCBtYXRjaCBmYWxsYmFjayBuYW1lc3BhY2VzIG9yIG9ubGluZSBhbGxvd2xpc3Qg
ZW50cmllcyBhcmUgZmV0Y2hlZCBmcm9tIHRoZSBuZXR3b3JrLAogICAgIC8vIHVubGVzcyB0aGV5
IGFyZSBhbHNvIGNhY2hlZC4KLSAgICBpZiAoIXJlc291cmNlICYmIChjYWNoZS0+YWxsb3dzQWxs
TmV0d29ya1JlcXVlc3RzKCkgfHwgY2FjaGUtPnVybE1hdGNoZXNGYWxsYmFja05hbWVzcGFjZShy
ZXF1ZXN0LnVybCgpKSB8fCBjYWNoZS0+aXNVUkxJbk9ubGluZVdoaXRlbGlzdChyZXF1ZXN0LnVy
bCgpKSkpCisgICAgaWYgKCFyZXNvdXJjZSAmJiAoY2FjaGUtPmFsbG93c0FsbE5ldHdvcmtSZXF1
ZXN0cygpIHx8IGNhY2hlLT51cmxNYXRjaGVzRmFsbGJhY2tOYW1lc3BhY2UocmVxdWVzdC51cmwo
KSkgfHwgY2FjaGUtPmlzVVJMSW5PbmxpbmVBbGxvd2xpc3QocmVxdWVzdC51cmwoKSkpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBSZXNvdXJjZXMgdGhhdCBhcmUgbm90IHByZXNl
bnQgaW4gdGhlIG1hbmlmZXN0IHdpbGwgYWx3YXlzIGZhaWwgdG8gbG9hZCAoYXQgbGVhc3QsIGFm
dGVyIHRoZQpAQCAtNDU1LDcgKzQ1NSw3IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZUhvc3Q6Omdl
dEFwcGxpY2F0aW8KICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgVVJMIGZhbGxiYWNrVVJM
OwotICAgIGlmIChjYWNoZS0+aXNVUkxJbk9ubGluZVdoaXRlbGlzdChyZXF1ZXN0LnVybCgpKSkK
KyAgICBpZiAoY2FjaGUtPmlzVVJMSW5PbmxpbmVBbGxvd2xpc3QocmVxdWVzdC51cmwoKSkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWNhY2hlLT51cmxNYXRjaGVzRmFsbGJhY2tO
YW1lc3BhY2UocmVxdWVzdC51cmwoKSwgJmZhbGxiYWNrVVJMKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCShyZXZpc2lvbiAyNjI4OTQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNjUsNyArMjY1LDcgQEAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBB
cHBsaWNhdGlvbkNhY2hlUwogCiAgICAgICAgIGlmIChBcHBsaWNhdGlvbkNhY2hlKiBjYWNoZSA9
IGdyb3VwLT5uZXdlc3RDYWNoZSgpKSB7CiAgICAgICAgICAgICBVUkwgZmFsbGJhY2tVUkw7Ci0g
ICAgICAgICAgICBpZiAoY2FjaGUtPmlzVVJMSW5PbmxpbmVXaGl0ZWxpc3QodXJsKSkKKyAgICAg
ICAgICAgIGlmIChjYWNoZS0+aXNVUkxJbk9ubGluZUFsbG93bGlzdCh1cmwpKQogICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgaWYgKCFjYWNoZS0+dXJsTWF0Y2hlc0ZhbGxi
YWNrTmFtZXNwYWNlKHVybCwgJmZhbGxiYWNrVVJMKSkKICAgICAgICAgICAgICAgICBjb250aW51
ZTsKQEAgLTMwMCw3ICszMDAsNyBAQCBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIEFwcGxpY2F0aW9u
Q2FjaGVTCiAgICAgICAgIGF1dG8gY2FjaGUgPSBsb2FkQ2FjaGUobmV3ZXN0Q2FjaGVJRCk7CiAK
ICAgICAgICAgVVJMIGZhbGxiYWNrVVJMOwotICAgICAgICBpZiAoY2FjaGUtPmlzVVJMSW5Pbmxp
bmVXaGl0ZWxpc3QodXJsKSkKKyAgICAgICAgaWYgKGNhY2hlLT5pc1VSTEluT25saW5lQWxsb3ds
aXN0KHVybCkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgaWYgKCFjYWNoZS0+dXJs
TWF0Y2hlc0ZhbGxiYWNrTmFtZXNwYWNlKHVybCwgJmZhbGxiYWNrVVJMKSkKICAgICAgICAgICAg
IGNvbnRpbnVlOwpAQCAtNjA1LDcgKzYwNSw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2U6Om9wZW5EYXRhYmEKICAgICBleGVjdXRlU1FMQ29tbWFuZCgiQ1JFQVRFIFRBQkxFIElGIE5P
VCBFWElTVFMgQ2FjaGVHcm91cHMgKGlkIElOVEVHRVIgUFJJTUFSWSBLRVkgQVVUT0lOQ1JFTUVO
VCwgIgogICAgICAgICAgICAgICAgICAgICAgICJtYW5pZmVzdEhvc3RIYXNoIElOVEVHRVIgTk9U
IE5VTEwgT04gQ09ORkxJQ1QgRkFJTCwgbWFuaWZlc3RVUkwgVEVYVCBVTklRVUUgT04gQ09ORkxJ
Q1QgRkFJTCwgbmV3ZXN0Q2FjaGUgSU5URUdFUiwgb3JpZ2luIFRFWFQpIik7CiAgICAgZXhlY3V0
ZVNRTENvbW1hbmQoIkNSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIENhY2hlcyAoaWQgSU5URUdF
UiBQUklNQVJZIEtFWSBBVVRPSU5DUkVNRU5ULCBjYWNoZUdyb3VwIElOVEVHRVIsIHNpemUgSU5U
RUdFUikiKTsKLSAgICBleGVjdXRlU1FMQ29tbWFuZCgiQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElT
VFMgQ2FjaGVXaGl0ZWxpc3RVUkxzICh1cmwgVEVYVCBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlM
LCBjYWNoZSBJTlRFR0VSIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwpIik7CisgICAgZXhlY3V0
ZVNRTENvbW1hbmQoIkNSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIENhY2hlQWxsb3dsaXN0VVJM
cyAodXJsIFRFWFQgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCwgY2FjaGUgSU5URUdFUiBOT1Qg
TlVMTCBPTiBDT05GTElDVCBGQUlMKSIpOwogICAgIGV4ZWN1dGVTUUxDb21tYW5kKCJDUkVBVEUg
VEFCTEUgSUYgTk9UIEVYSVNUUyBDYWNoZUFsbG93c0FsbE5ldHdvcmtSZXF1ZXN0cyAod2lsZGNh
cmQgSU5URUdFUiBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMLCBjYWNoZSBJTlRFR0VSIE5PVCBO
VUxMIE9OIENPTkZMSUNUIEZBSUwpIik7CiAgICAgZXhlY3V0ZVNRTENvbW1hbmQoIkNSRUFURSBU
QUJMRSBJRiBOT1QgRVhJU1RTIEZhbGxiYWNrVVJMcyAobmFtZXNwYWNlIFRFWFQgTk9UIE5VTEwg
T04gQ09ORkxJQ1QgRkFJTCwgZmFsbGJhY2tVUkwgVEVYVCBOT1QgTlVMTCBPTiBDT05GTElDVCBG
QUlMLCAiCiAgICAgICAgICAgICAgICAgICAgICAgImNhY2hlIElOVEVHRVIgTk9UIE5VTEwgT04g
Q09ORkxJQ1QgRkFJTCkiKTsKQEAgLTYxNiwxMSArNjE2LDExIEBAIHZvaWQgQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2U6Om9wZW5EYXRhYmEKICAgICBleGVjdXRlU1FMQ29tbWFuZCgiQ1JFQVRFIFRB
QkxFIElGIE5PVCBFWElTVFMgRGVsZXRlZENhY2hlUmVzb3VyY2VzIChpZCBJTlRFR0VSIFBSSU1B
UlkgS0VZIEFVVE9JTkNSRU1FTlQsIHBhdGggVEVYVCkiKTsKICAgICBleGVjdXRlU1FMQ29tbWFu
ZCgiQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgT3JpZ2lucyAob3JpZ2luIFRFWFQgVU5JUVVF
IE9OIENPTkZMSUNUIElHTk9SRSwgcXVvdGEgSU5URUdFUiBOT1QgTlVMTCBPTiBDT05GTElDVCBG
QUlMKSIpOwogCi0gICAgLy8gV2hlbiBhIGNhY2hlIGlzIGRlbGV0ZWQsIGFsbCBpdHMgZW50cmll
cyBhbmQgaXRzIHdoaXRlbGlzdCBzaG91bGQgYmUgZGVsZXRlZC4KKyAgICAvLyBXaGVuIGEgY2Fj
aGUgaXMgZGVsZXRlZCwgYWxsIGl0cyBlbnRyaWVzIGFuZCBpdHMgYWxsb3dsaXN0IHNob3VsZCBi
ZSBkZWxldGVkLgogICAgIGV4ZWN1dGVTUUxDb21tYW5kKCJDUkVBVEUgVFJJR0dFUiBJRiBOT1Qg
RVhJU1RTIENhY2hlRGVsZXRlZCBBRlRFUiBERUxFVEUgT04gQ2FjaGVzIgogICAgICAgICAgICAg
ICAgICAgICAgICIgRk9SIEVBQ0ggUk9XIEJFR0lOIgogICAgICAgICAgICAgICAgICAgICAgICIg
IERFTEVURSBGUk9NIENhY2hlRW50cmllcyBXSEVSRSBjYWNoZSA9IE9MRC5pZDsiCi0gICAgICAg
ICAgICAgICAgICAgICAgIiAgREVMRVRFIEZST00gQ2FjaGVXaGl0ZWxpc3RVUkxzIFdIRVJFIGNh
Y2hlID0gT0xELmlkOyIKKyAgICAgICAgICAgICAgICAgICAgICAiICBERUxFVEUgRlJPTSBDYWNo
ZUFsbG93bGlzdFVSTHMgV0hFUkUgY2FjaGUgPSBPTEQuaWQ7IgogICAgICAgICAgICAgICAgICAg
ICAgICIgIERFTEVURSBGUk9NIENhY2hlQWxsb3dzQWxsTmV0d29ya1JlcXVlc3RzIFdIRVJFIGNh
Y2hlID0gT0xELmlkOyIKICAgICAgICAgICAgICAgICAgICAgICAiICBERUxFVEUgRlJPTSBGYWxs
YmFja1VSTHMgV0hFUkUgY2FjaGUgPSBPTEQuaWQ7IgogICAgICAgICAgICAgICAgICAgICAgICIg
RU5EIik7CkBAIC03MjEsMTQgKzcyMSwxNCBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
OjpzdG9yZShBcHBsCiAgICAgICAgIHN0b3JhZ2VJREpvdXJuYWwtPmFkZChyZXNvdXJjZS5nZXQo
KSwgb2xkU3RvcmFnZUlEKTsKICAgICB9CiAgICAgCi0gICAgLy8gU3RvcmUgdGhlIG9ubGluZSB3
aGl0ZWxpc3QKLSAgICBjb25zdCBWZWN0b3I8VVJMPiYgb25saW5lV2hpdGVsaXN0ID0gY2FjaGUt
Pm9ubGluZVdoaXRlbGlzdCgpOworICAgIC8vIFN0b3JlIHRoZSBvbmxpbmUgYWxsb3dsaXN0Cisg
ICAgY29uc3QgVmVjdG9yPFVSTD4mIG9ubGluZUFsbG93bGlzdCA9IGNhY2hlLT5vbmxpbmVBbGxv
d2xpc3QoKTsKICAgICB7Ci0gICAgICAgIGZvciAoYXV0byYgd2hpdGVsaXN0VVJMIDogb25saW5l
V2hpdGVsaXN0KSB7Ci0gICAgICAgICAgICBTUUxpdGVTdGF0ZW1lbnQgc3RhdGVtZW50KG1fZGF0
YWJhc2UsICJJTlNFUlQgSU5UTyBDYWNoZVdoaXRlbGlzdFVSTHMgKHVybCwgY2FjaGUpIFZBTFVF
UyAoPywgPykiKTsKKyAgICAgICAgZm9yIChhdXRvJiBhbGxvd2xpc3RVUkwgOiBvbmxpbmVBbGxv
d2xpc3QpIHsKKyAgICAgICAgICAgIFNRTGl0ZVN0YXRlbWVudCBzdGF0ZW1lbnQobV9kYXRhYmFz
ZSwgIklOU0VSVCBJTlRPIENhY2hlQWxsb3dsaXN0VVJMcyAodXJsLCBjYWNoZSkgVkFMVUVTICg/
LCA/KSIpOwogICAgICAgICAgICAgc3RhdGVtZW50LnByZXBhcmUoKTsKIAotICAgICAgICAgICAg
c3RhdGVtZW50LmJpbmRUZXh0KDEsIHdoaXRlbGlzdFVSTC5zdHJpbmcoKSk7CisgICAgICAgICAg
ICBzdGF0ZW1lbnQuYmluZFRleHQoMSwgYWxsb3dsaXN0VVJMLnN0cmluZygpKTsKICAgICAgICAg
ICAgIHN0YXRlbWVudC5iaW5kSW50NjQoMiwgY2FjaGVTdG9yYWdlSUQpOwogCiAgICAgICAgICAg
ICBpZiAoIWV4ZWN1dGVTdGF0ZW1lbnQoc3RhdGVtZW50KSkKQEAgLTczNiw3ICs3MzYsNyBAQCBi
b29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZShBcHBsCiAgICAgICAgIH0KICAgICB9
CiAKLSAgICAvLyBTdG9yZSBvbmxpbmUgd2hpdGVsaXN0IHdpbGRjYXJkIGZsYWcuCisgICAgLy8g
U3RvcmUgb25saW5lIGFsbG93bGlzdCB3aWxkY2FyZCBmbGFnLgogICAgIHsKICAgICAgICAgU1FM
aXRlU3RhdGVtZW50IHN0YXRlbWVudChtX2RhdGFiYXNlLCAiSU5TRVJUIElOVE8gQ2FjaGVBbGxv
d3NBbGxOZXR3b3JrUmVxdWVzdHMgKHdpbGRjYXJkLCBjYWNoZSkgVkFMVUVTICg/LCA/KSIpOwog
ICAgICAgICBzdGF0ZW1lbnQucHJlcGFyZSgpOwpAQCAtMTE1NCwzNSArMTE1NCwzNSBAQCBSZWZQ
dHI8QXBwbGljYXRpb25DYWNoZT4gQXBwbGljYXRpb25DYWNoCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIH0KIAotICAgIC8vIExvYWQgdGhlIG9ubGluZSB3aGl0ZWxpc3QKLSAgICBTUUxp
dGVTdGF0ZW1lbnQgd2hpdGVsaXN0U3RhdGVtZW50KG1fZGF0YWJhc2UsICJTRUxFQ1QgdXJsIEZS
T00gQ2FjaGVXaGl0ZWxpc3RVUkxzIFdIRVJFIGNhY2hlPT8iKTsKLSAgICBpZiAod2hpdGVsaXN0
U3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0spCisgICAgLy8gTG9hZCB0aGUgb25saW5l
IGFsbG93bGlzdAorICAgIFNRTGl0ZVN0YXRlbWVudCBhbGxvd2xpc3RTdGF0ZW1lbnQobV9kYXRh
YmFzZSwgIlNFTEVDVCB1cmwgRlJPTSBDYWNoZUFsbG93bGlzdFVSTHMgV0hFUkUgY2FjaGU9PyIp
OworICAgIGlmIChhbGxvd2xpc3RTdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTElURV9PSykKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgd2hpdGVsaXN0U3RhdGVtZW50LmJpbmRJbnQ2NCgx
LCBzdG9yYWdlSUQpOworICAgIGFsbG93bGlzdFN0YXRlbWVudC5iaW5kSW50NjQoMSwgc3RvcmFn
ZUlEKTsKICAgICAKLSAgICBWZWN0b3I8VVJMPiB3aGl0ZWxpc3Q7Ci0gICAgd2hpbGUgKChyZXN1
bHQgPSB3aGl0ZWxpc3RTdGF0ZW1lbnQuc3RlcCgpKSA9PSBTUUxJVEVfUk9XKSAKLSAgICAgICAg
d2hpdGVsaXN0LmFwcGVuZChVUkwoeyB9LCB3aGl0ZWxpc3RTdGF0ZW1lbnQuZ2V0Q29sdW1uVGV4
dCgwKSkpOworICAgIFZlY3RvcjxVUkw+IGFsbG93bGlzdDsKKyAgICB3aGlsZSAoKHJlc3VsdCA9
IGFsbG93bGlzdFN0YXRlbWVudC5zdGVwKCkpID09IFNRTElURV9ST1cpCisgICAgICAgIGFsbG93
bGlzdC5hcHBlbmQoVVJMKHsgfSwgYWxsb3dsaXN0U3RhdGVtZW50LmdldENvbHVtblRleHQoMCkp
KTsKIAogICAgIGlmIChyZXN1bHQgIT0gU1FMSVRFX0RPTkUpCi0gICAgICAgIExPR19FUlJPUigi
Q291bGQgbm90IGxvYWQgY2FjaGUgb25saW5lIHdoaXRlbGlzdCwgZXJyb3IgXCIlc1wiIiwgbV9k
YXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGxv
YWQgY2FjaGUgb25saW5lIGFsbG93bGlzdCwgZXJyb3IgXCIlc1wiIiwgbV9kYXRhYmFzZS5sYXN0
RXJyb3JNc2coKSk7CiAKLSAgICBjYWNoZS0+c2V0T25saW5lV2hpdGVsaXN0KHdoaXRlbGlzdCk7
CisgICAgY2FjaGUtPnNldE9ubGluZUFsbG93bGlzdChhbGxvd2xpc3QpOwogCi0gICAgLy8gTG9h
ZCBvbmxpbmUgd2hpdGVsaXN0IHdpbGRjYXJkIGZsYWcuCi0gICAgU1FMaXRlU3RhdGVtZW50IHdo
aXRlbGlzdFdpbGRjYXJkU3RhdGVtZW50KG1fZGF0YWJhc2UsICJTRUxFQ1Qgd2lsZGNhcmQgRlJP
TSBDYWNoZUFsbG93c0FsbE5ldHdvcmtSZXF1ZXN0cyBXSEVSRSBjYWNoZT0/Iik7Ci0gICAgaWYg
KHdoaXRlbGlzdFdpbGRjYXJkU3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0spCisgICAg
Ly8gTG9hZCBvbmxpbmUgYWxsb3dsaXN0IHdpbGRjYXJkIGZsYWcuCisgICAgU1FMaXRlU3RhdGVt
ZW50IGFsbG93bGlzdFdpbGRjYXJkU3RhdGVtZW50KG1fZGF0YWJhc2UsICJTRUxFQ1Qgd2lsZGNh
cmQgRlJPTSBDYWNoZUFsbG93c0FsbE5ldHdvcmtSZXF1ZXN0cyBXSEVSRSBjYWNoZT0/Iik7Cisg
ICAgaWYgKGFsbG93bGlzdFdpbGRjYXJkU3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0sp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHdoaXRlbGlzdFdpbGRjYXJkU3RhdGVtZW50
LmJpbmRJbnQ2NCgxLCBzdG9yYWdlSUQpOworICAgIGFsbG93bGlzdFdpbGRjYXJkU3RhdGVtZW50
LmJpbmRJbnQ2NCgxLCBzdG9yYWdlSUQpOwogICAgIAotICAgIHJlc3VsdCA9IHdoaXRlbGlzdFdp
bGRjYXJkU3RhdGVtZW50LnN0ZXAoKTsKKyAgICByZXN1bHQgPSBhbGxvd2xpc3RXaWxkY2FyZFN0
YXRlbWVudC5zdGVwKCk7CiAgICAgaWYgKHJlc3VsdCAhPSBTUUxJVEVfUk9XKQotICAgICAgICBM
T0dfRVJST1IoIkNvdWxkIG5vdCBsb2FkIGNhY2hlIG9ubGluZSB3aGl0ZWxpc3Qgd2lsZGNhcmQg
ZmxhZywgZXJyb3IgXCIlc1wiIiwgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAg
IExPR19FUlJPUigiQ291bGQgbm90IGxvYWQgY2FjaGUgb25saW5lIGFsbG93bGlzdCB3aWxkY2Fy
ZCBmbGFnLCBlcnJvciBcIiVzXCIiLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKIAotICAg
IGNhY2hlLT5zZXRBbGxvd3NBbGxOZXR3b3JrUmVxdWVzdHMod2hpdGVsaXN0V2lsZGNhcmRTdGF0
ZW1lbnQuZ2V0Q29sdW1uSW50NjQoMCkpOworICAgIGNhY2hlLT5zZXRBbGxvd3NBbGxOZXR3b3Jr
UmVxdWVzdHMoYWxsb3dsaXN0V2lsZGNhcmRTdGF0ZW1lbnQuZ2V0Q29sdW1uSW50NjQoMCkpOwog
Ci0gICAgaWYgKHdoaXRlbGlzdFdpbGRjYXJkU3RhdGVtZW50LnN0ZXAoKSAhPSBTUUxJVEVfRE9O
RSkKLSAgICAgICAgTE9HX0VSUk9SKCJUb28gbWFueSByb3dzIGZvciBvbmxpbmUgd2hpdGVsaXN0
IHdpbGRjYXJkIGZsYWciKTsKKyAgICBpZiAoYWxsb3dsaXN0V2lsZGNhcmRTdGF0ZW1lbnQuc3Rl
cCgpICE9IFNRTElURV9ET05FKQorICAgICAgICBMT0dfRVJST1IoIlRvbyBtYW55IHJvd3MgZm9y
IG9ubGluZSBhbGxvd2xpc3Qgd2lsZGNhcmQgZmxhZyIpOwogCiAgICAgLy8gTG9hZCBmYWxsYmFj
ayBVUkxzLgogICAgIFNRTGl0ZVN0YXRlbWVudCBmYWxsYmFja1N0YXRlbWVudChtX2RhdGFiYXNl
LCAiU0VMRUNUIG5hbWVzcGFjZSwgZmFsbGJhY2tVUkwgRlJPTSBGYWxsYmFja1VSTHMgV0hFUkUg
Y2FjaGU9PyIpOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL01hbmlmZXN0
UGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
TWFuaWZlc3RQYXJzZXIuY3BwCShyZXZpc2lvbiAyNjI4OTQpCisrKyBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvTWFuaWZlc3RQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3
ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotZW51bSBNb2RlIHsgRXhwbGljaXQs
IEZhbGxiYWNrLCBPbmxpbmVXaGl0ZWxpc3QsIFVua25vd24gfTsKK2VudW0gTW9kZSB7IEV4cGxp
Y2l0LCBGYWxsYmFjaywgT25saW5lQWxsb3dsaXN0LCBVbmtub3duIH07CiAKIHN0YXRpYyBTdHJp
bmdWaWV3IG1hbmlmZXN0UGF0aChjb25zdCBVUkwmIG1hbmlmZXN0VVJMKQogewpAQCAtNDcsNyAr
NDcsNyBAQCBzdGF0aWMgU3RyaW5nVmlldyBtYW5pZmVzdFBhdGgoY29uc3QgVVJMCiBib29sIHBh
cnNlTWFuaWZlc3QoY29uc3QgVVJMJiBtYW5pZmVzdFVSTCwgY29uc3QgU3RyaW5nJiBtYW5pZmVz
dE1JTUVUeXBlLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoLCBNYW5pZmVzdCYgbWFuaWZl
c3QpCiB7CiAgICAgQVNTRVJUKG1hbmlmZXN0LmV4cGxpY2l0VVJMcy5pc0VtcHR5KCkpOwotICAg
IEFTU0VSVChtYW5pZmVzdC5vbmxpbmVXaGl0ZWxpc3RlZFVSTHMuaXNFbXB0eSgpKTsKKyAgICBB
U1NFUlQobWFuaWZlc3Qub25saW5lQWxsb3dlZFVSTHMuaXNFbXB0eSgpKTsKICAgICBBU1NFUlQo
bWFuaWZlc3QuZmFsbGJhY2tVUkxzLmlzRW1wdHkoKSk7CiAgICAgbWFuaWZlc3QuYWxsb3dBbGxO
ZXR3b3JrUmVxdWVzdHMgPSBmYWxzZTsKIApAQCAtMTA5LDEyICsxMDksMTIgQEAgYm9vbCBwYXJz
ZU1hbmlmZXN0KGNvbnN0IFVSTCYgbWFuaWZlc3RVUgogICAgICAgICBlbHNlIGlmIChsaW5lID09
ICJGQUxMQkFDSzoiKQogICAgICAgICAgICAgbW9kZSA9IEZhbGxiYWNrOwogICAgICAgICBlbHNl
IGlmIChsaW5lID09ICJORVRXT1JLOiIpCi0gICAgICAgICAgICBtb2RlID0gT25saW5lV2hpdGVs
aXN0OworICAgICAgICAgICAgbW9kZSA9IE9ubGluZUFsbG93bGlzdDsKICAgICAgICAgZWxzZSBp
ZiAobGluZS5lbmRzV2l0aCgnOicpKQogICAgICAgICAgICAgbW9kZSA9IFVua25vd247CiAgICAg
ICAgIGVsc2UgaWYgKG1vZGUgPT0gVW5rbm93bikKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAg
ICAgICBlbHNlIGlmIChtb2RlID09IEV4cGxpY2l0IHx8IG1vZGUgPT0gT25saW5lV2hpdGVsaXN0
KSB7CisgICAgICAgIGVsc2UgaWYgKG1vZGUgPT0gRXhwbGljaXQgfHwgbW9kZSA9PSBPbmxpbmVB
bGxvd2xpc3QpIHsKICAgICAgICAgICAgIGF1dG8gdXBjb252ZXJ0ZWRMaW5lQ2hhcmFjdGVycyA9
IFN0cmluZ1ZpZXcobGluZSkudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCk7CiAgICAgICAgICAgICBj
b25zdCBVQ2hhciogcCA9IHVwY29udmVydGVkTGluZUNoYXJhY3RlcnM7CiAgICAgICAgICAgICBj
b25zdCBVQ2hhciogbGluZUVuZCA9IHAgKyBsaW5lLmxlbmd0aCgpOwpAQCAtMTIzLDcgKzEyMyw3
IEBAIGJvb2wgcGFyc2VNYW5pZmVzdChjb25zdCBVUkwmIG1hbmlmZXN0VVIKICAgICAgICAgICAg
IHdoaWxlIChwIDwgbGluZUVuZCAmJiAqcCAhPSAnXHQnICYmICpwICE9ICcgJykgCiAgICAgICAg
ICAgICAgICAgcCsrOwogCi0gICAgICAgICAgICBpZiAobW9kZSA9PSBPbmxpbmVXaGl0ZWxpc3Qg
JiYgcCAtIHVwY29udmVydGVkTGluZUNoYXJhY3RlcnMgPT0gMSAmJiBsaW5lWzBdID09ICcqJykg
eworICAgICAgICAgICAgaWYgKG1vZGUgPT0gT25saW5lQWxsb3dsaXN0ICYmIHAgLSB1cGNvbnZl
cnRlZExpbmVDaGFyYWN0ZXJzID09IDEgJiYgbGluZVswXSA9PSAnKicpIHsKICAgICAgICAgICAg
ICAgICAvLyBXaWxkY2FyZCB3YXMgZm91bmQuCiAgICAgICAgICAgICAgICAgbWFuaWZlc3QuYWxs
b3dBbGxOZXR3b3JrUmVxdWVzdHMgPSB0cnVlOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpA
QCAtMTQ1LDcgKzE0NSw3IEBAIGJvb2wgcGFyc2VNYW5pZmVzdChjb25zdCBVUkwmIG1hbmlmZXN0
VVIKICAgICAgICAgICAgIGlmIChtb2RlID09IEV4cGxpY2l0KQogICAgICAgICAgICAgICAgIG1h
bmlmZXN0LmV4cGxpY2l0VVJMcy5hZGQodXJsLnN0cmluZygpKTsKICAgICAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgICAgICBtYW5pZmVzdC5vbmxpbmVXaGl0ZWxpc3RlZFVSTHMuYXBwZW5kKHVy
bCk7CisgICAgICAgICAgICAgICAgbWFuaWZlc3Qub25saW5lQWxsb3dlZFVSTHMuYXBwZW5kKHVy
bCk7CiAgICAgICAgICAgICAKICAgICAgICAgfSBlbHNlIGlmIChtb2RlID09IEZhbGxiYWNrKSB7
CiAgICAgICAgICAgICBhdXRvIHVwY29udmVydGVkTGluZUNoYXJhY3RlcnMgPSBTdHJpbmdWaWV3
KGxpbmUpLnVwY29udmVydGVkQ2hhcmFjdGVycygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL01hbmlmZXN0UGFyc2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL01hbmlmZXN0UGFyc2VyLmgJKHJldmlzaW9uIDI2Mjg5NCkKKysr
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9NYW5pZmVzdFBhcnNlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMSw3ICszMSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBN
YW5pZmVzdCB7Ci0gICAgVmVjdG9yPFVSTD4gb25saW5lV2hpdGVsaXN0ZWRVUkxzOworICAgIFZl
Y3RvcjxVUkw+IG9ubGluZUFsbG93ZWRVUkxzOwogICAgIEhhc2hTZXQ8U3RyaW5nPiBleHBsaWNp
dFVSTHM7CiAgICAgRmFsbGJhY2tVUkxWZWN0b3IgZmFsbGJhY2tVUkxzOwogICAgIGJvb2wgYWxs
b3dBbGxOZXR3b3JrUmVxdWVzdHM7IC8vIFdpbGRjYXJkIGZvdW5kIGluIE5FVFdPUksgc2VjdGlv
bi4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCShyZXZpc2lvbiAyNjI4OTQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcxLDcgKzY3MSw3IEBA
IHZvaWQgRnJhbWU6OmluamVjdFVzZXJTY3JpcHRJbW1lZGlhdGVseSgKICAgICAgICAgcmV0dXJu
OwogICAgIGlmIChzY3JpcHQuaW5qZWN0ZWRGcmFtZXMoKSA9PSBVc2VyQ29udGVudEluamVjdGVk
RnJhbWVzOjpJbmplY3RJblRvcEZyYW1lT25seSAmJiAhaXNNYWluRnJhbWUoKSkKICAgICAgICAg
cmV0dXJuOwotICAgIGlmICghVXNlckNvbnRlbnRVUkxQYXR0ZXJuOjptYXRjaGVzUGF0dGVybnMo
ZG9jdW1lbnQtPnVybCgpLCBzY3JpcHQud2hpdGVsaXN0KCksIHNjcmlwdC5ibG9ja2xpc3QoKSkp
CisgICAgaWYgKCFVc2VyQ29udGVudFVSTFBhdHRlcm46Om1hdGNoZXNQYXR0ZXJucyhkb2N1bWVu
dC0+dXJsKCksIHNjcmlwdC5hbGxvd2xpc3QoKSwgc2NyaXB0LmJsb2NrbGlzdCgpKSkKICAgICAg
ICAgcmV0dXJuOwogICAgIGlmICghbV9zY3JpcHQtPnNob3VsZEFsbG93VXNlckFnZW50U2NyaXB0
cygqZG9jdW1lbnQpKQogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdl
L1NlY3VyaXR5T3JpZ2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1Nl
Y3VyaXR5T3JpZ2luLmNwcAkocmV2aXNpb24gMjYyODk0KQorKysgU291cmNlL1dlYkNvcmUvcGFn
ZS9TZWN1cml0eU9yaWdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyMyw3ICszMjMsNyBAQCBi
b29sIFNlY3VyaXR5T3JpZ2luOjpjYW5SZXF1ZXN0KGNvbnN0IFVSCiAgICAgaWYgKGlzU2FtZVNj
aGVtZUhvc3RQb3J0KHRhcmdldE9yaWdpbi5nZXQoKSkpCiAgICAgICAgIHJldHVybiB0cnVlOwog
Ci0gICAgaWYgKFNlY3VyaXR5UG9saWN5Ojppc0FjY2Vzc1doaXRlTGlzdGVkKCp0aGlzLCB0YXJn
ZXRPcmlnaW4uZ2V0KCksIHVybCkpCisgICAgaWYgKFNlY3VyaXR5UG9saWN5Ojppc0FjY2Vzc0Fs
bG93ZWQoKnRoaXMsIHRhcmdldE9yaWdpbi5nZXQoKSwgdXJsKSkKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAKICAgICByZXR1cm4gZmFsc2U7CkBAIC0zODIsNyArMzgyLDcgQEAgYm9vbCBTZWN1cml0
eU9yaWdpbjo6Y2FuRGlzcGxheShjb25zdCBVUgogICAgICAgICByZXR1cm4gY2FuUmVxdWVzdCh1
cmwpOwogCiAgICAgaWYgKExlZ2FjeVNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVSTFNjaGVt
ZUFzRGlzcGxheUlzb2xhdGVkKHByb3RvY29sKSkKLSAgICAgICAgcmV0dXJuIGVxdWFsSWdub3Jp
bmdBU0NJSUNhc2UobV9kYXRhLnByb3RvY29sLCBwcm90b2NvbCkgfHwgU2VjdXJpdHlQb2xpY3k6
OmlzQWNjZXNzV2hpdGVMaXN0ZWQoKnRoaXMsIHVybCk7CisgICAgICAgIHJldHVybiBlcXVhbEln
bm9yaW5nQVNDSUlDYXNlKG1fZGF0YS5wcm90b2NvbCwgcHJvdG9jb2wpIHx8IFNlY3VyaXR5UG9s
aWN5Ojppc0FjY2Vzc0FsbG93ZWQoKnRoaXMsIHVybCk7CiAKICAgICBpZiAoIVNlY3VyaXR5UG9s
aWN5OjpyZXN0cmljdEFjY2Vzc1RvTG9jYWwoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0z
OTEsNyArMzkxLDcgQEAgYm9vbCBTZWN1cml0eU9yaWdpbjo6Y2FuRGlzcGxheShjb25zdCBVUgog
ICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGlmIChMZWdhY3lTY2hlbWVSZWdpc3RyeTo6c2hv
dWxkVHJlYXRVUkxTY2hlbWVBc0xvY2FsKHByb3RvY29sKSkKLSAgICAgICAgcmV0dXJuIGNhbkxv
YWRMb2NhbFJlc291cmNlcygpIHx8IFNlY3VyaXR5UG9saWN5Ojppc0FjY2Vzc1doaXRlTGlzdGVk
KCp0aGlzLCB1cmwpOworICAgICAgICByZXR1cm4gY2FuTG9hZExvY2FsUmVzb3VyY2VzKCkgfHwg
U2VjdXJpdHlQb2xpY3k6OmlzQWNjZXNzQWxsb3dlZCgqdGhpcywgdXJsKTsKIAogICAgIHJldHVy
biB0cnVlOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5jcHAJKHJl
dmlzaW9uIDI2Mjg5NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00Myw4ICs0Myw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
c3RhdGljIFNlY3VyaXR5UG9saWN5OjpMb2NhbExvYWRQb2xpY3kgbG9jYWxMb2FkUG9saWN5ID0g
U2VjdXJpdHlQb2xpY3k6OkFsbG93TG9jYWxMb2Fkc0ZvckxvY2FsT25seTsKIAotdHlwZWRlZiBW
ZWN0b3I8T3JpZ2luQWNjZXNzRW50cnk+IE9yaWdpbkFjY2Vzc1doaXRlTGlzdDsKLXR5cGVkZWYg
SGFzaE1hcDxTdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxPcmlnaW5BY2Nlc3NXaGl0ZUxpc3Q+PiBP
cmlnaW5BY2Nlc3NNYXA7Cit0eXBlZGVmIFZlY3RvcjxPcmlnaW5BY2Nlc3NFbnRyeT4gT3JpZ2lu
QWNjZXNzQWxsb3dsaXN0OwordHlwZWRlZiBIYXNoTWFwPFN0cmluZywgc3RkOjp1bmlxdWVfcHRy
PE9yaWdpbkFjY2Vzc0FsbG93bGlzdD4+IE9yaWdpbkFjY2Vzc01hcDsKIAogc3RhdGljIExvY2sg
b3JpZ2luQWNjZXNzTWFwTG9jazsKIHN0YXRpYyBPcmlnaW5BY2Nlc3NNYXAmIG9yaWdpbkFjY2Vz
c01hcCgpCkBAIC0yMDEsMTIgKzIwMSwxMiBAQCBib29sIFNlY3VyaXR5UG9saWN5OjphbGxvd1N1
YnN0aXR1dGVEYXRhCiAgICAgcmV0dXJuIGxvY2FsTG9hZFBvbGljeSAhPSBTZWN1cml0eVBvbGlj
eTo6QWxsb3dMb2NhbExvYWRzRm9yTG9jYWxPbmx5OwogfQogCi1ib29sIFNlY3VyaXR5UG9saWN5
Ojppc0FjY2Vzc1doaXRlTGlzdGVkKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBhY3RpdmVPcmlnaW4s
IGNvbnN0IFNlY3VyaXR5T3JpZ2luJiB0YXJnZXRPcmlnaW4sIGNvbnN0IFVSTCYgdGFyZ2V0VVJM
KQorYm9vbCBTZWN1cml0eVBvbGljeTo6aXNBY2Nlc3NBbGxvd2VkKGNvbnN0IFNlY3VyaXR5T3Jp
Z2luJiBhY3RpdmVPcmlnaW4sIGNvbnN0IFNlY3VyaXR5T3JpZ2luJiB0YXJnZXRPcmlnaW4sIGNv
bnN0IFVSTCYgdGFyZ2V0VVJMKQogewogICAgIEFTU0VSVCh0YXJnZXRPcmlnaW4uZXF1YWwoU2Vj
dXJpdHlPcmlnaW46OmNyZWF0ZSh0YXJnZXRVUkwpLnB0cigpKSk7CiAgICAgewogICAgICAgICBM
b2NrZXI8TG9jaz4gbG9ja2VyKG9yaWdpbkFjY2Vzc01hcExvY2spOwotICAgICAgICBpZiAoT3Jp
Z2luQWNjZXNzV2hpdGVMaXN0KiBsaXN0ID0gb3JpZ2luQWNjZXNzTWFwKCkuZ2V0KGFjdGl2ZU9y
aWdpbi50b1N0cmluZygpKSkgeworICAgICAgICBpZiAoT3JpZ2luQWNjZXNzQWxsb3dsaXN0KiBs
aXN0ID0gb3JpZ2luQWNjZXNzTWFwKCkuZ2V0KGFjdGl2ZU9yaWdpbi50b1N0cmluZygpKSkgewog
ICAgICAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6ICpsaXN0KSB7CiAgICAgICAgICAgICAgICAg
aWYgKGVudHJ5Lm1hdGNoZXNPcmlnaW4odGFyZ2V0T3JpZ2luKSkKICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CkBAIC0yMjEsMTIgKzIyMSwxMiBAQCBib29sIFNlY3VyaXR5UG9saWN5
Ojppc0FjY2Vzc1doaXRlTGlzdGVkCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFNlY3Vy
aXR5UG9saWN5Ojppc0FjY2Vzc1doaXRlTGlzdGVkKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBhY3Rp
dmVPcmlnaW4sIGNvbnN0IFVSTCYgdXJsKQorYm9vbCBTZWN1cml0eVBvbGljeTo6aXNBY2Nlc3NB
bGxvd2VkKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBhY3RpdmVPcmlnaW4sIGNvbnN0IFVSTCYgdXJs
KQogewotICAgIHJldHVybiBpc0FjY2Vzc1doaXRlTGlzdGVkKGFjdGl2ZU9yaWdpbiwgU2VjdXJp
dHlPcmlnaW46OmNyZWF0ZSh1cmwpLmdldCgpLCB1cmwpOworICAgIHJldHVybiBpc0FjY2Vzc0Fs
bG93ZWQoYWN0aXZlT3JpZ2luLCBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHVybCkuZ2V0KCksIHVy
bCk7CiB9CiAKLXZvaWQgU2VjdXJpdHlQb2xpY3k6OmFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVu
dHJ5KGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBzb3VyY2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgZGVz
dGluYXRpb25Qcm90b2NvbCwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbkRvbWFpbiwgYm9vbCBh
bGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucykKK3ZvaWQgU2VjdXJpdHlQb2xpY3k6OmFkZE9yaWdp
bkFjY2Vzc0FsbG93bGlzdEVudHJ5KGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBzb3VyY2VPcmlnaW4s
IGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25Qcm90b2NvbCwgY29uc3QgU3RyaW5nJiBkZXN0aW5h
dGlvbkRvbWFpbiwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucykKIHsKICAgICBBU1NF
UlQoIXNvdXJjZU9yaWdpbi5pc1VuaXF1ZSgpKTsKICAgICBpZiAoc291cmNlT3JpZ2luLmlzVW5p
cXVlKCkpCkBAIC0yMzcsMTMgKzIzNywxMyBAQCB2b2lkIFNlY3VyaXR5UG9saWN5OjphZGRPcmln
aW5BY2Nlc3NXaGl0CiAgICAgTG9ja2VyPExvY2s+IGxvY2tlcihvcmlnaW5BY2Nlc3NNYXBMb2Nr
KTsKICAgICBPcmlnaW5BY2Nlc3NNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBvcmlnaW5BY2Nlc3NN
YXAoKS5hZGQoc291cmNlU3RyaW5nLCBudWxscHRyKTsKICAgICBpZiAocmVzdWx0LmlzTmV3RW50
cnkpCi0gICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPE9yaWdpbkFj
Y2Vzc1doaXRlTGlzdD4oKTsKKyAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VV
bmlxdWU8T3JpZ2luQWNjZXNzQWxsb3dsaXN0PigpOwogCi0gICAgT3JpZ2luQWNjZXNzV2hpdGVM
aXN0KiBsaXN0ID0gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKKyAgICBPcmlnaW5BY2Nl
c3NBbGxvd2xpc3QqIGxpc3QgPSByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwogICAgIGxp
c3QtPmFwcGVuZChPcmlnaW5BY2Nlc3NFbnRyeShkZXN0aW5hdGlvblByb3RvY29sLCBkZXN0aW5h
dGlvbkRvbWFpbiwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMgPyBPcmlnaW5BY2Nlc3NFbnRy
eTo6QWxsb3dTdWJkb21haW5zIDogT3JpZ2luQWNjZXNzRW50cnk6OkRpc2FsbG93U3ViZG9tYWlu
cywgT3JpZ2luQWNjZXNzRW50cnk6OlRyZWF0SVBBZGRyZXNzQXNJUEFkZHJlc3MpKTsKIH0KIAot
dm9pZCBTZWN1cml0eVBvbGljeTo6cmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoY29u
c3QgU2VjdXJpdHlPcmlnaW4mIHNvdXJjZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlv
blByb3RvY29sLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uRG9tYWluLCBib29sIGFsbG93RGVz
dGluYXRpb25TdWJkb21haW5zKQordm9pZCBTZWN1cml0eVBvbGljeTo6cmVtb3ZlT3JpZ2luQWNj
ZXNzQWxsb3dsaXN0RW50cnkoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHNvdXJjZU9yaWdpbiwgY29u
c3QgU3RyaW5nJiBkZXN0aW5hdGlvblByb3RvY29sLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9u
RG9tYWluLCBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKQogewogICAgIEFTU0VSVCgh
c291cmNlT3JpZ2luLmlzVW5pcXVlKCkpOwogICAgIGlmIChzb3VyY2VPcmlnaW4uaXNVbmlxdWUo
KSkKQEAgLTI1Nyw3ICsyNTcsNyBAQCB2b2lkIFNlY3VyaXR5UG9saWN5OjpyZW1vdmVPcmlnaW5B
Y2Nlc3NXCiAgICAgaWYgKGl0ID09IG1hcC5lbmQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
T3JpZ2luQWNjZXNzV2hpdGVMaXN0JiBsaXN0ID0gKml0LT52YWx1ZTsKKyAgICBPcmlnaW5BY2Nl
c3NBbGxvd2xpc3QmIGxpc3QgPSAqaXQtPnZhbHVlOwogICAgIE9yaWdpbkFjY2Vzc0VudHJ5IG9y
aWdpbkFjY2Vzc0VudHJ5KGRlc3RpbmF0aW9uUHJvdG9jb2wsIGRlc3RpbmF0aW9uRG9tYWluLCBh
bGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyA/IE9yaWdpbkFjY2Vzc0VudHJ5OjpBbGxvd1N1YmRv
bWFpbnMgOiBPcmlnaW5BY2Nlc3NFbnRyeTo6RGlzYWxsb3dTdWJkb21haW5zLCBPcmlnaW5BY2Nl
c3NFbnRyeTo6VHJlYXRJUEFkZHJlc3NBc0lQQWRkcmVzcyk7CiAgICAgaWYgKCFsaXN0LnJlbW92
ZUZpcnN0KG9yaWdpbkFjY2Vzc0VudHJ5KSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjY2LDcgKzI2
Niw3IEBAIHZvaWQgU2VjdXJpdHlQb2xpY3k6OnJlbW92ZU9yaWdpbkFjY2Vzc1cKICAgICAgICAg
bWFwLnJlbW92ZShpdCk7CiB9CiAKLXZvaWQgU2VjdXJpdHlQb2xpY3k6OnJlc2V0T3JpZ2luQWNj
ZXNzV2hpdGVsaXN0cygpCit2b2lkIFNlY3VyaXR5UG9saWN5OjpyZXNldE9yaWdpbkFjY2Vzc0Fs
bG93bGlzdHMoKQogewogICAgIExvY2tlcjxMb2NrPiBsb2NrZXIob3JpZ2luQWNjZXNzTWFwTG9j
ayk7CiAgICAgb3JpZ2luQWNjZXNzTWFwKCkuY2xlYXIoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2VjdXJpdHlQb2xpY3kuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdl
L1NlY3VyaXR5UG9saWN5LmgJKHJldmlzaW9uIDI2Mjg5NCkKKysrIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvU2VjdXJpdHlQb2xpY3kuaAkod29ya2luZyBjb3B5KQpAQCAtNjgsMTIgKzY4LDEyIEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgYm9vbCBhbGxvd1N1YnN0aXR1dGVEYXRhQWNjZXNzVG9Mb2NhbCgp
OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgYWxsb3dBY2Nlc3NUbyhjb25zdCBV
c2VyQ29udGVudFVSTFBhdHRlcm4mKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBh
ZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShjb25zdCBTZWN1cml0eU9yaWdpbiYgc291cmNl
T3JpZ2luLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGNvbnN0IFN0cmluZyYg
ZGVzdGluYXRpb25Eb21haW4sIGJvb2wgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOwotICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHJlbW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlzdEVu
dHJ5KGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBzb3VyY2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgZGVz
dGluYXRpb25Qcm90b2NvbCwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbkRvbWFpbiwgYm9vbCBh
bGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZv
aWQgcmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RzKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIHZvaWQgYWRkT3JpZ2luQWNjZXNzQWxsb3dsaXN0RW50cnkoY29uc3QgU2VjdXJpdHlPcmln
aW4mIHNvdXJjZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblByb3RvY29sLCBjb25z
dCBTdHJpbmcmIGRlc3RpbmF0aW9uRG9tYWluLCBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21h
aW5zKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCByZW1vdmVPcmlnaW5BY2Nlc3NB
bGxvd2xpc3RFbnRyeShjb25zdCBTZWN1cml0eU9yaWdpbiYgc291cmNlT3JpZ2luLCBjb25zdCBT
dHJpbmcmIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25Eb21h
aW4sIGJvb2wgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOworICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyB2b2lkIHJlc2V0T3JpZ2luQWNjZXNzQWxsb3dsaXN0cygpOwogCi0gICAgc3RhdGlj
IGJvb2wgaXNBY2Nlc3NXaGl0ZUxpc3RlZChjb25zdCBTZWN1cml0eU9yaWdpbiYgYWN0aXZlT3Jp
Z2luLCBjb25zdCBTZWN1cml0eU9yaWdpbiYgdGFyZ2V0T3JpZ2luLCBjb25zdCBVUkwmIHRhcmdl
dFVSTCk7Ci0gICAgc3RhdGljIGJvb2wgaXNBY2Nlc3NXaGl0ZUxpc3RlZChjb25zdCBTZWN1cml0
eU9yaWdpbiYgYWN0aXZlT3JpZ2luLCBjb25zdCBVUkwmIHRhcmdldFVSTCk7CisgICAgc3RhdGlj
IGJvb2wgaXNBY2Nlc3NBbGxvd2VkKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBhY3RpdmVPcmlnaW4s
IGNvbnN0IFNlY3VyaXR5T3JpZ2luJiB0YXJnZXRPcmlnaW4sIGNvbnN0IFVSTCYgdGFyZ2V0VVJM
KTsKKyAgICBzdGF0aWMgYm9vbCBpc0FjY2Vzc0FsbG93ZWQoY29uc3QgU2VjdXJpdHlPcmlnaW4m
IGFjdGl2ZU9yaWdpbiwgY29uc3QgVVJMJiB0YXJnZXRVUkwpOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRl
cm4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRVUkxQ
YXR0ZXJuLmNwcAkocmV2aXNpb24gMjYyODk0KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9Vc2Vy
Q29udGVudFVSTFBhdHRlcm4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwxNiArMzIsMTYgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1ib29sIFVzZXJDb250ZW50VVJMUGF0dGVybjo6bWF0
Y2hlc1BhdHRlcm5zKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgd2hpdGVs
aXN0LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvY2tsaXN0KQorYm9vbCBVc2VyQ29udGVudFVS
TFBhdHRlcm46Om1hdGNoZXNQYXR0ZXJucyhjb25zdCBVUkwmIHVybCwgY29uc3QgVmVjdG9yPFN0
cmluZz4mIGFsbG93bGlzdCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2NrbGlzdCkKIHsKLSAg
ICAvLyBJbiBvcmRlciBmb3IgYSBVUkwgdG8gYmUgYSBtYXRjaCBpdCBoYXMgdG8gYmUgcHJlc2Vu
dCBpbiB0aGUgd2hpdGVsaXN0IGFuZCBub3QgcHJlc2VudCBpbiB0aGUgYmxvY2tsaXN0LgotICAg
IC8vIElmIHRoZXJlIGlzIG5vIHdoaXRlbGlzdCBhdCBhbGwsIHRoZW4gYWxsIFVSTHMgYXJlIGFz
c3VtZWQgdG8gYmUgaW4gdGhlIHdoaXRlbGlzdC4KLSAgICBib29sIG1hdGNoZXNXaGl0ZWxpc3Qg
PSB3aGl0ZWxpc3QuaXNFbXB0eSgpOwotICAgIGlmICghbWF0Y2hlc1doaXRlbGlzdCkgewotICAg
ICAgICBmb3IgKGF1dG8mIGVudHJ5IDogd2hpdGVsaXN0KSB7CisgICAgLy8gSW4gb3JkZXIgZm9y
IGEgVVJMIHRvIGJlIGEgbWF0Y2ggaXQgaGFzIHRvIGJlIHByZXNlbnQgaW4gdGhlIGFsbG93bGlz
dCBhbmQgbm90IHByZXNlbnQgaW4gdGhlIGJsb2NrbGlzdC4KKyAgICAvLyBJZiB0aGVyZSBpcyBu
byBhbGxvd2xpc3QgYXQgYWxsLCB0aGVuIGFsbCBVUkxzIGFyZSBhc3N1bWVkIHRvIGJlIGluIHRo
ZSBhbGxvd2xpc3QuCisgICAgYm9vbCBtYXRjaGVzQWxsb3dsaXN0ID0gYWxsb3dsaXN0LmlzRW1w
dHkoKTsKKyAgICBpZiAoIW1hdGNoZXNBbGxvd2xpc3QpIHsKKyAgICAgICAgZm9yIChhdXRvJiBl
bnRyeSA6IGFsbG93bGlzdCkgewogICAgICAgICAgICAgVXNlckNvbnRlbnRVUkxQYXR0ZXJuIGNv
bnRlbnRQYXR0ZXJuKGVudHJ5KTsKICAgICAgICAgICAgIGlmIChjb250ZW50UGF0dGVybi5tYXRj
aGVzKHVybCkpIHsKLSAgICAgICAgICAgICAgICBtYXRjaGVzV2hpdGVsaXN0ID0gdHJ1ZTsKKyAg
ICAgICAgICAgICAgICBtYXRjaGVzQWxsb3dsaXN0ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtNTgsNyArNTgsNyBAQCBib29sIFVz
ZXJDb250ZW50VVJMUGF0dGVybjo6bWF0Y2hlc1BhdHRlCiAgICAgICAgIH0KICAgICB9CiAKLSAg
ICByZXR1cm4gbWF0Y2hlc1doaXRlbGlzdCAmJiAhbWF0Y2hlc0Jsb2NrbGlzdDsKKyAgICByZXR1
cm4gbWF0Y2hlc0FsbG93bGlzdCAmJiAhbWF0Y2hlc0Jsb2NrbGlzdDsKIH0KIAogYm9vbCBVc2Vy
Q29udGVudFVSTFBhdHRlcm46OnBhcnNlKGNvbnN0IFN0cmluZyYgcGF0dGVybikKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uaAkocmV2aXNpb24gMjYy
ODk0KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uaAkod29y
a2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIG1hdGNoU3Vi
ZG9tYWlucygpIGNvbnN0IHsgcmV0dXJuIG1fbWF0Y2hTdWJkb21haW5zOyB9CiAgICAgCi0gICAg
c3RhdGljIGJvb2wgbWF0Y2hlc1BhdHRlcm5zKGNvbnN0IFVSTCYsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiB3aGl0ZWxpc3QsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9ja2xpc3QpOworICAgIHN0
YXRpYyBib29sIG1hdGNoZXNQYXR0ZXJucyhjb25zdCBVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgYWxsb3dsaXN0LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvY2tsaXN0KTsKIAogcHJpdmF0
ZToKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHBhcnNlKGNvbnN0IFN0cmluZyYgcGF0dGVybik7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJTY3JpcHQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJTY3JpcHQuaAkocmV2aXNpb24gMjYyODk0KQorKysgU291
cmNlL1dlYkNvcmUvcGFnZS9Vc2VyU2NyaXB0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDEwICs0
MSwxMCBAQCBwdWJsaWM6CiAgICAgVXNlclNjcmlwdCYgb3BlcmF0b3I9KGNvbnN0IFVzZXJTY3Jp
cHQmKSA9IGRlZmF1bHQ7CiAgICAgVXNlclNjcmlwdCYgb3BlcmF0b3I9KFVzZXJTY3JpcHQmJikg
PSBkZWZhdWx0OwogCi0gICAgVXNlclNjcmlwdChTdHJpbmcmJiBzb3VyY2UsIFVSTCYmIHVybCwg
VmVjdG9yPFN0cmluZz4mJiB3aGl0ZWxpc3QsIFZlY3RvcjxTdHJpbmc+JiYgYmxvY2tsaXN0LCBV
c2VyU2NyaXB0SW5qZWN0aW9uVGltZSBpbmplY3Rpb25UaW1lLCBVc2VyQ29udGVudEluamVjdGVk
RnJhbWVzIGluamVjdGVkRnJhbWVzLCBXYWl0Rm9yTm90aWZpY2F0aW9uQmVmb3JlSW5qZWN0aW5n
IHdhaXRGb3JOb3RpZmljYXRpb24pCisgICAgVXNlclNjcmlwdChTdHJpbmcmJiBzb3VyY2UsIFVS
TCYmIHVybCwgVmVjdG9yPFN0cmluZz4mJiBhbGxvd2xpc3QsIFZlY3RvcjxTdHJpbmc+JiYgYmxv
Y2tsaXN0LCBVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSBpbmplY3Rpb25UaW1lLCBVc2VyQ29udGVu
dEluamVjdGVkRnJhbWVzIGluamVjdGVkRnJhbWVzLCBXYWl0Rm9yTm90aWZpY2F0aW9uQmVmb3Jl
SW5qZWN0aW5nIHdhaXRGb3JOb3RpZmljYXRpb24pCiAgICAgICAgIDogbV9zb3VyY2UoV1RGTW92
ZShzb3VyY2UpKQogICAgICAgICAsIG1fdXJsKFdURk1vdmUodXJsKSkKLSAgICAgICAgLCBtX3do
aXRlbGlzdChXVEZNb3ZlKHdoaXRlbGlzdCkpCisgICAgICAgICwgbV9hbGxvd2xpc3QoV1RGTW92
ZShhbGxvd2xpc3QpKQogICAgICAgICAsIG1fYmxvY2tsaXN0KFdURk1vdmUoYmxvY2tsaXN0KSkK
ICAgICAgICAgLCBtX2luamVjdGlvblRpbWUoaW5qZWN0aW9uVGltZSkKICAgICAgICAgLCBtX2lu
amVjdGVkRnJhbWVzKGluamVjdGVkRnJhbWVzKQpAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAK
ICAgICBjb25zdCBTdHJpbmcmIHNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlOyB9CiAg
ICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQotICAgIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiB3aGl0ZWxpc3QoKSBjb25zdCB7IHJldHVybiBtX3doaXRlbGlzdDsgfQor
ICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhbGxvd2xpc3QoKSBjb25zdCB7IHJldHVybiBtX2Fs
bG93bGlzdDsgfQogICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9ja2xpc3QoKSBjb25zdCB7
IHJldHVybiBtX2Jsb2NrbGlzdDsgfQogICAgIFVzZXJTY3JpcHRJbmplY3Rpb25UaW1lIGluamVj
dGlvblRpbWUoKSBjb25zdCB7IHJldHVybiBtX2luamVjdGlvblRpbWU7IH0KICAgICBVc2VyQ29u
dGVudEluamVjdGVkRnJhbWVzIGluamVjdGVkRnJhbWVzKCkgY29uc3QgeyByZXR1cm4gbV9pbmpl
Y3RlZEZyYW1lczsgfQpAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFN0
cmluZyBtX3NvdXJjZTsKICAgICBVUkwgbV91cmw7Ci0gICAgVmVjdG9yPFN0cmluZz4gbV93aGl0
ZWxpc3Q7CisgICAgVmVjdG9yPFN0cmluZz4gbV9hbGxvd2xpc3Q7CiAgICAgVmVjdG9yPFN0cmlu
Zz4gbV9ibG9ja2xpc3Q7CiAgICAgVXNlclNjcmlwdEluamVjdGlvblRpbWUgbV9pbmplY3Rpb25U
aW1lIHsgVXNlclNjcmlwdEluamVjdGlvblRpbWU6OkRvY3VtZW50U3RhcnQgfTsKICAgICBVc2Vy
Q29udGVudEluamVjdGVkRnJhbWVzIG1faW5qZWN0ZWRGcmFtZXMgeyBVc2VyQ29udGVudEluamVj
dGVkRnJhbWVzOjpJbmplY3RJbkFsbEZyYW1lcyB9OwpAQCAtNzgsNyArNzgsNyBAQCB2b2lkIFVz
ZXJTY3JpcHQ6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyCiB7CiAgICAgZW5jb2RlciA8PCBtX3Nv
dXJjZTsKICAgICBlbmNvZGVyIDw8IG1fdXJsOwotICAgIGVuY29kZXIgPDwgbV93aGl0ZWxpc3Q7
CisgICAgZW5jb2RlciA8PCBtX2FsbG93bGlzdDsKICAgICBlbmNvZGVyIDw8IG1fYmxvY2tsaXN0
OwogICAgIGVuY29kZXIgPDwgbV9pbmplY3Rpb25UaW1lOwogICAgIGVuY29kZXIgPDwgbV9pbmpl
Y3RlZEZyYW1lczsKQEAgLTk4LDkgKzk4LDkgQEAgT3B0aW9uYWw8VXNlclNjcmlwdD4gVXNlclNj
cmlwdDo6ZGVjb2RlKAogICAgIGlmICghdXJsKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OwogICAgIAotICAgIE9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiB3aGl0ZWxpc3Q7Ci0gICAgZGVj
b2RlciA+PiB3aGl0ZWxpc3Q7Ci0gICAgaWYgKCF3aGl0ZWxpc3QpCisgICAgT3B0aW9uYWw8VmVj
dG9yPFN0cmluZz4+IGFsbG93bGlzdDsKKyAgICBkZWNvZGVyID4+IGFsbG93bGlzdDsKKyAgICBp
ZiAoIWFsbG93bGlzdCkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICAKICAgICBP
cHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gYmxvY2tsaXN0OwpAQCAtMTI2LDcgKzEyNiw3IEBAIE9w
dGlvbmFsPFVzZXJTY3JpcHQ+IFVzZXJTY3JpcHQ6OmRlY29kZSgKICAgICByZXR1cm4ge3sKICAg
ICAgICAgV1RGTW92ZSgqc291cmNlKSwKICAgICAgICAgV1RGTW92ZSgqdXJsKSwKLSAgICAgICAg
V1RGTW92ZSgqd2hpdGVsaXN0KSwKKyAgICAgICAgV1RGTW92ZSgqYWxsb3dsaXN0KSwKICAgICAg
ICAgV1RGTW92ZSgqYmxvY2tsaXN0KSwKICAgICAgICAgV1RGTW92ZSgqaW5qZWN0aW9uVGltZSks
CiAgICAgICAgIFdURk1vdmUoKmluamVjdGVkRnJhbWVzKSwKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvVXNlclN0eWxlU2hlZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdl
L1VzZXJTdHlsZVNoZWV0LmgJKHJldmlzaW9uIDI2Mjg5NCkKKysrIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvVXNlclN0eWxlU2hlZXQuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsMTAgKzQzLDEwIEBAIHB1
YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgVXNlclN0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiBz
b3VyY2UsIGNvbnN0IFVSTCYgdXJsLCBWZWN0b3I8U3RyaW5nPiYmIHdoaXRlbGlzdCwgVmVjdG9y
PFN0cmluZz4mJiBibG9ja2xpc3QsIFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgaW5qZWN0ZWRG
cmFtZXMsIFVzZXJTdHlsZUxldmVsIGxldmVsLCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFn
ZUlEID0gV1RGOjpudWxsb3B0KQorICAgIFVzZXJTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgc291
cmNlLCBjb25zdCBVUkwmIHVybCwgVmVjdG9yPFN0cmluZz4mJiBhbGxvd2xpc3QsIFZlY3RvcjxT
dHJpbmc+JiYgYmxvY2tsaXN0LCBVc2VyQ29udGVudEluamVjdGVkRnJhbWVzIGluamVjdGVkRnJh
bWVzLCBVc2VyU3R5bGVMZXZlbCBsZXZlbCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJ
RCA9IFdURjo6bnVsbG9wdCkKICAgICAgICAgOiBtX3NvdXJjZShzb3VyY2UpCiAgICAgICAgICwg
bV91cmwodXJsKQotICAgICAgICAsIG1fd2hpdGVsaXN0KFdURk1vdmUod2hpdGVsaXN0KSkKKyAg
ICAgICAgLCBtX2FsbG93bGlzdChXVEZNb3ZlKGFsbG93bGlzdCkpCiAgICAgICAgICwgbV9ibG9j
a2xpc3QoV1RGTW92ZShibG9ja2xpc3QpKQogICAgICAgICAsIG1faW5qZWN0ZWRGcmFtZXMoaW5q
ZWN0ZWRGcmFtZXMpCiAgICAgICAgICwgbV9sZXZlbChsZXZlbCkKQEAgLTU2LDcgKzU2LDcgQEAg
cHVibGljOgogCiAgICAgY29uc3QgU3RyaW5nJiBzb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX3Nv
dXJjZTsgfQogICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KLSAg
ICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgd2hpdGVsaXN0KCkgY29uc3QgeyByZXR1cm4gbV93aGl0
ZWxpc3Q7IH0KKyAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYWxsb3dsaXN0KCkgY29uc3QgeyBy
ZXR1cm4gbV9hbGxvd2xpc3Q7IH0KICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvY2tsaXN0
KCkgY29uc3QgeyByZXR1cm4gbV9ibG9ja2xpc3Q7IH0KICAgICBVc2VyQ29udGVudEluamVjdGVk
RnJhbWVzIGluamVjdGVkRnJhbWVzKCkgY29uc3QgeyByZXR1cm4gbV9pbmplY3RlZEZyYW1lczsg
fQogICAgIFVzZXJTdHlsZUxldmVsIGxldmVsKCkgY29uc3QgeyByZXR1cm4gbV9sZXZlbDsgfQpA
QCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFN0cmluZyBtX3NvdXJjZTsK
ICAgICBVUkwgbV91cmw7Ci0gICAgVmVjdG9yPFN0cmluZz4gbV93aGl0ZWxpc3Q7CisgICAgVmVj
dG9yPFN0cmluZz4gbV9hbGxvd2xpc3Q7CiAgICAgVmVjdG9yPFN0cmluZz4gbV9ibG9ja2xpc3Q7
CiAgICAgVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBtX2luamVjdGVkRnJhbWVzOwogICAgIFVz
ZXJTdHlsZUxldmVsIG1fbGV2ZWw7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250Q2FjaGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250Q2FjaGUuaAkocmV2aXNpb24gMjYyODk0KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE5OCw3ICsx
OTgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgaXNTeXN0ZW1Gb250Rm9yYmlkZGVuRm9y
RWRpdGluZyhjb25zdCBTdHJpbmcmKTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyB2b2lkIHNldEZvbnRXaGl0ZWxpc3QoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBzZXRGb250QWxsb3dsaXN0KGNv
bnN0IFZlY3RvcjxTdHJpbmc+Jik7CiAjZW5kaWYKICNpZiBQTEFURk9STShXSU4pCiAgICAgSU1M
YW5nRm9udExpbmtUeXBlKiBnZXRGb250TGlua0ludGVyZmFjZSgpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNo
ZUNvcmVUZXh0LmNwcAkocmV2aXNpb24gMjYyODk0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC04MzMsMTkgKzgzMywxOSBAQCBTeW50aGVzaXNQYWlyIGNvbXB1dGVOZWNlc3NhcnlTeW50aGVz
aXMoCiAgICAgcmV0dXJuIFN5bnRoZXNpc1BhaXIobmVlZHNTeW50aGV0aWNCb2xkLCBuZWVkc1N5
bnRoZXRpY09ibGlxdWUpOwogfQogCi10eXBlZGVmIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJ
bnNlbnNpdGl2ZUhhc2g+IFdoaXRlbGlzdDsKLXN0YXRpYyBXaGl0ZWxpc3QmIGZvbnRXaGl0ZWxp
c3QoKQordHlwZWRlZiBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiBB
bGxvd2xpc3Q7CitzdGF0aWMgQWxsb3dsaXN0JiBmb250QWxsb3dsaXN0KCkKIHsKLSAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8V2hpdGVsaXN0PiB3aGl0ZWxpc3Q7Ci0gICAgcmV0dXJuIHdoaXRl
bGlzdDsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QWxsb3dsaXN0PiBhbGxvd2xpc3Q7Cisg
ICAgcmV0dXJuIGFsbG93bGlzdDsKIH0KIAotdm9pZCBGb250Q2FjaGU6OnNldEZvbnRXaGl0ZWxp
c3QoY29uc3QgVmVjdG9yPFN0cmluZz4mIGlucHV0V2hpdGVsaXN0KQordm9pZCBGb250Q2FjaGU6
OnNldEZvbnRBbGxvd2xpc3QoY29uc3QgVmVjdG9yPFN0cmluZz4mIGlucHV0QWxsb3dsaXN0KQog
ewotICAgIFdoaXRlbGlzdCYgd2hpdGVsaXN0ID0gZm9udFdoaXRlbGlzdCgpOwotICAgIHdoaXRl
bGlzdC5jbGVhcigpOwotICAgIGZvciAoYXV0byYgaXRlbSA6IGlucHV0V2hpdGVsaXN0KQotICAg
ICAgICB3aGl0ZWxpc3QuYWRkKGl0ZW0pOworICAgIEFsbG93bGlzdCYgYWxsb3dsaXN0ID0gZm9u
dEFsbG93bGlzdCgpOworICAgIGFsbG93bGlzdC5jbGVhcigpOworICAgIGZvciAoYXV0byYgaXRl
bSA6IGlucHV0QWxsb3dsaXN0KQorICAgICAgICBhbGxvd2xpc3QuYWRkKGl0ZW0pOwogfQogCiBj
bGFzcyBGb250RGF0YWJhc2UgewpAQCAtMTE3OSw4ICsxMTc5LDggQEAgc3RydWN0IEZvbnRMb29r
dXAgewogCiBzdGF0aWMgRm9udExvb2t1cCBwbGF0Zm9ybUZvbnRMb29rdXBXaXRoRmFtaWx5KGNv
bnN0IEF0b21TdHJpbmcmIGZhbWlseSwgRm9udFNlbGVjdGlvblJlcXVlc3QgcmVxdWVzdCwgZmxv
YXQgc2l6ZSwgQWxsb3dVc2VySW5zdGFsbGVkRm9udHMgYWxsb3dVc2VySW5zdGFsbGVkRm9udHMp
CiB7Ci0gICAgY29uc3QgYXV0byYgd2hpdGVsaXN0ID0gZm9udFdoaXRlbGlzdCgpOwotICAgIGlm
ICghaXNTeXN0ZW1Gb250KGZhbWlseS5zdHJpbmcoKSkgJiYgd2hpdGVsaXN0LnNpemUoKSAmJiAh
d2hpdGVsaXN0LmNvbnRhaW5zKGZhbWlseSkpCisgICAgY29uc3QgYXV0byYgYWxsb3dsaXN0ID0g
Zm9udEFsbG93bGlzdCgpOworICAgIGlmICghaXNTeXN0ZW1Gb250KGZhbWlseS5zdHJpbmcoKSkg
JiYgYWxsb3dsaXN0LnNpemUoKSAmJiAhYWxsb3dsaXN0LmNvbnRhaW5zKGZhbWlseSkpCiAgICAg
ICAgIHJldHVybiB7IG51bGxwdHIgfTsKIAogICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FT
Q0lJQ2FzZShmYW1pbHksICIuYXBwbGVzeXN0ZW11aWZvbnRzZXJpZiIpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcAkocmV2aXNpb24g
MjYyODk0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MSw3ICsxNDEsNyBAQCBib29sIGlzVmFsaWRBY2NlcHRI
ZWFkZXJWYWx1ZShjb25zdCBTdHJpCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHZhbHVl
Lmxlbmd0aCgpOyArK2kpIHsKICAgICAgICAgVUNoYXIgYyA9IHZhbHVlW2ldOwogCi0gICAgICAg
IC8vIEZpcnN0IGNoZWNrIGZvciBhbHBoYW51bWVyaWMgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMg
dGhlbiB3aGl0ZWxpc3QgZm91ciBkZWxpbWl0ZXIgY2hhcmFjdGVycy4KKyAgICAgICAgLy8gRmly
c3QgY2hlY2sgZm9yIGFscGhhbnVtZXJpYyBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucyB0aGVuIGFs
bG93bGlzdCBmb3VyIGRlbGltaXRlciBjaGFyYWN0ZXJzLgogICAgICAgICBpZiAoaXNBU0NJSUFs
cGhhbnVtZXJpYyhjKSB8fCBjID09ICcsJyB8fCBjID09ICcvJyB8fCBjID09ICc7JyB8fCBjID09
ICc9JykKICAgICAgICAgICAgIGNvbnRpbnVlOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvRmxvYXRpbmdPYmplY3RzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0Zsb2F0aW5nT2JqZWN0cy5oCShyZXZpc2lvbiAyNjI4OTQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvRmxvYXRpbmdPYmplY3RzLmgJKHdvcmtpbmcgY29weSkKQEAgLTg0LDcg
Kzg0LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNEZXNjZW5kYW50KCkgY29uc3QgeyByZXR1cm4g
bV9pc0Rlc2NlbmRhbnQ7IH0KICAgICB2b2lkIHNldElzRGVzY2VuZGFudChib29sIGlzRGVzY2Vu
ZGFudCkgeyBtX2lzRGVzY2VuZGFudCA9IGlzRGVzY2VuZGFudDsgfQogCi0gICAgLy8gRklYTUU6
IENhbGxlcnMgb2YgdGhlc2UgbWV0aG9kcyBhcmUgZGFuZ2Vyb3VzIGFuZCBzaG91bGQgYmUgd2hp
dGVsaXN0ZWQgZXhwbGljaXRseSBvciByZW1vdmVkLgorICAgIC8vIEZJWE1FOiBDYWxsZXJzIG9m
IHRoZXNlIG1ldGhvZHMgYXJlIGRhbmdlcm91cyBhbmQgc2hvdWxkIGJlIGFsbG93ZWQgZXhwbGlj
aXRseSBvciByZW1vdmVkLgogICAgIFJvb3RJbmxpbmVCb3gqIG9yaWdpbmF0aW5nTGluZSgpIGNv
bnN0IHsgcmV0dXJuIG1fb3JpZ2luYXRpbmdMaW5lLmdldCgpOyB9CiAgICAgdm9pZCBjbGVhck9y
aWdpbmF0aW5nTGluZSgpIHsgbV9vcmlnaW5hdGluZ0xpbmUgPSBudWxscHRyOyB9CiAgICAgdm9p
ZCBzZXRPcmlnaW5hdGluZ0xpbmUoUm9vdElubGluZUJveCYgbGluZSkgeyBtX29yaWdpbmF0aW5n
TGluZSA9IG1ha2VXZWFrUHRyKGxpbmUpOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdHlsZS9F
bGVtZW50UnVsZUNvbGxlY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3R5
bGUvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwCShyZXZpc2lvbiAyNjI4OTQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9zdHlsZS9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTIwMCw3ICsyMDAsNyBAQCB2b2lkIEVsZW1lbnRSdWxlQ29sbGVjdG9yOjp0cmFuc2Zlck1hdGNo
CiAgICAgICAgIGFkZE1hdGNoZWRQcm9wZXJ0aWVzKHsKICAgICAgICAgICAgICZtYXRjaGVkUnVs
ZS5ydWxlRGF0YS0+c3R5bGVSdWxlKCkucHJvcGVydGllcygpLAogICAgICAgICAgICAgc3RhdGlj
X2Nhc3Q8dWludDE2X3Q+KG1hdGNoZWRSdWxlLnJ1bGVEYXRhLT5saW5rTWF0Y2hUeXBlKCkpLAot
ICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dWludDE2X3Q+KG1hdGNoZWRSdWxlLnJ1bGVEYXRhLT5w
cm9wZXJ0eVdoaXRlbGlzdFR5cGUoKSksCisgICAgICAgICAgICBzdGF0aWNfY2FzdDx1aW50MTZf
dD4obWF0Y2hlZFJ1bGUucnVsZURhdGEtPnByb3BlcnR5QWxsb3dsaXN0VHlwZSgpKSwKICAgICAg
ICAgICAgIG1hdGNoZWRSdWxlLnN0eWxlU2NvcGVPcmRpbmFsCiAgICAgICAgIH0sIGRlY2xhcmF0
aW9uT3JpZ2luKTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdHlsZS9FbGVtZW50UnVs
ZUNvbGxlY3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N0eWxlL0VsZW1lbnRS
dWxlQ29sbGVjdG9yLmgJKHJldmlzaW9uIDI2Mjg5NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N0eWxl
L0VsZW1lbnRSdWxlQ29sbGVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTY3LDcgKzY3LDcgQEAg
c3RydWN0IE1hdGNoZWRSdWxlIHsKIHN0cnVjdCBNYXRjaGVkUHJvcGVydGllcyB7CiAgICAgUmVm
UHRyPGNvbnN0IFN0eWxlUHJvcGVydGllcz4gcHJvcGVydGllczsKICAgICB1aW50MTZfdCBsaW5r
TWF0Y2hUeXBlIHsgU2VsZWN0b3JDaGVja2VyOjpNYXRjaEFsbCB9OwotICAgIHVpbnQxNl90IHdo
aXRlbGlzdFR5cGUgeyBQcm9wZXJ0eVdoaXRlbGlzdE5vbmUgfTsKKyAgICB1aW50MTZfdCBhbGxv
d2xpc3RUeXBlIHsgUHJvcGVydHlBbGxvd2xpc3ROb25lIH07CiAgICAgU2NvcGVPcmRpbmFsIHN0
eWxlU2NvcGVPcmRpbmFsIHsgU2NvcGVPcmRpbmFsOjpFbGVtZW50IH07CiB9OwogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdHlsZS9Qcm9wZXJ0eUNhc2NhZGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N0eWxlL1Byb3BlcnR5Q2FzY2FkZS5jcHAJKHJldmlzaW9uIDI2Mjg5NCkK
KysrIFNvdXJjZS9XZWJDb3JlL3N0eWxlL1Byb3BlcnR5Q2FzY2FkZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI0Miw3ICsyNDIsNyBAQCB2b2lkIFByb3BlcnR5Q2FzY2FkZTo6c2V0RGVmZXJyZWQo
Q1NTUHJvCiBib29sIFByb3BlcnR5Q2FzY2FkZTo6YWRkTWF0Y2goY29uc3QgTWF0Y2hlZFByb3Bl
cnRpZXMmIG1hdGNoZWRQcm9wZXJ0aWVzLCBDYXNjYWRlTGV2ZWwgY2FzY2FkZUxldmVsLCBib29s
IGltcG9ydGFudCkKIHsKICAgICBhdXRvJiBzdHlsZVByb3BlcnRpZXMgPSAqbWF0Y2hlZFByb3Bl
cnRpZXMucHJvcGVydGllczsKLSAgICBhdXRvIHByb3BlcnR5V2hpdGVsaXN0VHlwZSA9IHN0YXRp
Y19jYXN0PFByb3BlcnR5V2hpdGVsaXN0VHlwZT4obWF0Y2hlZFByb3BlcnRpZXMud2hpdGVsaXN0
VHlwZSk7CisgICAgYXV0byBwcm9wZXJ0eUFsbG93bGlzdFR5cGUgPSBzdGF0aWNfY2FzdDxQcm9w
ZXJ0eUFsbG93bGlzdFR5cGU+KG1hdGNoZWRQcm9wZXJ0aWVzLmFsbG93bGlzdFR5cGUpOwogICAg
IGJvb2wgaGFzSW1wb3J0YW50UHJvcGVydGllcyA9IGZhbHNlOwogCiAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMCwgY291bnQgPSBzdHlsZVByb3BlcnRpZXMucHJvcGVydHlDb3VudCgpOyBpIDwgY291
bnQ7ICsraSkgewpAQCAtMjYyLDEwICsyNjIsMTAgQEAgYm9vbCBQcm9wZXJ0eUNhc2NhZGU6OmFk
ZE1hdGNoKGNvbnN0IE1hdAogICAgICAgICBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQgPSBjdXJy
ZW50LmlkKCk7CiAKICNpZiBFTkFCTEUoVklERU8pCi0gICAgICAgIGlmIChwcm9wZXJ0eVdoaXRl
bGlzdFR5cGUgPT0gUHJvcGVydHlXaGl0ZWxpc3RDdWUgJiYgIWlzVmFsaWRDdWVTdHlsZVByb3Bl
cnR5KHByb3BlcnR5SUQpKQorICAgICAgICBpZiAocHJvcGVydHlBbGxvd2xpc3RUeXBlID09IFBy
b3BlcnR5QWxsb3dsaXN0Q3VlICYmICFpc1ZhbGlkQ3VlU3R5bGVQcm9wZXJ0eShwcm9wZXJ0eUlE
KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogI2VuZGlmCi0gICAgICAgIGlmIChwcm9wZXJ0eVdo
aXRlbGlzdFR5cGUgPT0gUHJvcGVydHlXaGl0ZWxpc3RNYXJrZXIgJiYgIWlzVmFsaWRNYXJrZXJT
dHlsZVByb3BlcnR5KHByb3BlcnR5SUQpKQorICAgICAgICBpZiAocHJvcGVydHlBbGxvd2xpc3RU
eXBlID09IFByb3BlcnR5QWxsb3dsaXN0TWFya2VyICYmICFpc1ZhbGlkTWFya2VyU3R5bGVQcm9w
ZXJ0eShwcm9wZXJ0eUlEKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGlmIChz
aG91bGRBcHBseVByb3BlcnR5SW5QYXJzZU9yZGVyKHByb3BlcnR5SUQpKQpJbmRleDogU291cmNl
L1dlYkNvcmUvc3R5bGUvUnVsZURhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3N0eWxlL1J1bGVEYXRhLmNwcAkocmV2aXNpb24gMjYyODk0KQorKysgU291cmNlL1dlYkNvcmUv
c3R5bGUvUnVsZURhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzcsMjUgKzEzNywyNSBAQCBz
dGF0aWMgYm9vbCBjb21wdXRlQ29udGFpbnNVbmNvbW1vbkF0dHJpCiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCi1zdGF0aWMgaW5saW5lIFByb3BlcnR5V2hpdGVsaXN0VHlwZSBkZXRlcm1pbmVQcm9w
ZXJ0eVdoaXRlbGlzdFR5cGUoY29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yKQorc3RhdGljIGlu
bGluZSBQcm9wZXJ0eUFsbG93bGlzdFR5cGUgZGV0ZXJtaW5lUHJvcGVydHlBbGxvd2xpc3RUeXBl
KGNvbnN0IENTU1NlbGVjdG9yKiBzZWxlY3RvcikKIHsKICAgICBmb3IgKGNvbnN0IENTU1NlbGVj
dG9yKiBjb21wb25lbnQgPSBzZWxlY3RvcjsgY29tcG9uZW50OyBjb21wb25lbnQgPSBjb21wb25l
bnQtPnRhZ0hpc3RvcnkoKSkgewogI2lmIEVOQUJMRShWSURFTykKICAgICAgICAgaWYgKGNvbXBv
bmVudC0+bWF0Y2goKSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvRWxlbWVudCAmJiAoY29tcG9uZW50
LT5wc2V1ZG9FbGVtZW50VHlwZSgpID09IENTU1NlbGVjdG9yOjpQc2V1ZG9FbGVtZW50Q3VlIHx8
IGNvbXBvbmVudC0+dmFsdWUoKSA9PSBUZXh0VHJhY2tDdWU6OmN1ZVNoYWRvd1BzZXVkb0lkKCkp
KQotICAgICAgICAgICAgcmV0dXJuIFByb3BlcnR5V2hpdGVsaXN0Q3VlOworICAgICAgICAgICAg
cmV0dXJuIFByb3BlcnR5QWxsb3dsaXN0Q3VlOwogI2VuZGlmCiAgICAgICAgIGlmIChjb21wb25l
bnQtPm1hdGNoKCkgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1lbnQgJiYgY29tcG9uZW50LT5w
c2V1ZG9FbGVtZW50VHlwZSgpID09IENTU1NlbGVjdG9yOjpQc2V1ZG9FbGVtZW50TWFya2VyKQot
ICAgICAgICAgICAgcmV0dXJuIFByb3BlcnR5V2hpdGVsaXN0TWFya2VyOworICAgICAgICAgICAg
cmV0dXJuIFByb3BlcnR5QWxsb3dsaXN0TWFya2VyOwogCiAgICAgICAgIGlmIChjb25zdCBhdXRv
KiBzZWxlY3Rvckxpc3QgPSBzZWxlY3Rvci0+c2VsZWN0b3JMaXN0KCkpIHsKICAgICAgICAgICAg
IGZvciAoY29uc3QgYXV0byogc3ViU2VsZWN0b3IgPSBzZWxlY3Rvckxpc3QtPmZpcnN0KCk7IHN1
YlNlbGVjdG9yOyBzdWJTZWxlY3RvciA9IENTU1NlbGVjdG9yTGlzdDo6bmV4dChzdWJTZWxlY3Rv
cikpIHsKLSAgICAgICAgICAgICAgICBhdXRvIHdoaXRlbGlzdFR5cGUgPSBkZXRlcm1pbmVQcm9w
ZXJ0eVdoaXRlbGlzdFR5cGUoc3ViU2VsZWN0b3IpOwotICAgICAgICAgICAgICAgIGlmICh3aGl0
ZWxpc3RUeXBlICE9IFByb3BlcnR5V2hpdGVsaXN0Tm9uZSkKLSAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHdoaXRlbGlzdFR5cGU7CisgICAgICAgICAgICAgICAgYXV0byBhbGxvd2xpc3RUeXBl
ID0gZGV0ZXJtaW5lUHJvcGVydHlBbGxvd2xpc3RUeXBlKHN1YlNlbGVjdG9yKTsKKyAgICAgICAg
ICAgICAgICBpZiAoYWxsb3dsaXN0VHlwZSAhPSBQcm9wZXJ0eUFsbG93bGlzdE5vbmUpCisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBhbGxvd2xpc3RUeXBlOwogICAgICAgICAgICAgfQogICAg
ICAgICB9CiAgICAgfQotICAgIHJldHVybiBQcm9wZXJ0eVdoaXRlbGlzdE5vbmU7CisgICAgcmV0
dXJuIFByb3BlcnR5QWxsb3dsaXN0Tm9uZTsKIH0KIAogUnVsZURhdGE6OlJ1bGVEYXRhKGNvbnN0
IFN0eWxlUnVsZSYgc3R5bGVSdWxlLCB1bnNpZ25lZCBzZWxlY3RvckluZGV4LCB1bnNpZ25lZCBz
ZWxlY3Rvckxpc3RJbmRleCwgdW5zaWduZWQgcG9zaXRpb24pCkBAIC0xNjcsNyArMTY3LDcgQEAg
UnVsZURhdGE6OlJ1bGVEYXRhKGNvbnN0IFN0eWxlUnVsZSYgc3R5bAogICAgICwgbV9jYW5NYXRj
aFBzZXVkb0VsZW1lbnQoc2VsZWN0b3JDYW5NYXRjaFBzZXVkb0VsZW1lbnQoKnNlbGVjdG9yKCkp
KQogICAgICwgbV9jb250YWluc1VuY29tbW9uQXR0cmlidXRlU2VsZWN0b3IoY29tcHV0ZUNvbnRh
aW5zVW5jb21tb25BdHRyaWJ1dGVTZWxlY3Rvcigqc2VsZWN0b3IoKSkpCiAgICAgLCBtX2xpbmtN
YXRjaFR5cGUoU2VsZWN0b3JDaGVja2VyOjpkZXRlcm1pbmVMaW5rTWF0Y2hUeXBlKHNlbGVjdG9y
KCkpKQotICAgICwgbV9wcm9wZXJ0eVdoaXRlbGlzdFR5cGUoZGV0ZXJtaW5lUHJvcGVydHlXaGl0
ZWxpc3RUeXBlKHNlbGVjdG9yKCkpKQorICAgICwgbV9wcm9wZXJ0eUFsbG93bGlzdFR5cGUoZGV0
ZXJtaW5lUHJvcGVydHlBbGxvd2xpc3RUeXBlKHNlbGVjdG9yKCkpKQogICAgICwgbV9pc0VuYWJs
ZWQodHJ1ZSkKICAgICAsIG1fZGVzY2VuZGFudFNlbGVjdG9ySWRlbnRpZmllckhhc2hlcyhTZWxl
Y3RvckZpbHRlcjo6Y29sbGVjdEhhc2hlcygqc2VsZWN0b3IoKSkpCiB7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9zdHlsZS9SdWxlRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N0
eWxlL1J1bGVEYXRhLmgJKHJldmlzaW9uIDI2Mjg5NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N0eWxl
L1J1bGVEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDExICsyNywxMSBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogbmFtZXNwYWNlIFN0eWxlIHsKIAotZW51bSBQcm9wZXJ0eVdoaXRlbGlzdFR5
cGUgewotICAgIFByb3BlcnR5V2hpdGVsaXN0Tm9uZSAgID0gMCwKLSAgICBQcm9wZXJ0eVdoaXRl
bGlzdE1hcmtlciwKK2VudW0gUHJvcGVydHlBbGxvd2xpc3RUeXBlIHsKKyAgICBQcm9wZXJ0eUFs
bG93bGlzdE5vbmUgICA9IDAsCisgICAgUHJvcGVydHlBbGxvd2xpc3RNYXJrZXIsCiAjaWYgRU5B
QkxFKFZJREVPKQotICAgIFByb3BlcnR5V2hpdGVsaXN0Q3VlCisgICAgUHJvcGVydHlBbGxvd2xp
c3RDdWUKICNlbmRpZgogfTsKIApAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgTWF0Y2hC
YXNlZE9uUnVsZUhhc2ggbWF0Y2hCYXNlZE9uUnVsZUhhc2goKSBjb25zdCB7IHJldHVybiBzdGF0
aWNfY2FzdDxNYXRjaEJhc2VkT25SdWxlSGFzaD4obV9tYXRjaEJhc2VkT25SdWxlSGFzaCk7IH0K
ICAgICBib29sIGNvbnRhaW5zVW5jb21tb25BdHRyaWJ1dGVTZWxlY3RvcigpIGNvbnN0IHsgcmV0
dXJuIG1fY29udGFpbnNVbmNvbW1vbkF0dHJpYnV0ZVNlbGVjdG9yOyB9CiAgICAgdW5zaWduZWQg
bGlua01hdGNoVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGlua01hdGNoVHlwZTsgfQotICAgIFBy
b3BlcnR5V2hpdGVsaXN0VHlwZSBwcm9wZXJ0eVdoaXRlbGlzdFR5cGUoKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDxQcm9wZXJ0eVdoaXRlbGlzdFR5cGU+KG1fcHJvcGVydHlXaGl0ZWxpc3RU
eXBlKTsgfQorICAgIFByb3BlcnR5QWxsb3dsaXN0VHlwZSBwcm9wZXJ0eUFsbG93bGlzdFR5cGUo
KSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxQcm9wZXJ0eUFsbG93bGlzdFR5cGU+KG1fcHJv
cGVydHlBbGxvd2xpc3RUeXBlKTsgfQogICAgIGJvb2wgaXNFbmFibGVkKCkgY29uc3QgeyByZXR1
cm4gbV9pc0VuYWJsZWQ7IH0KICAgICB2b2lkIHNldEVuYWJsZWQoYm9vbCB2YWx1ZSkgeyBtX2lz
RW5hYmxlZCA9IHZhbHVlOyB9CiAKQEAgLTg0LDcgKzg0LDcgQEAgcHJpdmF0ZToKICAgICB1bnNp
Z25lZCBtX2Nhbk1hdGNoUHNldWRvRWxlbWVudCA6IDE7CiAgICAgdW5zaWduZWQgbV9jb250YWlu
c1VuY29tbW9uQXR0cmlidXRlU2VsZWN0b3IgOiAxOwogICAgIHVuc2lnbmVkIG1fbGlua01hdGNo
VHlwZSA6IDI7IC8vICBTZWxlY3RvckNoZWNrZXI6OkxpbmtNYXRjaE1hc2sKLSAgICB1bnNpZ25l
ZCBtX3Byb3BlcnR5V2hpdGVsaXN0VHlwZSA6IDI7CisgICAgdW5zaWduZWQgbV9wcm9wZXJ0eUFs
bG93bGlzdFR5cGUgOiAyOwogICAgIHVuc2lnbmVkIG1faXNFbmFibGVkIDogMTsKICAgICBTZWxl
Y3RvckZpbHRlcjo6SGFzaGVzIG1fZGVzY2VuZGFudFNlbGVjdG9ySWRlbnRpZmllckhhc2hlczsK
IH07CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjYyODk0KQorKysgU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNCBAQAorMjAyMC0wNi0xMCAgQmV0aCBE
YWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVwbGFjZSBpbnN0YW5jZXMgb2Yg
d2hpdGVsaXN0IGluIFdlYkNvcmUgd2l0aCBhbGxvd2xpc3QKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzA2OAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVtb3ZlT3JpZ2luQWNjZXNz
V2hpdGVsaXN0RW50cnkpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6cmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RzKToKKyAgICAgICAgKiBTaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxV
c2VyU3R5bGVTaGVldD46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8VXNl
clN0eWxlU2hlZXQ+OjpkZWNvZGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZTo6
YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3Rl
ZEJ1bmRsZTo6cmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkpOgorICAgICAgICAoV2Vi
S2l0OjpJbmplY3RlZEJ1bmRsZTo6cmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RzKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbToKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vzcyk6CisKIDIwMjAtMDYt
MTAgIEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlcGxhY2UgaW5z
dGFuY2VzIG9mIGJsYWNrbGlzdCBpbiBXZWJDb3JlIHdpdGggYmxvY2tsaXN0CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24gMjYyODk0KQorKysgU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTkwMSwxNyArOTAxLDE3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OnJlcXUKIAogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6YWRk
T3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4sIGNv
bnN0IFN0cmluZyYgZGVzdGluYXRpb25Qcm90b2NvbCwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlv
bkhvc3QsIGJvb2wgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpCiB7Ci0gICAgU2VjdXJpdHlQ
b2xpY3k6OmFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KFNlY3VyaXR5T3JpZ2luOjpjcmVh
dGVGcm9tU3RyaW5nKHNvdXJjZU9yaWdpbikuZ2V0KCksIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGRl
c3RpbmF0aW9uSG9zdCwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOworICAgIFNlY3VyaXR5
UG9saWN5OjphZGRPcmlnaW5BY2Nlc3NBbGxvd2xpc3RFbnRyeShTZWN1cml0eU9yaWdpbjo6Y3Jl
YXRlRnJvbVN0cmluZyhzb3VyY2VPcmlnaW4pLmdldCgpLCBkZXN0aW5hdGlvblByb3RvY29sLCBk
ZXN0aW5hdGlvbkhvc3QsIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKIH0KIAogdm9pZCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0
RW50cnkoY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgZGVzdGluYXRp
b25Qcm90b2NvbCwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbkhvc3QsIGJvb2wgYWxsb3dEZXN0
aW5hdGlvblN1YmRvbWFpbnMpCiB7Ci0gICAgU2VjdXJpdHlQb2xpY3k6OnJlbW92ZU9yaWdpbkFj
Y2Vzc1doaXRlbGlzdEVudHJ5KFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKHNvdXJj
ZU9yaWdpbikuZ2V0KCksIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGRlc3RpbmF0aW9uSG9zdCwgYWxs
b3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOworICAgIFNlY3VyaXR5UG9saWN5OjpyZW1vdmVPcmln
aW5BY2Nlc3NBbGxvd2xpc3RFbnRyeShTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhz
b3VyY2VPcmlnaW4pLmdldCgpLCBkZXN0aW5hdGlvblByb3RvY29sLCBkZXN0aW5hdGlvbkhvc3Qs
IGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKIH0KIAogdm9pZCBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6cmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RzKCkKIHsKLSAgICBTZWN1
cml0eVBvbGljeTo6cmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RzKCk7CisgICAgU2VjdXJpdHlQ
b2xpY3k6OnJlc2V0T3JpZ2luQWNjZXNzQWxsb3dsaXN0cygpOwogfQogCiBPcHRpb25hbDxOZXR3
b3JrQWN0aXZpdHlUcmFja2VyPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c3RhcnRU
cmFja2luZ1Jlc291cmNlTG9hZChQYWdlSWRlbnRpZmllciBwYWdlSUQsIFJlc291cmNlTG9hZElk
ZW50aWZpZXIgcmVzb3VyY2VJRCwgYm9vbCBpc1RvcFJlc291cmNlKQpJbmRleDogU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCShyZXZpc2lvbiAyNjI4
OTQpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yMDgwLDcgKzIwODAsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8VXNl
clN0eWxlU2hlZXQ+OjplbmNvCiB7CiAgICAgZW5jb2RlciA8PCB1c2VyU3R5bGVTaGVldC5zb3Vy
Y2UoKTsKICAgICBlbmNvZGVyIDw8IHVzZXJTdHlsZVNoZWV0LnVybCgpOwotICAgIGVuY29kZXIg
PDwgdXNlclN0eWxlU2hlZXQud2hpdGVsaXN0KCk7CisgICAgZW5jb2RlciA8PCB1c2VyU3R5bGVT
aGVldC5hbGxvd2xpc3QoKTsKICAgICBlbmNvZGVyIDw8IHVzZXJTdHlsZVNoZWV0LmJsb2NrbGlz
dCgpOwogICAgIGVuY29kZXIuZW5jb2RlRW51bSh1c2VyU3R5bGVTaGVldC5pbmplY3RlZEZyYW1l
cygpKTsKICAgICBlbmNvZGVyLmVuY29kZUVudW0odXNlclN0eWxlU2hlZXQubGV2ZWwoKSk7CkBA
IC0yMDk3LDggKzIwOTcsOCBAQCBib29sIEFyZ3VtZW50Q29kZXI8VXNlclN0eWxlU2hlZXQ+Ojpk
ZWNvCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh1cmwpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBWZWN0b3I8U3RyaW5nPiB3aGl0ZWxpc3Q7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29k
ZSh3aGl0ZWxpc3QpKQorICAgIFZlY3RvcjxTdHJpbmc+IGFsbG93bGlzdDsKKyAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKGFsbG93bGlzdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIFZl
Y3RvcjxTdHJpbmc+IGJsb2NrbGlzdDsKQEAgLTIxMTgsNyArMjExOCw3IEBAIGJvb2wgQXJndW1l
bnRDb2RlcjxVc2VyU3R5bGVTaGVldD46OmRlY28KICAgICBpZiAoIXBhZ2VJRCkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgdXNlclN0eWxlU2hlZXQgPSBVc2VyU3R5bGVTaGVldChzb3Vy
Y2UsIHVybCwgV1RGTW92ZSh3aGl0ZWxpc3QpLCBXVEZNb3ZlKGJsb2NrbGlzdCksIGluamVjdGVk
RnJhbWVzLCBsZXZlbCwgV1RGTW92ZSgqcGFnZUlEKSk7CisgICAgdXNlclN0eWxlU2hlZXQgPSBV
c2VyU3R5bGVTaGVldChzb3VyY2UsIHVybCwgV1RGTW92ZShhbGxvd2xpc3QpLCBXVEZNb3ZlKGJs
b2NrbGlzdCksIGluamVjdGVkRnJhbWVzLCBsZXZlbCwgV1RGTW92ZSgqcGFnZUlEKSk7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAkocmV2aXNpb24gMjYy
ODk0KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzk1LDIwICszOTUsMjAgQEAgdm9pZCBJbmpl
Y3RlZEJ1bmRsZTo6c2V0U3BhdGlhbE5hdmlnYXRpbwogCiB2b2lkIEluamVjdGVkQnVuZGxlOjph
ZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbiwg
Y29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblByb3RvY29sLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0
aW9uSG9zdCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucykKIHsKLSAgICBTZWN1cml0
eVBvbGljeTo6YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoU2VjdXJpdHlPcmlnaW46OmNy
ZWF0ZUZyb21TdHJpbmcoc291cmNlT3JpZ2luKS5nZXQoKSwgZGVzdGluYXRpb25Qcm90b2NvbCwg
ZGVzdGluYXRpb25Ib3N0LCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7CisgICAgU2VjdXJp
dHlQb2xpY3k6OmFkZE9yaWdpbkFjY2Vzc0FsbG93bGlzdEVudHJ5KFNlY3VyaXR5T3JpZ2luOjpj
cmVhdGVGcm9tU3RyaW5nKHNvdXJjZU9yaWdpbikuZ2V0KCksIGRlc3RpbmF0aW9uUHJvdG9jb2ws
IGRlc3RpbmF0aW9uSG9zdCwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOwogICAgIFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5l
Y3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6QWRk
T3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkgeyBzb3VyY2VPcmlnaW4sIGRlc3RpbmF0aW9uUHJv
dG9jb2wsIGRlc3RpbmF0aW9uSG9zdCwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMgfSwgMCk7
CiAKIH0KIAogdm9pZCBJbmplY3RlZEJ1bmRsZTo6cmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0
RW50cnkoY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgZGVzdGluYXRp
b25Qcm90b2NvbCwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbkhvc3QsIGJvb2wgYWxsb3dEZXN0
aW5hdGlvblN1YmRvbWFpbnMpCiB7Ci0gICAgU2VjdXJpdHlQb2xpY3k6OnJlbW92ZU9yaWdpbkFj
Y2Vzc1doaXRlbGlzdEVudHJ5KFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKHNvdXJj
ZU9yaWdpbikuZ2V0KCksIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGRlc3RpbmF0aW9uSG9zdCwgYWxs
b3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOworICAgIFNlY3VyaXR5UG9saWN5OjpyZW1vdmVPcmln
aW5BY2Nlc3NBbGxvd2xpc3RFbnRyeShTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhz
b3VyY2VPcmlnaW4pLmdldCgpLCBkZXN0aW5hdGlvblByb3RvY29sLCBkZXN0aW5hdGlvbkhvc3Qs
IGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNz
YWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJlbW92ZU9yaWdpbkFjY2Vzc1do
aXRlbGlzdEVudHJ5IHsgc291cmNlT3JpZ2luLCBkZXN0aW5hdGlvblByb3RvY29sLCBkZXN0aW5h
dGlvbkhvc3QsIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zIH0sIDApOwogfQogCiB2b2lkIElu
amVjdGVkQnVuZGxlOjpyZXNldE9yaWdpbkFjY2Vzc1doaXRlbGlzdHMoKQogewotICAgIFNlY3Vy
aXR5UG9saWN5OjpyZXNldE9yaWdpbkFjY2Vzc1doaXRlbGlzdHMoKTsKKyAgICBTZWN1cml0eVBv
bGljeTo6cmVzZXRPcmlnaW5BY2Nlc3NBbGxvd2xpc3RzKCk7CiAgICAgV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNl
bmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZXNldE9yaWdpbkFj
Y2Vzc1doaXRlbGlzdHMgeyB9LCAwKTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCShyZXZpc2lvbiAyNjI4OTQpCisr
KyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMTIsNyArMjEyLDcgQEAgdm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9ybUlu
aXRpYWxpemVXZWJQcgogICAgIFtOU1VSTENhY2hlIHNldFNoYXJlZFVSTENhY2hlOnVybENhY2hl
LmdldCgpXTsKIAogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBXZWJDb3JlOjpGb250Q2FjaGU6OnNl
dEZvbnRXaGl0ZWxpc3QocGFyYW1ldGVycy5mb250V2hpdGVsaXN0KTsKKyAgICBXZWJDb3JlOjpG
b250Q2FjaGU6OnNldEZvbnRBbGxvd2xpc3QocGFyYW1ldGVycy5mb250V2hpdGVsaXN0KTsKICNl
bmRpZgogCiAgICAgbV9jb21wb3NpdGluZ1JlbmRlclNlcnZlclBvcnQgPSBXVEZNb3ZlKHBhcmFt
ZXRlcnMuYWNjZWxlcmF0ZWRDb21wb3NpdGluZ1BvcnQpOwpJbmRleDogU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0NoYW5nZUxvZwkocmV2aXNpb24gMjYyODk0KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjAtMDYtMTAgIEJl
dGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29tPgorCisgICAgICAgIFJlcGxhY2UgaW5zdGFuY2Vz
IG9mIHdoaXRlbGlzdCBpbiBXZWJDb3JlIHdpdGggYWxsb3dsaXN0CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTMwNjgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAg
ICAgICAgKCtbV2ViVmlldyBfYWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnlXaXRoU291cmNl
T3JpZ2luOmRlc3RpbmF0aW9uUHJvdG9jb2w6ZGVzdGluYXRpb25Ib3N0OmFsbG93RGVzdGluYXRp
b25TdWJkb21haW5zOl0pOgorICAgICAgICAoK1tXZWJWaWV3IF9yZW1vdmVPcmlnaW5BY2Nlc3NX
aGl0ZWxpc3RFbnRyeVdpdGhTb3VyY2VPcmlnaW46ZGVzdGluYXRpb25Qcm90b2NvbDpkZXN0aW5h
dGlvbkhvc3Q6YWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnM6XSk6CisgICAgICAgICgrW1dlYlZp
ZXcgX3Jlc2V0T3JpZ2luQWNjZXNzV2hpdGVsaXN0c10pOgorICAgICAgICAoK1tXZWJWaWV3IF9z
ZXRGb250V2hpdGVsaXN0Ol0pOgorCiAyMDIwLTA2LTEwICBHZW9mZnJleSBHYXJlbiAgPGdnYXJl
bkBhcHBsZS5jb20+CiAKICAgICAgICAgU29tZSBzdHlsZSBpbXByb3ZlbWVudHMgdG8gbWFpbiB0
aHJlYWQgY29kZQpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmll
dy5tbQkocmV2aXNpb24gMjYyODk0KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC00Njk3LDE3ICs0Njk3LDE3IEBAIC0gKE5T
UGFzdGVib2FyZCAqKV9pbnNlcnRpb25QYXN0ZWJvYXJkCiAKICsgKHZvaWQpX2FkZE9yaWdpbkFj
Y2Vzc1doaXRlbGlzdEVudHJ5V2l0aFNvdXJjZU9yaWdpbjooTlNTdHJpbmcgKilzb3VyY2VPcmln
aW4gZGVzdGluYXRpb25Qcm90b2NvbDooTlNTdHJpbmcgKilkZXN0aW5hdGlvblByb3RvY29sIGRl
c3RpbmF0aW9uSG9zdDooTlNTdHJpbmcgKilkZXN0aW5hdGlvbkhvc3QgYWxsb3dEZXN0aW5hdGlv
blN1YmRvbWFpbnM6KEJPT0wpYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMKIHsKLSAgICBXZWJD
b3JlOjpTZWN1cml0eVBvbGljeTo6YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcoc291cmNlT3JpZ2luKS5nZXQoKSwg
ZGVzdGluYXRpb25Qcm90b2NvbCwgZGVzdGluYXRpb25Ib3N0LCBhbGxvd0Rlc3RpbmF0aW9uU3Vi
ZG9tYWlucyk7CisgICAgV2ViQ29yZTo6U2VjdXJpdHlQb2xpY3k6OmFkZE9yaWdpbkFjY2Vzc0Fs
bG93bGlzdEVudHJ5KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKHNv
dXJjZU9yaWdpbikuZ2V0KCksIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGRlc3RpbmF0aW9uSG9zdCwg
YWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOwogfQogCiArICh2b2lkKV9yZW1vdmVPcmlnaW5B
Y2Nlc3NXaGl0ZWxpc3RFbnRyeVdpdGhTb3VyY2VPcmlnaW46KE5TU3RyaW5nICopc291cmNlT3Jp
Z2luIGRlc3RpbmF0aW9uUHJvdG9jb2w6KE5TU3RyaW5nICopZGVzdGluYXRpb25Qcm90b2NvbCBk
ZXN0aW5hdGlvbkhvc3Q6KE5TU3RyaW5nICopZGVzdGluYXRpb25Ib3N0IGFsbG93RGVzdGluYXRp
b25TdWJkb21haW5zOihCT09MKWFsbG93RGVzdGluYXRpb25TdWJkb21haW5zCiB7Ci0gICAgV2Vi
Q29yZTo6U2VjdXJpdHlQb2xpY3k6OnJlbW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKHNvdXJjZU9yaWdpbikuZ2V0
KCksIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGRlc3RpbmF0aW9uSG9zdCwgYWxsb3dEZXN0aW5hdGlv
blN1YmRvbWFpbnMpOworICAgIFdlYkNvcmU6OlNlY3VyaXR5UG9saWN5OjpyZW1vdmVPcmlnaW5B
Y2Nlc3NBbGxvd2xpc3RFbnRyeShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0
cmluZyhzb3VyY2VPcmlnaW4pLmdldCgpLCBkZXN0aW5hdGlvblByb3RvY29sLCBkZXN0aW5hdGlv
bkhvc3QsIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKIH0KIAogKyAodm9pZClfcmVzZXRP
cmlnaW5BY2Nlc3NXaGl0ZWxpc3RzCiB7Ci0gICAgV2ViQ29yZTo6U2VjdXJpdHlQb2xpY3k6OnJl
c2V0T3JpZ2luQWNjZXNzV2hpdGVsaXN0cygpOworICAgIFdlYkNvcmU6OlNlY3VyaXR5UG9saWN5
OjpyZXNldE9yaWdpbkFjY2Vzc0FsbG93bGlzdHMoKTsKIH0KIAogLSAoQk9PTClfaXNWaWV3Vmlz
aWJsZQpAQCAtMTAyMjQsNyArMTAyMjQsNyBAQCArICh2b2lkKV9zZXRGb250V2hpdGVsaXN0OihO
U0FycmF5ICopd2hpCiAjaWYgIVBMQVRGT1JNKE1BQykKICAgICBVTlVTRURfUEFSQU0od2hpdGVs
aXN0KTsKICNlbHNlCi0gICAgV2ViQ29yZTo6Rm9udENhY2hlOjpzZXRGb250V2hpdGVsaXN0KG1h
a2VWZWN0b3I8U3RyaW5nPih3aGl0ZWxpc3QpKTsKKyAgICBXZWJDb3JlOjpGb250Q2FjaGU6OnNl
dEZvbnRBbGxvd2xpc3QobWFrZVZlY3RvcjxTdHJpbmc+KHdoaXRlbGlzdCkpOwogI2VuZGlmCiB9
CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401656</attachid>
            <date>2020-06-11 09:40:11 -0700</date>
            <delta_ts>2020-06-11 10:09:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>for-review-2.txt</filename>
            <type>text/plain</type>
            <size>68513</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2Mjg5NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDk3IEBACisyMDIwLTA2LTEwICBCZXRoIERh
a2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIGluc3RhbmNlcyBvZiB3
aGl0ZWxpc3QgaW4gV2ViQ29yZSB3aXRoIGFsbG93bGlzdAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzMDY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNl
QXV0aG9yaXplci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZUF1dGhvcml6ZXI6OkRh
dGFiYXNlQXV0aG9yaXplcik6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZUF1dGhvcml6ZXI6
OmFkZEFsbG93ZWRGdW5jdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VBdXRob3Jp
emVyOjphbGxvd0Z1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlQXV0aG9yaXpl
cjo6YWRkV2hpdGVsaXN0ZWRGdW5jdGlvbnMpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VBdXRob3JpemVyLmg6CisgICAgICAgICogZG9tL0V4dGVuc2lv
blN0eWxlU2hlZXRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvblN0eWxlU2hlZXRz
Ojp1cGRhdGVJbmplY3RlZFN0eWxlU2hlZXRDYWNoZSBjb25zdCk6CisgICAgICAgICogbG9hZGVy
L0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc09uQWNj
ZXNzQ29udHJvbFNpbXBsZVJlcXVlc3RNZXRob2RBbGxvd2xpc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6aXNTaW1wbGVDcm9zc09yaWdpbkFjY2Vzc1JlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6
aXNPbkFjY2Vzc0NvbnRyb2xTaW1wbGVSZXF1ZXN0TWV0aG9kV2hpdGVsaXN0KTogRGVsZXRlZC4K
KyAgICAgICAgKiBsb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmg6CisgICAgICAgICog
bG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZUl0ZW06OmFsbG93c0Nyb3NzT3Jp
Z2luTWV0aG9kIGNvbnN0KToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlOjpzZXRPbmxpbmVB
bGxvd2xpc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZTo6aXNVUkxJbk9u
bGluZUFsbG93bGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlOjpzZXRP
bmxpbmVXaGl0ZWxpc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25D
YWNoZTo6aXNVUkxJbk9ubGluZVdoaXRlbGlzdCk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0
aW9uQ2FjaGU6Om9ubGluZUFsbG93bGlzdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBs
aWNhdGlvbkNhY2hlOjpvbmxpbmVXaGl0ZWxpc3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAq
IGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hMb2FkaW5nTWFuaWZlc3QpOgor
ICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlSG9zdDo6c2hvdWxkTG9hZFJlc291cmNlRnJv
bUFwcGxpY2F0aW9uQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhv
c3Q6OmdldEFwcGxpY2F0aW9uQ2FjaGVGYWxsYmFja1Jlc291cmNlKToKKyAgICAgICAgKiBsb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmZhbGxiYWNrQ2FjaGVHcm91cEZvclVSTCk6Cisg
ICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6b3BlbkRhdGFiYXNlKToK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bG9hZENhY2hlKToKKyAgICAg
ICAgKiBsb2FkZXIvYXBwY2FjaGUvTWFuaWZlc3RQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6cGFyc2VNYW5pZmVzdCk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL01hbmlmZXN0UGFy
c2VyLmg6CisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZTo6aW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5KToKKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5
T3JpZ2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjYW5SZXF1ZXN0
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjYW5EaXNwbGF5IGNv
bnN0KToKKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5UG9saWN5LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNlY3VyaXR5UG9saWN5Ojppc0FjY2Vzc0FsbG93ZWQpOgorICAgICAgICAoV2ViQ29yZTo6
U2VjdXJpdHlQb2xpY3k6OmFkZE9yaWdpbkFjY2Vzc0FsbG93bGlzdEVudHJ5KToKKyAgICAgICAg
KFdlYkNvcmU6OlNlY3VyaXR5UG9saWN5OjpyZW1vdmVPcmlnaW5BY2Nlc3NBbGxvd2xpc3RFbnRy
eSk6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eVBvbGljeTo6cmVzZXRPcmlnaW5BY2Nlc3NB
bGxvd2xpc3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5UG9saWN5Ojppc0FjY2Vzc1do
aXRlTGlzdGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5UG9saWN5Ojph
ZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpTZWN1cml0eVBvbGljeTo6cmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlQb2xpY3k6OnJlc2V0T3JpZ2luQWNjZXNz
V2hpdGVsaXN0cyk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9TZWN1cml0eVBvbGljeS5oOgor
ICAgICAgICAqIHBhZ2UvVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlVzZXJDb250ZW50VVJMUGF0dGVybjo6bWF0Y2hlc1BhdHRlcm5zKToKKyAgICAgICAgKiBw
YWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5oOgorICAgICAgICAqIHBhZ2UvVXNlclNjcmlwdC5o
OgorICAgICAgICAoV2ViQ29yZTo6VXNlclNjcmlwdDo6VXNlclNjcmlwdCk6CisgICAgICAgIChX
ZWJDb3JlOjpVc2VyU2NyaXB0OjphbGxvd2xpc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
VXNlclNjcmlwdDo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJTY3JpcHQ6
OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpVc2VyU2NyaXB0Ojp3aGl0ZWxpc3QgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAqIHBhZ2UvVXNlclN0eWxlU2hlZXQuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlVzZXJTdHlsZVNoZWV0OjpVc2VyU3R5bGVTaGVldCk6CisgICAgICAgIChXZWJDb3Jl
OjpVc2VyU3R5bGVTaGVldDo6YWxsb3dsaXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlVz
ZXJTdHlsZVNoZWV0Ojp3aGl0ZWxpc3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZvbnRBbGxvd2xp
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpzZXRGb250QWxsb3dsaXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OnBsYXRmb3JtRm9udExvb2t1cFdpdGhGYW1pbHkpOgorICAgICAgICAo
V2ViQ29yZTo6Zm9udFdoaXRlbGlzdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpGb250
Q2FjaGU6OnNldEZvbnRXaGl0ZWxpc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvSFRUUFBhcnNlcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNWYWxpZEFjY2VwdEhl
YWRlclZhbHVlKToKKyAgICAgICAgKiByZW5kZXJpbmcvRmxvYXRpbmdPYmplY3RzLmg6CisgICAg
ICAgICogc3R5bGUvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGU6OkVsZW1lbnRSdWxlQ29sbGVjdG9yOjp0cmFuc2Zlck1hdGNoZWRSdWxlcyk6CisgICAg
ICAgICogc3R5bGUvRWxlbWVudFJ1bGVDb2xsZWN0b3IuaDoKKyAgICAgICAgKiBzdHlsZS9Qcm9w
ZXJ0eUNhc2NhZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlByb3BlcnR5Q2FzY2Fk
ZTo6YWRkTWF0Y2gpOgorICAgICAgICAqIHN0eWxlL1J1bGVEYXRhLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlOjpkZXRlcm1pbmVQcm9wZXJ0eUFsbG93bGlzdFR5cGUpOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGU6OlJ1bGVEYXRhOjpSdWxlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZTo6ZGV0ZXJtaW5lUHJvcGVydHlXaGl0ZWxpc3RUeXBlKTogRGVsZXRlZC4KKyAgICAgICAg
KiBzdHlsZS9SdWxlRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlJ1bGVEYXRhOjpw
cm9wZXJ0eUFsbG93bGlzdFR5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlJ1
bGVEYXRhOjpwcm9wZXJ0eVdoaXRlbGlzdFR5cGUgY29uc3QpOiBEZWxldGVkLgorCiAyMDIwLTA2
LTEwICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXBsYWNlIGlu
c3RhbmNlcyBvZiBibGFja2xpc3QgaW4gV2ViQ29yZSB3aXRoIGJsb2NrbGlzdApJbmRleDogU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUF1dGhvcml6ZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VB
dXRob3JpemVyLmNwcAkocmV2aXNpb24gMjYyODk0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZUF1dGhvcml6ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
Myw3ICs0Myw3IEBAIERhdGFiYXNlQXV0aG9yaXplcjo6RGF0YWJhc2VBdXRob3JpemVyKGMKICAg
ICAsIG1fZGF0YWJhc2VJbmZvVGFibGVOYW1lKGRhdGFiYXNlSW5mb1RhYmxlTmFtZSkKIHsKICAg
ICByZXNldCgpOwotICAgIGFkZFdoaXRlbGlzdGVkRnVuY3Rpb25zKCk7CisgICAgYWRkQWxsb3dl
ZEZ1bmN0aW9ucygpOwogfQogCiB2b2lkIERhdGFiYXNlQXV0aG9yaXplcjo6cmVzZXQoKQpAQCAt
NTgsNjggKzU4LDY4IEBAIHZvaWQgRGF0YWJhc2VBdXRob3JpemVyOjpyZXNldERlbGV0ZXMoKQog
ICAgIG1faGFkRGVsZXRlcyA9IGZhbHNlOwogfQogCi12b2lkIERhdGFiYXNlQXV0aG9yaXplcjo6
YWRkV2hpdGVsaXN0ZWRGdW5jdGlvbnMoKQordm9pZCBEYXRhYmFzZUF1dGhvcml6ZXI6OmFkZEFs
bG93ZWRGdW5jdGlvbnMoKQogewogICAgIC8vIFNRTGl0ZSBmdW5jdGlvbnMgdXNlZCB0byBoZWxw
IGltcGxlbWVudCBzb21lIG9wZXJhdGlvbnMKICAgICAvLyBBTFRFUiBUQUJMRSBoZWxwZXJzCi0g
ICAgbV93aGl0ZWxpc3RlZEZ1bmN0aW9ucy5hZGQoInNxbGl0ZV9yZW5hbWVfdGFibGUiKTsKLSAg
ICBtX3doaXRlbGlzdGVkRnVuY3Rpb25zLmFkZCgic3FsaXRlX3JlbmFtZV90cmlnZ2VyIik7Cisg
ICAgbV9hbGxvd2VkRnVuY3Rpb25zLmFkZCgic3FsaXRlX3JlbmFtZV90YWJsZSIpOworICAgIG1f
YWxsb3dlZEZ1bmN0aW9ucy5hZGQoInNxbGl0ZV9yZW5hbWVfdHJpZ2dlciIpOwogICAgIC8vIEdM
T0IgaGVscGVycwotICAgIG1fd2hpdGVsaXN0ZWRGdW5jdGlvbnMuYWRkKCJnbG9iIik7CisgICAg
bV9hbGxvd2VkRnVuY3Rpb25zLmFkZCgiZ2xvYiIpOwogCiAgICAgLy8gU1FMaXRlIGNvcmUgZnVu
Y3Rpb25zCi0gICAgbV93aGl0ZWxpc3RlZEZ1bmN0aW9ucy5hZGQoImFicyIpOwotICAgIG1fd2hp
dGVsaXN0ZWRGdW5jdGlvbnMuYWRkKCJjaGFuZ2VzIik7Ci0gICAgbV93aGl0ZWxpc3RlZEZ1bmN0
aW9ucy5hZGQoImNvYWxlc2NlIik7Ci0gICAgbV93aGl0ZWxpc3RlZEZ1bmN0aW9ucy5hZGQoImds
b2IiKTsKLSAgICBtX3doaXRlbGlzdGVkRnVuY3Rpb25zLmFkZCgiaWZudWxsIik7Ci0gICAgbV93
aGl0ZWxpc3RlZEZ1bmN0aW9ucy5hZGQoImhleCIpOwotICAgIG1fd2hpdGVsaXN0ZWRGdW5jdGlv
bnMuYWRkKCJsYXN0X2luc2VydF9yb3dpZCIpOwotICAgIG1fd2hpdGVsaXN0ZWRGdW5jdGlvbnMu
YWRkKCJsZW5ndGgiKTsKLSAgICBtX3doaXRlbGlzdGVkRnVuY3Rpb25zLmFkZCgibGlrZSIpOwot
ICAgIG1fd2hpdGVsaXN0ZWRGdW5jdGlvbnMuYWRkKCJsb3dlciIpOwotICAgIG1fd2hpdGVsaXN0
ZWRGdW5jdGlvbnMuYWRkKCJsdHJpbSIpOwotICAgIG1fd2hpdGVsaXN0ZWRGdW5jdGlvbnMuYWRk
KCJtYXgiKTsKLSAgICBtX3doaXRlbGlzdGVkRnVuY3Rpb25zLmFkZCgibWluIik7Ci0gICAgbV93
aGl0ZWxpc3RlZEZ1bmN0aW9ucy5hZGQoIm51bGxpZiIpOwotICAgIG1fd2hpdGVsaXN0ZWRGdW5j
dGlvbnMuYWRkKCJxdW90ZSIpOwotICAgIG1fd2hpdGVsaXN0ZWRGdW5jdGlvbnMuYWRkKCJyZXBs
YWNlIik7Ci0gICAgbV93aGl0ZWxpc3RlZEZ1bmN0aW9ucy5hZGQoInJvdW5kIik7Ci0gICAgbV93
aGl0ZWxpc3RlZEZ1bmN0aW9ucy5hZGQoInJ0cmltIik7Ci0gICAgbV93aGl0ZWxpc3RlZEZ1bmN0
aW9ucy5hZGQoInNvdW5kZXgiKTsKLSAgICBtX3doaXRlbGlzdGVkRnVuY3Rpb25zLmFkZCgic3Fs
aXRlX3NvdXJjZV9pZCIpOwotICAgIG1fd2hpdGVsaXN0ZWRGdW5jdGlvbnMuYWRkKCJzcWxpdGVf
dmVyc2lvbiIpOwotICAgIG1fd2hpdGVsaXN0ZWRGdW5jdGlvbnMuYWRkKCJzdWJzdHIiKTsKLSAg
ICBtX3doaXRlbGlzdGVkRnVuY3Rpb25zLmFkZCgidG90YWxfY2hhbmdlcyIpOwotICAgIG1fd2hp
dGVsaXN0ZWRGdW5jdGlvbnMuYWRkKCJ0cmltIik7Ci0gICAgbV93aGl0ZWxpc3RlZEZ1bmN0aW9u
cy5hZGQoInR5cGVvZiIpOwotICAgIG1fd2hpdGVsaXN0ZWRGdW5jdGlvbnMuYWRkKCJ1cHBlciIp
OwotICAgIG1fd2hpdGVsaXN0ZWRGdW5jdGlvbnMuYWRkKCJ6ZXJvYmxvYiIpOworICAgIG1fYWxs
b3dlZEZ1bmN0aW9ucy5hZGQoImFicyIpOworICAgIG1fYWxsb3dlZEZ1bmN0aW9ucy5hZGQoImNo
YW5nZXMiKTsKKyAgICBtX2FsbG93ZWRGdW5jdGlvbnMuYWRkKCJjb2FsZXNjZSIpOworICAgIG1f
YWxsb3dlZEZ1bmN0aW9ucy5hZGQoImdsb2IiKTsKKyAgICBtX2FsbG93ZWRGdW5jdGlvbnMuYWRk
KCJpZm51bGwiKTsKKyAgICBtX2FsbG93ZWRGdW5jdGlvbnMuYWRkKCJoZXgiKTsKKyAgICBtX2Fs
bG93ZWRGdW5jdGlvbnMuYWRkKCJsYXN0X2luc2VydF9yb3dpZCIpOworICAgIG1fYWxsb3dlZEZ1
bmN0aW9ucy5hZGQoImxlbmd0aCIpOworICAgIG1fYWxsb3dlZEZ1bmN0aW9ucy5hZGQoImxpa2Ui
KTsKKyAgICBtX2FsbG93ZWRGdW5jdGlvbnMuYWRkKCJsb3dlciIpOworICAgIG1fYWxsb3dlZEZ1
bmN0aW9ucy5hZGQoImx0cmltIik7CisgICAgbV9hbGxvd2VkRnVuY3Rpb25zLmFkZCgibWF4Iik7
CisgICAgbV9hbGxvd2VkRnVuY3Rpb25zLmFkZCgibWluIik7CisgICAgbV9hbGxvd2VkRnVuY3Rp
b25zLmFkZCgibnVsbGlmIik7CisgICAgbV9hbGxvd2VkRnVuY3Rpb25zLmFkZCgicXVvdGUiKTsK
KyAgICBtX2FsbG93ZWRGdW5jdGlvbnMuYWRkKCJyZXBsYWNlIik7CisgICAgbV9hbGxvd2VkRnVu
Y3Rpb25zLmFkZCgicm91bmQiKTsKKyAgICBtX2FsbG93ZWRGdW5jdGlvbnMuYWRkKCJydHJpbSIp
OworICAgIG1fYWxsb3dlZEZ1bmN0aW9ucy5hZGQoInNvdW5kZXgiKTsKKyAgICBtX2FsbG93ZWRG
dW5jdGlvbnMuYWRkKCJzcWxpdGVfc291cmNlX2lkIik7CisgICAgbV9hbGxvd2VkRnVuY3Rpb25z
LmFkZCgic3FsaXRlX3ZlcnNpb24iKTsKKyAgICBtX2FsbG93ZWRGdW5jdGlvbnMuYWRkKCJzdWJz
dHIiKTsKKyAgICBtX2FsbG93ZWRGdW5jdGlvbnMuYWRkKCJ0b3RhbF9jaGFuZ2VzIik7CisgICAg
bV9hbGxvd2VkRnVuY3Rpb25zLmFkZCgidHJpbSIpOworICAgIG1fYWxsb3dlZEZ1bmN0aW9ucy5h
ZGQoInR5cGVvZiIpOworICAgIG1fYWxsb3dlZEZ1bmN0aW9ucy5hZGQoInVwcGVyIik7CisgICAg
bV9hbGxvd2VkRnVuY3Rpb25zLmFkZCgiemVyb2Jsb2IiKTsKIAogICAgIC8vIFNRTGl0ZSBkYXRl
IGFuZCB0aW1lIGZ1bmN0aW9ucwotICAgIG1fd2hpdGVsaXN0ZWRGdW5jdGlvbnMuYWRkKCJkYXRl
Iik7Ci0gICAgbV93aGl0ZWxpc3RlZEZ1bmN0aW9ucy5hZGQoInRpbWUiKTsKLSAgICBtX3doaXRl
bGlzdGVkRnVuY3Rpb25zLmFkZCgiZGF0ZXRpbWUiKTsKLSAgICBtX3doaXRlbGlzdGVkRnVuY3Rp
b25zLmFkZCgianVsaWFuZGF5Iik7Ci0gICAgbV93aGl0ZWxpc3RlZEZ1bmN0aW9ucy5hZGQoInN0
cmZ0aW1lIik7CisgICAgbV9hbGxvd2VkRnVuY3Rpb25zLmFkZCgiZGF0ZSIpOworICAgIG1fYWxs
b3dlZEZ1bmN0aW9ucy5hZGQoInRpbWUiKTsKKyAgICBtX2FsbG93ZWRGdW5jdGlvbnMuYWRkKCJk
YXRldGltZSIpOworICAgIG1fYWxsb3dlZEZ1bmN0aW9ucy5hZGQoImp1bGlhbmRheSIpOworICAg
IG1fYWxsb3dlZEZ1bmN0aW9ucy5hZGQoInN0cmZ0aW1lIik7CiAKICAgICAvLyBTUUxpdGUgYWdn
cmVnYXRlIGZ1bmN0aW9ucwogICAgIC8vIG1heCgpIGFuZCBtaW4oKSBhcmUgYWxyZWFkeSBpbiB0
aGUgbGlzdAotICAgIG1fd2hpdGVsaXN0ZWRGdW5jdGlvbnMuYWRkKCJhdmciKTsKLSAgICBtX3do
aXRlbGlzdGVkRnVuY3Rpb25zLmFkZCgiY291bnQiKTsKLSAgICBtX3doaXRlbGlzdGVkRnVuY3Rp
b25zLmFkZCgiZ3JvdXBfY29uY2F0Iik7Ci0gICAgbV93aGl0ZWxpc3RlZEZ1bmN0aW9ucy5hZGQo
InN1bSIpOwotICAgIG1fd2hpdGVsaXN0ZWRGdW5jdGlvbnMuYWRkKCJ0b3RhbCIpOworICAgIG1f
YWxsb3dlZEZ1bmN0aW9ucy5hZGQoImF2ZyIpOworICAgIG1fYWxsb3dlZEZ1bmN0aW9ucy5hZGQo
ImNvdW50Iik7CisgICAgbV9hbGxvd2VkRnVuY3Rpb25zLmFkZCgiZ3JvdXBfY29uY2F0Iik7Cisg
ICAgbV9hbGxvd2VkRnVuY3Rpb25zLmFkZCgic3VtIik7CisgICAgbV9hbGxvd2VkRnVuY3Rpb25z
LmFkZCgidG90YWwiKTsKIAogICAgIC8vIFNRTGl0ZSBGVFMgZnVuY3Rpb25zCi0gICAgbV93aGl0
ZWxpc3RlZEZ1bmN0aW9ucy5hZGQoIm1hdGNoIik7Ci0gICAgbV93aGl0ZWxpc3RlZEZ1bmN0aW9u
cy5hZGQoInNuaXBwZXQiKTsKLSAgICBtX3doaXRlbGlzdGVkRnVuY3Rpb25zLmFkZCgib2Zmc2V0
cyIpOwotICAgIG1fd2hpdGVsaXN0ZWRGdW5jdGlvbnMuYWRkKCJvcHRpbWl6ZSIpOworICAgIG1f
YWxsb3dlZEZ1bmN0aW9ucy5hZGQoIm1hdGNoIik7CisgICAgbV9hbGxvd2VkRnVuY3Rpb25zLmFk
ZCgic25pcHBldCIpOworICAgIG1fYWxsb3dlZEZ1bmN0aW9ucy5hZGQoIm9mZnNldHMiKTsKKyAg
ICBtX2FsbG93ZWRGdW5jdGlvbnMuYWRkKCJvcHRpbWl6ZSIpOwogCiAgICAgLy8gU1FMaXRlIElD
VSBmdW5jdGlvbnMKICAgICAvLyBsaWtlKCksIGxvd2VyKCkgYW5kIHVwcGVyKCkgYXJlIGFscmVh
ZHkgaW4gdGhlIGxpc3QKLSAgICBtX3doaXRlbGlzdGVkRnVuY3Rpb25zLmFkZCgicmVnZXhwIik7
CisgICAgbV9hbGxvd2VkRnVuY3Rpb25zLmFkZCgicmVnZXhwIik7CiB9CiAKIGludCBEYXRhYmFz
ZUF1dGhvcml6ZXI6OmNyZWF0ZVRhYmxlKGNvbnN0IFN0cmluZyYgdGFibGVOYW1lKQpAQCAtMzU5
LDcgKzM1OSw3IEBAIGludCBEYXRhYmFzZUF1dGhvcml6ZXI6OmFsbG93RGV0YWNoKGNvbnMKIAog
aW50IERhdGFiYXNlQXV0aG9yaXplcjo6YWxsb3dGdW5jdGlvbihjb25zdCBTdHJpbmcmIGZ1bmN0
aW9uTmFtZSkKIHsKLSAgICBpZiAobV9zZWN1cml0eUVuYWJsZWQgJiYgIW1fd2hpdGVsaXN0ZWRG
dW5jdGlvbnMuY29udGFpbnMoZnVuY3Rpb25OYW1lKSkKKyAgICBpZiAobV9zZWN1cml0eUVuYWJs
ZWQgJiYgIW1fYWxsb3dlZEZ1bmN0aW9ucy5jb250YWlucyhmdW5jdGlvbk5hbWUpKQogICAgICAg
ICByZXR1cm4gU1FMQXV0aERlbnk7CiAKICAgICByZXR1cm4gU1FMQXV0aEFsbG93OwpJbmRleDog
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUF1dGhvcml6ZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNl
QXV0aG9yaXplci5oCShyZXZpc2lvbiAyNjI4OTQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmRhdGFiYXNlL0RhdGFiYXNlQXV0aG9yaXplci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQs
NyArMTA0LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IERhdGFiYXNlQXV0
aG9yaXplcihjb25zdCBTdHJpbmcmIGRhdGFiYXNlSW5mb1RhYmxlTmFtZSk7Ci0gICAgdm9pZCBh
ZGRXaGl0ZWxpc3RlZEZ1bmN0aW9ucygpOworICAgIHZvaWQgYWRkQWxsb3dlZEZ1bmN0aW9ucygp
OwogICAgIGludCBkZW55QmFzZWRPblRhYmxlTmFtZShjb25zdCBTdHJpbmcmKSBjb25zdDsKICAg
ICBpbnQgdXBkYXRlRGVsZXRlc0Jhc2VkT25UYWJsZU5hbWUoY29uc3QgU3RyaW5nJik7CiAgICAg
Ym9vbCBhbGxvd1dyaXRlKCk7CkBAIC0xMTcsNyArMTE3LDcgQEAgcHJpdmF0ZToKIAogICAgIGNv
bnN0IFN0cmluZyBtX2RhdGFiYXNlSW5mb1RhYmxlTmFtZTsKIAotICAgIEhhc2hTZXQ8U3RyaW5n
LCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IG1fd2hpdGVsaXN0ZWRGdW5jdGlvbnM7CisgICAg
SGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4gbV9hbGxvd2VkRnVuY3Rp
b25zOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUv
ZG9tL0V4dGVuc2lvblN0eWxlU2hlZXRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9kb20vRXh0ZW5zaW9uU3R5bGVTaGVldHMuY3BwCShyZXZpc2lvbiAyNjI4OTQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9kb20vRXh0ZW5zaW9uU3R5bGVTaGVldHMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNDgsNyArMTQ4LDcgQEAgdm9pZCBFeHRlbnNpb25TdHlsZVNoZWV0czo6dXBkYXRlSW5qZWN0
ZQogICAgICAgICBpZiAodXNlclN0eWxlU2hlZXQuaW5qZWN0ZWRGcmFtZXMoKSA9PSBVc2VyQ29u
dGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJblRvcEZyYW1lT25seSAmJiBtX2RvY3VtZW50Lm93
bmVyRWxlbWVudCgpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlmICghVXNlckNv
bnRlbnRVUkxQYXR0ZXJuOjptYXRjaGVzUGF0dGVybnMobV9kb2N1bWVudC51cmwoKSwgdXNlclN0
eWxlU2hlZXQud2hpdGVsaXN0KCksIHVzZXJTdHlsZVNoZWV0LmJsb2NrbGlzdCgpKSkKKyAgICAg
ICAgaWYgKCFVc2VyQ29udGVudFVSTFBhdHRlcm46Om1hdGNoZXNQYXR0ZXJucyhtX2RvY3VtZW50
LnVybCgpLCB1c2VyU3R5bGVTaGVldC5hbGxvd2xpc3QoKSwgdXNlclN0eWxlU2hlZXQuYmxvY2ts
aXN0KCkpKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGFkZFN0eWxlU2hlZXQodXNl
clN0eWxlU2hlZXQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNj
ZXNzQ29udHJvbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3Nz
T3JpZ2luQWNjZXNzQ29udHJvbC5jcHAJKHJldmlzaW9uIDI2Mjg5NCkKKysrIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00NSwxNCArNDUsMTQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1ib29sIGlzT25BY2Nl
c3NDb250cm9sU2ltcGxlUmVxdWVzdE1ldGhvZFdoaXRlbGlzdChjb25zdCBTdHJpbmcmIG1ldGhv
ZCkKK2Jvb2wgaXNPbkFjY2Vzc0NvbnRyb2xTaW1wbGVSZXF1ZXN0TWV0aG9kQWxsb3dsaXN0KGNv
bnN0IFN0cmluZyYgbWV0aG9kKQogewogICAgIHJldHVybiBtZXRob2QgPT0gIkdFVCIgfHwgbWV0
aG9kID09ICJIRUFEIiB8fCBtZXRob2QgPT0gIlBPU1QiOwogfQogCiBib29sIGlzU2ltcGxlQ3Jv
c3NPcmlnaW5BY2Nlc3NSZXF1ZXN0KGNvbnN0IFN0cmluZyYgbWV0aG9kLCBjb25zdCBIVFRQSGVh
ZGVyTWFwJiBoZWFkZXJNYXApCiB7Ci0gICAgaWYgKCFpc09uQWNjZXNzQ29udHJvbFNpbXBsZVJl
cXVlc3RNZXRob2RXaGl0ZWxpc3QobWV0aG9kKSkKKyAgICBpZiAoIWlzT25BY2Nlc3NDb250cm9s
U2ltcGxlUmVxdWVzdE1ldGhvZEFsbG93bGlzdChtZXRob2QpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICBmb3IgKGNvbnN0IGF1dG8mIGhlYWRlciA6IGhlYWRlck1hcCkgewpJbmRleDog
U291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuaAko
cmV2aXNpb24gMjYyODk0KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNj
ZXNzQ29udHJvbC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBAIGNsYXNzIFNlY3Vy
aXR5T3JpZ2luOwogc3RydWN0IFJlc291cmNlTG9hZGVyT3B0aW9uczsKIAogV0VCQ09SRV9FWFBP
UlQgYm9vbCBpc1NpbXBsZUNyb3NzT3JpZ2luQWNjZXNzUmVxdWVzdChjb25zdCBTdHJpbmcmIG1l
dGhvZCwgY29uc3QgSFRUUEhlYWRlck1hcCYpOwotYm9vbCBpc09uQWNjZXNzQ29udHJvbFNpbXBs
ZVJlcXVlc3RNZXRob2RXaGl0ZWxpc3QoY29uc3QgU3RyaW5nJik7Citib29sIGlzT25BY2Nlc3ND
b250cm9sU2ltcGxlUmVxdWVzdE1ldGhvZEFsbG93bGlzdChjb25zdCBTdHJpbmcmKTsKIAogdm9p
ZCB1cGRhdGVSZXF1ZXN0UmVmZXJyZXIoUmVzb3VyY2VSZXF1ZXN0JiwgUmVmZXJyZXJQb2xpY3ks
IGNvbnN0IFN0cmluZyYpOwogICAgIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3Nz
T3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmNwcAkocmV2aXNpb24g
MjYyODk0KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0UmVz
dWx0Q2FjaGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NCw3ICs4NCw3IEBAIE9wdGlvbmFsPFN0
cmluZz4gQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXMKIAogYm9vbCBDcm9zc09yaWdpblByZWZsaWdo
dFJlc3VsdENhY2hlSXRlbTo6YWxsb3dzQ3Jvc3NPcmlnaW5NZXRob2QoY29uc3QgU3RyaW5nJiBt
ZXRob2QsIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5KSBj
b25zdAogewotICAgIHJldHVybiBtX21ldGhvZHMuY29udGFpbnMobWV0aG9kKSB8fCAobV9tZXRo
b2RzLmNvbnRhaW5zKCIqIikgJiYgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgIT0gU3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3k6OlVzZSkgfHwgaXNPbkFjY2Vzc0NvbnRyb2xTaW1wbGVSZXF1ZXN0TWV0
aG9kV2hpdGVsaXN0KG1ldGhvZCk7CisgICAgcmV0dXJuIG1fbWV0aG9kcy5jb250YWlucyhtZXRo
b2QpIHx8IChtX21ldGhvZHMuY29udGFpbnMoIioiKSAmJiBzdG9yZWRDcmVkZW50aWFsc1BvbGlj
eSAhPSBTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6VXNlKSB8fCBpc09uQWNjZXNzQ29udHJvbFNp
bXBsZVJlcXVlc3RNZXRob2RBbGxvd2xpc3QobWV0aG9kKTsKIH0KIAogT3B0aW9uYWw8U3RyaW5n
PiBDcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlSXRlbTo6dmFsaWRhdGVDcm9zc09yaWdp
bkhlYWRlcnMoY29uc3QgSFRUUEhlYWRlck1hcCYgcmVxdWVzdEhlYWRlcnMsIFN0b3JlZENyZWRl
bnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5KSBjb25zdApJbmRleDogU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlLmNwcAko
cmV2aXNpb24gMjYyODk0KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjQsMTYgKzEyNCwxNiBAQCBBcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2UqIEFwcGxpY2F0aW9uQ2FjCiAgICAgcmV0dXJuIHJlc291cmNl
Rm9yVVJMKHVybC5zdHJpbmcoKSk7CiB9CiAKLXZvaWQgQXBwbGljYXRpb25DYWNoZTo6c2V0T25s
aW5lV2hpdGVsaXN0KGNvbnN0IFZlY3RvcjxVUkw+JiBvbmxpbmVXaGl0ZWxpc3QpCit2b2lkIEFw
cGxpY2F0aW9uQ2FjaGU6OnNldE9ubGluZUFsbG93bGlzdChjb25zdCBWZWN0b3I8VVJMPiYgb25s
aW5lQWxsb3dsaXN0KQogewotICAgIEFTU0VSVChtX29ubGluZVdoaXRlbGlzdC5pc0VtcHR5KCkp
OwotICAgIG1fb25saW5lV2hpdGVsaXN0ID0gb25saW5lV2hpdGVsaXN0OyAKKyAgICBBU1NFUlQo
bV9vbmxpbmVBbGxvd2xpc3QuaXNFbXB0eSgpKTsKKyAgICBtX29ubGluZUFsbG93bGlzdCA9IG9u
bGluZUFsbG93bGlzdDsKIH0KIAotYm9vbCBBcHBsaWNhdGlvbkNhY2hlOjppc1VSTEluT25saW5l
V2hpdGVsaXN0KGNvbnN0IFVSTCYgdXJsKQorYm9vbCBBcHBsaWNhdGlvbkNhY2hlOjppc1VSTElu
T25saW5lQWxsb3dsaXN0KGNvbnN0IFVSTCYgdXJsKQogewotICAgIGZvciAoYXV0byYgd2hpdGVs
aXN0VVJMIDogbV9vbmxpbmVXaGl0ZWxpc3QpIHsKLSAgICAgICAgaWYgKHByb3RvY29sSG9zdEFu
ZFBvcnRBcmVFcXVhbCh1cmwsIHdoaXRlbGlzdFVSTCkgJiYgdXJsLnN0cmluZygpLnN0YXJ0c1dp
dGgod2hpdGVsaXN0VVJMLnN0cmluZygpKSkKKyAgICBmb3IgKGF1dG8mIGFsbG93bGlzdFVSTCA6
IG1fb25saW5lQWxsb3dsaXN0KSB7CisgICAgICAgIGlmIChwcm90b2NvbEhvc3RBbmRQb3J0QXJl
RXF1YWwodXJsLCBhbGxvd2xpc3RVUkwpICYmIHVybC5zdHJpbmcoKS5zdGFydHNXaXRoKGFsbG93
bGlzdFVSTC5zdHJpbmcoKSkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAg
cmV0dXJuIGZhbHNlOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZS5oCShyZXZpc2lvbiAyNjI4OTQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01
OCw5ICs1OCw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0QWxsb3dzQWxsTmV0d29ya1JlcXVl
c3RzKGJvb2wgdmFsdWUpIHsgbV9hbGxvd0FsbE5ldHdvcmtSZXF1ZXN0cyA9IHZhbHVlOyB9CiAg
ICAgYm9vbCBhbGxvd3NBbGxOZXR3b3JrUmVxdWVzdHMoKSBjb25zdCB7IHJldHVybiBtX2FsbG93
QWxsTmV0d29ya1JlcXVlc3RzOyB9Ci0gICAgdm9pZCBzZXRPbmxpbmVXaGl0ZWxpc3QoY29uc3Qg
VmVjdG9yPFVSTD4mIG9ubGluZVdoaXRlbGlzdCk7Ci0gICAgY29uc3QgVmVjdG9yPFVSTD4mIG9u
bGluZVdoaXRlbGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1fb25saW5lV2hpdGVsaXN0OyB9Ci0gICAg
Ym9vbCBpc1VSTEluT25saW5lV2hpdGVsaXN0KGNvbnN0IFVSTCYpOyAvLyBUaGVyZSBpcyBhbiBl
bnRyeSBpbiBvbmxpbmUgd2hpdGVsaXN0IHRoYXQgaGFzIHRoZSBzYW1lIG9yaWdpbiBhcyB0aGUg
cmVzb3VyY2UncyBVUkwgYW5kIHRoYXQgaXMgYSBwcmVmaXggbWF0Y2ggZm9yIHRoZSByZXNvdXJj
ZSdzIFVSTC4KKyAgICB2b2lkIHNldE9ubGluZUFsbG93bGlzdChjb25zdCBWZWN0b3I8VVJMPiYp
OworICAgIGNvbnN0IFZlY3RvcjxVUkw+JiBvbmxpbmVBbGxvd2xpc3QoKSBjb25zdCB7IHJldHVy
biBtX29ubGluZUFsbG93bGlzdDsgfQorICAgIGJvb2wgaXNVUkxJbk9ubGluZUFsbG93bGlzdChj
b25zdCBVUkwmKTsgLy8gVGhlcmUgaXMgYW4gZW50cnkgaW4gb25saW5lIGFsbG93bGlzdCB0aGF0
IGhhcyB0aGUgc2FtZSBvcmlnaW4gYXMgdGhlIHJlc291cmNlJ3MgVVJMIGFuZCB0aGF0IGlzIGEg
cHJlZml4IG1hdGNoIGZvciB0aGUgcmVzb3VyY2UncyBVUkwuCiAKICAgICB2b2lkIHNldEZhbGxi
YWNrVVJMcyhjb25zdCBGYWxsYmFja1VSTFZlY3RvciYpOwogICAgIGNvbnN0IEZhbGxiYWNrVVJM
VmVjdG9yJiBmYWxsYmFja1VSTHMoKSBjb25zdCB7IHJldHVybiBtX2ZhbGxiYWNrVVJMczsgfQpA
QCAtODksNyArODksNyBAQCBwcml2YXRlOgogICAgIFdlYWtQdHI8QXBwbGljYXRpb25DYWNoZVJl
c291cmNlPiBtX21hbmlmZXN0OwogCiAgICAgYm9vbCBtX2FsbG93QWxsTmV0d29ya1JlcXVlc3Rz
IHsgZmFsc2UgfTsKLSAgICBWZWN0b3I8VVJMPiBtX29ubGluZVdoaXRlbGlzdDsKKyAgICBWZWN0
b3I8VVJMPiBtX29ubGluZUFsbG93bGlzdDsKICAgICBGYWxsYmFja1VSTFZlY3RvciBtX2ZhbGxi
YWNrVVJMczsKIAogICAgIC8vIFRoZSB0b3RhbCBzaXplIG9mIHRoZSByZXNvdXJjZXMgYmVsb25n
aW5nIHRvIHRoaXMgQXBwbGljYXRpb24gQ2FjaGUgaW5zdGFuY2UuCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3Vw
LmNwcAkocmV2aXNpb24gMjYyODk0KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0MSw3ICs2NDEs
NyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hCiAgICAgZm9yIChh
dXRvJiBmYWxsYmFja1VSTCA6IG1hbmlmZXN0LmZhbGxiYWNrVVJMcykKICAgICAgICAgYWRkRW50
cnkoZmFsbGJhY2tVUkwuc2Vjb25kLnN0cmluZygpLCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6
OkZhbGxiYWNrKTsKICAgICAKLSAgICBtX2NhY2hlQmVpbmdVcGRhdGVkLT5zZXRPbmxpbmVXaGl0
ZWxpc3QobWFuaWZlc3Qub25saW5lV2hpdGVsaXN0ZWRVUkxzKTsKKyAgICBtX2NhY2hlQmVpbmdV
cGRhdGVkLT5zZXRPbmxpbmVBbGxvd2xpc3QobWFuaWZlc3Qub25saW5lQWxsb3dlZFVSTHMpOwog
ICAgIG1fY2FjaGVCZWluZ1VwZGF0ZWQtPnNldEZhbGxiYWNrVVJMcyhtYW5pZmVzdC5mYWxsYmFj
a1VSTHMpOwogICAgIG1fY2FjaGVCZWluZ1VwZGF0ZWQtPnNldEFsbG93c0FsbE5ldHdvcmtSZXF1
ZXN0cyhtYW5pZmVzdC5hbGxvd0FsbE5ldHdvcmtSZXF1ZXN0cyk7CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0
LmNwcAkocmV2aXNpb24gMjYyODk0KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMwLDkgKzQzMCw5
IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZUhvc3Q6OnNob3VsZExvYWRSZXMKICAgICAvLyBpbiB0
aGUgYXBwbGljYXRpb24gY2FjaGUsIHRoZW4gZ2V0IHRoZSByZXNvdXJjZSBmcm9tIHRoZSBjYWNo
ZSAoaW5zdGVhZCBvZiBmZXRjaGluZyBpdCkuCiAgICAgcmVzb3VyY2UgPSBjYWNoZS0+cmVzb3Vy
Y2VGb3JVUkwocmVxdWVzdC51cmwoKS5zdHJpbmcoKSk7CiAKLSAgICAvLyBSZXNvdXJjZXMgdGhh
dCBtYXRjaCBmYWxsYmFjayBuYW1lc3BhY2VzIG9yIG9ubGluZSB3aGl0ZWxpc3QgZW50cmllcyBh
cmUgZmV0Y2hlZCBmcm9tIHRoZSBuZXR3b3JrLAorICAgIC8vIFJlc291cmNlcyB0aGF0IG1hdGNo
IGZhbGxiYWNrIG5hbWVzcGFjZXMgb3Igb25saW5lIGFsbG93bGlzdCBlbnRyaWVzIGFyZSBmZXRj
aGVkIGZyb20gdGhlIG5ldHdvcmssCiAgICAgLy8gdW5sZXNzIHRoZXkgYXJlIGFsc28gY2FjaGVk
LgotICAgIGlmICghcmVzb3VyY2UgJiYgKGNhY2hlLT5hbGxvd3NBbGxOZXR3b3JrUmVxdWVzdHMo
KSB8fCBjYWNoZS0+dXJsTWF0Y2hlc0ZhbGxiYWNrTmFtZXNwYWNlKHJlcXVlc3QudXJsKCkpIHx8
IGNhY2hlLT5pc1VSTEluT25saW5lV2hpdGVsaXN0KHJlcXVlc3QudXJsKCkpKSkKKyAgICBpZiAo
IXJlc291cmNlICYmIChjYWNoZS0+YWxsb3dzQWxsTmV0d29ya1JlcXVlc3RzKCkgfHwgY2FjaGUt
PnVybE1hdGNoZXNGYWxsYmFja05hbWVzcGFjZShyZXF1ZXN0LnVybCgpKSB8fCBjYWNoZS0+aXNV
UkxJbk9ubGluZUFsbG93bGlzdChyZXF1ZXN0LnVybCgpKSkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIC8vIFJlc291cmNlcyB0aGF0IGFyZSBub3QgcHJlc2VudCBpbiB0aGUgbWFuaWZl
c3Qgd2lsbCBhbHdheXMgZmFpbCB0byBsb2FkIChhdCBsZWFzdCwgYWZ0ZXIgdGhlCkBAIC00NTUs
NyArNDU1LDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6Z2V0QXBwbGljYXRpbwogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBVUkwgZmFsbGJhY2tVUkw7Ci0gICAgaWYgKGNhY2hl
LT5pc1VSTEluT25saW5lV2hpdGVsaXN0KHJlcXVlc3QudXJsKCkpKQorICAgIGlmIChjYWNoZS0+
aXNVUkxJbk9ubGluZUFsbG93bGlzdChyZXF1ZXN0LnVybCgpKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIGlmICghY2FjaGUtPnVybE1hdGNoZXNGYWxsYmFja05hbWVzcGFjZShyZXF1ZXN0
LnVybCgpLCAmZmFsbGJhY2tVUkwpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZS5jcHAJKHJldmlzaW9uIDI2Mjg5NCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI2NSw3ICsyNjUsNyBAQCBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIEFwcGxpY2F0aW9uQ2FjaGVT
CiAKICAgICAgICAgaWYgKEFwcGxpY2F0aW9uQ2FjaGUqIGNhY2hlID0gZ3JvdXAtPm5ld2VzdENh
Y2hlKCkpIHsKICAgICAgICAgICAgIFVSTCBmYWxsYmFja1VSTDsKLSAgICAgICAgICAgIGlmIChj
YWNoZS0+aXNVUkxJbk9ubGluZVdoaXRlbGlzdCh1cmwpKQorICAgICAgICAgICAgaWYgKGNhY2hl
LT5pc1VSTEluT25saW5lQWxsb3dsaXN0KHVybCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgICAgICBpZiAoIWNhY2hlLT51cmxNYXRjaGVzRmFsbGJhY2tOYW1lc3BhY2UodXJs
LCAmZmFsbGJhY2tVUkwpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMzAwLDcgKzMw
MCw3IEBAIEFwcGxpY2F0aW9uQ2FjaGVHcm91cCogQXBwbGljYXRpb25DYWNoZVMKICAgICAgICAg
YXV0byBjYWNoZSA9IGxvYWRDYWNoZShuZXdlc3RDYWNoZUlEKTsKIAogICAgICAgICBVUkwgZmFs
bGJhY2tVUkw7Ci0gICAgICAgIGlmIChjYWNoZS0+aXNVUkxJbk9ubGluZVdoaXRlbGlzdCh1cmwp
KQorICAgICAgICBpZiAoY2FjaGUtPmlzVVJMSW5PbmxpbmVBbGxvd2xpc3QodXJsKSkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICBpZiAoIWNhY2hlLT51cmxNYXRjaGVzRmFsbGJhY2tO
YW1lc3BhY2UodXJsLCAmZmFsbGJhY2tVUkwpKQogICAgICAgICAgICAgY29udGludWU7CkBAIC02
MDUsNyArNjA1LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6b3BlbkRhdGFiYQog
ICAgIGV4ZWN1dGVTUUxDb21tYW5kKCJDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBDYWNoZUdy
b3VwcyAoaWQgSU5URUdFUiBQUklNQVJZIEtFWSBBVVRPSU5DUkVNRU5ULCAiCiAgICAgICAgICAg
ICAgICAgICAgICAgIm1hbmlmZXN0SG9zdEhhc2ggSU5URUdFUiBOT1QgTlVMTCBPTiBDT05GTElD
VCBGQUlMLCBtYW5pZmVzdFVSTCBURVhUIFVOSVFVRSBPTiBDT05GTElDVCBGQUlMLCBuZXdlc3RD
YWNoZSBJTlRFR0VSLCBvcmlnaW4gVEVYVCkiKTsKICAgICBleGVjdXRlU1FMQ29tbWFuZCgiQ1JF
QVRFIFRBQkxFIElGIE5PVCBFWElTVFMgQ2FjaGVzIChpZCBJTlRFR0VSIFBSSU1BUlkgS0VZIEFV
VE9JTkNSRU1FTlQsIGNhY2hlR3JvdXAgSU5URUdFUiwgc2l6ZSBJTlRFR0VSKSIpOwotICAgIGV4
ZWN1dGVTUUxDb21tYW5kKCJDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBDYWNoZVdoaXRlbGlz
dFVSTHMgKHVybCBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsIGNhY2hlIElOVEVHRVIg
Tk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCkiKTsKKyAgICBleGVjdXRlU1FMQ29tbWFuZCgiQ1JF
QVRFIFRBQkxFIElGIE5PVCBFWElTVFMgQ2FjaGVBbGxvd2xpc3RVUkxzICh1cmwgVEVYVCBOT1Qg
TlVMTCBPTiBDT05GTElDVCBGQUlMLCBjYWNoZSBJTlRFR0VSIE5PVCBOVUxMIE9OIENPTkZMSUNU
IEZBSUwpIik7CiAgICAgZXhlY3V0ZVNRTENvbW1hbmQoIkNSRUFURSBUQUJMRSBJRiBOT1QgRVhJ
U1RTIENhY2hlQWxsb3dzQWxsTmV0d29ya1JlcXVlc3RzICh3aWxkY2FyZCBJTlRFR0VSIE5PVCBO
VUxMIE9OIENPTkZMSUNUIEZBSUwsIGNhY2hlIElOVEVHRVIgTk9UIE5VTEwgT04gQ09ORkxJQ1Qg
RkFJTCkiKTsKICAgICBleGVjdXRlU1FMQ29tbWFuZCgiQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElT
VFMgRmFsbGJhY2tVUkxzIChuYW1lc3BhY2UgVEVYVCBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlM
LCBmYWxsYmFja1VSTCBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsICIKICAgICAgICAg
ICAgICAgICAgICAgICAiY2FjaGUgSU5URUdFUiBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMKSIp
OwpAQCAtNjE2LDExICs2MTYsMTEgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6b3Bl
bkRhdGFiYQogICAgIGV4ZWN1dGVTUUxDb21tYW5kKCJDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNU
UyBEZWxldGVkQ2FjaGVSZXNvdXJjZXMgKGlkIElOVEVHRVIgUFJJTUFSWSBLRVkgQVVUT0lOQ1JF
TUVOVCwgcGF0aCBURVhUKSIpOwogICAgIGV4ZWN1dGVTUUxDb21tYW5kKCJDUkVBVEUgVEFCTEUg
SUYgTk9UIEVYSVNUUyBPcmlnaW5zIChvcmlnaW4gVEVYVCBVTklRVUUgT04gQ09ORkxJQ1QgSUdO
T1JFLCBxdW90YSBJTlRFR0VSIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwpIik7CiAKLSAgICAv
LyBXaGVuIGEgY2FjaGUgaXMgZGVsZXRlZCwgYWxsIGl0cyBlbnRyaWVzIGFuZCBpdHMgd2hpdGVs
aXN0IHNob3VsZCBiZSBkZWxldGVkLgorICAgIC8vIFdoZW4gYSBjYWNoZSBpcyBkZWxldGVkLCBh
bGwgaXRzIGVudHJpZXMgYW5kIGl0cyBhbGxvd2xpc3Qgc2hvdWxkIGJlIGRlbGV0ZWQuCiAgICAg
ZXhlY3V0ZVNRTENvbW1hbmQoIkNSRUFURSBUUklHR0VSIElGIE5PVCBFWElTVFMgQ2FjaGVEZWxl
dGVkIEFGVEVSIERFTEVURSBPTiBDYWNoZXMiCiAgICAgICAgICAgICAgICAgICAgICAgIiBGT1Ig
RUFDSCBST1cgQkVHSU4iCiAgICAgICAgICAgICAgICAgICAgICAgIiAgREVMRVRFIEZST00gQ2Fj
aGVFbnRyaWVzIFdIRVJFIGNhY2hlID0gT0xELmlkOyIKLSAgICAgICAgICAgICAgICAgICAgICAi
ICBERUxFVEUgRlJPTSBDYWNoZVdoaXRlbGlzdFVSTHMgV0hFUkUgY2FjaGUgPSBPTEQuaWQ7Igor
ICAgICAgICAgICAgICAgICAgICAgICIgIERFTEVURSBGUk9NIENhY2hlQWxsb3dsaXN0VVJMcyBX
SEVSRSBjYWNoZSA9IE9MRC5pZDsiCiAgICAgICAgICAgICAgICAgICAgICAgIiAgREVMRVRFIEZS
T00gQ2FjaGVBbGxvd3NBbGxOZXR3b3JrUmVxdWVzdHMgV0hFUkUgY2FjaGUgPSBPTEQuaWQ7Igog
ICAgICAgICAgICAgICAgICAgICAgICIgIERFTEVURSBGUk9NIEZhbGxiYWNrVVJMcyBXSEVSRSBj
YWNoZSA9IE9MRC5pZDsiCiAgICAgICAgICAgICAgICAgICAgICAgIiBFTkQiKTsKQEAgLTcyMSwx
NCArNzIxLDE0IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKEFwcGwKICAg
ICAgICAgc3RvcmFnZUlESm91cm5hbC0+YWRkKHJlc291cmNlLmdldCgpLCBvbGRTdG9yYWdlSUQp
OwogICAgIH0KICAgICAKLSAgICAvLyBTdG9yZSB0aGUgb25saW5lIHdoaXRlbGlzdAotICAgIGNv
bnN0IFZlY3RvcjxVUkw+JiBvbmxpbmVXaGl0ZWxpc3QgPSBjYWNoZS0+b25saW5lV2hpdGVsaXN0
KCk7CisgICAgLy8gU3RvcmUgdGhlIG9ubGluZSBhbGxvd2xpc3QKKyAgICBjb25zdCBWZWN0b3I8
VVJMPiYgb25saW5lQWxsb3dsaXN0ID0gY2FjaGUtPm9ubGluZUFsbG93bGlzdCgpOwogICAgIHsK
LSAgICAgICAgZm9yIChhdXRvJiB3aGl0ZWxpc3RVUkwgOiBvbmxpbmVXaGl0ZWxpc3QpIHsKLSAg
ICAgICAgICAgIFNRTGl0ZVN0YXRlbWVudCBzdGF0ZW1lbnQobV9kYXRhYmFzZSwgIklOU0VSVCBJ
TlRPIENhY2hlV2hpdGVsaXN0VVJMcyAodXJsLCBjYWNoZSkgVkFMVUVTICg/LCA/KSIpOworICAg
ICAgICBmb3IgKGF1dG8mIGFsbG93bGlzdFVSTCA6IG9ubGluZUFsbG93bGlzdCkgeworICAgICAg
ICAgICAgU1FMaXRlU3RhdGVtZW50IHN0YXRlbWVudChtX2RhdGFiYXNlLCAiSU5TRVJUIElOVE8g
Q2FjaGVBbGxvd2xpc3RVUkxzICh1cmwsIGNhY2hlKSBWQUxVRVMgKD8sID8pIik7CiAgICAgICAg
ICAgICBzdGF0ZW1lbnQucHJlcGFyZSgpOwogCi0gICAgICAgICAgICBzdGF0ZW1lbnQuYmluZFRl
eHQoMSwgd2hpdGVsaXN0VVJMLnN0cmluZygpKTsKKyAgICAgICAgICAgIHN0YXRlbWVudC5iaW5k
VGV4dCgxLCBhbGxvd2xpc3RVUkwuc3RyaW5nKCkpOwogICAgICAgICAgICAgc3RhdGVtZW50LmJp
bmRJbnQ2NCgyLCBjYWNoZVN0b3JhZ2VJRCk7CiAKICAgICAgICAgICAgIGlmICghZXhlY3V0ZVN0
YXRlbWVudChzdGF0ZW1lbnQpKQpAQCAtNzM2LDcgKzczNiw3IEBAIGJvb2wgQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2U6OnN0b3JlKEFwcGwKICAgICAgICAgfQogICAgIH0KIAotICAgIC8vIFN0b3Jl
IG9ubGluZSB3aGl0ZWxpc3Qgd2lsZGNhcmQgZmxhZy4KKyAgICAvLyBTdG9yZSBvbmxpbmUgYWxs
b3dsaXN0IHdpbGRjYXJkIGZsYWcuCiAgICAgewogICAgICAgICBTUUxpdGVTdGF0ZW1lbnQgc3Rh
dGVtZW50KG1fZGF0YWJhc2UsICJJTlNFUlQgSU5UTyBDYWNoZUFsbG93c0FsbE5ldHdvcmtSZXF1
ZXN0cyAod2lsZGNhcmQsIGNhY2hlKSBWQUxVRVMgKD8sID8pIik7CiAgICAgICAgIHN0YXRlbWVu
dC5wcmVwYXJlKCk7CkBAIC0xMTU0LDM1ICsxMTU0LDM1IEBAIFJlZlB0cjxBcHBsaWNhdGlvbkNh
Y2hlPiBBcHBsaWNhdGlvbkNhY2gKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0g
ICAgLy8gTG9hZCB0aGUgb25saW5lIHdoaXRlbGlzdAotICAgIFNRTGl0ZVN0YXRlbWVudCB3aGl0
ZWxpc3RTdGF0ZW1lbnQobV9kYXRhYmFzZSwgIlNFTEVDVCB1cmwgRlJPTSBDYWNoZVdoaXRlbGlz
dFVSTHMgV0hFUkUgY2FjaGU9PyIpOwotICAgIGlmICh3aGl0ZWxpc3RTdGF0ZW1lbnQucHJlcGFy
ZSgpICE9IFNRTElURV9PSykKKyAgICAvLyBMb2FkIHRoZSBvbmxpbmUgYWxsb3dsaXN0CisgICAg
U1FMaXRlU3RhdGVtZW50IGFsbG93bGlzdFN0YXRlbWVudChtX2RhdGFiYXNlLCAiU0VMRUNUIHVy
bCBGUk9NIENhY2hlQWxsb3dsaXN0VVJMcyBXSEVSRSBjYWNoZT0/Iik7CisgICAgaWYgKGFsbG93
bGlzdFN0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLSAgICB3aGl0ZWxpc3RTdGF0ZW1lbnQuYmluZEludDY0KDEsIHN0b3JhZ2VJRCk7Cisg
ICAgYWxsb3dsaXN0U3RhdGVtZW50LmJpbmRJbnQ2NCgxLCBzdG9yYWdlSUQpOwogICAgIAotICAg
IFZlY3RvcjxVUkw+IHdoaXRlbGlzdDsKLSAgICB3aGlsZSAoKHJlc3VsdCA9IHdoaXRlbGlzdFN0
YXRlbWVudC5zdGVwKCkpID09IFNRTElURV9ST1cpIAotICAgICAgICB3aGl0ZWxpc3QuYXBwZW5k
KFVSTCh7IH0sIHdoaXRlbGlzdFN0YXRlbWVudC5nZXRDb2x1bW5UZXh0KDApKSk7CisgICAgVmVj
dG9yPFVSTD4gYWxsb3dsaXN0OworICAgIHdoaWxlICgocmVzdWx0ID0gYWxsb3dsaXN0U3RhdGVt
ZW50LnN0ZXAoKSkgPT0gU1FMSVRFX1JPVykKKyAgICAgICAgYWxsb3dsaXN0LmFwcGVuZChVUkwo
eyB9LCBhbGxvd2xpc3RTdGF0ZW1lbnQuZ2V0Q29sdW1uVGV4dCgwKSkpOwogCiAgICAgaWYgKHJl
c3VsdCAhPSBTUUxJVEVfRE9ORSkKLSAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgbG9hZCBj
YWNoZSBvbmxpbmUgd2hpdGVsaXN0LCBlcnJvciBcIiVzXCIiLCBtX2RhdGFiYXNlLmxhc3RFcnJv
ck1zZygpKTsKKyAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgbG9hZCBjYWNoZSBvbmxpbmUg
YWxsb3dsaXN0LCBlcnJvciBcIiVzXCIiLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKIAot
ICAgIGNhY2hlLT5zZXRPbmxpbmVXaGl0ZWxpc3Qod2hpdGVsaXN0KTsKKyAgICBjYWNoZS0+c2V0
T25saW5lQWxsb3dsaXN0KGFsbG93bGlzdCk7CiAKLSAgICAvLyBMb2FkIG9ubGluZSB3aGl0ZWxp
c3Qgd2lsZGNhcmQgZmxhZy4KLSAgICBTUUxpdGVTdGF0ZW1lbnQgd2hpdGVsaXN0V2lsZGNhcmRT
dGF0ZW1lbnQobV9kYXRhYmFzZSwgIlNFTEVDVCB3aWxkY2FyZCBGUk9NIENhY2hlQWxsb3dzQWxs
TmV0d29ya1JlcXVlc3RzIFdIRVJFIGNhY2hlPT8iKTsKLSAgICBpZiAod2hpdGVsaXN0V2lsZGNh
cmRTdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTElURV9PSykKKyAgICAvLyBMb2FkIG9ubGluZSBh
bGxvd2xpc3Qgd2lsZGNhcmQgZmxhZy4KKyAgICBTUUxpdGVTdGF0ZW1lbnQgYWxsb3dsaXN0V2ls
ZGNhcmRTdGF0ZW1lbnQobV9kYXRhYmFzZSwgIlNFTEVDVCB3aWxkY2FyZCBGUk9NIENhY2hlQWxs
b3dzQWxsTmV0d29ya1JlcXVlc3RzIFdIRVJFIGNhY2hlPT8iKTsKKyAgICBpZiAoYWxsb3dsaXN0
V2lsZGNhcmRTdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTElURV9PSykKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgd2hpdGVsaXN0V2lsZGNhcmRTdGF0ZW1lbnQuYmluZEludDY0KDEsIHN0
b3JhZ2VJRCk7CisgICAgYWxsb3dsaXN0V2lsZGNhcmRTdGF0ZW1lbnQuYmluZEludDY0KDEsIHN0
b3JhZ2VJRCk7CiAgICAgCi0gICAgcmVzdWx0ID0gd2hpdGVsaXN0V2lsZGNhcmRTdGF0ZW1lbnQu
c3RlcCgpOworICAgIHJlc3VsdCA9IGFsbG93bGlzdFdpbGRjYXJkU3RhdGVtZW50LnN0ZXAoKTsK
ICAgICBpZiAocmVzdWx0ICE9IFNRTElURV9ST1cpCi0gICAgICAgIExPR19FUlJPUigiQ291bGQg
bm90IGxvYWQgY2FjaGUgb25saW5lIHdoaXRlbGlzdCB3aWxkY2FyZCBmbGFnLCBlcnJvciBcIiVz
XCIiLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgTE9HX0VSUk9SKCJDb3Vs
ZCBub3QgbG9hZCBjYWNoZSBvbmxpbmUgYWxsb3dsaXN0IHdpbGRjYXJkIGZsYWcsIGVycm9yIFwi
JXNcIiIsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogCi0gICAgY2FjaGUtPnNldEFsbG93
c0FsbE5ldHdvcmtSZXF1ZXN0cyh3aGl0ZWxpc3RXaWxkY2FyZFN0YXRlbWVudC5nZXRDb2x1bW5J
bnQ2NCgwKSk7CisgICAgY2FjaGUtPnNldEFsbG93c0FsbE5ldHdvcmtSZXF1ZXN0cyhhbGxvd2xp
c3RXaWxkY2FyZFN0YXRlbWVudC5nZXRDb2x1bW5JbnQ2NCgwKSk7CiAKLSAgICBpZiAod2hpdGVs
aXN0V2lsZGNhcmRTdGF0ZW1lbnQuc3RlcCgpICE9IFNRTElURV9ET05FKQotICAgICAgICBMT0df
RVJST1IoIlRvbyBtYW55IHJvd3MgZm9yIG9ubGluZSB3aGl0ZWxpc3Qgd2lsZGNhcmQgZmxhZyIp
OworICAgIGlmIChhbGxvd2xpc3RXaWxkY2FyZFN0YXRlbWVudC5zdGVwKCkgIT0gU1FMSVRFX0RP
TkUpCisgICAgICAgIExPR19FUlJPUigiVG9vIG1hbnkgcm93cyBmb3Igb25saW5lIGFsbG93bGlz
dCB3aWxkY2FyZCBmbGFnIik7CiAKICAgICAvLyBMb2FkIGZhbGxiYWNrIFVSTHMuCiAgICAgU1FM
aXRlU3RhdGVtZW50IGZhbGxiYWNrU3RhdGVtZW50KG1fZGF0YWJhc2UsICJTRUxFQ1QgbmFtZXNw
YWNlLCBmYWxsYmFja1VSTCBGUk9NIEZhbGxiYWNrVVJMcyBXSEVSRSBjYWNoZT0/Iik7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvTWFuaWZlc3RQYXJzZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9NYW5pZmVzdFBhcnNlci5j
cHAJKHJldmlzaW9uIDI2Mjg5NCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9N
YW5pZmVzdFBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1lbnVtIE1vZGUgeyBFeHBsaWNpdCwgRmFsbGJhY2ssIE9ubGlu
ZVdoaXRlbGlzdCwgVW5rbm93biB9OworZW51bSBNb2RlIHsgRXhwbGljaXQsIEZhbGxiYWNrLCBP
bmxpbmVBbGxvd2xpc3QsIFVua25vd24gfTsKIAogc3RhdGljIFN0cmluZ1ZpZXcgbWFuaWZlc3RQ
YXRoKGNvbnN0IFVSTCYgbWFuaWZlc3RVUkwpCiB7CkBAIC00Nyw3ICs0Nyw3IEBAIHN0YXRpYyBT
dHJpbmdWaWV3IG1hbmlmZXN0UGF0aChjb25zdCBVUkwKIGJvb2wgcGFyc2VNYW5pZmVzdChjb25z
dCBVUkwmIG1hbmlmZXN0VVJMLCBjb25zdCBTdHJpbmcmIG1hbmlmZXN0TUlNRVR5cGUsIGNvbnN0
IGNoYXIqIGRhdGEsIGludCBsZW5ndGgsIE1hbmlmZXN0JiBtYW5pZmVzdCkKIHsKICAgICBBU1NF
UlQobWFuaWZlc3QuZXhwbGljaXRVUkxzLmlzRW1wdHkoKSk7Ci0gICAgQVNTRVJUKG1hbmlmZXN0
Lm9ubGluZVdoaXRlbGlzdGVkVVJMcy5pc0VtcHR5KCkpOworICAgIEFTU0VSVChtYW5pZmVzdC5v
bmxpbmVBbGxvd2VkVVJMcy5pc0VtcHR5KCkpOwogICAgIEFTU0VSVChtYW5pZmVzdC5mYWxsYmFj
a1VSTHMuaXNFbXB0eSgpKTsKICAgICBtYW5pZmVzdC5hbGxvd0FsbE5ldHdvcmtSZXF1ZXN0cyA9
IGZhbHNlOwogCkBAIC0xMDksMTIgKzEwOSwxMiBAQCBib29sIHBhcnNlTWFuaWZlc3QoY29uc3Qg
VVJMJiBtYW5pZmVzdFVSCiAgICAgICAgIGVsc2UgaWYgKGxpbmUgPT0gIkZBTExCQUNLOiIpCiAg
ICAgICAgICAgICBtb2RlID0gRmFsbGJhY2s7CiAgICAgICAgIGVsc2UgaWYgKGxpbmUgPT0gIk5F
VFdPUks6IikKLSAgICAgICAgICAgIG1vZGUgPSBPbmxpbmVXaGl0ZWxpc3Q7CisgICAgICAgICAg
ICBtb2RlID0gT25saW5lQWxsb3dsaXN0OwogICAgICAgICBlbHNlIGlmIChsaW5lLmVuZHNXaXRo
KCc6JykpCiAgICAgICAgICAgICBtb2RlID0gVW5rbm93bjsKICAgICAgICAgZWxzZSBpZiAobW9k
ZSA9PSBVbmtub3duKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGVsc2UgaWYgKG1v
ZGUgPT0gRXhwbGljaXQgfHwgbW9kZSA9PSBPbmxpbmVXaGl0ZWxpc3QpIHsKKyAgICAgICAgZWxz
ZSBpZiAobW9kZSA9PSBFeHBsaWNpdCB8fCBtb2RlID09IE9ubGluZUFsbG93bGlzdCkgewogICAg
ICAgICAgICAgYXV0byB1cGNvbnZlcnRlZExpbmVDaGFyYWN0ZXJzID0gU3RyaW5nVmlldyhsaW5l
KS51cGNvbnZlcnRlZENoYXJhY3RlcnMoKTsKICAgICAgICAgICAgIGNvbnN0IFVDaGFyKiBwID0g
dXBjb252ZXJ0ZWRMaW5lQ2hhcmFjdGVyczsKICAgICAgICAgICAgIGNvbnN0IFVDaGFyKiBsaW5l
RW5kID0gcCArIGxpbmUubGVuZ3RoKCk7CkBAIC0xMjMsNyArMTIzLDcgQEAgYm9vbCBwYXJzZU1h
bmlmZXN0KGNvbnN0IFVSTCYgbWFuaWZlc3RVUgogICAgICAgICAgICAgd2hpbGUgKHAgPCBsaW5l
RW5kICYmICpwICE9ICdcdCcgJiYgKnAgIT0gJyAnKSAKICAgICAgICAgICAgICAgICBwKys7CiAK
LSAgICAgICAgICAgIGlmIChtb2RlID09IE9ubGluZVdoaXRlbGlzdCAmJiBwIC0gdXBjb252ZXJ0
ZWRMaW5lQ2hhcmFjdGVycyA9PSAxICYmIGxpbmVbMF0gPT0gJyonKSB7CisgICAgICAgICAgICBp
ZiAobW9kZSA9PSBPbmxpbmVBbGxvd2xpc3QgJiYgcCAtIHVwY29udmVydGVkTGluZUNoYXJhY3Rl
cnMgPT0gMSAmJiBsaW5lWzBdID09ICcqJykgewogICAgICAgICAgICAgICAgIC8vIFdpbGRjYXJk
IHdhcyBmb3VuZC4KICAgICAgICAgICAgICAgICBtYW5pZmVzdC5hbGxvd0FsbE5ldHdvcmtSZXF1
ZXN0cyA9IHRydWU7CiAgICAgICAgICAgICAgICAgY29udGludWU7CkBAIC0xNDUsNyArMTQ1LDcg
QEAgYm9vbCBwYXJzZU1hbmlmZXN0KGNvbnN0IFVSTCYgbWFuaWZlc3RVUgogICAgICAgICAgICAg
aWYgKG1vZGUgPT0gRXhwbGljaXQpCiAgICAgICAgICAgICAgICAgbWFuaWZlc3QuZXhwbGljaXRV
UkxzLmFkZCh1cmwuc3RyaW5nKCkpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAg
IG1hbmlmZXN0Lm9ubGluZVdoaXRlbGlzdGVkVVJMcy5hcHBlbmQodXJsKTsKKyAgICAgICAgICAg
ICAgICBtYW5pZmVzdC5vbmxpbmVBbGxvd2VkVVJMcy5hcHBlbmQodXJsKTsKICAgICAgICAgICAg
IAogICAgICAgICB9IGVsc2UgaWYgKG1vZGUgPT0gRmFsbGJhY2spIHsKICAgICAgICAgICAgIGF1
dG8gdXBjb252ZXJ0ZWRMaW5lQ2hhcmFjdGVycyA9IFN0cmluZ1ZpZXcobGluZSkudXBjb252ZXJ0
ZWRDaGFyYWN0ZXJzKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvTWFu
aWZlc3RQYXJzZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvTWFuaWZlc3RQYXJzZXIuaAkocmV2aXNpb24gMjYyODk0KQorKysgU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL01hbmlmZXN0UGFyc2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcg
KzMxLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IE1hbmlmZXN0IHsKLSAgICBW
ZWN0b3I8VVJMPiBvbmxpbmVXaGl0ZWxpc3RlZFVSTHM7CisgICAgVmVjdG9yPFVSTD4gb25saW5l
QWxsb3dlZFVSTHM7CiAgICAgSGFzaFNldDxTdHJpbmc+IGV4cGxpY2l0VVJMczsKICAgICBGYWxs
YmFja1VSTFZlY3RvciBmYWxsYmFja1VSTHM7CiAgICAgYm9vbCBhbGxvd0FsbE5ldHdvcmtSZXF1
ZXN0czsgLy8gV2lsZGNhcmQgZm91bmQgaW4gTkVUV09SSyBzZWN0aW9uLgpJbmRleDogU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZS5jcHAJKHJldmlzaW9uIDI2Mjg5NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NzEsNyArNjcxLDcgQEAgdm9pZCBGcmFtZTo6aW5q
ZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5KAogICAgICAgICByZXR1cm47CiAgICAgaWYgKHNjcmlw
dC5pbmplY3RlZEZyYW1lcygpID09IFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdElu
VG9wRnJhbWVPbmx5ICYmICFpc01haW5GcmFtZSgpKQogICAgICAgICByZXR1cm47Ci0gICAgaWYg
KCFVc2VyQ29udGVudFVSTFBhdHRlcm46Om1hdGNoZXNQYXR0ZXJucyhkb2N1bWVudC0+dXJsKCks
IHNjcmlwdC53aGl0ZWxpc3QoKSwgc2NyaXB0LmJsb2NrbGlzdCgpKSkKKyAgICBpZiAoIVVzZXJD
b250ZW50VVJMUGF0dGVybjo6bWF0Y2hlc1BhdHRlcm5zKGRvY3VtZW50LT51cmwoKSwgc2NyaXB0
LmFsbG93bGlzdCgpLCBzY3JpcHQuYmxvY2tsaXN0KCkpKQogICAgICAgICByZXR1cm47CiAgICAg
aWYgKCFtX3NjcmlwdC0+c2hvdWxkQWxsb3dVc2VyQWdlbnRTY3JpcHRzKCpkb2N1bWVudCkpCiAg
ICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3Bw
CShyZXZpc2lvbiAyNjI4OTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2lu
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIzLDcgKzMyMyw3IEBAIGJvb2wgU2VjdXJpdHlPcmln
aW46OmNhblJlcXVlc3QoY29uc3QgVVIKICAgICBpZiAoaXNTYW1lU2NoZW1lSG9zdFBvcnQodGFy
Z2V0T3JpZ2luLmdldCgpKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBpZiAoU2VjdXJp
dHlQb2xpY3k6OmlzQWNjZXNzV2hpdGVMaXN0ZWQoKnRoaXMsIHRhcmdldE9yaWdpbi5nZXQoKSwg
dXJsKSkKKyAgICBpZiAoU2VjdXJpdHlQb2xpY3k6OmlzQWNjZXNzQWxsb3dlZCgqdGhpcywgdGFy
Z2V0T3JpZ2luLmdldCgpLCB1cmwpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIHJldHVy
biBmYWxzZTsKQEAgLTM4Miw3ICszODIsNyBAQCBib29sIFNlY3VyaXR5T3JpZ2luOjpjYW5EaXNw
bGF5KGNvbnN0IFVSCiAgICAgICAgIHJldHVybiBjYW5SZXF1ZXN0KHVybCk7CiAKICAgICBpZiAo
TGVnYWN5U2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNEaXNwbGF5SXNvbGF0
ZWQocHJvdG9jb2wpKQotICAgICAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShtX2Rh
dGEucHJvdG9jb2wsIHByb3RvY29sKSB8fCBTZWN1cml0eVBvbGljeTo6aXNBY2Nlc3NXaGl0ZUxp
c3RlZCgqdGhpcywgdXJsKTsKKyAgICAgICAgcmV0dXJuIGVxdWFsSWdub3JpbmdBU0NJSUNhc2Uo
bV9kYXRhLnByb3RvY29sLCBwcm90b2NvbCkgfHwgU2VjdXJpdHlQb2xpY3k6OmlzQWNjZXNzQWxs
b3dlZCgqdGhpcywgdXJsKTsKIAogICAgIGlmICghU2VjdXJpdHlQb2xpY3k6OnJlc3RyaWN0QWNj
ZXNzVG9Mb2NhbCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTM5MSw3ICszOTEsNyBAQCBi
b29sIFNlY3VyaXR5T3JpZ2luOjpjYW5EaXNwbGF5KGNvbnN0IFVSCiAgICAgICAgIHJldHVybiB0
cnVlOwogCiAgICAgaWYgKExlZ2FjeVNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVSTFNjaGVt
ZUFzTG9jYWwocHJvdG9jb2wpKQotICAgICAgICByZXR1cm4gY2FuTG9hZExvY2FsUmVzb3VyY2Vz
KCkgfHwgU2VjdXJpdHlQb2xpY3k6OmlzQWNjZXNzV2hpdGVMaXN0ZWQoKnRoaXMsIHVybCk7Cisg
ICAgICAgIHJldHVybiBjYW5Mb2FkTG9jYWxSZXNvdXJjZXMoKSB8fCBTZWN1cml0eVBvbGljeTo6
aXNBY2Nlc3NBbGxvd2VkKCp0aGlzLCB1cmwpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNwcAkocmV2aXNpb24gMjYyODk0KQor
KysgU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQzLDggKzQzLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgU2VjdXJpdHlQ
b2xpY3k6OkxvY2FsTG9hZFBvbGljeSBsb2NhbExvYWRQb2xpY3kgPSBTZWN1cml0eVBvbGljeTo6
QWxsb3dMb2NhbExvYWRzRm9yTG9jYWxPbmx5OwogCi10eXBlZGVmIFZlY3RvcjxPcmlnaW5BY2Nl
c3NFbnRyeT4gT3JpZ2luQWNjZXNzV2hpdGVMaXN0OwotdHlwZWRlZiBIYXNoTWFwPFN0cmluZywg
c3RkOjp1bmlxdWVfcHRyPE9yaWdpbkFjY2Vzc1doaXRlTGlzdD4+IE9yaWdpbkFjY2Vzc01hcDsK
K3R5cGVkZWYgVmVjdG9yPE9yaWdpbkFjY2Vzc0VudHJ5PiBPcmlnaW5BY2Nlc3NBbGxvd2xpc3Q7
Cit0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8T3JpZ2luQWNjZXNzQWxs
b3dsaXN0Pj4gT3JpZ2luQWNjZXNzTWFwOwogCiBzdGF0aWMgTG9jayBvcmlnaW5BY2Nlc3NNYXBM
b2NrOwogc3RhdGljIE9yaWdpbkFjY2Vzc01hcCYgb3JpZ2luQWNjZXNzTWFwKCkKQEAgLTIwMSwx
MiArMjAxLDEyIEBAIGJvb2wgU2VjdXJpdHlQb2xpY3k6OmFsbG93U3Vic3RpdHV0ZURhdGEKICAg
ICByZXR1cm4gbG9jYWxMb2FkUG9saWN5ICE9IFNlY3VyaXR5UG9saWN5OjpBbGxvd0xvY2FsTG9h
ZHNGb3JMb2NhbE9ubHk7CiB9CiAKLWJvb2wgU2VjdXJpdHlQb2xpY3k6OmlzQWNjZXNzV2hpdGVM
aXN0ZWQoY29uc3QgU2VjdXJpdHlPcmlnaW4mIGFjdGl2ZU9yaWdpbiwgY29uc3QgU2VjdXJpdHlP
cmlnaW4mIHRhcmdldE9yaWdpbiwgY29uc3QgVVJMJiB0YXJnZXRVUkwpCitib29sIFNlY3VyaXR5
UG9saWN5Ojppc0FjY2Vzc0FsbG93ZWQoY29uc3QgU2VjdXJpdHlPcmlnaW4mIGFjdGl2ZU9yaWdp
biwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRhcmdldE9yaWdpbiwgY29uc3QgVVJMJiB0YXJnZXRV
UkwpCiB7CiAgICAgQVNTRVJUKHRhcmdldE9yaWdpbi5lcXVhbChTZWN1cml0eU9yaWdpbjo6Y3Jl
YXRlKHRhcmdldFVSTCkucHRyKCkpKTsKICAgICB7CiAgICAgICAgIExvY2tlcjxMb2NrPiBsb2Nr
ZXIob3JpZ2luQWNjZXNzTWFwTG9jayk7Ci0gICAgICAgIGlmIChPcmlnaW5BY2Nlc3NXaGl0ZUxp
c3QqIGxpc3QgPSBvcmlnaW5BY2Nlc3NNYXAoKS5nZXQoYWN0aXZlT3JpZ2luLnRvU3RyaW5nKCkp
KSB7CisgICAgICAgIGlmIChPcmlnaW5BY2Nlc3NBbGxvd2xpc3QqIGxpc3QgPSBvcmlnaW5BY2Nl
c3NNYXAoKS5nZXQoYWN0aXZlT3JpZ2luLnRvU3RyaW5nKCkpKSB7CiAgICAgICAgICAgICBmb3Ig
KGF1dG8mIGVudHJ5IDogKmxpc3QpIHsKICAgICAgICAgICAgICAgICBpZiAoZW50cnkubWF0Y2hl
c09yaWdpbih0YXJnZXRPcmlnaW4pKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
QEAgLTIyMSwxMiArMjIxLDEyIEBAIGJvb2wgU2VjdXJpdHlQb2xpY3k6OmlzQWNjZXNzV2hpdGVM
aXN0ZWQKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgU2VjdXJpdHlQb2xpY3k6OmlzQWNj
ZXNzV2hpdGVMaXN0ZWQoY29uc3QgU2VjdXJpdHlPcmlnaW4mIGFjdGl2ZU9yaWdpbiwgY29uc3Qg
VVJMJiB1cmwpCitib29sIFNlY3VyaXR5UG9saWN5Ojppc0FjY2Vzc0FsbG93ZWQoY29uc3QgU2Vj
dXJpdHlPcmlnaW4mIGFjdGl2ZU9yaWdpbiwgY29uc3QgVVJMJiB1cmwpCiB7Ci0gICAgcmV0dXJu
IGlzQWNjZXNzV2hpdGVMaXN0ZWQoYWN0aXZlT3JpZ2luLCBTZWN1cml0eU9yaWdpbjo6Y3JlYXRl
KHVybCkuZ2V0KCksIHVybCk7CisgICAgcmV0dXJuIGlzQWNjZXNzQWxsb3dlZChhY3RpdmVPcmln
aW4sIFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUodXJsKS5nZXQoKSwgdXJsKTsKIH0KIAotdm9pZCBT
ZWN1cml0eVBvbGljeTo6YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoY29uc3QgU2VjdXJp
dHlPcmlnaW4mIHNvdXJjZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblByb3RvY29s
LCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uRG9tYWluLCBib29sIGFsbG93RGVzdGluYXRpb25T
dWJkb21haW5zKQordm9pZCBTZWN1cml0eVBvbGljeTo6YWRkT3JpZ2luQWNjZXNzQWxsb3dsaXN0
RW50cnkoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHNvdXJjZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBk
ZXN0aW5hdGlvblByb3RvY29sLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uRG9tYWluLCBib29s
IGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKQogewogICAgIEFTU0VSVCghc291cmNlT3JpZ2lu
LmlzVW5pcXVlKCkpOwogICAgIGlmIChzb3VyY2VPcmlnaW4uaXNVbmlxdWUoKSkKQEAgLTIzNywx
MyArMjM3LDEzIEBAIHZvaWQgU2VjdXJpdHlQb2xpY3k6OmFkZE9yaWdpbkFjY2Vzc1doaXQKICAg
ICBMb2NrZXI8TG9jaz4gbG9ja2VyKG9yaWdpbkFjY2Vzc01hcExvY2spOwogICAgIE9yaWdpbkFj
Y2Vzc01hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IG9yaWdpbkFjY2Vzc01hcCgpLmFkZChzb3VyY2VT
dHJpbmcsIG51bGxwdHIpOwogICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgcmVz
dWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8T3JpZ2luQWNjZXNzV2hpdGVMaXN0Pigp
OworICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxPcmlnaW5BY2Nl
c3NBbGxvd2xpc3Q+KCk7CiAKLSAgICBPcmlnaW5BY2Nlc3NXaGl0ZUxpc3QqIGxpc3QgPSByZXN1
bHQuaXRlcmF0b3ItPnZhbHVlLmdldCgpOworICAgIE9yaWdpbkFjY2Vzc0FsbG93bGlzdCogbGlz
dCA9IHJlc3VsdC5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CiAgICAgbGlzdC0+YXBwZW5kKE9yaWdp
bkFjY2Vzc0VudHJ5KGRlc3RpbmF0aW9uUHJvdG9jb2wsIGRlc3RpbmF0aW9uRG9tYWluLCBhbGxv
d0Rlc3RpbmF0aW9uU3ViZG9tYWlucyA/IE9yaWdpbkFjY2Vzc0VudHJ5OjpBbGxvd1N1YmRvbWFp
bnMgOiBPcmlnaW5BY2Nlc3NFbnRyeTo6RGlzYWxsb3dTdWJkb21haW5zLCBPcmlnaW5BY2Nlc3NF
bnRyeTo6VHJlYXRJUEFkZHJlc3NBc0lQQWRkcmVzcykpOwogfQogCi12b2lkIFNlY3VyaXR5UG9s
aWN5OjpyZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShjb25zdCBTZWN1cml0eU9yaWdp
biYgc291cmNlT3JpZ2luLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGNvbnN0
IFN0cmluZyYgZGVzdGluYXRpb25Eb21haW4sIGJvb2wgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFp
bnMpCit2b2lkIFNlY3VyaXR5UG9saWN5OjpyZW1vdmVPcmlnaW5BY2Nlc3NBbGxvd2xpc3RFbnRy
eShjb25zdCBTZWN1cml0eU9yaWdpbiYgc291cmNlT3JpZ2luLCBjb25zdCBTdHJpbmcmIGRlc3Rp
bmF0aW9uUHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25Eb21haW4sIGJvb2wgYWxs
b3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpCiB7CiAgICAgQVNTRVJUKCFzb3VyY2VPcmlnaW4uaXNV
bmlxdWUoKSk7CiAgICAgaWYgKHNvdXJjZU9yaWdpbi5pc1VuaXF1ZSgpKQpAQCAtMjU3LDcgKzI1
Nyw3IEBAIHZvaWQgU2VjdXJpdHlQb2xpY3k6OnJlbW92ZU9yaWdpbkFjY2Vzc1cKICAgICBpZiAo
aXQgPT0gbWFwLmVuZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBPcmlnaW5BY2Nlc3NXaGl0
ZUxpc3QmIGxpc3QgPSAqaXQtPnZhbHVlOworICAgIE9yaWdpbkFjY2Vzc0FsbG93bGlzdCYgbGlz
dCA9ICppdC0+dmFsdWU7CiAgICAgT3JpZ2luQWNjZXNzRW50cnkgb3JpZ2luQWNjZXNzRW50cnko
ZGVzdGluYXRpb25Qcm90b2NvbCwgZGVzdGluYXRpb25Eb21haW4sIGFsbG93RGVzdGluYXRpb25T
dWJkb21haW5zID8gT3JpZ2luQWNjZXNzRW50cnk6OkFsbG93U3ViZG9tYWlucyA6IE9yaWdpbkFj
Y2Vzc0VudHJ5OjpEaXNhbGxvd1N1YmRvbWFpbnMsIE9yaWdpbkFjY2Vzc0VudHJ5OjpUcmVhdElQ
QWRkcmVzc0FzSVBBZGRyZXNzKTsKICAgICBpZiAoIWxpc3QucmVtb3ZlRmlyc3Qob3JpZ2luQWNj
ZXNzRW50cnkpKQogICAgICAgICByZXR1cm47CkBAIC0yNjYsNyArMjY2LDcgQEAgdm9pZCBTZWN1
cml0eVBvbGljeTo6cmVtb3ZlT3JpZ2luQWNjZXNzVwogICAgICAgICBtYXAucmVtb3ZlKGl0KTsK
IH0KIAotdm9pZCBTZWN1cml0eVBvbGljeTo6cmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RzKCkK
K3ZvaWQgU2VjdXJpdHlQb2xpY3k6OnJlc2V0T3JpZ2luQWNjZXNzQWxsb3dsaXN0cygpCiB7CiAg
ICAgTG9ja2VyPExvY2s+IGxvY2tlcihvcmlnaW5BY2Nlc3NNYXBMb2NrKTsKICAgICBvcmlnaW5B
Y2Nlc3NNYXAoKS5jbGVhcigpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eVBv
bGljeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3ku
aAkocmV2aXNpb24gMjYyODk0KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eVBvbGlj
eS5oCSh3b3JraW5nIGNvcHkpCkBAIC02OCwxMiArNjgsMTIgQEAgcHVibGljOgogICAgIHN0YXRp
YyBib29sIGFsbG93U3Vic3RpdHV0ZURhdGFBY2Nlc3NUb0xvY2FsKCk7CiAKICAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgdm9pZCBhbGxvd0FjY2Vzc1RvKGNvbnN0IFVzZXJDb250ZW50VVJMUGF0
dGVybiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGFkZE9yaWdpbkFjY2Vzc1do
aXRlbGlzdEVudHJ5KGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBzb3VyY2VPcmlnaW4sIGNvbnN0IFN0
cmluZyYgZGVzdGluYXRpb25Qcm90b2NvbCwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbkRvbWFp
biwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIHZvaWQgcmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoY29uc3QgU2VjdXJp
dHlPcmlnaW4mIHNvdXJjZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblByb3RvY29s
LCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uRG9tYWluLCBib29sIGFsbG93RGVzdGluYXRpb25T
dWJkb21haW5zKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCByZXNldE9yaWdpbkFj
Y2Vzc1doaXRlbGlzdHMoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBhZGRPcmln
aW5BY2Nlc3NBbGxvd2xpc3RFbnRyeShjb25zdCBTZWN1cml0eU9yaWdpbiYgc291cmNlT3JpZ2lu
LCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgZGVzdGlu
YXRpb25Eb21haW4sIGJvb2wgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOworICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyB2b2lkIHJlbW92ZU9yaWdpbkFjY2Vzc0FsbG93bGlzdEVudHJ5KGNv
bnN0IFNlY3VyaXR5T3JpZ2luJiBzb3VyY2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgZGVzdGluYXRp
b25Qcm90b2NvbCwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbkRvbWFpbiwgYm9vbCBhbGxvd0Rl
c3RpbmF0aW9uU3ViZG9tYWlucyk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgcmVz
ZXRPcmlnaW5BY2Nlc3NBbGxvd2xpc3RzKCk7CiAKLSAgICBzdGF0aWMgYm9vbCBpc0FjY2Vzc1do
aXRlTGlzdGVkKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBhY3RpdmVPcmlnaW4sIGNvbnN0IFNlY3Vy
aXR5T3JpZ2luJiB0YXJnZXRPcmlnaW4sIGNvbnN0IFVSTCYgdGFyZ2V0VVJMKTsKLSAgICBzdGF0
aWMgYm9vbCBpc0FjY2Vzc1doaXRlTGlzdGVkKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBhY3RpdmVP
cmlnaW4sIGNvbnN0IFVSTCYgdGFyZ2V0VVJMKTsKKyAgICBzdGF0aWMgYm9vbCBpc0FjY2Vzc0Fs
bG93ZWQoY29uc3QgU2VjdXJpdHlPcmlnaW4mIGFjdGl2ZU9yaWdpbiwgY29uc3QgU2VjdXJpdHlP
cmlnaW4mIHRhcmdldE9yaWdpbiwgY29uc3QgVVJMJiB0YXJnZXRVUkwpOworICAgIHN0YXRpYyBi
b29sIGlzQWNjZXNzQWxsb3dlZChjb25zdCBTZWN1cml0eU9yaWdpbiYgYWN0aXZlT3JpZ2luLCBj
b25zdCBVUkwmIHRhcmdldFVSTCk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwCShyZXZp
c2lvbiAyNjI4OTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50VVJMUGF0dGVy
bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDE2ICszMiwxNiBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLWJvb2wgVXNlckNvbnRlbnRVUkxQYXR0ZXJuOjptYXRjaGVzUGF0dGVybnMoY29u
c3QgVVJMJiB1cmwsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB3aGl0ZWxpc3QsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBibG9ja2xpc3QpCitib29sIFVzZXJDb250ZW50VVJMUGF0dGVybjo6bWF0Y2hl
c1BhdHRlcm5zKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYWxsb3dsaXN0
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvY2tsaXN0KQogewotICAgIC8vIEluIG9yZGVyIGZv
ciBhIFVSTCB0byBiZSBhIG1hdGNoIGl0IGhhcyB0byBiZSBwcmVzZW50IGluIHRoZSB3aGl0ZWxp
c3QgYW5kIG5vdCBwcmVzZW50IGluIHRoZSBibG9ja2xpc3QuCi0gICAgLy8gSWYgdGhlcmUgaXMg
bm8gd2hpdGVsaXN0IGF0IGFsbCwgdGhlbiBhbGwgVVJMcyBhcmUgYXNzdW1lZCB0byBiZSBpbiB0
aGUgd2hpdGVsaXN0LgotICAgIGJvb2wgbWF0Y2hlc1doaXRlbGlzdCA9IHdoaXRlbGlzdC5pc0Vt
cHR5KCk7Ci0gICAgaWYgKCFtYXRjaGVzV2hpdGVsaXN0KSB7Ci0gICAgICAgIGZvciAoYXV0byYg
ZW50cnkgOiB3aGl0ZWxpc3QpIHsKKyAgICAvLyBJbiBvcmRlciBmb3IgYSBVUkwgdG8gYmUgYSBt
YXRjaCBpdCBoYXMgdG8gYmUgcHJlc2VudCBpbiB0aGUgYWxsb3dsaXN0IGFuZCBub3QgcHJlc2Vu
dCBpbiB0aGUgYmxvY2tsaXN0LgorICAgIC8vIElmIHRoZXJlIGlzIG5vIGFsbG93bGlzdCBhdCBh
bGwsIHRoZW4gYWxsIFVSTHMgYXJlIGFzc3VtZWQgdG8gYmUgaW4gdGhlIGFsbG93bGlzdC4KKyAg
ICBib29sIG1hdGNoZXNBbGxvd2xpc3QgPSBhbGxvd2xpc3QuaXNFbXB0eSgpOworICAgIGlmICgh
bWF0Y2hlc0FsbG93bGlzdCkgeworICAgICAgICBmb3IgKGF1dG8mIGVudHJ5IDogYWxsb3dsaXN0
KSB7CiAgICAgICAgICAgICBVc2VyQ29udGVudFVSTFBhdHRlcm4gY29udGVudFBhdHRlcm4oZW50
cnkpOwogICAgICAgICAgICAgaWYgKGNvbnRlbnRQYXR0ZXJuLm1hdGNoZXModXJsKSkgewotICAg
ICAgICAgICAgICAgIG1hdGNoZXNXaGl0ZWxpc3QgPSB0cnVlOworICAgICAgICAgICAgICAgIG1h
dGNoZXNBbGxvd2xpc3QgPSB0cnVlOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgfQogICAgICAgICB9CkBAIC01OCw3ICs1OCw3IEBAIGJvb2wgVXNlckNvbnRlbnRVUkxQYXR0
ZXJuOjptYXRjaGVzUGF0dGUKICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiBtYXRjaGVz
V2hpdGVsaXN0ICYmICFtYXRjaGVzQmxvY2tsaXN0OworICAgIHJldHVybiBtYXRjaGVzQWxsb3ds
aXN0ICYmICFtYXRjaGVzQmxvY2tsaXN0OwogfQogCiBib29sIFVzZXJDb250ZW50VVJMUGF0dGVy
bjo6cGFyc2UoY29uc3QgU3RyaW5nJiBwYXR0ZXJuKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
YWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5oCShyZXZpc2lvbiAyNjI4OTQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wYWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5oCSh3b3JraW5nIGNvcHkpCkBAIC01
MCw3ICs1MCw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgbWF0Y2hTdWJkb21haW5zKCkgY29uc3Qg
eyByZXR1cm4gbV9tYXRjaFN1YmRvbWFpbnM7IH0KICAgICAKLSAgICBzdGF0aWMgYm9vbCBtYXRj
aGVzUGF0dGVybnMoY29uc3QgVVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHdoaXRlbGlzdCwg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2NrbGlzdCk7CisgICAgc3RhdGljIGJvb2wgbWF0Y2hl
c1BhdHRlcm5zKGNvbnN0IFVSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhbGxvd2xpc3QsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBibG9ja2xpc3QpOwogCiBwcml2YXRlOgogICAgIFdFQkNPUkVf
RVhQT1JUIGJvb2wgcGFyc2UoY29uc3QgU3RyaW5nJiBwYXR0ZXJuKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvVXNlclNjcmlwdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvVXNlclNjcmlwdC5oCShyZXZpc2lvbiAyNjI4OTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdl
L1VzZXJTY3JpcHQuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsMTAgKzQxLDEwIEBAIHB1YmxpYzoK
ICAgICBVc2VyU2NyaXB0JiBvcGVyYXRvcj0oY29uc3QgVXNlclNjcmlwdCYpID0gZGVmYXVsdDsK
ICAgICBVc2VyU2NyaXB0JiBvcGVyYXRvcj0oVXNlclNjcmlwdCYmKSA9IGRlZmF1bHQ7CiAKLSAg
ICBVc2VyU2NyaXB0KFN0cmluZyYmIHNvdXJjZSwgVVJMJiYgdXJsLCBWZWN0b3I8U3RyaW5nPiYm
IHdoaXRlbGlzdCwgVmVjdG9yPFN0cmluZz4mJiBibG9ja2xpc3QsIFVzZXJTY3JpcHRJbmplY3Rp
b25UaW1lIGluamVjdGlvblRpbWUsIFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgaW5qZWN0ZWRG
cmFtZXMsIFdhaXRGb3JOb3RpZmljYXRpb25CZWZvcmVJbmplY3Rpbmcgd2FpdEZvck5vdGlmaWNh
dGlvbikKKyAgICBVc2VyU2NyaXB0KFN0cmluZyYmIHNvdXJjZSwgVVJMJiYgdXJsLCBWZWN0b3I8
U3RyaW5nPiYmIGFsbG93bGlzdCwgVmVjdG9yPFN0cmluZz4mJiBibG9ja2xpc3QsIFVzZXJTY3Jp
cHRJbmplY3Rpb25UaW1lIGluamVjdGlvblRpbWUsIFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMg
aW5qZWN0ZWRGcmFtZXMsIFdhaXRGb3JOb3RpZmljYXRpb25CZWZvcmVJbmplY3Rpbmcgd2FpdEZv
ck5vdGlmaWNhdGlvbikKICAgICAgICAgOiBtX3NvdXJjZShXVEZNb3ZlKHNvdXJjZSkpCiAgICAg
ICAgICwgbV91cmwoV1RGTW92ZSh1cmwpKQotICAgICAgICAsIG1fd2hpdGVsaXN0KFdURk1vdmUo
d2hpdGVsaXN0KSkKKyAgICAgICAgLCBtX2FsbG93bGlzdChXVEZNb3ZlKGFsbG93bGlzdCkpCiAg
ICAgICAgICwgbV9ibG9ja2xpc3QoV1RGTW92ZShibG9ja2xpc3QpKQogICAgICAgICAsIG1faW5q
ZWN0aW9uVGltZShpbmplY3Rpb25UaW1lKQogICAgICAgICAsIG1faW5qZWN0ZWRGcmFtZXMoaW5q
ZWN0ZWRGcmFtZXMpCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFN0cmlu
ZyYgc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2U7IH0KICAgICBjb25zdCBVUkwmIHVy
bCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9Ci0gICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIHdo
aXRlbGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1fd2hpdGVsaXN0OyB9CisgICAgY29uc3QgVmVjdG9y
PFN0cmluZz4mIGFsbG93bGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dsaXN0OyB9CiAgICAg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2NrbGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1fYmxvY2ts
aXN0OyB9CiAgICAgVXNlclNjcmlwdEluamVjdGlvblRpbWUgaW5qZWN0aW9uVGltZSgpIGNvbnN0
IHsgcmV0dXJuIG1faW5qZWN0aW9uVGltZTsgfQogICAgIFVzZXJDb250ZW50SW5qZWN0ZWRGcmFt
ZXMgaW5qZWN0ZWRGcmFtZXMoKSBjb25zdCB7IHJldHVybiBtX2luamVjdGVkRnJhbWVzOyB9CkBA
IC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fc291cmNlOwog
ICAgIFVSTCBtX3VybDsKLSAgICBWZWN0b3I8U3RyaW5nPiBtX3doaXRlbGlzdDsKKyAgICBWZWN0
b3I8U3RyaW5nPiBtX2FsbG93bGlzdDsKICAgICBWZWN0b3I8U3RyaW5nPiBtX2Jsb2NrbGlzdDsK
ICAgICBVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSBtX2luamVjdGlvblRpbWUgeyBVc2VyU2NyaXB0
SW5qZWN0aW9uVGltZTo6RG9jdW1lbnRTdGFydCB9OwogICAgIFVzZXJDb250ZW50SW5qZWN0ZWRG
cmFtZXMgbV9pbmplY3RlZEZyYW1lcyB7IFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVj
dEluQWxsRnJhbWVzIH07CkBAIC03OCw3ICs3OCw3IEBAIHZvaWQgVXNlclNjcmlwdDo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIKIHsKICAgICBlbmNvZGVyIDw8IG1fc291cmNlOwogICAgIGVuY29k
ZXIgPDwgbV91cmw7Ci0gICAgZW5jb2RlciA8PCBtX3doaXRlbGlzdDsKKyAgICBlbmNvZGVyIDw8
IG1fYWxsb3dsaXN0OwogICAgIGVuY29kZXIgPDwgbV9ibG9ja2xpc3Q7CiAgICAgZW5jb2RlciA8
PCBtX2luamVjdGlvblRpbWU7CiAgICAgZW5jb2RlciA8PCBtX2luamVjdGVkRnJhbWVzOwpAQCAt
OTgsOSArOTgsOSBAQCBPcHRpb25hbDxVc2VyU2NyaXB0PiBVc2VyU2NyaXB0OjpkZWNvZGUoCiAg
ICAgaWYgKCF1cmwpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgCi0gICAgT3B0
aW9uYWw8VmVjdG9yPFN0cmluZz4+IHdoaXRlbGlzdDsKLSAgICBkZWNvZGVyID4+IHdoaXRlbGlz
dDsKLSAgICBpZiAoIXdoaXRlbGlzdCkKKyAgICBPcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gYWxs
b3dsaXN0OworICAgIGRlY29kZXIgPj4gYWxsb3dsaXN0OworICAgIGlmICghYWxsb3dsaXN0KQog
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIAogICAgIE9wdGlvbmFsPFZlY3RvcjxT
dHJpbmc+PiBibG9ja2xpc3Q7CkBAIC0xMjYsNyArMTI2LDcgQEAgT3B0aW9uYWw8VXNlclNjcmlw
dD4gVXNlclNjcmlwdDo6ZGVjb2RlKAogICAgIHJldHVybiB7ewogICAgICAgICBXVEZNb3ZlKCpz
b3VyY2UpLAogICAgICAgICBXVEZNb3ZlKCp1cmwpLAotICAgICAgICBXVEZNb3ZlKCp3aGl0ZWxp
c3QpLAorICAgICAgICBXVEZNb3ZlKCphbGxvd2xpc3QpLAogICAgICAgICBXVEZNb3ZlKCpibG9j
a2xpc3QpLAogICAgICAgICBXVEZNb3ZlKCppbmplY3Rpb25UaW1lKSwKICAgICAgICAgV1RGTW92
ZSgqaW5qZWN0ZWRGcmFtZXMpLApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyU3R5bGVT
aGVldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlclN0eWxlU2hlZXQu
aAkocmV2aXNpb24gMjYyODk0KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyU3R5bGVTaGVl
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MywxMCArNDMsMTAgQEAgcHVibGljOgogICAgIHsKICAg
ICB9CiAKLSAgICBVc2VyU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgVVJM
JiB1cmwsIFZlY3RvcjxTdHJpbmc+JiYgd2hpdGVsaXN0LCBWZWN0b3I8U3RyaW5nPiYmIGJsb2Nr
bGlzdCwgVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBpbmplY3RlZEZyYW1lcywgVXNlclN0eWxl
TGV2ZWwgbGV2ZWwsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQgPSBXVEY6Om51bGxv
cHQpCisgICAgVXNlclN0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFVSTCYg
dXJsLCBWZWN0b3I8U3RyaW5nPiYmIGFsbG93bGlzdCwgVmVjdG9yPFN0cmluZz4mJiBibG9ja2xp
c3QsIFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgaW5qZWN0ZWRGcmFtZXMsIFVzZXJTdHlsZUxl
dmVsIGxldmVsLCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEID0gV1RGOjpudWxsb3B0
KQogICAgICAgICA6IG1fc291cmNlKHNvdXJjZSkKICAgICAgICAgLCBtX3VybCh1cmwpCi0gICAg
ICAgICwgbV93aGl0ZWxpc3QoV1RGTW92ZSh3aGl0ZWxpc3QpKQorICAgICAgICAsIG1fYWxsb3ds
aXN0KFdURk1vdmUoYWxsb3dsaXN0KSkKICAgICAgICAgLCBtX2Jsb2NrbGlzdChXVEZNb3ZlKGJs
b2NrbGlzdCkpCiAgICAgICAgICwgbV9pbmplY3RlZEZyYW1lcyhpbmplY3RlZEZyYW1lcykKICAg
ICAgICAgLCBtX2xldmVsKGxldmVsKQpAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAKICAgICBj
b25zdCBTdHJpbmcmIHNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlOyB9CiAgICAgY29u
c3QgVVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQotICAgIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiB3aGl0ZWxpc3QoKSBjb25zdCB7IHJldHVybiBtX3doaXRlbGlzdDsgfQorICAgIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBhbGxvd2xpc3QoKSBjb25zdCB7IHJldHVybiBtX2FsbG93bGlz
dDsgfQogICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9ja2xpc3QoKSBjb25zdCB7IHJldHVy
biBtX2Jsb2NrbGlzdDsgfQogICAgIFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgaW5qZWN0ZWRG
cmFtZXMoKSBjb25zdCB7IHJldHVybiBtX2luamVjdGVkRnJhbWVzOyB9CiAgICAgVXNlclN0eWxl
TGV2ZWwgbGV2ZWwoKSBjb25zdCB7IHJldHVybiBtX2xldmVsOyB9CkBAIC02NSw3ICs2NSw3IEBA
IHB1YmxpYzoKIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fc291cmNlOwogICAgIFVSTCBtX3VybDsK
LSAgICBWZWN0b3I8U3RyaW5nPiBtX3doaXRlbGlzdDsKKyAgICBWZWN0b3I8U3RyaW5nPiBtX2Fs
bG93bGlzdDsKICAgICBWZWN0b3I8U3RyaW5nPiBtX2Jsb2NrbGlzdDsKICAgICBVc2VyQ29udGVu
dEluamVjdGVkRnJhbWVzIG1faW5qZWN0ZWRGcmFtZXM7CiAgICAgVXNlclN0eWxlTGV2ZWwgbV9s
ZXZlbDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNo
ZS5oCShyZXZpc2lvbiAyNjI4OTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250Q2FjaGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTk4LDcgKzE5OCw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgYm9vbCBpc1N5c3RlbUZvbnRGb3JiaWRkZW5Gb3JFZGl0aW5nKGNvbnN0IFN0
cmluZyYpOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IHZvaWQgc2V0Rm9udFdoaXRlbGlzdChjb25zdCBWZWN0b3I8U3RyaW5nPiYpOworICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyB2b2lkIHNldEZvbnRBbGxvd2xpc3QoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mKTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKFdJTikKICAgICBJTUxhbmdGb250TGlua1R5cGUq
IGdldEZvbnRMaW5rSW50ZXJmYWNlKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCShy
ZXZpc2lvbiAyNjI4OTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgzMywxOSArODMzLDE5
IEBAIFN5bnRoZXNpc1BhaXIgY29tcHV0ZU5lY2Vzc2FyeVN5bnRoZXNpcygKICAgICByZXR1cm4g
U3ludGhlc2lzUGFpcihuZWVkc1N5bnRoZXRpY0JvbGQsIG5lZWRzU3ludGhldGljT2JsaXF1ZSk7
CiB9CiAKLXR5cGVkZWYgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4g
V2hpdGVsaXN0Owotc3RhdGljIFdoaXRlbGlzdCYgZm9udFdoaXRlbGlzdCgpCit0eXBlZGVmIEhh
c2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IEFsbG93bGlzdDsKK3N0YXRp
YyBBbGxvd2xpc3QmIGZvbnRBbGxvd2xpc3QoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxXaGl0ZWxpc3Q+IHdoaXRlbGlzdDsKLSAgICByZXR1cm4gd2hpdGVsaXN0OworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxBbGxvd2xpc3Q+IGFsbG93bGlzdDsKKyAgICByZXR1cm4gYWxsb3ds
aXN0OwogfQogCi12b2lkIEZvbnRDYWNoZTo6c2V0Rm9udFdoaXRlbGlzdChjb25zdCBWZWN0b3I8
U3RyaW5nPiYgaW5wdXRXaGl0ZWxpc3QpCit2b2lkIEZvbnRDYWNoZTo6c2V0Rm9udEFsbG93bGlz
dChjb25zdCBWZWN0b3I8U3RyaW5nPiYgaW5wdXRBbGxvd2xpc3QpCiB7Ci0gICAgV2hpdGVsaXN0
JiB3aGl0ZWxpc3QgPSBmb250V2hpdGVsaXN0KCk7Ci0gICAgd2hpdGVsaXN0LmNsZWFyKCk7Ci0g
ICAgZm9yIChhdXRvJiBpdGVtIDogaW5wdXRXaGl0ZWxpc3QpCi0gICAgICAgIHdoaXRlbGlzdC5h
ZGQoaXRlbSk7CisgICAgQWxsb3dsaXN0JiBhbGxvd2xpc3QgPSBmb250QWxsb3dsaXN0KCk7Cisg
ICAgYWxsb3dsaXN0LmNsZWFyKCk7CisgICAgZm9yIChhdXRvJiBpdGVtIDogaW5wdXRBbGxvd2xp
c3QpCisgICAgICAgIGFsbG93bGlzdC5hZGQoaXRlbSk7CiB9CiAKIGNsYXNzIEZvbnREYXRhYmFz
ZSB7CkBAIC0xMTc5LDggKzExNzksOCBAQCBzdHJ1Y3QgRm9udExvb2t1cCB7CiAKIHN0YXRpYyBG
b250TG9va3VwIHBsYXRmb3JtRm9udExvb2t1cFdpdGhGYW1pbHkoY29uc3QgQXRvbVN0cmluZyYg
ZmFtaWx5LCBGb250U2VsZWN0aW9uUmVxdWVzdCByZXF1ZXN0LCBmbG9hdCBzaXplLCBBbGxvd1Vz
ZXJJbnN0YWxsZWRGb250cyBhbGxvd1VzZXJJbnN0YWxsZWRGb250cykKIHsKLSAgICBjb25zdCBh
dXRvJiB3aGl0ZWxpc3QgPSBmb250V2hpdGVsaXN0KCk7Ci0gICAgaWYgKCFpc1N5c3RlbUZvbnQo
ZmFtaWx5LnN0cmluZygpKSAmJiB3aGl0ZWxpc3Quc2l6ZSgpICYmICF3aGl0ZWxpc3QuY29udGFp
bnMoZmFtaWx5KSkKKyAgICBjb25zdCBhdXRvJiBhbGxvd2xpc3QgPSBmb250QWxsb3dsaXN0KCk7
CisgICAgaWYgKCFpc1N5c3RlbUZvbnQoZmFtaWx5LnN0cmluZygpKSAmJiBhbGxvd2xpc3Quc2l6
ZSgpICYmICFhbGxvd2xpc3QuY29udGFpbnMoZmFtaWx5KSkKICAgICAgICAgcmV0dXJuIHsgbnVs
bHB0ciB9OwogCiAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGZhbWlseSwg
Ii5hcHBsZXN5c3RlbXVpZm9udHNlcmlmIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwCShyZXZpc2lvbiAyNjI4OTQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTQxLDcgKzE0MSw3IEBAIGJvb2wgaXNWYWxpZEFjY2VwdEhlYWRlclZhbHVlKGNvbnN0
IFN0cmkKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdmFsdWUubGVuZ3RoKCk7ICsraSkg
ewogICAgICAgICBVQ2hhciBjID0gdmFsdWVbaV07CiAKLSAgICAgICAgLy8gRmlyc3QgY2hlY2sg
Zm9yIGFscGhhbnVtZXJpYyBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucyB0aGVuIHdoaXRlbGlzdCBm
b3VyIGRlbGltaXRlciBjaGFyYWN0ZXJzLgorICAgICAgICAvLyBGaXJzdCBjaGVjayBmb3IgYWxw
aGFudW1lcmljIGZvciBwZXJmb3JtYW5jZSByZWFzb25zIHRoZW4gYWxsb3dsaXN0IGZvdXIgZGVs
aW1pdGVyIGNoYXJhY3RlcnMuCiAgICAgICAgIGlmIChpc0FTQ0lJQWxwaGFudW1lcmljKGMpIHx8
IGMgPT0gJywnIHx8IGMgPT0gJy8nIHx8IGMgPT0gJzsnIHx8IGMgPT0gJz0nKQogICAgICAgICAg
ICAgY29udGludWU7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GbG9hdGluZ09i
amVjdHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmxvYXRpbmdP
YmplY3RzLmgJKHJldmlzaW9uIDI2Mjg5NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9G
bG9hdGluZ09iamVjdHMuaAkod29ya2luZyBjb3B5KQpAQCAtODQsNyArODQsNyBAQCBwdWJsaWM6
CiAgICAgYm9vbCBpc0Rlc2NlbmRhbnQoKSBjb25zdCB7IHJldHVybiBtX2lzRGVzY2VuZGFudDsg
fQogICAgIHZvaWQgc2V0SXNEZXNjZW5kYW50KGJvb2wgaXNEZXNjZW5kYW50KSB7IG1faXNEZXNj
ZW5kYW50ID0gaXNEZXNjZW5kYW50OyB9CiAKLSAgICAvLyBGSVhNRTogQ2FsbGVycyBvZiB0aGVz
ZSBtZXRob2RzIGFyZSBkYW5nZXJvdXMgYW5kIHNob3VsZCBiZSB3aGl0ZWxpc3RlZCBleHBsaWNp
dGx5IG9yIHJlbW92ZWQuCisgICAgLy8gRklYTUU6IENhbGxlcnMgb2YgdGhlc2UgbWV0aG9kcyBh
cmUgZGFuZ2Vyb3VzIGFuZCBzaG91bGQgYmUgYWxsb3dlZCBleHBsaWNpdGx5IG9yIHJlbW92ZWQu
CiAgICAgUm9vdElubGluZUJveCogb3JpZ2luYXRpbmdMaW5lKCkgY29uc3QgeyByZXR1cm4gbV9v
cmlnaW5hdGluZ0xpbmUuZ2V0KCk7IH0KICAgICB2b2lkIGNsZWFyT3JpZ2luYXRpbmdMaW5lKCkg
eyBtX29yaWdpbmF0aW5nTGluZSA9IG51bGxwdHI7IH0KICAgICB2b2lkIHNldE9yaWdpbmF0aW5n
TGluZShSb290SW5saW5lQm94JiBsaW5lKSB7IG1fb3JpZ2luYXRpbmdMaW5lID0gbWFrZVdlYWtQ
dHIobGluZSk7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0eWxlL0VsZW1lbnRSdWxlQ29sbGVj
dG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdHlsZS9FbGVtZW50UnVsZUNv
bGxlY3Rvci5jcHAJKHJldmlzaW9uIDI2Mjg5NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N0eWxlL0Vs
ZW1lbnRSdWxlQ29sbGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAwLDcgKzIwMCw3IEBA
IHZvaWQgRWxlbWVudFJ1bGVDb2xsZWN0b3I6OnRyYW5zZmVyTWF0Y2gKICAgICAgICAgYWRkTWF0
Y2hlZFByb3BlcnRpZXMoewogICAgICAgICAgICAgJm1hdGNoZWRSdWxlLnJ1bGVEYXRhLT5zdHls
ZVJ1bGUoKS5wcm9wZXJ0aWVzKCksCiAgICAgICAgICAgICBzdGF0aWNfY2FzdDx1aW50MTZfdD4o
bWF0Y2hlZFJ1bGUucnVsZURhdGEtPmxpbmtNYXRjaFR5cGUoKSksCi0gICAgICAgICAgICBzdGF0
aWNfY2FzdDx1aW50MTZfdD4obWF0Y2hlZFJ1bGUucnVsZURhdGEtPnByb3BlcnR5V2hpdGVsaXN0
VHlwZSgpKSwKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PHVpbnQxNl90PihtYXRjaGVkUnVsZS5y
dWxlRGF0YS0+cHJvcGVydHlBbGxvd2xpc3RUeXBlKCkpLAogICAgICAgICAgICAgbWF0Y2hlZFJ1
bGUuc3R5bGVTY29wZU9yZGluYWwKICAgICAgICAgfSwgZGVjbGFyYXRpb25PcmlnaW4pOwogICAg
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0eWxlL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3R5bGUvRWxlbWVudFJ1bGVDb2xsZWN0b3IuaAko
cmV2aXNpb24gMjYyODk0KQorKysgU291cmNlL1dlYkNvcmUvc3R5bGUvRWxlbWVudFJ1bGVDb2xs
ZWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNjcsNyArNjcsNyBAQCBzdHJ1Y3QgTWF0Y2hlZFJ1
bGUgewogc3RydWN0IE1hdGNoZWRQcm9wZXJ0aWVzIHsKICAgICBSZWZQdHI8Y29uc3QgU3R5bGVQ
cm9wZXJ0aWVzPiBwcm9wZXJ0aWVzOwogICAgIHVpbnQxNl90IGxpbmtNYXRjaFR5cGUgeyBTZWxl
Y3RvckNoZWNrZXI6Ok1hdGNoQWxsIH07Ci0gICAgdWludDE2X3Qgd2hpdGVsaXN0VHlwZSB7IFBy
b3BlcnR5V2hpdGVsaXN0Tm9uZSB9OworICAgIHVpbnQxNl90IGFsbG93bGlzdFR5cGUgeyBQcm9w
ZXJ0eUFsbG93bGlzdE5vbmUgfTsKICAgICBTY29wZU9yZGluYWwgc3R5bGVTY29wZU9yZGluYWwg
eyBTY29wZU9yZGluYWw6OkVsZW1lbnQgfTsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0
eWxlL1Byb3BlcnR5Q2FzY2FkZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3R5
bGUvUHJvcGVydHlDYXNjYWRlLmNwcAkocmV2aXNpb24gMjYyODk0KQorKysgU291cmNlL1dlYkNv
cmUvc3R5bGUvUHJvcGVydHlDYXNjYWRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQyLDcgKzI0
Miw3IEBAIHZvaWQgUHJvcGVydHlDYXNjYWRlOjpzZXREZWZlcnJlZChDU1NQcm8KIGJvb2wgUHJv
cGVydHlDYXNjYWRlOjphZGRNYXRjaChjb25zdCBNYXRjaGVkUHJvcGVydGllcyYgbWF0Y2hlZFBy
b3BlcnRpZXMsIENhc2NhZGVMZXZlbCBjYXNjYWRlTGV2ZWwsIGJvb2wgaW1wb3J0YW50KQogewog
ICAgIGF1dG8mIHN0eWxlUHJvcGVydGllcyA9ICptYXRjaGVkUHJvcGVydGllcy5wcm9wZXJ0aWVz
OwotICAgIGF1dG8gcHJvcGVydHlXaGl0ZWxpc3RUeXBlID0gc3RhdGljX2Nhc3Q8UHJvcGVydHlX
aGl0ZWxpc3RUeXBlPihtYXRjaGVkUHJvcGVydGllcy53aGl0ZWxpc3RUeXBlKTsKKyAgICBhdXRv
IHByb3BlcnR5QWxsb3dsaXN0VHlwZSA9IHN0YXRpY19jYXN0PFByb3BlcnR5QWxsb3dsaXN0VHlw
ZT4obWF0Y2hlZFByb3BlcnRpZXMuYWxsb3dsaXN0VHlwZSk7CiAgICAgYm9vbCBoYXNJbXBvcnRh
bnRQcm9wZXJ0aWVzID0gZmFsc2U7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBjb3VudCA9
IHN0eWxlUHJvcGVydGllcy5wcm9wZXJ0eUNvdW50KCk7IGkgPCBjb3VudDsgKytpKSB7CkBAIC0y
NjIsMTAgKzI2MiwxMCBAQCBib29sIFByb3BlcnR5Q2FzY2FkZTo6YWRkTWF0Y2goY29uc3QgTWF0
CiAgICAgICAgIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCA9IGN1cnJlbnQuaWQoKTsKIAogI2lm
IEVOQUJMRShWSURFTykKLSAgICAgICAgaWYgKHByb3BlcnR5V2hpdGVsaXN0VHlwZSA9PSBQcm9w
ZXJ0eVdoaXRlbGlzdEN1ZSAmJiAhaXNWYWxpZEN1ZVN0eWxlUHJvcGVydHkocHJvcGVydHlJRCkp
CisgICAgICAgIGlmIChwcm9wZXJ0eUFsbG93bGlzdFR5cGUgPT0gUHJvcGVydHlBbGxvd2xpc3RD
dWUgJiYgIWlzVmFsaWRDdWVTdHlsZVByb3BlcnR5KHByb3BlcnR5SUQpKQogICAgICAgICAgICAg
Y29udGludWU7CiAjZW5kaWYKLSAgICAgICAgaWYgKHByb3BlcnR5V2hpdGVsaXN0VHlwZSA9PSBQ
cm9wZXJ0eVdoaXRlbGlzdE1hcmtlciAmJiAhaXNWYWxpZE1hcmtlclN0eWxlUHJvcGVydHkocHJv
cGVydHlJRCkpCisgICAgICAgIGlmIChwcm9wZXJ0eUFsbG93bGlzdFR5cGUgPT0gUHJvcGVydHlB
bGxvd2xpc3RNYXJrZXIgJiYgIWlzVmFsaWRNYXJrZXJTdHlsZVByb3BlcnR5KHByb3BlcnR5SUQp
KQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgaWYgKHNob3VsZEFwcGx5UHJvcGVy
dHlJblBhcnNlT3JkZXIocHJvcGVydHlJRCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdHlsZS9S
dWxlRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3R5bGUvUnVsZURhdGEu
Y3BwCShyZXZpc2lvbiAyNjI4OTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxlRGF0YS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNywyNSArMTM3LDI1IEBAIHN0YXRpYyBib29sIGNvbXB1
dGVDb250YWluc1VuY29tbW9uQXR0cmkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0YXRpYyBp
bmxpbmUgUHJvcGVydHlXaGl0ZWxpc3RUeXBlIGRldGVybWluZVByb3BlcnR5V2hpdGVsaXN0VHlw
ZShjb25zdCBDU1NTZWxlY3Rvciogc2VsZWN0b3IpCitzdGF0aWMgaW5saW5lIFByb3BlcnR5QWxs
b3dsaXN0VHlwZSBkZXRlcm1pbmVQcm9wZXJ0eUFsbG93bGlzdFR5cGUoY29uc3QgQ1NTU2VsZWN0
b3IqIHNlbGVjdG9yKQogewogICAgIGZvciAoY29uc3QgQ1NTU2VsZWN0b3IqIGNvbXBvbmVudCA9
IHNlbGVjdG9yOyBjb21wb25lbnQ7IGNvbXBvbmVudCA9IGNvbXBvbmVudC0+dGFnSGlzdG9yeSgp
KSB7CiAjaWYgRU5BQkxFKFZJREVPKQogICAgICAgICBpZiAoY29tcG9uZW50LT5tYXRjaCgpID09
IENTU1NlbGVjdG9yOjpQc2V1ZG9FbGVtZW50ICYmIChjb21wb25lbnQtPnBzZXVkb0VsZW1lbnRU
eXBlKCkgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1lbnRDdWUgfHwgY29tcG9uZW50LT52YWx1
ZSgpID09IFRleHRUcmFja0N1ZTo6Y3VlU2hhZG93UHNldWRvSWQoKSkpCi0gICAgICAgICAgICBy
ZXR1cm4gUHJvcGVydHlXaGl0ZWxpc3RDdWU7CisgICAgICAgICAgICByZXR1cm4gUHJvcGVydHlB
bGxvd2xpc3RDdWU7CiAjZW5kaWYKICAgICAgICAgaWYgKGNvbXBvbmVudC0+bWF0Y2goKSA9PSBD
U1NTZWxlY3Rvcjo6UHNldWRvRWxlbWVudCAmJiBjb21wb25lbnQtPnBzZXVkb0VsZW1lbnRUeXBl
KCkgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1lbnRNYXJrZXIpCi0gICAgICAgICAgICByZXR1
cm4gUHJvcGVydHlXaGl0ZWxpc3RNYXJrZXI7CisgICAgICAgICAgICByZXR1cm4gUHJvcGVydHlB
bGxvd2xpc3RNYXJrZXI7CiAKICAgICAgICAgaWYgKGNvbnN0IGF1dG8qIHNlbGVjdG9yTGlzdCA9
IHNlbGVjdG9yLT5zZWxlY3Rvckxpc3QoKSkgewogICAgICAgICAgICAgZm9yIChjb25zdCBhdXRv
KiBzdWJTZWxlY3RvciA9IHNlbGVjdG9yTGlzdC0+Zmlyc3QoKTsgc3ViU2VsZWN0b3I7IHN1YlNl
bGVjdG9yID0gQ1NTU2VsZWN0b3JMaXN0OjpuZXh0KHN1YlNlbGVjdG9yKSkgewotICAgICAgICAg
ICAgICAgIGF1dG8gd2hpdGVsaXN0VHlwZSA9IGRldGVybWluZVByb3BlcnR5V2hpdGVsaXN0VHlw
ZShzdWJTZWxlY3Rvcik7Ci0gICAgICAgICAgICAgICAgaWYgKHdoaXRlbGlzdFR5cGUgIT0gUHJv
cGVydHlXaGl0ZWxpc3ROb25lKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gd2hpdGVsaXN0
VHlwZTsKKyAgICAgICAgICAgICAgICBhdXRvIGFsbG93bGlzdFR5cGUgPSBkZXRlcm1pbmVQcm9w
ZXJ0eUFsbG93bGlzdFR5cGUoc3ViU2VsZWN0b3IpOworICAgICAgICAgICAgICAgIGlmIChhbGxv
d2xpc3RUeXBlICE9IFByb3BlcnR5QWxsb3dsaXN0Tm9uZSkKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGFsbG93bGlzdFR5cGU7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Ci0g
ICAgcmV0dXJuIFByb3BlcnR5V2hpdGVsaXN0Tm9uZTsKKyAgICByZXR1cm4gUHJvcGVydHlBbGxv
d2xpc3ROb25lOwogfQogCiBSdWxlRGF0YTo6UnVsZURhdGEoY29uc3QgU3R5bGVSdWxlJiBzdHls
ZVJ1bGUsIHVuc2lnbmVkIHNlbGVjdG9ySW5kZXgsIHVuc2lnbmVkIHNlbGVjdG9yTGlzdEluZGV4
LCB1bnNpZ25lZCBwb3NpdGlvbikKQEAgLTE2Nyw3ICsxNjcsNyBAQCBSdWxlRGF0YTo6UnVsZURh
dGEoY29uc3QgU3R5bGVSdWxlJiBzdHlsCiAgICAgLCBtX2Nhbk1hdGNoUHNldWRvRWxlbWVudChz
ZWxlY3RvckNhbk1hdGNoUHNldWRvRWxlbWVudCgqc2VsZWN0b3IoKSkpCiAgICAgLCBtX2NvbnRh
aW5zVW5jb21tb25BdHRyaWJ1dGVTZWxlY3Rvcihjb21wdXRlQ29udGFpbnNVbmNvbW1vbkF0dHJp
YnV0ZVNlbGVjdG9yKCpzZWxlY3RvcigpKSkKICAgICAsIG1fbGlua01hdGNoVHlwZShTZWxlY3Rv
ckNoZWNrZXI6OmRldGVybWluZUxpbmtNYXRjaFR5cGUoc2VsZWN0b3IoKSkpCi0gICAgLCBtX3By
b3BlcnR5V2hpdGVsaXN0VHlwZShkZXRlcm1pbmVQcm9wZXJ0eVdoaXRlbGlzdFR5cGUoc2VsZWN0
b3IoKSkpCisgICAgLCBtX3Byb3BlcnR5QWxsb3dsaXN0VHlwZShkZXRlcm1pbmVQcm9wZXJ0eUFs
bG93bGlzdFR5cGUoc2VsZWN0b3IoKSkpCiAgICAgLCBtX2lzRW5hYmxlZCh0cnVlKQogICAgICwg
bV9kZXNjZW5kYW50U2VsZWN0b3JJZGVudGlmaWVySGFzaGVzKFNlbGVjdG9yRmlsdGVyOjpjb2xs
ZWN0SGFzaGVzKCpzZWxlY3RvcigpKSkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0eWxlL1J1
bGVEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3R5bGUvUnVsZURhdGEuaAko
cmV2aXNpb24gMjYyODk0KQorKysgU291cmNlL1dlYkNvcmUvc3R5bGUvUnVsZURhdGEuaAkod29y
a2luZyBjb3B5KQpAQCAtMjcsMTEgKzI3LDExIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1l
c3BhY2UgU3R5bGUgewogCi1lbnVtIFByb3BlcnR5V2hpdGVsaXN0VHlwZSB7Ci0gICAgUHJvcGVy
dHlXaGl0ZWxpc3ROb25lICAgPSAwLAotICAgIFByb3BlcnR5V2hpdGVsaXN0TWFya2VyLAorZW51
bSBQcm9wZXJ0eUFsbG93bGlzdFR5cGUgeworICAgIFByb3BlcnR5QWxsb3dsaXN0Tm9uZSAgID0g
MCwKKyAgICBQcm9wZXJ0eUFsbG93bGlzdE1hcmtlciwKICNpZiBFTkFCTEUoVklERU8pCi0gICAg
UHJvcGVydHlXaGl0ZWxpc3RDdWUKKyAgICBQcm9wZXJ0eUFsbG93bGlzdEN1ZQogI2VuZGlmCiB9
OwogCkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICBNYXRjaEJhc2VkT25SdWxlSGFzaCBt
YXRjaEJhc2VkT25SdWxlSGFzaCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PE1hdGNoQmFz
ZWRPblJ1bGVIYXNoPihtX21hdGNoQmFzZWRPblJ1bGVIYXNoKTsgfQogICAgIGJvb2wgY29udGFp
bnNVbmNvbW1vbkF0dHJpYnV0ZVNlbGVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9jb250YWluc1Vu
Y29tbW9uQXR0cmlidXRlU2VsZWN0b3I7IH0KICAgICB1bnNpZ25lZCBsaW5rTWF0Y2hUeXBlKCkg
Y29uc3QgeyByZXR1cm4gbV9saW5rTWF0Y2hUeXBlOyB9Ci0gICAgUHJvcGVydHlXaGl0ZWxpc3RU
eXBlIHByb3BlcnR5V2hpdGVsaXN0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFBy
b3BlcnR5V2hpdGVsaXN0VHlwZT4obV9wcm9wZXJ0eVdoaXRlbGlzdFR5cGUpOyB9CisgICAgUHJv
cGVydHlBbGxvd2xpc3RUeXBlIHByb3BlcnR5QWxsb3dsaXN0VHlwZSgpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PFByb3BlcnR5QWxsb3dsaXN0VHlwZT4obV9wcm9wZXJ0eUFsbG93bGlzdFR5
cGUpOyB9CiAgICAgYm9vbCBpc0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzRW5hYmxlZDsg
fQogICAgIHZvaWQgc2V0RW5hYmxlZChib29sIHZhbHVlKSB7IG1faXNFbmFibGVkID0gdmFsdWU7
IH0KIApAQCAtODQsNyArODQsNyBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fY2FuTWF0Y2hQ
c2V1ZG9FbGVtZW50IDogMTsKICAgICB1bnNpZ25lZCBtX2NvbnRhaW5zVW5jb21tb25BdHRyaWJ1
dGVTZWxlY3RvciA6IDE7CiAgICAgdW5zaWduZWQgbV9saW5rTWF0Y2hUeXBlIDogMjsgLy8gIFNl
bGVjdG9yQ2hlY2tlcjo6TGlua01hdGNoTWFzawotICAgIHVuc2lnbmVkIG1fcHJvcGVydHlXaGl0
ZWxpc3RUeXBlIDogMjsKKyAgICB1bnNpZ25lZCBtX3Byb3BlcnR5QWxsb3dsaXN0VHlwZSA6IDI7
CiAgICAgdW5zaWduZWQgbV9pc0VuYWJsZWQgOiAxOwogICAgIFNlbGVjdG9yRmlsdGVyOjpIYXNo
ZXMgbV9kZXNjZW5kYW50U2VsZWN0b3JJZGVudGlmaWVySGFzaGVzOwogfTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNjI4OTQpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDIwLTA2LTEwICBCZXRoIERha2luICA8YmRha2luQGFw
cGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIGluc3RhbmNlcyBvZiB3aGl0ZWxpc3QgaW4gV2Vi
Q29yZSB3aXRoIGFsbG93bGlzdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjEzMDY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjph
ZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeSk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZXNldE9y
aWdpbkFjY2Vzc1doaXRlbGlzdHMpOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFVzZXJTdHlsZVNoZWV0Pjo6
ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxVc2VyU3R5bGVTaGVldD46OmRl
Y29kZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlOjphZGRPcmlnaW5BY2Nlc3NX
aGl0ZWxpc3RFbnRyeSk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlOjpyZW1vdmVP
cmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeSk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVu
ZGxlOjpyZXNldE9yaWdpbkFjY2Vzc1doaXRlbGlzdHMpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
Y29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpw
bGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKToKKwogMjAyMC0wNi0xMCAgQmV0aCBEYWtpbiAg
PGJkYWtpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVwbGFjZSBpbnN0YW5jZXMgb2YgYmxhY2ts
aXN0IGluIFdlYkNvcmUgd2l0aCBibG9ja2xpc3QKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuY3BwCShyZXZpc2lvbiAyNjI4OTQpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTAx
LDE3ICs5MDEsMTcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVxdQog
CiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjphZGRPcmlnaW5BY2Nlc3NXaGl0
ZWxpc3RFbnRyeShjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBkZXN0
aW5hdGlvblByb3RvY29sLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uSG9zdCwgYm9vbCBhbGxv
d0Rlc3RpbmF0aW9uU3ViZG9tYWlucykKIHsKLSAgICBTZWN1cml0eVBvbGljeTo6YWRkT3JpZ2lu
QWNjZXNzV2hpdGVsaXN0RW50cnkoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcoc291
cmNlT3JpZ2luKS5nZXQoKSwgZGVzdGluYXRpb25Qcm90b2NvbCwgZGVzdGluYXRpb25Ib3N0LCBh
bGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7CisgICAgU2VjdXJpdHlQb2xpY3k6OmFkZE9yaWdp
bkFjY2Vzc0FsbG93bGlzdEVudHJ5KFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKHNv
dXJjZU9yaWdpbikuZ2V0KCksIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGRlc3RpbmF0aW9uSG9zdCwg
YWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOwogfQogCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpyZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShjb25zdCBTdHJp
bmcmIHNvdXJjZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblByb3RvY29sLCBjb25z
dCBTdHJpbmcmIGRlc3RpbmF0aW9uSG9zdCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlu
cykKIHsKLSAgICBTZWN1cml0eVBvbGljeTo6cmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50
cnkoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcoc291cmNlT3JpZ2luKS5nZXQoKSwg
ZGVzdGluYXRpb25Qcm90b2NvbCwgZGVzdGluYXRpb25Ib3N0LCBhbGxvd0Rlc3RpbmF0aW9uU3Vi
ZG9tYWlucyk7CisgICAgU2VjdXJpdHlQb2xpY3k6OnJlbW92ZU9yaWdpbkFjY2Vzc0FsbG93bGlz
dEVudHJ5KFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKHNvdXJjZU9yaWdpbikuZ2V0
KCksIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGRlc3RpbmF0aW9uSG9zdCwgYWxsb3dEZXN0aW5hdGlv
blN1YmRvbWFpbnMpOwogfQogCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpy
ZXNldE9yaWdpbkFjY2Vzc1doaXRlbGlzdHMoKQogewotICAgIFNlY3VyaXR5UG9saWN5OjpyZXNl
dE9yaWdpbkFjY2Vzc1doaXRlbGlzdHMoKTsKKyAgICBTZWN1cml0eVBvbGljeTo6cmVzZXRPcmln
aW5BY2Nlc3NBbGxvd2xpc3RzKCk7CiB9CiAKIE9wdGlvbmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNr
ZXI+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzdGFydFRyYWNraW5nUmVzb3VyY2VM
b2FkKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgUmVzb3VyY2VMb2FkSWRlbnRpZmllciByZXNvdXJj
ZUlELCBib29sIGlzVG9wUmVzb3VyY2UpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAJKHJldmlzaW9uIDI2Mjg5NCkKKysrIFNvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTIwODAsNyArMjA4MCw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxVc2VyU3R5bGVTaGVldD46OmVu
Y28KIHsKICAgICBlbmNvZGVyIDw8IHVzZXJTdHlsZVNoZWV0LnNvdXJjZSgpOwogICAgIGVuY29k
ZXIgPDwgdXNlclN0eWxlU2hlZXQudXJsKCk7Ci0gICAgZW5jb2RlciA8PCB1c2VyU3R5bGVTaGVl
dC53aGl0ZWxpc3QoKTsKKyAgICBlbmNvZGVyIDw8IHVzZXJTdHlsZVNoZWV0LmFsbG93bGlzdCgp
OwogICAgIGVuY29kZXIgPDwgdXNlclN0eWxlU2hlZXQuYmxvY2tsaXN0KCk7CiAgICAgZW5jb2Rl
ci5lbmNvZGVFbnVtKHVzZXJTdHlsZVNoZWV0LmluamVjdGVkRnJhbWVzKCkpOwogICAgIGVuY29k
ZXIuZW5jb2RlRW51bSh1c2VyU3R5bGVTaGVldC5sZXZlbCgpKTsKQEAgLTIwOTcsOCArMjA5Nyw4
IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxVc2VyU3R5bGVTaGVldD46OmRlY28KICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHVybCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFZlY3RvcjxT
dHJpbmc+IHdoaXRlbGlzdDsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHdoaXRlbGlzdCkpCisg
ICAgVmVjdG9yPFN0cmluZz4gYWxsb3dsaXN0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYWxs
b3dsaXN0KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgVmVjdG9yPFN0cmluZz4gYmxv
Y2tsaXN0OwpAQCAtMjExOCw3ICsyMTE4LDcgQEAgYm9vbCBBcmd1bWVudENvZGVyPFVzZXJTdHls
ZVNoZWV0Pjo6ZGVjbwogICAgIGlmICghcGFnZUlEKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICB1c2VyU3R5bGVTaGVldCA9IFVzZXJTdHlsZVNoZWV0KHNvdXJjZSwgdXJsLCBXVEZNb3Zl
KHdoaXRlbGlzdCksIFdURk1vdmUoYmxvY2tsaXN0KSwgaW5qZWN0ZWRGcmFtZXMsIGxldmVsLCBX
VEZNb3ZlKCpwYWdlSUQpKTsKKyAgICB1c2VyU3R5bGVTaGVldCA9IFVzZXJTdHlsZVNoZWV0KHNv
dXJjZSwgdXJsLCBXVEZNb3ZlKGFsbG93bGlzdCksIFdURk1vdmUoYmxvY2tsaXN0KSwgaW5qZWN0
ZWRGcmFtZXMsIGxldmVsLCBXVEZNb3ZlKCpwYWdlSUQpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCShyZXZpc2lvbiAyNjI4OTQpCisrKyBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOTUsMjAgKzM5NSwyMCBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjpzZXRT
cGF0aWFsTmF2aWdhdGlvCiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OmFkZE9yaWdpbkFjY2Vzc1do
aXRlbGlzdEVudHJ5KGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luLCBjb25zdCBTdHJpbmcmIGRl
c3RpbmF0aW9uUHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25Ib3N0LCBib29sIGFs
bG93RGVzdGluYXRpb25TdWJkb21haW5zKQogewotICAgIFNlY3VyaXR5UG9saWN5OjphZGRPcmln
aW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhz
b3VyY2VPcmlnaW4pLmdldCgpLCBkZXN0aW5hdGlvblByb3RvY29sLCBkZXN0aW5hdGlvbkhvc3Qs
IGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKKyAgICBTZWN1cml0eVBvbGljeTo6YWRkT3Jp
Z2luQWNjZXNzQWxsb3dsaXN0RW50cnkoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmco
c291cmNlT3JpZ2luKS5nZXQoKSwgZGVzdGluYXRpb25Qcm90b2NvbCwgZGVzdGluYXRpb25Ib3N0
LCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVz
c2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpBZGRPcmlnaW5BY2Nlc3NXaGl0
ZWxpc3RFbnRyeSB7IHNvdXJjZU9yaWdpbiwgZGVzdGluYXRpb25Qcm90b2NvbCwgZGVzdGluYXRp
b25Ib3N0LCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyB9LCAwKTsKIAogfQogCiB2b2lkIElu
amVjdGVkQnVuZGxlOjpyZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShjb25zdCBTdHJp
bmcmIHNvdXJjZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblByb3RvY29sLCBjb25z
dCBTdHJpbmcmIGRlc3RpbmF0aW9uSG9zdCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlu
cykKIHsKLSAgICBTZWN1cml0eVBvbGljeTo6cmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50
cnkoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcoc291cmNlT3JpZ2luKS5nZXQoKSwg
ZGVzdGluYXRpb25Qcm90b2NvbCwgZGVzdGluYXRpb25Ib3N0LCBhbGxvd0Rlc3RpbmF0aW9uU3Vi
ZG9tYWlucyk7CisgICAgU2VjdXJpdHlQb2xpY3k6OnJlbW92ZU9yaWdpbkFjY2Vzc0FsbG93bGlz
dEVudHJ5KFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKHNvdXJjZU9yaWdpbikuZ2V0
KCksIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGRlc3RpbmF0aW9uSG9zdCwgYWxsb3dEZXN0aW5hdGlv
blN1YmRvbWFpbnMpOwogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6UmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkgeyBz
b3VyY2VPcmlnaW4sIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGRlc3RpbmF0aW9uSG9zdCwgYWxsb3dE
ZXN0aW5hdGlvblN1YmRvbWFpbnMgfSwgMCk7CiB9CiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnJl
c2V0T3JpZ2luQWNjZXNzV2hpdGVsaXN0cygpCiB7Ci0gICAgU2VjdXJpdHlQb2xpY3k6OnJlc2V0
T3JpZ2luQWNjZXNzV2hpdGVsaXN0cygpOworICAgIFNlY3VyaXR5UG9saWN5OjpyZXNldE9yaWdp
bkFjY2Vzc0FsbG93bGlzdHMoKTsKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJlc2V0T3JpZ2luQWNjZXNzV2hpdGVsaXN0cyB7
IH0sIDApOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJv
Y2Vzc0NvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2Nv
YS9XZWJQcm9jZXNzQ29jb2EubW0JKHJldmlzaW9uIDI2Mjg5NCkKKysrIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTIx
Miw3ICsyMTIsNyBAQCB2b2lkIFdlYlByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByCiAg
ICAgW05TVVJMQ2FjaGUgc2V0U2hhcmVkVVJMQ2FjaGU6dXJsQ2FjaGUuZ2V0KCldOwogCiAjaWYg
UExBVEZPUk0oTUFDKQotICAgIFdlYkNvcmU6OkZvbnRDYWNoZTo6c2V0Rm9udFdoaXRlbGlzdChw
YXJhbWV0ZXJzLmZvbnRXaGl0ZWxpc3QpOworICAgIFdlYkNvcmU6OkZvbnRDYWNoZTo6c2V0Rm9u
dEFsbG93bGlzdChwYXJhbWV0ZXJzLmZvbnRXaGl0ZWxpc3QpOwogI2VuZGlmCiAKICAgICBtX2Nv
bXBvc2l0aW5nUmVuZGVyU2VydmVyUG9ydCA9IFdURk1vdmUocGFyYW1ldGVycy5hY2NlbGVyYXRl
ZENvbXBvc2l0aW5nUG9ydCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyNjI4OTQpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAyMC0wNi0xMCAgQmV0aCBEYWtpbiAgPGJkYWtp
bkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVwbGFjZSBpbnN0YW5jZXMgb2Ygd2hpdGVsaXN0IGlu
IFdlYkNvcmUgd2l0aCBhbGxvd2xpc3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIxMzA2OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoK1tXZWJWaWV3
IF9hZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeVdpdGhTb3VyY2VPcmlnaW46ZGVzdGluYXRp
b25Qcm90b2NvbDpkZXN0aW5hdGlvbkhvc3Q6YWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnM6XSk6
CisgICAgICAgICgrW1dlYlZpZXcgX3JlbW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5V2l0
aFNvdXJjZU9yaWdpbjpkZXN0aW5hdGlvblByb3RvY29sOmRlc3RpbmF0aW9uSG9zdDphbGxvd0Rl
c3RpbmF0aW9uU3ViZG9tYWluczpdKToKKyAgICAgICAgKCtbV2ViVmlldyBfcmVzZXRPcmlnaW5B
Y2Nlc3NXaGl0ZWxpc3RzXSk6CisgICAgICAgICgrW1dlYlZpZXcgX3NldEZvbnRXaGl0ZWxpc3Q6
XSk6CisKIDIwMjAtMDYtMTAgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAog
ICAgICAgICBTb21lIHN0eWxlIGltcHJvdmVtZW50cyB0byBtYWluIHRocmVhZCBjb2RlCkluZGV4
OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCShyZXZpc2lvbiAy
NjI4OTQpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHdv
cmtpbmcgY29weSkKQEAgLTQ2OTcsMTcgKzQ2OTcsMTcgQEAgLSAoTlNQYXN0ZWJvYXJkICopX2lu
c2VydGlvblBhc3RlYm9hcmQKIAogKyAodm9pZClfYWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50
cnlXaXRoU291cmNlT3JpZ2luOihOU1N0cmluZyAqKXNvdXJjZU9yaWdpbiBkZXN0aW5hdGlvblBy
b3RvY29sOihOU1N0cmluZyAqKWRlc3RpbmF0aW9uUHJvdG9jb2wgZGVzdGluYXRpb25Ib3N0OihO
U1N0cmluZyAqKWRlc3RpbmF0aW9uSG9zdCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWluczooQk9P
TClhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucwogewotICAgIFdlYkNvcmU6OlNlY3VyaXR5UG9s
aWN5OjphZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bjo6Y3JlYXRlRnJvbVN0cmluZyhzb3VyY2VPcmlnaW4pLmdldCgpLCBkZXN0aW5hdGlvblByb3Rv
Y29sLCBkZXN0aW5hdGlvbkhvc3QsIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKKyAgICBX
ZWJDb3JlOjpTZWN1cml0eVBvbGljeTo6YWRkT3JpZ2luQWNjZXNzQWxsb3dsaXN0RW50cnkoV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcoc291cmNlT3JpZ2luKS5nZXQo
KSwgZGVzdGluYXRpb25Qcm90b2NvbCwgZGVzdGluYXRpb25Ib3N0LCBhbGxvd0Rlc3RpbmF0aW9u
U3ViZG9tYWlucyk7CiB9CiAKICsgKHZvaWQpX3JlbW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlzdEVu
dHJ5V2l0aFNvdXJjZU9yaWdpbjooTlNTdHJpbmcgKilzb3VyY2VPcmlnaW4gZGVzdGluYXRpb25Q
cm90b2NvbDooTlNTdHJpbmcgKilkZXN0aW5hdGlvblByb3RvY29sIGRlc3RpbmF0aW9uSG9zdDoo
TlNTdHJpbmcgKilkZXN0aW5hdGlvbkhvc3QgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnM6KEJP
T0wpYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMKIHsKLSAgICBXZWJDb3JlOjpTZWN1cml0eVBv
bGljeTo6cmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW46OmNyZWF0ZUZyb21TdHJpbmcoc291cmNlT3JpZ2luKS5nZXQoKSwgZGVzdGluYXRpb25Q
cm90b2NvbCwgZGVzdGluYXRpb25Ib3N0LCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7Cisg
ICAgV2ViQ29yZTo6U2VjdXJpdHlQb2xpY3k6OnJlbW92ZU9yaWdpbkFjY2Vzc0FsbG93bGlzdEVu
dHJ5KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKHNvdXJjZU9yaWdp
bikuZ2V0KCksIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGRlc3RpbmF0aW9uSG9zdCwgYWxsb3dEZXN0
aW5hdGlvblN1YmRvbWFpbnMpOwogfQogCiArICh2b2lkKV9yZXNldE9yaWdpbkFjY2Vzc1doaXRl
bGlzdHMKIHsKLSAgICBXZWJDb3JlOjpTZWN1cml0eVBvbGljeTo6cmVzZXRPcmlnaW5BY2Nlc3NX
aGl0ZWxpc3RzKCk7CisgICAgV2ViQ29yZTo6U2VjdXJpdHlQb2xpY3k6OnJlc2V0T3JpZ2luQWNj
ZXNzQWxsb3dsaXN0cygpOwogfQogCiAtIChCT09MKV9pc1ZpZXdWaXNpYmxlCkBAIC0xMDIyNCw3
ICsxMDIyNCw3IEBAICsgKHZvaWQpX3NldEZvbnRXaGl0ZWxpc3Q6KE5TQXJyYXkgKil3aGkKICNp
ZiAhUExBVEZPUk0oTUFDKQogICAgIFVOVVNFRF9QQVJBTSh3aGl0ZWxpc3QpOwogI2Vsc2UKLSAg
ICBXZWJDb3JlOjpGb250Q2FjaGU6OnNldEZvbnRXaGl0ZWxpc3QobWFrZVZlY3RvcjxTdHJpbmc+
KHdoaXRlbGlzdCkpOworICAgIFdlYkNvcmU6OkZvbnRDYWNoZTo6c2V0Rm9udEFsbG93bGlzdCht
YWtlVmVjdG9yPFN0cmluZz4od2hpdGVsaXN0KSk7CiAjZW5kaWYKIH0KIApJbmRleDogU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViVmlldy5jcHAJKHJldmlzaW9uIDI2Mjg5NCkKKysrIFNvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MTU2LDE5ICs3MTU2
LDE5IEBAIEhSRVNVTFQgV2ViVmlldzo6aW52YWxpZGF0ZUJhY2tpbmdTdG9yZSgKIAogSFJFU1VM
VCBXZWJWaWV3OjphZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShfSW5fIEJTVFIgc291cmNl
T3JpZ2luLCBfSW5fIEJTVFIgZGVzdGluYXRpb25Qcm90b2NvbCwgX0luXyBCU1RSIGRlc3RpbmF0
aW9uSG9zdCwgQk9PTCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucykKIHsKLSAgICBTZWN1cml0
eVBvbGljeTo6YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoU2VjdXJpdHlPcmlnaW46OmNy
ZWF0ZUZyb21TdHJpbmcodG9TdHJpbmcoc291cmNlT3JpZ2luKSkuZ2V0KCksIHRvU3RyaW5nKGRl
c3RpbmF0aW9uUHJvdG9jb2wpLCB0b1N0cmluZyhkZXN0aW5hdGlvbkhvc3QpLCBhbGxvd0Rlc3Rp
bmF0aW9uU3ViZG9tYWlucyk7CisgICAgU2VjdXJpdHlQb2xpY3k6OmFkZE9yaWdpbkFjY2Vzc0Fs
bG93bGlzdEVudHJ5KFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKHRvU3RyaW5nKHNv
dXJjZU9yaWdpbikpLmdldCgpLCB0b1N0cmluZyhkZXN0aW5hdGlvblByb3RvY29sKSwgdG9TdHJp
bmcoZGVzdGluYXRpb25Ib3N0KSwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOwogICAgIHJl
dHVybiBTX09LOwogfQogCiBIUkVTVUxUIFdlYlZpZXc6OnJlbW92ZU9yaWdpbkFjY2Vzc1doaXRl
bGlzdEVudHJ5KF9Jbl8gQlNUUiBzb3VyY2VPcmlnaW4sIF9Jbl8gQlNUUiBkZXN0aW5hdGlvblBy
b3RvY29sLCBfSW5fIEJTVFIgZGVzdGluYXRpb25Ib3N0LCBCT09MIGFsbG93RGVzdGluYXRpb25T
dWJkb21haW5zKQogewotICAgIFNlY3VyaXR5UG9saWN5OjpyZW1vdmVPcmlnaW5BY2Nlc3NXaGl0
ZWxpc3RFbnRyeShTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyh0b1N0cmluZyhzb3Vy
Y2VPcmlnaW4pKS5nZXQoKSwgdG9TdHJpbmcoZGVzdGluYXRpb25Qcm90b2NvbCksIHRvU3RyaW5n
KGRlc3RpbmF0aW9uSG9zdCksIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKKyAgICBTZWN1
cml0eVBvbGljeTo6cmVtb3ZlT3JpZ2luQWNjZXNzQWxsb3dsaXN0RW50cnkoU2VjdXJpdHlPcmln
aW46OmNyZWF0ZUZyb21TdHJpbmcodG9TdHJpbmcoc291cmNlT3JpZ2luKSkuZ2V0KCksIHRvU3Ry
aW5nKGRlc3RpbmF0aW9uUHJvdG9jb2wpLCB0b1N0cmluZyhkZXN0aW5hdGlvbkhvc3QpLCBhbGxv
d0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKIEhSRVNVTFQg
V2ViVmlldzo6cmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RzKCkKIHsKLSAgICBTZWN1cml0eVBv
bGljeTo6cmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RzKCk7CisgICAgU2VjdXJpdHlQb2xpY3k6
OnJlc2V0T3JpZ2luQWNjZXNzQWxsb3dsaXN0cygpOwogICAgIHJldHVybiBTX09LOwogfQogIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401657</attachid>
            <date>2020-06-11 10:09:59 -0700</date>
            <delta_ts>2020-06-11 12:43:58 -0700</delta_ts>
            <desc>Patch that leaves SQL in a functioning state</desc>
            <filename>for-review-3.txt</filename>
            <type>text/plain</type>
            <size>66893</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2Mjg5NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDk3IEBACisyMDIwLTA2LTEwICBCZXRoIERh
a2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIGluc3RhbmNlcyBvZiB3
aGl0ZWxpc3QgaW4gV2ViQ29yZSB3aXRoIGFsbG93bGlzdAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzMDY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNl
QXV0aG9yaXplci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZUF1dGhvcml6ZXI6OkRh
dGFiYXNlQXV0aG9yaXplcik6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZUF1dGhvcml6ZXI6
OmFkZEFsbG93ZWRGdW5jdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VBdXRob3Jp
emVyOjphbGxvd0Z1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlQXV0aG9yaXpl
cjo6YWRkV2hpdGVsaXN0ZWRGdW5jdGlvbnMpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VBdXRob3JpemVyLmg6CisgICAgICAgICogZG9tL0V4dGVuc2lv
blN0eWxlU2hlZXRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvblN0eWxlU2hlZXRz
Ojp1cGRhdGVJbmplY3RlZFN0eWxlU2hlZXRDYWNoZSBjb25zdCk6CisgICAgICAgICogbG9hZGVy
L0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc09uQWNj
ZXNzQ29udHJvbFNpbXBsZVJlcXVlc3RNZXRob2RBbGxvd2xpc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6aXNTaW1wbGVDcm9zc09yaWdpbkFjY2Vzc1JlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6
aXNPbkFjY2Vzc0NvbnRyb2xTaW1wbGVSZXF1ZXN0TWV0aG9kV2hpdGVsaXN0KTogRGVsZXRlZC4K
KyAgICAgICAgKiBsb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmg6CisgICAgICAgICog
bG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZUl0ZW06OmFsbG93c0Nyb3NzT3Jp
Z2luTWV0aG9kIGNvbnN0KToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlOjpzZXRPbmxpbmVB
bGxvd2xpc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZTo6aXNVUkxJbk9u
bGluZUFsbG93bGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlOjpzZXRP
bmxpbmVXaGl0ZWxpc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25D
YWNoZTo6aXNVUkxJbk9ubGluZVdoaXRlbGlzdCk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0
aW9uQ2FjaGU6Om9ubGluZUFsbG93bGlzdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBs
aWNhdGlvbkNhY2hlOjpvbmxpbmVXaGl0ZWxpc3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAq
IGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hMb2FkaW5nTWFuaWZlc3QpOgor
ICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlSG9zdDo6c2hvdWxkTG9hZFJlc291cmNlRnJv
bUFwcGxpY2F0aW9uQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhv
c3Q6OmdldEFwcGxpY2F0aW9uQ2FjaGVGYWxsYmFja1Jlc291cmNlKToKKyAgICAgICAgKiBsb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmZhbGxiYWNrQ2FjaGVHcm91cEZvclVSTCk6Cisg
ICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6b3BlbkRhdGFiYXNlKToK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bG9hZENhY2hlKToKKyAgICAg
ICAgKiBsb2FkZXIvYXBwY2FjaGUvTWFuaWZlc3RQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6cGFyc2VNYW5pZmVzdCk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL01hbmlmZXN0UGFy
c2VyLmg6CisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZTo6aW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5KToKKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5
T3JpZ2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjYW5SZXF1ZXN0
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjYW5EaXNwbGF5IGNv
bnN0KToKKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5UG9saWN5LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNlY3VyaXR5UG9saWN5Ojppc0FjY2Vzc0FsbG93ZWQpOgorICAgICAgICAoV2ViQ29yZTo6
U2VjdXJpdHlQb2xpY3k6OmFkZE9yaWdpbkFjY2Vzc0FsbG93bGlzdEVudHJ5KToKKyAgICAgICAg
KFdlYkNvcmU6OlNlY3VyaXR5UG9saWN5OjpyZW1vdmVPcmlnaW5BY2Nlc3NBbGxvd2xpc3RFbnRy
eSk6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eVBvbGljeTo6cmVzZXRPcmlnaW5BY2Nlc3NB
bGxvd2xpc3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5UG9saWN5Ojppc0FjY2Vzc1do
aXRlTGlzdGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5UG9saWN5Ojph
ZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpTZWN1cml0eVBvbGljeTo6cmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlQb2xpY3k6OnJlc2V0T3JpZ2luQWNjZXNz
V2hpdGVsaXN0cyk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9TZWN1cml0eVBvbGljeS5oOgor
ICAgICAgICAqIHBhZ2UvVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlVzZXJDb250ZW50VVJMUGF0dGVybjo6bWF0Y2hlc1BhdHRlcm5zKToKKyAgICAgICAgKiBw
YWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5oOgorICAgICAgICAqIHBhZ2UvVXNlclNjcmlwdC5o
OgorICAgICAgICAoV2ViQ29yZTo6VXNlclNjcmlwdDo6VXNlclNjcmlwdCk6CisgICAgICAgIChX
ZWJDb3JlOjpVc2VyU2NyaXB0OjphbGxvd2xpc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
VXNlclNjcmlwdDo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJTY3JpcHQ6
OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpVc2VyU2NyaXB0Ojp3aGl0ZWxpc3QgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAqIHBhZ2UvVXNlclN0eWxlU2hlZXQuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlVzZXJTdHlsZVNoZWV0OjpVc2VyU3R5bGVTaGVldCk6CisgICAgICAgIChXZWJDb3Jl
OjpVc2VyU3R5bGVTaGVldDo6YWxsb3dsaXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlVz
ZXJTdHlsZVNoZWV0Ojp3aGl0ZWxpc3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZvbnRBbGxvd2xp
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpzZXRGb250QWxsb3dsaXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OnBsYXRmb3JtRm9udExvb2t1cFdpdGhGYW1pbHkpOgorICAgICAgICAo
V2ViQ29yZTo6Zm9udFdoaXRlbGlzdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpGb250
Q2FjaGU6OnNldEZvbnRXaGl0ZWxpc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvSFRUUFBhcnNlcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNWYWxpZEFjY2VwdEhl
YWRlclZhbHVlKToKKyAgICAgICAgKiByZW5kZXJpbmcvRmxvYXRpbmdPYmplY3RzLmg6CisgICAg
ICAgICogc3R5bGUvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGU6OkVsZW1lbnRSdWxlQ29sbGVjdG9yOjp0cmFuc2Zlck1hdGNoZWRSdWxlcyk6CisgICAg
ICAgICogc3R5bGUvRWxlbWVudFJ1bGVDb2xsZWN0b3IuaDoKKyAgICAgICAgKiBzdHlsZS9Qcm9w
ZXJ0eUNhc2NhZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlByb3BlcnR5Q2FzY2Fk
ZTo6YWRkTWF0Y2gpOgorICAgICAgICAqIHN0eWxlL1J1bGVEYXRhLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlOjpkZXRlcm1pbmVQcm9wZXJ0eUFsbG93bGlzdFR5cGUpOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGU6OlJ1bGVEYXRhOjpSdWxlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZTo6ZGV0ZXJtaW5lUHJvcGVydHlXaGl0ZWxpc3RUeXBlKTogRGVsZXRlZC4KKyAgICAgICAg
KiBzdHlsZS9SdWxlRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlJ1bGVEYXRhOjpw
cm9wZXJ0eUFsbG93bGlzdFR5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlJ1
bGVEYXRhOjpwcm9wZXJ0eVdoaXRlbGlzdFR5cGUgY29uc3QpOiBEZWxldGVkLgorCiAyMDIwLTA2
LTEwICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXBsYWNlIGlu
c3RhbmNlcyBvZiBibGFja2xpc3QgaW4gV2ViQ29yZSB3aXRoIGJsb2NrbGlzdApJbmRleDogU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUF1dGhvcml6ZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VB
dXRob3JpemVyLmNwcAkocmV2aXNpb24gMjYyODk0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZUF1dGhvcml6ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
Myw3ICs0Myw3IEBAIERhdGFiYXNlQXV0aG9yaXplcjo6RGF0YWJhc2VBdXRob3JpemVyKGMKICAg
ICAsIG1fZGF0YWJhc2VJbmZvVGFibGVOYW1lKGRhdGFiYXNlSW5mb1RhYmxlTmFtZSkKIHsKICAg
ICByZXNldCgpOwotICAgIGFkZFdoaXRlbGlzdGVkRnVuY3Rpb25zKCk7CisgICAgYWRkQWxsb3dl
ZEZ1bmN0aW9ucygpOwogfQogCiB2b2lkIERhdGFiYXNlQXV0aG9yaXplcjo6cmVzZXQoKQpAQCAt
NTgsNjggKzU4LDY4IEBAIHZvaWQgRGF0YWJhc2VBdXRob3JpemVyOjpyZXNldERlbGV0ZXMoKQog
ICAgIG1faGFkRGVsZXRlcyA9IGZhbHNlOwogfQogCi12b2lkIERhdGFiYXNlQXV0aG9yaXplcjo6
YWRkV2hpdGVsaXN0ZWRGdW5jdGlvbnMoKQordm9pZCBEYXRhYmFzZUF1dGhvcml6ZXI6OmFkZEFs
bG93ZWRGdW5jdGlvbnMoKQogewogICAgIC8vIFNRTGl0ZSBmdW5jdGlvbnMgdXNlZCB0byBoZWxw
IGltcGxlbWVudCBzb21lIG9wZXJhdGlvbnMKICAgICAvLyBBTFRFUiBUQUJMRSBoZWxwZXJzCi0g
ICAgbV93aGl0ZWxpc3RlZEZ1bmN0aW9ucy5hZGQoInNxbGl0ZV9yZW5hbWVfdGFibGUiKTsKLSAg
ICBtX3doaXRlbGlzdGVkRnVuY3Rpb25zLmFkZCgic3FsaXRlX3JlbmFtZV90cmlnZ2VyIik7Cisg
ICAgbV9hbGxvd2VkRnVuY3Rpb25zLmFkZCgic3FsaXRlX3JlbmFtZV90YWJsZSIpOworICAgIG1f
YWxsb3dlZEZ1bmN0aW9ucy5hZGQoInNxbGl0ZV9yZW5hbWVfdHJpZ2dlciIpOwogICAgIC8vIEdM
T0IgaGVscGVycwotICAgIG1fd2hpdGVsaXN0ZWRGdW5jdGlvbnMuYWRkKCJnbG9iIik7CisgICAg
bV9hbGxvd2VkRnVuY3Rpb25zLmFkZCgiZ2xvYiIpOwogCiAgICAgLy8gU1FMaXRlIGNvcmUgZnVu
Y3Rpb25zCi0gICAgbV93aGl0ZWxpc3RlZEZ1bmN0aW9ucy5hZGQoImFicyIpOwotICAgIG1fd2hp
dGVsaXN0ZWRGdW5jdGlvbnMuYWRkKCJjaGFuZ2VzIik7Ci0gICAgbV93aGl0ZWxpc3RlZEZ1bmN0
aW9ucy5hZGQoImNvYWxlc2NlIik7Ci0gICAgbV93aGl0ZWxpc3RlZEZ1bmN0aW9ucy5hZGQoImds
b2IiKTsKLSAgICBtX3doaXRlbGlzdGVkRnVuY3Rpb25zLmFkZCgiaWZudWxsIik7Ci0gICAgbV93
aGl0ZWxpc3RlZEZ1bmN0aW9ucy5hZGQoImhleCIpOwotICAgIG1fd2hpdGVsaXN0ZWRGdW5jdGlv
bnMuYWRkKCJsYXN0X2luc2VydF9yb3dpZCIpOwotICAgIG1fd2hpdGVsaXN0ZWRGdW5jdGlvbnMu
YWRkKCJsZW5ndGgiKTsKLSAgICBtX3doaXRlbGlzdGVkRnVuY3Rpb25zLmFkZCgibGlrZSIpOwot
ICAgIG1fd2hpdGVsaXN0ZWRGdW5jdGlvbnMuYWRkKCJsb3dlciIpOwotICAgIG1fd2hpdGVsaXN0
ZWRGdW5jdGlvbnMuYWRkKCJsdHJpbSIpOwotICAgIG1fd2hpdGVsaXN0ZWRGdW5jdGlvbnMuYWRk
KCJtYXgiKTsKLSAgICBtX3doaXRlbGlzdGVkRnVuY3Rpb25zLmFkZCgibWluIik7Ci0gICAgbV93
aGl0ZWxpc3RlZEZ1bmN0aW9ucy5hZGQoIm51bGxpZiIpOwotICAgIG1fd2hpdGVsaXN0ZWRGdW5j
dGlvbnMuYWRkKCJxdW90ZSIpOwotICAgIG1fd2hpdGVsaXN0ZWRGdW5jdGlvbnMuYWRkKCJyZXBs
YWNlIik7Ci0gICAgbV93aGl0ZWxpc3RlZEZ1bmN0aW9ucy5hZGQoInJvdW5kIik7Ci0gICAgbV93
aGl0ZWxpc3RlZEZ1bmN0aW9ucy5hZGQoInJ0cmltIik7Ci0gICAgbV93aGl0ZWxpc3RlZEZ1bmN0
aW9ucy5hZGQoInNvdW5kZXgiKTsKLSAgICBtX3doaXRlbGlzdGVkRnVuY3Rpb25zLmFkZCgic3Fs
aXRlX3NvdXJjZV9pZCIpOwotICAgIG1fd2hpdGVsaXN0ZWRGdW5jdGlvbnMuYWRkKCJzcWxpdGVf
dmVyc2lvbiIpOwotICAgIG1fd2hpdGVsaXN0ZWRGdW5jdGlvbnMuYWRkKCJzdWJzdHIiKTsKLSAg
ICBtX3doaXRlbGlzdGVkRnVuY3Rpb25zLmFkZCgidG90YWxfY2hhbmdlcyIpOwotICAgIG1fd2hp
dGVsaXN0ZWRGdW5jdGlvbnMuYWRkKCJ0cmltIik7Ci0gICAgbV93aGl0ZWxpc3RlZEZ1bmN0aW9u
cy5hZGQoInR5cGVvZiIpOwotICAgIG1fd2hpdGVsaXN0ZWRGdW5jdGlvbnMuYWRkKCJ1cHBlciIp
OwotICAgIG1fd2hpdGVsaXN0ZWRGdW5jdGlvbnMuYWRkKCJ6ZXJvYmxvYiIpOworICAgIG1fYWxs
b3dlZEZ1bmN0aW9ucy5hZGQoImFicyIpOworICAgIG1fYWxsb3dlZEZ1bmN0aW9ucy5hZGQoImNo
YW5nZXMiKTsKKyAgICBtX2FsbG93ZWRGdW5jdGlvbnMuYWRkKCJjb2FsZXNjZSIpOworICAgIG1f
YWxsb3dlZEZ1bmN0aW9ucy5hZGQoImdsb2IiKTsKKyAgICBtX2FsbG93ZWRGdW5jdGlvbnMuYWRk
KCJpZm51bGwiKTsKKyAgICBtX2FsbG93ZWRGdW5jdGlvbnMuYWRkKCJoZXgiKTsKKyAgICBtX2Fs
bG93ZWRGdW5jdGlvbnMuYWRkKCJsYXN0X2luc2VydF9yb3dpZCIpOworICAgIG1fYWxsb3dlZEZ1
bmN0aW9ucy5hZGQoImxlbmd0aCIpOworICAgIG1fYWxsb3dlZEZ1bmN0aW9ucy5hZGQoImxpa2Ui
KTsKKyAgICBtX2FsbG93ZWRGdW5jdGlvbnMuYWRkKCJsb3dlciIpOworICAgIG1fYWxsb3dlZEZ1
bmN0aW9ucy5hZGQoImx0cmltIik7CisgICAgbV9hbGxvd2VkRnVuY3Rpb25zLmFkZCgibWF4Iik7
CisgICAgbV9hbGxvd2VkRnVuY3Rpb25zLmFkZCgibWluIik7CisgICAgbV9hbGxvd2VkRnVuY3Rp
b25zLmFkZCgibnVsbGlmIik7CisgICAgbV9hbGxvd2VkRnVuY3Rpb25zLmFkZCgicXVvdGUiKTsK
KyAgICBtX2FsbG93ZWRGdW5jdGlvbnMuYWRkKCJyZXBsYWNlIik7CisgICAgbV9hbGxvd2VkRnVu
Y3Rpb25zLmFkZCgicm91bmQiKTsKKyAgICBtX2FsbG93ZWRGdW5jdGlvbnMuYWRkKCJydHJpbSIp
OworICAgIG1fYWxsb3dlZEZ1bmN0aW9ucy5hZGQoInNvdW5kZXgiKTsKKyAgICBtX2FsbG93ZWRG
dW5jdGlvbnMuYWRkKCJzcWxpdGVfc291cmNlX2lkIik7CisgICAgbV9hbGxvd2VkRnVuY3Rpb25z
LmFkZCgic3FsaXRlX3ZlcnNpb24iKTsKKyAgICBtX2FsbG93ZWRGdW5jdGlvbnMuYWRkKCJzdWJz
dHIiKTsKKyAgICBtX2FsbG93ZWRGdW5jdGlvbnMuYWRkKCJ0b3RhbF9jaGFuZ2VzIik7CisgICAg
bV9hbGxvd2VkRnVuY3Rpb25zLmFkZCgidHJpbSIpOworICAgIG1fYWxsb3dlZEZ1bmN0aW9ucy5h
ZGQoInR5cGVvZiIpOworICAgIG1fYWxsb3dlZEZ1bmN0aW9ucy5hZGQoInVwcGVyIik7CisgICAg
bV9hbGxvd2VkRnVuY3Rpb25zLmFkZCgiemVyb2Jsb2IiKTsKIAogICAgIC8vIFNRTGl0ZSBkYXRl
IGFuZCB0aW1lIGZ1bmN0aW9ucwotICAgIG1fd2hpdGVsaXN0ZWRGdW5jdGlvbnMuYWRkKCJkYXRl
Iik7Ci0gICAgbV93aGl0ZWxpc3RlZEZ1bmN0aW9ucy5hZGQoInRpbWUiKTsKLSAgICBtX3doaXRl
bGlzdGVkRnVuY3Rpb25zLmFkZCgiZGF0ZXRpbWUiKTsKLSAgICBtX3doaXRlbGlzdGVkRnVuY3Rp
b25zLmFkZCgianVsaWFuZGF5Iik7Ci0gICAgbV93aGl0ZWxpc3RlZEZ1bmN0aW9ucy5hZGQoInN0
cmZ0aW1lIik7CisgICAgbV9hbGxvd2VkRnVuY3Rpb25zLmFkZCgiZGF0ZSIpOworICAgIG1fYWxs
b3dlZEZ1bmN0aW9ucy5hZGQoInRpbWUiKTsKKyAgICBtX2FsbG93ZWRGdW5jdGlvbnMuYWRkKCJk
YXRldGltZSIpOworICAgIG1fYWxsb3dlZEZ1bmN0aW9ucy5hZGQoImp1bGlhbmRheSIpOworICAg
IG1fYWxsb3dlZEZ1bmN0aW9ucy5hZGQoInN0cmZ0aW1lIik7CiAKICAgICAvLyBTUUxpdGUgYWdn
cmVnYXRlIGZ1bmN0aW9ucwogICAgIC8vIG1heCgpIGFuZCBtaW4oKSBhcmUgYWxyZWFkeSBpbiB0
aGUgbGlzdAotICAgIG1fd2hpdGVsaXN0ZWRGdW5jdGlvbnMuYWRkKCJhdmciKTsKLSAgICBtX3do
aXRlbGlzdGVkRnVuY3Rpb25zLmFkZCgiY291bnQiKTsKLSAgICBtX3doaXRlbGlzdGVkRnVuY3Rp
b25zLmFkZCgiZ3JvdXBfY29uY2F0Iik7Ci0gICAgbV93aGl0ZWxpc3RlZEZ1bmN0aW9ucy5hZGQo
InN1bSIpOwotICAgIG1fd2hpdGVsaXN0ZWRGdW5jdGlvbnMuYWRkKCJ0b3RhbCIpOworICAgIG1f
YWxsb3dlZEZ1bmN0aW9ucy5hZGQoImF2ZyIpOworICAgIG1fYWxsb3dlZEZ1bmN0aW9ucy5hZGQo
ImNvdW50Iik7CisgICAgbV9hbGxvd2VkRnVuY3Rpb25zLmFkZCgiZ3JvdXBfY29uY2F0Iik7Cisg
ICAgbV9hbGxvd2VkRnVuY3Rpb25zLmFkZCgic3VtIik7CisgICAgbV9hbGxvd2VkRnVuY3Rpb25z
LmFkZCgidG90YWwiKTsKIAogICAgIC8vIFNRTGl0ZSBGVFMgZnVuY3Rpb25zCi0gICAgbV93aGl0
ZWxpc3RlZEZ1bmN0aW9ucy5hZGQoIm1hdGNoIik7Ci0gICAgbV93aGl0ZWxpc3RlZEZ1bmN0aW9u
cy5hZGQoInNuaXBwZXQiKTsKLSAgICBtX3doaXRlbGlzdGVkRnVuY3Rpb25zLmFkZCgib2Zmc2V0
cyIpOwotICAgIG1fd2hpdGVsaXN0ZWRGdW5jdGlvbnMuYWRkKCJvcHRpbWl6ZSIpOworICAgIG1f
YWxsb3dlZEZ1bmN0aW9ucy5hZGQoIm1hdGNoIik7CisgICAgbV9hbGxvd2VkRnVuY3Rpb25zLmFk
ZCgic25pcHBldCIpOworICAgIG1fYWxsb3dlZEZ1bmN0aW9ucy5hZGQoIm9mZnNldHMiKTsKKyAg
ICBtX2FsbG93ZWRGdW5jdGlvbnMuYWRkKCJvcHRpbWl6ZSIpOwogCiAgICAgLy8gU1FMaXRlIElD
VSBmdW5jdGlvbnMKICAgICAvLyBsaWtlKCksIGxvd2VyKCkgYW5kIHVwcGVyKCkgYXJlIGFscmVh
ZHkgaW4gdGhlIGxpc3QKLSAgICBtX3doaXRlbGlzdGVkRnVuY3Rpb25zLmFkZCgicmVnZXhwIik7
CisgICAgbV9hbGxvd2VkRnVuY3Rpb25zLmFkZCgicmVnZXhwIik7CiB9CiAKIGludCBEYXRhYmFz
ZUF1dGhvcml6ZXI6OmNyZWF0ZVRhYmxlKGNvbnN0IFN0cmluZyYgdGFibGVOYW1lKQpAQCAtMzU5
LDcgKzM1OSw3IEBAIGludCBEYXRhYmFzZUF1dGhvcml6ZXI6OmFsbG93RGV0YWNoKGNvbnMKIAog
aW50IERhdGFiYXNlQXV0aG9yaXplcjo6YWxsb3dGdW5jdGlvbihjb25zdCBTdHJpbmcmIGZ1bmN0
aW9uTmFtZSkKIHsKLSAgICBpZiAobV9zZWN1cml0eUVuYWJsZWQgJiYgIW1fd2hpdGVsaXN0ZWRG
dW5jdGlvbnMuY29udGFpbnMoZnVuY3Rpb25OYW1lKSkKKyAgICBpZiAobV9zZWN1cml0eUVuYWJs
ZWQgJiYgIW1fYWxsb3dlZEZ1bmN0aW9ucy5jb250YWlucyhmdW5jdGlvbk5hbWUpKQogICAgICAg
ICByZXR1cm4gU1FMQXV0aERlbnk7CiAKICAgICByZXR1cm4gU1FMQXV0aEFsbG93OwpJbmRleDog
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUF1dGhvcml6ZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNl
QXV0aG9yaXplci5oCShyZXZpc2lvbiAyNjI4OTQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmRhdGFiYXNlL0RhdGFiYXNlQXV0aG9yaXplci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQs
NyArMTA0LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IERhdGFiYXNlQXV0
aG9yaXplcihjb25zdCBTdHJpbmcmIGRhdGFiYXNlSW5mb1RhYmxlTmFtZSk7Ci0gICAgdm9pZCBh
ZGRXaGl0ZWxpc3RlZEZ1bmN0aW9ucygpOworICAgIHZvaWQgYWRkQWxsb3dlZEZ1bmN0aW9ucygp
OwogICAgIGludCBkZW55QmFzZWRPblRhYmxlTmFtZShjb25zdCBTdHJpbmcmKSBjb25zdDsKICAg
ICBpbnQgdXBkYXRlRGVsZXRlc0Jhc2VkT25UYWJsZU5hbWUoY29uc3QgU3RyaW5nJik7CiAgICAg
Ym9vbCBhbGxvd1dyaXRlKCk7CkBAIC0xMTcsNyArMTE3LDcgQEAgcHJpdmF0ZToKIAogICAgIGNv
bnN0IFN0cmluZyBtX2RhdGFiYXNlSW5mb1RhYmxlTmFtZTsKIAotICAgIEhhc2hTZXQ8U3RyaW5n
LCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IG1fd2hpdGVsaXN0ZWRGdW5jdGlvbnM7CisgICAg
SGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4gbV9hbGxvd2VkRnVuY3Rp
b25zOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUv
ZG9tL0V4dGVuc2lvblN0eWxlU2hlZXRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9kb20vRXh0ZW5zaW9uU3R5bGVTaGVldHMuY3BwCShyZXZpc2lvbiAyNjI4OTQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9kb20vRXh0ZW5zaW9uU3R5bGVTaGVldHMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNDgsNyArMTQ4LDcgQEAgdm9pZCBFeHRlbnNpb25TdHlsZVNoZWV0czo6dXBkYXRlSW5qZWN0
ZQogICAgICAgICBpZiAodXNlclN0eWxlU2hlZXQuaW5qZWN0ZWRGcmFtZXMoKSA9PSBVc2VyQ29u
dGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJblRvcEZyYW1lT25seSAmJiBtX2RvY3VtZW50Lm93
bmVyRWxlbWVudCgpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlmICghVXNlckNv
bnRlbnRVUkxQYXR0ZXJuOjptYXRjaGVzUGF0dGVybnMobV9kb2N1bWVudC51cmwoKSwgdXNlclN0
eWxlU2hlZXQud2hpdGVsaXN0KCksIHVzZXJTdHlsZVNoZWV0LmJsb2NrbGlzdCgpKSkKKyAgICAg
ICAgaWYgKCFVc2VyQ29udGVudFVSTFBhdHRlcm46Om1hdGNoZXNQYXR0ZXJucyhtX2RvY3VtZW50
LnVybCgpLCB1c2VyU3R5bGVTaGVldC5hbGxvd2xpc3QoKSwgdXNlclN0eWxlU2hlZXQuYmxvY2ts
aXN0KCkpKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGFkZFN0eWxlU2hlZXQodXNl
clN0eWxlU2hlZXQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNj
ZXNzQ29udHJvbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3Nz
T3JpZ2luQWNjZXNzQ29udHJvbC5jcHAJKHJldmlzaW9uIDI2Mjg5NCkKKysrIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00NSwxNCArNDUsMTQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1ib29sIGlzT25BY2Nl
c3NDb250cm9sU2ltcGxlUmVxdWVzdE1ldGhvZFdoaXRlbGlzdChjb25zdCBTdHJpbmcmIG1ldGhv
ZCkKK2Jvb2wgaXNPbkFjY2Vzc0NvbnRyb2xTaW1wbGVSZXF1ZXN0TWV0aG9kQWxsb3dsaXN0KGNv
bnN0IFN0cmluZyYgbWV0aG9kKQogewogICAgIHJldHVybiBtZXRob2QgPT0gIkdFVCIgfHwgbWV0
aG9kID09ICJIRUFEIiB8fCBtZXRob2QgPT0gIlBPU1QiOwogfQogCiBib29sIGlzU2ltcGxlQ3Jv
c3NPcmlnaW5BY2Nlc3NSZXF1ZXN0KGNvbnN0IFN0cmluZyYgbWV0aG9kLCBjb25zdCBIVFRQSGVh
ZGVyTWFwJiBoZWFkZXJNYXApCiB7Ci0gICAgaWYgKCFpc09uQWNjZXNzQ29udHJvbFNpbXBsZVJl
cXVlc3RNZXRob2RXaGl0ZWxpc3QobWV0aG9kKSkKKyAgICBpZiAoIWlzT25BY2Nlc3NDb250cm9s
U2ltcGxlUmVxdWVzdE1ldGhvZEFsbG93bGlzdChtZXRob2QpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICBmb3IgKGNvbnN0IGF1dG8mIGhlYWRlciA6IGhlYWRlck1hcCkgewpJbmRleDog
U291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuaAko
cmV2aXNpb24gMjYyODk0KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNj
ZXNzQ29udHJvbC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBAIGNsYXNzIFNlY3Vy
aXR5T3JpZ2luOwogc3RydWN0IFJlc291cmNlTG9hZGVyT3B0aW9uczsKIAogV0VCQ09SRV9FWFBP
UlQgYm9vbCBpc1NpbXBsZUNyb3NzT3JpZ2luQWNjZXNzUmVxdWVzdChjb25zdCBTdHJpbmcmIG1l
dGhvZCwgY29uc3QgSFRUUEhlYWRlck1hcCYpOwotYm9vbCBpc09uQWNjZXNzQ29udHJvbFNpbXBs
ZVJlcXVlc3RNZXRob2RXaGl0ZWxpc3QoY29uc3QgU3RyaW5nJik7Citib29sIGlzT25BY2Nlc3ND
b250cm9sU2ltcGxlUmVxdWVzdE1ldGhvZEFsbG93bGlzdChjb25zdCBTdHJpbmcmKTsKIAogdm9p
ZCB1cGRhdGVSZXF1ZXN0UmVmZXJyZXIoUmVzb3VyY2VSZXF1ZXN0JiwgUmVmZXJyZXJQb2xpY3ks
IGNvbnN0IFN0cmluZyYpOwogICAgIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3Nz
T3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmNwcAkocmV2aXNpb24g
MjYyODk0KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0UmVz
dWx0Q2FjaGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NCw3ICs4NCw3IEBAIE9wdGlvbmFsPFN0
cmluZz4gQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXMKIAogYm9vbCBDcm9zc09yaWdpblByZWZsaWdo
dFJlc3VsdENhY2hlSXRlbTo6YWxsb3dzQ3Jvc3NPcmlnaW5NZXRob2QoY29uc3QgU3RyaW5nJiBt
ZXRob2QsIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5KSBj
b25zdAogewotICAgIHJldHVybiBtX21ldGhvZHMuY29udGFpbnMobWV0aG9kKSB8fCAobV9tZXRo
b2RzLmNvbnRhaW5zKCIqIikgJiYgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgIT0gU3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3k6OlVzZSkgfHwgaXNPbkFjY2Vzc0NvbnRyb2xTaW1wbGVSZXF1ZXN0TWV0
aG9kV2hpdGVsaXN0KG1ldGhvZCk7CisgICAgcmV0dXJuIG1fbWV0aG9kcy5jb250YWlucyhtZXRo
b2QpIHx8IChtX21ldGhvZHMuY29udGFpbnMoIioiKSAmJiBzdG9yZWRDcmVkZW50aWFsc1BvbGlj
eSAhPSBTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6VXNlKSB8fCBpc09uQWNjZXNzQ29udHJvbFNp
bXBsZVJlcXVlc3RNZXRob2RBbGxvd2xpc3QobWV0aG9kKTsKIH0KIAogT3B0aW9uYWw8U3RyaW5n
PiBDcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlSXRlbTo6dmFsaWRhdGVDcm9zc09yaWdp
bkhlYWRlcnMoY29uc3QgSFRUUEhlYWRlck1hcCYgcmVxdWVzdEhlYWRlcnMsIFN0b3JlZENyZWRl
bnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5KSBjb25zdApJbmRleDogU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlLmNwcAko
cmV2aXNpb24gMjYyODk0KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjQsMTYgKzEyNCwxNiBAQCBBcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2UqIEFwcGxpY2F0aW9uQ2FjCiAgICAgcmV0dXJuIHJlc291cmNl
Rm9yVVJMKHVybC5zdHJpbmcoKSk7CiB9CiAKLXZvaWQgQXBwbGljYXRpb25DYWNoZTo6c2V0T25s
aW5lV2hpdGVsaXN0KGNvbnN0IFZlY3RvcjxVUkw+JiBvbmxpbmVXaGl0ZWxpc3QpCit2b2lkIEFw
cGxpY2F0aW9uQ2FjaGU6OnNldE9ubGluZUFsbG93bGlzdChjb25zdCBWZWN0b3I8VVJMPiYgb25s
aW5lQWxsb3dsaXN0KQogewotICAgIEFTU0VSVChtX29ubGluZVdoaXRlbGlzdC5pc0VtcHR5KCkp
OwotICAgIG1fb25saW5lV2hpdGVsaXN0ID0gb25saW5lV2hpdGVsaXN0OyAKKyAgICBBU1NFUlQo
bV9vbmxpbmVBbGxvd2xpc3QuaXNFbXB0eSgpKTsKKyAgICBtX29ubGluZUFsbG93bGlzdCA9IG9u
bGluZUFsbG93bGlzdDsKIH0KIAotYm9vbCBBcHBsaWNhdGlvbkNhY2hlOjppc1VSTEluT25saW5l
V2hpdGVsaXN0KGNvbnN0IFVSTCYgdXJsKQorYm9vbCBBcHBsaWNhdGlvbkNhY2hlOjppc1VSTElu
T25saW5lQWxsb3dsaXN0KGNvbnN0IFVSTCYgdXJsKQogewotICAgIGZvciAoYXV0byYgd2hpdGVs
aXN0VVJMIDogbV9vbmxpbmVXaGl0ZWxpc3QpIHsKLSAgICAgICAgaWYgKHByb3RvY29sSG9zdEFu
ZFBvcnRBcmVFcXVhbCh1cmwsIHdoaXRlbGlzdFVSTCkgJiYgdXJsLnN0cmluZygpLnN0YXJ0c1dp
dGgod2hpdGVsaXN0VVJMLnN0cmluZygpKSkKKyAgICBmb3IgKGF1dG8mIGFsbG93bGlzdFVSTCA6
IG1fb25saW5lQWxsb3dsaXN0KSB7CisgICAgICAgIGlmIChwcm90b2NvbEhvc3RBbmRQb3J0QXJl
RXF1YWwodXJsLCBhbGxvd2xpc3RVUkwpICYmIHVybC5zdHJpbmcoKS5zdGFydHNXaXRoKGFsbG93
bGlzdFVSTC5zdHJpbmcoKSkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAg
cmV0dXJuIGZhbHNlOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZS5oCShyZXZpc2lvbiAyNjI4OTQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01
OCw5ICs1OCw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0QWxsb3dzQWxsTmV0d29ya1JlcXVl
c3RzKGJvb2wgdmFsdWUpIHsgbV9hbGxvd0FsbE5ldHdvcmtSZXF1ZXN0cyA9IHZhbHVlOyB9CiAg
ICAgYm9vbCBhbGxvd3NBbGxOZXR3b3JrUmVxdWVzdHMoKSBjb25zdCB7IHJldHVybiBtX2FsbG93
QWxsTmV0d29ya1JlcXVlc3RzOyB9Ci0gICAgdm9pZCBzZXRPbmxpbmVXaGl0ZWxpc3QoY29uc3Qg
VmVjdG9yPFVSTD4mIG9ubGluZVdoaXRlbGlzdCk7Ci0gICAgY29uc3QgVmVjdG9yPFVSTD4mIG9u
bGluZVdoaXRlbGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1fb25saW5lV2hpdGVsaXN0OyB9Ci0gICAg
Ym9vbCBpc1VSTEluT25saW5lV2hpdGVsaXN0KGNvbnN0IFVSTCYpOyAvLyBUaGVyZSBpcyBhbiBl
bnRyeSBpbiBvbmxpbmUgd2hpdGVsaXN0IHRoYXQgaGFzIHRoZSBzYW1lIG9yaWdpbiBhcyB0aGUg
cmVzb3VyY2UncyBVUkwgYW5kIHRoYXQgaXMgYSBwcmVmaXggbWF0Y2ggZm9yIHRoZSByZXNvdXJj
ZSdzIFVSTC4KKyAgICB2b2lkIHNldE9ubGluZUFsbG93bGlzdChjb25zdCBWZWN0b3I8VVJMPiYp
OworICAgIGNvbnN0IFZlY3RvcjxVUkw+JiBvbmxpbmVBbGxvd2xpc3QoKSBjb25zdCB7IHJldHVy
biBtX29ubGluZUFsbG93bGlzdDsgfQorICAgIGJvb2wgaXNVUkxJbk9ubGluZUFsbG93bGlzdChj
b25zdCBVUkwmKTsgLy8gVGhlcmUgaXMgYW4gZW50cnkgaW4gb25saW5lIGFsbG93bGlzdCB0aGF0
IGhhcyB0aGUgc2FtZSBvcmlnaW4gYXMgdGhlIHJlc291cmNlJ3MgVVJMIGFuZCB0aGF0IGlzIGEg
cHJlZml4IG1hdGNoIGZvciB0aGUgcmVzb3VyY2UncyBVUkwuCiAKICAgICB2b2lkIHNldEZhbGxi
YWNrVVJMcyhjb25zdCBGYWxsYmFja1VSTFZlY3RvciYpOwogICAgIGNvbnN0IEZhbGxiYWNrVVJM
VmVjdG9yJiBmYWxsYmFja1VSTHMoKSBjb25zdCB7IHJldHVybiBtX2ZhbGxiYWNrVVJMczsgfQpA
QCAtODksNyArODksNyBAQCBwcml2YXRlOgogICAgIFdlYWtQdHI8QXBwbGljYXRpb25DYWNoZVJl
c291cmNlPiBtX21hbmlmZXN0OwogCiAgICAgYm9vbCBtX2FsbG93QWxsTmV0d29ya1JlcXVlc3Rz
IHsgZmFsc2UgfTsKLSAgICBWZWN0b3I8VVJMPiBtX29ubGluZVdoaXRlbGlzdDsKKyAgICBWZWN0
b3I8VVJMPiBtX29ubGluZUFsbG93bGlzdDsKICAgICBGYWxsYmFja1VSTFZlY3RvciBtX2ZhbGxi
YWNrVVJMczsKIAogICAgIC8vIFRoZSB0b3RhbCBzaXplIG9mIHRoZSByZXNvdXJjZXMgYmVsb25n
aW5nIHRvIHRoaXMgQXBwbGljYXRpb24gQ2FjaGUgaW5zdGFuY2UuCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3Vw
LmNwcAkocmV2aXNpb24gMjYyODk0KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0MSw3ICs2NDEs
NyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hCiAgICAgZm9yIChh
dXRvJiBmYWxsYmFja1VSTCA6IG1hbmlmZXN0LmZhbGxiYWNrVVJMcykKICAgICAgICAgYWRkRW50
cnkoZmFsbGJhY2tVUkwuc2Vjb25kLnN0cmluZygpLCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6
OkZhbGxiYWNrKTsKICAgICAKLSAgICBtX2NhY2hlQmVpbmdVcGRhdGVkLT5zZXRPbmxpbmVXaGl0
ZWxpc3QobWFuaWZlc3Qub25saW5lV2hpdGVsaXN0ZWRVUkxzKTsKKyAgICBtX2NhY2hlQmVpbmdV
cGRhdGVkLT5zZXRPbmxpbmVBbGxvd2xpc3QobWFuaWZlc3Qub25saW5lQWxsb3dlZFVSTHMpOwog
ICAgIG1fY2FjaGVCZWluZ1VwZGF0ZWQtPnNldEZhbGxiYWNrVVJMcyhtYW5pZmVzdC5mYWxsYmFj
a1VSTHMpOwogICAgIG1fY2FjaGVCZWluZ1VwZGF0ZWQtPnNldEFsbG93c0FsbE5ldHdvcmtSZXF1
ZXN0cyhtYW5pZmVzdC5hbGxvd0FsbE5ldHdvcmtSZXF1ZXN0cyk7CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0
LmNwcAkocmV2aXNpb24gMjYyODk0KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMwLDkgKzQzMCw5
IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZUhvc3Q6OnNob3VsZExvYWRSZXMKICAgICAvLyBpbiB0
aGUgYXBwbGljYXRpb24gY2FjaGUsIHRoZW4gZ2V0IHRoZSByZXNvdXJjZSBmcm9tIHRoZSBjYWNo
ZSAoaW5zdGVhZCBvZiBmZXRjaGluZyBpdCkuCiAgICAgcmVzb3VyY2UgPSBjYWNoZS0+cmVzb3Vy
Y2VGb3JVUkwocmVxdWVzdC51cmwoKS5zdHJpbmcoKSk7CiAKLSAgICAvLyBSZXNvdXJjZXMgdGhh
dCBtYXRjaCBmYWxsYmFjayBuYW1lc3BhY2VzIG9yIG9ubGluZSB3aGl0ZWxpc3QgZW50cmllcyBh
cmUgZmV0Y2hlZCBmcm9tIHRoZSBuZXR3b3JrLAorICAgIC8vIFJlc291cmNlcyB0aGF0IG1hdGNo
IGZhbGxiYWNrIG5hbWVzcGFjZXMgb3Igb25saW5lIGFsbG93bGlzdCBlbnRyaWVzIGFyZSBmZXRj
aGVkIGZyb20gdGhlIG5ldHdvcmssCiAgICAgLy8gdW5sZXNzIHRoZXkgYXJlIGFsc28gY2FjaGVk
LgotICAgIGlmICghcmVzb3VyY2UgJiYgKGNhY2hlLT5hbGxvd3NBbGxOZXR3b3JrUmVxdWVzdHMo
KSB8fCBjYWNoZS0+dXJsTWF0Y2hlc0ZhbGxiYWNrTmFtZXNwYWNlKHJlcXVlc3QudXJsKCkpIHx8
IGNhY2hlLT5pc1VSTEluT25saW5lV2hpdGVsaXN0KHJlcXVlc3QudXJsKCkpKSkKKyAgICBpZiAo
IXJlc291cmNlICYmIChjYWNoZS0+YWxsb3dzQWxsTmV0d29ya1JlcXVlc3RzKCkgfHwgY2FjaGUt
PnVybE1hdGNoZXNGYWxsYmFja05hbWVzcGFjZShyZXF1ZXN0LnVybCgpKSB8fCBjYWNoZS0+aXNV
UkxJbk9ubGluZUFsbG93bGlzdChyZXF1ZXN0LnVybCgpKSkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIC8vIFJlc291cmNlcyB0aGF0IGFyZSBub3QgcHJlc2VudCBpbiB0aGUgbWFuaWZl
c3Qgd2lsbCBhbHdheXMgZmFpbCB0byBsb2FkIChhdCBsZWFzdCwgYWZ0ZXIgdGhlCkBAIC00NTUs
NyArNDU1LDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6Z2V0QXBwbGljYXRpbwogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBVUkwgZmFsbGJhY2tVUkw7Ci0gICAgaWYgKGNhY2hl
LT5pc1VSTEluT25saW5lV2hpdGVsaXN0KHJlcXVlc3QudXJsKCkpKQorICAgIGlmIChjYWNoZS0+
aXNVUkxJbk9ubGluZUFsbG93bGlzdChyZXF1ZXN0LnVybCgpKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIGlmICghY2FjaGUtPnVybE1hdGNoZXNGYWxsYmFja05hbWVzcGFjZShyZXF1ZXN0
LnVybCgpLCAmZmFsbGJhY2tVUkwpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZS5jcHAJKHJldmlzaW9uIDI2Mjg5NCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI2NSw3ICsyNjUsNyBAQCBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIEFwcGxpY2F0aW9uQ2FjaGVT
CiAKICAgICAgICAgaWYgKEFwcGxpY2F0aW9uQ2FjaGUqIGNhY2hlID0gZ3JvdXAtPm5ld2VzdENh
Y2hlKCkpIHsKICAgICAgICAgICAgIFVSTCBmYWxsYmFja1VSTDsKLSAgICAgICAgICAgIGlmIChj
YWNoZS0+aXNVUkxJbk9ubGluZVdoaXRlbGlzdCh1cmwpKQorICAgICAgICAgICAgaWYgKGNhY2hl
LT5pc1VSTEluT25saW5lQWxsb3dsaXN0KHVybCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgICAgICBpZiAoIWNhY2hlLT51cmxNYXRjaGVzRmFsbGJhY2tOYW1lc3BhY2UodXJs
LCAmZmFsbGJhY2tVUkwpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMzAwLDcgKzMw
MCw3IEBAIEFwcGxpY2F0aW9uQ2FjaGVHcm91cCogQXBwbGljYXRpb25DYWNoZVMKICAgICAgICAg
YXV0byBjYWNoZSA9IGxvYWRDYWNoZShuZXdlc3RDYWNoZUlEKTsKIAogICAgICAgICBVUkwgZmFs
bGJhY2tVUkw7Ci0gICAgICAgIGlmIChjYWNoZS0+aXNVUkxJbk9ubGluZVdoaXRlbGlzdCh1cmwp
KQorICAgICAgICBpZiAoY2FjaGUtPmlzVVJMSW5PbmxpbmVBbGxvd2xpc3QodXJsKSkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICBpZiAoIWNhY2hlLT51cmxNYXRjaGVzRmFsbGJhY2tO
YW1lc3BhY2UodXJsLCAmZmFsbGJhY2tVUkwpKQogICAgICAgICAgICAgY29udGludWU7CkBAIC02
MTYsNyArNjE2LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6b3BlbkRhdGFiYQog
ICAgIGV4ZWN1dGVTUUxDb21tYW5kKCJDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBEZWxldGVk
Q2FjaGVSZXNvdXJjZXMgKGlkIElOVEVHRVIgUFJJTUFSWSBLRVkgQVVUT0lOQ1JFTUVOVCwgcGF0
aCBURVhUKSIpOwogICAgIGV4ZWN1dGVTUUxDb21tYW5kKCJDUkVBVEUgVEFCTEUgSUYgTk9UIEVY
SVNUUyBPcmlnaW5zIChvcmlnaW4gVEVYVCBVTklRVUUgT04gQ09ORkxJQ1QgSUdOT1JFLCBxdW90
YSBJTlRFR0VSIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwpIik7CiAKLSAgICAvLyBXaGVuIGEg
Y2FjaGUgaXMgZGVsZXRlZCwgYWxsIGl0cyBlbnRyaWVzIGFuZCBpdHMgd2hpdGVsaXN0IHNob3Vs
ZCBiZSBkZWxldGVkLgorICAgIC8vIFdoZW4gYSBjYWNoZSBpcyBkZWxldGVkLCBhbGwgaXRzIGVu
dHJpZXMgYW5kIGl0cyBhbGxvd2xpc3Qgc2hvdWxkIGJlIGRlbGV0ZWQuCiAgICAgZXhlY3V0ZVNR
TENvbW1hbmQoIkNSRUFURSBUUklHR0VSIElGIE5PVCBFWElTVFMgQ2FjaGVEZWxldGVkIEFGVEVS
IERFTEVURSBPTiBDYWNoZXMiCiAgICAgICAgICAgICAgICAgICAgICAgIiBGT1IgRUFDSCBST1cg
QkVHSU4iCiAgICAgICAgICAgICAgICAgICAgICAgIiAgREVMRVRFIEZST00gQ2FjaGVFbnRyaWVz
IFdIRVJFIGNhY2hlID0gT0xELmlkOyIKQEAgLTcyMSwxNCArNzIxLDE0IEBAIGJvb2wgQXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKEFwcGwKICAgICAgICAgc3RvcmFnZUlESm91cm5hbC0+
YWRkKHJlc291cmNlLmdldCgpLCBvbGRTdG9yYWdlSUQpOwogICAgIH0KICAgICAKLSAgICAvLyBT
dG9yZSB0aGUgb25saW5lIHdoaXRlbGlzdAotICAgIGNvbnN0IFZlY3RvcjxVUkw+JiBvbmxpbmVX
aGl0ZWxpc3QgPSBjYWNoZS0+b25saW5lV2hpdGVsaXN0KCk7CisgICAgLy8gU3RvcmUgdGhlIG9u
bGluZSBhbGxvd2xpc3QKKyAgICBjb25zdCBWZWN0b3I8VVJMPiYgb25saW5lQWxsb3dsaXN0ID0g
Y2FjaGUtPm9ubGluZUFsbG93bGlzdCgpOwogICAgIHsKLSAgICAgICAgZm9yIChhdXRvJiB3aGl0
ZWxpc3RVUkwgOiBvbmxpbmVXaGl0ZWxpc3QpIHsKKyAgICAgICAgZm9yIChhdXRvJiBhbGxvd2xp
c3RVUkwgOiBvbmxpbmVBbGxvd2xpc3QpIHsKICAgICAgICAgICAgIFNRTGl0ZVN0YXRlbWVudCBz
dGF0ZW1lbnQobV9kYXRhYmFzZSwgIklOU0VSVCBJTlRPIENhY2hlV2hpdGVsaXN0VVJMcyAodXJs
LCBjYWNoZSkgVkFMVUVTICg/LCA/KSIpOwogICAgICAgICAgICAgc3RhdGVtZW50LnByZXBhcmUo
KTsKIAotICAgICAgICAgICAgc3RhdGVtZW50LmJpbmRUZXh0KDEsIHdoaXRlbGlzdFVSTC5zdHJp
bmcoKSk7CisgICAgICAgICAgICBzdGF0ZW1lbnQuYmluZFRleHQoMSwgYWxsb3dsaXN0VVJMLnN0
cmluZygpKTsKICAgICAgICAgICAgIHN0YXRlbWVudC5iaW5kSW50NjQoMiwgY2FjaGVTdG9yYWdl
SUQpOwogCiAgICAgICAgICAgICBpZiAoIWV4ZWN1dGVTdGF0ZW1lbnQoc3RhdGVtZW50KSkKQEAg
LTczNiw3ICs3MzYsNyBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZShBcHBs
CiAgICAgICAgIH0KICAgICB9CiAKLSAgICAvLyBTdG9yZSBvbmxpbmUgd2hpdGVsaXN0IHdpbGRj
YXJkIGZsYWcuCisgICAgLy8gU3RvcmUgb25saW5lIGFsbG93bGlzdCB3aWxkY2FyZCBmbGFnLgog
ICAgIHsKICAgICAgICAgU1FMaXRlU3RhdGVtZW50IHN0YXRlbWVudChtX2RhdGFiYXNlLCAiSU5T
RVJUIElOVE8gQ2FjaGVBbGxvd3NBbGxOZXR3b3JrUmVxdWVzdHMgKHdpbGRjYXJkLCBjYWNoZSkg
VkFMVUVTICg/LCA/KSIpOwogICAgICAgICBzdGF0ZW1lbnQucHJlcGFyZSgpOwpAQCAtMTE1NCwz
NSArMTE1NCwzNSBAQCBSZWZQdHI8QXBwbGljYXRpb25DYWNoZT4gQXBwbGljYXRpb25DYWNoCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIC8vIExvYWQgdGhlIG9ubGluZSB3
aGl0ZWxpc3QKLSAgICBTUUxpdGVTdGF0ZW1lbnQgd2hpdGVsaXN0U3RhdGVtZW50KG1fZGF0YWJh
c2UsICJTRUxFQ1QgdXJsIEZST00gQ2FjaGVXaGl0ZWxpc3RVUkxzIFdIRVJFIGNhY2hlPT8iKTsK
LSAgICBpZiAod2hpdGVsaXN0U3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0spCisgICAg
Ly8gTG9hZCB0aGUgb25saW5lIGFsbG93bGlzdAorICAgIFNRTGl0ZVN0YXRlbWVudCBhbGxvd2xp
c3RTdGF0ZW1lbnQobV9kYXRhYmFzZSwgIlNFTEVDVCB1cmwgRlJPTSBDYWNoZVdoaXRlbGlzdFVS
THMgV0hFUkUgY2FjaGU9PyIpOworICAgIGlmIChhbGxvd2xpc3RTdGF0ZW1lbnQucHJlcGFyZSgp
ICE9IFNRTElURV9PSykKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgd2hpdGVsaXN0U3Rh
dGVtZW50LmJpbmRJbnQ2NCgxLCBzdG9yYWdlSUQpOworICAgIGFsbG93bGlzdFN0YXRlbWVudC5i
aW5kSW50NjQoMSwgc3RvcmFnZUlEKTsKICAgICAKLSAgICBWZWN0b3I8VVJMPiB3aGl0ZWxpc3Q7
Ci0gICAgd2hpbGUgKChyZXN1bHQgPSB3aGl0ZWxpc3RTdGF0ZW1lbnQuc3RlcCgpKSA9PSBTUUxJ
VEVfUk9XKSAKLSAgICAgICAgd2hpdGVsaXN0LmFwcGVuZChVUkwoeyB9LCB3aGl0ZWxpc3RTdGF0
ZW1lbnQuZ2V0Q29sdW1uVGV4dCgwKSkpOworICAgIFZlY3RvcjxVUkw+IGFsbG93bGlzdDsKKyAg
ICB3aGlsZSAoKHJlc3VsdCA9IGFsbG93bGlzdFN0YXRlbWVudC5zdGVwKCkpID09IFNRTElURV9S
T1cpCisgICAgICAgIGFsbG93bGlzdC5hcHBlbmQoVVJMKHsgfSwgYWxsb3dsaXN0U3RhdGVtZW50
LmdldENvbHVtblRleHQoMCkpKTsKIAogICAgIGlmIChyZXN1bHQgIT0gU1FMSVRFX0RPTkUpCi0g
ICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGxvYWQgY2FjaGUgb25saW5lIHdoaXRlbGlzdCwg
ZXJyb3IgXCIlc1wiIiwgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIExPR19F
UlJPUigiQ291bGQgbm90IGxvYWQgY2FjaGUgb25saW5lIGFsbG93bGlzdCwgZXJyb3IgXCIlc1wi
IiwgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAKLSAgICBjYWNoZS0+c2V0T25saW5lV2hp
dGVsaXN0KHdoaXRlbGlzdCk7CisgICAgY2FjaGUtPnNldE9ubGluZUFsbG93bGlzdChhbGxvd2xp
c3QpOwogCi0gICAgLy8gTG9hZCBvbmxpbmUgd2hpdGVsaXN0IHdpbGRjYXJkIGZsYWcuCi0gICAg
U1FMaXRlU3RhdGVtZW50IHdoaXRlbGlzdFdpbGRjYXJkU3RhdGVtZW50KG1fZGF0YWJhc2UsICJT
RUxFQ1Qgd2lsZGNhcmQgRlJPTSBDYWNoZUFsbG93c0FsbE5ldHdvcmtSZXF1ZXN0cyBXSEVSRSBj
YWNoZT0/Iik7Ci0gICAgaWYgKHdoaXRlbGlzdFdpbGRjYXJkU3RhdGVtZW50LnByZXBhcmUoKSAh
PSBTUUxJVEVfT0spCisgICAgLy8gTG9hZCBvbmxpbmUgYWxsb3dsaXN0IHdpbGRjYXJkIGZsYWcu
CisgICAgU1FMaXRlU3RhdGVtZW50IGFsbG93bGlzdFdpbGRjYXJkU3RhdGVtZW50KG1fZGF0YWJh
c2UsICJTRUxFQ1Qgd2lsZGNhcmQgRlJPTSBDYWNoZVdoaXRlQWxsTmV0d29ya1JlcXVlc3RzIFdI
RVJFIGNhY2hlPT8iKTsKKyAgICBpZiAoYWxsb3dsaXN0V2lsZGNhcmRTdGF0ZW1lbnQucHJlcGFy
ZSgpICE9IFNRTElURV9PSykKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgd2hpdGVsaXN0
V2lsZGNhcmRTdGF0ZW1lbnQuYmluZEludDY0KDEsIHN0b3JhZ2VJRCk7CisgICAgYWxsb3dsaXN0
V2lsZGNhcmRTdGF0ZW1lbnQuYmluZEludDY0KDEsIHN0b3JhZ2VJRCk7CiAgICAgCi0gICAgcmVz
dWx0ID0gd2hpdGVsaXN0V2lsZGNhcmRTdGF0ZW1lbnQuc3RlcCgpOworICAgIHJlc3VsdCA9IGFs
bG93bGlzdFdpbGRjYXJkU3RhdGVtZW50LnN0ZXAoKTsKICAgICBpZiAocmVzdWx0ICE9IFNRTElU
RV9ST1cpCi0gICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGxvYWQgY2FjaGUgb25saW5lIHdo
aXRlbGlzdCB3aWxkY2FyZCBmbGFnLCBlcnJvciBcIiVzXCIiLCBtX2RhdGFiYXNlLmxhc3RFcnJv
ck1zZygpKTsKKyAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgbG9hZCBjYWNoZSBvbmxpbmUg
YWxsb3dsaXN0IHdpbGRjYXJkIGZsYWcsIGVycm9yIFwiJXNcIiIsIG1fZGF0YWJhc2UubGFzdEVy
cm9yTXNnKCkpOwogCi0gICAgY2FjaGUtPnNldEFsbG93c0FsbE5ldHdvcmtSZXF1ZXN0cyh3aGl0
ZWxpc3RXaWxkY2FyZFN0YXRlbWVudC5nZXRDb2x1bW5JbnQ2NCgwKSk7CisgICAgY2FjaGUtPnNl
dEFsbG93c0FsbE5ldHdvcmtSZXF1ZXN0cyhhbGxvd2xpc3RXaWxkY2FyZFN0YXRlbWVudC5nZXRD
b2x1bW5JbnQ2NCgwKSk7CiAKLSAgICBpZiAod2hpdGVsaXN0V2lsZGNhcmRTdGF0ZW1lbnQuc3Rl
cCgpICE9IFNRTElURV9ET05FKQotICAgICAgICBMT0dfRVJST1IoIlRvbyBtYW55IHJvd3MgZm9y
IG9ubGluZSB3aGl0ZWxpc3Qgd2lsZGNhcmQgZmxhZyIpOworICAgIGlmIChhbGxvd2xpc3RXaWxk
Y2FyZFN0YXRlbWVudC5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpCisgICAgICAgIExPR19FUlJPUigi
VG9vIG1hbnkgcm93cyBmb3Igb25saW5lIGFsbG93bGlzdCB3aWxkY2FyZCBmbGFnIik7CiAKICAg
ICAvLyBMb2FkIGZhbGxiYWNrIFVSTHMuCiAgICAgU1FMaXRlU3RhdGVtZW50IGZhbGxiYWNrU3Rh
dGVtZW50KG1fZGF0YWJhc2UsICJTRUxFQ1QgbmFtZXNwYWNlLCBmYWxsYmFja1VSTCBGUk9NIEZh
bGxiYWNrVVJMcyBXSEVSRSBjYWNoZT0/Iik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvTWFuaWZlc3RQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9NYW5pZmVzdFBhcnNlci5jcHAJKHJldmlzaW9uIDI2Mjg5NCkKKysr
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9NYW5pZmVzdFBhcnNlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1lbnVt
IE1vZGUgeyBFeHBsaWNpdCwgRmFsbGJhY2ssIE9ubGluZVdoaXRlbGlzdCwgVW5rbm93biB9Owor
ZW51bSBNb2RlIHsgRXhwbGljaXQsIEZhbGxiYWNrLCBPbmxpbmVBbGxvd2xpc3QsIFVua25vd24g
fTsKIAogc3RhdGljIFN0cmluZ1ZpZXcgbWFuaWZlc3RQYXRoKGNvbnN0IFVSTCYgbWFuaWZlc3RV
UkwpCiB7CkBAIC00Nyw3ICs0Nyw3IEBAIHN0YXRpYyBTdHJpbmdWaWV3IG1hbmlmZXN0UGF0aChj
b25zdCBVUkwKIGJvb2wgcGFyc2VNYW5pZmVzdChjb25zdCBVUkwmIG1hbmlmZXN0VVJMLCBjb25z
dCBTdHJpbmcmIG1hbmlmZXN0TUlNRVR5cGUsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgs
IE1hbmlmZXN0JiBtYW5pZmVzdCkKIHsKICAgICBBU1NFUlQobWFuaWZlc3QuZXhwbGljaXRVUkxz
LmlzRW1wdHkoKSk7Ci0gICAgQVNTRVJUKG1hbmlmZXN0Lm9ubGluZVdoaXRlbGlzdGVkVVJMcy5p
c0VtcHR5KCkpOworICAgIEFTU0VSVChtYW5pZmVzdC5vbmxpbmVBbGxvd2VkVVJMcy5pc0VtcHR5
KCkpOwogICAgIEFTU0VSVChtYW5pZmVzdC5mYWxsYmFja1VSTHMuaXNFbXB0eSgpKTsKICAgICBt
YW5pZmVzdC5hbGxvd0FsbE5ldHdvcmtSZXF1ZXN0cyA9IGZhbHNlOwogCkBAIC0xMDksMTIgKzEw
OSwxMiBAQCBib29sIHBhcnNlTWFuaWZlc3QoY29uc3QgVVJMJiBtYW5pZmVzdFVSCiAgICAgICAg
IGVsc2UgaWYgKGxpbmUgPT0gIkZBTExCQUNLOiIpCiAgICAgICAgICAgICBtb2RlID0gRmFsbGJh
Y2s7CiAgICAgICAgIGVsc2UgaWYgKGxpbmUgPT0gIk5FVFdPUks6IikKLSAgICAgICAgICAgIG1v
ZGUgPSBPbmxpbmVXaGl0ZWxpc3Q7CisgICAgICAgICAgICBtb2RlID0gT25saW5lQWxsb3dsaXN0
OwogICAgICAgICBlbHNlIGlmIChsaW5lLmVuZHNXaXRoKCc6JykpCiAgICAgICAgICAgICBtb2Rl
ID0gVW5rbm93bjsKICAgICAgICAgZWxzZSBpZiAobW9kZSA9PSBVbmtub3duKQogICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgIGVsc2UgaWYgKG1vZGUgPT0gRXhwbGljaXQgfHwgbW9kZSA9
PSBPbmxpbmVXaGl0ZWxpc3QpIHsKKyAgICAgICAgZWxzZSBpZiAobW9kZSA9PSBFeHBsaWNpdCB8
fCBtb2RlID09IE9ubGluZUFsbG93bGlzdCkgewogICAgICAgICAgICAgYXV0byB1cGNvbnZlcnRl
ZExpbmVDaGFyYWN0ZXJzID0gU3RyaW5nVmlldyhsaW5lKS51cGNvbnZlcnRlZENoYXJhY3RlcnMo
KTsKICAgICAgICAgICAgIGNvbnN0IFVDaGFyKiBwID0gdXBjb252ZXJ0ZWRMaW5lQ2hhcmFjdGVy
czsKICAgICAgICAgICAgIGNvbnN0IFVDaGFyKiBsaW5lRW5kID0gcCArIGxpbmUubGVuZ3RoKCk7
CkBAIC0xMjMsNyArMTIzLDcgQEAgYm9vbCBwYXJzZU1hbmlmZXN0KGNvbnN0IFVSTCYgbWFuaWZl
c3RVUgogICAgICAgICAgICAgd2hpbGUgKHAgPCBsaW5lRW5kICYmICpwICE9ICdcdCcgJiYgKnAg
IT0gJyAnKSAKICAgICAgICAgICAgICAgICBwKys7CiAKLSAgICAgICAgICAgIGlmIChtb2RlID09
IE9ubGluZVdoaXRlbGlzdCAmJiBwIC0gdXBjb252ZXJ0ZWRMaW5lQ2hhcmFjdGVycyA9PSAxICYm
IGxpbmVbMF0gPT0gJyonKSB7CisgICAgICAgICAgICBpZiAobW9kZSA9PSBPbmxpbmVBbGxvd2xp
c3QgJiYgcCAtIHVwY29udmVydGVkTGluZUNoYXJhY3RlcnMgPT0gMSAmJiBsaW5lWzBdID09ICcq
JykgewogICAgICAgICAgICAgICAgIC8vIFdpbGRjYXJkIHdhcyBmb3VuZC4KICAgICAgICAgICAg
ICAgICBtYW5pZmVzdC5hbGxvd0FsbE5ldHdvcmtSZXF1ZXN0cyA9IHRydWU7CiAgICAgICAgICAg
ICAgICAgY29udGludWU7CkBAIC0xNDUsNyArMTQ1LDcgQEAgYm9vbCBwYXJzZU1hbmlmZXN0KGNv
bnN0IFVSTCYgbWFuaWZlc3RVUgogICAgICAgICAgICAgaWYgKG1vZGUgPT0gRXhwbGljaXQpCiAg
ICAgICAgICAgICAgICAgbWFuaWZlc3QuZXhwbGljaXRVUkxzLmFkZCh1cmwuc3RyaW5nKCkpOwog
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG1hbmlmZXN0Lm9ubGluZVdoaXRlbGlz
dGVkVVJMcy5hcHBlbmQodXJsKTsKKyAgICAgICAgICAgICAgICBtYW5pZmVzdC5vbmxpbmVBbGxv
d2VkVVJMcy5hcHBlbmQodXJsKTsKICAgICAgICAgICAgIAogICAgICAgICB9IGVsc2UgaWYgKG1v
ZGUgPT0gRmFsbGJhY2spIHsKICAgICAgICAgICAgIGF1dG8gdXBjb252ZXJ0ZWRMaW5lQ2hhcmFj
dGVycyA9IFN0cmluZ1ZpZXcobGluZSkudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvTWFuaWZlc3RQYXJzZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvTWFuaWZlc3RQYXJzZXIuaAkocmV2
aXNpb24gMjYyODk0KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL01hbmlmZXN0
UGFyc2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogc3RydWN0IE1hbmlmZXN0IHsKLSAgICBWZWN0b3I8VVJMPiBvbmxpbmVXaGl0ZWxp
c3RlZFVSTHM7CisgICAgVmVjdG9yPFVSTD4gb25saW5lQWxsb3dlZFVSTHM7CiAgICAgSGFzaFNl
dDxTdHJpbmc+IGV4cGxpY2l0VVJMczsKICAgICBGYWxsYmFja1VSTFZlY3RvciBmYWxsYmFja1VS
THM7CiAgICAgYm9vbCBhbGxvd0FsbE5ldHdvcmtSZXF1ZXN0czsgLy8gV2lsZGNhcmQgZm91bmQg
aW4gTkVUV09SSyBzZWN0aW9uLgpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAJKHJldmlzaW9uIDI2
Mjg5NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02NzEsNyArNjcxLDcgQEAgdm9pZCBGcmFtZTo6aW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5
KAogICAgICAgICByZXR1cm47CiAgICAgaWYgKHNjcmlwdC5pbmplY3RlZEZyYW1lcygpID09IFVz
ZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluVG9wRnJhbWVPbmx5ICYmICFpc01haW5G
cmFtZSgpKQogICAgICAgICByZXR1cm47Ci0gICAgaWYgKCFVc2VyQ29udGVudFVSTFBhdHRlcm46
Om1hdGNoZXNQYXR0ZXJucyhkb2N1bWVudC0+dXJsKCksIHNjcmlwdC53aGl0ZWxpc3QoKSwgc2Ny
aXB0LmJsb2NrbGlzdCgpKSkKKyAgICBpZiAoIVVzZXJDb250ZW50VVJMUGF0dGVybjo6bWF0Y2hl
c1BhdHRlcm5zKGRvY3VtZW50LT51cmwoKSwgc2NyaXB0LmFsbG93bGlzdCgpLCBzY3JpcHQuYmxv
Y2tsaXN0KCkpKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKCFtX3NjcmlwdC0+c2hvdWxkQWxs
b3dVc2VyQWdlbnRTY3JpcHRzKCpkb2N1bWVudCkpCiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCShyZXZpc2lvbiAyNjI4OTQpCisrKyBT
b3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzIzLDcgKzMyMyw3IEBAIGJvb2wgU2VjdXJpdHlPcmlnaW46OmNhblJlcXVlc3QoY29uc3QgVVIK
ICAgICBpZiAoaXNTYW1lU2NoZW1lSG9zdFBvcnQodGFyZ2V0T3JpZ2luLmdldCgpKSkKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAKLSAgICBpZiAoU2VjdXJpdHlQb2xpY3k6OmlzQWNjZXNzV2hpdGVM
aXN0ZWQoKnRoaXMsIHRhcmdldE9yaWdpbi5nZXQoKSwgdXJsKSkKKyAgICBpZiAoU2VjdXJpdHlQ
b2xpY3k6OmlzQWNjZXNzQWxsb3dlZCgqdGhpcywgdGFyZ2V0T3JpZ2luLmdldCgpLCB1cmwpKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIHJldHVybiBmYWxzZTsKQEAgLTM4Miw3ICszODIs
NyBAQCBib29sIFNlY3VyaXR5T3JpZ2luOjpjYW5EaXNwbGF5KGNvbnN0IFVSCiAgICAgICAgIHJl
dHVybiBjYW5SZXF1ZXN0KHVybCk7CiAKICAgICBpZiAoTGVnYWN5U2NoZW1lUmVnaXN0cnk6OnNo
b3VsZFRyZWF0VVJMU2NoZW1lQXNEaXNwbGF5SXNvbGF0ZWQocHJvdG9jb2wpKQotICAgICAgICBy
ZXR1cm4gZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShtX2RhdGEucHJvdG9jb2wsIHByb3RvY29sKSB8
fCBTZWN1cml0eVBvbGljeTo6aXNBY2Nlc3NXaGl0ZUxpc3RlZCgqdGhpcywgdXJsKTsKKyAgICAg
ICAgcmV0dXJuIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobV9kYXRhLnByb3RvY29sLCBwcm90b2Nv
bCkgfHwgU2VjdXJpdHlQb2xpY3k6OmlzQWNjZXNzQWxsb3dlZCgqdGhpcywgdXJsKTsKIAogICAg
IGlmICghU2VjdXJpdHlQb2xpY3k6OnJlc3RyaWN0QWNjZXNzVG9Mb2NhbCgpKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKQEAgLTM5MSw3ICszOTEsNyBAQCBib29sIFNlY3VyaXR5T3JpZ2luOjpjYW5E
aXNwbGF5KGNvbnN0IFVSCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgaWYgKExlZ2FjeVNj
aGVtZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVSTFNjaGVtZUFzTG9jYWwocHJvdG9jb2wpKQotICAg
ICAgICByZXR1cm4gY2FuTG9hZExvY2FsUmVzb3VyY2VzKCkgfHwgU2VjdXJpdHlQb2xpY3k6Omlz
QWNjZXNzV2hpdGVMaXN0ZWQoKnRoaXMsIHVybCk7CisgICAgICAgIHJldHVybiBjYW5Mb2FkTG9j
YWxSZXNvdXJjZXMoKSB8fCBTZWN1cml0eVBvbGljeTo6aXNBY2Nlc3NBbGxvd2VkKCp0aGlzLCB1
cmwpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1Nl
Y3VyaXR5UG9saWN5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3Vy
aXR5UG9saWN5LmNwcAkocmV2aXNpb24gMjYyODk0KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9T
ZWN1cml0eVBvbGljeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDggKzQzLDggQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBzdGF0aWMgU2VjdXJpdHlQb2xpY3k6OkxvY2FsTG9hZFBvbGljeSBs
b2NhbExvYWRQb2xpY3kgPSBTZWN1cml0eVBvbGljeTo6QWxsb3dMb2NhbExvYWRzRm9yTG9jYWxP
bmx5OwogCi10eXBlZGVmIFZlY3RvcjxPcmlnaW5BY2Nlc3NFbnRyeT4gT3JpZ2luQWNjZXNzV2hp
dGVMaXN0OwotdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgc3RkOjp1bmlxdWVfcHRyPE9yaWdpbkFj
Y2Vzc1doaXRlTGlzdD4+IE9yaWdpbkFjY2Vzc01hcDsKK3R5cGVkZWYgVmVjdG9yPE9yaWdpbkFj
Y2Vzc0VudHJ5PiBPcmlnaW5BY2Nlc3NBbGxvd2xpc3Q7Cit0eXBlZGVmIEhhc2hNYXA8U3RyaW5n
LCBzdGQ6OnVuaXF1ZV9wdHI8T3JpZ2luQWNjZXNzQWxsb3dsaXN0Pj4gT3JpZ2luQWNjZXNzTWFw
OwogCiBzdGF0aWMgTG9jayBvcmlnaW5BY2Nlc3NNYXBMb2NrOwogc3RhdGljIE9yaWdpbkFjY2Vz
c01hcCYgb3JpZ2luQWNjZXNzTWFwKCkKQEAgLTIwMSwxMiArMjAxLDEyIEBAIGJvb2wgU2VjdXJp
dHlQb2xpY3k6OmFsbG93U3Vic3RpdHV0ZURhdGEKICAgICByZXR1cm4gbG9jYWxMb2FkUG9saWN5
ICE9IFNlY3VyaXR5UG9saWN5OjpBbGxvd0xvY2FsTG9hZHNGb3JMb2NhbE9ubHk7CiB9CiAKLWJv
b2wgU2VjdXJpdHlQb2xpY3k6OmlzQWNjZXNzV2hpdGVMaXN0ZWQoY29uc3QgU2VjdXJpdHlPcmln
aW4mIGFjdGl2ZU9yaWdpbiwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRhcmdldE9yaWdpbiwgY29u
c3QgVVJMJiB0YXJnZXRVUkwpCitib29sIFNlY3VyaXR5UG9saWN5Ojppc0FjY2Vzc0FsbG93ZWQo
Y29uc3QgU2VjdXJpdHlPcmlnaW4mIGFjdGl2ZU9yaWdpbiwgY29uc3QgU2VjdXJpdHlPcmlnaW4m
IHRhcmdldE9yaWdpbiwgY29uc3QgVVJMJiB0YXJnZXRVUkwpCiB7CiAgICAgQVNTRVJUKHRhcmdl
dE9yaWdpbi5lcXVhbChTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHRhcmdldFVSTCkucHRyKCkpKTsK
ICAgICB7CiAgICAgICAgIExvY2tlcjxMb2NrPiBsb2NrZXIob3JpZ2luQWNjZXNzTWFwTG9jayk7
Ci0gICAgICAgIGlmIChPcmlnaW5BY2Nlc3NXaGl0ZUxpc3QqIGxpc3QgPSBvcmlnaW5BY2Nlc3NN
YXAoKS5nZXQoYWN0aXZlT3JpZ2luLnRvU3RyaW5nKCkpKSB7CisgICAgICAgIGlmIChPcmlnaW5B
Y2Nlc3NBbGxvd2xpc3QqIGxpc3QgPSBvcmlnaW5BY2Nlc3NNYXAoKS5nZXQoYWN0aXZlT3JpZ2lu
LnRvU3RyaW5nKCkpKSB7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIGVudHJ5IDogKmxpc3QpIHsK
ICAgICAgICAgICAgICAgICBpZiAoZW50cnkubWF0Y2hlc09yaWdpbih0YXJnZXRPcmlnaW4pKQog
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTIyMSwxMiArMjIxLDEyIEBAIGJv
b2wgU2VjdXJpdHlQb2xpY3k6OmlzQWNjZXNzV2hpdGVMaXN0ZWQKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKLWJvb2wgU2VjdXJpdHlQb2xpY3k6OmlzQWNjZXNzV2hpdGVMaXN0ZWQoY29uc3QgU2Vj
dXJpdHlPcmlnaW4mIGFjdGl2ZU9yaWdpbiwgY29uc3QgVVJMJiB1cmwpCitib29sIFNlY3VyaXR5
UG9saWN5Ojppc0FjY2Vzc0FsbG93ZWQoY29uc3QgU2VjdXJpdHlPcmlnaW4mIGFjdGl2ZU9yaWdp
biwgY29uc3QgVVJMJiB1cmwpCiB7Ci0gICAgcmV0dXJuIGlzQWNjZXNzV2hpdGVMaXN0ZWQoYWN0
aXZlT3JpZ2luLCBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHVybCkuZ2V0KCksIHVybCk7CisgICAg
cmV0dXJuIGlzQWNjZXNzQWxsb3dlZChhY3RpdmVPcmlnaW4sIFNlY3VyaXR5T3JpZ2luOjpjcmVh
dGUodXJsKS5nZXQoKSwgdXJsKTsKIH0KIAotdm9pZCBTZWN1cml0eVBvbGljeTo6YWRkT3JpZ2lu
QWNjZXNzV2hpdGVsaXN0RW50cnkoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHNvdXJjZU9yaWdpbiwg
Y29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblByb3RvY29sLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0
aW9uRG9tYWluLCBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKQordm9pZCBTZWN1cml0
eVBvbGljeTo6YWRkT3JpZ2luQWNjZXNzQWxsb3dsaXN0RW50cnkoY29uc3QgU2VjdXJpdHlPcmln
aW4mIHNvdXJjZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblByb3RvY29sLCBjb25z
dCBTdHJpbmcmIGRlc3RpbmF0aW9uRG9tYWluLCBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21h
aW5zKQogewogICAgIEFTU0VSVCghc291cmNlT3JpZ2luLmlzVW5pcXVlKCkpOwogICAgIGlmIChz
b3VyY2VPcmlnaW4uaXNVbmlxdWUoKSkKQEAgLTIzNywxMyArMjM3LDEzIEBAIHZvaWQgU2VjdXJp
dHlQb2xpY3k6OmFkZE9yaWdpbkFjY2Vzc1doaXQKICAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKG9y
aWdpbkFjY2Vzc01hcExvY2spOwogICAgIE9yaWdpbkFjY2Vzc01hcDo6QWRkUmVzdWx0IHJlc3Vs
dCA9IG9yaWdpbkFjY2Vzc01hcCgpLmFkZChzb3VyY2VTdHJpbmcsIG51bGxwdHIpOwogICAgIGlm
IChyZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1h
a2VVbmlxdWU8T3JpZ2luQWNjZXNzV2hpdGVMaXN0PigpOworICAgICAgICByZXN1bHQuaXRlcmF0
b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxPcmlnaW5BY2Nlc3NBbGxvd2xpc3Q+KCk7CiAKLSAgICBP
cmlnaW5BY2Nlc3NXaGl0ZUxpc3QqIGxpc3QgPSByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmdldCgp
OworICAgIE9yaWdpbkFjY2Vzc0FsbG93bGlzdCogbGlzdCA9IHJlc3VsdC5pdGVyYXRvci0+dmFs
dWUuZ2V0KCk7CiAgICAgbGlzdC0+YXBwZW5kKE9yaWdpbkFjY2Vzc0VudHJ5KGRlc3RpbmF0aW9u
UHJvdG9jb2wsIGRlc3RpbmF0aW9uRG9tYWluLCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyA/
IE9yaWdpbkFjY2Vzc0VudHJ5OjpBbGxvd1N1YmRvbWFpbnMgOiBPcmlnaW5BY2Nlc3NFbnRyeTo6
RGlzYWxsb3dTdWJkb21haW5zLCBPcmlnaW5BY2Nlc3NFbnRyeTo6VHJlYXRJUEFkZHJlc3NBc0lQ
QWRkcmVzcykpOwogfQogCi12b2lkIFNlY3VyaXR5UG9saWN5OjpyZW1vdmVPcmlnaW5BY2Nlc3NX
aGl0ZWxpc3RFbnRyeShjb25zdCBTZWN1cml0eU9yaWdpbiYgc291cmNlT3JpZ2luLCBjb25zdCBT
dHJpbmcmIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25Eb21h
aW4sIGJvb2wgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpCit2b2lkIFNlY3VyaXR5UG9saWN5
OjpyZW1vdmVPcmlnaW5BY2Nlc3NBbGxvd2xpc3RFbnRyeShjb25zdCBTZWN1cml0eU9yaWdpbiYg
c291cmNlT3JpZ2luLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGNvbnN0IFN0
cmluZyYgZGVzdGluYXRpb25Eb21haW4sIGJvb2wgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMp
CiB7CiAgICAgQVNTRVJUKCFzb3VyY2VPcmlnaW4uaXNVbmlxdWUoKSk7CiAgICAgaWYgKHNvdXJj
ZU9yaWdpbi5pc1VuaXF1ZSgpKQpAQCAtMjU3LDcgKzI1Nyw3IEBAIHZvaWQgU2VjdXJpdHlQb2xp
Y3k6OnJlbW92ZU9yaWdpbkFjY2Vzc1cKICAgICBpZiAoaXQgPT0gbWFwLmVuZCgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBPcmlnaW5BY2Nlc3NXaGl0ZUxpc3QmIGxpc3QgPSAqaXQtPnZhbHVl
OworICAgIE9yaWdpbkFjY2Vzc0FsbG93bGlzdCYgbGlzdCA9ICppdC0+dmFsdWU7CiAgICAgT3Jp
Z2luQWNjZXNzRW50cnkgb3JpZ2luQWNjZXNzRW50cnkoZGVzdGluYXRpb25Qcm90b2NvbCwgZGVz
dGluYXRpb25Eb21haW4sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zID8gT3JpZ2luQWNjZXNz
RW50cnk6OkFsbG93U3ViZG9tYWlucyA6IE9yaWdpbkFjY2Vzc0VudHJ5OjpEaXNhbGxvd1N1YmRv
bWFpbnMsIE9yaWdpbkFjY2Vzc0VudHJ5OjpUcmVhdElQQWRkcmVzc0FzSVBBZGRyZXNzKTsKICAg
ICBpZiAoIWxpc3QucmVtb3ZlRmlyc3Qob3JpZ2luQWNjZXNzRW50cnkpKQogICAgICAgICByZXR1
cm47CkBAIC0yNjYsNyArMjY2LDcgQEAgdm9pZCBTZWN1cml0eVBvbGljeTo6cmVtb3ZlT3JpZ2lu
QWNjZXNzVwogICAgICAgICBtYXAucmVtb3ZlKGl0KTsKIH0KIAotdm9pZCBTZWN1cml0eVBvbGlj
eTo6cmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RzKCkKK3ZvaWQgU2VjdXJpdHlQb2xpY3k6OnJl
c2V0T3JpZ2luQWNjZXNzQWxsb3dsaXN0cygpCiB7CiAgICAgTG9ja2VyPExvY2s+IGxvY2tlcihv
cmlnaW5BY2Nlc3NNYXBMb2NrKTsKICAgICBvcmlnaW5BY2Nlc3NNYXAoKS5jbGVhcigpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuaAkocmV2aXNpb24gMjYyODk0KQorKysg
U291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5oCSh3b3JraW5nIGNvcHkpCkBAIC02
OCwxMiArNjgsMTIgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIGFsbG93U3Vic3RpdHV0ZURh
dGFBY2Nlc3NUb0xvY2FsKCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBhbGxv
d0FjY2Vzc1RvKGNvbnN0IFVzZXJDb250ZW50VVJMUGF0dGVybiYpOwotICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyB2b2lkIGFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KGNvbnN0IFNlY3Vy
aXR5T3JpZ2luJiBzb3VyY2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25Qcm90b2Nv
bCwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbkRvbWFpbiwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9u
U3ViZG9tYWlucyk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgcmVtb3ZlT3JpZ2lu
QWNjZXNzV2hpdGVsaXN0RW50cnkoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHNvdXJjZU9yaWdpbiwg
Y29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblByb3RvY29sLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0
aW9uRG9tYWluLCBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKLSAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgdm9pZCByZXNldE9yaWdpbkFjY2Vzc1doaXRlbGlzdHMoKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBhZGRPcmlnaW5BY2Nlc3NBbGxvd2xpc3RFbnRyeShj
b25zdCBTZWN1cml0eU9yaWdpbiYgc291cmNlT3JpZ2luLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0
aW9uUHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25Eb21haW4sIGJvb2wgYWxsb3dE
ZXN0aW5hdGlvblN1YmRvbWFpbnMpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHJl
bW92ZU9yaWdpbkFjY2Vzc0FsbG93bGlzdEVudHJ5KGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBzb3Vy
Y2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25Qcm90b2NvbCwgY29uc3QgU3RyaW5n
JiBkZXN0aW5hdGlvbkRvbWFpbiwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgcmVzZXRPcmlnaW5BY2Nlc3NBbGxvd2xpc3Rz
KCk7CiAKLSAgICBzdGF0aWMgYm9vbCBpc0FjY2Vzc1doaXRlTGlzdGVkKGNvbnN0IFNlY3VyaXR5
T3JpZ2luJiBhY3RpdmVPcmlnaW4sIGNvbnN0IFNlY3VyaXR5T3JpZ2luJiB0YXJnZXRPcmlnaW4s
IGNvbnN0IFVSTCYgdGFyZ2V0VVJMKTsKLSAgICBzdGF0aWMgYm9vbCBpc0FjY2Vzc1doaXRlTGlz
dGVkKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBhY3RpdmVPcmlnaW4sIGNvbnN0IFVSTCYgdGFyZ2V0
VVJMKTsKKyAgICBzdGF0aWMgYm9vbCBpc0FjY2Vzc0FsbG93ZWQoY29uc3QgU2VjdXJpdHlPcmln
aW4mIGFjdGl2ZU9yaWdpbiwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRhcmdldE9yaWdpbiwgY29u
c3QgVVJMJiB0YXJnZXRVUkwpOworICAgIHN0YXRpYyBib29sIGlzQWNjZXNzQWxsb3dlZChjb25z
dCBTZWN1cml0eU9yaWdpbiYgYWN0aXZlT3JpZ2luLCBjb25zdCBVUkwmIHRhcmdldFVSTCk7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1Vz
ZXJDb250ZW50VVJMUGF0dGVybi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFn
ZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwCShyZXZpc2lvbiAyNjI4OTQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wYWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMyLDE2ICszMiwxNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWJvb2wgVXNlckNvbnRl
bnRVUkxQYXR0ZXJuOjptYXRjaGVzUGF0dGVybnMoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiB3aGl0ZWxpc3QsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9ja2xpc3QpCiti
b29sIFVzZXJDb250ZW50VVJMUGF0dGVybjo6bWF0Y2hlc1BhdHRlcm5zKGNvbnN0IFVSTCYgdXJs
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYWxsb3dsaXN0LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
YmxvY2tsaXN0KQogewotICAgIC8vIEluIG9yZGVyIGZvciBhIFVSTCB0byBiZSBhIG1hdGNoIGl0
IGhhcyB0byBiZSBwcmVzZW50IGluIHRoZSB3aGl0ZWxpc3QgYW5kIG5vdCBwcmVzZW50IGluIHRo
ZSBibG9ja2xpc3QuCi0gICAgLy8gSWYgdGhlcmUgaXMgbm8gd2hpdGVsaXN0IGF0IGFsbCwgdGhl
biBhbGwgVVJMcyBhcmUgYXNzdW1lZCB0byBiZSBpbiB0aGUgd2hpdGVsaXN0LgotICAgIGJvb2wg
bWF0Y2hlc1doaXRlbGlzdCA9IHdoaXRlbGlzdC5pc0VtcHR5KCk7Ci0gICAgaWYgKCFtYXRjaGVz
V2hpdGVsaXN0KSB7Ci0gICAgICAgIGZvciAoYXV0byYgZW50cnkgOiB3aGl0ZWxpc3QpIHsKKyAg
ICAvLyBJbiBvcmRlciBmb3IgYSBVUkwgdG8gYmUgYSBtYXRjaCBpdCBoYXMgdG8gYmUgcHJlc2Vu
dCBpbiB0aGUgYWxsb3dsaXN0IGFuZCBub3QgcHJlc2VudCBpbiB0aGUgYmxvY2tsaXN0LgorICAg
IC8vIElmIHRoZXJlIGlzIG5vIGFsbG93bGlzdCBhdCBhbGwsIHRoZW4gYWxsIFVSTHMgYXJlIGFz
c3VtZWQgdG8gYmUgaW4gdGhlIGFsbG93bGlzdC4KKyAgICBib29sIG1hdGNoZXNBbGxvd2xpc3Qg
PSBhbGxvd2xpc3QuaXNFbXB0eSgpOworICAgIGlmICghbWF0Y2hlc0FsbG93bGlzdCkgeworICAg
ICAgICBmb3IgKGF1dG8mIGVudHJ5IDogYWxsb3dsaXN0KSB7CiAgICAgICAgICAgICBVc2VyQ29u
dGVudFVSTFBhdHRlcm4gY29udGVudFBhdHRlcm4oZW50cnkpOwogICAgICAgICAgICAgaWYgKGNv
bnRlbnRQYXR0ZXJuLm1hdGNoZXModXJsKSkgewotICAgICAgICAgICAgICAgIG1hdGNoZXNXaGl0
ZWxpc3QgPSB0cnVlOworICAgICAgICAgICAgICAgIG1hdGNoZXNBbGxvd2xpc3QgPSB0cnVlOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC01OCw3
ICs1OCw3IEBAIGJvb2wgVXNlckNvbnRlbnRVUkxQYXR0ZXJuOjptYXRjaGVzUGF0dGUKICAgICAg
ICAgfQogICAgIH0KIAotICAgIHJldHVybiBtYXRjaGVzV2hpdGVsaXN0ICYmICFtYXRjaGVzQmxv
Y2tsaXN0OworICAgIHJldHVybiBtYXRjaGVzQWxsb3dsaXN0ICYmICFtYXRjaGVzQmxvY2tsaXN0
OwogfQogCiBib29sIFVzZXJDb250ZW50VVJMUGF0dGVybjo6cGFyc2UoY29uc3QgU3RyaW5nJiBw
YXR0ZXJuKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50VVJMUGF0dGVy
bi5oCShyZXZpc2lvbiAyNjI4OTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50
VVJMUGF0dGVybi5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKIAog
ICAgIGJvb2wgbWF0Y2hTdWJkb21haW5zKCkgY29uc3QgeyByZXR1cm4gbV9tYXRjaFN1YmRvbWFp
bnM7IH0KICAgICAKLSAgICBzdGF0aWMgYm9vbCBtYXRjaGVzUGF0dGVybnMoY29uc3QgVVJMJiwg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIHdoaXRlbGlzdCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJs
b2NrbGlzdCk7CisgICAgc3RhdGljIGJvb2wgbWF0Y2hlc1BhdHRlcm5zKGNvbnN0IFVSTCYsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBhbGxvd2xpc3QsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9j
a2xpc3QpOwogCiBwcml2YXRlOgogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgcGFyc2UoY29uc3Qg
U3RyaW5nJiBwYXR0ZXJuKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlclNjcmlwdC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlclNjcmlwdC5oCShyZXZpc2lv
biAyNjI4OTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJTY3JpcHQuaAkod29ya2luZyBj
b3B5KQpAQCAtNDEsMTAgKzQxLDEwIEBAIHB1YmxpYzoKICAgICBVc2VyU2NyaXB0JiBvcGVyYXRv
cj0oY29uc3QgVXNlclNjcmlwdCYpID0gZGVmYXVsdDsKICAgICBVc2VyU2NyaXB0JiBvcGVyYXRv
cj0oVXNlclNjcmlwdCYmKSA9IGRlZmF1bHQ7CiAKLSAgICBVc2VyU2NyaXB0KFN0cmluZyYmIHNv
dXJjZSwgVVJMJiYgdXJsLCBWZWN0b3I8U3RyaW5nPiYmIHdoaXRlbGlzdCwgVmVjdG9yPFN0cmlu
Zz4mJiBibG9ja2xpc3QsIFVzZXJTY3JpcHRJbmplY3Rpb25UaW1lIGluamVjdGlvblRpbWUsIFVz
ZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgaW5qZWN0ZWRGcmFtZXMsIFdhaXRGb3JOb3RpZmljYXRp
b25CZWZvcmVJbmplY3Rpbmcgd2FpdEZvck5vdGlmaWNhdGlvbikKKyAgICBVc2VyU2NyaXB0KFN0
cmluZyYmIHNvdXJjZSwgVVJMJiYgdXJsLCBWZWN0b3I8U3RyaW5nPiYmIGFsbG93bGlzdCwgVmVj
dG9yPFN0cmluZz4mJiBibG9ja2xpc3QsIFVzZXJTY3JpcHRJbmplY3Rpb25UaW1lIGluamVjdGlv
blRpbWUsIFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgaW5qZWN0ZWRGcmFtZXMsIFdhaXRGb3JO
b3RpZmljYXRpb25CZWZvcmVJbmplY3Rpbmcgd2FpdEZvck5vdGlmaWNhdGlvbikKICAgICAgICAg
OiBtX3NvdXJjZShXVEZNb3ZlKHNvdXJjZSkpCiAgICAgICAgICwgbV91cmwoV1RGTW92ZSh1cmwp
KQotICAgICAgICAsIG1fd2hpdGVsaXN0KFdURk1vdmUod2hpdGVsaXN0KSkKKyAgICAgICAgLCBt
X2FsbG93bGlzdChXVEZNb3ZlKGFsbG93bGlzdCkpCiAgICAgICAgICwgbV9ibG9ja2xpc3QoV1RG
TW92ZShibG9ja2xpc3QpKQogICAgICAgICAsIG1faW5qZWN0aW9uVGltZShpbmplY3Rpb25UaW1l
KQogICAgICAgICAsIG1faW5qZWN0ZWRGcmFtZXMoaW5qZWN0ZWRGcmFtZXMpCkBAIC01NCw3ICs1
NCw3IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFN0cmluZyYgc291cmNlKCkgY29uc3QgeyByZXR1
cm4gbV9zb3VyY2U7IH0KICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJs
OyB9Ci0gICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIHdoaXRlbGlzdCgpIGNvbnN0IHsgcmV0dXJu
IG1fd2hpdGVsaXN0OyB9CisgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFsbG93bGlzdCgpIGNv
bnN0IHsgcmV0dXJuIG1fYWxsb3dsaXN0OyB9CiAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJs
b2NrbGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1fYmxvY2tsaXN0OyB9CiAgICAgVXNlclNjcmlwdElu
amVjdGlvblRpbWUgaW5qZWN0aW9uVGltZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5qZWN0aW9uVGlt
ZTsgfQogICAgIFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgaW5qZWN0ZWRGcmFtZXMoKSBjb25z
dCB7IHJldHVybiBtX2luamVjdGVkRnJhbWVzOyB9CkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoK
IHByaXZhdGU6CiAgICAgU3RyaW5nIG1fc291cmNlOwogICAgIFVSTCBtX3VybDsKLSAgICBWZWN0
b3I8U3RyaW5nPiBtX3doaXRlbGlzdDsKKyAgICBWZWN0b3I8U3RyaW5nPiBtX2FsbG93bGlzdDsK
ICAgICBWZWN0b3I8U3RyaW5nPiBtX2Jsb2NrbGlzdDsKICAgICBVc2VyU2NyaXB0SW5qZWN0aW9u
VGltZSBtX2luamVjdGlvblRpbWUgeyBVc2VyU2NyaXB0SW5qZWN0aW9uVGltZTo6RG9jdW1lbnRT
dGFydCB9OwogICAgIFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgbV9pbmplY3RlZEZyYW1lcyB7
IFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluQWxsRnJhbWVzIH07CkBAIC03OCw3
ICs3OCw3IEBAIHZvaWQgVXNlclNjcmlwdDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIKIHsKICAg
ICBlbmNvZGVyIDw8IG1fc291cmNlOwogICAgIGVuY29kZXIgPDwgbV91cmw7Ci0gICAgZW5jb2Rl
ciA8PCBtX3doaXRlbGlzdDsKKyAgICBlbmNvZGVyIDw8IG1fYWxsb3dsaXN0OwogICAgIGVuY29k
ZXIgPDwgbV9ibG9ja2xpc3Q7CiAgICAgZW5jb2RlciA8PCBtX2luamVjdGlvblRpbWU7CiAgICAg
ZW5jb2RlciA8PCBtX2luamVjdGVkRnJhbWVzOwpAQCAtOTgsOSArOTgsOSBAQCBPcHRpb25hbDxV
c2VyU2NyaXB0PiBVc2VyU2NyaXB0OjpkZWNvZGUoCiAgICAgaWYgKCF1cmwpCiAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CiAgICAgCi0gICAgT3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+IHdo
aXRlbGlzdDsKLSAgICBkZWNvZGVyID4+IHdoaXRlbGlzdDsKLSAgICBpZiAoIXdoaXRlbGlzdCkK
KyAgICBPcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gYWxsb3dsaXN0OworICAgIGRlY29kZXIgPj4g
YWxsb3dsaXN0OworICAgIGlmICghYWxsb3dsaXN0KQogICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwogICAgIAogICAgIE9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBibG9ja2xpc3Q7CkBAIC0x
MjYsNyArMTI2LDcgQEAgT3B0aW9uYWw8VXNlclNjcmlwdD4gVXNlclNjcmlwdDo6ZGVjb2RlKAog
ICAgIHJldHVybiB7ewogICAgICAgICBXVEZNb3ZlKCpzb3VyY2UpLAogICAgICAgICBXVEZNb3Zl
KCp1cmwpLAotICAgICAgICBXVEZNb3ZlKCp3aGl0ZWxpc3QpLAorICAgICAgICBXVEZNb3ZlKCph
bGxvd2xpc3QpLAogICAgICAgICBXVEZNb3ZlKCpibG9ja2xpc3QpLAogICAgICAgICBXVEZNb3Zl
KCppbmplY3Rpb25UaW1lKSwKICAgICAgICAgV1RGTW92ZSgqaW5qZWN0ZWRGcmFtZXMpLApJbmRl
eDogU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyU3R5bGVTaGVldC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvVXNlclN0eWxlU2hlZXQuaAkocmV2aXNpb24gMjYyODk0KQorKysg
U291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyU3R5bGVTaGVldC5oCSh3b3JraW5nIGNvcHkpCkBAIC00
MywxMCArNDMsMTAgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICBVc2VyU3R5bGVTaGVl
dChjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgVVJMJiB1cmwsIFZlY3RvcjxTdHJpbmc+JiYg
d2hpdGVsaXN0LCBWZWN0b3I8U3RyaW5nPiYmIGJsb2NrbGlzdCwgVXNlckNvbnRlbnRJbmplY3Rl
ZEZyYW1lcyBpbmplY3RlZEZyYW1lcywgVXNlclN0eWxlTGV2ZWwgbGV2ZWwsIE9wdGlvbmFsPFBh
Z2VJZGVudGlmaWVyPiBwYWdlSUQgPSBXVEY6Om51bGxvcHQpCisgICAgVXNlclN0eWxlU2hlZXQo
Y29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFVSTCYgdXJsLCBWZWN0b3I8U3RyaW5nPiYmIGFs
bG93bGlzdCwgVmVjdG9yPFN0cmluZz4mJiBibG9ja2xpc3QsIFVzZXJDb250ZW50SW5qZWN0ZWRG
cmFtZXMgaW5qZWN0ZWRGcmFtZXMsIFVzZXJTdHlsZUxldmVsIGxldmVsLCBPcHRpb25hbDxQYWdl
SWRlbnRpZmllcj4gcGFnZUlEID0gV1RGOjpudWxsb3B0KQogICAgICAgICA6IG1fc291cmNlKHNv
dXJjZSkKICAgICAgICAgLCBtX3VybCh1cmwpCi0gICAgICAgICwgbV93aGl0ZWxpc3QoV1RGTW92
ZSh3aGl0ZWxpc3QpKQorICAgICAgICAsIG1fYWxsb3dsaXN0KFdURk1vdmUoYWxsb3dsaXN0KSkK
ICAgICAgICAgLCBtX2Jsb2NrbGlzdChXVEZNb3ZlKGJsb2NrbGlzdCkpCiAgICAgICAgICwgbV9p
bmplY3RlZEZyYW1lcyhpbmplY3RlZEZyYW1lcykKICAgICAgICAgLCBtX2xldmVsKGxldmVsKQpA
QCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBTdHJpbmcmIHNvdXJjZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc291cmNlOyB9CiAgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCB7IHJl
dHVybiBtX3VybDsgfQotICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB3aGl0ZWxpc3QoKSBjb25z
dCB7IHJldHVybiBtX3doaXRlbGlzdDsgfQorICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhbGxv
d2xpc3QoKSBjb25zdCB7IHJldHVybiBtX2FsbG93bGlzdDsgfQogICAgIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBibG9ja2xpc3QoKSBjb25zdCB7IHJldHVybiBtX2Jsb2NrbGlzdDsgfQogICAgIFVz
ZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgaW5qZWN0ZWRGcmFtZXMoKSBjb25zdCB7IHJldHVybiBt
X2luamVjdGVkRnJhbWVzOyB9CiAgICAgVXNlclN0eWxlTGV2ZWwgbGV2ZWwoKSBjb25zdCB7IHJl
dHVybiBtX2xldmVsOyB9CkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAg
U3RyaW5nIG1fc291cmNlOwogICAgIFVSTCBtX3VybDsKLSAgICBWZWN0b3I8U3RyaW5nPiBtX3do
aXRlbGlzdDsKKyAgICBWZWN0b3I8U3RyaW5nPiBtX2FsbG93bGlzdDsKICAgICBWZWN0b3I8U3Ry
aW5nPiBtX2Jsb2NrbGlzdDsKICAgICBVc2VyQ29udGVudEluamVjdGVkRnJhbWVzIG1faW5qZWN0
ZWRGcmFtZXM7CiAgICAgVXNlclN0eWxlTGV2ZWwgbV9sZXZlbDsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCShyZXZpc2lvbiAyNjI4OTQpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaAkod29ya2luZyBj
b3B5KQpAQCAtMTk4LDcgKzE5OCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBpc1N5c3Rl
bUZvbnRGb3JiaWRkZW5Gb3JFZGl0aW5nKGNvbnN0IFN0cmluZyYpOwogCiAjaWYgUExBVEZPUk0o
Q09DT0EpCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgc2V0Rm9udFdoaXRlbGlzdChj
b25zdCBWZWN0b3I8U3RyaW5nPiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHNl
dEZvbnRBbGxvd2xpc3QoY29uc3QgVmVjdG9yPFN0cmluZz4mKTsKICNlbmRpZgogI2lmIFBMQVRG
T1JNKFdJTikKICAgICBJTUxhbmdGb250TGlua1R5cGUqIGdldEZvbnRMaW5rSW50ZXJmYWNlKCk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVD
b3JlVGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCShyZXZpc2lvbiAyNjI4OTQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTgzMywxOSArODMzLDE5IEBAIFN5bnRoZXNpc1BhaXIgY29tcHV0
ZU5lY2Vzc2FyeVN5bnRoZXNpcygKICAgICByZXR1cm4gU3ludGhlc2lzUGFpcihuZWVkc1N5bnRo
ZXRpY0JvbGQsIG5lZWRzU3ludGhldGljT2JsaXF1ZSk7CiB9CiAKLXR5cGVkZWYgSGFzaFNldDxT
dHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4gV2hpdGVsaXN0Owotc3RhdGljIFdoaXRl
bGlzdCYgZm9udFdoaXRlbGlzdCgpCit0eXBlZGVmIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJ
bnNlbnNpdGl2ZUhhc2g+IEFsbG93bGlzdDsKK3N0YXRpYyBBbGxvd2xpc3QmIGZvbnRBbGxvd2xp
c3QoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxXaGl0ZWxpc3Q+IHdoaXRlbGlzdDsK
LSAgICByZXR1cm4gd2hpdGVsaXN0OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBbGxvd2xp
c3Q+IGFsbG93bGlzdDsKKyAgICByZXR1cm4gYWxsb3dsaXN0OwogfQogCi12b2lkIEZvbnRDYWNo
ZTo6c2V0Rm9udFdoaXRlbGlzdChjb25zdCBWZWN0b3I8U3RyaW5nPiYgaW5wdXRXaGl0ZWxpc3Qp
Cit2b2lkIEZvbnRDYWNoZTo6c2V0Rm9udEFsbG93bGlzdChjb25zdCBWZWN0b3I8U3RyaW5nPiYg
aW5wdXRBbGxvd2xpc3QpCiB7Ci0gICAgV2hpdGVsaXN0JiB3aGl0ZWxpc3QgPSBmb250V2hpdGVs
aXN0KCk7Ci0gICAgd2hpdGVsaXN0LmNsZWFyKCk7Ci0gICAgZm9yIChhdXRvJiBpdGVtIDogaW5w
dXRXaGl0ZWxpc3QpCi0gICAgICAgIHdoaXRlbGlzdC5hZGQoaXRlbSk7CisgICAgQWxsb3dsaXN0
JiBhbGxvd2xpc3QgPSBmb250QWxsb3dsaXN0KCk7CisgICAgYWxsb3dsaXN0LmNsZWFyKCk7Cisg
ICAgZm9yIChhdXRvJiBpdGVtIDogaW5wdXRBbGxvd2xpc3QpCisgICAgICAgIGFsbG93bGlzdC5h
ZGQoaXRlbSk7CiB9CiAKIGNsYXNzIEZvbnREYXRhYmFzZSB7CkBAIC0xMTc5LDggKzExNzksOCBA
QCBzdHJ1Y3QgRm9udExvb2t1cCB7CiAKIHN0YXRpYyBGb250TG9va3VwIHBsYXRmb3JtRm9udExv
b2t1cFdpdGhGYW1pbHkoY29uc3QgQXRvbVN0cmluZyYgZmFtaWx5LCBGb250U2VsZWN0aW9uUmVx
dWVzdCByZXF1ZXN0LCBmbG9hdCBzaXplLCBBbGxvd1VzZXJJbnN0YWxsZWRGb250cyBhbGxvd1Vz
ZXJJbnN0YWxsZWRGb250cykKIHsKLSAgICBjb25zdCBhdXRvJiB3aGl0ZWxpc3QgPSBmb250V2hp
dGVsaXN0KCk7Ci0gICAgaWYgKCFpc1N5c3RlbUZvbnQoZmFtaWx5LnN0cmluZygpKSAmJiB3aGl0
ZWxpc3Quc2l6ZSgpICYmICF3aGl0ZWxpc3QuY29udGFpbnMoZmFtaWx5KSkKKyAgICBjb25zdCBh
dXRvJiBhbGxvd2xpc3QgPSBmb250QWxsb3dsaXN0KCk7CisgICAgaWYgKCFpc1N5c3RlbUZvbnQo
ZmFtaWx5LnN0cmluZygpKSAmJiBhbGxvd2xpc3Quc2l6ZSgpICYmICFhbGxvd2xpc3QuY29udGFp
bnMoZmFtaWx5KSkKICAgICAgICAgcmV0dXJuIHsgbnVsbHB0ciB9OwogCiAgICAgaWYgKGVxdWFs
TGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGZhbWlseSwgIi5hcHBsZXN5c3RlbXVpZm9udHNlcmlm
IikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNl
cnMuY3BwCShyZXZpc2lvbiAyNjI4OTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0hUVFBQYXJzZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQxLDcgKzE0MSw3IEBAIGJv
b2wgaXNWYWxpZEFjY2VwdEhlYWRlclZhbHVlKGNvbnN0IFN0cmkKICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgdmFsdWUubGVuZ3RoKCk7ICsraSkgewogICAgICAgICBVQ2hhciBjID0gdmFs
dWVbaV07CiAKLSAgICAgICAgLy8gRmlyc3QgY2hlY2sgZm9yIGFscGhhbnVtZXJpYyBmb3IgcGVy
Zm9ybWFuY2UgcmVhc29ucyB0aGVuIHdoaXRlbGlzdCBmb3VyIGRlbGltaXRlciBjaGFyYWN0ZXJz
LgorICAgICAgICAvLyBGaXJzdCBjaGVjayBmb3IgYWxwaGFudW1lcmljIGZvciBwZXJmb3JtYW5j
ZSByZWFzb25zIHRoZW4gYWxsb3dsaXN0IGZvdXIgZGVsaW1pdGVyIGNoYXJhY3RlcnMuCiAgICAg
ICAgIGlmIChpc0FTQ0lJQWxwaGFudW1lcmljKGMpIHx8IGMgPT0gJywnIHx8IGMgPT0gJy8nIHx8
IGMgPT0gJzsnIHx8IGMgPT0gJz0nKQogICAgICAgICAgICAgY29udGludWU7CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GbG9hdGluZ09iamVjdHMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmxvYXRpbmdPYmplY3RzLmgJKHJldmlzaW9uIDI2Mjg5
NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GbG9hdGluZ09iamVjdHMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtODQsNyArODQsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0Rlc2NlbmRhbnQo
KSBjb25zdCB7IHJldHVybiBtX2lzRGVzY2VuZGFudDsgfQogICAgIHZvaWQgc2V0SXNEZXNjZW5k
YW50KGJvb2wgaXNEZXNjZW5kYW50KSB7IG1faXNEZXNjZW5kYW50ID0gaXNEZXNjZW5kYW50OyB9
CiAKLSAgICAvLyBGSVhNRTogQ2FsbGVycyBvZiB0aGVzZSBtZXRob2RzIGFyZSBkYW5nZXJvdXMg
YW5kIHNob3VsZCBiZSB3aGl0ZWxpc3RlZCBleHBsaWNpdGx5IG9yIHJlbW92ZWQuCisgICAgLy8g
RklYTUU6IENhbGxlcnMgb2YgdGhlc2UgbWV0aG9kcyBhcmUgZGFuZ2Vyb3VzIGFuZCBzaG91bGQg
YmUgYWxsb3dlZCBleHBsaWNpdGx5IG9yIHJlbW92ZWQuCiAgICAgUm9vdElubGluZUJveCogb3Jp
Z2luYXRpbmdMaW5lKCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW5hdGluZ0xpbmUuZ2V0KCk7IH0K
ICAgICB2b2lkIGNsZWFyT3JpZ2luYXRpbmdMaW5lKCkgeyBtX29yaWdpbmF0aW5nTGluZSA9IG51
bGxwdHI7IH0KICAgICB2b2lkIHNldE9yaWdpbmF0aW5nTGluZShSb290SW5saW5lQm94JiBsaW5l
KSB7IG1fb3JpZ2luYXRpbmdMaW5lID0gbWFrZVdlYWtQdHIobGluZSk7IH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3N0eWxlL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdHlsZS9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHAJKHJldmlzaW9uIDI2
Mjg5NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N0eWxlL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjAwLDcgKzIwMCw3IEBAIHZvaWQgRWxlbWVudFJ1bGVDb2xsZWN0
b3I6OnRyYW5zZmVyTWF0Y2gKICAgICAgICAgYWRkTWF0Y2hlZFByb3BlcnRpZXMoewogICAgICAg
ICAgICAgJm1hdGNoZWRSdWxlLnJ1bGVEYXRhLT5zdHlsZVJ1bGUoKS5wcm9wZXJ0aWVzKCksCiAg
ICAgICAgICAgICBzdGF0aWNfY2FzdDx1aW50MTZfdD4obWF0Y2hlZFJ1bGUucnVsZURhdGEtPmxp
bmtNYXRjaFR5cGUoKSksCi0gICAgICAgICAgICBzdGF0aWNfY2FzdDx1aW50MTZfdD4obWF0Y2hl
ZFJ1bGUucnVsZURhdGEtPnByb3BlcnR5V2hpdGVsaXN0VHlwZSgpKSwKKyAgICAgICAgICAgIHN0
YXRpY19jYXN0PHVpbnQxNl90PihtYXRjaGVkUnVsZS5ydWxlRGF0YS0+cHJvcGVydHlBbGxvd2xp
c3RUeXBlKCkpLAogICAgICAgICAgICAgbWF0Y2hlZFJ1bGUuc3R5bGVTY29wZU9yZGluYWwKICAg
ICAgICAgfSwgZGVjbGFyYXRpb25PcmlnaW4pOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3N0eWxlL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3R5bGUvRWxlbWVudFJ1bGVDb2xsZWN0b3IuaAkocmV2aXNpb24gMjYyODk0KQorKysgU291
cmNlL1dlYkNvcmUvc3R5bGUvRWxlbWVudFJ1bGVDb2xsZWN0b3IuaAkod29ya2luZyBjb3B5KQpA
QCAtNjcsNyArNjcsNyBAQCBzdHJ1Y3QgTWF0Y2hlZFJ1bGUgewogc3RydWN0IE1hdGNoZWRQcm9w
ZXJ0aWVzIHsKICAgICBSZWZQdHI8Y29uc3QgU3R5bGVQcm9wZXJ0aWVzPiBwcm9wZXJ0aWVzOwog
ICAgIHVpbnQxNl90IGxpbmtNYXRjaFR5cGUgeyBTZWxlY3RvckNoZWNrZXI6Ok1hdGNoQWxsIH07
Ci0gICAgdWludDE2X3Qgd2hpdGVsaXN0VHlwZSB7IFByb3BlcnR5V2hpdGVsaXN0Tm9uZSB9Owor
ICAgIHVpbnQxNl90IGFsbG93bGlzdFR5cGUgeyBQcm9wZXJ0eUFsbG93bGlzdE5vbmUgfTsKICAg
ICBTY29wZU9yZGluYWwgc3R5bGVTY29wZU9yZGluYWwgeyBTY29wZU9yZGluYWw6OkVsZW1lbnQg
fTsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0eWxlL1Byb3BlcnR5Q2FzY2FkZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3R5bGUvUHJvcGVydHlDYXNjYWRlLmNwcAko
cmV2aXNpb24gMjYyODk0KQorKysgU291cmNlL1dlYkNvcmUvc3R5bGUvUHJvcGVydHlDYXNjYWRl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQyLDcgKzI0Miw3IEBAIHZvaWQgUHJvcGVydHlDYXNj
YWRlOjpzZXREZWZlcnJlZChDU1NQcm8KIGJvb2wgUHJvcGVydHlDYXNjYWRlOjphZGRNYXRjaChj
b25zdCBNYXRjaGVkUHJvcGVydGllcyYgbWF0Y2hlZFByb3BlcnRpZXMsIENhc2NhZGVMZXZlbCBj
YXNjYWRlTGV2ZWwsIGJvb2wgaW1wb3J0YW50KQogewogICAgIGF1dG8mIHN0eWxlUHJvcGVydGll
cyA9ICptYXRjaGVkUHJvcGVydGllcy5wcm9wZXJ0aWVzOwotICAgIGF1dG8gcHJvcGVydHlXaGl0
ZWxpc3RUeXBlID0gc3RhdGljX2Nhc3Q8UHJvcGVydHlXaGl0ZWxpc3RUeXBlPihtYXRjaGVkUHJv
cGVydGllcy53aGl0ZWxpc3RUeXBlKTsKKyAgICBhdXRvIHByb3BlcnR5QWxsb3dsaXN0VHlwZSA9
IHN0YXRpY19jYXN0PFByb3BlcnR5QWxsb3dsaXN0VHlwZT4obWF0Y2hlZFByb3BlcnRpZXMuYWxs
b3dsaXN0VHlwZSk7CiAgICAgYm9vbCBoYXNJbXBvcnRhbnRQcm9wZXJ0aWVzID0gZmFsc2U7CiAK
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBjb3VudCA9IHN0eWxlUHJvcGVydGllcy5wcm9wZXJ0
eUNvdW50KCk7IGkgPCBjb3VudDsgKytpKSB7CkBAIC0yNjIsMTAgKzI2MiwxMCBAQCBib29sIFBy
b3BlcnR5Q2FzY2FkZTo6YWRkTWF0Y2goY29uc3QgTWF0CiAgICAgICAgIENTU1Byb3BlcnR5SUQg
cHJvcGVydHlJRCA9IGN1cnJlbnQuaWQoKTsKIAogI2lmIEVOQUJMRShWSURFTykKLSAgICAgICAg
aWYgKHByb3BlcnR5V2hpdGVsaXN0VHlwZSA9PSBQcm9wZXJ0eVdoaXRlbGlzdEN1ZSAmJiAhaXNW
YWxpZEN1ZVN0eWxlUHJvcGVydHkocHJvcGVydHlJRCkpCisgICAgICAgIGlmIChwcm9wZXJ0eUFs
bG93bGlzdFR5cGUgPT0gUHJvcGVydHlBbGxvd2xpc3RDdWUgJiYgIWlzVmFsaWRDdWVTdHlsZVBy
b3BlcnR5KHByb3BlcnR5SUQpKQogICAgICAgICAgICAgY29udGludWU7CiAjZW5kaWYKLSAgICAg
ICAgaWYgKHByb3BlcnR5V2hpdGVsaXN0VHlwZSA9PSBQcm9wZXJ0eVdoaXRlbGlzdE1hcmtlciAm
JiAhaXNWYWxpZE1hcmtlclN0eWxlUHJvcGVydHkocHJvcGVydHlJRCkpCisgICAgICAgIGlmIChw
cm9wZXJ0eUFsbG93bGlzdFR5cGUgPT0gUHJvcGVydHlBbGxvd2xpc3RNYXJrZXIgJiYgIWlzVmFs
aWRNYXJrZXJTdHlsZVByb3BlcnR5KHByb3BlcnR5SUQpKQogICAgICAgICAgICAgY29udGludWU7
CiAKICAgICAgICAgaWYgKHNob3VsZEFwcGx5UHJvcGVydHlJblBhcnNlT3JkZXIocHJvcGVydHlJ
RCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxlRGF0YS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3R5bGUvUnVsZURhdGEuY3BwCShyZXZpc2lvbiAyNjI4OTQpCisr
KyBTb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxlRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEz
NywyNSArMTM3LDI1IEBAIHN0YXRpYyBib29sIGNvbXB1dGVDb250YWluc1VuY29tbW9uQXR0cmkK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0YXRpYyBpbmxpbmUgUHJvcGVydHlXaGl0ZWxpc3RU
eXBlIGRldGVybWluZVByb3BlcnR5V2hpdGVsaXN0VHlwZShjb25zdCBDU1NTZWxlY3Rvciogc2Vs
ZWN0b3IpCitzdGF0aWMgaW5saW5lIFByb3BlcnR5QWxsb3dsaXN0VHlwZSBkZXRlcm1pbmVQcm9w
ZXJ0eUFsbG93bGlzdFR5cGUoY29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yKQogewogICAgIGZv
ciAoY29uc3QgQ1NTU2VsZWN0b3IqIGNvbXBvbmVudCA9IHNlbGVjdG9yOyBjb21wb25lbnQ7IGNv
bXBvbmVudCA9IGNvbXBvbmVudC0+dGFnSGlzdG9yeSgpKSB7CiAjaWYgRU5BQkxFKFZJREVPKQog
ICAgICAgICBpZiAoY29tcG9uZW50LT5tYXRjaCgpID09IENTU1NlbGVjdG9yOjpQc2V1ZG9FbGVt
ZW50ICYmIChjb21wb25lbnQtPnBzZXVkb0VsZW1lbnRUeXBlKCkgPT0gQ1NTU2VsZWN0b3I6OlBz
ZXVkb0VsZW1lbnRDdWUgfHwgY29tcG9uZW50LT52YWx1ZSgpID09IFRleHRUcmFja0N1ZTo6Y3Vl
U2hhZG93UHNldWRvSWQoKSkpCi0gICAgICAgICAgICByZXR1cm4gUHJvcGVydHlXaGl0ZWxpc3RD
dWU7CisgICAgICAgICAgICByZXR1cm4gUHJvcGVydHlBbGxvd2xpc3RDdWU7CiAjZW5kaWYKICAg
ICAgICAgaWYgKGNvbXBvbmVudC0+bWF0Y2goKSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvRWxlbWVu
dCAmJiBjb21wb25lbnQtPnBzZXVkb0VsZW1lbnRUeXBlKCkgPT0gQ1NTU2VsZWN0b3I6OlBzZXVk
b0VsZW1lbnRNYXJrZXIpCi0gICAgICAgICAgICByZXR1cm4gUHJvcGVydHlXaGl0ZWxpc3RNYXJr
ZXI7CisgICAgICAgICAgICByZXR1cm4gUHJvcGVydHlBbGxvd2xpc3RNYXJrZXI7CiAKICAgICAg
ICAgaWYgKGNvbnN0IGF1dG8qIHNlbGVjdG9yTGlzdCA9IHNlbGVjdG9yLT5zZWxlY3Rvckxpc3Qo
KSkgewogICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvKiBzdWJTZWxlY3RvciA9IHNlbGVjdG9y
TGlzdC0+Zmlyc3QoKTsgc3ViU2VsZWN0b3I7IHN1YlNlbGVjdG9yID0gQ1NTU2VsZWN0b3JMaXN0
OjpuZXh0KHN1YlNlbGVjdG9yKSkgewotICAgICAgICAgICAgICAgIGF1dG8gd2hpdGVsaXN0VHlw
ZSA9IGRldGVybWluZVByb3BlcnR5V2hpdGVsaXN0VHlwZShzdWJTZWxlY3Rvcik7Ci0gICAgICAg
ICAgICAgICAgaWYgKHdoaXRlbGlzdFR5cGUgIT0gUHJvcGVydHlXaGl0ZWxpc3ROb25lKQotICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gd2hpdGVsaXN0VHlwZTsKKyAgICAgICAgICAgICAgICBh
dXRvIGFsbG93bGlzdFR5cGUgPSBkZXRlcm1pbmVQcm9wZXJ0eUFsbG93bGlzdFR5cGUoc3ViU2Vs
ZWN0b3IpOworICAgICAgICAgICAgICAgIGlmIChhbGxvd2xpc3RUeXBlICE9IFByb3BlcnR5QWxs
b3dsaXN0Tm9uZSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFsbG93bGlzdFR5cGU7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Ci0gICAgcmV0dXJuIFByb3BlcnR5V2hpdGVs
aXN0Tm9uZTsKKyAgICByZXR1cm4gUHJvcGVydHlBbGxvd2xpc3ROb25lOwogfQogCiBSdWxlRGF0
YTo6UnVsZURhdGEoY29uc3QgU3R5bGVSdWxlJiBzdHlsZVJ1bGUsIHVuc2lnbmVkIHNlbGVjdG9y
SW5kZXgsIHVuc2lnbmVkIHNlbGVjdG9yTGlzdEluZGV4LCB1bnNpZ25lZCBwb3NpdGlvbikKQEAg
LTE2Nyw3ICsxNjcsNyBAQCBSdWxlRGF0YTo6UnVsZURhdGEoY29uc3QgU3R5bGVSdWxlJiBzdHls
CiAgICAgLCBtX2Nhbk1hdGNoUHNldWRvRWxlbWVudChzZWxlY3RvckNhbk1hdGNoUHNldWRvRWxl
bWVudCgqc2VsZWN0b3IoKSkpCiAgICAgLCBtX2NvbnRhaW5zVW5jb21tb25BdHRyaWJ1dGVTZWxl
Y3Rvcihjb21wdXRlQ29udGFpbnNVbmNvbW1vbkF0dHJpYnV0ZVNlbGVjdG9yKCpzZWxlY3Rvcigp
KSkKICAgICAsIG1fbGlua01hdGNoVHlwZShTZWxlY3RvckNoZWNrZXI6OmRldGVybWluZUxpbmtN
YXRjaFR5cGUoc2VsZWN0b3IoKSkpCi0gICAgLCBtX3Byb3BlcnR5V2hpdGVsaXN0VHlwZShkZXRl
cm1pbmVQcm9wZXJ0eVdoaXRlbGlzdFR5cGUoc2VsZWN0b3IoKSkpCisgICAgLCBtX3Byb3BlcnR5
QWxsb3dsaXN0VHlwZShkZXRlcm1pbmVQcm9wZXJ0eUFsbG93bGlzdFR5cGUoc2VsZWN0b3IoKSkp
CiAgICAgLCBtX2lzRW5hYmxlZCh0cnVlKQogICAgICwgbV9kZXNjZW5kYW50U2VsZWN0b3JJZGVu
dGlmaWVySGFzaGVzKFNlbGVjdG9yRmlsdGVyOjpjb2xsZWN0SGFzaGVzKCpzZWxlY3RvcigpKSkK
IHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVEYXRhLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3R5bGUvUnVsZURhdGEuaAkocmV2aXNpb24gMjYyODk0KQorKysgU291
cmNlL1dlYkNvcmUvc3R5bGUvUnVsZURhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTEgKzI3
LDExIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgU3R5bGUgewogCi1lbnVtIFBy
b3BlcnR5V2hpdGVsaXN0VHlwZSB7Ci0gICAgUHJvcGVydHlXaGl0ZWxpc3ROb25lICAgPSAwLAot
ICAgIFByb3BlcnR5V2hpdGVsaXN0TWFya2VyLAorZW51bSBQcm9wZXJ0eUFsbG93bGlzdFR5cGUg
eworICAgIFByb3BlcnR5QWxsb3dsaXN0Tm9uZSAgID0gMCwKKyAgICBQcm9wZXJ0eUFsbG93bGlz
dE1hcmtlciwKICNpZiBFTkFCTEUoVklERU8pCi0gICAgUHJvcGVydHlXaGl0ZWxpc3RDdWUKKyAg
ICBQcm9wZXJ0eUFsbG93bGlzdEN1ZQogI2VuZGlmCiB9OwogCkBAIC02NSw3ICs2NSw3IEBAIHB1
YmxpYzoKICAgICBNYXRjaEJhc2VkT25SdWxlSGFzaCBtYXRjaEJhc2VkT25SdWxlSGFzaCgpIGNv
bnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PE1hdGNoQmFzZWRPblJ1bGVIYXNoPihtX21hdGNoQmFz
ZWRPblJ1bGVIYXNoKTsgfQogICAgIGJvb2wgY29udGFpbnNVbmNvbW1vbkF0dHJpYnV0ZVNlbGVj
dG9yKCkgY29uc3QgeyByZXR1cm4gbV9jb250YWluc1VuY29tbW9uQXR0cmlidXRlU2VsZWN0b3I7
IH0KICAgICB1bnNpZ25lZCBsaW5rTWF0Y2hUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9saW5rTWF0
Y2hUeXBlOyB9Ci0gICAgUHJvcGVydHlXaGl0ZWxpc3RUeXBlIHByb3BlcnR5V2hpdGVsaXN0VHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFByb3BlcnR5V2hpdGVsaXN0VHlwZT4obV9w
cm9wZXJ0eVdoaXRlbGlzdFR5cGUpOyB9CisgICAgUHJvcGVydHlBbGxvd2xpc3RUeXBlIHByb3Bl
cnR5QWxsb3dsaXN0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFByb3BlcnR5QWxs
b3dsaXN0VHlwZT4obV9wcm9wZXJ0eUFsbG93bGlzdFR5cGUpOyB9CiAgICAgYm9vbCBpc0VuYWJs
ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzRW5hYmxlZDsgfQogICAgIHZvaWQgc2V0RW5hYmxlZChi
b29sIHZhbHVlKSB7IG1faXNFbmFibGVkID0gdmFsdWU7IH0KIApAQCAtODQsNyArODQsNyBAQCBw
cml2YXRlOgogICAgIHVuc2lnbmVkIG1fY2FuTWF0Y2hQc2V1ZG9FbGVtZW50IDogMTsKICAgICB1
bnNpZ25lZCBtX2NvbnRhaW5zVW5jb21tb25BdHRyaWJ1dGVTZWxlY3RvciA6IDE7CiAgICAgdW5z
aWduZWQgbV9saW5rTWF0Y2hUeXBlIDogMjsgLy8gIFNlbGVjdG9yQ2hlY2tlcjo6TGlua01hdGNo
TWFzawotICAgIHVuc2lnbmVkIG1fcHJvcGVydHlXaGl0ZWxpc3RUeXBlIDogMjsKKyAgICB1bnNp
Z25lZCBtX3Byb3BlcnR5QWxsb3dsaXN0VHlwZSA6IDI7CiAgICAgdW5zaWduZWQgbV9pc0VuYWJs
ZWQgOiAxOwogICAgIFNlbGVjdG9yRmlsdGVyOjpIYXNoZXMgbV9kZXNjZW5kYW50U2VsZWN0b3JJ
ZGVudGlmaWVySGFzaGVzOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjI4OTQpCisrKyBT
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisy
MDIwLTA2LTEwICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAgICBSZXBs
YWNlIGluc3RhbmNlcyBvZiB3aGl0ZWxpc3QgaW4gV2ViQ29yZSB3aXRoIGFsbG93bGlzdAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzMDY4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjphZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RF
bnRyeSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpy
ZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZXNldE9yaWdpbkFjY2Vzc1doaXRlbGlzdHMpOgor
ICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBD
OjpBcmd1bWVudENvZGVyPFVzZXJTdHlsZVNoZWV0Pjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6
QXJndW1lbnRDb2RlcjxVc2VyU3R5bGVTaGVldD46OmRlY29kZSk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkluamVjdGVkQnVuZGxlOjphZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeSk6CisgICAgICAg
IChXZWJLaXQ6OkluamVjdGVkQnVuZGxlOjpyZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRy
eSk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlOjpyZXNldE9yaWdpbkFjY2Vzc1do
aXRlbGlzdHMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1t
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9j
ZXNzKToKKwogMjAyMC0wNi0xMCAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgUmVwbGFjZSBpbnN0YW5jZXMgb2YgYmxhY2tsaXN0IGluIFdlYkNvcmUgd2l0aCBibG9j
a2xpc3QKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCShyZXZpc2lvbiAyNjI4OTQp
CisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTAxLDE3ICs5MDEsMTcgQEAgdm9pZCBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVxdQogCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjphZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShjb25zdCBTdHJpbmcm
IHNvdXJjZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblByb3RvY29sLCBjb25zdCBT
dHJpbmcmIGRlc3RpbmF0aW9uSG9zdCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucykK
IHsKLSAgICBTZWN1cml0eVBvbGljeTo6YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoU2Vj
dXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcoc291cmNlT3JpZ2luKS5nZXQoKSwgZGVzdGlu
YXRpb25Qcm90b2NvbCwgZGVzdGluYXRpb25Ib3N0LCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlu
cyk7CisgICAgU2VjdXJpdHlQb2xpY3k6OmFkZE9yaWdpbkFjY2Vzc0FsbG93bGlzdEVudHJ5KFNl
Y3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKHNvdXJjZU9yaWdpbikuZ2V0KCksIGRlc3Rp
bmF0aW9uUHJvdG9jb2wsIGRlc3RpbmF0aW9uSG9zdCwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFp
bnMpOwogfQogCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZW1vdmVPcmln
aW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbiwgY29uc3Qg
U3RyaW5nJiBkZXN0aW5hdGlvblByb3RvY29sLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uSG9z
dCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucykKIHsKLSAgICBTZWN1cml0eVBvbGlj
eTo6cmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoU2VjdXJpdHlPcmlnaW46OmNyZWF0
ZUZyb21TdHJpbmcoc291cmNlT3JpZ2luKS5nZXQoKSwgZGVzdGluYXRpb25Qcm90b2NvbCwgZGVz
dGluYXRpb25Ib3N0LCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7CisgICAgU2VjdXJpdHlQ
b2xpY3k6OnJlbW92ZU9yaWdpbkFjY2Vzc0FsbG93bGlzdEVudHJ5KFNlY3VyaXR5T3JpZ2luOjpj
cmVhdGVGcm9tU3RyaW5nKHNvdXJjZU9yaWdpbikuZ2V0KCksIGRlc3RpbmF0aW9uUHJvdG9jb2ws
IGRlc3RpbmF0aW9uSG9zdCwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOwogfQogCiB2b2lk
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZXNldE9yaWdpbkFjY2Vzc1doaXRlbGlz
dHMoKQogewotICAgIFNlY3VyaXR5UG9saWN5OjpyZXNldE9yaWdpbkFjY2Vzc1doaXRlbGlzdHMo
KTsKKyAgICBTZWN1cml0eVBvbGljeTo6cmVzZXRPcmlnaW5BY2Nlc3NBbGxvd2xpc3RzKCk7CiB9
CiAKIE9wdGlvbmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+IE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpzdGFydFRyYWNraW5nUmVzb3VyY2VMb2FkKFBhZ2VJZGVudGlmaWVyIHBhZ2VJ
RCwgUmVzb3VyY2VMb2FkSWRlbnRpZmllciByZXNvdXJjZUlELCBib29sIGlzVG9wUmVzb3VyY2Up
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5j
cHAJKHJldmlzaW9uIDI2Mjg5NCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwODAsNyArMjA4MCw3IEBAIHZvaWQg
QXJndW1lbnRDb2RlcjxVc2VyU3R5bGVTaGVldD46OmVuY28KIHsKICAgICBlbmNvZGVyIDw8IHVz
ZXJTdHlsZVNoZWV0LnNvdXJjZSgpOwogICAgIGVuY29kZXIgPDwgdXNlclN0eWxlU2hlZXQudXJs
KCk7Ci0gICAgZW5jb2RlciA8PCB1c2VyU3R5bGVTaGVldC53aGl0ZWxpc3QoKTsKKyAgICBlbmNv
ZGVyIDw8IHVzZXJTdHlsZVNoZWV0LmFsbG93bGlzdCgpOwogICAgIGVuY29kZXIgPDwgdXNlclN0
eWxlU2hlZXQuYmxvY2tsaXN0KCk7CiAgICAgZW5jb2Rlci5lbmNvZGVFbnVtKHVzZXJTdHlsZVNo
ZWV0LmluamVjdGVkRnJhbWVzKCkpOwogICAgIGVuY29kZXIuZW5jb2RlRW51bSh1c2VyU3R5bGVT
aGVldC5sZXZlbCgpKTsKQEAgLTIwOTcsOCArMjA5Nyw4IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxV
c2VyU3R5bGVTaGVldD46OmRlY28KICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHVybCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIFZlY3RvcjxTdHJpbmc+IHdoaXRlbGlzdDsKLSAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHdoaXRlbGlzdCkpCisgICAgVmVjdG9yPFN0cmluZz4gYWxsb3ds
aXN0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYWxsb3dsaXN0KSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgVmVjdG9yPFN0cmluZz4gYmxvY2tsaXN0OwpAQCAtMjExOCw3ICsyMTE4
LDcgQEAgYm9vbCBBcmd1bWVudENvZGVyPFVzZXJTdHlsZVNoZWV0Pjo6ZGVjbwogICAgIGlmICgh
cGFnZUlEKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICB1c2VyU3R5bGVTaGVldCA9IFVz
ZXJTdHlsZVNoZWV0KHNvdXJjZSwgdXJsLCBXVEZNb3ZlKHdoaXRlbGlzdCksIFdURk1vdmUoYmxv
Y2tsaXN0KSwgaW5qZWN0ZWRGcmFtZXMsIGxldmVsLCBXVEZNb3ZlKCpwYWdlSUQpKTsKKyAgICB1
c2VyU3R5bGVTaGVldCA9IFVzZXJTdHlsZVNoZWV0KHNvdXJjZSwgdXJsLCBXVEZNb3ZlKGFsbG93
bGlzdCksIFdURk1vdmUoYmxvY2tsaXN0KSwgaW5qZWN0ZWRGcmFtZXMsIGxldmVsLCBXVEZNb3Zl
KCpwYWdlSUQpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUu
Y3BwCShyZXZpc2lvbiAyNjI4OTQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOTUsMjAgKzM5
NSwyMCBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjpzZXRTcGF0aWFsTmF2aWdhdGlvCiAKIHZvaWQg
SW5qZWN0ZWRCdW5kbGU6OmFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KGNvbnN0IFN0cmlu
ZyYgc291cmNlT3JpZ2luLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGNvbnN0
IFN0cmluZyYgZGVzdGluYXRpb25Ib3N0LCBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5z
KQogewotICAgIFNlY3VyaXR5UG9saWN5OjphZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShT
ZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhzb3VyY2VPcmlnaW4pLmdldCgpLCBkZXN0
aW5hdGlvblByb3RvY29sLCBkZXN0aW5hdGlvbkhvc3QsIGFsbG93RGVzdGluYXRpb25TdWJkb21h
aW5zKTsKKyAgICBTZWN1cml0eVBvbGljeTo6YWRkT3JpZ2luQWNjZXNzQWxsb3dsaXN0RW50cnko
U2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcoc291cmNlT3JpZ2luKS5nZXQoKSwgZGVz
dGluYXRpb25Qcm90b2NvbCwgZGVzdGluYXRpb25Ib3N0LCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9t
YWlucyk7CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpBZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeSB7IHNvdXJjZU9yaWdp
biwgZGVzdGluYXRpb25Qcm90b2NvbCwgZGVzdGluYXRpb25Ib3N0LCBhbGxvd0Rlc3RpbmF0aW9u
U3ViZG9tYWlucyB9LCAwKTsKIAogfQogCiB2b2lkIEluamVjdGVkQnVuZGxlOjpyZW1vdmVPcmln
aW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbiwgY29uc3Qg
U3RyaW5nJiBkZXN0aW5hdGlvblByb3RvY29sLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uSG9z
dCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucykKIHsKLSAgICBTZWN1cml0eVBvbGlj
eTo6cmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoU2VjdXJpdHlPcmlnaW46OmNyZWF0
ZUZyb21TdHJpbmcoc291cmNlT3JpZ2luKS5nZXQoKSwgZGVzdGluYXRpb25Qcm90b2NvbCwgZGVz
dGluYXRpb25Ib3N0LCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7CisgICAgU2VjdXJpdHlQ
b2xpY3k6OnJlbW92ZU9yaWdpbkFjY2Vzc0FsbG93bGlzdEVudHJ5KFNlY3VyaXR5T3JpZ2luOjpj
cmVhdGVGcm9tU3RyaW5nKHNvdXJjZU9yaWdpbikuZ2V0KCksIGRlc3RpbmF0aW9uUHJvdG9jb2ws
IGRlc3RpbmF0aW9uSG9zdCwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOwogICAgIFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5l
Y3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVt
b3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkgeyBzb3VyY2VPcmlnaW4sIGRlc3RpbmF0aW9u
UHJvdG9jb2wsIGRlc3RpbmF0aW9uSG9zdCwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMgfSwg
MCk7CiB9CiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnJlc2V0T3JpZ2luQWNjZXNzV2hpdGVsaXN0
cygpCiB7Ci0gICAgU2VjdXJpdHlQb2xpY3k6OnJlc2V0T3JpZ2luQWNjZXNzV2hpdGVsaXN0cygp
OworICAgIFNlY3VyaXR5UG9saWN5OjpyZXNldE9yaWdpbkFjY2Vzc0FsbG93bGlzdHMoKTsKICAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24o
KS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OlJlc2V0T3JpZ2luQWNjZXNzV2hpdGVsaXN0cyB7IH0sIDApOwogfQogCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0JKHJl
dmlzaW9uIDI2Mjg5NCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9j
ZXNzQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTIxMiw3ICsyMTIsNyBAQCB2b2lkIFdlYlBy
b2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByCiAgICAgW05TVVJMQ2FjaGUgc2V0U2hhcmVk
VVJMQ2FjaGU6dXJsQ2FjaGUuZ2V0KCldOwogCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIFdlYkNv
cmU6OkZvbnRDYWNoZTo6c2V0Rm9udFdoaXRlbGlzdChwYXJhbWV0ZXJzLmZvbnRXaGl0ZWxpc3Qp
OworICAgIFdlYkNvcmU6OkZvbnRDYWNoZTo6c2V0Rm9udEFsbG93bGlzdChwYXJhbWV0ZXJzLmZv
bnRXaGl0ZWxpc3QpOwogI2VuZGlmCiAKICAgICBtX2NvbXBvc2l0aW5nUmVuZGVyU2VydmVyUG9y
dCA9IFdURk1vdmUocGFyYW1ldGVycy5hY2NlbGVyYXRlZENvbXBvc2l0aW5nUG9ydCk7CkluZGV4
OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjI4OTQpCisrKyBTb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBA
QAorMjAyMC0wNi0xMCAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+CisKKyAgICAgICAg
UmVwbGFjZSBpbnN0YW5jZXMgb2Ygd2hpdGVsaXN0IGluIFdlYkNvcmUgd2l0aCBhbGxvd2xpc3QK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzA2OAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViVmll
dy9XZWJWaWV3Lm1tOgorICAgICAgICAoK1tXZWJWaWV3IF9hZGRPcmlnaW5BY2Nlc3NXaGl0ZWxp
c3RFbnRyeVdpdGhTb3VyY2VPcmlnaW46ZGVzdGluYXRpb25Qcm90b2NvbDpkZXN0aW5hdGlvbkhv
c3Q6YWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnM6XSk6CisgICAgICAgICgrW1dlYlZpZXcgX3Jl
bW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5V2l0aFNvdXJjZU9yaWdpbjpkZXN0aW5hdGlv
blByb3RvY29sOmRlc3RpbmF0aW9uSG9zdDphbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWluczpdKToK
KyAgICAgICAgKCtbV2ViVmlldyBfcmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RzXSk6CisgICAg
ICAgICgrW1dlYlZpZXcgX3NldEZvbnRXaGl0ZWxpc3Q6XSk6CisKIDIwMjAtMDYtMTAgIEdlb2Zm
cmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBTb21lIHN0eWxlIGltcHJv
dmVtZW50cyB0byBtYWluIHRocmVhZCBjb2RlCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJWaWV3Lm1tCShyZXZpc2lvbiAyNjI4OTQpCisrKyBTb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ2OTcsMTcg
KzQ2OTcsMTcgQEAgLSAoTlNQYXN0ZWJvYXJkICopX2luc2VydGlvblBhc3RlYm9hcmQKIAogKyAo
dm9pZClfYWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnlXaXRoU291cmNlT3JpZ2luOihOU1N0
cmluZyAqKXNvdXJjZU9yaWdpbiBkZXN0aW5hdGlvblByb3RvY29sOihOU1N0cmluZyAqKWRlc3Rp
bmF0aW9uUHJvdG9jb2wgZGVzdGluYXRpb25Ib3N0OihOU1N0cmluZyAqKWRlc3RpbmF0aW9uSG9z
dCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWluczooQk9PTClhbGxvd0Rlc3RpbmF0aW9uU3ViZG9t
YWlucwogewotICAgIFdlYkNvcmU6OlNlY3VyaXR5UG9saWN5OjphZGRPcmlnaW5BY2Nlc3NXaGl0
ZWxpc3RFbnRyeShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhzb3Vy
Y2VPcmlnaW4pLmdldCgpLCBkZXN0aW5hdGlvblByb3RvY29sLCBkZXN0aW5hdGlvbkhvc3QsIGFs
bG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKKyAgICBXZWJDb3JlOjpTZWN1cml0eVBvbGljeTo6
YWRkT3JpZ2luQWNjZXNzQWxsb3dsaXN0RW50cnkoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmNy
ZWF0ZUZyb21TdHJpbmcoc291cmNlT3JpZ2luKS5nZXQoKSwgZGVzdGluYXRpb25Qcm90b2NvbCwg
ZGVzdGluYXRpb25Ib3N0LCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7CiB9CiAKICsgKHZv
aWQpX3JlbW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5V2l0aFNvdXJjZU9yaWdpbjooTlNT
dHJpbmcgKilzb3VyY2VPcmlnaW4gZGVzdGluYXRpb25Qcm90b2NvbDooTlNTdHJpbmcgKilkZXN0
aW5hdGlvblByb3RvY29sIGRlc3RpbmF0aW9uSG9zdDooTlNTdHJpbmcgKilkZXN0aW5hdGlvbkhv
c3QgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnM6KEJPT0wpYWxsb3dEZXN0aW5hdGlvblN1YmRv
bWFpbnMKIHsKLSAgICBXZWJDb3JlOjpTZWN1cml0eVBvbGljeTo6cmVtb3ZlT3JpZ2luQWNjZXNz
V2hpdGVsaXN0RW50cnkoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmco
c291cmNlT3JpZ2luKS5nZXQoKSwgZGVzdGluYXRpb25Qcm90b2NvbCwgZGVzdGluYXRpb25Ib3N0
LCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7CisgICAgV2ViQ29yZTo6U2VjdXJpdHlQb2xp
Y3k6OnJlbW92ZU9yaWdpbkFjY2Vzc0FsbG93bGlzdEVudHJ5KFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luOjpjcmVhdGVGcm9tU3RyaW5nKHNvdXJjZU9yaWdpbikuZ2V0KCksIGRlc3RpbmF0aW9uUHJv
dG9jb2wsIGRlc3RpbmF0aW9uSG9zdCwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOwogfQog
CiArICh2b2lkKV9yZXNldE9yaWdpbkFjY2Vzc1doaXRlbGlzdHMKIHsKLSAgICBXZWJDb3JlOjpT
ZWN1cml0eVBvbGljeTo6cmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RzKCk7CisgICAgV2ViQ29y
ZTo6U2VjdXJpdHlQb2xpY3k6OnJlc2V0T3JpZ2luQWNjZXNzQWxsb3dsaXN0cygpOwogfQogCiAt
IChCT09MKV9pc1ZpZXdWaXNpYmxlCkBAIC0xMDIyNCw3ICsxMDIyNCw3IEBAICsgKHZvaWQpX3Nl
dEZvbnRXaGl0ZWxpc3Q6KE5TQXJyYXkgKil3aGkKICNpZiAhUExBVEZPUk0oTUFDKQogICAgIFVO
VVNFRF9QQVJBTSh3aGl0ZWxpc3QpOwogI2Vsc2UKLSAgICBXZWJDb3JlOjpGb250Q2FjaGU6OnNl
dEZvbnRXaGl0ZWxpc3QobWFrZVZlY3RvcjxTdHJpbmc+KHdoaXRlbGlzdCkpOworICAgIFdlYkNv
cmU6OkZvbnRDYWNoZTo6c2V0Rm9udEFsbG93bGlzdChtYWtlVmVjdG9yPFN0cmluZz4od2hpdGVs
aXN0KSk7CiAjZW5kaWYKIH0KIApJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmll
dy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAJ
KHJldmlzaW9uIDI2Mjg5NCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03MTU2LDE5ICs3MTU2LDE5IEBAIEhSRVNVTFQgV2ViVmlldzo6
aW52YWxpZGF0ZUJhY2tpbmdTdG9yZSgKIAogSFJFU1VMVCBXZWJWaWV3OjphZGRPcmlnaW5BY2Nl
c3NXaGl0ZWxpc3RFbnRyeShfSW5fIEJTVFIgc291cmNlT3JpZ2luLCBfSW5fIEJTVFIgZGVzdGlu
YXRpb25Qcm90b2NvbCwgX0luXyBCU1RSIGRlc3RpbmF0aW9uSG9zdCwgQk9PTCBhbGxvd0Rlc3Rp
bmF0aW9uU3ViZG9tYWlucykKIHsKLSAgICBTZWN1cml0eVBvbGljeTo6YWRkT3JpZ2luQWNjZXNz
V2hpdGVsaXN0RW50cnkoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcodG9TdHJpbmco
c291cmNlT3JpZ2luKSkuZ2V0KCksIHRvU3RyaW5nKGRlc3RpbmF0aW9uUHJvdG9jb2wpLCB0b1N0
cmluZyhkZXN0aW5hdGlvbkhvc3QpLCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7CisgICAg
U2VjdXJpdHlQb2xpY3k6OmFkZE9yaWdpbkFjY2Vzc0FsbG93bGlzdEVudHJ5KFNlY3VyaXR5T3Jp
Z2luOjpjcmVhdGVGcm9tU3RyaW5nKHRvU3RyaW5nKHNvdXJjZU9yaWdpbikpLmdldCgpLCB0b1N0
cmluZyhkZXN0aW5hdGlvblByb3RvY29sKSwgdG9TdHJpbmcoZGVzdGluYXRpb25Ib3N0KSwgYWxs
b3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOwogICAgIHJldHVybiBTX09LOwogfQogCiBIUkVTVUxU
IFdlYlZpZXc6OnJlbW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KF9Jbl8gQlNUUiBzb3Vy
Y2VPcmlnaW4sIF9Jbl8gQlNUUiBkZXN0aW5hdGlvblByb3RvY29sLCBfSW5fIEJTVFIgZGVzdGlu
YXRpb25Ib3N0LCBCT09MIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKQogewotICAgIFNlY3Vy
aXR5UG9saWN5OjpyZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShTZWN1cml0eU9yaWdp
bjo6Y3JlYXRlRnJvbVN0cmluZyh0b1N0cmluZyhzb3VyY2VPcmlnaW4pKS5nZXQoKSwgdG9TdHJp
bmcoZGVzdGluYXRpb25Qcm90b2NvbCksIHRvU3RyaW5nKGRlc3RpbmF0aW9uSG9zdCksIGFsbG93
RGVzdGluYXRpb25TdWJkb21haW5zKTsKKyAgICBTZWN1cml0eVBvbGljeTo6cmVtb3ZlT3JpZ2lu
QWNjZXNzQWxsb3dsaXN0RW50cnkoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcodG9T
dHJpbmcoc291cmNlT3JpZ2luKSkuZ2V0KCksIHRvU3RyaW5nKGRlc3RpbmF0aW9uUHJvdG9jb2wp
LCB0b1N0cmluZyhkZXN0aW5hdGlvbkhvc3QpLCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7
CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKIEhSRVNVTFQgV2ViVmlldzo6cmVzZXRPcmlnaW5BY2Nl
c3NXaGl0ZWxpc3RzKCkKIHsKLSAgICBTZWN1cml0eVBvbGljeTo6cmVzZXRPcmlnaW5BY2Nlc3NX
aGl0ZWxpc3RzKCk7CisgICAgU2VjdXJpdHlQb2xpY3k6OnJlc2V0T3JpZ2luQWNjZXNzQWxsb3ds
aXN0cygpOwogICAgIHJldHVybiBTX09LOwogfQogIAo=
</data>
<flag name="review"
          id="417072"
          type_id="1"
          status="+"
          setter="thorton"
    />
    <flag name="commit-queue"
          id="417075"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401667</attachid>
            <date>2020-06-11 12:24:42 -0700</date>
            <delta_ts>2020-06-11 12:32:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>for-review-4.txt</filename>
            <type>text/plain</type>
            <size>67737</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MjkxNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExOCBAQAorMjAyMC0wNi0xMSAgQmV0aCBE
YWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIHJlZmVyZW5jZXMgdG8g
InNsYXZlIiBpbiBXZWJDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTMwODUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaGlzIGZlYXR1cmUgaXMgcmVmZXJyZWQgdG8gYXMgYSBtZWRpYWdyb3VwIGlu
IGh0bWwsIHNvIGxldCdzIHVzZSB0aGF0IHRlcm1pbm9sb2d5IGhlcmUgYXMgCisgICAgICAgIHdl
bGwuCisgICAgICAgICogaHRtbC9NZWRpYUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFDb250cm9sbGVyOjpidWZmZXJlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYUNvbnRyb2xsZXI6OnNlZWthYmxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
Q29udHJvbGxlcjo6cGxheWVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbGxlcjo6
ZHVyYXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sbGVyOjpzZXRD
dXJyZW50VGltZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xsZXI6OnBsYXkpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sbGVyOjp1cGRhdGVSZWFkeVN0YXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbGxlcjo6dXBkYXRlUGxheWJhY2tTdGF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xsZXI6OmlzQmxvY2tlZCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xsZXI6Omhhc0VuZGVkIGNvbnN0KToKKworMjAyMC0w
Ni0xMSAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVwbGFjZSBp
bnN0YW5jZXMgb2Ygd2hpdGVsaXN0IGluIFdlYkNvcmUgd2l0aCBhbGxvd2xpc3QKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzA2OAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZUF1dGhvcml6ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VB
dXRob3JpemVyOjpEYXRhYmFzZUF1dGhvcml6ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJh
c2VBdXRob3JpemVyOjphZGRBbGxvd2VkRnVuY3Rpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkRh
dGFiYXNlQXV0aG9yaXplcjo6YWxsb3dGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpEYXRh
YmFzZUF1dGhvcml6ZXI6OmFkZFdoaXRlbGlzdGVkRnVuY3Rpb25zKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQXV0aG9yaXplci5oOgorICAgICAgICAq
IGRvbS9FeHRlbnNpb25TdHlsZVNoZWV0cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNp
b25TdHlsZVNoZWV0czo6dXBkYXRlSW5qZWN0ZWRTdHlsZVNoZWV0Q2FjaGUgY29uc3QpOgorICAg
ICAgICAqIGxvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6aXNPbkFjY2Vzc0NvbnRyb2xTaW1wbGVSZXF1ZXN0TWV0aG9kQWxsb3dsaXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OmlzU2ltcGxlQ3Jvc3NPcmlnaW5BY2Nlc3NSZXF1ZXN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OmlzT25BY2Nlc3NDb250cm9sU2ltcGxlUmVxdWVzdE1ldGhvZFdoaXRlbGlz
dCk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5o
OgorICAgICAgICAqIGxvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGVJdGVtOjph
bGxvd3NDcm9zc09yaWdpbk1ldGhvZCBjb25zdCk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNo
ZTo6c2V0T25saW5lQWxsb3dsaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2Fj
aGU6OmlzVVJMSW5PbmxpbmVBbGxvd2xpc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRp
b25DYWNoZTo6c2V0T25saW5lV2hpdGVsaXN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkFwcGxpY2F0aW9uQ2FjaGU6OmlzVVJMSW5PbmxpbmVXaGl0ZWxpc3QpOiBEZWxldGVkLgorICAg
ICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlLmg6CisgICAgICAgIChXZWJD
b3JlOjpBcHBsaWNhdGlvbkNhY2hlOjpvbmxpbmVBbGxvd2xpc3QgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZTo6b25saW5lV2hpdGVsaXN0IGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hZGlu
Z01hbmlmZXN0KToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhv
c3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6OnNob3VsZExv
YWRSZXNvdXJjZUZyb21BcHBsaWNhdGlvbkNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxp
Y2F0aW9uQ2FjaGVIb3N0OjpnZXRBcHBsaWNhdGlvbkNhY2hlRmFsbGJhY2tSZXNvdXJjZSk6Cisg
ICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpmYWxsYmFja0NhY2hlR3Jv
dXBGb3JVUkwpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6Om9w
ZW5EYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6
c3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRD
YWNoZSk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL01hbmlmZXN0UGFyc2VyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnBhcnNlTWFuaWZlc3QpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNo
ZS9NYW5pZmVzdFBhcnNlci5oOgorICAgICAgICAqIHBhZ2UvRnJhbWUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWU6OmluamVjdFVzZXJTY3JpcHRJbW1lZGlhdGVseSk6CisgICAgICAgICog
cGFnZS9TZWN1cml0eU9yaWdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bjo6Y2FuUmVxdWVzdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6
Y2FuRGlzcGxheSBjb25zdCk6CisgICAgICAgICogcGFnZS9TZWN1cml0eVBvbGljeS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTZWN1cml0eVBvbGljeTo6aXNBY2Nlc3NBbGxvd2VkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNlY3VyaXR5UG9saWN5OjphZGRPcmlnaW5BY2Nlc3NBbGxvd2xpc3RFbnRy
eSk6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eVBvbGljeTo6cmVtb3ZlT3JpZ2luQWNjZXNz
QWxsb3dsaXN0RW50cnkpOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlQb2xpY3k6OnJlc2V0
T3JpZ2luQWNjZXNzQWxsb3dsaXN0cyk6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eVBvbGlj
eTo6aXNBY2Nlc3NXaGl0ZUxpc3RlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTZWN1
cml0eVBvbGljeTo6YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6U2VjdXJpdHlQb2xpY3k6OnJlbW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlz
dEVudHJ5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5UG9saWN5OjpyZXNl
dE9yaWdpbkFjY2Vzc1doaXRlbGlzdHMpOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2UvU2VjdXJp
dHlQb2xpY3kuaDoKKyAgICAgICAgKiBwYWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpVc2VyQ29udGVudFVSTFBhdHRlcm46Om1hdGNoZXNQYXR0ZXJucyk6
CisgICAgICAgICogcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uaDoKKyAgICAgICAgKiBwYWdl
L1VzZXJTY3JpcHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJTY3JpcHQ6OlVzZXJTY3JpcHQp
OgorICAgICAgICAoV2ViQ29yZTo6VXNlclNjcmlwdDo6YWxsb3dsaXN0IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlVzZXJTY3JpcHQ6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpVc2VyU2NyaXB0OjpkZWNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6VXNlclNjcmlwdDo6d2hp
dGVsaXN0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL1VzZXJTdHlsZVNoZWV0Lmg6
CisgICAgICAgIChXZWJDb3JlOjpVc2VyU3R5bGVTaGVldDo6VXNlclN0eWxlU2hlZXQpOgorICAg
ICAgICAoV2ViQ29yZTo6VXNlclN0eWxlU2hlZXQ6OmFsbG93bGlzdCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpVc2VyU3R5bGVTaGVldDo6d2hpdGVsaXN0IGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojpmb250QWxsb3dsaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6c2V0Rm9udEFs
bG93bGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpwbGF0Zm9ybUZvbnRMb29rdXBXaXRoRmFtaWx5
KToKKyAgICAgICAgKFdlYkNvcmU6OmZvbnRXaGl0ZWxpc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6Rm9udENhY2hlOjpzZXRGb250V2hpdGVsaXN0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omlz
VmFsaWRBY2NlcHRIZWFkZXJWYWx1ZSk6CisgICAgICAgICogcmVuZGVyaW5nL0Zsb2F0aW5nT2Jq
ZWN0cy5oOgorICAgICAgICAqIHN0eWxlL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlOjpFbGVtZW50UnVsZUNvbGxlY3Rvcjo6dHJhbnNmZXJNYXRjaGVk
UnVsZXMpOgorICAgICAgICAqIHN0eWxlL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmg6CisgICAgICAg
ICogc3R5bGUvUHJvcGVydHlDYXNjYWRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpQ
cm9wZXJ0eUNhc2NhZGU6OmFkZE1hdGNoKToKKyAgICAgICAgKiBzdHlsZS9SdWxlRGF0YS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6ZGV0ZXJtaW5lUHJvcGVydHlBbGxvd2xpc3RUeXBl
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpSdWxlRGF0YTo6UnVsZURhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGU6OmRldGVybWluZVByb3BlcnR5V2hpdGVsaXN0VHlwZSk6IERlbGV0
ZWQuCisgICAgICAgICogc3R5bGUvUnVsZURhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
OjpSdWxlRGF0YTo6cHJvcGVydHlBbGxvd2xpc3RUeXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlOjpSdWxlRGF0YTo6cHJvcGVydHlXaGl0ZWxpc3RUeXBlIGNvbnN0KTogRGVsZXRl
ZC4KKwogMjAyMC0wNi0xMSAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmVtb3ZlIHJlZmVyZW5jZXMgdG8gInNsYXZlIiBpbiBXZWJDb3JlCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQXV0aG9yaXplci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUF1dGhv
cml6ZXIuY3BwCShyZXZpc2lvbiAyNjI5MTUpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlQXV0aG9yaXplci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcg
KzQzLDcgQEAgRGF0YWJhc2VBdXRob3JpemVyOjpEYXRhYmFzZUF1dGhvcml6ZXIoYwogICAgICwg
bV9kYXRhYmFzZUluZm9UYWJsZU5hbWUoZGF0YWJhc2VJbmZvVGFibGVOYW1lKQogewogICAgIHJl
c2V0KCk7Ci0gICAgYWRkV2hpdGVsaXN0ZWRGdW5jdGlvbnMoKTsKKyAgICBhZGRBbGxvd2VkRnVu
Y3Rpb25zKCk7CiB9CiAKIHZvaWQgRGF0YWJhc2VBdXRob3JpemVyOjpyZXNldCgpCkBAIC01OCw2
OCArNTgsNjggQEAgdm9pZCBEYXRhYmFzZUF1dGhvcml6ZXI6OnJlc2V0RGVsZXRlcygpCiAgICAg
bV9oYWREZWxldGVzID0gZmFsc2U7CiB9CiAKLXZvaWQgRGF0YWJhc2VBdXRob3JpemVyOjphZGRX
aGl0ZWxpc3RlZEZ1bmN0aW9ucygpCit2b2lkIERhdGFiYXNlQXV0aG9yaXplcjo6YWRkQWxsb3dl
ZEZ1bmN0aW9ucygpCiB7CiAgICAgLy8gU1FMaXRlIGZ1bmN0aW9ucyB1c2VkIHRvIGhlbHAgaW1w
bGVtZW50IHNvbWUgb3BlcmF0aW9ucwogICAgIC8vIEFMVEVSIFRBQkxFIGhlbHBlcnMKLSAgICBt
X3doaXRlbGlzdGVkRnVuY3Rpb25zLmFkZCgic3FsaXRlX3JlbmFtZV90YWJsZSIpOwotICAgIG1f
d2hpdGVsaXN0ZWRGdW5jdGlvbnMuYWRkKCJzcWxpdGVfcmVuYW1lX3RyaWdnZXIiKTsKKyAgICBt
X2FsbG93ZWRGdW5jdGlvbnMuYWRkKCJzcWxpdGVfcmVuYW1lX3RhYmxlIik7CisgICAgbV9hbGxv
d2VkRnVuY3Rpb25zLmFkZCgic3FsaXRlX3JlbmFtZV90cmlnZ2VyIik7CiAgICAgLy8gR0xPQiBo
ZWxwZXJzCi0gICAgbV93aGl0ZWxpc3RlZEZ1bmN0aW9ucy5hZGQoImdsb2IiKTsKKyAgICBtX2Fs
bG93ZWRGdW5jdGlvbnMuYWRkKCJnbG9iIik7CiAKICAgICAvLyBTUUxpdGUgY29yZSBmdW5jdGlv
bnMKLSAgICBtX3doaXRlbGlzdGVkRnVuY3Rpb25zLmFkZCgiYWJzIik7Ci0gICAgbV93aGl0ZWxp
c3RlZEZ1bmN0aW9ucy5hZGQoImNoYW5nZXMiKTsKLSAgICBtX3doaXRlbGlzdGVkRnVuY3Rpb25z
LmFkZCgiY29hbGVzY2UiKTsKLSAgICBtX3doaXRlbGlzdGVkRnVuY3Rpb25zLmFkZCgiZ2xvYiIp
OwotICAgIG1fd2hpdGVsaXN0ZWRGdW5jdGlvbnMuYWRkKCJpZm51bGwiKTsKLSAgICBtX3doaXRl
bGlzdGVkRnVuY3Rpb25zLmFkZCgiaGV4Iik7Ci0gICAgbV93aGl0ZWxpc3RlZEZ1bmN0aW9ucy5h
ZGQoImxhc3RfaW5zZXJ0X3Jvd2lkIik7Ci0gICAgbV93aGl0ZWxpc3RlZEZ1bmN0aW9ucy5hZGQo
Imxlbmd0aCIpOwotICAgIG1fd2hpdGVsaXN0ZWRGdW5jdGlvbnMuYWRkKCJsaWtlIik7Ci0gICAg
bV93aGl0ZWxpc3RlZEZ1bmN0aW9ucy5hZGQoImxvd2VyIik7Ci0gICAgbV93aGl0ZWxpc3RlZEZ1
bmN0aW9ucy5hZGQoImx0cmltIik7Ci0gICAgbV93aGl0ZWxpc3RlZEZ1bmN0aW9ucy5hZGQoIm1h
eCIpOwotICAgIG1fd2hpdGVsaXN0ZWRGdW5jdGlvbnMuYWRkKCJtaW4iKTsKLSAgICBtX3doaXRl
bGlzdGVkRnVuY3Rpb25zLmFkZCgibnVsbGlmIik7Ci0gICAgbV93aGl0ZWxpc3RlZEZ1bmN0aW9u
cy5hZGQoInF1b3RlIik7Ci0gICAgbV93aGl0ZWxpc3RlZEZ1bmN0aW9ucy5hZGQoInJlcGxhY2Ui
KTsKLSAgICBtX3doaXRlbGlzdGVkRnVuY3Rpb25zLmFkZCgicm91bmQiKTsKLSAgICBtX3doaXRl
bGlzdGVkRnVuY3Rpb25zLmFkZCgicnRyaW0iKTsKLSAgICBtX3doaXRlbGlzdGVkRnVuY3Rpb25z
LmFkZCgic291bmRleCIpOwotICAgIG1fd2hpdGVsaXN0ZWRGdW5jdGlvbnMuYWRkKCJzcWxpdGVf
c291cmNlX2lkIik7Ci0gICAgbV93aGl0ZWxpc3RlZEZ1bmN0aW9ucy5hZGQoInNxbGl0ZV92ZXJz
aW9uIik7Ci0gICAgbV93aGl0ZWxpc3RlZEZ1bmN0aW9ucy5hZGQoInN1YnN0ciIpOwotICAgIG1f
d2hpdGVsaXN0ZWRGdW5jdGlvbnMuYWRkKCJ0b3RhbF9jaGFuZ2VzIik7Ci0gICAgbV93aGl0ZWxp
c3RlZEZ1bmN0aW9ucy5hZGQoInRyaW0iKTsKLSAgICBtX3doaXRlbGlzdGVkRnVuY3Rpb25zLmFk
ZCgidHlwZW9mIik7Ci0gICAgbV93aGl0ZWxpc3RlZEZ1bmN0aW9ucy5hZGQoInVwcGVyIik7Ci0g
ICAgbV93aGl0ZWxpc3RlZEZ1bmN0aW9ucy5hZGQoInplcm9ibG9iIik7CisgICAgbV9hbGxvd2Vk
RnVuY3Rpb25zLmFkZCgiYWJzIik7CisgICAgbV9hbGxvd2VkRnVuY3Rpb25zLmFkZCgiY2hhbmdl
cyIpOworICAgIG1fYWxsb3dlZEZ1bmN0aW9ucy5hZGQoImNvYWxlc2NlIik7CisgICAgbV9hbGxv
d2VkRnVuY3Rpb25zLmFkZCgiZ2xvYiIpOworICAgIG1fYWxsb3dlZEZ1bmN0aW9ucy5hZGQoImlm
bnVsbCIpOworICAgIG1fYWxsb3dlZEZ1bmN0aW9ucy5hZGQoImhleCIpOworICAgIG1fYWxsb3dl
ZEZ1bmN0aW9ucy5hZGQoImxhc3RfaW5zZXJ0X3Jvd2lkIik7CisgICAgbV9hbGxvd2VkRnVuY3Rp
b25zLmFkZCgibGVuZ3RoIik7CisgICAgbV9hbGxvd2VkRnVuY3Rpb25zLmFkZCgibGlrZSIpOwor
ICAgIG1fYWxsb3dlZEZ1bmN0aW9ucy5hZGQoImxvd2VyIik7CisgICAgbV9hbGxvd2VkRnVuY3Rp
b25zLmFkZCgibHRyaW0iKTsKKyAgICBtX2FsbG93ZWRGdW5jdGlvbnMuYWRkKCJtYXgiKTsKKyAg
ICBtX2FsbG93ZWRGdW5jdGlvbnMuYWRkKCJtaW4iKTsKKyAgICBtX2FsbG93ZWRGdW5jdGlvbnMu
YWRkKCJudWxsaWYiKTsKKyAgICBtX2FsbG93ZWRGdW5jdGlvbnMuYWRkKCJxdW90ZSIpOworICAg
IG1fYWxsb3dlZEZ1bmN0aW9ucy5hZGQoInJlcGxhY2UiKTsKKyAgICBtX2FsbG93ZWRGdW5jdGlv
bnMuYWRkKCJyb3VuZCIpOworICAgIG1fYWxsb3dlZEZ1bmN0aW9ucy5hZGQoInJ0cmltIik7Cisg
ICAgbV9hbGxvd2VkRnVuY3Rpb25zLmFkZCgic291bmRleCIpOworICAgIG1fYWxsb3dlZEZ1bmN0
aW9ucy5hZGQoInNxbGl0ZV9zb3VyY2VfaWQiKTsKKyAgICBtX2FsbG93ZWRGdW5jdGlvbnMuYWRk
KCJzcWxpdGVfdmVyc2lvbiIpOworICAgIG1fYWxsb3dlZEZ1bmN0aW9ucy5hZGQoInN1YnN0ciIp
OworICAgIG1fYWxsb3dlZEZ1bmN0aW9ucy5hZGQoInRvdGFsX2NoYW5nZXMiKTsKKyAgICBtX2Fs
bG93ZWRGdW5jdGlvbnMuYWRkKCJ0cmltIik7CisgICAgbV9hbGxvd2VkRnVuY3Rpb25zLmFkZCgi
dHlwZW9mIik7CisgICAgbV9hbGxvd2VkRnVuY3Rpb25zLmFkZCgidXBwZXIiKTsKKyAgICBtX2Fs
bG93ZWRGdW5jdGlvbnMuYWRkKCJ6ZXJvYmxvYiIpOwogCiAgICAgLy8gU1FMaXRlIGRhdGUgYW5k
IHRpbWUgZnVuY3Rpb25zCi0gICAgbV93aGl0ZWxpc3RlZEZ1bmN0aW9ucy5hZGQoImRhdGUiKTsK
LSAgICBtX3doaXRlbGlzdGVkRnVuY3Rpb25zLmFkZCgidGltZSIpOwotICAgIG1fd2hpdGVsaXN0
ZWRGdW5jdGlvbnMuYWRkKCJkYXRldGltZSIpOwotICAgIG1fd2hpdGVsaXN0ZWRGdW5jdGlvbnMu
YWRkKCJqdWxpYW5kYXkiKTsKLSAgICBtX3doaXRlbGlzdGVkRnVuY3Rpb25zLmFkZCgic3RyZnRp
bWUiKTsKKyAgICBtX2FsbG93ZWRGdW5jdGlvbnMuYWRkKCJkYXRlIik7CisgICAgbV9hbGxvd2Vk
RnVuY3Rpb25zLmFkZCgidGltZSIpOworICAgIG1fYWxsb3dlZEZ1bmN0aW9ucy5hZGQoImRhdGV0
aW1lIik7CisgICAgbV9hbGxvd2VkRnVuY3Rpb25zLmFkZCgianVsaWFuZGF5Iik7CisgICAgbV9h
bGxvd2VkRnVuY3Rpb25zLmFkZCgic3RyZnRpbWUiKTsKIAogICAgIC8vIFNRTGl0ZSBhZ2dyZWdh
dGUgZnVuY3Rpb25zCiAgICAgLy8gbWF4KCkgYW5kIG1pbigpIGFyZSBhbHJlYWR5IGluIHRoZSBs
aXN0Ci0gICAgbV93aGl0ZWxpc3RlZEZ1bmN0aW9ucy5hZGQoImF2ZyIpOwotICAgIG1fd2hpdGVs
aXN0ZWRGdW5jdGlvbnMuYWRkKCJjb3VudCIpOwotICAgIG1fd2hpdGVsaXN0ZWRGdW5jdGlvbnMu
YWRkKCJncm91cF9jb25jYXQiKTsKLSAgICBtX3doaXRlbGlzdGVkRnVuY3Rpb25zLmFkZCgic3Vt
Iik7Ci0gICAgbV93aGl0ZWxpc3RlZEZ1bmN0aW9ucy5hZGQoInRvdGFsIik7CisgICAgbV9hbGxv
d2VkRnVuY3Rpb25zLmFkZCgiYXZnIik7CisgICAgbV9hbGxvd2VkRnVuY3Rpb25zLmFkZCgiY291
bnQiKTsKKyAgICBtX2FsbG93ZWRGdW5jdGlvbnMuYWRkKCJncm91cF9jb25jYXQiKTsKKyAgICBt
X2FsbG93ZWRGdW5jdGlvbnMuYWRkKCJzdW0iKTsKKyAgICBtX2FsbG93ZWRGdW5jdGlvbnMuYWRk
KCJ0b3RhbCIpOwogCiAgICAgLy8gU1FMaXRlIEZUUyBmdW5jdGlvbnMKLSAgICBtX3doaXRlbGlz
dGVkRnVuY3Rpb25zLmFkZCgibWF0Y2giKTsKLSAgICBtX3doaXRlbGlzdGVkRnVuY3Rpb25zLmFk
ZCgic25pcHBldCIpOwotICAgIG1fd2hpdGVsaXN0ZWRGdW5jdGlvbnMuYWRkKCJvZmZzZXRzIik7
Ci0gICAgbV93aGl0ZWxpc3RlZEZ1bmN0aW9ucy5hZGQoIm9wdGltaXplIik7CisgICAgbV9hbGxv
d2VkRnVuY3Rpb25zLmFkZCgibWF0Y2giKTsKKyAgICBtX2FsbG93ZWRGdW5jdGlvbnMuYWRkKCJz
bmlwcGV0Iik7CisgICAgbV9hbGxvd2VkRnVuY3Rpb25zLmFkZCgib2Zmc2V0cyIpOworICAgIG1f
YWxsb3dlZEZ1bmN0aW9ucy5hZGQoIm9wdGltaXplIik7CiAKICAgICAvLyBTUUxpdGUgSUNVIGZ1
bmN0aW9ucwogICAgIC8vIGxpa2UoKSwgbG93ZXIoKSBhbmQgdXBwZXIoKSBhcmUgYWxyZWFkeSBp
biB0aGUgbGlzdAotICAgIG1fd2hpdGVsaXN0ZWRGdW5jdGlvbnMuYWRkKCJyZWdleHAiKTsKKyAg
ICBtX2FsbG93ZWRGdW5jdGlvbnMuYWRkKCJyZWdleHAiKTsKIH0KIAogaW50IERhdGFiYXNlQXV0
aG9yaXplcjo6Y3JlYXRlVGFibGUoY29uc3QgU3RyaW5nJiB0YWJsZU5hbWUpCkBAIC0zNTksNyAr
MzU5LDcgQEAgaW50IERhdGFiYXNlQXV0aG9yaXplcjo6YWxsb3dEZXRhY2goY29ucwogCiBpbnQg
RGF0YWJhc2VBdXRob3JpemVyOjphbGxvd0Z1bmN0aW9uKGNvbnN0IFN0cmluZyYgZnVuY3Rpb25O
YW1lKQogewotICAgIGlmIChtX3NlY3VyaXR5RW5hYmxlZCAmJiAhbV93aGl0ZWxpc3RlZEZ1bmN0
aW9ucy5jb250YWlucyhmdW5jdGlvbk5hbWUpKQorICAgIGlmIChtX3NlY3VyaXR5RW5hYmxlZCAm
JiAhbV9hbGxvd2VkRnVuY3Rpb25zLmNvbnRhaW5zKGZ1bmN0aW9uTmFtZSkpCiAgICAgICAgIHJl
dHVybiBTUUxBdXRoRGVueTsKIAogICAgIHJldHVybiBTUUxBdXRoQWxsb3c7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQXV0aG9yaXplci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VBdXRo
b3JpemVyLmgJKHJldmlzaW9uIDI2MjkxNSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
ZGF0YWJhc2UvRGF0YWJhc2VBdXRob3JpemVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNCw3ICsx
MDQsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgRGF0YWJhc2VBdXRob3Jp
emVyKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VJbmZvVGFibGVOYW1lKTsKLSAgICB2b2lkIGFkZFdo
aXRlbGlzdGVkRnVuY3Rpb25zKCk7CisgICAgdm9pZCBhZGRBbGxvd2VkRnVuY3Rpb25zKCk7CiAg
ICAgaW50IGRlbnlCYXNlZE9uVGFibGVOYW1lKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogICAgIGlu
dCB1cGRhdGVEZWxldGVzQmFzZWRPblRhYmxlTmFtZShjb25zdCBTdHJpbmcmKTsKICAgICBib29s
IGFsbG93V3JpdGUoKTsKQEAgLTExNyw3ICsxMTcsNyBAQCBwcml2YXRlOgogCiAgICAgY29uc3Qg
U3RyaW5nIG1fZGF0YWJhc2VJbmZvVGFibGVOYW1lOwogCi0gICAgSGFzaFNldDxTdHJpbmcsIEFT
Q0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4gbV93aGl0ZWxpc3RlZEZ1bmN0aW9uczsKKyAgICBIYXNo
U2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiBtX2FsbG93ZWRGdW5jdGlvbnM7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20v
RXh0ZW5zaW9uU3R5bGVTaGVldHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Rv
bS9FeHRlbnNpb25TdHlsZVNoZWV0cy5jcHAJKHJldmlzaW9uIDI2MjkxNSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2RvbS9FeHRlbnNpb25TdHlsZVNoZWV0cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0
OCw3ICsxNDgsNyBAQCB2b2lkIEV4dGVuc2lvblN0eWxlU2hlZXRzOjp1cGRhdGVJbmplY3RlCiAg
ICAgICAgIGlmICh1c2VyU3R5bGVTaGVldC5pbmplY3RlZEZyYW1lcygpID09IFVzZXJDb250ZW50
SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluVG9wRnJhbWVPbmx5ICYmIG1fZG9jdW1lbnQub3duZXJF
bGVtZW50KCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYgKCFVc2VyQ29udGVu
dFVSTFBhdHRlcm46Om1hdGNoZXNQYXR0ZXJucyhtX2RvY3VtZW50LnVybCgpLCB1c2VyU3R5bGVT
aGVldC53aGl0ZWxpc3QoKSwgdXNlclN0eWxlU2hlZXQuYmxvY2tsaXN0KCkpKQorICAgICAgICBp
ZiAoIVVzZXJDb250ZW50VVJMUGF0dGVybjo6bWF0Y2hlc1BhdHRlcm5zKG1fZG9jdW1lbnQudXJs
KCksIHVzZXJTdHlsZVNoZWV0LmFsbG93bGlzdCgpLCB1c2VyU3R5bGVTaGVldC5ibG9ja2xpc3Qo
KSkpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgYWRkU3R5bGVTaGVldCh1c2VyU3R5
bGVTaGVldCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3ND
b250cm9sLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmln
aW5BY2Nlc3NDb250cm9sLmNwcAkocmV2aXNpb24gMjYyOTE1KQorKysgU291cmNlL1dlYkNvcmUv
bG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1
LDE0ICs0NSwxNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWJvb2wgaXNPbkFjY2Vzc0Nv
bnRyb2xTaW1wbGVSZXF1ZXN0TWV0aG9kV2hpdGVsaXN0KGNvbnN0IFN0cmluZyYgbWV0aG9kKQor
Ym9vbCBpc09uQWNjZXNzQ29udHJvbFNpbXBsZVJlcXVlc3RNZXRob2RBbGxvd2xpc3QoY29uc3Qg
U3RyaW5nJiBtZXRob2QpCiB7CiAgICAgcmV0dXJuIG1ldGhvZCA9PSAiR0VUIiB8fCBtZXRob2Qg
PT0gIkhFQUQiIHx8IG1ldGhvZCA9PSAiUE9TVCI7CiB9CiAKIGJvb2wgaXNTaW1wbGVDcm9zc09y
aWdpbkFjY2Vzc1JlcXVlc3QoY29uc3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IEhUVFBIZWFkZXJN
YXAmIGhlYWRlck1hcCkKIHsKLSAgICBpZiAoIWlzT25BY2Nlc3NDb250cm9sU2ltcGxlUmVxdWVz
dE1ldGhvZFdoaXRlbGlzdChtZXRob2QpKQorICAgIGlmICghaXNPbkFjY2Vzc0NvbnRyb2xTaW1w
bGVSZXF1ZXN0TWV0aG9kQWxsb3dsaXN0KG1ldGhvZCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIGZvciAoY29uc3QgYXV0byYgaGVhZGVyIDogaGVhZGVyTWFwKSB7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5oCShyZXZp
c2lvbiAyNjI5MTUpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3ND
b250cm9sLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAgY2xhc3MgU2VjdXJpdHlP
cmlnaW47CiBzdHJ1Y3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zOwogCiBXRUJDT1JFX0VYUE9SVCBi
b29sIGlzU2ltcGxlQ3Jvc3NPcmlnaW5BY2Nlc3NSZXF1ZXN0KGNvbnN0IFN0cmluZyYgbWV0aG9k
LCBjb25zdCBIVFRQSGVhZGVyTWFwJik7Ci1ib29sIGlzT25BY2Nlc3NDb250cm9sU2ltcGxlUmVx
dWVzdE1ldGhvZFdoaXRlbGlzdChjb25zdCBTdHJpbmcmKTsKK2Jvb2wgaXNPbkFjY2Vzc0NvbnRy
b2xTaW1wbGVSZXF1ZXN0TWV0aG9kQWxsb3dsaXN0KGNvbnN0IFN0cmluZyYpOwogCiB2b2lkIHVw
ZGF0ZVJlcXVlc3RSZWZlcnJlcihSZXNvdXJjZVJlcXVlc3QmLCBSZWZlcnJlclBvbGljeSwgY29u
c3QgU3RyaW5nJik7CiAgICAgCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmln
aW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
bG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUuY3BwCShyZXZpc2lvbiAyNjI5
MTUpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRD
YWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg0LDcgKzg0LDcgQEAgT3B0aW9uYWw8U3RyaW5n
PiBDcm9zc09yaWdpblByZWZsaWdodFJlcwogCiBib29sIENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVz
dWx0Q2FjaGVJdGVtOjphbGxvd3NDcm9zc09yaWdpbk1ldGhvZChjb25zdCBTdHJpbmcmIG1ldGhv
ZCwgU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIG1fbWV0aG9kcy5jb250YWlucyhtZXRob2QpIHx8IChtX21ldGhvZHMu
Y29udGFpbnMoIioiKSAmJiBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSAhPSBTdG9yZWRDcmVkZW50
aWFsc1BvbGljeTo6VXNlKSB8fCBpc09uQWNjZXNzQ29udHJvbFNpbXBsZVJlcXVlc3RNZXRob2RX
aGl0ZWxpc3QobWV0aG9kKTsKKyAgICByZXR1cm4gbV9tZXRob2RzLmNvbnRhaW5zKG1ldGhvZCkg
fHwgKG1fbWV0aG9kcy5jb250YWlucygiKiIpICYmIHN0b3JlZENyZWRlbnRpYWxzUG9saWN5ICE9
IFN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpVc2UpIHx8IGlzT25BY2Nlc3NDb250cm9sU2ltcGxl
UmVxdWVzdE1ldGhvZEFsbG93bGlzdChtZXRob2QpOwogfQogCiBPcHRpb25hbDxTdHJpbmc+IENy
b3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGVJdGVtOjp2YWxpZGF0ZUNyb3NzT3JpZ2luSGVh
ZGVycyhjb25zdCBIVFRQSGVhZGVyTWFwJiByZXF1ZXN0SGVhZGVycywgU3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGUuY3BwCShyZXZp
c2lvbiAyNjI5MTUpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNCwxNiArMTI0LDE2IEBAIEFwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZSogQXBwbGljYXRpb25DYWMKICAgICByZXR1cm4gcmVzb3VyY2VGb3JV
UkwodXJsLnN0cmluZygpKTsKIH0KIAotdm9pZCBBcHBsaWNhdGlvbkNhY2hlOjpzZXRPbmxpbmVX
aGl0ZWxpc3QoY29uc3QgVmVjdG9yPFVSTD4mIG9ubGluZVdoaXRlbGlzdCkKK3ZvaWQgQXBwbGlj
YXRpb25DYWNoZTo6c2V0T25saW5lQWxsb3dsaXN0KGNvbnN0IFZlY3RvcjxVUkw+JiBvbmxpbmVB
bGxvd2xpc3QpCiB7Ci0gICAgQVNTRVJUKG1fb25saW5lV2hpdGVsaXN0LmlzRW1wdHkoKSk7Ci0g
ICAgbV9vbmxpbmVXaGl0ZWxpc3QgPSBvbmxpbmVXaGl0ZWxpc3Q7IAorICAgIEFTU0VSVChtX29u
bGluZUFsbG93bGlzdC5pc0VtcHR5KCkpOworICAgIG1fb25saW5lQWxsb3dsaXN0ID0gb25saW5l
QWxsb3dsaXN0OwogfQogCi1ib29sIEFwcGxpY2F0aW9uQ2FjaGU6OmlzVVJMSW5PbmxpbmVXaGl0
ZWxpc3QoY29uc3QgVVJMJiB1cmwpCitib29sIEFwcGxpY2F0aW9uQ2FjaGU6OmlzVVJMSW5Pbmxp
bmVBbGxvd2xpc3QoY29uc3QgVVJMJiB1cmwpCiB7Ci0gICAgZm9yIChhdXRvJiB3aGl0ZWxpc3RV
UkwgOiBtX29ubGluZVdoaXRlbGlzdCkgewotICAgICAgICBpZiAocHJvdG9jb2xIb3N0QW5kUG9y
dEFyZUVxdWFsKHVybCwgd2hpdGVsaXN0VVJMKSAmJiB1cmwuc3RyaW5nKCkuc3RhcnRzV2l0aCh3
aGl0ZWxpc3RVUkwuc3RyaW5nKCkpKQorICAgIGZvciAoYXV0byYgYWxsb3dsaXN0VVJMIDogbV9v
bmxpbmVBbGxvd2xpc3QpIHsKKyAgICAgICAgaWYgKHByb3RvY29sSG9zdEFuZFBvcnRBcmVFcXVh
bCh1cmwsIGFsbG93bGlzdFVSTCkgJiYgdXJsLnN0cmluZygpLnN0YXJ0c1dpdGgoYWxsb3dsaXN0
VVJMLnN0cmluZygpKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICByZXR1
cm4gZmFsc2U7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlLmgJKHJldmlzaW9uIDI2MjkxNSkKKysrIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU4LDkg
KzU4LDkgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRBbGxvd3NBbGxOZXR3b3JrUmVxdWVzdHMo
Ym9vbCB2YWx1ZSkgeyBtX2FsbG93QWxsTmV0d29ya1JlcXVlc3RzID0gdmFsdWU7IH0KICAgICBi
b29sIGFsbG93c0FsbE5ldHdvcmtSZXF1ZXN0cygpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dBbGxO
ZXR3b3JrUmVxdWVzdHM7IH0KLSAgICB2b2lkIHNldE9ubGluZVdoaXRlbGlzdChjb25zdCBWZWN0
b3I8VVJMPiYgb25saW5lV2hpdGVsaXN0KTsKLSAgICBjb25zdCBWZWN0b3I8VVJMPiYgb25saW5l
V2hpdGVsaXN0KCkgY29uc3QgeyByZXR1cm4gbV9vbmxpbmVXaGl0ZWxpc3Q7IH0KLSAgICBib29s
IGlzVVJMSW5PbmxpbmVXaGl0ZWxpc3QoY29uc3QgVVJMJik7IC8vIFRoZXJlIGlzIGFuIGVudHJ5
IGluIG9ubGluZSB3aGl0ZWxpc3QgdGhhdCBoYXMgdGhlIHNhbWUgb3JpZ2luIGFzIHRoZSByZXNv
dXJjZSdzIFVSTCBhbmQgdGhhdCBpcyBhIHByZWZpeCBtYXRjaCBmb3IgdGhlIHJlc291cmNlJ3Mg
VVJMLgorICAgIHZvaWQgc2V0T25saW5lQWxsb3dsaXN0KGNvbnN0IFZlY3RvcjxVUkw+Jik7Cisg
ICAgY29uc3QgVmVjdG9yPFVSTD4mIG9ubGluZUFsbG93bGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1f
b25saW5lQWxsb3dsaXN0OyB9CisgICAgYm9vbCBpc1VSTEluT25saW5lQWxsb3dsaXN0KGNvbnN0
IFVSTCYpOyAvLyBUaGVyZSBpcyBhbiBlbnRyeSBpbiBvbmxpbmUgYWxsb3dsaXN0IHRoYXQgaGFz
IHRoZSBzYW1lIG9yaWdpbiBhcyB0aGUgcmVzb3VyY2UncyBVUkwgYW5kIHRoYXQgaXMgYSBwcmVm
aXggbWF0Y2ggZm9yIHRoZSByZXNvdXJjZSdzIFVSTC4KIAogICAgIHZvaWQgc2V0RmFsbGJhY2tV
UkxzKGNvbnN0IEZhbGxiYWNrVVJMVmVjdG9yJik7CiAgICAgY29uc3QgRmFsbGJhY2tVUkxWZWN0
b3ImIGZhbGxiYWNrVVJMcygpIGNvbnN0IHsgcmV0dXJuIG1fZmFsbGJhY2tVUkxzOyB9CkBAIC04
OSw3ICs4OSw3IEBAIHByaXZhdGU6CiAgICAgV2Vha1B0cjxBcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2U+IG1fbWFuaWZlc3Q7CiAKICAgICBib29sIG1fYWxsb3dBbGxOZXR3b3JrUmVxdWVzdHMgeyBm
YWxzZSB9OwotICAgIFZlY3RvcjxVUkw+IG1fb25saW5lV2hpdGVsaXN0OworICAgIFZlY3RvcjxV
Ukw+IG1fb25saW5lQWxsb3dsaXN0OwogICAgIEZhbGxiYWNrVVJMVmVjdG9yIG1fZmFsbGJhY2tV
UkxzOwogCiAgICAgLy8gVGhlIHRvdGFsIHNpemUgb2YgdGhlIHJlc291cmNlcyBiZWxvbmdpbmcg
dG8gdGhpcyBBcHBsaWNhdGlvbiBDYWNoZSBpbnN0YW5jZS4KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3Bw
CShyZXZpc2lvbiAyNjI5MTUpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZUdyb3VwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQxLDcgKzY0MSw3IEBA
IHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hMb2EKICAgICBmb3IgKGF1dG8m
IGZhbGxiYWNrVVJMIDogbWFuaWZlc3QuZmFsbGJhY2tVUkxzKQogICAgICAgICBhZGRFbnRyeShm
YWxsYmFja1VSTC5zZWNvbmQuc3RyaW5nKCksIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6RmFs
bGJhY2spOwogICAgIAotICAgIG1fY2FjaGVCZWluZ1VwZGF0ZWQtPnNldE9ubGluZVdoaXRlbGlz
dChtYW5pZmVzdC5vbmxpbmVXaGl0ZWxpc3RlZFVSTHMpOworICAgIG1fY2FjaGVCZWluZ1VwZGF0
ZWQtPnNldE9ubGluZUFsbG93bGlzdChtYW5pZmVzdC5vbmxpbmVBbGxvd2VkVVJMcyk7CiAgICAg
bV9jYWNoZUJlaW5nVXBkYXRlZC0+c2V0RmFsbGJhY2tVUkxzKG1hbmlmZXN0LmZhbGxiYWNrVVJM
cyk7CiAgICAgbV9jYWNoZUJlaW5nVXBkYXRlZC0+c2V0QWxsb3dzQWxsTmV0d29ya1JlcXVlc3Rz
KG1hbmlmZXN0LmFsbG93QWxsTmV0d29ya1JlcXVlc3RzKTsKIApJbmRleDogU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3Bw
CShyZXZpc2lvbiAyNjI5MTUpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZUhvc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MzAsOSArNDMwLDkgQEAg
Ym9vbCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6c2hvdWxkTG9hZFJlcwogICAgIC8vIGluIHRoZSBh
cHBsaWNhdGlvbiBjYWNoZSwgdGhlbiBnZXQgdGhlIHJlc291cmNlIGZyb20gdGhlIGNhY2hlIChp
bnN0ZWFkIG9mIGZldGNoaW5nIGl0KS4KICAgICByZXNvdXJjZSA9IGNhY2hlLT5yZXNvdXJjZUZv
clVSTChyZXF1ZXN0LnVybCgpLnN0cmluZygpKTsKIAotICAgIC8vIFJlc291cmNlcyB0aGF0IG1h
dGNoIGZhbGxiYWNrIG5hbWVzcGFjZXMgb3Igb25saW5lIHdoaXRlbGlzdCBlbnRyaWVzIGFyZSBm
ZXRjaGVkIGZyb20gdGhlIG5ldHdvcmssCisgICAgLy8gUmVzb3VyY2VzIHRoYXQgbWF0Y2ggZmFs
bGJhY2sgbmFtZXNwYWNlcyBvciBvbmxpbmUgYWxsb3dsaXN0IGVudHJpZXMgYXJlIGZldGNoZWQg
ZnJvbSB0aGUgbmV0d29yaywKICAgICAvLyB1bmxlc3MgdGhleSBhcmUgYWxzbyBjYWNoZWQuCi0g
ICAgaWYgKCFyZXNvdXJjZSAmJiAoY2FjaGUtPmFsbG93c0FsbE5ldHdvcmtSZXF1ZXN0cygpIHx8
IGNhY2hlLT51cmxNYXRjaGVzRmFsbGJhY2tOYW1lc3BhY2UocmVxdWVzdC51cmwoKSkgfHwgY2Fj
aGUtPmlzVVJMSW5PbmxpbmVXaGl0ZWxpc3QocmVxdWVzdC51cmwoKSkpKQorICAgIGlmICghcmVz
b3VyY2UgJiYgKGNhY2hlLT5hbGxvd3NBbGxOZXR3b3JrUmVxdWVzdHMoKSB8fCBjYWNoZS0+dXJs
TWF0Y2hlc0ZhbGxiYWNrTmFtZXNwYWNlKHJlcXVlc3QudXJsKCkpIHx8IGNhY2hlLT5pc1VSTElu
T25saW5lQWxsb3dsaXN0KHJlcXVlc3QudXJsKCkpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgLy8gUmVzb3VyY2VzIHRoYXQgYXJlIG5vdCBwcmVzZW50IGluIHRoZSBtYW5pZmVzdCB3
aWxsIGFsd2F5cyBmYWlsIHRvIGxvYWQgKGF0IGxlYXN0LCBhZnRlciB0aGUKQEAgLTQ1NSw3ICs0
NTUsNyBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpnZXRBcHBsaWNhdGlvCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAogICAgIFVSTCBmYWxsYmFja1VSTDsKLSAgICBpZiAoY2FjaGUtPmlz
VVJMSW5PbmxpbmVXaGl0ZWxpc3QocmVxdWVzdC51cmwoKSkpCisgICAgaWYgKGNhY2hlLT5pc1VS
TEluT25saW5lQWxsb3dsaXN0KHJlcXVlc3QudXJsKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgaWYgKCFjYWNoZS0+dXJsTWF0Y2hlc0ZhbGxiYWNrTmFtZXNwYWNlKHJlcXVlc3QudXJs
KCksICZmYWxsYmFja1VSTCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVT
dG9yYWdlLmNwcAkocmV2aXNpb24gMjYyOTE1KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjY1
LDcgKzI2NSw3IEBAIEFwcGxpY2F0aW9uQ2FjaGVHcm91cCogQXBwbGljYXRpb25DYWNoZVMKIAog
ICAgICAgICBpZiAoQXBwbGljYXRpb25DYWNoZSogY2FjaGUgPSBncm91cC0+bmV3ZXN0Q2FjaGUo
KSkgewogICAgICAgICAgICAgVVJMIGZhbGxiYWNrVVJMOwotICAgICAgICAgICAgaWYgKGNhY2hl
LT5pc1VSTEluT25saW5lV2hpdGVsaXN0KHVybCkpCisgICAgICAgICAgICBpZiAoY2FjaGUtPmlz
VVJMSW5PbmxpbmVBbGxvd2xpc3QodXJsKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgICAgIGlmICghY2FjaGUtPnVybE1hdGNoZXNGYWxsYmFja05hbWVzcGFjZSh1cmwsICZm
YWxsYmFja1VSTCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CkBAIC0zMDAsNyArMzAwLDcg
QEAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBBcHBsaWNhdGlvbkNhY2hlUwogICAgICAgICBhdXRv
IGNhY2hlID0gbG9hZENhY2hlKG5ld2VzdENhY2hlSUQpOwogCiAgICAgICAgIFVSTCBmYWxsYmFj
a1VSTDsKLSAgICAgICAgaWYgKGNhY2hlLT5pc1VSTEluT25saW5lV2hpdGVsaXN0KHVybCkpCisg
ICAgICAgIGlmIChjYWNoZS0+aXNVUkxJbk9ubGluZUFsbG93bGlzdCh1cmwpKQogICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgIGlmICghY2FjaGUtPnVybE1hdGNoZXNGYWxsYmFja05hbWVz
cGFjZSh1cmwsICZmYWxsYmFja1VSTCkpCiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTYxNiw3
ICs2MTYsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpvcGVuRGF0YWJhCiAgICAg
ZXhlY3V0ZVNRTENvbW1hbmQoIkNSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIERlbGV0ZWRDYWNo
ZVJlc291cmNlcyAoaWQgSU5URUdFUiBQUklNQVJZIEtFWSBBVVRPSU5DUkVNRU5ULCBwYXRoIFRF
WFQpIik7CiAgICAgZXhlY3V0ZVNRTENvbW1hbmQoIkNSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RT
IE9yaWdpbnMgKG9yaWdpbiBURVhUIFVOSVFVRSBPTiBDT05GTElDVCBJR05PUkUsIHF1b3RhIElO
VEVHRVIgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCkiKTsKIAotICAgIC8vIFdoZW4gYSBjYWNo
ZSBpcyBkZWxldGVkLCBhbGwgaXRzIGVudHJpZXMgYW5kIGl0cyB3aGl0ZWxpc3Qgc2hvdWxkIGJl
IGRlbGV0ZWQuCisgICAgLy8gV2hlbiBhIGNhY2hlIGlzIGRlbGV0ZWQsIGFsbCBpdHMgZW50cmll
cyBhbmQgaXRzIGFsbG93bGlzdCBzaG91bGQgYmUgZGVsZXRlZC4KICAgICBleGVjdXRlU1FMQ29t
bWFuZCgiQ1JFQVRFIFRSSUdHRVIgSUYgTk9UIEVYSVNUUyBDYWNoZURlbGV0ZWQgQUZURVIgREVM
RVRFIE9OIENhY2hlcyIKICAgICAgICAgICAgICAgICAgICAgICAiIEZPUiBFQUNIIFJPVyBCRUdJ
TiIKICAgICAgICAgICAgICAgICAgICAgICAiICBERUxFVEUgRlJPTSBDYWNoZUVudHJpZXMgV0hF
UkUgY2FjaGUgPSBPTEQuaWQ7IgpAQCAtNzIxLDE0ICs3MjEsMTQgQEAgYm9vbCBBcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZTo6c3RvcmUoQXBwbAogICAgICAgICBzdG9yYWdlSURKb3VybmFsLT5hZGQo
cmVzb3VyY2UuZ2V0KCksIG9sZFN0b3JhZ2VJRCk7CiAgICAgfQogICAgIAotICAgIC8vIFN0b3Jl
IHRoZSBvbmxpbmUgd2hpdGVsaXN0Ci0gICAgY29uc3QgVmVjdG9yPFVSTD4mIG9ubGluZVdoaXRl
bGlzdCA9IGNhY2hlLT5vbmxpbmVXaGl0ZWxpc3QoKTsKKyAgICAvLyBTdG9yZSB0aGUgb25saW5l
IGFsbG93bGlzdAorICAgIGNvbnN0IFZlY3RvcjxVUkw+JiBvbmxpbmVBbGxvd2xpc3QgPSBjYWNo
ZS0+b25saW5lQWxsb3dsaXN0KCk7CiAgICAgewotICAgICAgICBmb3IgKGF1dG8mIHdoaXRlbGlz
dFVSTCA6IG9ubGluZVdoaXRlbGlzdCkgeworICAgICAgICBmb3IgKGF1dG8mIGFsbG93bGlzdFVS
TCA6IG9ubGluZUFsbG93bGlzdCkgewogICAgICAgICAgICAgU1FMaXRlU3RhdGVtZW50IHN0YXRl
bWVudChtX2RhdGFiYXNlLCAiSU5TRVJUIElOVE8gQ2FjaGVXaGl0ZWxpc3RVUkxzICh1cmwsIGNh
Y2hlKSBWQUxVRVMgKD8sID8pIik7CiAgICAgICAgICAgICBzdGF0ZW1lbnQucHJlcGFyZSgpOwog
Ci0gICAgICAgICAgICBzdGF0ZW1lbnQuYmluZFRleHQoMSwgd2hpdGVsaXN0VVJMLnN0cmluZygp
KTsKKyAgICAgICAgICAgIHN0YXRlbWVudC5iaW5kVGV4dCgxLCBhbGxvd2xpc3RVUkwuc3RyaW5n
KCkpOwogICAgICAgICAgICAgc3RhdGVtZW50LmJpbmRJbnQ2NCgyLCBjYWNoZVN0b3JhZ2VJRCk7
CiAKICAgICAgICAgICAgIGlmICghZXhlY3V0ZVN0YXRlbWVudChzdGF0ZW1lbnQpKQpAQCAtNzM2
LDcgKzczNiw3IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKEFwcGwKICAg
ICAgICAgfQogICAgIH0KIAotICAgIC8vIFN0b3JlIG9ubGluZSB3aGl0ZWxpc3Qgd2lsZGNhcmQg
ZmxhZy4KKyAgICAvLyBTdG9yZSBvbmxpbmUgYWxsb3dsaXN0IHdpbGRjYXJkIGZsYWcuCiAgICAg
ewogICAgICAgICBTUUxpdGVTdGF0ZW1lbnQgc3RhdGVtZW50KG1fZGF0YWJhc2UsICJJTlNFUlQg
SU5UTyBDYWNoZUFsbG93c0FsbE5ldHdvcmtSZXF1ZXN0cyAod2lsZGNhcmQsIGNhY2hlKSBWQUxV
RVMgKD8sID8pIik7CiAgICAgICAgIHN0YXRlbWVudC5wcmVwYXJlKCk7CkBAIC0xMTU0LDM1ICsx
MTU0LDM1IEBAIFJlZlB0cjxBcHBsaWNhdGlvbkNhY2hlPiBBcHBsaWNhdGlvbkNhY2gKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgLy8gTG9hZCB0aGUgb25saW5lIHdoaXRl
bGlzdAotICAgIFNRTGl0ZVN0YXRlbWVudCB3aGl0ZWxpc3RTdGF0ZW1lbnQobV9kYXRhYmFzZSwg
IlNFTEVDVCB1cmwgRlJPTSBDYWNoZVdoaXRlbGlzdFVSTHMgV0hFUkUgY2FjaGU9PyIpOwotICAg
IGlmICh3aGl0ZWxpc3RTdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTElURV9PSykKKyAgICAvLyBM
b2FkIHRoZSBvbmxpbmUgYWxsb3dsaXN0CisgICAgU1FMaXRlU3RhdGVtZW50IGFsbG93bGlzdFN0
YXRlbWVudChtX2RhdGFiYXNlLCAiU0VMRUNUIHVybCBGUk9NIENhY2hlV2hpdGVsaXN0VVJMcyBX
SEVSRSBjYWNoZT0/Iik7CisgICAgaWYgKGFsbG93bGlzdFN0YXRlbWVudC5wcmVwYXJlKCkgIT0g
U1FMSVRFX09LKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB3aGl0ZWxpc3RTdGF0ZW1l
bnQuYmluZEludDY0KDEsIHN0b3JhZ2VJRCk7CisgICAgYWxsb3dsaXN0U3RhdGVtZW50LmJpbmRJ
bnQ2NCgxLCBzdG9yYWdlSUQpOwogICAgIAotICAgIFZlY3RvcjxVUkw+IHdoaXRlbGlzdDsKLSAg
ICB3aGlsZSAoKHJlc3VsdCA9IHdoaXRlbGlzdFN0YXRlbWVudC5zdGVwKCkpID09IFNRTElURV9S
T1cpIAotICAgICAgICB3aGl0ZWxpc3QuYXBwZW5kKFVSTCh7IH0sIHdoaXRlbGlzdFN0YXRlbWVu
dC5nZXRDb2x1bW5UZXh0KDApKSk7CisgICAgVmVjdG9yPFVSTD4gYWxsb3dsaXN0OworICAgIHdo
aWxlICgocmVzdWx0ID0gYWxsb3dsaXN0U3RhdGVtZW50LnN0ZXAoKSkgPT0gU1FMSVRFX1JPVykK
KyAgICAgICAgYWxsb3dsaXN0LmFwcGVuZChVUkwoeyB9LCBhbGxvd2xpc3RTdGF0ZW1lbnQuZ2V0
Q29sdW1uVGV4dCgwKSkpOwogCiAgICAgaWYgKHJlc3VsdCAhPSBTUUxJVEVfRE9ORSkKLSAgICAg
ICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgbG9hZCBjYWNoZSBvbmxpbmUgd2hpdGVsaXN0LCBlcnJv
ciBcIiVzXCIiLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgTE9HX0VSUk9S
KCJDb3VsZCBub3QgbG9hZCBjYWNoZSBvbmxpbmUgYWxsb3dsaXN0LCBlcnJvciBcIiVzXCIiLCBt
X2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKIAotICAgIGNhY2hlLT5zZXRPbmxpbmVXaGl0ZWxp
c3Qod2hpdGVsaXN0KTsKKyAgICBjYWNoZS0+c2V0T25saW5lQWxsb3dsaXN0KGFsbG93bGlzdCk7
CiAKLSAgICAvLyBMb2FkIG9ubGluZSB3aGl0ZWxpc3Qgd2lsZGNhcmQgZmxhZy4KLSAgICBTUUxp
dGVTdGF0ZW1lbnQgd2hpdGVsaXN0V2lsZGNhcmRTdGF0ZW1lbnQobV9kYXRhYmFzZSwgIlNFTEVD
VCB3aWxkY2FyZCBGUk9NIENhY2hlQWxsb3dzQWxsTmV0d29ya1JlcXVlc3RzIFdIRVJFIGNhY2hl
PT8iKTsKLSAgICBpZiAod2hpdGVsaXN0V2lsZGNhcmRTdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNR
TElURV9PSykKKyAgICAvLyBMb2FkIG9ubGluZSBhbGxvd2xpc3Qgd2lsZGNhcmQgZmxhZy4KKyAg
ICBTUUxpdGVTdGF0ZW1lbnQgYWxsb3dsaXN0V2lsZGNhcmRTdGF0ZW1lbnQobV9kYXRhYmFzZSwg
IlNFTEVDVCB3aWxkY2FyZCBGUk9NIENhY2hlQWxsb3dzQWxsTmV0d29ya1JlcXVlc3RzIFdIRVJF
IGNhY2hlPT8iKTsKKyAgICBpZiAoYWxsb3dsaXN0V2lsZGNhcmRTdGF0ZW1lbnQucHJlcGFyZSgp
ICE9IFNRTElURV9PSykKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgd2hpdGVsaXN0V2ls
ZGNhcmRTdGF0ZW1lbnQuYmluZEludDY0KDEsIHN0b3JhZ2VJRCk7CisgICAgYWxsb3dsaXN0V2ls
ZGNhcmRTdGF0ZW1lbnQuYmluZEludDY0KDEsIHN0b3JhZ2VJRCk7CiAgICAgCi0gICAgcmVzdWx0
ID0gd2hpdGVsaXN0V2lsZGNhcmRTdGF0ZW1lbnQuc3RlcCgpOworICAgIHJlc3VsdCA9IGFsbG93
bGlzdFdpbGRjYXJkU3RhdGVtZW50LnN0ZXAoKTsKICAgICBpZiAocmVzdWx0ICE9IFNRTElURV9S
T1cpCi0gICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGxvYWQgY2FjaGUgb25saW5lIHdoaXRl
bGlzdCB3aWxkY2FyZCBmbGFnLCBlcnJvciBcIiVzXCIiLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1z
ZygpKTsKKyAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgbG9hZCBjYWNoZSBvbmxpbmUgYWxs
b3dsaXN0IHdpbGRjYXJkIGZsYWcsIGVycm9yIFwiJXNcIiIsIG1fZGF0YWJhc2UubGFzdEVycm9y
TXNnKCkpOwogCi0gICAgY2FjaGUtPnNldEFsbG93c0FsbE5ldHdvcmtSZXF1ZXN0cyh3aGl0ZWxp
c3RXaWxkY2FyZFN0YXRlbWVudC5nZXRDb2x1bW5JbnQ2NCgwKSk7CisgICAgY2FjaGUtPnNldEFs
bG93c0FsbE5ldHdvcmtSZXF1ZXN0cyhhbGxvd2xpc3RXaWxkY2FyZFN0YXRlbWVudC5nZXRDb2x1
bW5JbnQ2NCgwKSk7CiAKLSAgICBpZiAod2hpdGVsaXN0V2lsZGNhcmRTdGF0ZW1lbnQuc3RlcCgp
ICE9IFNRTElURV9ET05FKQotICAgICAgICBMT0dfRVJST1IoIlRvbyBtYW55IHJvd3MgZm9yIG9u
bGluZSB3aGl0ZWxpc3Qgd2lsZGNhcmQgZmxhZyIpOworICAgIGlmIChhbGxvd2xpc3RXaWxkY2Fy
ZFN0YXRlbWVudC5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpCisgICAgICAgIExPR19FUlJPUigiVG9v
IG1hbnkgcm93cyBmb3Igb25saW5lIGFsbG93bGlzdCB3aWxkY2FyZCBmbGFnIik7CiAKICAgICAv
LyBMb2FkIGZhbGxiYWNrIFVSTHMuCiAgICAgU1FMaXRlU3RhdGVtZW50IGZhbGxiYWNrU3RhdGVt
ZW50KG1fZGF0YWJhc2UsICJTRUxFQ1QgbmFtZXNwYWNlLCBmYWxsYmFja1VSTCBGUk9NIEZhbGxi
YWNrVVJMcyBXSEVSRSBjYWNoZT0/Iik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvTWFuaWZlc3RQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9NYW5pZmVzdFBhcnNlci5jcHAJKHJldmlzaW9uIDI2MjkxNSkKKysrIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9NYW5pZmVzdFBhcnNlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1lbnVtIE1v
ZGUgeyBFeHBsaWNpdCwgRmFsbGJhY2ssIE9ubGluZVdoaXRlbGlzdCwgVW5rbm93biB9OworZW51
bSBNb2RlIHsgRXhwbGljaXQsIEZhbGxiYWNrLCBPbmxpbmVBbGxvd2xpc3QsIFVua25vd24gfTsK
IAogc3RhdGljIFN0cmluZ1ZpZXcgbWFuaWZlc3RQYXRoKGNvbnN0IFVSTCYgbWFuaWZlc3RVUkwp
CiB7CkBAIC00Nyw3ICs0Nyw3IEBAIHN0YXRpYyBTdHJpbmdWaWV3IG1hbmlmZXN0UGF0aChjb25z
dCBVUkwKIGJvb2wgcGFyc2VNYW5pZmVzdChjb25zdCBVUkwmIG1hbmlmZXN0VVJMLCBjb25zdCBT
dHJpbmcmIG1hbmlmZXN0TUlNRVR5cGUsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgsIE1h
bmlmZXN0JiBtYW5pZmVzdCkKIHsKICAgICBBU1NFUlQobWFuaWZlc3QuZXhwbGljaXRVUkxzLmlz
RW1wdHkoKSk7Ci0gICAgQVNTRVJUKG1hbmlmZXN0Lm9ubGluZVdoaXRlbGlzdGVkVVJMcy5pc0Vt
cHR5KCkpOworICAgIEFTU0VSVChtYW5pZmVzdC5vbmxpbmVBbGxvd2VkVVJMcy5pc0VtcHR5KCkp
OwogICAgIEFTU0VSVChtYW5pZmVzdC5mYWxsYmFja1VSTHMuaXNFbXB0eSgpKTsKICAgICBtYW5p
ZmVzdC5hbGxvd0FsbE5ldHdvcmtSZXF1ZXN0cyA9IGZhbHNlOwogCkBAIC0xMDksMTIgKzEwOSwx
MiBAQCBib29sIHBhcnNlTWFuaWZlc3QoY29uc3QgVVJMJiBtYW5pZmVzdFVSCiAgICAgICAgIGVs
c2UgaWYgKGxpbmUgPT0gIkZBTExCQUNLOiIpCiAgICAgICAgICAgICBtb2RlID0gRmFsbGJhY2s7
CiAgICAgICAgIGVsc2UgaWYgKGxpbmUgPT0gIk5FVFdPUks6IikKLSAgICAgICAgICAgIG1vZGUg
PSBPbmxpbmVXaGl0ZWxpc3Q7CisgICAgICAgICAgICBtb2RlID0gT25saW5lQWxsb3dsaXN0Owog
ICAgICAgICBlbHNlIGlmIChsaW5lLmVuZHNXaXRoKCc6JykpCiAgICAgICAgICAgICBtb2RlID0g
VW5rbm93bjsKICAgICAgICAgZWxzZSBpZiAobW9kZSA9PSBVbmtub3duKQogICAgICAgICAgICAg
Y29udGludWU7Ci0gICAgICAgIGVsc2UgaWYgKG1vZGUgPT0gRXhwbGljaXQgfHwgbW9kZSA9PSBP
bmxpbmVXaGl0ZWxpc3QpIHsKKyAgICAgICAgZWxzZSBpZiAobW9kZSA9PSBFeHBsaWNpdCB8fCBt
b2RlID09IE9ubGluZUFsbG93bGlzdCkgewogICAgICAgICAgICAgYXV0byB1cGNvbnZlcnRlZExp
bmVDaGFyYWN0ZXJzID0gU3RyaW5nVmlldyhsaW5lKS51cGNvbnZlcnRlZENoYXJhY3RlcnMoKTsK
ICAgICAgICAgICAgIGNvbnN0IFVDaGFyKiBwID0gdXBjb252ZXJ0ZWRMaW5lQ2hhcmFjdGVyczsK
ICAgICAgICAgICAgIGNvbnN0IFVDaGFyKiBsaW5lRW5kID0gcCArIGxpbmUubGVuZ3RoKCk7CkBA
IC0xMjMsNyArMTIzLDcgQEAgYm9vbCBwYXJzZU1hbmlmZXN0KGNvbnN0IFVSTCYgbWFuaWZlc3RV
UgogICAgICAgICAgICAgd2hpbGUgKHAgPCBsaW5lRW5kICYmICpwICE9ICdcdCcgJiYgKnAgIT0g
JyAnKSAKICAgICAgICAgICAgICAgICBwKys7CiAKLSAgICAgICAgICAgIGlmIChtb2RlID09IE9u
bGluZVdoaXRlbGlzdCAmJiBwIC0gdXBjb252ZXJ0ZWRMaW5lQ2hhcmFjdGVycyA9PSAxICYmIGxp
bmVbMF0gPT0gJyonKSB7CisgICAgICAgICAgICBpZiAobW9kZSA9PSBPbmxpbmVBbGxvd2xpc3Qg
JiYgcCAtIHVwY29udmVydGVkTGluZUNoYXJhY3RlcnMgPT0gMSAmJiBsaW5lWzBdID09ICcqJykg
ewogICAgICAgICAgICAgICAgIC8vIFdpbGRjYXJkIHdhcyBmb3VuZC4KICAgICAgICAgICAgICAg
ICBtYW5pZmVzdC5hbGxvd0FsbE5ldHdvcmtSZXF1ZXN0cyA9IHRydWU7CiAgICAgICAgICAgICAg
ICAgY29udGludWU7CkBAIC0xNDUsNyArMTQ1LDcgQEAgYm9vbCBwYXJzZU1hbmlmZXN0KGNvbnN0
IFVSTCYgbWFuaWZlc3RVUgogICAgICAgICAgICAgaWYgKG1vZGUgPT0gRXhwbGljaXQpCiAgICAg
ICAgICAgICAgICAgbWFuaWZlc3QuZXhwbGljaXRVUkxzLmFkZCh1cmwuc3RyaW5nKCkpOwogICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG1hbmlmZXN0Lm9ubGluZVdoaXRlbGlzdGVk
VVJMcy5hcHBlbmQodXJsKTsKKyAgICAgICAgICAgICAgICBtYW5pZmVzdC5vbmxpbmVBbGxvd2Vk
VVJMcy5hcHBlbmQodXJsKTsKICAgICAgICAgICAgIAogICAgICAgICB9IGVsc2UgaWYgKG1vZGUg
PT0gRmFsbGJhY2spIHsKICAgICAgICAgICAgIGF1dG8gdXBjb252ZXJ0ZWRMaW5lQ2hhcmFjdGVy
cyA9IFN0cmluZ1ZpZXcobGluZSkudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvTWFuaWZlc3RQYXJzZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvTWFuaWZlc3RQYXJzZXIuaAkocmV2aXNp
b24gMjYyOTE1KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL01hbmlmZXN0UGFy
c2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogc3RydWN0IE1hbmlmZXN0IHsKLSAgICBWZWN0b3I8VVJMPiBvbmxpbmVXaGl0ZWxpc3Rl
ZFVSTHM7CisgICAgVmVjdG9yPFVSTD4gb25saW5lQWxsb3dlZFVSTHM7CiAgICAgSGFzaFNldDxT
dHJpbmc+IGV4cGxpY2l0VVJMczsKICAgICBGYWxsYmFja1VSTFZlY3RvciBmYWxsYmFja1VSTHM7
CiAgICAgYm9vbCBhbGxvd0FsbE5ldHdvcmtSZXF1ZXN0czsgLy8gV2lsZGNhcmQgZm91bmQgaW4g
TkVUV09SSyBzZWN0aW9uLgpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAJKHJldmlzaW9uIDI2Mjkx
NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02
NzEsNyArNjcxLDcgQEAgdm9pZCBGcmFtZTo6aW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5KAog
ICAgICAgICByZXR1cm47CiAgICAgaWYgKHNjcmlwdC5pbmplY3RlZEZyYW1lcygpID09IFVzZXJD
b250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluVG9wRnJhbWVPbmx5ICYmICFpc01haW5GcmFt
ZSgpKQogICAgICAgICByZXR1cm47Ci0gICAgaWYgKCFVc2VyQ29udGVudFVSTFBhdHRlcm46Om1h
dGNoZXNQYXR0ZXJucyhkb2N1bWVudC0+dXJsKCksIHNjcmlwdC53aGl0ZWxpc3QoKSwgc2NyaXB0
LmJsb2NrbGlzdCgpKSkKKyAgICBpZiAoIVVzZXJDb250ZW50VVJMUGF0dGVybjo6bWF0Y2hlc1Bh
dHRlcm5zKGRvY3VtZW50LT51cmwoKSwgc2NyaXB0LmFsbG93bGlzdCgpLCBzY3JpcHQuYmxvY2ts
aXN0KCkpKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKCFtX3NjcmlwdC0+c2hvdWxkQWxsb3dV
c2VyQWdlbnRTY3JpcHRzKCpkb2N1bWVudCkpCiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCShyZXZpc2lvbiAyNjI5MTUpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIz
LDcgKzMyMyw3IEBAIGJvb2wgU2VjdXJpdHlPcmlnaW46OmNhblJlcXVlc3QoY29uc3QgVVIKICAg
ICBpZiAoaXNTYW1lU2NoZW1lSG9zdFBvcnQodGFyZ2V0T3JpZ2luLmdldCgpKSkKICAgICAgICAg
cmV0dXJuIHRydWU7CiAKLSAgICBpZiAoU2VjdXJpdHlQb2xpY3k6OmlzQWNjZXNzV2hpdGVMaXN0
ZWQoKnRoaXMsIHRhcmdldE9yaWdpbi5nZXQoKSwgdXJsKSkKKyAgICBpZiAoU2VjdXJpdHlQb2xp
Y3k6OmlzQWNjZXNzQWxsb3dlZCgqdGhpcywgdGFyZ2V0T3JpZ2luLmdldCgpLCB1cmwpKQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIHJldHVybiBmYWxzZTsKQEAgLTM4Miw3ICszODIsNyBA
QCBib29sIFNlY3VyaXR5T3JpZ2luOjpjYW5EaXNwbGF5KGNvbnN0IFVSCiAgICAgICAgIHJldHVy
biBjYW5SZXF1ZXN0KHVybCk7CiAKICAgICBpZiAoTGVnYWN5U2NoZW1lUmVnaXN0cnk6OnNob3Vs
ZFRyZWF0VVJMU2NoZW1lQXNEaXNwbGF5SXNvbGF0ZWQocHJvdG9jb2wpKQotICAgICAgICByZXR1
cm4gZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShtX2RhdGEucHJvdG9jb2wsIHByb3RvY29sKSB8fCBT
ZWN1cml0eVBvbGljeTo6aXNBY2Nlc3NXaGl0ZUxpc3RlZCgqdGhpcywgdXJsKTsKKyAgICAgICAg
cmV0dXJuIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobV9kYXRhLnByb3RvY29sLCBwcm90b2NvbCkg
fHwgU2VjdXJpdHlQb2xpY3k6OmlzQWNjZXNzQWxsb3dlZCgqdGhpcywgdXJsKTsKIAogICAgIGlm
ICghU2VjdXJpdHlQb2xpY3k6OnJlc3RyaWN0QWNjZXNzVG9Mb2NhbCgpKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKQEAgLTM5MSw3ICszOTEsNyBAQCBib29sIFNlY3VyaXR5T3JpZ2luOjpjYW5EaXNw
bGF5KGNvbnN0IFVSCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgaWYgKExlZ2FjeVNjaGVt
ZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVSTFNjaGVtZUFzTG9jYWwocHJvdG9jb2wpKQotICAgICAg
ICByZXR1cm4gY2FuTG9hZExvY2FsUmVzb3VyY2VzKCkgfHwgU2VjdXJpdHlQb2xpY3k6OmlzQWNj
ZXNzV2hpdGVMaXN0ZWQoKnRoaXMsIHVybCk7CisgICAgICAgIHJldHVybiBjYW5Mb2FkTG9jYWxS
ZXNvdXJjZXMoKSB8fCBTZWN1cml0eVBvbGljeTo6aXNBY2Nlc3NBbGxvd2VkKCp0aGlzLCB1cmwp
OwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3Vy
aXR5UG9saWN5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5
UG9saWN5LmNwcAkocmV2aXNpb24gMjYyOTE1KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1
cml0eVBvbGljeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDggKzQzLDggQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBzdGF0aWMgU2VjdXJpdHlQb2xpY3k6OkxvY2FsTG9hZFBvbGljeSBsb2Nh
bExvYWRQb2xpY3kgPSBTZWN1cml0eVBvbGljeTo6QWxsb3dMb2NhbExvYWRzRm9yTG9jYWxPbmx5
OwogCi10eXBlZGVmIFZlY3RvcjxPcmlnaW5BY2Nlc3NFbnRyeT4gT3JpZ2luQWNjZXNzV2hpdGVM
aXN0OwotdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgc3RkOjp1bmlxdWVfcHRyPE9yaWdpbkFjY2Vz
c1doaXRlTGlzdD4+IE9yaWdpbkFjY2Vzc01hcDsKK3R5cGVkZWYgVmVjdG9yPE9yaWdpbkFjY2Vz
c0VudHJ5PiBPcmlnaW5BY2Nlc3NBbGxvd2xpc3Q7Cit0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBz
dGQ6OnVuaXF1ZV9wdHI8T3JpZ2luQWNjZXNzQWxsb3dsaXN0Pj4gT3JpZ2luQWNjZXNzTWFwOwog
CiBzdGF0aWMgTG9jayBvcmlnaW5BY2Nlc3NNYXBMb2NrOwogc3RhdGljIE9yaWdpbkFjY2Vzc01h
cCYgb3JpZ2luQWNjZXNzTWFwKCkKQEAgLTIwMSwxMiArMjAxLDEyIEBAIGJvb2wgU2VjdXJpdHlQ
b2xpY3k6OmFsbG93U3Vic3RpdHV0ZURhdGEKICAgICByZXR1cm4gbG9jYWxMb2FkUG9saWN5ICE9
IFNlY3VyaXR5UG9saWN5OjpBbGxvd0xvY2FsTG9hZHNGb3JMb2NhbE9ubHk7CiB9CiAKLWJvb2wg
U2VjdXJpdHlQb2xpY3k6OmlzQWNjZXNzV2hpdGVMaXN0ZWQoY29uc3QgU2VjdXJpdHlPcmlnaW4m
IGFjdGl2ZU9yaWdpbiwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRhcmdldE9yaWdpbiwgY29uc3Qg
VVJMJiB0YXJnZXRVUkwpCitib29sIFNlY3VyaXR5UG9saWN5Ojppc0FjY2Vzc0FsbG93ZWQoY29u
c3QgU2VjdXJpdHlPcmlnaW4mIGFjdGl2ZU9yaWdpbiwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRh
cmdldE9yaWdpbiwgY29uc3QgVVJMJiB0YXJnZXRVUkwpCiB7CiAgICAgQVNTRVJUKHRhcmdldE9y
aWdpbi5lcXVhbChTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHRhcmdldFVSTCkucHRyKCkpKTsKICAg
ICB7CiAgICAgICAgIExvY2tlcjxMb2NrPiBsb2NrZXIob3JpZ2luQWNjZXNzTWFwTG9jayk7Ci0g
ICAgICAgIGlmIChPcmlnaW5BY2Nlc3NXaGl0ZUxpc3QqIGxpc3QgPSBvcmlnaW5BY2Nlc3NNYXAo
KS5nZXQoYWN0aXZlT3JpZ2luLnRvU3RyaW5nKCkpKSB7CisgICAgICAgIGlmIChPcmlnaW5BY2Nl
c3NBbGxvd2xpc3QqIGxpc3QgPSBvcmlnaW5BY2Nlc3NNYXAoKS5nZXQoYWN0aXZlT3JpZ2luLnRv
U3RyaW5nKCkpKSB7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIGVudHJ5IDogKmxpc3QpIHsKICAg
ICAgICAgICAgICAgICBpZiAoZW50cnkubWF0Y2hlc09yaWdpbih0YXJnZXRPcmlnaW4pKQogICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTIyMSwxMiArMjIxLDEyIEBAIGJvb2wg
U2VjdXJpdHlQb2xpY3k6OmlzQWNjZXNzV2hpdGVMaXN0ZWQKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKLWJvb2wgU2VjdXJpdHlQb2xpY3k6OmlzQWNjZXNzV2hpdGVMaXN0ZWQoY29uc3QgU2VjdXJp
dHlPcmlnaW4mIGFjdGl2ZU9yaWdpbiwgY29uc3QgVVJMJiB1cmwpCitib29sIFNlY3VyaXR5UG9s
aWN5Ojppc0FjY2Vzc0FsbG93ZWQoY29uc3QgU2VjdXJpdHlPcmlnaW4mIGFjdGl2ZU9yaWdpbiwg
Y29uc3QgVVJMJiB1cmwpCiB7Ci0gICAgcmV0dXJuIGlzQWNjZXNzV2hpdGVMaXN0ZWQoYWN0aXZl
T3JpZ2luLCBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHVybCkuZ2V0KCksIHVybCk7CisgICAgcmV0
dXJuIGlzQWNjZXNzQWxsb3dlZChhY3RpdmVPcmlnaW4sIFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUo
dXJsKS5nZXQoKSwgdXJsKTsKIH0KIAotdm9pZCBTZWN1cml0eVBvbGljeTo6YWRkT3JpZ2luQWNj
ZXNzV2hpdGVsaXN0RW50cnkoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHNvdXJjZU9yaWdpbiwgY29u
c3QgU3RyaW5nJiBkZXN0aW5hdGlvblByb3RvY29sLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9u
RG9tYWluLCBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKQordm9pZCBTZWN1cml0eVBv
bGljeTo6YWRkT3JpZ2luQWNjZXNzQWxsb3dsaXN0RW50cnkoY29uc3QgU2VjdXJpdHlPcmlnaW4m
IHNvdXJjZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblByb3RvY29sLCBjb25zdCBT
dHJpbmcmIGRlc3RpbmF0aW9uRG9tYWluLCBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5z
KQogewogICAgIEFTU0VSVCghc291cmNlT3JpZ2luLmlzVW5pcXVlKCkpOwogICAgIGlmIChzb3Vy
Y2VPcmlnaW4uaXNVbmlxdWUoKSkKQEAgLTIzNywxMyArMjM3LDEzIEBAIHZvaWQgU2VjdXJpdHlQ
b2xpY3k6OmFkZE9yaWdpbkFjY2Vzc1doaXQKICAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKG9yaWdp
bkFjY2Vzc01hcExvY2spOwogICAgIE9yaWdpbkFjY2Vzc01hcDo6QWRkUmVzdWx0IHJlc3VsdCA9
IG9yaWdpbkFjY2Vzc01hcCgpLmFkZChzb3VyY2VTdHJpbmcsIG51bGxwdHIpOwogICAgIGlmIChy
ZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VV
bmlxdWU8T3JpZ2luQWNjZXNzV2hpdGVMaXN0PigpOworICAgICAgICByZXN1bHQuaXRlcmF0b3It
PnZhbHVlID0gbWFrZVVuaXF1ZTxPcmlnaW5BY2Nlc3NBbGxvd2xpc3Q+KCk7CiAKLSAgICBPcmln
aW5BY2Nlc3NXaGl0ZUxpc3QqIGxpc3QgPSByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwor
ICAgIE9yaWdpbkFjY2Vzc0FsbG93bGlzdCogbGlzdCA9IHJlc3VsdC5pdGVyYXRvci0+dmFsdWUu
Z2V0KCk7CiAgICAgbGlzdC0+YXBwZW5kKE9yaWdpbkFjY2Vzc0VudHJ5KGRlc3RpbmF0aW9uUHJv
dG9jb2wsIGRlc3RpbmF0aW9uRG9tYWluLCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyA/IE9y
aWdpbkFjY2Vzc0VudHJ5OjpBbGxvd1N1YmRvbWFpbnMgOiBPcmlnaW5BY2Nlc3NFbnRyeTo6RGlz
YWxsb3dTdWJkb21haW5zLCBPcmlnaW5BY2Nlc3NFbnRyeTo6VHJlYXRJUEFkZHJlc3NBc0lQQWRk
cmVzcykpOwogfQogCi12b2lkIFNlY3VyaXR5UG9saWN5OjpyZW1vdmVPcmlnaW5BY2Nlc3NXaGl0
ZWxpc3RFbnRyeShjb25zdCBTZWN1cml0eU9yaWdpbiYgc291cmNlT3JpZ2luLCBjb25zdCBTdHJp
bmcmIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25Eb21haW4s
IGJvb2wgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpCit2b2lkIFNlY3VyaXR5UG9saWN5Ojpy
ZW1vdmVPcmlnaW5BY2Nlc3NBbGxvd2xpc3RFbnRyeShjb25zdCBTZWN1cml0eU9yaWdpbiYgc291
cmNlT3JpZ2luLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGNvbnN0IFN0cmlu
ZyYgZGVzdGluYXRpb25Eb21haW4sIGJvb2wgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpCiB7
CiAgICAgQVNTRVJUKCFzb3VyY2VPcmlnaW4uaXNVbmlxdWUoKSk7CiAgICAgaWYgKHNvdXJjZU9y
aWdpbi5pc1VuaXF1ZSgpKQpAQCAtMjU3LDcgKzI1Nyw3IEBAIHZvaWQgU2VjdXJpdHlQb2xpY3k6
OnJlbW92ZU9yaWdpbkFjY2Vzc1cKICAgICBpZiAoaXQgPT0gbWFwLmVuZCgpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBPcmlnaW5BY2Nlc3NXaGl0ZUxpc3QmIGxpc3QgPSAqaXQtPnZhbHVlOwor
ICAgIE9yaWdpbkFjY2Vzc0FsbG93bGlzdCYgbGlzdCA9ICppdC0+dmFsdWU7CiAgICAgT3JpZ2lu
QWNjZXNzRW50cnkgb3JpZ2luQWNjZXNzRW50cnkoZGVzdGluYXRpb25Qcm90b2NvbCwgZGVzdGlu
YXRpb25Eb21haW4sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zID8gT3JpZ2luQWNjZXNzRW50
cnk6OkFsbG93U3ViZG9tYWlucyA6IE9yaWdpbkFjY2Vzc0VudHJ5OjpEaXNhbGxvd1N1YmRvbWFp
bnMsIE9yaWdpbkFjY2Vzc0VudHJ5OjpUcmVhdElQQWRkcmVzc0FzSVBBZGRyZXNzKTsKICAgICBp
ZiAoIWxpc3QucmVtb3ZlRmlyc3Qob3JpZ2luQWNjZXNzRW50cnkpKQogICAgICAgICByZXR1cm47
CkBAIC0yNjYsNyArMjY2LDcgQEAgdm9pZCBTZWN1cml0eVBvbGljeTo6cmVtb3ZlT3JpZ2luQWNj
ZXNzVwogICAgICAgICBtYXAucmVtb3ZlKGl0KTsKIH0KIAotdm9pZCBTZWN1cml0eVBvbGljeTo6
cmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RzKCkKK3ZvaWQgU2VjdXJpdHlQb2xpY3k6OnJlc2V0
T3JpZ2luQWNjZXNzQWxsb3dsaXN0cygpCiB7CiAgICAgTG9ja2VyPExvY2s+IGxvY2tlcihvcmln
aW5BY2Nlc3NNYXBMb2NrKTsKICAgICBvcmlnaW5BY2Nlc3NNYXAoKS5jbGVhcigpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuaAkocmV2aXNpb24gMjYyOTE1KQorKysgU291
cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5oCSh3b3JraW5nIGNvcHkpCkBAIC02OCwx
MiArNjgsMTIgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIGFsbG93U3Vic3RpdHV0ZURhdGFB
Y2Nlc3NUb0xvY2FsKCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBhbGxvd0Fj
Y2Vzc1RvKGNvbnN0IFVzZXJDb250ZW50VVJMUGF0dGVybiYpOwotICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyB2b2lkIGFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KGNvbnN0IFNlY3VyaXR5
T3JpZ2luJiBzb3VyY2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25Qcm90b2NvbCwg
Y29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbkRvbWFpbiwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3Vi
ZG9tYWlucyk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgcmVtb3ZlT3JpZ2luQWNj
ZXNzV2hpdGVsaXN0RW50cnkoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHNvdXJjZU9yaWdpbiwgY29u
c3QgU3RyaW5nJiBkZXN0aW5hdGlvblByb3RvY29sLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9u
RG9tYWluLCBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKLSAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgdm9pZCByZXNldE9yaWdpbkFjY2Vzc1doaXRlbGlzdHMoKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBhZGRPcmlnaW5BY2Nlc3NBbGxvd2xpc3RFbnRyeShjb25z
dCBTZWN1cml0eU9yaWdpbiYgc291cmNlT3JpZ2luLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9u
UHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25Eb21haW4sIGJvb2wgYWxsb3dEZXN0
aW5hdGlvblN1YmRvbWFpbnMpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHJlbW92
ZU9yaWdpbkFjY2Vzc0FsbG93bGlzdEVudHJ5KGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBzb3VyY2VP
cmlnaW4sIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25Qcm90b2NvbCwgY29uc3QgU3RyaW5nJiBk
ZXN0aW5hdGlvbkRvbWFpbiwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7CisgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgcmVzZXRPcmlnaW5BY2Nlc3NBbGxvd2xpc3RzKCk7
CiAKLSAgICBzdGF0aWMgYm9vbCBpc0FjY2Vzc1doaXRlTGlzdGVkKGNvbnN0IFNlY3VyaXR5T3Jp
Z2luJiBhY3RpdmVPcmlnaW4sIGNvbnN0IFNlY3VyaXR5T3JpZ2luJiB0YXJnZXRPcmlnaW4sIGNv
bnN0IFVSTCYgdGFyZ2V0VVJMKTsKLSAgICBzdGF0aWMgYm9vbCBpc0FjY2Vzc1doaXRlTGlzdGVk
KGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBhY3RpdmVPcmlnaW4sIGNvbnN0IFVSTCYgdGFyZ2V0VVJM
KTsKKyAgICBzdGF0aWMgYm9vbCBpc0FjY2Vzc0FsbG93ZWQoY29uc3QgU2VjdXJpdHlPcmlnaW4m
IGFjdGl2ZU9yaWdpbiwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRhcmdldE9yaWdpbiwgY29uc3Qg
VVJMJiB0YXJnZXRVUkwpOworICAgIHN0YXRpYyBib29sIGlzQWNjZXNzQWxsb3dlZChjb25zdCBT
ZWN1cml0eU9yaWdpbiYgYWN0aXZlT3JpZ2luLCBjb25zdCBVUkwmIHRhcmdldFVSTCk7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJD
b250ZW50VVJMUGF0dGVybi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9V
c2VyQ29udGVudFVSTFBhdHRlcm4uY3BwCShyZXZpc2lvbiAyNjI5MTUpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wYWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMy
LDE2ICszMiwxNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWJvb2wgVXNlckNvbnRlbnRV
UkxQYXR0ZXJuOjptYXRjaGVzUGF0dGVybnMoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiB3aGl0ZWxpc3QsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9ja2xpc3QpCitib29s
IFVzZXJDb250ZW50VVJMUGF0dGVybjo6bWF0Y2hlc1BhdHRlcm5zKGNvbnN0IFVSTCYgdXJsLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgYWxsb3dsaXN0LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxv
Y2tsaXN0KQogewotICAgIC8vIEluIG9yZGVyIGZvciBhIFVSTCB0byBiZSBhIG1hdGNoIGl0IGhh
cyB0byBiZSBwcmVzZW50IGluIHRoZSB3aGl0ZWxpc3QgYW5kIG5vdCBwcmVzZW50IGluIHRoZSBi
bG9ja2xpc3QuCi0gICAgLy8gSWYgdGhlcmUgaXMgbm8gd2hpdGVsaXN0IGF0IGFsbCwgdGhlbiBh
bGwgVVJMcyBhcmUgYXNzdW1lZCB0byBiZSBpbiB0aGUgd2hpdGVsaXN0LgotICAgIGJvb2wgbWF0
Y2hlc1doaXRlbGlzdCA9IHdoaXRlbGlzdC5pc0VtcHR5KCk7Ci0gICAgaWYgKCFtYXRjaGVzV2hp
dGVsaXN0KSB7Ci0gICAgICAgIGZvciAoYXV0byYgZW50cnkgOiB3aGl0ZWxpc3QpIHsKKyAgICAv
LyBJbiBvcmRlciBmb3IgYSBVUkwgdG8gYmUgYSBtYXRjaCBpdCBoYXMgdG8gYmUgcHJlc2VudCBp
biB0aGUgYWxsb3dsaXN0IGFuZCBub3QgcHJlc2VudCBpbiB0aGUgYmxvY2tsaXN0LgorICAgIC8v
IElmIHRoZXJlIGlzIG5vIGFsbG93bGlzdCBhdCBhbGwsIHRoZW4gYWxsIFVSTHMgYXJlIGFzc3Vt
ZWQgdG8gYmUgaW4gdGhlIGFsbG93bGlzdC4KKyAgICBib29sIG1hdGNoZXNBbGxvd2xpc3QgPSBh
bGxvd2xpc3QuaXNFbXB0eSgpOworICAgIGlmICghbWF0Y2hlc0FsbG93bGlzdCkgeworICAgICAg
ICBmb3IgKGF1dG8mIGVudHJ5IDogYWxsb3dsaXN0KSB7CiAgICAgICAgICAgICBVc2VyQ29udGVu
dFVSTFBhdHRlcm4gY29udGVudFBhdHRlcm4oZW50cnkpOwogICAgICAgICAgICAgaWYgKGNvbnRl
bnRQYXR0ZXJuLm1hdGNoZXModXJsKSkgewotICAgICAgICAgICAgICAgIG1hdGNoZXNXaGl0ZWxp
c3QgPSB0cnVlOworICAgICAgICAgICAgICAgIG1hdGNoZXNBbGxvd2xpc3QgPSB0cnVlOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC01OCw3ICs1
OCw3IEBAIGJvb2wgVXNlckNvbnRlbnRVUkxQYXR0ZXJuOjptYXRjaGVzUGF0dGUKICAgICAgICAg
fQogICAgIH0KIAotICAgIHJldHVybiBtYXRjaGVzV2hpdGVsaXN0ICYmICFtYXRjaGVzQmxvY2ts
aXN0OworICAgIHJldHVybiBtYXRjaGVzQWxsb3dsaXN0ICYmICFtYXRjaGVzQmxvY2tsaXN0Owog
fQogCiBib29sIFVzZXJDb250ZW50VVJMUGF0dGVybjo6cGFyc2UoY29uc3QgU3RyaW5nJiBwYXR0
ZXJuKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5o
CShyZXZpc2lvbiAyNjI5MTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50VVJM
UGF0dGVybi5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKIAogICAg
IGJvb2wgbWF0Y2hTdWJkb21haW5zKCkgY29uc3QgeyByZXR1cm4gbV9tYXRjaFN1YmRvbWFpbnM7
IH0KICAgICAKLSAgICBzdGF0aWMgYm9vbCBtYXRjaGVzUGF0dGVybnMoY29uc3QgVVJMJiwgY29u
c3QgVmVjdG9yPFN0cmluZz4mIHdoaXRlbGlzdCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2Nr
bGlzdCk7CisgICAgc3RhdGljIGJvb2wgbWF0Y2hlc1BhdHRlcm5zKGNvbnN0IFVSTCYsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBhbGxvd2xpc3QsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9ja2xp
c3QpOwogCiBwcml2YXRlOgogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgcGFyc2UoY29uc3QgU3Ry
aW5nJiBwYXR0ZXJuKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlclNjcmlwdC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlclNjcmlwdC5oCShyZXZpc2lvbiAy
NjI5MTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJTY3JpcHQuaAkod29ya2luZyBjb3B5
KQpAQCAtNDEsMTAgKzQxLDEwIEBAIHB1YmxpYzoKICAgICBVc2VyU2NyaXB0JiBvcGVyYXRvcj0o
Y29uc3QgVXNlclNjcmlwdCYpID0gZGVmYXVsdDsKICAgICBVc2VyU2NyaXB0JiBvcGVyYXRvcj0o
VXNlclNjcmlwdCYmKSA9IGRlZmF1bHQ7CiAKLSAgICBVc2VyU2NyaXB0KFN0cmluZyYmIHNvdXJj
ZSwgVVJMJiYgdXJsLCBWZWN0b3I8U3RyaW5nPiYmIHdoaXRlbGlzdCwgVmVjdG9yPFN0cmluZz4m
JiBibG9ja2xpc3QsIFVzZXJTY3JpcHRJbmplY3Rpb25UaW1lIGluamVjdGlvblRpbWUsIFVzZXJD
b250ZW50SW5qZWN0ZWRGcmFtZXMgaW5qZWN0ZWRGcmFtZXMsIFdhaXRGb3JOb3RpZmljYXRpb25C
ZWZvcmVJbmplY3Rpbmcgd2FpdEZvck5vdGlmaWNhdGlvbikKKyAgICBVc2VyU2NyaXB0KFN0cmlu
ZyYmIHNvdXJjZSwgVVJMJiYgdXJsLCBWZWN0b3I8U3RyaW5nPiYmIGFsbG93bGlzdCwgVmVjdG9y
PFN0cmluZz4mJiBibG9ja2xpc3QsIFVzZXJTY3JpcHRJbmplY3Rpb25UaW1lIGluamVjdGlvblRp
bWUsIFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgaW5qZWN0ZWRGcmFtZXMsIFdhaXRGb3JOb3Rp
ZmljYXRpb25CZWZvcmVJbmplY3Rpbmcgd2FpdEZvck5vdGlmaWNhdGlvbikKICAgICAgICAgOiBt
X3NvdXJjZShXVEZNb3ZlKHNvdXJjZSkpCiAgICAgICAgICwgbV91cmwoV1RGTW92ZSh1cmwpKQot
ICAgICAgICAsIG1fd2hpdGVsaXN0KFdURk1vdmUod2hpdGVsaXN0KSkKKyAgICAgICAgLCBtX2Fs
bG93bGlzdChXVEZNb3ZlKGFsbG93bGlzdCkpCiAgICAgICAgICwgbV9ibG9ja2xpc3QoV1RGTW92
ZShibG9ja2xpc3QpKQogICAgICAgICAsIG1faW5qZWN0aW9uVGltZShpbmplY3Rpb25UaW1lKQog
ICAgICAgICAsIG1faW5qZWN0ZWRGcmFtZXMoaW5qZWN0ZWRGcmFtZXMpCkBAIC01NCw3ICs1NCw3
IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFN0cmluZyYgc291cmNlKCkgY29uc3QgeyByZXR1cm4g
bV9zb3VyY2U7IH0KICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9
Ci0gICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIHdoaXRlbGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1f
d2hpdGVsaXN0OyB9CisgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFsbG93bGlzdCgpIGNvbnN0
IHsgcmV0dXJuIG1fYWxsb3dsaXN0OyB9CiAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2Nr
bGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1fYmxvY2tsaXN0OyB9CiAgICAgVXNlclNjcmlwdEluamVj
dGlvblRpbWUgaW5qZWN0aW9uVGltZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5qZWN0aW9uVGltZTsg
fQogICAgIFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgaW5qZWN0ZWRGcmFtZXMoKSBjb25zdCB7
IHJldHVybiBtX2luamVjdGVkRnJhbWVzOyB9CkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKIHBy
aXZhdGU6CiAgICAgU3RyaW5nIG1fc291cmNlOwogICAgIFVSTCBtX3VybDsKLSAgICBWZWN0b3I8
U3RyaW5nPiBtX3doaXRlbGlzdDsKKyAgICBWZWN0b3I8U3RyaW5nPiBtX2FsbG93bGlzdDsKICAg
ICBWZWN0b3I8U3RyaW5nPiBtX2Jsb2NrbGlzdDsKICAgICBVc2VyU2NyaXB0SW5qZWN0aW9uVGlt
ZSBtX2luamVjdGlvblRpbWUgeyBVc2VyU2NyaXB0SW5qZWN0aW9uVGltZTo6RG9jdW1lbnRTdGFy
dCB9OwogICAgIFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgbV9pbmplY3RlZEZyYW1lcyB7IFVz
ZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluQWxsRnJhbWVzIH07CkBAIC03OCw3ICs3
OCw3IEBAIHZvaWQgVXNlclNjcmlwdDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIKIHsKICAgICBl
bmNvZGVyIDw8IG1fc291cmNlOwogICAgIGVuY29kZXIgPDwgbV91cmw7Ci0gICAgZW5jb2RlciA8
PCBtX3doaXRlbGlzdDsKKyAgICBlbmNvZGVyIDw8IG1fYWxsb3dsaXN0OwogICAgIGVuY29kZXIg
PDwgbV9ibG9ja2xpc3Q7CiAgICAgZW5jb2RlciA8PCBtX2luamVjdGlvblRpbWU7CiAgICAgZW5j
b2RlciA8PCBtX2luamVjdGVkRnJhbWVzOwpAQCAtOTgsOSArOTgsOSBAQCBPcHRpb25hbDxVc2Vy
U2NyaXB0PiBVc2VyU2NyaXB0OjpkZWNvZGUoCiAgICAgaWYgKCF1cmwpCiAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CiAgICAgCi0gICAgT3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+IHdoaXRl
bGlzdDsKLSAgICBkZWNvZGVyID4+IHdoaXRlbGlzdDsKLSAgICBpZiAoIXdoaXRlbGlzdCkKKyAg
ICBPcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gYWxsb3dsaXN0OworICAgIGRlY29kZXIgPj4gYWxs
b3dsaXN0OworICAgIGlmICghYWxsb3dsaXN0KQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OwogICAgIAogICAgIE9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBibG9ja2xpc3Q7CkBAIC0xMjYs
NyArMTI2LDcgQEAgT3B0aW9uYWw8VXNlclNjcmlwdD4gVXNlclNjcmlwdDo6ZGVjb2RlKAogICAg
IHJldHVybiB7ewogICAgICAgICBXVEZNb3ZlKCpzb3VyY2UpLAogICAgICAgICBXVEZNb3ZlKCp1
cmwpLAotICAgICAgICBXVEZNb3ZlKCp3aGl0ZWxpc3QpLAorICAgICAgICBXVEZNb3ZlKCphbGxv
d2xpc3QpLAogICAgICAgICBXVEZNb3ZlKCpibG9ja2xpc3QpLAogICAgICAgICBXVEZNb3ZlKCpp
bmplY3Rpb25UaW1lKSwKICAgICAgICAgV1RGTW92ZSgqaW5qZWN0ZWRGcmFtZXMpLApJbmRleDog
U291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyU3R5bGVTaGVldC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvVXNlclN0eWxlU2hlZXQuaAkocmV2aXNpb24gMjYyOTE1KQorKysgU291
cmNlL1dlYkNvcmUvcGFnZS9Vc2VyU3R5bGVTaGVldC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Mywx
MCArNDMsMTAgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICBVc2VyU3R5bGVTaGVldChj
b25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgVVJMJiB1cmwsIFZlY3RvcjxTdHJpbmc+JiYgd2hp
dGVsaXN0LCBWZWN0b3I8U3RyaW5nPiYmIGJsb2NrbGlzdCwgVXNlckNvbnRlbnRJbmplY3RlZEZy
YW1lcyBpbmplY3RlZEZyYW1lcywgVXNlclN0eWxlTGV2ZWwgbGV2ZWwsIE9wdGlvbmFsPFBhZ2VJ
ZGVudGlmaWVyPiBwYWdlSUQgPSBXVEY6Om51bGxvcHQpCisgICAgVXNlclN0eWxlU2hlZXQoY29u
c3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFVSTCYgdXJsLCBWZWN0b3I8U3RyaW5nPiYmIGFsbG93
bGlzdCwgVmVjdG9yPFN0cmluZz4mJiBibG9ja2xpc3QsIFVzZXJDb250ZW50SW5qZWN0ZWRGcmFt
ZXMgaW5qZWN0ZWRGcmFtZXMsIFVzZXJTdHlsZUxldmVsIGxldmVsLCBPcHRpb25hbDxQYWdlSWRl
bnRpZmllcj4gcGFnZUlEID0gV1RGOjpudWxsb3B0KQogICAgICAgICA6IG1fc291cmNlKHNvdXJj
ZSkKICAgICAgICAgLCBtX3VybCh1cmwpCi0gICAgICAgICwgbV93aGl0ZWxpc3QoV1RGTW92ZSh3
aGl0ZWxpc3QpKQorICAgICAgICAsIG1fYWxsb3dsaXN0KFdURk1vdmUoYWxsb3dsaXN0KSkKICAg
ICAgICAgLCBtX2Jsb2NrbGlzdChXVEZNb3ZlKGJsb2NrbGlzdCkpCiAgICAgICAgICwgbV9pbmpl
Y3RlZEZyYW1lcyhpbmplY3RlZEZyYW1lcykKICAgICAgICAgLCBtX2xldmVsKGxldmVsKQpAQCAt
NTYsNyArNTYsNyBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBTdHJpbmcmIHNvdXJjZSgpIGNvbnN0
IHsgcmV0dXJuIG1fc291cmNlOyB9CiAgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCB7IHJldHVy
biBtX3VybDsgfQotICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB3aGl0ZWxpc3QoKSBjb25zdCB7
IHJldHVybiBtX3doaXRlbGlzdDsgfQorICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhbGxvd2xp
c3QoKSBjb25zdCB7IHJldHVybiBtX2FsbG93bGlzdDsgfQogICAgIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBibG9ja2xpc3QoKSBjb25zdCB7IHJldHVybiBtX2Jsb2NrbGlzdDsgfQogICAgIFVzZXJD
b250ZW50SW5qZWN0ZWRGcmFtZXMgaW5qZWN0ZWRGcmFtZXMoKSBjb25zdCB7IHJldHVybiBtX2lu
amVjdGVkRnJhbWVzOyB9CiAgICAgVXNlclN0eWxlTGV2ZWwgbGV2ZWwoKSBjb25zdCB7IHJldHVy
biBtX2xldmVsOyB9CkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgU3Ry
aW5nIG1fc291cmNlOwogICAgIFVSTCBtX3VybDsKLSAgICBWZWN0b3I8U3RyaW5nPiBtX3doaXRl
bGlzdDsKKyAgICBWZWN0b3I8U3RyaW5nPiBtX2FsbG93bGlzdDsKICAgICBWZWN0b3I8U3RyaW5n
PiBtX2Jsb2NrbGlzdDsKICAgICBVc2VyQ29udGVudEluamVjdGVkRnJhbWVzIG1faW5qZWN0ZWRG
cmFtZXM7CiAgICAgVXNlclN0eWxlTGV2ZWwgbV9sZXZlbDsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCShyZXZpc2lvbiAyNjI5MTUpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaAkod29ya2luZyBjb3B5
KQpAQCAtMTk4LDcgKzE5OCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBpc1N5c3RlbUZv
bnRGb3JiaWRkZW5Gb3JFZGl0aW5nKGNvbnN0IFN0cmluZyYpOwogCiAjaWYgUExBVEZPUk0oQ09D
T0EpCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgc2V0Rm9udFdoaXRlbGlzdChjb25z
dCBWZWN0b3I8U3RyaW5nPiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHNldEZv
bnRBbGxvd2xpc3QoY29uc3QgVmVjdG9yPFN0cmluZz4mKTsKICNlbmRpZgogI2lmIFBMQVRGT1JN
KFdJTikKICAgICBJTUxhbmdGb250TGlua1R5cGUqIGdldEZvbnRMaW5rSW50ZXJmYWNlKCk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3Jl
VGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCShyZXZpc2lvbiAyNjI5MTUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTgzMywxOSArODMzLDE5IEBAIFN5bnRoZXNpc1BhaXIgY29tcHV0ZU5l
Y2Vzc2FyeVN5bnRoZXNpcygKICAgICByZXR1cm4gU3ludGhlc2lzUGFpcihuZWVkc1N5bnRoZXRp
Y0JvbGQsIG5lZWRzU3ludGhldGljT2JsaXF1ZSk7CiB9CiAKLXR5cGVkZWYgSGFzaFNldDxTdHJp
bmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4gV2hpdGVsaXN0Owotc3RhdGljIFdoaXRlbGlz
dCYgZm9udFdoaXRlbGlzdCgpCit0eXBlZGVmIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNl
bnNpdGl2ZUhhc2g+IEFsbG93bGlzdDsKK3N0YXRpYyBBbGxvd2xpc3QmIGZvbnRBbGxvd2xpc3Qo
KQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxXaGl0ZWxpc3Q+IHdoaXRlbGlzdDsKLSAg
ICByZXR1cm4gd2hpdGVsaXN0OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBbGxvd2xpc3Q+
IGFsbG93bGlzdDsKKyAgICByZXR1cm4gYWxsb3dsaXN0OwogfQogCi12b2lkIEZvbnRDYWNoZTo6
c2V0Rm9udFdoaXRlbGlzdChjb25zdCBWZWN0b3I8U3RyaW5nPiYgaW5wdXRXaGl0ZWxpc3QpCit2
b2lkIEZvbnRDYWNoZTo6c2V0Rm9udEFsbG93bGlzdChjb25zdCBWZWN0b3I8U3RyaW5nPiYgaW5w
dXRBbGxvd2xpc3QpCiB7Ci0gICAgV2hpdGVsaXN0JiB3aGl0ZWxpc3QgPSBmb250V2hpdGVsaXN0
KCk7Ci0gICAgd2hpdGVsaXN0LmNsZWFyKCk7Ci0gICAgZm9yIChhdXRvJiBpdGVtIDogaW5wdXRX
aGl0ZWxpc3QpCi0gICAgICAgIHdoaXRlbGlzdC5hZGQoaXRlbSk7CisgICAgQWxsb3dsaXN0JiBh
bGxvd2xpc3QgPSBmb250QWxsb3dsaXN0KCk7CisgICAgYWxsb3dsaXN0LmNsZWFyKCk7CisgICAg
Zm9yIChhdXRvJiBpdGVtIDogaW5wdXRBbGxvd2xpc3QpCisgICAgICAgIGFsbG93bGlzdC5hZGQo
aXRlbSk7CiB9CiAKIGNsYXNzIEZvbnREYXRhYmFzZSB7CkBAIC0xMTc5LDggKzExNzksOCBAQCBz
dHJ1Y3QgRm9udExvb2t1cCB7CiAKIHN0YXRpYyBGb250TG9va3VwIHBsYXRmb3JtRm9udExvb2t1
cFdpdGhGYW1pbHkoY29uc3QgQXRvbVN0cmluZyYgZmFtaWx5LCBGb250U2VsZWN0aW9uUmVxdWVz
dCByZXF1ZXN0LCBmbG9hdCBzaXplLCBBbGxvd1VzZXJJbnN0YWxsZWRGb250cyBhbGxvd1VzZXJJ
bnN0YWxsZWRGb250cykKIHsKLSAgICBjb25zdCBhdXRvJiB3aGl0ZWxpc3QgPSBmb250V2hpdGVs
aXN0KCk7Ci0gICAgaWYgKCFpc1N5c3RlbUZvbnQoZmFtaWx5LnN0cmluZygpKSAmJiB3aGl0ZWxp
c3Quc2l6ZSgpICYmICF3aGl0ZWxpc3QuY29udGFpbnMoZmFtaWx5KSkKKyAgICBjb25zdCBhdXRv
JiBhbGxvd2xpc3QgPSBmb250QWxsb3dsaXN0KCk7CisgICAgaWYgKCFpc1N5c3RlbUZvbnQoZmFt
aWx5LnN0cmluZygpKSAmJiBhbGxvd2xpc3Quc2l6ZSgpICYmICFhbGxvd2xpc3QuY29udGFpbnMo
ZmFtaWx5KSkKICAgICAgICAgcmV0dXJuIHsgbnVsbHB0ciB9OwogCiAgICAgaWYgKGVxdWFsTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGZhbWlseSwgIi5hcHBsZXN5c3RlbXVpZm9udHNlcmlmIikK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMu
Y3BwCShyZXZpc2lvbiAyNjI5MTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0hUVFBQYXJzZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQxLDcgKzE0MSw3IEBAIGJvb2wg
aXNWYWxpZEFjY2VwdEhlYWRlclZhbHVlKGNvbnN0IFN0cmkKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgdmFsdWUubGVuZ3RoKCk7ICsraSkgewogICAgICAgICBVQ2hhciBjID0gdmFsdWVb
aV07CiAKLSAgICAgICAgLy8gRmlyc3QgY2hlY2sgZm9yIGFscGhhbnVtZXJpYyBmb3IgcGVyZm9y
bWFuY2UgcmVhc29ucyB0aGVuIHdoaXRlbGlzdCBmb3VyIGRlbGltaXRlciBjaGFyYWN0ZXJzLgor
ICAgICAgICAvLyBGaXJzdCBjaGVjayBmb3IgYWxwaGFudW1lcmljIGZvciBwZXJmb3JtYW5jZSBy
ZWFzb25zIHRoZW4gYWxsb3dsaXN0IGZvdXIgZGVsaW1pdGVyIGNoYXJhY3RlcnMuCiAgICAgICAg
IGlmIChpc0FTQ0lJQWxwaGFudW1lcmljKGMpIHx8IGMgPT0gJywnIHx8IGMgPT0gJy8nIHx8IGMg
PT0gJzsnIHx8IGMgPT0gJz0nKQogICAgICAgICAgICAgY29udGludWU7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9GbG9hdGluZ09iamVjdHMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvRmxvYXRpbmdPYmplY3RzLmgJKHJldmlzaW9uIDI2MjkxNSkK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GbG9hdGluZ09iamVjdHMuaAkod29ya2luZyBj
b3B5KQpAQCAtODQsNyArODQsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0Rlc2NlbmRhbnQoKSBj
b25zdCB7IHJldHVybiBtX2lzRGVzY2VuZGFudDsgfQogICAgIHZvaWQgc2V0SXNEZXNjZW5kYW50
KGJvb2wgaXNEZXNjZW5kYW50KSB7IG1faXNEZXNjZW5kYW50ID0gaXNEZXNjZW5kYW50OyB9CiAK
LSAgICAvLyBGSVhNRTogQ2FsbGVycyBvZiB0aGVzZSBtZXRob2RzIGFyZSBkYW5nZXJvdXMgYW5k
IHNob3VsZCBiZSB3aGl0ZWxpc3RlZCBleHBsaWNpdGx5IG9yIHJlbW92ZWQuCisgICAgLy8gRklY
TUU6IENhbGxlcnMgb2YgdGhlc2UgbWV0aG9kcyBhcmUgZGFuZ2Vyb3VzIGFuZCBzaG91bGQgYmUg
YWxsb3dlZCBleHBsaWNpdGx5IG9yIHJlbW92ZWQuCiAgICAgUm9vdElubGluZUJveCogb3JpZ2lu
YXRpbmdMaW5lKCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW5hdGluZ0xpbmUuZ2V0KCk7IH0KICAg
ICB2b2lkIGNsZWFyT3JpZ2luYXRpbmdMaW5lKCkgeyBtX29yaWdpbmF0aW5nTGluZSA9IG51bGxw
dHI7IH0KICAgICB2b2lkIHNldE9yaWdpbmF0aW5nTGluZShSb290SW5saW5lQm94JiBsaW5lKSB7
IG1fb3JpZ2luYXRpbmdMaW5lID0gbWFrZVdlYWtQdHIobGluZSk7IH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3N0eWxlL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9zdHlsZS9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHAJKHJldmlzaW9uIDI2Mjkx
NSkKKysrIFNvdXJjZS9XZWJDb3JlL3N0eWxlL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjAwLDcgKzIwMCw3IEBAIHZvaWQgRWxlbWVudFJ1bGVDb2xsZWN0b3I6
OnRyYW5zZmVyTWF0Y2gKICAgICAgICAgYWRkTWF0Y2hlZFByb3BlcnRpZXMoewogICAgICAgICAg
ICAgJm1hdGNoZWRSdWxlLnJ1bGVEYXRhLT5zdHlsZVJ1bGUoKS5wcm9wZXJ0aWVzKCksCiAgICAg
ICAgICAgICBzdGF0aWNfY2FzdDx1aW50MTZfdD4obWF0Y2hlZFJ1bGUucnVsZURhdGEtPmxpbmtN
YXRjaFR5cGUoKSksCi0gICAgICAgICAgICBzdGF0aWNfY2FzdDx1aW50MTZfdD4obWF0Y2hlZFJ1
bGUucnVsZURhdGEtPnByb3BlcnR5V2hpdGVsaXN0VHlwZSgpKSwKKyAgICAgICAgICAgIHN0YXRp
Y19jYXN0PHVpbnQxNl90PihtYXRjaGVkUnVsZS5ydWxlRGF0YS0+cHJvcGVydHlBbGxvd2xpc3RU
eXBlKCkpLAogICAgICAgICAgICAgbWF0Y2hlZFJ1bGUuc3R5bGVTY29wZU9yZGluYWwKICAgICAg
ICAgfSwgZGVjbGFyYXRpb25PcmlnaW4pOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0
eWxlL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
c3R5bGUvRWxlbWVudFJ1bGVDb2xsZWN0b3IuaAkocmV2aXNpb24gMjYyOTE1KQorKysgU291cmNl
L1dlYkNvcmUvc3R5bGUvRWxlbWVudFJ1bGVDb2xsZWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAt
NjcsNyArNjcsNyBAQCBzdHJ1Y3QgTWF0Y2hlZFJ1bGUgewogc3RydWN0IE1hdGNoZWRQcm9wZXJ0
aWVzIHsKICAgICBSZWZQdHI8Y29uc3QgU3R5bGVQcm9wZXJ0aWVzPiBwcm9wZXJ0aWVzOwogICAg
IHVpbnQxNl90IGxpbmtNYXRjaFR5cGUgeyBTZWxlY3RvckNoZWNrZXI6Ok1hdGNoQWxsIH07Ci0g
ICAgdWludDE2X3Qgd2hpdGVsaXN0VHlwZSB7IFByb3BlcnR5V2hpdGVsaXN0Tm9uZSB9OworICAg
IHVpbnQxNl90IGFsbG93bGlzdFR5cGUgeyBQcm9wZXJ0eUFsbG93bGlzdE5vbmUgfTsKICAgICBT
Y29wZU9yZGluYWwgc3R5bGVTY29wZU9yZGluYWwgeyBTY29wZU9yZGluYWw6OkVsZW1lbnQgfTsK
IH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0eWxlL1Byb3BlcnR5Q2FzY2FkZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3R5bGUvUHJvcGVydHlDYXNjYWRlLmNwcAkocmV2
aXNpb24gMjYyOTE1KQorKysgU291cmNlL1dlYkNvcmUvc3R5bGUvUHJvcGVydHlDYXNjYWRlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjQyLDcgKzI0Miw3IEBAIHZvaWQgUHJvcGVydHlDYXNjYWRl
OjpzZXREZWZlcnJlZChDU1NQcm8KIGJvb2wgUHJvcGVydHlDYXNjYWRlOjphZGRNYXRjaChjb25z
dCBNYXRjaGVkUHJvcGVydGllcyYgbWF0Y2hlZFByb3BlcnRpZXMsIENhc2NhZGVMZXZlbCBjYXNj
YWRlTGV2ZWwsIGJvb2wgaW1wb3J0YW50KQogewogICAgIGF1dG8mIHN0eWxlUHJvcGVydGllcyA9
ICptYXRjaGVkUHJvcGVydGllcy5wcm9wZXJ0aWVzOwotICAgIGF1dG8gcHJvcGVydHlXaGl0ZWxp
c3RUeXBlID0gc3RhdGljX2Nhc3Q8UHJvcGVydHlXaGl0ZWxpc3RUeXBlPihtYXRjaGVkUHJvcGVy
dGllcy53aGl0ZWxpc3RUeXBlKTsKKyAgICBhdXRvIHByb3BlcnR5QWxsb3dsaXN0VHlwZSA9IHN0
YXRpY19jYXN0PFByb3BlcnR5QWxsb3dsaXN0VHlwZT4obWF0Y2hlZFByb3BlcnRpZXMuYWxsb3ds
aXN0VHlwZSk7CiAgICAgYm9vbCBoYXNJbXBvcnRhbnRQcm9wZXJ0aWVzID0gZmFsc2U7CiAKICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBjb3VudCA9IHN0eWxlUHJvcGVydGllcy5wcm9wZXJ0eUNv
dW50KCk7IGkgPCBjb3VudDsgKytpKSB7CkBAIC0yNjIsMTAgKzI2MiwxMCBAQCBib29sIFByb3Bl
cnR5Q2FzY2FkZTo6YWRkTWF0Y2goY29uc3QgTWF0CiAgICAgICAgIENTU1Byb3BlcnR5SUQgcHJv
cGVydHlJRCA9IGN1cnJlbnQuaWQoKTsKIAogI2lmIEVOQUJMRShWSURFTykKLSAgICAgICAgaWYg
KHByb3BlcnR5V2hpdGVsaXN0VHlwZSA9PSBQcm9wZXJ0eVdoaXRlbGlzdEN1ZSAmJiAhaXNWYWxp
ZEN1ZVN0eWxlUHJvcGVydHkocHJvcGVydHlJRCkpCisgICAgICAgIGlmIChwcm9wZXJ0eUFsbG93
bGlzdFR5cGUgPT0gUHJvcGVydHlBbGxvd2xpc3RDdWUgJiYgIWlzVmFsaWRDdWVTdHlsZVByb3Bl
cnR5KHByb3BlcnR5SUQpKQogICAgICAgICAgICAgY29udGludWU7CiAjZW5kaWYKLSAgICAgICAg
aWYgKHByb3BlcnR5V2hpdGVsaXN0VHlwZSA9PSBQcm9wZXJ0eVdoaXRlbGlzdE1hcmtlciAmJiAh
aXNWYWxpZE1hcmtlclN0eWxlUHJvcGVydHkocHJvcGVydHlJRCkpCisgICAgICAgIGlmIChwcm9w
ZXJ0eUFsbG93bGlzdFR5cGUgPT0gUHJvcGVydHlBbGxvd2xpc3RNYXJrZXIgJiYgIWlzVmFsaWRN
YXJrZXJTdHlsZVByb3BlcnR5KHByb3BlcnR5SUQpKQogICAgICAgICAgICAgY29udGludWU7CiAK
ICAgICAgICAgaWYgKHNob3VsZEFwcGx5UHJvcGVydHlJblBhcnNlT3JkZXIocHJvcGVydHlJRCkp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxlRGF0YS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3R5bGUvUnVsZURhdGEuY3BwCShyZXZpc2lvbiAyNjI5MTUpCisrKyBT
b3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxlRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNywy
NSArMTM3LDI1IEBAIHN0YXRpYyBib29sIGNvbXB1dGVDb250YWluc1VuY29tbW9uQXR0cmkKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0YXRpYyBpbmxpbmUgUHJvcGVydHlXaGl0ZWxpc3RUeXBl
IGRldGVybWluZVByb3BlcnR5V2hpdGVsaXN0VHlwZShjb25zdCBDU1NTZWxlY3Rvciogc2VsZWN0
b3IpCitzdGF0aWMgaW5saW5lIFByb3BlcnR5QWxsb3dsaXN0VHlwZSBkZXRlcm1pbmVQcm9wZXJ0
eUFsbG93bGlzdFR5cGUoY29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yKQogewogICAgIGZvciAo
Y29uc3QgQ1NTU2VsZWN0b3IqIGNvbXBvbmVudCA9IHNlbGVjdG9yOyBjb21wb25lbnQ7IGNvbXBv
bmVudCA9IGNvbXBvbmVudC0+dGFnSGlzdG9yeSgpKSB7CiAjaWYgRU5BQkxFKFZJREVPKQogICAg
ICAgICBpZiAoY29tcG9uZW50LT5tYXRjaCgpID09IENTU1NlbGVjdG9yOjpQc2V1ZG9FbGVtZW50
ICYmIChjb21wb25lbnQtPnBzZXVkb0VsZW1lbnRUeXBlKCkgPT0gQ1NTU2VsZWN0b3I6OlBzZXVk
b0VsZW1lbnRDdWUgfHwgY29tcG9uZW50LT52YWx1ZSgpID09IFRleHRUcmFja0N1ZTo6Y3VlU2hh
ZG93UHNldWRvSWQoKSkpCi0gICAgICAgICAgICByZXR1cm4gUHJvcGVydHlXaGl0ZWxpc3RDdWU7
CisgICAgICAgICAgICByZXR1cm4gUHJvcGVydHlBbGxvd2xpc3RDdWU7CiAjZW5kaWYKICAgICAg
ICAgaWYgKGNvbXBvbmVudC0+bWF0Y2goKSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvRWxlbWVudCAm
JiBjb21wb25lbnQtPnBzZXVkb0VsZW1lbnRUeXBlKCkgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0Vs
ZW1lbnRNYXJrZXIpCi0gICAgICAgICAgICByZXR1cm4gUHJvcGVydHlXaGl0ZWxpc3RNYXJrZXI7
CisgICAgICAgICAgICByZXR1cm4gUHJvcGVydHlBbGxvd2xpc3RNYXJrZXI7CiAKICAgICAgICAg
aWYgKGNvbnN0IGF1dG8qIHNlbGVjdG9yTGlzdCA9IHNlbGVjdG9yLT5zZWxlY3Rvckxpc3QoKSkg
ewogICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvKiBzdWJTZWxlY3RvciA9IHNlbGVjdG9yTGlz
dC0+Zmlyc3QoKTsgc3ViU2VsZWN0b3I7IHN1YlNlbGVjdG9yID0gQ1NTU2VsZWN0b3JMaXN0Ojpu
ZXh0KHN1YlNlbGVjdG9yKSkgewotICAgICAgICAgICAgICAgIGF1dG8gd2hpdGVsaXN0VHlwZSA9
IGRldGVybWluZVByb3BlcnR5V2hpdGVsaXN0VHlwZShzdWJTZWxlY3Rvcik7Ci0gICAgICAgICAg
ICAgICAgaWYgKHdoaXRlbGlzdFR5cGUgIT0gUHJvcGVydHlXaGl0ZWxpc3ROb25lKQotICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gd2hpdGVsaXN0VHlwZTsKKyAgICAgICAgICAgICAgICBhdXRv
IGFsbG93bGlzdFR5cGUgPSBkZXRlcm1pbmVQcm9wZXJ0eUFsbG93bGlzdFR5cGUoc3ViU2VsZWN0
b3IpOworICAgICAgICAgICAgICAgIGlmIChhbGxvd2xpc3RUeXBlICE9IFByb3BlcnR5QWxsb3ds
aXN0Tm9uZSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFsbG93bGlzdFR5cGU7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Ci0gICAgcmV0dXJuIFByb3BlcnR5V2hpdGVsaXN0
Tm9uZTsKKyAgICByZXR1cm4gUHJvcGVydHlBbGxvd2xpc3ROb25lOwogfQogCiBSdWxlRGF0YTo6
UnVsZURhdGEoY29uc3QgU3R5bGVSdWxlJiBzdHlsZVJ1bGUsIHVuc2lnbmVkIHNlbGVjdG9ySW5k
ZXgsIHVuc2lnbmVkIHNlbGVjdG9yTGlzdEluZGV4LCB1bnNpZ25lZCBwb3NpdGlvbikKQEAgLTE2
Nyw3ICsxNjcsNyBAQCBSdWxlRGF0YTo6UnVsZURhdGEoY29uc3QgU3R5bGVSdWxlJiBzdHlsCiAg
ICAgLCBtX2Nhbk1hdGNoUHNldWRvRWxlbWVudChzZWxlY3RvckNhbk1hdGNoUHNldWRvRWxlbWVu
dCgqc2VsZWN0b3IoKSkpCiAgICAgLCBtX2NvbnRhaW5zVW5jb21tb25BdHRyaWJ1dGVTZWxlY3Rv
cihjb21wdXRlQ29udGFpbnNVbmNvbW1vbkF0dHJpYnV0ZVNlbGVjdG9yKCpzZWxlY3RvcigpKSkK
ICAgICAsIG1fbGlua01hdGNoVHlwZShTZWxlY3RvckNoZWNrZXI6OmRldGVybWluZUxpbmtNYXRj
aFR5cGUoc2VsZWN0b3IoKSkpCi0gICAgLCBtX3Byb3BlcnR5V2hpdGVsaXN0VHlwZShkZXRlcm1p
bmVQcm9wZXJ0eVdoaXRlbGlzdFR5cGUoc2VsZWN0b3IoKSkpCisgICAgLCBtX3Byb3BlcnR5QWxs
b3dsaXN0VHlwZShkZXRlcm1pbmVQcm9wZXJ0eUFsbG93bGlzdFR5cGUoc2VsZWN0b3IoKSkpCiAg
ICAgLCBtX2lzRW5hYmxlZCh0cnVlKQogICAgICwgbV9kZXNjZW5kYW50U2VsZWN0b3JJZGVudGlm
aWVySGFzaGVzKFNlbGVjdG9yRmlsdGVyOjpjb2xsZWN0SGFzaGVzKCpzZWxlY3RvcigpKSkKIHsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVEYXRhLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3R5bGUvUnVsZURhdGEuaAkocmV2aXNpb24gMjYyOTE1KQorKysgU291cmNl
L1dlYkNvcmUvc3R5bGUvUnVsZURhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTEgKzI3LDEx
IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgU3R5bGUgewogCi1lbnVtIFByb3Bl
cnR5V2hpdGVsaXN0VHlwZSB7Ci0gICAgUHJvcGVydHlXaGl0ZWxpc3ROb25lICAgPSAwLAotICAg
IFByb3BlcnR5V2hpdGVsaXN0TWFya2VyLAorZW51bSBQcm9wZXJ0eUFsbG93bGlzdFR5cGUgewor
ICAgIFByb3BlcnR5QWxsb3dsaXN0Tm9uZSAgID0gMCwKKyAgICBQcm9wZXJ0eUFsbG93bGlzdE1h
cmtlciwKICNpZiBFTkFCTEUoVklERU8pCi0gICAgUHJvcGVydHlXaGl0ZWxpc3RDdWUKKyAgICBQ
cm9wZXJ0eUFsbG93bGlzdEN1ZQogI2VuZGlmCiB9OwogCkBAIC02NSw3ICs2NSw3IEBAIHB1Ymxp
YzoKICAgICBNYXRjaEJhc2VkT25SdWxlSGFzaCBtYXRjaEJhc2VkT25SdWxlSGFzaCgpIGNvbnN0
IHsgcmV0dXJuIHN0YXRpY19jYXN0PE1hdGNoQmFzZWRPblJ1bGVIYXNoPihtX21hdGNoQmFzZWRP
blJ1bGVIYXNoKTsgfQogICAgIGJvb2wgY29udGFpbnNVbmNvbW1vbkF0dHJpYnV0ZVNlbGVjdG9y
KCkgY29uc3QgeyByZXR1cm4gbV9jb250YWluc1VuY29tbW9uQXR0cmlidXRlU2VsZWN0b3I7IH0K
ICAgICB1bnNpZ25lZCBsaW5rTWF0Y2hUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9saW5rTWF0Y2hU
eXBlOyB9Ci0gICAgUHJvcGVydHlXaGl0ZWxpc3RUeXBlIHByb3BlcnR5V2hpdGVsaXN0VHlwZSgp
IGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFByb3BlcnR5V2hpdGVsaXN0VHlwZT4obV9wcm9w
ZXJ0eVdoaXRlbGlzdFR5cGUpOyB9CisgICAgUHJvcGVydHlBbGxvd2xpc3RUeXBlIHByb3BlcnR5
QWxsb3dsaXN0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFByb3BlcnR5QWxsb3ds
aXN0VHlwZT4obV9wcm9wZXJ0eUFsbG93bGlzdFR5cGUpOyB9CiAgICAgYm9vbCBpc0VuYWJsZWQo
KSBjb25zdCB7IHJldHVybiBtX2lzRW5hYmxlZDsgfQogICAgIHZvaWQgc2V0RW5hYmxlZChib29s
IHZhbHVlKSB7IG1faXNFbmFibGVkID0gdmFsdWU7IH0KIApAQCAtODQsNyArODQsNyBAQCBwcml2
YXRlOgogICAgIHVuc2lnbmVkIG1fY2FuTWF0Y2hQc2V1ZG9FbGVtZW50IDogMTsKICAgICB1bnNp
Z25lZCBtX2NvbnRhaW5zVW5jb21tb25BdHRyaWJ1dGVTZWxlY3RvciA6IDE7CiAgICAgdW5zaWdu
ZWQgbV9saW5rTWF0Y2hUeXBlIDogMjsgLy8gIFNlbGVjdG9yQ2hlY2tlcjo6TGlua01hdGNoTWFz
awotICAgIHVuc2lnbmVkIG1fcHJvcGVydHlXaGl0ZWxpc3RUeXBlIDogMjsKKyAgICB1bnNpZ25l
ZCBtX3Byb3BlcnR5QWxsb3dsaXN0VHlwZSA6IDI7CiAgICAgdW5zaWduZWQgbV9pc0VuYWJsZWQg
OiAxOwogICAgIFNlbGVjdG9yRmlsdGVyOjpIYXNoZXMgbV9kZXNjZW5kYW50U2VsZWN0b3JJZGVu
dGlmaWVySGFzaGVzOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjI5MTUpCisrKyBTb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDIw
LTA2LTExICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNl
IGluc3RhbmNlcyBvZiB3aGl0ZWxpc3QgaW4gV2ViQ29yZSB3aXRoIGFsbG93bGlzdAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzMDY4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjphZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRy
eSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZW1v
dmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZXNldE9yaWdpbkFjY2Vzc1doaXRlbGlzdHMpOgorICAg
ICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBDOjpB
cmd1bWVudENvZGVyPFVzZXJTdHlsZVNoZWV0Pjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJn
dW1lbnRDb2RlcjxVc2VyU3R5bGVTaGVldD46OmRlY29kZSk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oklu
amVjdGVkQnVuZGxlOjphZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeSk6CisgICAgICAgIChX
ZWJLaXQ6OkluamVjdGVkQnVuZGxlOjpyZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeSk6
CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlOjpyZXNldE9yaWdpbkFjY2Vzc1doaXRl
bGlzdHMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNz
KToKKwogMjAyMC0wNi0xMSAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5jb20+CiAK
ICAgICAgICAgV2ViS2l0OiBBZGQgVUlLaXQgU1BJIGZvciB3YXRjaE9TIGFuZCB0dk9TCkluZGV4
OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24gMjYyOTE1KQorKysgU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTkwMSwxNyArOTAxLDE3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnJlcXUKIAogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoY29uc3QgU3RyaW5nJiBzb3VyY2VPcmln
aW4sIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25Qcm90b2NvbCwgY29uc3QgU3RyaW5nJiBkZXN0
aW5hdGlvbkhvc3QsIGJvb2wgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpCiB7Ci0gICAgU2Vj
dXJpdHlQb2xpY3k6OmFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KFNlY3VyaXR5T3JpZ2lu
OjpjcmVhdGVGcm9tU3RyaW5nKHNvdXJjZU9yaWdpbikuZ2V0KCksIGRlc3RpbmF0aW9uUHJvdG9j
b2wsIGRlc3RpbmF0aW9uSG9zdCwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOworICAgIFNl
Y3VyaXR5UG9saWN5OjphZGRPcmlnaW5BY2Nlc3NBbGxvd2xpc3RFbnRyeShTZWN1cml0eU9yaWdp
bjo6Y3JlYXRlRnJvbVN0cmluZyhzb3VyY2VPcmlnaW4pLmdldCgpLCBkZXN0aW5hdGlvblByb3Rv
Y29sLCBkZXN0aW5hdGlvbkhvc3QsIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKIH0KIAog
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVtb3ZlT3JpZ2luQWNjZXNzV2hp
dGVsaXN0RW50cnkoY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgZGVz
dGluYXRpb25Qcm90b2NvbCwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbkhvc3QsIGJvb2wgYWxs
b3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpCiB7Ci0gICAgU2VjdXJpdHlQb2xpY3k6OnJlbW92ZU9y
aWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5n
KHNvdXJjZU9yaWdpbikuZ2V0KCksIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGRlc3RpbmF0aW9uSG9z
dCwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOworICAgIFNlY3VyaXR5UG9saWN5OjpyZW1v
dmVPcmlnaW5BY2Nlc3NBbGxvd2xpc3RFbnRyeShTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0
cmluZyhzb3VyY2VPcmlnaW4pLmdldCgpLCBkZXN0aW5hdGlvblByb3RvY29sLCBkZXN0aW5hdGlv
bkhvc3QsIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKIH0KIAogdm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6cmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RzKCkKIHsKLSAg
ICBTZWN1cml0eVBvbGljeTo6cmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RzKCk7CisgICAgU2Vj
dXJpdHlQb2xpY3k6OnJlc2V0T3JpZ2luQWNjZXNzQWxsb3dsaXN0cygpOwogfQogCiBPcHRpb25h
bDxOZXR3b3JrQWN0aXZpdHlUcmFja2VyPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
c3RhcnRUcmFja2luZ1Jlc291cmNlTG9hZChQYWdlSWRlbnRpZmllciBwYWdlSUQsIFJlc291cmNl
TG9hZElkZW50aWZpZXIgcmVzb3VyY2VJRCwgYm9vbCBpc1RvcFJlc291cmNlKQpJbmRleDogU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCShyZXZpc2lv
biAyNjI5MTUpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDgwLDcgKzIwODAsNyBAQCB2b2lkIEFyZ3VtZW50Q29k
ZXI8VXNlclN0eWxlU2hlZXQ+OjplbmNvCiB7CiAgICAgZW5jb2RlciA8PCB1c2VyU3R5bGVTaGVl
dC5zb3VyY2UoKTsKICAgICBlbmNvZGVyIDw8IHVzZXJTdHlsZVNoZWV0LnVybCgpOwotICAgIGVu
Y29kZXIgPDwgdXNlclN0eWxlU2hlZXQud2hpdGVsaXN0KCk7CisgICAgZW5jb2RlciA8PCB1c2Vy
U3R5bGVTaGVldC5hbGxvd2xpc3QoKTsKICAgICBlbmNvZGVyIDw8IHVzZXJTdHlsZVNoZWV0LmJs
b2NrbGlzdCgpOwogICAgIGVuY29kZXIuZW5jb2RlRW51bSh1c2VyU3R5bGVTaGVldC5pbmplY3Rl
ZEZyYW1lcygpKTsKICAgICBlbmNvZGVyLmVuY29kZUVudW0odXNlclN0eWxlU2hlZXQubGV2ZWwo
KSk7CkBAIC0yMDk3LDggKzIwOTcsOCBAQCBib29sIEFyZ3VtZW50Q29kZXI8VXNlclN0eWxlU2hl
ZXQ+OjpkZWNvCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh1cmwpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICBWZWN0b3I8U3RyaW5nPiB3aGl0ZWxpc3Q7Ci0gICAgaWYgKCFkZWNvZGVy
LmRlY29kZSh3aGl0ZWxpc3QpKQorICAgIFZlY3RvcjxTdHJpbmc+IGFsbG93bGlzdDsKKyAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGFsbG93bGlzdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgIFZlY3RvcjxTdHJpbmc+IGJsb2NrbGlzdDsKQEAgLTIxMTgsNyArMjExOCw3IEBAIGJvb2wg
QXJndW1lbnRDb2RlcjxVc2VyU3R5bGVTaGVldD46OmRlY28KICAgICBpZiAoIXBhZ2VJRCkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgdXNlclN0eWxlU2hlZXQgPSBVc2VyU3R5bGVTaGVl
dChzb3VyY2UsIHVybCwgV1RGTW92ZSh3aGl0ZWxpc3QpLCBXVEZNb3ZlKGJsb2NrbGlzdCksIGlu
amVjdGVkRnJhbWVzLCBsZXZlbCwgV1RGTW92ZSgqcGFnZUlEKSk7CisgICAgdXNlclN0eWxlU2hl
ZXQgPSBVc2VyU3R5bGVTaGVldChzb3VyY2UsIHVybCwgV1RGTW92ZShhbGxvd2xpc3QpLCBXVEZN
b3ZlKGJsb2NrbGlzdCksIGluamVjdGVkRnJhbWVzLCBsZXZlbCwgV1RGTW92ZSgqcGFnZUlEKSk7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAkocmV2aXNp
b24gMjYyOTE1KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzk1LDIwICszOTUsMjAgQEAgdm9p
ZCBJbmplY3RlZEJ1bmRsZTo6c2V0U3BhdGlhbE5hdmlnYXRpbwogCiB2b2lkIEluamVjdGVkQnVu
ZGxlOjphZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShjb25zdCBTdHJpbmcmIHNvdXJjZU9y
aWdpbiwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblByb3RvY29sLCBjb25zdCBTdHJpbmcmIGRl
c3RpbmF0aW9uSG9zdCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucykKIHsKLSAgICBT
ZWN1cml0eVBvbGljeTo6YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoU2VjdXJpdHlPcmln
aW46OmNyZWF0ZUZyb21TdHJpbmcoc291cmNlT3JpZ2luKS5nZXQoKSwgZGVzdGluYXRpb25Qcm90
b2NvbCwgZGVzdGluYXRpb25Ib3N0LCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7CisgICAg
U2VjdXJpdHlQb2xpY3k6OmFkZE9yaWdpbkFjY2Vzc0FsbG93bGlzdEVudHJ5KFNlY3VyaXR5T3Jp
Z2luOjpjcmVhdGVGcm9tU3RyaW5nKHNvdXJjZU9yaWdpbikuZ2V0KCksIGRlc3RpbmF0aW9uUHJv
dG9jb2wsIGRlc3RpbmF0aW9uSG9zdCwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOwogICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigp
LmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6QWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkgeyBzb3VyY2VPcmlnaW4sIGRlc3RpbmF0
aW9uUHJvdG9jb2wsIGRlc3RpbmF0aW9uSG9zdCwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMg
fSwgMCk7CiAKIH0KIAogdm9pZCBJbmplY3RlZEJ1bmRsZTo6cmVtb3ZlT3JpZ2luQWNjZXNzV2hp
dGVsaXN0RW50cnkoY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgZGVz
dGluYXRpb25Qcm90b2NvbCwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbkhvc3QsIGJvb2wgYWxs
b3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpCiB7Ci0gICAgU2VjdXJpdHlQb2xpY3k6OnJlbW92ZU9y
aWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5n
KHNvdXJjZU9yaWdpbikuZ2V0KCksIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGRlc3RpbmF0aW9uSG9z
dCwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOworICAgIFNlY3VyaXR5UG9saWN5OjpyZW1v
dmVPcmlnaW5BY2Nlc3NBbGxvd2xpc3RFbnRyeShTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0
cmluZyhzb3VyY2VPcmlnaW4pLmdldCgpLCBkZXN0aW5hdGlvblByb3RvY29sLCBkZXN0aW5hdGlv
bkhvc3QsIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKICAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2Vu
ZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJlbW92ZU9yaWdpbkFj
Y2Vzc1doaXRlbGlzdEVudHJ5IHsgc291cmNlT3JpZ2luLCBkZXN0aW5hdGlvblByb3RvY29sLCBk
ZXN0aW5hdGlvbkhvc3QsIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zIH0sIDApOwogfQogCiB2
b2lkIEluamVjdGVkQnVuZGxlOjpyZXNldE9yaWdpbkFjY2Vzc1doaXRlbGlzdHMoKQogewotICAg
IFNlY3VyaXR5UG9saWN5OjpyZXNldE9yaWdpbkFjY2Vzc1doaXRlbGlzdHMoKTsKKyAgICBTZWN1
cml0eVBvbGljeTo6cmVzZXRPcmlnaW5BY2Nlc3NBbGxvd2xpc3RzKCk7CiAgICAgV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlv
bigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZXNldE9y
aWdpbkFjY2Vzc1doaXRlbGlzdHMgeyB9LCAwKTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCShyZXZpc2lvbiAyNjI5
MTUpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0yMTIsNyArMjEyLDcgQEAgdm9pZCBXZWJQcm9jZXNzOjpwbGF0
Zm9ybUluaXRpYWxpemVXZWJQcgogICAgIFtOU1VSTENhY2hlIHNldFNoYXJlZFVSTENhY2hlOnVy
bENhY2hlLmdldCgpXTsKIAogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBXZWJDb3JlOjpGb250Q2Fj
aGU6OnNldEZvbnRXaGl0ZWxpc3QocGFyYW1ldGVycy5mb250V2hpdGVsaXN0KTsKKyAgICBXZWJD
b3JlOjpGb250Q2FjaGU6OnNldEZvbnRBbGxvd2xpc3QocGFyYW1ldGVycy5mb250V2hpdGVsaXN0
KTsKICNlbmRpZgogCiAgICAgbV9jb21wb3NpdGluZ1JlbmRlclNlcnZlclBvcnQgPSBXVEZNb3Zl
KHBhcmFtZXRlcnMuYWNjZWxlcmF0ZWRDb21wb3NpdGluZ1BvcnQpOwpJbmRleDogU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMjYyOTE1KQorKysgU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjAtMDYt
MTEgIEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29tPgorCisgICAgICAgIFJlcGxhY2UgaW5z
dGFuY2VzIG9mIHdoaXRlbGlzdCBpbiBXZWJDb3JlIHdpdGggYWxsb3dsaXN0CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTMwNjgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5t
bToKKyAgICAgICAgKCtbV2ViVmlldyBfYWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnlXaXRo
U291cmNlT3JpZ2luOmRlc3RpbmF0aW9uUHJvdG9jb2w6ZGVzdGluYXRpb25Ib3N0OmFsbG93RGVz
dGluYXRpb25TdWJkb21haW5zOl0pOgorICAgICAgICAoK1tXZWJWaWV3IF9yZW1vdmVPcmlnaW5B
Y2Nlc3NXaGl0ZWxpc3RFbnRyeVdpdGhTb3VyY2VPcmlnaW46ZGVzdGluYXRpb25Qcm90b2NvbDpk
ZXN0aW5hdGlvbkhvc3Q6YWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnM6XSk6CisgICAgICAgICgr
W1dlYlZpZXcgX3Jlc2V0T3JpZ2luQWNjZXNzV2hpdGVsaXN0c10pOgorICAgICAgICAoK1tXZWJW
aWV3IF9zZXRGb250V2hpdGVsaXN0Ol0pOgorCiAyMDIwLTA2LTExICBEYXZpZCBLaWx6ZXIgIDxk
ZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAgW0lQQ10gQWRvcHQgZW51bSBjbGFzcyBmb3Ig
RHJhZ1NvdXJjZUFjdGlvbgpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViVmlldy5tbQkocmV2aXNpb24gMjYyOTE1KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC00NzI1LDE3ICs0NzI1LDE3IEBA
IC0gKE5TUGFzdGVib2FyZCAqKV9pbnNlcnRpb25QYXN0ZWJvYXJkCiAKICsgKHZvaWQpX2FkZE9y
aWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5V2l0aFNvdXJjZU9yaWdpbjooTlNTdHJpbmcgKilzb3Vy
Y2VPcmlnaW4gZGVzdGluYXRpb25Qcm90b2NvbDooTlNTdHJpbmcgKilkZXN0aW5hdGlvblByb3Rv
Y29sIGRlc3RpbmF0aW9uSG9zdDooTlNTdHJpbmcgKilkZXN0aW5hdGlvbkhvc3QgYWxsb3dEZXN0
aW5hdGlvblN1YmRvbWFpbnM6KEJPT0wpYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMKIHsKLSAg
ICBXZWJDb3JlOjpTZWN1cml0eVBvbGljeTo6YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnko
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcoc291cmNlT3JpZ2luKS5n
ZXQoKSwgZGVzdGluYXRpb25Qcm90b2NvbCwgZGVzdGluYXRpb25Ib3N0LCBhbGxvd0Rlc3RpbmF0
aW9uU3ViZG9tYWlucyk7CisgICAgV2ViQ29yZTo6U2VjdXJpdHlQb2xpY3k6OmFkZE9yaWdpbkFj
Y2Vzc0FsbG93bGlzdEVudHJ5KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3Ry
aW5nKHNvdXJjZU9yaWdpbikuZ2V0KCksIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGRlc3RpbmF0aW9u
SG9zdCwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOwogfQogCiArICh2b2lkKV9yZW1vdmVP
cmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeVdpdGhTb3VyY2VPcmlnaW46KE5TU3RyaW5nICopc291
cmNlT3JpZ2luIGRlc3RpbmF0aW9uUHJvdG9jb2w6KE5TU3RyaW5nICopZGVzdGluYXRpb25Qcm90
b2NvbCBkZXN0aW5hdGlvbkhvc3Q6KE5TU3RyaW5nICopZGVzdGluYXRpb25Ib3N0IGFsbG93RGVz
dGluYXRpb25TdWJkb21haW5zOihCT09MKWFsbG93RGVzdGluYXRpb25TdWJkb21haW5zCiB7Ci0g
ICAgV2ViQ29yZTo6U2VjdXJpdHlQb2xpY3k6OnJlbW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlzdEVu
dHJ5KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKHNvdXJjZU9yaWdp
bikuZ2V0KCksIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGRlc3RpbmF0aW9uSG9zdCwgYWxsb3dEZXN0
aW5hdGlvblN1YmRvbWFpbnMpOworICAgIFdlYkNvcmU6OlNlY3VyaXR5UG9saWN5OjpyZW1vdmVP
cmlnaW5BY2Nlc3NBbGxvd2xpc3RFbnRyeShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRl
RnJvbVN0cmluZyhzb3VyY2VPcmlnaW4pLmdldCgpLCBkZXN0aW5hdGlvblByb3RvY29sLCBkZXN0
aW5hdGlvbkhvc3QsIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKIH0KIAogKyAodm9pZClf
cmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RzCiB7Ci0gICAgV2ViQ29yZTo6U2VjdXJpdHlQb2xp
Y3k6OnJlc2V0T3JpZ2luQWNjZXNzV2hpdGVsaXN0cygpOworICAgIFdlYkNvcmU6OlNlY3VyaXR5
UG9saWN5OjpyZXNldE9yaWdpbkFjY2Vzc0FsbG93bGlzdHMoKTsKIH0KIAogLSAoQk9PTClfaXNW
aWV3VmlzaWJsZQpAQCAtMTAyNTIsNyArMTAyNTIsNyBAQCArICh2b2lkKV9zZXRGb250V2hpdGVs
aXN0OihOU0FycmF5ICopd2hpCiAjaWYgIVBMQVRGT1JNKE1BQykKICAgICBVTlVTRURfUEFSQU0o
d2hpdGVsaXN0KTsKICNlbHNlCi0gICAgV2ViQ29yZTo6Rm9udENhY2hlOjpzZXRGb250V2hpdGVs
aXN0KG1ha2VWZWN0b3I8U3RyaW5nPih3aGl0ZWxpc3QpKTsKKyAgICBXZWJDb3JlOjpGb250Q2Fj
aGU6OnNldEZvbnRBbGxvd2xpc3QobWFrZVZlY3RvcjxTdHJpbmc+KHdoaXRlbGlzdCkpOwogI2Vu
ZGlmCiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCShyZXZpc2lvbiAy
NjI5MTUpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNzE1NiwxOSArNzE1NiwxOSBAQCBIUkVTVUxUIFdlYlZpZXc6OmludmFsaWRhdGVC
YWNraW5nU3RvcmUoCiAKIEhSRVNVTFQgV2ViVmlldzo6YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0
RW50cnkoX0luXyBCU1RSIHNvdXJjZU9yaWdpbiwgX0luXyBCU1RSIGRlc3RpbmF0aW9uUHJvdG9j
b2wsIF9Jbl8gQlNUUiBkZXN0aW5hdGlvbkhvc3QsIEJPT0wgYWxsb3dEZXN0aW5hdGlvblN1YmRv
bWFpbnMpCiB7Ci0gICAgU2VjdXJpdHlQb2xpY3k6OmFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVu
dHJ5KFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKHRvU3RyaW5nKHNvdXJjZU9yaWdp
bikpLmdldCgpLCB0b1N0cmluZyhkZXN0aW5hdGlvblByb3RvY29sKSwgdG9TdHJpbmcoZGVzdGlu
YXRpb25Ib3N0KSwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOworICAgIFNlY3VyaXR5UG9s
aWN5OjphZGRPcmlnaW5BY2Nlc3NBbGxvd2xpc3RFbnRyeShTZWN1cml0eU9yaWdpbjo6Y3JlYXRl
RnJvbVN0cmluZyh0b1N0cmluZyhzb3VyY2VPcmlnaW4pKS5nZXQoKSwgdG9TdHJpbmcoZGVzdGlu
YXRpb25Qcm90b2NvbCksIHRvU3RyaW5nKGRlc3RpbmF0aW9uSG9zdCksIGFsbG93RGVzdGluYXRp
b25TdWJkb21haW5zKTsKICAgICByZXR1cm4gU19PSzsKIH0KIAogSFJFU1VMVCBXZWJWaWV3Ojpy
ZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShfSW5fIEJTVFIgc291cmNlT3JpZ2luLCBf
SW5fIEJTVFIgZGVzdGluYXRpb25Qcm90b2NvbCwgX0luXyBCU1RSIGRlc3RpbmF0aW9uSG9zdCwg
Qk9PTCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucykKIHsKLSAgICBTZWN1cml0eVBvbGljeTo6
cmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZy
b21TdHJpbmcodG9TdHJpbmcoc291cmNlT3JpZ2luKSkuZ2V0KCksIHRvU3RyaW5nKGRlc3RpbmF0
aW9uUHJvdG9jb2wpLCB0b1N0cmluZyhkZXN0aW5hdGlvbkhvc3QpLCBhbGxvd0Rlc3RpbmF0aW9u
U3ViZG9tYWlucyk7CisgICAgU2VjdXJpdHlQb2xpY3k6OnJlbW92ZU9yaWdpbkFjY2Vzc0FsbG93
bGlzdEVudHJ5KFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKHRvU3RyaW5nKHNvdXJj
ZU9yaWdpbikpLmdldCgpLCB0b1N0cmluZyhkZXN0aW5hdGlvblByb3RvY29sKSwgdG9TdHJpbmco
ZGVzdGluYXRpb25Ib3N0KSwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOwogICAgIHJldHVy
biBTX09LOwogfQogCiBIUkVTVUxUIFdlYlZpZXc6OnJlc2V0T3JpZ2luQWNjZXNzV2hpdGVsaXN0
cygpCiB7Ci0gICAgU2VjdXJpdHlQb2xpY3k6OnJlc2V0T3JpZ2luQWNjZXNzV2hpdGVsaXN0cygp
OworICAgIFNlY3VyaXR5UG9saWN5OjpyZXNldE9yaWdpbkFjY2Vzc0FsbG93bGlzdHMoKTsKICAg
ICByZXR1cm4gU19PSzsKIH0KICAK
</data>
<flag name="review"
          id="417087"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401670</attachid>
            <date>2020-06-11 12:32:47 -0700</date>
            <delta_ts>2020-06-11 13:47:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>for-review-5.txt</filename>
            <type>text/plain</type>
            <size>66869</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MjkxNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDk3IEBACisyMDIwLTA2LTExICBCZXRoIERh
a2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIGluc3RhbmNlcyBvZiB3
aGl0ZWxpc3QgaW4gV2ViQ29yZSB3aXRoIGFsbG93bGlzdAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzMDY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNl
QXV0aG9yaXplci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZUF1dGhvcml6ZXI6OkRh
dGFiYXNlQXV0aG9yaXplcik6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZUF1dGhvcml6ZXI6
OmFkZEFsbG93ZWRGdW5jdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VBdXRob3Jp
emVyOjphbGxvd0Z1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlQXV0aG9yaXpl
cjo6YWRkV2hpdGVsaXN0ZWRGdW5jdGlvbnMpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VBdXRob3JpemVyLmg6CisgICAgICAgICogZG9tL0V4dGVuc2lv
blN0eWxlU2hlZXRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvblN0eWxlU2hlZXRz
Ojp1cGRhdGVJbmplY3RlZFN0eWxlU2hlZXRDYWNoZSBjb25zdCk6CisgICAgICAgICogbG9hZGVy
L0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc09uQWNj
ZXNzQ29udHJvbFNpbXBsZVJlcXVlc3RNZXRob2RBbGxvd2xpc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6aXNTaW1wbGVDcm9zc09yaWdpbkFjY2Vzc1JlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6
aXNPbkFjY2Vzc0NvbnRyb2xTaW1wbGVSZXF1ZXN0TWV0aG9kV2hpdGVsaXN0KTogRGVsZXRlZC4K
KyAgICAgICAgKiBsb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmg6CisgICAgICAgICog
bG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZUl0ZW06OmFsbG93c0Nyb3NzT3Jp
Z2luTWV0aG9kIGNvbnN0KToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlOjpzZXRPbmxpbmVB
bGxvd2xpc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZTo6aXNVUkxJbk9u
bGluZUFsbG93bGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlOjpzZXRP
bmxpbmVXaGl0ZWxpc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25D
YWNoZTo6aXNVUkxJbk9ubGluZVdoaXRlbGlzdCk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0
aW9uQ2FjaGU6Om9ubGluZUFsbG93bGlzdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBs
aWNhdGlvbkNhY2hlOjpvbmxpbmVXaGl0ZWxpc3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAq
IGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hMb2FkaW5nTWFuaWZlc3QpOgor
ICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlSG9zdDo6c2hvdWxkTG9hZFJlc291cmNlRnJv
bUFwcGxpY2F0aW9uQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhv
c3Q6OmdldEFwcGxpY2F0aW9uQ2FjaGVGYWxsYmFja1Jlc291cmNlKToKKyAgICAgICAgKiBsb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmZhbGxiYWNrQ2FjaGVHcm91cEZvclVSTCk6Cisg
ICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6b3BlbkRhdGFiYXNlKToK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bG9hZENhY2hlKToKKyAgICAg
ICAgKiBsb2FkZXIvYXBwY2FjaGUvTWFuaWZlc3RQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6cGFyc2VNYW5pZmVzdCk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL01hbmlmZXN0UGFy
c2VyLmg6CisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZTo6aW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5KToKKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5
T3JpZ2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjYW5SZXF1ZXN0
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjYW5EaXNwbGF5IGNv
bnN0KToKKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5UG9saWN5LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNlY3VyaXR5UG9saWN5Ojppc0FjY2Vzc0FsbG93ZWQpOgorICAgICAgICAoV2ViQ29yZTo6
U2VjdXJpdHlQb2xpY3k6OmFkZE9yaWdpbkFjY2Vzc0FsbG93bGlzdEVudHJ5KToKKyAgICAgICAg
KFdlYkNvcmU6OlNlY3VyaXR5UG9saWN5OjpyZW1vdmVPcmlnaW5BY2Nlc3NBbGxvd2xpc3RFbnRy
eSk6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eVBvbGljeTo6cmVzZXRPcmlnaW5BY2Nlc3NB
bGxvd2xpc3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5UG9saWN5Ojppc0FjY2Vzc1do
aXRlTGlzdGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5UG9saWN5Ojph
ZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpTZWN1cml0eVBvbGljeTo6cmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlQb2xpY3k6OnJlc2V0T3JpZ2luQWNjZXNz
V2hpdGVsaXN0cyk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9TZWN1cml0eVBvbGljeS5oOgor
ICAgICAgICAqIHBhZ2UvVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlVzZXJDb250ZW50VVJMUGF0dGVybjo6bWF0Y2hlc1BhdHRlcm5zKToKKyAgICAgICAgKiBw
YWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5oOgorICAgICAgICAqIHBhZ2UvVXNlclNjcmlwdC5o
OgorICAgICAgICAoV2ViQ29yZTo6VXNlclNjcmlwdDo6VXNlclNjcmlwdCk6CisgICAgICAgIChX
ZWJDb3JlOjpVc2VyU2NyaXB0OjphbGxvd2xpc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
VXNlclNjcmlwdDo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJTY3JpcHQ6
OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpVc2VyU2NyaXB0Ojp3aGl0ZWxpc3QgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAqIHBhZ2UvVXNlclN0eWxlU2hlZXQuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlVzZXJTdHlsZVNoZWV0OjpVc2VyU3R5bGVTaGVldCk6CisgICAgICAgIChXZWJDb3Jl
OjpVc2VyU3R5bGVTaGVldDo6YWxsb3dsaXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlVz
ZXJTdHlsZVNoZWV0Ojp3aGl0ZWxpc3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZvbnRBbGxvd2xp
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpzZXRGb250QWxsb3dsaXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OnBsYXRmb3JtRm9udExvb2t1cFdpdGhGYW1pbHkpOgorICAgICAgICAo
V2ViQ29yZTo6Zm9udFdoaXRlbGlzdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpGb250
Q2FjaGU6OnNldEZvbnRXaGl0ZWxpc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvSFRUUFBhcnNlcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNWYWxpZEFjY2VwdEhl
YWRlclZhbHVlKToKKyAgICAgICAgKiByZW5kZXJpbmcvRmxvYXRpbmdPYmplY3RzLmg6CisgICAg
ICAgICogc3R5bGUvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGU6OkVsZW1lbnRSdWxlQ29sbGVjdG9yOjp0cmFuc2Zlck1hdGNoZWRSdWxlcyk6CisgICAg
ICAgICogc3R5bGUvRWxlbWVudFJ1bGVDb2xsZWN0b3IuaDoKKyAgICAgICAgKiBzdHlsZS9Qcm9w
ZXJ0eUNhc2NhZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlByb3BlcnR5Q2FzY2Fk
ZTo6YWRkTWF0Y2gpOgorICAgICAgICAqIHN0eWxlL1J1bGVEYXRhLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlOjpkZXRlcm1pbmVQcm9wZXJ0eUFsbG93bGlzdFR5cGUpOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGU6OlJ1bGVEYXRhOjpSdWxlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZTo6ZGV0ZXJtaW5lUHJvcGVydHlXaGl0ZWxpc3RUeXBlKTogRGVsZXRlZC4KKyAgICAgICAg
KiBzdHlsZS9SdWxlRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlJ1bGVEYXRhOjpw
cm9wZXJ0eUFsbG93bGlzdFR5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlJ1
bGVEYXRhOjpwcm9wZXJ0eVdoaXRlbGlzdFR5cGUgY29uc3QpOiBEZWxldGVkLgorCiAyMDIwLTA2
LTExICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgcmVm
ZXJlbmNlcyB0byAic2xhdmUiIGluIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VBdXRob3JpemVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQXV0aG9yaXplci5jcHAJKHJl
dmlzaW9uIDI2MjkxNSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0
YWJhc2VBdXRob3JpemVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQCBEYXRh
YmFzZUF1dGhvcml6ZXI6OkRhdGFiYXNlQXV0aG9yaXplcihjCiAgICAgLCBtX2RhdGFiYXNlSW5m
b1RhYmxlTmFtZShkYXRhYmFzZUluZm9UYWJsZU5hbWUpCiB7CiAgICAgcmVzZXQoKTsKLSAgICBh
ZGRXaGl0ZWxpc3RlZEZ1bmN0aW9ucygpOworICAgIGFkZEFsbG93ZWRGdW5jdGlvbnMoKTsKIH0K
IAogdm9pZCBEYXRhYmFzZUF1dGhvcml6ZXI6OnJlc2V0KCkKQEAgLTU4LDY4ICs1OCw2OCBAQCB2
b2lkIERhdGFiYXNlQXV0aG9yaXplcjo6cmVzZXREZWxldGVzKCkKICAgICBtX2hhZERlbGV0ZXMg
PSBmYWxzZTsKIH0KIAotdm9pZCBEYXRhYmFzZUF1dGhvcml6ZXI6OmFkZFdoaXRlbGlzdGVkRnVu
Y3Rpb25zKCkKK3ZvaWQgRGF0YWJhc2VBdXRob3JpemVyOjphZGRBbGxvd2VkRnVuY3Rpb25zKCkK
IHsKICAgICAvLyBTUUxpdGUgZnVuY3Rpb25zIHVzZWQgdG8gaGVscCBpbXBsZW1lbnQgc29tZSBv
cGVyYXRpb25zCiAgICAgLy8gQUxURVIgVEFCTEUgaGVscGVycwotICAgIG1fd2hpdGVsaXN0ZWRG
dW5jdGlvbnMuYWRkKCJzcWxpdGVfcmVuYW1lX3RhYmxlIik7Ci0gICAgbV93aGl0ZWxpc3RlZEZ1
bmN0aW9ucy5hZGQoInNxbGl0ZV9yZW5hbWVfdHJpZ2dlciIpOworICAgIG1fYWxsb3dlZEZ1bmN0
aW9ucy5hZGQoInNxbGl0ZV9yZW5hbWVfdGFibGUiKTsKKyAgICBtX2FsbG93ZWRGdW5jdGlvbnMu
YWRkKCJzcWxpdGVfcmVuYW1lX3RyaWdnZXIiKTsKICAgICAvLyBHTE9CIGhlbHBlcnMKLSAgICBt
X3doaXRlbGlzdGVkRnVuY3Rpb25zLmFkZCgiZ2xvYiIpOworICAgIG1fYWxsb3dlZEZ1bmN0aW9u
cy5hZGQoImdsb2IiKTsKIAogICAgIC8vIFNRTGl0ZSBjb3JlIGZ1bmN0aW9ucwotICAgIG1fd2hp
dGVsaXN0ZWRGdW5jdGlvbnMuYWRkKCJhYnMiKTsKLSAgICBtX3doaXRlbGlzdGVkRnVuY3Rpb25z
LmFkZCgiY2hhbmdlcyIpOwotICAgIG1fd2hpdGVsaXN0ZWRGdW5jdGlvbnMuYWRkKCJjb2FsZXNj
ZSIpOwotICAgIG1fd2hpdGVsaXN0ZWRGdW5jdGlvbnMuYWRkKCJnbG9iIik7Ci0gICAgbV93aGl0
ZWxpc3RlZEZ1bmN0aW9ucy5hZGQoImlmbnVsbCIpOwotICAgIG1fd2hpdGVsaXN0ZWRGdW5jdGlv
bnMuYWRkKCJoZXgiKTsKLSAgICBtX3doaXRlbGlzdGVkRnVuY3Rpb25zLmFkZCgibGFzdF9pbnNl
cnRfcm93aWQiKTsKLSAgICBtX3doaXRlbGlzdGVkRnVuY3Rpb25zLmFkZCgibGVuZ3RoIik7Ci0g
ICAgbV93aGl0ZWxpc3RlZEZ1bmN0aW9ucy5hZGQoImxpa2UiKTsKLSAgICBtX3doaXRlbGlzdGVk
RnVuY3Rpb25zLmFkZCgibG93ZXIiKTsKLSAgICBtX3doaXRlbGlzdGVkRnVuY3Rpb25zLmFkZCgi
bHRyaW0iKTsKLSAgICBtX3doaXRlbGlzdGVkRnVuY3Rpb25zLmFkZCgibWF4Iik7Ci0gICAgbV93
aGl0ZWxpc3RlZEZ1bmN0aW9ucy5hZGQoIm1pbiIpOwotICAgIG1fd2hpdGVsaXN0ZWRGdW5jdGlv
bnMuYWRkKCJudWxsaWYiKTsKLSAgICBtX3doaXRlbGlzdGVkRnVuY3Rpb25zLmFkZCgicXVvdGUi
KTsKLSAgICBtX3doaXRlbGlzdGVkRnVuY3Rpb25zLmFkZCgicmVwbGFjZSIpOwotICAgIG1fd2hp
dGVsaXN0ZWRGdW5jdGlvbnMuYWRkKCJyb3VuZCIpOwotICAgIG1fd2hpdGVsaXN0ZWRGdW5jdGlv
bnMuYWRkKCJydHJpbSIpOwotICAgIG1fd2hpdGVsaXN0ZWRGdW5jdGlvbnMuYWRkKCJzb3VuZGV4
Iik7Ci0gICAgbV93aGl0ZWxpc3RlZEZ1bmN0aW9ucy5hZGQoInNxbGl0ZV9zb3VyY2VfaWQiKTsK
LSAgICBtX3doaXRlbGlzdGVkRnVuY3Rpb25zLmFkZCgic3FsaXRlX3ZlcnNpb24iKTsKLSAgICBt
X3doaXRlbGlzdGVkRnVuY3Rpb25zLmFkZCgic3Vic3RyIik7Ci0gICAgbV93aGl0ZWxpc3RlZEZ1
bmN0aW9ucy5hZGQoInRvdGFsX2NoYW5nZXMiKTsKLSAgICBtX3doaXRlbGlzdGVkRnVuY3Rpb25z
LmFkZCgidHJpbSIpOwotICAgIG1fd2hpdGVsaXN0ZWRGdW5jdGlvbnMuYWRkKCJ0eXBlb2YiKTsK
LSAgICBtX3doaXRlbGlzdGVkRnVuY3Rpb25zLmFkZCgidXBwZXIiKTsKLSAgICBtX3doaXRlbGlz
dGVkRnVuY3Rpb25zLmFkZCgiemVyb2Jsb2IiKTsKKyAgICBtX2FsbG93ZWRGdW5jdGlvbnMuYWRk
KCJhYnMiKTsKKyAgICBtX2FsbG93ZWRGdW5jdGlvbnMuYWRkKCJjaGFuZ2VzIik7CisgICAgbV9h
bGxvd2VkRnVuY3Rpb25zLmFkZCgiY29hbGVzY2UiKTsKKyAgICBtX2FsbG93ZWRGdW5jdGlvbnMu
YWRkKCJnbG9iIik7CisgICAgbV9hbGxvd2VkRnVuY3Rpb25zLmFkZCgiaWZudWxsIik7CisgICAg
bV9hbGxvd2VkRnVuY3Rpb25zLmFkZCgiaGV4Iik7CisgICAgbV9hbGxvd2VkRnVuY3Rpb25zLmFk
ZCgibGFzdF9pbnNlcnRfcm93aWQiKTsKKyAgICBtX2FsbG93ZWRGdW5jdGlvbnMuYWRkKCJsZW5n
dGgiKTsKKyAgICBtX2FsbG93ZWRGdW5jdGlvbnMuYWRkKCJsaWtlIik7CisgICAgbV9hbGxvd2Vk
RnVuY3Rpb25zLmFkZCgibG93ZXIiKTsKKyAgICBtX2FsbG93ZWRGdW5jdGlvbnMuYWRkKCJsdHJp
bSIpOworICAgIG1fYWxsb3dlZEZ1bmN0aW9ucy5hZGQoIm1heCIpOworICAgIG1fYWxsb3dlZEZ1
bmN0aW9ucy5hZGQoIm1pbiIpOworICAgIG1fYWxsb3dlZEZ1bmN0aW9ucy5hZGQoIm51bGxpZiIp
OworICAgIG1fYWxsb3dlZEZ1bmN0aW9ucy5hZGQoInF1b3RlIik7CisgICAgbV9hbGxvd2VkRnVu
Y3Rpb25zLmFkZCgicmVwbGFjZSIpOworICAgIG1fYWxsb3dlZEZ1bmN0aW9ucy5hZGQoInJvdW5k
Iik7CisgICAgbV9hbGxvd2VkRnVuY3Rpb25zLmFkZCgicnRyaW0iKTsKKyAgICBtX2FsbG93ZWRG
dW5jdGlvbnMuYWRkKCJzb3VuZGV4Iik7CisgICAgbV9hbGxvd2VkRnVuY3Rpb25zLmFkZCgic3Fs
aXRlX3NvdXJjZV9pZCIpOworICAgIG1fYWxsb3dlZEZ1bmN0aW9ucy5hZGQoInNxbGl0ZV92ZXJz
aW9uIik7CisgICAgbV9hbGxvd2VkRnVuY3Rpb25zLmFkZCgic3Vic3RyIik7CisgICAgbV9hbGxv
d2VkRnVuY3Rpb25zLmFkZCgidG90YWxfY2hhbmdlcyIpOworICAgIG1fYWxsb3dlZEZ1bmN0aW9u
cy5hZGQoInRyaW0iKTsKKyAgICBtX2FsbG93ZWRGdW5jdGlvbnMuYWRkKCJ0eXBlb2YiKTsKKyAg
ICBtX2FsbG93ZWRGdW5jdGlvbnMuYWRkKCJ1cHBlciIpOworICAgIG1fYWxsb3dlZEZ1bmN0aW9u
cy5hZGQoInplcm9ibG9iIik7CiAKICAgICAvLyBTUUxpdGUgZGF0ZSBhbmQgdGltZSBmdW5jdGlv
bnMKLSAgICBtX3doaXRlbGlzdGVkRnVuY3Rpb25zLmFkZCgiZGF0ZSIpOwotICAgIG1fd2hpdGVs
aXN0ZWRGdW5jdGlvbnMuYWRkKCJ0aW1lIik7Ci0gICAgbV93aGl0ZWxpc3RlZEZ1bmN0aW9ucy5h
ZGQoImRhdGV0aW1lIik7Ci0gICAgbV93aGl0ZWxpc3RlZEZ1bmN0aW9ucy5hZGQoImp1bGlhbmRh
eSIpOwotICAgIG1fd2hpdGVsaXN0ZWRGdW5jdGlvbnMuYWRkKCJzdHJmdGltZSIpOworICAgIG1f
YWxsb3dlZEZ1bmN0aW9ucy5hZGQoImRhdGUiKTsKKyAgICBtX2FsbG93ZWRGdW5jdGlvbnMuYWRk
KCJ0aW1lIik7CisgICAgbV9hbGxvd2VkRnVuY3Rpb25zLmFkZCgiZGF0ZXRpbWUiKTsKKyAgICBt
X2FsbG93ZWRGdW5jdGlvbnMuYWRkKCJqdWxpYW5kYXkiKTsKKyAgICBtX2FsbG93ZWRGdW5jdGlv
bnMuYWRkKCJzdHJmdGltZSIpOwogCiAgICAgLy8gU1FMaXRlIGFnZ3JlZ2F0ZSBmdW5jdGlvbnMK
ICAgICAvLyBtYXgoKSBhbmQgbWluKCkgYXJlIGFscmVhZHkgaW4gdGhlIGxpc3QKLSAgICBtX3do
aXRlbGlzdGVkRnVuY3Rpb25zLmFkZCgiYXZnIik7Ci0gICAgbV93aGl0ZWxpc3RlZEZ1bmN0aW9u
cy5hZGQoImNvdW50Iik7Ci0gICAgbV93aGl0ZWxpc3RlZEZ1bmN0aW9ucy5hZGQoImdyb3VwX2Nv
bmNhdCIpOwotICAgIG1fd2hpdGVsaXN0ZWRGdW5jdGlvbnMuYWRkKCJzdW0iKTsKLSAgICBtX3do
aXRlbGlzdGVkRnVuY3Rpb25zLmFkZCgidG90YWwiKTsKKyAgICBtX2FsbG93ZWRGdW5jdGlvbnMu
YWRkKCJhdmciKTsKKyAgICBtX2FsbG93ZWRGdW5jdGlvbnMuYWRkKCJjb3VudCIpOworICAgIG1f
YWxsb3dlZEZ1bmN0aW9ucy5hZGQoImdyb3VwX2NvbmNhdCIpOworICAgIG1fYWxsb3dlZEZ1bmN0
aW9ucy5hZGQoInN1bSIpOworICAgIG1fYWxsb3dlZEZ1bmN0aW9ucy5hZGQoInRvdGFsIik7CiAK
ICAgICAvLyBTUUxpdGUgRlRTIGZ1bmN0aW9ucwotICAgIG1fd2hpdGVsaXN0ZWRGdW5jdGlvbnMu
YWRkKCJtYXRjaCIpOwotICAgIG1fd2hpdGVsaXN0ZWRGdW5jdGlvbnMuYWRkKCJzbmlwcGV0Iik7
Ci0gICAgbV93aGl0ZWxpc3RlZEZ1bmN0aW9ucy5hZGQoIm9mZnNldHMiKTsKLSAgICBtX3doaXRl
bGlzdGVkRnVuY3Rpb25zLmFkZCgib3B0aW1pemUiKTsKKyAgICBtX2FsbG93ZWRGdW5jdGlvbnMu
YWRkKCJtYXRjaCIpOworICAgIG1fYWxsb3dlZEZ1bmN0aW9ucy5hZGQoInNuaXBwZXQiKTsKKyAg
ICBtX2FsbG93ZWRGdW5jdGlvbnMuYWRkKCJvZmZzZXRzIik7CisgICAgbV9hbGxvd2VkRnVuY3Rp
b25zLmFkZCgib3B0aW1pemUiKTsKIAogICAgIC8vIFNRTGl0ZSBJQ1UgZnVuY3Rpb25zCiAgICAg
Ly8gbGlrZSgpLCBsb3dlcigpIGFuZCB1cHBlcigpIGFyZSBhbHJlYWR5IGluIHRoZSBsaXN0Ci0g
ICAgbV93aGl0ZWxpc3RlZEZ1bmN0aW9ucy5hZGQoInJlZ2V4cCIpOworICAgIG1fYWxsb3dlZEZ1
bmN0aW9ucy5hZGQoInJlZ2V4cCIpOwogfQogCiBpbnQgRGF0YWJhc2VBdXRob3JpemVyOjpjcmVh
dGVUYWJsZShjb25zdCBTdHJpbmcmIHRhYmxlTmFtZSkKQEAgLTM1OSw3ICszNTksNyBAQCBpbnQg
RGF0YWJhc2VBdXRob3JpemVyOjphbGxvd0RldGFjaChjb25zCiAKIGludCBEYXRhYmFzZUF1dGhv
cml6ZXI6OmFsbG93RnVuY3Rpb24oY29uc3QgU3RyaW5nJiBmdW5jdGlvbk5hbWUpCiB7Ci0gICAg
aWYgKG1fc2VjdXJpdHlFbmFibGVkICYmICFtX3doaXRlbGlzdGVkRnVuY3Rpb25zLmNvbnRhaW5z
KGZ1bmN0aW9uTmFtZSkpCisgICAgaWYgKG1fc2VjdXJpdHlFbmFibGVkICYmICFtX2FsbG93ZWRG
dW5jdGlvbnMuY29udGFpbnMoZnVuY3Rpb25OYW1lKSkKICAgICAgICAgcmV0dXJuIFNRTEF1dGhE
ZW55OwogCiAgICAgcmV0dXJuIFNRTEF1dGhBbGxvdzsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VBdXRob3JpemVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUF1dGhvcml6ZXIuaAkocmV2
aXNpb24gMjYyOTE1KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZUF1dGhvcml6ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTA0LDcgKzEwNCw3IEBAIHB1Ymxp
YzoKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBEYXRhYmFzZUF1dGhvcml6ZXIoY29uc3QgU3Ry
aW5nJiBkYXRhYmFzZUluZm9UYWJsZU5hbWUpOwotICAgIHZvaWQgYWRkV2hpdGVsaXN0ZWRGdW5j
dGlvbnMoKTsKKyAgICB2b2lkIGFkZEFsbG93ZWRGdW5jdGlvbnMoKTsKICAgICBpbnQgZGVueUJh
c2VkT25UYWJsZU5hbWUoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAgICAgaW50IHVwZGF0ZURlbGV0
ZXNCYXNlZE9uVGFibGVOYW1lKGNvbnN0IFN0cmluZyYpOwogICAgIGJvb2wgYWxsb3dXcml0ZSgp
OwpAQCAtMTE3LDcgKzExNyw3IEBAIHByaXZhdGU6CiAKICAgICBjb25zdCBTdHJpbmcgbV9kYXRh
YmFzZUluZm9UYWJsZU5hbWU7CiAKLSAgICBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5z
aXRpdmVIYXNoPiBtX3doaXRlbGlzdGVkRnVuY3Rpb25zOworICAgIEhhc2hTZXQ8U3RyaW5nLCBB
U0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IG1fYWxsb3dlZEZ1bmN0aW9uczsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FeHRlbnNpb25TdHls
ZVNoZWV0cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0V4dGVuc2lvblN0
eWxlU2hlZXRzLmNwcAkocmV2aXNpb24gMjYyOTE1KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0V4
dGVuc2lvblN0eWxlU2hlZXRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ4LDcgKzE0OCw3IEBA
IHZvaWQgRXh0ZW5zaW9uU3R5bGVTaGVldHM6OnVwZGF0ZUluamVjdGUKICAgICAgICAgaWYgKHVz
ZXJTdHlsZVNoZWV0LmluamVjdGVkRnJhbWVzKCkgPT0gVXNlckNvbnRlbnRJbmplY3RlZEZyYW1l
czo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkgJiYgbV9kb2N1bWVudC5vd25lckVsZW1lbnQoKSkKICAg
ICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAoIVVzZXJDb250ZW50VVJMUGF0dGVybjo6
bWF0Y2hlc1BhdHRlcm5zKG1fZG9jdW1lbnQudXJsKCksIHVzZXJTdHlsZVNoZWV0LndoaXRlbGlz
dCgpLCB1c2VyU3R5bGVTaGVldC5ibG9ja2xpc3QoKSkpCisgICAgICAgIGlmICghVXNlckNvbnRl
bnRVUkxQYXR0ZXJuOjptYXRjaGVzUGF0dGVybnMobV9kb2N1bWVudC51cmwoKSwgdXNlclN0eWxl
U2hlZXQuYWxsb3dsaXN0KCksIHVzZXJTdHlsZVNoZWV0LmJsb2NrbGlzdCgpKSkKICAgICAgICAg
ICAgIHJldHVybjsKIAogICAgICAgICBhZGRTdHlsZVNoZWV0KHVzZXJTdHlsZVNoZWV0KTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRy
b2wuY3BwCShyZXZpc2lvbiAyNjI5MTUpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NP
cmlnaW5BY2Nlc3NDb250cm9sLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsMTQgKzQ1LDE0IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotYm9vbCBpc09uQWNjZXNzQ29udHJvbFNpbXBsZVJl
cXVlc3RNZXRob2RXaGl0ZWxpc3QoY29uc3QgU3RyaW5nJiBtZXRob2QpCitib29sIGlzT25BY2Nl
c3NDb250cm9sU2ltcGxlUmVxdWVzdE1ldGhvZEFsbG93bGlzdChjb25zdCBTdHJpbmcmIG1ldGhv
ZCkKIHsKICAgICByZXR1cm4gbWV0aG9kID09ICJHRVQiIHx8IG1ldGhvZCA9PSAiSEVBRCIgfHwg
bWV0aG9kID09ICJQT1NUIjsKIH0KIAogYm9vbCBpc1NpbXBsZUNyb3NzT3JpZ2luQWNjZXNzUmVx
dWVzdChjb25zdCBTdHJpbmcmIG1ldGhvZCwgY29uc3QgSFRUUEhlYWRlck1hcCYgaGVhZGVyTWFw
KQogewotICAgIGlmICghaXNPbkFjY2Vzc0NvbnRyb2xTaW1wbGVSZXF1ZXN0TWV0aG9kV2hpdGVs
aXN0KG1ldGhvZCkpCisgICAgaWYgKCFpc09uQWNjZXNzQ29udHJvbFNpbXBsZVJlcXVlc3RNZXRo
b2RBbGxvd2xpc3QobWV0aG9kKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgZm9yIChj
b25zdCBhdXRvJiBoZWFkZXIgOiBoZWFkZXJNYXApIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmgJKHJldmlzaW9uIDI2MjkxNSkK
KysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuaAkod29y
a2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQCBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIHN0cnVj
dCBSZXNvdXJjZUxvYWRlck9wdGlvbnM7CiAKIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNTaW1wbGVD
cm9zc09yaWdpbkFjY2Vzc1JlcXVlc3QoY29uc3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IEhUVFBI
ZWFkZXJNYXAmKTsKLWJvb2wgaXNPbkFjY2Vzc0NvbnRyb2xTaW1wbGVSZXF1ZXN0TWV0aG9kV2hp
dGVsaXN0KGNvbnN0IFN0cmluZyYpOworYm9vbCBpc09uQWNjZXNzQ29udHJvbFNpbXBsZVJlcXVl
c3RNZXRob2RBbGxvd2xpc3QoY29uc3QgU3RyaW5nJik7CiAKIHZvaWQgdXBkYXRlUmVxdWVzdFJl
ZmVycmVyKFJlc291cmNlUmVxdWVzdCYsIFJlZmVycmVyUG9saWN5LCBjb25zdCBTdHJpbmcmKTsK
ICAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodFJl
c3VsdENhY2hlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NP
cmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5jcHAJKHJldmlzaW9uIDI2MjkxNSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtODQsNyArODQsNyBAQCBPcHRpb25hbDxTdHJpbmc+IENyb3NzT3JpZ2lu
UHJlZmxpZ2h0UmVzCiAKIGJvb2wgQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZUl0ZW06
OmFsbG93c0Nyb3NzT3JpZ2luTWV0aG9kKGNvbnN0IFN0cmluZyYgbWV0aG9kLCBTdG9yZWRDcmVk
ZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSkgY29uc3QKIHsKLSAgICByZXR1
cm4gbV9tZXRob2RzLmNvbnRhaW5zKG1ldGhvZCkgfHwgKG1fbWV0aG9kcy5jb250YWlucygiKiIp
ICYmIHN0b3JlZENyZWRlbnRpYWxzUG9saWN5ICE9IFN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpV
c2UpIHx8IGlzT25BY2Nlc3NDb250cm9sU2ltcGxlUmVxdWVzdE1ldGhvZFdoaXRlbGlzdChtZXRo
b2QpOworICAgIHJldHVybiBtX21ldGhvZHMuY29udGFpbnMobWV0aG9kKSB8fCAobV9tZXRob2Rz
LmNvbnRhaW5zKCIqIikgJiYgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgIT0gU3RvcmVkQ3JlZGVu
dGlhbHNQb2xpY3k6OlVzZSkgfHwgaXNPbkFjY2Vzc0NvbnRyb2xTaW1wbGVSZXF1ZXN0TWV0aG9k
QWxsb3dsaXN0KG1ldGhvZCk7CiB9CiAKIE9wdGlvbmFsPFN0cmluZz4gQ3Jvc3NPcmlnaW5QcmVm
bGlnaHRSZXN1bHRDYWNoZUl0ZW06OnZhbGlkYXRlQ3Jvc3NPcmlnaW5IZWFkZXJzKGNvbnN0IEhU
VFBIZWFkZXJNYXAmIHJlcXVlc3RIZWFkZXJzLCBTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9y
ZWRDcmVkZW50aWFsc1BvbGljeSkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZS5jcHAJKHJldmlzaW9uIDI2MjkxNSkK
KysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTI0LDE2ICsxMjQsMTYgQEAgQXBwbGljYXRpb25DYWNoZVJlc291
cmNlKiBBcHBsaWNhdGlvbkNhYwogICAgIHJldHVybiByZXNvdXJjZUZvclVSTCh1cmwuc3RyaW5n
KCkpOwogfQogCi12b2lkIEFwcGxpY2F0aW9uQ2FjaGU6OnNldE9ubGluZVdoaXRlbGlzdChjb25z
dCBWZWN0b3I8VVJMPiYgb25saW5lV2hpdGVsaXN0KQordm9pZCBBcHBsaWNhdGlvbkNhY2hlOjpz
ZXRPbmxpbmVBbGxvd2xpc3QoY29uc3QgVmVjdG9yPFVSTD4mIG9ubGluZUFsbG93bGlzdCkKIHsK
LSAgICBBU1NFUlQobV9vbmxpbmVXaGl0ZWxpc3QuaXNFbXB0eSgpKTsKLSAgICBtX29ubGluZVdo
aXRlbGlzdCA9IG9ubGluZVdoaXRlbGlzdDsgCisgICAgQVNTRVJUKG1fb25saW5lQWxsb3dsaXN0
LmlzRW1wdHkoKSk7CisgICAgbV9vbmxpbmVBbGxvd2xpc3QgPSBvbmxpbmVBbGxvd2xpc3Q7CiB9
CiAKLWJvb2wgQXBwbGljYXRpb25DYWNoZTo6aXNVUkxJbk9ubGluZVdoaXRlbGlzdChjb25zdCBV
UkwmIHVybCkKK2Jvb2wgQXBwbGljYXRpb25DYWNoZTo6aXNVUkxJbk9ubGluZUFsbG93bGlzdChj
b25zdCBVUkwmIHVybCkKIHsKLSAgICBmb3IgKGF1dG8mIHdoaXRlbGlzdFVSTCA6IG1fb25saW5l
V2hpdGVsaXN0KSB7Ci0gICAgICAgIGlmIChwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwodXJs
LCB3aGl0ZWxpc3RVUkwpICYmIHVybC5zdHJpbmcoKS5zdGFydHNXaXRoKHdoaXRlbGlzdFVSTC5z
dHJpbmcoKSkpCisgICAgZm9yIChhdXRvJiBhbGxvd2xpc3RVUkwgOiBtX29ubGluZUFsbG93bGlz
dCkgeworICAgICAgICBpZiAocHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKHVybCwgYWxsb3ds
aXN0VVJMKSAmJiB1cmwuc3RyaW5nKCkuc3RhcnRzV2l0aChhbGxvd2xpc3RVUkwuc3RyaW5nKCkp
KQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGUuaAkocmV2aXNpb24gMjYyOTE1KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTgsOSArNTgsOSBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIHNldEFsbG93c0FsbE5ldHdvcmtSZXF1ZXN0cyhib29sIHZhbHVlKSB7
IG1fYWxsb3dBbGxOZXR3b3JrUmVxdWVzdHMgPSB2YWx1ZTsgfQogICAgIGJvb2wgYWxsb3dzQWxs
TmV0d29ya1JlcXVlc3RzKCkgY29uc3QgeyByZXR1cm4gbV9hbGxvd0FsbE5ldHdvcmtSZXF1ZXN0
czsgfQotICAgIHZvaWQgc2V0T25saW5lV2hpdGVsaXN0KGNvbnN0IFZlY3RvcjxVUkw+JiBvbmxp
bmVXaGl0ZWxpc3QpOwotICAgIGNvbnN0IFZlY3RvcjxVUkw+JiBvbmxpbmVXaGl0ZWxpc3QoKSBj
b25zdCB7IHJldHVybiBtX29ubGluZVdoaXRlbGlzdDsgfQotICAgIGJvb2wgaXNVUkxJbk9ubGlu
ZVdoaXRlbGlzdChjb25zdCBVUkwmKTsgLy8gVGhlcmUgaXMgYW4gZW50cnkgaW4gb25saW5lIHdo
aXRlbGlzdCB0aGF0IGhhcyB0aGUgc2FtZSBvcmlnaW4gYXMgdGhlIHJlc291cmNlJ3MgVVJMIGFu
ZCB0aGF0IGlzIGEgcHJlZml4IG1hdGNoIGZvciB0aGUgcmVzb3VyY2UncyBVUkwuCisgICAgdm9p
ZCBzZXRPbmxpbmVBbGxvd2xpc3QoY29uc3QgVmVjdG9yPFVSTD4mKTsKKyAgICBjb25zdCBWZWN0
b3I8VVJMPiYgb25saW5lQWxsb3dsaXN0KCkgY29uc3QgeyByZXR1cm4gbV9vbmxpbmVBbGxvd2xp
c3Q7IH0KKyAgICBib29sIGlzVVJMSW5PbmxpbmVBbGxvd2xpc3QoY29uc3QgVVJMJik7IC8vIFRo
ZXJlIGlzIGFuIGVudHJ5IGluIG9ubGluZSBhbGxvd2xpc3QgdGhhdCBoYXMgdGhlIHNhbWUgb3Jp
Z2luIGFzIHRoZSByZXNvdXJjZSdzIFVSTCBhbmQgdGhhdCBpcyBhIHByZWZpeCBtYXRjaCBmb3Ig
dGhlIHJlc291cmNlJ3MgVVJMLgogCiAgICAgdm9pZCBzZXRGYWxsYmFja1VSTHMoY29uc3QgRmFs
bGJhY2tVUkxWZWN0b3ImKTsKICAgICBjb25zdCBGYWxsYmFja1VSTFZlY3RvciYgZmFsbGJhY2tV
UkxzKCkgY29uc3QgeyByZXR1cm4gbV9mYWxsYmFja1VSTHM7IH0KQEAgLTg5LDcgKzg5LDcgQEAg
cHJpdmF0ZToKICAgICBXZWFrUHRyPEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT4gbV9tYW5pZmVz
dDsKIAogICAgIGJvb2wgbV9hbGxvd0FsbE5ldHdvcmtSZXF1ZXN0cyB7IGZhbHNlIH07Ci0gICAg
VmVjdG9yPFVSTD4gbV9vbmxpbmVXaGl0ZWxpc3Q7CisgICAgVmVjdG9yPFVSTD4gbV9vbmxpbmVB
bGxvd2xpc3Q7CiAgICAgRmFsbGJhY2tVUkxWZWN0b3IgbV9mYWxsYmFja1VSTHM7CiAKICAgICAv
LyBUaGUgdG90YWwgc2l6ZSBvZiB0aGUgcmVzb3VyY2VzIGJlbG9uZ2luZyB0byB0aGlzIEFwcGxp
Y2F0aW9uIENhY2hlIGluc3RhbmNlLgpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAJKHJldmlzaW9uIDI2
MjkxNSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
R3JvdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NDEsNyArNjQxLDcgQEAgdm9pZCBBcHBsaWNh
dGlvbkNhY2hlR3JvdXA6OmRpZEZpbmlzaExvYQogICAgIGZvciAoYXV0byYgZmFsbGJhY2tVUkwg
OiBtYW5pZmVzdC5mYWxsYmFja1VSTHMpCiAgICAgICAgIGFkZEVudHJ5KGZhbGxiYWNrVVJMLnNl
Y29uZC5zdHJpbmcoKSwgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpGYWxsYmFjayk7CiAgICAg
Ci0gICAgbV9jYWNoZUJlaW5nVXBkYXRlZC0+c2V0T25saW5lV2hpdGVsaXN0KG1hbmlmZXN0Lm9u
bGluZVdoaXRlbGlzdGVkVVJMcyk7CisgICAgbV9jYWNoZUJlaW5nVXBkYXRlZC0+c2V0T25saW5l
QWxsb3dsaXN0KG1hbmlmZXN0Lm9ubGluZUFsbG93ZWRVUkxzKTsKICAgICBtX2NhY2hlQmVpbmdV
cGRhdGVkLT5zZXRGYWxsYmFja1VSTHMobWFuaWZlc3QuZmFsbGJhY2tVUkxzKTsKICAgICBtX2Nh
Y2hlQmVpbmdVcGRhdGVkLT5zZXRBbGxvd3NBbGxOZXR3b3JrUmVxdWVzdHMobWFuaWZlc3QuYWxs
b3dBbGxOZXR3b3JrUmVxdWVzdHMpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAJKHJldmlzaW9uIDI2
MjkxNSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
SG9zdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzMCw5ICs0MzAsOSBAQCBib29sIEFwcGxpY2F0
aW9uQ2FjaGVIb3N0OjpzaG91bGRMb2FkUmVzCiAgICAgLy8gaW4gdGhlIGFwcGxpY2F0aW9uIGNh
Y2hlLCB0aGVuIGdldCB0aGUgcmVzb3VyY2UgZnJvbSB0aGUgY2FjaGUgKGluc3RlYWQgb2YgZmV0
Y2hpbmcgaXQpLgogICAgIHJlc291cmNlID0gY2FjaGUtPnJlc291cmNlRm9yVVJMKHJlcXVlc3Qu
dXJsKCkuc3RyaW5nKCkpOwogCi0gICAgLy8gUmVzb3VyY2VzIHRoYXQgbWF0Y2ggZmFsbGJhY2sg
bmFtZXNwYWNlcyBvciBvbmxpbmUgd2hpdGVsaXN0IGVudHJpZXMgYXJlIGZldGNoZWQgZnJvbSB0
aGUgbmV0d29yaywKKyAgICAvLyBSZXNvdXJjZXMgdGhhdCBtYXRjaCBmYWxsYmFjayBuYW1lc3Bh
Y2VzIG9yIG9ubGluZSBhbGxvd2xpc3QgZW50cmllcyBhcmUgZmV0Y2hlZCBmcm9tIHRoZSBuZXR3
b3JrLAogICAgIC8vIHVubGVzcyB0aGV5IGFyZSBhbHNvIGNhY2hlZC4KLSAgICBpZiAoIXJlc291
cmNlICYmIChjYWNoZS0+YWxsb3dzQWxsTmV0d29ya1JlcXVlc3RzKCkgfHwgY2FjaGUtPnVybE1h
dGNoZXNGYWxsYmFja05hbWVzcGFjZShyZXF1ZXN0LnVybCgpKSB8fCBjYWNoZS0+aXNVUkxJbk9u
bGluZVdoaXRlbGlzdChyZXF1ZXN0LnVybCgpKSkpCisgICAgaWYgKCFyZXNvdXJjZSAmJiAoY2Fj
aGUtPmFsbG93c0FsbE5ldHdvcmtSZXF1ZXN0cygpIHx8IGNhY2hlLT51cmxNYXRjaGVzRmFsbGJh
Y2tOYW1lc3BhY2UocmVxdWVzdC51cmwoKSkgfHwgY2FjaGUtPmlzVVJMSW5PbmxpbmVBbGxvd2xp
c3QocmVxdWVzdC51cmwoKSkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBSZXNv
dXJjZXMgdGhhdCBhcmUgbm90IHByZXNlbnQgaW4gdGhlIG1hbmlmZXN0IHdpbGwgYWx3YXlzIGZh
aWwgdG8gbG9hZCAoYXQgbGVhc3QsIGFmdGVyIHRoZQpAQCAtNDU1LDcgKzQ1NSw3IEBAIGJvb2wg
QXBwbGljYXRpb25DYWNoZUhvc3Q6OmdldEFwcGxpY2F0aW8KICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgVVJMIGZhbGxiYWNrVVJMOwotICAgIGlmIChjYWNoZS0+aXNVUkxJbk9ubGluZVdo
aXRlbGlzdChyZXF1ZXN0LnVybCgpKSkKKyAgICBpZiAoY2FjaGUtPmlzVVJMSW5PbmxpbmVBbGxv
d2xpc3QocmVxdWVzdC51cmwoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWNh
Y2hlLT51cmxNYXRjaGVzRmFsbGJhY2tOYW1lc3BhY2UocmVxdWVzdC51cmwoKSwgJmZhbGxiYWNr
VVJMKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCShy
ZXZpc2lvbiAyNjI5MTUpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjUsNyArMjY1LDcgQEAg
QXBwbGljYXRpb25DYWNoZUdyb3VwKiBBcHBsaWNhdGlvbkNhY2hlUwogCiAgICAgICAgIGlmIChB
cHBsaWNhdGlvbkNhY2hlKiBjYWNoZSA9IGdyb3VwLT5uZXdlc3RDYWNoZSgpKSB7CiAgICAgICAg
ICAgICBVUkwgZmFsbGJhY2tVUkw7Ci0gICAgICAgICAgICBpZiAoY2FjaGUtPmlzVVJMSW5Pbmxp
bmVXaGl0ZWxpc3QodXJsKSkKKyAgICAgICAgICAgIGlmIChjYWNoZS0+aXNVUkxJbk9ubGluZUFs
bG93bGlzdCh1cmwpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgaWYg
KCFjYWNoZS0+dXJsTWF0Y2hlc0ZhbGxiYWNrTmFtZXNwYWNlKHVybCwgJmZhbGxiYWNrVVJMKSkK
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTMwMCw3ICszMDAsNyBAQCBBcHBsaWNhdGlv
bkNhY2hlR3JvdXAqIEFwcGxpY2F0aW9uQ2FjaGVTCiAgICAgICAgIGF1dG8gY2FjaGUgPSBsb2Fk
Q2FjaGUobmV3ZXN0Q2FjaGVJRCk7CiAKICAgICAgICAgVVJMIGZhbGxiYWNrVVJMOwotICAgICAg
ICBpZiAoY2FjaGUtPmlzVVJMSW5PbmxpbmVXaGl0ZWxpc3QodXJsKSkKKyAgICAgICAgaWYgKGNh
Y2hlLT5pc1VSTEluT25saW5lQWxsb3dsaXN0KHVybCkpCiAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgaWYgKCFjYWNoZS0+dXJsTWF0Y2hlc0ZhbGxiYWNrTmFtZXNwYWNlKHVybCwgJmZh
bGxiYWNrVVJMKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtNjE2LDcgKzYxNiw3IEBAIHZv
aWQgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6Om9wZW5EYXRhYmEKICAgICBleGVjdXRlU1FMQ29t
bWFuZCgiQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgRGVsZXRlZENhY2hlUmVzb3VyY2VzIChp
ZCBJTlRFR0VSIFBSSU1BUlkgS0VZIEFVVE9JTkNSRU1FTlQsIHBhdGggVEVYVCkiKTsKICAgICBl
eGVjdXRlU1FMQ29tbWFuZCgiQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgT3JpZ2lucyAob3Jp
Z2luIFRFWFQgVU5JUVVFIE9OIENPTkZMSUNUIElHTk9SRSwgcXVvdGEgSU5URUdFUiBOT1QgTlVM
TCBPTiBDT05GTElDVCBGQUlMKSIpOwogCi0gICAgLy8gV2hlbiBhIGNhY2hlIGlzIGRlbGV0ZWQs
IGFsbCBpdHMgZW50cmllcyBhbmQgaXRzIHdoaXRlbGlzdCBzaG91bGQgYmUgZGVsZXRlZC4KKyAg
ICAvLyBXaGVuIGEgY2FjaGUgaXMgZGVsZXRlZCwgYWxsIGl0cyBlbnRyaWVzIGFuZCBpdHMgYWxs
b3dsaXN0IHNob3VsZCBiZSBkZWxldGVkLgogICAgIGV4ZWN1dGVTUUxDb21tYW5kKCJDUkVBVEUg
VFJJR0dFUiBJRiBOT1QgRVhJU1RTIENhY2hlRGVsZXRlZCBBRlRFUiBERUxFVEUgT04gQ2FjaGVz
IgogICAgICAgICAgICAgICAgICAgICAgICIgRk9SIEVBQ0ggUk9XIEJFR0lOIgogICAgICAgICAg
ICAgICAgICAgICAgICIgIERFTEVURSBGUk9NIENhY2hlRW50cmllcyBXSEVSRSBjYWNoZSA9IE9M
RC5pZDsiCkBAIC03MjEsMTQgKzcyMSwxNCBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
OjpzdG9yZShBcHBsCiAgICAgICAgIHN0b3JhZ2VJREpvdXJuYWwtPmFkZChyZXNvdXJjZS5nZXQo
KSwgb2xkU3RvcmFnZUlEKTsKICAgICB9CiAgICAgCi0gICAgLy8gU3RvcmUgdGhlIG9ubGluZSB3
aGl0ZWxpc3QKLSAgICBjb25zdCBWZWN0b3I8VVJMPiYgb25saW5lV2hpdGVsaXN0ID0gY2FjaGUt
Pm9ubGluZVdoaXRlbGlzdCgpOworICAgIC8vIFN0b3JlIHRoZSBvbmxpbmUgYWxsb3dsaXN0Cisg
ICAgY29uc3QgVmVjdG9yPFVSTD4mIG9ubGluZUFsbG93bGlzdCA9IGNhY2hlLT5vbmxpbmVBbGxv
d2xpc3QoKTsKICAgICB7Ci0gICAgICAgIGZvciAoYXV0byYgd2hpdGVsaXN0VVJMIDogb25saW5l
V2hpdGVsaXN0KSB7CisgICAgICAgIGZvciAoYXV0byYgYWxsb3dsaXN0VVJMIDogb25saW5lQWxs
b3dsaXN0KSB7CiAgICAgICAgICAgICBTUUxpdGVTdGF0ZW1lbnQgc3RhdGVtZW50KG1fZGF0YWJh
c2UsICJJTlNFUlQgSU5UTyBDYWNoZVdoaXRlbGlzdFVSTHMgKHVybCwgY2FjaGUpIFZBTFVFUyAo
PywgPykiKTsKICAgICAgICAgICAgIHN0YXRlbWVudC5wcmVwYXJlKCk7CiAKLSAgICAgICAgICAg
IHN0YXRlbWVudC5iaW5kVGV4dCgxLCB3aGl0ZWxpc3RVUkwuc3RyaW5nKCkpOworICAgICAgICAg
ICAgc3RhdGVtZW50LmJpbmRUZXh0KDEsIGFsbG93bGlzdFVSTC5zdHJpbmcoKSk7CiAgICAgICAg
ICAgICBzdGF0ZW1lbnQuYmluZEludDY0KDIsIGNhY2hlU3RvcmFnZUlEKTsKIAogICAgICAgICAg
ICAgaWYgKCFleGVjdXRlU3RhdGVtZW50KHN0YXRlbWVudCkpCkBAIC03MzYsNyArNzM2LDcgQEAg
Ym9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUoQXBwbAogICAgICAgICB9CiAgICAg
fQogCi0gICAgLy8gU3RvcmUgb25saW5lIHdoaXRlbGlzdCB3aWxkY2FyZCBmbGFnLgorICAgIC8v
IFN0b3JlIG9ubGluZSBhbGxvd2xpc3Qgd2lsZGNhcmQgZmxhZy4KICAgICB7CiAgICAgICAgIFNR
TGl0ZVN0YXRlbWVudCBzdGF0ZW1lbnQobV9kYXRhYmFzZSwgIklOU0VSVCBJTlRPIENhY2hlQWxs
b3dzQWxsTmV0d29ya1JlcXVlc3RzICh3aWxkY2FyZCwgY2FjaGUpIFZBTFVFUyAoPywgPykiKTsK
ICAgICAgICAgc3RhdGVtZW50LnByZXBhcmUoKTsKQEAgLTExNTQsMzUgKzExNTQsMzUgQEAgUmVm
UHRyPEFwcGxpY2F0aW9uQ2FjaGU+IEFwcGxpY2F0aW9uQ2FjaAogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICB9CiAKLSAgICAvLyBMb2FkIHRoZSBvbmxpbmUgd2hpdGVsaXN0Ci0gICAgU1FM
aXRlU3RhdGVtZW50IHdoaXRlbGlzdFN0YXRlbWVudChtX2RhdGFiYXNlLCAiU0VMRUNUIHVybCBG
Uk9NIENhY2hlV2hpdGVsaXN0VVJMcyBXSEVSRSBjYWNoZT0/Iik7Ci0gICAgaWYgKHdoaXRlbGlz
dFN0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LKQorICAgIC8vIExvYWQgdGhlIG9ubGlu
ZSBhbGxvd2xpc3QKKyAgICBTUUxpdGVTdGF0ZW1lbnQgYWxsb3dsaXN0U3RhdGVtZW50KG1fZGF0
YWJhc2UsICJTRUxFQ1QgdXJsIEZST00gQ2FjaGVXaGl0ZWxpc3RVUkxzIFdIRVJFIGNhY2hlPT8i
KTsKKyAgICBpZiAoYWxsb3dsaXN0U3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0spCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHdoaXRlbGlzdFN0YXRlbWVudC5iaW5kSW50NjQo
MSwgc3RvcmFnZUlEKTsKKyAgICBhbGxvd2xpc3RTdGF0ZW1lbnQuYmluZEludDY0KDEsIHN0b3Jh
Z2VJRCk7CiAgICAgCi0gICAgVmVjdG9yPFVSTD4gd2hpdGVsaXN0OwotICAgIHdoaWxlICgocmVz
dWx0ID0gd2hpdGVsaXN0U3RhdGVtZW50LnN0ZXAoKSkgPT0gU1FMSVRFX1JPVykgCi0gICAgICAg
IHdoaXRlbGlzdC5hcHBlbmQoVVJMKHsgfSwgd2hpdGVsaXN0U3RhdGVtZW50LmdldENvbHVtblRl
eHQoMCkpKTsKKyAgICBWZWN0b3I8VVJMPiBhbGxvd2xpc3Q7CisgICAgd2hpbGUgKChyZXN1bHQg
PSBhbGxvd2xpc3RTdGF0ZW1lbnQuc3RlcCgpKSA9PSBTUUxJVEVfUk9XKQorICAgICAgICBhbGxv
d2xpc3QuYXBwZW5kKFVSTCh7IH0sIGFsbG93bGlzdFN0YXRlbWVudC5nZXRDb2x1bW5UZXh0KDAp
KSk7CiAKICAgICBpZiAocmVzdWx0ICE9IFNRTElURV9ET05FKQotICAgICAgICBMT0dfRVJST1Io
IkNvdWxkIG5vdCBsb2FkIGNhY2hlIG9ubGluZSB3aGl0ZWxpc3QsIGVycm9yIFwiJXNcIiIsIG1f
ZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBs
b2FkIGNhY2hlIG9ubGluZSBhbGxvd2xpc3QsIGVycm9yIFwiJXNcIiIsIG1fZGF0YWJhc2UubGFz
dEVycm9yTXNnKCkpOwogCi0gICAgY2FjaGUtPnNldE9ubGluZVdoaXRlbGlzdCh3aGl0ZWxpc3Qp
OworICAgIGNhY2hlLT5zZXRPbmxpbmVBbGxvd2xpc3QoYWxsb3dsaXN0KTsKIAotICAgIC8vIExv
YWQgb25saW5lIHdoaXRlbGlzdCB3aWxkY2FyZCBmbGFnLgotICAgIFNRTGl0ZVN0YXRlbWVudCB3
aGl0ZWxpc3RXaWxkY2FyZFN0YXRlbWVudChtX2RhdGFiYXNlLCAiU0VMRUNUIHdpbGRjYXJkIEZS
T00gQ2FjaGVBbGxvd3NBbGxOZXR3b3JrUmVxdWVzdHMgV0hFUkUgY2FjaGU9PyIpOwotICAgIGlm
ICh3aGl0ZWxpc3RXaWxkY2FyZFN0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LKQorICAg
IC8vIExvYWQgb25saW5lIGFsbG93bGlzdCB3aWxkY2FyZCBmbGFnLgorICAgIFNRTGl0ZVN0YXRl
bWVudCBhbGxvd2xpc3RXaWxkY2FyZFN0YXRlbWVudChtX2RhdGFiYXNlLCAiU0VMRUNUIHdpbGRj
YXJkIEZST00gQ2FjaGVBbGxvd3NBbGxOZXR3b3JrUmVxdWVzdHMgV0hFUkUgY2FjaGU9PyIpOwor
ICAgIGlmIChhbGxvd2xpc3RXaWxkY2FyZFN0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMSVRFX09L
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB3aGl0ZWxpc3RXaWxkY2FyZFN0YXRlbWVu
dC5iaW5kSW50NjQoMSwgc3RvcmFnZUlEKTsKKyAgICBhbGxvd2xpc3RXaWxkY2FyZFN0YXRlbWVu
dC5iaW5kSW50NjQoMSwgc3RvcmFnZUlEKTsKICAgICAKLSAgICByZXN1bHQgPSB3aGl0ZWxpc3RX
aWxkY2FyZFN0YXRlbWVudC5zdGVwKCk7CisgICAgcmVzdWx0ID0gYWxsb3dsaXN0V2lsZGNhcmRT
dGF0ZW1lbnQuc3RlcCgpOwogICAgIGlmIChyZXN1bHQgIT0gU1FMSVRFX1JPVykKLSAgICAgICAg
TE9HX0VSUk9SKCJDb3VsZCBub3QgbG9hZCBjYWNoZSBvbmxpbmUgd2hpdGVsaXN0IHdpbGRjYXJk
IGZsYWcsIGVycm9yIFwiJXNcIiIsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAg
ICBMT0dfRVJST1IoIkNvdWxkIG5vdCBsb2FkIGNhY2hlIG9ubGluZSBhbGxvd2xpc3Qgd2lsZGNh
cmQgZmxhZywgZXJyb3IgXCIlc1wiIiwgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAKLSAg
ICBjYWNoZS0+c2V0QWxsb3dzQWxsTmV0d29ya1JlcXVlc3RzKHdoaXRlbGlzdFdpbGRjYXJkU3Rh
dGVtZW50LmdldENvbHVtbkludDY0KDApKTsKKyAgICBjYWNoZS0+c2V0QWxsb3dzQWxsTmV0d29y
a1JlcXVlc3RzKGFsbG93bGlzdFdpbGRjYXJkU3RhdGVtZW50LmdldENvbHVtbkludDY0KDApKTsK
IAotICAgIGlmICh3aGl0ZWxpc3RXaWxkY2FyZFN0YXRlbWVudC5zdGVwKCkgIT0gU1FMSVRFX0RP
TkUpCi0gICAgICAgIExPR19FUlJPUigiVG9vIG1hbnkgcm93cyBmb3Igb25saW5lIHdoaXRlbGlz
dCB3aWxkY2FyZCBmbGFnIik7CisgICAgaWYgKGFsbG93bGlzdFdpbGRjYXJkU3RhdGVtZW50LnN0
ZXAoKSAhPSBTUUxJVEVfRE9ORSkKKyAgICAgICAgTE9HX0VSUk9SKCJUb28gbWFueSByb3dzIGZv
ciBvbmxpbmUgYWxsb3dsaXN0IHdpbGRjYXJkIGZsYWciKTsKIAogICAgIC8vIExvYWQgZmFsbGJh
Y2sgVVJMcy4KICAgICBTUUxpdGVTdGF0ZW1lbnQgZmFsbGJhY2tTdGF0ZW1lbnQobV9kYXRhYmFz
ZSwgIlNFTEVDVCBuYW1lc3BhY2UsIGZhbGxiYWNrVVJMIEZST00gRmFsbGJhY2tVUkxzIFdIRVJF
IGNhY2hlPT8iKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9NYW5pZmVz
dFBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L01hbmlmZXN0UGFyc2VyLmNwcAkocmV2aXNpb24gMjYyOTE1KQorKysgU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL01hbmlmZXN0UGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMs
NyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWVudW0gTW9kZSB7IEV4cGxpY2l0
LCBGYWxsYmFjaywgT25saW5lV2hpdGVsaXN0LCBVbmtub3duIH07CitlbnVtIE1vZGUgeyBFeHBs
aWNpdCwgRmFsbGJhY2ssIE9ubGluZUFsbG93bGlzdCwgVW5rbm93biB9OwogCiBzdGF0aWMgU3Ry
aW5nVmlldyBtYW5pZmVzdFBhdGgoY29uc3QgVVJMJiBtYW5pZmVzdFVSTCkKIHsKQEAgLTQ3LDcg
KzQ3LDcgQEAgc3RhdGljIFN0cmluZ1ZpZXcgbWFuaWZlc3RQYXRoKGNvbnN0IFVSTAogYm9vbCBw
YXJzZU1hbmlmZXN0KGNvbnN0IFVSTCYgbWFuaWZlc3RVUkwsIGNvbnN0IFN0cmluZyYgbWFuaWZl
c3RNSU1FVHlwZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCwgTWFuaWZlc3QmIG1hbmlm
ZXN0KQogewogICAgIEFTU0VSVChtYW5pZmVzdC5leHBsaWNpdFVSTHMuaXNFbXB0eSgpKTsKLSAg
ICBBU1NFUlQobWFuaWZlc3Qub25saW5lV2hpdGVsaXN0ZWRVUkxzLmlzRW1wdHkoKSk7CisgICAg
QVNTRVJUKG1hbmlmZXN0Lm9ubGluZUFsbG93ZWRVUkxzLmlzRW1wdHkoKSk7CiAgICAgQVNTRVJU
KG1hbmlmZXN0LmZhbGxiYWNrVVJMcy5pc0VtcHR5KCkpOwogICAgIG1hbmlmZXN0LmFsbG93QWxs
TmV0d29ya1JlcXVlc3RzID0gZmFsc2U7CiAKQEAgLTEwOSwxMiArMTA5LDEyIEBAIGJvb2wgcGFy
c2VNYW5pZmVzdChjb25zdCBVUkwmIG1hbmlmZXN0VVIKICAgICAgICAgZWxzZSBpZiAobGluZSA9
PSAiRkFMTEJBQ0s6IikKICAgICAgICAgICAgIG1vZGUgPSBGYWxsYmFjazsKICAgICAgICAgZWxz
ZSBpZiAobGluZSA9PSAiTkVUV09SSzoiKQotICAgICAgICAgICAgbW9kZSA9IE9ubGluZVdoaXRl
bGlzdDsKKyAgICAgICAgICAgIG1vZGUgPSBPbmxpbmVBbGxvd2xpc3Q7CiAgICAgICAgIGVsc2Ug
aWYgKGxpbmUuZW5kc1dpdGgoJzonKSkKICAgICAgICAgICAgIG1vZGUgPSBVbmtub3duOwogICAg
ICAgICBlbHNlIGlmIChtb2RlID09IFVua25vd24pCiAgICAgICAgICAgICBjb250aW51ZTsKLSAg
ICAgICAgZWxzZSBpZiAobW9kZSA9PSBFeHBsaWNpdCB8fCBtb2RlID09IE9ubGluZVdoaXRlbGlz
dCkgeworICAgICAgICBlbHNlIGlmIChtb2RlID09IEV4cGxpY2l0IHx8IG1vZGUgPT0gT25saW5l
QWxsb3dsaXN0KSB7CiAgICAgICAgICAgICBhdXRvIHVwY29udmVydGVkTGluZUNoYXJhY3RlcnMg
PSBTdHJpbmdWaWV3KGxpbmUpLnVwY29udmVydGVkQ2hhcmFjdGVycygpOwogICAgICAgICAgICAg
Y29uc3QgVUNoYXIqIHAgPSB1cGNvbnZlcnRlZExpbmVDaGFyYWN0ZXJzOwogICAgICAgICAgICAg
Y29uc3QgVUNoYXIqIGxpbmVFbmQgPSBwICsgbGluZS5sZW5ndGgoKTsKQEAgLTEyMyw3ICsxMjMs
NyBAQCBib29sIHBhcnNlTWFuaWZlc3QoY29uc3QgVVJMJiBtYW5pZmVzdFVSCiAgICAgICAgICAg
ICB3aGlsZSAocCA8IGxpbmVFbmQgJiYgKnAgIT0gJ1x0JyAmJiAqcCAhPSAnICcpIAogICAgICAg
ICAgICAgICAgIHArKzsKIAotICAgICAgICAgICAgaWYgKG1vZGUgPT0gT25saW5lV2hpdGVsaXN0
ICYmIHAgLSB1cGNvbnZlcnRlZExpbmVDaGFyYWN0ZXJzID09IDEgJiYgbGluZVswXSA9PSAnKicp
IHsKKyAgICAgICAgICAgIGlmIChtb2RlID09IE9ubGluZUFsbG93bGlzdCAmJiBwIC0gdXBjb252
ZXJ0ZWRMaW5lQ2hhcmFjdGVycyA9PSAxICYmIGxpbmVbMF0gPT0gJyonKSB7CiAgICAgICAgICAg
ICAgICAgLy8gV2lsZGNhcmQgd2FzIGZvdW5kLgogICAgICAgICAgICAgICAgIG1hbmlmZXN0LmFs
bG93QWxsTmV0d29ya1JlcXVlc3RzID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBjb250aW51ZTsK
QEAgLTE0NSw3ICsxNDUsNyBAQCBib29sIHBhcnNlTWFuaWZlc3QoY29uc3QgVVJMJiBtYW5pZmVz
dFVSCiAgICAgICAgICAgICBpZiAobW9kZSA9PSBFeHBsaWNpdCkKICAgICAgICAgICAgICAgICBt
YW5pZmVzdC5leHBsaWNpdFVSTHMuYWRkKHVybC5zdHJpbmcoKSk7CiAgICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgbWFuaWZlc3Qub25saW5lV2hpdGVsaXN0ZWRVUkxzLmFwcGVuZCh1
cmwpOworICAgICAgICAgICAgICAgIG1hbmlmZXN0Lm9ubGluZUFsbG93ZWRVUkxzLmFwcGVuZCh1
cmwpOwogICAgICAgICAgICAgCiAgICAgICAgIH0gZWxzZSBpZiAobW9kZSA9PSBGYWxsYmFjaykg
ewogICAgICAgICAgICAgYXV0byB1cGNvbnZlcnRlZExpbmVDaGFyYWN0ZXJzID0gU3RyaW5nVmll
dyhsaW5lKS51cGNvbnZlcnRlZENoYXJhY3RlcnMoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9NYW5pZmVzdFBhcnNlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9NYW5pZmVzdFBhcnNlci5oCShyZXZpc2lvbiAyNjI5MTUpCisr
KyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvTWFuaWZlc3RQYXJzZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3Qg
TWFuaWZlc3QgewotICAgIFZlY3RvcjxVUkw+IG9ubGluZVdoaXRlbGlzdGVkVVJMczsKKyAgICBW
ZWN0b3I8VVJMPiBvbmxpbmVBbGxvd2VkVVJMczsKICAgICBIYXNoU2V0PFN0cmluZz4gZXhwbGlj
aXRVUkxzOwogICAgIEZhbGxiYWNrVVJMVmVjdG9yIGZhbGxiYWNrVVJMczsKICAgICBib29sIGFs
bG93QWxsTmV0d29ya1JlcXVlc3RzOyAvLyBXaWxkY2FyZCBmb3VuZCBpbiBORVRXT1JLIHNlY3Rp
b24uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAkocmV2aXNpb24gMjYyOTE1KQorKysgU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3MSw3ICs2NzEsNyBA
QCB2b2lkIEZyYW1lOjppbmplY3RVc2VyU2NyaXB0SW1tZWRpYXRlbHkoCiAgICAgICAgIHJldHVy
bjsKICAgICBpZiAoc2NyaXB0LmluamVjdGVkRnJhbWVzKCkgPT0gVXNlckNvbnRlbnRJbmplY3Rl
ZEZyYW1lczo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkgJiYgIWlzTWFpbkZyYW1lKCkpCiAgICAgICAg
IHJldHVybjsKLSAgICBpZiAoIVVzZXJDb250ZW50VVJMUGF0dGVybjo6bWF0Y2hlc1BhdHRlcm5z
KGRvY3VtZW50LT51cmwoKSwgc2NyaXB0LndoaXRlbGlzdCgpLCBzY3JpcHQuYmxvY2tsaXN0KCkp
KQorICAgIGlmICghVXNlckNvbnRlbnRVUkxQYXR0ZXJuOjptYXRjaGVzUGF0dGVybnMoZG9jdW1l
bnQtPnVybCgpLCBzY3JpcHQuYWxsb3dsaXN0KCksIHNjcmlwdC5ibG9ja2xpc3QoKSkpCiAgICAg
ICAgIHJldHVybjsKICAgICBpZiAoIW1fc2NyaXB0LT5zaG91bGRBbGxvd1VzZXJBZ2VudFNjcmlw
dHMoKmRvY3VtZW50KSkKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS9TZWN1cml0eU9yaWdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9T
ZWN1cml0eU9yaWdpbi5jcHAJKHJldmlzaW9uIDI2MjkxNSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvU2VjdXJpdHlPcmlnaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjMsNyArMzIzLDcgQEAg
Ym9vbCBTZWN1cml0eU9yaWdpbjo6Y2FuUmVxdWVzdChjb25zdCBVUgogICAgIGlmIChpc1NhbWVT
Y2hlbWVIb3N0UG9ydCh0YXJnZXRPcmlnaW4uZ2V0KCkpKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
IAotICAgIGlmIChTZWN1cml0eVBvbGljeTo6aXNBY2Nlc3NXaGl0ZUxpc3RlZCgqdGhpcywgdGFy
Z2V0T3JpZ2luLmdldCgpLCB1cmwpKQorICAgIGlmIChTZWN1cml0eVBvbGljeTo6aXNBY2Nlc3NB
bGxvd2VkKCp0aGlzLCB0YXJnZXRPcmlnaW4uZ2V0KCksIHVybCkpCiAgICAgICAgIHJldHVybiB0
cnVlOwogCiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzgyLDcgKzM4Miw3IEBAIGJvb2wgU2VjdXJp
dHlPcmlnaW46OmNhbkRpc3BsYXkoY29uc3QgVVIKICAgICAgICAgcmV0dXJuIGNhblJlcXVlc3Qo
dXJsKTsKIAogICAgIGlmIChMZWdhY3lTY2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hl
bWVBc0Rpc3BsYXlJc29sYXRlZChwcm90b2NvbCkpCi0gICAgICAgIHJldHVybiBlcXVhbElnbm9y
aW5nQVNDSUlDYXNlKG1fZGF0YS5wcm90b2NvbCwgcHJvdG9jb2wpIHx8IFNlY3VyaXR5UG9saWN5
Ojppc0FjY2Vzc1doaXRlTGlzdGVkKCp0aGlzLCB1cmwpOworICAgICAgICByZXR1cm4gZXF1YWxJ
Z25vcmluZ0FTQ0lJQ2FzZShtX2RhdGEucHJvdG9jb2wsIHByb3RvY29sKSB8fCBTZWN1cml0eVBv
bGljeTo6aXNBY2Nlc3NBbGxvd2VkKCp0aGlzLCB1cmwpOwogCiAgICAgaWYgKCFTZWN1cml0eVBv
bGljeTo6cmVzdHJpY3RBY2Nlc3NUb0xvY2FsKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAt
MzkxLDcgKzM5MSw3IEBAIGJvb2wgU2VjdXJpdHlPcmlnaW46OmNhbkRpc3BsYXkoY29uc3QgVVIK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBpZiAoTGVnYWN5U2NoZW1lUmVnaXN0cnk6OnNo
b3VsZFRyZWF0VVJMU2NoZW1lQXNMb2NhbChwcm90b2NvbCkpCi0gICAgICAgIHJldHVybiBjYW5M
b2FkTG9jYWxSZXNvdXJjZXMoKSB8fCBTZWN1cml0eVBvbGljeTo6aXNBY2Nlc3NXaGl0ZUxpc3Rl
ZCgqdGhpcywgdXJsKTsKKyAgICAgICAgcmV0dXJuIGNhbkxvYWRMb2NhbFJlc291cmNlcygpIHx8
IFNlY3VyaXR5UG9saWN5Ojppc0FjY2Vzc0FsbG93ZWQoKnRoaXMsIHVybCk7CiAKICAgICByZXR1
cm4gdHJ1ZTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuY3BwCShy
ZXZpc2lvbiAyNjI5MTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDMsOCArNDMsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IHN0YXRpYyBTZWN1cml0eVBvbGljeTo6TG9jYWxMb2FkUG9saWN5IGxvY2FsTG9hZFBvbGljeSA9
IFNlY3VyaXR5UG9saWN5OjpBbGxvd0xvY2FsTG9hZHNGb3JMb2NhbE9ubHk7CiAKLXR5cGVkZWYg
VmVjdG9yPE9yaWdpbkFjY2Vzc0VudHJ5PiBPcmlnaW5BY2Nlc3NXaGl0ZUxpc3Q7Ci10eXBlZGVm
IEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8T3JpZ2luQWNjZXNzV2hpdGVMaXN0Pj4g
T3JpZ2luQWNjZXNzTWFwOwordHlwZWRlZiBWZWN0b3I8T3JpZ2luQWNjZXNzRW50cnk+IE9yaWdp
bkFjY2Vzc0FsbG93bGlzdDsKK3R5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6dW5pcXVlX3B0
cjxPcmlnaW5BY2Nlc3NBbGxvd2xpc3Q+PiBPcmlnaW5BY2Nlc3NNYXA7CiAKIHN0YXRpYyBMb2Nr
IG9yaWdpbkFjY2Vzc01hcExvY2s7CiBzdGF0aWMgT3JpZ2luQWNjZXNzTWFwJiBvcmlnaW5BY2Nl
c3NNYXAoKQpAQCAtMjAxLDEyICsyMDEsMTIgQEAgYm9vbCBTZWN1cml0eVBvbGljeTo6YWxsb3dT
dWJzdGl0dXRlRGF0YQogICAgIHJldHVybiBsb2NhbExvYWRQb2xpY3kgIT0gU2VjdXJpdHlQb2xp
Y3k6OkFsbG93TG9jYWxMb2Fkc0ZvckxvY2FsT25seTsKIH0KIAotYm9vbCBTZWN1cml0eVBvbGlj
eTo6aXNBY2Nlc3NXaGl0ZUxpc3RlZChjb25zdCBTZWN1cml0eU9yaWdpbiYgYWN0aXZlT3JpZ2lu
LCBjb25zdCBTZWN1cml0eU9yaWdpbiYgdGFyZ2V0T3JpZ2luLCBjb25zdCBVUkwmIHRhcmdldFVS
TCkKK2Jvb2wgU2VjdXJpdHlQb2xpY3k6OmlzQWNjZXNzQWxsb3dlZChjb25zdCBTZWN1cml0eU9y
aWdpbiYgYWN0aXZlT3JpZ2luLCBjb25zdCBTZWN1cml0eU9yaWdpbiYgdGFyZ2V0T3JpZ2luLCBj
b25zdCBVUkwmIHRhcmdldFVSTCkKIHsKICAgICBBU1NFUlQodGFyZ2V0T3JpZ2luLmVxdWFsKFNl
Y3VyaXR5T3JpZ2luOjpjcmVhdGUodGFyZ2V0VVJMKS5wdHIoKSkpOwogICAgIHsKICAgICAgICAg
TG9ja2VyPExvY2s+IGxvY2tlcihvcmlnaW5BY2Nlc3NNYXBMb2NrKTsKLSAgICAgICAgaWYgKE9y
aWdpbkFjY2Vzc1doaXRlTGlzdCogbGlzdCA9IG9yaWdpbkFjY2Vzc01hcCgpLmdldChhY3RpdmVP
cmlnaW4udG9TdHJpbmcoKSkpIHsKKyAgICAgICAgaWYgKE9yaWdpbkFjY2Vzc0FsbG93bGlzdCog
bGlzdCA9IG9yaWdpbkFjY2Vzc01hcCgpLmdldChhY3RpdmVPcmlnaW4udG9TdHJpbmcoKSkpIHsK
ICAgICAgICAgICAgIGZvciAoYXV0byYgZW50cnkgOiAqbGlzdCkgewogICAgICAgICAgICAgICAg
IGlmIChlbnRyeS5tYXRjaGVzT3JpZ2luKHRhcmdldE9yaWdpbikpCiAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwpAQCAtMjIxLDEyICsyMjEsMTIgQEAgYm9vbCBTZWN1cml0eVBvbGlj
eTo6aXNBY2Nlc3NXaGl0ZUxpc3RlZAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBTZWN1
cml0eVBvbGljeTo6aXNBY2Nlc3NXaGl0ZUxpc3RlZChjb25zdCBTZWN1cml0eU9yaWdpbiYgYWN0
aXZlT3JpZ2luLCBjb25zdCBVUkwmIHVybCkKK2Jvb2wgU2VjdXJpdHlQb2xpY3k6OmlzQWNjZXNz
QWxsb3dlZChjb25zdCBTZWN1cml0eU9yaWdpbiYgYWN0aXZlT3JpZ2luLCBjb25zdCBVUkwmIHVy
bCkKIHsKLSAgICByZXR1cm4gaXNBY2Nlc3NXaGl0ZUxpc3RlZChhY3RpdmVPcmlnaW4sIFNlY3Vy
aXR5T3JpZ2luOjpjcmVhdGUodXJsKS5nZXQoKSwgdXJsKTsKKyAgICByZXR1cm4gaXNBY2Nlc3NB
bGxvd2VkKGFjdGl2ZU9yaWdpbiwgU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh1cmwpLmdldCgpLCB1
cmwpOwogfQogCi12b2lkIFNlY3VyaXR5UG9saWN5OjphZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RF
bnRyeShjb25zdCBTZWN1cml0eU9yaWdpbiYgc291cmNlT3JpZ2luLCBjb25zdCBTdHJpbmcmIGRl
c3RpbmF0aW9uUHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25Eb21haW4sIGJvb2wg
YWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpCit2b2lkIFNlY3VyaXR5UG9saWN5OjphZGRPcmln
aW5BY2Nlc3NBbGxvd2xpc3RFbnRyeShjb25zdCBTZWN1cml0eU9yaWdpbiYgc291cmNlT3JpZ2lu
LCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgZGVzdGlu
YXRpb25Eb21haW4sIGJvb2wgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpCiB7CiAgICAgQVNT
RVJUKCFzb3VyY2VPcmlnaW4uaXNVbmlxdWUoKSk7CiAgICAgaWYgKHNvdXJjZU9yaWdpbi5pc1Vu
aXF1ZSgpKQpAQCAtMjM3LDEzICsyMzcsMTMgQEAgdm9pZCBTZWN1cml0eVBvbGljeTo6YWRkT3Jp
Z2luQWNjZXNzV2hpdAogICAgIExvY2tlcjxMb2NrPiBsb2NrZXIob3JpZ2luQWNjZXNzTWFwTG9j
ayk7CiAgICAgT3JpZ2luQWNjZXNzTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gb3JpZ2luQWNjZXNz
TWFwKCkuYWRkKHNvdXJjZVN0cmluZywgbnVsbHB0cik7CiAgICAgaWYgKHJlc3VsdC5pc05ld0Vu
dHJ5KQotICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxPcmlnaW5B
Y2Nlc3NXaGl0ZUxpc3Q+KCk7CisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtl
VW5pcXVlPE9yaWdpbkFjY2Vzc0FsbG93bGlzdD4oKTsKIAotICAgIE9yaWdpbkFjY2Vzc1doaXRl
TGlzdCogbGlzdCA9IHJlc3VsdC5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CisgICAgT3JpZ2luQWNj
ZXNzQWxsb3dsaXN0KiBsaXN0ID0gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKICAgICBs
aXN0LT5hcHBlbmQoT3JpZ2luQWNjZXNzRW50cnkoZGVzdGluYXRpb25Qcm90b2NvbCwgZGVzdGlu
YXRpb25Eb21haW4sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zID8gT3JpZ2luQWNjZXNzRW50
cnk6OkFsbG93U3ViZG9tYWlucyA6IE9yaWdpbkFjY2Vzc0VudHJ5OjpEaXNhbGxvd1N1YmRvbWFp
bnMsIE9yaWdpbkFjY2Vzc0VudHJ5OjpUcmVhdElQQWRkcmVzc0FzSVBBZGRyZXNzKSk7CiB9CiAK
LXZvaWQgU2VjdXJpdHlQb2xpY3k6OnJlbW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KGNv
bnN0IFNlY3VyaXR5T3JpZ2luJiBzb3VyY2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgZGVzdGluYXRp
b25Qcm90b2NvbCwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbkRvbWFpbiwgYm9vbCBhbGxvd0Rl
c3RpbmF0aW9uU3ViZG9tYWlucykKK3ZvaWQgU2VjdXJpdHlQb2xpY3k6OnJlbW92ZU9yaWdpbkFj
Y2Vzc0FsbG93bGlzdEVudHJ5KGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBzb3VyY2VPcmlnaW4sIGNv
bnN0IFN0cmluZyYgZGVzdGluYXRpb25Qcm90b2NvbCwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlv
bkRvbWFpbiwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucykKIHsKICAgICBBU1NFUlQo
IXNvdXJjZU9yaWdpbi5pc1VuaXF1ZSgpKTsKICAgICBpZiAoc291cmNlT3JpZ2luLmlzVW5pcXVl
KCkpCkBAIC0yNTcsNyArMjU3LDcgQEAgdm9pZCBTZWN1cml0eVBvbGljeTo6cmVtb3ZlT3JpZ2lu
QWNjZXNzVwogICAgIGlmIChpdCA9PSBtYXAuZW5kKCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IE9yaWdpbkFjY2Vzc1doaXRlTGlzdCYgbGlzdCA9ICppdC0+dmFsdWU7CisgICAgT3JpZ2luQWNj
ZXNzQWxsb3dsaXN0JiBsaXN0ID0gKml0LT52YWx1ZTsKICAgICBPcmlnaW5BY2Nlc3NFbnRyeSBv
cmlnaW5BY2Nlc3NFbnRyeShkZXN0aW5hdGlvblByb3RvY29sLCBkZXN0aW5hdGlvbkRvbWFpbiwg
YWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMgPyBPcmlnaW5BY2Nlc3NFbnRyeTo6QWxsb3dTdWJk
b21haW5zIDogT3JpZ2luQWNjZXNzRW50cnk6OkRpc2FsbG93U3ViZG9tYWlucywgT3JpZ2luQWNj
ZXNzRW50cnk6OlRyZWF0SVBBZGRyZXNzQXNJUEFkZHJlc3MpOwogICAgIGlmICghbGlzdC5yZW1v
dmVGaXJzdChvcmlnaW5BY2Nlc3NFbnRyeSkpCiAgICAgICAgIHJldHVybjsKQEAgLTI2Niw3ICsy
NjYsNyBAQCB2b2lkIFNlY3VyaXR5UG9saWN5OjpyZW1vdmVPcmlnaW5BY2Nlc3NXCiAgICAgICAg
IG1hcC5yZW1vdmUoaXQpOwogfQogCi12b2lkIFNlY3VyaXR5UG9saWN5OjpyZXNldE9yaWdpbkFj
Y2Vzc1doaXRlbGlzdHMoKQordm9pZCBTZWN1cml0eVBvbGljeTo6cmVzZXRPcmlnaW5BY2Nlc3NB
bGxvd2xpc3RzKCkKIHsKICAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKG9yaWdpbkFjY2Vzc01hcExv
Y2spOwogICAgIG9yaWdpbkFjY2Vzc01hcCgpLmNsZWFyKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wYWdlL1NlY3VyaXR5UG9saWN5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFn
ZS9TZWN1cml0eVBvbGljeS5oCShyZXZpc2lvbiAyNjI5MTUpCisrKyBTb3VyY2UvV2ViQ29yZS9w
YWdlL1NlY3VyaXR5UG9saWN5LmgJKHdvcmtpbmcgY29weSkKQEAgLTY4LDEyICs2OCwxMiBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIGJvb2wgYWxsb3dTdWJzdGl0dXRlRGF0YUFjY2Vzc1RvTG9jYWwo
KTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGFsbG93QWNjZXNzVG8oY29uc3Qg
VXNlckNvbnRlbnRVUkxQYXR0ZXJuJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQg
YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHNvdXJj
ZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblByb3RvY29sLCBjb25zdCBTdHJpbmcm
IGRlc3RpbmF0aW9uRG9tYWluLCBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKLSAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCByZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RF
bnRyeShjb25zdCBTZWN1cml0eU9yaWdpbiYgc291cmNlT3JpZ2luLCBjb25zdCBTdHJpbmcmIGRl
c3RpbmF0aW9uUHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25Eb21haW4sIGJvb2wg
YWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2
b2lkIHJlc2V0T3JpZ2luQWNjZXNzV2hpdGVsaXN0cygpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyB2b2lkIGFkZE9yaWdpbkFjY2Vzc0FsbG93bGlzdEVudHJ5KGNvbnN0IFNlY3VyaXR5T3Jp
Z2luJiBzb3VyY2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25Qcm90b2NvbCwgY29u
c3QgU3RyaW5nJiBkZXN0aW5hdGlvbkRvbWFpbiwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9t
YWlucyk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgcmVtb3ZlT3JpZ2luQWNjZXNz
QWxsb3dsaXN0RW50cnkoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHNvdXJjZU9yaWdpbiwgY29uc3Qg
U3RyaW5nJiBkZXN0aW5hdGlvblByb3RvY29sLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uRG9t
YWluLCBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgdm9pZCByZXNldE9yaWdpbkFjY2Vzc0FsbG93bGlzdHMoKTsKIAotICAgIHN0YXRp
YyBib29sIGlzQWNjZXNzV2hpdGVMaXN0ZWQoY29uc3QgU2VjdXJpdHlPcmlnaW4mIGFjdGl2ZU9y
aWdpbiwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRhcmdldE9yaWdpbiwgY29uc3QgVVJMJiB0YXJn
ZXRVUkwpOwotICAgIHN0YXRpYyBib29sIGlzQWNjZXNzV2hpdGVMaXN0ZWQoY29uc3QgU2VjdXJp
dHlPcmlnaW4mIGFjdGl2ZU9yaWdpbiwgY29uc3QgVVJMJiB0YXJnZXRVUkwpOworICAgIHN0YXRp
YyBib29sIGlzQWNjZXNzQWxsb3dlZChjb25zdCBTZWN1cml0eU9yaWdpbiYgYWN0aXZlT3JpZ2lu
LCBjb25zdCBTZWN1cml0eU9yaWdpbiYgdGFyZ2V0T3JpZ2luLCBjb25zdCBVUkwmIHRhcmdldFVS
TCk7CisgICAgc3RhdGljIGJvb2wgaXNBY2Nlc3NBbGxvd2VkKGNvbnN0IFNlY3VyaXR5T3JpZ2lu
JiBhY3RpdmVPcmlnaW4sIGNvbnN0IFVSTCYgdGFyZ2V0VVJMKTsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRVUkxQYXR0
ZXJuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50VVJM
UGF0dGVybi5jcHAJKHJldmlzaW9uIDI2MjkxNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvVXNl
ckNvbnRlbnRVUkxQYXR0ZXJuLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsMTYgKzMyLDE2IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotYm9vbCBVc2VyQ29udGVudFVSTFBhdHRlcm46Om1h
dGNoZXNQYXR0ZXJucyhjb25zdCBVUkwmIHVybCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHdoaXRl
bGlzdCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2NrbGlzdCkKK2Jvb2wgVXNlckNvbnRlbnRV
UkxQYXR0ZXJuOjptYXRjaGVzUGF0dGVybnMoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBhbGxvd2xpc3QsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9ja2xpc3QpCiB7Ci0g
ICAgLy8gSW4gb3JkZXIgZm9yIGEgVVJMIHRvIGJlIGEgbWF0Y2ggaXQgaGFzIHRvIGJlIHByZXNl
bnQgaW4gdGhlIHdoaXRlbGlzdCBhbmQgbm90IHByZXNlbnQgaW4gdGhlIGJsb2NrbGlzdC4KLSAg
ICAvLyBJZiB0aGVyZSBpcyBubyB3aGl0ZWxpc3QgYXQgYWxsLCB0aGVuIGFsbCBVUkxzIGFyZSBh
c3N1bWVkIHRvIGJlIGluIHRoZSB3aGl0ZWxpc3QuCi0gICAgYm9vbCBtYXRjaGVzV2hpdGVsaXN0
ID0gd2hpdGVsaXN0LmlzRW1wdHkoKTsKLSAgICBpZiAoIW1hdGNoZXNXaGl0ZWxpc3QpIHsKLSAg
ICAgICAgZm9yIChhdXRvJiBlbnRyeSA6IHdoaXRlbGlzdCkgeworICAgIC8vIEluIG9yZGVyIGZv
ciBhIFVSTCB0byBiZSBhIG1hdGNoIGl0IGhhcyB0byBiZSBwcmVzZW50IGluIHRoZSBhbGxvd2xp
c3QgYW5kIG5vdCBwcmVzZW50IGluIHRoZSBibG9ja2xpc3QuCisgICAgLy8gSWYgdGhlcmUgaXMg
bm8gYWxsb3dsaXN0IGF0IGFsbCwgdGhlbiBhbGwgVVJMcyBhcmUgYXNzdW1lZCB0byBiZSBpbiB0
aGUgYWxsb3dsaXN0LgorICAgIGJvb2wgbWF0Y2hlc0FsbG93bGlzdCA9IGFsbG93bGlzdC5pc0Vt
cHR5KCk7CisgICAgaWYgKCFtYXRjaGVzQWxsb3dsaXN0KSB7CisgICAgICAgIGZvciAoYXV0byYg
ZW50cnkgOiBhbGxvd2xpc3QpIHsKICAgICAgICAgICAgIFVzZXJDb250ZW50VVJMUGF0dGVybiBj
b250ZW50UGF0dGVybihlbnRyeSk7CiAgICAgICAgICAgICBpZiAoY29udGVudFBhdHRlcm4ubWF0
Y2hlcyh1cmwpKSB7Ci0gICAgICAgICAgICAgICAgbWF0Y2hlc1doaXRlbGlzdCA9IHRydWU7Cisg
ICAgICAgICAgICAgICAgbWF0Y2hlc0FsbG93bGlzdCA9IHRydWU7CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTU4LDcgKzU4LDcgQEAgYm9vbCBV
c2VyQ29udGVudFVSTFBhdHRlcm46Om1hdGNoZXNQYXR0ZQogICAgICAgICB9CiAgICAgfQogCi0g
ICAgcmV0dXJuIG1hdGNoZXNXaGl0ZWxpc3QgJiYgIW1hdGNoZXNCbG9ja2xpc3Q7CisgICAgcmV0
dXJuIG1hdGNoZXNBbGxvd2xpc3QgJiYgIW1hdGNoZXNCbG9ja2xpc3Q7CiB9CiAKIGJvb2wgVXNl
ckNvbnRlbnRVUkxQYXR0ZXJuOjpwYXJzZShjb25zdCBTdHJpbmcmIHBhdHRlcm4pCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmgJKHJldmlzaW9uIDI2
MjkxNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmgJKHdv
cmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBtYXRjaFN1
YmRvbWFpbnMoKSBjb25zdCB7IHJldHVybiBtX21hdGNoU3ViZG9tYWluczsgfQogICAgIAotICAg
IHN0YXRpYyBib29sIG1hdGNoZXNQYXR0ZXJucyhjb25zdCBVUkwmLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgd2hpdGVsaXN0LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvY2tsaXN0KTsKKyAgICBz
dGF0aWMgYm9vbCBtYXRjaGVzUGF0dGVybnMoY29uc3QgVVJMJiwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGFsbG93bGlzdCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2NrbGlzdCk7CiAKIHByaXZh
dGU6CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBwYXJzZShjb25zdCBTdHJpbmcmIHBhdHRlcm4p
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyU2NyaXB0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyU2NyaXB0LmgJKHJldmlzaW9uIDI2MjkxNSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvVXNlclNjcmlwdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSwxMCAr
NDEsMTAgQEAgcHVibGljOgogICAgIFVzZXJTY3JpcHQmIG9wZXJhdG9yPShjb25zdCBVc2VyU2Ny
aXB0JikgPSBkZWZhdWx0OwogICAgIFVzZXJTY3JpcHQmIG9wZXJhdG9yPShVc2VyU2NyaXB0JiYp
ID0gZGVmYXVsdDsKIAotICAgIFVzZXJTY3JpcHQoU3RyaW5nJiYgc291cmNlLCBVUkwmJiB1cmws
IFZlY3RvcjxTdHJpbmc+JiYgd2hpdGVsaXN0LCBWZWN0b3I8U3RyaW5nPiYmIGJsb2NrbGlzdCwg
VXNlclNjcmlwdEluamVjdGlvblRpbWUgaW5qZWN0aW9uVGltZSwgVXNlckNvbnRlbnRJbmplY3Rl
ZEZyYW1lcyBpbmplY3RlZEZyYW1lcywgV2FpdEZvck5vdGlmaWNhdGlvbkJlZm9yZUluamVjdGlu
ZyB3YWl0Rm9yTm90aWZpY2F0aW9uKQorICAgIFVzZXJTY3JpcHQoU3RyaW5nJiYgc291cmNlLCBV
UkwmJiB1cmwsIFZlY3RvcjxTdHJpbmc+JiYgYWxsb3dsaXN0LCBWZWN0b3I8U3RyaW5nPiYmIGJs
b2NrbGlzdCwgVXNlclNjcmlwdEluamVjdGlvblRpbWUgaW5qZWN0aW9uVGltZSwgVXNlckNvbnRl
bnRJbmplY3RlZEZyYW1lcyBpbmplY3RlZEZyYW1lcywgV2FpdEZvck5vdGlmaWNhdGlvbkJlZm9y
ZUluamVjdGluZyB3YWl0Rm9yTm90aWZpY2F0aW9uKQogICAgICAgICA6IG1fc291cmNlKFdURk1v
dmUoc291cmNlKSkKICAgICAgICAgLCBtX3VybChXVEZNb3ZlKHVybCkpCi0gICAgICAgICwgbV93
aGl0ZWxpc3QoV1RGTW92ZSh3aGl0ZWxpc3QpKQorICAgICAgICAsIG1fYWxsb3dsaXN0KFdURk1v
dmUoYWxsb3dsaXN0KSkKICAgICAgICAgLCBtX2Jsb2NrbGlzdChXVEZNb3ZlKGJsb2NrbGlzdCkp
CiAgICAgICAgICwgbV9pbmplY3Rpb25UaW1lKGluamVjdGlvblRpbWUpCiAgICAgICAgICwgbV9p
bmplY3RlZEZyYW1lcyhpbmplY3RlZEZyYW1lcykKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgog
CiAgICAgY29uc3QgU3RyaW5nJiBzb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZTsgfQog
ICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KLSAgICBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgd2hpdGVsaXN0KCkgY29uc3QgeyByZXR1cm4gbV93aGl0ZWxpc3Q7IH0K
KyAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYWxsb3dsaXN0KCkgY29uc3QgeyByZXR1cm4gbV9h
bGxvd2xpc3Q7IH0KICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvY2tsaXN0KCkgY29uc3Qg
eyByZXR1cm4gbV9ibG9ja2xpc3Q7IH0KICAgICBVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSBpbmpl
Y3Rpb25UaW1lKCkgY29uc3QgeyByZXR1cm4gbV9pbmplY3Rpb25UaW1lOyB9CiAgICAgVXNlckNv
bnRlbnRJbmplY3RlZEZyYW1lcyBpbmplY3RlZEZyYW1lcygpIGNvbnN0IHsgcmV0dXJuIG1faW5q
ZWN0ZWRGcmFtZXM7IH0KQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBT
dHJpbmcgbV9zb3VyY2U7CiAgICAgVVJMIG1fdXJsOwotICAgIFZlY3RvcjxTdHJpbmc+IG1fd2hp
dGVsaXN0OworICAgIFZlY3RvcjxTdHJpbmc+IG1fYWxsb3dsaXN0OwogICAgIFZlY3RvcjxTdHJp
bmc+IG1fYmxvY2tsaXN0OwogICAgIFVzZXJTY3JpcHRJbmplY3Rpb25UaW1lIG1faW5qZWN0aW9u
VGltZSB7IFVzZXJTY3JpcHRJbmplY3Rpb25UaW1lOjpEb2N1bWVudFN0YXJ0IH07CiAgICAgVXNl
ckNvbnRlbnRJbmplY3RlZEZyYW1lcyBtX2luamVjdGVkRnJhbWVzIHsgVXNlckNvbnRlbnRJbmpl
Y3RlZEZyYW1lczo6SW5qZWN0SW5BbGxGcmFtZXMgfTsKQEAgLTc4LDcgKzc4LDcgQEAgdm9pZCBV
c2VyU2NyaXB0OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcgogewogICAgIGVuY29kZXIgPDwgbV9z
b3VyY2U7CiAgICAgZW5jb2RlciA8PCBtX3VybDsKLSAgICBlbmNvZGVyIDw8IG1fd2hpdGVsaXN0
OworICAgIGVuY29kZXIgPDwgbV9hbGxvd2xpc3Q7CiAgICAgZW5jb2RlciA8PCBtX2Jsb2NrbGlz
dDsKICAgICBlbmNvZGVyIDw8IG1faW5qZWN0aW9uVGltZTsKICAgICBlbmNvZGVyIDw8IG1faW5q
ZWN0ZWRGcmFtZXM7CkBAIC05OCw5ICs5OCw5IEBAIE9wdGlvbmFsPFVzZXJTY3JpcHQ+IFVzZXJT
Y3JpcHQ6OmRlY29kZSgKICAgICBpZiAoIXVybCkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKICAgICAKLSAgICBPcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gd2hpdGVsaXN0OwotICAgIGRl
Y29kZXIgPj4gd2hpdGVsaXN0OwotICAgIGlmICghd2hpdGVsaXN0KQorICAgIE9wdGlvbmFsPFZl
Y3RvcjxTdHJpbmc+PiBhbGxvd2xpc3Q7CisgICAgZGVjb2RlciA+PiBhbGxvd2xpc3Q7CisgICAg
aWYgKCFhbGxvd2xpc3QpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgCiAgICAg
T3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+IGJsb2NrbGlzdDsKQEAgLTEyNiw3ICsxMjYsNyBAQCBP
cHRpb25hbDxVc2VyU2NyaXB0PiBVc2VyU2NyaXB0OjpkZWNvZGUoCiAgICAgcmV0dXJuIHt7CiAg
ICAgICAgIFdURk1vdmUoKnNvdXJjZSksCiAgICAgICAgIFdURk1vdmUoKnVybCksCi0gICAgICAg
IFdURk1vdmUoKndoaXRlbGlzdCksCisgICAgICAgIFdURk1vdmUoKmFsbG93bGlzdCksCiAgICAg
ICAgIFdURk1vdmUoKmJsb2NrbGlzdCksCiAgICAgICAgIFdURk1vdmUoKmluamVjdGlvblRpbWUp
LAogICAgICAgICBXVEZNb3ZlKCppbmplY3RlZEZyYW1lcyksCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wYWdlL1VzZXJTdHlsZVNoZWV0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFn
ZS9Vc2VyU3R5bGVTaGVldC5oCShyZXZpc2lvbiAyNjI5MTUpCisrKyBTb3VyY2UvV2ViQ29yZS9w
YWdlL1VzZXJTdHlsZVNoZWV0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDEwICs0MywxMCBAQCBw
dWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIFVzZXJTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYg
c291cmNlLCBjb25zdCBVUkwmIHVybCwgVmVjdG9yPFN0cmluZz4mJiB3aGl0ZWxpc3QsIFZlY3Rv
cjxTdHJpbmc+JiYgYmxvY2tsaXN0LCBVc2VyQ29udGVudEluamVjdGVkRnJhbWVzIGluamVjdGVk
RnJhbWVzLCBVc2VyU3R5bGVMZXZlbCBsZXZlbCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBh
Z2VJRCA9IFdURjo6bnVsbG9wdCkKKyAgICBVc2VyU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIHNv
dXJjZSwgY29uc3QgVVJMJiB1cmwsIFZlY3RvcjxTdHJpbmc+JiYgYWxsb3dsaXN0LCBWZWN0b3I8
U3RyaW5nPiYmIGJsb2NrbGlzdCwgVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBpbmplY3RlZEZy
YW1lcywgVXNlclN0eWxlTGV2ZWwgbGV2ZWwsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdl
SUQgPSBXVEY6Om51bGxvcHQpCiAgICAgICAgIDogbV9zb3VyY2Uoc291cmNlKQogICAgICAgICAs
IG1fdXJsKHVybCkKLSAgICAgICAgLCBtX3doaXRlbGlzdChXVEZNb3ZlKHdoaXRlbGlzdCkpCisg
ICAgICAgICwgbV9hbGxvd2xpc3QoV1RGTW92ZShhbGxvd2xpc3QpKQogICAgICAgICAsIG1fYmxv
Y2tsaXN0KFdURk1vdmUoYmxvY2tsaXN0KSkKICAgICAgICAgLCBtX2luamVjdGVkRnJhbWVzKGlu
amVjdGVkRnJhbWVzKQogICAgICAgICAsIG1fbGV2ZWwobGV2ZWwpCkBAIC01Niw3ICs1Niw3IEBA
IHB1YmxpYzoKIAogICAgIGNvbnN0IFN0cmluZyYgc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9z
b3VyY2U7IH0KICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9Ci0g
ICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIHdoaXRlbGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1fd2hp
dGVsaXN0OyB9CisgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFsbG93bGlzdCgpIGNvbnN0IHsg
cmV0dXJuIG1fYWxsb3dsaXN0OyB9CiAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2NrbGlz
dCgpIGNvbnN0IHsgcmV0dXJuIG1fYmxvY2tsaXN0OyB9CiAgICAgVXNlckNvbnRlbnRJbmplY3Rl
ZEZyYW1lcyBpbmplY3RlZEZyYW1lcygpIGNvbnN0IHsgcmV0dXJuIG1faW5qZWN0ZWRGcmFtZXM7
IH0KICAgICBVc2VyU3R5bGVMZXZlbCBsZXZlbCgpIGNvbnN0IHsgcmV0dXJuIG1fbGV2ZWw7IH0K
QEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBTdHJpbmcgbV9zb3VyY2U7
CiAgICAgVVJMIG1fdXJsOwotICAgIFZlY3RvcjxTdHJpbmc+IG1fd2hpdGVsaXN0OworICAgIFZl
Y3RvcjxTdHJpbmc+IG1fYWxsb3dsaXN0OwogICAgIFZlY3RvcjxTdHJpbmc+IG1fYmxvY2tsaXN0
OwogICAgIFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgbV9pbmplY3RlZEZyYW1lczsKICAgICBV
c2VyU3R5bGVMZXZlbCBtX2xldmVsOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udENhY2hlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udENhY2hlLmgJKHJldmlzaW9uIDI2MjkxNSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTgsNyAr
MTk4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIGlzU3lzdGVtRm9udEZvcmJpZGRlbkZv
ckVkaXRpbmcoY29uc3QgU3RyaW5nJik7CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBzZXRGb250V2hpdGVsaXN0KGNvbnN0IFZlY3RvcjxTdHJp
bmc+Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgc2V0Rm9udEFsbG93bGlzdChj
b25zdCBWZWN0b3I8U3RyaW5nPiYpOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oV0lOKQogICAgIElN
TGFuZ0ZvbnRMaW5rVHlwZSogZ2V0Rm9udExpbmtJbnRlcmZhY2UoKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2Fj
aGVDb3JlVGV4dC5jcHAJKHJldmlzaW9uIDI2MjkxNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtODMzLDE5ICs4MzMsMTkgQEAgU3ludGhlc2lzUGFpciBjb21wdXRlTmVjZXNzYXJ5U3ludGhl
c2lzKAogICAgIHJldHVybiBTeW50aGVzaXNQYWlyKG5lZWRzU3ludGhldGljQm9sZCwgbmVlZHNT
eW50aGV0aWNPYmxpcXVlKTsKIH0KIAotdHlwZWRlZiBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNl
SW5zZW5zaXRpdmVIYXNoPiBXaGl0ZWxpc3Q7Ci1zdGF0aWMgV2hpdGVsaXN0JiBmb250V2hpdGVs
aXN0KCkKK3R5cGVkZWYgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4g
QWxsb3dsaXN0Oworc3RhdGljIEFsbG93bGlzdCYgZm9udEFsbG93bGlzdCgpCiB7Ci0gICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPFdoaXRlbGlzdD4gd2hpdGVsaXN0OwotICAgIHJldHVybiB3aGl0
ZWxpc3Q7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEFsbG93bGlzdD4gYWxsb3dsaXN0Owor
ICAgIHJldHVybiBhbGxvd2xpc3Q7CiB9CiAKLXZvaWQgRm9udENhY2hlOjpzZXRGb250V2hpdGVs
aXN0KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBpbnB1dFdoaXRlbGlzdCkKK3ZvaWQgRm9udENhY2hl
OjpzZXRGb250QWxsb3dsaXN0KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBpbnB1dEFsbG93bGlzdCkK
IHsKLSAgICBXaGl0ZWxpc3QmIHdoaXRlbGlzdCA9IGZvbnRXaGl0ZWxpc3QoKTsKLSAgICB3aGl0
ZWxpc3QuY2xlYXIoKTsKLSAgICBmb3IgKGF1dG8mIGl0ZW0gOiBpbnB1dFdoaXRlbGlzdCkKLSAg
ICAgICAgd2hpdGVsaXN0LmFkZChpdGVtKTsKKyAgICBBbGxvd2xpc3QmIGFsbG93bGlzdCA9IGZv
bnRBbGxvd2xpc3QoKTsKKyAgICBhbGxvd2xpc3QuY2xlYXIoKTsKKyAgICBmb3IgKGF1dG8mIGl0
ZW0gOiBpbnB1dEFsbG93bGlzdCkKKyAgICAgICAgYWxsb3dsaXN0LmFkZChpdGVtKTsKIH0KIAog
Y2xhc3MgRm9udERhdGFiYXNlIHsKQEAgLTExNzksOCArMTE3OSw4IEBAIHN0cnVjdCBGb250TG9v
a3VwIHsKIAogc3RhdGljIEZvbnRMb29rdXAgcGxhdGZvcm1Gb250TG9va3VwV2l0aEZhbWlseShj
b25zdCBBdG9tU3RyaW5nJiBmYW1pbHksIEZvbnRTZWxlY3Rpb25SZXF1ZXN0IHJlcXVlc3QsIGZs
b2F0IHNpemUsIEFsbG93VXNlckluc3RhbGxlZEZvbnRzIGFsbG93VXNlckluc3RhbGxlZEZvbnRz
KQogewotICAgIGNvbnN0IGF1dG8mIHdoaXRlbGlzdCA9IGZvbnRXaGl0ZWxpc3QoKTsKLSAgICBp
ZiAoIWlzU3lzdGVtRm9udChmYW1pbHkuc3RyaW5nKCkpICYmIHdoaXRlbGlzdC5zaXplKCkgJiYg
IXdoaXRlbGlzdC5jb250YWlucyhmYW1pbHkpKQorICAgIGNvbnN0IGF1dG8mIGFsbG93bGlzdCA9
IGZvbnRBbGxvd2xpc3QoKTsKKyAgICBpZiAoIWlzU3lzdGVtRm9udChmYW1pbHkuc3RyaW5nKCkp
ICYmIGFsbG93bGlzdC5zaXplKCkgJiYgIWFsbG93bGlzdC5jb250YWlucyhmYW1pbHkpKQogICAg
ICAgICByZXR1cm4geyBudWxscHRyIH07CiAKICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2UoZmFtaWx5LCAiLmFwcGxlc3lzdGVtdWlmb250c2VyaWYiKQpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAJKHJldmlzaW9u
IDI2MjkxNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDEsNyArMTQxLDcgQEAgYm9vbCBpc1ZhbGlkQWNjZXB0
SGVhZGVyVmFsdWUoY29uc3QgU3RyaQogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB2YWx1
ZS5sZW5ndGgoKTsgKytpKSB7CiAgICAgICAgIFVDaGFyIGMgPSB2YWx1ZVtpXTsKIAotICAgICAg
ICAvLyBGaXJzdCBjaGVjayBmb3IgYWxwaGFudW1lcmljIGZvciBwZXJmb3JtYW5jZSByZWFzb25z
IHRoZW4gd2hpdGVsaXN0IGZvdXIgZGVsaW1pdGVyIGNoYXJhY3RlcnMuCisgICAgICAgIC8vIEZp
cnN0IGNoZWNrIGZvciBhbHBoYW51bWVyaWMgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMgdGhlbiBh
bGxvd2xpc3QgZm91ciBkZWxpbWl0ZXIgY2hhcmFjdGVycy4KICAgICAgICAgaWYgKGlzQVNDSUlB
bHBoYW51bWVyaWMoYykgfHwgYyA9PSAnLCcgfHwgYyA9PSAnLycgfHwgYyA9PSAnOycgfHwgYyA9
PSAnPScpCiAgICAgICAgICAgICBjb250aW51ZTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0Zsb2F0aW5nT2JqZWN0cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9GbG9hdGluZ09iamVjdHMuaAkocmV2aXNpb24gMjYyOTE1KQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0Zsb2F0aW5nT2JqZWN0cy5oCSh3b3JraW5nIGNvcHkpCkBAIC04NCw3
ICs4NCw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzRGVzY2VuZGFudCgpIGNvbnN0IHsgcmV0dXJu
IG1faXNEZXNjZW5kYW50OyB9CiAgICAgdm9pZCBzZXRJc0Rlc2NlbmRhbnQoYm9vbCBpc0Rlc2Nl
bmRhbnQpIHsgbV9pc0Rlc2NlbmRhbnQgPSBpc0Rlc2NlbmRhbnQ7IH0KIAotICAgIC8vIEZJWE1F
OiBDYWxsZXJzIG9mIHRoZXNlIG1ldGhvZHMgYXJlIGRhbmdlcm91cyBhbmQgc2hvdWxkIGJlIHdo
aXRlbGlzdGVkIGV4cGxpY2l0bHkgb3IgcmVtb3ZlZC4KKyAgICAvLyBGSVhNRTogQ2FsbGVycyBv
ZiB0aGVzZSBtZXRob2RzIGFyZSBkYW5nZXJvdXMgYW5kIHNob3VsZCBiZSBhbGxvd2VkIGV4cGxp
Y2l0bHkgb3IgcmVtb3ZlZC4KICAgICBSb290SW5saW5lQm94KiBvcmlnaW5hdGluZ0xpbmUoKSBj
b25zdCB7IHJldHVybiBtX29yaWdpbmF0aW5nTGluZS5nZXQoKTsgfQogICAgIHZvaWQgY2xlYXJP
cmlnaW5hdGluZ0xpbmUoKSB7IG1fb3JpZ2luYXRpbmdMaW5lID0gbnVsbHB0cjsgfQogICAgIHZv
aWQgc2V0T3JpZ2luYXRpbmdMaW5lKFJvb3RJbmxpbmVCb3gmIGxpbmUpIHsgbV9vcmlnaW5hdGlu
Z0xpbmUgPSBtYWtlV2Vha1B0cihsaW5lKTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvc3R5bGUv
RWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N0
eWxlL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcAkocmV2aXNpb24gMjYyOTE1KQorKysgU291cmNl
L1dlYkNvcmUvc3R5bGUvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yMDAsNyArMjAwLDcgQEAgdm9pZCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6dHJhbnNmZXJNYXRj
aAogICAgICAgICBhZGRNYXRjaGVkUHJvcGVydGllcyh7CiAgICAgICAgICAgICAmbWF0Y2hlZFJ1
bGUucnVsZURhdGEtPnN0eWxlUnVsZSgpLnByb3BlcnRpZXMoKSwKICAgICAgICAgICAgIHN0YXRp
Y19jYXN0PHVpbnQxNl90PihtYXRjaGVkUnVsZS5ydWxlRGF0YS0+bGlua01hdGNoVHlwZSgpKSwK
LSAgICAgICAgICAgIHN0YXRpY19jYXN0PHVpbnQxNl90PihtYXRjaGVkUnVsZS5ydWxlRGF0YS0+
cHJvcGVydHlXaGl0ZWxpc3RUeXBlKCkpLAorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dWludDE2
X3Q+KG1hdGNoZWRSdWxlLnJ1bGVEYXRhLT5wcm9wZXJ0eUFsbG93bGlzdFR5cGUoKSksCiAgICAg
ICAgICAgICBtYXRjaGVkUnVsZS5zdHlsZVNjb3BlT3JkaW5hbAogICAgICAgICB9LCBkZWNsYXJh
dGlvbk9yaWdpbik7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvc3R5bGUvRWxlbWVudFJ1
bGVDb2xsZWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdHlsZS9FbGVtZW50
UnVsZUNvbGxlY3Rvci5oCShyZXZpc2lvbiAyNjI5MTUpCisrKyBTb3VyY2UvV2ViQ29yZS9zdHls
ZS9FbGVtZW50UnVsZUNvbGxlY3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw3ICs2Nyw3IEBA
IHN0cnVjdCBNYXRjaGVkUnVsZSB7CiBzdHJ1Y3QgTWF0Y2hlZFByb3BlcnRpZXMgewogICAgIFJl
ZlB0cjxjb25zdCBTdHlsZVByb3BlcnRpZXM+IHByb3BlcnRpZXM7CiAgICAgdWludDE2X3QgbGlu
a01hdGNoVHlwZSB7IFNlbGVjdG9yQ2hlY2tlcjo6TWF0Y2hBbGwgfTsKLSAgICB1aW50MTZfdCB3
aGl0ZWxpc3RUeXBlIHsgUHJvcGVydHlXaGl0ZWxpc3ROb25lIH07CisgICAgdWludDE2X3QgYWxs
b3dsaXN0VHlwZSB7IFByb3BlcnR5QWxsb3dsaXN0Tm9uZSB9OwogICAgIFNjb3BlT3JkaW5hbCBz
dHlsZVNjb3BlT3JkaW5hbCB7IFNjb3BlT3JkaW5hbDo6RWxlbWVudCB9OwogfTsKIApJbmRleDog
U291cmNlL1dlYkNvcmUvc3R5bGUvUHJvcGVydHlDYXNjYWRlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdHlsZS9Qcm9wZXJ0eUNhc2NhZGUuY3BwCShyZXZpc2lvbiAyNjI5MTUp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdHlsZS9Qcm9wZXJ0eUNhc2NhZGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNDIsNyArMjQyLDcgQEAgdm9pZCBQcm9wZXJ0eUNhc2NhZGU6OnNldERlZmVycmVk
KENTU1BybwogYm9vbCBQcm9wZXJ0eUNhc2NhZGU6OmFkZE1hdGNoKGNvbnN0IE1hdGNoZWRQcm9w
ZXJ0aWVzJiBtYXRjaGVkUHJvcGVydGllcywgQ2FzY2FkZUxldmVsIGNhc2NhZGVMZXZlbCwgYm9v
bCBpbXBvcnRhbnQpCiB7CiAgICAgYXV0byYgc3R5bGVQcm9wZXJ0aWVzID0gKm1hdGNoZWRQcm9w
ZXJ0aWVzLnByb3BlcnRpZXM7Ci0gICAgYXV0byBwcm9wZXJ0eVdoaXRlbGlzdFR5cGUgPSBzdGF0
aWNfY2FzdDxQcm9wZXJ0eVdoaXRlbGlzdFR5cGU+KG1hdGNoZWRQcm9wZXJ0aWVzLndoaXRlbGlz
dFR5cGUpOworICAgIGF1dG8gcHJvcGVydHlBbGxvd2xpc3RUeXBlID0gc3RhdGljX2Nhc3Q8UHJv
cGVydHlBbGxvd2xpc3RUeXBlPihtYXRjaGVkUHJvcGVydGllcy5hbGxvd2xpc3RUeXBlKTsKICAg
ICBib29sIGhhc0ltcG9ydGFudFByb3BlcnRpZXMgPSBmYWxzZTsKIAogICAgIGZvciAodW5zaWdu
ZWQgaSA9IDAsIGNvdW50ID0gc3R5bGVQcm9wZXJ0aWVzLnByb3BlcnR5Q291bnQoKTsgaSA8IGNv
dW50OyArK2kpIHsKQEAgLTI2MiwxMCArMjYyLDEwIEBAIGJvb2wgUHJvcGVydHlDYXNjYWRlOjph
ZGRNYXRjaChjb25zdCBNYXQKICAgICAgICAgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlEID0gY3Vy
cmVudC5pZCgpOwogCiAjaWYgRU5BQkxFKFZJREVPKQotICAgICAgICBpZiAocHJvcGVydHlXaGl0
ZWxpc3RUeXBlID09IFByb3BlcnR5V2hpdGVsaXN0Q3VlICYmICFpc1ZhbGlkQ3VlU3R5bGVQcm9w
ZXJ0eShwcm9wZXJ0eUlEKSkKKyAgICAgICAgaWYgKHByb3BlcnR5QWxsb3dsaXN0VHlwZSA9PSBQ
cm9wZXJ0eUFsbG93bGlzdEN1ZSAmJiAhaXNWYWxpZEN1ZVN0eWxlUHJvcGVydHkocHJvcGVydHlJ
RCkpCiAgICAgICAgICAgICBjb250aW51ZTsKICNlbmRpZgotICAgICAgICBpZiAocHJvcGVydHlX
aGl0ZWxpc3RUeXBlID09IFByb3BlcnR5V2hpdGVsaXN0TWFya2VyICYmICFpc1ZhbGlkTWFya2Vy
U3R5bGVQcm9wZXJ0eShwcm9wZXJ0eUlEKSkKKyAgICAgICAgaWYgKHByb3BlcnR5QWxsb3dsaXN0
VHlwZSA9PSBQcm9wZXJ0eUFsbG93bGlzdE1hcmtlciAmJiAhaXNWYWxpZE1hcmtlclN0eWxlUHJv
cGVydHkocHJvcGVydHlJRCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBpZiAo
c2hvdWxkQXBwbHlQcm9wZXJ0eUluUGFyc2VPcmRlcihwcm9wZXJ0eUlEKSkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3N0eWxlL1J1bGVEYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdHlsZS9SdWxlRGF0YS5jcHAJKHJldmlzaW9uIDI2MjkxNSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3N0eWxlL1J1bGVEYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM3LDI1ICsxMzcsMjUgQEAg
c3RhdGljIGJvb2wgY29tcHV0ZUNvbnRhaW5zVW5jb21tb25BdHRyaQogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAotc3RhdGljIGlubGluZSBQcm9wZXJ0eVdoaXRlbGlzdFR5cGUgZGV0ZXJtaW5lUHJv
cGVydHlXaGl0ZWxpc3RUeXBlKGNvbnN0IENTU1NlbGVjdG9yKiBzZWxlY3RvcikKK3N0YXRpYyBp
bmxpbmUgUHJvcGVydHlBbGxvd2xpc3RUeXBlIGRldGVybWluZVByb3BlcnR5QWxsb3dsaXN0VHlw
ZShjb25zdCBDU1NTZWxlY3Rvciogc2VsZWN0b3IpCiB7CiAgICAgZm9yIChjb25zdCBDU1NTZWxl
Y3RvciogY29tcG9uZW50ID0gc2VsZWN0b3I7IGNvbXBvbmVudDsgY29tcG9uZW50ID0gY29tcG9u
ZW50LT50YWdIaXN0b3J5KCkpIHsKICNpZiBFTkFCTEUoVklERU8pCiAgICAgICAgIGlmIChjb21w
b25lbnQtPm1hdGNoKCkgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1lbnQgJiYgKGNvbXBvbmVu
dC0+cHNldWRvRWxlbWVudFR5cGUoKSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvRWxlbWVudEN1ZSB8
fCBjb21wb25lbnQtPnZhbHVlKCkgPT0gVGV4dFRyYWNrQ3VlOjpjdWVTaGFkb3dQc2V1ZG9JZCgp
KSkKLSAgICAgICAgICAgIHJldHVybiBQcm9wZXJ0eVdoaXRlbGlzdEN1ZTsKKyAgICAgICAgICAg
IHJldHVybiBQcm9wZXJ0eUFsbG93bGlzdEN1ZTsKICNlbmRpZgogICAgICAgICBpZiAoY29tcG9u
ZW50LT5tYXRjaCgpID09IENTU1NlbGVjdG9yOjpQc2V1ZG9FbGVtZW50ICYmIGNvbXBvbmVudC0+
cHNldWRvRWxlbWVudFR5cGUoKSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvRWxlbWVudE1hcmtlcikK
LSAgICAgICAgICAgIHJldHVybiBQcm9wZXJ0eVdoaXRlbGlzdE1hcmtlcjsKKyAgICAgICAgICAg
IHJldHVybiBQcm9wZXJ0eUFsbG93bGlzdE1hcmtlcjsKIAogICAgICAgICBpZiAoY29uc3QgYXV0
byogc2VsZWN0b3JMaXN0ID0gc2VsZWN0b3ItPnNlbGVjdG9yTGlzdCgpKSB7CiAgICAgICAgICAg
ICBmb3IgKGNvbnN0IGF1dG8qIHN1YlNlbGVjdG9yID0gc2VsZWN0b3JMaXN0LT5maXJzdCgpOyBz
dWJTZWxlY3Rvcjsgc3ViU2VsZWN0b3IgPSBDU1NTZWxlY3Rvckxpc3Q6Om5leHQoc3ViU2VsZWN0
b3IpKSB7Ci0gICAgICAgICAgICAgICAgYXV0byB3aGl0ZWxpc3RUeXBlID0gZGV0ZXJtaW5lUHJv
cGVydHlXaGl0ZWxpc3RUeXBlKHN1YlNlbGVjdG9yKTsKLSAgICAgICAgICAgICAgICBpZiAod2hp
dGVsaXN0VHlwZSAhPSBQcm9wZXJ0eVdoaXRlbGlzdE5vbmUpCi0gICAgICAgICAgICAgICAgICAg
IHJldHVybiB3aGl0ZWxpc3RUeXBlOworICAgICAgICAgICAgICAgIGF1dG8gYWxsb3dsaXN0VHlw
ZSA9IGRldGVybWluZVByb3BlcnR5QWxsb3dsaXN0VHlwZShzdWJTZWxlY3Rvcik7CisgICAgICAg
ICAgICAgICAgaWYgKGFsbG93bGlzdFR5cGUgIT0gUHJvcGVydHlBbGxvd2xpc3ROb25lKQorICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gYWxsb3dsaXN0VHlwZTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQogICAgIH0KLSAgICByZXR1cm4gUHJvcGVydHlXaGl0ZWxpc3ROb25lOworICAgIHJl
dHVybiBQcm9wZXJ0eUFsbG93bGlzdE5vbmU7CiB9CiAKIFJ1bGVEYXRhOjpSdWxlRGF0YShjb25z
dCBTdHlsZVJ1bGUmIHN0eWxlUnVsZSwgdW5zaWduZWQgc2VsZWN0b3JJbmRleCwgdW5zaWduZWQg
c2VsZWN0b3JMaXN0SW5kZXgsIHVuc2lnbmVkIHBvc2l0aW9uKQpAQCAtMTY3LDcgKzE2Nyw3IEBA
IFJ1bGVEYXRhOjpSdWxlRGF0YShjb25zdCBTdHlsZVJ1bGUmIHN0eWwKICAgICAsIG1fY2FuTWF0
Y2hQc2V1ZG9FbGVtZW50KHNlbGVjdG9yQ2FuTWF0Y2hQc2V1ZG9FbGVtZW50KCpzZWxlY3Rvcigp
KSkKICAgICAsIG1fY29udGFpbnNVbmNvbW1vbkF0dHJpYnV0ZVNlbGVjdG9yKGNvbXB1dGVDb250
YWluc1VuY29tbW9uQXR0cmlidXRlU2VsZWN0b3IoKnNlbGVjdG9yKCkpKQogICAgICwgbV9saW5r
TWF0Y2hUeXBlKFNlbGVjdG9yQ2hlY2tlcjo6ZGV0ZXJtaW5lTGlua01hdGNoVHlwZShzZWxlY3Rv
cigpKSkKLSAgICAsIG1fcHJvcGVydHlXaGl0ZWxpc3RUeXBlKGRldGVybWluZVByb3BlcnR5V2hp
dGVsaXN0VHlwZShzZWxlY3RvcigpKSkKKyAgICAsIG1fcHJvcGVydHlBbGxvd2xpc3RUeXBlKGRl
dGVybWluZVByb3BlcnR5QWxsb3dsaXN0VHlwZShzZWxlY3RvcigpKSkKICAgICAsIG1faXNFbmFi
bGVkKHRydWUpCiAgICAgLCBtX2Rlc2NlbmRhbnRTZWxlY3RvcklkZW50aWZpZXJIYXNoZXMoU2Vs
ZWN0b3JGaWx0ZXI6OmNvbGxlY3RIYXNoZXMoKnNlbGVjdG9yKCkpKQogewpJbmRleDogU291cmNl
L1dlYkNvcmUvc3R5bGUvUnVsZURhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9z
dHlsZS9SdWxlRGF0YS5oCShyZXZpc2lvbiAyNjI5MTUpCisrKyBTb3VyY2UvV2ViQ29yZS9zdHls
ZS9SdWxlRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxMSArMjcsMTEgQEAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBTdHlsZSB7CiAKLWVudW0gUHJvcGVydHlXaGl0ZWxpc3RU
eXBlIHsKLSAgICBQcm9wZXJ0eVdoaXRlbGlzdE5vbmUgICA9IDAsCi0gICAgUHJvcGVydHlXaGl0
ZWxpc3RNYXJrZXIsCitlbnVtIFByb3BlcnR5QWxsb3dsaXN0VHlwZSB7CisgICAgUHJvcGVydHlB
bGxvd2xpc3ROb25lICAgPSAwLAorICAgIFByb3BlcnR5QWxsb3dsaXN0TWFya2VyLAogI2lmIEVO
QUJMRShWSURFTykKLSAgICBQcm9wZXJ0eVdoaXRlbGlzdEN1ZQorICAgIFByb3BlcnR5QWxsb3ds
aXN0Q3VlCiAjZW5kaWYKIH07CiAKQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgogICAgIE1hdGNo
QmFzZWRPblJ1bGVIYXNoIG1hdGNoQmFzZWRPblJ1bGVIYXNoKCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8TWF0Y2hCYXNlZE9uUnVsZUhhc2g+KG1fbWF0Y2hCYXNlZE9uUnVsZUhhc2gpOyB9
CiAgICAgYm9vbCBjb250YWluc1VuY29tbW9uQXR0cmlidXRlU2VsZWN0b3IoKSBjb25zdCB7IHJl
dHVybiBtX2NvbnRhaW5zVW5jb21tb25BdHRyaWJ1dGVTZWxlY3RvcjsgfQogICAgIHVuc2lnbmVk
IGxpbmtNYXRjaFR5cGUoKSBjb25zdCB7IHJldHVybiBtX2xpbmtNYXRjaFR5cGU7IH0KLSAgICBQ
cm9wZXJ0eVdoaXRlbGlzdFR5cGUgcHJvcGVydHlXaGl0ZWxpc3RUeXBlKCkgY29uc3QgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8UHJvcGVydHlXaGl0ZWxpc3RUeXBlPihtX3Byb3BlcnR5V2hpdGVsaXN0
VHlwZSk7IH0KKyAgICBQcm9wZXJ0eUFsbG93bGlzdFR5cGUgcHJvcGVydHlBbGxvd2xpc3RUeXBl
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8UHJvcGVydHlBbGxvd2xpc3RUeXBlPihtX3By
b3BlcnR5QWxsb3dsaXN0VHlwZSk7IH0KICAgICBib29sIGlzRW5hYmxlZCgpIGNvbnN0IHsgcmV0
dXJuIG1faXNFbmFibGVkOyB9CiAgICAgdm9pZCBzZXRFbmFibGVkKGJvb2wgdmFsdWUpIHsgbV9p
c0VuYWJsZWQgPSB2YWx1ZTsgfQogCkBAIC04NCw3ICs4NCw3IEBAIHByaXZhdGU6CiAgICAgdW5z
aWduZWQgbV9jYW5NYXRjaFBzZXVkb0VsZW1lbnQgOiAxOwogICAgIHVuc2lnbmVkIG1fY29udGFp
bnNVbmNvbW1vbkF0dHJpYnV0ZVNlbGVjdG9yIDogMTsKICAgICB1bnNpZ25lZCBtX2xpbmtNYXRj
aFR5cGUgOiAyOyAvLyAgU2VsZWN0b3JDaGVja2VyOjpMaW5rTWF0Y2hNYXNrCi0gICAgdW5zaWdu
ZWQgbV9wcm9wZXJ0eVdoaXRlbGlzdFR5cGUgOiAyOworICAgIHVuc2lnbmVkIG1fcHJvcGVydHlB
bGxvd2xpc3RUeXBlIDogMjsKICAgICB1bnNpZ25lZCBtX2lzRW5hYmxlZCA6IDE7CiAgICAgU2Vs
ZWN0b3JGaWx0ZXI6Okhhc2hlcyBtX2Rlc2NlbmRhbnRTZWxlY3RvcklkZW50aWZpZXJIYXNoZXM7
CiB9OwpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MjkxNSkKKysrIFNvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjQgQEAKKzIwMjAtMDYtMTEgIEJldGgg
RGFraW4gIDxiZGFraW5AYXBwbGUuY29tPgorCisgICAgICAgIFJlcGxhY2UgaW5zdGFuY2VzIG9m
IHdoaXRlbGlzdCBpbiBXZWJDb3JlIHdpdGggYWxsb3dsaXN0CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTMwNjgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlbW92ZU9yaWdpbkFjY2Vz
c1doaXRlbGlzdEVudHJ5KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OnJlc2V0T3JpZ2luQWNjZXNzV2hpdGVsaXN0cyk6CisgICAgICAgICogU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8
VXNlclN0eWxlU2hlZXQ+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFVz
ZXJTdHlsZVNoZWV0Pjo6ZGVjb2RlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGU6
OmFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0
ZWRCdW5kbGU6OnJlbW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KToKKyAgICAgICAgKFdl
YktpdDo6SW5qZWN0ZWRCdW5kbGU6OnJlc2V0T3JpZ2luQWNjZXNzV2hpdGVsaXN0cyk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW06CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MpOgorCiAyMDIwLTA2
LTExICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJL
aXQ6IEFkZCBVSUtpdCBTUEkgZm9yIHdhdGNoT1MgYW5kIHR2T1MKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuY3BwCShyZXZpc2lvbiAyNjI5MTUpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtOTAxLDE3ICs5MDEsMTcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6cmVxdQogCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjphZGRPcmlnaW5B
Y2Nlc3NXaGl0ZWxpc3RFbnRyeShjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbiwgY29uc3QgU3Ry
aW5nJiBkZXN0aW5hdGlvblByb3RvY29sLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uSG9zdCwg
Ym9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucykKIHsKLSAgICBTZWN1cml0eVBvbGljeTo6
YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21T
dHJpbmcoc291cmNlT3JpZ2luKS5nZXQoKSwgZGVzdGluYXRpb25Qcm90b2NvbCwgZGVzdGluYXRp
b25Ib3N0LCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7CisgICAgU2VjdXJpdHlQb2xpY3k6
OmFkZE9yaWdpbkFjY2Vzc0FsbG93bGlzdEVudHJ5KFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9t
U3RyaW5nKHNvdXJjZU9yaWdpbikuZ2V0KCksIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGRlc3RpbmF0
aW9uSG9zdCwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOwogfQogCiB2b2lkIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShj
b25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblByb3Rv
Y29sLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uSG9zdCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9u
U3ViZG9tYWlucykKIHsKLSAgICBTZWN1cml0eVBvbGljeTo6cmVtb3ZlT3JpZ2luQWNjZXNzV2hp
dGVsaXN0RW50cnkoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcoc291cmNlT3JpZ2lu
KS5nZXQoKSwgZGVzdGluYXRpb25Qcm90b2NvbCwgZGVzdGluYXRpb25Ib3N0LCBhbGxvd0Rlc3Rp
bmF0aW9uU3ViZG9tYWlucyk7CisgICAgU2VjdXJpdHlQb2xpY3k6OnJlbW92ZU9yaWdpbkFjY2Vz
c0FsbG93bGlzdEVudHJ5KFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKHNvdXJjZU9y
aWdpbikuZ2V0KCksIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGRlc3RpbmF0aW9uSG9zdCwgYWxsb3dE
ZXN0aW5hdGlvblN1YmRvbWFpbnMpOwogfQogCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpyZXNldE9yaWdpbkFjY2Vzc1doaXRlbGlzdHMoKQogewotICAgIFNlY3VyaXR5UG9s
aWN5OjpyZXNldE9yaWdpbkFjY2Vzc1doaXRlbGlzdHMoKTsKKyAgICBTZWN1cml0eVBvbGljeTo6
cmVzZXRPcmlnaW5BY2Nlc3NBbGxvd2xpc3RzKCk7CiB9CiAKIE9wdGlvbmFsPE5ldHdvcmtBY3Rp
dml0eVRyYWNrZXI+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzdGFydFRyYWNraW5n
UmVzb3VyY2VMb2FkKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgUmVzb3VyY2VMb2FkSWRlbnRpZmll
ciByZXNvdXJjZUlELCBib29sIGlzVG9wUmVzb3VyY2UpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAJKHJldmlzaW9uIDI2MjkxNSkKKysr
IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTIwODAsNyArMjA4MCw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxVc2VyU3R5bGVT
aGVldD46OmVuY28KIHsKICAgICBlbmNvZGVyIDw8IHVzZXJTdHlsZVNoZWV0LnNvdXJjZSgpOwog
ICAgIGVuY29kZXIgPDwgdXNlclN0eWxlU2hlZXQudXJsKCk7Ci0gICAgZW5jb2RlciA8PCB1c2Vy
U3R5bGVTaGVldC53aGl0ZWxpc3QoKTsKKyAgICBlbmNvZGVyIDw8IHVzZXJTdHlsZVNoZWV0LmFs
bG93bGlzdCgpOwogICAgIGVuY29kZXIgPDwgdXNlclN0eWxlU2hlZXQuYmxvY2tsaXN0KCk7CiAg
ICAgZW5jb2Rlci5lbmNvZGVFbnVtKHVzZXJTdHlsZVNoZWV0LmluamVjdGVkRnJhbWVzKCkpOwog
ICAgIGVuY29kZXIuZW5jb2RlRW51bSh1c2VyU3R5bGVTaGVldC5sZXZlbCgpKTsKQEAgLTIwOTcs
OCArMjA5Nyw4IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxVc2VyU3R5bGVTaGVldD46OmRlY28KICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHVybCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IFZlY3RvcjxTdHJpbmc+IHdoaXRlbGlzdDsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHdoaXRl
bGlzdCkpCisgICAgVmVjdG9yPFN0cmluZz4gYWxsb3dsaXN0OworICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoYWxsb3dsaXN0KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgVmVjdG9yPFN0
cmluZz4gYmxvY2tsaXN0OwpAQCAtMjExOCw3ICsyMTE4LDcgQEAgYm9vbCBBcmd1bWVudENvZGVy
PFVzZXJTdHlsZVNoZWV0Pjo6ZGVjbwogICAgIGlmICghcGFnZUlEKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICB1c2VyU3R5bGVTaGVldCA9IFVzZXJTdHlsZVNoZWV0KHNvdXJjZSwgdXJs
LCBXVEZNb3ZlKHdoaXRlbGlzdCksIFdURk1vdmUoYmxvY2tsaXN0KSwgaW5qZWN0ZWRGcmFtZXMs
IGxldmVsLCBXVEZNb3ZlKCpwYWdlSUQpKTsKKyAgICB1c2VyU3R5bGVTaGVldCA9IFVzZXJTdHls
ZVNoZWV0KHNvdXJjZSwgdXJsLCBXVEZNb3ZlKGFsbG93bGlzdCksIFdURk1vdmUoYmxvY2tsaXN0
KSwgaW5qZWN0ZWRGcmFtZXMsIGxldmVsLCBXVEZNb3ZlKCpwYWdlSUQpKTsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCShyZXZpc2lvbiAyNjI5MTUpCisr
KyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOTUsMjAgKzM5NSwyMCBAQCB2b2lkIEluamVjdGVkQnVu
ZGxlOjpzZXRTcGF0aWFsTmF2aWdhdGlvCiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OmFkZE9yaWdp
bkFjY2Vzc1doaXRlbGlzdEVudHJ5KGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luLCBjb25zdCBT
dHJpbmcmIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25Ib3N0
LCBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKQogewotICAgIFNlY3VyaXR5UG9saWN5
OjphZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJv
bVN0cmluZyhzb3VyY2VPcmlnaW4pLmdldCgpLCBkZXN0aW5hdGlvblByb3RvY29sLCBkZXN0aW5h
dGlvbkhvc3QsIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKKyAgICBTZWN1cml0eVBvbGlj
eTo6YWRkT3JpZ2luQWNjZXNzQWxsb3dsaXN0RW50cnkoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZy
b21TdHJpbmcoc291cmNlT3JpZ2luKS5nZXQoKSwgZGVzdGluYXRpb25Qcm90b2NvbCwgZGVzdGlu
YXRpb25Ib3N0LCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7CiAgICAgV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigp
LnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpBZGRPcmlnaW5B
Y2Nlc3NXaGl0ZWxpc3RFbnRyeSB7IHNvdXJjZU9yaWdpbiwgZGVzdGluYXRpb25Qcm90b2NvbCwg
ZGVzdGluYXRpb25Ib3N0LCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyB9LCAwKTsKIAogfQog
CiB2b2lkIEluamVjdGVkQnVuZGxlOjpyZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShj
b25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblByb3Rv
Y29sLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uSG9zdCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9u
U3ViZG9tYWlucykKIHsKLSAgICBTZWN1cml0eVBvbGljeTo6cmVtb3ZlT3JpZ2luQWNjZXNzV2hp
dGVsaXN0RW50cnkoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcoc291cmNlT3JpZ2lu
KS5nZXQoKSwgZGVzdGluYXRpb25Qcm90b2NvbCwgZGVzdGluYXRpb25Ib3N0LCBhbGxvd0Rlc3Rp
bmF0aW9uU3ViZG9tYWlucyk7CisgICAgU2VjdXJpdHlQb2xpY3k6OnJlbW92ZU9yaWdpbkFjY2Vz
c0FsbG93bGlzdEVudHJ5KFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKHNvdXJjZU9y
aWdpbikuZ2V0KCksIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGRlc3RpbmF0aW9uSG9zdCwgYWxsb3dE
ZXN0aW5hdGlvblN1YmRvbWFpbnMpOwogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3Vy
ZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0
RW50cnkgeyBzb3VyY2VPcmlnaW4sIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGRlc3RpbmF0aW9uSG9z
dCwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMgfSwgMCk7CiB9CiAKIHZvaWQgSW5qZWN0ZWRC
dW5kbGU6OnJlc2V0T3JpZ2luQWNjZXNzV2hpdGVsaXN0cygpCiB7Ci0gICAgU2VjdXJpdHlQb2xp
Y3k6OnJlc2V0T3JpZ2luQWNjZXNzV2hpdGVsaXN0cygpOworICAgIFNlY3VyaXR5UG9saWN5Ojpy
ZXNldE9yaWdpbkFjY2Vzc0FsbG93bGlzdHMoKTsKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNz
YWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJlc2V0T3JpZ2luQWNjZXNzV2hp
dGVsaXN0cyB7IH0sIDApOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29j
b2EvV2ViUHJvY2Vzc0NvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0JKHJldmlzaW9uIDI2MjkxNSkKKysrIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTIxMiw3ICsyMTIsNyBAQCB2b2lkIFdlYlByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6
ZVdlYlByCiAgICAgW05TVVJMQ2FjaGUgc2V0U2hhcmVkVVJMQ2FjaGU6dXJsQ2FjaGUuZ2V0KCld
OwogCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIFdlYkNvcmU6OkZvbnRDYWNoZTo6c2V0Rm9udFdo
aXRlbGlzdChwYXJhbWV0ZXJzLmZvbnRXaGl0ZWxpc3QpOworICAgIFdlYkNvcmU6OkZvbnRDYWNo
ZTo6c2V0Rm9udEFsbG93bGlzdChwYXJhbWV0ZXJzLmZvbnRXaGl0ZWxpc3QpOwogI2VuZGlmCiAK
ICAgICBtX2NvbXBvc2l0aW5nUmVuZGVyU2VydmVyUG9ydCA9IFdURk1vdmUocGFyYW1ldGVycy5h
Y2NlbGVyYXRlZENvbXBvc2l0aW5nUG9ydCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdl
TG9nCShyZXZpc2lvbiAyNjI5MTUpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAyMC0wNi0xMSAgQmV0aCBEYWtp
biAgPGJkYWtpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVwbGFjZSBpbnN0YW5jZXMgb2Ygd2hp
dGVsaXN0IGluIFdlYkNvcmUgd2l0aCBhbGxvd2xpc3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzA2OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAo
K1tXZWJWaWV3IF9hZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeVdpdGhTb3VyY2VPcmlnaW46
ZGVzdGluYXRpb25Qcm90b2NvbDpkZXN0aW5hdGlvbkhvc3Q6YWxsb3dEZXN0aW5hdGlvblN1YmRv
bWFpbnM6XSk6CisgICAgICAgICgrW1dlYlZpZXcgX3JlbW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlz
dEVudHJ5V2l0aFNvdXJjZU9yaWdpbjpkZXN0aW5hdGlvblByb3RvY29sOmRlc3RpbmF0aW9uSG9z
dDphbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWluczpdKToKKyAgICAgICAgKCtbV2ViVmlldyBfcmVz
ZXRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RzXSk6CisgICAgICAgICgrW1dlYlZpZXcgX3NldEZvbnRX
aGl0ZWxpc3Q6XSk6CisKIDIwMjAtMDYtMTEgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxl
LmNvbT4KIAogICAgICAgICBbSVBDXSBBZG9wdCBlbnVtIGNsYXNzIGZvciBEcmFnU291cmNlQWN0
aW9uCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCShy
ZXZpc2lvbiAyNjI5MTUpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZp
ZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ3MjUsMTcgKzQ3MjUsMTcgQEAgLSAoTlNQYXN0ZWJv
YXJkICopX2luc2VydGlvblBhc3RlYm9hcmQKIAogKyAodm9pZClfYWRkT3JpZ2luQWNjZXNzV2hp
dGVsaXN0RW50cnlXaXRoU291cmNlT3JpZ2luOihOU1N0cmluZyAqKXNvdXJjZU9yaWdpbiBkZXN0
aW5hdGlvblByb3RvY29sOihOU1N0cmluZyAqKWRlc3RpbmF0aW9uUHJvdG9jb2wgZGVzdGluYXRp
b25Ib3N0OihOU1N0cmluZyAqKWRlc3RpbmF0aW9uSG9zdCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9t
YWluczooQk9PTClhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucwogewotICAgIFdlYkNvcmU6OlNl
Y3VyaXR5UG9saWN5OjphZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhzb3VyY2VPcmlnaW4pLmdldCgpLCBkZXN0aW5h
dGlvblByb3RvY29sLCBkZXN0aW5hdGlvbkhvc3QsIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5z
KTsKKyAgICBXZWJDb3JlOjpTZWN1cml0eVBvbGljeTo6YWRkT3JpZ2luQWNjZXNzQWxsb3dsaXN0
RW50cnkoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcoc291cmNlT3Jp
Z2luKS5nZXQoKSwgZGVzdGluYXRpb25Qcm90b2NvbCwgZGVzdGluYXRpb25Ib3N0LCBhbGxvd0Rl
c3RpbmF0aW9uU3ViZG9tYWlucyk7CiB9CiAKICsgKHZvaWQpX3JlbW92ZU9yaWdpbkFjY2Vzc1do
aXRlbGlzdEVudHJ5V2l0aFNvdXJjZU9yaWdpbjooTlNTdHJpbmcgKilzb3VyY2VPcmlnaW4gZGVz
dGluYXRpb25Qcm90b2NvbDooTlNTdHJpbmcgKilkZXN0aW5hdGlvblByb3RvY29sIGRlc3RpbmF0
aW9uSG9zdDooTlNTdHJpbmcgKilkZXN0aW5hdGlvbkhvc3QgYWxsb3dEZXN0aW5hdGlvblN1YmRv
bWFpbnM6KEJPT0wpYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMKIHsKLSAgICBXZWJDb3JlOjpT
ZWN1cml0eVBvbGljeTo6cmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcoc291cmNlT3JpZ2luKS5nZXQoKSwgZGVz
dGluYXRpb25Qcm90b2NvbCwgZGVzdGluYXRpb25Ib3N0LCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9t
YWlucyk7CisgICAgV2ViQ29yZTo6U2VjdXJpdHlQb2xpY3k6OnJlbW92ZU9yaWdpbkFjY2Vzc0Fs
bG93bGlzdEVudHJ5KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKHNv
dXJjZU9yaWdpbikuZ2V0KCksIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGRlc3RpbmF0aW9uSG9zdCwg
YWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOwogfQogCiArICh2b2lkKV9yZXNldE9yaWdpbkFj
Y2Vzc1doaXRlbGlzdHMKIHsKLSAgICBXZWJDb3JlOjpTZWN1cml0eVBvbGljeTo6cmVzZXRPcmln
aW5BY2Nlc3NXaGl0ZWxpc3RzKCk7CisgICAgV2ViQ29yZTo6U2VjdXJpdHlQb2xpY3k6OnJlc2V0
T3JpZ2luQWNjZXNzQWxsb3dsaXN0cygpOwogfQogCiAtIChCT09MKV9pc1ZpZXdWaXNpYmxlCkBA
IC0xMDI1Miw3ICsxMDI1Miw3IEBAICsgKHZvaWQpX3NldEZvbnRXaGl0ZWxpc3Q6KE5TQXJyYXkg
Kil3aGkKICNpZiAhUExBVEZPUk0oTUFDKQogICAgIFVOVVNFRF9QQVJBTSh3aGl0ZWxpc3QpOwog
I2Vsc2UKLSAgICBXZWJDb3JlOjpGb250Q2FjaGU6OnNldEZvbnRXaGl0ZWxpc3QobWFrZVZlY3Rv
cjxTdHJpbmc+KHdoaXRlbGlzdCkpOworICAgIFdlYkNvcmU6OkZvbnRDYWNoZTo6c2V0Rm9udEFs
bG93bGlzdChtYWtlVmVjdG9yPFN0cmluZz4od2hpdGVsaXN0KSk7CiAjZW5kaWYKIH0KIApJbmRl
eDogU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAJKHJldmlzaW9uIDI2MjkxNSkKKysrIFNv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MTU2
LDE5ICs3MTU2LDE5IEBAIEhSRVNVTFQgV2ViVmlldzo6aW52YWxpZGF0ZUJhY2tpbmdTdG9yZSgK
IAogSFJFU1VMVCBXZWJWaWV3OjphZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShfSW5fIEJT
VFIgc291cmNlT3JpZ2luLCBfSW5fIEJTVFIgZGVzdGluYXRpb25Qcm90b2NvbCwgX0luXyBCU1RS
IGRlc3RpbmF0aW9uSG9zdCwgQk9PTCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucykKIHsKLSAg
ICBTZWN1cml0eVBvbGljeTo6YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoU2VjdXJpdHlP
cmlnaW46OmNyZWF0ZUZyb21TdHJpbmcodG9TdHJpbmcoc291cmNlT3JpZ2luKSkuZ2V0KCksIHRv
U3RyaW5nKGRlc3RpbmF0aW9uUHJvdG9jb2wpLCB0b1N0cmluZyhkZXN0aW5hdGlvbkhvc3QpLCBh
bGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7CisgICAgU2VjdXJpdHlQb2xpY3k6OmFkZE9yaWdp
bkFjY2Vzc0FsbG93bGlzdEVudHJ5KFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKHRv
U3RyaW5nKHNvdXJjZU9yaWdpbikpLmdldCgpLCB0b1N0cmluZyhkZXN0aW5hdGlvblByb3RvY29s
KSwgdG9TdHJpbmcoZGVzdGluYXRpb25Ib3N0KSwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMp
OwogICAgIHJldHVybiBTX09LOwogfQogCiBIUkVTVUxUIFdlYlZpZXc6OnJlbW92ZU9yaWdpbkFj
Y2Vzc1doaXRlbGlzdEVudHJ5KF9Jbl8gQlNUUiBzb3VyY2VPcmlnaW4sIF9Jbl8gQlNUUiBkZXN0
aW5hdGlvblByb3RvY29sLCBfSW5fIEJTVFIgZGVzdGluYXRpb25Ib3N0LCBCT09MIGFsbG93RGVz
dGluYXRpb25TdWJkb21haW5zKQogewotICAgIFNlY3VyaXR5UG9saWN5OjpyZW1vdmVPcmlnaW5B
Y2Nlc3NXaGl0ZWxpc3RFbnRyeShTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyh0b1N0
cmluZyhzb3VyY2VPcmlnaW4pKS5nZXQoKSwgdG9TdHJpbmcoZGVzdGluYXRpb25Qcm90b2NvbCks
IHRvU3RyaW5nKGRlc3RpbmF0aW9uSG9zdCksIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsK
KyAgICBTZWN1cml0eVBvbGljeTo6cmVtb3ZlT3JpZ2luQWNjZXNzQWxsb3dsaXN0RW50cnkoU2Vj
dXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcodG9TdHJpbmcoc291cmNlT3JpZ2luKSkuZ2V0
KCksIHRvU3RyaW5nKGRlc3RpbmF0aW9uUHJvdG9jb2wpLCB0b1N0cmluZyhkZXN0aW5hdGlvbkhv
c3QpLCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAK
IEhSRVNVTFQgV2ViVmlldzo6cmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RzKCkKIHsKLSAgICBT
ZWN1cml0eVBvbGljeTo6cmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RzKCk7CisgICAgU2VjdXJp
dHlQb2xpY3k6OnJlc2V0T3JpZ2luQWNjZXNzQWxsb3dsaXN0cygpOwogICAgIHJldHVybiBTX09L
OwogfQogIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>