<?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>200102</bug_id>
          
          <creation_ts>2019-07-24 17:16:24 -0700</creation_ts>
          <short_desc>Move FormData zip file generation to NetworkProcess and enable it for all WebKit clients for uploading directories</short_desc>
          <delta_ts>2019-08-04 11:20:52 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>benjamin</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>japhet</cc>
    
    <cc>tsavell</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1555585</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-07-24 17:16:24 -0700</bug_when>
    <thetext>Move FormData zip file generation to NetworkProcess and enable it for all WebKit clients for uploading directories</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1555591</commentid>
    <comment_count>1</comment_count>
      <attachid>374838</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-07-24 17:32:42 -0700</bug_when>
    <thetext>Created attachment 374838
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1557390</commentid>
    <comment_count>2</comment_count>
      <attachid>375251</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-07-31 14:49:59 -0700</bug_when>
    <thetext>Created attachment 375251
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1557397</commentid>
    <comment_count>3</comment_count>
      <attachid>375253</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-07-31 14:53:53 -0700</bug_when>
    <thetext>Created attachment 375253
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1557415</commentid>
    <comment_count>4</comment_count>
      <attachid>375253</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2019-07-31 15:22:39 -0700</bug_when>
    <thetext>Comment on attachment 375253
Patch

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

&gt; Source/WebCore/ChangeLog:17
&gt; +        Since we no longer need to do these file operations in the WebProcess, I am also reverting r245322 and r246077 which tightens the sandbox.

So much wonderful code deletion!

&gt; Source/WebCore/platform/network/mac/BlobDataFileReferenceMac.mm:53
&gt;  namespace WebCore {

This file should probably be renamed BlobDataFileReferenceCocoa.mm (it&apos;s used by iOS, too, right?)

&gt; Source/WebKit/WebProcess/com.apple.WebProcess.sb.in:-591
&gt; -    (global-name &quot;com.apple.FileCoordination&quot;))

Good!

&gt; Source/WebKit/WebProcess/com.apple.WebProcess.sb.in:-983
&gt; -        (syscall-number SYS_getgroups)

Better!

&gt; Source/WebKit/WebProcess/com.apple.WebProcess.sb.in:-992
&gt; -        (syscall-number SYS_fstat64_extended)

Great!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1557461</commentid>
    <comment_count>5</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-07-31 17:23:14 -0700</bug_when>
    <thetext>(In reply to Brent Fulgham from comment #4)
&gt; Comment on attachment 375253 [details]
&gt; Patch
&gt; This file should probably be renamed BlobDataFileReferenceCocoa.mm (it&apos;s
&gt; used by iOS, too, right?)
I propose doing this in a followup patch. There may come a day when this is needed to merge to a branch, and I&apos;d like to minimize file renaming here.

r=you, Brent?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1557477</commentid>
    <comment_count>6</comment_count>
      <attachid>375253</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-07-31 18:17:15 -0700</bug_when>
    <thetext>Comment on attachment 375253
Patch

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

Looks great to me. Not sure how well we cover test cases; I have a few ideas about refinements.

&gt; Source/WebCore/platform/network/FormData.cpp:368
&gt; +            if (fileModificationTime-&gt;secondsSinceEpoch().secondsAs&lt;time_t&gt;() != fileData-&gt;expectedFileModificationTime-&gt;secondsSinceEpoch().secondsAs&lt;time_t&gt;())

I see that this code is similar (copied/pasted?) to code we already have. But I do have a question about it. Why is it correct to convert/round both of these values to time_t before comparing them? Is it important to ignore insignificant differences? I assume that on most Unix-like systems what’s actually stored in the file system is a time_t, so if we don’t convert to a time_t there is some risk that two matching times might compare as not equal, perhaps. But if that’s right, then is this platform-specific in some way? Seems like we might need to write a helper function so we can have a place to put a comment explaining the technique.

&gt; Source/WebCore/platform/network/FormData.cpp:379
&gt; +    return { *this, WTFMove(generatedFiles) };

Since the filenames are all stored in the EncodedFileData, kind of seems like we could just have a flag that says &quot;this one was generated&quot; and avoid having to have a separate vector of strings.

&gt; Source/WebCore/platform/network/FormData.h:205
&gt; +    WEBCORE_EXPORT std::pair&lt;Ref&lt;FormData&gt;, Vector&lt;String&gt;&gt; generateFilesForUpload();

We have three choices here: std::pair, std::tuple, custom struct with named elements. Is std::pair the best of the three?

Also, I like the idea of a GeneratedFile object which holds a path name and which deletes the file as a side effect when it’s deleted. We could keep moving it around from place to place, but then when it’s deleted, so is the file. Maybe too subtle? I think it makes it less likely we might forget to delete a file in some code path, but more likely that the delete could happen on some strange thread? If the only reason for the vector is to remember to delete the files, then we could even make the string private.

&gt; Source/WebCore/platform/network/FormData.h:295
&gt; +String generateFileForUpload(const String&amp;);

This function is a bit mysterious. I think this takes a directory and turns it into a file. But that’s not clear from the name, nor is it clear what the argument and return value represent.

&gt; Source/WebCore/platform/network/mac/BlobDataFileReferenceMac.mm:31
&gt; +#include &quot;FormData.h&quot;

I don’t see any use of FormData in this file. What did I miss?

&gt; Source/WebCore/platform/network/mac/BlobDataFileReferenceMac.mm:61
&gt;          // The archive is put into a subdirectory of temporary directory for historic reasons. Changing this will require WebCore to change at the same time.

This comment is peculiar. The comment is in WebCore (probably was elsewhere at some point) but says &quot;will require WebCore to change&quot;.

I wonder what these historic reasons are.

&gt; Source/WebCore/platform/network/mac/BlobDataFileReferenceMac.mm:91
&gt; +        m_replacementPath = WTFMove(generatedFile);

Not obvious to me where this file is deleted, but I suppose it’s nothing new, just not something could quickly see from looking over the code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1557524</commentid>
    <comment_count>7</comment_count>
      <attachid>375253</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-07-31 21:31:36 -0700</bug_when>
    <thetext>Comment on attachment 375253
Patch

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

&gt;&gt; Source/WebCore/platform/network/FormData.cpp:368
&gt;&gt; +            if (fileModificationTime-&gt;secondsSinceEpoch().secondsAs&lt;time_t&gt;() != fileData-&gt;expectedFileModificationTime-&gt;secondsSinceEpoch().secondsAs&lt;time_t&gt;())
&gt; 
&gt; I see that this code is similar (copied/pasted?) to code we already have. But I do have a question about it. Why is it correct to convert/round both of these values to time_t before comparing them? Is it important to ignore insignificant differences? I assume that on most Unix-like systems what’s actually stored in the file system is a time_t, so if we don’t convert to a time_t there is some risk that two matching times might compare as not equal, perhaps. But if that’s right, then is this platform-specific in some way? Seems like we might need to write a helper function so we can have a place to put a comment explaining the technique.

I&apos;ll move them to a shared helper function, but I&apos;d rather match existing behavior in this patch. I think the intent is that if the file has been written to since we said to upload it, then don&apos;t upload it. I don&apos;t think accuracy of time systems will change that significantly, but I see no reason to change it.

&gt;&gt; Source/WebCore/platform/network/FormData.cpp:379
&gt;&gt; +    return { *this, WTFMove(generatedFiles) };
&gt; 
&gt; Since the filenames are all stored in the EncodedFileData, kind of seems like we could just have a flag that says &quot;this one was generated&quot; and avoid having to have a separate vector of strings.

That led to confusion about what to do when encoding and decoding the flag (which is now only created and used in the NetworkProcess, but the rest of the members are serialized) and when creating a FormDataElement (should it be generated or not? what does generated mean?). I intentionally removed the flag because it&apos;s something that&apos;s only used when uploading.

&gt;&gt; Source/WebCore/platform/network/FormData.h:205
&gt;&gt; +    WEBCORE_EXPORT std::pair&lt;Ref&lt;FormData&gt;, Vector&lt;String&gt;&gt; generateFilesForUpload();
&gt; 
&gt; We have three choices here: std::pair, std::tuple, custom struct with named elements. Is std::pair the best of the three?
&gt; 
&gt; Also, I like the idea of a GeneratedFile object which holds a path name and which deletes the file as a side effect when it’s deleted. We could keep moving it around from place to place, but then when it’s deleted, so is the file. Maybe too subtle? I think it makes it less likely we might forget to delete a file in some code path, but more likely that the delete could happen on some strange thread? If the only reason for the vector is to remember to delete the files, then we could even make the string private.

I&apos;ll make a struct. I like named things.

&gt;&gt; Source/WebCore/platform/network/FormData.h:295
&gt;&gt; +String generateFileForUpload(const String&amp;);
&gt; 
&gt; This function is a bit mysterious. I think this takes a directory and turns it into a file. But that’s not clear from the name, nor is it clear what the argument and return value represent.

I&apos;m planning to rename it to createZipArchive and put it in FileSystem.h.

&gt;&gt; Source/WebCore/platform/network/mac/BlobDataFileReferenceMac.mm:31
&gt;&gt; +#include &quot;FormData.h&quot;
&gt; 
&gt; I don’t see any use of FormData in this file. What did I miss?

The declaration for generateFileForUpload is currently in FormData.h. This is a bad place for that code, but I was trying to minimize changes. I&apos;ll move it to FileSystem.h instead.

&gt;&gt; Source/WebCore/platform/network/mac/BlobDataFileReferenceMac.mm:61
&gt;&gt;          // The archive is put into a subdirectory of temporary directory for historic reasons. Changing this will require WebCore to change at the same time.
&gt; 
&gt; This comment is peculiar. The comment is in WebCore (probably was elsewhere at some point) but says &quot;will require WebCore to change&quot;.
&gt; 
&gt; I wonder what these historic reasons are.

This was copied from a function named createZipArchive in Safari.

&gt;&gt; Source/WebCore/platform/network/mac/BlobDataFileReferenceMac.mm:91
&gt;&gt; +        m_replacementPath = WTFMove(generatedFile);
&gt; 
&gt; Not obvious to me where this file is deleted, but I suppose it’s nothing new, just not something could quickly see from looking over the code.

This is existing behavior. It&apos;s deleted in ~BlobDataFileReference</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1557527</commentid>
    <comment_count>8</comment_count>
      <attachid>375253</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-07-31 21:43:02 -0700</bug_when>
    <thetext>Comment on attachment 375253
Patch

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

&gt;&gt;&gt; Source/WebCore/platform/network/FormData.h:295
&gt;&gt;&gt; +String generateFileForUpload(const String&amp;);
&gt;&gt; 
&gt;&gt; This function is a bit mysterious. I think this takes a directory and turns it into a file. But that’s not clear from the name, nor is it clear what the argument and return value represent.
&gt; 
&gt; I&apos;m planning to rename it to createZipArchive and put it in FileSystem.h.

createTemporaryZipArchive is more accurate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1557537</commentid>
    <comment_count>9</comment_count>
      <attachid>375293</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-07-31 22:43:05 -0700</bug_when>
    <thetext>Created attachment 375293
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1557587</commentid>
    <comment_count>10</comment_count>
      <attachid>375293</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-08-01 06:37:31 -0700</bug_when>
    <thetext>Comment on attachment 375293
Patch

Rejecting attachment 375293 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-03&apos;, &apos;validate-changelog&apos;, &apos;--check-oops&apos;, &apos;--non-interactive&apos;, 375293, &apos;--port=mac&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

ChangeLog entry in Source/WTF/ChangeLog contains OOPS!.

Full output: https://webkit-queues.webkit.org/results/12846584</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1557594</commentid>
    <comment_count>11</comment_count>
      <attachid>375308</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-08-01 07:15:30 -0700</bug_when>
    <thetext>Created attachment 375308
patch without oops</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1557776</commentid>
    <comment_count>12</comment_count>
      <attachid>375308</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-08-01 15:29:59 -0700</bug_when>
    <thetext>Comment on attachment 375308
patch without oops

Clearing flags on attachment: 375308

Committed r248139: &lt;https://trac.webkit.org/changeset/248139&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1557777</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-08-01 15:30:01 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1557781</commentid>
    <comment_count>14</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-08-01 15:33:09 -0700</bug_when>
    <thetext>&lt;rdar://problem/53835700&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1557931</commentid>
    <comment_count>15</comment_count>
    <who name="Truitt Savell">tsavell</who>
    <bug_when>2019-08-02 08:05:26 -0700</bug_when>
    <thetext>It looks like the changes in https://trac.webkit.org/changeset/248139/webkit

caused 1 API test timeout

Build:
https://build.webkit.org/builders/Apple%20Mojave%20Debug%20WK2%20%28Tests%29/builds/3871

log
https://build.webkit.org/builders/Apple%20Mojave%20Debug%20WK2%20%28Tests%29/builds/3871/steps/run-api-tests/logs/stdio

I was able to reproduce this locally by just running the test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1558005</commentid>
    <comment_count>16</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-08-02 11:24:41 -0700</bug_when>
    <thetext>That was supposed to be removed as part of reverting r245322 with this.  I&apos;ll fix it after verifying the fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1558372</commentid>
    <comment_count>17</comment_count>
      <attachid>375308</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-08-04 11:20:52 -0700</bug_when>
    <thetext>Comment on attachment 375308
patch without oops

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

&gt; Source/WTF/wtf/cocoa/FileSystemCocoa.mm:88
&gt; +            temporaryFile = String::fromUTF8(archivePath);

Just realized this should use stringFromFileSystemRepresentation instead of String::fromUTF8. This is probably a frequent error in our existing file system code. Or we could get rid of stringFromFileSystemRepresentation if it’s always just the same thing and isn’t needed?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>374838</attachid>
            <date>2019-07-24 17:32:42 -0700</date>
            <delta_ts>2019-07-31 14:49:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200102-20190724173240.patch</filename>
            <type>text/plain</type>
            <size>53808</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ3NzU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmQxZTMzMTliOTVjMzk1
OWI1ODM2NGRmM2NjODZlZjg1YzQxMzUwMy4uYTgwNzkxZGU0ZDE1NDY4ZTc5Njk5ZmM1NWNlOTc2
Yjg2ZTMxMWQ1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDE5LTA3LTI0ICBBbGV4
IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW92ZSBG
b3JtRGF0YSB6aXAgZmlsZSBnZW5lcmF0aW9uIHRvIE5ldHdvcmtQcm9jZXNzIGFuZCBlbmFibGUg
aXQgZm9yIGFsbCBXZWJLaXQgY2xpZW50cyBmb3IgdXBsb2FkaW5nIGRpcmVjdG9yaWVzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDAxMDIKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzUzMjc1MTE0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRvIGVuYWJsZSBkaXJlY3RvcnkgdXBsb2FkaW5nIGluIFdl
YktpdDIsIHdlIGV4dGVuZGVkIFdlYktpdDEncyBtb2RlbCBvZiBhc2tpbmcgdGhlIGFwcGxpY2F0
aW9uIHRvIGdlbmVyYXRlIGEgZmlsZSBmb3IgdXBsb2FkaW5nLgorICAgICAgICBUaGlzIG1lYW5z
IHRoZSBXZWJQcm9jZXNzIG5lZWRlZCBhY2Nlc3MgdG8gZXZlcnl0aGluZyBuZWNlc3NhcnkgdG8g
emlwIGEgd2hvbGUgZGlyZWN0b3J5LCBhbmQgY2xpZW50cyB0aGF0IGhhdmUgbm90IGltcGxlbWVu
dGVkCisgICAgICAgIHRoZSBzdHJhbmdlIFdLQnVuZGxlUGFnZVVJQ2xpZW50IGNhbGxiYWNrcyB3
b24ndCBiZSBhYmxlIHRvIHVwbG9hZCBkaXJlY3Rvcmllcy4gIFNhZmFyaSdzIGltcGxlbWVudGF0
aW9uIGhhZCBhbHJlYWR5IGJlZW4gY29waWVkCisgICAgICAgIHRvIEJsb2JEYXRhRmlsZVJlZmVy
ZW5jZTo6Z2VuZXJhdGVSZXBsYWNlbWVudEZpbGUsIHNvIEkgcmV1c2VkIHRoYXQgY29kZSB0byBk
byB0aGUgemlwcGluZy4gIEluc3RlYWQgb2YgYSBjb21wbGljYXRlZCBtb2RlbCBvZgorICAgICAg
ICBrZWVwaW5nIHRyYWNrIG9mIGEgZmlsZW5hbWUsIHBvc3NpYmx5IGEgZ2VuZXJhdGVkIGZpbGVu
YW1lLCBhbmQgd2hldGhlciB3ZSB0aGluayB3ZSBvd24gdGhlIGZpbGUgb3Igbm90IGFuZCBoYXZp
bmcgbm9ib2R5IGNsZWFuIHVwLAorICAgICAgICB3ZSBub3cgZG8gdGhlIGdlbmVyYXRpb24sIHVz
ZSwgYW5kIGNsZWFuaW5nIHVwIGluIHRoZSBuZXR3b3JrIHByb2Nlc3Mgc3RhcnRpbmcgd2l0aCBh
IG5ldyBmdW5jdGlvbiBnZW5lcmF0ZUZpbGVzRm9yVXBsb2FkLgorICAgICAgICBUaGlzIHJlbW92
ZXMgdW5pbXBsZW1lbnRlZCBTUEkgaW4gV2ViVUlEZWxlZ2F0ZVByaXZhdGUgaW4gV2ViS2l0TGVn
YWN5IGFuZCBzdG9wcyBjYWxsaW5nIHRoZSBXS0J1bmRsZVBhZ2VVSUNsaWVudCByZWxhdGVkIHRv
IHVwbG9hZAorICAgICAgICBmaWxlIGdlbmVyYXRpb24gYW5kIHJlcGxhY2VzIHRoZW0gd2l0aCBh
dXRvbWF0aWMgYmVoYXZpb3IgZXF1aXZhbGVudCB0byBTYWZhcmkncyBpbXBsZW1lbnRhdGlvbiBv
ZiB0aGUgV0tCdW5kbGVQYWdlVUlDbGllbnQgY2FsbHMuCisgICAgICAgIFNpbmNlIHdlIG5vIGxv
bmdlciBuZWVkIHRvIGRvIHRoZXNlIGZpbGUgb3BlcmF0aW9ucyBpbiB0aGUgV2ViUHJvY2Vzcywg
SSBhbSBhbHNvIHJldmVydGluZyByMjQ1MzIyIGFuZCByMjQ2MDc3IHdoaWNoIHRpZ2h0ZW5zIHRo
ZSBzYW5kYm94LgorCisgICAgICAgIEkgaW50ZW5kIHRvIHdyaXRlIGFuIGVuZC10by1lbmQgdW5p
dCB0ZXN0IHZlcmlmeWluZyBkaXJlY3RvcmllcyBhcmUgemlwcGVkIGFuZCB1cGxvYWRlZCBzdWNj
ZXNzZnVsbHksIGJ1dCBmZWVsIGZyZWUgdG8gcmV2aWV3IHRoZSBjaGFuZ2Ugd2l0aG91dCB0aGUg
dGVzdC4KKyAgICAgICAgSSB3aWxsIGFkZCBzdWNoIGEgdGVzdCBiZWZvcmUgbGFuZGluZyB0aGlz
IGNoYW5nZS4gIFVudGlsIHRoZW4sIHlvdSBjYW4ga25vdyBJIG1hbnVhbGx5IHZlcmlmaWVkIHRo
ZSBidWcgaW4gdGhlIHJhZGFyIGlzIGZpeGVkIHdpdGggdGhpcyBjaGFuZ2UuCisKKyAgICAgICAg
KiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJv
ZHk6OmV4dHJhY3QpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojpib2R5QXNGb3JtRGF0
YSBjb25zdCk6CisgICAgICAgICogbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZvcm1TdWJtaXNzaW9uOjpjcmVhdGUpOgorICAgICAgICAqIGxvYWRlci9GcmFt
ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6c3VibWl0Rm9ybSk6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZERpZmZlcmVudERvY3VtZW50SXRl
bSk6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VMb2FkZXI6OmNsZWFudXBGb3JFcnJvcik6CisgICAgICAgICogcGFnZS9DaHJv
bWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50OjpzaG91bGRSZXBsYWNlV2l0
aEdlbmVyYXRlZEZpbGVGb3JVcGxvYWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q2hy
b21lQ2xpZW50OjpnZW5lcmF0ZVJlcGxhY2VtZW50RmlsZSk6IERlbGV0ZWQuCisgICAgICAgICog
cGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRh
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1EYXRhOjpGb3JtRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpGb3JtRGF0YTo6fkZvcm1EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1EYXRh
OjpjcmVhdGVNdWx0aVBhcnQpOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURhdGFFbGVtZW50Ojps
ZW5ndGhJbkJ5dGVzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1EYXRhOjphcHBlbmRG
aWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1EYXRhOjphcHBlbmRGaWxlUmFuZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6Rm9ybURhdGE6OmFwcGVuZE11bHRpUGFydEZpbGVWYWx1ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpGb3JtRGF0YTo6YXBwZW5kTXVsdGlQYXJ0S2V5VmFsdWVQYWlySXRlbXMp
OgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURhdGE6OnJlc29sdmVCbG9iUmVmZXJlbmNlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpnZW5lcmF0ZUZpbGVGb3JVcGxvYWQpOgorICAgICAgICAoV2ViQ29y
ZTo6Rm9ybURhdGE6OmdlbmVyYXRlRmlsZXNGb3JVcGxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6
Rm9ybURhdGE6OmdlbmVyYXRlRmlsZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Rm9y
bURhdGE6Omhhc0dlbmVyYXRlZEZpbGVzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkZvcm1EYXRhOjpoYXNPd25lZEdlbmVyYXRlZEZpbGVzIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkZvcm1EYXRhOjpyZW1vdmVHZW5lcmF0ZWRGaWxlc0lmTmVlZGVkKTog
RGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmg6CisgICAgICAg
IChXZWJDb3JlOjpGb3JtRGF0YUVsZW1lbnQ6OkZvcm1EYXRhRWxlbWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpGb3JtRGF0YUVsZW1lbnQ6OkVuY29kZWRGaWxlRGF0YTo6aXNvbGF0ZWRDb3B5IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1EYXRhRWxlbWVudDo6RW5jb2RlZEZpbGVEYXRh
OjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1EYXRhRWxlbWVudDo6
RW5jb2RlZEZpbGVEYXRhOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURh
dGFFbGVtZW50OjpFbmNvZGVkRmlsZURhdGE6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFk
dmFuY2VDdXJyZW50U3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6OmZvcm1DcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6Zm9ybUZpbmFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUhU
VFBCb2R5Q0ZSZWFkU3RyZWFtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9CbG9i
RGF0YUZpbGVSZWZlcmVuY2VNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpnZW5lcmF0ZUZpbGVG
b3JVcGxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpnZW5l
cmF0ZVJlcGxhY2VtZW50RmlsZSk6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpzZW5kKToKKwogMjAxOS0wNy0yMyAg
S29uc3RhbnRpbiBUb2thcmV2ICA8YW5udWxlbkB5YW5kZXgucnU+CiAKICAgICAgICAgSW1hZ2VE
ZWNvZGVyRGlyZWN0MkQ6OmhvdFNwb3QoKSBzaG91bGQgcmV0dXJuIFdURjo6bnVsbG9wdCBpbnN0
ZWFkIG9mIGRlZmF1bHQgY29uc3RydWN0ZWQgdmFsdWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZWQyNzZmNmM4MDU4
OGI1YjM5NzUzNDQ2NWY0YWVkYzRkMDE1OTAwYS4uMTIyZTg5M2FjY2RiMjdkYzBmMjYzYjQxYzRj
MzZiNDhlYjdjMjFjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAxOS0wNy0yNCAgQWxl
eCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIE1vdmUg
Rm9ybURhdGEgemlwIGZpbGUgZ2VuZXJhdGlvbiB0byBOZXR3b3JrUHJvY2VzcyBhbmQgZW5hYmxl
IGl0IGZvciBhbGwgV2ViS2l0IGNsaWVudHMgZm9yIHVwbG9hZGluZyBkaXJlY3RvcmllcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwMTAyCisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS81MzI3NTExND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRQYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZFBh
cmFtZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0Zvcm1EYXRh
UmVmZXJlbmNlLmg6CisgICAgICAgIChJUEM6OkZvcm1EYXRhUmVmZXJlbmNlOjplbmNvZGUgY29u
c3QpOgorICAgICAgICAqIFJlc291cmNlcy9TYW5kYm94UHJvZmlsZXMvaW9zL2NvbS5hcHBsZS5X
ZWJLaXQuTmV0d29ya2luZy5zYjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9BUElJbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5oOgorICAgICAgICAoQVBJOjpJbmpl
Y3RlZEJ1bmRsZTo6UGFnZVVJQ2xpZW50OjpzaG91bGRHZW5lcmF0ZUZpbGVGb3JVcGxvYWQpOiBE
ZWxldGVkLgorICAgICAgICAoQVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZVVJQ2xpZW50OjpnZW5l
cmF0ZUZpbGVGb3JVcGxvYWQpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpJbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudDo6c2hvdWxkR2VuZXJhdGVGaWxlRm9yVXBsb2Fk
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQ6
OmdlbmVyYXRlRmlsZUZvclVwbG9hZCk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViQ2hyb21lQ2xpZW50OjpzaG91bGRSZXBsYWNlV2l0aEdlbmVyYXRlZEZpbGVGb3JV
cGxvYWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OmdlbmVy
YXRlUmVwbGFjZW1lbnRGaWxlKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29tLmFw
cGxlLldlYlByb2Nlc3Muc2IuaW46CisKIDIwMTktMDctMjMgIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBNb3ZlIGphdmFTY3JpcHRDb25maWd1
cmF0aW9uRGlyZWN0b3J5IFNQSSBmcm9tIF9XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiB0byBX
S1Byb2Nlc3NQb29sUHJpdmF0ZSB0byBtYWtlIGl0IHJ1bnRpbWUgc3dpdGNoYWJsZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDQ1MGU5OTc4ZWU5MjhhM2RlYThhYWEyNWQ3YmYwYTBl
YzEzMDQxNTcuLjUwNTJiZGI0OGIxNjk3MGE5NDgzYTJlZjMxYzk4Y2QzNWVjZWZkYmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxOS0wNy0yNCAgQWxl
eCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIE1vdmUg
Rm9ybURhdGEgemlwIGZpbGUgZ2VuZXJhdGlvbiB0byBOZXR3b3JrUHJvY2VzcyBhbmQgZW5hYmxl
IGl0IGZvciBhbGwgV2ViS2l0IGNsaWVudHMgZm9yIHVwbG9hZGluZyBkaXJlY3RvcmllcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwMTAyCisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS81MzI3NTExND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIERlZmF1bHREZWxlZ2F0ZXMvV2ViRGVmYXVsdFVJRGVs
ZWdhdGUubW06CisgICAgICAgICgtW1dlYkRlZmF1bHRVSURlbGVnYXRlIHdlYlZpZXc6c2hvdWxk
UmVwbGFjZVVwbG9hZEZpbGU6dXNpbmdHZW5lcmF0ZWRGaWxlbmFtZTpdKTogRGVsZXRlZC4KKyAg
ICAgICAgKC1bV2ViRGVmYXVsdFVJRGVsZWdhdGUgd2ViVmlldzpnZW5lcmF0ZVJlcGxhY2VtZW50
RmlsZTpdKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW06CisgICAg
ICAgIChXZWJDaHJvbWVDbGllbnQ6OnNob3VsZFJlcGxhY2VXaXRoR2VuZXJhdGVkRmlsZUZvclVw
bG9hZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDaHJvbWVDbGllbnQ6OmdlbmVyYXRlUmVwbGFj
ZW1lbnRGaWxlKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJWaWV3L1dlYlVJRGVsZWdhdGVQcml2
YXRlLmg6CisKIDIwMTktMDctMjMgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5j
b20+CiAKICAgICAgICAgW21hY09TIDEwLjE1XSBXZWIgcHJvY2VzcyBjcmFzaGVzIHdoZW4gYXR0
ZW1wdGluZyB0byBzaG93IHRoZSBmb250IHBhbmVsIHZpYSBGb250ID4gU2hvdyBGb250cwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCmluZGV4IDk4N2U0NTU2Zjlm
NWZjNGUxYzcxZmYzYjA4NDdjYjdmMmIyNWNkZDguLjMzZGU0ZjM3OGQyYWFlYWQ0MzkyNmZiMGRi
N2I2YmQ3N2UyMWJkYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9k
eS5jcHAKQEAgLTQwLDcgKzQwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1GZXRjaEJv
ZHkgRmV0Y2hCb2R5OjpleHRyYWN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIElu
aXQmJiB2YWx1ZSwgU3RyaW5nJiBjb250ZW50VHlwZSkKK0ZldGNoQm9keSBGZXRjaEJvZHk6OmV4
dHJhY3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIEluaXQmJiB2YWx1ZSwgU3RyaW5nJiBjb250
ZW50VHlwZSkKIHsKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbih2YWx1ZSwgWyZdKFJlZlB0cjxC
bG9iPiYgdmFsdWUpIG11dGFibGUgewogICAgICAgICBSZWY8Y29uc3QgQmxvYj4gYmxvYiA9IHZh
bHVlLnJlbGVhc2VOb25OdWxsKCk7CkBAIC00OSw3ICs0OSw3IEBAIEZldGNoQm9keSBGZXRjaEJv
ZHk6OmV4dHJhY3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgSW5pdCYmIHZhbHVl
LCBTdHJpCiAgICAgICAgIHJldHVybiBGZXRjaEJvZHkoV1RGTW92ZShibG9iKSk7CiAgICAgfSwg
WyZdKFJlZlB0cjxET01Gb3JtRGF0YT4mIHZhbHVlKSBtdXRhYmxlIHsKICAgICAgICAgUmVmPERP
TUZvcm1EYXRhPiBkb21Gb3JtRGF0YSA9IHZhbHVlLnJlbGVhc2VOb25OdWxsKCk7Ci0gICAgICAg
IGF1dG8gZm9ybURhdGEgPSBGb3JtRGF0YTo6Y3JlYXRlTXVsdGlQYXJ0KGRvbUZvcm1EYXRhLmdl
dCgpLCAmZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpKTsKKyAgICAgICAgYXV0byBmb3JtRGF0
YSA9IEZvcm1EYXRhOjpjcmVhdGVNdWx0aVBhcnQoZG9tRm9ybURhdGEuZ2V0KCkpOwogICAgICAg
ICBjb250ZW50VHlwZSA9IG1ha2VTdHJpbmcoIm11bHRpcGFydC9mb3JtLWRhdGE7IGJvdW5kYXJ5
PSIsIGZvcm1EYXRhLT5ib3VuZGFyeSgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybiBGZXRjaEJv
ZHkoV1RGTW92ZShmb3JtRGF0YSkpOwogICAgIH0sIFsmXShSZWZQdHI8VVJMU2VhcmNoUGFyYW1z
PiYgdmFsdWUpIG11dGFibGUgewpAQCAtMjUwLDkgKzI1MCw4IEBAIFJlZlB0cjxGb3JtRGF0YT4g
RmV0Y2hCb2R5Ojpib2R5QXNGb3JtRGF0YShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
KSBjb25zCiAgICAgaWYgKGlzQXJyYXlCdWZmZXJWaWV3KCkpCiAgICAgICAgIHJldHVybiBGb3Jt
RGF0YTo6Y3JlYXRlKGFycmF5QnVmZmVyVmlld0JvZHkoKS5iYXNlQWRkcmVzcygpLCBhcnJheUJ1
ZmZlclZpZXdCb2R5KCkuYnl0ZUxlbmd0aCgpKTsKICAgICBpZiAoaXNGb3JtRGF0YSgpKSB7Ci0g
ICAgICAgIEFTU0VSVCghY29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOworICAgICAgICBB
U1NFUlRfVU5VU0VEKGNvbnRleHQsICFjb250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSk7CiAg
ICAgICAgIGF1dG8gYm9keSA9IG1ha2VSZWYoY29uc3RfY2FzdDxGb3JtRGF0YSY+KGZvcm1EYXRh
Qm9keSgpKSk7Ci0gICAgICAgIGJvZHktPmdlbmVyYXRlRmlsZXMoJmRvd25jYXN0PERvY3VtZW50
Pihjb250ZXh0KSk7CiAgICAgICAgIHJldHVybiBib2R5OwogICAgIH0KICAgICBpZiAoYXV0byog
ZGF0YSA9IG1fY29uc3VtZXIuZGF0YSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0Zvcm1TdWJtaXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlz
c2lvbi5jcHAKaW5kZXggYmUwM2U0YTE5ZTExNzIyNWZjZTgxMjdhZjE3NGMxYjA0Zjk1NTRmNC4u
MGY5MjQ2ZjgxMThkMzdjM2JjZmE3MmIxYzlmNDc3NjIxNmExZTdiOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwCkBAIC0xOTgsNyArMTk4LDcgQEAgUmVmPEZvcm1T
dWJtaXNzaW9uPiBGb3JtU3VibWlzc2lvbjo6Y3JlYXRlKEhUTUxGb3JtRWxlbWVudCYgZm9ybSwg
Y29uc3QgQXR0cmlidXQKICAgICBTdHJpbmcgYm91bmRhcnk7CiAKICAgICBpZiAoaXNNdWx0aVBh
cnRGb3JtKSB7Ci0gICAgICAgIGZvcm1EYXRhID0gRm9ybURhdGE6OmNyZWF0ZU11bHRpUGFydChk
b21Gb3JtRGF0YSwgJmRvY3VtZW50KTsKKyAgICAgICAgZm9ybURhdGEgPSBGb3JtRGF0YTo6Y3Jl
YXRlTXVsdGlQYXJ0KGRvbUZvcm1EYXRhKTsKICAgICAgICAgYm91bmRhcnkgPSBmb3JtRGF0YS0+
Ym91bmRhcnkoKS5kYXRhKCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgZm9ybURhdGEgPSBGb3Jt
RGF0YTo6Y3JlYXRlKGRvbUZvcm1EYXRhLCBhdHRyaWJ1dGVzLm1ldGhvZCgpID09IE1ldGhvZDo6
R2V0ID8gRm9ybURhdGE6OkZvcm1VUkxFbmNvZGVkIDogRm9ybURhdGE6OnBhcnNlRW5jb2RpbmdU
eXBlKGVuY29kaW5nVHlwZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5k
ZXggZmMyM2ExNDc3ZWRjOTFhZGNjODU3NTI5NWRkZDE0YTBhOTk0ZDU4Mi4uMWFlYmE0NWUxOTQ2
MGVkZTI4NTYzYzFjNGE2YjNlYmQ0MmNmYWNiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXIuY3BwCkBAIC00NzMsNyArNDczLDYgQEAgdm9pZCBGcmFtZUxvYWRlcjo6c3VibWl0Rm9y
bShSZWY8Rm9ybVN1Ym1pc3Npb24+JiYgc3VibWlzc2lvbikKICAgICAgICAgbV9zdWJtaXR0ZWRG
b3JtVVJMID0gc3VibWlzc2lvbi0+cmVxdWVzdFVSTCgpOwogICAgIH0KIAotICAgIHN1Ym1pc3Np
b24tPmRhdGEoKS5nZW5lcmF0ZUZpbGVzKG1fZnJhbWUuZG9jdW1lbnQoKSk7CiAgICAgc3VibWlz
c2lvbi0+c2V0UmVmZXJyZXIob3V0Z29pbmdSZWZlcnJlcigpKTsKICAgICBzdWJtaXNzaW9uLT5z
ZXRPcmlnaW4ob3V0Z29pbmdPcmlnaW4oKSk7CiAKQEAgLTM3NzcsOCArMzc3Niw2IEBAIHZvaWQg
RnJhbWVMb2FkZXI6OmxvYWREaWZmZXJlbnREb2N1bWVudEl0ZW0oSGlzdG9yeUl0ZW0mIGl0ZW0s
IEhpc3RvcnlJdGVtKiBmcm9tCiAgICAgLy8gSWYgdGhpcyB3YXMgYSByZXBvc3QgdGhhdCBmYWls
ZWQgdGhlIHBhZ2UgY2FjaGUsIHdlIG1pZ2h0IHRyeSB0byByZXBvc3QgdGhlIGZvcm0uCiAgICAg
TmF2aWdhdGlvbkFjdGlvbiBhY3Rpb247CiAgICAgaWYgKGZvcm1EYXRhKSB7Ci0gICAgICAgIGZv
cm1EYXRhLT5nZW5lcmF0ZUZpbGVzKG1fZnJhbWUuZG9jdW1lbnQoKSk7Ci0KICAgICAgICAgcmVx
dWVzdC5zZXRIVFRQTWV0aG9kKCJQT1NUIik7CiAgICAgICAgIHJlcXVlc3Quc2V0SFRUUEJvZHko
V1RGTW92ZShmb3JtRGF0YSkpOwogICAgICAgICByZXF1ZXN0LnNldEhUVFBDb250ZW50VHlwZShp
dGVtLmZvcm1Db250ZW50VHlwZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2Fk
ZXIuY3BwCmluZGV4IDFmNmYzNTNlNjkzNWU4ZTVlYjY1NWRlZWQ4MGY1N2IwYWUzN2MyZmMuLmE3
NjY1NmMwM2U3MTI1Mjg1Mzg4YWI1ZDY1ZDhkYzlkZjUzZTJhODYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcApAQCAtNDkyLDkgKzQ5Miw2IEBAIHZvaWQgUmVzb3Vy
Y2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByLCBD
b21wbGV0aW9uSGFuCiAKICAgICBtX3Jlc3BvbnNlID0gcjsKIAotICAgIGlmIChGb3JtRGF0YSog
ZGF0YSA9IG1fcmVxdWVzdC5odHRwQm9keSgpKQotICAgICAgICBkYXRhLT5yZW1vdmVHZW5lcmF0
ZWRGaWxlc0lmTmVlZGVkKCk7Ci0KICAgICBpZiAobV9vcHRpb25zLnNlbmRMb2FkQ2FsbGJhY2tz
ID09IFNlbmRDYWxsYmFja1BvbGljeTo6U2VuZENhbGxiYWNrcykKICAgICAgICAgZnJhbWVMb2Fk
ZXIoKS0+bm90aWZpZXIoKS5kaWRSZWNlaXZlUmVzcG9uc2UodGhpcywgbV9yZXNwb25zZSk7CiB9
CkBAIC01NzksOSArNTc2LDYgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbChjb25zdCBS
ZXNvdXJjZUVycm9yJiBlcnJvcikKIAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6Y2xlYW51cEZvckVy
cm9yKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogewotICAgIGlmIChGb3JtRGF0YSogZGF0
YSA9IG1fcmVxdWVzdC5odHRwQm9keSgpKQotICAgICAgICBkYXRhLT5yZW1vdmVHZW5lcmF0ZWRG
aWxlc0lmTmVlZGVkKCk7Ci0KICAgICBpZiAobV9ub3RpZmllZExvYWRDb21wbGV0ZSkKICAgICAg
ICAgcmV0dXJuOwogICAgIG1fbm90aWZpZWRMb2FkQ29tcGxldGUgPSB0cnVlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9D
aHJvbWUuY3BwCmluZGV4IDIyMGQ4YzI2Mjk4YjBjOTU1NzkzMGY0MTIzZmNmMmQ1ODNjOTc5M2Iu
Ljk3NTgzMjliYTkwOWNkOTEzY2FiNDY4NWQ3MWFlOWRhNGZjMzVjYTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0No
cm9tZS5jcHAKQEAgLTUyNSwxNyArNTI1LDYgQEAgdm9pZCBDaHJvbWU6OndpbmRvd1NjcmVlbkRp
ZENoYW5nZShQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQpCiAjZW5kaWYKIH0KIAotYm9vbCBD
aHJvbWVDbGllbnQ6OnNob3VsZFJlcGxhY2VXaXRoR2VuZXJhdGVkRmlsZUZvclVwbG9hZChjb25z
dCBTdHJpbmcmLCBTdHJpbmcmKQotewotICAgIHJldHVybiBmYWxzZTsKLX0KLQotU3RyaW5nIENo
cm9tZUNsaWVudDo6Z2VuZXJhdGVSZXBsYWNlbWVudEZpbGUoY29uc3QgU3RyaW5nJikKLXsKLSAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gU3RyaW5nKCk7Ci19Ci0KIGJvb2wg
Q2hyb21lOjpzZWxlY3RJdGVtV3JpdGluZ0RpcmVjdGlvbklzTmF0dXJhbCgpCiB7CiAgICAgcmV0
dXJuIG1fY2xpZW50LnNlbGVjdEl0ZW1Xcml0aW5nRGlyZWN0aW9uSXNOYXR1cmFsKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9DaHJvbWVDbGllbnQuaAppbmRleCAxNjk4MTVhMDlkZTUzZmYyM2RiM2YxOGUyNjE3
ZTg5M2ZlYjM1NzUyLi5kYmU0ZjQ3OGI0MzU1YjY4YTFkNTRlMWY3YmZhZmM0ZTc5YjRjYzllIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKQEAgLTIzNCw5ICsyMzQsNiBAQCBwdWJsaWM6
CiAgICAgLy8gdGhlIG5ldyBjYWNoZS4KICAgICB2aXJ0dWFsIHZvaWQgcmVhY2hlZEFwcGxpY2F0
aW9uQ2FjaGVPcmlnaW5RdW90YShTZWN1cml0eU9yaWdpbiYsIGludDY0X3QgdG90YWxTcGFjZU5l
ZWRlZCkgPSAwOwogCi0gICAgdmlydHVhbCBib29sIHNob3VsZFJlcGxhY2VXaXRoR2VuZXJhdGVk
RmlsZUZvclVwbG9hZChjb25zdCBTdHJpbmcmIHBhdGgsIFN0cmluZyYgZ2VuZXJhdGVkRmlsZW5h
bWUpOwotICAgIHZpcnR1YWwgU3RyaW5nIGdlbmVyYXRlUmVwbGFjZW1lbnRGaWxlKGNvbnN0IFN0
cmluZyYgcGF0aCk7Ci0KICNpZiBFTkFCTEUoSU9TX1RPVUNIX0VWRU5UUykKICAgICB2aXJ0dWFs
IHZvaWQgZGlkUHJldmVudERlZmF1bHRGb3JFdmVudCgpID0gMDsKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcAppbmRleCA3ZTk0YzlhMzg1ZDFi
NjMxM2EzYTFhYmNhZGE5YzEwNTNjMzE0NTY2Li45ZGI2Y2JlM2MzMTBiMDAzMmI0ZGMwNDQ2MzAx
YmU1NGE4NzEzZDIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0Zvcm1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1E
YXRhLmNwcApAQCAtMjcsNyArMjcsNiBAQAogI2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUg
IkNocm9tZUNsaWVudC5oIgogI2luY2x1ZGUgIkRPTUZvcm1EYXRhLmgiCi0jaW5jbHVkZSAiRG9j
dW1lbnQuaCIKICNpbmNsdWRlICJGaWxlLmgiCiAjaW5jbHVkZSAiRm9ybURhdGFCdWlsZGVyLmgi
CiAjaW5jbHVkZSAiUGFnZS5oIgpAQCAtNTAsMjIgKzQ5LDEwIEBAIGlubGluZSBGb3JtRGF0YTo6
Rm9ybURhdGEoY29uc3QgRm9ybURhdGEmIGRhdGEpCiAgICAgLCBtX2Fsd2F5c1N0cmVhbShmYWxz
ZSkKICAgICAsIG1fY29udGFpbnNQYXNzd29yZERhdGEoZGF0YS5tX2NvbnRhaW5zUGFzc3dvcmRE
YXRhKQogewotICAgIC8vIFdlIHNob3VsZG4ndCBiZSBjb3B5aW5nIEZvcm1EYXRhIHRoYXQgaGFz
bid0IGFscmVhZHkgcmVtb3ZlZCBpdHMgZ2VuZXJhdGVkIGZpbGVzCi0gICAgLy8gYnV0IGp1c3Qg
aW4gY2FzZSwgbWFrZSBzdXJlIHRoZSBuZXcgRm9ybURhdGEgaXMgcmVhZHkgdG8gZ2VuZXJhdGUg
aXRzIG93biBmaWxlcy4KLSAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBtX2VsZW1lbnRzKSB7Ci0g
ICAgICAgIGlmIChhdXRvKiBmaWxlRGF0YSA9IFdURjo6Z2V0X2lmPEZvcm1EYXRhRWxlbWVudDo6
RW5jb2RlZEZpbGVEYXRhPihlbGVtZW50LmRhdGEpKSB7Ci0gICAgICAgICAgICBmaWxlRGF0YS0+
Z2VuZXJhdGVkRmlsZW5hbWUgPSB7IH07Ci0gICAgICAgICAgICBmaWxlRGF0YS0+b3duc0dlbmVy
YXRlZEZpbGUgPSBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KIH0KIAogRm9ybURhdGE6On5Gb3Jt
RGF0YSgpCiB7Ci0gICAgLy8gVGhpcyBjbGVhbnVwIHNob3VsZCd2ZSBoYXBwZW5lZCB3aGVuIHRo
ZSBmb3JtIHN1Ym1pc3Npb24gZmluaXNoZWQuCi0gICAgLy8gSnVzdCBpbiBjYXNlLCBsZXQncyBh
c3NlcnQsIGFuZCBkbyB0aGUgY2xlYW51cCBhbnl3YXkgaW4gcmVsZWFzZSBidWlsZHMuCi0gICAg
QVNTRVJUKCFoYXNPd25lZEdlbmVyYXRlZEZpbGVzKCkpOwotICAgIHJlbW92ZUdlbmVyYXRlZEZp
bGVzSWZOZWVkZWQoKTsKIH0KIAogUmVmPEZvcm1EYXRhPiBGb3JtRGF0YTo6Y3JlYXRlKCkKQEAg
LTEwOSwxMCArOTYsMTAgQEAgUmVmPEZvcm1EYXRhPiBGb3JtRGF0YTo6Y3JlYXRlKGNvbnN0IERP
TUZvcm1EYXRhJiBmb3JtRGF0YSwgRW5jb2RpbmdUeXBlIGVuY29kaW4KICAgICByZXR1cm4gcmVz
dWx0OwogfQogCi1SZWY8Rm9ybURhdGE+IEZvcm1EYXRhOjpjcmVhdGVNdWx0aVBhcnQoY29uc3Qg
RE9NRm9ybURhdGEmIGZvcm1EYXRhLCBEb2N1bWVudCogZG9jdW1lbnQpCitSZWY8Rm9ybURhdGE+
IEZvcm1EYXRhOjpjcmVhdGVNdWx0aVBhcnQoY29uc3QgRE9NRm9ybURhdGEmIGZvcm1EYXRhKQog
ewogICAgIGF1dG8gcmVzdWx0ID0gY3JlYXRlKCk7Ci0gICAgcmVzdWx0LT5hcHBlbmRNdWx0aVBh
cnRLZXlWYWx1ZVBhaXJJdGVtcyhmb3JtRGF0YSwgZG9jdW1lbnQpOworICAgIHJlc3VsdC0+YXBw
ZW5kTXVsdGlQYXJ0S2V5VmFsdWVQYWlySXRlbXMoZm9ybURhdGEpOwogICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKQEAgLTE0Niw3ICsxMzMsNyBAQCB1aW50NjRfdCBGb3JtRGF0YUVsZW1lbnQ6Omxl
bmd0aEluQnl0ZXMoKSBjb25zdAogICAgICAgICAgICAgaWYgKGZpbGVEYXRhLmZpbGVMZW5ndGgg
IT0gQmxvYkRhdGFJdGVtOjp0b0VuZE9mRmlsZSkKICAgICAgICAgICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8dWludDY0X3Q+KGZpbGVEYXRhLmZpbGVMZW5ndGgpOwogICAgICAgICAgICAgbG9u
ZyBsb25nIGZpbGVTaXplOwotICAgICAgICAgICAgaWYgKEZpbGVTeXN0ZW06OmdldEZpbGVTaXpl
KGZpbGVEYXRhLnNob3VsZEdlbmVyYXRlRmlsZSA/IGZpbGVEYXRhLmdlbmVyYXRlZEZpbGVuYW1l
IDogZmlsZURhdGEuZmlsZW5hbWUsIGZpbGVTaXplKSkKKyAgICAgICAgICAgIGlmIChGaWxlU3lz
dGVtOjpnZXRGaWxlU2l6ZShmaWxlRGF0YS5maWxlbmFtZSwgZmlsZVNpemUpKQogICAgICAgICAg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1aW50NjRfdD4oZmlsZVNpemUpOwogICAgICAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnQ2NF90PigwKTsKICAgICAgICAgfSwgW10gKGNvbnN0
IEZvcm1EYXRhRWxlbWVudDo6RW5jb2RlZEJsb2JEYXRhJiBibG9iRGF0YSkgewpAQCAtMTg0LDE1
ICsxNzEsMTUgQEAgdm9pZCBGb3JtRGF0YTo6YXBwZW5kRGF0YShjb25zdCB2b2lkKiBkYXRhLCBz
aXplX3Qgc2l6ZSkKICAgICBtX2VsZW1lbnRzLmFwcGVuZChXVEZNb3ZlKHZlY3RvcikpOwogfQog
Ci12b2lkIEZvcm1EYXRhOjphcHBlbmRGaWxlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGJvb2wg
c2hvdWxkR2VuZXJhdGVGaWxlKQordm9pZCBGb3JtRGF0YTo6YXBwZW5kRmlsZShjb25zdCBTdHJp
bmcmIGZpbGVuYW1lKQogewotICAgIG1fZWxlbWVudHMuYXBwZW5kKEZvcm1EYXRhRWxlbWVudChm
aWxlbmFtZSwgMCwgQmxvYkRhdGFJdGVtOjp0b0VuZE9mRmlsZSwgV1RGOjpudWxsb3B0LCBzaG91
bGRHZW5lcmF0ZUZpbGUpKTsKKyAgICBtX2VsZW1lbnRzLmFwcGVuZChGb3JtRGF0YUVsZW1lbnQo
ZmlsZW5hbWUsIDAsIEJsb2JEYXRhSXRlbTo6dG9FbmRPZkZpbGUsIFdURjo6bnVsbG9wdCkpOwog
ICAgIG1fbGVuZ3RoSW5CeXRlcyA9IFdURjo6bnVsbG9wdDsKIH0KIAotdm9pZCBGb3JtRGF0YTo6
YXBwZW5kRmlsZVJhbmdlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGxvbmcgbG9uZyBzdGFydCwg
bG9uZyBsb25nIGxlbmd0aCwgT3B0aW9uYWw8V2FsbFRpbWU+IGV4cGVjdGVkTW9kaWZpY2F0aW9u
VGltZSwgYm9vbCBzaG91bGRHZW5lcmF0ZUZpbGUpCit2b2lkIEZvcm1EYXRhOjphcHBlbmRGaWxl
UmFuZ2UoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcg
bGVuZ3RoLCBPcHRpb25hbDxXYWxsVGltZT4gZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKQogewot
ICAgIG1fZWxlbWVudHMuYXBwZW5kKEZvcm1EYXRhRWxlbWVudChmaWxlbmFtZSwgc3RhcnQsIGxl
bmd0aCwgZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lLCBzaG91bGRHZW5lcmF0ZUZpbGUpKTsKKyAg
ICBtX2VsZW1lbnRzLmFwcGVuZChGb3JtRGF0YUVsZW1lbnQoZmlsZW5hbWUsIHN0YXJ0LCBsZW5n
dGgsIGV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSkpOwogICAgIG1fbGVuZ3RoSW5CeXRlcyA9IFdU
Rjo6bnVsbG9wdDsKIH0KIApAQCAtMjA3LDIyICsxOTQsMTAgQEAgc3RhdGljIFZlY3Rvcjx1aW50
OF90PiBub3JtYWxpemVTdHJpbmdEYXRhKFRleHRFbmNvZGluZyYgZW5jb2RpbmcsIGNvbnN0IFN0
cmluZyYKICAgICByZXR1cm4gbm9ybWFsaXplTGluZUVuZGluZ3NUb0NSTEYoZW5jb2RpbmcuZW5j
b2RlKHZhbHVlLCBVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpOwogfQogCi12b2lkIEZv
cm1EYXRhOjphcHBlbmRNdWx0aVBhcnRGaWxlVmFsdWUoY29uc3QgRmlsZSYgZmlsZSwgVmVjdG9y
PGNoYXI+JiBoZWFkZXIsIFRleHRFbmNvZGluZyYgZW5jb2RpbmcsIERvY3VtZW50KiBkb2N1bWVu
dCkKK3ZvaWQgRm9ybURhdGE6OmFwcGVuZE11bHRpUGFydEZpbGVWYWx1ZShjb25zdCBGaWxlJiBm
aWxlLCBWZWN0b3I8Y2hhcj4mIGhlYWRlciwgVGV4dEVuY29kaW5nJiBlbmNvZGluZykKIHsKICAg
ICBhdXRvIG5hbWUgPSBmaWxlLm5hbWUoKTsKIAotICAgIC8vIExldCB0aGUgYXBwbGljYXRpb24g
c3BlY2lmeSBhIGZpbGVuYW1lIGlmIGl0J3MgZ29pbmcgdG8gZ2VuZXJhdGUgYSByZXBsYWNlbWVu
dCBmaWxlIGZvciB0aGUgdXBsb2FkLgotICAgIGJvb2wgc2hvdWxkR2VuZXJhdGVGaWxlID0gZmFs
c2U7Ci0gICAgYXV0byYgcGF0aCA9IGZpbGUucGF0aCgpOwotICAgIGlmICghcGF0aC5pc0VtcHR5
KCkpIHsKLSAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBkb2N1bWVudC0+cGFnZSgpKSB7Ci0gICAg
ICAgICAgICBTdHJpbmcgZ2VuZXJhdGVkRmlsZU5hbWU7Ci0gICAgICAgICAgICBzaG91bGRHZW5l
cmF0ZUZpbGUgPSBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS5zaG91bGRSZXBsYWNlV2l0aEdlbmVy
YXRlZEZpbGVGb3JVcGxvYWQocGF0aCwgZ2VuZXJhdGVkRmlsZU5hbWUpOwotICAgICAgICAgICAg
aWYgKHNob3VsZEdlbmVyYXRlRmlsZSkKLSAgICAgICAgICAgICAgICBuYW1lID0gZ2VuZXJhdGVk
RmlsZU5hbWU7Ci0gICAgICAgIH0KLSAgICB9Ci0KICAgICAvLyBXZSBoYXZlIHRvIGluY2x1ZGUg
dGhlIGZpbGVuYW1lPSIuLiIgcGFydCBpbiB0aGUgaGVhZGVyLCBldmVuIGlmIHRoZSBmaWxlbmFt
ZSBpcyBlbXB0eQogICAgIEZvcm1EYXRhQnVpbGRlcjo6YWRkRmlsZW5hbWVUb011bHRpUGFydEhl
YWRlcihoZWFkZXIsIGVuY29kaW5nLCBuYW1lKTsKIApAQCAtMjM4LDcgKzIxMyw3IEBAIHZvaWQg
Rm9ybURhdGE6OmFwcGVuZE11bHRpUGFydEZpbGVWYWx1ZShjb25zdCBGaWxlJiBmaWxlLCBWZWN0
b3I8Y2hhcj4mIGhlYWRlciwKICAgICBhcHBlbmREYXRhKGhlYWRlci5kYXRhKCksIGhlYWRlci5z
aXplKCkpOwogCiAgICAgaWYgKCFmaWxlLnBhdGgoKS5pc0VtcHR5KCkpCi0gICAgICAgIGFwcGVu
ZEZpbGUoZmlsZS5wYXRoKCksIHNob3VsZEdlbmVyYXRlRmlsZSk7CisgICAgICAgIGFwcGVuZEZp
bGUoZmlsZS5wYXRoKCkpOwogICAgIGVsc2UgaWYgKGZpbGUuc2l6ZSgpKQogICAgICAgICBhcHBl
bmRCbG9iKGZpbGUudXJsKCkpOwogfQpAQCAtMjUyLDcgKzIyNyw3IEBAIHZvaWQgRm9ybURhdGE6
OmFwcGVuZE11bHRpUGFydFN0cmluZ1ZhbHVlKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBWZWN0b3I8
Y2hhcj4mIGhlCiAgICAgYXBwZW5kRGF0YShub3JtYWxpemVkU3RyaW5nRGF0YS5kYXRhKCksIG5v
cm1hbGl6ZWRTdHJpbmdEYXRhLnNpemUoKSk7CiB9CiAKLXZvaWQgRm9ybURhdGE6OmFwcGVuZE11
bHRpUGFydEtleVZhbHVlUGFpckl0ZW1zKGNvbnN0IERPTUZvcm1EYXRhJiBmb3JtRGF0YSwgRG9j
dW1lbnQqIGRvY3VtZW50KQordm9pZCBGb3JtRGF0YTo6YXBwZW5kTXVsdGlQYXJ0S2V5VmFsdWVQ
YWlySXRlbXMoY29uc3QgRE9NRm9ybURhdGEmIGZvcm1EYXRhKQogewogICAgIG1fYm91bmRhcnkg
PSBGb3JtRGF0YUJ1aWxkZXI6OmdlbmVyYXRlVW5pcXVlQm91bmRhcnlTdHJpbmcoKTsKIApAQCAt
MjY2LDcgKzI0MSw3IEBAIHZvaWQgRm9ybURhdGE6OmFwcGVuZE11bHRpUGFydEtleVZhbHVlUGFp
ckl0ZW1zKGNvbnN0IERPTUZvcm1EYXRhJiBmb3JtRGF0YSwgRG9jCiAgICAgICAgIEZvcm1EYXRh
QnVpbGRlcjo6YmVnaW5NdWx0aVBhcnRIZWFkZXIoaGVhZGVyLCBtX2JvdW5kYXJ5LmRhdGEoKSwg
bm9ybWFsaXplZE5hbWUpOwogCiAgICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFJl
ZlB0cjxGaWxlPj4oaXRlbS5kYXRhKSkKLSAgICAgICAgICAgIGFwcGVuZE11bHRpUGFydEZpbGVW
YWx1ZSgqV1RGOjpnZXQ8UmVmUHRyPEZpbGU+PihpdGVtLmRhdGEpLCBoZWFkZXIsIGVuY29kaW5n
LCBkb2N1bWVudCk7CisgICAgICAgICAgICBhcHBlbmRNdWx0aVBhcnRGaWxlVmFsdWUoKldURjo6
Z2V0PFJlZlB0cjxGaWxlPj4oaXRlbS5kYXRhKSwgaGVhZGVyLCBlbmNvZGluZyk7CiAgICAgICAg
IGVsc2UKICAgICAgICAgICAgIGFwcGVuZE11bHRpUGFydFN0cmluZ1ZhbHVlKFdURjo6Z2V0PFN0
cmluZz4oaXRlbS5kYXRhKSwgaGVhZGVyLCBlbmNvZGluZyk7CiAKQEAgLTM1OSw3ICszMzQsNyBA
QCBSZWY8Rm9ybURhdGE+IEZvcm1EYXRhOjpyZXNvbHZlQmxvYlJlZmVyZW5jZXMoQmxvYlJlZ2lz
dHJ5JiBibG9iUmVnaXN0cnkpCiAgICAgICAgICAgICBbJl0gKGNvbnN0IFZlY3RvcjxjaGFyPiYg
Ynl0ZXMpIHsKICAgICAgICAgICAgICAgICBuZXdGb3JtRGF0YS0+YXBwZW5kRGF0YShieXRlcy5k
YXRhKCksIGJ5dGVzLnNpemUoKSk7CiAgICAgICAgICAgICB9LCBbJl0gKGNvbnN0IEZvcm1EYXRh
RWxlbWVudDo6RW5jb2RlZEZpbGVEYXRhJiBmaWxlRGF0YSkgewotICAgICAgICAgICAgICAgIG5l
d0Zvcm1EYXRhLT5hcHBlbmRGaWxlUmFuZ2UoZmlsZURhdGEuZmlsZW5hbWUsIGZpbGVEYXRhLmZp
bGVTdGFydCwgZmlsZURhdGEuZmlsZUxlbmd0aCwgZmlsZURhdGEuZXhwZWN0ZWRGaWxlTW9kaWZp
Y2F0aW9uVGltZSwgZmlsZURhdGEuc2hvdWxkR2VuZXJhdGVGaWxlKTsKKyAgICAgICAgICAgICAg
ICBuZXdGb3JtRGF0YS0+YXBwZW5kRmlsZVJhbmdlKGZpbGVEYXRhLmZpbGVuYW1lLCBmaWxlRGF0
YS5maWxlU3RhcnQsIGZpbGVEYXRhLmZpbGVMZW5ndGgsIGZpbGVEYXRhLmV4cGVjdGVkRmlsZU1v
ZGlmaWNhdGlvblRpbWUpOwogICAgICAgICAgICAgfSwgWyZdIChjb25zdCBGb3JtRGF0YUVsZW1l
bnQ6OkVuY29kZWRCbG9iRGF0YSYgYmxvYkRhdGEpIHsKICAgICAgICAgICAgICAgICBhcHBlbmRC
bG9iUmVzb2x2ZWQoYmxvYlJlZ2lzdHJ5LCBuZXdGb3JtRGF0YS5nZXQoKSwgYmxvYkRhdGEudXJs
KTsKICAgICAgICAgICAgIH0KQEAgLTM2OCw2NiArMzQzLDQwIEBAIFJlZjxGb3JtRGF0YT4gRm9y
bURhdGE6OnJlc29sdmVCbG9iUmVmZXJlbmNlcyhCbG9iUmVnaXN0cnkmIGJsb2JSZWdpc3RyeSkK
ICAgICByZXR1cm4gbmV3Rm9ybURhdGE7CiB9CiAKLXZvaWQgRm9ybURhdGE6OmdlbmVyYXRlRmls
ZXMoRG9jdW1lbnQqIGRvY3VtZW50KQorI2lmICFQTEFURk9STShDT0NPQSkKK1N0cmluZyBnZW5l
cmF0ZUZpbGVGb3JVcGxvYWQoY29uc3QgU3RyaW5nJikKIHsKLSAgICBQYWdlKiBwYWdlID0gZG9j
dW1lbnQtPnBhZ2UoKTsKLSAgICBpZiAoIXBhZ2UpCi0gICAgICAgIHJldHVybjsKLQotICAgIGZv
ciAoYXV0byYgZWxlbWVudCA6IG1fZWxlbWVudHMpIHsKLSAgICAgICAgaWYgKGF1dG8qIGZpbGVE
YXRhID0gV1RGOjpnZXRfaWY8Rm9ybURhdGFFbGVtZW50OjpFbmNvZGVkRmlsZURhdGE+KGVsZW1l
bnQuZGF0YSkpIHsKLSAgICAgICAgICAgIGlmIChmaWxlRGF0YS0+c2hvdWxkR2VuZXJhdGVGaWxl
KSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKCFmaWxlRGF0YS0+b3duc0dlbmVyYXRlZEZpbGUp
OwotICAgICAgICAgICAgICAgIEFTU0VSVChmaWxlRGF0YS0+Z2VuZXJhdGVkRmlsZW5hbWUuaXNF
bXB0eSgpKTsKLSAgICAgICAgICAgICAgICBpZiAoIWZpbGVEYXRhLT5nZW5lcmF0ZWRGaWxlbmFt
ZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAg
ICAgIGZpbGVEYXRhLT5nZW5lcmF0ZWRGaWxlbmFtZSA9IHBhZ2UtPmNocm9tZSgpLmNsaWVudCgp
LmdlbmVyYXRlUmVwbGFjZW1lbnRGaWxlKGZpbGVEYXRhLT5maWxlbmFtZSk7Ci0gICAgICAgICAg
ICAgICAgaWYgKCFmaWxlRGF0YS0+Z2VuZXJhdGVkRmlsZW5hbWUuaXNFbXB0eSgpKQotICAgICAg
ICAgICAgICAgICAgICBmaWxlRGF0YS0+b3duc0dlbmVyYXRlZEZpbGUgPSB0cnVlOwotICAgICAg
ICAgICAgfQotICAgICAgICB9Ci0gICAgfQotfQotCi1ib29sIEZvcm1EYXRhOjpoYXNHZW5lcmF0
ZWRGaWxlcygpIGNvbnN0Ci17Ci0gICAgZm9yIChhdXRvJiBlbGVtZW50IDogbV9lbGVtZW50cykg
ewotICAgICAgICBpZiAoYXV0byogZmlsZURhdGEgPSBXVEY6OmdldF9pZjxGb3JtRGF0YUVsZW1l
bnQ6OkVuY29kZWRGaWxlRGF0YT4oZWxlbWVudC5kYXRhKSkgewotICAgICAgICAgICAgaWYgKCFm
aWxlRGF0YS0+Z2VuZXJhdGVkRmlsZW5hbWUuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1
cm4geyB9OwogfQorI2VuZGlmCiAKLWJvb2wgRm9ybURhdGE6Omhhc093bmVkR2VuZXJhdGVkRmls
ZXMoKSBjb25zdAorc3RkOjpwYWlyPFJlZjxGb3JtRGF0YT4sIFZlY3RvcjxTdHJpbmc+PiBGb3Jt
RGF0YTo6Z2VuZXJhdGVGaWxlc0ZvclVwbG9hZCgpCiB7CisgICAgVmVjdG9yPFN0cmluZz4gZ2Vu
ZXJhdGVkRmlsZXM7CiAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogbV9lbGVtZW50cykgewotICAg
ICAgICBpZiAoYXV0byogZmlsZURhdGEgPSBXVEY6OmdldF9pZjxGb3JtRGF0YUVsZW1lbnQ6OkVu
Y29kZWRGaWxlRGF0YT4oZWxlbWVudC5kYXRhKSkgewotICAgICAgICAgICAgaWYgKGZpbGVEYXRh
LT5vd25zR2VuZXJhdGVkRmlsZSkgewotICAgICAgICAgICAgICAgIEFTU0VSVCghZmlsZURhdGEt
PmdlbmVyYXRlZEZpbGVuYW1lLmlzRW1wdHkoKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgICAgICAgICB9CisgICAgICAgIGF1dG8qIGZpbGVEYXRhID0gV1RGOjpnZXRfaWY8
Rm9ybURhdGFFbGVtZW50OjpFbmNvZGVkRmlsZURhdGE+KGVsZW1lbnQuZGF0YSk7CisgICAgICAg
IGlmICghZmlsZURhdGEpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKCFGaWxl
U3lzdGVtOjpmaWxlSXNEaXJlY3RvcnkoZmlsZURhdGEtPmZpbGVuYW1lLCBGaWxlU3lzdGVtOjpT
aG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzOjpZZXMpKQorICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgIGlmIChmaWxlRGF0YS0+ZmlsZVN0YXJ0IHx8IGZpbGVEYXRhLT5maWxlTGVuZ3RoICE9
IEJsb2JEYXRhSXRlbTo6dG9FbmRPZkZpbGUpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgaWYgKGZpbGVEYXRhLT5leHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lKSB7CisgICAgICAg
ICAgICBhdXRvIGZpbGVNb2RpZmljYXRpb25UaW1lID0gRmlsZVN5c3RlbTo6Z2V0RmlsZU1vZGlm
aWNhdGlvblRpbWUoZmlsZURhdGEtPmZpbGVuYW1lKTsKKyAgICAgICAgICAgIGlmICghZmlsZU1v
ZGlmaWNhdGlvblRpbWUpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBp
ZiAoZmlsZU1vZGlmaWNhdGlvblRpbWUtPnNlY29uZHNTaW5jZUVwb2NoKCkuc2Vjb25kc0FzPHRp
bWVfdD4oKSAhPSBmaWxlRGF0YS0+ZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZS0+c2Vjb25k
c1NpbmNlRXBvY2goKS5zZWNvbmRzQXM8dGltZV90PigpKQorICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KIAotdm9pZCBGb3Jt
RGF0YTo6cmVtb3ZlR2VuZXJhdGVkRmlsZXNJZk5lZWRlZCgpCi17Ci0gICAgZm9yIChhdXRvJiBl
bGVtZW50IDogbV9lbGVtZW50cykgewotICAgICAgICBpZiAoYXV0byogZmlsZURhdGEgPSBXVEY6
OmdldF9pZjxGb3JtRGF0YUVsZW1lbnQ6OkVuY29kZWRGaWxlRGF0YT4oZWxlbWVudC5kYXRhKSkg
ewotICAgICAgICAgICAgaWYgKGZpbGVEYXRhLT5vd25zR2VuZXJhdGVkRmlsZSkgewotICAgICAg
ICAgICAgICAgIEFTU0VSVCghZmlsZURhdGEtPmdlbmVyYXRlZEZpbGVuYW1lLmlzRW1wdHkoKSk7
Ci0gICAgICAgICAgICAgICAgQVNTRVJUKGZpbGVEYXRhLT5zaG91bGRHZW5lcmF0ZUZpbGUpOwot
ICAgICAgICAgICAgICAgIFN0cmluZyBkaXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpkaXJlY3RvcnlO
YW1lKGZpbGVEYXRhLT5nZW5lcmF0ZWRGaWxlbmFtZSk7Ci0gICAgICAgICAgICAgICAgRmlsZVN5
c3RlbTo6ZGVsZXRlRmlsZShmaWxlRGF0YS0+Z2VuZXJhdGVkRmlsZW5hbWUpOwotICAgICAgICAg
ICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KGRpcmVjdG9yeSk7Ci0gICAg
ICAgICAgICAgICAgZmlsZURhdGEtPmdlbmVyYXRlZEZpbGVuYW1lID0gU3RyaW5nKCk7Ci0gICAg
ICAgICAgICAgICAgZmlsZURhdGEtPm93bnNHZW5lcmF0ZWRGaWxlID0gZmFsc2U7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0KKyAgICAgICAgYXV0byBnZW5lcmF0ZWRGaWxlbmFtZSA9IGdlbmVy
YXRlRmlsZUZvclVwbG9hZChmaWxlRGF0YS0+ZmlsZW5hbWUpOworICAgICAgICBpZiAoIWdlbmVy
YXRlZEZpbGVuYW1lKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGZpbGVEYXRhLT5m
aWxlbmFtZSA9IGdlbmVyYXRlZEZpbGVuYW1lOworICAgICAgICBnZW5lcmF0ZWRGaWxlcy5hcHBl
bmQoV1RGTW92ZShnZW5lcmF0ZWRGaWxlbmFtZSkpOwogICAgIH0KKyAgICAKKyAgICByZXR1cm4g
eyAqdGhpcywgV1RGTW92ZShnZW5lcmF0ZWRGaWxlcykgfTsKIH0KIAogdWludDY0X3QgRm9ybURh
dGE6Omxlbmd0aEluQnl0ZXMoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9Gb3JtRGF0YS5oCmluZGV4IDI5ZDU1N2E2YmEyNjNjNTI0NTZiNGJjNzBhMWNkNGQ5ZjFmNDM2
NGIuLjYyYmZlZTdjYWQzNjNkMjEyM2VlZDQyZWFmYjdkNWQ1YzM0ZTQwNDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKQEAgLTMxLDcgKzMxLDYgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBCbG9iUmVnaXN0cnk7CiBjbGFzcyBET01Gb3JtRGF0
YTsKLWNsYXNzIERvY3VtZW50OwogY2xhc3MgRmlsZTsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNs
YXNzIFRleHRFbmNvZGluZzsKQEAgLTQ2LDggKzQ1LDggQEAgc3RydWN0IEZvcm1EYXRhRWxlbWVu
dCB7CiAgICAgICAgIDogZGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KICAgICBleHBsaWNpdCBGb3Jt
RGF0YUVsZW1lbnQoVmVjdG9yPGNoYXI+JiYgYXJyYXkpCiAgICAgICAgIDogZGF0YShXVEZNb3Zl
KGFycmF5KSkgeyB9Ci0gICAgRm9ybURhdGFFbGVtZW50KGNvbnN0IFN0cmluZyYgZmlsZW5hbWUs
IGludDY0X3QgZmlsZVN0YXJ0LCBpbnQ2NF90IGZpbGVMZW5ndGgsIE9wdGlvbmFsPFdhbGxUaW1l
PiBleHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lLCBib29sIHNob3VsZEdlbmVyYXRlRmlsZSkK
LSAgICAgICAgOiBkYXRhKEVuY29kZWRGaWxlRGF0YSB7IGZpbGVuYW1lLCBmaWxlU3RhcnQsIGZp
bGVMZW5ndGgsIGV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUsIHsgfSwgc2hvdWxkR2VuZXJh
dGVGaWxlLCBmYWxzZSB9KSB7IH0KKyAgICBGb3JtRGF0YUVsZW1lbnQoY29uc3QgU3RyaW5nJiBm
aWxlbmFtZSwgaW50NjRfdCBmaWxlU3RhcnQsIGludDY0X3QgZmlsZUxlbmd0aCwgT3B0aW9uYWw8
V2FsbFRpbWU+IGV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUpCisgICAgICAgIDogZGF0YShF
bmNvZGVkRmlsZURhdGEgeyBmaWxlbmFtZSwgZmlsZVN0YXJ0LCBmaWxlTGVuZ3RoLCBleHBlY3Rl
ZEZpbGVNb2RpZmljYXRpb25UaW1lIH0pIHsgfQogICAgIGV4cGxpY2l0IEZvcm1EYXRhRWxlbWVu
dChjb25zdCBVUkwmIGJsb2JVUkwpCiAgICAgICAgIDogZGF0YShFbmNvZGVkQmxvYkRhdGEgeyBi
bG9iVVJMIH0pIHsgfQogCkBAIC03MywxNyArNzIsMTAgQEAgc3RydWN0IEZvcm1EYXRhRWxlbWVu
dCB7CiAgICAgICAgIGludDY0X3QgZmlsZVN0YXJ0IHsgMCB9OwogICAgICAgICBpbnQ2NF90IGZp
bGVMZW5ndGggeyAwIH07CiAgICAgICAgIE9wdGlvbmFsPFdhbGxUaW1lPiBleHBlY3RlZEZpbGVN
b2RpZmljYXRpb25UaW1lOwotICAgICAgICBTdHJpbmcgZ2VuZXJhdGVkRmlsZW5hbWU7Ci0gICAg
ICAgIGJvb2wgc2hvdWxkR2VuZXJhdGVGaWxlIHsgZmFsc2UgfTsKLSAgICAgICAgYm9vbCBvd25z
R2VuZXJhdGVkRmlsZSB7IGZhbHNlIH07Ci0KLSAgICAgICAgLy8gRklYTUU6IEdlbmVyYXRlZCBm
aWxlIHN1cHBvcnQgaW4gRm9ybURhdGEgaXMgYWxtb3N0IGlkZW50aWNhbCB0byBCbG9iLCB0aGV5
IHNob3VsZCBiZSBtZXJnZWQuCi0gICAgICAgIC8vIFdlIGNhbid0IGp1c3Qgc3dpdGNoIHRvIHVz
aW5nIEJsb2JzIGZvciBhbGwgZmlsZXMgYmVjYXVzZSBFbmNvZGVkRmlsZSBmb3JtIGRhdGEgZWxl
bWVudHMgZG8gbm90Ci0gICAgICAgIC8vIGhhdmUgYSB2YWxpZCBleHBlY3RlZEZpbGVNb2RpZmlj
YXRpb25UaW1lLCBtZWFuaW5nIHdlIGFsd2F5cyB1cGxvYWQgdGhlIGxhdGVzdCBjb250ZW50IGZy
b20gZGlzay4KIAogICAgICAgICBFbmNvZGVkRmlsZURhdGEgaXNvbGF0ZWRDb3B5KCkgY29uc3QK
ICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHsgZmlsZW5hbWUuaXNvbGF0ZWRDb3B5KCks
IGZpbGVTdGFydCwgZmlsZUxlbmd0aCwgZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZSwgZ2Vu
ZXJhdGVkRmlsZW5hbWUuaXNvbGF0ZWRDb3B5KCksIHNob3VsZEdlbmVyYXRlRmlsZSwgb3duc0dl
bmVyYXRlZEZpbGUgfTsKKyAgICAgICAgICAgIHJldHVybiB7IGZpbGVuYW1lLmlzb2xhdGVkQ29w
eSgpLCBmaWxlU3RhcnQsIGZpbGVMZW5ndGgsIGV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUg
fTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEVu
Y29kZWRGaWxlRGF0YSYgb3RoZXIpIGNvbnN0CkBAIC05MSwxNCArODMsMTEgQEAgc3RydWN0IEZv
cm1EYXRhRWxlbWVudCB7CiAgICAgICAgICAgICByZXR1cm4gZmlsZW5hbWUgPT0gb3RoZXIuZmls
ZW5hbWUKICAgICAgICAgICAgICAgICAmJiBmaWxlU3RhcnQgPT0gb3RoZXIuZmlsZVN0YXJ0CiAg
ICAgICAgICAgICAgICAgJiYgZmlsZUxlbmd0aCA9PSBvdGhlci5maWxlTGVuZ3RoCi0gICAgICAg
ICAgICAgICAgJiYgZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZSA9PSBvdGhlci5leHBlY3Rl
ZEZpbGVNb2RpZmljYXRpb25UaW1lCi0gICAgICAgICAgICAgICAgJiYgZ2VuZXJhdGVkRmlsZW5h
bWUgPT0gb3RoZXIuZ2VuZXJhdGVkRmlsZW5hbWUKLSAgICAgICAgICAgICAgICAmJiBzaG91bGRH
ZW5lcmF0ZUZpbGUgPT0gb3RoZXIuc2hvdWxkR2VuZXJhdGVGaWxlCi0gICAgICAgICAgICAgICAg
JiYgb3duc0dlbmVyYXRlZEZpbGUgPT0gb3RoZXIub3duc0dlbmVyYXRlZEZpbGU7CisgICAgICAg
ICAgICAgICAgJiYgZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZSA9PSBvdGhlci5leHBlY3Rl
ZEZpbGVNb2RpZmljYXRpb25UaW1lOwogICAgICAgICB9CiAgICAgICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgICAg
IHsKLSAgICAgICAgICAgIGVuY29kZXIgPDwgZmlsZW5hbWUgPDwgZmlsZVN0YXJ0IDw8IGZpbGVM
ZW5ndGggPDwgZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZSA8PCBnZW5lcmF0ZWRGaWxlbmFt
ZSA8PCBzaG91bGRHZW5lcmF0ZUZpbGU7CisgICAgICAgICAgICBlbmNvZGVyIDw8IGZpbGVuYW1l
IDw8IGZpbGVTdGFydCA8PCBmaWxlTGVuZ3RoIDw8IGV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRp
bWU7CiAgICAgICAgIH0KICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4gc3RhdGlj
IE9wdGlvbmFsPEVuY29kZWRGaWxlRGF0YT4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAg
ICAgIHsKQEAgLTEyMSwyNyArMTEwLDEyIEBAIHN0cnVjdCBGb3JtRGF0YUVsZW1lbnQgewogICAg
ICAgICAgICAgZGVjb2RlciA+PiBleHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lOwogICAgICAg
ICAgICAgaWYgKCFleHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lKQogICAgICAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIE9wdGlvbmFs
PFN0cmluZz4gZ2VuZXJhdGVkRmlsZW5hbWU7Ci0gICAgICAgICAgICBkZWNvZGVyID4+IGdlbmVy
YXRlZEZpbGVuYW1lOwotICAgICAgICAgICAgaWYgKCFnZW5lcmF0ZWRGaWxlbmFtZSkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgICAgICAgICBPcHRpb25hbDxi
b29sPiBzaG91bGRHZW5lcmF0ZUZpbGU7Ci0gICAgICAgICAgICBkZWNvZGVyID4+IHNob3VsZEdl
bmVyYXRlRmlsZTsKLSAgICAgICAgICAgIGlmICghc2hvdWxkR2VuZXJhdGVGaWxlKQotICAgICAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKLSAgICAgICAgICAgIGJvb2wgb3duc0dl
bmVyYXRlZEZpbGUgPSBmYWxzZTsKLSAgICAgICAgICAgIAogICAgICAgICAgICAgcmV0dXJuIHt7
CiAgICAgICAgICAgICAgICAgV1RGTW92ZSgqZmlsZW5hbWUpLAogICAgICAgICAgICAgICAgIFdU
Rk1vdmUoKmZpbGVTdGFydCksCiAgICAgICAgICAgICAgICAgV1RGTW92ZSgqZmlsZUxlbmd0aCks
Ci0gICAgICAgICAgICAgICAgV1RGTW92ZSgqZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZSks
Ci0gICAgICAgICAgICAgICAgV1RGTW92ZSgqZ2VuZXJhdGVkRmlsZW5hbWUpLAotICAgICAgICAg
ICAgICAgIFdURk1vdmUoKnNob3VsZEdlbmVyYXRlRmlsZSksCi0gICAgICAgICAgICAgICAgV1RG
TW92ZShvd25zR2VuZXJhdGVkRmlsZSkKKyAgICAgICAgICAgICAgICBXVEZNb3ZlKCpleHBlY3Rl
ZEZpbGVNb2RpZmljYXRpb25UaW1lKQogICAgICAgICAgICAgfX07CiAgICAgICAgIH0KIApAQCAt
MjA0LDcgKzE3OCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEZvcm1EYXRhPiBjcmVhdGUo
Y29uc3QgVmVjdG9yPGNoYXI+Jik7CiAgICAgc3RhdGljIFJlZjxGb3JtRGF0YT4gY3JlYXRlKGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYpOwogICAgIHN0YXRpYyBSZWY8Rm9ybURhdGE+IGNyZWF0ZShj
b25zdCBET01Gb3JtRGF0YSYsIEVuY29kaW5nVHlwZSA9IEZvcm1VUkxFbmNvZGVkKTsKLSAgICBz
dGF0aWMgUmVmPEZvcm1EYXRhPiBjcmVhdGVNdWx0aVBhcnQoY29uc3QgRE9NRm9ybURhdGEmLCBE
b2N1bWVudCopOworICAgIHN0YXRpYyBSZWY8Rm9ybURhdGE+IGNyZWF0ZU11bHRpUGFydChjb25z
dCBET01Gb3JtRGF0YSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIH5Gb3JtRGF0YSgpOwogCiAgICAg
Ly8gRklYTUU6IEJvdGggdGhlc2UgZnVuY3Rpb25zIHBlcmZvcm0gYSBkZWVwIGNvcHkgb2YgbV9l
bGVtZW50cywgYnV0IGRpZmZlciBpbiBoYW5kbGluZyBvZiBvdGhlciBkYXRhIG1lbWJlcnMuCkBA
IC0yMTgsOCArMTkyLDggQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWZQdHI8Rm9ybURhdGE+IGRl
Y29kZShEZWNvZGVyJik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZERhdGEoY29u
c3Qgdm9pZCogZGF0YSwgc2l6ZV90KTsKLSAgICB2b2lkIGFwcGVuZEZpbGUoY29uc3QgU3RyaW5n
JiBmaWxlUGF0aCwgYm9vbCBzaG91bGRHZW5lcmF0ZUZpbGUgPSBmYWxzZSk7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBhcHBlbmRGaWxlUmFuZ2UoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgbG9u
ZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgbGVuZ3RoLCBPcHRpb25hbDxXYWxsVGltZT4gZXhwZWN0
ZWRNb2RpZmljYXRpb25UaW1lLCBib29sIHNob3VsZEdlbmVyYXRlRmlsZSA9IGZhbHNlKTsKKyAg
ICB2b2lkIGFwcGVuZEZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCk7CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBhcHBlbmRGaWxlUmFuZ2UoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgbG9uZyBs
b25nIHN0YXJ0LCBsb25nIGxvbmcgbGVuZ3RoLCBPcHRpb25hbDxXYWxsVGltZT4gZXhwZWN0ZWRN
b2RpZmljYXRpb25UaW1lKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZEJsb2IoY29u
c3QgVVJMJiBibG9iVVJMKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxjaGFyPiBmbGF0
dGVuKCkgY29uc3Q7IC8vIG9taXRzIGZpbGVzCkBAIC0yMjgsNiArMjAyLDcgQEAgcHVibGljOgog
ICAgIC8vIFJlc29sdmUgYWxsIGJsb2IgcmVmZXJlbmNlcyBzbyB3ZSBvbmx5IGhhdmUgZmlsZSBh
bmQgZGF0YS4KICAgICAvLyBJZiB0aGUgRm9ybURhdGEgaGFzIG5vIGJsb2IgcmVmZXJlbmNlcyB0
byByZXNvbHZlLCB0aGlzIGlzIHJldHVybmVkLgogICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxGb3Jt
RGF0YT4gcmVzb2x2ZUJsb2JSZWZlcmVuY2VzKEJsb2JSZWdpc3RyeSYpOworICAgIFdFQkNPUkVf
RVhQT1JUIHN0ZDo6cGFpcjxSZWY8Rm9ybURhdGE+LCBWZWN0b3I8U3RyaW5nPj4gZ2VuZXJhdGVG
aWxlc0ZvclVwbG9hZCgpOwogCiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9l
bGVtZW50cy5pc0VtcHR5KCk7IH0KICAgICBjb25zdCBWZWN0b3I8Rm9ybURhdGFFbGVtZW50PiYg
ZWxlbWVudHMoKSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnRzOyB9CkBAIC0yMzUsOSArMjEwLDYg
QEAgcHVibGljOgogCiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYXNTaGFyZWRCdWZmZXIoKSBj
b25zdDsKIAotICAgIHZvaWQgZ2VuZXJhdGVGaWxlcyhEb2N1bWVudCopOwotICAgIHZvaWQgcmVt
b3ZlR2VuZXJhdGVkRmlsZXNJZk5lZWRlZCgpOwotCiAgICAgYm9vbCBhbHdheXNTdHJlYW0oKSBj
b25zdCB7IHJldHVybiBtX2Fsd2F5c1N0cmVhbTsgfQogICAgIHZvaWQgc2V0QWx3YXlzU3RyZWFt
KGJvb2wgYWx3YXlzU3RyZWFtKSB7IG1fYWx3YXlzU3RyZWFtID0gYWx3YXlzU3RyZWFtOyB9CiAK
QEAgLTI2NiwxNCArMjM4LDExIEBAIHByaXZhdGU6CiAgICAgRm9ybURhdGEoKTsKICAgICBGb3Jt
RGF0YShjb25zdCBGb3JtRGF0YSYpOwogCi0gICAgdm9pZCBhcHBlbmRNdWx0aVBhcnRGaWxlVmFs
dWUoY29uc3QgRmlsZSYsIFZlY3RvcjxjaGFyPiYgaGVhZGVyLCBUZXh0RW5jb2RpbmcmLCBEb2N1
bWVudCopOworICAgIHZvaWQgYXBwZW5kTXVsdGlQYXJ0RmlsZVZhbHVlKGNvbnN0IEZpbGUmLCBW
ZWN0b3I8Y2hhcj4mIGhlYWRlciwgVGV4dEVuY29kaW5nJik7CiAgICAgdm9pZCBhcHBlbmRNdWx0
aVBhcnRTdHJpbmdWYWx1ZShjb25zdCBTdHJpbmcmLCBWZWN0b3I8Y2hhcj4mIGhlYWRlciwgVGV4
dEVuY29kaW5nJik7Ci0gICAgdm9pZCBhcHBlbmRNdWx0aVBhcnRLZXlWYWx1ZVBhaXJJdGVtcyhj
b25zdCBET01Gb3JtRGF0YSYsIERvY3VtZW50Kik7CisgICAgdm9pZCBhcHBlbmRNdWx0aVBhcnRL
ZXlWYWx1ZVBhaXJJdGVtcyhjb25zdCBET01Gb3JtRGF0YSYpOwogICAgIHZvaWQgYXBwZW5kTm9u
TXVsdGlQYXJ0S2V5VmFsdWVQYWlySXRlbXMoY29uc3QgRE9NRm9ybURhdGEmLCBFbmNvZGluZ1R5
cGUpOwogCi0gICAgYm9vbCBoYXNHZW5lcmF0ZWRGaWxlcygpIGNvbnN0OwotICAgIGJvb2wgaGFz
T3duZWRHZW5lcmF0ZWRGaWxlcygpIGNvbnN0OwotCiAgICAgVmVjdG9yPEZvcm1EYXRhRWxlbWVu
dD4gbV9lbGVtZW50czsKIAogICAgIGludDY0X3QgbV9pZGVudGlmaWVyIHsgMCB9OwpAQCAtMzIz
LDUgKzI5Miw3IEBAIFJlZlB0cjxGb3JtRGF0YT4gRm9ybURhdGE6OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQogICAgIHJldHVybiBkYXRhOwogfQogCitTdHJpbmcgZ2VuZXJhdGVGaWxlRm9yVXBs
b2FkKGNvbnN0IFN0cmluZyYpOworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5l
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFt
Q0ZOZXQuY3BwCmluZGV4IGRmZGRlNzFhMWYwYjkxODY3MTI2NTUwNGFjN2EzZmFkOTE5ZmQ3ZTEu
LjI2ZDQ4NjYzM2QyNTJiNjNiN2Y0ZWQ5OTVjOGMxN2ZjODZiYzNkOWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNG
TmV0LmNwcApAQCAtOTIsMTIgKzkyLDE0IEBAIENGU3RyaW5nUmVmIGZvcm1EYXRhU3RyZWFtTGVu
Z3RoUHJvcGVydHlOYW1lKCkKIH0KIAogc3RydWN0IEZvcm1DcmVhdGlvbkNvbnRleHQgewotICAg
IFJlZlB0cjxGb3JtRGF0YT4gZm9ybURhdGE7CisgICAgUmVmPEZvcm1EYXRhPiBmb3JtRGF0YTsK
KyAgICBWZWN0b3I8U3RyaW5nPiBnZW5lcmF0ZWRGaWxlczsKICAgICB1bnNpZ25lZCBsb25nIGxv
bmcgc3RyZWFtTGVuZ3RoOwogfTsKIAogc3RydWN0IEZvcm1TdHJlYW1GaWVsZHMgewogICAgIFJl
ZlB0cjxGb3JtRGF0YT4gZm9ybURhdGE7CisgICAgVmVjdG9yPFN0cmluZz4gZ2VuZXJhdGVkRmls
ZXM7CiAgICAgU2NoZWR1bGVQYWlySGFzaFNldCBzY2hlZHVsZWRSdW5Mb29wUGFpcnM7CiAgICAg
VmVjdG9yPEZvcm1EYXRhRWxlbWVudD4gcmVtYWluaW5nRWxlbWVudHM7IC8vIGluIHJldmVyc2Ug
b3JkZXIKICAgICBDRlJlYWRTdHJlYW1SZWYgY3VycmVudFN0cmVhbTsKQEAgLTE1Myw3ICsxNTUs
OCBAQCBzdGF0aWMgYm9vbCBhZHZhbmNlQ3VycmVudFN0cmVhbShGb3JtU3RyZWFtRmllbGRzKiBm
b3JtKQogICAgICAgICAgICAgICAgIGlmIChmaWxlTW9kaWZpY2F0aW9uVGltZS0+c2Vjb25kc1Np
bmNlRXBvY2goKS5zZWNvbmRzQXM8dGltZV90PigpICE9IGZpbGVEYXRhLmV4cGVjdGVkRmlsZU1v
ZGlmaWNhdGlvblRpbWUtPnNlY29uZHNTaW5jZUVwb2NoKCkuc2Vjb25kc0FzPHRpbWVfdD4oKSkK
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQotICAgICAg
ICAgICAgY29uc3QgU3RyaW5nJiBwYXRoID0gZmlsZURhdGEuc2hvdWxkR2VuZXJhdGVGaWxlID8g
ZmlsZURhdGEuZ2VuZXJhdGVkRmlsZW5hbWUgOiBmaWxlRGF0YS5maWxlbmFtZTsKKworICAgICAg
ICAgICAgY29uc3QgU3RyaW5nJiBwYXRoID0gZmlsZURhdGEuZmlsZW5hbWU7CiAgICAgICAgICAg
ICBmb3JtLT5jdXJyZW50U3RyZWFtID0gQ0ZSZWFkU3RyZWFtQ3JlYXRlV2l0aEZpbGUoMCwgRmls
ZVN5c3RlbTo6cGF0aEFzVVJMKHBhdGgpLmdldCgpKTsKICAgICAgICAgICAgIGlmICghZm9ybS0+
Y3VycmVudFN0cmVhbSkgewogICAgICAgICAgICAgICAgIC8vIFRoZSBmaWxlIG11c3QgaGF2ZSBi
ZWVuIHJlbW92ZWQgb3IgYmVjb21lIHVucmVhZGFibGUuCkBAIC0yMTEsNiArMjE0LDcgQEAgc3Rh
dGljIHZvaWQqIGZvcm1DcmVhdGUoQ0ZSZWFkU3RyZWFtUmVmIHN0cmVhbSwgdm9pZCogY29udGV4
dCkKIAogICAgIEZvcm1TdHJlYW1GaWVsZHMqIG5ld0luZm8gPSBuZXcgRm9ybVN0cmVhbUZpZWxk
czsKICAgICBuZXdJbmZvLT5mb3JtRGF0YSA9IFdURk1vdmUoZm9ybUNvbnRleHQtPmZvcm1EYXRh
KTsKKyAgICBuZXdJbmZvLT5nZW5lcmF0ZWRGaWxlcyA9IFdURk1vdmUoZm9ybUNvbnRleHQtPmdl
bmVyYXRlZEZpbGVzKTsKICAgICBuZXdJbmZvLT5jdXJyZW50U3RyZWFtID0gMDsKICAgICBuZXdJ
bmZvLT5jdXJyZW50U3RyZWFtUmFuZ2VMZW5ndGggPSBCbG9iRGF0YUl0ZW06OnRvRW5kT2ZGaWxl
OwogICAgIG5ld0luZm8tPmZvcm1TdHJlYW0gPSBzdHJlYW07IC8vIERvbid0IHJldGFpbi4gVGhh
dCB3b3VsZCBjcmVhdGUgYSByZWZlcmVuY2UgY3ljbGUuCkBAIC0yNDAsNiArMjQ0LDggQEAgc3Rh
dGljIHZvaWQgZm9ybUZpbmFsaXplKENGUmVhZFN0cmVhbVJlZiBzdHJlYW0sIHZvaWQqIGNvbnRl
eHQpCiAgICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihmb3JtLT5zdHJlYW1Jc0JlaW5nT3Bl
bmVkT3JDbG9zZWRMb2NrKTsKICAgICAgICAgICAgIGNsb3NlQ3VycmVudFN0cmVhbShmb3JtKTsK
ICAgICAgICAgfQorICAgICAgICBmb3IgKGF1dG8mIGdlbmVyYXRlZEZpbGUgOiBmb3JtLT5nZW5l
cmF0ZWRGaWxlcykKKyAgICAgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoZ2VuZXJhdGVk
RmlsZSk7CiAgICAgICAgIGRlbGV0ZSBmb3JtOwogICAgIH0pOwogfQpAQCAtMzc4LDEzICszODQs
MTQgQEAgc3RhdGljIHZvaWQgZm9ybUV2ZW50Q2FsbGJhY2soQ0ZSZWFkU3RyZWFtUmVmIHN0cmVh
bSwgQ0ZTdHJlYW1FdmVudFR5cGUgdHlwZSwgdm8KIFJldGFpblB0cjxDRlJlYWRTdHJlYW1SZWY+
IGNyZWF0ZUhUVFBCb2R5Q0ZSZWFkU3RyZWFtKEZvcm1EYXRhJiBmb3JtRGF0YSkKIHsKICAgICBh
dXRvIHJlc29sdmVkRm9ybURhdGEgPSBmb3JtRGF0YS5yZXNvbHZlQmxvYlJlZmVyZW5jZXMoYmxv
YlJlZ2lzdHJ5KCkpOworICAgIGF1dG8gZGF0YUFuZEZpbGVzID0gcmVzb2x2ZWRGb3JtRGF0YS0+
Z2VuZXJhdGVGaWxlc0ZvclVwbG9hZCgpOwogCiAgICAgLy8gUHJlY29tcHV0ZSB0aGUgY29udGVu
dCBsZW5ndGggc28gQ0ZOZXR3b3JrIGRvZXNuJ3QgdXNlIGNodW5rZWQgbW9kZS4KICAgICB1bnNp
Z25lZCBsb25nIGxvbmcgbGVuZ3RoID0gMDsKLSAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiByZXNv
bHZlZEZvcm1EYXRhLT5lbGVtZW50cygpKQorICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGRhdGFB
bmRGaWxlcy5maXJzdC0+ZWxlbWVudHMoKSkKICAgICAgICAgbGVuZ3RoICs9IGVsZW1lbnQubGVu
Z3RoSW5CeXRlcygpOwogCi0gICAgRm9ybUNyZWF0aW9uQ29udGV4dCogZm9ybUNvbnRleHQgPSBu
ZXcgRm9ybUNyZWF0aW9uQ29udGV4dCB7IFdURk1vdmUocmVzb2x2ZWRGb3JtRGF0YSksIGxlbmd0
aCB9OworICAgIEZvcm1DcmVhdGlvbkNvbnRleHQqIGZvcm1Db250ZXh0ID0gbmV3IEZvcm1DcmVh
dGlvbkNvbnRleHQgeyBXVEZNb3ZlKGRhdGFBbmRGaWxlcy5maXJzdCksIFdURk1vdmUoZGF0YUFu
ZEZpbGVzLnNlY29uZCksIGxlbmd0aCB9OwogICAgIENGUmVhZFN0cmVhbUNhbGxCYWNrc1YxIGNh
bGxCYWNrcyA9IHsgMSwgZm9ybUNyZWF0ZSwgZm9ybUZpbmFsaXplLCBudWxscHRyLCBmb3JtT3Bl
biwgbnVsbHB0ciwgZm9ybVJlYWQsIG51bGxwdHIsIGZvcm1DYW5SZWFkLCBmb3JtQ2xvc2UsIGZv
cm1Db3B5UHJvcGVydHksIG51bGxwdHIsIG51bGxwdHIsIGZvcm1TY2hlZHVsZSwgZm9ybVVuc2No
ZWR1bGUgfTsKICAgICByZXR1cm4gYWRvcHRDRihDRlJlYWRTdHJlYW1DcmVhdGUobnVsbHB0ciwg
c3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+KCZjYWxsQmFja3MpLCBmb3JtQ29udGV4dCkpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQmxvYkRhdGFG
aWxlUmVmZXJlbmNlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMv
QmxvYkRhdGFGaWxlUmVmZXJlbmNlTWFjLm1tCmluZGV4IGI2OTI5MjBiMjFmYzY2MzlkNTc0NWQx
YzA0NGU4Yjc4NzgyMzUwZDAuLmVjZGU5MWFiNDFkODM4MDg0MGQ3Y2RjYmVmMDVjNGRmZDU4Yzdh
ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Jsb2JE
YXRhRmlsZVJlZmVyZW5jZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL21hYy9CbG9iRGF0YUZpbGVSZWZlcmVuY2VNYWMubW0KQEAgLTI4LDYgKzI4LDcgQEAKIAog
I2lmIEVOQUJMRShGSUxFX1JFUExBQ0VNRU5UKQogCisjaW5jbHVkZSAiRm9ybURhdGEuaCIKICNp
bmNsdWRlIDx3dGYvRmlsZU1ldGFkYXRhLmg+CiAjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4K
ICNpbmNsdWRlIDx3dGYvU29mdExpbmtpbmcuaD4KQEAgLTUxLDE1ICs1MiwxMiBAQCBTT0ZUX0xJ
TksoQm9tLCBCT01Db3BpZXJDb3B5V2l0aE9wdGlvbnMsIGludCwgKEJPTUNvcGllciBjb3BpZXIs
IGNvbnN0IGNoYXIqIGZybwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgQmxvYkRhdGFG
aWxlUmVmZXJlbmNlOjpnZW5lcmF0ZVJlcGxhY2VtZW50RmlsZSgpCitTdHJpbmcgZ2VuZXJhdGVG
aWxlRm9yVXBsb2FkKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKLSAgICBBU1NFUlQobV9yZXBsYWNl
bWVudFBhdGguaXNOdWxsKCkpOwotICAgIEFTU0VSVChtX3JlcGxhY2VtZW50U2hvdWxkQmVHZW5l
cmF0ZWQpOwotCi0gICAgcHJlcGFyZUZvckZpbGVBY2Nlc3MoKTsKKyAgICBTdHJpbmcgZ2VuZXJh
dGVkRmlsZTsKIAogICAgIFJldGFpblB0cjxOU0ZpbGVDb29yZGluYXRvcj4gY29vcmRpbmF0b3Ig
PSBhZG9wdE5TKFtbTlNGaWxlQ29vcmRpbmF0b3IgYWxsb2NdIGluaXRXaXRoRmlsZVByZXNlbnRl
cjpuaWxdKTsKLSAgICBbY29vcmRpbmF0b3IgY29vcmRpbmF0ZVJlYWRpbmdJdGVtQXRVUkw6W05T
VVJMIGZpbGVVUkxXaXRoUGF0aDptX3BhdGhdIG9wdGlvbnM6TlNGaWxlQ29vcmRpbmF0b3JSZWFk
aW5nV2l0aG91dENoYW5nZXMgZXJyb3I6bnVsbHB0ciBieUFjY2Vzc29yOl4oTlNVUkwgKm5ld1VS
TCkgeworICAgIFtjb29yZGluYXRvciBjb29yZGluYXRlUmVhZGluZ0l0ZW1BdFVSTDpbTlNVUkwg
ZmlsZVVSTFdpdGhQYXRoOnBhdGhdIG9wdGlvbnM6TlNGaWxlQ29vcmRpbmF0b3JSZWFkaW5nV2l0
aG91dENoYW5nZXMgZXJyb3I6bnVsbHB0ciBieUFjY2Vzc29yOlsmXShOU1VSTCAqbmV3VVJMKSBt
dXRhYmxlIHsKICAgICAgICAgLy8gVGhlIGFyY2hpdmUgaXMgcHV0IGludG8gYSBzdWJkaXJlY3Rv
cnkgb2YgdGVtcG9yYXJ5IGRpcmVjdG9yeSBmb3IgaGlzdG9yaWMgcmVhc29ucy4gQ2hhbmdpbmcg
dGhpcyB3aWxsIHJlcXVpcmUgV2ViQ29yZSB0byBjaGFuZ2UgYXQgdGhlIHNhbWUgdGltZS4KICAg
ICAgICAgQ1N0cmluZyBhcmNoaXZlUGF0aChbTlNUZW1wb3JhcnlEaXJlY3RvcnkoKSBzdHJpbmdC
eUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJXZWJLaXRHZW5lcmF0ZWRGaWxlWFhYWFhYIl0uZmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKTsKICAgICAgICAgaWYgKG1rc3RlbXAoYXJjaGl2ZVBhdGgu
bXV0YWJsZURhdGEoKSkgPT0gLTEpCkBAIC03NCwxMCArNzIsMjQgQEAgdm9pZCBCbG9iRGF0YUZp
bGVSZWZlcmVuY2U6OmdlbmVyYXRlUmVwbGFjZW1lbnRGaWxlKCkKIAogICAgICAgICBCT01Db3Bp
ZXIgY29waWVyID0gQk9NQ29waWVyTmV3KCk7CiAgICAgICAgIGlmICghQk9NQ29waWVyQ29weVdp
dGhPcHRpb25zKGNvcGllciwgbmV3VVJMLnBhdGguZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uLCBh
cmNoaXZlUGF0aC5kYXRhKCksIChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpb3B0aW9ucykpCi0g
ICAgICAgICAgICBtX3JlcGxhY2VtZW50UGF0aCA9IFN0cmluZzo6ZnJvbVVURjgoYXJjaGl2ZVBh
dGgpOworICAgICAgICAgICAgZ2VuZXJhdGVkRmlsZSA9IFN0cmluZzo6ZnJvbVVURjgoYXJjaGl2
ZVBhdGgpOwogICAgICAgICBCT01Db3BpZXJGcmVlKGNvcGllcik7CiAgICAgfV07CiAKKyAgICBy
ZXR1cm4gZ2VuZXJhdGVkRmlsZTsKK30KKwordm9pZCBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6Omdl
bmVyYXRlUmVwbGFjZW1lbnRGaWxlKCkKK3sKKyAgICBBU1NFUlQobV9yZXBsYWNlbWVudFBhdGgu
aXNOdWxsKCkpOworICAgIEFTU0VSVChtX3JlcGxhY2VtZW50U2hvdWxkQmVHZW5lcmF0ZWQpOwor
CisgICAgcHJlcGFyZUZvckZpbGVBY2Nlc3MoKTsKKworICAgIGF1dG8gZ2VuZXJhdGVkRmlsZSA9
IGdlbmVyYXRlRmlsZUZvclVwbG9hZChtX3BhdGgpOworICAgIGlmICghZ2VuZXJhdGVkRmlsZS5p
c051bGwoKSkKKyAgICAgICAgbV9yZXBsYWNlbWVudFBhdGggPSBXVEZNb3ZlKGdlbmVyYXRlZEZp
bGUpOworCiAgICAgbV9yZXBsYWNlbWVudFNob3VsZEJlR2VuZXJhdGVkID0gZmFsc2U7CiAgICAg
aWYgKCFtX3JlcGxhY2VtZW50UGF0aC5pc051bGwoKSkgewogICAgICAgICBpZiAoYXV0byBtZXRh
ZGF0YSA9IEZpbGVTeXN0ZW06OmZpbGVNZXRhZGF0YUZvbGxvd2luZ1N5bWxpbmtzKG1fcmVwbGFj
ZW1lbnRQYXRoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVz
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCmluZGV4IDVjNjQ3
NGZmNDdmNmQwMmFkY2JkYTI5ZWNhZDU2NGY0YjQ2YjMwMjguLjA0MjgwMzM3ZjE4MWM2MDQ0MGE5
MDU5YmMwYTI1ZDg1Y2UzZjA2ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxI
dHRwUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNw
cApAQCAtNTMzLDggKzUzMyw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFhNTEh0dHBSZXF1ZXN0Ojpz
ZW5kKERPTUZvcm1EYXRhJiBib2R5KQogICAgICAgICByZXR1cm4gV1RGTW92ZShyZXN1bHQudmFs
dWUoKSk7CiAKICAgICBpZiAobV9tZXRob2QgIT0gIkdFVCIgJiYgbV9tZXRob2QgIT0gIkhFQUQi
KSB7Ci0gICAgICAgIG1fcmVxdWVzdEVudGl0eUJvZHkgPSBGb3JtRGF0YTo6Y3JlYXRlTXVsdGlQ
YXJ0KGJvZHksIGRvY3VtZW50KCkpOwotICAgICAgICBtX3JlcXVlc3RFbnRpdHlCb2R5LT5nZW5l
cmF0ZUZpbGVzKGRvY3VtZW50KCkpOworICAgICAgICBtX3JlcXVlc3RFbnRpdHlCb2R5ID0gRm9y
bURhdGE6OmNyZWF0ZU11bHRpUGFydChib2R5KTsKICAgICAgICAgaWYgKCFtX3JlcXVlc3RIZWFk
ZXJzLmNvbnRhaW5zKEhUVFBIZWFkZXJOYW1lOjpDb250ZW50VHlwZSkpCiAgICAgICAgICAgICBt
X3JlcXVlc3RIZWFkZXJzLnNldChIVFRQSGVhZGVyTmFtZTo6Q29udGVudFR5cGUsIG1ha2VTdHJp
bmcoIm11bHRpcGFydC9mb3JtLWRhdGE7IGJvdW5kYXJ5PSIsIG1fcmVxdWVzdEVudGl0eUJvZHkt
PmJvdW5kYXJ5KCkuZGF0YSgpKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcApp
bmRleCAwZTQ0NTk0Yjg5ZTY2NjQ4OWFmZjEyOGY4YzUxYzBjNmMxYWNlMjQ5Li5iZjhhMGE2OGQ3
M2JhMjRmZGYzYzE1MDhlYzdkYjBkMTVkZTQxN2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJz
LmNwcApAQCAtNTcsNyArNTcsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJz
OjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgICAgICBmb3IgKHNpemVf
dCBpID0gMCwgY291bnQgPSBlbGVtZW50cy5zaXplKCk7IGkgPCBjb3VudDsgKytpKSB7CiAgICAg
ICAgICAgICBjb25zdCBGb3JtRGF0YUVsZW1lbnQmIGVsZW1lbnQgPSBlbGVtZW50c1tpXTsKICAg
ICAgICAgICAgIGlmIChhdXRvKiBmaWxlRGF0YSA9IFdURjo6Z2V0X2lmPEZvcm1EYXRhRWxlbWVu
dDo6RW5jb2RlZEZpbGVEYXRhPihlbGVtZW50LmRhdGEpKSB7Ci0gICAgICAgICAgICAgICAgY29u
c3QgU3RyaW5nJiBwYXRoID0gZmlsZURhdGEtPnNob3VsZEdlbmVyYXRlRmlsZSA/IGZpbGVEYXRh
LT5nZW5lcmF0ZWRGaWxlbmFtZSA6IGZpbGVEYXRhLT5maWxlbmFtZTsKKyAgICAgICAgICAgICAg
ICBjb25zdCBTdHJpbmcmIHBhdGggPSBmaWxlRGF0YS0+ZmlsZW5hbWU7CiAgICAgICAgICAgICAg
ICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKHBhdGgsIFNhbmRib3hFeHRlbnNpb246
OlR5cGU6OlJlYWRPbmx5LCByZXF1ZXN0Qm9keVNhbmRib3hFeHRlbnNpb25zW2V4dGVuc2lvbklu
ZGV4KytdKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvRm9ybURhdGFSZWZlcmVuY2UuaCBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL0Zvcm1EYXRhUmVmZXJlbmNlLmgKaW5kZXggOGEzOTVhNjU3MTNhMTlhMzJlMzNk
ZjhkNmM4OWM5M2E2ODRjMDYzNS4uYmM0OTdjNjIzNWZkMWU1MjhiMjNhYjU0MDIzMGUwNDBhZDYx
MmRiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRm9ybURhdGFSZWZl
cmVuY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Gb3JtRGF0YVJlZmVyZW5j
ZS5oCkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICAgICAgc2l6ZV90IGV4dGVuc2lvbklu
ZGV4ID0gMDsKICAgICAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogZWxlbWVudHMpIHsKICAgICAg
ICAgICAgIGlmIChhdXRvKiBmaWxlRGF0YSA9IFdURjo6Z2V0X2lmPFdlYkNvcmU6OkZvcm1EYXRh
RWxlbWVudDo6RW5jb2RlZEZpbGVEYXRhPihlbGVtZW50LmRhdGEpKSB7Ci0gICAgICAgICAgICAg
ICAgY29uc3QgU3RyaW5nJiBwYXRoID0gZmlsZURhdGEtPnNob3VsZEdlbmVyYXRlRmlsZSA/IGZp
bGVEYXRhLT5nZW5lcmF0ZWRGaWxlbmFtZSA6IGZpbGVEYXRhLT5maWxlbmFtZTsKKyAgICAgICAg
ICAgICAgICBjb25zdCBTdHJpbmcmIHBhdGggPSBmaWxlRGF0YS0+ZmlsZW5hbWU7CiAgICAgICAg
ICAgICAgICAgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUocGF0aCwgV2Vi
S2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkT25seSwgc2FuZGJveEV4dGVuc2lvbkhh
bmRsZXNbZXh0ZW5zaW9uSW5kZXgrK10pOwogICAgICAgICAgICAgfQogICAgICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Jlc291cmNlcy9TYW5kYm94UHJvZmlsZXMvaW9zL2NvbS5h
cHBsZS5XZWJLaXQuTmV0d29ya2luZy5zYiBiL1NvdXJjZS9XZWJLaXQvUmVzb3VyY2VzL1NhbmRi
b3hQcm9maWxlcy9pb3MvY29tLmFwcGxlLldlYktpdC5OZXR3b3JraW5nLnNiCmluZGV4IDgwNzE2
ZWM2NDM0OGJmYjQ0OGVkZTY3NjJkNGMwZGQ5YzE5Y2RmN2YuLmI2ZDFiMTg1YTRiMzljMjc0Y2M2
MWI3NDg3ZjhiZmNkMjE4ZDQzYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUmVzb3VyY2Vz
L1NhbmRib3hQcm9maWxlcy9pb3MvY29tLmFwcGxlLldlYktpdC5OZXR3b3JraW5nLnNiCisrKyBi
L1NvdXJjZS9XZWJLaXQvUmVzb3VyY2VzL1NhbmRib3hQcm9maWxlcy9pb3MvY29tLmFwcGxlLldl
YktpdC5OZXR3b3JraW5nLnNiCkBAIC04Myw2ICs4Myw3IEBACiAgICAgKGdsb2JhbC1uYW1lICJj
b20uYXBwbGUucGFzc2QubGlicmFyeSIpKQogCiAoYWxsb3cgbWFjaC1sb29rdXAKKyAgICAoZ2xv
YmFsLW5hbWUgImNvbS5hcHBsZS5GaWxlQ29vcmRpbmF0aW9uIikKICAgICAoZ2xvYmFsLW5hbWUg
ImNvbS5hcHBsZS5kbWQucG9saWN5IikKICAgICAoZ2xvYmFsLW5hbWUgImNvbS5hcHBsZS5zaXJp
LmNvbnRleHQuc2VydmljZSIpCiAgICAgKGdsb2JhbC1uYW1lICJjb20uYXBwbGUuY3RjYXRlZ29y
aWVzLnNlcnZpY2UiKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVQYWdl
VUlDbGllbnQuaAppbmRleCBlYWNhM2U3MTYzZjJhOGM3OTI1Zjc5M2M0OGUwZDNmOTc3YjdhOTc5
Li45NWY0MzgyYjUyYzFhNWY3MDg0OGY5M2MzODk1YjY5NDNlZGFlNzZjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVu
ZGxlUGFnZVVJQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5oCkBAIC01OCw5ICs1OCw2
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoV2Vi
S2l0OjpXZWJQYWdlKiwgY29uc3QgV2ViQ29yZTo6SGl0VGVzdFJlc3VsdCYsIE9wdGlvblNldDxX
ZWJLaXQ6OldlYkV2ZW50OjpNb2RpZmllcj4sIFJlZlB0cjxBUEk6Ok9iamVjdD4mIHVzZXJEYXRh
KSB7IFVOVVNFRF9QQVJBTSh1c2VyRGF0YSk7IH0KICAgICB2aXJ0dWFsIHZvaWQgcGFnZURpZFNj
cm9sbChXZWJLaXQ6OldlYlBhZ2UqKSB7IH0KIAotICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgc2hv
dWxkR2VuZXJhdGVGaWxlRm9yVXBsb2FkKFdlYktpdDo6V2ViUGFnZSosIGNvbnN0IFdURjo6U3Ry
aW5nJiBvcmlnaW5hbEZpbGVQYXRoKSB7IFVOVVNFRF9QQVJBTShvcmlnaW5hbEZpbGVQYXRoKTsg
cmV0dXJuIFdURjo6U3RyaW5nKCk7IH0KLSAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIGdlbmVyYXRl
RmlsZUZvclVwbG9hZChXZWJLaXQ6OldlYlBhZ2UqLCBjb25zdCBXVEY6OlN0cmluZyYgb3JpZ2lu
YWxGaWxlUGF0aCkgeyBVTlVTRURfUEFSQU0ob3JpZ2luYWxGaWxlUGF0aCk7IHJldHVybiBlbXB0
eVN0cmluZygpOyB9Ci0KICAgICBlbnVtIGNsYXNzIFVJRWxlbWVudFZpc2liaWxpdHkgewogICAg
ICAgICBVbmtub3duLAogICAgICAgICBWaXNpYmxlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50LmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZVBhZ2VVSUNsaWVudC5jcHAKaW5kZXggNTg2MzNkOTc2MTgyZjc0NDYyN2FlMDU2N2VlY2ZhMjM0
MTQzOWZiNi4uM2ZmYjgwMzc1ZjI0NzMwNzRmMjc3MzY5NTBhMWUyOGU1ZWEzZDEwMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlUGFnZVVJQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQuY3BwCkBAIC05MywyMiArOTMsNiBA
QCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50OjpwYWdlRGlkU2Nyb2xsKFdlYlBhZ2Uq
IHBhZ2UpCiAgICAgbV9jbGllbnQucGFnZURpZFNjcm9sbCh0b0FQSShwYWdlKSwgbV9jbGllbnQu
YmFzZS5jbGllbnRJbmZvKTsKIH0KIAotU3RyaW5nIEluamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50
OjpzaG91bGRHZW5lcmF0ZUZpbGVGb3JVcGxvYWQoV2ViUGFnZSogcGFnZSwgY29uc3QgU3RyaW5n
JiBvcmlnaW5hbEZpbGVQYXRoKQotewotICAgIGlmICghbV9jbGllbnQuc2hvdWxkR2VuZXJhdGVG
aWxlRm9yVXBsb2FkKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgUmVmUHRyPEFQSTo6
U3RyaW5nPiBnZW5lcmF0ZWRGaWxlUGF0aCA9IGFkb3B0UmVmKHRvSW1wbChtX2NsaWVudC5zaG91
bGRHZW5lcmF0ZUZpbGVGb3JVcGxvYWQodG9BUEkocGFnZSksIHRvQVBJKG9yaWdpbmFsRmlsZVBh
dGguaW1wbCgpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKSkpOwotICAgIHJldHVybiBnZW5l
cmF0ZWRGaWxlUGF0aCA/IGdlbmVyYXRlZEZpbGVQYXRoLT5zdHJpbmcoKSA6IFN0cmluZygpOwot
fQotCi1TdHJpbmcgSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQ6OmdlbmVyYXRlRmlsZUZvclVw
bG9hZChXZWJQYWdlKiBwYWdlLCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsRmlsZVBhdGgpCi17Ci0g
ICAgaWYgKCFtX2NsaWVudC5nZW5lcmF0ZUZpbGVGb3JVcGxvYWQpCi0gICAgICAgIHJldHVybiBT
dHJpbmcoKTsKLSAgICBSZWZQdHI8QVBJOjpTdHJpbmc+IGdlbmVyYXRlZEZpbGVQYXRoID0gYWRv
cHRSZWYodG9JbXBsKG1fY2xpZW50LmdlbmVyYXRlRmlsZUZvclVwbG9hZCh0b0FQSShwYWdlKSwg
dG9BUEkob3JpZ2luYWxGaWxlUGF0aC5pbXBsKCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8p
KSk7Ci0gICAgcmV0dXJuIGdlbmVyYXRlZEZpbGVQYXRoID8gZ2VuZXJhdGVkRmlsZVBhdGgtPnN0
cmluZygpIDogU3RyaW5nKCk7Ci19Ci0KIHN0YXRpYyBBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdl
VUlDbGllbnQ6OlVJRWxlbWVudFZpc2liaWxpdHkgdG9VSUVsZW1lbnRWaXNpYmlsaXR5KFdLQnVu
ZGxlUGFnZVVJRWxlbWVudFZpc2liaWxpdHkgdmlzaWJpbGl0eSkKIHsKICAgICBzd2l0Y2ggKHZp
c2liaWxpdHkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50LmgKaW5kZXgg
NTlmMWIxY2NhYzE2MGI3MTYyNTM4MmRjMmRmNWQyMmRkMGQwNGQ2MS4uNjI3ODQ0YjlhNGE2YmQ1
ODNjYjUzZmU3NDU2YTM3NGRkZDA2N2U4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFn
ZVVJQ2xpZW50LmgKQEAgLTU0LDkgKzU0LDYgQEAgcHVibGljOgogICAgIHZvaWQgbW91c2VEaWRN
b3ZlT3ZlckVsZW1lbnQoV2ViUGFnZSosIGNvbnN0IFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQmLCBP
cHRpb25TZXQ8V2ViRXZlbnQ6Ok1vZGlmaWVyPiwgUmVmUHRyPEFQSTo6T2JqZWN0PiYgdXNlckRh
dGEpIG92ZXJyaWRlOwogICAgIHZvaWQgcGFnZURpZFNjcm9sbChXZWJQYWdlKikgb3ZlcnJpZGU7
CiAKLSAgICBTdHJpbmcgc2hvdWxkR2VuZXJhdGVGaWxlRm9yVXBsb2FkKFdlYlBhZ2UqLCBjb25z
dCBTdHJpbmcmIG9yaWdpbmFsRmlsZVBhdGgpIG92ZXJyaWRlOwotICAgIFN0cmluZyBnZW5lcmF0
ZUZpbGVGb3JVcGxvYWQoV2ViUGFnZSosIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxGaWxlUGF0aCkg
b3ZlcnJpZGU7Ci0gICAgCiAgICAgVUlFbGVtZW50VmlzaWJpbGl0eSBzdGF0dXNCYXJJc1Zpc2li
bGUoV2ViUGFnZSopIG92ZXJyaWRlOwogICAgIFVJRWxlbWVudFZpc2liaWxpdHkgbWVudUJhcklz
VmlzaWJsZShXZWJQYWdlKikgb3ZlcnJpZGU7CiAgICAgVUlFbGVtZW50VmlzaWJpbGl0eSB0b29s
YmFyc0FyZVZpc2libGUoV2ViUGFnZSopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcApp
bmRleCBhNjU2NmQyMDZiOGJiNzJmZTM5OGM0M2M5MWZjMmM2ZGYxODk4ZjViLi5iM2Q2YTBjZjA2
YmZhM2EyMzcxYzRkMWRiZmU1MDViNjMzNmMyNDZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcApA
QCAtNzc1LDE3ICs3NzUsNiBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6cmVhY2hlZEFwcGxpY2F0
aW9uQ2FjaGVPcmlnaW5RdW90YShTZWN1cml0eU9yaWdpbiYgb3JpZ2luLAogICAgIGNhY2hlU3Rv
cmFnZS5zdG9yZVVwZGF0ZWRRdW90YUZvck9yaWdpbigmb3JpZ2luLCBuZXdRdW90YSk7CiB9CiAK
LWJvb2wgV2ViQ2hyb21lQ2xpZW50OjpzaG91bGRSZXBsYWNlV2l0aEdlbmVyYXRlZEZpbGVGb3JV
cGxvYWQoY29uc3QgU3RyaW5nJiBwYXRoLCBTdHJpbmcmIGdlbmVyYXRlZEZpbGVuYW1lKQotewot
ICAgIGdlbmVyYXRlZEZpbGVuYW1lID0gbV9wYWdlLmluamVjdGVkQnVuZGxlVUlDbGllbnQoKS5z
aG91bGRHZW5lcmF0ZUZpbGVGb3JVcGxvYWQoJm1fcGFnZSwgcGF0aCk7Ci0gICAgcmV0dXJuICFn
ZW5lcmF0ZWRGaWxlbmFtZS5pc051bGwoKTsKLX0KLQotU3RyaW5nIFdlYkNocm9tZUNsaWVudDo6
Z2VuZXJhdGVSZXBsYWNlbWVudEZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIHJldHVy
biBtX3BhZ2UuaW5qZWN0ZWRCdW5kbGVVSUNsaWVudCgpLmdlbmVyYXRlRmlsZUZvclVwbG9hZCgm
bV9wYWdlLCBwYXRoKTsKLX0KLQogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQogCiBzdGQ6
OnVuaXF1ZV9wdHI8Q29sb3JDaG9vc2VyPiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZUNvbG9yQ2hv
b3NlcihDb2xvckNob29zZXJDbGllbnQmIGNsaWVudCwgY29uc3QgQ29sb3ImIGluaXRpYWxDb2xv
cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCBmYTI0NjU3MWQ2OGM0OWFmOTMwNjc3OTVlZjNmZTBl
ZjY0MWE2YThiLi5iMTQ0NDFlZmNhYThjOWFiMzc5NGYwYWJiODdkNTY2NTgyYTYxYzg1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5oCkBAIC0xNDIsOSArMTQyLDYgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQg
cmVhY2hlZE1heEFwcENhY2hlU2l6ZShpbnQ2NF90IHNwYWNlTmVlZGVkKSBmaW5hbDsKICAgICB2
b2lkIHJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW4mLCBpbnQ2NF90IHNwYWNlTmVlZGVkKSBmaW5hbDsKLQotICAgIGJvb2wgc2hvdWxkUmVw
bGFjZVdpdGhHZW5lcmF0ZWRGaWxlRm9yVXBsb2FkKGNvbnN0IFN0cmluZyYgcGF0aCwgU3RyaW5n
JiBnZW5lcmF0ZWRGaWxlbmFtZSkgZmluYWw7Ci0gICAgU3RyaW5nIGdlbmVyYXRlUmVwbGFjZW1l
bnRGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCkgZmluYWw7CiAgICAgCiAjaWYgRU5BQkxFKElOUFVU
X1RZUEVfQ09MT1IpCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkNvbG9yQ2hvb3Nlcj4g
Y3JlYXRlQ29sb3JDaG9vc2VyKFdlYkNvcmU6OkNvbG9yQ2hvb3NlckNsaWVudCYsIGNvbnN0IFdl
YkNvcmU6OkNvbG9yJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvY29tLmFwcGxlLldlYlByb2Nlc3Muc2IuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
Y29tLmFwcGxlLldlYlByb2Nlc3Muc2IuaW4KaW5kZXggZGE3YzM5YzRmY2ViM2NlMTEzMDQ1YjQ5
ZTc1NDA4Y2ExNjc1ZGJjMS4uYWMwZGIwYTVjMjhjN2JkYTE5OGVkMjRiNDI3NmUxOTllZmRhZDMw
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvbS5hcHBsZS5XZWJQcm9j
ZXNzLnNiLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb20uYXBwbGUuV2ViUHJv
Y2Vzcy5zYi5pbgpAQCAtNTg2LDkgKzU4Niw2IEBACiAoYWxsb3cgbWFjaC1sb29rdXAKICAgICAg
ICAoZ2xvYmFsLW5hbWUgImNvbS5hcHBsZS53ZWJpbnNwZWN0b3IiKSkKIAotKGFsbG93IG1hY2gt
bG9va3VwCi0gICAgKGdsb2JhbC1uYW1lICJjb20uYXBwbGUuRmlsZUNvb3JkaW5hdGlvbiIpKQot
CiA7OyBWYXJpb3VzIHNlcnZpY2VzIHJlcXVpcmVkIGJ5IEFwcEtpdCBhbmQgb3RoZXIgZnJhbWV3
b3JrcwogKGFsbG93IG1hY2gtbG9va3VwCiAjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFV
SVJFRCA8IDEwMTQwMApAQCAtOTcwLDE4ICs5NjcsOSBAQAogICAgICAgICAoc3lzY2FsbC1udW1i
ZXIgU1lTX3F1b3RhY3RsKSA7OyA8cmRhcjovL3Byb2JsZW0vNDk5NDUwMzE+CiAgICAgICAgIChz
eXNjYWxsLW51bWJlciBTWVNfc3RhdDY0X2V4dGVuZGVkKSA7OyA8cmRhcjovL3Byb2JsZW0vNTA0
NzMzMzA+CiAgICAgICAgIChzeXNjYWxsLW51bWJlciBTWVNfbHN0YXQ2NF9leHRlbmRlZCkKLSAg
ICAgICAgKHN5c2NhbGwtbnVtYmVyIFNZU19pb3BvbGljeXN5cykKLSAgICAgICAgKHN5c2NhbGwt
bnVtYmVyIFNZU193b3JrcV9vcGVuKQotICAgICAgICAoc3lzY2FsbC1udW1iZXIgU1lTX2dldGdy
b3VwcykKICAgICAgICAgKHN5c2NhbGwtbnVtYmVyIFNZU19mZ2V0YXR0cmxpc3QpIDs7IDxyZGFy
Oi8vcHJvYmxlbS81MDkzMTExMD4KICAgICAgICAgKHN5c2NhbGwtbnVtYmVyIFNZU19rcXVldWUp
IDs7IDxyZGFyOi8vcHJvYmxlbS80OTYwOTIwMT4KICAgICAgICAgKHN5c2NhbGwtbnVtYmVyIFNZ
U19rcXVldWVfd29ya2xvb3BfY3RsKSA7OyA8cmRhcjovL3Byb2JsZW0vNTA5OTk0OTk+Ci0gICAg
ICAgIChzeXNjYWxsLW51bWJlciBTWVNfb3Blbl9kcHJvdGVjdGVkX25wKQotICAgICAgICAoc3lz
Y2FsbC1udW1iZXIgU1lTX2ZsaXN0eGF0dHIpCi0gICAgICAgIChzeXNjYWxsLW51bWJlciBTWVNf
ZnNldGF0dHJsaXN0KQotICAgICAgICAoc3lzY2FsbC1udW1iZXIgU1lTX2ZjaG93bikKLSAgICAg
ICAgKHN5c2NhbGwtbnVtYmVyIFNZU19mY2hmbGFncykKLSAgICAgICAgKHN5c2NhbGwtbnVtYmVy
IFNZU19mc3RhdDY0X2V4dGVuZGVkKQogICAgICkKICkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRGVmYXVsdERlbGVnYXRlcy9XZWJEZWZhdWx0VUlEZWxlZ2F0ZS5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RlZmF1bHREZWxlZ2F0ZXMvV2ViRGVmYXVsdFVJRGVs
ZWdhdGUubW0KaW5kZXggMzU4YWE2OWZhNGMwZDU5NjY4OWM4NjExYTQxYzJlNzljOWFkNWYzZC4u
NTUyMDFhNjVkNzE0ZTdkYTAxZGI5MjY3MzcxMDI3MWRiOWM1Zjc1YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRGVmYXVsdERlbGVnYXRlcy9XZWJEZWZhdWx0VUlEZWxlZ2F0
ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9EZWZhdWx0RGVsZWdhdGVzL1dlYkRl
ZmF1bHRVSURlbGVnYXRlLm1tCkBAIC0yNTYsMTYgKzI1Niw2IEBAIHN0YXRpYyBXZWJEZWZhdWx0
VUlEZWxlZ2F0ZSAqc2hhcmVkRGVsZWdhdGUgPSBuaWw7CiB7CiB9CiAKLS0gKEJPT0wpd2ViVmll
dzooV2ViVmlldyAqKXNlbmRlciBzaG91bGRSZXBsYWNlVXBsb2FkRmlsZTooTlNTdHJpbmcgKilw
YXRoIHVzaW5nR2VuZXJhdGVkRmlsZW5hbWU6KE5TU3RyaW5nICoqKWZpbGVuYW1lCi17Ci0gICAg
cmV0dXJuIE5POwotfQotCi0tIChOU1N0cmluZyAqKXdlYlZpZXc6KFdlYlZpZXcgKilzZW5kZXIg
Z2VuZXJhdGVSZXBsYWNlbWVudEZpbGU6KE5TU3RyaW5nICopcGF0aAotewotICAgIHJldHVybiBu
aWw7Ci19Ci0KICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogLSAodm9pZCl3ZWJWaWV3U3VwcG9y
dGVkT3JpZW50YXRpb25zVXBkYXRlZDooV2ViVmlldyAqKXNlbmRlcgogewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
aAppbmRleCBiMzQxMjQ5MjQwMTJmZmJhOWUwNjg1YzBiZTk3YjEyNTU3NjQ0MzZiLi5mZGM0Y2M3
ODE5NmZjYmNmMzI2MDJkMThlMjg5ZjA3YTExNTRjYzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApAQCAt
MTU4LDkgKzE1OCw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBlbmFibGVTdWRkZW5UZXJtaW5hdGlv
bigpIGZpbmFsOwogICAgIHZvaWQgZGlzYWJsZVN1ZGRlblRlcm1pbmF0aW9uKCkgZmluYWw7CiAK
LSAgICBib29sIHNob3VsZFJlcGxhY2VXaXRoR2VuZXJhdGVkRmlsZUZvclVwbG9hZChjb25zdCBT
dHJpbmcmIHBhdGgsIFN0cmluZyAmZ2VuZXJhdGVkRmlsZW5hbWUpIGZpbmFsOwotICAgIFN0cmlu
ZyBnZW5lcmF0ZVJlcGxhY2VtZW50RmlsZShjb25zdCBTdHJpbmcmIHBhdGgpIGZpbmFsOwotCiAj
aWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdm9pZCBlbGVtZW50RGlkRm9jdXMoV2ViQ29y
ZTo6RWxlbWVudCYpIG92ZXJyaWRlOwogICAgIHZvaWQgZWxlbWVudERpZEJsdXIoV2ViQ29yZTo6
RWxlbWVudCYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCmluZGV4IDNmOTZiNGFiN2IzOGUz
YTc2MjBjMmEwMDM5Yjg5NGFlOTA3Y2U3NTkuLmUxYTg5ODljNDhiZTI1ZDU1MjRiYTM1ZWNjZGFj
OWFkYTQ0YjVmNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0KQEAgLTg1NSwyMCArODU1LDYgQEAgdm9p
ZCBXZWJDaHJvbWVDbGllbnQ6OmRpc2FibGVTdWRkZW5UZXJtaW5hdGlvbigpCiAjZW5kaWYKIH0K
IAotYm9vbCBXZWJDaHJvbWVDbGllbnQ6OnNob3VsZFJlcGxhY2VXaXRoR2VuZXJhdGVkRmlsZUZv
clVwbG9hZChjb25zdCBTdHJpbmcmIHBhdGgsIFN0cmluZyYgZ2VuZXJhdGVkRmlsZW5hbWUpCi17
Ci0gICAgTlNTdHJpbmcqIGZpbGVuYW1lOwotICAgIGlmICghW1ttX3dlYlZpZXcgX1VJRGVsZWdh
dGVGb3J3YXJkZXJdIHdlYlZpZXc6bV93ZWJWaWV3IHNob3VsZFJlcGxhY2VVcGxvYWRGaWxlOnBh
dGggdXNpbmdHZW5lcmF0ZWRGaWxlbmFtZTomZmlsZW5hbWVdKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgZ2VuZXJhdGVkRmlsZW5hbWUgPSBmaWxlbmFtZTsKLSAgICByZXR1cm4gdHJ1ZTsK
LX0KLQotU3RyaW5nIFdlYkNocm9tZUNsaWVudDo6Z2VuZXJhdGVSZXBsYWNlbWVudEZpbGUoY29u
c3QgU3RyaW5nJiBwYXRoKQotewotICAgIHJldHVybiBbW21fd2ViVmlldyBfVUlEZWxlZ2F0ZUZv
cndhcmRlcl0gd2ViVmlldzptX3dlYlZpZXcgZ2VuZXJhdGVSZXBsYWNlbWVudEZpbGU6cGF0aF07
Ci19Ci0KICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIHZvaWQgV2ViQ2hyb21lQ2xpZW50Ojpl
bGVtZW50RGlkRm9jdXMoV2ViQ29yZTo6RWxlbWVudCYgZWxlbWVudCkKIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVUlEZWxlZ2F0ZVByaXZhdGUuaCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVUlEZWxlZ2F0ZVByaXZhdGUuaApp
bmRleCAxYWUyYmMyNDFmMGZmMmFlMzI3YjVmZDkyYzljYWYyMDA1MjNkOWFmLi5hMGU3MTYxYjJl
NjYxNDY5YjMxZmQ3MGE3OTExZDRjODY5MjU1ZGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYlVJRGVsZWdhdGVQcml2YXRlLmgKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJVSURlbGVnYXRlUHJpdmF0ZS5oCkBAIC0yNDgsOSAr
MjQ4LDYgQEAgZXh0ZXJuIE5TU3RyaW5nICpXZWJDb25zb2xlTWVzc2FnZUVycm9yTWVzc2FnZUxl
dmVsOwogCiAtIChXZWJWaWV3ICopd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBjcmVhdGVXZWJW
aWV3V2l0aFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3Qgd2luZG93RmVhdHVyZXM6KE5T
RGljdGlvbmFyeSAqKWZlYXR1cmVzOwogCi0tIChCT09MKXdlYlZpZXc6KFdlYlZpZXcgKilzZW5k
ZXIgc2hvdWxkUmVwbGFjZVVwbG9hZEZpbGU6KE5TU3RyaW5nICopcGF0aCB1c2luZ0dlbmVyYXRl
ZEZpbGVuYW1lOihOU1N0cmluZyAqKilmaWxlbmFtZTsKLS0gKE5TU3RyaW5nICopd2ViVmlldzoo
V2ViVmlldyAqKXNlbmRlciBnZW5lcmF0ZVJlcGxhY2VtZW50RmlsZTooTlNTdHJpbmcgKilwYXRo
OwotCiAvKiEKICAgICBAbWV0aG9kIHdlYlZpZXc6ZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25S
ZXF1ZXN0RnJvbU9yaWdpbjpmcmFtZTpsaXN0ZW5lcjoKICAgICBAcGFyYW0gd2ViVmlldyBUaGUg
V2ViVmlldyBzZW5kaW5nIHRoZSBkZWxlZ2F0ZSBtZXRob2QuCmRpZmYgLS1naXQgYS9Ub29scy9D
aGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNWIwNjAwMTdiMTM4ZTU4ZGZlMGYxY2M3
OTM1YTVlZDZjYTBjOWVmYS4uZmFmYTkzMDg0ZTkwNTVjNjRjNTc0ZjM4ZDNiN2RiZWVkMzM0YjEz
NyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE0IEBACisyMDE5LTA3LTI0ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2Vu
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW92ZSBGb3JtRGF0YSB6aXAgZmlsZSBnZW5lcmF0aW9u
IHRvIE5ldHdvcmtQcm9jZXNzIGFuZCBlbmFibGUgaXQgZm9yIGFsbCBXZWJLaXQgY2xpZW50cyBm
b3IgdXBsb2FkaW5nIGRpcmVjdG9yaWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDAxMDIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzUzMjc1MTE0
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9BZGRpdGlvbmFsUmVhZEFjY2Vzc0FsbG93ZWRV
UkxzUGx1Z2luLm1tOgorICAgICAgICAoLVtBZGRpdGlvbmFsUmVhZEFjY2Vzc0FsbG93ZWRVUkxz
UGx1Z0luIHdlYlByb2Nlc3NQbHVnSW46ZGlkQ3JlYXRlQnJvd3NlckNvbnRleHRDb250cm9sbGVy
Ol0pOgorCiAyMDE5LTA3LTIzICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgTW92ZSBqYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSBT
UEkgZnJvbSBfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gdG8gV0tQcm9jZXNzUG9vbFByaXZh
dGUgdG8gbWFrZSBpdCBydW50aW1lIHN3aXRjaGFibGUKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQWRkaXRpb25hbFJlYWRBY2Nlc3NBbGxvd2VkVVJM
c1BsdWdpbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQWRkaXRp
b25hbFJlYWRBY2Nlc3NBbGxvd2VkVVJMc1BsdWdpbi5tbQppbmRleCBmOTllMWFjYjM4ZGNjM2Y5
MDEwNmRkYWZjZGI5OTM1ZmNhZDk2MjllLi4xMDgzMzY3NWQwNzVjNzJiZWEyYjc5ZmQ2Nzk3MWQw
MWZlMDhiOTY1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL0FkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFVSTHNQbHVnaW4ubW0KKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9BZGRpdGlvbmFsUmVhZEFjY2Vzc0FsbG93
ZWRVUkxzUGx1Z2luLm1tCkBAIC01MiwxMyArNTIsNiBAQAogCiAgICAgX2ludGVyZmFjZSA9IFtf
V0tSZW1vdGVPYmplY3RJbnRlcmZhY2UgcmVtb3RlT2JqZWN0SW50ZXJmYWNlV2l0aFByb3RvY29s
OkBwcm90b2NvbChBZGRpdGlvbmFsUmVhZEFjY2Vzc0FsbG93ZWRVUkxzUHJvdG9jb2wpXTsKICAg
ICBbW2Jyb3dzZXJDb250ZXh0Q29udHJvbGxlciBfcmVtb3RlT2JqZWN0UmVnaXN0cnldIHJlZ2lz
dGVyRXhwb3J0ZWRPYmplY3Q6c2VsZiBpbnRlcmZhY2U6X2ludGVyZmFjZS5nZXQoKV07Ci0KLSAg
ICBfX2Jsb2NrIGJvb2wgYmxvY2tDYWxsZWQgPSBmYWxzZTsKLSAgICBOU0ZpbGVDb29yZGluYXRv
ciAqY29vcmRpbmF0b3IgPSBbW05TRmlsZUNvb3JkaW5hdG9yIGFsbG9jXSBpbml0V2l0aEZpbGVQ
cmVzZW50ZXI6bmlsXTsKLSAgICBbY29vcmRpbmF0b3IgY29vcmRpbmF0ZVJlYWRpbmdJdGVtQXRV
Ukw6W05TVVJMIGZpbGVVUkxXaXRoUGF0aDpAIi9BcHBsaWNhdGlvbnMvU2FmYXJpLmFwcCJdIG9w
dGlvbnM6TlNGaWxlQ29vcmRpbmF0b3JSZWFkaW5nV2l0aG91dENoYW5nZXMgZXJyb3I6bmlsIGJ5
QWNjZXNzb3I6XihOU1VSTCAqbmV3VVJMKSB7Ci0gICAgICAgIGJsb2NrQ2FsbGVkID0gdHJ1ZTsK
LSAgICB9XTsKLSAgICBBU1NFUlQoYmxvY2tDYWxsZWQpOwogfQogCiAtICh2b2lkKWRlYWxsb2MK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>375251</attachid>
            <date>2019-07-31 14:49:59 -0700</date>
            <delta_ts>2019-07-31 14:53:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200102-20190731144959.patch</filename>
            <type>text/plain</type>
            <size>65776</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ3OTA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTE3OGQyNDE4YjVmYThj
YjAzNDIxOTcyZGI5NDZlNTUzZWQ0MTRkZC4uZmU5MDQyYjFlY2Q5M2FhZmZmZDNhNWU4NWM1ZWU5
ODUwYmE3MmMwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDE5LTA3LTMxICBBbGV4
IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW92ZSBG
b3JtRGF0YSB6aXAgZmlsZSBnZW5lcmF0aW9uIHRvIE5ldHdvcmtQcm9jZXNzIGFuZCBlbmFibGUg
aXQgZm9yIGFsbCBXZWJLaXQgY2xpZW50cyBmb3IgdXBsb2FkaW5nIGRpcmVjdG9yaWVzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDAxMDIKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzUzMjc1MTE0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRvIGVuYWJsZSBkaXJlY3RvcnkgdXBsb2FkaW5nIGluIFdl
YktpdDIsIHdlIGV4dGVuZGVkIFdlYktpdDEncyBtb2RlbCBvZiBhc2tpbmcgdGhlIGFwcGxpY2F0
aW9uIHRvIGdlbmVyYXRlIGEgZmlsZSBmb3IgdXBsb2FkaW5nLgorICAgICAgICBUaGlzIG1lYW5z
IHRoZSBXZWJQcm9jZXNzIG5lZWRlZCBhY2Nlc3MgdG8gZXZlcnl0aGluZyBuZWNlc3NhcnkgdG8g
emlwIGEgd2hvbGUgZGlyZWN0b3J5LCBhbmQgY2xpZW50cyB0aGF0IGhhdmUgbm90IGltcGxlbWVu
dGVkCisgICAgICAgIHRoZSBzdHJhbmdlIFdLQnVuZGxlUGFnZVVJQ2xpZW50IGNhbGxiYWNrcyB3
b24ndCBiZSBhYmxlIHRvIHVwbG9hZCBkaXJlY3Rvcmllcy4gIFNhZmFyaSdzIGltcGxlbWVudGF0
aW9uIGhhZCBhbHJlYWR5IGJlZW4gY29waWVkCisgICAgICAgIHRvIEJsb2JEYXRhRmlsZVJlZmVy
ZW5jZTo6Z2VuZXJhdGVSZXBsYWNlbWVudEZpbGUsIHNvIEkgcmV1c2VkIHRoYXQgY29kZSB0byBk
byB0aGUgemlwcGluZy4gIEluc3RlYWQgb2YgYSBjb21wbGljYXRlZCBtb2RlbCBvZgorICAgICAg
ICBrZWVwaW5nIHRyYWNrIG9mIGEgZmlsZW5hbWUsIHBvc3NpYmx5IGEgZ2VuZXJhdGVkIGZpbGVu
YW1lLCBhbmQgd2hldGhlciB3ZSB0aGluayB3ZSBvd24gdGhlIGZpbGUgb3Igbm90IGFuZCBoYXZp
bmcgbm9ib2R5IGNsZWFuIHVwLAorICAgICAgICB3ZSBub3cgZG8gdGhlIGdlbmVyYXRpb24sIHVz
ZSwgYW5kIGNsZWFuaW5nIHVwIGluIHRoZSBuZXR3b3JrIHByb2Nlc3Mgc3RhcnRpbmcgd2l0aCBh
IG5ldyBmdW5jdGlvbiBnZW5lcmF0ZUZpbGVzRm9yVXBsb2FkLgorICAgICAgICBUaGlzIHJlbW92
ZXMgdW5pbXBsZW1lbnRlZCBTUEkgaW4gV2ViVUlEZWxlZ2F0ZVByaXZhdGUgaW4gV2ViS2l0TGVn
YWN5IGFuZCBzdG9wcyBjYWxsaW5nIHRoZSBXS0J1bmRsZVBhZ2VVSUNsaWVudCByZWxhdGVkIHRv
IHVwbG9hZAorICAgICAgICBmaWxlIGdlbmVyYXRpb24gYW5kIHJlcGxhY2VzIHRoZW0gd2l0aCBh
dXRvbWF0aWMgYmVoYXZpb3IgZXF1aXZhbGVudCB0byBTYWZhcmkncyBpbXBsZW1lbnRhdGlvbiBv
ZiB0aGUgV0tCdW5kbGVQYWdlVUlDbGllbnQgY2FsbHMuCisgICAgICAgIFNpbmNlIHdlIG5vIGxv
bmdlciBuZWVkIHRvIGRvIHRoZXNlIGZpbGUgb3BlcmF0aW9ucyBpbiB0aGUgV2ViUHJvY2Vzcywg
SSBhbSBhbHNvIHJldmVydGluZyByMjQ1MzIyIGFuZCByMjQ2MDc3IHdoaWNoIHRpZ2h0ZW5zIHRo
ZSBzYW5kYm94LgorCisgICAgICAgIENvdmVyZWQgYnkgYW4gQVBJIHRlc3QuCisKKyAgICAgICAg
KiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJv
ZHk6OmV4dHJhY3QpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojpib2R5QXNGb3JtRGF0
YSBjb25zdCk6CisgICAgICAgICogbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZvcm1TdWJtaXNzaW9uOjpjcmVhdGUpOgorICAgICAgICAqIGxvYWRlci9GcmFt
ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6c3VibWl0Rm9ybSk6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZERpZmZlcmVudERvY3VtZW50SXRl
bSk6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VMb2FkZXI6OmNsZWFudXBGb3JFcnJvcik6CisgICAgICAgICogcGFnZS9DaHJv
bWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50OjpzaG91bGRSZXBsYWNlV2l0
aEdlbmVyYXRlZEZpbGVGb3JVcGxvYWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q2hy
b21lQ2xpZW50OjpnZW5lcmF0ZVJlcGxhY2VtZW50RmlsZSk6IERlbGV0ZWQuCisgICAgICAgICog
cGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRh
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1EYXRhOjpGb3JtRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpGb3JtRGF0YTo6fkZvcm1EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1EYXRh
OjpjcmVhdGVNdWx0aVBhcnQpOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURhdGFFbGVtZW50Ojps
ZW5ndGhJbkJ5dGVzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1EYXRhOjphcHBlbmRG
aWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1EYXRhOjphcHBlbmRGaWxlUmFuZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6Rm9ybURhdGE6OmFwcGVuZE11bHRpUGFydEZpbGVWYWx1ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpGb3JtRGF0YTo6YXBwZW5kTXVsdGlQYXJ0S2V5VmFsdWVQYWlySXRlbXMp
OgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURhdGE6OnJlc29sdmVCbG9iUmVmZXJlbmNlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpnZW5lcmF0ZUZpbGVGb3JVcGxvYWQpOgorICAgICAgICAoV2ViQ29y
ZTo6Rm9ybURhdGE6OmdlbmVyYXRlRmlsZXNGb3JVcGxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6
Rm9ybURhdGE6OmdlbmVyYXRlRmlsZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Rm9y
bURhdGE6Omhhc0dlbmVyYXRlZEZpbGVzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkZvcm1EYXRhOjpoYXNPd25lZEdlbmVyYXRlZEZpbGVzIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkZvcm1EYXRhOjpyZW1vdmVHZW5lcmF0ZWRGaWxlc0lmTmVlZGVkKTog
RGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmg6CisgICAgICAg
IChXZWJDb3JlOjpGb3JtRGF0YUVsZW1lbnQ6OkZvcm1EYXRhRWxlbWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpGb3JtRGF0YUVsZW1lbnQ6OkVuY29kZWRGaWxlRGF0YTo6aXNvbGF0ZWRDb3B5IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1EYXRhRWxlbWVudDo6RW5jb2RlZEZpbGVEYXRh
OjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1EYXRhRWxlbWVudDo6
RW5jb2RlZEZpbGVEYXRhOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURh
dGFFbGVtZW50OjpFbmNvZGVkRmlsZURhdGE6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFk
dmFuY2VDdXJyZW50U3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6OmZvcm1DcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6Zm9ybUZpbmFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUhU
VFBCb2R5Q0ZSZWFkU3RyZWFtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9CbG9i
RGF0YUZpbGVSZWZlcmVuY2VNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpnZW5lcmF0ZUZpbGVG
b3JVcGxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpnZW5l
cmF0ZVJlcGxhY2VtZW50RmlsZSk6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpzZW5kKToKKwogMjAxOS0wNy0yOSAg
UGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CiAKICAgICAgICAgUkVHUkVT
U0lPTihyMjQzMDU4KTogW0dTdHJlYW1lcl0gV2ViS2l0V2ViU3JjJ3MgaW50ZXJuYWwgcXVldWUg
Y2FuIGV4aGF1c3QgdGhlIFdlYlByb2Nlc3MgbWVtb3J5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDMzNTA5ODQzMzNk
MWU5YWNiMGU5NGYzZjNjMTY4NzQwNDgzNTViNjguLjUwZTc5OTc5Zjc4NWFkZTg5Yjg5ZGJmYTc3
OGRlMWQ5ZjQ4NzIyZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTktMDctMzEgIEFs
ZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBNb3Zl
IEZvcm1EYXRhIHppcCBmaWxlIGdlbmVyYXRpb24gdG8gTmV0d29ya1Byb2Nlc3MgYW5kIGVuYWJs
ZSBpdCBmb3IgYWxsIFdlYktpdCBjbGllbnRzIGZvciB1cGxvYWRpbmcgZGlyZWN0b3JpZXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDEwMgorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vNTMyNzUxMTQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRQ
YXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9Gb3JtRGF0
YVJlZmVyZW5jZS5oOgorICAgICAgICAoSVBDOjpGb3JtRGF0YVJlZmVyZW5jZTo6ZW5jb2RlIGNv
bnN0KToKKyAgICAgICAgKiBSZXNvdXJjZXMvU2FuZGJveFByb2ZpbGVzL2lvcy9jb20uYXBwbGUu
V2ViS2l0Lk5ldHdvcmtpbmcuc2I6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQuaDoKKyAgICAgICAgKEFQSTo6SW5q
ZWN0ZWRCdW5kbGU6OlBhZ2VVSUNsaWVudDo6c2hvdWxkR2VuZXJhdGVGaWxlRm9yVXBsb2FkKTog
RGVsZXRlZC4KKyAgICAgICAgKEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VVSUNsaWVudDo6Z2Vu
ZXJhdGVGaWxlRm9yVXBsb2FkKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6SW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQ6OnNob3VsZEdlbmVyYXRlRmlsZUZvclVwbG9h
ZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50
OjpnZW5lcmF0ZUZpbGVGb3JVcGxvYWQpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6c2hvdWxkUmVwbGFjZVdpdGhHZW5lcmF0ZWRGaWxlRm9y
VXBsb2FkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpnZW5l
cmF0ZVJlcGxhY2VtZW50RmlsZSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvbS5h
cHBsZS5XZWJQcm9jZXNzLnNiLmluOgorCiAyMDE5LTA3LTI5ICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CiAKICAgICAgICAgUG9zc2libGUgdXNlLWFmdGVyLW1vdmUgdW5kZXIgTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVk
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCAwYjg5MmNmZDY1YjZhYzc2YWEwYTgx
MjQyMmJiNjQxYzg2MjE5NmVkLi45YWViNzU0YjgzMTJjOWFlMzk2MjY5YTIwNWI4ZDllOThhM2E5
NTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTkt
MDctMzEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAg
ICAgICBNb3ZlIEZvcm1EYXRhIHppcCBmaWxlIGdlbmVyYXRpb24gdG8gTmV0d29ya1Byb2Nlc3Mg
YW5kIGVuYWJsZSBpdCBmb3IgYWxsIFdlYktpdCBjbGllbnRzIGZvciB1cGxvYWRpbmcgZGlyZWN0
b3JpZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
MDEwMgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTMyNzUxMTQ+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBEZWZhdWx0RGVsZWdhdGVzL1dlYkRl
ZmF1bHRVSURlbGVnYXRlLm1tOgorICAgICAgICAoLVtXZWJEZWZhdWx0VUlEZWxlZ2F0ZSB3ZWJW
aWV3OnNob3VsZFJlcGxhY2VVcGxvYWRGaWxlOnVzaW5nR2VuZXJhdGVkRmlsZW5hbWU6XSk6IERl
bGV0ZWQuCisgICAgICAgICgtW1dlYkRlZmF1bHRVSURlbGVnYXRlIHdlYlZpZXc6Z2VuZXJhdGVS
ZXBsYWNlbWVudEZpbGU6XSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
Lm1tOgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50OjpzaG91bGRSZXBsYWNlV2l0aEdlbmVyYXRl
ZEZpbGVGb3JVcGxvYWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50OjpnZW5l
cmF0ZVJlcGxhY2VtZW50RmlsZSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViVmlldy9XZWJVSURl
bGVnYXRlUHJpdmF0ZS5oOgorCiAyMDE5LTA3LTI1ICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxl
LmNvbT4KIAogICAgICAgICBBZGQgaGVscGVyIGZvciBpZ25vcmluZyBkZXByZWNhdGVkIGltcGxl
bWVudGF0aW9uIHdhcm5pbmdzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9k
eS5jcHAKaW5kZXggOTg3ZTQ1NTZmOWY1ZmM0ZTFjNzFmZjNiMDg0N2NiN2YyYjI1Y2RkOC4uMzNk
ZTRmMzc4ZDJhYWVhZDQzOTI2ZmIwZGI3YjZiZDc3ZTIxYmRiOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcApAQCAtNDAsNyArNDAsNyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLUZldGNoQm9keSBGZXRjaEJvZHk6OmV4dHJhY3QoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCwgSW5pdCYmIHZhbHVlLCBTdHJpbmcmIGNvbnRlbnRUeXBlKQor
RmV0Y2hCb2R5IEZldGNoQm9keTo6ZXh0cmFjdChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgSW5p
dCYmIHZhbHVlLCBTdHJpbmcmIGNvbnRlbnRUeXBlKQogewogICAgIHJldHVybiBXVEY6OnN3aXRj
aE9uKHZhbHVlLCBbJl0oUmVmUHRyPEJsb2I+JiB2YWx1ZSkgbXV0YWJsZSB7CiAgICAgICAgIFJl
Zjxjb25zdCBCbG9iPiBibG9iID0gdmFsdWUucmVsZWFzZU5vbk51bGwoKTsKQEAgLTQ5LDcgKzQ5
LDcgQEAgRmV0Y2hCb2R5IEZldGNoQm9keTo6ZXh0cmFjdChTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0LCBJbml0JiYgdmFsdWUsIFN0cmkKICAgICAgICAgcmV0dXJuIEZldGNoQm9keShX
VEZNb3ZlKGJsb2IpKTsKICAgICB9LCBbJl0oUmVmUHRyPERPTUZvcm1EYXRhPiYgdmFsdWUpIG11
dGFibGUgewogICAgICAgICBSZWY8RE9NRm9ybURhdGE+IGRvbUZvcm1EYXRhID0gdmFsdWUucmVs
ZWFzZU5vbk51bGwoKTsKLSAgICAgICAgYXV0byBmb3JtRGF0YSA9IEZvcm1EYXRhOjpjcmVhdGVN
dWx0aVBhcnQoZG9tRm9ybURhdGEuZ2V0KCksICZkb3duY2FzdDxEb2N1bWVudD4oY29udGV4dCkp
OworICAgICAgICBhdXRvIGZvcm1EYXRhID0gRm9ybURhdGE6OmNyZWF0ZU11bHRpUGFydChkb21G
b3JtRGF0YS5nZXQoKSk7CiAgICAgICAgIGNvbnRlbnRUeXBlID0gbWFrZVN0cmluZygibXVsdGlw
YXJ0L2Zvcm0tZGF0YTsgYm91bmRhcnk9IiwgZm9ybURhdGEtPmJvdW5kYXJ5KCkuZGF0YSgpKTsK
ICAgICAgICAgcmV0dXJuIEZldGNoQm9keShXVEZNb3ZlKGZvcm1EYXRhKSk7CiAgICAgfSwgWyZd
KFJlZlB0cjxVUkxTZWFyY2hQYXJhbXM+JiB2YWx1ZSkgbXV0YWJsZSB7CkBAIC0yNTAsOSArMjUw
LDggQEAgUmVmUHRyPEZvcm1EYXRhPiBGZXRjaEJvZHk6OmJvZHlBc0Zvcm1EYXRhKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIGNvbnMKICAgICBpZiAoaXNBcnJheUJ1ZmZlclZpZXco
KSkKICAgICAgICAgcmV0dXJuIEZvcm1EYXRhOjpjcmVhdGUoYXJyYXlCdWZmZXJWaWV3Qm9keSgp
LmJhc2VBZGRyZXNzKCksIGFycmF5QnVmZmVyVmlld0JvZHkoKS5ieXRlTGVuZ3RoKCkpOwogICAg
IGlmIChpc0Zvcm1EYXRhKCkpIHsKLSAgICAgICAgQVNTRVJUKCFjb250ZXh0LmlzV29ya2VyR2xv
YmFsU2NvcGUoKSk7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgIWNvbnRleHQuaXNX
b3JrZXJHbG9iYWxTY29wZSgpKTsKICAgICAgICAgYXV0byBib2R5ID0gbWFrZVJlZihjb25zdF9j
YXN0PEZvcm1EYXRhJj4oZm9ybURhdGFCb2R5KCkpKTsKLSAgICAgICAgYm9keS0+Z2VuZXJhdGVG
aWxlcygmZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpKTsKICAgICAgICAgcmV0dXJuIGJvZHk7
CiAgICAgfQogICAgIGlmIChhdXRvKiBkYXRhID0gbV9jb25zdW1lci5kYXRhKCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmNwcAppbmRleCBiZTAzZTRhMTllMTE3MjI1ZmNl
ODEyN2FmMTc0YzFiMDRmOTU1NGY0Li4wZjkyNDZmODExOGQzN2MzYmNmYTcyYjFjOWY0Nzc2MjE2
YTFlN2I5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAKQEAgLTE5
OCw3ICsxOTgsNyBAQCBSZWY8Rm9ybVN1Ym1pc3Npb24+IEZvcm1TdWJtaXNzaW9uOjpjcmVhdGUo
SFRNTEZvcm1FbGVtZW50JiBmb3JtLCBjb25zdCBBdHRyaWJ1dAogICAgIFN0cmluZyBib3VuZGFy
eTsKIAogICAgIGlmIChpc011bHRpUGFydEZvcm0pIHsKLSAgICAgICAgZm9ybURhdGEgPSBGb3Jt
RGF0YTo6Y3JlYXRlTXVsdGlQYXJ0KGRvbUZvcm1EYXRhLCAmZG9jdW1lbnQpOworICAgICAgICBm
b3JtRGF0YSA9IEZvcm1EYXRhOjpjcmVhdGVNdWx0aVBhcnQoZG9tRm9ybURhdGEpOwogICAgICAg
ICBib3VuZGFyeSA9IGZvcm1EYXRhLT5ib3VuZGFyeSgpLmRhdGEoKTsKICAgICB9IGVsc2Ugewog
ICAgICAgICBmb3JtRGF0YSA9IEZvcm1EYXRhOjpjcmVhdGUoZG9tRm9ybURhdGEsIGF0dHJpYnV0
ZXMubWV0aG9kKCkgPT0gTWV0aG9kOjpHZXQgPyBGb3JtRGF0YTo6Rm9ybVVSTEVuY29kZWQgOiBG
b3JtRGF0YTo6cGFyc2VFbmNvZGluZ1R5cGUoZW5jb2RpbmdUeXBlKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCBmYjRjNWI4YmQzMDUyZjU3ZWEzYTAyOTYxNmJhNTQ4
N2Q1N2I0NDUyLi40N2Y3NjZhOTA3ZjFhZDUwODJiOTQxNDRjMmRjODYxOTY4NWY2NzYyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTQ3Myw3ICs0NzMsNiBAQCB2b2lk
IEZyYW1lTG9hZGVyOjpzdWJtaXRGb3JtKFJlZjxGb3JtU3VibWlzc2lvbj4mJiBzdWJtaXNzaW9u
KQogICAgICAgICBtX3N1Ym1pdHRlZEZvcm1VUkwgPSBzdWJtaXNzaW9uLT5yZXF1ZXN0VVJMKCk7
CiAgICAgfQogCi0gICAgc3VibWlzc2lvbi0+ZGF0YSgpLmdlbmVyYXRlRmlsZXMobV9mcmFtZS5k
b2N1bWVudCgpKTsKICAgICBzdWJtaXNzaW9uLT5zZXRSZWZlcnJlcihvdXRnb2luZ1JlZmVycmVy
KCkpOwogICAgIHN1Ym1pc3Npb24tPnNldE9yaWdpbihvdXRnb2luZ09yaWdpbigpKTsKIApAQCAt
Mzc3Myw4ICszNzcyLDYgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZERpZmZlcmVudERvY3VtZW50
SXRlbShIaXN0b3J5SXRlbSYgaXRlbSwgSGlzdG9yeUl0ZW0qIGZyb20KICAgICAvLyBJZiB0aGlz
IHdhcyBhIHJlcG9zdCB0aGF0IGZhaWxlZCB0aGUgcGFnZSBjYWNoZSwgd2UgbWlnaHQgdHJ5IHRv
IHJlcG9zdCB0aGUgZm9ybS4KICAgICBOYXZpZ2F0aW9uQWN0aW9uIGFjdGlvbjsKICAgICBpZiAo
Zm9ybURhdGEpIHsKLSAgICAgICAgZm9ybURhdGEtPmdlbmVyYXRlRmlsZXMobV9mcmFtZS5kb2N1
bWVudCgpKTsKLQogICAgICAgICByZXF1ZXN0LnNldEhUVFBNZXRob2QoIlBPU1QiKTsKICAgICAg
ICAgcmVxdWVzdC5zZXRIVFRQQm9keShXVEZNb3ZlKGZvcm1EYXRhKSk7CiAgICAgICAgIHJlcXVl
c3Quc2V0SFRUUENvbnRlbnRUeXBlKGl0ZW0uZm9ybUNvbnRlbnRUeXBlKCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMWY2ZjM1M2U2OTM1ZThlNWViNjU1
ZGVlZDgwZjU3YjBhZTM3YzJmYy4uYTc2NjU2YzAzZTcxMjUyODUzODhhYjVkNjVkOGRjOWRmNTNl
MmE4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC00OTIs
OSArNDkyLDYgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHIsIENvbXBsZXRpb25IYW4KIAogICAgIG1fcmVzcG9uc2UgPSBy
OwogCi0gICAgaWYgKEZvcm1EYXRhKiBkYXRhID0gbV9yZXF1ZXN0Lmh0dHBCb2R5KCkpCi0gICAg
ICAgIGRhdGEtPnJlbW92ZUdlbmVyYXRlZEZpbGVzSWZOZWVkZWQoKTsKLQogICAgIGlmIChtX29w
dGlvbnMuc2VuZExvYWRDYWxsYmFja3MgPT0gU2VuZENhbGxiYWNrUG9saWN5OjpTZW5kQ2FsbGJh
Y2tzKQogICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLmRpZFJlY2VpdmVSZXNwb25z
ZSh0aGlzLCBtX3Jlc3BvbnNlKTsKIH0KQEAgLTU3OSw5ICs1NzYsNiBAQCB2b2lkIFJlc291cmNl
TG9hZGVyOjpkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogCiB2b2lkIFJlc291
cmNlTG9hZGVyOjpjbGVhbnVwRm9yRXJyb3IoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7
Ci0gICAgaWYgKEZvcm1EYXRhKiBkYXRhID0gbV9yZXF1ZXN0Lmh0dHBCb2R5KCkpCi0gICAgICAg
IGRhdGEtPnJlbW92ZUdlbmVyYXRlZEZpbGVzSWZOZWVkZWQoKTsKLQogICAgIGlmIChtX25vdGlm
aWVkTG9hZENvbXBsZXRlKQogICAgICAgICByZXR1cm47CiAgICAgbV9ub3RpZmllZExvYWRDb21w
bGV0ZSA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKaW5kZXggMjIwZDhjMjYyOThiMGM5NTU3
OTMwZjQxMjNmY2YyZDU4M2M5NzkzYi4uOTc1ODMyOWJhOTA5Y2Q5MTNjYWI0Njg1ZDcxYWU5ZGE0
ZmMzNWNhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcApAQCAtNTI1LDE3ICs1MjUsNiBAQCB2b2lk
IENocm9tZTo6d2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJ
RCkKICNlbmRpZgogfQogCi1ib29sIENocm9tZUNsaWVudDo6c2hvdWxkUmVwbGFjZVdpdGhHZW5l
cmF0ZWRGaWxlRm9yVXBsb2FkKGNvbnN0IFN0cmluZyYsIFN0cmluZyYpCi17Ci0gICAgcmV0dXJu
IGZhbHNlOwotfQotCi1TdHJpbmcgQ2hyb21lQ2xpZW50OjpnZW5lcmF0ZVJlcGxhY2VtZW50Rmls
ZShjb25zdCBTdHJpbmcmKQotewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVy
biBTdHJpbmcoKTsKLX0KLQogYm9vbCBDaHJvbWU6OnNlbGVjdEl0ZW1Xcml0aW5nRGlyZWN0aW9u
SXNOYXR1cmFsKCkKIHsKICAgICByZXR1cm4gbV9jbGllbnQuc2VsZWN0SXRlbVdyaXRpbmdEaXJl
Y3Rpb25Jc05hdHVyYWwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21l
Q2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCmluZGV4IDlkZTFl
OTFlNTZjYzBlYmExYmQxMmVlNTY2ZWRhYmY4ZTE0NzhjOWMuLjJjZGEzNTU1MmY3NTNlZjUyYTIx
ZDFkNWI0ZWQzM2I5MDY1ZTM3NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hy
b21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaApAQCAt
MjM0LDkgKzIzNCw2IEBAIHB1YmxpYzoKICAgICAvLyB0aGUgbmV3IGNhY2hlLgogICAgIHZpcnR1
YWwgdm9pZCByZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFNlY3VyaXR5T3JpZ2lu
JiwgaW50NjRfdCB0b3RhbFNwYWNlTmVlZGVkKSA9IDA7CiAKLSAgICB2aXJ0dWFsIGJvb2wgc2hv
dWxkUmVwbGFjZVdpdGhHZW5lcmF0ZWRGaWxlRm9yVXBsb2FkKGNvbnN0IFN0cmluZyYgcGF0aCwg
U3RyaW5nJiBnZW5lcmF0ZWRGaWxlbmFtZSk7Ci0gICAgdmlydHVhbCBTdHJpbmcgZ2VuZXJhdGVS
ZXBsYWNlbWVudEZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKTsKLQogI2lmIEVOQUJMRShJT1NfVE9V
Q0hfRVZFTlRTKQogICAgIHZpcnR1YWwgdm9pZCBkaWRQcmV2ZW50RGVmYXVsdEZvckV2ZW50KCkg
PSAwOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0Zvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEu
Y3BwCmluZGV4IDdlOTRjOWEzODVkMWI2MzEzYTNhMWFiY2FkYTljMTA1M2MzMTQ1NjYuLjlkYjZj
YmUzYzMxMGIwMDMyYjRkYzA0NDYzMDFiZTU0YTg3MTNkMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCkBAIC0yNyw3ICsyNyw2IEBACiAjaW5jbHVk
ZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCiAjaW5jbHVkZSAiRE9NRm9y
bURhdGEuaCIKLSNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkZpbGUuaCIKICNpbmNs
dWRlICJGb3JtRGF0YUJ1aWxkZXIuaCIKICNpbmNsdWRlICJQYWdlLmgiCkBAIC01MCwyMiArNDks
MTAgQEAgaW5saW5lIEZvcm1EYXRhOjpGb3JtRGF0YShjb25zdCBGb3JtRGF0YSYgZGF0YSkKICAg
ICAsIG1fYWx3YXlzU3RyZWFtKGZhbHNlKQogICAgICwgbV9jb250YWluc1Bhc3N3b3JkRGF0YShk
YXRhLm1fY29udGFpbnNQYXNzd29yZERhdGEpCiB7Ci0gICAgLy8gV2Ugc2hvdWxkbid0IGJlIGNv
cHlpbmcgRm9ybURhdGEgdGhhdCBoYXNuJ3QgYWxyZWFkeSByZW1vdmVkIGl0cyBnZW5lcmF0ZWQg
ZmlsZXMKLSAgICAvLyBidXQganVzdCBpbiBjYXNlLCBtYWtlIHN1cmUgdGhlIG5ldyBGb3JtRGF0
YSBpcyByZWFkeSB0byBnZW5lcmF0ZSBpdHMgb3duIGZpbGVzLgotICAgIGZvciAoYXV0byYgZWxl
bWVudCA6IG1fZWxlbWVudHMpIHsKLSAgICAgICAgaWYgKGF1dG8qIGZpbGVEYXRhID0gV1RGOjpn
ZXRfaWY8Rm9ybURhdGFFbGVtZW50OjpFbmNvZGVkRmlsZURhdGE+KGVsZW1lbnQuZGF0YSkpIHsK
LSAgICAgICAgICAgIGZpbGVEYXRhLT5nZW5lcmF0ZWRGaWxlbmFtZSA9IHsgfTsKLSAgICAgICAg
ICAgIGZpbGVEYXRhLT5vd25zR2VuZXJhdGVkRmlsZSA9IGZhbHNlOwotICAgICAgICB9Ci0gICAg
fQogfQogCiBGb3JtRGF0YTo6fkZvcm1EYXRhKCkKIHsKLSAgICAvLyBUaGlzIGNsZWFudXAgc2hv
dWxkJ3ZlIGhhcHBlbmVkIHdoZW4gdGhlIGZvcm0gc3VibWlzc2lvbiBmaW5pc2hlZC4KLSAgICAv
LyBKdXN0IGluIGNhc2UsIGxldCdzIGFzc2VydCwgYW5kIGRvIHRoZSBjbGVhbnVwIGFueXdheSBp
biByZWxlYXNlIGJ1aWxkcy4KLSAgICBBU1NFUlQoIWhhc093bmVkR2VuZXJhdGVkRmlsZXMoKSk7
Ci0gICAgcmVtb3ZlR2VuZXJhdGVkRmlsZXNJZk5lZWRlZCgpOwogfQogCiBSZWY8Rm9ybURhdGE+
IEZvcm1EYXRhOjpjcmVhdGUoKQpAQCAtMTA5LDEwICs5NiwxMCBAQCBSZWY8Rm9ybURhdGE+IEZv
cm1EYXRhOjpjcmVhdGUoY29uc3QgRE9NRm9ybURhdGEmIGZvcm1EYXRhLCBFbmNvZGluZ1R5cGUg
ZW5jb2RpbgogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVJlZjxGb3JtRGF0YT4gRm9ybURhdGE6
OmNyZWF0ZU11bHRpUGFydChjb25zdCBET01Gb3JtRGF0YSYgZm9ybURhdGEsIERvY3VtZW50KiBk
b2N1bWVudCkKK1JlZjxGb3JtRGF0YT4gRm9ybURhdGE6OmNyZWF0ZU11bHRpUGFydChjb25zdCBE
T01Gb3JtRGF0YSYgZm9ybURhdGEpCiB7CiAgICAgYXV0byByZXN1bHQgPSBjcmVhdGUoKTsKLSAg
ICByZXN1bHQtPmFwcGVuZE11bHRpUGFydEtleVZhbHVlUGFpckl0ZW1zKGZvcm1EYXRhLCBkb2N1
bWVudCk7CisgICAgcmVzdWx0LT5hcHBlbmRNdWx0aVBhcnRLZXlWYWx1ZVBhaXJJdGVtcyhmb3Jt
RGF0YSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMTQ2LDcgKzEzMyw3IEBAIHVpbnQ2
NF90IEZvcm1EYXRhRWxlbWVudDo6bGVuZ3RoSW5CeXRlcygpIGNvbnN0CiAgICAgICAgICAgICBp
ZiAoZmlsZURhdGEuZmlsZUxlbmd0aCAhPSBCbG9iRGF0YUl0ZW06OnRvRW5kT2ZGaWxlKQogICAg
ICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1aW50NjRfdD4oZmlsZURhdGEuZmlsZUxl
bmd0aCk7CiAgICAgICAgICAgICBsb25nIGxvbmcgZmlsZVNpemU7Ci0gICAgICAgICAgICBpZiAo
RmlsZVN5c3RlbTo6Z2V0RmlsZVNpemUoZmlsZURhdGEuc2hvdWxkR2VuZXJhdGVGaWxlID8gZmls
ZURhdGEuZ2VuZXJhdGVkRmlsZW5hbWUgOiBmaWxlRGF0YS5maWxlbmFtZSwgZmlsZVNpemUpKQor
ICAgICAgICAgICAgaWYgKEZpbGVTeXN0ZW06OmdldEZpbGVTaXplKGZpbGVEYXRhLmZpbGVuYW1l
LCBmaWxlU2l6ZSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnQ2NF90
PihmaWxlU2l6ZSk7CiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KDAp
OwogICAgICAgICB9LCBbXSAoY29uc3QgRm9ybURhdGFFbGVtZW50OjpFbmNvZGVkQmxvYkRhdGEm
IGJsb2JEYXRhKSB7CkBAIC0xODQsMTUgKzE3MSwxNSBAQCB2b2lkIEZvcm1EYXRhOjphcHBlbmRE
YXRhKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBzaXplKQogICAgIG1fZWxlbWVudHMuYXBwZW5k
KFdURk1vdmUodmVjdG9yKSk7CiB9CiAKLXZvaWQgRm9ybURhdGE6OmFwcGVuZEZpbGUoY29uc3Qg
U3RyaW5nJiBmaWxlbmFtZSwgYm9vbCBzaG91bGRHZW5lcmF0ZUZpbGUpCit2b2lkIEZvcm1EYXRh
OjphcHBlbmRGaWxlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpCiB7Ci0gICAgbV9lbGVtZW50cy5h
cHBlbmQoRm9ybURhdGFFbGVtZW50KGZpbGVuYW1lLCAwLCBCbG9iRGF0YUl0ZW06OnRvRW5kT2ZG
aWxlLCBXVEY6Om51bGxvcHQsIHNob3VsZEdlbmVyYXRlRmlsZSkpOworICAgIG1fZWxlbWVudHMu
YXBwZW5kKEZvcm1EYXRhRWxlbWVudChmaWxlbmFtZSwgMCwgQmxvYkRhdGFJdGVtOjp0b0VuZE9m
RmlsZSwgV1RGOjpudWxsb3B0KSk7CiAgICAgbV9sZW5ndGhJbkJ5dGVzID0gV1RGOjpudWxsb3B0
OwogfQogCi12b2lkIEZvcm1EYXRhOjphcHBlbmRGaWxlUmFuZ2UoY29uc3QgU3RyaW5nJiBmaWxl
bmFtZSwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgbGVuZ3RoLCBPcHRpb25hbDxXYWxsVGlt
ZT4gZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lLCBib29sIHNob3VsZEdlbmVyYXRlRmlsZSkKK3Zv
aWQgRm9ybURhdGE6OmFwcGVuZEZpbGVSYW5nZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBsb25n
IGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBsZW5ndGgsIE9wdGlvbmFsPFdhbGxUaW1lPiBleHBlY3Rl
ZE1vZGlmaWNhdGlvblRpbWUpCiB7Ci0gICAgbV9lbGVtZW50cy5hcHBlbmQoRm9ybURhdGFFbGVt
ZW50KGZpbGVuYW1lLCBzdGFydCwgbGVuZ3RoLCBleHBlY3RlZE1vZGlmaWNhdGlvblRpbWUsIHNo
b3VsZEdlbmVyYXRlRmlsZSkpOworICAgIG1fZWxlbWVudHMuYXBwZW5kKEZvcm1EYXRhRWxlbWVu
dChmaWxlbmFtZSwgc3RhcnQsIGxlbmd0aCwgZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKSk7CiAg
ICAgbV9sZW5ndGhJbkJ5dGVzID0gV1RGOjpudWxsb3B0OwogfQogCkBAIC0yMDcsMjIgKzE5NCwx
MCBAQCBzdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IG5vcm1hbGl6ZVN0cmluZ0RhdGEoVGV4dEVuY29k
aW5nJiBlbmNvZGluZywgY29uc3QgU3RyaW5nJgogICAgIHJldHVybiBub3JtYWxpemVMaW5lRW5k
aW5nc1RvQ1JMRihlbmNvZGluZy5lbmNvZGUodmFsdWUsIFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVu
dGl0aWVzKSk7CiB9CiAKLXZvaWQgRm9ybURhdGE6OmFwcGVuZE11bHRpUGFydEZpbGVWYWx1ZShj
b25zdCBGaWxlJiBmaWxlLCBWZWN0b3I8Y2hhcj4mIGhlYWRlciwgVGV4dEVuY29kaW5nJiBlbmNv
ZGluZywgRG9jdW1lbnQqIGRvY3VtZW50KQordm9pZCBGb3JtRGF0YTo6YXBwZW5kTXVsdGlQYXJ0
RmlsZVZhbHVlKGNvbnN0IEZpbGUmIGZpbGUsIFZlY3RvcjxjaGFyPiYgaGVhZGVyLCBUZXh0RW5j
b2RpbmcmIGVuY29kaW5nKQogewogICAgIGF1dG8gbmFtZSA9IGZpbGUubmFtZSgpOwogCi0gICAg
Ly8gTGV0IHRoZSBhcHBsaWNhdGlvbiBzcGVjaWZ5IGEgZmlsZW5hbWUgaWYgaXQncyBnb2luZyB0
byBnZW5lcmF0ZSBhIHJlcGxhY2VtZW50IGZpbGUgZm9yIHRoZSB1cGxvYWQuCi0gICAgYm9vbCBz
aG91bGRHZW5lcmF0ZUZpbGUgPSBmYWxzZTsKLSAgICBhdXRvJiBwYXRoID0gZmlsZS5wYXRoKCk7
Ci0gICAgaWYgKCFwYXRoLmlzRW1wdHkoKSkgewotICAgICAgICBpZiAoUGFnZSogcGFnZSA9IGRv
Y3VtZW50LT5wYWdlKCkpIHsKLSAgICAgICAgICAgIFN0cmluZyBnZW5lcmF0ZWRGaWxlTmFtZTsK
LSAgICAgICAgICAgIHNob3VsZEdlbmVyYXRlRmlsZSA9IHBhZ2UtPmNocm9tZSgpLmNsaWVudCgp
LnNob3VsZFJlcGxhY2VXaXRoR2VuZXJhdGVkRmlsZUZvclVwbG9hZChwYXRoLCBnZW5lcmF0ZWRG
aWxlTmFtZSk7Ci0gICAgICAgICAgICBpZiAoc2hvdWxkR2VuZXJhdGVGaWxlKQotICAgICAgICAg
ICAgICAgIG5hbWUgPSBnZW5lcmF0ZWRGaWxlTmFtZTsKLSAgICAgICAgfQotICAgIH0KLQogICAg
IC8vIFdlIGhhdmUgdG8gaW5jbHVkZSB0aGUgZmlsZW5hbWU9Ii4uIiBwYXJ0IGluIHRoZSBoZWFk
ZXIsIGV2ZW4gaWYgdGhlIGZpbGVuYW1lIGlzIGVtcHR5CiAgICAgRm9ybURhdGFCdWlsZGVyOjph
ZGRGaWxlbmFtZVRvTXVsdGlQYXJ0SGVhZGVyKGhlYWRlciwgZW5jb2RpbmcsIG5hbWUpOwogCkBA
IC0yMzgsNyArMjEzLDcgQEAgdm9pZCBGb3JtRGF0YTo6YXBwZW5kTXVsdGlQYXJ0RmlsZVZhbHVl
KGNvbnN0IEZpbGUmIGZpbGUsIFZlY3RvcjxjaGFyPiYgaGVhZGVyLAogICAgIGFwcGVuZERhdGEo
aGVhZGVyLmRhdGEoKSwgaGVhZGVyLnNpemUoKSk7CiAKICAgICBpZiAoIWZpbGUucGF0aCgpLmlz
RW1wdHkoKSkKLSAgICAgICAgYXBwZW5kRmlsZShmaWxlLnBhdGgoKSwgc2hvdWxkR2VuZXJhdGVG
aWxlKTsKKyAgICAgICAgYXBwZW5kRmlsZShmaWxlLnBhdGgoKSk7CiAgICAgZWxzZSBpZiAoZmls
ZS5zaXplKCkpCiAgICAgICAgIGFwcGVuZEJsb2IoZmlsZS51cmwoKSk7CiB9CkBAIC0yNTIsNyAr
MjI3LDcgQEAgdm9pZCBGb3JtRGF0YTo6YXBwZW5kTXVsdGlQYXJ0U3RyaW5nVmFsdWUoY29uc3Qg
U3RyaW5nJiBzdHJpbmcsIFZlY3RvcjxjaGFyPiYgaGUKICAgICBhcHBlbmREYXRhKG5vcm1hbGl6
ZWRTdHJpbmdEYXRhLmRhdGEoKSwgbm9ybWFsaXplZFN0cmluZ0RhdGEuc2l6ZSgpKTsKIH0KIAot
dm9pZCBGb3JtRGF0YTo6YXBwZW5kTXVsdGlQYXJ0S2V5VmFsdWVQYWlySXRlbXMoY29uc3QgRE9N
Rm9ybURhdGEmIGZvcm1EYXRhLCBEb2N1bWVudCogZG9jdW1lbnQpCit2b2lkIEZvcm1EYXRhOjph
cHBlbmRNdWx0aVBhcnRLZXlWYWx1ZVBhaXJJdGVtcyhjb25zdCBET01Gb3JtRGF0YSYgZm9ybURh
dGEpCiB7CiAgICAgbV9ib3VuZGFyeSA9IEZvcm1EYXRhQnVpbGRlcjo6Z2VuZXJhdGVVbmlxdWVC
b3VuZGFyeVN0cmluZygpOwogCkBAIC0yNjYsNyArMjQxLDcgQEAgdm9pZCBGb3JtRGF0YTo6YXBw
ZW5kTXVsdGlQYXJ0S2V5VmFsdWVQYWlySXRlbXMoY29uc3QgRE9NRm9ybURhdGEmIGZvcm1EYXRh
LCBEb2MKICAgICAgICAgRm9ybURhdGFCdWlsZGVyOjpiZWdpbk11bHRpUGFydEhlYWRlcihoZWFk
ZXIsIG1fYm91bmRhcnkuZGF0YSgpLCBub3JtYWxpemVkTmFtZSk7CiAKICAgICAgICAgaWYgKFdU
Rjo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmUHRyPEZpbGU+PihpdGVtLmRhdGEpKQotICAgICAgICAg
ICAgYXBwZW5kTXVsdGlQYXJ0RmlsZVZhbHVlKCpXVEY6OmdldDxSZWZQdHI8RmlsZT4+KGl0ZW0u
ZGF0YSksIGhlYWRlciwgZW5jb2RpbmcsIGRvY3VtZW50KTsKKyAgICAgICAgICAgIGFwcGVuZE11
bHRpUGFydEZpbGVWYWx1ZSgqV1RGOjpnZXQ8UmVmUHRyPEZpbGU+PihpdGVtLmRhdGEpLCBoZWFk
ZXIsIGVuY29kaW5nKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgYXBwZW5kTXVsdGlQYXJ0
U3RyaW5nVmFsdWUoV1RGOjpnZXQ8U3RyaW5nPihpdGVtLmRhdGEpLCBoZWFkZXIsIGVuY29kaW5n
KTsKIApAQCAtMzU5LDcgKzMzNCw3IEBAIFJlZjxGb3JtRGF0YT4gRm9ybURhdGE6OnJlc29sdmVC
bG9iUmVmZXJlbmNlcyhCbG9iUmVnaXN0cnkmIGJsb2JSZWdpc3RyeSkKICAgICAgICAgICAgIFsm
XSAoY29uc3QgVmVjdG9yPGNoYXI+JiBieXRlcykgewogICAgICAgICAgICAgICAgIG5ld0Zvcm1E
YXRhLT5hcHBlbmREYXRhKGJ5dGVzLmRhdGEoKSwgYnl0ZXMuc2l6ZSgpKTsKICAgICAgICAgICAg
IH0sIFsmXSAoY29uc3QgRm9ybURhdGFFbGVtZW50OjpFbmNvZGVkRmlsZURhdGEmIGZpbGVEYXRh
KSB7Ci0gICAgICAgICAgICAgICAgbmV3Rm9ybURhdGEtPmFwcGVuZEZpbGVSYW5nZShmaWxlRGF0
YS5maWxlbmFtZSwgZmlsZURhdGEuZmlsZVN0YXJ0LCBmaWxlRGF0YS5maWxlTGVuZ3RoLCBmaWxl
RGF0YS5leHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lLCBmaWxlRGF0YS5zaG91bGRHZW5lcmF0
ZUZpbGUpOworICAgICAgICAgICAgICAgIG5ld0Zvcm1EYXRhLT5hcHBlbmRGaWxlUmFuZ2UoZmls
ZURhdGEuZmlsZW5hbWUsIGZpbGVEYXRhLmZpbGVTdGFydCwgZmlsZURhdGEuZmlsZUxlbmd0aCwg
ZmlsZURhdGEuZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZSk7CiAgICAgICAgICAgICB9LCBb
Jl0gKGNvbnN0IEZvcm1EYXRhRWxlbWVudDo6RW5jb2RlZEJsb2JEYXRhJiBibG9iRGF0YSkgewog
ICAgICAgICAgICAgICAgIGFwcGVuZEJsb2JSZXNvbHZlZChibG9iUmVnaXN0cnksIG5ld0Zvcm1E
YXRhLmdldCgpLCBibG9iRGF0YS51cmwpOwogICAgICAgICAgICAgfQpAQCAtMzY4LDY2ICszNDMs
NDAgQEAgUmVmPEZvcm1EYXRhPiBGb3JtRGF0YTo6cmVzb2x2ZUJsb2JSZWZlcmVuY2VzKEJsb2JS
ZWdpc3RyeSYgYmxvYlJlZ2lzdHJ5KQogICAgIHJldHVybiBuZXdGb3JtRGF0YTsKIH0KIAotdm9p
ZCBGb3JtRGF0YTo6Z2VuZXJhdGVGaWxlcyhEb2N1bWVudCogZG9jdW1lbnQpCisjaWYgIVBMQVRG
T1JNKENPQ09BKQorU3RyaW5nIGdlbmVyYXRlRmlsZUZvclVwbG9hZChjb25zdCBTdHJpbmcmKQog
ewotICAgIFBhZ2UqIHBhZ2UgPSBkb2N1bWVudC0+cGFnZSgpOwotICAgIGlmICghcGFnZSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgZm9yIChhdXRvJiBlbGVtZW50IDogbV9lbGVtZW50cykgewot
ICAgICAgICBpZiAoYXV0byogZmlsZURhdGEgPSBXVEY6OmdldF9pZjxGb3JtRGF0YUVsZW1lbnQ6
OkVuY29kZWRGaWxlRGF0YT4oZWxlbWVudC5kYXRhKSkgewotICAgICAgICAgICAgaWYgKGZpbGVE
YXRhLT5zaG91bGRHZW5lcmF0ZUZpbGUpIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQoIWZpbGVE
YXRhLT5vd25zR2VuZXJhdGVkRmlsZSk7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKGZpbGVEYXRh
LT5nZW5lcmF0ZWRGaWxlbmFtZS5pc0VtcHR5KCkpOwotICAgICAgICAgICAgICAgIGlmICghZmls
ZURhdGEtPmdlbmVyYXRlZEZpbGVuYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICAgICAg
Y29udGludWU7Ci0gICAgICAgICAgICAgICAgZmlsZURhdGEtPmdlbmVyYXRlZEZpbGVuYW1lID0g
cGFnZS0+Y2hyb21lKCkuY2xpZW50KCkuZ2VuZXJhdGVSZXBsYWNlbWVudEZpbGUoZmlsZURhdGEt
PmZpbGVuYW1lKTsKLSAgICAgICAgICAgICAgICBpZiAoIWZpbGVEYXRhLT5nZW5lcmF0ZWRGaWxl
bmFtZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgICAgIGZpbGVEYXRhLT5vd25zR2VuZXJh
dGVkRmlsZSA9IHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLWJv
b2wgRm9ybURhdGE6Omhhc0dlbmVyYXRlZEZpbGVzKCkgY29uc3QKLXsKLSAgICBmb3IgKGF1dG8m
IGVsZW1lbnQgOiBtX2VsZW1lbnRzKSB7Ci0gICAgICAgIGlmIChhdXRvKiBmaWxlRGF0YSA9IFdU
Rjo6Z2V0X2lmPEZvcm1EYXRhRWxlbWVudDo6RW5jb2RlZEZpbGVEYXRhPihlbGVtZW50LmRhdGEp
KSB7Ci0gICAgICAgICAgICBpZiAoIWZpbGVEYXRhLT5nZW5lcmF0ZWRGaWxlbmFtZS5pc0VtcHR5
KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAg
cmV0dXJuIGZhbHNlOworICAgIHJldHVybiB7IH07CiB9CisjZW5kaWYKIAotYm9vbCBGb3JtRGF0
YTo6aGFzT3duZWRHZW5lcmF0ZWRGaWxlcygpIGNvbnN0CitzdGQ6OnBhaXI8UmVmPEZvcm1EYXRh
PiwgVmVjdG9yPFN0cmluZz4+IEZvcm1EYXRhOjpnZW5lcmF0ZUZpbGVzRm9yVXBsb2FkKCkKIHsK
KyAgICBWZWN0b3I8U3RyaW5nPiBnZW5lcmF0ZWRGaWxlczsKICAgICBmb3IgKGF1dG8mIGVsZW1l
bnQgOiBtX2VsZW1lbnRzKSB7Ci0gICAgICAgIGlmIChhdXRvKiBmaWxlRGF0YSA9IFdURjo6Z2V0
X2lmPEZvcm1EYXRhRWxlbWVudDo6RW5jb2RlZEZpbGVEYXRhPihlbGVtZW50LmRhdGEpKSB7Ci0g
ICAgICAgICAgICBpZiAoZmlsZURhdGEtPm93bnNHZW5lcmF0ZWRGaWxlKSB7Ci0gICAgICAgICAg
ICAgICAgQVNTRVJUKCFmaWxlRGF0YS0+Z2VuZXJhdGVkRmlsZW5hbWUuaXNFbXB0eSgpKTsKLSAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgYXV0byog
ZmlsZURhdGEgPSBXVEY6OmdldF9pZjxGb3JtRGF0YUVsZW1lbnQ6OkVuY29kZWRGaWxlRGF0YT4o
ZWxlbWVudC5kYXRhKTsKKyAgICAgICAgaWYgKCFmaWxlRGF0YSkKKyAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICBpZiAoIUZpbGVTeXN0ZW06OmZpbGVJc0RpcmVjdG9yeShmaWxlRGF0YS0+
ZmlsZW5hbWUsIEZpbGVTeXN0ZW06OlNob3VsZEZvbGxvd1N5bWJvbGljTGlua3M6OlllcykpCisg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKGZpbGVEYXRhLT5maWxlU3RhcnQgfHwg
ZmlsZURhdGEtPmZpbGVMZW5ndGggIT0gQmxvYkRhdGFJdGVtOjp0b0VuZE9mRmlsZSkKKyAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAoZmlsZURhdGEtPmV4cGVjdGVkRmlsZU1vZGlm
aWNhdGlvblRpbWUpIHsKKyAgICAgICAgICAgIGF1dG8gZmlsZU1vZGlmaWNhdGlvblRpbWUgPSBG
aWxlU3lzdGVtOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShmaWxlRGF0YS0+ZmlsZW5hbWUpOwor
ICAgICAgICAgICAgaWYgKCFmaWxlTW9kaWZpY2F0aW9uVGltZSkKKyAgICAgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgICAgIGlmIChmaWxlTW9kaWZpY2F0aW9uVGltZS0+c2Vjb25kc1Np
bmNlRXBvY2goKS5zZWNvbmRzQXM8dGltZV90PigpICE9IGZpbGVEYXRhLT5leHBlY3RlZEZpbGVN
b2RpZmljYXRpb25UaW1lLT5zZWNvbmRzU2luY2VFcG9jaCgpLnNlY29uZHNBczx0aW1lX3Q+KCkp
CisgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJu
IGZhbHNlOwotfQogCi12b2lkIEZvcm1EYXRhOjpyZW1vdmVHZW5lcmF0ZWRGaWxlc0lmTmVlZGVk
KCkKLXsKLSAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBtX2VsZW1lbnRzKSB7Ci0gICAgICAgIGlm
IChhdXRvKiBmaWxlRGF0YSA9IFdURjo6Z2V0X2lmPEZvcm1EYXRhRWxlbWVudDo6RW5jb2RlZEZp
bGVEYXRhPihlbGVtZW50LmRhdGEpKSB7Ci0gICAgICAgICAgICBpZiAoZmlsZURhdGEtPm93bnNH
ZW5lcmF0ZWRGaWxlKSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKCFmaWxlRGF0YS0+Z2VuZXJh
dGVkRmlsZW5hbWUuaXNFbXB0eSgpKTsKLSAgICAgICAgICAgICAgICBBU1NFUlQoZmlsZURhdGEt
PnNob3VsZEdlbmVyYXRlRmlsZSk7Ci0gICAgICAgICAgICAgICAgU3RyaW5nIGRpcmVjdG9yeSA9
IEZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUoZmlsZURhdGEtPmdlbmVyYXRlZEZpbGVuYW1lKTsK
LSAgICAgICAgICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGZpbGVEYXRhLT5nZW5lcmF0
ZWRGaWxlbmFtZSk7Ci0gICAgICAgICAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJl
Y3RvcnkoZGlyZWN0b3J5KTsKLSAgICAgICAgICAgICAgICBmaWxlRGF0YS0+Z2VuZXJhdGVkRmls
ZW5hbWUgPSBTdHJpbmcoKTsKLSAgICAgICAgICAgICAgICBmaWxlRGF0YS0+b3duc0dlbmVyYXRl
ZEZpbGUgPSBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQorICAgICAgICBhdXRvIGdl
bmVyYXRlZEZpbGVuYW1lID0gZ2VuZXJhdGVGaWxlRm9yVXBsb2FkKGZpbGVEYXRhLT5maWxlbmFt
ZSk7CisgICAgICAgIGlmICghZ2VuZXJhdGVkRmlsZW5hbWUpCisgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgZmlsZURhdGEtPmZpbGVuYW1lID0gZ2VuZXJhdGVkRmlsZW5hbWU7CisgICAg
ICAgIGdlbmVyYXRlZEZpbGVzLmFwcGVuZChXVEZNb3ZlKGdlbmVyYXRlZEZpbGVuYW1lKSk7CiAg
ICAgfQorICAgIAorICAgIHJldHVybiB7ICp0aGlzLCBXVEZNb3ZlKGdlbmVyYXRlZEZpbGVzKSB9
OwogfQogCiB1aW50NjRfdCBGb3JtRGF0YTo6bGVuZ3RoSW5CeXRlcygpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKaW5kZXggMjlkNTU3YTZiYTI2M2M1
MjQ1NmI0YmM3MGExY2Q0ZDlmMWY0MzY0Yi4uNjJiZmVlN2NhZDM2M2QyMTIzZWVkNDJlYWZiN2Q1
ZDVjMzRlNDA0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9G
b3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEu
aApAQCAtMzEsNyArMzEsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEJsb2JSZWdp
c3RyeTsKIGNsYXNzIERPTUZvcm1EYXRhOwotY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBGaWxlOwog
Y2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgVGV4dEVuY29kaW5nOwpAQCAtNDYsOCArNDUsOCBA
QCBzdHJ1Y3QgRm9ybURhdGFFbGVtZW50IHsKICAgICAgICAgOiBkYXRhKFdURk1vdmUoZGF0YSkp
IHsgfQogICAgIGV4cGxpY2l0IEZvcm1EYXRhRWxlbWVudChWZWN0b3I8Y2hhcj4mJiBhcnJheSkK
ICAgICAgICAgOiBkYXRhKFdURk1vdmUoYXJyYXkpKSB7IH0KLSAgICBGb3JtRGF0YUVsZW1lbnQo
Y29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgaW50NjRfdCBmaWxlU3RhcnQsIGludDY0X3QgZmlsZUxl
bmd0aCwgT3B0aW9uYWw8V2FsbFRpbWU+IGV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUsIGJv
b2wgc2hvdWxkR2VuZXJhdGVGaWxlKQotICAgICAgICA6IGRhdGEoRW5jb2RlZEZpbGVEYXRhIHsg
ZmlsZW5hbWUsIGZpbGVTdGFydCwgZmlsZUxlbmd0aCwgZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9u
VGltZSwgeyB9LCBzaG91bGRHZW5lcmF0ZUZpbGUsIGZhbHNlIH0pIHsgfQorICAgIEZvcm1EYXRh
RWxlbWVudChjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBpbnQ2NF90IGZpbGVTdGFydCwgaW50NjRf
dCBmaWxlTGVuZ3RoLCBPcHRpb25hbDxXYWxsVGltZT4gZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9u
VGltZSkKKyAgICAgICAgOiBkYXRhKEVuY29kZWRGaWxlRGF0YSB7IGZpbGVuYW1lLCBmaWxlU3Rh
cnQsIGZpbGVMZW5ndGgsIGV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUgfSkgeyB9CiAgICAg
ZXhwbGljaXQgRm9ybURhdGFFbGVtZW50KGNvbnN0IFVSTCYgYmxvYlVSTCkKICAgICAgICAgOiBk
YXRhKEVuY29kZWRCbG9iRGF0YSB7IGJsb2JVUkwgfSkgeyB9CiAKQEAgLTczLDE3ICs3MiwxMCBA
QCBzdHJ1Y3QgRm9ybURhdGFFbGVtZW50IHsKICAgICAgICAgaW50NjRfdCBmaWxlU3RhcnQgeyAw
IH07CiAgICAgICAgIGludDY0X3QgZmlsZUxlbmd0aCB7IDAgfTsKICAgICAgICAgT3B0aW9uYWw8
V2FsbFRpbWU+IGV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWU7Ci0gICAgICAgIFN0cmluZyBn
ZW5lcmF0ZWRGaWxlbmFtZTsKLSAgICAgICAgYm9vbCBzaG91bGRHZW5lcmF0ZUZpbGUgeyBmYWxz
ZSB9OwotICAgICAgICBib29sIG93bnNHZW5lcmF0ZWRGaWxlIHsgZmFsc2UgfTsKLQotICAgICAg
ICAvLyBGSVhNRTogR2VuZXJhdGVkIGZpbGUgc3VwcG9ydCBpbiBGb3JtRGF0YSBpcyBhbG1vc3Qg
aWRlbnRpY2FsIHRvIEJsb2IsIHRoZXkgc2hvdWxkIGJlIG1lcmdlZC4KLSAgICAgICAgLy8gV2Ug
Y2FuJ3QganVzdCBzd2l0Y2ggdG8gdXNpbmcgQmxvYnMgZm9yIGFsbCBmaWxlcyBiZWNhdXNlIEVu
Y29kZWRGaWxlIGZvcm0gZGF0YSBlbGVtZW50cyBkbyBub3QKLSAgICAgICAgLy8gaGF2ZSBhIHZh
bGlkIGV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUsIG1lYW5pbmcgd2UgYWx3YXlzIHVwbG9h
ZCB0aGUgbGF0ZXN0IGNvbnRlbnQgZnJvbSBkaXNrLgogCiAgICAgICAgIEVuY29kZWRGaWxlRGF0
YSBpc29sYXRlZENvcHkoKSBjb25zdAogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4geyBm
aWxlbmFtZS5pc29sYXRlZENvcHkoKSwgZmlsZVN0YXJ0LCBmaWxlTGVuZ3RoLCBleHBlY3RlZEZp
bGVNb2RpZmljYXRpb25UaW1lLCBnZW5lcmF0ZWRGaWxlbmFtZS5pc29sYXRlZENvcHkoKSwgc2hv
dWxkR2VuZXJhdGVGaWxlLCBvd25zR2VuZXJhdGVkRmlsZSB9OworICAgICAgICAgICAgcmV0dXJu
IHsgZmlsZW5hbWUuaXNvbGF0ZWRDb3B5KCksIGZpbGVTdGFydCwgZmlsZUxlbmd0aCwgZXhwZWN0
ZWRGaWxlTW9kaWZpY2F0aW9uVGltZSB9OwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgRW5jb2RlZEZpbGVEYXRhJiBvdGhlcikgY29uc3QKQEAgLTkx
LDE0ICs4MywxMSBAQCBzdHJ1Y3QgRm9ybURhdGFFbGVtZW50IHsKICAgICAgICAgICAgIHJldHVy
biBmaWxlbmFtZSA9PSBvdGhlci5maWxlbmFtZQogICAgICAgICAgICAgICAgICYmIGZpbGVTdGFy
dCA9PSBvdGhlci5maWxlU3RhcnQKICAgICAgICAgICAgICAgICAmJiBmaWxlTGVuZ3RoID09IG90
aGVyLmZpbGVMZW5ndGgKLSAgICAgICAgICAgICAgICAmJiBleHBlY3RlZEZpbGVNb2RpZmljYXRp
b25UaW1lID09IG90aGVyLmV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUKLSAgICAgICAgICAg
ICAgICAmJiBnZW5lcmF0ZWRGaWxlbmFtZSA9PSBvdGhlci5nZW5lcmF0ZWRGaWxlbmFtZQotICAg
ICAgICAgICAgICAgICYmIHNob3VsZEdlbmVyYXRlRmlsZSA9PSBvdGhlci5zaG91bGRHZW5lcmF0
ZUZpbGUKLSAgICAgICAgICAgICAgICAmJiBvd25zR2VuZXJhdGVkRmlsZSA9PSBvdGhlci5vd25z
R2VuZXJhdGVkRmlsZTsKKyAgICAgICAgICAgICAgICAmJiBleHBlY3RlZEZpbGVNb2RpZmljYXRp
b25UaW1lID09IG90aGVyLmV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWU7CiAgICAgICAgIH0K
ICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKICAgICAgICAgewotICAgICAgICAgICAgZW5jb2RlciA8PCBmaWxlbmFt
ZSA8PCBmaWxlU3RhcnQgPDwgZmlsZUxlbmd0aCA8PCBleHBlY3RlZEZpbGVNb2RpZmljYXRpb25U
aW1lIDw8IGdlbmVyYXRlZEZpbGVuYW1lIDw8IHNob3VsZEdlbmVyYXRlRmlsZTsKKyAgICAgICAg
ICAgIGVuY29kZXIgPDwgZmlsZW5hbWUgPDwgZmlsZVN0YXJ0IDw8IGZpbGVMZW5ndGggPDwgZXhw
ZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZTsKICAgICAgICAgfQogICAgICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8RW5jb2RlZEZpbGVEYXRhPiBkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKICAgICAgICAgewpAQCAtMTIxLDI3ICsxMTAsMTIgQEAgc3RydWN0
IEZvcm1EYXRhRWxlbWVudCB7CiAgICAgICAgICAgICBkZWNvZGVyID4+IGV4cGVjdGVkRmlsZU1v
ZGlmaWNhdGlvblRpbWU7CiAgICAgICAgICAgICBpZiAoIWV4cGVjdGVkRmlsZU1vZGlmaWNhdGlv
blRpbWUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICAgICAgICAg
IAotICAgICAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiBnZW5lcmF0ZWRGaWxlbmFtZTsKLSAgICAg
ICAgICAgIGRlY29kZXIgPj4gZ2VuZXJhdGVkRmlsZW5hbWU7Ci0gICAgICAgICAgICBpZiAoIWdl
bmVyYXRlZEZpbGVuYW1lKQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0K
LSAgICAgICAgICAgIE9wdGlvbmFsPGJvb2w+IHNob3VsZEdlbmVyYXRlRmlsZTsKLSAgICAgICAg
ICAgIGRlY29kZXIgPj4gc2hvdWxkR2VuZXJhdGVGaWxlOwotICAgICAgICAgICAgaWYgKCFzaG91
bGRHZW5lcmF0ZUZpbGUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAot
ICAgICAgICAgICAgYm9vbCBvd25zR2VuZXJhdGVkRmlsZSA9IGZhbHNlOwotICAgICAgICAgICAg
CiAgICAgICAgICAgICByZXR1cm4ge3sKICAgICAgICAgICAgICAgICBXVEZNb3ZlKCpmaWxlbmFt
ZSksCiAgICAgICAgICAgICAgICAgV1RGTW92ZSgqZmlsZVN0YXJ0KSwKICAgICAgICAgICAgICAg
ICBXVEZNb3ZlKCpmaWxlTGVuZ3RoKSwKLSAgICAgICAgICAgICAgICBXVEZNb3ZlKCpleHBlY3Rl
ZEZpbGVNb2RpZmljYXRpb25UaW1lKSwKLSAgICAgICAgICAgICAgICBXVEZNb3ZlKCpnZW5lcmF0
ZWRGaWxlbmFtZSksCi0gICAgICAgICAgICAgICAgV1RGTW92ZSgqc2hvdWxkR2VuZXJhdGVGaWxl
KSwKLSAgICAgICAgICAgICAgICBXVEZNb3ZlKG93bnNHZW5lcmF0ZWRGaWxlKQorICAgICAgICAg
ICAgICAgIFdURk1vdmUoKmV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUpCiAgICAgICAgICAg
ICB9fTsKICAgICAgICAgfQogCkBAIC0yMDQsNyArMTc4LDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBSZWY8Rm9ybURhdGE+IGNyZWF0ZShjb25zdCBWZWN0b3I8Y2hhcj4mKTsKICAgICBzdGF0aWMg
UmVmPEZvcm1EYXRhPiBjcmVhdGUoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+Jik7CiAgICAgc3RhdGlj
IFJlZjxGb3JtRGF0YT4gY3JlYXRlKGNvbnN0IERPTUZvcm1EYXRhJiwgRW5jb2RpbmdUeXBlID0g
Rm9ybVVSTEVuY29kZWQpOwotICAgIHN0YXRpYyBSZWY8Rm9ybURhdGE+IGNyZWF0ZU11bHRpUGFy
dChjb25zdCBET01Gb3JtRGF0YSYsIERvY3VtZW50Kik7CisgICAgc3RhdGljIFJlZjxGb3JtRGF0
YT4gY3JlYXRlTXVsdGlQYXJ0KGNvbnN0IERPTUZvcm1EYXRhJik7CiAgICAgV0VCQ09SRV9FWFBP
UlQgfkZvcm1EYXRhKCk7CiAKICAgICAvLyBGSVhNRTogQm90aCB0aGVzZSBmdW5jdGlvbnMgcGVy
Zm9ybSBhIGRlZXAgY29weSBvZiBtX2VsZW1lbnRzLCBidXQgZGlmZmVyIGluIGhhbmRsaW5nIG9m
IG90aGVyIGRhdGEgbWVtYmVycy4KQEAgLTIxOCw4ICsxOTIsOCBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIFJlZlB0cjxGb3JtRGF0YT4gZGVjb2RlKERlY29kZXImKTsKIAogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgYXBwZW5kRGF0YShjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QpOwotICAgIHZvaWQg
YXBwZW5kRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBib29sIHNob3VsZEdlbmVyYXRlRmls
ZSA9IGZhbHNlKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZEZpbGVSYW5nZShjb25z
dCBTdHJpbmcmIGZpbGVuYW1lLCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBsZW5ndGgsIE9w
dGlvbmFsPFdhbGxUaW1lPiBleHBlY3RlZE1vZGlmaWNhdGlvblRpbWUsIGJvb2wgc2hvdWxkR2Vu
ZXJhdGVGaWxlID0gZmFsc2UpOworICAgIHZvaWQgYXBwZW5kRmlsZShjb25zdCBTdHJpbmcmIGZp
bGVQYXRoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZEZpbGVSYW5nZShjb25zdCBT
dHJpbmcmIGZpbGVuYW1lLCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBsZW5ndGgsIE9wdGlv
bmFsPFdhbGxUaW1lPiBleHBlY3RlZE1vZGlmaWNhdGlvblRpbWUpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgYXBwZW5kQmxvYihjb25zdCBVUkwmIGJsb2JVUkwpOwogCiAgICAgV0VCQ09SRV9F
WFBPUlQgVmVjdG9yPGNoYXI+IGZsYXR0ZW4oKSBjb25zdDsgLy8gb21pdHMgZmlsZXMKQEAgLTIy
OCw2ICsyMDIsNyBAQCBwdWJsaWM6CiAgICAgLy8gUmVzb2x2ZSBhbGwgYmxvYiByZWZlcmVuY2Vz
IHNvIHdlIG9ubHkgaGF2ZSBmaWxlIGFuZCBkYXRhLgogICAgIC8vIElmIHRoZSBGb3JtRGF0YSBo
YXMgbm8gYmxvYiByZWZlcmVuY2VzIHRvIHJlc29sdmUsIHRoaXMgaXMgcmV0dXJuZWQuCiAgICAg
V0VCQ09SRV9FWFBPUlQgUmVmPEZvcm1EYXRhPiByZXNvbHZlQmxvYlJlZmVyZW5jZXMoQmxvYlJl
Z2lzdHJ5Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpwYWlyPFJlZjxGb3JtRGF0YT4sIFZl
Y3RvcjxTdHJpbmc+PiBnZW5lcmF0ZUZpbGVzRm9yVXBsb2FkKCk7CiAKICAgICBib29sIGlzRW1w
dHkoKSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnRzLmlzRW1wdHkoKTsgfQogICAgIGNvbnN0IFZl
Y3RvcjxGb3JtRGF0YUVsZW1lbnQ+JiBlbGVtZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVu
dHM7IH0KQEAgLTIzNSw5ICsyMTAsNiBAQCBwdWJsaWM6CiAKICAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBhc1NoYXJlZEJ1ZmZlcigpIGNvbnN0OwogCi0gICAgdm9pZCBnZW5lcmF0ZUZpbGVzKERv
Y3VtZW50Kik7Ci0gICAgdm9pZCByZW1vdmVHZW5lcmF0ZWRGaWxlc0lmTmVlZGVkKCk7Ci0KICAg
ICBib29sIGFsd2F5c1N0cmVhbSgpIGNvbnN0IHsgcmV0dXJuIG1fYWx3YXlzU3RyZWFtOyB9CiAg
ICAgdm9pZCBzZXRBbHdheXNTdHJlYW0oYm9vbCBhbHdheXNTdHJlYW0pIHsgbV9hbHdheXNTdHJl
YW0gPSBhbHdheXNTdHJlYW07IH0KIApAQCAtMjY2LDE0ICsyMzgsMTEgQEAgcHJpdmF0ZToKICAg
ICBGb3JtRGF0YSgpOwogICAgIEZvcm1EYXRhKGNvbnN0IEZvcm1EYXRhJik7CiAKLSAgICB2b2lk
IGFwcGVuZE11bHRpUGFydEZpbGVWYWx1ZShjb25zdCBGaWxlJiwgVmVjdG9yPGNoYXI+JiBoZWFk
ZXIsIFRleHRFbmNvZGluZyYsIERvY3VtZW50Kik7CisgICAgdm9pZCBhcHBlbmRNdWx0aVBhcnRG
aWxlVmFsdWUoY29uc3QgRmlsZSYsIFZlY3RvcjxjaGFyPiYgaGVhZGVyLCBUZXh0RW5jb2Rpbmcm
KTsKICAgICB2b2lkIGFwcGVuZE11bHRpUGFydFN0cmluZ1ZhbHVlKGNvbnN0IFN0cmluZyYsIFZl
Y3RvcjxjaGFyPiYgaGVhZGVyLCBUZXh0RW5jb2RpbmcmKTsKLSAgICB2b2lkIGFwcGVuZE11bHRp
UGFydEtleVZhbHVlUGFpckl0ZW1zKGNvbnN0IERPTUZvcm1EYXRhJiwgRG9jdW1lbnQqKTsKKyAg
ICB2b2lkIGFwcGVuZE11bHRpUGFydEtleVZhbHVlUGFpckl0ZW1zKGNvbnN0IERPTUZvcm1EYXRh
Jik7CiAgICAgdm9pZCBhcHBlbmROb25NdWx0aVBhcnRLZXlWYWx1ZVBhaXJJdGVtcyhjb25zdCBE
T01Gb3JtRGF0YSYsIEVuY29kaW5nVHlwZSk7CiAKLSAgICBib29sIGhhc0dlbmVyYXRlZEZpbGVz
KCkgY29uc3Q7Ci0gICAgYm9vbCBoYXNPd25lZEdlbmVyYXRlZEZpbGVzKCkgY29uc3Q7Ci0KICAg
ICBWZWN0b3I8Rm9ybURhdGFFbGVtZW50PiBtX2VsZW1lbnRzOwogCiAgICAgaW50NjRfdCBtX2lk
ZW50aWZpZXIgeyAwIH07CkBAIC0zMjMsNSArMjkyLDcgQEAgUmVmUHRyPEZvcm1EYXRhPiBGb3Jt
RGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgcmV0dXJuIGRhdGE7CiB9CiAKK1N0
cmluZyBnZW5lcmF0ZUZpbGVGb3JVcGxvYWQoY29uc3QgU3RyaW5nJik7CisKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAKaW5kZXggZGZkZGU3MWExZjBiOTE4Njcx
MjY1NTA0YWM3YTNmYWQ5MTlmZDdlMS4uMjZkNDg2NjMzZDI1MmI2M2I3ZjRlZDk5NWM4YzE3ZmM4
NmJjM2Q5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9G
b3JtRGF0YVN0cmVhbUNGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwCkBAIC05MiwxMiArOTIsMTQgQEAgQ0ZTdHJp
bmdSZWYgZm9ybURhdGFTdHJlYW1MZW5ndGhQcm9wZXJ0eU5hbWUoKQogfQogCiBzdHJ1Y3QgRm9y
bUNyZWF0aW9uQ29udGV4dCB7Ci0gICAgUmVmUHRyPEZvcm1EYXRhPiBmb3JtRGF0YTsKKyAgICBS
ZWY8Rm9ybURhdGE+IGZvcm1EYXRhOworICAgIFZlY3RvcjxTdHJpbmc+IGdlbmVyYXRlZEZpbGVz
OwogICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBzdHJlYW1MZW5ndGg7CiB9OwogCiBzdHJ1Y3QgRm9y
bVN0cmVhbUZpZWxkcyB7CiAgICAgUmVmUHRyPEZvcm1EYXRhPiBmb3JtRGF0YTsKKyAgICBWZWN0
b3I8U3RyaW5nPiBnZW5lcmF0ZWRGaWxlczsKICAgICBTY2hlZHVsZVBhaXJIYXNoU2V0IHNjaGVk
dWxlZFJ1bkxvb3BQYWlyczsKICAgICBWZWN0b3I8Rm9ybURhdGFFbGVtZW50PiByZW1haW5pbmdF
bGVtZW50czsgLy8gaW4gcmV2ZXJzZSBvcmRlcgogICAgIENGUmVhZFN0cmVhbVJlZiBjdXJyZW50
U3RyZWFtOwpAQCAtMTUzLDcgKzE1NSw4IEBAIHN0YXRpYyBib29sIGFkdmFuY2VDdXJyZW50U3Ry
ZWFtKEZvcm1TdHJlYW1GaWVsZHMqIGZvcm0pCiAgICAgICAgICAgICAgICAgaWYgKGZpbGVNb2Rp
ZmljYXRpb25UaW1lLT5zZWNvbmRzU2luY2VFcG9jaCgpLnNlY29uZHNBczx0aW1lX3Q+KCkgIT0g
ZmlsZURhdGEuZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZS0+c2Vjb25kc1NpbmNlRXBvY2go
KS5zZWNvbmRzQXM8dGltZV90PigpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBjb25zdCBTdHJpbmcmIHBhdGggPSBmaWxlRGF0
YS5zaG91bGRHZW5lcmF0ZUZpbGUgPyBmaWxlRGF0YS5nZW5lcmF0ZWRGaWxlbmFtZSA6IGZpbGVE
YXRhLmZpbGVuYW1lOworCisgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHBhdGggPSBmaWxlRGF0
YS5maWxlbmFtZTsKICAgICAgICAgICAgIGZvcm0tPmN1cnJlbnRTdHJlYW0gPSBDRlJlYWRTdHJl
YW1DcmVhdGVXaXRoRmlsZSgwLCBGaWxlU3lzdGVtOjpwYXRoQXNVUkwocGF0aCkuZ2V0KCkpOwog
ICAgICAgICAgICAgaWYgKCFmb3JtLT5jdXJyZW50U3RyZWFtKSB7CiAgICAgICAgICAgICAgICAg
Ly8gVGhlIGZpbGUgbXVzdCBoYXZlIGJlZW4gcmVtb3ZlZCBvciBiZWNvbWUgdW5yZWFkYWJsZS4K
QEAgLTIxMSw2ICsyMTQsNyBAQCBzdGF0aWMgdm9pZCogZm9ybUNyZWF0ZShDRlJlYWRTdHJlYW1S
ZWYgc3RyZWFtLCB2b2lkKiBjb250ZXh0KQogCiAgICAgRm9ybVN0cmVhbUZpZWxkcyogbmV3SW5m
byA9IG5ldyBGb3JtU3RyZWFtRmllbGRzOwogICAgIG5ld0luZm8tPmZvcm1EYXRhID0gV1RGTW92
ZShmb3JtQ29udGV4dC0+Zm9ybURhdGEpOworICAgIG5ld0luZm8tPmdlbmVyYXRlZEZpbGVzID0g
V1RGTW92ZShmb3JtQ29udGV4dC0+Z2VuZXJhdGVkRmlsZXMpOwogICAgIG5ld0luZm8tPmN1cnJl
bnRTdHJlYW0gPSAwOwogICAgIG5ld0luZm8tPmN1cnJlbnRTdHJlYW1SYW5nZUxlbmd0aCA9IEJs
b2JEYXRhSXRlbTo6dG9FbmRPZkZpbGU7CiAgICAgbmV3SW5mby0+Zm9ybVN0cmVhbSA9IHN0cmVh
bTsgLy8gRG9uJ3QgcmV0YWluLiBUaGF0IHdvdWxkIGNyZWF0ZSBhIHJlZmVyZW5jZSBjeWNsZS4K
QEAgLTI0MCw2ICsyNDQsOCBAQCBzdGF0aWMgdm9pZCBmb3JtRmluYWxpemUoQ0ZSZWFkU3RyZWFt
UmVmIHN0cmVhbSwgdm9pZCogY29udGV4dCkKICAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja2Vy
KGZvcm0tPnN0cmVhbUlzQmVpbmdPcGVuZWRPckNsb3NlZExvY2spOwogICAgICAgICAgICAgY2xv
c2VDdXJyZW50U3RyZWFtKGZvcm0pOwogICAgICAgICB9CisgICAgICAgIGZvciAoYXV0byYgZ2Vu
ZXJhdGVkRmlsZSA6IGZvcm0tPmdlbmVyYXRlZEZpbGVzKQorICAgICAgICAgICAgRmlsZVN5c3Rl
bTo6ZGVsZXRlRmlsZShnZW5lcmF0ZWRGaWxlKTsKICAgICAgICAgZGVsZXRlIGZvcm07CiAgICAg
fSk7CiB9CkBAIC0zNzgsMTMgKzM4NCwxNCBAQCBzdGF0aWMgdm9pZCBmb3JtRXZlbnRDYWxsYmFj
ayhDRlJlYWRTdHJlYW1SZWYgc3RyZWFtLCBDRlN0cmVhbUV2ZW50VHlwZSB0eXBlLCB2bwogUmV0
YWluUHRyPENGUmVhZFN0cmVhbVJlZj4gY3JlYXRlSFRUUEJvZHlDRlJlYWRTdHJlYW0oRm9ybURh
dGEmIGZvcm1EYXRhKQogewogICAgIGF1dG8gcmVzb2x2ZWRGb3JtRGF0YSA9IGZvcm1EYXRhLnJl
c29sdmVCbG9iUmVmZXJlbmNlcyhibG9iUmVnaXN0cnkoKSk7CisgICAgYXV0byBkYXRhQW5kRmls
ZXMgPSByZXNvbHZlZEZvcm1EYXRhLT5nZW5lcmF0ZUZpbGVzRm9yVXBsb2FkKCk7CiAKICAgICAv
LyBQcmVjb21wdXRlIHRoZSBjb250ZW50IGxlbmd0aCBzbyBDRk5ldHdvcmsgZG9lc24ndCB1c2Ug
Y2h1bmtlZCBtb2RlLgogICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBsZW5ndGggPSAwOwotICAgIGZv
ciAoYXV0byYgZWxlbWVudCA6IHJlc29sdmVkRm9ybURhdGEtPmVsZW1lbnRzKCkpCisgICAgZm9y
IChhdXRvJiBlbGVtZW50IDogZGF0YUFuZEZpbGVzLmZpcnN0LT5lbGVtZW50cygpKQogICAgICAg
ICBsZW5ndGggKz0gZWxlbWVudC5sZW5ndGhJbkJ5dGVzKCk7CiAKLSAgICBGb3JtQ3JlYXRpb25D
b250ZXh0KiBmb3JtQ29udGV4dCA9IG5ldyBGb3JtQ3JlYXRpb25Db250ZXh0IHsgV1RGTW92ZShy
ZXNvbHZlZEZvcm1EYXRhKSwgbGVuZ3RoIH07CisgICAgRm9ybUNyZWF0aW9uQ29udGV4dCogZm9y
bUNvbnRleHQgPSBuZXcgRm9ybUNyZWF0aW9uQ29udGV4dCB7IFdURk1vdmUoZGF0YUFuZEZpbGVz
LmZpcnN0KSwgV1RGTW92ZShkYXRhQW5kRmlsZXMuc2Vjb25kKSwgbGVuZ3RoIH07CiAgICAgQ0ZS
ZWFkU3RyZWFtQ2FsbEJhY2tzVjEgY2FsbEJhY2tzID0geyAxLCBmb3JtQ3JlYXRlLCBmb3JtRmlu
YWxpemUsIG51bGxwdHIsIGZvcm1PcGVuLCBudWxscHRyLCBmb3JtUmVhZCwgbnVsbHB0ciwgZm9y
bUNhblJlYWQsIGZvcm1DbG9zZSwgZm9ybUNvcHlQcm9wZXJ0eSwgbnVsbHB0ciwgbnVsbHB0ciwg
Zm9ybVNjaGVkdWxlLCBmb3JtVW5zY2hlZHVsZSB9OwogICAgIHJldHVybiBhZG9wdENGKENGUmVh
ZFN0cmVhbUNyZWF0ZShudWxscHRyLCBzdGF0aWNfY2FzdDxjb25zdCB2b2lkKj4oJmNhbGxCYWNr
cyksIGZvcm1Db250ZXh0KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL21hYy9CbG9iRGF0YUZpbGVSZWZlcmVuY2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9CbG9iRGF0YUZpbGVSZWZlcmVuY2VNYWMubW0KaW5kZXgg
YjY5MjkyMGIyMWZjNjYzOWQ1NzQ1ZDFjMDQ0ZThiNzg3ODIzNTBkMC4uZWNkZTkxYWI0MWQ4Mzgw
ODQwZDdjZGNiZWYwNWM0ZGZkNThjN2FlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9tYWMvQmxvYkRhdGFGaWxlUmVmZXJlbmNlTWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZU1hYy5t
bQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKEZJTEVfUkVQTEFDRU1FTlQpCiAKKyNp
bmNsdWRlICJGb3JtRGF0YS5oIgogI2luY2x1ZGUgPHd0Zi9GaWxlTWV0YWRhdGEuaD4KICNpbmNs
dWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9Tb2Z0TGlua2luZy5oPgpAQCAt
NTEsMTUgKzUyLDEyIEBAIFNPRlRfTElOSyhCb20sIEJPTUNvcGllckNvcHlXaXRoT3B0aW9ucywg
aW50LCAoQk9NQ29waWVyIGNvcGllciwgY29uc3QgY2hhciogZnJvCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotdm9pZCBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OmdlbmVyYXRlUmVwbGFjZW1lbnRG
aWxlKCkKK1N0cmluZyBnZW5lcmF0ZUZpbGVGb3JVcGxvYWQoY29uc3QgU3RyaW5nJiBwYXRoKQog
ewotICAgIEFTU0VSVChtX3JlcGxhY2VtZW50UGF0aC5pc051bGwoKSk7Ci0gICAgQVNTRVJUKG1f
cmVwbGFjZW1lbnRTaG91bGRCZUdlbmVyYXRlZCk7Ci0KLSAgICBwcmVwYXJlRm9yRmlsZUFjY2Vz
cygpOworICAgIFN0cmluZyBnZW5lcmF0ZWRGaWxlOwogCiAgICAgUmV0YWluUHRyPE5TRmlsZUNv
b3JkaW5hdG9yPiBjb29yZGluYXRvciA9IGFkb3B0TlMoW1tOU0ZpbGVDb29yZGluYXRvciBhbGxv
Y10gaW5pdFdpdGhGaWxlUHJlc2VudGVyOm5pbF0pOwotICAgIFtjb29yZGluYXRvciBjb29yZGlu
YXRlUmVhZGluZ0l0ZW1BdFVSTDpbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOm1fcGF0aF0gb3B0aW9u
czpOU0ZpbGVDb29yZGluYXRvclJlYWRpbmdXaXRob3V0Q2hhbmdlcyBlcnJvcjpudWxscHRyIGJ5
QWNjZXNzb3I6XihOU1VSTCAqbmV3VVJMKSB7CisgICAgW2Nvb3JkaW5hdG9yIGNvb3JkaW5hdGVS
ZWFkaW5nSXRlbUF0VVJMOltOU1VSTCBmaWxlVVJMV2l0aFBhdGg6cGF0aF0gb3B0aW9uczpOU0Zp
bGVDb29yZGluYXRvclJlYWRpbmdXaXRob3V0Q2hhbmdlcyBlcnJvcjpudWxscHRyIGJ5QWNjZXNz
b3I6WyZdKE5TVVJMICpuZXdVUkwpIG11dGFibGUgewogICAgICAgICAvLyBUaGUgYXJjaGl2ZSBp
cyBwdXQgaW50byBhIHN1YmRpcmVjdG9yeSBvZiB0ZW1wb3JhcnkgZGlyZWN0b3J5IGZvciBoaXN0
b3JpYyByZWFzb25zLiBDaGFuZ2luZyB0aGlzIHdpbGwgcmVxdWlyZSBXZWJDb3JlIHRvIGNoYW5n
ZSBhdCB0aGUgc2FtZSB0aW1lLgogICAgICAgICBDU3RyaW5nIGFyY2hpdmVQYXRoKFtOU1RlbXBv
cmFyeURpcmVjdG9yeSgpIHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIldlYktpdEdl
bmVyYXRlZEZpbGVYWFhYWFgiXS5maWxlU3lzdGVtUmVwcmVzZW50YXRpb24pOwogICAgICAgICBp
ZiAobWtzdGVtcChhcmNoaXZlUGF0aC5tdXRhYmxlRGF0YSgpKSA9PSAtMSkKQEAgLTc0LDEwICs3
MiwyNCBAQCB2b2lkIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6Z2VuZXJhdGVSZXBsYWNlbWVudEZp
bGUoKQogCiAgICAgICAgIEJPTUNvcGllciBjb3BpZXIgPSBCT01Db3BpZXJOZXcoKTsKICAgICAg
ICAgaWYgKCFCT01Db3BpZXJDb3B5V2l0aE9wdGlvbnMoY29waWVyLCBuZXdVUkwucGF0aC5maWxl
U3lzdGVtUmVwcmVzZW50YXRpb24sIGFyY2hpdmVQYXRoLmRhdGEoKSwgKF9fYnJpZGdlIENGRGlj
dGlvbmFyeVJlZilvcHRpb25zKSkKLSAgICAgICAgICAgIG1fcmVwbGFjZW1lbnRQYXRoID0gU3Ry
aW5nOjpmcm9tVVRGOChhcmNoaXZlUGF0aCk7CisgICAgICAgICAgICBnZW5lcmF0ZWRGaWxlID0g
U3RyaW5nOjpmcm9tVVRGOChhcmNoaXZlUGF0aCk7CiAgICAgICAgIEJPTUNvcGllckZyZWUoY29w
aWVyKTsKICAgICB9XTsKIAorICAgIHJldHVybiBnZW5lcmF0ZWRGaWxlOworfQorCit2b2lkIEJs
b2JEYXRhRmlsZVJlZmVyZW5jZTo6Z2VuZXJhdGVSZXBsYWNlbWVudEZpbGUoKQoreworICAgIEFT
U0VSVChtX3JlcGxhY2VtZW50UGF0aC5pc051bGwoKSk7CisgICAgQVNTRVJUKG1fcmVwbGFjZW1l
bnRTaG91bGRCZUdlbmVyYXRlZCk7CisKKyAgICBwcmVwYXJlRm9yRmlsZUFjY2VzcygpOworCisg
ICAgYXV0byBnZW5lcmF0ZWRGaWxlID0gZ2VuZXJhdGVGaWxlRm9yVXBsb2FkKG1fcGF0aCk7Cisg
ICAgaWYgKCFnZW5lcmF0ZWRGaWxlLmlzTnVsbCgpKQorICAgICAgICBtX3JlcGxhY2VtZW50UGF0
aCA9IFdURk1vdmUoZ2VuZXJhdGVkRmlsZSk7CisKICAgICBtX3JlcGxhY2VtZW50U2hvdWxkQmVH
ZW5lcmF0ZWQgPSBmYWxzZTsKICAgICBpZiAoIW1fcmVwbGFjZW1lbnRQYXRoLmlzTnVsbCgpKSB7
CiAgICAgICAgIGlmIChhdXRvIG1ldGFkYXRhID0gRmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRhRm9s
bG93aW5nU3ltbGlua3MobV9yZXBsYWNlbWVudFBhdGgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRw
UmVxdWVzdC5jcHAKaW5kZXggNWM2NDc0ZmY0N2Y2ZDAyYWRjYmRhMjllY2FkNTY0ZjRiNDZiMzAy
OC4uMDQyODAzMzdmMTgxYzYwNDQwYTkwNTliYzBhMjVkODVjZTNmMDZkYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCkBAIC01MzMsOCArNTMzLDcgQEAgRXhjZXB0aW9uT3I8
dm9pZD4gWE1MSHR0cFJlcXVlc3Q6OnNlbmQoRE9NRm9ybURhdGEmIGJvZHkpCiAgICAgICAgIHJl
dHVybiBXVEZNb3ZlKHJlc3VsdC52YWx1ZSgpKTsKIAogICAgIGlmIChtX21ldGhvZCAhPSAiR0VU
IiAmJiBtX21ldGhvZCAhPSAiSEVBRCIpIHsKLSAgICAgICAgbV9yZXF1ZXN0RW50aXR5Qm9keSA9
IEZvcm1EYXRhOjpjcmVhdGVNdWx0aVBhcnQoYm9keSwgZG9jdW1lbnQoKSk7Ci0gICAgICAgIG1f
cmVxdWVzdEVudGl0eUJvZHktPmdlbmVyYXRlRmlsZXMoZG9jdW1lbnQoKSk7CisgICAgICAgIG1f
cmVxdWVzdEVudGl0eUJvZHkgPSBGb3JtRGF0YTo6Y3JlYXRlTXVsdGlQYXJ0KGJvZHkpOwogICAg
ICAgICBpZiAoIW1fcmVxdWVzdEhlYWRlcnMuY29udGFpbnMoSFRUUEhlYWRlck5hbWU6OkNvbnRl
bnRUeXBlKSkKICAgICAgICAgICAgIG1fcmVxdWVzdEhlYWRlcnMuc2V0KEhUVFBIZWFkZXJOYW1l
OjpDb250ZW50VHlwZSwgbWFrZVN0cmluZygibXVsdGlwYXJ0L2Zvcm0tZGF0YTsgYm91bmRhcnk9
IiwgbV9yZXF1ZXN0RW50aXR5Qm9keS0+Ym91bmRhcnkoKS5kYXRhKCkpKTsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQ
YXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291
cmNlTG9hZFBhcmFtZXRlcnMuY3BwCmluZGV4IDBlNDQ1OTRiODllNjY2NDg5YWZmMTI4ZjhjNTFj
MGM2YzFhY2UyNDkuLmJmOGEwYTY4ZDczYmEyNGZkZjNjMTUwOGVjN2RiMGQxNWRlNDE3YmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZFBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIHZvaWQgTmV0d29y
a1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNv
bnN0CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwLCBjb3VudCA9IGVsZW1lbnRzLnNpemUoKTsg
aSA8IGNvdW50OyArK2kpIHsKICAgICAgICAgICAgIGNvbnN0IEZvcm1EYXRhRWxlbWVudCYgZWxl
bWVudCA9IGVsZW1lbnRzW2ldOwogICAgICAgICAgICAgaWYgKGF1dG8qIGZpbGVEYXRhID0gV1RG
OjpnZXRfaWY8Rm9ybURhdGFFbGVtZW50OjpFbmNvZGVkRmlsZURhdGE+KGVsZW1lbnQuZGF0YSkp
IHsKLSAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHBhdGggPSBmaWxlRGF0YS0+c2hvdWxk
R2VuZXJhdGVGaWxlID8gZmlsZURhdGEtPmdlbmVyYXRlZEZpbGVuYW1lIDogZmlsZURhdGEtPmZp
bGVuYW1lOworICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgcGF0aCA9IGZpbGVEYXRhLT5m
aWxlbmFtZTsKICAgICAgICAgICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUo
cGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZE9ubHksIHJlcXVlc3RCb2R5U2FuZGJv
eEV4dGVuc2lvbnNbZXh0ZW5zaW9uSW5kZXgrK10pOwogICAgICAgICAgICAgfQogICAgICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Gb3JtRGF0YVJlZmVyZW5j
ZS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRm9ybURhdGFSZWZlcmVuY2UuaAppbmRl
eCA4YTM5NWE2NTcxM2ExOWEzMmUzM2RmOGQ2Yzg5YzkzYTY4NGMwNjM1Li5iYzQ5N2M2MjM1ZmQx
ZTUyOGIyM2FiNTQwMjMwZTA0MGFkNjEyZGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9Gb3JtRGF0YVJlZmVyZW5jZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL0Zvcm1EYXRhUmVmZXJlbmNlLmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogICAg
ICAgICBzaXplX3QgZXh0ZW5zaW9uSW5kZXggPSAwOwogICAgICAgICBmb3IgKGF1dG8mIGVsZW1l
bnQgOiBlbGVtZW50cykgewogICAgICAgICAgICAgaWYgKGF1dG8qIGZpbGVEYXRhID0gV1RGOjpn
ZXRfaWY8V2ViQ29yZTo6Rm9ybURhdGFFbGVtZW50OjpFbmNvZGVkRmlsZURhdGE+KGVsZW1lbnQu
ZGF0YSkpIHsKLSAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHBhdGggPSBmaWxlRGF0YS0+
c2hvdWxkR2VuZXJhdGVGaWxlID8gZmlsZURhdGEtPmdlbmVyYXRlZEZpbGVuYW1lIDogZmlsZURh
dGEtPmZpbGVuYW1lOworICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgcGF0aCA9IGZpbGVE
YXRhLT5maWxlbmFtZTsKICAgICAgICAgICAgICAgICBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246
OmNyZWF0ZUhhbmRsZShwYXRoLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRP
bmx5LCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlc1tleHRlbnNpb25JbmRleCsrXSk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUmVzb3VyY2VzL1Nh
bmRib3hQcm9maWxlcy9pb3MvY29tLmFwcGxlLldlYktpdC5OZXR3b3JraW5nLnNiIGIvU291cmNl
L1dlYktpdC9SZXNvdXJjZXMvU2FuZGJveFByb2ZpbGVzL2lvcy9jb20uYXBwbGUuV2ViS2l0Lk5l
dHdvcmtpbmcuc2IKaW5kZXggODA3MTZlYzY0MzQ4YmZiNDQ4ZWRlNjc2MmQ0YzBkZDljMTljZGY3
Zi4uYjZkMWIxODVhNGIzOWMyNzRjYzYxYjc0ODdmOGJmY2QyMThkNDNjOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9SZXNvdXJjZXMvU2FuZGJveFByb2ZpbGVzL2lvcy9jb20uYXBwbGUuV2Vi
S2l0Lk5ldHdvcmtpbmcuc2IKKysrIGIvU291cmNlL1dlYktpdC9SZXNvdXJjZXMvU2FuZGJveFBy
b2ZpbGVzL2lvcy9jb20uYXBwbGUuV2ViS2l0Lk5ldHdvcmtpbmcuc2IKQEAgLTgzLDYgKzgzLDcg
QEAKICAgICAoZ2xvYmFsLW5hbWUgImNvbS5hcHBsZS5wYXNzZC5saWJyYXJ5IikpCiAKIChhbGxv
dyBtYWNoLWxvb2t1cAorICAgIChnbG9iYWwtbmFtZSAiY29tLmFwcGxlLkZpbGVDb29yZGluYXRp
b24iKQogICAgIChnbG9iYWwtbmFtZSAiY29tLmFwcGxlLmRtZC5wb2xpY3kiKQogICAgIChnbG9i
YWwtbmFtZSAiY29tLmFwcGxlLnNpcmkuY29udGV4dC5zZXJ2aWNlIikKICAgICAoZ2xvYmFsLW5h
bWUgImNvbS5hcHBsZS5jdGNhdGVnb3JpZXMuc2VydmljZSIpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZVBh
Z2VVSUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9BUElJbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5oCmluZGV4IGVhY2EzZTcxNjNmMmE4Yzc5
MjVmNzkzYzQ4ZTBkM2Y5NzdiN2E5NzkuLjk1ZjQzODJiNTJjMWE1ZjcwODQ4ZjkzYzM4OTViNjk0
M2VkYWU3NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlUGFnZVVJ
Q2xpZW50LmgKQEAgLTU4LDkgKzU4LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBtb3Vz
ZURpZE1vdmVPdmVyRWxlbWVudChXZWJLaXQ6OldlYlBhZ2UqLCBjb25zdCBXZWJDb3JlOjpIaXRU
ZXN0UmVzdWx0JiwgT3B0aW9uU2V0PFdlYktpdDo6V2ViRXZlbnQ6Ok1vZGlmaWVyPiwgUmVmUHRy
PEFQSTo6T2JqZWN0PiYgdXNlckRhdGEpIHsgVU5VU0VEX1BBUkFNKHVzZXJEYXRhKTsgfQogICAg
IHZpcnR1YWwgdm9pZCBwYWdlRGlkU2Nyb2xsKFdlYktpdDo6V2ViUGFnZSopIHsgfQogCi0gICAg
dmlydHVhbCBXVEY6OlN0cmluZyBzaG91bGRHZW5lcmF0ZUZpbGVGb3JVcGxvYWQoV2ViS2l0OjpX
ZWJQYWdlKiwgY29uc3QgV1RGOjpTdHJpbmcmIG9yaWdpbmFsRmlsZVBhdGgpIHsgVU5VU0VEX1BB
UkFNKG9yaWdpbmFsRmlsZVBhdGgpOyByZXR1cm4gV1RGOjpTdHJpbmcoKTsgfQotICAgIHZpcnR1
YWwgV1RGOjpTdHJpbmcgZ2VuZXJhdGVGaWxlRm9yVXBsb2FkKFdlYktpdDo6V2ViUGFnZSosIGNv
bnN0IFdURjo6U3RyaW5nJiBvcmlnaW5hbEZpbGVQYXRoKSB7IFVOVVNFRF9QQVJBTShvcmlnaW5h
bEZpbGVQYXRoKTsgcmV0dXJuIGVtcHR5U3RyaW5nKCk7IH0KLQogICAgIGVudW0gY2xhc3MgVUlF
bGVtZW50VmlzaWJpbGl0eSB7CiAgICAgICAgIFVua25vd24sCiAgICAgICAgIFZpc2libGUsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVQYWdlVUlDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50LmNwcAppbmRleCA1ODYzM2Q5NzYx
ODJmNzQ0NjI3YWUwNTY3ZWVjZmEyMzQxNDM5ZmI2Li4zZmZiODAzNzVmMjQ3MzA3NGYyNzczNjk1
MGExZTI4ZTVlYTNkMTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVu
dC5jcHAKQEAgLTkzLDIyICs5Myw2IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQ6
OnBhZ2VEaWRTY3JvbGwoV2ViUGFnZSogcGFnZSkKICAgICBtX2NsaWVudC5wYWdlRGlkU2Nyb2xs
KHRvQVBJKHBhZ2UpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogfQogCi1TdHJpbmcgSW5q
ZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQ6OnNob3VsZEdlbmVyYXRlRmlsZUZvclVwbG9hZChXZWJQ
YWdlKiBwYWdlLCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsRmlsZVBhdGgpCi17Ci0gICAgaWYgKCFt
X2NsaWVudC5zaG91bGRHZW5lcmF0ZUZpbGVGb3JVcGxvYWQpCi0gICAgICAgIHJldHVybiBTdHJp
bmcoKTsKLSAgICBSZWZQdHI8QVBJOjpTdHJpbmc+IGdlbmVyYXRlZEZpbGVQYXRoID0gYWRvcHRS
ZWYodG9JbXBsKG1fY2xpZW50LnNob3VsZEdlbmVyYXRlRmlsZUZvclVwbG9hZCh0b0FQSShwYWdl
KSwgdG9BUEkob3JpZ2luYWxGaWxlUGF0aC5pbXBsKCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudElu
Zm8pKSk7Ci0gICAgcmV0dXJuIGdlbmVyYXRlZEZpbGVQYXRoID8gZ2VuZXJhdGVkRmlsZVBhdGgt
PnN0cmluZygpIDogU3RyaW5nKCk7Ci19Ci0KLVN0cmluZyBJbmplY3RlZEJ1bmRsZVBhZ2VVSUNs
aWVudDo6Z2VuZXJhdGVGaWxlRm9yVXBsb2FkKFdlYlBhZ2UqIHBhZ2UsIGNvbnN0IFN0cmluZyYg
b3JpZ2luYWxGaWxlUGF0aCkKLXsKLSAgICBpZiAoIW1fY2xpZW50LmdlbmVyYXRlRmlsZUZvclVw
bG9hZCkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIFJlZlB0cjxBUEk6OlN0cmluZz4g
Z2VuZXJhdGVkRmlsZVBhdGggPSBhZG9wdFJlZih0b0ltcGwobV9jbGllbnQuZ2VuZXJhdGVGaWxl
Rm9yVXBsb2FkKHRvQVBJKHBhZ2UpLCB0b0FQSShvcmlnaW5hbEZpbGVQYXRoLmltcGwoKSksIG1f
Y2xpZW50LmJhc2UuY2xpZW50SW5mbykpKTsKLSAgICByZXR1cm4gZ2VuZXJhdGVkRmlsZVBhdGgg
PyBnZW5lcmF0ZWRGaWxlUGF0aC0+c3RyaW5nKCkgOiBTdHJpbmcoKTsKLX0KLQogc3RhdGljIEFQ
STo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VVSUNsaWVudDo6VUlFbGVtZW50VmlzaWJpbGl0eSB0b1VJ
RWxlbWVudFZpc2liaWxpdHkoV0tCdW5kbGVQYWdlVUlFbGVtZW50VmlzaWJpbGl0eSB2aXNpYmls
aXR5KQogewogICAgIHN3aXRjaCAodmlzaWJpbGl0eSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVQYWdlVUlDbGllbnQuaAppbmRleCA1OWYxYjFjY2FjMTYwYjcxNjI1MzgyZGMyZGY1ZDIyZGQw
ZDA0ZDYxLi42Mjc4NDRiOWE0YTZiZDU4M2NiNTNmZTc0NTZhMzc0ZGRkMDY3ZTg1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVQYWdlVUlDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQuaApAQCAtNTQsOSArNTQsNiBAQCBwdWJs
aWM6CiAgICAgdm9pZCBtb3VzZURpZE1vdmVPdmVyRWxlbWVudChXZWJQYWdlKiwgY29uc3QgV2Vi
Q29yZTo6SGl0VGVzdFJlc3VsdCYsIE9wdGlvblNldDxXZWJFdmVudDo6TW9kaWZpZXI+LCBSZWZQ
dHI8QVBJOjpPYmplY3Q+JiB1c2VyRGF0YSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBwYWdlRGlkU2Ny
b2xsKFdlYlBhZ2UqKSBvdmVycmlkZTsKIAotICAgIFN0cmluZyBzaG91bGRHZW5lcmF0ZUZpbGVG
b3JVcGxvYWQoV2ViUGFnZSosIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxGaWxlUGF0aCkgb3ZlcnJp
ZGU7Ci0gICAgU3RyaW5nIGdlbmVyYXRlRmlsZUZvclVwbG9hZChXZWJQYWdlKiwgY29uc3QgU3Ry
aW5nJiBvcmlnaW5hbEZpbGVQYXRoKSBvdmVycmlkZTsKLSAgICAKICAgICBVSUVsZW1lbnRWaXNp
YmlsaXR5IHN0YXR1c0JhcklzVmlzaWJsZShXZWJQYWdlKikgb3ZlcnJpZGU7CiAgICAgVUlFbGVt
ZW50VmlzaWJpbGl0eSBtZW51QmFySXNWaXNpYmxlKFdlYlBhZ2UqKSBvdmVycmlkZTsKICAgICBV
SUVsZW1lbnRWaXNpYmlsaXR5IHRvb2xiYXJzQXJlVmlzaWJsZShXZWJQYWdlKikgb3ZlcnJpZGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IDFhMDI0ZjcxMDE1OTY3NzVlZDg0MTliYTU2MTAy
M2ZkODBiNjA0MDMuLjNjODcyZjVhZGYzOWJlYWNkM2E3MDY2N2IyNjg5ZDM4YzliMTExMmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuY3BwCkBAIC03ODksMTcgKzc4OSw2IEBAIHZvaWQgV2ViQ2hyb21l
Q2xpZW50OjpyZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFNlY3VyaXR5T3JpZ2lu
JiBvcmlnaW4sCiAgICAgY2FjaGVTdG9yYWdlLnN0b3JlVXBkYXRlZFF1b3RhRm9yT3JpZ2luKCZv
cmlnaW4sIG5ld1F1b3RhKTsKIH0KIAotYm9vbCBXZWJDaHJvbWVDbGllbnQ6OnNob3VsZFJlcGxh
Y2VXaXRoR2VuZXJhdGVkRmlsZUZvclVwbG9hZChjb25zdCBTdHJpbmcmIHBhdGgsIFN0cmluZyYg
Z2VuZXJhdGVkRmlsZW5hbWUpCi17Ci0gICAgZ2VuZXJhdGVkRmlsZW5hbWUgPSBtX3BhZ2UuaW5q
ZWN0ZWRCdW5kbGVVSUNsaWVudCgpLnNob3VsZEdlbmVyYXRlRmlsZUZvclVwbG9hZCgmbV9wYWdl
LCBwYXRoKTsKLSAgICByZXR1cm4gIWdlbmVyYXRlZEZpbGVuYW1lLmlzTnVsbCgpOwotfQotCi1T
dHJpbmcgV2ViQ2hyb21lQ2xpZW50OjpnZW5lcmF0ZVJlcGxhY2VtZW50RmlsZShjb25zdCBTdHJp
bmcmIHBhdGgpCi17Ci0gICAgcmV0dXJuIG1fcGFnZS5pbmplY3RlZEJ1bmRsZVVJQ2xpZW50KCku
Z2VuZXJhdGVGaWxlRm9yVXBsb2FkKCZtX3BhZ2UsIHBhdGgpOwotfQotCiAjaWYgRU5BQkxFKElO
UFVUX1RZUEVfQ09MT1IpCiAKIHN0ZDo6dW5pcXVlX3B0cjxDb2xvckNob29zZXI+IFdlYkNocm9t
ZUNsaWVudDo6Y3JlYXRlQ29sb3JDaG9vc2VyKENvbG9yQ2hvb3NlckNsaWVudCYgY2xpZW50LCBj
b25zdCBDb2xvciYgaW5pdGlhbENvbG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCmluZGV4IDg2NjgwMzEy
NzMyMDMyZGIxNDhmOWJjYjU5OTc1MjE0NmEzYWRkMTIuLjIzZTk1ZGM4Y2JhNTkyMDEzYWVjOTQy
ZmQ2ZjVhM2YyMTRkMDA1YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTE0Miw5ICsxNDIsNiBA
QCBwcml2YXRlOgogCiAgICAgdm9pZCByZWFjaGVkTWF4QXBwQ2FjaGVTaXplKGludDY0X3Qgc3Bh
Y2VOZWVkZWQpIGZpbmFsOwogICAgIHZvaWQgcmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5R
dW90YShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYsIGludDY0X3Qgc3BhY2VOZWVkZWQpIGZpbmFs
OwotCi0gICAgYm9vbCBzaG91bGRSZXBsYWNlV2l0aEdlbmVyYXRlZEZpbGVGb3JVcGxvYWQoY29u
c3QgU3RyaW5nJiBwYXRoLCBTdHJpbmcmIGdlbmVyYXRlZEZpbGVuYW1lKSBmaW5hbDsKLSAgICBT
dHJpbmcgZ2VuZXJhdGVSZXBsYWNlbWVudEZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKSBmaW5hbDsK
ICAgICAKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
V2ViQ29yZTo6Q29sb3JDaG9vc2VyPiBjcmVhdGVDb2xvckNob29zZXIoV2ViQ29yZTo6Q29sb3JD
aG9vc2VyQ2xpZW50JiwgY29uc3QgV2ViQ29yZTo6Q29sb3ImKSBmaW5hbDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb20uYXBwbGUuV2ViUHJvY2Vzcy5zYi5pbiBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb20uYXBwbGUuV2ViUHJvY2Vzcy5zYi5pbgppbmRleCBk
ZmQ0YmQ5M2QwYzM4OTViMjEyM2U3ZDRjYmYzMWJhZjI3MTU1NjM4Li4zOTRkNWEyNDExMmFmZDYz
NTYwZmZlZTdjZTBjZDNhMmY3M2E0ZWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvY29tLmFwcGxlLldlYlByb2Nlc3Muc2IuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL2NvbS5hcHBsZS5XZWJQcm9jZXNzLnNiLmluCkBAIC01ODcsOSArNTg3LDYgQEAKIChh
bGxvdyBtYWNoLWxvb2t1cAogICAgICAgIChnbG9iYWwtbmFtZSAiY29tLmFwcGxlLndlYmluc3Bl
Y3RvciIpKQogCi0oYWxsb3cgbWFjaC1sb29rdXAKLSAgICAoZ2xvYmFsLW5hbWUgImNvbS5hcHBs
ZS5GaWxlQ29vcmRpbmF0aW9uIikpCi0KIDs7IFZhcmlvdXMgc2VydmljZXMgcmVxdWlyZWQgYnkg
QXBwS2l0IGFuZCBvdGhlciBmcmFtZXdvcmtzCiAoYWxsb3cgbWFjaC1sb29rdXAKICNpZiBfX01B
Q19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTAxNDAwCkBAIC05NzgsMTggKzk3NSw5IEBA
CiAgICAgICAgIChzeXNjYWxsLW51bWJlciBTWVNfc3RhdDY0X2V4dGVuZGVkKSA7OyA8cmRhcjov
L3Byb2JsZW0vNTA0NzMzMzA+CiAgICAgICAgIChzeXNjYWxsLW51bWJlciBTWVNfbHN0YXRfZXh0
ZW5kZWQpCiAgICAgICAgIChzeXNjYWxsLW51bWJlciBTWVNfbHN0YXQ2NF9leHRlbmRlZCkKLSAg
ICAgICAgKHN5c2NhbGwtbnVtYmVyIFNZU19pb3BvbGljeXN5cykKLSAgICAgICAgKHN5c2NhbGwt
bnVtYmVyIFNZU193b3JrcV9vcGVuKQotICAgICAgICAoc3lzY2FsbC1udW1iZXIgU1lTX2dldGdy
b3VwcykKICAgICAgICAgKHN5c2NhbGwtbnVtYmVyIFNZU19mZ2V0YXR0cmxpc3QpIDs7IDxyZGFy
Oi8vcHJvYmxlbS81MDkzMTExMD4KICAgICAgICAgKHN5c2NhbGwtbnVtYmVyIFNZU19rcXVldWUp
IDs7IDxyZGFyOi8vcHJvYmxlbS80OTYwOTIwMT4KICAgICAgICAgKHN5c2NhbGwtbnVtYmVyIFNZ
U19rcXVldWVfd29ya2xvb3BfY3RsKSA7OyA8cmRhcjovL3Byb2JsZW0vNTA5OTk0OTk+Ci0gICAg
ICAgIChzeXNjYWxsLW51bWJlciBTWVNfb3Blbl9kcHJvdGVjdGVkX25wKQotICAgICAgICAoc3lz
Y2FsbC1udW1iZXIgU1lTX2ZsaXN0eGF0dHIpCi0gICAgICAgIChzeXNjYWxsLW51bWJlciBTWVNf
ZnNldGF0dHJsaXN0KQotICAgICAgICAoc3lzY2FsbC1udW1iZXIgU1lTX2ZjaG93bikKLSAgICAg
ICAgKHN5c2NhbGwtbnVtYmVyIFNZU19mY2hmbGFncykKLSAgICAgICAgKHN5c2NhbGwtbnVtYmVy
IFNZU19mc3RhdDY0X2V4dGVuZGVkKQogICAgICkKICkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRGVmYXVsdERlbGVnYXRlcy9XZWJEZWZhdWx0VUlEZWxlZ2F0ZS5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RlZmF1bHREZWxlZ2F0ZXMvV2ViRGVmYXVsdFVJRGVs
ZWdhdGUubW0KaW5kZXggMzU4YWE2OWZhNGMwZDU5NjY4OWM4NjExYTQxYzJlNzljOWFkNWYzZC4u
NTUyMDFhNjVkNzE0ZTdkYTAxZGI5MjY3MzcxMDI3MWRiOWM1Zjc1YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRGVmYXVsdERlbGVnYXRlcy9XZWJEZWZhdWx0VUlEZWxlZ2F0
ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9EZWZhdWx0RGVsZWdhdGVzL1dlYkRl
ZmF1bHRVSURlbGVnYXRlLm1tCkBAIC0yNTYsMTYgKzI1Niw2IEBAIHN0YXRpYyBXZWJEZWZhdWx0
VUlEZWxlZ2F0ZSAqc2hhcmVkRGVsZWdhdGUgPSBuaWw7CiB7CiB9CiAKLS0gKEJPT0wpd2ViVmll
dzooV2ViVmlldyAqKXNlbmRlciBzaG91bGRSZXBsYWNlVXBsb2FkRmlsZTooTlNTdHJpbmcgKilw
YXRoIHVzaW5nR2VuZXJhdGVkRmlsZW5hbWU6KE5TU3RyaW5nICoqKWZpbGVuYW1lCi17Ci0gICAg
cmV0dXJuIE5POwotfQotCi0tIChOU1N0cmluZyAqKXdlYlZpZXc6KFdlYlZpZXcgKilzZW5kZXIg
Z2VuZXJhdGVSZXBsYWNlbWVudEZpbGU6KE5TU3RyaW5nICopcGF0aAotewotICAgIHJldHVybiBu
aWw7Ci19Ci0KICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogLSAodm9pZCl3ZWJWaWV3U3VwcG9y
dGVkT3JpZW50YXRpb25zVXBkYXRlZDooV2ViVmlldyAqKXNlbmRlcgogewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
aAppbmRleCBiMzQxMjQ5MjQwMTJmZmJhOWUwNjg1YzBiZTk3YjEyNTU3NjQ0MzZiLi5mZGM0Y2M3
ODE5NmZjYmNmMzI2MDJkMThlMjg5ZjA3YTExNTRjYzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApAQCAt
MTU4LDkgKzE1OCw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBlbmFibGVTdWRkZW5UZXJtaW5hdGlv
bigpIGZpbmFsOwogICAgIHZvaWQgZGlzYWJsZVN1ZGRlblRlcm1pbmF0aW9uKCkgZmluYWw7CiAK
LSAgICBib29sIHNob3VsZFJlcGxhY2VXaXRoR2VuZXJhdGVkRmlsZUZvclVwbG9hZChjb25zdCBT
dHJpbmcmIHBhdGgsIFN0cmluZyAmZ2VuZXJhdGVkRmlsZW5hbWUpIGZpbmFsOwotICAgIFN0cmlu
ZyBnZW5lcmF0ZVJlcGxhY2VtZW50RmlsZShjb25zdCBTdHJpbmcmIHBhdGgpIGZpbmFsOwotCiAj
aWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdm9pZCBlbGVtZW50RGlkRm9jdXMoV2ViQ29y
ZTo6RWxlbWVudCYpIG92ZXJyaWRlOwogICAgIHZvaWQgZWxlbWVudERpZEJsdXIoV2ViQ29yZTo6
RWxlbWVudCYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCmluZGV4IDNmOTZiNGFiN2IzOGUz
YTc2MjBjMmEwMDM5Yjg5NGFlOTA3Y2U3NTkuLmUxYTg5ODljNDhiZTI1ZDU1MjRiYTM1ZWNjZGFj
OWFkYTQ0YjVmNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0KQEAgLTg1NSwyMCArODU1LDYgQEAgdm9p
ZCBXZWJDaHJvbWVDbGllbnQ6OmRpc2FibGVTdWRkZW5UZXJtaW5hdGlvbigpCiAjZW5kaWYKIH0K
IAotYm9vbCBXZWJDaHJvbWVDbGllbnQ6OnNob3VsZFJlcGxhY2VXaXRoR2VuZXJhdGVkRmlsZUZv
clVwbG9hZChjb25zdCBTdHJpbmcmIHBhdGgsIFN0cmluZyYgZ2VuZXJhdGVkRmlsZW5hbWUpCi17
Ci0gICAgTlNTdHJpbmcqIGZpbGVuYW1lOwotICAgIGlmICghW1ttX3dlYlZpZXcgX1VJRGVsZWdh
dGVGb3J3YXJkZXJdIHdlYlZpZXc6bV93ZWJWaWV3IHNob3VsZFJlcGxhY2VVcGxvYWRGaWxlOnBh
dGggdXNpbmdHZW5lcmF0ZWRGaWxlbmFtZTomZmlsZW5hbWVdKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgZ2VuZXJhdGVkRmlsZW5hbWUgPSBmaWxlbmFtZTsKLSAgICByZXR1cm4gdHJ1ZTsK
LX0KLQotU3RyaW5nIFdlYkNocm9tZUNsaWVudDo6Z2VuZXJhdGVSZXBsYWNlbWVudEZpbGUoY29u
c3QgU3RyaW5nJiBwYXRoKQotewotICAgIHJldHVybiBbW21fd2ViVmlldyBfVUlEZWxlZ2F0ZUZv
cndhcmRlcl0gd2ViVmlldzptX3dlYlZpZXcgZ2VuZXJhdGVSZXBsYWNlbWVudEZpbGU6cGF0aF07
Ci19Ci0KICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIHZvaWQgV2ViQ2hyb21lQ2xpZW50Ojpl
bGVtZW50RGlkRm9jdXMoV2ViQ29yZTo6RWxlbWVudCYgZWxlbWVudCkKIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVUlEZWxlZ2F0ZVByaXZhdGUuaCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVUlEZWxlZ2F0ZVByaXZhdGUuaApp
bmRleCAxYWUyYmMyNDFmMGZmMmFlMzI3YjVmZDkyYzljYWYyMDA1MjNkOWFmLi5hMGU3MTYxYjJl
NjYxNDY5YjMxZmQ3MGE3OTExZDRjODY5MjU1ZGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYlVJRGVsZWdhdGVQcml2YXRlLmgKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJVSURlbGVnYXRlUHJpdmF0ZS5oCkBAIC0yNDgsOSAr
MjQ4LDYgQEAgZXh0ZXJuIE5TU3RyaW5nICpXZWJDb25zb2xlTWVzc2FnZUVycm9yTWVzc2FnZUxl
dmVsOwogCiAtIChXZWJWaWV3ICopd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBjcmVhdGVXZWJW
aWV3V2l0aFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3Qgd2luZG93RmVhdHVyZXM6KE5T
RGljdGlvbmFyeSAqKWZlYXR1cmVzOwogCi0tIChCT09MKXdlYlZpZXc6KFdlYlZpZXcgKilzZW5k
ZXIgc2hvdWxkUmVwbGFjZVVwbG9hZEZpbGU6KE5TU3RyaW5nICopcGF0aCB1c2luZ0dlbmVyYXRl
ZEZpbGVuYW1lOihOU1N0cmluZyAqKilmaWxlbmFtZTsKLS0gKE5TU3RyaW5nICopd2ViVmlldzoo
V2ViVmlldyAqKXNlbmRlciBnZW5lcmF0ZVJlcGxhY2VtZW50RmlsZTooTlNTdHJpbmcgKilwYXRo
OwotCiAvKiEKICAgICBAbWV0aG9kIHdlYlZpZXc6ZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25S
ZXF1ZXN0RnJvbU9yaWdpbjpmcmFtZTpsaXN0ZW5lcjoKICAgICBAcGFyYW0gd2ViVmlldyBUaGUg
V2ViVmlldyBzZW5kaW5nIHRoZSBkZWxlZ2F0ZSBtZXRob2QuCmRpZmYgLS1naXQgYS9Ub29scy9D
aGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggM2UwNjg3Y2QxOTAwNTI0N2I4M2NmOWNm
NWU3ZDE2MWE2NmYwYmM2Zi4uNDJhOWQyODc2YTA1ZGNhY2FiMTZhMWQ3MDNhODRlYjYxZGE4NjEy
YiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDI0IEBACisyMDE5LTA3LTMxICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2Vu
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW92ZSBGb3JtRGF0YSB6aXAgZmlsZSBnZW5lcmF0aW9u
IHRvIE5ldHdvcmtQcm9jZXNzIGFuZCBlbmFibGUgaXQgZm9yIGFsbCBXZWJLaXQgY2xpZW50cyBm
b3IgdXBsb2FkaW5nIGRpcmVjdG9yaWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDAxMDIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzUzMjc1MTE0
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBh
biBBUEkgdGVzdCB0aGF0IGlzIE1hYy1vbmx5IHJpZ2h0IG5vdyBiZWNhdXNlIHJ1bk9wZW5QYW5l
bFdpdGhQYXJhbWV0ZXJzIGlzIG9ubHkgc3VwcG9ydGVkIG9uIE1hYyBmb3Igc29tZSByZWFzb24K
KyAgICAgICAgYW5kIGJlY2F1c2UgY2xpY2tpbmcgb24gYSBUZXN0V0tXZWJWaWV3IG9ubHkgd29y
a3Mgb24gTWFjLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9VcGxvYWREaXJlY3RvcnkubW06IEFkZGVkLgorICAgICAgICAoLVtVcGxvYWREZWxl
Z2F0ZSBpbml0V2l0aERpcmVjdG9yeTpdKToKKyAgICAgICAgKC1bVXBsb2FkRGVsZWdhdGUgd2Vi
VmlldzpydW5PcGVuUGFuZWxXaXRoUGFyYW1ldGVyczppbml0aWF0ZWRCeUZyYW1lOmNvbXBsZXRp
b25IYW5kbGVyOl0pOgorICAgICAgICAoLVtVcGxvYWREZWxlZ2F0ZSBzZW50RGlyZWN0b3J5XSk6
CisgICAgICAgIChURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dl
YlZpZXcuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW06
CisgICAgICAgICgtW1Rlc3RXS1dlYlZpZXcgc2VuZENsaWNrQXRQb2ludDpdKToKKwogMjAxOS0w
Ny0yOSAgWmhpZmVpIEZhbmcgIDx6aGlmZWlfZmFuZ0BhcHBsZS5jb20+CiAKICAgICAgICAgW0Nh
bnZhcyBUaW1lbGluZV0gQ29tcGFjdCBjYW52YXMgdGltZWxpbmUKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggMjU2YjRiNjk4NDkxODQ0ZDY0YzdhNzQ3NTk2MzE0NDA0YzZjMGFhZi4uNjk4OWI4
ZTUxNzM5NDBiNTNhNDE3YjRmM2UzYzFkZTI4NzBjNmEzNSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTMyOCw2ICszMjgsNyBAQAogCQk1QzIzREYwQjIyNDYwMTU4MDBGNDU0QjYgLyogQ2hh
bGxlbmdlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NUMyM0RGMEEyMjQ1QzlENzAwRjQ1NEI2IC8qIENoYWxsZW5nZS5tbSAqLzsgfTsKIAkJNUMyOTM2
OTMxRDVCRjcwRDAwREVBQjFFIC8qIENvb2tpZUFjY2VwdFBvbGljeS5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMjkzNjkxMUQ1QkY2M0UwMERFQUIx
RSAvKiBDb29raWVBY2NlcHRQb2xpY3kubW0gKi87IH07CiAJCTVDMjkzNjk2MUQ1QzAwRUQwMERF
QUIxRSAvKiBDb29raWVNZXNzYWdlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMyOTM2OTQxRDVCRkQxOTAwREVBQjFFIC8qIENvb2tp
ZU1lc3NhZ2UuaHRtbCAqLzsgfTsKKwkJNUMzQTc3QUEyMkYyMEJFQTAwMzgyN0ZGIC8qIFVwbG9h
ZERpcmVjdG9yeS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDVDM0E3N0E5MjJGMjBCOEEwMDM4MjdGRiAvKiBVcGxvYWREaXJlY3RvcnkubW0gKi87IH07
CiAJCTVDM0IxRDI2MjJBNzRGNjcwMEJDRjREMCAvKiBDb250ZXh0TWVudXMubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzNCMUQyNTIyQTc0RUE0MDBC
Q0Y0RDAgLyogQ29udGV4dE1lbnVzLm1tICovOyB9OwogCQk1QzQyNTk0NjIyNjZBNjhBMDAzOUFB
N0EgLyogQmFzaWNQcm9wb3NlZENyZWRlbnRpYWxQbHVnSW4ubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzQyNTk0NDIyNjY5RTlCMDAzOUFBN0EgLyog
QmFzaWNQcm9wb3NlZENyZWRlbnRpYWxQbHVnSW4ubW0gKi87IH07CiAJCTVDNEE4NDk1MUY3RUVG
RkMwMEFDRkM1NCAvKiBDb25maWd1cmF0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNUM0QTg0OTQxRjdFRUZENDAwQUNGQzU0IC8qIENvbmZpZ3Vy
YXRpb24ubW0gKi87IH07CkBAIC0xMDc2LDcgKzEwNzcsNiBAQAogCQkJZHN0UGF0aCA9IFRlc3RX
ZWJLaXRBUEkucmVzb3VyY2VzOwogCQkJZHN0U3ViZm9sZGVyU3BlYyA9IDc7CiAJCQlmaWxlcyA9
ICgKLQkJCQk5QkFFMTc3QjIyRTJCQkZCMDBERjMwOTggLyogY29jb2Etd3JpdGVyLW1hcmt1cC13
aXRoLXN5c3RlbS1mb250cy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTU1QTgxN0ZG
MjE4MTAyMUEwMDA0QTM5QSAvKiAxMDB4MTAwLXJlZC50Z2EgaW4gQ29weSBSZXNvdXJjZXMgKi8s
CiAJCQkJMUE5RTUyQzkxM0U2NUVGNDAwNjkxN0Y1IC8qIDE4LWNoYXJhY3RlcnMuaHRtbCBpbiBD
b3B5IFJlc291cmNlcyAqLywKIAkJCQk1NUE4MTgwMDIxODEwMjIxMDAwNEEzOUEgLyogNDAweDQw
MC1ncmVlbi5wbmcgaW4gQ29weSBSZXNvdXJjZXMgKi8sCkBAIC0xMTMxLDYgKzExMzEsNyBAQAog
CQkJCTgzOUFBMzVGMjFBMjZCMDMwMDk4MERENiAvKiBjbGllbnQtc2lkZS1yZWRpcmVjdC5odG1s
IGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTFBNTBBQTIwMUEyQTUxRkMwMEY0QzM0NSAvKiBj
bG9zZS1mcm9tLXdpdGhpbi1jcmVhdGUtcGFnZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAog
CQkJCTlCMjcwRkVFMUREQzJDMEIwMDJENTNGMyAvKiBjbG9zZWQtc2hhZG93LXRyZWUtdGVzdC5o
dG1sIGluIENvcHkgUmVzb3VyY2VzICovLAorCQkJCTlCQUUxNzdCMjJFMkJCRkIwMERGMzA5OCAv
KiBjb2NvYS13cml0ZXItbWFya3VwLXdpdGgtc3lzdGVtLWZvbnRzLmh0bWwgaW4gQ29weSBSZXNv
dXJjZXMgKi8sCiAJCQkJRTUwMzZGNzgyMTFCQzI1NDAwQkZEQkUyIC8qIGNvbG9yLWRyb3AuaHRt
bCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlGNEI4MjVEODFFRjREQkZCMDA2RTQxN0YgLyog
Y29tcHJlc3NlZC1maWxlcy56aXAgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJNUM5RTU2ODcx
REY5MTRBRTAwQzlFRTMzIC8qIGNvbnRlbnRCbG9ja2VyQ2hlY2suaHRtbCBpbiBDb3B5IFJlc291
cmNlcyAqLywKQEAgLTE4MDIsNiArMTgwMyw3IEBACiAJCTVDMjNERjBBMjI0NUM5RDcwMEY0NTRC
NiAvKiBDaGFsbGVuZ2UubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBDaGFsbGVuZ2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDMjkzNjkxMUQ1
QkY2M0UwMERFQUIxRSAvKiBDb29raWVBY2NlcHRQb2xpY3kubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDb29raWVBY2NlcHRQb2xpY3kubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTVDMjkzNjk0MUQ1QkZEMTkwMERFQUIxRSAvKiBDb29raWVNZXNz
YWdlLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBDb29raWVNZXNzYWdlLmh0bWw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDM0E3N0E5MjJGMjBCOEEwMDM4MjdGRiAv
KiBVcGxvYWREaXJlY3RvcnkubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBVcGxvYWREaXJlY3RvcnkubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVD
M0IxRDI1MjJBNzRFQTQwMEJDRjREMCAvKiBDb250ZXh0TWVudXMubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDb250ZXh0TWVudXMubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTVDNDI1OTQ0MjI2NjlFOUIwMDM5QUE3QSAvKiBCYXNpY1Byb3Bvc2Vk
Q3JlZGVudGlhbFBsdWdJbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IEJhc2ljUHJvcG9zZWRDcmVkZW50aWFsUGx1Z0luLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1QzRBODQ5NDFGN0VFRkQ0MDBBQ0ZDNTQgLyogQ29uZmlndXJhdGlvbi5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IENvbmZpZ3VyYXRpb24ubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yODEwLDYgKzI4MTIsNyBAQAogCQkJCUY0
Q0Q3NEM4MjBGREI0OTYwMERFMzc5NCAvKiBUZXN0VVJMU2NoZW1lSGFuZGxlci5tbSAqLywKIAkJ
CQlDMjJGQTMyQTIyOEY4NzA4MDA5RDc5ODggLyogVGV4dFdpZHRoLm1tICovLAogCQkJCTVDQjQw
QjREMUY0Qjk4QkUwMDdEQzdCOSAvKiBVSURlbGVnYXRlLm1tICovLAorCQkJCTVDM0E3N0E5MjJG
MjBCOEEwMDM4MjdGRiAvKiBVcGxvYWREaXJlY3RvcnkubW0gKi8sCiAJCQkJN0NDM0UxRkExOTdF
MjM0MTAwQkU2MjUyIC8qIFVzZXJDb250ZW50Q29udHJvbGxlci5tbSAqLywKIAkJCQk3Qzg4MkUw
MzFDODBDNjI0MDA2QkY3MzEgLyogVXNlckNvbnRlbnRXb3JsZC5tbSAqLywKIAkJCQk3Qzg4MkUw
NDFDODBDNjI0MDA2QkY3MzEgLyogVXNlckNvbnRlbnRXb3JsZFBsdWdJbi5tbSAqLywKQEAgLTMx
MDEsNiArMzEwNCw3IEBACiAJCQkJMkVGRjA2QzQxRDg4Njc3MDAwMDRCQjMwIC8qIGNoYW5nZS12
aWRlby1zb3VyY2Utb24tY2xpY2suaHRtbCAqLywKIAkJCQkyRUZGMDZDNjFEODg2QTU2MDAwNEJC
MzAgLyogY2hhbmdlLXZpZGVvLXNvdXJjZS1vbi1lbmQuaHRtbCAqLywKIAkJCQk4MzlBQTM1RTIx
QTI2QUNEMDA5ODBERDYgLyogY2xpZW50LXNpZGUtcmVkaXJlY3QuaHRtbCAqLywKKwkJCQk5QkFF
MTc3QTIyRTJCQjZCMDBERjMwOTggLyogY29jb2Etd3JpdGVyLW1hcmt1cC13aXRoLXN5c3RlbS1m
b250cy5odG1sICovLAogCQkJCUU1MDM2Rjc3MjExQkMyMjgwMEJGREJFMiAvKiBjb2xvci1kcm9w
Lmh0bWwgKi8sCiAJCQkJRjRCODI1RDYxRUY0REJENDAwNkU0MTdGIC8qIGNvbXByZXNzZWQtZmls
ZXMuemlwICovLAogCQkJCUY0NjlGQjIzMUYwMTgwMzUwMDQwMTUzOSAvKiBjb250ZW50ZWRpdGFi
bGUtYW5kLXRhcmdldC5odG1sICovLApAQCAtMzI2Miw3ICszMjY2LDYgQEAKIAkJCQk1MTcxNEVC
MzFDRjhDNzYxMDA0NzIzQzQgLyogV2ViUHJvY2Vzc0tpbGxJREJDbGVhbnVwLTIuaHRtbCAqLywK
IAkJCQk1MTIwQzgzQjFFNjc0RTM1MDAyNUIyNTAgLyogV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBh
dGhzLmh0bWwgKi8sCiAJCQkJMkUxMzFDMTcxRDgzQTk3RTAwMUJBMzZDIC8qIHdpZGUtYXV0b3Bs
YXlpbmctdmlkZW8td2l0aC1hdWRpby5odG1sICovLAotCQkJCTlCQUUxNzdBMjJFMkJCNkIwMERG
MzA5OCAvKiBjb2NvYS13cml0ZXItbWFya3VwLXdpdGgtc3lzdGVtLWZvbnRzLmh0bWwgKi8sCiAJ
CQkpOwogCQkJbmFtZSA9IFJlc291cmNlczsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBA
IC00NjI3LDYgKzQ2MzAsNyBAQAogCQkJCTVDOUQ5MjNBMjJEN0UyQjAwMDhFOTI2NiAvKiBVbmlm
aWVkU291cmNlNC1tbS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTVDOUQ5MjNDMjJEN0UyQjAwMDhF
OTI2NiAvKiBVbmlmaWVkU291cmNlNS1tbS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTVDOUQ5MjNE
MjJEN0UyQjAwMDhFOTI2NiAvKiBVbmlmaWVkU291cmNlNS5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQk1QzNBNzdBQTIyRjIwQkVBMDAzODI3RkYgLyogVXBsb2FkRGlyZWN0b3J5Lm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNUM2RTI3QTcyMjRFRUJFQTAwMTI4NzM2IC8qIFVSTENhbm9uaWNhbGl6YXRp
b24ubW0gaW4gU291cmNlcyAqLywKIAkJCQlFM0ExRTc3RjIxQjI1QjM5MDA4QzYwMDcgLyogVVJM
UGFyc2VyVGV4dEVuY29kaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RjI3MUE0MTFB
RjYwMDQ0N0M0QyAvKiBVc2VyQ29udGVudENvbnRyb2xsZXIubW0gaW4gU291cmNlcyAqLywKQEAg
LTQ3MzEsOSArNDczNSw5IEBACiAJCQkJOUJENDIzOUExRTA0QkQ5ODAwMjAwMzk1IC8qIEF0dHJp
YnV0ZWRTdWJzdHJpbmdGb3JQcm9wb3NlZFJhbmdlV2l0aEltYWdlLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJNUM5RDkyMzEyMkQ3RTBFQjAwOEU5MjY2IC8qIENsYXNzTWV0aG9kU3dpenpsZXIubW0g
aW4gU291cmNlcyAqLywKIAkJCQkyRTc3NjVDRDE2QzREODBBMDBCQTJCQjEgLyogbWFpbklPUy5t
bSBpbiBTb3VyY2VzICovLAotCQkJCUNEQ0ZGRUMxMjJFMjZBMTUwMERGNDIyMyAvKiBOb1BhdXNl
V2hlblN3aXRjaGluZ1RhYnMubW0gaW4gU291cmNlcyAqLywKIAkJCQkyRTc3NjVDRjE2QzREODEx
MDBCQTJCQjEgLyogbWFpbk1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTU3OTdGRTMxMUVCMTVB
NjgwMEIyRjRBMCAvKiBOYXZpZ2F0aW9uQ2xpZW50RGVmYXVsdENyeXB0by5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQlDRENGRkVDMTIyRTI2QTE1MDBERjQyMjMgLyogTm9QYXVzZVdoZW5Td2l0Y2hp
bmdUYWJzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0FEM0ZFOEUxRDc2MTMxMjAwQjE2OUE0IC8q
IFRyYW5zZm9ybWF0aW9uTWF0cml4LmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9VcGxvYWREaXJlY3RvcnkubW0gYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1VwbG9hZERpcmVjdG9yeS5tbQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi44NDkyNzhiNGYzOGY2MGQ3Nzk0NGFmNjEwNzQ0ZTVjNTBlOTQ1MzFmCi0tLSAvZGV2L251
bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9VcGxvYWREaXJl
Y3RvcnkubW0KQEAgLTAsMCArMSwxMjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcu
aCIKKworI2lmIFBMQVRGT1JNKE1BQykKKworI2ltcG9ydCAiRHJhZ0FuZERyb3BTaW11bGF0b3Iu
aCIKKyNpbXBvcnQgIlRDUFNlcnZlci5oIgorI2ltcG9ydCAiVGVzdE5hdmlnYXRpb25EZWxlZ2F0
ZS5oIgorI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgorI2ltcG9ydCAiVXRpbGl0aWVzLmgiCisj
aW1wb3J0IDxXZWJLaXQvV2ViS2l0Lmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW1w
b3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworQGludGVyZmFjZSBVcGxvYWREZWxlZ2F0ZSA6
IE5TT2JqZWN0IDxXS1VJRGVsZWdhdGU+CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEaXJlY3Rv
cnk6KE5TVVJMICopZGlyZWN0b3J5OworLSAoQk9PTClzZW50RGlyZWN0b3J5OworQGVuZAorCitA
aW1wbGVtZW50YXRpb24gVXBsb2FkRGVsZWdhdGUgeworICAgIFJldGFpblB0cjxOU1VSTD4gX2Rp
cmVjdG9yeTsKKyAgICBCT09MIF9zZW50RGlyZWN0b3J5OworfQorCistIChpbnN0YW5jZXR5cGUp
aW5pdFdpdGhEaXJlY3Rvcnk6KE5TVVJMICopZGlyZWN0b3J5Cit7CisgICAgaWYgKCEoc2VsZiA9
IFtzdXBlciBpbml0XSkpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgX2RpcmVjdG9yeSA9IGRp
cmVjdG9yeTsKKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZp
ZXcgKil3ZWJWaWV3IHJ1bk9wZW5QYW5lbFdpdGhQYXJhbWV0ZXJzOihXS09wZW5QYW5lbFBhcmFt
ZXRlcnMgKilwYXJhbWV0ZXJzIGluaXRpYXRlZEJ5RnJhbWU6KFdLRnJhbWVJbmZvICopZnJhbWUg
Y29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TQXJyYXk8TlNVUkwgKj4gKiBfTnVsbGFibGUg
VVJMcykpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBjb21wbGV0aW9uSGFuZGxlcihAW19kaXJl
Y3RvcnkuZ2V0KCldKTsKKyAgICBfc2VudERpcmVjdG9yeSA9IFlFUzsKK30KKworLSAoQk9PTClz
ZW50RGlyZWN0b3J5Cit7CisgICAgcmV0dXJuIF9zZW50RGlyZWN0b3J5OworfQorCitAZW5kCisK
K1RFU1QoV2ViS2l0LCBVcGxvYWREaXJlY3RvcnkpCit7CisgICAgTlNGaWxlTWFuYWdlciAqZmls
ZU1hbmFnZXIgPSBbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl07CisgICAgTlNFcnJvciAq
ZXJyb3IgPSBuaWw7CisgICAgTlNVUkwgKmRpcmVjdG9yeSA9IFtOU1VSTCBmaWxlVVJMV2l0aFBh
dGg6W05TVGVtcG9yYXJ5RGlyZWN0b3J5KCkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50
OkAiVXBsb2FkRGlyZWN0b3J5Il0gaXNEaXJlY3Rvcnk6WUVTXTsKKyAgICBFWFBFQ1RfRkFMU0Uo
W2ZpbGVNYW5hZ2VyIGZpbGVFeGlzdHNBdFBhdGg6ZGlyZWN0b3J5LnBhdGhdKTsKKyAgICBFWFBF
Q1RfVFJVRShbZmlsZU1hbmFnZXIgY3JlYXRlRGlyZWN0b3J5QXRVUkw6ZGlyZWN0b3J5IHdpdGhJ
bnRlcm1lZGlhdGVEaXJlY3RvcmllczpZRVMgYXR0cmlidXRlczpuaWwgZXJyb3I6JmVycm9yXSk7
CisgICAgRVhQRUNUX0ZBTFNFKGVycm9yKTsKKyAgICBOU0RhdGEgKnRlc3REYXRhID0gW0AidGVz
dGRhdGEiIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXTsKKyAgICBFWFBF
Q1RfVFJVRShbZmlsZU1hbmFnZXIgY3JlYXRlRmlsZUF0UGF0aDpbZGlyZWN0b3J5LnBhdGggc3Ry
aW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAidGVzdGZpbGUiXSBjb250ZW50czp0ZXN0RGF0
YSBhdHRyaWJ1dGVzOm5pbF0pOworCisgICAgeworICAgICAgICB1c2luZyBuYW1lc3BhY2UgVGVz
dFdlYktpdEFQSTsKKyAgICAgICAgVENQU2VydmVyIHNlcnZlcihbXSAoaW50IHNvY2tldCkgewor
ICAgICAgICAgICAgVENQU2VydmVyOjpyZWFkKHNvY2tldCk7CisgICAgICAgICAgICBjb25zdCBj
aGFyKiByZXNwb25zZSA9CisgICAgICAgICAgICAiSFRUUC8xLjEgMjAwIE9LXHJcbiIKKyAgICAg
ICAgICAgICJDb250ZW50LVR5cGU6IHRleHQvaHRtbFxyXG4iCisgICAgICAgICAgICAiQ29udGVu
dC1MZW5ndGg6IDEyM1xyXG5cclxuIgorICAgICAgICAgICAgIjxmb3JtIGlkPSdmb3JtJyBhY3Rp
b249Jy91cGxvYWQucGhwJyBtZXRob2Q9J3Bvc3QnIGVuY3R5cGU9J211bHRpcGFydC9mb3JtLWRh
dGEnPjxpbnB1dCB0eXBlPSdmaWxlJyBuYW1lPSd0ZXN0bmFtZSc+PC9mb3JtPiI7CisgICAgICAg
ICAgICBUQ1BTZXJ2ZXI6OndyaXRlKHNvY2tldCwgcmVzcG9uc2UsIHN0cmxlbihyZXNwb25zZSkp
OworCisgICAgICAgICAgICBhdXRvIGhlYWRlciA9IFRDUFNlcnZlcjo6cmVhZChzb2NrZXQpOwor
ICAgICAgICAgICAgRVhQRUNUX1RSVUUoU3RyaW5nKGhlYWRlci5kYXRhKCksIGhlYWRlci5zaXpl
KCkpLmNvbnRhaW5zKCJDb250ZW50LUxlbmd0aDogNTQzIikpOworICAgICAgICAgICAgc2l6ZV90
IGJvZHlCeXRlc1JlYWQgPSAwOworICAgICAgICAgICAgd2hpbGUgKGJvZHlCeXRlc1JlYWQgPCA1
NDMpCisgICAgICAgICAgICAgICAgYm9keUJ5dGVzUmVhZCArPSBUQ1BTZXJ2ZXI6OnJlYWQoc29j
a2V0KS5zaXplKCk7CisgICAgICAgICAgICBFWFBFQ1RfRVEoYm9keUJ5dGVzUmVhZCwgNTQzdWxs
KTsKKyAgICAgICAgICAgIGNvbnN0IGNoYXIqIHNlY29uZFJlc3BvbnNlID0KKyAgICAgICAgICAg
ICJIVFRQLzEuMSAyMDAgT0tcclxuIgorICAgICAgICAgICAgIkNvbnRlbnQtTGVuZ3RoOiAwXHJc
blxyXG4iOworICAgICAgICAgICAgVENQU2VydmVyOjp3cml0ZShzb2NrZXQsIHNlY29uZFJlc3Bv
bnNlLCBzdHJsZW4oc2Vjb25kUmVzcG9uc2UpKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgYXV0
byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6
Q0dSZWN0TWFrZSgwLCAwLCA4MDAsIDYwMCldKTsKKyAgICAgICAgYXV0byBkZWxlZ2F0ZSA9IGFk
b3B0TlMoW1tVcGxvYWREZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhEaXJlY3Rvcnk6ZGlyZWN0b3J5
XSk7CisgICAgICAgIFt3ZWJWaWV3IHNldFVJRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOworCisg
ICAgICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJl
cXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9y
bWF0OkAiaHR0cDovLzEyNy4wLjAuMTolZC8iLCBzZXJ2ZXIucG9ydCgpXV1dXTsKKworICAgICAg
ICBhdXRvIGNob29zZUZpbGVCdXR0b25Mb2NhdGlvbiA9IE5TTWFrZVBvaW50KDEwLCA1OTApOwor
ICAgICAgICBbd2ViVmlldyBzZW5kQ2xpY2tBdFBvaW50OmNob29zZUZpbGVCdXR0b25Mb2NhdGlv
bl07CisgICAgICAgIHdoaWxlICghW2RlbGVnYXRlIHNlbnREaXJlY3RvcnldKQorICAgICAgICAg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6c3BpblJ1bkxvb3AoKTsKKyAgICAgICAgW3dlYlZpZXcg
ZXZhbHVhdGVKYXZhU2NyaXB0OkAiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Zvcm0nKS5zdWJt
aXQoKSIgY29tcGxldGlvbkhhbmRsZXI6bmlsXTsKKyAgICAgICAgW3dlYlZpZXcgX3Rlc3Rfd2Fp
dEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOworICAgIH0KKworICAgIEVYUEVDVF9UUlVFKFtmaWxl
TWFuYWdlciByZW1vdmVJdGVtQXRQYXRoOmRpcmVjdG9yeS5wYXRoIGVycm9yOiZlcnJvcl0pOwor
ICAgIEVYUEVDVF9GQUxTRShlcnJvcik7Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3LmggYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L2NvY29hL1Rlc3RXS1dlYlZpZXcuaAppbmRleCBlZGUwNjgwMzIxNWEzZDVmODNkNDRiZjg5ZjYw
YzFlM2I3MWY1NTE4Li5mMGZlZDVkOGY4YjQ0MGZiOTRjZTIzZjE0ZWVkNzNlYzc2NmNmZTA0IDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaApAQCAtMTA2LDYgKzEw
Niw3IEBACiAtICh2b2lkKW1vdXNlVXBBdFBvaW50OihOU1BvaW50KXBvaW50SW5XaW5kb3c7CiAt
ICh2b2lkKW1vdXNlTW92ZVRvUG9pbnQ6KE5TUG9pbnQpcG9pbnRJbldpbmRvdyB3aXRoRmxhZ3M6
KE5TRXZlbnRNb2RpZmllckZsYWdzKWZsYWdzOwogLSAodm9pZClzZW5kQ2xpY2tzQXRQb2ludDoo
TlNQb2ludClwb2ludEluV2luZG93IG51bWJlck9mQ2xpY2tzOihOU1VJbnRlZ2VyKW51bWJlck9m
Q2xpY2tzOworLSAodm9pZClzZW5kQ2xpY2tBdFBvaW50OihOU1BvaW50KXBvaW50SW5XaW5kb3c7
CiAtIChOU1dpbmRvdyAqKWhvc3RXaW5kb3c7CiAtICh2b2lkKXR5cGVDaGFyYWN0ZXI6KGNoYXIp
Y2hhcmFjdGVyOwogQGVuZApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9U
ZXN0V0tXZWJWaWV3Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3
Lm1tCmluZGV4IDNkYTgxNzI2MWUxN2MzOTI0MzQ5ZDE3MTdhNjZmY2RjNzkwNmY5NWYuLjU0NmNh
NmUyMjJkOWZlYTgxY2U3YmU0ZTJjMmQzOTg1YzViNDRmMGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0KQEAgLTU5Myw2ICs1OTMsMTEgQEAgc3RhdGljIFdL
Q29udGVudFZpZXcgKnJlY3Vyc2l2ZUZpbmRXS0NvbnRlbnRWaWV3KFVJVmlldyAqdmlldykKICAg
ICB9CiB9CiAKKy0gKHZvaWQpc2VuZENsaWNrQXRQb2ludDooTlNQb2ludClwb2ludEluV2luZG93
Cit7CisgICAgW3NlbGYgc2VuZENsaWNrc0F0UG9pbnQ6cG9pbnRJbldpbmRvdyBudW1iZXJPZkNs
aWNrczoxXTsKK30KKwogLSAodm9pZCltb3VzZUVudGVyQXRQb2ludDooTlNQb2ludClwb2ludElu
V2luZG93CiB7CiAgICAgW3NlbGYgbW91c2VFbnRlcmVkOltzZWxmIF9tb3VzZUV2ZW50V2l0aFR5
cGU6TlNFdmVudFR5cGVNb3VzZUVudGVyZWQgYXRMb2NhdGlvbjpwb2ludEluV2luZG93XV07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>375253</attachid>
            <date>2019-07-31 14:53:53 -0700</date>
            <delta_ts>2019-07-31 22:43:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200102-20190731145352.patch</filename>
            <type>text/plain</type>
            <size>63275</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4MDc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjc1YWM1ZjFjYjk2Y2Vi
ODRiMmZlMjFkYmY3NmRhOWUzZDNiZWQ2Mi4uYTNlYzQ5NGFhY2MxYzMyYzRhZGM1ZmFmOTU5ZjY5
NjMxZWUxZTIzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDE5LTA3LTMxICBBbGV4
IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW92ZSBG
b3JtRGF0YSB6aXAgZmlsZSBnZW5lcmF0aW9uIHRvIE5ldHdvcmtQcm9jZXNzIGFuZCBlbmFibGUg
aXQgZm9yIGFsbCBXZWJLaXQgY2xpZW50cyBmb3IgdXBsb2FkaW5nIGRpcmVjdG9yaWVzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDAxMDIKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzUzMjc1MTE0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRvIGVuYWJsZSBkaXJlY3RvcnkgdXBsb2FkaW5nIGluIFdl
YktpdDIsIHdlIGV4dGVuZGVkIFdlYktpdDEncyBtb2RlbCBvZiBhc2tpbmcgdGhlIGFwcGxpY2F0
aW9uIHRvIGdlbmVyYXRlIGEgZmlsZSBmb3IgdXBsb2FkaW5nLgorICAgICAgICBUaGlzIG1lYW5z
IHRoZSBXZWJQcm9jZXNzIG5lZWRlZCBhY2Nlc3MgdG8gZXZlcnl0aGluZyBuZWNlc3NhcnkgdG8g
emlwIGEgd2hvbGUgZGlyZWN0b3J5LCBhbmQgY2xpZW50cyB0aGF0IGhhdmUgbm90IGltcGxlbWVu
dGVkCisgICAgICAgIHRoZSBzdHJhbmdlIFdLQnVuZGxlUGFnZVVJQ2xpZW50IGNhbGxiYWNrcyB3
b24ndCBiZSBhYmxlIHRvIHVwbG9hZCBkaXJlY3Rvcmllcy4gIFNhZmFyaSdzIGltcGxlbWVudGF0
aW9uIGhhZCBhbHJlYWR5IGJlZW4gY29waWVkCisgICAgICAgIHRvIEJsb2JEYXRhRmlsZVJlZmVy
ZW5jZTo6Z2VuZXJhdGVSZXBsYWNlbWVudEZpbGUsIHNvIEkgcmV1c2VkIHRoYXQgY29kZSB0byBk
byB0aGUgemlwcGluZy4gIEluc3RlYWQgb2YgYSBjb21wbGljYXRlZCBtb2RlbCBvZgorICAgICAg
ICBrZWVwaW5nIHRyYWNrIG9mIGEgZmlsZW5hbWUsIHBvc3NpYmx5IGEgZ2VuZXJhdGVkIGZpbGVu
YW1lLCBhbmQgd2hldGhlciB3ZSB0aGluayB3ZSBvd24gdGhlIGZpbGUgb3Igbm90IGFuZCBoYXZp
bmcgbm9ib2R5IGNsZWFuIHVwLAorICAgICAgICB3ZSBub3cgZG8gdGhlIGdlbmVyYXRpb24sIHVz
ZSwgYW5kIGNsZWFuaW5nIHVwIGluIHRoZSBuZXR3b3JrIHByb2Nlc3Mgc3RhcnRpbmcgd2l0aCBh
IG5ldyBmdW5jdGlvbiBnZW5lcmF0ZUZpbGVzRm9yVXBsb2FkLgorICAgICAgICBUaGlzIHJlbW92
ZXMgdW5pbXBsZW1lbnRlZCBTUEkgaW4gV2ViVUlEZWxlZ2F0ZVByaXZhdGUgaW4gV2ViS2l0TGVn
YWN5IGFuZCBzdG9wcyBjYWxsaW5nIHRoZSBXS0J1bmRsZVBhZ2VVSUNsaWVudCByZWxhdGVkIHRv
IHVwbG9hZAorICAgICAgICBmaWxlIGdlbmVyYXRpb24gYW5kIHJlcGxhY2VzIHRoZW0gd2l0aCBh
dXRvbWF0aWMgYmVoYXZpb3IgZXF1aXZhbGVudCB0byBTYWZhcmkncyBpbXBsZW1lbnRhdGlvbiBv
ZiB0aGUgV0tCdW5kbGVQYWdlVUlDbGllbnQgY2FsbHMuCisgICAgICAgIFNpbmNlIHdlIG5vIGxv
bmdlciBuZWVkIHRvIGRvIHRoZXNlIGZpbGUgb3BlcmF0aW9ucyBpbiB0aGUgV2ViUHJvY2Vzcywg
SSBhbSBhbHNvIHJldmVydGluZyByMjQ1MzIyIGFuZCByMjQ2MDc3IHdoaWNoIHRpZ2h0ZW5zIHRo
ZSBzYW5kYm94LgorCisgICAgICAgIENvdmVyZWQgYnkgYW4gQVBJIHRlc3QuCisKKyAgICAgICAg
KiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJv
ZHk6OmV4dHJhY3QpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojpib2R5QXNGb3JtRGF0
YSBjb25zdCk6CisgICAgICAgICogbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZvcm1TdWJtaXNzaW9uOjpjcmVhdGUpOgorICAgICAgICAqIGxvYWRlci9GcmFt
ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6c3VibWl0Rm9ybSk6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZERpZmZlcmVudERvY3VtZW50SXRl
bSk6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VMb2FkZXI6OmNsZWFudXBGb3JFcnJvcik6CisgICAgICAgICogcGFnZS9DaHJv
bWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50OjpzaG91bGRSZXBsYWNlV2l0
aEdlbmVyYXRlZEZpbGVGb3JVcGxvYWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q2hy
b21lQ2xpZW50OjpnZW5lcmF0ZVJlcGxhY2VtZW50RmlsZSk6IERlbGV0ZWQuCisgICAgICAgICog
cGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRh
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1EYXRhOjpGb3JtRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpGb3JtRGF0YTo6fkZvcm1EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1EYXRh
OjpjcmVhdGVNdWx0aVBhcnQpOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURhdGFFbGVtZW50Ojps
ZW5ndGhJbkJ5dGVzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1EYXRhOjphcHBlbmRG
aWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1EYXRhOjphcHBlbmRGaWxlUmFuZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6Rm9ybURhdGE6OmFwcGVuZE11bHRpUGFydEZpbGVWYWx1ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpGb3JtRGF0YTo6YXBwZW5kTXVsdGlQYXJ0S2V5VmFsdWVQYWlySXRlbXMp
OgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURhdGE6OnJlc29sdmVCbG9iUmVmZXJlbmNlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpnZW5lcmF0ZUZpbGVGb3JVcGxvYWQpOgorICAgICAgICAoV2ViQ29y
ZTo6Rm9ybURhdGE6OmdlbmVyYXRlRmlsZXNGb3JVcGxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6
Rm9ybURhdGE6OmdlbmVyYXRlRmlsZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Rm9y
bURhdGE6Omhhc0dlbmVyYXRlZEZpbGVzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkZvcm1EYXRhOjpoYXNPd25lZEdlbmVyYXRlZEZpbGVzIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkZvcm1EYXRhOjpyZW1vdmVHZW5lcmF0ZWRGaWxlc0lmTmVlZGVkKTog
RGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmg6CisgICAgICAg
IChXZWJDb3JlOjpGb3JtRGF0YUVsZW1lbnQ6OkZvcm1EYXRhRWxlbWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpGb3JtRGF0YUVsZW1lbnQ6OkVuY29kZWRGaWxlRGF0YTo6aXNvbGF0ZWRDb3B5IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1EYXRhRWxlbWVudDo6RW5jb2RlZEZpbGVEYXRh
OjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1EYXRhRWxlbWVudDo6
RW5jb2RlZEZpbGVEYXRhOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURh
dGFFbGVtZW50OjpFbmNvZGVkRmlsZURhdGE6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFk
dmFuY2VDdXJyZW50U3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6OmZvcm1DcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6Zm9ybUZpbmFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUhU
VFBCb2R5Q0ZSZWFkU3RyZWFtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9CbG9i
RGF0YUZpbGVSZWZlcmVuY2VNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpnZW5lcmF0ZUZpbGVG
b3JVcGxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpnZW5l
cmF0ZVJlcGxhY2VtZW50RmlsZSk6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpzZW5kKToKKwogMjAxOS0wNy0zMSAg
WW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIENURm9udENy
ZWF0ZUZvckNoYXJhY3RlcnNXaXRoTGFuZ3VhZ2VBbmRPcHRpb24gaWYgYXZhaWxhYmxlIGluc3Rl
YWQgb2YgQ1RGb250Q3JlYXRlRm9yQ2hhcmFjdGVyc1dpdGhMYW5ndWFnZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA3
NWIzODE0ODExOGYxNjMxNmQ2OTgwYzdiNzRlNzVkYzdkMDM0MGRjLi44MmVlODFiN2YxMThkMzVi
OTdjYjZhMjQ3YmJjMTJmMGMzNTAxYzg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDE5
LTA3LTMxICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgTW92ZSBGb3JtRGF0YSB6aXAgZmlsZSBnZW5lcmF0aW9uIHRvIE5ldHdvcmtQcm9jZXNz
IGFuZCBlbmFibGUgaXQgZm9yIGFsbCBXZWJLaXQgY2xpZW50cyBmb3IgdXBsb2FkaW5nIGRpcmVj
dG9yaWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDAxMDIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzUzMjc1MTE0PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVz
b3VyY2VMb2FkUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKiBQbGF0Zm9ybS9J
UEMvRm9ybURhdGFSZWZlcmVuY2UuaDoKKyAgICAgICAgKElQQzo6Rm9ybURhdGFSZWZlcmVuY2U6
OmVuY29kZSBjb25zdCk6CisgICAgICAgICogUmVzb3VyY2VzL1NhbmRib3hQcm9maWxlcy9pb3Mv
Y29tLmFwcGxlLldlYktpdC5OZXR3b3JraW5nLnNiOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50Lmg6CisgICAgICAg
IChBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlVUlDbGllbnQ6OnNob3VsZEdlbmVyYXRlRmlsZUZv
clVwbG9hZCk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlVUlD
bGllbnQ6OmdlbmVyYXRlRmlsZUZvclVwbG9hZCk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50OjpzaG91bGRHZW5lcmF0ZUZp
bGVGb3JVcGxvYWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBh
Z2VVSUNsaWVudDo6Z2VuZXJhdGVGaWxlRm9yVXBsb2FkKTogRGVsZXRlZC4KKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50Lmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OnNob3VsZFJlcGxhY2VXaXRoR2VuZXJh
dGVkRmlsZUZvclVwbG9hZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNs
aWVudDo6Z2VuZXJhdGVSZXBsYWNlbWVudEZpbGUpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9jb20uYXBwbGUuV2ViUHJvY2Vzcy5zYi5pbjoKKwogMjAxOS0wNy0zMSAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIyNDc0ODY/KTog
Rmxha3kgQVBJIFRlc3QgVGVzdFdlYktpdEFQSS5XS1dlYlZpZXcuTG9jYWxTdG9yYWdlUHJvY2Vz
c1N1c3BlbmRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggMGI4OTJjZmQ2NWI2YWM3
NmFhMGE4MTI0MjJiYjY0MWM4NjIxOTZlZC4uOWFlYjc1NGI4MzEyYzlhZTM5NjI2OWEyMDViOGQ5
ZTk4YTNhOTUwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBA
CisyMDE5LTA3LTMxICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgTW92ZSBGb3JtRGF0YSB6aXAgZmlsZSBnZW5lcmF0aW9uIHRvIE5ldHdvcmtQ
cm9jZXNzIGFuZCBlbmFibGUgaXQgZm9yIGFsbCBXZWJLaXQgY2xpZW50cyBmb3IgdXBsb2FkaW5n
IGRpcmVjdG9yaWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDAxMDIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzUzMjc1MTE0PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRGVmYXVsdERlbGVnYXRl
cy9XZWJEZWZhdWx0VUlEZWxlZ2F0ZS5tbToKKyAgICAgICAgKC1bV2ViRGVmYXVsdFVJRGVsZWdh
dGUgd2ViVmlldzpzaG91bGRSZXBsYWNlVXBsb2FkRmlsZTp1c2luZ0dlbmVyYXRlZEZpbGVuYW1l
Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJEZWZhdWx0VUlEZWxlZ2F0ZSB3ZWJWaWV3Omdl
bmVyYXRlUmVwbGFjZW1lbnRGaWxlOl0pOiBEZWxldGVkLgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5tbToKKyAgICAgICAgKFdlYkNocm9tZUNsaWVudDo6c2hvdWxkUmVwbGFjZVdpdGhH
ZW5lcmF0ZWRGaWxlRm9yVXBsb2FkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNocm9tZUNsaWVu
dDo6Z2VuZXJhdGVSZXBsYWNlbWVudEZpbGUpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlZpZXcv
V2ViVUlEZWxlZ2F0ZVByaXZhdGUuaDoKKwogMjAxOS0wNy0yNSAgRGVhbiBKYWNrc29uICA8ZGlu
b0BhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGhlbHBlciBmb3IgaWdub3JpbmcgZGVwcmVjYXRl
ZCBpbXBsZW1lbnRhdGlvbiB3YXJuaW5ncwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHkuY3BwCmluZGV4IDk4N2U0NTU2ZjlmNWZjNGUxYzcxZmYzYjA4NDdjYjdmMmIyNWNk
ZDguLjMzZGU0ZjM3OGQyYWFlYWQ0MzkyNmZiMGRiN2I2YmQ3N2UyMWJkYjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKQEAgLTQwLDcgKzQwLDcgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1GZXRjaEJvZHkgRmV0Y2hCb2R5OjpleHRyYWN0KFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEluaXQmJiB2YWx1ZSwgU3RyaW5nJiBjb250ZW50
VHlwZSkKK0ZldGNoQm9keSBGZXRjaEJvZHk6OmV4dHJhY3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYsIEluaXQmJiB2YWx1ZSwgU3RyaW5nJiBjb250ZW50VHlwZSkKIHsKICAgICByZXR1cm4gV1RG
Ojpzd2l0Y2hPbih2YWx1ZSwgWyZdKFJlZlB0cjxCbG9iPiYgdmFsdWUpIG11dGFibGUgewogICAg
ICAgICBSZWY8Y29uc3QgQmxvYj4gYmxvYiA9IHZhbHVlLnJlbGVhc2VOb25OdWxsKCk7CkBAIC00
OSw3ICs0OSw3IEBAIEZldGNoQm9keSBGZXRjaEJvZHk6OmV4dHJhY3QoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCwgSW5pdCYmIHZhbHVlLCBTdHJpCiAgICAgICAgIHJldHVybiBGZXRj
aEJvZHkoV1RGTW92ZShibG9iKSk7CiAgICAgfSwgWyZdKFJlZlB0cjxET01Gb3JtRGF0YT4mIHZh
bHVlKSBtdXRhYmxlIHsKICAgICAgICAgUmVmPERPTUZvcm1EYXRhPiBkb21Gb3JtRGF0YSA9IHZh
bHVlLnJlbGVhc2VOb25OdWxsKCk7Ci0gICAgICAgIGF1dG8gZm9ybURhdGEgPSBGb3JtRGF0YTo6
Y3JlYXRlTXVsdGlQYXJ0KGRvbUZvcm1EYXRhLmdldCgpLCAmZG93bmNhc3Q8RG9jdW1lbnQ+KGNv
bnRleHQpKTsKKyAgICAgICAgYXV0byBmb3JtRGF0YSA9IEZvcm1EYXRhOjpjcmVhdGVNdWx0aVBh
cnQoZG9tRm9ybURhdGEuZ2V0KCkpOwogICAgICAgICBjb250ZW50VHlwZSA9IG1ha2VTdHJpbmco
Im11bHRpcGFydC9mb3JtLWRhdGE7IGJvdW5kYXJ5PSIsIGZvcm1EYXRhLT5ib3VuZGFyeSgpLmRh
dGEoKSk7CiAgICAgICAgIHJldHVybiBGZXRjaEJvZHkoV1RGTW92ZShmb3JtRGF0YSkpOwogICAg
IH0sIFsmXShSZWZQdHI8VVJMU2VhcmNoUGFyYW1zPiYgdmFsdWUpIG11dGFibGUgewpAQCAtMjUw
LDkgKzI1MCw4IEBAIFJlZlB0cjxGb3JtRGF0YT4gRmV0Y2hCb2R5Ojpib2R5QXNGb3JtRGF0YShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBjb25zCiAgICAgaWYgKGlzQXJyYXlCdWZm
ZXJWaWV3KCkpCiAgICAgICAgIHJldHVybiBGb3JtRGF0YTo6Y3JlYXRlKGFycmF5QnVmZmVyVmll
d0JvZHkoKS5iYXNlQWRkcmVzcygpLCBhcnJheUJ1ZmZlclZpZXdCb2R5KCkuYnl0ZUxlbmd0aCgp
KTsKICAgICBpZiAoaXNGb3JtRGF0YSgpKSB7Ci0gICAgICAgIEFTU0VSVCghY29udGV4dC5pc1dv
cmtlckdsb2JhbFNjb3BlKCkpOworICAgICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsICFjb250
ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSk7CiAgICAgICAgIGF1dG8gYm9keSA9IG1ha2VSZWYo
Y29uc3RfY2FzdDxGb3JtRGF0YSY+KGZvcm1EYXRhQm9keSgpKSk7Ci0gICAgICAgIGJvZHktPmdl
bmVyYXRlRmlsZXMoJmRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0KSk7CiAgICAgICAgIHJldHVy
biBib2R5OwogICAgIH0KICAgICBpZiAoYXV0byogZGF0YSA9IG1fY29uc3VtZXIuZGF0YSgpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAKaW5kZXggYmUwM2U0YTE5ZTEx
NzIyNWZjZTgxMjdhZjE3NGMxYjA0Zjk1NTRmNC4uMGY5MjQ2ZjgxMThkMzdjM2JjZmE3MmIxYzlm
NDc3NjIxNmExZTdiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJt
aXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3Bw
CkBAIC0xOTgsNyArMTk4LDcgQEAgUmVmPEZvcm1TdWJtaXNzaW9uPiBGb3JtU3VibWlzc2lvbjo6
Y3JlYXRlKEhUTUxGb3JtRWxlbWVudCYgZm9ybSwgY29uc3QgQXR0cmlidXQKICAgICBTdHJpbmcg
Ym91bmRhcnk7CiAKICAgICBpZiAoaXNNdWx0aVBhcnRGb3JtKSB7Ci0gICAgICAgIGZvcm1EYXRh
ID0gRm9ybURhdGE6OmNyZWF0ZU11bHRpUGFydChkb21Gb3JtRGF0YSwgJmRvY3VtZW50KTsKKyAg
ICAgICAgZm9ybURhdGEgPSBGb3JtRGF0YTo6Y3JlYXRlTXVsdGlQYXJ0KGRvbUZvcm1EYXRhKTsK
ICAgICAgICAgYm91bmRhcnkgPSBmb3JtRGF0YS0+Ym91bmRhcnkoKS5kYXRhKCk7CiAgICAgfSBl
bHNlIHsKICAgICAgICAgZm9ybURhdGEgPSBGb3JtRGF0YTo6Y3JlYXRlKGRvbUZvcm1EYXRhLCBh
dHRyaWJ1dGVzLm1ldGhvZCgpID09IE1ldGhvZDo6R2V0ID8gRm9ybURhdGE6OkZvcm1VUkxFbmNv
ZGVkIDogRm9ybURhdGE6OnBhcnNlRW5jb2RpbmdUeXBlKGVuY29kaW5nVHlwZSkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggZmI0YzViOGJkMzA1MmY1N2VhM2EwMjk2
MTZiYTU0ODdkNTdiNDQ1Mi4uNDdmNzY2YTkwN2YxYWQ1MDgyYjk0MTQ0YzJkYzg2MTk2ODVmNjc2
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC00NzMsNyArNDczLDYg
QEAgdm9pZCBGcmFtZUxvYWRlcjo6c3VibWl0Rm9ybShSZWY8Rm9ybVN1Ym1pc3Npb24+JiYgc3Vi
bWlzc2lvbikKICAgICAgICAgbV9zdWJtaXR0ZWRGb3JtVVJMID0gc3VibWlzc2lvbi0+cmVxdWVz
dFVSTCgpOwogICAgIH0KIAotICAgIHN1Ym1pc3Npb24tPmRhdGEoKS5nZW5lcmF0ZUZpbGVzKG1f
ZnJhbWUuZG9jdW1lbnQoKSk7CiAgICAgc3VibWlzc2lvbi0+c2V0UmVmZXJyZXIob3V0Z29pbmdS
ZWZlcnJlcigpKTsKICAgICBzdWJtaXNzaW9uLT5zZXRPcmlnaW4ob3V0Z29pbmdPcmlnaW4oKSk7
CiAKQEAgLTM3NzMsOCArMzc3Miw2IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWREaWZmZXJlbnRE
b2N1bWVudEl0ZW0oSGlzdG9yeUl0ZW0mIGl0ZW0sIEhpc3RvcnlJdGVtKiBmcm9tCiAgICAgLy8g
SWYgdGhpcyB3YXMgYSByZXBvc3QgdGhhdCBmYWlsZWQgdGhlIHBhZ2UgY2FjaGUsIHdlIG1pZ2h0
IHRyeSB0byByZXBvc3QgdGhlIGZvcm0uCiAgICAgTmF2aWdhdGlvbkFjdGlvbiBhY3Rpb247CiAg
ICAgaWYgKGZvcm1EYXRhKSB7Ci0gICAgICAgIGZvcm1EYXRhLT5nZW5lcmF0ZUZpbGVzKG1fZnJh
bWUuZG9jdW1lbnQoKSk7Ci0KICAgICAgICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKCJQT1NUIik7
CiAgICAgICAgIHJlcXVlc3Quc2V0SFRUUEJvZHkoV1RGTW92ZShmb3JtRGF0YSkpOwogICAgICAg
ICByZXF1ZXN0LnNldEhUVFBDb250ZW50VHlwZShpdGVtLmZvcm1Db250ZW50VHlwZSgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDFmNmYzNTNlNjkzNWU4
ZTVlYjY1NWRlZWQ4MGY1N2IwYWUzN2MyZmMuLmE3NjY1NmMwM2U3MTI1Mjg1Mzg4YWI1ZDY1ZDhk
YzlkZjUzZTJhODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcApA
QCAtNDkyLDkgKzQ5Miw2IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25z
ZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByLCBDb21wbGV0aW9uSGFuCiAKICAgICBtX3Jlc3Bv
bnNlID0gcjsKIAotICAgIGlmIChGb3JtRGF0YSogZGF0YSA9IG1fcmVxdWVzdC5odHRwQm9keSgp
KQotICAgICAgICBkYXRhLT5yZW1vdmVHZW5lcmF0ZWRGaWxlc0lmTmVlZGVkKCk7Ci0KICAgICBp
ZiAobV9vcHRpb25zLnNlbmRMb2FkQ2FsbGJhY2tzID09IFNlbmRDYWxsYmFja1BvbGljeTo6U2Vu
ZENhbGxiYWNrcykKICAgICAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIoKS5kaWRSZWNlaXZl
UmVzcG9uc2UodGhpcywgbV9yZXNwb25zZSk7CiB9CkBAIC01NzksOSArNTc2LDYgQEAgdm9pZCBS
ZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIAogdm9p
ZCBSZXNvdXJjZUxvYWRlcjo6Y2xlYW51cEZvckVycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImIGVy
cm9yKQogewotICAgIGlmIChGb3JtRGF0YSogZGF0YSA9IG1fcmVxdWVzdC5odHRwQm9keSgpKQot
ICAgICAgICBkYXRhLT5yZW1vdmVHZW5lcmF0ZWRGaWxlc0lmTmVlZGVkKCk7Ci0KICAgICBpZiAo
bV9ub3RpZmllZExvYWRDb21wbGV0ZSkKICAgICAgICAgcmV0dXJuOwogICAgIG1fbm90aWZpZWRM
b2FkQ29tcGxldGUgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJv
bWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCmluZGV4IDIyMGQ4YzI2Mjk4
YjBjOTU1NzkzMGY0MTIzZmNmMmQ1ODNjOTc5M2IuLjk3NTgzMjliYTkwOWNkOTEzY2FiNDY4NWQ3
MWFlOWRhNGZjMzVjYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKQEAgLTUyNSwxNyArNTI1LDYg
QEAgdm9pZCBDaHJvbWU6OndpbmRvd1NjcmVlbkRpZENoYW5nZShQbGF0Zm9ybURpc3BsYXlJRCBk
aXNwbGF5SUQpCiAjZW5kaWYKIH0KIAotYm9vbCBDaHJvbWVDbGllbnQ6OnNob3VsZFJlcGxhY2VX
aXRoR2VuZXJhdGVkRmlsZUZvclVwbG9hZChjb25zdCBTdHJpbmcmLCBTdHJpbmcmKQotewotICAg
IHJldHVybiBmYWxzZTsKLX0KLQotU3RyaW5nIENocm9tZUNsaWVudDo6Z2VuZXJhdGVSZXBsYWNl
bWVudEZpbGUoY29uc3QgU3RyaW5nJikKLXsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICByZXR1cm4gU3RyaW5nKCk7Ci19Ci0KIGJvb2wgQ2hyb21lOjpzZWxlY3RJdGVtV3JpdGluZ0Rp
cmVjdGlvbklzTmF0dXJhbCgpCiB7CiAgICAgcmV0dXJuIG1fY2xpZW50LnNlbGVjdEl0ZW1Xcml0
aW5nRGlyZWN0aW9uSXNOYXR1cmFsKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0Nocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAppbmRl
eCBmOTkzZTIwYzE4ZDZmOWY0OTEwNGNjNjY3NTM5ODg3NzIwZjJlNTYzLi5jMjVhMDI0YmMwNjNj
NThmM2IyOGJkNzljYmIwMzM4NDQyNmM4YzVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0Nocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50
LmgKQEAgLTIzNSw5ICsyMzUsNiBAQCBwdWJsaWM6CiAgICAgLy8gdGhlIG5ldyBjYWNoZS4KICAg
ICB2aXJ0dWFsIHZvaWQgcmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShTZWN1cml0
eU9yaWdpbiYsIGludDY0X3QgdG90YWxTcGFjZU5lZWRlZCkgPSAwOwogCi0gICAgdmlydHVhbCBi
b29sIHNob3VsZFJlcGxhY2VXaXRoR2VuZXJhdGVkRmlsZUZvclVwbG9hZChjb25zdCBTdHJpbmcm
IHBhdGgsIFN0cmluZyYgZ2VuZXJhdGVkRmlsZW5hbWUpOwotICAgIHZpcnR1YWwgU3RyaW5nIGdl
bmVyYXRlUmVwbGFjZW1lbnRGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCk7Ci0KICNpZiBFTkFCTEUo
SU9TX1RPVUNIX0VWRU5UUykKICAgICB2aXJ0dWFsIHZvaWQgZGlkUHJldmVudERlZmF1bHRGb3JF
dmVudCgpID0gMDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9Gb3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zv
cm1EYXRhLmNwcAppbmRleCA3ZTk0YzlhMzg1ZDFiNjMxM2EzYTFhYmNhZGE5YzEwNTNjMzE0NTY2
Li45ZGI2Y2JlM2MzMTBiMDAzMmI0ZGMwNDQ2MzAxYmU1NGE4NzEzZDIwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcApAQCAtMjcsNyArMjcsNiBAQAog
I2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgogI2luY2x1ZGUg
IkRPTUZvcm1EYXRhLmgiCi0jaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJGaWxlLmgi
CiAjaW5jbHVkZSAiRm9ybURhdGFCdWlsZGVyLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgpAQCAtNTAs
MjIgKzQ5LDEwIEBAIGlubGluZSBGb3JtRGF0YTo6Rm9ybURhdGEoY29uc3QgRm9ybURhdGEmIGRh
dGEpCiAgICAgLCBtX2Fsd2F5c1N0cmVhbShmYWxzZSkKICAgICAsIG1fY29udGFpbnNQYXNzd29y
ZERhdGEoZGF0YS5tX2NvbnRhaW5zUGFzc3dvcmREYXRhKQogewotICAgIC8vIFdlIHNob3VsZG4n
dCBiZSBjb3B5aW5nIEZvcm1EYXRhIHRoYXQgaGFzbid0IGFscmVhZHkgcmVtb3ZlZCBpdHMgZ2Vu
ZXJhdGVkIGZpbGVzCi0gICAgLy8gYnV0IGp1c3QgaW4gY2FzZSwgbWFrZSBzdXJlIHRoZSBuZXcg
Rm9ybURhdGEgaXMgcmVhZHkgdG8gZ2VuZXJhdGUgaXRzIG93biBmaWxlcy4KLSAgICBmb3IgKGF1
dG8mIGVsZW1lbnQgOiBtX2VsZW1lbnRzKSB7Ci0gICAgICAgIGlmIChhdXRvKiBmaWxlRGF0YSA9
IFdURjo6Z2V0X2lmPEZvcm1EYXRhRWxlbWVudDo6RW5jb2RlZEZpbGVEYXRhPihlbGVtZW50LmRh
dGEpKSB7Ci0gICAgICAgICAgICBmaWxlRGF0YS0+Z2VuZXJhdGVkRmlsZW5hbWUgPSB7IH07Ci0g
ICAgICAgICAgICBmaWxlRGF0YS0+b3duc0dlbmVyYXRlZEZpbGUgPSBmYWxzZTsKLSAgICAgICAg
fQotICAgIH0KIH0KIAogRm9ybURhdGE6On5Gb3JtRGF0YSgpCiB7Ci0gICAgLy8gVGhpcyBjbGVh
bnVwIHNob3VsZCd2ZSBoYXBwZW5lZCB3aGVuIHRoZSBmb3JtIHN1Ym1pc3Npb24gZmluaXNoZWQu
Ci0gICAgLy8gSnVzdCBpbiBjYXNlLCBsZXQncyBhc3NlcnQsIGFuZCBkbyB0aGUgY2xlYW51cCBh
bnl3YXkgaW4gcmVsZWFzZSBidWlsZHMuCi0gICAgQVNTRVJUKCFoYXNPd25lZEdlbmVyYXRlZEZp
bGVzKCkpOwotICAgIHJlbW92ZUdlbmVyYXRlZEZpbGVzSWZOZWVkZWQoKTsKIH0KIAogUmVmPEZv
cm1EYXRhPiBGb3JtRGF0YTo6Y3JlYXRlKCkKQEAgLTEwOSwxMCArOTYsMTAgQEAgUmVmPEZvcm1E
YXRhPiBGb3JtRGF0YTo6Y3JlYXRlKGNvbnN0IERPTUZvcm1EYXRhJiBmb3JtRGF0YSwgRW5jb2Rp
bmdUeXBlIGVuY29kaW4KICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1SZWY8Rm9ybURhdGE+IEZv
cm1EYXRhOjpjcmVhdGVNdWx0aVBhcnQoY29uc3QgRE9NRm9ybURhdGEmIGZvcm1EYXRhLCBEb2N1
bWVudCogZG9jdW1lbnQpCitSZWY8Rm9ybURhdGE+IEZvcm1EYXRhOjpjcmVhdGVNdWx0aVBhcnQo
Y29uc3QgRE9NRm9ybURhdGEmIGZvcm1EYXRhKQogewogICAgIGF1dG8gcmVzdWx0ID0gY3JlYXRl
KCk7Ci0gICAgcmVzdWx0LT5hcHBlbmRNdWx0aVBhcnRLZXlWYWx1ZVBhaXJJdGVtcyhmb3JtRGF0
YSwgZG9jdW1lbnQpOworICAgIHJlc3VsdC0+YXBwZW5kTXVsdGlQYXJ0S2V5VmFsdWVQYWlySXRl
bXMoZm9ybURhdGEpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTE0Niw3ICsxMzMsNyBA
QCB1aW50NjRfdCBGb3JtRGF0YUVsZW1lbnQ6Omxlbmd0aEluQnl0ZXMoKSBjb25zdAogICAgICAg
ICAgICAgaWYgKGZpbGVEYXRhLmZpbGVMZW5ndGggIT0gQmxvYkRhdGFJdGVtOjp0b0VuZE9mRmls
ZSkKICAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGZpbGVEYXRh
LmZpbGVMZW5ndGgpOwogICAgICAgICAgICAgbG9uZyBsb25nIGZpbGVTaXplOwotICAgICAgICAg
ICAgaWYgKEZpbGVTeXN0ZW06OmdldEZpbGVTaXplKGZpbGVEYXRhLnNob3VsZEdlbmVyYXRlRmls
ZSA/IGZpbGVEYXRhLmdlbmVyYXRlZEZpbGVuYW1lIDogZmlsZURhdGEuZmlsZW5hbWUsIGZpbGVT
aXplKSkKKyAgICAgICAgICAgIGlmIChGaWxlU3lzdGVtOjpnZXRGaWxlU2l6ZShmaWxlRGF0YS5m
aWxlbmFtZSwgZmlsZVNpemUpKQogICAgICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1
aW50NjRfdD4oZmlsZVNpemUpOwogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnQ2
NF90PigwKTsKICAgICAgICAgfSwgW10gKGNvbnN0IEZvcm1EYXRhRWxlbWVudDo6RW5jb2RlZEJs
b2JEYXRhJiBibG9iRGF0YSkgewpAQCAtMTg0LDE1ICsxNzEsMTUgQEAgdm9pZCBGb3JtRGF0YTo6
YXBwZW5kRGF0YShjb25zdCB2b2lkKiBkYXRhLCBzaXplX3Qgc2l6ZSkKICAgICBtX2VsZW1lbnRz
LmFwcGVuZChXVEZNb3ZlKHZlY3RvcikpOwogfQogCi12b2lkIEZvcm1EYXRhOjphcHBlbmRGaWxl
KGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGJvb2wgc2hvdWxkR2VuZXJhdGVGaWxlKQordm9pZCBG
b3JtRGF0YTo6YXBwZW5kRmlsZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lKQogewotICAgIG1fZWxl
bWVudHMuYXBwZW5kKEZvcm1EYXRhRWxlbWVudChmaWxlbmFtZSwgMCwgQmxvYkRhdGFJdGVtOjp0
b0VuZE9mRmlsZSwgV1RGOjpudWxsb3B0LCBzaG91bGRHZW5lcmF0ZUZpbGUpKTsKKyAgICBtX2Vs
ZW1lbnRzLmFwcGVuZChGb3JtRGF0YUVsZW1lbnQoZmlsZW5hbWUsIDAsIEJsb2JEYXRhSXRlbTo6
dG9FbmRPZkZpbGUsIFdURjo6bnVsbG9wdCkpOwogICAgIG1fbGVuZ3RoSW5CeXRlcyA9IFdURjo6
bnVsbG9wdDsKIH0KIAotdm9pZCBGb3JtRGF0YTo6YXBwZW5kRmlsZVJhbmdlKGNvbnN0IFN0cmlu
ZyYgZmlsZW5hbWUsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGxlbmd0aCwgT3B0aW9uYWw8
V2FsbFRpbWU+IGV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSwgYm9vbCBzaG91bGRHZW5lcmF0ZUZp
bGUpCit2b2lkIEZvcm1EYXRhOjphcHBlbmRGaWxlUmFuZ2UoY29uc3QgU3RyaW5nJiBmaWxlbmFt
ZSwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgbGVuZ3RoLCBPcHRpb25hbDxXYWxsVGltZT4g
ZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKQogewotICAgIG1fZWxlbWVudHMuYXBwZW5kKEZvcm1E
YXRhRWxlbWVudChmaWxlbmFtZSwgc3RhcnQsIGxlbmd0aCwgZXhwZWN0ZWRNb2RpZmljYXRpb25U
aW1lLCBzaG91bGRHZW5lcmF0ZUZpbGUpKTsKKyAgICBtX2VsZW1lbnRzLmFwcGVuZChGb3JtRGF0
YUVsZW1lbnQoZmlsZW5hbWUsIHN0YXJ0LCBsZW5ndGgsIGV4cGVjdGVkTW9kaWZpY2F0aW9uVGlt
ZSkpOwogICAgIG1fbGVuZ3RoSW5CeXRlcyA9IFdURjo6bnVsbG9wdDsKIH0KIApAQCAtMjA3LDIy
ICsxOTQsMTAgQEAgc3RhdGljIFZlY3Rvcjx1aW50OF90PiBub3JtYWxpemVTdHJpbmdEYXRhKFRl
eHRFbmNvZGluZyYgZW5jb2RpbmcsIGNvbnN0IFN0cmluZyYKICAgICByZXR1cm4gbm9ybWFsaXpl
TGluZUVuZGluZ3NUb0NSTEYoZW5jb2RpbmcuZW5jb2RlKHZhbHVlLCBVbmVuY29kYWJsZUhhbmRs
aW5nOjpFbnRpdGllcykpOwogfQogCi12b2lkIEZvcm1EYXRhOjphcHBlbmRNdWx0aVBhcnRGaWxl
VmFsdWUoY29uc3QgRmlsZSYgZmlsZSwgVmVjdG9yPGNoYXI+JiBoZWFkZXIsIFRleHRFbmNvZGlu
ZyYgZW5jb2RpbmcsIERvY3VtZW50KiBkb2N1bWVudCkKK3ZvaWQgRm9ybURhdGE6OmFwcGVuZE11
bHRpUGFydEZpbGVWYWx1ZShjb25zdCBGaWxlJiBmaWxlLCBWZWN0b3I8Y2hhcj4mIGhlYWRlciwg
VGV4dEVuY29kaW5nJiBlbmNvZGluZykKIHsKICAgICBhdXRvIG5hbWUgPSBmaWxlLm5hbWUoKTsK
IAotICAgIC8vIExldCB0aGUgYXBwbGljYXRpb24gc3BlY2lmeSBhIGZpbGVuYW1lIGlmIGl0J3Mg
Z29pbmcgdG8gZ2VuZXJhdGUgYSByZXBsYWNlbWVudCBmaWxlIGZvciB0aGUgdXBsb2FkLgotICAg
IGJvb2wgc2hvdWxkR2VuZXJhdGVGaWxlID0gZmFsc2U7Ci0gICAgYXV0byYgcGF0aCA9IGZpbGUu
cGF0aCgpOwotICAgIGlmICghcGF0aC5pc0VtcHR5KCkpIHsKLSAgICAgICAgaWYgKFBhZ2UqIHBh
Z2UgPSBkb2N1bWVudC0+cGFnZSgpKSB7Ci0gICAgICAgICAgICBTdHJpbmcgZ2VuZXJhdGVkRmls
ZU5hbWU7Ci0gICAgICAgICAgICBzaG91bGRHZW5lcmF0ZUZpbGUgPSBwYWdlLT5jaHJvbWUoKS5j
bGllbnQoKS5zaG91bGRSZXBsYWNlV2l0aEdlbmVyYXRlZEZpbGVGb3JVcGxvYWQocGF0aCwgZ2Vu
ZXJhdGVkRmlsZU5hbWUpOwotICAgICAgICAgICAgaWYgKHNob3VsZEdlbmVyYXRlRmlsZSkKLSAg
ICAgICAgICAgICAgICBuYW1lID0gZ2VuZXJhdGVkRmlsZU5hbWU7Ci0gICAgICAgIH0KLSAgICB9
Ci0KICAgICAvLyBXZSBoYXZlIHRvIGluY2x1ZGUgdGhlIGZpbGVuYW1lPSIuLiIgcGFydCBpbiB0
aGUgaGVhZGVyLCBldmVuIGlmIHRoZSBmaWxlbmFtZSBpcyBlbXB0eQogICAgIEZvcm1EYXRhQnVp
bGRlcjo6YWRkRmlsZW5hbWVUb011bHRpUGFydEhlYWRlcihoZWFkZXIsIGVuY29kaW5nLCBuYW1l
KTsKIApAQCAtMjM4LDcgKzIxMyw3IEBAIHZvaWQgRm9ybURhdGE6OmFwcGVuZE11bHRpUGFydEZp
bGVWYWx1ZShjb25zdCBGaWxlJiBmaWxlLCBWZWN0b3I8Y2hhcj4mIGhlYWRlciwKICAgICBhcHBl
bmREYXRhKGhlYWRlci5kYXRhKCksIGhlYWRlci5zaXplKCkpOwogCiAgICAgaWYgKCFmaWxlLnBh
dGgoKS5pc0VtcHR5KCkpCi0gICAgICAgIGFwcGVuZEZpbGUoZmlsZS5wYXRoKCksIHNob3VsZEdl
bmVyYXRlRmlsZSk7CisgICAgICAgIGFwcGVuZEZpbGUoZmlsZS5wYXRoKCkpOwogICAgIGVsc2Ug
aWYgKGZpbGUuc2l6ZSgpKQogICAgICAgICBhcHBlbmRCbG9iKGZpbGUudXJsKCkpOwogfQpAQCAt
MjUyLDcgKzIyNyw3IEBAIHZvaWQgRm9ybURhdGE6OmFwcGVuZE11bHRpUGFydFN0cmluZ1ZhbHVl
KGNvbnN0IFN0cmluZyYgc3RyaW5nLCBWZWN0b3I8Y2hhcj4mIGhlCiAgICAgYXBwZW5kRGF0YShu
b3JtYWxpemVkU3RyaW5nRGF0YS5kYXRhKCksIG5vcm1hbGl6ZWRTdHJpbmdEYXRhLnNpemUoKSk7
CiB9CiAKLXZvaWQgRm9ybURhdGE6OmFwcGVuZE11bHRpUGFydEtleVZhbHVlUGFpckl0ZW1zKGNv
bnN0IERPTUZvcm1EYXRhJiBmb3JtRGF0YSwgRG9jdW1lbnQqIGRvY3VtZW50KQordm9pZCBGb3Jt
RGF0YTo6YXBwZW5kTXVsdGlQYXJ0S2V5VmFsdWVQYWlySXRlbXMoY29uc3QgRE9NRm9ybURhdGEm
IGZvcm1EYXRhKQogewogICAgIG1fYm91bmRhcnkgPSBGb3JtRGF0YUJ1aWxkZXI6OmdlbmVyYXRl
VW5pcXVlQm91bmRhcnlTdHJpbmcoKTsKIApAQCAtMjY2LDcgKzI0MSw3IEBAIHZvaWQgRm9ybURh
dGE6OmFwcGVuZE11bHRpUGFydEtleVZhbHVlUGFpckl0ZW1zKGNvbnN0IERPTUZvcm1EYXRhJiBm
b3JtRGF0YSwgRG9jCiAgICAgICAgIEZvcm1EYXRhQnVpbGRlcjo6YmVnaW5NdWx0aVBhcnRIZWFk
ZXIoaGVhZGVyLCBtX2JvdW5kYXJ5LmRhdGEoKSwgbm9ybWFsaXplZE5hbWUpOwogCiAgICAgICAg
IGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFJlZlB0cjxGaWxlPj4oaXRlbS5kYXRhKSkKLSAg
ICAgICAgICAgIGFwcGVuZE11bHRpUGFydEZpbGVWYWx1ZSgqV1RGOjpnZXQ8UmVmUHRyPEZpbGU+
PihpdGVtLmRhdGEpLCBoZWFkZXIsIGVuY29kaW5nLCBkb2N1bWVudCk7CisgICAgICAgICAgICBh
cHBlbmRNdWx0aVBhcnRGaWxlVmFsdWUoKldURjo6Z2V0PFJlZlB0cjxGaWxlPj4oaXRlbS5kYXRh
KSwgaGVhZGVyLCBlbmNvZGluZyk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGFwcGVuZE11
bHRpUGFydFN0cmluZ1ZhbHVlKFdURjo6Z2V0PFN0cmluZz4oaXRlbS5kYXRhKSwgaGVhZGVyLCBl
bmNvZGluZyk7CiAKQEAgLTM1OSw3ICszMzQsNyBAQCBSZWY8Rm9ybURhdGE+IEZvcm1EYXRhOjpy
ZXNvbHZlQmxvYlJlZmVyZW5jZXMoQmxvYlJlZ2lzdHJ5JiBibG9iUmVnaXN0cnkpCiAgICAgICAg
ICAgICBbJl0gKGNvbnN0IFZlY3RvcjxjaGFyPiYgYnl0ZXMpIHsKICAgICAgICAgICAgICAgICBu
ZXdGb3JtRGF0YS0+YXBwZW5kRGF0YShieXRlcy5kYXRhKCksIGJ5dGVzLnNpemUoKSk7CiAgICAg
ICAgICAgICB9LCBbJl0gKGNvbnN0IEZvcm1EYXRhRWxlbWVudDo6RW5jb2RlZEZpbGVEYXRhJiBm
aWxlRGF0YSkgewotICAgICAgICAgICAgICAgIG5ld0Zvcm1EYXRhLT5hcHBlbmRGaWxlUmFuZ2Uo
ZmlsZURhdGEuZmlsZW5hbWUsIGZpbGVEYXRhLmZpbGVTdGFydCwgZmlsZURhdGEuZmlsZUxlbmd0
aCwgZmlsZURhdGEuZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZSwgZmlsZURhdGEuc2hvdWxk
R2VuZXJhdGVGaWxlKTsKKyAgICAgICAgICAgICAgICBuZXdGb3JtRGF0YS0+YXBwZW5kRmlsZVJh
bmdlKGZpbGVEYXRhLmZpbGVuYW1lLCBmaWxlRGF0YS5maWxlU3RhcnQsIGZpbGVEYXRhLmZpbGVM
ZW5ndGgsIGZpbGVEYXRhLmV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUpOwogICAgICAgICAg
ICAgfSwgWyZdIChjb25zdCBGb3JtRGF0YUVsZW1lbnQ6OkVuY29kZWRCbG9iRGF0YSYgYmxvYkRh
dGEpIHsKICAgICAgICAgICAgICAgICBhcHBlbmRCbG9iUmVzb2x2ZWQoYmxvYlJlZ2lzdHJ5LCBu
ZXdGb3JtRGF0YS5nZXQoKSwgYmxvYkRhdGEudXJsKTsKICAgICAgICAgICAgIH0KQEAgLTM2OCw2
NiArMzQzLDQwIEBAIFJlZjxGb3JtRGF0YT4gRm9ybURhdGE6OnJlc29sdmVCbG9iUmVmZXJlbmNl
cyhCbG9iUmVnaXN0cnkmIGJsb2JSZWdpc3RyeSkKICAgICByZXR1cm4gbmV3Rm9ybURhdGE7CiB9
CiAKLXZvaWQgRm9ybURhdGE6OmdlbmVyYXRlRmlsZXMoRG9jdW1lbnQqIGRvY3VtZW50KQorI2lm
ICFQTEFURk9STShDT0NPQSkKK1N0cmluZyBnZW5lcmF0ZUZpbGVGb3JVcGxvYWQoY29uc3QgU3Ry
aW5nJikKIHsKLSAgICBQYWdlKiBwYWdlID0gZG9jdW1lbnQtPnBhZ2UoKTsKLSAgICBpZiAoIXBh
Z2UpCi0gICAgICAgIHJldHVybjsKLQotICAgIGZvciAoYXV0byYgZWxlbWVudCA6IG1fZWxlbWVu
dHMpIHsKLSAgICAgICAgaWYgKGF1dG8qIGZpbGVEYXRhID0gV1RGOjpnZXRfaWY8Rm9ybURhdGFF
bGVtZW50OjpFbmNvZGVkRmlsZURhdGE+KGVsZW1lbnQuZGF0YSkpIHsKLSAgICAgICAgICAgIGlm
IChmaWxlRGF0YS0+c2hvdWxkR2VuZXJhdGVGaWxlKSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJU
KCFmaWxlRGF0YS0+b3duc0dlbmVyYXRlZEZpbGUpOwotICAgICAgICAgICAgICAgIEFTU0VSVChm
aWxlRGF0YS0+Z2VuZXJhdGVkRmlsZW5hbWUuaXNFbXB0eSgpKTsKLSAgICAgICAgICAgICAgICBp
ZiAoIWZpbGVEYXRhLT5nZW5lcmF0ZWRGaWxlbmFtZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIGZpbGVEYXRhLT5nZW5lcmF0ZWRGaWxl
bmFtZSA9IHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLmdlbmVyYXRlUmVwbGFjZW1lbnRGaWxlKGZp
bGVEYXRhLT5maWxlbmFtZSk7Ci0gICAgICAgICAgICAgICAgaWYgKCFmaWxlRGF0YS0+Z2VuZXJh
dGVkRmlsZW5hbWUuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgICAgICBmaWxlRGF0YS0+b3du
c0dlbmVyYXRlZEZpbGUgPSB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQot
fQotCi1ib29sIEZvcm1EYXRhOjpoYXNHZW5lcmF0ZWRGaWxlcygpIGNvbnN0Ci17Ci0gICAgZm9y
IChhdXRvJiBlbGVtZW50IDogbV9lbGVtZW50cykgewotICAgICAgICBpZiAoYXV0byogZmlsZURh
dGEgPSBXVEY6OmdldF9pZjxGb3JtRGF0YUVsZW1lbnQ6OkVuY29kZWRGaWxlRGF0YT4oZWxlbWVu
dC5kYXRhKSkgewotICAgICAgICAgICAgaWYgKCFmaWxlRGF0YS0+Z2VuZXJhdGVkRmlsZW5hbWUu
aXNFbXB0eSgpKQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAg
fQotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4geyB9OwogfQorI2VuZGlmCiAKLWJvb2wg
Rm9ybURhdGE6Omhhc093bmVkR2VuZXJhdGVkRmlsZXMoKSBjb25zdAorc3RkOjpwYWlyPFJlZjxG
b3JtRGF0YT4sIFZlY3RvcjxTdHJpbmc+PiBGb3JtRGF0YTo6Z2VuZXJhdGVGaWxlc0ZvclVwbG9h
ZCgpCiB7CisgICAgVmVjdG9yPFN0cmluZz4gZ2VuZXJhdGVkRmlsZXM7CiAgICAgZm9yIChhdXRv
JiBlbGVtZW50IDogbV9lbGVtZW50cykgewotICAgICAgICBpZiAoYXV0byogZmlsZURhdGEgPSBX
VEY6OmdldF9pZjxGb3JtRGF0YUVsZW1lbnQ6OkVuY29kZWRGaWxlRGF0YT4oZWxlbWVudC5kYXRh
KSkgewotICAgICAgICAgICAgaWYgKGZpbGVEYXRhLT5vd25zR2VuZXJhdGVkRmlsZSkgewotICAg
ICAgICAgICAgICAgIEFTU0VSVCghZmlsZURhdGEtPmdlbmVyYXRlZEZpbGVuYW1lLmlzRW1wdHko
KSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9CisgICAgICAg
IGF1dG8qIGZpbGVEYXRhID0gV1RGOjpnZXRfaWY8Rm9ybURhdGFFbGVtZW50OjpFbmNvZGVkRmls
ZURhdGE+KGVsZW1lbnQuZGF0YSk7CisgICAgICAgIGlmICghZmlsZURhdGEpCisgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgaWYgKCFGaWxlU3lzdGVtOjpmaWxlSXNEaXJlY3RvcnkoZmls
ZURhdGEtPmZpbGVuYW1lLCBGaWxlU3lzdGVtOjpTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzOjpZ
ZXMpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmIChmaWxlRGF0YS0+ZmlsZVN0
YXJ0IHx8IGZpbGVEYXRhLT5maWxlTGVuZ3RoICE9IEJsb2JEYXRhSXRlbTo6dG9FbmRPZkZpbGUp
CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKGZpbGVEYXRhLT5leHBlY3RlZEZp
bGVNb2RpZmljYXRpb25UaW1lKSB7CisgICAgICAgICAgICBhdXRvIGZpbGVNb2RpZmljYXRpb25U
aW1lID0gRmlsZVN5c3RlbTo6Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoZmlsZURhdGEtPmZpbGVu
YW1lKTsKKyAgICAgICAgICAgIGlmICghZmlsZU1vZGlmaWNhdGlvblRpbWUpCisgICAgICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgICAgICBpZiAoZmlsZU1vZGlmaWNhdGlvblRpbWUtPnNl
Y29uZHNTaW5jZUVwb2NoKCkuc2Vjb25kc0FzPHRpbWVfdD4oKSAhPSBmaWxlRGF0YS0+ZXhwZWN0
ZWRGaWxlTW9kaWZpY2F0aW9uVGltZS0+c2Vjb25kc1NpbmNlRXBvY2goKS5zZWNvbmRzQXM8dGlt
ZV90PigpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9Ci0gICAgfQotICAg
IHJldHVybiBmYWxzZTsKLX0KIAotdm9pZCBGb3JtRGF0YTo6cmVtb3ZlR2VuZXJhdGVkRmlsZXNJ
Zk5lZWRlZCgpCi17Ci0gICAgZm9yIChhdXRvJiBlbGVtZW50IDogbV9lbGVtZW50cykgewotICAg
ICAgICBpZiAoYXV0byogZmlsZURhdGEgPSBXVEY6OmdldF9pZjxGb3JtRGF0YUVsZW1lbnQ6OkVu
Y29kZWRGaWxlRGF0YT4oZWxlbWVudC5kYXRhKSkgewotICAgICAgICAgICAgaWYgKGZpbGVEYXRh
LT5vd25zR2VuZXJhdGVkRmlsZSkgewotICAgICAgICAgICAgICAgIEFTU0VSVCghZmlsZURhdGEt
PmdlbmVyYXRlZEZpbGVuYW1lLmlzRW1wdHkoKSk7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKGZp
bGVEYXRhLT5zaG91bGRHZW5lcmF0ZUZpbGUpOwotICAgICAgICAgICAgICAgIFN0cmluZyBkaXJl
Y3RvcnkgPSBGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKGZpbGVEYXRhLT5nZW5lcmF0ZWRGaWxl
bmFtZSk7Ci0gICAgICAgICAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShmaWxlRGF0YS0+
Z2VuZXJhdGVkRmlsZW5hbWUpOwotICAgICAgICAgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUVt
cHR5RGlyZWN0b3J5KGRpcmVjdG9yeSk7Ci0gICAgICAgICAgICAgICAgZmlsZURhdGEtPmdlbmVy
YXRlZEZpbGVuYW1lID0gU3RyaW5nKCk7Ci0gICAgICAgICAgICAgICAgZmlsZURhdGEtPm93bnNH
ZW5lcmF0ZWRGaWxlID0gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KKyAgICAgICAg
YXV0byBnZW5lcmF0ZWRGaWxlbmFtZSA9IGdlbmVyYXRlRmlsZUZvclVwbG9hZChmaWxlRGF0YS0+
ZmlsZW5hbWUpOworICAgICAgICBpZiAoIWdlbmVyYXRlZEZpbGVuYW1lKQorICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgIGZpbGVEYXRhLT5maWxlbmFtZSA9IGdlbmVyYXRlZEZpbGVuYW1l
OworICAgICAgICBnZW5lcmF0ZWRGaWxlcy5hcHBlbmQoV1RGTW92ZShnZW5lcmF0ZWRGaWxlbmFt
ZSkpOwogICAgIH0KKyAgICAKKyAgICByZXR1cm4geyAqdGhpcywgV1RGTW92ZShnZW5lcmF0ZWRG
aWxlcykgfTsKIH0KIAogdWludDY0X3QgRm9ybURhdGE6Omxlbmd0aEluQnl0ZXMoKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCmluZGV4IDI5ZDU1N2E2
YmEyNjNjNTI0NTZiNGJjNzBhMWNkNGQ5ZjFmNDM2NGIuLjYyYmZlZTdjYWQzNjNkMjEyM2VlZDQy
ZWFmYjdkNWQ1YzM0ZTQwNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvRm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zv
cm1EYXRhLmgKQEAgLTMxLDcgKzMxLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBC
bG9iUmVnaXN0cnk7CiBjbGFzcyBET01Gb3JtRGF0YTsKLWNsYXNzIERvY3VtZW50OwogY2xhc3Mg
RmlsZTsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFRleHRFbmNvZGluZzsKQEAgLTQ2LDgg
KzQ1LDggQEAgc3RydWN0IEZvcm1EYXRhRWxlbWVudCB7CiAgICAgICAgIDogZGF0YShXVEZNb3Zl
KGRhdGEpKSB7IH0KICAgICBleHBsaWNpdCBGb3JtRGF0YUVsZW1lbnQoVmVjdG9yPGNoYXI+JiYg
YXJyYXkpCiAgICAgICAgIDogZGF0YShXVEZNb3ZlKGFycmF5KSkgeyB9Ci0gICAgRm9ybURhdGFF
bGVtZW50KGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGludDY0X3QgZmlsZVN0YXJ0LCBpbnQ2NF90
IGZpbGVMZW5ndGgsIE9wdGlvbmFsPFdhbGxUaW1lPiBleHBlY3RlZEZpbGVNb2RpZmljYXRpb25U
aW1lLCBib29sIHNob3VsZEdlbmVyYXRlRmlsZSkKLSAgICAgICAgOiBkYXRhKEVuY29kZWRGaWxl
RGF0YSB7IGZpbGVuYW1lLCBmaWxlU3RhcnQsIGZpbGVMZW5ndGgsIGV4cGVjdGVkRmlsZU1vZGlm
aWNhdGlvblRpbWUsIHsgfSwgc2hvdWxkR2VuZXJhdGVGaWxlLCBmYWxzZSB9KSB7IH0KKyAgICBG
b3JtRGF0YUVsZW1lbnQoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgaW50NjRfdCBmaWxlU3RhcnQs
IGludDY0X3QgZmlsZUxlbmd0aCwgT3B0aW9uYWw8V2FsbFRpbWU+IGV4cGVjdGVkRmlsZU1vZGlm
aWNhdGlvblRpbWUpCisgICAgICAgIDogZGF0YShFbmNvZGVkRmlsZURhdGEgeyBmaWxlbmFtZSwg
ZmlsZVN0YXJ0LCBmaWxlTGVuZ3RoLCBleHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lIH0pIHsg
fQogICAgIGV4cGxpY2l0IEZvcm1EYXRhRWxlbWVudChjb25zdCBVUkwmIGJsb2JVUkwpCiAgICAg
ICAgIDogZGF0YShFbmNvZGVkQmxvYkRhdGEgeyBibG9iVVJMIH0pIHsgfQogCkBAIC03MywxNyAr
NzIsMTAgQEAgc3RydWN0IEZvcm1EYXRhRWxlbWVudCB7CiAgICAgICAgIGludDY0X3QgZmlsZVN0
YXJ0IHsgMCB9OwogICAgICAgICBpbnQ2NF90IGZpbGVMZW5ndGggeyAwIH07CiAgICAgICAgIE9w
dGlvbmFsPFdhbGxUaW1lPiBleHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lOwotICAgICAgICBT
dHJpbmcgZ2VuZXJhdGVkRmlsZW5hbWU7Ci0gICAgICAgIGJvb2wgc2hvdWxkR2VuZXJhdGVGaWxl
IHsgZmFsc2UgfTsKLSAgICAgICAgYm9vbCBvd25zR2VuZXJhdGVkRmlsZSB7IGZhbHNlIH07Ci0K
LSAgICAgICAgLy8gRklYTUU6IEdlbmVyYXRlZCBmaWxlIHN1cHBvcnQgaW4gRm9ybURhdGEgaXMg
YWxtb3N0IGlkZW50aWNhbCB0byBCbG9iLCB0aGV5IHNob3VsZCBiZSBtZXJnZWQuCi0gICAgICAg
IC8vIFdlIGNhbid0IGp1c3Qgc3dpdGNoIHRvIHVzaW5nIEJsb2JzIGZvciBhbGwgZmlsZXMgYmVj
YXVzZSBFbmNvZGVkRmlsZSBmb3JtIGRhdGEgZWxlbWVudHMgZG8gbm90Ci0gICAgICAgIC8vIGhh
dmUgYSB2YWxpZCBleHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lLCBtZWFuaW5nIHdlIGFsd2F5
cyB1cGxvYWQgdGhlIGxhdGVzdCBjb250ZW50IGZyb20gZGlzay4KIAogICAgICAgICBFbmNvZGVk
RmlsZURhdGEgaXNvbGF0ZWRDb3B5KCkgY29uc3QKICAgICAgICAgewotICAgICAgICAgICAgcmV0
dXJuIHsgZmlsZW5hbWUuaXNvbGF0ZWRDb3B5KCksIGZpbGVTdGFydCwgZmlsZUxlbmd0aCwgZXhw
ZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZSwgZ2VuZXJhdGVkRmlsZW5hbWUuaXNvbGF0ZWRDb3B5
KCksIHNob3VsZEdlbmVyYXRlRmlsZSwgb3duc0dlbmVyYXRlZEZpbGUgfTsKKyAgICAgICAgICAg
IHJldHVybiB7IGZpbGVuYW1lLmlzb2xhdGVkQ29weSgpLCBmaWxlU3RhcnQsIGZpbGVMZW5ndGgs
IGV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUgfTsKICAgICAgICAgfQogICAgICAgICAKICAg
ICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEVuY29kZWRGaWxlRGF0YSYgb3RoZXIpIGNvbnN0
CkBAIC05MSwxNCArODMsMTEgQEAgc3RydWN0IEZvcm1EYXRhRWxlbWVudCB7CiAgICAgICAgICAg
ICByZXR1cm4gZmlsZW5hbWUgPT0gb3RoZXIuZmlsZW5hbWUKICAgICAgICAgICAgICAgICAmJiBm
aWxlU3RhcnQgPT0gb3RoZXIuZmlsZVN0YXJ0CiAgICAgICAgICAgICAgICAgJiYgZmlsZUxlbmd0
aCA9PSBvdGhlci5maWxlTGVuZ3RoCi0gICAgICAgICAgICAgICAgJiYgZXhwZWN0ZWRGaWxlTW9k
aWZpY2F0aW9uVGltZSA9PSBvdGhlci5leHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lCi0gICAg
ICAgICAgICAgICAgJiYgZ2VuZXJhdGVkRmlsZW5hbWUgPT0gb3RoZXIuZ2VuZXJhdGVkRmlsZW5h
bWUKLSAgICAgICAgICAgICAgICAmJiBzaG91bGRHZW5lcmF0ZUZpbGUgPT0gb3RoZXIuc2hvdWxk
R2VuZXJhdGVGaWxlCi0gICAgICAgICAgICAgICAgJiYgb3duc0dlbmVyYXRlZEZpbGUgPT0gb3Ro
ZXIub3duc0dlbmVyYXRlZEZpbGU7CisgICAgICAgICAgICAgICAgJiYgZXhwZWN0ZWRGaWxlTW9k
aWZpY2F0aW9uVGltZSA9PSBvdGhlci5leHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lOwogICAg
ICAgICB9CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgICAgIHsKLSAgICAgICAgICAgIGVuY29kZXIgPDwg
ZmlsZW5hbWUgPDwgZmlsZVN0YXJ0IDw8IGZpbGVMZW5ndGggPDwgZXhwZWN0ZWRGaWxlTW9kaWZp
Y2F0aW9uVGltZSA8PCBnZW5lcmF0ZWRGaWxlbmFtZSA8PCBzaG91bGRHZW5lcmF0ZUZpbGU7Cisg
ICAgICAgICAgICBlbmNvZGVyIDw8IGZpbGVuYW1lIDw8IGZpbGVTdGFydCA8PCBmaWxlTGVuZ3Ro
IDw8IGV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWU7CiAgICAgICAgIH0KICAgICAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPEVuY29kZWRGaWxlRGF0YT4g
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgICAgIHsKQEAgLTEyMSwyNyArMTEwLDEyIEBA
IHN0cnVjdCBGb3JtRGF0YUVsZW1lbnQgewogICAgICAgICAgICAgZGVjb2RlciA+PiBleHBlY3Rl
ZEZpbGVNb2RpZmljYXRpb25UaW1lOwogICAgICAgICAgICAgaWYgKCFleHBlY3RlZEZpbGVNb2Rp
ZmljYXRpb25UaW1lKQogICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAg
ICAgICAgICAKLSAgICAgICAgICAgIE9wdGlvbmFsPFN0cmluZz4gZ2VuZXJhdGVkRmlsZW5hbWU7
Ci0gICAgICAgICAgICBkZWNvZGVyID4+IGdlbmVyYXRlZEZpbGVuYW1lOwotICAgICAgICAgICAg
aWYgKCFnZW5lcmF0ZWRGaWxlbmFtZSkKLSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwotCi0gICAgICAgICAgICBPcHRpb25hbDxib29sPiBzaG91bGRHZW5lcmF0ZUZpbGU7Ci0g
ICAgICAgICAgICBkZWNvZGVyID4+IHNob3VsZEdlbmVyYXRlRmlsZTsKLSAgICAgICAgICAgIGlm
ICghc2hvdWxkR2VuZXJhdGVGaWxlKQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CiAKLSAgICAgICAgICAgIGJvb2wgb3duc0dlbmVyYXRlZEZpbGUgPSBmYWxzZTsKLSAgICAg
ICAgICAgIAogICAgICAgICAgICAgcmV0dXJuIHt7CiAgICAgICAgICAgICAgICAgV1RGTW92ZSgq
ZmlsZW5hbWUpLAogICAgICAgICAgICAgICAgIFdURk1vdmUoKmZpbGVTdGFydCksCiAgICAgICAg
ICAgICAgICAgV1RGTW92ZSgqZmlsZUxlbmd0aCksCi0gICAgICAgICAgICAgICAgV1RGTW92ZSgq
ZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZSksCi0gICAgICAgICAgICAgICAgV1RGTW92ZSgq
Z2VuZXJhdGVkRmlsZW5hbWUpLAotICAgICAgICAgICAgICAgIFdURk1vdmUoKnNob3VsZEdlbmVy
YXRlRmlsZSksCi0gICAgICAgICAgICAgICAgV1RGTW92ZShvd25zR2VuZXJhdGVkRmlsZSkKKyAg
ICAgICAgICAgICAgICBXVEZNb3ZlKCpleHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lKQogICAg
ICAgICAgICAgfX07CiAgICAgICAgIH0KIApAQCAtMjA0LDcgKzE3OCw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgUmVmPEZvcm1EYXRhPiBjcmVhdGUoY29uc3QgVmVjdG9yPGNoYXI+Jik7CiAgICAg
c3RhdGljIFJlZjxGb3JtRGF0YT4gY3JlYXRlKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpOwogICAg
IHN0YXRpYyBSZWY8Rm9ybURhdGE+IGNyZWF0ZShjb25zdCBET01Gb3JtRGF0YSYsIEVuY29kaW5n
VHlwZSA9IEZvcm1VUkxFbmNvZGVkKTsKLSAgICBzdGF0aWMgUmVmPEZvcm1EYXRhPiBjcmVhdGVN
dWx0aVBhcnQoY29uc3QgRE9NRm9ybURhdGEmLCBEb2N1bWVudCopOworICAgIHN0YXRpYyBSZWY8
Rm9ybURhdGE+IGNyZWF0ZU11bHRpUGFydChjb25zdCBET01Gb3JtRGF0YSYpOwogICAgIFdFQkNP
UkVfRVhQT1JUIH5Gb3JtRGF0YSgpOwogCiAgICAgLy8gRklYTUU6IEJvdGggdGhlc2UgZnVuY3Rp
b25zIHBlcmZvcm0gYSBkZWVwIGNvcHkgb2YgbV9lbGVtZW50cywgYnV0IGRpZmZlciBpbiBoYW5k
bGluZyBvZiBvdGhlciBkYXRhIG1lbWJlcnMuCkBAIC0yMTgsOCArMTkyLDggQEAgcHVibGljOgog
ICAgIHN0YXRpYyBSZWZQdHI8Rm9ybURhdGE+IGRlY29kZShEZWNvZGVyJik7CiAKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGFwcGVuZERhdGEoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90KTsKLSAg
ICB2b2lkIGFwcGVuZEZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgYm9vbCBzaG91bGRHZW5l
cmF0ZUZpbGUgPSBmYWxzZSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmRGaWxlUmFu
Z2UoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgbGVu
Z3RoLCBPcHRpb25hbDxXYWxsVGltZT4gZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lLCBib29sIHNo
b3VsZEdlbmVyYXRlRmlsZSA9IGZhbHNlKTsKKyAgICB2b2lkIGFwcGVuZEZpbGUoY29uc3QgU3Ry
aW5nJiBmaWxlUGF0aCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmRGaWxlUmFuZ2Uo
Y29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgbGVuZ3Ro
LCBPcHRpb25hbDxXYWxsVGltZT4gZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKTsKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGFwcGVuZEJsb2IoY29uc3QgVVJMJiBibG9iVVJMKTsKIAogICAgIFdF
QkNPUkVfRVhQT1JUIFZlY3RvcjxjaGFyPiBmbGF0dGVuKCkgY29uc3Q7IC8vIG9taXRzIGZpbGVz
CkBAIC0yMjgsNiArMjAyLDcgQEAgcHVibGljOgogICAgIC8vIFJlc29sdmUgYWxsIGJsb2IgcmVm
ZXJlbmNlcyBzbyB3ZSBvbmx5IGhhdmUgZmlsZSBhbmQgZGF0YS4KICAgICAvLyBJZiB0aGUgRm9y
bURhdGEgaGFzIG5vIGJsb2IgcmVmZXJlbmNlcyB0byByZXNvbHZlLCB0aGlzIGlzIHJldHVybmVk
LgogICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxGb3JtRGF0YT4gcmVzb2x2ZUJsb2JSZWZlcmVuY2Vz
KEJsb2JSZWdpc3RyeSYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6cGFpcjxSZWY8Rm9ybURh
dGE+LCBWZWN0b3I8U3RyaW5nPj4gZ2VuZXJhdGVGaWxlc0ZvclVwbG9hZCgpOwogCiAgICAgYm9v
bCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9lbGVtZW50cy5pc0VtcHR5KCk7IH0KICAgICBj
b25zdCBWZWN0b3I8Rm9ybURhdGFFbGVtZW50PiYgZWxlbWVudHMoKSBjb25zdCB7IHJldHVybiBt
X2VsZW1lbnRzOyB9CkBAIC0yMzUsOSArMjEwLDYgQEAgcHVibGljOgogCiAgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gYXNTaGFyZWRCdWZmZXIoKSBjb25zdDsKIAotICAgIHZvaWQgZ2VuZXJhdGVG
aWxlcyhEb2N1bWVudCopOwotICAgIHZvaWQgcmVtb3ZlR2VuZXJhdGVkRmlsZXNJZk5lZWRlZCgp
OwotCiAgICAgYm9vbCBhbHdheXNTdHJlYW0oKSBjb25zdCB7IHJldHVybiBtX2Fsd2F5c1N0cmVh
bTsgfQogICAgIHZvaWQgc2V0QWx3YXlzU3RyZWFtKGJvb2wgYWx3YXlzU3RyZWFtKSB7IG1fYWx3
YXlzU3RyZWFtID0gYWx3YXlzU3RyZWFtOyB9CiAKQEAgLTI2NiwxNCArMjM4LDExIEBAIHByaXZh
dGU6CiAgICAgRm9ybURhdGEoKTsKICAgICBGb3JtRGF0YShjb25zdCBGb3JtRGF0YSYpOwogCi0g
ICAgdm9pZCBhcHBlbmRNdWx0aVBhcnRGaWxlVmFsdWUoY29uc3QgRmlsZSYsIFZlY3RvcjxjaGFy
PiYgaGVhZGVyLCBUZXh0RW5jb2RpbmcmLCBEb2N1bWVudCopOworICAgIHZvaWQgYXBwZW5kTXVs
dGlQYXJ0RmlsZVZhbHVlKGNvbnN0IEZpbGUmLCBWZWN0b3I8Y2hhcj4mIGhlYWRlciwgVGV4dEVu
Y29kaW5nJik7CiAgICAgdm9pZCBhcHBlbmRNdWx0aVBhcnRTdHJpbmdWYWx1ZShjb25zdCBTdHJp
bmcmLCBWZWN0b3I8Y2hhcj4mIGhlYWRlciwgVGV4dEVuY29kaW5nJik7Ci0gICAgdm9pZCBhcHBl
bmRNdWx0aVBhcnRLZXlWYWx1ZVBhaXJJdGVtcyhjb25zdCBET01Gb3JtRGF0YSYsIERvY3VtZW50
Kik7CisgICAgdm9pZCBhcHBlbmRNdWx0aVBhcnRLZXlWYWx1ZVBhaXJJdGVtcyhjb25zdCBET01G
b3JtRGF0YSYpOwogICAgIHZvaWQgYXBwZW5kTm9uTXVsdGlQYXJ0S2V5VmFsdWVQYWlySXRlbXMo
Y29uc3QgRE9NRm9ybURhdGEmLCBFbmNvZGluZ1R5cGUpOwogCi0gICAgYm9vbCBoYXNHZW5lcmF0
ZWRGaWxlcygpIGNvbnN0OwotICAgIGJvb2wgaGFzT3duZWRHZW5lcmF0ZWRGaWxlcygpIGNvbnN0
OwotCiAgICAgVmVjdG9yPEZvcm1EYXRhRWxlbWVudD4gbV9lbGVtZW50czsKIAogICAgIGludDY0
X3QgbV9pZGVudGlmaWVyIHsgMCB9OwpAQCAtMzIzLDUgKzI5Miw3IEBAIFJlZlB0cjxGb3JtRGF0
YT4gRm9ybURhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIHJldHVybiBkYXRhOwog
fQogCitTdHJpbmcgZ2VuZXJhdGVGaWxlRm9yVXBsb2FkKGNvbnN0IFN0cmluZyYpOworCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwCmluZGV4IGRmZGRlNzFhMWYw
YjkxODY3MTI2NTUwNGFjN2EzZmFkOTE5ZmQ3ZTEuLjI2ZDQ4NjYzM2QyNTJiNjNiN2Y0ZWQ5OTVj
OGMxN2ZjODZiYzNkOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcApAQCAtOTIsMTIgKzkyLDE0IEBA
IENGU3RyaW5nUmVmIGZvcm1EYXRhU3RyZWFtTGVuZ3RoUHJvcGVydHlOYW1lKCkKIH0KIAogc3Ry
dWN0IEZvcm1DcmVhdGlvbkNvbnRleHQgewotICAgIFJlZlB0cjxGb3JtRGF0YT4gZm9ybURhdGE7
CisgICAgUmVmPEZvcm1EYXRhPiBmb3JtRGF0YTsKKyAgICBWZWN0b3I8U3RyaW5nPiBnZW5lcmF0
ZWRGaWxlczsKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgc3RyZWFtTGVuZ3RoOwogfTsKIAogc3Ry
dWN0IEZvcm1TdHJlYW1GaWVsZHMgewogICAgIFJlZlB0cjxGb3JtRGF0YT4gZm9ybURhdGE7Cisg
ICAgVmVjdG9yPFN0cmluZz4gZ2VuZXJhdGVkRmlsZXM7CiAgICAgU2NoZWR1bGVQYWlySGFzaFNl
dCBzY2hlZHVsZWRSdW5Mb29wUGFpcnM7CiAgICAgVmVjdG9yPEZvcm1EYXRhRWxlbWVudD4gcmVt
YWluaW5nRWxlbWVudHM7IC8vIGluIHJldmVyc2Ugb3JkZXIKICAgICBDRlJlYWRTdHJlYW1SZWYg
Y3VycmVudFN0cmVhbTsKQEAgLTE1Myw3ICsxNTUsOCBAQCBzdGF0aWMgYm9vbCBhZHZhbmNlQ3Vy
cmVudFN0cmVhbShGb3JtU3RyZWFtRmllbGRzKiBmb3JtKQogICAgICAgICAgICAgICAgIGlmIChm
aWxlTW9kaWZpY2F0aW9uVGltZS0+c2Vjb25kc1NpbmNlRXBvY2goKS5zZWNvbmRzQXM8dGltZV90
PigpICE9IGZpbGVEYXRhLmV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUtPnNlY29uZHNTaW5j
ZUVwb2NoKCkuc2Vjb25kc0FzPHRpbWVfdD4oKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBwYXRoID0g
ZmlsZURhdGEuc2hvdWxkR2VuZXJhdGVGaWxlID8gZmlsZURhdGEuZ2VuZXJhdGVkRmlsZW5hbWUg
OiBmaWxlRGF0YS5maWxlbmFtZTsKKworICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBwYXRoID0g
ZmlsZURhdGEuZmlsZW5hbWU7CiAgICAgICAgICAgICBmb3JtLT5jdXJyZW50U3RyZWFtID0gQ0ZS
ZWFkU3RyZWFtQ3JlYXRlV2l0aEZpbGUoMCwgRmlsZVN5c3RlbTo6cGF0aEFzVVJMKHBhdGgpLmdl
dCgpKTsKICAgICAgICAgICAgIGlmICghZm9ybS0+Y3VycmVudFN0cmVhbSkgewogICAgICAgICAg
ICAgICAgIC8vIFRoZSBmaWxlIG11c3QgaGF2ZSBiZWVuIHJlbW92ZWQgb3IgYmVjb21lIHVucmVh
ZGFibGUuCkBAIC0yMTEsNiArMjE0LDcgQEAgc3RhdGljIHZvaWQqIGZvcm1DcmVhdGUoQ0ZSZWFk
U3RyZWFtUmVmIHN0cmVhbSwgdm9pZCogY29udGV4dCkKIAogICAgIEZvcm1TdHJlYW1GaWVsZHMq
IG5ld0luZm8gPSBuZXcgRm9ybVN0cmVhbUZpZWxkczsKICAgICBuZXdJbmZvLT5mb3JtRGF0YSA9
IFdURk1vdmUoZm9ybUNvbnRleHQtPmZvcm1EYXRhKTsKKyAgICBuZXdJbmZvLT5nZW5lcmF0ZWRG
aWxlcyA9IFdURk1vdmUoZm9ybUNvbnRleHQtPmdlbmVyYXRlZEZpbGVzKTsKICAgICBuZXdJbmZv
LT5jdXJyZW50U3RyZWFtID0gMDsKICAgICBuZXdJbmZvLT5jdXJyZW50U3RyZWFtUmFuZ2VMZW5n
dGggPSBCbG9iRGF0YUl0ZW06OnRvRW5kT2ZGaWxlOwogICAgIG5ld0luZm8tPmZvcm1TdHJlYW0g
PSBzdHJlYW07IC8vIERvbid0IHJldGFpbi4gVGhhdCB3b3VsZCBjcmVhdGUgYSByZWZlcmVuY2Ug
Y3ljbGUuCkBAIC0yNDAsNiArMjQ0LDggQEAgc3RhdGljIHZvaWQgZm9ybUZpbmFsaXplKENGUmVh
ZFN0cmVhbVJlZiBzdHJlYW0sIHZvaWQqIGNvbnRleHQpCiAgICAgICAgICAgICBMb2NrSG9sZGVy
IGxvY2tlcihmb3JtLT5zdHJlYW1Jc0JlaW5nT3BlbmVkT3JDbG9zZWRMb2NrKTsKICAgICAgICAg
ICAgIGNsb3NlQ3VycmVudFN0cmVhbShmb3JtKTsKICAgICAgICAgfQorICAgICAgICBmb3IgKGF1
dG8mIGdlbmVyYXRlZEZpbGUgOiBmb3JtLT5nZW5lcmF0ZWRGaWxlcykKKyAgICAgICAgICAgIEZp
bGVTeXN0ZW06OmRlbGV0ZUZpbGUoZ2VuZXJhdGVkRmlsZSk7CiAgICAgICAgIGRlbGV0ZSBmb3Jt
OwogICAgIH0pOwogfQpAQCAtMzc4LDEzICszODQsMTQgQEAgc3RhdGljIHZvaWQgZm9ybUV2ZW50
Q2FsbGJhY2soQ0ZSZWFkU3RyZWFtUmVmIHN0cmVhbSwgQ0ZTdHJlYW1FdmVudFR5cGUgdHlwZSwg
dm8KIFJldGFpblB0cjxDRlJlYWRTdHJlYW1SZWY+IGNyZWF0ZUhUVFBCb2R5Q0ZSZWFkU3RyZWFt
KEZvcm1EYXRhJiBmb3JtRGF0YSkKIHsKICAgICBhdXRvIHJlc29sdmVkRm9ybURhdGEgPSBmb3Jt
RGF0YS5yZXNvbHZlQmxvYlJlZmVyZW5jZXMoYmxvYlJlZ2lzdHJ5KCkpOworICAgIGF1dG8gZGF0
YUFuZEZpbGVzID0gcmVzb2x2ZWRGb3JtRGF0YS0+Z2VuZXJhdGVGaWxlc0ZvclVwbG9hZCgpOwog
CiAgICAgLy8gUHJlY29tcHV0ZSB0aGUgY29udGVudCBsZW5ndGggc28gQ0ZOZXR3b3JrIGRvZXNu
J3QgdXNlIGNodW5rZWQgbW9kZS4KICAgICB1bnNpZ25lZCBsb25nIGxvbmcgbGVuZ3RoID0gMDsK
LSAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiByZXNvbHZlZEZvcm1EYXRhLT5lbGVtZW50cygpKQor
ICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGRhdGFBbmRGaWxlcy5maXJzdC0+ZWxlbWVudHMoKSkK
ICAgICAgICAgbGVuZ3RoICs9IGVsZW1lbnQubGVuZ3RoSW5CeXRlcygpOwogCi0gICAgRm9ybUNy
ZWF0aW9uQ29udGV4dCogZm9ybUNvbnRleHQgPSBuZXcgRm9ybUNyZWF0aW9uQ29udGV4dCB7IFdU
Rk1vdmUocmVzb2x2ZWRGb3JtRGF0YSksIGxlbmd0aCB9OworICAgIEZvcm1DcmVhdGlvbkNvbnRl
eHQqIGZvcm1Db250ZXh0ID0gbmV3IEZvcm1DcmVhdGlvbkNvbnRleHQgeyBXVEZNb3ZlKGRhdGFB
bmRGaWxlcy5maXJzdCksIFdURk1vdmUoZGF0YUFuZEZpbGVzLnNlY29uZCksIGxlbmd0aCB9Owog
ICAgIENGUmVhZFN0cmVhbUNhbGxCYWNrc1YxIGNhbGxCYWNrcyA9IHsgMSwgZm9ybUNyZWF0ZSwg
Zm9ybUZpbmFsaXplLCBudWxscHRyLCBmb3JtT3BlbiwgbnVsbHB0ciwgZm9ybVJlYWQsIG51bGxw
dHIsIGZvcm1DYW5SZWFkLCBmb3JtQ2xvc2UsIGZvcm1Db3B5UHJvcGVydHksIG51bGxwdHIsIG51
bGxwdHIsIGZvcm1TY2hlZHVsZSwgZm9ybVVuc2NoZWR1bGUgfTsKICAgICByZXR1cm4gYWRvcHRD
RihDRlJlYWRTdHJlYW1DcmVhdGUobnVsbHB0ciwgc3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+KCZj
YWxsQmFja3MpLCBmb3JtQ29udGV4dCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9tYWMvQmxvYkRhdGFGaWxlUmVmZXJlbmNlTWFjLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQmxvYkRhdGFGaWxlUmVmZXJlbmNlTWFjLm1t
CmluZGV4IGI2OTI5MjBiMjFmYzY2MzlkNTc0NWQxYzA0NGU4Yjc4NzgyMzUwZDAuLmVjZGU5MWFi
NDFkODM4MDg0MGQ3Y2RjYmVmMDVjNGRmZDU4YzdhZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZU1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9CbG9iRGF0YUZpbGVSZWZlcmVu
Y2VNYWMubW0KQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShGSUxFX1JFUExBQ0VNRU5U
KQogCisjaW5jbHVkZSAiRm9ybURhdGEuaCIKICNpbmNsdWRlIDx3dGYvRmlsZU1ldGFkYXRhLmg+
CiAjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvU29mdExpbmtpbmcu
aD4KQEAgLTUxLDE1ICs1MiwxMiBAQCBTT0ZUX0xJTksoQm9tLCBCT01Db3BpZXJDb3B5V2l0aE9w
dGlvbnMsIGludCwgKEJPTUNvcGllciBjb3BpZXIsIGNvbnN0IGNoYXIqIGZybwogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLXZvaWQgQmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpnZW5lcmF0ZVJlcGxh
Y2VtZW50RmlsZSgpCitTdHJpbmcgZ2VuZXJhdGVGaWxlRm9yVXBsb2FkKGNvbnN0IFN0cmluZyYg
cGF0aCkKIHsKLSAgICBBU1NFUlQobV9yZXBsYWNlbWVudFBhdGguaXNOdWxsKCkpOwotICAgIEFT
U0VSVChtX3JlcGxhY2VtZW50U2hvdWxkQmVHZW5lcmF0ZWQpOwotCi0gICAgcHJlcGFyZUZvckZp
bGVBY2Nlc3MoKTsKKyAgICBTdHJpbmcgZ2VuZXJhdGVkRmlsZTsKIAogICAgIFJldGFpblB0cjxO
U0ZpbGVDb29yZGluYXRvcj4gY29vcmRpbmF0b3IgPSBhZG9wdE5TKFtbTlNGaWxlQ29vcmRpbmF0
b3IgYWxsb2NdIGluaXRXaXRoRmlsZVByZXNlbnRlcjpuaWxdKTsKLSAgICBbY29vcmRpbmF0b3Ig
Y29vcmRpbmF0ZVJlYWRpbmdJdGVtQXRVUkw6W05TVVJMIGZpbGVVUkxXaXRoUGF0aDptX3BhdGhd
IG9wdGlvbnM6TlNGaWxlQ29vcmRpbmF0b3JSZWFkaW5nV2l0aG91dENoYW5nZXMgZXJyb3I6bnVs
bHB0ciBieUFjY2Vzc29yOl4oTlNVUkwgKm5ld1VSTCkgeworICAgIFtjb29yZGluYXRvciBjb29y
ZGluYXRlUmVhZGluZ0l0ZW1BdFVSTDpbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOnBhdGhdIG9wdGlv
bnM6TlNGaWxlQ29vcmRpbmF0b3JSZWFkaW5nV2l0aG91dENoYW5nZXMgZXJyb3I6bnVsbHB0ciBi
eUFjY2Vzc29yOlsmXShOU1VSTCAqbmV3VVJMKSBtdXRhYmxlIHsKICAgICAgICAgLy8gVGhlIGFy
Y2hpdmUgaXMgcHV0IGludG8gYSBzdWJkaXJlY3Rvcnkgb2YgdGVtcG9yYXJ5IGRpcmVjdG9yeSBm
b3IgaGlzdG9yaWMgcmVhc29ucy4gQ2hhbmdpbmcgdGhpcyB3aWxsIHJlcXVpcmUgV2ViQ29yZSB0
byBjaGFuZ2UgYXQgdGhlIHNhbWUgdGltZS4KICAgICAgICAgQ1N0cmluZyBhcmNoaXZlUGF0aChb
TlNUZW1wb3JhcnlEaXJlY3RvcnkoKSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJX
ZWJLaXRHZW5lcmF0ZWRGaWxlWFhYWFhYIl0uZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKTsKICAg
ICAgICAgaWYgKG1rc3RlbXAoYXJjaGl2ZVBhdGgubXV0YWJsZURhdGEoKSkgPT0gLTEpCkBAIC03
NCwxMCArNzIsMjQgQEAgdm9pZCBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OmdlbmVyYXRlUmVwbGFj
ZW1lbnRGaWxlKCkKIAogICAgICAgICBCT01Db3BpZXIgY29waWVyID0gQk9NQ29waWVyTmV3KCk7
CiAgICAgICAgIGlmICghQk9NQ29waWVyQ29weVdpdGhPcHRpb25zKGNvcGllciwgbmV3VVJMLnBh
dGguZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uLCBhcmNoaXZlUGF0aC5kYXRhKCksIChfX2JyaWRn
ZSBDRkRpY3Rpb25hcnlSZWYpb3B0aW9ucykpCi0gICAgICAgICAgICBtX3JlcGxhY2VtZW50UGF0
aCA9IFN0cmluZzo6ZnJvbVVURjgoYXJjaGl2ZVBhdGgpOworICAgICAgICAgICAgZ2VuZXJhdGVk
RmlsZSA9IFN0cmluZzo6ZnJvbVVURjgoYXJjaGl2ZVBhdGgpOwogICAgICAgICBCT01Db3BpZXJG
cmVlKGNvcGllcik7CiAgICAgfV07CiAKKyAgICByZXR1cm4gZ2VuZXJhdGVkRmlsZTsKK30KKwor
dm9pZCBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OmdlbmVyYXRlUmVwbGFjZW1lbnRGaWxlKCkKK3sK
KyAgICBBU1NFUlQobV9yZXBsYWNlbWVudFBhdGguaXNOdWxsKCkpOworICAgIEFTU0VSVChtX3Jl
cGxhY2VtZW50U2hvdWxkQmVHZW5lcmF0ZWQpOworCisgICAgcHJlcGFyZUZvckZpbGVBY2Nlc3Mo
KTsKKworICAgIGF1dG8gZ2VuZXJhdGVkRmlsZSA9IGdlbmVyYXRlRmlsZUZvclVwbG9hZChtX3Bh
dGgpOworICAgIGlmICghZ2VuZXJhdGVkRmlsZS5pc051bGwoKSkKKyAgICAgICAgbV9yZXBsYWNl
bWVudFBhdGggPSBXVEZNb3ZlKGdlbmVyYXRlZEZpbGUpOworCiAgICAgbV9yZXBsYWNlbWVudFNo
b3VsZEJlR2VuZXJhdGVkID0gZmFsc2U7CiAgICAgaWYgKCFtX3JlcGxhY2VtZW50UGF0aC5pc051
bGwoKSkgewogICAgICAgICBpZiAoYXV0byBtZXRhZGF0YSA9IEZpbGVTeXN0ZW06OmZpbGVNZXRh
ZGF0YUZvbGxvd2luZ1N5bWxpbmtzKG1fcmVwbGFjZW1lbnRQYXRoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwv
WE1MSHR0cFJlcXVlc3QuY3BwCmluZGV4IDVjNjQ3NGZmNDdmNmQwMmFkY2JkYTI5ZWNhZDU2NGY0
YjQ2YjMwMjguLjA0MjgwMzM3ZjE4MWM2MDQ0MGE5MDU5YmMwYTI1ZDg1Y2UzZjA2ZGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApAQCAtNTMzLDggKzUzMyw3IEBAIEV4Y2Vw
dGlvbk9yPHZvaWQ+IFhNTEh0dHBSZXF1ZXN0OjpzZW5kKERPTUZvcm1EYXRhJiBib2R5KQogICAg
ICAgICByZXR1cm4gV1RGTW92ZShyZXN1bHQudmFsdWUoKSk7CiAKICAgICBpZiAobV9tZXRob2Qg
IT0gIkdFVCIgJiYgbV9tZXRob2QgIT0gIkhFQUQiKSB7Ci0gICAgICAgIG1fcmVxdWVzdEVudGl0
eUJvZHkgPSBGb3JtRGF0YTo6Y3JlYXRlTXVsdGlQYXJ0KGJvZHksIGRvY3VtZW50KCkpOwotICAg
ICAgICBtX3JlcXVlc3RFbnRpdHlCb2R5LT5nZW5lcmF0ZUZpbGVzKGRvY3VtZW50KCkpOworICAg
ICAgICBtX3JlcXVlc3RFbnRpdHlCb2R5ID0gRm9ybURhdGE6OmNyZWF0ZU11bHRpUGFydChib2R5
KTsKICAgICAgICAgaWYgKCFtX3JlcXVlc3RIZWFkZXJzLmNvbnRhaW5zKEhUVFBIZWFkZXJOYW1l
OjpDb250ZW50VHlwZSkpCiAgICAgICAgICAgICBtX3JlcXVlc3RIZWFkZXJzLnNldChIVFRQSGVh
ZGVyTmFtZTo6Q29udGVudFR5cGUsIG1ha2VTdHJpbmcoIm11bHRpcGFydC9mb3JtLWRhdGE7IGJv
dW5kYXJ5PSIsIG1fcmVxdWVzdEVudGl0eUJvZHktPmJvdW5kYXJ5KCkuZGF0YSgpKSk7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcAppbmRleCAwZTQ0NTk0Yjg5ZTY2NjQ4OWFmZjEy
OGY4YzUxYzBjNmMxYWNlMjQ5Li5iZjhhMGE2OGQ3M2JhMjRmZGYzYzE1MDhlYzdkYjBkMTVkZTQx
N2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRQYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcApAQCAtNTcsNyArNTcsNyBAQCB2b2lk
IE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNv
ZGVyKSBjb25zdAogICAgICAgICBmb3IgKHNpemVfdCBpID0gMCwgY291bnQgPSBlbGVtZW50cy5z
aXplKCk7IGkgPCBjb3VudDsgKytpKSB7CiAgICAgICAgICAgICBjb25zdCBGb3JtRGF0YUVsZW1l
bnQmIGVsZW1lbnQgPSBlbGVtZW50c1tpXTsKICAgICAgICAgICAgIGlmIChhdXRvKiBmaWxlRGF0
YSA9IFdURjo6Z2V0X2lmPEZvcm1EYXRhRWxlbWVudDo6RW5jb2RlZEZpbGVEYXRhPihlbGVtZW50
LmRhdGEpKSB7Ci0gICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBwYXRoID0gZmlsZURhdGEt
PnNob3VsZEdlbmVyYXRlRmlsZSA/IGZpbGVEYXRhLT5nZW5lcmF0ZWRGaWxlbmFtZSA6IGZpbGVE
YXRhLT5maWxlbmFtZTsKKyAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHBhdGggPSBmaWxl
RGF0YS0+ZmlsZW5hbWU7CiAgICAgICAgICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRl
SGFuZGxlKHBhdGgsIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRPbmx5LCByZXF1ZXN0Qm9k
eVNhbmRib3hFeHRlbnNpb25zW2V4dGVuc2lvbkluZGV4KytdKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRm9ybURhdGFS
ZWZlcmVuY2UuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Zvcm1EYXRhUmVmZXJlbmNl
LmgKaW5kZXggOGEzOTVhNjU3MTNhMTlhMzJlMzNkZjhkNmM4OWM5M2E2ODRjMDYzNS4uYmM0OTdj
NjIzNWZkMWU1MjhiMjNhYjU0MDIzMGUwNDBhZDYxMmRiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvRm9ybURhdGFSZWZlcmVuY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9Gb3JtRGF0YVJlZmVyZW5jZS5oCkBAIC02MCw3ICs2MCw3IEBAIHB1Ymxp
YzoKICAgICAgICAgc2l6ZV90IGV4dGVuc2lvbkluZGV4ID0gMDsKICAgICAgICAgZm9yIChhdXRv
JiBlbGVtZW50IDogZWxlbWVudHMpIHsKICAgICAgICAgICAgIGlmIChhdXRvKiBmaWxlRGF0YSA9
IFdURjo6Z2V0X2lmPFdlYkNvcmU6OkZvcm1EYXRhRWxlbWVudDo6RW5jb2RlZEZpbGVEYXRhPihl
bGVtZW50LmRhdGEpKSB7Ci0gICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBwYXRoID0gZmls
ZURhdGEtPnNob3VsZEdlbmVyYXRlRmlsZSA/IGZpbGVEYXRhLT5nZW5lcmF0ZWRGaWxlbmFtZSA6
IGZpbGVEYXRhLT5maWxlbmFtZTsKKyAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHBhdGgg
PSBmaWxlRGF0YS0+ZmlsZW5hbWU7CiAgICAgICAgICAgICAgICAgV2ViS2l0OjpTYW5kYm94RXh0
ZW5zaW9uOjpjcmVhdGVIYW5kbGUocGF0aCwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpUeXBl
OjpSZWFkT25seSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZXNbZXh0ZW5zaW9uSW5kZXgrK10pOwog
ICAgICAgICAgICAgfQogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Jlc291
cmNlcy9TYW5kYm94UHJvZmlsZXMvaW9zL2NvbS5hcHBsZS5XZWJLaXQuTmV0d29ya2luZy5zYiBi
L1NvdXJjZS9XZWJLaXQvUmVzb3VyY2VzL1NhbmRib3hQcm9maWxlcy9pb3MvY29tLmFwcGxlLldl
YktpdC5OZXR3b3JraW5nLnNiCmluZGV4IDgwNzE2ZWM2NDM0OGJmYjQ0OGVkZTY3NjJkNGMwZGQ5
YzE5Y2RmN2YuLmI2ZDFiMTg1YTRiMzljMjc0Y2M2MWI3NDg3ZjhiZmNkMjE4ZDQzYzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUmVzb3VyY2VzL1NhbmRib3hQcm9maWxlcy9pb3MvY29tLmFw
cGxlLldlYktpdC5OZXR3b3JraW5nLnNiCisrKyBiL1NvdXJjZS9XZWJLaXQvUmVzb3VyY2VzL1Nh
bmRib3hQcm9maWxlcy9pb3MvY29tLmFwcGxlLldlYktpdC5OZXR3b3JraW5nLnNiCkBAIC04Myw2
ICs4Myw3IEBACiAgICAgKGdsb2JhbC1uYW1lICJjb20uYXBwbGUucGFzc2QubGlicmFyeSIpKQog
CiAoYWxsb3cgbWFjaC1sb29rdXAKKyAgICAoZ2xvYmFsLW5hbWUgImNvbS5hcHBsZS5GaWxlQ29v
cmRpbmF0aW9uIikKICAgICAoZ2xvYmFsLW5hbWUgImNvbS5hcHBsZS5kbWQucG9saWN5IikKICAg
ICAoZ2xvYmFsLW5hbWUgImNvbS5hcHBsZS5zaXJpLmNvbnRleHQuc2VydmljZSIpCiAgICAgKGds
b2JhbC1uYW1lICJjb20uYXBwbGUuY3RjYXRlZ29yaWVzLnNlcnZpY2UiKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRC
dW5kbGVQYWdlVUlDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQuaAppbmRleCBlYWNhM2U3MTYz
ZjJhOGM3OTI1Zjc5M2M0OGUwZDNmOTc3YjdhOTc5Li45NWY0MzgyYjUyYzFhNWY3MDg0OGY5M2Mz
ODk1YjY5NDNlZGFlNzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRs
ZVBhZ2VVSUNsaWVudC5oCkBAIC01OCw5ICs1OCw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoV2ViS2l0OjpXZWJQYWdlKiwgY29uc3QgV2ViQ29y
ZTo6SGl0VGVzdFJlc3VsdCYsIE9wdGlvblNldDxXZWJLaXQ6OldlYkV2ZW50OjpNb2RpZmllcj4s
IFJlZlB0cjxBUEk6Ok9iamVjdD4mIHVzZXJEYXRhKSB7IFVOVVNFRF9QQVJBTSh1c2VyRGF0YSk7
IH0KICAgICB2aXJ0dWFsIHZvaWQgcGFnZURpZFNjcm9sbChXZWJLaXQ6OldlYlBhZ2UqKSB7IH0K
IAotICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgc2hvdWxkR2VuZXJhdGVGaWxlRm9yVXBsb2FkKFdl
YktpdDo6V2ViUGFnZSosIGNvbnN0IFdURjo6U3RyaW5nJiBvcmlnaW5hbEZpbGVQYXRoKSB7IFVO
VVNFRF9QQVJBTShvcmlnaW5hbEZpbGVQYXRoKTsgcmV0dXJuIFdURjo6U3RyaW5nKCk7IH0KLSAg
ICB2aXJ0dWFsIFdURjo6U3RyaW5nIGdlbmVyYXRlRmlsZUZvclVwbG9hZChXZWJLaXQ6OldlYlBh
Z2UqLCBjb25zdCBXVEY6OlN0cmluZyYgb3JpZ2luYWxGaWxlUGF0aCkgeyBVTlVTRURfUEFSQU0o
b3JpZ2luYWxGaWxlUGF0aCk7IHJldHVybiBlbXB0eVN0cmluZygpOyB9Ci0KICAgICBlbnVtIGNs
YXNzIFVJRWxlbWVudFZpc2liaWxpdHkgewogICAgICAgICBVbmtub3duLAogICAgICAgICBWaXNp
YmxlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5jcHAKaW5kZXggNTg2
MzNkOTc2MTgyZjc0NDYyN2FlMDU2N2VlY2ZhMjM0MTQzOWZiNi4uM2ZmYjgwMzc1ZjI0NzMwNzRm
Mjc3MzY5NTBhMWUyOGU1ZWEzZDEwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdl
VUlDbGllbnQuY3BwCkBAIC05MywyMiArOTMsNiBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZVVJ
Q2xpZW50OjpwYWdlRGlkU2Nyb2xsKFdlYlBhZ2UqIHBhZ2UpCiAgICAgbV9jbGllbnQucGFnZURp
ZFNjcm9sbCh0b0FQSShwYWdlKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKIH0KIAotU3Ry
aW5nIEluamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50OjpzaG91bGRHZW5lcmF0ZUZpbGVGb3JVcGxv
YWQoV2ViUGFnZSogcGFnZSwgY29uc3QgU3RyaW5nJiBvcmlnaW5hbEZpbGVQYXRoKQotewotICAg
IGlmICghbV9jbGllbnQuc2hvdWxkR2VuZXJhdGVGaWxlRm9yVXBsb2FkKQotICAgICAgICByZXR1
cm4gU3RyaW5nKCk7Ci0gICAgUmVmUHRyPEFQSTo6U3RyaW5nPiBnZW5lcmF0ZWRGaWxlUGF0aCA9
IGFkb3B0UmVmKHRvSW1wbChtX2NsaWVudC5zaG91bGRHZW5lcmF0ZUZpbGVGb3JVcGxvYWQodG9B
UEkocGFnZSksIHRvQVBJKG9yaWdpbmFsRmlsZVBhdGguaW1wbCgpKSwgbV9jbGllbnQuYmFzZS5j
bGllbnRJbmZvKSkpOwotICAgIHJldHVybiBnZW5lcmF0ZWRGaWxlUGF0aCA/IGdlbmVyYXRlZEZp
bGVQYXRoLT5zdHJpbmcoKSA6IFN0cmluZygpOwotfQotCi1TdHJpbmcgSW5qZWN0ZWRCdW5kbGVQ
YWdlVUlDbGllbnQ6OmdlbmVyYXRlRmlsZUZvclVwbG9hZChXZWJQYWdlKiBwYWdlLCBjb25zdCBT
dHJpbmcmIG9yaWdpbmFsRmlsZVBhdGgpCi17Ci0gICAgaWYgKCFtX2NsaWVudC5nZW5lcmF0ZUZp
bGVGb3JVcGxvYWQpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICBSZWZQdHI8QVBJOjpT
dHJpbmc+IGdlbmVyYXRlZEZpbGVQYXRoID0gYWRvcHRSZWYodG9JbXBsKG1fY2xpZW50LmdlbmVy
YXRlRmlsZUZvclVwbG9hZCh0b0FQSShwYWdlKSwgdG9BUEkob3JpZ2luYWxGaWxlUGF0aC5pbXBs
KCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pKSk7Ci0gICAgcmV0dXJuIGdlbmVyYXRlZEZp
bGVQYXRoID8gZ2VuZXJhdGVkRmlsZVBhdGgtPnN0cmluZygpIDogU3RyaW5nKCk7Ci19Ci0KIHN0
YXRpYyBBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlVUlDbGllbnQ6OlVJRWxlbWVudFZpc2liaWxp
dHkgdG9VSUVsZW1lbnRWaXNpYmlsaXR5KFdLQnVuZGxlUGFnZVVJRWxlbWVudFZpc2liaWxpdHkg
dmlzaWJpbGl0eSkKIHsKICAgICBzd2l0Y2ggKHZpc2liaWxpdHkpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VV
SUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlUGFnZVVJQ2xpZW50LmgKaW5kZXggNTlmMWIxY2NhYzE2MGI3MTYyNTM4MmRjMmRm
NWQyMmRkMGQwNGQ2MS4uNjI3ODQ0YjlhNGE2YmQ1ODNjYjUzZmU3NDU2YTM3NGRkZDA2N2U4NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlUGFnZVVJQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50LmgKQEAgLTU0LDkgKzU0LDYg
QEAgcHVibGljOgogICAgIHZvaWQgbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoV2ViUGFnZSosIGNv
bnN0IFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQmLCBPcHRpb25TZXQ8V2ViRXZlbnQ6Ok1vZGlmaWVy
PiwgUmVmUHRyPEFQSTo6T2JqZWN0PiYgdXNlckRhdGEpIG92ZXJyaWRlOwogICAgIHZvaWQgcGFn
ZURpZFNjcm9sbChXZWJQYWdlKikgb3ZlcnJpZGU7CiAKLSAgICBTdHJpbmcgc2hvdWxkR2VuZXJh
dGVGaWxlRm9yVXBsb2FkKFdlYlBhZ2UqLCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsRmlsZVBhdGgp
IG92ZXJyaWRlOwotICAgIFN0cmluZyBnZW5lcmF0ZUZpbGVGb3JVcGxvYWQoV2ViUGFnZSosIGNv
bnN0IFN0cmluZyYgb3JpZ2luYWxGaWxlUGF0aCkgb3ZlcnJpZGU7Ci0gICAgCiAgICAgVUlFbGVt
ZW50VmlzaWJpbGl0eSBzdGF0dXNCYXJJc1Zpc2libGUoV2ViUGFnZSopIG92ZXJyaWRlOwogICAg
IFVJRWxlbWVudFZpc2liaWxpdHkgbWVudUJhcklzVmlzaWJsZShXZWJQYWdlKikgb3ZlcnJpZGU7
CiAgICAgVUlFbGVtZW50VmlzaWJpbGl0eSB0b29sYmFyc0FyZVZpc2libGUoV2ViUGFnZSopIG92
ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAppbmRleCAxYTAyNGY3MTAxNTk2Nzc1ZWQ4NDE5
YmE1NjEwMjNmZDgwYjYwNDAzLi4zYzg3MmY1YWRmMzliZWFjZDNhNzA2NjdiMjY4OWQzOGM5YjEx
MTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcApAQCAtNzg5LDE3ICs3ODksNiBAQCB2b2lkIFdl
YkNocm9tZUNsaWVudDo6cmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShTZWN1cml0
eU9yaWdpbiYgb3JpZ2luLAogICAgIGNhY2hlU3RvcmFnZS5zdG9yZVVwZGF0ZWRRdW90YUZvck9y
aWdpbigmb3JpZ2luLCBuZXdRdW90YSk7CiB9CiAKLWJvb2wgV2ViQ2hyb21lQ2xpZW50OjpzaG91
bGRSZXBsYWNlV2l0aEdlbmVyYXRlZEZpbGVGb3JVcGxvYWQoY29uc3QgU3RyaW5nJiBwYXRoLCBT
dHJpbmcmIGdlbmVyYXRlZEZpbGVuYW1lKQotewotICAgIGdlbmVyYXRlZEZpbGVuYW1lID0gbV9w
YWdlLmluamVjdGVkQnVuZGxlVUlDbGllbnQoKS5zaG91bGRHZW5lcmF0ZUZpbGVGb3JVcGxvYWQo
Jm1fcGFnZSwgcGF0aCk7Ci0gICAgcmV0dXJuICFnZW5lcmF0ZWRGaWxlbmFtZS5pc051bGwoKTsK
LX0KLQotU3RyaW5nIFdlYkNocm9tZUNsaWVudDo6Z2VuZXJhdGVSZXBsYWNlbWVudEZpbGUoY29u
c3QgU3RyaW5nJiBwYXRoKQotewotICAgIHJldHVybiBtX3BhZ2UuaW5qZWN0ZWRCdW5kbGVVSUNs
aWVudCgpLmdlbmVyYXRlRmlsZUZvclVwbG9hZCgmbV9wYWdlLCBwYXRoKTsKLX0KLQogI2lmIEVO
QUJMRShJTlBVVF9UWVBFX0NPTE9SKQogCiBzdGQ6OnVuaXF1ZV9wdHI8Q29sb3JDaG9vc2VyPiBX
ZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZUNvbG9yQ2hvb3NlcihDb2xvckNob29zZXJDbGllbnQmIGNs
aWVudCwgY29uc3QgQ29sb3ImIGluaXRpYWxDb2xvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCBh
ZmI1ZjdlNGIzYzUzZGFiNDU1NzM4ZDFjNmZjMTU1ODQzNjIzMjk5Li5jZWQzNmE2YzI1YjdlNGY4
MzQ0YTU4OTk0MDA2NzkxZjdjYzkyNzZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC0xNDIsOSAr
MTQyLDYgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcmVhY2hlZE1heEFwcENhY2hlU2l6ZShpbnQ2
NF90IHNwYWNlTmVlZGVkKSBmaW5hbDsKICAgICB2b2lkIHJlYWNoZWRBcHBsaWNhdGlvbkNhY2hl
T3JpZ2luUXVvdGEoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mLCBpbnQ2NF90IHNwYWNlTmVlZGVk
KSBmaW5hbDsKLQotICAgIGJvb2wgc2hvdWxkUmVwbGFjZVdpdGhHZW5lcmF0ZWRGaWxlRm9yVXBs
b2FkKGNvbnN0IFN0cmluZyYgcGF0aCwgU3RyaW5nJiBnZW5lcmF0ZWRGaWxlbmFtZSkgZmluYWw7
Ci0gICAgU3RyaW5nIGdlbmVyYXRlUmVwbGFjZW1lbnRGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCkg
ZmluYWw7CiAgICAgCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCiAgICAgc3RkOjp1bmlx
dWVfcHRyPFdlYkNvcmU6OkNvbG9yQ2hvb3Nlcj4gY3JlYXRlQ29sb3JDaG9vc2VyKFdlYkNvcmU6
OkNvbG9yQ2hvb3NlckNsaWVudCYsIGNvbnN0IFdlYkNvcmU6OkNvbG9yJikgZmluYWw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29tLmFwcGxlLldlYlByb2Nlc3Muc2Iu
aW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29tLmFwcGxlLldlYlByb2Nlc3Muc2IuaW4K
aW5kZXggZGZkNGJkOTNkMGMzODk1YjIxMjNlN2Q0Y2JmMzFiYWYyNzE1NTYzOC4uMzk0ZDVhMjQx
MTJhZmQ2MzU2MGZmZWU3Y2UwY2QzYTJmNzNhNGVmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL2NvbS5hcHBsZS5XZWJQcm9jZXNzLnNiLmluCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9jb20uYXBwbGUuV2ViUHJvY2Vzcy5zYi5pbgpAQCAtNTg3LDkgKzU4Nyw2
IEBACiAoYWxsb3cgbWFjaC1sb29rdXAKICAgICAgICAoZ2xvYmFsLW5hbWUgImNvbS5hcHBsZS53
ZWJpbnNwZWN0b3IiKSkKIAotKGFsbG93IG1hY2gtbG9va3VwCi0gICAgKGdsb2JhbC1uYW1lICJj
b20uYXBwbGUuRmlsZUNvb3JkaW5hdGlvbiIpKQotCiA7OyBWYXJpb3VzIHNlcnZpY2VzIHJlcXVp
cmVkIGJ5IEFwcEtpdCBhbmQgb3RoZXIgZnJhbWV3b3JrcwogKGFsbG93IG1hY2gtbG9va3VwCiAj
aWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEwMTQwMApAQCAtOTc4LDE4ICs5
NzUsOSBAQAogICAgICAgICAoc3lzY2FsbC1udW1iZXIgU1lTX3N0YXQ2NF9leHRlbmRlZCkgOzsg
PHJkYXI6Ly9wcm9ibGVtLzUwNDczMzMwPgogICAgICAgICAoc3lzY2FsbC1udW1iZXIgU1lTX2xz
dGF0X2V4dGVuZGVkKQogICAgICAgICAoc3lzY2FsbC1udW1iZXIgU1lTX2xzdGF0NjRfZXh0ZW5k
ZWQpCi0gICAgICAgIChzeXNjYWxsLW51bWJlciBTWVNfaW9wb2xpY3lzeXMpCi0gICAgICAgIChz
eXNjYWxsLW51bWJlciBTWVNfd29ya3Ffb3BlbikKLSAgICAgICAgKHN5c2NhbGwtbnVtYmVyIFNZ
U19nZXRncm91cHMpCiAgICAgICAgIChzeXNjYWxsLW51bWJlciBTWVNfZmdldGF0dHJsaXN0KSA7
OyA8cmRhcjovL3Byb2JsZW0vNTA5MzExMTA+CiAgICAgICAgIChzeXNjYWxsLW51bWJlciBTWVNf
a3F1ZXVlKSA7OyA8cmRhcjovL3Byb2JsZW0vNDk2MDkyMDE+CiAgICAgICAgIChzeXNjYWxsLW51
bWJlciBTWVNfa3F1ZXVlX3dvcmtsb29wX2N0bCkgOzsgPHJkYXI6Ly9wcm9ibGVtLzUwOTk5NDk5
PgotICAgICAgICAoc3lzY2FsbC1udW1iZXIgU1lTX29wZW5fZHByb3RlY3RlZF9ucCkKLSAgICAg
ICAgKHN5c2NhbGwtbnVtYmVyIFNZU19mbGlzdHhhdHRyKQotICAgICAgICAoc3lzY2FsbC1udW1i
ZXIgU1lTX2ZzZXRhdHRybGlzdCkKLSAgICAgICAgKHN5c2NhbGwtbnVtYmVyIFNZU19mY2hvd24p
Ci0gICAgICAgIChzeXNjYWxsLW51bWJlciBTWVNfZmNoZmxhZ3MpCi0gICAgICAgIChzeXNjYWxs
LW51bWJlciBTWVNfZnN0YXQ2NF9leHRlbmRlZCkKICAgICApCiApCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RlZmF1bHREZWxlZ2F0ZXMvV2ViRGVmYXVsdFVJRGVsZWdh
dGUubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9EZWZhdWx0RGVsZWdhdGVzL1dlYkRlZmF1
bHRVSURlbGVnYXRlLm1tCmluZGV4IDM1OGFhNjlmYTRjMGQ1OTY2ODljODYxMWE0MWMyZTc5Yzlh
ZDVmM2QuLjU1MjAxYTY1ZDcxNGU3ZGEwMWRiOTI2NzM3MTAyNzFkYjljNWY3NWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RlZmF1bHREZWxlZ2F0ZXMvV2ViRGVmYXVsdFVJ
RGVsZWdhdGUubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRGVmYXVsdERlbGVnYXRl
cy9XZWJEZWZhdWx0VUlEZWxlZ2F0ZS5tbQpAQCAtMjU2LDE2ICsyNTYsNiBAQCBzdGF0aWMgV2Vi
RGVmYXVsdFVJRGVsZWdhdGUgKnNoYXJlZERlbGVnYXRlID0gbmlsOwogewogfQogCi0tIChCT09M
KXdlYlZpZXc6KFdlYlZpZXcgKilzZW5kZXIgc2hvdWxkUmVwbGFjZVVwbG9hZEZpbGU6KE5TU3Ry
aW5nICopcGF0aCB1c2luZ0dlbmVyYXRlZEZpbGVuYW1lOihOU1N0cmluZyAqKilmaWxlbmFtZQot
ewotICAgIHJldHVybiBOTzsKLX0KLQotLSAoTlNTdHJpbmcgKil3ZWJWaWV3OihXZWJWaWV3ICop
c2VuZGVyIGdlbmVyYXRlUmVwbGFjZW1lbnRGaWxlOihOU1N0cmluZyAqKXBhdGgKLXsKLSAgICBy
ZXR1cm4gbmlsOwotfQotCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIC0gKHZvaWQpd2ViVmll
d1N1cHBvcnRlZE9yaWVudGF0aW9uc1VwZGF0ZWQ6KFdlYlZpZXcgKilzZW5kZXIKIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmgKaW5kZXggYjM0MTI0OTI0MDEyZmZiYTllMDY4NWMwYmU5N2IxMjU1NzY0NDM2Yi4u
ZmRjNGNjNzgxOTZmY2JjZjMyNjAyZDE4ZTI4OWYwN2ExMTU0Y2M5NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmgKQEAgLTE1OCw5ICsxNTgsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgZW5hYmxlU3VkZGVuVGVy
bWluYXRpb24oKSBmaW5hbDsKICAgICB2b2lkIGRpc2FibGVTdWRkZW5UZXJtaW5hdGlvbigpIGZp
bmFsOwogCi0gICAgYm9vbCBzaG91bGRSZXBsYWNlV2l0aEdlbmVyYXRlZEZpbGVGb3JVcGxvYWQo
Y29uc3QgU3RyaW5nJiBwYXRoLCBTdHJpbmcgJmdlbmVyYXRlZEZpbGVuYW1lKSBmaW5hbDsKLSAg
ICBTdHJpbmcgZ2VuZXJhdGVSZXBsYWNlbWVudEZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKSBmaW5h
bDsKLQogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHZvaWQgZWxlbWVudERpZEZvY3Vz
KFdlYkNvcmU6OkVsZW1lbnQmKSBvdmVycmlkZTsKICAgICB2b2lkIGVsZW1lbnREaWRCbHVyKFdl
YkNvcmU6OkVsZW1lbnQmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbQppbmRleCAzZjk2YjRh
YjdiMzhlM2E3NjIwYzJhMDAzOWI4OTRhZTkwN2NlNzU5Li5lMWE4OTg5YzQ4YmUyNWQ1NTI0YmEz
NWVjY2RhYzlhZGE0NGI1ZjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCkBAIC04NTUsMjAgKzg1NSw2
IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpkaXNhYmxlU3VkZGVuVGVybWluYXRpb24oKQogI2Vu
ZGlmCiB9CiAKLWJvb2wgV2ViQ2hyb21lQ2xpZW50OjpzaG91bGRSZXBsYWNlV2l0aEdlbmVyYXRl
ZEZpbGVGb3JVcGxvYWQoY29uc3QgU3RyaW5nJiBwYXRoLCBTdHJpbmcmIGdlbmVyYXRlZEZpbGVu
YW1lKQotewotICAgIE5TU3RyaW5nKiBmaWxlbmFtZTsKLSAgICBpZiAoIVtbbV93ZWJWaWV3IF9V
SURlbGVnYXRlRm9yd2FyZGVyXSB3ZWJWaWV3Om1fd2ViVmlldyBzaG91bGRSZXBsYWNlVXBsb2Fk
RmlsZTpwYXRoIHVzaW5nR2VuZXJhdGVkRmlsZW5hbWU6JmZpbGVuYW1lXSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIGdlbmVyYXRlZEZpbGVuYW1lID0gZmlsZW5hbWU7Ci0gICAgcmV0dXJu
IHRydWU7Ci19Ci0KLVN0cmluZyBXZWJDaHJvbWVDbGllbnQ6OmdlbmVyYXRlUmVwbGFjZW1lbnRG
aWxlKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICByZXR1cm4gW1ttX3dlYlZpZXcgX1VJRGVs
ZWdhdGVGb3J3YXJkZXJdIHdlYlZpZXc6bV93ZWJWaWV3IGdlbmVyYXRlUmVwbGFjZW1lbnRGaWxl
OnBhdGhdOwotfQotCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiB2b2lkIFdlYkNocm9tZUNs
aWVudDo6ZWxlbWVudERpZEZvY3VzKFdlYkNvcmU6OkVsZW1lbnQmIGVsZW1lbnQpCiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlVJRGVsZWdhdGVQcml2
YXRlLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlVJRGVsZWdhdGVQcml2
YXRlLmgKaW5kZXggMWFlMmJjMjQxZjBmZjJhZTMyN2I1ZmQ5MmM5Y2FmMjAwNTIzZDlhZi4uYTBl
NzE2MWIyZTY2MTQ2OWIzMWZkNzBhNzkxMWQ0Yzg2OTI1NWRhMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJVSURlbGVnYXRlUHJpdmF0ZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVUlEZWxlZ2F0ZVByaXZhdGUuaApAQCAt
MjQ4LDkgKzI0OCw2IEBAIGV4dGVybiBOU1N0cmluZyAqV2ViQ29uc29sZU1lc3NhZ2VFcnJvck1l
c3NhZ2VMZXZlbDsKIAogLSAoV2ViVmlldyAqKXdlYlZpZXc6KFdlYlZpZXcgKilzZW5kZXIgY3Jl
YXRlV2ViVmlld1dpdGhSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IHdpbmRvd0ZlYXR1
cmVzOihOU0RpY3Rpb25hcnkgKilmZWF0dXJlczsKIAotLSAoQk9PTCl3ZWJWaWV3OihXZWJWaWV3
ICopc2VuZGVyIHNob3VsZFJlcGxhY2VVcGxvYWRGaWxlOihOU1N0cmluZyAqKXBhdGggdXNpbmdH
ZW5lcmF0ZWRGaWxlbmFtZTooTlNTdHJpbmcgKiopZmlsZW5hbWU7Ci0tIChOU1N0cmluZyAqKXdl
YlZpZXc6KFdlYlZpZXcgKilzZW5kZXIgZ2VuZXJhdGVSZXBsYWNlbWVudEZpbGU6KE5TU3RyaW5n
ICopcGF0aDsKLQogLyohCiAgICAgQG1ldGhvZCB3ZWJWaWV3OmRlY2lkZVBvbGljeUZvckdlb2xv
Y2F0aW9uUmVxdWVzdEZyb21PcmlnaW46ZnJhbWU6bGlzdGVuZXI6CiAgICAgQHBhcmFtIHdlYlZp
ZXcgVGhlIFdlYlZpZXcgc2VuZGluZyB0aGUgZGVsZWdhdGUgbWV0aG9kLgpkaWZmIC0tZ2l0IGEv
VG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGZkYjM3NjI1ZDc5NGExNzIz
NmY5MzFjODM4Y2UyZDk0NzQ3Njk5Y2EuLjQxMTI2MDNmMjMxZjYxMWI0MDA3ZDhlNGRhYTU2ZDQx
MjdiZDI4YzUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyNCBAQAorMjAxOS0wNy0zMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJp
c3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIE1vdmUgRm9ybURhdGEgemlwIGZpbGUgZ2Vu
ZXJhdGlvbiB0byBOZXR3b3JrUHJvY2VzcyBhbmQgZW5hYmxlIGl0IGZvciBhbGwgV2ViS2l0IGNs
aWVudHMgZm9yIHVwbG9hZGluZyBkaXJlY3RvcmllcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwMTAyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81
MzI3NTExND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGQgYW4gQVBJIHRlc3QgdGhhdCBpcyBNYWMtb25seSByaWdodCBub3cgYmVjYXVzZSBydW5P
cGVuUGFuZWxXaXRoUGFyYW1ldGVycyBpcyBvbmx5IHN1cHBvcnRlZCBvbiBNYWMgZm9yIHNvbWUg
cmVhc29uCisgICAgICAgIGFuZCBiZWNhdXNlIGNsaWNraW5nIG9uIGEgVGVzdFdLV2ViVmlldyBv
bmx5IHdvcmtzIG9uIE1hYy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQ
SS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvVXBsb2FkRGlyZWN0b3J5Lm1tOiBBZGRlZC4KKyAgICAgICAgKC1bVXBs
b2FkRGVsZWdhdGUgaW5pdFdpdGhEaXJlY3Rvcnk6XSk6CisgICAgICAgICgtW1VwbG9hZERlbGVn
YXRlIHdlYlZpZXc6cnVuT3BlblBhbmVsV2l0aFBhcmFtZXRlcnM6aW5pdGlhdGVkQnlGcmFtZTpj
b21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bVXBsb2FkRGVsZWdhdGUgc2VudERpcmVj
dG9yeV0pOgorICAgICAgICAoVEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9U
ZXN0V0tXZWJWaWV3Lmg6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJW
aWV3Lm1tOgorICAgICAgICAoLVtUZXN0V0tXZWJWaWV3IHNlbmRDbGlja0F0UG9pbnQ6XSk6CisK
IDIwMTktMDctMzEgIExvw69jIFlodWVsICA8bG9pYy55aHVlbEBzb2Z0YXRob21lLmNvbT4KIAog
ICAgICAgICBbR1RLXVtXUEVdIEZpeCBndGtkb2MgYnVpbGQgd2l0aCAiYnVpbGQtd2Via2l0IC0t
MzItYml0IiBvbiA2NC1iaXQgaG9zdHMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNWQ2MTdm
ZDRjNmJmMWZiNmY3ZmQ4ODcyZDFhZmYyMDQ5NjVkNWVkMi4uMjk4NTViODQwNGNjZThjYWEyOGIx
OTgwYjNkZjc2N2VkMzg1MjYwYiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTMyOSw2ICsz
MjksNyBAQAogCQk1QzIzREYwQjIyNDYwMTU4MDBGNDU0QjYgLyogQ2hhbGxlbmdlLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMyM0RGMEEyMjQ1QzlE
NzAwRjQ1NEI2IC8qIENoYWxsZW5nZS5tbSAqLzsgfTsKIAkJNUMyOTM2OTMxRDVCRjcwRDAwREVB
QjFFIC8qIENvb2tpZUFjY2VwdFBvbGljeS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDVDMjkzNjkxMUQ1QkY2M0UwMERFQUIxRSAvKiBDb29raWVBY2Nl
cHRQb2xpY3kubW0gKi87IH07CiAJCTVDMjkzNjk2MUQ1QzAwRUQwMERFQUIxRSAvKiBDb29raWVN
ZXNzYWdlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNUMyOTM2OTQxRDVCRkQxOTAwREVBQjFFIC8qIENvb2tpZU1lc3NhZ2UuaHRtbCAq
LzsgfTsKKwkJNUMzQTc3QUEyMkYyMEJFQTAwMzgyN0ZGIC8qIFVwbG9hZERpcmVjdG9yeS5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDM0E3N0E5MjJG
MjBCOEEwMDM4MjdGRiAvKiBVcGxvYWREaXJlY3RvcnkubW0gKi87IH07CiAJCTVDM0IxRDI2MjJB
NzRGNjcwMEJDRjREMCAvKiBDb250ZXh0TWVudXMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzNCMUQyNTIyQTc0RUE0MDBCQ0Y0RDAgLyogQ29udGV4
dE1lbnVzLm1tICovOyB9OwogCQk1QzQyNTk0NjIyNjZBNjhBMDAzOUFBN0EgLyogQmFzaWNQcm9w
b3NlZENyZWRlbnRpYWxQbHVnSW4ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1QzQyNTk0NDIyNjY5RTlCMDAzOUFBN0EgLyogQmFzaWNQcm9wb3NlZENy
ZWRlbnRpYWxQbHVnSW4ubW0gKi87IH07CiAJCTVDNEE4NDk1MUY3RUVGRkMwMEFDRkM1NCAvKiBD
b25maWd1cmF0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNUM0QTg0OTQxRjdFRUZENDAwQUNGQzU0IC8qIENvbmZpZ3VyYXRpb24ubW0gKi87IH07
CkBAIC0xODA0LDYgKzE4MDUsNyBAQAogCQk1QzIzREYwQTIyNDVDOUQ3MDBGNDU0QjYgLyogQ2hh
bGxlbmdlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQ2hhbGxl
bmdlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzI5MzY5MTFENUJGNjNFMDBE
RUFCMUUgLyogQ29va2llQWNjZXB0UG9saWN5Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gQ29va2llQWNjZXB0UG9saWN5Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1QzI5MzY5NDFENUJGRDE5MDBERUFCMUUgLyogQ29va2llTWVzc2FnZS5odG1s
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gQ29va2llTWVzc2FnZS5odG1sOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk1QzNBNzdBOTIyRjIwQjhBMDAzODI3RkYgLyogVXBsb2Fk
RGlyZWN0b3J5Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVXBs
b2FkRGlyZWN0b3J5Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzNCMUQyNTIy
QTc0RUE0MDBCQ0Y0RDAgLyogQ29udGV4dE1lbnVzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gQ29udGV4dE1lbnVzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1QzQyNTk0NDIyNjY5RTlCMDAzOUFBN0EgLyogQmFzaWNQcm9wb3NlZENyZWRlbnRp
YWxQbHVnSW4ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBCYXNp
Y1Byb3Bvc2VkQ3JlZGVudGlhbFBsdWdJbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNUM0QTg0OTQxRjdFRUZENDAwQUNGQzU0IC8qIENvbmZpZ3VyYXRpb24ubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDb25maWd1cmF0aW9uLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjgxMiw2ICsyODE0LDcgQEAKIAkJCQlGNENENzRDODIw
RkRCNDk2MDBERTM3OTQgLyogVGVzdFVSTFNjaGVtZUhhbmRsZXIubW0gKi8sCiAJCQkJQzIyRkEz
MkEyMjhGODcwODAwOUQ3OTg4IC8qIFRleHRXaWR0aC5tbSAqLywKIAkJCQk1Q0I0MEI0RDFGNEI5
OEJFMDA3REM3QjkgLyogVUlEZWxlZ2F0ZS5tbSAqLywKKwkJCQk1QzNBNzdBOTIyRjIwQjhBMDAz
ODI3RkYgLyogVXBsb2FkRGlyZWN0b3J5Lm1tICovLAogCQkJCTdDQzNFMUZBMTk3RTIzNDEwMEJF
NjI1MiAvKiBVc2VyQ29udGVudENvbnRyb2xsZXIubW0gKi8sCiAJCQkJN0M4ODJFMDMxQzgwQzYy
NDAwNkJGNzMxIC8qIFVzZXJDb250ZW50V29ybGQubW0gKi8sCiAJCQkJN0M4ODJFMDQxQzgwQzYy
NDAwNkJGNzMxIC8qIFVzZXJDb250ZW50V29ybGRQbHVnSW4ubW0gKi8sCkBAIC00NjMxLDYgKzQ2
MzQsNyBAQAogCQkJCTVDOUQ5MjNBMjJEN0UyQjAwMDhFOTI2NiAvKiBVbmlmaWVkU291cmNlNC1t
bS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTVDOUQ5MjNDMjJEN0UyQjAwMDhFOTI2NiAvKiBVbmlm
aWVkU291cmNlNS1tbS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTVDOUQ5MjNEMjJEN0UyQjAwMDhF
OTI2NiAvKiBVbmlmaWVkU291cmNlNS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1QzNBNzdBQTIy
RjIwQkVBMDAzODI3RkYgLyogVXBsb2FkRGlyZWN0b3J5Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NUM2RTI3QTcyMjRFRUJFQTAwMTI4NzM2IC8qIFVSTENhbm9uaWNhbGl6YXRpb24ubW0gaW4gU291
cmNlcyAqLywKIAkJCQlFM0ExRTc3RjIxQjI1QjM5MDA4QzYwMDcgLyogVVJMUGFyc2VyVGV4dEVu
Y29kaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RjI3MUE0MTFBRjYwMDQ0N0M0QyAv
KiBVc2VyQ29udGVudENvbnRyb2xsZXIubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVXBsb2FkRGlyZWN0b3J5Lm1tIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9VcGxvYWREaXJlY3RvcnkubW0K
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uODQ5Mjc4YjRmMzhmNjBkNzc5NDRhZjYxMDc0NGU1YzUwZTk0NTMxZgotLS0g
L2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVXBs
b2FkRGlyZWN0b3J5Lm1tCkBAIC0wLDAgKzEsMTIyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAi
Y29uZmlnLmgiCisKKyNpZiBQTEFURk9STShNQUMpCisKKyNpbXBvcnQgIkRyYWdBbmREcm9wU2lt
dWxhdG9yLmgiCisjaW1wb3J0ICJUQ1BTZXJ2ZXIuaCIKKyNpbXBvcnQgIlRlc3ROYXZpZ2F0aW9u
RGVsZWdhdGUuaCIKKyNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKKyNpbXBvcnQgIlV0aWxpdGll
cy5oIgorI2ltcG9ydCA8V2ViS2l0L1dlYktpdC5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5o
PgorI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK0BpbnRlcmZhY2UgVXBsb2FkRGVs
ZWdhdGUgOiBOU09iamVjdCA8V0tVSURlbGVnYXRlPgorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRo
RGlyZWN0b3J5OihOU1VSTCAqKWRpcmVjdG9yeTsKKy0gKEJPT0wpc2VudERpcmVjdG9yeTsKK0Bl
bmQKKworQGltcGxlbWVudGF0aW9uIFVwbG9hZERlbGVnYXRlIHsKKyAgICBSZXRhaW5QdHI8TlNV
Ukw+IF9kaXJlY3Rvcnk7CisgICAgQk9PTCBfc2VudERpcmVjdG9yeTsKK30KKworLSAoaW5zdGFu
Y2V0eXBlKWluaXRXaXRoRGlyZWN0b3J5OihOU1VSTCAqKWRpcmVjdG9yeQoreworICAgIGlmICgh
KHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOworICAgIF9kaXJlY3Rv
cnkgPSBkaXJlY3Rvcnk7CisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpd2ViVmlldzoo
V0tXZWJWaWV3ICopd2ViVmlldyBydW5PcGVuUGFuZWxXaXRoUGFyYW1ldGVyczooV0tPcGVuUGFu
ZWxQYXJhbWV0ZXJzICopcGFyYW1ldGVycyBpbml0aWF0ZWRCeUZyYW1lOihXS0ZyYW1lSW5mbyAq
KWZyYW1lIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU0FycmF5PE5TVVJMICo+ICogX051
bGxhYmxlIFVSTHMpKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgY29tcGxldGlvbkhhbmRsZXIo
QFtfZGlyZWN0b3J5LmdldCgpXSk7CisgICAgX3NlbnREaXJlY3RvcnkgPSBZRVM7Cit9CisKKy0g
KEJPT0wpc2VudERpcmVjdG9yeQoreworICAgIHJldHVybiBfc2VudERpcmVjdG9yeTsKK30KKwor
QGVuZAorCitURVNUKFdlYktpdCwgVXBsb2FkRGlyZWN0b3J5KQoreworICAgIE5TRmlsZU1hbmFn
ZXIgKmZpbGVNYW5hZ2VyID0gW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdOworICAgIE5T
RXJyb3IgKmVycm9yID0gbmlsOworICAgIE5TVVJMICpkaXJlY3RvcnkgPSBbTlNVUkwgZmlsZVVS
TFdpdGhQYXRoOltOU1RlbXBvcmFyeURpcmVjdG9yeSgpIHN0cmluZ0J5QXBwZW5kaW5nUGF0aENv
bXBvbmVudDpAIlVwbG9hZERpcmVjdG9yeSJdIGlzRGlyZWN0b3J5OllFU107CisgICAgRVhQRUNU
X0ZBTFNFKFtmaWxlTWFuYWdlciBmaWxlRXhpc3RzQXRQYXRoOmRpcmVjdG9yeS5wYXRoXSk7Cisg
ICAgRVhQRUNUX1RSVUUoW2ZpbGVNYW5hZ2VyIGNyZWF0ZURpcmVjdG9yeUF0VVJMOmRpcmVjdG9y
eSB3aXRoSW50ZXJtZWRpYXRlRGlyZWN0b3JpZXM6WUVTIGF0dHJpYnV0ZXM6bmlsIGVycm9yOiZl
cnJvcl0pOworICAgIEVYUEVDVF9GQUxTRShlcnJvcik7CisgICAgTlNEYXRhICp0ZXN0RGF0YSA9
IFtAInRlc3RkYXRhIiBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ107Cisg
ICAgRVhQRUNUX1RSVUUoW2ZpbGVNYW5hZ2VyIGNyZWF0ZUZpbGVBdFBhdGg6W2RpcmVjdG9yeS5w
YXRoIHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAInRlc3RmaWxlIl0gY29udGVudHM6
dGVzdERhdGEgYXR0cmlidXRlczpuaWxdKTsKKworICAgIHsKKyAgICAgICAgdXNpbmcgbmFtZXNw
YWNlIFRlc3RXZWJLaXRBUEk7CisgICAgICAgIFRDUFNlcnZlciBzZXJ2ZXIoW10gKGludCBzb2Nr
ZXQpIHsKKyAgICAgICAgICAgIFRDUFNlcnZlcjo6cmVhZChzb2NrZXQpOworICAgICAgICAgICAg
Y29uc3QgY2hhciogcmVzcG9uc2UgPQorICAgICAgICAgICAgIkhUVFAvMS4xIDIwMCBPS1xyXG4i
CisgICAgICAgICAgICAiQ29udGVudC1UeXBlOiB0ZXh0L2h0bWxcclxuIgorICAgICAgICAgICAg
IkNvbnRlbnQtTGVuZ3RoOiAxMjNcclxuXHJcbiIKKyAgICAgICAgICAgICI8Zm9ybSBpZD0nZm9y
bScgYWN0aW9uPScvdXBsb2FkLnBocCcgbWV0aG9kPSdwb3N0JyBlbmN0eXBlPSdtdWx0aXBhcnQv
Zm9ybS1kYXRhJz48aW5wdXQgdHlwZT0nZmlsZScgbmFtZT0ndGVzdG5hbWUnPjwvZm9ybT4iOwor
ICAgICAgICAgICAgVENQU2VydmVyOjp3cml0ZShzb2NrZXQsIHJlc3BvbnNlLCBzdHJsZW4ocmVz
cG9uc2UpKTsKKworICAgICAgICAgICAgYXV0byBoZWFkZXIgPSBUQ1BTZXJ2ZXI6OnJlYWQoc29j
a2V0KTsKKyAgICAgICAgICAgIEVYUEVDVF9UUlVFKFN0cmluZyhoZWFkZXIuZGF0YSgpLCBoZWFk
ZXIuc2l6ZSgpKS5jb250YWlucygiQ29udGVudC1MZW5ndGg6IDU0MyIpKTsKKyAgICAgICAgICAg
IHNpemVfdCBib2R5Qnl0ZXNSZWFkID0gMDsKKyAgICAgICAgICAgIHdoaWxlIChib2R5Qnl0ZXNS
ZWFkIDwgNTQzKQorICAgICAgICAgICAgICAgIGJvZHlCeXRlc1JlYWQgKz0gVENQU2VydmVyOjpy
ZWFkKHNvY2tldCkuc2l6ZSgpOworICAgICAgICAgICAgRVhQRUNUX0VRKGJvZHlCeXRlc1JlYWQs
IDU0M3VsbCk7CisgICAgICAgICAgICBjb25zdCBjaGFyKiBzZWNvbmRSZXNwb25zZSA9CisgICAg
ICAgICAgICAiSFRUUC8xLjEgMjAwIE9LXHJcbiIKKyAgICAgICAgICAgICJDb250ZW50LUxlbmd0
aDogMFxyXG5cclxuIjsKKyAgICAgICAgICAgIFRDUFNlcnZlcjo6d3JpdGUoc29ja2V0LCBzZWNv
bmRSZXNwb25zZSwgc3RybGVuKHNlY29uZFJlc3BvbnNlKSk7CisgICAgICAgIH0pOworCisgICAg
ICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0
aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgODAwLCA2MDApXSk7CisgICAgICAgIGF1dG8gZGVsZWdh
dGUgPSBhZG9wdE5TKFtbVXBsb2FkRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoRGlyZWN0b3J5OmRp
cmVjdG9yeV0pOworICAgICAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOmRlbGVnYXRlLmdldCgp
XTsKKworICAgICAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFJlcXVlc3Q6W05TVVJMUmVx
dWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5n
V2l0aEZvcm1hdDpAImh0dHA6Ly8xMjcuMC4wLjE6JWQvIiwgc2VydmVyLnBvcnQoKV1dXV07CisK
KyAgICAgICAgYXV0byBjaG9vc2VGaWxlQnV0dG9uTG9jYXRpb24gPSBOU01ha2VQb2ludCgxMCwg
NTkwKTsKKyAgICAgICAgW3dlYlZpZXcgc2VuZENsaWNrQXRQb2ludDpjaG9vc2VGaWxlQnV0dG9u
TG9jYXRpb25dOworICAgICAgICB3aGlsZSAoIVtkZWxlZ2F0ZSBzZW50RGlyZWN0b3J5XSkKKyAg
ICAgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnNwaW5SdW5Mb29wKCk7CisgICAgICAgIFt3
ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdDpAImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmb3Jt
Jykuc3VibWl0KCkiIGNvbXBsZXRpb25IYW5kbGVyOm5pbF07CisgICAgICAgIFt3ZWJWaWV3IF90
ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKKyAgICB9CisKKyAgICBFWFBFQ1RfVFJV
RShbZmlsZU1hbmFnZXIgcmVtb3ZlSXRlbUF0UGF0aDpkaXJlY3RvcnkucGF0aCBlcnJvcjomZXJy
b3JdKTsKKyAgICBFWFBFQ1RfRkFMU0UoZXJyb3IpOworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5oIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3LmgKaW5kZXggZWRlMDY4MDMyMTVhM2Q1ZjgzZDQ0
YmY4OWY2MGMxZTNiNzFmNTUxOC4uZjBmZWQ1ZDhmOGI0NDBmYjk0Y2UyM2YxNGVlZDczZWM3NjZj
ZmUwNCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3
LmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3LmgKQEAgLTEw
Niw2ICsxMDYsNyBAQAogLSAodm9pZCltb3VzZVVwQXRQb2ludDooTlNQb2ludClwb2ludEluV2lu
ZG93OwogLSAodm9pZCltb3VzZU1vdmVUb1BvaW50OihOU1BvaW50KXBvaW50SW5XaW5kb3cgd2l0
aEZsYWdzOihOU0V2ZW50TW9kaWZpZXJGbGFncylmbGFnczsKIC0gKHZvaWQpc2VuZENsaWNrc0F0
UG9pbnQ6KE5TUG9pbnQpcG9pbnRJbldpbmRvdyBudW1iZXJPZkNsaWNrczooTlNVSW50ZWdlcilu
dW1iZXJPZkNsaWNrczsKKy0gKHZvaWQpc2VuZENsaWNrQXRQb2ludDooTlNQb2ludClwb2ludElu
V2luZG93OwogLSAoTlNXaW5kb3cgKilob3N0V2luZG93OwogLSAodm9pZCl0eXBlQ2hhcmFjdGVy
OihjaGFyKWNoYXJhY3RlcjsKIEBlbmQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
Y29jb2EvVGVzdFdLV2ViVmlldy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdL
V2ViVmlldy5tbQppbmRleCAzZGE4MTcyNjFlMTdjMzkyNDM0OWQxNzE3YTY2ZmNkYzc5MDZmOTVm
Li41NDZjYTZlMjIyZDlmZWE4MWNlN2JlNGUyYzJkMzk4NWM1YjQ0ZjBmIDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0KKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCkBAIC01OTMsNiArNTkzLDExIEBAIHN0
YXRpYyBXS0NvbnRlbnRWaWV3ICpyZWN1cnNpdmVGaW5kV0tDb250ZW50VmlldyhVSVZpZXcgKnZp
ZXcpCiAgICAgfQogfQogCistICh2b2lkKXNlbmRDbGlja0F0UG9pbnQ6KE5TUG9pbnQpcG9pbnRJ
bldpbmRvdworeworICAgIFtzZWxmIHNlbmRDbGlja3NBdFBvaW50OnBvaW50SW5XaW5kb3cgbnVt
YmVyT2ZDbGlja3M6MV07Cit9CisKIC0gKHZvaWQpbW91c2VFbnRlckF0UG9pbnQ6KE5TUG9pbnQp
cG9pbnRJbldpbmRvdwogewogICAgIFtzZWxmIG1vdXNlRW50ZXJlZDpbc2VsZiBfbW91c2VFdmVu
dFdpdGhUeXBlOk5TRXZlbnRUeXBlTW91c2VFbnRlcmVkIGF0TG9jYXRpb246cG9pbnRJbldpbmRv
d11dOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>375293</attachid>
            <date>2019-07-31 22:43:05 -0700</date>
            <delta_ts>2019-08-01 07:15:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200102-20190731224304.patch</filename>
            <type>text/plain</type>
            <size>71159</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4MDg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGM3ODYwNTg0OTcyNTE5NTJhZjY5ZDZi
MWU3OTg4NzZhNGEzNTVjNTYuLmMyMzZmYjJiYWE5NzMyMzZlMDVjOGVjZDFlNzg1NDZjOGI4MTA5
MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTktMDctMzEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBNb3ZlIEZvcm1EYXRhIHppcCBmaWxl
IGdlbmVyYXRpb24gdG8gTmV0d29ya1Byb2Nlc3MgYW5kIGVuYWJsZSBpdCBmb3IgYWxsIFdlYktp
dCBjbGllbnRzIGZvciB1cGxvYWRpbmcgZGlyZWN0b3JpZXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDEwMgorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vNTMyNzUxMTQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgTW92ZSBjb2RlIGZyb20gQmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpnZW5lcmF0ZVJlcGxh
Y2VtZW50RmlsZSB0byBGaWxlU3lzdGVtOjpjcmVhdGVaaXBBcmNoaXZlLgorCisgICAgICAgICog
d3RmL0ZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6Y3JlYXRl
WmlwQXJjaGl2ZSk6CisgICAgICAgICogd3RmL0ZpbGVTeXN0ZW0uaDoKKyAgICAgICAgKiB3dGYv
Y29jb2EvRmlsZVN5c3RlbUNvY29hLm1tOgorICAgICAgICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6
Y3JlYXRlWmlwQXJjaGl2ZSk6CisKIDIwMTktMDctMzEgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5A
YXBwbGUuY29tPgogCiAgICAgICAgIFVzZSBDVEZvbnRDcmVhdGVGb3JDaGFyYWN0ZXJzV2l0aExh
bmd1YWdlQW5kT3B0aW9uIGlmIGF2YWlsYWJsZSBpbnN0ZWFkIG9mIENURm9udENyZWF0ZUZvckNo
YXJhY3RlcnNXaXRoTGFuZ3VhZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiYTk1ZjJjMzNjODVhM2Y2ZGU2MmU2
NDI2MDQ5NmUyNTBkOTA3YTU3Li4yNzczMGFhNTJiN2M3OTk1MjFhY2EzOGQ1OWE1NTA4YzBhYTZh
NjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzEgQEAKKzIwMTktMDctMzEgIEFsZXggQ2hyaXN0
ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBNb3ZlIEZvcm1EYXRh
IHppcCBmaWxlIGdlbmVyYXRpb24gdG8gTmV0d29ya1Byb2Nlc3MgYW5kIGVuYWJsZSBpdCBmb3Ig
YWxsIFdlYktpdCBjbGllbnRzIGZvciB1cGxvYWRpbmcgZGlyZWN0b3JpZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDEwMgorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNTMyNzUxMTQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIu
CisKKyAgICAgICAgVG8gZW5hYmxlIGRpcmVjdG9yeSB1cGxvYWRpbmcgaW4gV2ViS2l0Miwgd2Ug
ZXh0ZW5kZWQgV2ViS2l0MSdzIG1vZGVsIG9mIGFza2luZyB0aGUgYXBwbGljYXRpb24gdG8gZ2Vu
ZXJhdGUgYSBmaWxlIGZvciB1cGxvYWRpbmcuCisgICAgICAgIFRoaXMgbWVhbnMgdGhlIFdlYlBy
b2Nlc3MgbmVlZGVkIGFjY2VzcyB0byBldmVyeXRoaW5nIG5lY2Vzc2FyeSB0byB6aXAgYSB3aG9s
ZSBkaXJlY3RvcnksIGFuZCBjbGllbnRzIHRoYXQgaGF2ZSBub3QgaW1wbGVtZW50ZWQKKyAgICAg
ICAgdGhlIHN0cmFuZ2UgV0tCdW5kbGVQYWdlVUlDbGllbnQgY2FsbGJhY2tzIHdvbid0IGJlIGFi
bGUgdG8gdXBsb2FkIGRpcmVjdG9yaWVzLiAgU2FmYXJpJ3MgaW1wbGVtZW50YXRpb24gaGFkIGFs
cmVhZHkgYmVlbiBjb3BpZWQKKyAgICAgICAgdG8gQmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpnZW5l
cmF0ZVJlcGxhY2VtZW50RmlsZSwgc28gSSByZXVzZWQgdGhhdCBjb2RlIHRvIGRvIHRoZSB6aXBw
aW5nLiAgSW5zdGVhZCBvZiBhIGNvbXBsaWNhdGVkIG1vZGVsIG9mCisgICAgICAgIGtlZXBpbmcg
dHJhY2sgb2YgYSBmaWxlbmFtZSwgcG9zc2libHkgYSBnZW5lcmF0ZWQgZmlsZW5hbWUsIGFuZCB3
aGV0aGVyIHdlIHRoaW5rIHdlIG93biB0aGUgZmlsZSBvciBub3QgYW5kIGhhdmluZyBub2JvZHkg
Y2xlYW4gdXAsCisgICAgICAgIHdlIG5vdyBkbyB0aGUgZ2VuZXJhdGlvbiwgdXNlLCBhbmQgY2xl
YW5pbmcgdXAgaW4gdGhlIG5ldHdvcmsgcHJvY2VzcyBzdGFydGluZyB3aXRoIGEgbmV3IGZ1bmN0
aW9uIGdlbmVyYXRlRmlsZXNGb3JVcGxvYWQuCisgICAgICAgIFRoaXMgcmVtb3ZlcyB1bmltcGxl
bWVudGVkIFNQSSBpbiBXZWJVSURlbGVnYXRlUHJpdmF0ZSBpbiBXZWJLaXRMZWdhY3kgYW5kIHN0
b3BzIGNhbGxpbmcgdGhlIFdLQnVuZGxlUGFnZVVJQ2xpZW50IHJlbGF0ZWQgdG8gdXBsb2FkCisg
ICAgICAgIGZpbGUgZ2VuZXJhdGlvbiBhbmQgcmVwbGFjZXMgdGhlbSB3aXRoIGF1dG9tYXRpYyBi
ZWhhdmlvciBlcXVpdmFsZW50IHRvIFNhZmFyaSdzIGltcGxlbWVudGF0aW9uIG9mIHRoZSBXS0J1
bmRsZVBhZ2VVSUNsaWVudCBjYWxscy4KKyAgICAgICAgU2luY2Ugd2Ugbm8gbG9uZ2VyIG5lZWQg
dG8gZG8gdGhlc2UgZmlsZSBvcGVyYXRpb25zIGluIHRoZSBXZWJQcm9jZXNzLCBJIGFtIGFsc28g
cmV2ZXJ0aW5nIHIyNDUzMjIgYW5kIHIyNDYwNzcgd2hpY2ggdGlnaHRlbnMgdGhlIHNhbmRib3gu
CisKKyAgICAgICAgQ292ZXJlZCBieSBhbiBBUEkgdGVzdC4KKworICAgICAgICAqIE1vZHVsZXMv
ZmV0Y2gvRmV0Y2hCb2R5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6ZXh0cmFj
dCk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmJvZHlBc0Zvcm1EYXRhIGNvbnN0KToK
KyAgICAgICAgKiBsb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Rm9ybVN1Ym1pc3Npb246OmNyZWF0ZSk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpzdWJtaXRGb3JtKToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkRGlmZmVyZW50RG9jdW1lbnRJdGVtKToKKyAgICAg
ICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRlcjo6Y2xlYW51cEZvckVycm9yKToKKyAgICAgICAgKiBwYWdlL0Nocm9tZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnQ6OnNob3VsZFJlcGxhY2VXaXRoR2VuZXJhdGVk
RmlsZUZvclVwbG9hZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnQ6
OmdlbmVyYXRlUmVwbGFjZW1lbnRGaWxlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL0Nocm9t
ZUNsaWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Rm9ybURhdGE6OkZvcm1EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZv
cm1EYXRhOjp+Rm9ybURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURhdGE6OmNyZWF0ZU11
bHRpUGFydCk6CisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YUVsZW1lbnQ6Omxlbmd0aEluQnl0
ZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURhdGE6OmFwcGVuZEZpbGUpOgorICAg
ICAgICAoV2ViQ29yZTo6Rm9ybURhdGE6OmFwcGVuZEZpbGVSYW5nZSk6CisgICAgICAgIChXZWJD
b3JlOjpGb3JtRGF0YTo6YXBwZW5kTXVsdGlQYXJ0RmlsZVZhbHVlKToKKyAgICAgICAgKFdlYkNv
cmU6OkZvcm1EYXRhOjphcHBlbmRNdWx0aVBhcnRLZXlWYWx1ZVBhaXJJdGVtcyk6CisgICAgICAg
IChXZWJDb3JlOjpGb3JtRGF0YTo6cmVzb2x2ZUJsb2JSZWZlcmVuY2VzKToKKyAgICAgICAgKFdl
YkNvcmU6OmdlbmVyYXRlRmlsZUZvclVwbG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0
YTo6Z2VuZXJhdGVGaWxlc0ZvclVwbG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YTo6
Z2VuZXJhdGVGaWxlcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YTo6aGFz
R2VuZXJhdGVkRmlsZXMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURh
dGE6Omhhc093bmVkR2VuZXJhdGVkRmlsZXMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6Rm9ybURhdGE6OnJlbW92ZUdlbmVyYXRlZEZpbGVzSWZOZWVkZWQpOiBEZWxldGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkZvcm1EYXRhRWxlbWVudDo6Rm9ybURhdGFFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkZv
cm1EYXRhRWxlbWVudDo6RW5jb2RlZEZpbGVEYXRhOjppc29sYXRlZENvcHkgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6Rm9ybURhdGFFbGVtZW50OjpFbmNvZGVkRmlsZURhdGE6Om9wZXJhdG9y
PT0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURhdGFFbGVtZW50OjpFbmNvZGVkRmls
ZURhdGE6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YUVsZW1lbnQ6
OkVuY29kZWRGaWxlRGF0YTo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2Nm
L0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YWR2YW5jZUN1cnJl
bnRTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6Zm9ybUNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpmb3JtRmluYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSFRUUEJvZHlDRlJl
YWRTdHJlYW0pOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL0Jsb2JEYXRhRmlsZVJl
ZmVyZW5jZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmdlbmVyYXRlRmlsZUZvclVwbG9hZCk6
CisgICAgICAgIChXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OmdlbmVyYXRlUmVwbGFj
ZW1lbnRGaWxlKToKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OnNlbmQpOgorCiAyMDE5LTA3LTMxICBTYWFtIEJhcmF0
aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIFtXSExTTF0gUmVtb3ZlIFVubmFtZWRU
eXBlIGNvcHkvbW92ZSBjb25zdHJ1Y3RvcnMgYW5kIG1hcmsgY2xhc3NlcyBhcyBmaW5hbApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwppbmRleCA1NDk4NzdmN2Q1MDZmZmFhNjliNDk1NzIyMDIwZmJlM2RhYTNmMjk3Li5jODNiNjlk
MWJkNWZlNmE5OGJiMGVlMTNlNGU0NTgxMDEyNTIwNDg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5
IEBACisyMDE5LTA3LTMxICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgTW92ZSBGb3JtRGF0YSB6aXAgZmlsZSBnZW5lcmF0aW9uIHRvIE5ldHdv
cmtQcm9jZXNzIGFuZCBlbmFibGUgaXQgZm9yIGFsbCBXZWJLaXQgY2xpZW50cyBmb3IgdXBsb2Fk
aW5nIGRpcmVjdG9yaWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDAxMDIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzUzMjc1MTE0PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKiBQbGF0
Zm9ybS9JUEMvRm9ybURhdGFSZWZlcmVuY2UuaDoKKyAgICAgICAgKElQQzo6Rm9ybURhdGFSZWZl
cmVuY2U6OmVuY29kZSBjb25zdCk6CisgICAgICAgICogUmVzb3VyY2VzL1NhbmRib3hQcm9maWxl
cy9pb3MvY29tLmFwcGxlLldlYktpdC5OZXR3b3JraW5nLnNiOgorICAgICAgICAqIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50Lmg6Cisg
ICAgICAgIChBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlVUlDbGllbnQ6OnNob3VsZEdlbmVyYXRl
RmlsZUZvclVwbG9hZCk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OkluamVjdGVkQnVuZGxlOjpQ
YWdlVUlDbGllbnQ6OmdlbmVyYXRlRmlsZUZvclVwbG9hZCk6IERlbGV0ZWQuCisgICAgICAgICog
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50OjpzaG91bGRHZW5l
cmF0ZUZpbGVGb3JVcGxvYWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1
bmRsZVBhZ2VVSUNsaWVudDo6Z2VuZXJhdGVGaWxlRm9yVXBsb2FkKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OnNob3VsZFJlcGxhY2VXaXRo
R2VuZXJhdGVkRmlsZUZvclVwbG9hZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkNo
cm9tZUNsaWVudDo6Z2VuZXJhdGVSZXBsYWNlbWVudEZpbGUpOiBEZWxldGVkLgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9jb20uYXBwbGUuV2ViUHJvY2Vzcy5zYi5pbjoKKwogMjAxOS0wNy0zMSAgRGVh
biBKYWNrc29uICA8ZGlub0BhcHBsZS5jb20+CiAKICAgICAgICAgV0tJbWFnZVByZXZpZXdWaWV3
Q29udHJvbGxlciBub3QgYmVpbmcgYXV0b3JlbGVhc2VkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VM
b2cKaW5kZXggMGI4OTJjZmQ2NWI2YWM3NmFhMGE4MTI0MjJiYjY0MWM4NjIxOTZlZC4uZTk4MWZl
OTMyYjdjNGY4ODI5ODE0MWRkZDA2M2IzOGZjZGFmMDIzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0No
YW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE5LTA3LTMxICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW92ZSBGb3JtRGF0YSB6aXAgZmls
ZSBnZW5lcmF0aW9uIHRvIE5ldHdvcmtQcm9jZXNzIGFuZCBlbmFibGUgaXQgZm9yIGFsbCBXZWJL
aXQgY2xpZW50cyBmb3IgdXBsb2FkaW5nIGRpcmVjdG9yaWVzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDAxMDIKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzUzMjc1MTE0PgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAg
ICAgICogRGVmYXVsdERlbGVnYXRlcy9XZWJEZWZhdWx0VUlEZWxlZ2F0ZS5tbToKKyAgICAgICAg
KC1bV2ViRGVmYXVsdFVJRGVsZWdhdGUgd2ViVmlldzpzaG91bGRSZXBsYWNlVXBsb2FkRmlsZTp1
c2luZ0dlbmVyYXRlZEZpbGVuYW1lOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJEZWZhdWx0
VUlEZWxlZ2F0ZSB3ZWJWaWV3OmdlbmVyYXRlUmVwbGFjZW1lbnRGaWxlOl0pOiBEZWxldGVkLgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbToKKyAgICAgICAgKFdlYkNocm9tZUNsaWVu
dDo6c2hvdWxkUmVwbGFjZVdpdGhHZW5lcmF0ZWRGaWxlRm9yVXBsb2FkKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNocm9tZUNsaWVudDo6Z2VuZXJhdGVSZXBsYWNlbWVudEZpbGUpOiBEZWxldGVk
LgorICAgICAgICAqIFdlYlZpZXcvV2ViVUlEZWxlZ2F0ZVByaXZhdGUuaDoKKwogMjAxOS0wNy0y
NSAgRGVhbiBKYWNrc29uICA8ZGlub0BhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGhlbHBlciBm
b3IgaWdub3JpbmcgZGVwcmVjYXRlZCBpbXBsZW1lbnRhdGlvbiB3YXJuaW5ncwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lz
dGVtLmNwcAppbmRleCA0MzMxMjQ1NDM2ZTQzNDNlZDgwNzZkOTM3YTRjMTk1YjUwMDk3NmUxLi5m
YTg1NGUwMzEzYmUwNTc5MGE2MTAxMjZjM2ZlMTMwNjRhNDI5NzhjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVt
LmNwcApAQCAtMzg1LDUgKzM4NSwxMiBAQCB2b2lkIG1ha2VTYWZlVG9Vc2VNZW1vcnlNYXBGb3JQ
YXRoKGNvbnN0IFN0cmluZyYpCiB9CiAjZW5kaWYKIAorI2lmICFQTEFURk9STShDT0NPQSkKK1N0
cmluZyBjcmVhdGVUZW1wb3JhcnlaaXBBcmNoaXZlKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KQor
eworICAgIHJldHVybiB7IH07Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgRmlsZVN5c3Rl
bUltcGwKIH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmls
ZVN5c3RlbS5oIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oCmluZGV4IDZhZTM4NjJlYTMz
ZDIwZThmZTczNWM3NjJmMTY1ZmZjM2U1M2JmNmYuLjVmYzBiZmVjMjMzZThkYjg2NjUwNzlmOTA4
OWQwYzY3OWQ1NGUwNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKQEAgLTEyNCw2ICsxMjQsNyBAQCBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nIGRpcmVjdG9yeU5hbWUoY29uc3QgU3RyaW5nJik7CiBXVEZf
RVhQT1JUX1BSSVZBVEUgYm9vbCBnZXRWb2x1bWVGcmVlU3BhY2UoY29uc3QgU3RyaW5nJiwgdWlu
dDY0X3QmKTsKIFdURl9FWFBPUlRfUFJJVkFURSBPcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2
aWNlSWQoY29uc3QgQ1N0cmluZyYpOwogV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgY3JlYXRlU3lt
Ym9saWNMaW5rKGNvbnN0IFN0cmluZyYgdGFyZ2V0UGF0aCwgY29uc3QgU3RyaW5nJiBzeW1ib2xp
Y0xpbmtQYXRoKTsKK1dURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgY3JlYXRlVGVtcG9yYXJ5Wmlw
QXJjaGl2ZShjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSk7CiAKIFdURl9FWFBPUlRfUFJJVkFURSB2
b2lkIHNldE1ldGFkYXRhVVJMKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiB1cmxT
dHJpbmcsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIgPSB7IH0pOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9jb2NvYS9GaWxlU3lzdGVtQ29jb2EubW0gYi9Tb3VyY2UvV1RGL3d0Zi9jb2Nv
YS9GaWxlU3lzdGVtQ29jb2EubW0KaW5kZXggMjU3YmNhNTg3ZTU1YmRlZjRhODAyMGY4ZjU3NjY2
NDJhMjE2MWJhMi4uMTYzYmY3MWQ5ZGYyZGZlNzRjMDM2NWM0YTU2NWI3ZGY5ODIxMWZiOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL2NvY29hL0ZpbGVTeXN0ZW1Db2NvYS5tbQpAQCAtMjksNiArMjksMjQgQEAK
ICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4KIAorI2luY2x1
ZGUgPHd0Zi9Tb2Z0TGlua2luZy5oPgorCisjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKKyNp
bmNsdWRlIDxCb20vQk9NQ29waWVyLmg+CisjZW5kaWYKKwordHlwZWRlZiBzdHJ1Y3QgX0JPTUNv
cGllciogQk9NQ29waWVyOworCitTT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdPUksoQm9tKQorU09G
VF9MSU5LKEJvbSwgQk9NQ29waWVyTmV3LCBCT01Db3BpZXIsICgpLCAoKSkKK1NPRlRfTElOSyhC
b20sIEJPTUNvcGllckZyZWUsIHZvaWQsIChCT01Db3BpZXIgY29waWVyKSwgKGNvcGllcikpCitT
T0ZUX0xJTksoQm9tLCBCT01Db3BpZXJDb3B5V2l0aE9wdGlvbnMsIGludCwgKEJPTUNvcGllciBj
b3BpZXIsIGNvbnN0IGNoYXIqIGZyb21PYmosIGNvbnN0IGNoYXIqIHRvT2JqLCBDRkRpY3Rpb25h
cnlSZWYgb3B0aW9ucyksIChjb3BpZXIsIGZyb21PYmosIHRvT2JqLCBvcHRpb25zKSkKKworI2Rl
ZmluZSBrQk9NQ29waWVyT3B0aW9uQ3JlYXRlUEtaaXBLZXkgQ0ZTVFIoImNyZWF0ZVBLWmlwIikK
KyNkZWZpbmUga0JPTUNvcGllck9wdGlvblNlcXVlc3RlclJlc291cmNlc0tleSBDRlNUUigic2Vx
dWVzdGVyUmVzb3VyY2VzIikKKyNkZWZpbmUga0JPTUNvcGllck9wdGlvbktlZXBQYXJlbnRLZXkg
Q0ZTVFIoImtlZXBQYXJlbnQiKQorI2RlZmluZSBrQk9NQ29waWVyT3B0aW9uQ29weVJlc291cmNl
c0tleSBDRlNUUigiY29weVJlc291cmNlcyIpCisKIEBpbnRlcmZhY2UgV1RGV2ViRmlsZU1hbmFn
ZXJEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxOU0ZpbGVNYW5hZ2VyRGVsZWdhdGU+CiBAZW5kCiAKQEAg
LTQ4LDYgKzY2LDMyIEBAIG5hbWVzcGFjZSBXVEYgewogCiBuYW1lc3BhY2UgRmlsZVN5c3RlbUlt
cGwgewogCitTdHJpbmcgY3JlYXRlVGVtcG9yYXJ5WmlwQXJjaGl2ZShjb25zdCBTdHJpbmcmIHBh
dGgpCit7CisgICAgU3RyaW5nIHRlbXBvcmFyeUZpbGU7CisgICAgCisgICAgUmV0YWluUHRyPE5T
RmlsZUNvb3JkaW5hdG9yPiBjb29yZGluYXRvciA9IGFkb3B0TlMoW1tOU0ZpbGVDb29yZGluYXRv
ciBhbGxvY10gaW5pdFdpdGhGaWxlUHJlc2VudGVyOm5pbF0pOworICAgIFtjb29yZGluYXRvciBj
b29yZGluYXRlUmVhZGluZ0l0ZW1BdFVSTDpbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOnBhdGhdIG9w
dGlvbnM6TlNGaWxlQ29vcmRpbmF0b3JSZWFkaW5nV2l0aG91dENoYW5nZXMgZXJyb3I6bnVsbHB0
ciBieUFjY2Vzc29yOlsmXShOU1VSTCAqbmV3VVJMKSBtdXRhYmxlIHsKKyAgICAgICAgQ1N0cmlu
ZyBhcmNoaXZlUGF0aChbTlNUZW1wb3JhcnlEaXJlY3RvcnkoKSBzdHJpbmdCeUFwcGVuZGluZ1Bh
dGhDb21wb25lbnQ6QCJXZWJLaXRHZW5lcmF0ZWRGaWxlWFhYWFhYIl0uZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKTsKKyAgICAgICAgaWYgKG1rc3RlbXAoYXJjaGl2ZVBhdGgubXV0YWJsZURhdGEo
KSkgPT0gLTEpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIAorICAgICAgICBOU0RpY3Rp
b25hcnkgKm9wdGlvbnMgPSBAeworICAgICAgICAgICAgKF9fYnJpZGdlIGlkKWtCT01Db3BpZXJP
cHRpb25DcmVhdGVQS1ppcEtleSA6IEBZRVMsCisgICAgICAgICAgICAoX19icmlkZ2UgaWQpa0JP
TUNvcGllck9wdGlvblNlcXVlc3RlclJlc291cmNlc0tleSA6IEBZRVMsCisgICAgICAgICAgICAo
X19icmlkZ2UgaWQpa0JPTUNvcGllck9wdGlvbktlZXBQYXJlbnRLZXkgOiBAWUVTLAorICAgICAg
ICAgICAgKF9fYnJpZGdlIGlkKWtCT01Db3BpZXJPcHRpb25Db3B5UmVzb3VyY2VzS2V5IDogQFlF
UywKKyAgICAgICAgfTsKKyAgICAgICAgCisgICAgICAgIEJPTUNvcGllciBjb3BpZXIgPSBCT01D
b3BpZXJOZXcoKTsKKyAgICAgICAgaWYgKCFCT01Db3BpZXJDb3B5V2l0aE9wdGlvbnMoY29waWVy
LCBuZXdVUkwucGF0aC5maWxlU3lzdGVtUmVwcmVzZW50YXRpb24sIGFyY2hpdmVQYXRoLmRhdGEo
KSwgKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilvcHRpb25zKSkKKyAgICAgICAgICAgIHRlbXBv
cmFyeUZpbGUgPSBTdHJpbmc6OmZyb21VVEY4KGFyY2hpdmVQYXRoKTsKKyAgICAgICAgQk9NQ29w
aWVyRnJlZShjb3BpZXIpOworICAgIH1dOworICAgIAorICAgIHJldHVybiB0ZW1wb3JhcnlGaWxl
OworfQorCiBTdHJpbmcgaG9tZURpcmVjdG9yeVBhdGgoKQogewogICAgIHJldHVybiBOU0hvbWVE
aXJlY3RvcnkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hCb2R5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcApp
bmRleCA5ODdlNDU1NmY5ZjVmYzRlMWM3MWZmM2IwODQ3Y2I3ZjJiMjVjZGQ4Li4zM2RlNGYzNzhk
MmFhZWFkNDM5MjZmYjBkYjdiNmJkNzdlMjFiZGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHkuY3BwCkBAIC00MCw3ICs0MCw3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotRmV0Y2hCb2R5IEZldGNoQm9keTo6ZXh0cmFjdChTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0LCBJbml0JiYgdmFsdWUsIFN0cmluZyYgY29udGVudFR5cGUpCitGZXRjaEJv
ZHkgRmV0Y2hCb2R5OjpleHRyYWN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBJbml0JiYgdmFs
dWUsIFN0cmluZyYgY29udGVudFR5cGUpCiB7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24odmFs
dWUsIFsmXShSZWZQdHI8QmxvYj4mIHZhbHVlKSBtdXRhYmxlIHsKICAgICAgICAgUmVmPGNvbnN0
IEJsb2I+IGJsb2IgPSB2YWx1ZS5yZWxlYXNlTm9uTnVsbCgpOwpAQCAtNDksNyArNDksNyBAQCBG
ZXRjaEJvZHkgRmV0Y2hCb2R5OjpleHRyYWN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQsIEluaXQmJiB2YWx1ZSwgU3RyaQogICAgICAgICByZXR1cm4gRmV0Y2hCb2R5KFdURk1vdmUo
YmxvYikpOwogICAgIH0sIFsmXShSZWZQdHI8RE9NRm9ybURhdGE+JiB2YWx1ZSkgbXV0YWJsZSB7
CiAgICAgICAgIFJlZjxET01Gb3JtRGF0YT4gZG9tRm9ybURhdGEgPSB2YWx1ZS5yZWxlYXNlTm9u
TnVsbCgpOwotICAgICAgICBhdXRvIGZvcm1EYXRhID0gRm9ybURhdGE6OmNyZWF0ZU11bHRpUGFy
dChkb21Gb3JtRGF0YS5nZXQoKSwgJmRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0KSk7CisgICAg
ICAgIGF1dG8gZm9ybURhdGEgPSBGb3JtRGF0YTo6Y3JlYXRlTXVsdGlQYXJ0KGRvbUZvcm1EYXRh
LmdldCgpKTsKICAgICAgICAgY29udGVudFR5cGUgPSBtYWtlU3RyaW5nKCJtdWx0aXBhcnQvZm9y
bS1kYXRhOyBib3VuZGFyeT0iLCBmb3JtRGF0YS0+Ym91bmRhcnkoKS5kYXRhKCkpOwogICAgICAg
ICByZXR1cm4gRmV0Y2hCb2R5KFdURk1vdmUoZm9ybURhdGEpKTsKICAgICB9LCBbJl0oUmVmUHRy
PFVSTFNlYXJjaFBhcmFtcz4mIHZhbHVlKSBtdXRhYmxlIHsKQEAgLTI1MCw5ICsyNTAsOCBAQCBS
ZWZQdHI8Rm9ybURhdGE+IEZldGNoQm9keTo6Ym9keUFzRm9ybURhdGEoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCkgY29ucwogICAgIGlmIChpc0FycmF5QnVmZmVyVmlldygpKQogICAg
ICAgICByZXR1cm4gRm9ybURhdGE6OmNyZWF0ZShhcnJheUJ1ZmZlclZpZXdCb2R5KCkuYmFzZUFk
ZHJlc3MoKSwgYXJyYXlCdWZmZXJWaWV3Qm9keSgpLmJ5dGVMZW5ndGgoKSk7CiAgICAgaWYgKGlz
Rm9ybURhdGEoKSkgewotICAgICAgICBBU1NFUlQoIWNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29w
ZSgpKTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCAhY29udGV4dC5pc1dvcmtlckds
b2JhbFNjb3BlKCkpOwogICAgICAgICBhdXRvIGJvZHkgPSBtYWtlUmVmKGNvbnN0X2Nhc3Q8Rm9y
bURhdGEmPihmb3JtRGF0YUJvZHkoKSkpOwotICAgICAgICBib2R5LT5nZW5lcmF0ZUZpbGVzKCZk
b3duY2FzdDxEb2N1bWVudD4oY29udGV4dCkpOwogICAgICAgICByZXR1cm4gYm9keTsKICAgICB9
CiAgICAgaWYgKGF1dG8qIGRhdGEgPSBtX2NvbnN1bWVyLmRhdGEoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwCmluZGV4IGJlMDNlNGExOWUxMTcyMjVmY2U4MTI3YWYx
NzRjMWIwNGY5NTU0ZjQuLjBmOTI0NmY4MTE4ZDM3YzNiY2ZhNzJiMWM5ZjQ3NzYyMTZhMWU3Yjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmNwcApAQCAtMTk4LDcgKzE5
OCw3IEBAIFJlZjxGb3JtU3VibWlzc2lvbj4gRm9ybVN1Ym1pc3Npb246OmNyZWF0ZShIVE1MRm9y
bUVsZW1lbnQmIGZvcm0sIGNvbnN0IEF0dHJpYnV0CiAgICAgU3RyaW5nIGJvdW5kYXJ5OwogCiAg
ICAgaWYgKGlzTXVsdGlQYXJ0Rm9ybSkgewotICAgICAgICBmb3JtRGF0YSA9IEZvcm1EYXRhOjpj
cmVhdGVNdWx0aVBhcnQoZG9tRm9ybURhdGEsICZkb2N1bWVudCk7CisgICAgICAgIGZvcm1EYXRh
ID0gRm9ybURhdGE6OmNyZWF0ZU11bHRpUGFydChkb21Gb3JtRGF0YSk7CiAgICAgICAgIGJvdW5k
YXJ5ID0gZm9ybURhdGEtPmJvdW5kYXJ5KCkuZGF0YSgpOwogICAgIH0gZWxzZSB7CiAgICAgICAg
IGZvcm1EYXRhID0gRm9ybURhdGE6OmNyZWF0ZShkb21Gb3JtRGF0YSwgYXR0cmlidXRlcy5tZXRo
b2QoKSA9PSBNZXRob2Q6OkdldCA/IEZvcm1EYXRhOjpGb3JtVVJMRW5jb2RlZCA6IEZvcm1EYXRh
OjpwYXJzZUVuY29kaW5nVHlwZShlbmNvZGluZ1R5cGUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXIuY3BwCmluZGV4IGZiNGM1YjhiZDMwNTJmNTdlYTNhMDI5NjE2YmE1NDg3ZDU3YjQ0
NTIuLjQ3Zjc2NmE5MDdmMWFkNTA4MmI5NDE0NGMyZGM4NjE5Njg1ZjY3NjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtNDczLDcgKzQ3Myw2IEBAIHZvaWQgRnJhbWVM
b2FkZXI6OnN1Ym1pdEZvcm0oUmVmPEZvcm1TdWJtaXNzaW9uPiYmIHN1Ym1pc3Npb24pCiAgICAg
ICAgIG1fc3VibWl0dGVkRm9ybVVSTCA9IHN1Ym1pc3Npb24tPnJlcXVlc3RVUkwoKTsKICAgICB9
CiAKLSAgICBzdWJtaXNzaW9uLT5kYXRhKCkuZ2VuZXJhdGVGaWxlcyhtX2ZyYW1lLmRvY3VtZW50
KCkpOwogICAgIHN1Ym1pc3Npb24tPnNldFJlZmVycmVyKG91dGdvaW5nUmVmZXJyZXIoKSk7CiAg
ICAgc3VibWlzc2lvbi0+c2V0T3JpZ2luKG91dGdvaW5nT3JpZ2luKCkpOwogCkBAIC0zNzczLDgg
KzM3NzIsNiBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkRGlmZmVyZW50RG9jdW1lbnRJdGVtKEhp
c3RvcnlJdGVtJiBpdGVtLCBIaXN0b3J5SXRlbSogZnJvbQogICAgIC8vIElmIHRoaXMgd2FzIGEg
cmVwb3N0IHRoYXQgZmFpbGVkIHRoZSBwYWdlIGNhY2hlLCB3ZSBtaWdodCB0cnkgdG8gcmVwb3N0
IHRoZSBmb3JtLgogICAgIE5hdmlnYXRpb25BY3Rpb24gYWN0aW9uOwogICAgIGlmIChmb3JtRGF0
YSkgewotICAgICAgICBmb3JtRGF0YS0+Z2VuZXJhdGVGaWxlcyhtX2ZyYW1lLmRvY3VtZW50KCkp
OwotCiAgICAgICAgIHJlcXVlc3Quc2V0SFRUUE1ldGhvZCgiUE9TVCIpOwogICAgICAgICByZXF1
ZXN0LnNldEhUVFBCb2R5KFdURk1vdmUoZm9ybURhdGEpKTsKICAgICAgICAgcmVxdWVzdC5zZXRI
VFRQQ29udGVudFR5cGUoaXRlbS5mb3JtQ29udGVudFR5cGUoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCAxZjZmMzUzZTY5MzVlOGU1ZWI2NTVkZWVkODBm
NTdiMGFlMzdjMmZjLi5hNzY2NTZjMDNlNzEyNTI4NTM4OGFiNWQ2NWQ4ZGM5ZGY1M2UyYTg2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKQEAgLTQ5Miw5ICs0OTIs
NiBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgciwgQ29tcGxldGlvbkhhbgogCiAgICAgbV9yZXNwb25zZSA9IHI7CiAKLSAg
ICBpZiAoRm9ybURhdGEqIGRhdGEgPSBtX3JlcXVlc3QuaHR0cEJvZHkoKSkKLSAgICAgICAgZGF0
YS0+cmVtb3ZlR2VuZXJhdGVkRmlsZXNJZk5lZWRlZCgpOwotCiAgICAgaWYgKG1fb3B0aW9ucy5z
ZW5kTG9hZENhbGxiYWNrcyA9PSBTZW5kQ2FsbGJhY2tQb2xpY3k6OlNlbmRDYWxsYmFja3MpCiAg
ICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCkuZGlkUmVjZWl2ZVJlc3BvbnNlKHRoaXMs
IG1fcmVzcG9uc2UpOwogfQpAQCAtNTc5LDkgKzU3Niw2IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6
OmRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiAKIHZvaWQgUmVzb3VyY2VMb2Fk
ZXI6OmNsZWFudXBGb3JFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKLSAgICBp
ZiAoRm9ybURhdGEqIGRhdGEgPSBtX3JlcXVlc3QuaHR0cEJvZHkoKSkKLSAgICAgICAgZGF0YS0+
cmVtb3ZlR2VuZXJhdGVkRmlsZXNJZk5lZWRlZCgpOwotCiAgICAgaWYgKG1fbm90aWZpZWRMb2Fk
Q29tcGxldGUpCiAgICAgICAgIHJldHVybjsKICAgICBtX25vdGlmaWVkTG9hZENvbXBsZXRlID0g
dHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAppbmRleCAyMjBkOGMyNjI5OGIwYzk1NTc5MzBmNDEy
M2ZjZjJkNTgzYzk3OTNiLi45NzU4MzI5YmE5MDljZDkxM2NhYjQ2ODVkNzFhZTlkYTRmYzM1Y2E2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCkBAIC01MjUsMTcgKzUyNSw2IEBAIHZvaWQgQ2hyb21l
Ojp3aW5kb3dTY3JlZW5EaWRDaGFuZ2UoUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKQogI2Vu
ZGlmCiB9CiAKLWJvb2wgQ2hyb21lQ2xpZW50OjpzaG91bGRSZXBsYWNlV2l0aEdlbmVyYXRlZEZp
bGVGb3JVcGxvYWQoY29uc3QgU3RyaW5nJiwgU3RyaW5nJikKLXsKLSAgICByZXR1cm4gZmFsc2U7
Ci19Ci0KLVN0cmluZyBDaHJvbWVDbGllbnQ6OmdlbmVyYXRlUmVwbGFjZW1lbnRGaWxlKGNvbnN0
IFN0cmluZyYpCi17Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFN0cmlu
ZygpOwotfQotCiBib29sIENocm9tZTo6c2VsZWN0SXRlbVdyaXRpbmdEaXJlY3Rpb25Jc05hdHVy
YWwoKQogewogICAgIHJldHVybiBtX2NsaWVudC5zZWxlY3RJdGVtV3JpdGluZ0RpcmVjdGlvbklz
TmF0dXJhbCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKaW5kZXggZjk5M2UyMGMxOGQ2
ZjlmNDkxMDRjYzY2NzUzOTg4NzcyMGYyZTU2My4uYzI1YTAyNGJjMDYzYzU4ZjNiMjhiZDc5Y2Ji
MDMzODQ0MjZjOGM1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCkBAIC0yMzUsOSAr
MjM1LDYgQEAgcHVibGljOgogICAgIC8vIHRoZSBuZXcgY2FjaGUuCiAgICAgdmlydHVhbCB2b2lk
IHJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoU2VjdXJpdHlPcmlnaW4mLCBpbnQ2
NF90IHRvdGFsU3BhY2VOZWVkZWQpID0gMDsKIAotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRSZXBs
YWNlV2l0aEdlbmVyYXRlZEZpbGVGb3JVcGxvYWQoY29uc3QgU3RyaW5nJiBwYXRoLCBTdHJpbmcm
IGdlbmVyYXRlZEZpbGVuYW1lKTsKLSAgICB2aXJ0dWFsIFN0cmluZyBnZW5lcmF0ZVJlcGxhY2Vt
ZW50RmlsZShjb25zdCBTdHJpbmcmIHBhdGgpOwotCiAjaWYgRU5BQkxFKElPU19UT1VDSF9FVkVO
VFMpCiAgICAgdmlydHVhbCB2b2lkIGRpZFByZXZlbnREZWZhdWx0Rm9yRXZlbnQoKSA9IDA7CiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURh
dGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKaW5k
ZXggN2U5NGM5YTM4NWQxYjYzMTNhM2ExYWJjYWRhOWMxMDUzYzMxNDU2Ni4uZDZmMjkxNjFhNDdk
YjU0ZjRkNGZhYmExNDUxZmQ5YjY1MjE3MDE3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKQEAgLTI3LDcgKzI3LDYgQEAKICNpbmNsdWRlICJDaHJv
bWUuaCIKICNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKICNpbmNsdWRlICJET01Gb3JtRGF0YS5o
IgotI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRmlsZS5oIgogI2luY2x1ZGUgIkZv
cm1EYXRhQnVpbGRlci5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKQEAgLTUwLDIyICs0OSwxMCBAQCBp
bmxpbmUgRm9ybURhdGE6OkZvcm1EYXRhKGNvbnN0IEZvcm1EYXRhJiBkYXRhKQogICAgICwgbV9h
bHdheXNTdHJlYW0oZmFsc2UpCiAgICAgLCBtX2NvbnRhaW5zUGFzc3dvcmREYXRhKGRhdGEubV9j
b250YWluc1Bhc3N3b3JkRGF0YSkKIHsKLSAgICAvLyBXZSBzaG91bGRuJ3QgYmUgY29weWluZyBG
b3JtRGF0YSB0aGF0IGhhc24ndCBhbHJlYWR5IHJlbW92ZWQgaXRzIGdlbmVyYXRlZCBmaWxlcwot
ICAgIC8vIGJ1dCBqdXN0IGluIGNhc2UsIG1ha2Ugc3VyZSB0aGUgbmV3IEZvcm1EYXRhIGlzIHJl
YWR5IHRvIGdlbmVyYXRlIGl0cyBvd24gZmlsZXMuCi0gICAgZm9yIChhdXRvJiBlbGVtZW50IDog
bV9lbGVtZW50cykgewotICAgICAgICBpZiAoYXV0byogZmlsZURhdGEgPSBXVEY6OmdldF9pZjxG
b3JtRGF0YUVsZW1lbnQ6OkVuY29kZWRGaWxlRGF0YT4oZWxlbWVudC5kYXRhKSkgewotICAgICAg
ICAgICAgZmlsZURhdGEtPmdlbmVyYXRlZEZpbGVuYW1lID0geyB9OwotICAgICAgICAgICAgZmls
ZURhdGEtPm93bnNHZW5lcmF0ZWRGaWxlID0gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9CiB9CiAK
IEZvcm1EYXRhOjp+Rm9ybURhdGEoKQogewotICAgIC8vIFRoaXMgY2xlYW51cCBzaG91bGQndmUg
aGFwcGVuZWQgd2hlbiB0aGUgZm9ybSBzdWJtaXNzaW9uIGZpbmlzaGVkLgotICAgIC8vIEp1c3Qg
aW4gY2FzZSwgbGV0J3MgYXNzZXJ0LCBhbmQgZG8gdGhlIGNsZWFudXAgYW55d2F5IGluIHJlbGVh
c2UgYnVpbGRzLgotICAgIEFTU0VSVCghaGFzT3duZWRHZW5lcmF0ZWRGaWxlcygpKTsKLSAgICBy
ZW1vdmVHZW5lcmF0ZWRGaWxlc0lmTmVlZGVkKCk7CiB9CiAKIFJlZjxGb3JtRGF0YT4gRm9ybURh
dGE6OmNyZWF0ZSgpCkBAIC0xMDksMTAgKzk2LDEwIEBAIFJlZjxGb3JtRGF0YT4gRm9ybURhdGE6
OmNyZWF0ZShjb25zdCBET01Gb3JtRGF0YSYgZm9ybURhdGEsIEVuY29kaW5nVHlwZSBlbmNvZGlu
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotUmVmPEZvcm1EYXRhPiBGb3JtRGF0YTo6Y3JlYXRl
TXVsdGlQYXJ0KGNvbnN0IERPTUZvcm1EYXRhJiBmb3JtRGF0YSwgRG9jdW1lbnQqIGRvY3VtZW50
KQorUmVmPEZvcm1EYXRhPiBGb3JtRGF0YTo6Y3JlYXRlTXVsdGlQYXJ0KGNvbnN0IERPTUZvcm1E
YXRhJiBmb3JtRGF0YSkKIHsKICAgICBhdXRvIHJlc3VsdCA9IGNyZWF0ZSgpOwotICAgIHJlc3Vs
dC0+YXBwZW5kTXVsdGlQYXJ0S2V5VmFsdWVQYWlySXRlbXMoZm9ybURhdGEsIGRvY3VtZW50KTsK
KyAgICByZXN1bHQtPmFwcGVuZE11bHRpUGFydEtleVZhbHVlUGFpckl0ZW1zKGZvcm1EYXRhKTsK
ICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0xNDYsNyArMTMzLDcgQEAgdWludDY0X3QgRm9y
bURhdGFFbGVtZW50OjpsZW5ndGhJbkJ5dGVzKCkgY29uc3QKICAgICAgICAgICAgIGlmIChmaWxl
RGF0YS5maWxlTGVuZ3RoICE9IEJsb2JEYXRhSXRlbTo6dG9FbmRPZkZpbGUpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnQ2NF90PihmaWxlRGF0YS5maWxlTGVuZ3RoKTsK
ICAgICAgICAgICAgIGxvbmcgbG9uZyBmaWxlU2l6ZTsKLSAgICAgICAgICAgIGlmIChGaWxlU3lz
dGVtOjpnZXRGaWxlU2l6ZShmaWxlRGF0YS5zaG91bGRHZW5lcmF0ZUZpbGUgPyBmaWxlRGF0YS5n
ZW5lcmF0ZWRGaWxlbmFtZSA6IGZpbGVEYXRhLmZpbGVuYW1lLCBmaWxlU2l6ZSkpCisgICAgICAg
ICAgICBpZiAoRmlsZVN5c3RlbTo6Z2V0RmlsZVNpemUoZmlsZURhdGEuZmlsZW5hbWUsIGZpbGVT
aXplKSkKICAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGZpbGVT
aXplKTsKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1aW50NjRfdD4oMCk7CiAgICAg
ICAgIH0sIFtdIChjb25zdCBGb3JtRGF0YUVsZW1lbnQ6OkVuY29kZWRCbG9iRGF0YSYgYmxvYkRh
dGEpIHsKQEAgLTE4NCwxNSArMTcxLDE1IEBAIHZvaWQgRm9ybURhdGE6OmFwcGVuZERhdGEoY29u
c3Qgdm9pZCogZGF0YSwgc2l6ZV90IHNpemUpCiAgICAgbV9lbGVtZW50cy5hcHBlbmQoV1RGTW92
ZSh2ZWN0b3IpKTsKIH0KIAotdm9pZCBGb3JtRGF0YTo6YXBwZW5kRmlsZShjb25zdCBTdHJpbmcm
IGZpbGVuYW1lLCBib29sIHNob3VsZEdlbmVyYXRlRmlsZSkKK3ZvaWQgRm9ybURhdGE6OmFwcGVu
ZEZpbGUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKIHsKLSAgICBtX2VsZW1lbnRzLmFwcGVuZChG
b3JtRGF0YUVsZW1lbnQoZmlsZW5hbWUsIDAsIEJsb2JEYXRhSXRlbTo6dG9FbmRPZkZpbGUsIFdU
Rjo6bnVsbG9wdCwgc2hvdWxkR2VuZXJhdGVGaWxlKSk7CisgICAgbV9lbGVtZW50cy5hcHBlbmQo
Rm9ybURhdGFFbGVtZW50KGZpbGVuYW1lLCAwLCBCbG9iRGF0YUl0ZW06OnRvRW5kT2ZGaWxlLCBX
VEY6Om51bGxvcHQpKTsKICAgICBtX2xlbmd0aEluQnl0ZXMgPSBXVEY6Om51bGxvcHQ7CiB9CiAK
LXZvaWQgRm9ybURhdGE6OmFwcGVuZEZpbGVSYW5nZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBs
b25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBsZW5ndGgsIE9wdGlvbmFsPFdhbGxUaW1lPiBleHBl
Y3RlZE1vZGlmaWNhdGlvblRpbWUsIGJvb2wgc2hvdWxkR2VuZXJhdGVGaWxlKQordm9pZCBGb3Jt
RGF0YTo6YXBwZW5kRmlsZVJhbmdlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGxvbmcgbG9uZyBz
dGFydCwgbG9uZyBsb25nIGxlbmd0aCwgT3B0aW9uYWw8V2FsbFRpbWU+IGV4cGVjdGVkTW9kaWZp
Y2F0aW9uVGltZSkKIHsKLSAgICBtX2VsZW1lbnRzLmFwcGVuZChGb3JtRGF0YUVsZW1lbnQoZmls
ZW5hbWUsIHN0YXJ0LCBsZW5ndGgsIGV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSwgc2hvdWxkR2Vu
ZXJhdGVGaWxlKSk7CisgICAgbV9lbGVtZW50cy5hcHBlbmQoRm9ybURhdGFFbGVtZW50KGZpbGVu
YW1lLCBzdGFydCwgbGVuZ3RoLCBleHBlY3RlZE1vZGlmaWNhdGlvblRpbWUpKTsKICAgICBtX2xl
bmd0aEluQnl0ZXMgPSBXVEY6Om51bGxvcHQ7CiB9CiAKQEAgLTIwNywyMiArMTk0LDEwIEBAIHN0
YXRpYyBWZWN0b3I8dWludDhfdD4gbm9ybWFsaXplU3RyaW5nRGF0YShUZXh0RW5jb2RpbmcmIGVu
Y29kaW5nLCBjb25zdCBTdHJpbmcmCiAgICAgcmV0dXJuIG5vcm1hbGl6ZUxpbmVFbmRpbmdzVG9D
UkxGKGVuY29kaW5nLmVuY29kZSh2YWx1ZSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMp
KTsKIH0KIAotdm9pZCBGb3JtRGF0YTo6YXBwZW5kTXVsdGlQYXJ0RmlsZVZhbHVlKGNvbnN0IEZp
bGUmIGZpbGUsIFZlY3RvcjxjaGFyPiYgaGVhZGVyLCBUZXh0RW5jb2RpbmcmIGVuY29kaW5nLCBE
b2N1bWVudCogZG9jdW1lbnQpCit2b2lkIEZvcm1EYXRhOjphcHBlbmRNdWx0aVBhcnRGaWxlVmFs
dWUoY29uc3QgRmlsZSYgZmlsZSwgVmVjdG9yPGNoYXI+JiBoZWFkZXIsIFRleHRFbmNvZGluZyYg
ZW5jb2RpbmcpCiB7CiAgICAgYXV0byBuYW1lID0gZmlsZS5uYW1lKCk7CiAKLSAgICAvLyBMZXQg
dGhlIGFwcGxpY2F0aW9uIHNwZWNpZnkgYSBmaWxlbmFtZSBpZiBpdCdzIGdvaW5nIHRvIGdlbmVy
YXRlIGEgcmVwbGFjZW1lbnQgZmlsZSBmb3IgdGhlIHVwbG9hZC4KLSAgICBib29sIHNob3VsZEdl
bmVyYXRlRmlsZSA9IGZhbHNlOwotICAgIGF1dG8mIHBhdGggPSBmaWxlLnBhdGgoKTsKLSAgICBp
ZiAoIXBhdGguaXNFbXB0eSgpKSB7Ci0gICAgICAgIGlmIChQYWdlKiBwYWdlID0gZG9jdW1lbnQt
PnBhZ2UoKSkgewotICAgICAgICAgICAgU3RyaW5nIGdlbmVyYXRlZEZpbGVOYW1lOwotICAgICAg
ICAgICAgc2hvdWxkR2VuZXJhdGVGaWxlID0gcGFnZS0+Y2hyb21lKCkuY2xpZW50KCkuc2hvdWxk
UmVwbGFjZVdpdGhHZW5lcmF0ZWRGaWxlRm9yVXBsb2FkKHBhdGgsIGdlbmVyYXRlZEZpbGVOYW1l
KTsKLSAgICAgICAgICAgIGlmIChzaG91bGRHZW5lcmF0ZUZpbGUpCi0gICAgICAgICAgICAgICAg
bmFtZSA9IGdlbmVyYXRlZEZpbGVOYW1lOwotICAgICAgICB9Ci0gICAgfQotCiAgICAgLy8gV2Ug
aGF2ZSB0byBpbmNsdWRlIHRoZSBmaWxlbmFtZT0iLi4iIHBhcnQgaW4gdGhlIGhlYWRlciwgZXZl
biBpZiB0aGUgZmlsZW5hbWUgaXMgZW1wdHkKICAgICBGb3JtRGF0YUJ1aWxkZXI6OmFkZEZpbGVu
YW1lVG9NdWx0aVBhcnRIZWFkZXIoaGVhZGVyLCBlbmNvZGluZywgbmFtZSk7CiAKQEAgLTIzOCw3
ICsyMTMsNyBAQCB2b2lkIEZvcm1EYXRhOjphcHBlbmRNdWx0aVBhcnRGaWxlVmFsdWUoY29uc3Qg
RmlsZSYgZmlsZSwgVmVjdG9yPGNoYXI+JiBoZWFkZXIsCiAgICAgYXBwZW5kRGF0YShoZWFkZXIu
ZGF0YSgpLCBoZWFkZXIuc2l6ZSgpKTsKIAogICAgIGlmICghZmlsZS5wYXRoKCkuaXNFbXB0eSgp
KQotICAgICAgICBhcHBlbmRGaWxlKGZpbGUucGF0aCgpLCBzaG91bGRHZW5lcmF0ZUZpbGUpOwor
ICAgICAgICBhcHBlbmRGaWxlKGZpbGUucGF0aCgpKTsKICAgICBlbHNlIGlmIChmaWxlLnNpemUo
KSkKICAgICAgICAgYXBwZW5kQmxvYihmaWxlLnVybCgpKTsKIH0KQEAgLTI1Miw3ICsyMjcsNyBA
QCB2b2lkIEZvcm1EYXRhOjphcHBlbmRNdWx0aVBhcnRTdHJpbmdWYWx1ZShjb25zdCBTdHJpbmcm
IHN0cmluZywgVmVjdG9yPGNoYXI+JiBoZQogICAgIGFwcGVuZERhdGEobm9ybWFsaXplZFN0cmlu
Z0RhdGEuZGF0YSgpLCBub3JtYWxpemVkU3RyaW5nRGF0YS5zaXplKCkpOwogfQogCi12b2lkIEZv
cm1EYXRhOjphcHBlbmRNdWx0aVBhcnRLZXlWYWx1ZVBhaXJJdGVtcyhjb25zdCBET01Gb3JtRGF0
YSYgZm9ybURhdGEsIERvY3VtZW50KiBkb2N1bWVudCkKK3ZvaWQgRm9ybURhdGE6OmFwcGVuZE11
bHRpUGFydEtleVZhbHVlUGFpckl0ZW1zKGNvbnN0IERPTUZvcm1EYXRhJiBmb3JtRGF0YSkKIHsK
ICAgICBtX2JvdW5kYXJ5ID0gRm9ybURhdGFCdWlsZGVyOjpnZW5lcmF0ZVVuaXF1ZUJvdW5kYXJ5
U3RyaW5nKCk7CiAKQEAgLTI2Niw3ICsyNDEsNyBAQCB2b2lkIEZvcm1EYXRhOjphcHBlbmRNdWx0
aVBhcnRLZXlWYWx1ZVBhaXJJdGVtcyhjb25zdCBET01Gb3JtRGF0YSYgZm9ybURhdGEsIERvYwog
ICAgICAgICBGb3JtRGF0YUJ1aWxkZXI6OmJlZ2luTXVsdGlQYXJ0SGVhZGVyKGhlYWRlciwgbV9i
b3VuZGFyeS5kYXRhKCksIG5vcm1hbGl6ZWROYW1lKTsKIAogICAgICAgICBpZiAoV1RGOjpob2xk
c19hbHRlcm5hdGl2ZTxSZWZQdHI8RmlsZT4+KGl0ZW0uZGF0YSkpCi0gICAgICAgICAgICBhcHBl
bmRNdWx0aVBhcnRGaWxlVmFsdWUoKldURjo6Z2V0PFJlZlB0cjxGaWxlPj4oaXRlbS5kYXRhKSwg
aGVhZGVyLCBlbmNvZGluZywgZG9jdW1lbnQpOworICAgICAgICAgICAgYXBwZW5kTXVsdGlQYXJ0
RmlsZVZhbHVlKCpXVEY6OmdldDxSZWZQdHI8RmlsZT4+KGl0ZW0uZGF0YSksIGhlYWRlciwgZW5j
b2RpbmcpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBhcHBlbmRNdWx0aVBhcnRTdHJpbmdW
YWx1ZShXVEY6OmdldDxTdHJpbmc+KGl0ZW0uZGF0YSksIGhlYWRlciwgZW5jb2RpbmcpOwogCkBA
IC0zNTksNyArMzM0LDcgQEAgUmVmPEZvcm1EYXRhPiBGb3JtRGF0YTo6cmVzb2x2ZUJsb2JSZWZl
cmVuY2VzKEJsb2JSZWdpc3RyeSYgYmxvYlJlZ2lzdHJ5KQogICAgICAgICAgICAgWyZdIChjb25z
dCBWZWN0b3I8Y2hhcj4mIGJ5dGVzKSB7CiAgICAgICAgICAgICAgICAgbmV3Rm9ybURhdGEtPmFw
cGVuZERhdGEoYnl0ZXMuZGF0YSgpLCBieXRlcy5zaXplKCkpOwogICAgICAgICAgICAgfSwgWyZd
IChjb25zdCBGb3JtRGF0YUVsZW1lbnQ6OkVuY29kZWRGaWxlRGF0YSYgZmlsZURhdGEpIHsKLSAg
ICAgICAgICAgICAgICBuZXdGb3JtRGF0YS0+YXBwZW5kRmlsZVJhbmdlKGZpbGVEYXRhLmZpbGVu
YW1lLCBmaWxlRGF0YS5maWxlU3RhcnQsIGZpbGVEYXRhLmZpbGVMZW5ndGgsIGZpbGVEYXRhLmV4
cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUsIGZpbGVEYXRhLnNob3VsZEdlbmVyYXRlRmlsZSk7
CisgICAgICAgICAgICAgICAgbmV3Rm9ybURhdGEtPmFwcGVuZEZpbGVSYW5nZShmaWxlRGF0YS5m
aWxlbmFtZSwgZmlsZURhdGEuZmlsZVN0YXJ0LCBmaWxlRGF0YS5maWxlTGVuZ3RoLCBmaWxlRGF0
YS5leHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lKTsKICAgICAgICAgICAgIH0sIFsmXSAoY29u
c3QgRm9ybURhdGFFbGVtZW50OjpFbmNvZGVkQmxvYkRhdGEmIGJsb2JEYXRhKSB7CiAgICAgICAg
ICAgICAgICAgYXBwZW5kQmxvYlJlc29sdmVkKGJsb2JSZWdpc3RyeSwgbmV3Rm9ybURhdGEuZ2V0
KCksIGJsb2JEYXRhLnVybCk7CiAgICAgICAgICAgICB9CkBAIC0zNjgsNjYgKzM0Myw0MSBAQCBS
ZWY8Rm9ybURhdGE+IEZvcm1EYXRhOjpyZXNvbHZlQmxvYlJlZmVyZW5jZXMoQmxvYlJlZ2lzdHJ5
JiBibG9iUmVnaXN0cnkpCiAgICAgcmV0dXJuIG5ld0Zvcm1EYXRhOwogfQogCi12b2lkIEZvcm1E
YXRhOjpnZW5lcmF0ZUZpbGVzKERvY3VtZW50KiBkb2N1bWVudCkKLXsKLSAgICBQYWdlKiBwYWdl
ID0gZG9jdW1lbnQtPnBhZ2UoKTsKLSAgICBpZiAoIXBhZ2UpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIGZvciAoYXV0byYgZWxlbWVudCA6IG1fZWxlbWVudHMpIHsKLSAgICAgICAgaWYgKGF1dG8q
IGZpbGVEYXRhID0gV1RGOjpnZXRfaWY8Rm9ybURhdGFFbGVtZW50OjpFbmNvZGVkRmlsZURhdGE+
KGVsZW1lbnQuZGF0YSkpIHsKLSAgICAgICAgICAgIGlmIChmaWxlRGF0YS0+c2hvdWxkR2VuZXJh
dGVGaWxlKSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKCFmaWxlRGF0YS0+b3duc0dlbmVyYXRl
ZEZpbGUpOwotICAgICAgICAgICAgICAgIEFTU0VSVChmaWxlRGF0YS0+Z2VuZXJhdGVkRmlsZW5h
bWUuaXNFbXB0eSgpKTsKLSAgICAgICAgICAgICAgICBpZiAoIWZpbGVEYXRhLT5nZW5lcmF0ZWRG
aWxlbmFtZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICAgICAgICAgIGZpbGVEYXRhLT5nZW5lcmF0ZWRGaWxlbmFtZSA9IHBhZ2UtPmNocm9tZSgpLmNs
aWVudCgpLmdlbmVyYXRlUmVwbGFjZW1lbnRGaWxlKGZpbGVEYXRhLT5maWxlbmFtZSk7Ci0gICAg
ICAgICAgICAgICAgaWYgKCFmaWxlRGF0YS0+Z2VuZXJhdGVkRmlsZW5hbWUuaXNFbXB0eSgpKQot
ICAgICAgICAgICAgICAgICAgICBmaWxlRGF0YS0+b3duc0dlbmVyYXRlZEZpbGUgPSB0cnVlOwot
ICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotfQotCi1ib29sIEZvcm1EYXRhOjpoYXNH
ZW5lcmF0ZWRGaWxlcygpIGNvbnN0CitGb3JtRGF0YUZvclVwbG9hZCBGb3JtRGF0YTo6cHJlcGFy
ZUZvclVwbG9hZCgpCiB7CisgICAgVmVjdG9yPFN0cmluZz4gZ2VuZXJhdGVkRmlsZXM7CiAgICAg
Zm9yIChhdXRvJiBlbGVtZW50IDogbV9lbGVtZW50cykgewotICAgICAgICBpZiAoYXV0byogZmls
ZURhdGEgPSBXVEY6OmdldF9pZjxGb3JtRGF0YUVsZW1lbnQ6OkVuY29kZWRGaWxlRGF0YT4oZWxl
bWVudC5kYXRhKSkgewotICAgICAgICAgICAgaWYgKCFmaWxlRGF0YS0+Z2VuZXJhdGVkRmlsZW5h
bWUuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Cisg
ICAgICAgIGF1dG8qIGZpbGVEYXRhID0gV1RGOjpnZXRfaWY8Rm9ybURhdGFFbGVtZW50OjpFbmNv
ZGVkRmlsZURhdGE+KGVsZW1lbnQuZGF0YSk7CisgICAgICAgIGlmICghZmlsZURhdGEpCisgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKCFGaWxlU3lzdGVtOjpmaWxlSXNEaXJlY3Rv
cnkoZmlsZURhdGEtPmZpbGVuYW1lLCBGaWxlU3lzdGVtOjpTaG91bGRGb2xsb3dTeW1ib2xpY0xp
bmtzOjpZZXMpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmIChmaWxlRGF0YS0+
ZmlsZVN0YXJ0IHx8IGZpbGVEYXRhLT5maWxlTGVuZ3RoICE9IEJsb2JEYXRhSXRlbTo6dG9FbmRP
ZkZpbGUpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKCFmaWxlRGF0YS0+Zmls
ZU1vZGlmaWNhdGlvblRpbWVNYXRjaGVzRXhwZWN0YXRpb24oKSkKKyAgICAgICAgICAgIGNvbnRp
bnVlOworCisgICAgICAgIGF1dG8gZ2VuZXJhdGVkRmlsZW5hbWUgPSBGaWxlU3lzdGVtOjpjcmVh
dGVUZW1wb3JhcnlaaXBBcmNoaXZlKGZpbGVEYXRhLT5maWxlbmFtZSk7CisgICAgICAgIGlmICgh
Z2VuZXJhdGVkRmlsZW5hbWUpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgZmlsZURh
dGEtPmZpbGVuYW1lID0gZ2VuZXJhdGVkRmlsZW5hbWU7CisgICAgICAgIGdlbmVyYXRlZEZpbGVz
LmFwcGVuZChXVEZNb3ZlKGdlbmVyYXRlZEZpbGVuYW1lKSk7CiAgICAgfQotICAgIHJldHVybiBm
YWxzZTsKKyAgICAKKyAgICByZXR1cm4geyAqdGhpcywgV1RGTW92ZShnZW5lcmF0ZWRGaWxlcykg
fTsKIH0KIAotYm9vbCBGb3JtRGF0YTo6aGFzT3duZWRHZW5lcmF0ZWRGaWxlcygpIGNvbnN0CitG
b3JtRGF0YUZvclVwbG9hZDo6Rm9ybURhdGFGb3JVcGxvYWQoRm9ybURhdGEmIGRhdGEsIFZlY3Rv
cjxTdHJpbmc+JiYgdGVtcG9yYXJ5WmlwRmlsZXMpCisgICAgOiBtX2RhdGEoZGF0YSkKKyAgICAs
IG1fdGVtcG9yYXJ5WmlwRmlsZXMoV1RGTW92ZSh0ZW1wb3JhcnlaaXBGaWxlcykpCiB7Ci0gICAg
Zm9yIChhdXRvJiBlbGVtZW50IDogbV9lbGVtZW50cykgewotICAgICAgICBpZiAoYXV0byogZmls
ZURhdGEgPSBXVEY6OmdldF9pZjxGb3JtRGF0YUVsZW1lbnQ6OkVuY29kZWRGaWxlRGF0YT4oZWxl
bWVudC5kYXRhKSkgewotICAgICAgICAgICAgaWYgKGZpbGVEYXRhLT5vd25zR2VuZXJhdGVkRmls
ZSkgewotICAgICAgICAgICAgICAgIEFTU0VSVCghZmlsZURhdGEtPmdlbmVyYXRlZEZpbGVuYW1l
LmlzRW1wdHkoKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIEZvcm1EYXRh
OjpyZW1vdmVHZW5lcmF0ZWRGaWxlc0lmTmVlZGVkKCkKK0Zvcm1EYXRhRm9yVXBsb2FkOjp+Rm9y
bURhdGFGb3JVcGxvYWQoKQogewotICAgIGZvciAoYXV0byYgZWxlbWVudCA6IG1fZWxlbWVudHMp
IHsKLSAgICAgICAgaWYgKGF1dG8qIGZpbGVEYXRhID0gV1RGOjpnZXRfaWY8Rm9ybURhdGFFbGVt
ZW50OjpFbmNvZGVkRmlsZURhdGE+KGVsZW1lbnQuZGF0YSkpIHsKLSAgICAgICAgICAgIGlmIChm
aWxlRGF0YS0+b3duc0dlbmVyYXRlZEZpbGUpIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQoIWZp
bGVEYXRhLT5nZW5lcmF0ZWRGaWxlbmFtZS5pc0VtcHR5KCkpOwotICAgICAgICAgICAgICAgIEFT
U0VSVChmaWxlRGF0YS0+c2hvdWxkR2VuZXJhdGVGaWxlKTsKLSAgICAgICAgICAgICAgICBTdHJp
bmcgZGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShmaWxlRGF0YS0+Z2VuZXJh
dGVkRmlsZW5hbWUpOwotICAgICAgICAgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoZmls
ZURhdGEtPmdlbmVyYXRlZEZpbGVuYW1lKTsKLSAgICAgICAgICAgICAgICBGaWxlU3lzdGVtOjpk
ZWxldGVFbXB0eURpcmVjdG9yeShkaXJlY3RvcnkpOwotICAgICAgICAgICAgICAgIGZpbGVEYXRh
LT5nZW5lcmF0ZWRGaWxlbmFtZSA9IFN0cmluZygpOwotICAgICAgICAgICAgICAgIGZpbGVEYXRh
LT5vd25zR2VuZXJhdGVkRmlsZSA9IGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0g
ICAgfQorICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgZm9yIChhdXRvJiBmaWxlIDog
bV90ZW1wb3JhcnlaaXBGaWxlcykKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShmaWxl
KTsKIH0KIAogdWludDY0X3QgRm9ybURhdGE6Omxlbmd0aEluQnl0ZXMoKSBjb25zdApAQCAtNDYw
LDQgKzQxMCwxOSBAQCBVUkwgRm9ybURhdGE6OmFzQmxvYlVSTCgpIGNvbnN0CiAgICAgcmV0dXJu
IHsgfTsKIH0KIAorYm9vbCBGb3JtRGF0YUVsZW1lbnQ6OkVuY29kZWRGaWxlRGF0YTo6ZmlsZU1v
ZGlmaWNhdGlvblRpbWVNYXRjaGVzRXhwZWN0YXRpb24oKSBjb25zdAoreworICAgIGlmICghZXhw
ZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBh
dXRvIGZpbGVNb2RpZmljYXRpb25UaW1lID0gRmlsZVN5c3RlbTo6Z2V0RmlsZU1vZGlmaWNhdGlv
blRpbWUoZmlsZW5hbWUpOworICAgIGlmICghZmlsZU1vZGlmaWNhdGlvblRpbWUpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIGlmIChmaWxlTW9kaWZpY2F0aW9uVGltZS0+c2Vjb25kc1Np
bmNlRXBvY2goKS5zZWNvbmRzQXM8dGltZV90PigpICE9IGV4cGVjdGVkRmlsZU1vZGlmaWNhdGlv
blRpbWUtPnNlY29uZHNTaW5jZUVwb2NoKCkuc2Vjb25kc0FzPHRpbWVfdD4oKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURh
dGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaAppbmRleCAy
OWQ1NTdhNmJhMjYzYzUyNDU2YjRiYzcwYTFjZDRkOWYxZjQzNjRiLi4yMGJmNjJlMjEwMDBmNTUz
NmE1OWM2OWI2YzUyNTkyMDU5YTVmMzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9Gb3JtRGF0YS5oCkBAIC0zMSw3ICszMSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgQmxvYlJlZ2lzdHJ5OwogY2xhc3MgRE9NRm9ybURhdGE7Ci1jbGFzcyBEb2N1bWVudDsK
IGNsYXNzIEZpbGU7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBUZXh0RW5jb2Rpbmc7CkBA
IC00Niw4ICs0NSw4IEBAIHN0cnVjdCBGb3JtRGF0YUVsZW1lbnQgewogICAgICAgICA6IGRhdGEo
V1RGTW92ZShkYXRhKSkgeyB9CiAgICAgZXhwbGljaXQgRm9ybURhdGFFbGVtZW50KFZlY3Rvcjxj
aGFyPiYmIGFycmF5KQogICAgICAgICA6IGRhdGEoV1RGTW92ZShhcnJheSkpIHsgfQotICAgIEZv
cm1EYXRhRWxlbWVudChjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBpbnQ2NF90IGZpbGVTdGFydCwg
aW50NjRfdCBmaWxlTGVuZ3RoLCBPcHRpb25hbDxXYWxsVGltZT4gZXhwZWN0ZWRGaWxlTW9kaWZp
Y2F0aW9uVGltZSwgYm9vbCBzaG91bGRHZW5lcmF0ZUZpbGUpCi0gICAgICAgIDogZGF0YShFbmNv
ZGVkRmlsZURhdGEgeyBmaWxlbmFtZSwgZmlsZVN0YXJ0LCBmaWxlTGVuZ3RoLCBleHBlY3RlZEZp
bGVNb2RpZmljYXRpb25UaW1lLCB7IH0sIHNob3VsZEdlbmVyYXRlRmlsZSwgZmFsc2UgfSkgeyB9
CisgICAgRm9ybURhdGFFbGVtZW50KGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGludDY0X3QgZmls
ZVN0YXJ0LCBpbnQ2NF90IGZpbGVMZW5ndGgsIE9wdGlvbmFsPFdhbGxUaW1lPiBleHBlY3RlZEZp
bGVNb2RpZmljYXRpb25UaW1lKQorICAgICAgICA6IGRhdGEoRW5jb2RlZEZpbGVEYXRhIHsgZmls
ZW5hbWUsIGZpbGVTdGFydCwgZmlsZUxlbmd0aCwgZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGlt
ZSB9KSB7IH0KICAgICBleHBsaWNpdCBGb3JtRGF0YUVsZW1lbnQoY29uc3QgVVJMJiBibG9iVVJM
KQogICAgICAgICA6IGRhdGEoRW5jb2RlZEJsb2JEYXRhIHsgYmxvYlVSTCB9KSB7IH0KIApAQCAt
NzMsMTcgKzcyLDEyIEBAIHN0cnVjdCBGb3JtRGF0YUVsZW1lbnQgewogICAgICAgICBpbnQ2NF90
IGZpbGVTdGFydCB7IDAgfTsKICAgICAgICAgaW50NjRfdCBmaWxlTGVuZ3RoIHsgMCB9OwogICAg
ICAgICBPcHRpb25hbDxXYWxsVGltZT4gZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZTsKLSAg
ICAgICAgU3RyaW5nIGdlbmVyYXRlZEZpbGVuYW1lOwotICAgICAgICBib29sIHNob3VsZEdlbmVy
YXRlRmlsZSB7IGZhbHNlIH07Ci0gICAgICAgIGJvb2wgb3duc0dlbmVyYXRlZEZpbGUgeyBmYWxz
ZSB9OwogCi0gICAgICAgIC8vIEZJWE1FOiBHZW5lcmF0ZWQgZmlsZSBzdXBwb3J0IGluIEZvcm1E
YXRhIGlzIGFsbW9zdCBpZGVudGljYWwgdG8gQmxvYiwgdGhleSBzaG91bGQgYmUgbWVyZ2VkLgot
ICAgICAgICAvLyBXZSBjYW4ndCBqdXN0IHN3aXRjaCB0byB1c2luZyBCbG9icyBmb3IgYWxsIGZp
bGVzIGJlY2F1c2UgRW5jb2RlZEZpbGUgZm9ybSBkYXRhIGVsZW1lbnRzIGRvIG5vdAotICAgICAg
ICAvLyBoYXZlIGEgdmFsaWQgZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZSwgbWVhbmluZyB3
ZSBhbHdheXMgdXBsb2FkIHRoZSBsYXRlc3QgY29udGVudCBmcm9tIGRpc2suCisgICAgICAgIGJv
b2wgZmlsZU1vZGlmaWNhdGlvblRpbWVNYXRjaGVzRXhwZWN0YXRpb24oKSBjb25zdDsKIAogICAg
ICAgICBFbmNvZGVkRmlsZURhdGEgaXNvbGF0ZWRDb3B5KCkgY29uc3QKICAgICAgICAgewotICAg
ICAgICAgICAgcmV0dXJuIHsgZmlsZW5hbWUuaXNvbGF0ZWRDb3B5KCksIGZpbGVTdGFydCwgZmls
ZUxlbmd0aCwgZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZSwgZ2VuZXJhdGVkRmlsZW5hbWUu
aXNvbGF0ZWRDb3B5KCksIHNob3VsZEdlbmVyYXRlRmlsZSwgb3duc0dlbmVyYXRlZEZpbGUgfTsK
KyAgICAgICAgICAgIHJldHVybiB7IGZpbGVuYW1lLmlzb2xhdGVkQ29weSgpLCBmaWxlU3RhcnQs
IGZpbGVMZW5ndGgsIGV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUgfTsKICAgICAgICAgfQog
ICAgICAgICAKICAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEVuY29kZWRGaWxlRGF0YSYg
b3RoZXIpIGNvbnN0CkBAIC05MSwxNCArODUsMTEgQEAgc3RydWN0IEZvcm1EYXRhRWxlbWVudCB7
CiAgICAgICAgICAgICByZXR1cm4gZmlsZW5hbWUgPT0gb3RoZXIuZmlsZW5hbWUKICAgICAgICAg
ICAgICAgICAmJiBmaWxlU3RhcnQgPT0gb3RoZXIuZmlsZVN0YXJ0CiAgICAgICAgICAgICAgICAg
JiYgZmlsZUxlbmd0aCA9PSBvdGhlci5maWxlTGVuZ3RoCi0gICAgICAgICAgICAgICAgJiYgZXhw
ZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZSA9PSBvdGhlci5leHBlY3RlZEZpbGVNb2RpZmljYXRp
b25UaW1lCi0gICAgICAgICAgICAgICAgJiYgZ2VuZXJhdGVkRmlsZW5hbWUgPT0gb3RoZXIuZ2Vu
ZXJhdGVkRmlsZW5hbWUKLSAgICAgICAgICAgICAgICAmJiBzaG91bGRHZW5lcmF0ZUZpbGUgPT0g
b3RoZXIuc2hvdWxkR2VuZXJhdGVGaWxlCi0gICAgICAgICAgICAgICAgJiYgb3duc0dlbmVyYXRl
ZEZpbGUgPT0gb3RoZXIub3duc0dlbmVyYXRlZEZpbGU7CisgICAgICAgICAgICAgICAgJiYgZXhw
ZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZSA9PSBvdGhlci5leHBlY3RlZEZpbGVNb2RpZmljYXRp
b25UaW1lOwogICAgICAgICB9CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+IHZv
aWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgICAgIHsKLSAgICAgICAgICAg
IGVuY29kZXIgPDwgZmlsZW5hbWUgPDwgZmlsZVN0YXJ0IDw8IGZpbGVMZW5ndGggPDwgZXhwZWN0
ZWRGaWxlTW9kaWZpY2F0aW9uVGltZSA8PCBnZW5lcmF0ZWRGaWxlbmFtZSA8PCBzaG91bGRHZW5l
cmF0ZUZpbGU7CisgICAgICAgICAgICBlbmNvZGVyIDw8IGZpbGVuYW1lIDw8IGZpbGVTdGFydCA8
PCBmaWxlTGVuZ3RoIDw8IGV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWU7CiAgICAgICAgIH0K
ICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPEVuY29k
ZWRGaWxlRGF0YT4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgICAgIHsKQEAgLTEyMSwy
NyArMTEyLDEyIEBAIHN0cnVjdCBGb3JtRGF0YUVsZW1lbnQgewogICAgICAgICAgICAgZGVjb2Rl
ciA+PiBleHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lOwogICAgICAgICAgICAgaWYgKCFleHBl
Y3RlZEZpbGVNb2RpZmljYXRpb25UaW1lKQogICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIE9wdGlvbmFsPFN0cmluZz4gZ2VuZXJh
dGVkRmlsZW5hbWU7Ci0gICAgICAgICAgICBkZWNvZGVyID4+IGdlbmVyYXRlZEZpbGVuYW1lOwot
ICAgICAgICAgICAgaWYgKCFnZW5lcmF0ZWRGaWxlbmFtZSkKLSAgICAgICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OwotCi0gICAgICAgICAgICBPcHRpb25hbDxib29sPiBzaG91bGRHZW5l
cmF0ZUZpbGU7Ci0gICAgICAgICAgICBkZWNvZGVyID4+IHNob3VsZEdlbmVyYXRlRmlsZTsKLSAg
ICAgICAgICAgIGlmICghc2hvdWxkR2VuZXJhdGVGaWxlKQotICAgICAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CiAKLSAgICAgICAgICAgIGJvb2wgb3duc0dlbmVyYXRlZEZpbGUgPSBm
YWxzZTsKLSAgICAgICAgICAgIAogICAgICAgICAgICAgcmV0dXJuIHt7CiAgICAgICAgICAgICAg
ICAgV1RGTW92ZSgqZmlsZW5hbWUpLAogICAgICAgICAgICAgICAgIFdURk1vdmUoKmZpbGVTdGFy
dCksCiAgICAgICAgICAgICAgICAgV1RGTW92ZSgqZmlsZUxlbmd0aCksCi0gICAgICAgICAgICAg
ICAgV1RGTW92ZSgqZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZSksCi0gICAgICAgICAgICAg
ICAgV1RGTW92ZSgqZ2VuZXJhdGVkRmlsZW5hbWUpLAotICAgICAgICAgICAgICAgIFdURk1vdmUo
KnNob3VsZEdlbmVyYXRlRmlsZSksCi0gICAgICAgICAgICAgICAgV1RGTW92ZShvd25zR2VuZXJh
dGVkRmlsZSkKKyAgICAgICAgICAgICAgICBXVEZNb3ZlKCpleHBlY3RlZEZpbGVNb2RpZmljYXRp
b25UaW1lKQogICAgICAgICAgICAgfX07CiAgICAgICAgIH0KIApAQCAtMTg5LDYgKzE2NSwyMiBA
QCBzdHJ1Y3QgRm9ybURhdGFFbGVtZW50IHsKICAgICBEYXRhIGRhdGE7CiB9OwogCitjbGFzcyBG
b3JtRGF0YTsKKworc3RydWN0IEZvcm1EYXRhRm9yVXBsb2FkIHsKK3B1YmxpYzoKKyAgICBGb3Jt
RGF0YUZvclVwbG9hZChGb3JtRGF0YUZvclVwbG9hZCYmKSA9IGRlZmF1bHQ7CisgICAgfkZvcm1E
YXRhRm9yVXBsb2FkKCk7CisKKyAgICBGb3JtRGF0YSYgZGF0YSgpIHsgcmV0dXJuIG1fZGF0YS5n
ZXQoKTsgfQorcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgRm9ybURhdGE7CisgICAgRm9ybURh
dGFGb3JVcGxvYWQoRm9ybURhdGEmLCBWZWN0b3I8U3RyaW5nPiYmKTsKKyAgICAKKyAgICBSZWY8
Rm9ybURhdGE+IG1fZGF0YTsKKyAgICBWZWN0b3I8U3RyaW5nPiBtX3RlbXBvcmFyeVppcEZpbGVz
OworfTsKKwogY2xhc3MgRm9ybURhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxGb3JtRGF0YT4gewog
cHVibGljOgogICAgIGVudW0gRW5jb2RpbmdUeXBlIHsKQEAgLTIwNCw3ICsxOTYsNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIFJlZjxGb3JtRGF0YT4gY3JlYXRlKGNvbnN0IFZlY3RvcjxjaGFyPiYp
OwogICAgIHN0YXRpYyBSZWY8Rm9ybURhdGE+IGNyZWF0ZShjb25zdCBWZWN0b3I8dWludDhfdD4m
KTsKICAgICBzdGF0aWMgUmVmPEZvcm1EYXRhPiBjcmVhdGUoY29uc3QgRE9NRm9ybURhdGEmLCBF
bmNvZGluZ1R5cGUgPSBGb3JtVVJMRW5jb2RlZCk7Ci0gICAgc3RhdGljIFJlZjxGb3JtRGF0YT4g
Y3JlYXRlTXVsdGlQYXJ0KGNvbnN0IERPTUZvcm1EYXRhJiwgRG9jdW1lbnQqKTsKKyAgICBzdGF0
aWMgUmVmPEZvcm1EYXRhPiBjcmVhdGVNdWx0aVBhcnQoY29uc3QgRE9NRm9ybURhdGEmKTsKICAg
ICBXRUJDT1JFX0VYUE9SVCB+Rm9ybURhdGEoKTsKIAogICAgIC8vIEZJWE1FOiBCb3RoIHRoZXNl
IGZ1bmN0aW9ucyBwZXJmb3JtIGEgZGVlcCBjb3B5IG9mIG1fZWxlbWVudHMsIGJ1dCBkaWZmZXIg
aW4gaGFuZGxpbmcgb2Ygb3RoZXIgZGF0YSBtZW1iZXJzLgpAQCAtMjE4LDggKzIxMCw4IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgUmVmUHRyPEZvcm1EYXRhPiBkZWNvZGUoRGVjb2RlciYpOwogCiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmREYXRhKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVf
dCk7Ci0gICAgdm9pZCBhcHBlbmRGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIGJvb2wgc2hv
dWxkR2VuZXJhdGVGaWxlID0gZmFsc2UpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5k
RmlsZVJhbmdlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBs
b25nIGxlbmd0aCwgT3B0aW9uYWw8V2FsbFRpbWU+IGV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSwg
Ym9vbCBzaG91bGRHZW5lcmF0ZUZpbGUgPSBmYWxzZSk7CisgICAgdm9pZCBhcHBlbmRGaWxlKGNv
bnN0IFN0cmluZyYgZmlsZVBhdGgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kRmls
ZVJhbmdlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25n
IGxlbmd0aCwgT3B0aW9uYWw8V2FsbFRpbWU+IGV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSk7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmRCbG9iKGNvbnN0IFVSTCYgYmxvYlVSTCk7CiAK
ICAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8Y2hhcj4gZmxhdHRlbigpIGNvbnN0OyAvLyBvbWl0
cyBmaWxlcwpAQCAtMjI5LDE1ICsyMjEsMTQgQEAgcHVibGljOgogICAgIC8vIElmIHRoZSBGb3Jt
RGF0YSBoYXMgbm8gYmxvYiByZWZlcmVuY2VzIHRvIHJlc29sdmUsIHRoaXMgaXMgcmV0dXJuZWQu
CiAgICAgV0VCQ09SRV9FWFBPUlQgUmVmPEZvcm1EYXRhPiByZXNvbHZlQmxvYlJlZmVyZW5jZXMo
QmxvYlJlZ2lzdHJ5Jik7CiAKKyAgICBXRUJDT1JFX0VYUE9SVCBGb3JtRGF0YUZvclVwbG9hZCBw
cmVwYXJlRm9yVXBsb2FkKCk7CisKICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBt
X2VsZW1lbnRzLmlzRW1wdHkoKTsgfQogICAgIGNvbnN0IFZlY3RvcjxGb3JtRGF0YUVsZW1lbnQ+
JiBlbGVtZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudHM7IH0KICAgICBjb25zdCBWZWN0
b3I8Y2hhcj4mIGJvdW5kYXJ5KCkgY29uc3QgeyByZXR1cm4gbV9ib3VuZGFyeTsgfQogCiAgICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYXNTaGFyZWRCdWZmZXIoKSBjb25zdDsKIAotICAgIHZvaWQg
Z2VuZXJhdGVGaWxlcyhEb2N1bWVudCopOwotICAgIHZvaWQgcmVtb3ZlR2VuZXJhdGVkRmlsZXNJ
Zk5lZWRlZCgpOwotCiAgICAgYm9vbCBhbHdheXNTdHJlYW0oKSBjb25zdCB7IHJldHVybiBtX2Fs
d2F5c1N0cmVhbTsgfQogICAgIHZvaWQgc2V0QWx3YXlzU3RyZWFtKGJvb2wgYWx3YXlzU3RyZWFt
KSB7IG1fYWx3YXlzU3RyZWFtID0gYWx3YXlzU3RyZWFtOyB9CiAKQEAgLTI2NiwxNCArMjU3LDEx
IEBAIHByaXZhdGU6CiAgICAgRm9ybURhdGEoKTsKICAgICBGb3JtRGF0YShjb25zdCBGb3JtRGF0
YSYpOwogCi0gICAgdm9pZCBhcHBlbmRNdWx0aVBhcnRGaWxlVmFsdWUoY29uc3QgRmlsZSYsIFZl
Y3RvcjxjaGFyPiYgaGVhZGVyLCBUZXh0RW5jb2RpbmcmLCBEb2N1bWVudCopOworICAgIHZvaWQg
YXBwZW5kTXVsdGlQYXJ0RmlsZVZhbHVlKGNvbnN0IEZpbGUmLCBWZWN0b3I8Y2hhcj4mIGhlYWRl
ciwgVGV4dEVuY29kaW5nJik7CiAgICAgdm9pZCBhcHBlbmRNdWx0aVBhcnRTdHJpbmdWYWx1ZShj
b25zdCBTdHJpbmcmLCBWZWN0b3I8Y2hhcj4mIGhlYWRlciwgVGV4dEVuY29kaW5nJik7Ci0gICAg
dm9pZCBhcHBlbmRNdWx0aVBhcnRLZXlWYWx1ZVBhaXJJdGVtcyhjb25zdCBET01Gb3JtRGF0YSYs
IERvY3VtZW50Kik7CisgICAgdm9pZCBhcHBlbmRNdWx0aVBhcnRLZXlWYWx1ZVBhaXJJdGVtcyhj
b25zdCBET01Gb3JtRGF0YSYpOwogICAgIHZvaWQgYXBwZW5kTm9uTXVsdGlQYXJ0S2V5VmFsdWVQ
YWlySXRlbXMoY29uc3QgRE9NRm9ybURhdGEmLCBFbmNvZGluZ1R5cGUpOwogCi0gICAgYm9vbCBo
YXNHZW5lcmF0ZWRGaWxlcygpIGNvbnN0OwotICAgIGJvb2wgaGFzT3duZWRHZW5lcmF0ZWRGaWxl
cygpIGNvbnN0OwotCiAgICAgVmVjdG9yPEZvcm1EYXRhRWxlbWVudD4gbV9lbGVtZW50czsKIAog
ICAgIGludDY0X3QgbV9pZGVudGlmaWVyIHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAKaW5kZXgg
ZGZkZGU3MWExZjBiOTE4NjcxMjY1NTA0YWM3YTNmYWQ5MTlmZDdlMS4uNDdmMTU0MThmMmFkNGQ1
Zjg1ZDYwOWI3OTc4MzY2Nzk2MGZiYmRmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwCkBAIC05Miwy
MCArOTIsMjMgQEAgQ0ZTdHJpbmdSZWYgZm9ybURhdGFTdHJlYW1MZW5ndGhQcm9wZXJ0eU5hbWUo
KQogfQogCiBzdHJ1Y3QgRm9ybUNyZWF0aW9uQ29udGV4dCB7Ci0gICAgUmVmUHRyPEZvcm1EYXRh
PiBmb3JtRGF0YTsKKyAgICBGb3JtRGF0YUZvclVwbG9hZCBkYXRhOwogICAgIHVuc2lnbmVkIGxv
bmcgbG9uZyBzdHJlYW1MZW5ndGg7CiB9OwogCiBzdHJ1Y3QgRm9ybVN0cmVhbUZpZWxkcyB7Ci0g
ICAgUmVmUHRyPEZvcm1EYXRhPiBmb3JtRGF0YTsKKyAgICBGb3JtU3RyZWFtRmllbGRzKEZvcm1E
YXRhRm9yVXBsb2FkJiYgZGF0YSkKKyAgICAgICAgOiBkYXRhKFdURk1vdmUoZGF0YSkpIHsgfQor
CisgICAgRm9ybURhdGFGb3JVcGxvYWQgZGF0YTsKICAgICBTY2hlZHVsZVBhaXJIYXNoU2V0IHNj
aGVkdWxlZFJ1bkxvb3BQYWlyczsKICAgICBWZWN0b3I8Rm9ybURhdGFFbGVtZW50PiByZW1haW5p
bmdFbGVtZW50czsgLy8gaW4gcmV2ZXJzZSBvcmRlcgotICAgIENGUmVhZFN0cmVhbVJlZiBjdXJy
ZW50U3RyZWFtOwotICAgIGxvbmcgbG9uZyBjdXJyZW50U3RyZWFtUmFuZ2VMZW5ndGg7CisgICAg
Q0ZSZWFkU3RyZWFtUmVmIGN1cnJlbnRTdHJlYW0geyBudWxscHRyIH07CisgICAgbG9uZyBsb25n
IGN1cnJlbnRTdHJlYW1SYW5nZUxlbmd0aCB7IEJsb2JEYXRhSXRlbTo6dG9FbmRPZkZpbGUgfTsK
ICAgICBNYWxsb2NQdHI8Y2hhcj4gY3VycmVudERhdGE7Ci0gICAgQ0ZSZWFkU3RyZWFtUmVmIGZv
cm1TdHJlYW07Ci0gICAgdW5zaWduZWQgbG9uZyBsb25nIHN0cmVhbUxlbmd0aDsKLSAgICB1bnNp
Z25lZCBsb25nIGxvbmcgYnl0ZXNTZW50OworICAgIENGUmVhZFN0cmVhbVJlZiBmb3JtU3RyZWFt
IHsgbnVsbHB0ciB9OworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBzdHJlYW1MZW5ndGggeyAwIH07
CisgICAgdW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCB7IDAgfTsKICAgICBMb2NrIHN0cmVh
bUlzQmVpbmdPcGVuZWRPckNsb3NlZExvY2s7CiB9OwogCkBAIC0xNDUsMTUgKzE0OCwxMSBAQCBz
dGF0aWMgYm9vbCBhZHZhbmNlQ3VycmVudFN0cmVhbShGb3JtU3RyZWFtRmllbGRzKiBmb3JtKQog
ICAgICAgICAgICAgZm9ybS0+Y3VycmVudERhdGEgPSBXVEZNb3ZlKGRhdGEpOwogICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0sIFtmb3JtXSAoY29uc3QgRm9ybURhdGFFbGVtZW50
OjpFbmNvZGVkRmlsZURhdGEmIGZpbGVEYXRhKSB7Ci0gICAgICAgICAgICAvLyBDaGVjayBpZiB0
aGUgZmlsZSBoYXMgYmVlbiBjaGFuZ2VkIG9yIG5vdCBpZiByZXF1aXJlZC4KLSAgICAgICAgICAg
IGlmIChmaWxlRGF0YS5leHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lKSB7Ci0gICAgICAgICAg
ICAgICAgYXV0byBmaWxlTW9kaWZpY2F0aW9uVGltZSA9IEZpbGVTeXN0ZW06OmdldEZpbGVNb2Rp
ZmljYXRpb25UaW1lKGZpbGVEYXRhLmZpbGVuYW1lKTsKLSAgICAgICAgICAgICAgICBpZiAoIWZp
bGVNb2RpZmljYXRpb25UaW1lKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgICAgICAgICAgaWYgKGZpbGVNb2RpZmljYXRpb25UaW1lLT5zZWNvbmRzU2luY2VFcG9j
aCgpLnNlY29uZHNBczx0aW1lX3Q+KCkgIT0gZmlsZURhdGEuZXhwZWN0ZWRGaWxlTW9kaWZpY2F0
aW9uVGltZS0+c2Vjb25kc1NpbmNlRXBvY2goKS5zZWNvbmRzQXM8dGltZV90PigpKQotICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBj
b25zdCBTdHJpbmcmIHBhdGggPSBmaWxlRGF0YS5zaG91bGRHZW5lcmF0ZUZpbGUgPyBmaWxlRGF0
YS5nZW5lcmF0ZWRGaWxlbmFtZSA6IGZpbGVEYXRhLmZpbGVuYW1lOworICAgICAgICAgICAgLy8g
Q2hlY2sgaWYgdGhlIGZpbGUgaGFzIGJlZW4gY2hhbmdlZC4KKyAgICAgICAgICAgIGlmICghZmls
ZURhdGEuZmlsZU1vZGlmaWNhdGlvblRpbWVNYXRjaGVzRXhwZWN0YXRpb24oKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgcGF0aCA9
IGZpbGVEYXRhLmZpbGVuYW1lOwogICAgICAgICAgICAgZm9ybS0+Y3VycmVudFN0cmVhbSA9IENG
UmVhZFN0cmVhbUNyZWF0ZVdpdGhGaWxlKDAsIEZpbGVTeXN0ZW06OnBhdGhBc1VSTChwYXRoKS5n
ZXQoKSk7CiAgICAgICAgICAgICBpZiAoIWZvcm0tPmN1cnJlbnRTdHJlYW0pIHsKICAgICAgICAg
ICAgICAgICAvLyBUaGUgZmlsZSBtdXN0IGhhdmUgYmVlbiByZW1vdmVkIG9yIGJlY29tZSB1bnJl
YWRhYmxlLgpAQCAtMjA4LDI0ICsyMDcsMjAgQEAgc3RhdGljIGJvb2wgb3Blbk5leHRTdHJlYW0o
Rm9ybVN0cmVhbUZpZWxkcyogZm9ybSkKIHN0YXRpYyB2b2lkKiBmb3JtQ3JlYXRlKENGUmVhZFN0
cmVhbVJlZiBzdHJlYW0sIHZvaWQqIGNvbnRleHQpCiB7CiAgICAgRm9ybUNyZWF0aW9uQ29udGV4
dCogZm9ybUNvbnRleHQgPSBzdGF0aWNfY2FzdDxGb3JtQ3JlYXRpb25Db250ZXh0Kj4oY29udGV4
dCk7Ci0KLSAgICBGb3JtU3RyZWFtRmllbGRzKiBuZXdJbmZvID0gbmV3IEZvcm1TdHJlYW1GaWVs
ZHM7Ci0gICAgbmV3SW5mby0+Zm9ybURhdGEgPSBXVEZNb3ZlKGZvcm1Db250ZXh0LT5mb3JtRGF0
YSk7Ci0gICAgbmV3SW5mby0+Y3VycmVudFN0cmVhbSA9IDA7Ci0gICAgbmV3SW5mby0+Y3VycmVu
dFN0cmVhbVJhbmdlTGVuZ3RoID0gQmxvYkRhdGFJdGVtOjp0b0VuZE9mRmlsZTsKKyAgICAKKyAg
ICBGb3JtU3RyZWFtRmllbGRzKiBuZXdJbmZvID0gbmV3IEZvcm1TdHJlYW1GaWVsZHMoV1RGTW92
ZShmb3JtQ29udGV4dC0+ZGF0YSkpOwogICAgIG5ld0luZm8tPmZvcm1TdHJlYW0gPSBzdHJlYW07
IC8vIERvbid0IHJldGFpbi4gVGhhdCB3b3VsZCBjcmVhdGUgYSByZWZlcmVuY2UgY3ljbGUuCiAg
ICAgbmV3SW5mby0+c3RyZWFtTGVuZ3RoID0gZm9ybUNvbnRleHQtPnN0cmVhbUxlbmd0aDsKLSAg
ICBuZXdJbmZvLT5ieXRlc1NlbnQgPSAwOwogICAgIAogICAgIGNhbGxPbk1haW5UaHJlYWQoW2Zv
cm1Db250ZXh0XSB7CiAgICAgICAgIGRlbGV0ZSBmb3JtQ29udGV4dDsKICAgICB9KTsKIAogICAg
IC8vIEFwcGVuZCBpbiByZXZlcnNlIG9yZGVyIHNpbmNlIHdlIHJlbW92ZSBlbGVtZW50cyBmcm9t
IHRoZSBlbmQuCi0gICAgc2l6ZV90IHNpemUgPSBuZXdJbmZvLT5mb3JtRGF0YS0+ZWxlbWVudHMo
KS5zaXplKCk7CisgICAgc2l6ZV90IHNpemUgPSBuZXdJbmZvLT5kYXRhLmRhdGEoKS5lbGVtZW50
cygpLnNpemUoKTsKICAgICBuZXdJbmZvLT5yZW1haW5pbmdFbGVtZW50cy5yZXNlcnZlSW5pdGlh
bENhcGFjaXR5KHNpemUpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQot
ICAgICAgICBuZXdJbmZvLT5yZW1haW5pbmdFbGVtZW50cy51bmNoZWNrZWRBcHBlbmQobmV3SW5m
by0+Zm9ybURhdGEtPmVsZW1lbnRzKClbc2l6ZSAtIGkgLSAxXSk7CisgICAgICAgIG5ld0luZm8t
PnJlbWFpbmluZ0VsZW1lbnRzLnVuY2hlY2tlZEFwcGVuZChuZXdJbmZvLT5kYXRhLmRhdGEoKS5l
bGVtZW50cygpW3NpemUgLSBpIC0gMV0pOwogCiAgICAgcmV0dXJuIG5ld0luZm87CiB9CkBAIC0z
MTcsNyArMzEyLDcgQEAgc3RhdGljIENGVHlwZVJlZiBmb3JtQ29weVByb3BlcnR5KENGUmVhZFN0
cmVhbVJlZiwgQ0ZTdHJpbmdSZWYgcHJvcGVydHlOYW1lLCB2b2kKICAgICBGb3JtU3RyZWFtRmll
bGRzKiBmb3JtID0gc3RhdGljX2Nhc3Q8Rm9ybVN0cmVhbUZpZWxkcyo+KGNvbnRleHQpOwogCiAg
ICAgaWYgKGtDRkNvbXBhcmVFcXVhbFRvID09IENGU3RyaW5nQ29tcGFyZShwcm9wZXJ0eU5hbWUs
IGZvcm1EYXRhUG9pbnRlclByb3BlcnR5TmFtZSwgMCkpIHsKLSAgICAgICAgbG9uZyBsb25nIGZv
cm1EYXRhQXNOdW1iZXIgPSBzdGF0aWNfY2FzdDxsb25nIGxvbmc+KHJlaW50ZXJwcmV0X2Nhc3Q8
aW50cHRyX3Q+KGZvcm0tPmZvcm1EYXRhLmdldCgpKSk7CisgICAgICAgIGxvbmcgbG9uZyBmb3Jt
RGF0YUFzTnVtYmVyID0gc3RhdGljX2Nhc3Q8bG9uZyBsb25nPihyZWludGVycHJldF9jYXN0PGlu
dHB0cl90PigmZm9ybS0+ZGF0YS5kYXRhKCkpKTsKICAgICAgICAgcmV0dXJuIENGTnVtYmVyQ3Jl
YXRlKDAsIGtDRk51bWJlckxvbmdMb25nVHlwZSwgJmZvcm1EYXRhQXNOdW1iZXIpOwogICAgIH0K
IApAQCAtMzc4LDEzICszNzMsMTQgQEAgc3RhdGljIHZvaWQgZm9ybUV2ZW50Q2FsbGJhY2soQ0ZS
ZWFkU3RyZWFtUmVmIHN0cmVhbSwgQ0ZTdHJlYW1FdmVudFR5cGUgdHlwZSwgdm8KIFJldGFpblB0
cjxDRlJlYWRTdHJlYW1SZWY+IGNyZWF0ZUhUVFBCb2R5Q0ZSZWFkU3RyZWFtKEZvcm1EYXRhJiBm
b3JtRGF0YSkKIHsKICAgICBhdXRvIHJlc29sdmVkRm9ybURhdGEgPSBmb3JtRGF0YS5yZXNvbHZl
QmxvYlJlZmVyZW5jZXMoYmxvYlJlZ2lzdHJ5KCkpOworICAgIGF1dG8gZGF0YUZvclVwbG9hZCA9
IHJlc29sdmVkRm9ybURhdGEtPnByZXBhcmVGb3JVcGxvYWQoKTsKIAogICAgIC8vIFByZWNvbXB1
dGUgdGhlIGNvbnRlbnQgbGVuZ3RoIHNvIENGTmV0d29yayBkb2Vzbid0IHVzZSBjaHVua2VkIG1v
ZGUuCiAgICAgdW5zaWduZWQgbG9uZyBsb25nIGxlbmd0aCA9IDA7Ci0gICAgZm9yIChhdXRvJiBl
bGVtZW50IDogcmVzb2x2ZWRGb3JtRGF0YS0+ZWxlbWVudHMoKSkKKyAgICBmb3IgKGF1dG8mIGVs
ZW1lbnQgOiBkYXRhRm9yVXBsb2FkLmRhdGEoKS5lbGVtZW50cygpKQogICAgICAgICBsZW5ndGgg
Kz0gZWxlbWVudC5sZW5ndGhJbkJ5dGVzKCk7CiAKLSAgICBGb3JtQ3JlYXRpb25Db250ZXh0KiBm
b3JtQ29udGV4dCA9IG5ldyBGb3JtQ3JlYXRpb25Db250ZXh0IHsgV1RGTW92ZShyZXNvbHZlZEZv
cm1EYXRhKSwgbGVuZ3RoIH07CisgICAgRm9ybUNyZWF0aW9uQ29udGV4dCogZm9ybUNvbnRleHQg
PSBuZXcgRm9ybUNyZWF0aW9uQ29udGV4dCB7IFdURk1vdmUoZGF0YUZvclVwbG9hZCksIGxlbmd0
aCB9OwogICAgIENGUmVhZFN0cmVhbUNhbGxCYWNrc1YxIGNhbGxCYWNrcyA9IHsgMSwgZm9ybUNy
ZWF0ZSwgZm9ybUZpbmFsaXplLCBudWxscHRyLCBmb3JtT3BlbiwgbnVsbHB0ciwgZm9ybVJlYWQs
IG51bGxwdHIsIGZvcm1DYW5SZWFkLCBmb3JtQ2xvc2UsIGZvcm1Db3B5UHJvcGVydHksIG51bGxw
dHIsIG51bGxwdHIsIGZvcm1TY2hlZHVsZSwgZm9ybVVuc2NoZWR1bGUgfTsKICAgICByZXR1cm4g
YWRvcHRDRihDRlJlYWRTdHJlYW1DcmVhdGUobnVsbHB0ciwgc3RhdGljX2Nhc3Q8Y29uc3Qgdm9p
ZCo+KCZjYWxsQmFja3MpLCBmb3JtQ29udGV4dCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQmxvYkRhdGFGaWxlUmVmZXJlbmNlTWFjLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQmxvYkRhdGFGaWxlUmVmZXJlbmNl
TWFjLm1tCmluZGV4IGI2OTI5MjBiMjFmYzY2MzlkNTc0NWQxYzA0NGU4Yjc4NzgyMzUwZDAuLjEx
NGJiZDA1YTE1ZTYzMWIwZjliYmQzZmQyZjBlMTQyOTc2NmNlZGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZU1hYy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9CbG9iRGF0YUZpbGVS
ZWZlcmVuY2VNYWMubW0KQEAgLTMwLDI1ICszMCw4IEBACiAKICNpbmNsdWRlIDx3dGYvRmlsZU1l
dGFkYXRhLmg+CiAjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KLSNpbmNsdWRlIDx3dGYvU29m
dExpbmtpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKLSNpZiBVU0UoQVBQ
TEVfSU5URVJOQUxfU0RLKQotI2luY2x1ZGUgPEJvbS9CT01Db3BpZXIuaD4KLSNlbmRpZgotCi10
eXBlZGVmIHN0cnVjdCBfQk9NQ29waWVyKiBCT01Db3BpZXI7Ci0KLVNPRlRfTElOS19QUklWQVRF
X0ZSQU1FV09SSyhCb20pCi1TT0ZUX0xJTksoQm9tLCBCT01Db3BpZXJOZXcsIEJPTUNvcGllciwg
KCksICgpKQotU09GVF9MSU5LKEJvbSwgQk9NQ29waWVyRnJlZSwgdm9pZCwgKEJPTUNvcGllciBj
b3BpZXIpLCAoY29waWVyKSkKLVNPRlRfTElOSyhCb20sIEJPTUNvcGllckNvcHlXaXRoT3B0aW9u
cywgaW50LCAoQk9NQ29waWVyIGNvcGllciwgY29uc3QgY2hhciogZnJvbU9iaiwgY29uc3QgY2hh
ciogdG9PYmosIENGRGljdGlvbmFyeVJlZiBvcHRpb25zKSwgKGNvcGllciwgZnJvbU9iaiwgdG9P
YmosIG9wdGlvbnMpKQotCi0jZGVmaW5lIGtCT01Db3BpZXJPcHRpb25DcmVhdGVQS1ppcEtleSBD
RlNUUigiY3JlYXRlUEtaaXAiKQotI2RlZmluZSBrQk9NQ29waWVyT3B0aW9uU2VxdWVzdGVyUmVz
b3VyY2VzS2V5IENGU1RSKCJzZXF1ZXN0ZXJSZXNvdXJjZXMiKQotI2RlZmluZSBrQk9NQ29waWVy
T3B0aW9uS2VlcFBhcmVudEtleSBDRlNUUigia2VlcFBhcmVudCIpCi0jZGVmaW5lIGtCT01Db3Bp
ZXJPcHRpb25Db3B5UmVzb3VyY2VzS2V5IENGU1RSKCJjb3B5UmVzb3VyY2VzIikKLQogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiB2b2lkIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6Z2VuZXJhdGVSZXBs
YWNlbWVudEZpbGUoKQpAQCAtNTgsMjUgKzQxLDkgQEAgdm9pZCBCbG9iRGF0YUZpbGVSZWZlcmVu
Y2U6OmdlbmVyYXRlUmVwbGFjZW1lbnRGaWxlKCkKIAogICAgIHByZXBhcmVGb3JGaWxlQWNjZXNz
KCk7CiAKLSAgICBSZXRhaW5QdHI8TlNGaWxlQ29vcmRpbmF0b3I+IGNvb3JkaW5hdG9yID0gYWRv
cHROUyhbW05TRmlsZUNvb3JkaW5hdG9yIGFsbG9jXSBpbml0V2l0aEZpbGVQcmVzZW50ZXI6bmls
XSk7Ci0gICAgW2Nvb3JkaW5hdG9yIGNvb3JkaW5hdGVSZWFkaW5nSXRlbUF0VVJMOltOU1VSTCBm
aWxlVVJMV2l0aFBhdGg6bV9wYXRoXSBvcHRpb25zOk5TRmlsZUNvb3JkaW5hdG9yUmVhZGluZ1dp
dGhvdXRDaGFuZ2VzIGVycm9yOm51bGxwdHIgYnlBY2Nlc3NvcjpeKE5TVVJMICpuZXdVUkwpIHsK
LSAgICAgICAgLy8gVGhlIGFyY2hpdmUgaXMgcHV0IGludG8gYSBzdWJkaXJlY3Rvcnkgb2YgdGVt
cG9yYXJ5IGRpcmVjdG9yeSBmb3IgaGlzdG9yaWMgcmVhc29ucy4gQ2hhbmdpbmcgdGhpcyB3aWxs
IHJlcXVpcmUgV2ViQ29yZSB0byBjaGFuZ2UgYXQgdGhlIHNhbWUgdGltZS4KLSAgICAgICAgQ1N0
cmluZyBhcmNoaXZlUGF0aChbTlNUZW1wb3JhcnlEaXJlY3RvcnkoKSBzdHJpbmdCeUFwcGVuZGlu
Z1BhdGhDb21wb25lbnQ6QCJXZWJLaXRHZW5lcmF0ZWRGaWxlWFhYWFhYIl0uZmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKTsKLSAgICAgICAgaWYgKG1rc3RlbXAoYXJjaGl2ZVBhdGgubXV0YWJsZURh
dGEoKSkgPT0gLTEpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgTlNEaWN0aW9uYXJ5
ICpvcHRpb25zID0gQHsKLSAgICAgICAgICAgIChfX2JyaWRnZSBpZClrQk9NQ29waWVyT3B0aW9u
Q3JlYXRlUEtaaXBLZXkgOiBAWUVTLAotICAgICAgICAgICAgKF9fYnJpZGdlIGlkKWtCT01Db3Bp
ZXJPcHRpb25TZXF1ZXN0ZXJSZXNvdXJjZXNLZXkgOiBAWUVTLAotICAgICAgICAgICAgKF9fYnJp
ZGdlIGlkKWtCT01Db3BpZXJPcHRpb25LZWVwUGFyZW50S2V5IDogQFlFUywKLSAgICAgICAgICAg
IChfX2JyaWRnZSBpZClrQk9NQ29waWVyT3B0aW9uQ29weVJlc291cmNlc0tleSA6IEBZRVMsCi0g
ICAgICAgIH07Ci0KLSAgICAgICAgQk9NQ29waWVyIGNvcGllciA9IEJPTUNvcGllck5ldygpOwot
ICAgICAgICBpZiAoIUJPTUNvcGllckNvcHlXaXRoT3B0aW9ucyhjb3BpZXIsIG5ld1VSTC5wYXRo
LmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbiwgYXJjaGl2ZVBhdGguZGF0YSgpLCAoX19icmlkZ2Ug
Q0ZEaWN0aW9uYXJ5UmVmKW9wdGlvbnMpKQotICAgICAgICAgICAgbV9yZXBsYWNlbWVudFBhdGgg
PSBTdHJpbmc6OmZyb21VVEY4KGFyY2hpdmVQYXRoKTsKLSAgICAgICAgQk9NQ29waWVyRnJlZShj
b3BpZXIpOwotICAgIH1dOworICAgIGF1dG8gZ2VuZXJhdGVkRmlsZSA9IEZpbGVTeXN0ZW06OmNy
ZWF0ZVRlbXBvcmFyeVppcEFyY2hpdmUobV9wYXRoKTsKKyAgICBpZiAoIWdlbmVyYXRlZEZpbGUu
aXNOdWxsKCkpCisgICAgICAgIG1fcmVwbGFjZW1lbnRQYXRoID0gV1RGTW92ZShnZW5lcmF0ZWRG
aWxlKTsKIAogICAgIG1fcmVwbGFjZW1lbnRTaG91bGRCZUdlbmVyYXRlZCA9IGZhbHNlOwogICAg
IGlmICghbV9yZXBsYWNlbWVudFBhdGguaXNOdWxsKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0
cFJlcXVlc3QuY3BwCmluZGV4IDVjNjQ3NGZmNDdmNmQwMmFkY2JkYTI5ZWNhZDU2NGY0YjQ2YjMw
MjguLjA0MjgwMzM3ZjE4MWM2MDQ0MGE5MDU5YmMwYTI1ZDg1Y2UzZjA2ZGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApAQCAtNTMzLDggKzUzMyw3IEBAIEV4Y2VwdGlvbk9y
PHZvaWQ+IFhNTEh0dHBSZXF1ZXN0OjpzZW5kKERPTUZvcm1EYXRhJiBib2R5KQogICAgICAgICBy
ZXR1cm4gV1RGTW92ZShyZXN1bHQudmFsdWUoKSk7CiAKICAgICBpZiAobV9tZXRob2QgIT0gIkdF
VCIgJiYgbV9tZXRob2QgIT0gIkhFQUQiKSB7Ci0gICAgICAgIG1fcmVxdWVzdEVudGl0eUJvZHkg
PSBGb3JtRGF0YTo6Y3JlYXRlTXVsdGlQYXJ0KGJvZHksIGRvY3VtZW50KCkpOwotICAgICAgICBt
X3JlcXVlc3RFbnRpdHlCb2R5LT5nZW5lcmF0ZUZpbGVzKGRvY3VtZW50KCkpOworICAgICAgICBt
X3JlcXVlc3RFbnRpdHlCb2R5ID0gRm9ybURhdGE6OmNyZWF0ZU11bHRpUGFydChib2R5KTsKICAg
ICAgICAgaWYgKCFtX3JlcXVlc3RIZWFkZXJzLmNvbnRhaW5zKEhUVFBIZWFkZXJOYW1lOjpDb250
ZW50VHlwZSkpCiAgICAgICAgICAgICBtX3JlcXVlc3RIZWFkZXJzLnNldChIVFRQSGVhZGVyTmFt
ZTo6Q29udGVudFR5cGUsIG1ha2VTdHJpbmcoIm11bHRpcGFydC9mb3JtLWRhdGE7IGJvdW5kYXJ5
PSIsIG1fcmVxdWVzdEVudGl0eUJvZHktPmJvdW5kYXJ5KCkuZGF0YSgpKSk7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
UGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRQYXJhbWV0ZXJzLmNwcAppbmRleCAwZTQ0NTk0Yjg5ZTY2NjQ4OWFmZjEyOGY4YzUx
YzBjNmMxYWNlMjQ5Li5iZjhhMGE2OGQ3M2JhMjRmZGYzYzE1MDhlYzdkYjBkMTVkZTQxN2JkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRQYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcApAQCAtNTcsNyArNTcsNyBAQCB2b2lkIE5ldHdv
cmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBj
b25zdAogICAgICAgICBmb3IgKHNpemVfdCBpID0gMCwgY291bnQgPSBlbGVtZW50cy5zaXplKCk7
IGkgPCBjb3VudDsgKytpKSB7CiAgICAgICAgICAgICBjb25zdCBGb3JtRGF0YUVsZW1lbnQmIGVs
ZW1lbnQgPSBlbGVtZW50c1tpXTsKICAgICAgICAgICAgIGlmIChhdXRvKiBmaWxlRGF0YSA9IFdU
Rjo6Z2V0X2lmPEZvcm1EYXRhRWxlbWVudDo6RW5jb2RlZEZpbGVEYXRhPihlbGVtZW50LmRhdGEp
KSB7Ci0gICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBwYXRoID0gZmlsZURhdGEtPnNob3Vs
ZEdlbmVyYXRlRmlsZSA/IGZpbGVEYXRhLT5nZW5lcmF0ZWRGaWxlbmFtZSA6IGZpbGVEYXRhLT5m
aWxlbmFtZTsKKyAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHBhdGggPSBmaWxlRGF0YS0+
ZmlsZW5hbWU7CiAgICAgICAgICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxl
KHBhdGgsIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRPbmx5LCByZXF1ZXN0Qm9keVNhbmRi
b3hFeHRlbnNpb25zW2V4dGVuc2lvbkluZGV4KytdKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRm9ybURhdGFSZWZlcmVu
Y2UuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Zvcm1EYXRhUmVmZXJlbmNlLmgKaW5k
ZXggOGEzOTVhNjU3MTNhMTlhMzJlMzNkZjhkNmM4OWM5M2E2ODRjMDYzNS4uYmM0OTdjNjIzNWZk
MWU1MjhiMjNhYjU0MDIzMGUwNDBhZDYxMmRiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvRm9ybURhdGFSZWZlcmVuY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9Gb3JtRGF0YVJlZmVyZW5jZS5oCkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAg
ICAgICAgc2l6ZV90IGV4dGVuc2lvbkluZGV4ID0gMDsKICAgICAgICAgZm9yIChhdXRvJiBlbGVt
ZW50IDogZWxlbWVudHMpIHsKICAgICAgICAgICAgIGlmIChhdXRvKiBmaWxlRGF0YSA9IFdURjo6
Z2V0X2lmPFdlYkNvcmU6OkZvcm1EYXRhRWxlbWVudDo6RW5jb2RlZEZpbGVEYXRhPihlbGVtZW50
LmRhdGEpKSB7Ci0gICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBwYXRoID0gZmlsZURhdGEt
PnNob3VsZEdlbmVyYXRlRmlsZSA/IGZpbGVEYXRhLT5nZW5lcmF0ZWRGaWxlbmFtZSA6IGZpbGVE
YXRhLT5maWxlbmFtZTsKKyAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHBhdGggPSBmaWxl
RGF0YS0+ZmlsZW5hbWU7CiAgICAgICAgICAgICAgICAgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9u
OjpjcmVhdGVIYW5kbGUocGF0aCwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFk
T25seSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZXNbZXh0ZW5zaW9uSW5kZXgrK10pOwogICAgICAg
ICAgICAgfQogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Jlc291cmNlcy9T
YW5kYm94UHJvZmlsZXMvaW9zL2NvbS5hcHBsZS5XZWJLaXQuTmV0d29ya2luZy5zYiBiL1NvdXJj
ZS9XZWJLaXQvUmVzb3VyY2VzL1NhbmRib3hQcm9maWxlcy9pb3MvY29tLmFwcGxlLldlYktpdC5O
ZXR3b3JraW5nLnNiCmluZGV4IDgwNzE2ZWM2NDM0OGJmYjQ0OGVkZTY3NjJkNGMwZGQ5YzE5Y2Rm
N2YuLmI2ZDFiMTg1YTRiMzljMjc0Y2M2MWI3NDg3ZjhiZmNkMjE4ZDQzYzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvUmVzb3VyY2VzL1NhbmRib3hQcm9maWxlcy9pb3MvY29tLmFwcGxlLldl
YktpdC5OZXR3b3JraW5nLnNiCisrKyBiL1NvdXJjZS9XZWJLaXQvUmVzb3VyY2VzL1NhbmRib3hQ
cm9maWxlcy9pb3MvY29tLmFwcGxlLldlYktpdC5OZXR3b3JraW5nLnNiCkBAIC04Myw2ICs4Myw3
IEBACiAgICAgKGdsb2JhbC1uYW1lICJjb20uYXBwbGUucGFzc2QubGlicmFyeSIpKQogCiAoYWxs
b3cgbWFjaC1sb29rdXAKKyAgICAoZ2xvYmFsLW5hbWUgImNvbS5hcHBsZS5GaWxlQ29vcmRpbmF0
aW9uIikKICAgICAoZ2xvYmFsLW5hbWUgImNvbS5hcHBsZS5kbWQucG9saWN5IikKICAgICAoZ2xv
YmFsLW5hbWUgImNvbS5hcHBsZS5zaXJpLmNvbnRleHQuc2VydmljZSIpCiAgICAgKGdsb2JhbC1u
YW1lICJjb20uYXBwbGUuY3RjYXRlZ29yaWVzLnNlcnZpY2UiKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVQ
YWdlVUlDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvQVBJSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQuaAppbmRleCBlYWNhM2U3MTYzZjJhOGM3
OTI1Zjc5M2M0OGUwZDNmOTc3YjdhOTc5Li45NWY0MzgyYjUyYzFhNWY3MDg0OGY5M2MzODk1YjY5
NDNlZGFlNzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZVBhZ2VV
SUNsaWVudC5oCkBAIC01OCw5ICs1OCw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgbW91
c2VEaWRNb3ZlT3ZlckVsZW1lbnQoV2ViS2l0OjpXZWJQYWdlKiwgY29uc3QgV2ViQ29yZTo6SGl0
VGVzdFJlc3VsdCYsIE9wdGlvblNldDxXZWJLaXQ6OldlYkV2ZW50OjpNb2RpZmllcj4sIFJlZlB0
cjxBUEk6Ok9iamVjdD4mIHVzZXJEYXRhKSB7IFVOVVNFRF9QQVJBTSh1c2VyRGF0YSk7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgcGFnZURpZFNjcm9sbChXZWJLaXQ6OldlYlBhZ2UqKSB7IH0KIAotICAg
IHZpcnR1YWwgV1RGOjpTdHJpbmcgc2hvdWxkR2VuZXJhdGVGaWxlRm9yVXBsb2FkKFdlYktpdDo6
V2ViUGFnZSosIGNvbnN0IFdURjo6U3RyaW5nJiBvcmlnaW5hbEZpbGVQYXRoKSB7IFVOVVNFRF9Q
QVJBTShvcmlnaW5hbEZpbGVQYXRoKTsgcmV0dXJuIFdURjo6U3RyaW5nKCk7IH0KLSAgICB2aXJ0
dWFsIFdURjo6U3RyaW5nIGdlbmVyYXRlRmlsZUZvclVwbG9hZChXZWJLaXQ6OldlYlBhZ2UqLCBj
b25zdCBXVEY6OlN0cmluZyYgb3JpZ2luYWxGaWxlUGF0aCkgeyBVTlVTRURfUEFSQU0ob3JpZ2lu
YWxGaWxlUGF0aCk7IHJldHVybiBlbXB0eVN0cmluZygpOyB9Ci0KICAgICBlbnVtIGNsYXNzIFVJ
RWxlbWVudFZpc2liaWxpdHkgewogICAgICAgICBVbmtub3duLAogICAgICAgICBWaXNpYmxlLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlUGFnZVVJQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5jcHAKaW5kZXggNTg2MzNkOTc2
MTgyZjc0NDYyN2FlMDU2N2VlY2ZhMjM0MTQzOWZiNi4uM2ZmYjgwMzc1ZjI0NzMwNzRmMjc3MzY5
NTBhMWUyOGU1ZWEzZDEwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGll
bnQuY3BwCkBAIC05MywyMiArOTMsNiBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50
OjpwYWdlRGlkU2Nyb2xsKFdlYlBhZ2UqIHBhZ2UpCiAgICAgbV9jbGllbnQucGFnZURpZFNjcm9s
bCh0b0FQSShwYWdlKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKIH0KIAotU3RyaW5nIElu
amVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50OjpzaG91bGRHZW5lcmF0ZUZpbGVGb3JVcGxvYWQoV2Vi
UGFnZSogcGFnZSwgY29uc3QgU3RyaW5nJiBvcmlnaW5hbEZpbGVQYXRoKQotewotICAgIGlmICgh
bV9jbGllbnQuc2hvdWxkR2VuZXJhdGVGaWxlRm9yVXBsb2FkKQotICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7Ci0gICAgUmVmUHRyPEFQSTo6U3RyaW5nPiBnZW5lcmF0ZWRGaWxlUGF0aCA9IGFkb3B0
UmVmKHRvSW1wbChtX2NsaWVudC5zaG91bGRHZW5lcmF0ZUZpbGVGb3JVcGxvYWQodG9BUEkocGFn
ZSksIHRvQVBJKG9yaWdpbmFsRmlsZVBhdGguaW1wbCgpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJ
bmZvKSkpOwotICAgIHJldHVybiBnZW5lcmF0ZWRGaWxlUGF0aCA/IGdlbmVyYXRlZEZpbGVQYXRo
LT5zdHJpbmcoKSA6IFN0cmluZygpOwotfQotCi1TdHJpbmcgSW5qZWN0ZWRCdW5kbGVQYWdlVUlD
bGllbnQ6OmdlbmVyYXRlRmlsZUZvclVwbG9hZChXZWJQYWdlKiBwYWdlLCBjb25zdCBTdHJpbmcm
IG9yaWdpbmFsRmlsZVBhdGgpCi17Ci0gICAgaWYgKCFtX2NsaWVudC5nZW5lcmF0ZUZpbGVGb3JV
cGxvYWQpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICBSZWZQdHI8QVBJOjpTdHJpbmc+
IGdlbmVyYXRlZEZpbGVQYXRoID0gYWRvcHRSZWYodG9JbXBsKG1fY2xpZW50LmdlbmVyYXRlRmls
ZUZvclVwbG9hZCh0b0FQSShwYWdlKSwgdG9BUEkob3JpZ2luYWxGaWxlUGF0aC5pbXBsKCkpLCBt
X2NsaWVudC5iYXNlLmNsaWVudEluZm8pKSk7Ci0gICAgcmV0dXJuIGdlbmVyYXRlZEZpbGVQYXRo
ID8gZ2VuZXJhdGVkRmlsZVBhdGgtPnN0cmluZygpIDogU3RyaW5nKCk7Ci19Ci0KIHN0YXRpYyBB
UEk6OkluamVjdGVkQnVuZGxlOjpQYWdlVUlDbGllbnQ6OlVJRWxlbWVudFZpc2liaWxpdHkgdG9V
SUVsZW1lbnRWaXNpYmlsaXR5KFdLQnVuZGxlUGFnZVVJRWxlbWVudFZpc2liaWxpdHkgdmlzaWJp
bGl0eSkKIHsKICAgICBzd2l0Y2ggKHZpc2liaWxpdHkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVu
dC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlUGFnZVVJQ2xpZW50LmgKaW5kZXggNTlmMWIxY2NhYzE2MGI3MTYyNTM4MmRjMmRmNWQyMmRk
MGQwNGQ2MS4uNjI3ODQ0YjlhNGE2YmQ1ODNjYjUzZmU3NDU2YTM3NGRkZDA2N2U4NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlUGFnZVVJQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50LmgKQEAgLTU0LDkgKzU0LDYgQEAgcHVi
bGljOgogICAgIHZvaWQgbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoV2ViUGFnZSosIGNvbnN0IFdl
YkNvcmU6OkhpdFRlc3RSZXN1bHQmLCBPcHRpb25TZXQ8V2ViRXZlbnQ6Ok1vZGlmaWVyPiwgUmVm
UHRyPEFQSTo6T2JqZWN0PiYgdXNlckRhdGEpIG92ZXJyaWRlOwogICAgIHZvaWQgcGFnZURpZFNj
cm9sbChXZWJQYWdlKikgb3ZlcnJpZGU7CiAKLSAgICBTdHJpbmcgc2hvdWxkR2VuZXJhdGVGaWxl
Rm9yVXBsb2FkKFdlYlBhZ2UqLCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsRmlsZVBhdGgpIG92ZXJy
aWRlOwotICAgIFN0cmluZyBnZW5lcmF0ZUZpbGVGb3JVcGxvYWQoV2ViUGFnZSosIGNvbnN0IFN0
cmluZyYgb3JpZ2luYWxGaWxlUGF0aCkgb3ZlcnJpZGU7Ci0gICAgCiAgICAgVUlFbGVtZW50Vmlz
aWJpbGl0eSBzdGF0dXNCYXJJc1Zpc2libGUoV2ViUGFnZSopIG92ZXJyaWRlOwogICAgIFVJRWxl
bWVudFZpc2liaWxpdHkgbWVudUJhcklzVmlzaWJsZShXZWJQYWdlKikgb3ZlcnJpZGU7CiAgICAg
VUlFbGVtZW50VmlzaWJpbGl0eSB0b29sYmFyc0FyZVZpc2libGUoV2ViUGFnZSopIG92ZXJyaWRl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmNwcAppbmRleCAxYTAyNGY3MTAxNTk2Nzc1ZWQ4NDE5YmE1NjEw
MjNmZDgwYjYwNDAzLi4zYzg3MmY1YWRmMzliZWFjZDNhNzA2NjdiMjY4OWQzOGM5YjExMTJlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmNwcApAQCAtNzg5LDE3ICs3ODksNiBAQCB2b2lkIFdlYkNocm9t
ZUNsaWVudDo6cmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShTZWN1cml0eU9yaWdp
biYgb3JpZ2luLAogICAgIGNhY2hlU3RvcmFnZS5zdG9yZVVwZGF0ZWRRdW90YUZvck9yaWdpbigm
b3JpZ2luLCBuZXdRdW90YSk7CiB9CiAKLWJvb2wgV2ViQ2hyb21lQ2xpZW50OjpzaG91bGRSZXBs
YWNlV2l0aEdlbmVyYXRlZEZpbGVGb3JVcGxvYWQoY29uc3QgU3RyaW5nJiBwYXRoLCBTdHJpbmcm
IGdlbmVyYXRlZEZpbGVuYW1lKQotewotICAgIGdlbmVyYXRlZEZpbGVuYW1lID0gbV9wYWdlLmlu
amVjdGVkQnVuZGxlVUlDbGllbnQoKS5zaG91bGRHZW5lcmF0ZUZpbGVGb3JVcGxvYWQoJm1fcGFn
ZSwgcGF0aCk7Ci0gICAgcmV0dXJuICFnZW5lcmF0ZWRGaWxlbmFtZS5pc051bGwoKTsKLX0KLQot
U3RyaW5nIFdlYkNocm9tZUNsaWVudDo6Z2VuZXJhdGVSZXBsYWNlbWVudEZpbGUoY29uc3QgU3Ry
aW5nJiBwYXRoKQotewotICAgIHJldHVybiBtX3BhZ2UuaW5qZWN0ZWRCdW5kbGVVSUNsaWVudCgp
LmdlbmVyYXRlRmlsZUZvclVwbG9hZCgmbV9wYWdlLCBwYXRoKTsKLX0KLQogI2lmIEVOQUJMRShJ
TlBVVF9UWVBFX0NPTE9SKQogCiBzdGQ6OnVuaXF1ZV9wdHI8Q29sb3JDaG9vc2VyPiBXZWJDaHJv
bWVDbGllbnQ6OmNyZWF0ZUNvbG9yQ2hvb3NlcihDb2xvckNob29zZXJDbGllbnQmIGNsaWVudCwg
Y29uc3QgQ29sb3ImIGluaXRpYWxDb2xvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCBhZmI1Zjdl
NGIzYzUzZGFiNDU1NzM4ZDFjNmZjMTU1ODQzNjIzMjk5Li5jZWQzNmE2YzI1YjdlNGY4MzQ0YTU4
OTk0MDA2NzkxZjdjYzkyNzZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC0xNDIsOSArMTQyLDYg
QEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcmVhY2hlZE1heEFwcENhY2hlU2l6ZShpbnQ2NF90IHNw
YWNlTmVlZGVkKSBmaW5hbDsKICAgICB2b2lkIHJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2lu
UXVvdGEoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mLCBpbnQ2NF90IHNwYWNlTmVlZGVkKSBmaW5h
bDsKLQotICAgIGJvb2wgc2hvdWxkUmVwbGFjZVdpdGhHZW5lcmF0ZWRGaWxlRm9yVXBsb2FkKGNv
bnN0IFN0cmluZyYgcGF0aCwgU3RyaW5nJiBnZW5lcmF0ZWRGaWxlbmFtZSkgZmluYWw7Ci0gICAg
U3RyaW5nIGdlbmVyYXRlUmVwbGFjZW1lbnRGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCkgZmluYWw7
CiAgICAgCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCiAgICAgc3RkOjp1bmlxdWVfcHRy
PFdlYkNvcmU6OkNvbG9yQ2hvb3Nlcj4gY3JlYXRlQ29sb3JDaG9vc2VyKFdlYkNvcmU6OkNvbG9y
Q2hvb3NlckNsaWVudCYsIGNvbnN0IFdlYkNvcmU6OkNvbG9yJikgZmluYWw7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29tLmFwcGxlLldlYlByb2Nlc3Muc2IuaW4gYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29tLmFwcGxlLldlYlByb2Nlc3Muc2IuaW4KaW5kZXgg
ZGZkNGJkOTNkMGMzODk1YjIxMjNlN2Q0Y2JmMzFiYWYyNzE1NTYzOC4uMzk0ZDVhMjQxMTJhZmQ2
MzU2MGZmZWU3Y2UwY2QzYTJmNzNhNGVmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL2NvbS5hcHBsZS5XZWJQcm9jZXNzLnNiLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9jb20uYXBwbGUuV2ViUHJvY2Vzcy5zYi5pbgpAQCAtNTg3LDkgKzU4Nyw2IEBACiAo
YWxsb3cgbWFjaC1sb29rdXAKICAgICAgICAoZ2xvYmFsLW5hbWUgImNvbS5hcHBsZS53ZWJpbnNw
ZWN0b3IiKSkKIAotKGFsbG93IG1hY2gtbG9va3VwCi0gICAgKGdsb2JhbC1uYW1lICJjb20uYXBw
bGUuRmlsZUNvb3JkaW5hdGlvbiIpKQotCiA7OyBWYXJpb3VzIHNlcnZpY2VzIHJlcXVpcmVkIGJ5
IEFwcEtpdCBhbmQgb3RoZXIgZnJhbWV3b3JrcwogKGFsbG93IG1hY2gtbG9va3VwCiAjaWYgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEwMTQwMApAQCAtOTc4LDE4ICs5NzUsOSBA
QAogICAgICAgICAoc3lzY2FsbC1udW1iZXIgU1lTX3N0YXQ2NF9leHRlbmRlZCkgOzsgPHJkYXI6
Ly9wcm9ibGVtLzUwNDczMzMwPgogICAgICAgICAoc3lzY2FsbC1udW1iZXIgU1lTX2xzdGF0X2V4
dGVuZGVkKQogICAgICAgICAoc3lzY2FsbC1udW1iZXIgU1lTX2xzdGF0NjRfZXh0ZW5kZWQpCi0g
ICAgICAgIChzeXNjYWxsLW51bWJlciBTWVNfaW9wb2xpY3lzeXMpCi0gICAgICAgIChzeXNjYWxs
LW51bWJlciBTWVNfd29ya3Ffb3BlbikKLSAgICAgICAgKHN5c2NhbGwtbnVtYmVyIFNZU19nZXRn
cm91cHMpCiAgICAgICAgIChzeXNjYWxsLW51bWJlciBTWVNfZmdldGF0dHJsaXN0KSA7OyA8cmRh
cjovL3Byb2JsZW0vNTA5MzExMTA+CiAgICAgICAgIChzeXNjYWxsLW51bWJlciBTWVNfa3F1ZXVl
KSA7OyA8cmRhcjovL3Byb2JsZW0vNDk2MDkyMDE+CiAgICAgICAgIChzeXNjYWxsLW51bWJlciBT
WVNfa3F1ZXVlX3dvcmtsb29wX2N0bCkgOzsgPHJkYXI6Ly9wcm9ibGVtLzUwOTk5NDk5PgotICAg
ICAgICAoc3lzY2FsbC1udW1iZXIgU1lTX29wZW5fZHByb3RlY3RlZF9ucCkKLSAgICAgICAgKHN5
c2NhbGwtbnVtYmVyIFNZU19mbGlzdHhhdHRyKQotICAgICAgICAoc3lzY2FsbC1udW1iZXIgU1lT
X2ZzZXRhdHRybGlzdCkKLSAgICAgICAgKHN5c2NhbGwtbnVtYmVyIFNZU19mY2hvd24pCi0gICAg
ICAgIChzeXNjYWxsLW51bWJlciBTWVNfZmNoZmxhZ3MpCi0gICAgICAgIChzeXNjYWxsLW51bWJl
ciBTWVNfZnN0YXQ2NF9leHRlbmRlZCkKICAgICApCiApCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RlZmF1bHREZWxlZ2F0ZXMvV2ViRGVmYXVsdFVJRGVsZWdhdGUubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9EZWZhdWx0RGVsZWdhdGVzL1dlYkRlZmF1bHRVSURl
bGVnYXRlLm1tCmluZGV4IDM1OGFhNjlmYTRjMGQ1OTY2ODljODYxMWE0MWMyZTc5YzlhZDVmM2Qu
LjU1MjAxYTY1ZDcxNGU3ZGEwMWRiOTI2NzM3MTAyNzFkYjljNWY3NWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RlZmF1bHREZWxlZ2F0ZXMvV2ViRGVmYXVsdFVJRGVsZWdh
dGUubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRGVmYXVsdERlbGVnYXRlcy9XZWJE
ZWZhdWx0VUlEZWxlZ2F0ZS5tbQpAQCAtMjU2LDE2ICsyNTYsNiBAQCBzdGF0aWMgV2ViRGVmYXVs
dFVJRGVsZWdhdGUgKnNoYXJlZERlbGVnYXRlID0gbmlsOwogewogfQogCi0tIChCT09MKXdlYlZp
ZXc6KFdlYlZpZXcgKilzZW5kZXIgc2hvdWxkUmVwbGFjZVVwbG9hZEZpbGU6KE5TU3RyaW5nICop
cGF0aCB1c2luZ0dlbmVyYXRlZEZpbGVuYW1lOihOU1N0cmluZyAqKilmaWxlbmFtZQotewotICAg
IHJldHVybiBOTzsKLX0KLQotLSAoTlNTdHJpbmcgKil3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVy
IGdlbmVyYXRlUmVwbGFjZW1lbnRGaWxlOihOU1N0cmluZyAqKXBhdGgKLXsKLSAgICByZXR1cm4g
bmlsOwotfQotCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIC0gKHZvaWQpd2ViVmlld1N1cHBv
cnRlZE9yaWVudGF0aW9uc1VwZGF0ZWQ6KFdlYlZpZXcgKilzZW5kZXIKIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5o
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmgKaW5kZXggYjM0MTI0OTI0MDEyZmZiYTllMDY4NWMwYmU5N2IxMjU1NzY0NDM2Yi4uZmRjNGNj
NzgxOTZmY2JjZjMyNjAyZDE4ZTI4OWYwN2ExMTU0Y2M5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAg
LTE1OCw5ICsxNTgsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgZW5hYmxlU3VkZGVuVGVybWluYXRp
b24oKSBmaW5hbDsKICAgICB2b2lkIGRpc2FibGVTdWRkZW5UZXJtaW5hdGlvbigpIGZpbmFsOwog
Ci0gICAgYm9vbCBzaG91bGRSZXBsYWNlV2l0aEdlbmVyYXRlZEZpbGVGb3JVcGxvYWQoY29uc3Qg
U3RyaW5nJiBwYXRoLCBTdHJpbmcgJmdlbmVyYXRlZEZpbGVuYW1lKSBmaW5hbDsKLSAgICBTdHJp
bmcgZ2VuZXJhdGVSZXBsYWNlbWVudEZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKSBmaW5hbDsKLQog
I2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHZvaWQgZWxlbWVudERpZEZvY3VzKFdlYkNv
cmU6OkVsZW1lbnQmKSBvdmVycmlkZTsKICAgICB2b2lkIGVsZW1lbnREaWRCbHVyKFdlYkNvcmU6
OkVsZW1lbnQmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbQppbmRleCAzZjk2YjRhYjdiMzhl
M2E3NjIwYzJhMDAzOWI4OTRhZTkwN2NlNzU5Li5lMWE4OTg5YzQ4YmUyNWQ1NTI0YmEzNWVjY2Rh
YzlhZGE0NGI1ZjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCkBAIC04NTUsMjAgKzg1NSw2IEBAIHZv
aWQgV2ViQ2hyb21lQ2xpZW50OjpkaXNhYmxlU3VkZGVuVGVybWluYXRpb24oKQogI2VuZGlmCiB9
CiAKLWJvb2wgV2ViQ2hyb21lQ2xpZW50OjpzaG91bGRSZXBsYWNlV2l0aEdlbmVyYXRlZEZpbGVG
b3JVcGxvYWQoY29uc3QgU3RyaW5nJiBwYXRoLCBTdHJpbmcmIGdlbmVyYXRlZEZpbGVuYW1lKQot
ewotICAgIE5TU3RyaW5nKiBmaWxlbmFtZTsKLSAgICBpZiAoIVtbbV93ZWJWaWV3IF9VSURlbGVn
YXRlRm9yd2FyZGVyXSB3ZWJWaWV3Om1fd2ViVmlldyBzaG91bGRSZXBsYWNlVXBsb2FkRmlsZTpw
YXRoIHVzaW5nR2VuZXJhdGVkRmlsZW5hbWU6JmZpbGVuYW1lXSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIGdlbmVyYXRlZEZpbGVuYW1lID0gZmlsZW5hbWU7Ci0gICAgcmV0dXJuIHRydWU7
Ci19Ci0KLVN0cmluZyBXZWJDaHJvbWVDbGllbnQ6OmdlbmVyYXRlUmVwbGFjZW1lbnRGaWxlKGNv
bnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICByZXR1cm4gW1ttX3dlYlZpZXcgX1VJRGVsZWdhdGVG
b3J3YXJkZXJdIHdlYlZpZXc6bV93ZWJWaWV3IGdlbmVyYXRlUmVwbGFjZW1lbnRGaWxlOnBhdGhd
OwotfQotCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiB2b2lkIFdlYkNocm9tZUNsaWVudDo6
ZWxlbWVudERpZEZvY3VzKFdlYkNvcmU6OkVsZW1lbnQmIGVsZW1lbnQpCiB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlVJRGVsZWdhdGVQcml2YXRlLmgg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlVJRGVsZWdhdGVQcml2YXRlLmgK
aW5kZXggMWFlMmJjMjQxZjBmZjJhZTMyN2I1ZmQ5MmM5Y2FmMjAwNTIzZDlhZi4uYTBlNzE2MWIy
ZTY2MTQ2OWIzMWZkNzBhNzkxMWQ0Yzg2OTI1NWRhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJVSURlbGVnYXRlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVUlEZWxlZ2F0ZVByaXZhdGUuaApAQCAtMjQ4LDkg
KzI0OCw2IEBAIGV4dGVybiBOU1N0cmluZyAqV2ViQ29uc29sZU1lc3NhZ2VFcnJvck1lc3NhZ2VM
ZXZlbDsKIAogLSAoV2ViVmlldyAqKXdlYlZpZXc6KFdlYlZpZXcgKilzZW5kZXIgY3JlYXRlV2Vi
Vmlld1dpdGhSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IHdpbmRvd0ZlYXR1cmVzOihO
U0RpY3Rpb25hcnkgKilmZWF0dXJlczsKIAotLSAoQk9PTCl3ZWJWaWV3OihXZWJWaWV3ICopc2Vu
ZGVyIHNob3VsZFJlcGxhY2VVcGxvYWRGaWxlOihOU1N0cmluZyAqKXBhdGggdXNpbmdHZW5lcmF0
ZWRGaWxlbmFtZTooTlNTdHJpbmcgKiopZmlsZW5hbWU7Ci0tIChOU1N0cmluZyAqKXdlYlZpZXc6
KFdlYlZpZXcgKilzZW5kZXIgZ2VuZXJhdGVSZXBsYWNlbWVudEZpbGU6KE5TU3RyaW5nICopcGF0
aDsKLQogLyohCiAgICAgQG1ldGhvZCB3ZWJWaWV3OmRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9u
UmVxdWVzdEZyb21PcmlnaW46ZnJhbWU6bGlzdGVuZXI6CiAgICAgQHBhcmFtIHdlYlZpZXcgVGhl
IFdlYlZpZXcgc2VuZGluZyB0aGUgZGVsZWdhdGUgbWV0aG9kLgpkaWZmIC0tZ2l0IGEvVG9vbHMv
Q2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDU5ZmU4ODJlY2VhYTNjYTljNGZkMjM0
M2Q0ZWM4OGI0ZjA5NmM4ZDMuLjEzMmU1M2NmNTNiZDIxNTlhOTk2NTVhMGUxMDg4YTZkOTJhZmMx
YTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyNCBAQAorMjAxOS0wNy0zMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNl
bkB3ZWJraXQub3JnPgorCisgICAgICAgIE1vdmUgRm9ybURhdGEgemlwIGZpbGUgZ2VuZXJhdGlv
biB0byBOZXR3b3JrUHJvY2VzcyBhbmQgZW5hYmxlIGl0IGZvciBhbGwgV2ViS2l0IGNsaWVudHMg
Zm9yIHVwbG9hZGluZyBkaXJlY3RvcmllcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjAwMTAyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81MzI3NTEx
ND4KKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBBZGQgYW4g
QVBJIHRlc3QgdGhhdCBpcyBNYWMtb25seSByaWdodCBub3cgYmVjYXVzZSBydW5PcGVuUGFuZWxX
aXRoUGFyYW1ldGVycyBpcyBvbmx5IHN1cHBvcnRlZCBvbiBNYWMgZm9yIHNvbWUgcmVhc29uCisg
ICAgICAgIGFuZCBiZWNhdXNlIGNsaWNraW5nIG9uIGEgVGVzdFdLV2ViVmlldyBvbmx5IHdvcmtz
IG9uIE1hYy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvVXBsb2FkRGlyZWN0b3J5Lm1tOiBBZGRlZC4KKyAgICAgICAgKC1bVXBsb2FkRGVsZWdh
dGUgaW5pdFdpdGhEaXJlY3Rvcnk6XSk6CisgICAgICAgICgtW1VwbG9hZERlbGVnYXRlIHdlYlZp
ZXc6cnVuT3BlblBhbmVsV2l0aFBhcmFtZXRlcnM6aW5pdGlhdGVkQnlGcmFtZTpjb21wbGV0aW9u
SGFuZGxlcjpdKToKKyAgICAgICAgKC1bVXBsb2FkRGVsZWdhdGUgc2VudERpcmVjdG9yeV0pOgor
ICAgICAgICAoVEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJW
aWV3Lmg6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tOgor
ICAgICAgICAoLVtUZXN0V0tXZWJWaWV3IHNlbmRDbGlja0F0UG9pbnQ6XSk6CisKIDIwMTktMDct
MzEgIEFha2FzaCBKYWluICA8YWFrYXNoX2phaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtld3Mt
YnVpbGRdIEVuYWJsZSBhbGwgbWFjT1MgcXVldWVzIG9uIG5ldyBFV1MKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggNWQ2MTdmZDRjNmJmMWZiNmY3ZmQ4ODcyZDFhZmYyMDQ5NjVkNWVkMi4uMjk4
NTViODQwNGNjZThjYWEyOGIxOTgwYjNkZjc2N2VkMzg1MjYwYiAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTMyOSw2ICszMjksNyBAQAogCQk1QzIzREYwQjIyNDYwMTU4MDBGNDU0QjYgLyog
Q2hhbGxlbmdlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNUMyM0RGMEEyMjQ1QzlENzAwRjQ1NEI2IC8qIENoYWxsZW5nZS5tbSAqLzsgfTsKIAkJNUMy
OTM2OTMxRDVCRjcwRDAwREVBQjFFIC8qIENvb2tpZUFjY2VwdFBvbGljeS5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMjkzNjkxMUQ1QkY2M0UwMERF
QUIxRSAvKiBDb29raWVBY2NlcHRQb2xpY3kubW0gKi87IH07CiAJCTVDMjkzNjk2MUQ1QzAwRUQw
MERFQUIxRSAvKiBDb29raWVNZXNzYWdlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMyOTM2OTQxRDVCRkQxOTAwREVBQjFFIC8qIENv
b2tpZU1lc3NhZ2UuaHRtbCAqLzsgfTsKKwkJNUMzQTc3QUEyMkYyMEJFQTAwMzgyN0ZGIC8qIFVw
bG9hZERpcmVjdG9yeS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDVDM0E3N0E5MjJGMjBCOEEwMDM4MjdGRiAvKiBVcGxvYWREaXJlY3RvcnkubW0gKi87
IH07CiAJCTVDM0IxRDI2MjJBNzRGNjcwMEJDRjREMCAvKiBDb250ZXh0TWVudXMubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzNCMUQyNTIyQTc0RUE0
MDBCQ0Y0RDAgLyogQ29udGV4dE1lbnVzLm1tICovOyB9OwogCQk1QzQyNTk0NjIyNjZBNjhBMDAz
OUFBN0EgLyogQmFzaWNQcm9wb3NlZENyZWRlbnRpYWxQbHVnSW4ubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzQyNTk0NDIyNjY5RTlCMDAzOUFBN0Eg
LyogQmFzaWNQcm9wb3NlZENyZWRlbnRpYWxQbHVnSW4ubW0gKi87IH07CiAJCTVDNEE4NDk1MUY3
RUVGRkMwMEFDRkM1NCAvKiBDb25maWd1cmF0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM0QTg0OTQxRjdFRUZENDAwQUNGQzU0IC8qIENvbmZp
Z3VyYXRpb24ubW0gKi87IH07CkBAIC0xODA0LDYgKzE4MDUsNyBAQAogCQk1QzIzREYwQTIyNDVD
OUQ3MDBGNDU0QjYgLyogQ2hhbGxlbmdlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gQ2hhbGxlbmdlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
QzI5MzY5MTFENUJGNjNFMDBERUFCMUUgLyogQ29va2llQWNjZXB0UG9saWN5Lm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQ29va2llQWNjZXB0UG9saWN5Lm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzI5MzY5NDFENUJGRDE5MDBERUFCMUUgLyog
Q29va2llTWVzc2FnZS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gQ29va2llTWVz
c2FnZS5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzNBNzdBOTIyRjIwQjhB
MDAzODI3RkYgLyogVXBsb2FkRGlyZWN0b3J5Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gVXBsb2FkRGlyZWN0b3J5Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1QzNCMUQyNTIyQTc0RUE0MDBCQ0Y0RDAgLyogQ29udGV4dE1lbnVzLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQ29udGV4dE1lbnVzLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzQyNTk0NDIyNjY5RTlCMDAzOUFBN0EgLyogQmFz
aWNQcm9wb3NlZENyZWRlbnRpYWxQbHVnSW4ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBCYXNpY1Byb3Bvc2VkQ3JlZGVudGlhbFBsdWdJbi5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM0QTg0OTQxRjdFRUZENDAwQUNGQzU0IC8qIENvbmZpZ3Vy
YXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDb25maWd1
cmF0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjgxMiw2ICsyODE0LDcg
QEAKIAkJCQlGNENENzRDODIwRkRCNDk2MDBERTM3OTQgLyogVGVzdFVSTFNjaGVtZUhhbmRsZXIu
bW0gKi8sCiAJCQkJQzIyRkEzMkEyMjhGODcwODAwOUQ3OTg4IC8qIFRleHRXaWR0aC5tbSAqLywK
IAkJCQk1Q0I0MEI0RDFGNEI5OEJFMDA3REM3QjkgLyogVUlEZWxlZ2F0ZS5tbSAqLywKKwkJCQk1
QzNBNzdBOTIyRjIwQjhBMDAzODI3RkYgLyogVXBsb2FkRGlyZWN0b3J5Lm1tICovLAogCQkJCTdD
QzNFMUZBMTk3RTIzNDEwMEJFNjI1MiAvKiBVc2VyQ29udGVudENvbnRyb2xsZXIubW0gKi8sCiAJ
CQkJN0M4ODJFMDMxQzgwQzYyNDAwNkJGNzMxIC8qIFVzZXJDb250ZW50V29ybGQubW0gKi8sCiAJ
CQkJN0M4ODJFMDQxQzgwQzYyNDAwNkJGNzMxIC8qIFVzZXJDb250ZW50V29ybGRQbHVnSW4ubW0g
Ki8sCkBAIC00NjMxLDYgKzQ2MzQsNyBAQAogCQkJCTVDOUQ5MjNBMjJEN0UyQjAwMDhFOTI2NiAv
KiBVbmlmaWVkU291cmNlNC1tbS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTVDOUQ5MjNDMjJEN0Uy
QjAwMDhFOTI2NiAvKiBVbmlmaWVkU291cmNlNS1tbS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTVD
OUQ5MjNEMjJEN0UyQjAwMDhFOTI2NiAvKiBVbmlmaWVkU291cmNlNS5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQk1QzNBNzdBQTIyRjIwQkVBMDAzODI3RkYgLyogVXBsb2FkRGlyZWN0b3J5Lm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNUM2RTI3QTcyMjRFRUJFQTAwMTI4NzM2IC8qIFVSTENhbm9uaWNh
bGl6YXRpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQlFM0ExRTc3RjIxQjI1QjM5MDA4QzYwMDcg
LyogVVJMUGFyc2VyVGV4dEVuY29kaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RjI3
MUE0MTFBRjYwMDQ0N0M0QyAvKiBVc2VyQ29udGVudENvbnRyb2xsZXIubW0gaW4gU291cmNlcyAq
LywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVXBs
b2FkRGlyZWN0b3J5Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9V
cGxvYWREaXJlY3RvcnkubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODQ5Mjc4YjRmMzhmNjBkNzc5NDRhZjYxMDc0
NGU1YzUwZTk0NTMxZgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvVXBsb2FkRGlyZWN0b3J5Lm1tCkBAIC0wLDAgKzEsMTIyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisKKyNpZiBQTEFURk9STShNQUMpCisKKyNpbXBv
cnQgIkRyYWdBbmREcm9wU2ltdWxhdG9yLmgiCisjaW1wb3J0ICJUQ1BTZXJ2ZXIuaCIKKyNpbXBv
cnQgIlRlc3ROYXZpZ2F0aW9uRGVsZWdhdGUuaCIKKyNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIK
KyNpbXBvcnQgIlV0aWxpdGllcy5oIgorI2ltcG9ydCA8V2ViS2l0L1dlYktpdC5oPgorI2ltcG9y
dCA8d3RmL1JldGFpblB0ci5oPgorI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK0Bp
bnRlcmZhY2UgVXBsb2FkRGVsZWdhdGUgOiBOU09iamVjdCA8V0tVSURlbGVnYXRlPgorLSAoaW5z
dGFuY2V0eXBlKWluaXRXaXRoRGlyZWN0b3J5OihOU1VSTCAqKWRpcmVjdG9yeTsKKy0gKEJPT0wp
c2VudERpcmVjdG9yeTsKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFVwbG9hZERlbGVnYXRlIHsK
KyAgICBSZXRhaW5QdHI8TlNVUkw+IF9kaXJlY3Rvcnk7CisgICAgQk9PTCBfc2VudERpcmVjdG9y
eTsKK30KKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRGlyZWN0b3J5OihOU1VSTCAqKWRpcmVj
dG9yeQoreworICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4g
bmlsOworICAgIF9kaXJlY3RvcnkgPSBkaXJlY3Rvcnk7CisgICAgcmV0dXJuIHNlbGY7Cit9CisK
Ky0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBydW5PcGVuUGFuZWxXaXRoUGFy
YW1ldGVyczooV0tPcGVuUGFuZWxQYXJhbWV0ZXJzICopcGFyYW1ldGVycyBpbml0aWF0ZWRCeUZy
YW1lOihXS0ZyYW1lSW5mbyAqKWZyYW1lIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU0Fy
cmF5PE5TVVJMICo+ICogX051bGxhYmxlIFVSTHMpKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAg
Y29tcGxldGlvbkhhbmRsZXIoQFtfZGlyZWN0b3J5LmdldCgpXSk7CisgICAgX3NlbnREaXJlY3Rv
cnkgPSBZRVM7Cit9CisKKy0gKEJPT0wpc2VudERpcmVjdG9yeQoreworICAgIHJldHVybiBfc2Vu
dERpcmVjdG9yeTsKK30KKworQGVuZAorCitURVNUKFdlYktpdCwgVXBsb2FkRGlyZWN0b3J5KQor
eworICAgIE5TRmlsZU1hbmFnZXIgKmZpbGVNYW5hZ2VyID0gW05TRmlsZU1hbmFnZXIgZGVmYXVs
dE1hbmFnZXJdOworICAgIE5TRXJyb3IgKmVycm9yID0gbmlsOworICAgIE5TVVJMICpkaXJlY3Rv
cnkgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOltOU1RlbXBvcmFyeURpcmVjdG9yeSgpIHN0cmlu
Z0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIlVwbG9hZERpcmVjdG9yeSJdIGlzRGlyZWN0b3J5
OllFU107CisgICAgRVhQRUNUX0ZBTFNFKFtmaWxlTWFuYWdlciBmaWxlRXhpc3RzQXRQYXRoOmRp
cmVjdG9yeS5wYXRoXSk7CisgICAgRVhQRUNUX1RSVUUoW2ZpbGVNYW5hZ2VyIGNyZWF0ZURpcmVj
dG9yeUF0VVJMOmRpcmVjdG9yeSB3aXRoSW50ZXJtZWRpYXRlRGlyZWN0b3JpZXM6WUVTIGF0dHJp
YnV0ZXM6bmlsIGVycm9yOiZlcnJvcl0pOworICAgIEVYUEVDVF9GQUxTRShlcnJvcik7CisgICAg
TlNEYXRhICp0ZXN0RGF0YSA9IFtAInRlc3RkYXRhIiBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhT
dHJpbmdFbmNvZGluZ107CisgICAgRVhQRUNUX1RSVUUoW2ZpbGVNYW5hZ2VyIGNyZWF0ZUZpbGVB
dFBhdGg6W2RpcmVjdG9yeS5wYXRoIHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAInRl
c3RmaWxlIl0gY29udGVudHM6dGVzdERhdGEgYXR0cmlidXRlczpuaWxdKTsKKworICAgIHsKKyAg
ICAgICAgdXNpbmcgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEk7CisgICAgICAgIFRDUFNlcnZlciBz
ZXJ2ZXIoW10gKGludCBzb2NrZXQpIHsKKyAgICAgICAgICAgIFRDUFNlcnZlcjo6cmVhZChzb2Nr
ZXQpOworICAgICAgICAgICAgY29uc3QgY2hhciogcmVzcG9uc2UgPQorICAgICAgICAgICAgIkhU
VFAvMS4xIDIwMCBPS1xyXG4iCisgICAgICAgICAgICAiQ29udGVudC1UeXBlOiB0ZXh0L2h0bWxc
clxuIgorICAgICAgICAgICAgIkNvbnRlbnQtTGVuZ3RoOiAxMjNcclxuXHJcbiIKKyAgICAgICAg
ICAgICI8Zm9ybSBpZD0nZm9ybScgYWN0aW9uPScvdXBsb2FkLnBocCcgbWV0aG9kPSdwb3N0JyBl
bmN0eXBlPSdtdWx0aXBhcnQvZm9ybS1kYXRhJz48aW5wdXQgdHlwZT0nZmlsZScgbmFtZT0ndGVz
dG5hbWUnPjwvZm9ybT4iOworICAgICAgICAgICAgVENQU2VydmVyOjp3cml0ZShzb2NrZXQsIHJl
c3BvbnNlLCBzdHJsZW4ocmVzcG9uc2UpKTsKKworICAgICAgICAgICAgYXV0byBoZWFkZXIgPSBU
Q1BTZXJ2ZXI6OnJlYWQoc29ja2V0KTsKKyAgICAgICAgICAgIEVYUEVDVF9UUlVFKFN0cmluZyho
ZWFkZXIuZGF0YSgpLCBoZWFkZXIuc2l6ZSgpKS5jb250YWlucygiQ29udGVudC1MZW5ndGg6IDU0
MyIpKTsKKyAgICAgICAgICAgIHNpemVfdCBib2R5Qnl0ZXNSZWFkID0gMDsKKyAgICAgICAgICAg
IHdoaWxlIChib2R5Qnl0ZXNSZWFkIDwgNTQzKQorICAgICAgICAgICAgICAgIGJvZHlCeXRlc1Jl
YWQgKz0gVENQU2VydmVyOjpyZWFkKHNvY2tldCkuc2l6ZSgpOworICAgICAgICAgICAgRVhQRUNU
X0VRKGJvZHlCeXRlc1JlYWQsIDU0M3VsbCk7CisgICAgICAgICAgICBjb25zdCBjaGFyKiBzZWNv
bmRSZXNwb25zZSA9CisgICAgICAgICAgICAiSFRUUC8xLjEgMjAwIE9LXHJcbiIKKyAgICAgICAg
ICAgICJDb250ZW50LUxlbmd0aDogMFxyXG5cclxuIjsKKyAgICAgICAgICAgIFRDUFNlcnZlcjo6
d3JpdGUoc29ja2V0LCBzZWNvbmRSZXNwb25zZSwgc3RybGVuKHNlY29uZFJlc3BvbnNlKSk7Cisg
ICAgICAgIH0pOworCisgICAgICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgODAwLCA2MDApXSk7Cisg
ICAgICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbVXBsb2FkRGVsZWdhdGUgYWxsb2NdIGlu
aXRXaXRoRGlyZWN0b3J5OmRpcmVjdG9yeV0pOworICAgICAgICBbd2ViVmlldyBzZXRVSURlbGVn
YXRlOmRlbGVnYXRlLmdldCgpXTsKKworICAgICAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9h
ZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmlu
ZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAImh0dHA6Ly8xMjcuMC4wLjE6JWQvIiwgc2Vy
dmVyLnBvcnQoKV1dXV07CisKKyAgICAgICAgYXV0byBjaG9vc2VGaWxlQnV0dG9uTG9jYXRpb24g
PSBOU01ha2VQb2ludCgxMCwgNTkwKTsKKyAgICAgICAgW3dlYlZpZXcgc2VuZENsaWNrQXRQb2lu
dDpjaG9vc2VGaWxlQnV0dG9uTG9jYXRpb25dOworICAgICAgICB3aGlsZSAoIVtkZWxlZ2F0ZSBz
ZW50RGlyZWN0b3J5XSkKKyAgICAgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnNwaW5SdW5M
b29wKCk7CisgICAgICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdDpAImRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdmb3JtJykuc3VibWl0KCkiIGNvbXBsZXRpb25IYW5kbGVyOm5pbF07Cisg
ICAgICAgIFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKKyAgICB9
CisKKyAgICBFWFBFQ1RfVFJVRShbZmlsZU1hbmFnZXIgcmVtb3ZlSXRlbUF0UGF0aDpkaXJlY3Rv
cnkucGF0aCBlcnJvcjomZXJyb3JdKTsKKyAgICBFWFBFQ1RfRkFMU0UoZXJyb3IpOworfQorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmll
dy5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3LmgKaW5kZXggZWRl
MDY4MDMyMTVhM2Q1ZjgzZDQ0YmY4OWY2MGMxZTNiNzFmNTUxOC4uZjBmZWQ1ZDhmOGI0NDBmYjk0
Y2UyM2YxNGVlZDczZWM3NjZjZmUwNCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9j
b2NvYS9UZXN0V0tXZWJWaWV3LmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0
V0tXZWJWaWV3LmgKQEAgLTEwNiw2ICsxMDYsNyBAQAogLSAodm9pZCltb3VzZVVwQXRQb2ludDoo
TlNQb2ludClwb2ludEluV2luZG93OwogLSAodm9pZCltb3VzZU1vdmVUb1BvaW50OihOU1BvaW50
KXBvaW50SW5XaW5kb3cgd2l0aEZsYWdzOihOU0V2ZW50TW9kaWZpZXJGbGFncylmbGFnczsKIC0g
KHZvaWQpc2VuZENsaWNrc0F0UG9pbnQ6KE5TUG9pbnQpcG9pbnRJbldpbmRvdyBudW1iZXJPZkNs
aWNrczooTlNVSW50ZWdlciludW1iZXJPZkNsaWNrczsKKy0gKHZvaWQpc2VuZENsaWNrQXRQb2lu
dDooTlNQb2ludClwb2ludEluV2luZG93OwogLSAoTlNXaW5kb3cgKilob3N0V2luZG93OwogLSAo
dm9pZCl0eXBlQ2hhcmFjdGVyOihjaGFyKWNoYXJhY3RlcjsKIEBlbmQKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbSBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbQppbmRleCAzZGE4MTcyNjFlMTdjMzkyNDM0OWQx
NzE3YTY2ZmNkYzc5MDZmOTVmLi41NDZjYTZlMjIyZDlmZWE4MWNlN2JlNGUyYzJkMzk4NWM1YjQ0
ZjBmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcu
bW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCkBAIC01
OTMsNiArNTkzLDExIEBAIHN0YXRpYyBXS0NvbnRlbnRWaWV3ICpyZWN1cnNpdmVGaW5kV0tDb250
ZW50VmlldyhVSVZpZXcgKnZpZXcpCiAgICAgfQogfQogCistICh2b2lkKXNlbmRDbGlja0F0UG9p
bnQ6KE5TUG9pbnQpcG9pbnRJbldpbmRvdworeworICAgIFtzZWxmIHNlbmRDbGlja3NBdFBvaW50
OnBvaW50SW5XaW5kb3cgbnVtYmVyT2ZDbGlja3M6MV07Cit9CisKIC0gKHZvaWQpbW91c2VFbnRl
ckF0UG9pbnQ6KE5TUG9pbnQpcG9pbnRJbldpbmRvdwogewogICAgIFtzZWxmIG1vdXNlRW50ZXJl
ZDpbc2VsZiBfbW91c2VFdmVudFdpdGhUeXBlOk5TRXZlbnRUeXBlTW91c2VFbnRlcmVkIGF0TG9j
YXRpb246cG9pbnRJbldpbmRvd11dOwo=
</data>
<flag name="commit-queue"
          id="391090"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>375308</attachid>
            <date>2019-08-01 07:15:30 -0700</date>
            <delta_ts>2019-08-01 15:29:59 -0700</delta_ts>
            <desc>patch without oops</desc>
            <filename>attachment.cgi.patch</filename>
            <type>text/plain</type>
            <size>71156</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4MDg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGM3ODYwNTg0OTcyNTE5NTJhZjY5ZDZi
MWU3OTg4NzZhNGEzNTVjNTYuLmMyMzZmYjJiYWE5NzMyMzZlMDVjOGVjZDFlNzg1NDZjOGI4MTA5
MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTktMDctMzEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBNb3ZlIEZvcm1EYXRhIHppcCBmaWxl
IGdlbmVyYXRpb24gdG8gTmV0d29ya1Byb2Nlc3MgYW5kIGVuYWJsZSBpdCBmb3IgYWxsIFdlYktp
dCBjbGllbnRzIGZvciB1cGxvYWRpbmcgZGlyZWN0b3JpZXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDEwMgorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vNTMyNzUxMTQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAg
ICAgTW92ZSBjb2RlIGZyb20gQmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpnZW5lcmF0ZVJlcGxhY2Vt
ZW50RmlsZSB0byBGaWxlU3lzdGVtOjpjcmVhdGVaaXBBcmNoaXZlLgorCisgICAgICAgICogd3Rm
L0ZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6Y3JlYXRlWmlw
QXJjaGl2ZSk6CisgICAgICAgICogd3RmL0ZpbGVTeXN0ZW0uaDoKKyAgICAgICAgKiB3dGYvY29j
b2EvRmlsZVN5c3RlbUNvY29hLm1tOgorICAgICAgICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6Y3Jl
YXRlWmlwQXJjaGl2ZSk6CisKIDIwMTktMDctMzEgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBw
bGUuY29tPgogCiAgICAgICAgIFVzZSBDVEZvbnRDcmVhdGVGb3JDaGFyYWN0ZXJzV2l0aExhbmd1
YWdlQW5kT3B0aW9uIGlmIGF2YWlsYWJsZSBpbnN0ZWFkIG9mIENURm9udENyZWF0ZUZvckNoYXJh
Y3RlcnNXaXRoTGFuZ3VhZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiYTk1ZjJjMzNjODVhM2Y2ZGU2MmU2NDI2
MDQ5NmUyNTBkOTA3YTU3Li4yNzczMGFhNTJiN2M3OTk1MjFhY2EzOGQ1OWE1NTA4YzBhYTZhNjIy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzEgQEAKKzIwMTktMDctMzEgIEFsZXggQ2hyaXN0ZW5z
ZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBNb3ZlIEZvcm1EYXRhIHpp
cCBmaWxlIGdlbmVyYXRpb24gdG8gTmV0d29ya1Byb2Nlc3MgYW5kIGVuYWJsZSBpdCBmb3IgYWxs
IFdlYktpdCBjbGllbnRzIGZvciB1cGxvYWRpbmcgZGlyZWN0b3JpZXMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDEwMgorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNTMyNzUxMTQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisK
KyAgICAgICAgVG8gZW5hYmxlIGRpcmVjdG9yeSB1cGxvYWRpbmcgaW4gV2ViS2l0Miwgd2UgZXh0
ZW5kZWQgV2ViS2l0MSdzIG1vZGVsIG9mIGFza2luZyB0aGUgYXBwbGljYXRpb24gdG8gZ2VuZXJh
dGUgYSBmaWxlIGZvciB1cGxvYWRpbmcuCisgICAgICAgIFRoaXMgbWVhbnMgdGhlIFdlYlByb2Nl
c3MgbmVlZGVkIGFjY2VzcyB0byBldmVyeXRoaW5nIG5lY2Vzc2FyeSB0byB6aXAgYSB3aG9sZSBk
aXJlY3RvcnksIGFuZCBjbGllbnRzIHRoYXQgaGF2ZSBub3QgaW1wbGVtZW50ZWQKKyAgICAgICAg
dGhlIHN0cmFuZ2UgV0tCdW5kbGVQYWdlVUlDbGllbnQgY2FsbGJhY2tzIHdvbid0IGJlIGFibGUg
dG8gdXBsb2FkIGRpcmVjdG9yaWVzLiAgU2FmYXJpJ3MgaW1wbGVtZW50YXRpb24gaGFkIGFscmVh
ZHkgYmVlbiBjb3BpZWQKKyAgICAgICAgdG8gQmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpnZW5lcmF0
ZVJlcGxhY2VtZW50RmlsZSwgc28gSSByZXVzZWQgdGhhdCBjb2RlIHRvIGRvIHRoZSB6aXBwaW5n
LiAgSW5zdGVhZCBvZiBhIGNvbXBsaWNhdGVkIG1vZGVsIG9mCisgICAgICAgIGtlZXBpbmcgdHJh
Y2sgb2YgYSBmaWxlbmFtZSwgcG9zc2libHkgYSBnZW5lcmF0ZWQgZmlsZW5hbWUsIGFuZCB3aGV0
aGVyIHdlIHRoaW5rIHdlIG93biB0aGUgZmlsZSBvciBub3QgYW5kIGhhdmluZyBub2JvZHkgY2xl
YW4gdXAsCisgICAgICAgIHdlIG5vdyBkbyB0aGUgZ2VuZXJhdGlvbiwgdXNlLCBhbmQgY2xlYW5p
bmcgdXAgaW4gdGhlIG5ldHdvcmsgcHJvY2VzcyBzdGFydGluZyB3aXRoIGEgbmV3IGZ1bmN0aW9u
IGdlbmVyYXRlRmlsZXNGb3JVcGxvYWQuCisgICAgICAgIFRoaXMgcmVtb3ZlcyB1bmltcGxlbWVu
dGVkIFNQSSBpbiBXZWJVSURlbGVnYXRlUHJpdmF0ZSBpbiBXZWJLaXRMZWdhY3kgYW5kIHN0b3Bz
IGNhbGxpbmcgdGhlIFdLQnVuZGxlUGFnZVVJQ2xpZW50IHJlbGF0ZWQgdG8gdXBsb2FkCisgICAg
ICAgIGZpbGUgZ2VuZXJhdGlvbiBhbmQgcmVwbGFjZXMgdGhlbSB3aXRoIGF1dG9tYXRpYyBiZWhh
dmlvciBlcXVpdmFsZW50IHRvIFNhZmFyaSdzIGltcGxlbWVudGF0aW9uIG9mIHRoZSBXS0J1bmRs
ZVBhZ2VVSUNsaWVudCBjYWxscy4KKyAgICAgICAgU2luY2Ugd2Ugbm8gbG9uZ2VyIG5lZWQgdG8g
ZG8gdGhlc2UgZmlsZSBvcGVyYXRpb25zIGluIHRoZSBXZWJQcm9jZXNzLCBJIGFtIGFsc28gcmV2
ZXJ0aW5nIHIyNDUzMjIgYW5kIHIyNDYwNzcgd2hpY2ggdGlnaHRlbnMgdGhlIHNhbmRib3guCisK
KyAgICAgICAgQ292ZXJlZCBieSBhbiBBUEkgdGVzdC4KKworICAgICAgICAqIE1vZHVsZXMvZmV0
Y2gvRmV0Y2hCb2R5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6ZXh0cmFjdCk6
CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmJvZHlBc0Zvcm1EYXRhIGNvbnN0KToKKyAg
ICAgICAgKiBsb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9y
bVN1Ym1pc3Npb246OmNyZWF0ZSk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpzdWJtaXRGb3JtKToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkRGlmZmVyZW50RG9jdW1lbnRJdGVtKToKKyAgICAgICAg
KiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VM
b2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxv
YWRlcjo6Y2xlYW51cEZvckVycm9yKToKKyAgICAgICAgKiBwYWdlL0Nocm9tZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnQ6OnNob3VsZFJlcGxhY2VXaXRoR2VuZXJhdGVkRmls
ZUZvclVwbG9hZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnQ6Omdl
bmVyYXRlUmVwbGFjZW1lbnRGaWxlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL0Nocm9tZUNs
aWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Rm9ybURhdGE6OkZvcm1EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1E
YXRhOjp+Rm9ybURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURhdGE6OmNyZWF0ZU11bHRp
UGFydCk6CisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YUVsZW1lbnQ6Omxlbmd0aEluQnl0ZXMg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURhdGE6OmFwcGVuZEZpbGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Rm9ybURhdGE6OmFwcGVuZEZpbGVSYW5nZSk6CisgICAgICAgIChXZWJDb3Jl
OjpGb3JtRGF0YTo6YXBwZW5kTXVsdGlQYXJ0RmlsZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6
OkZvcm1EYXRhOjphcHBlbmRNdWx0aVBhcnRLZXlWYWx1ZVBhaXJJdGVtcyk6CisgICAgICAgIChX
ZWJDb3JlOjpGb3JtRGF0YTo6cmVzb2x2ZUJsb2JSZWZlcmVuY2VzKToKKyAgICAgICAgKFdlYkNv
cmU6OmdlbmVyYXRlRmlsZUZvclVwbG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YTo6
Z2VuZXJhdGVGaWxlc0ZvclVwbG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YTo6Z2Vu
ZXJhdGVGaWxlcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YTo6aGFzR2Vu
ZXJhdGVkRmlsZXMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURhdGE6
Omhhc093bmVkR2VuZXJhdGVkRmlsZXMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6Rm9ybURhdGE6OnJlbW92ZUdlbmVyYXRlZEZpbGVzSWZOZWVkZWQpOiBEZWxldGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZv
cm1EYXRhRWxlbWVudDo6Rm9ybURhdGFFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1E
YXRhRWxlbWVudDo6RW5jb2RlZEZpbGVEYXRhOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Rm9ybURhdGFFbGVtZW50OjpFbmNvZGVkRmlsZURhdGE6Om9wZXJhdG9yPT0g
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURhdGFFbGVtZW50OjpFbmNvZGVkRmlsZURh
dGE6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YUVsZW1lbnQ6OkVu
Y29kZWRGaWxlRGF0YTo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL0Zv
cm1EYXRhU3RyZWFtQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YWR2YW5jZUN1cnJlbnRT
dHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6Zm9ybUNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
Ojpmb3JtRmluYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSFRUUEJvZHlDRlJlYWRT
dHJlYW0pOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL0Jsb2JEYXRhRmlsZVJlZmVy
ZW5jZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmdlbmVyYXRlRmlsZUZvclVwbG9hZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OmdlbmVyYXRlUmVwbGFjZW1l
bnRGaWxlKToKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6WE1MSHR0cFJlcXVlc3Q6OnNlbmQpOgorCiAyMDE5LTA3LTMxICBTYWFtIEJhcmF0aSAg
PHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIFtXSExTTF0gUmVtb3ZlIFVubmFtZWRUeXBl
IGNvcHkvbW92ZSBjb25zdHJ1Y3RvcnMgYW5kIG1hcmsgY2xhc3NlcyBhcyBmaW5hbApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpp
bmRleCA1NDk4NzdmN2Q1MDZmZmFhNjliNDk1NzIyMDIwZmJlM2RhYTNmMjk3Li5jODNiNjlkMWJk
NWZlNmE5OGJiMGVlMTNlNGU0NTgxMDEyNTIwNDg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBA
CisyMDE5LTA3LTMxICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgTW92ZSBGb3JtRGF0YSB6aXAgZmlsZSBnZW5lcmF0aW9uIHRvIE5ldHdvcmtQ
cm9jZXNzIGFuZCBlbmFibGUgaXQgZm9yIGFsbCBXZWJLaXQgY2xpZW50cyBmb3IgdXBsb2FkaW5n
IGRpcmVjdG9yaWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDAxMDIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzUzMjc1MTE0PgorCisgICAgICAg
IFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKiBQbGF0Zm9y
bS9JUEMvRm9ybURhdGFSZWZlcmVuY2UuaDoKKyAgICAgICAgKElQQzo6Rm9ybURhdGFSZWZlcmVu
Y2U6OmVuY29kZSBjb25zdCk6CisgICAgICAgICogUmVzb3VyY2VzL1NhbmRib3hQcm9maWxlcy9p
b3MvY29tLmFwcGxlLldlYktpdC5OZXR3b3JraW5nLnNiOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50Lmg6CisgICAg
ICAgIChBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlVUlDbGllbnQ6OnNob3VsZEdlbmVyYXRlRmls
ZUZvclVwbG9hZCk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdl
VUlDbGllbnQ6OmdlbmVyYXRlRmlsZUZvclVwbG9hZCk6IERlbGV0ZWQuCisgICAgICAgICogV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50OjpzaG91bGRHZW5lcmF0
ZUZpbGVGb3JVcGxvYWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRs
ZVBhZ2VVSUNsaWVudDo6Z2VuZXJhdGVGaWxlRm9yVXBsb2FkKTogRGVsZXRlZC4KKyAgICAgICAg
KiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50Lmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OnNob3VsZFJlcGxhY2VXaXRoR2Vu
ZXJhdGVkRmlsZUZvclVwbG9hZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkNocm9t
ZUNsaWVudDo6Z2VuZXJhdGVSZXBsYWNlbWVudEZpbGUpOiBEZWxldGVkLgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9jb20uYXBwbGUuV2ViUHJvY2Vzcy5zYi5pbjoKKwogMjAxOS0wNy0zMSAgRGVhbiBK
YWNrc29uICA8ZGlub0BhcHBsZS5jb20+CiAKICAgICAgICAgV0tJbWFnZVByZXZpZXdWaWV3Q29u
dHJvbGxlciBub3QgYmVpbmcgYXV0b3JlbGVhc2VkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cK
aW5kZXggMGI4OTJjZmQ2NWI2YWM3NmFhMGE4MTI0MjJiYjY0MWM4NjIxOTZlZC4uZTk4MWZlOTMy
YjdjNGY4ODI5ODE0MWRkZDA2M2IzOGZjZGFmMDIzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE5LTA3LTMxICBBbGV4IENocmlzdGVuc2VuICA8YWNo
cmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW92ZSBGb3JtRGF0YSB6aXAgZmlsZSBn
ZW5lcmF0aW9uIHRvIE5ldHdvcmtQcm9jZXNzIGFuZCBlbmFibGUgaXQgZm9yIGFsbCBXZWJLaXQg
Y2xpZW50cyBmb3IgdXBsb2FkaW5nIGRpcmVjdG9yaWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDAxMDIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzUzMjc1MTE0PgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAg
ICogRGVmYXVsdERlbGVnYXRlcy9XZWJEZWZhdWx0VUlEZWxlZ2F0ZS5tbToKKyAgICAgICAgKC1b
V2ViRGVmYXVsdFVJRGVsZWdhdGUgd2ViVmlldzpzaG91bGRSZXBsYWNlVXBsb2FkRmlsZTp1c2lu
Z0dlbmVyYXRlZEZpbGVuYW1lOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJEZWZhdWx0VUlE
ZWxlZ2F0ZSB3ZWJWaWV3OmdlbmVyYXRlUmVwbGFjZW1lbnRGaWxlOl0pOiBEZWxldGVkLgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbToKKyAgICAgICAgKFdlYkNocm9tZUNsaWVudDo6
c2hvdWxkUmVwbGFjZVdpdGhHZW5lcmF0ZWRGaWxlRm9yVXBsb2FkKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNocm9tZUNsaWVudDo6Z2VuZXJhdGVSZXBsYWNlbWVudEZpbGUpOiBEZWxldGVkLgor
ICAgICAgICAqIFdlYlZpZXcvV2ViVUlEZWxlZ2F0ZVByaXZhdGUuaDoKKwogMjAxOS0wNy0yNSAg
RGVhbiBKYWNrc29uICA8ZGlub0BhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGhlbHBlciBmb3Ig
aWdub3JpbmcgZGVwcmVjYXRlZCBpbXBsZW1lbnRhdGlvbiB3YXJuaW5ncwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVt
LmNwcAppbmRleCA0MzMxMjQ1NDM2ZTQzNDNlZDgwNzZkOTM3YTRjMTk1YjUwMDk3NmUxLi5mYTg1
NGUwMzEzYmUwNTc5MGE2MTAxMjZjM2ZlMTMwNjRhNDI5NzhjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNw
cApAQCAtMzg1LDUgKzM4NSwxMiBAQCB2b2lkIG1ha2VTYWZlVG9Vc2VNZW1vcnlNYXBGb3JQYXRo
KGNvbnN0IFN0cmluZyYpCiB9CiAjZW5kaWYKIAorI2lmICFQTEFURk9STShDT0NPQSkKK1N0cmlu
ZyBjcmVhdGVUZW1wb3JhcnlaaXBBcmNoaXZlKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KQorewor
ICAgIHJldHVybiB7IH07Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgRmlsZVN5c3RlbUlt
cGwKIH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmlsZVN5
c3RlbS5oIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oCmluZGV4IDZhZTM4NjJlYTMzZDIw
ZThmZTczNWM3NjJmMTY1ZmZjM2U1M2JmNmYuLjVmYzBiZmVjMjMzZThkYjg2NjUwNzlmOTA4OWQw
YzY3OWQ1NGUwNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKQEAgLTEyNCw2ICsxMjQsNyBAQCBXVEZfRVhQ
T1JUX1BSSVZBVEUgU3RyaW5nIGRpcmVjdG9yeU5hbWUoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQ
T1JUX1BSSVZBVEUgYm9vbCBnZXRWb2x1bWVGcmVlU3BhY2UoY29uc3QgU3RyaW5nJiwgdWludDY0
X3QmKTsKIFdURl9FWFBPUlRfUFJJVkFURSBPcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2aWNl
SWQoY29uc3QgQ1N0cmluZyYpOwogV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgY3JlYXRlU3ltYm9s
aWNMaW5rKGNvbnN0IFN0cmluZyYgdGFyZ2V0UGF0aCwgY29uc3QgU3RyaW5nJiBzeW1ib2xpY0xp
bmtQYXRoKTsKK1dURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgY3JlYXRlVGVtcG9yYXJ5WmlwQXJj
aGl2ZShjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSk7CiAKIFdURl9FWFBPUlRfUFJJVkFURSB2b2lk
IHNldE1ldGFkYXRhVVJMKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiB1cmxTdHJp
bmcsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIgPSB7IH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9jb2NvYS9GaWxlU3lzdGVtQ29jb2EubW0gYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9G
aWxlU3lzdGVtQ29jb2EubW0KaW5kZXggMjU3YmNhNTg3ZTU1YmRlZjRhODAyMGY4ZjU3NjY2NDJh
MjE2MWJhMi4uMTYzYmY3MWQ5ZGYyZGZlNzRjMDM2NWM0YTU2NWI3ZGY5ODIxMWZiOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL2NvY29hL0ZpbGVTeXN0ZW1Db2NvYS5tbQpAQCAtMjksNiArMjksMjQgQEAKICNp
bXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4KIAorI2luY2x1ZGUg
PHd0Zi9Tb2Z0TGlua2luZy5oPgorCisjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKKyNpbmNs
dWRlIDxCb20vQk9NQ29waWVyLmg+CisjZW5kaWYKKwordHlwZWRlZiBzdHJ1Y3QgX0JPTUNvcGll
ciogQk9NQ29waWVyOworCitTT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdPUksoQm9tKQorU09GVF9M
SU5LKEJvbSwgQk9NQ29waWVyTmV3LCBCT01Db3BpZXIsICgpLCAoKSkKK1NPRlRfTElOSyhCb20s
IEJPTUNvcGllckZyZWUsIHZvaWQsIChCT01Db3BpZXIgY29waWVyKSwgKGNvcGllcikpCitTT0ZU
X0xJTksoQm9tLCBCT01Db3BpZXJDb3B5V2l0aE9wdGlvbnMsIGludCwgKEJPTUNvcGllciBjb3Bp
ZXIsIGNvbnN0IGNoYXIqIGZyb21PYmosIGNvbnN0IGNoYXIqIHRvT2JqLCBDRkRpY3Rpb25hcnlS
ZWYgb3B0aW9ucyksIChjb3BpZXIsIGZyb21PYmosIHRvT2JqLCBvcHRpb25zKSkKKworI2RlZmlu
ZSBrQk9NQ29waWVyT3B0aW9uQ3JlYXRlUEtaaXBLZXkgQ0ZTVFIoImNyZWF0ZVBLWmlwIikKKyNk
ZWZpbmUga0JPTUNvcGllck9wdGlvblNlcXVlc3RlclJlc291cmNlc0tleSBDRlNUUigic2VxdWVz
dGVyUmVzb3VyY2VzIikKKyNkZWZpbmUga0JPTUNvcGllck9wdGlvbktlZXBQYXJlbnRLZXkgQ0ZT
VFIoImtlZXBQYXJlbnQiKQorI2RlZmluZSBrQk9NQ29waWVyT3B0aW9uQ29weVJlc291cmNlc0tl
eSBDRlNUUigiY29weVJlc291cmNlcyIpCisKIEBpbnRlcmZhY2UgV1RGV2ViRmlsZU1hbmFnZXJE
ZWxlZ2F0ZSA6IE5TT2JqZWN0IDxOU0ZpbGVNYW5hZ2VyRGVsZWdhdGU+CiBAZW5kCiAKQEAgLTQ4
LDYgKzY2LDMyIEBAIG5hbWVzcGFjZSBXVEYgewogCiBuYW1lc3BhY2UgRmlsZVN5c3RlbUltcGwg
ewogCitTdHJpbmcgY3JlYXRlVGVtcG9yYXJ5WmlwQXJjaGl2ZShjb25zdCBTdHJpbmcmIHBhdGgp
Cit7CisgICAgU3RyaW5nIHRlbXBvcmFyeUZpbGU7CisgICAgCisgICAgUmV0YWluUHRyPE5TRmls
ZUNvb3JkaW5hdG9yPiBjb29yZGluYXRvciA9IGFkb3B0TlMoW1tOU0ZpbGVDb29yZGluYXRvciBh
bGxvY10gaW5pdFdpdGhGaWxlUHJlc2VudGVyOm5pbF0pOworICAgIFtjb29yZGluYXRvciBjb29y
ZGluYXRlUmVhZGluZ0l0ZW1BdFVSTDpbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOnBhdGhdIG9wdGlv
bnM6TlNGaWxlQ29vcmRpbmF0b3JSZWFkaW5nV2l0aG91dENoYW5nZXMgZXJyb3I6bnVsbHB0ciBi
eUFjY2Vzc29yOlsmXShOU1VSTCAqbmV3VVJMKSBtdXRhYmxlIHsKKyAgICAgICAgQ1N0cmluZyBh
cmNoaXZlUGF0aChbTlNUZW1wb3JhcnlEaXJlY3RvcnkoKSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhD
b21wb25lbnQ6QCJXZWJLaXRHZW5lcmF0ZWRGaWxlWFhYWFhYIl0uZmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKTsKKyAgICAgICAgaWYgKG1rc3RlbXAoYXJjaGl2ZVBhdGgubXV0YWJsZURhdGEoKSkg
PT0gLTEpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIAorICAgICAgICBOU0RpY3Rpb25h
cnkgKm9wdGlvbnMgPSBAeworICAgICAgICAgICAgKF9fYnJpZGdlIGlkKWtCT01Db3BpZXJPcHRp
b25DcmVhdGVQS1ppcEtleSA6IEBZRVMsCisgICAgICAgICAgICAoX19icmlkZ2UgaWQpa0JPTUNv
cGllck9wdGlvblNlcXVlc3RlclJlc291cmNlc0tleSA6IEBZRVMsCisgICAgICAgICAgICAoX19i
cmlkZ2UgaWQpa0JPTUNvcGllck9wdGlvbktlZXBQYXJlbnRLZXkgOiBAWUVTLAorICAgICAgICAg
ICAgKF9fYnJpZGdlIGlkKWtCT01Db3BpZXJPcHRpb25Db3B5UmVzb3VyY2VzS2V5IDogQFlFUywK
KyAgICAgICAgfTsKKyAgICAgICAgCisgICAgICAgIEJPTUNvcGllciBjb3BpZXIgPSBCT01Db3Bp
ZXJOZXcoKTsKKyAgICAgICAgaWYgKCFCT01Db3BpZXJDb3B5V2l0aE9wdGlvbnMoY29waWVyLCBu
ZXdVUkwucGF0aC5maWxlU3lzdGVtUmVwcmVzZW50YXRpb24sIGFyY2hpdmVQYXRoLmRhdGEoKSwg
KF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilvcHRpb25zKSkKKyAgICAgICAgICAgIHRlbXBvcmFy
eUZpbGUgPSBTdHJpbmc6OmZyb21VVEY4KGFyY2hpdmVQYXRoKTsKKyAgICAgICAgQk9NQ29waWVy
RnJlZShjb3BpZXIpOworICAgIH1dOworICAgIAorICAgIHJldHVybiB0ZW1wb3JhcnlGaWxlOwor
fQorCiBTdHJpbmcgaG9tZURpcmVjdG9yeVBhdGgoKQogewogICAgIHJldHVybiBOU0hvbWVEaXJl
Y3RvcnkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hC
b2R5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcAppbmRl
eCA5ODdlNDU1NmY5ZjVmYzRlMWM3MWZmM2IwODQ3Y2I3ZjJiMjVjZGQ4Li4zM2RlNGYzNzhkMmFh
ZWFkNDM5MjZmYjBkYjdiNmJkNzdlMjFiZGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaEJvZHkuY3BwCkBAIC00MCw3ICs0MCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotRmV0Y2hCb2R5IEZldGNoQm9keTo6ZXh0cmFjdChTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0LCBJbml0JiYgdmFsdWUsIFN0cmluZyYgY29udGVudFR5cGUpCitGZXRjaEJvZHkg
RmV0Y2hCb2R5OjpleHRyYWN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBJbml0JiYgdmFsdWUs
IFN0cmluZyYgY29udGVudFR5cGUpCiB7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24odmFsdWUs
IFsmXShSZWZQdHI8QmxvYj4mIHZhbHVlKSBtdXRhYmxlIHsKICAgICAgICAgUmVmPGNvbnN0IEJs
b2I+IGJsb2IgPSB2YWx1ZS5yZWxlYXNlTm9uTnVsbCgpOwpAQCAtNDksNyArNDksNyBAQCBGZXRj
aEJvZHkgRmV0Y2hCb2R5OjpleHRyYWN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQs
IEluaXQmJiB2YWx1ZSwgU3RyaQogICAgICAgICByZXR1cm4gRmV0Y2hCb2R5KFdURk1vdmUoYmxv
YikpOwogICAgIH0sIFsmXShSZWZQdHI8RE9NRm9ybURhdGE+JiB2YWx1ZSkgbXV0YWJsZSB7CiAg
ICAgICAgIFJlZjxET01Gb3JtRGF0YT4gZG9tRm9ybURhdGEgPSB2YWx1ZS5yZWxlYXNlTm9uTnVs
bCgpOwotICAgICAgICBhdXRvIGZvcm1EYXRhID0gRm9ybURhdGE6OmNyZWF0ZU11bHRpUGFydChk
b21Gb3JtRGF0YS5nZXQoKSwgJmRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0KSk7CisgICAgICAg
IGF1dG8gZm9ybURhdGEgPSBGb3JtRGF0YTo6Y3JlYXRlTXVsdGlQYXJ0KGRvbUZvcm1EYXRhLmdl
dCgpKTsKICAgICAgICAgY29udGVudFR5cGUgPSBtYWtlU3RyaW5nKCJtdWx0aXBhcnQvZm9ybS1k
YXRhOyBib3VuZGFyeT0iLCBmb3JtRGF0YS0+Ym91bmRhcnkoKS5kYXRhKCkpOwogICAgICAgICBy
ZXR1cm4gRmV0Y2hCb2R5KFdURk1vdmUoZm9ybURhdGEpKTsKICAgICB9LCBbJl0oUmVmUHRyPFVS
TFNlYXJjaFBhcmFtcz4mIHZhbHVlKSBtdXRhYmxlIHsKQEAgLTI1MCw5ICsyNTAsOCBAQCBSZWZQ
dHI8Rm9ybURhdGE+IEZldGNoQm9keTo6Ym9keUFzRm9ybURhdGEoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCkgY29ucwogICAgIGlmIChpc0FycmF5QnVmZmVyVmlldygpKQogICAgICAg
ICByZXR1cm4gRm9ybURhdGE6OmNyZWF0ZShhcnJheUJ1ZmZlclZpZXdCb2R5KCkuYmFzZUFkZHJl
c3MoKSwgYXJyYXlCdWZmZXJWaWV3Qm9keSgpLmJ5dGVMZW5ndGgoKSk7CiAgICAgaWYgKGlzRm9y
bURhdGEoKSkgewotICAgICAgICBBU1NFUlQoIWNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgp
KTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCAhY29udGV4dC5pc1dvcmtlckdsb2Jh
bFNjb3BlKCkpOwogICAgICAgICBhdXRvIGJvZHkgPSBtYWtlUmVmKGNvbnN0X2Nhc3Q8Rm9ybURh
dGEmPihmb3JtRGF0YUJvZHkoKSkpOwotICAgICAgICBib2R5LT5nZW5lcmF0ZUZpbGVzKCZkb3du
Y2FzdDxEb2N1bWVudD4oY29udGV4dCkpOwogICAgICAgICByZXR1cm4gYm9keTsKICAgICB9CiAg
ICAgaWYgKGF1dG8qIGRhdGEgPSBtX2NvbnN1bWVyLmRhdGEoKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRm9ybVN1Ym1pc3Npb24uY3BwCmluZGV4IGJlMDNlNGExOWUxMTcyMjVmY2U4MTI3YWYxNzRj
MWIwNGY5NTU0ZjQuLjBmOTI0NmY4MTE4ZDM3YzNiY2ZhNzJiMWM5ZjQ3NzYyMTZhMWU3YjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmNwcApAQCAtMTk4LDcgKzE5OCw3
IEBAIFJlZjxGb3JtU3VibWlzc2lvbj4gRm9ybVN1Ym1pc3Npb246OmNyZWF0ZShIVE1MRm9ybUVs
ZW1lbnQmIGZvcm0sIGNvbnN0IEF0dHJpYnV0CiAgICAgU3RyaW5nIGJvdW5kYXJ5OwogCiAgICAg
aWYgKGlzTXVsdGlQYXJ0Rm9ybSkgewotICAgICAgICBmb3JtRGF0YSA9IEZvcm1EYXRhOjpjcmVh
dGVNdWx0aVBhcnQoZG9tRm9ybURhdGEsICZkb2N1bWVudCk7CisgICAgICAgIGZvcm1EYXRhID0g
Rm9ybURhdGE6OmNyZWF0ZU11bHRpUGFydChkb21Gb3JtRGF0YSk7CiAgICAgICAgIGJvdW5kYXJ5
ID0gZm9ybURhdGEtPmJvdW5kYXJ5KCkuZGF0YSgpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGZv
cm1EYXRhID0gRm9ybURhdGE6OmNyZWF0ZShkb21Gb3JtRGF0YSwgYXR0cmlidXRlcy5tZXRob2Qo
KSA9PSBNZXRob2Q6OkdldCA/IEZvcm1EYXRhOjpGb3JtVVJMRW5jb2RlZCA6IEZvcm1EYXRhOjpw
YXJzZUVuY29kaW5nVHlwZShlbmNvZGluZ1R5cGUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXIuY3BwCmluZGV4IGZiNGM1YjhiZDMwNTJmNTdlYTNhMDI5NjE2YmE1NDg3ZDU3YjQ0NTIu
LjQ3Zjc2NmE5MDdmMWFkNTA4MmI5NDE0NGMyZGM4NjE5Njg1ZjY3NjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtNDczLDcgKzQ3Myw2IEBAIHZvaWQgRnJhbWVMb2Fk
ZXI6OnN1Ym1pdEZvcm0oUmVmPEZvcm1TdWJtaXNzaW9uPiYmIHN1Ym1pc3Npb24pCiAgICAgICAg
IG1fc3VibWl0dGVkRm9ybVVSTCA9IHN1Ym1pc3Npb24tPnJlcXVlc3RVUkwoKTsKICAgICB9CiAK
LSAgICBzdWJtaXNzaW9uLT5kYXRhKCkuZ2VuZXJhdGVGaWxlcyhtX2ZyYW1lLmRvY3VtZW50KCkp
OwogICAgIHN1Ym1pc3Npb24tPnNldFJlZmVycmVyKG91dGdvaW5nUmVmZXJyZXIoKSk7CiAgICAg
c3VibWlzc2lvbi0+c2V0T3JpZ2luKG91dGdvaW5nT3JpZ2luKCkpOwogCkBAIC0zNzczLDggKzM3
NzIsNiBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkRGlmZmVyZW50RG9jdW1lbnRJdGVtKEhpc3Rv
cnlJdGVtJiBpdGVtLCBIaXN0b3J5SXRlbSogZnJvbQogICAgIC8vIElmIHRoaXMgd2FzIGEgcmVw
b3N0IHRoYXQgZmFpbGVkIHRoZSBwYWdlIGNhY2hlLCB3ZSBtaWdodCB0cnkgdG8gcmVwb3N0IHRo
ZSBmb3JtLgogICAgIE5hdmlnYXRpb25BY3Rpb24gYWN0aW9uOwogICAgIGlmIChmb3JtRGF0YSkg
ewotICAgICAgICBmb3JtRGF0YS0+Z2VuZXJhdGVGaWxlcyhtX2ZyYW1lLmRvY3VtZW50KCkpOwot
CiAgICAgICAgIHJlcXVlc3Quc2V0SFRUUE1ldGhvZCgiUE9TVCIpOwogICAgICAgICByZXF1ZXN0
LnNldEhUVFBCb2R5KFdURk1vdmUoZm9ybURhdGEpKTsKICAgICAgICAgcmVxdWVzdC5zZXRIVFRQ
Q29udGVudFR5cGUoaXRlbS5mb3JtQ29udGVudFR5cGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCAxZjZmMzUzZTY5MzVlOGU1ZWI2NTVkZWVkODBmNTdi
MGFlMzdjMmZjLi5hNzY2NTZjMDNlNzEyNTI4NTM4OGFiNWQ2NWQ4ZGM5ZGY1M2UyYTg2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKQEAgLTQ5Miw5ICs0OTIsNiBA
QCB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgciwgQ29tcGxldGlvbkhhbgogCiAgICAgbV9yZXNwb25zZSA9IHI7CiAKLSAgICBp
ZiAoRm9ybURhdGEqIGRhdGEgPSBtX3JlcXVlc3QuaHR0cEJvZHkoKSkKLSAgICAgICAgZGF0YS0+
cmVtb3ZlR2VuZXJhdGVkRmlsZXNJZk5lZWRlZCgpOwotCiAgICAgaWYgKG1fb3B0aW9ucy5zZW5k
TG9hZENhbGxiYWNrcyA9PSBTZW5kQ2FsbGJhY2tQb2xpY3k6OlNlbmRDYWxsYmFja3MpCiAgICAg
ICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCkuZGlkUmVjZWl2ZVJlc3BvbnNlKHRoaXMsIG1f
cmVzcG9uc2UpOwogfQpAQCAtNTc5LDkgKzU3Niw2IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRp
ZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiAKIHZvaWQgUmVzb3VyY2VMb2FkZXI6
OmNsZWFudXBGb3JFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKLSAgICBpZiAo
Rm9ybURhdGEqIGRhdGEgPSBtX3JlcXVlc3QuaHR0cEJvZHkoKSkKLSAgICAgICAgZGF0YS0+cmVt
b3ZlR2VuZXJhdGVkRmlsZXNJZk5lZWRlZCgpOwotCiAgICAgaWYgKG1fbm90aWZpZWRMb2FkQ29t
cGxldGUpCiAgICAgICAgIHJldHVybjsKICAgICBtX25vdGlmaWVkTG9hZENvbXBsZXRlID0gdHJ1
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAppbmRleCAyMjBkOGMyNjI5OGIwYzk1NTc5MzBmNDEyM2Zj
ZjJkNTgzYzk3OTNiLi45NzU4MzI5YmE5MDljZDkxM2NhYjQ2ODVkNzFhZTlkYTRmYzM1Y2E2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9DaHJvbWUuY3BwCkBAIC01MjUsMTcgKzUyNSw2IEBAIHZvaWQgQ2hyb21lOjp3
aW5kb3dTY3JlZW5EaWRDaGFuZ2UoUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKQogI2VuZGlm
CiB9CiAKLWJvb2wgQ2hyb21lQ2xpZW50OjpzaG91bGRSZXBsYWNlV2l0aEdlbmVyYXRlZEZpbGVG
b3JVcGxvYWQoY29uc3QgU3RyaW5nJiwgU3RyaW5nJikKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19
Ci0KLVN0cmluZyBDaHJvbWVDbGllbnQ6OmdlbmVyYXRlUmVwbGFjZW1lbnRGaWxlKGNvbnN0IFN0
cmluZyYpCi17Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFN0cmluZygp
OwotfQotCiBib29sIENocm9tZTo6c2VsZWN0SXRlbVdyaXRpbmdEaXJlY3Rpb25Jc05hdHVyYWwo
KQogewogICAgIHJldHVybiBtX2NsaWVudC5zZWxlY3RJdGVtV3JpdGluZ0RpcmVjdGlvbklzTmF0
dXJhbCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKaW5kZXggZjk5M2UyMGMxOGQ2Zjlm
NDkxMDRjYzY2NzUzOTg4NzcyMGYyZTU2My4uYzI1YTAyNGJjMDYzYzU4ZjNiMjhiZDc5Y2JiMDMz
ODQ0MjZjOGM1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCkBAIC0yMzUsOSArMjM1
LDYgQEAgcHVibGljOgogICAgIC8vIHRoZSBuZXcgY2FjaGUuCiAgICAgdmlydHVhbCB2b2lkIHJl
YWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoU2VjdXJpdHlPcmlnaW4mLCBpbnQ2NF90
IHRvdGFsU3BhY2VOZWVkZWQpID0gMDsKIAotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRSZXBsYWNl
V2l0aEdlbmVyYXRlZEZpbGVGb3JVcGxvYWQoY29uc3QgU3RyaW5nJiBwYXRoLCBTdHJpbmcmIGdl
bmVyYXRlZEZpbGVuYW1lKTsKLSAgICB2aXJ0dWFsIFN0cmluZyBnZW5lcmF0ZVJlcGxhY2VtZW50
RmlsZShjb25zdCBTdHJpbmcmIHBhdGgpOwotCiAjaWYgRU5BQkxFKElPU19UT1VDSF9FVkVOVFMp
CiAgICAgdmlydHVhbCB2b2lkIGRpZFByZXZlbnREZWZhdWx0Rm9yRXZlbnQoKSA9IDA7CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKaW5kZXgg
N2U5NGM5YTM4NWQxYjYzMTNhM2ExYWJjYWRhOWMxMDUzYzMxNDU2Ni4uZDZmMjkxNjFhNDdkYjU0
ZjRkNGZhYmExNDUxZmQ5YjY1MjE3MDE3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9Gb3JtRGF0YS5jcHAKQEAgLTI3LDcgKzI3LDYgQEAKICNpbmNsdWRlICJDaHJvbWUu
aCIKICNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKICNpbmNsdWRlICJET01Gb3JtRGF0YS5oIgot
I2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRmlsZS5oIgogI2luY2x1ZGUgIkZvcm1E
YXRhQnVpbGRlci5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKQEAgLTUwLDIyICs0OSwxMCBAQCBpbmxp
bmUgRm9ybURhdGE6OkZvcm1EYXRhKGNvbnN0IEZvcm1EYXRhJiBkYXRhKQogICAgICwgbV9hbHdh
eXNTdHJlYW0oZmFsc2UpCiAgICAgLCBtX2NvbnRhaW5zUGFzc3dvcmREYXRhKGRhdGEubV9jb250
YWluc1Bhc3N3b3JkRGF0YSkKIHsKLSAgICAvLyBXZSBzaG91bGRuJ3QgYmUgY29weWluZyBGb3Jt
RGF0YSB0aGF0IGhhc24ndCBhbHJlYWR5IHJlbW92ZWQgaXRzIGdlbmVyYXRlZCBmaWxlcwotICAg
IC8vIGJ1dCBqdXN0IGluIGNhc2UsIG1ha2Ugc3VyZSB0aGUgbmV3IEZvcm1EYXRhIGlzIHJlYWR5
IHRvIGdlbmVyYXRlIGl0cyBvd24gZmlsZXMuCi0gICAgZm9yIChhdXRvJiBlbGVtZW50IDogbV9l
bGVtZW50cykgewotICAgICAgICBpZiAoYXV0byogZmlsZURhdGEgPSBXVEY6OmdldF9pZjxGb3Jt
RGF0YUVsZW1lbnQ6OkVuY29kZWRGaWxlRGF0YT4oZWxlbWVudC5kYXRhKSkgewotICAgICAgICAg
ICAgZmlsZURhdGEtPmdlbmVyYXRlZEZpbGVuYW1lID0geyB9OwotICAgICAgICAgICAgZmlsZURh
dGEtPm93bnNHZW5lcmF0ZWRGaWxlID0gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9CiB9CiAKIEZv
cm1EYXRhOjp+Rm9ybURhdGEoKQogewotICAgIC8vIFRoaXMgY2xlYW51cCBzaG91bGQndmUgaGFw
cGVuZWQgd2hlbiB0aGUgZm9ybSBzdWJtaXNzaW9uIGZpbmlzaGVkLgotICAgIC8vIEp1c3QgaW4g
Y2FzZSwgbGV0J3MgYXNzZXJ0LCBhbmQgZG8gdGhlIGNsZWFudXAgYW55d2F5IGluIHJlbGVhc2Ug
YnVpbGRzLgotICAgIEFTU0VSVCghaGFzT3duZWRHZW5lcmF0ZWRGaWxlcygpKTsKLSAgICByZW1v
dmVHZW5lcmF0ZWRGaWxlc0lmTmVlZGVkKCk7CiB9CiAKIFJlZjxGb3JtRGF0YT4gRm9ybURhdGE6
OmNyZWF0ZSgpCkBAIC0xMDksMTAgKzk2LDEwIEBAIFJlZjxGb3JtRGF0YT4gRm9ybURhdGE6OmNy
ZWF0ZShjb25zdCBET01Gb3JtRGF0YSYgZm9ybURhdGEsIEVuY29kaW5nVHlwZSBlbmNvZGluCiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotUmVmPEZvcm1EYXRhPiBGb3JtRGF0YTo6Y3JlYXRlTXVs
dGlQYXJ0KGNvbnN0IERPTUZvcm1EYXRhJiBmb3JtRGF0YSwgRG9jdW1lbnQqIGRvY3VtZW50KQor
UmVmPEZvcm1EYXRhPiBGb3JtRGF0YTo6Y3JlYXRlTXVsdGlQYXJ0KGNvbnN0IERPTUZvcm1EYXRh
JiBmb3JtRGF0YSkKIHsKICAgICBhdXRvIHJlc3VsdCA9IGNyZWF0ZSgpOwotICAgIHJlc3VsdC0+
YXBwZW5kTXVsdGlQYXJ0S2V5VmFsdWVQYWlySXRlbXMoZm9ybURhdGEsIGRvY3VtZW50KTsKKyAg
ICByZXN1bHQtPmFwcGVuZE11bHRpUGFydEtleVZhbHVlUGFpckl0ZW1zKGZvcm1EYXRhKTsKICAg
ICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0xNDYsNyArMTMzLDcgQEAgdWludDY0X3QgRm9ybURh
dGFFbGVtZW50OjpsZW5ndGhJbkJ5dGVzKCkgY29uc3QKICAgICAgICAgICAgIGlmIChmaWxlRGF0
YS5maWxlTGVuZ3RoICE9IEJsb2JEYXRhSXRlbTo6dG9FbmRPZkZpbGUpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnQ2NF90PihmaWxlRGF0YS5maWxlTGVuZ3RoKTsKICAg
ICAgICAgICAgIGxvbmcgbG9uZyBmaWxlU2l6ZTsKLSAgICAgICAgICAgIGlmIChGaWxlU3lzdGVt
OjpnZXRGaWxlU2l6ZShmaWxlRGF0YS5zaG91bGRHZW5lcmF0ZUZpbGUgPyBmaWxlRGF0YS5nZW5l
cmF0ZWRGaWxlbmFtZSA6IGZpbGVEYXRhLmZpbGVuYW1lLCBmaWxlU2l6ZSkpCisgICAgICAgICAg
ICBpZiAoRmlsZVN5c3RlbTo6Z2V0RmlsZVNpemUoZmlsZURhdGEuZmlsZW5hbWUsIGZpbGVTaXpl
KSkKICAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGZpbGVTaXpl
KTsKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1aW50NjRfdD4oMCk7CiAgICAgICAg
IH0sIFtdIChjb25zdCBGb3JtRGF0YUVsZW1lbnQ6OkVuY29kZWRCbG9iRGF0YSYgYmxvYkRhdGEp
IHsKQEAgLTE4NCwxNSArMTcxLDE1IEBAIHZvaWQgRm9ybURhdGE6OmFwcGVuZERhdGEoY29uc3Qg
dm9pZCogZGF0YSwgc2l6ZV90IHNpemUpCiAgICAgbV9lbGVtZW50cy5hcHBlbmQoV1RGTW92ZSh2
ZWN0b3IpKTsKIH0KIAotdm9pZCBGb3JtRGF0YTo6YXBwZW5kRmlsZShjb25zdCBTdHJpbmcmIGZp
bGVuYW1lLCBib29sIHNob3VsZEdlbmVyYXRlRmlsZSkKK3ZvaWQgRm9ybURhdGE6OmFwcGVuZEZp
bGUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKIHsKLSAgICBtX2VsZW1lbnRzLmFwcGVuZChGb3Jt
RGF0YUVsZW1lbnQoZmlsZW5hbWUsIDAsIEJsb2JEYXRhSXRlbTo6dG9FbmRPZkZpbGUsIFdURjo6
bnVsbG9wdCwgc2hvdWxkR2VuZXJhdGVGaWxlKSk7CisgICAgbV9lbGVtZW50cy5hcHBlbmQoRm9y
bURhdGFFbGVtZW50KGZpbGVuYW1lLCAwLCBCbG9iRGF0YUl0ZW06OnRvRW5kT2ZGaWxlLCBXVEY6
Om51bGxvcHQpKTsKICAgICBtX2xlbmd0aEluQnl0ZXMgPSBXVEY6Om51bGxvcHQ7CiB9CiAKLXZv
aWQgRm9ybURhdGE6OmFwcGVuZEZpbGVSYW5nZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBsb25n
IGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBsZW5ndGgsIE9wdGlvbmFsPFdhbGxUaW1lPiBleHBlY3Rl
ZE1vZGlmaWNhdGlvblRpbWUsIGJvb2wgc2hvdWxkR2VuZXJhdGVGaWxlKQordm9pZCBGb3JtRGF0
YTo6YXBwZW5kRmlsZVJhbmdlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGxvbmcgbG9uZyBzdGFy
dCwgbG9uZyBsb25nIGxlbmd0aCwgT3B0aW9uYWw8V2FsbFRpbWU+IGV4cGVjdGVkTW9kaWZpY2F0
aW9uVGltZSkKIHsKLSAgICBtX2VsZW1lbnRzLmFwcGVuZChGb3JtRGF0YUVsZW1lbnQoZmlsZW5h
bWUsIHN0YXJ0LCBsZW5ndGgsIGV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSwgc2hvdWxkR2VuZXJh
dGVGaWxlKSk7CisgICAgbV9lbGVtZW50cy5hcHBlbmQoRm9ybURhdGFFbGVtZW50KGZpbGVuYW1l
LCBzdGFydCwgbGVuZ3RoLCBleHBlY3RlZE1vZGlmaWNhdGlvblRpbWUpKTsKICAgICBtX2xlbmd0
aEluQnl0ZXMgPSBXVEY6Om51bGxvcHQ7CiB9CiAKQEAgLTIwNywyMiArMTk0LDEwIEBAIHN0YXRp
YyBWZWN0b3I8dWludDhfdD4gbm9ybWFsaXplU3RyaW5nRGF0YShUZXh0RW5jb2RpbmcmIGVuY29k
aW5nLCBjb25zdCBTdHJpbmcmCiAgICAgcmV0dXJuIG5vcm1hbGl6ZUxpbmVFbmRpbmdzVG9DUkxG
KGVuY29kaW5nLmVuY29kZSh2YWx1ZSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKTsK
IH0KIAotdm9pZCBGb3JtRGF0YTo6YXBwZW5kTXVsdGlQYXJ0RmlsZVZhbHVlKGNvbnN0IEZpbGUm
IGZpbGUsIFZlY3RvcjxjaGFyPiYgaGVhZGVyLCBUZXh0RW5jb2RpbmcmIGVuY29kaW5nLCBEb2N1
bWVudCogZG9jdW1lbnQpCit2b2lkIEZvcm1EYXRhOjphcHBlbmRNdWx0aVBhcnRGaWxlVmFsdWUo
Y29uc3QgRmlsZSYgZmlsZSwgVmVjdG9yPGNoYXI+JiBoZWFkZXIsIFRleHRFbmNvZGluZyYgZW5j
b2RpbmcpCiB7CiAgICAgYXV0byBuYW1lID0gZmlsZS5uYW1lKCk7CiAKLSAgICAvLyBMZXQgdGhl
IGFwcGxpY2F0aW9uIHNwZWNpZnkgYSBmaWxlbmFtZSBpZiBpdCdzIGdvaW5nIHRvIGdlbmVyYXRl
IGEgcmVwbGFjZW1lbnQgZmlsZSBmb3IgdGhlIHVwbG9hZC4KLSAgICBib29sIHNob3VsZEdlbmVy
YXRlRmlsZSA9IGZhbHNlOwotICAgIGF1dG8mIHBhdGggPSBmaWxlLnBhdGgoKTsKLSAgICBpZiAo
IXBhdGguaXNFbXB0eSgpKSB7Ci0gICAgICAgIGlmIChQYWdlKiBwYWdlID0gZG9jdW1lbnQtPnBh
Z2UoKSkgewotICAgICAgICAgICAgU3RyaW5nIGdlbmVyYXRlZEZpbGVOYW1lOwotICAgICAgICAg
ICAgc2hvdWxkR2VuZXJhdGVGaWxlID0gcGFnZS0+Y2hyb21lKCkuY2xpZW50KCkuc2hvdWxkUmVw
bGFjZVdpdGhHZW5lcmF0ZWRGaWxlRm9yVXBsb2FkKHBhdGgsIGdlbmVyYXRlZEZpbGVOYW1lKTsK
LSAgICAgICAgICAgIGlmIChzaG91bGRHZW5lcmF0ZUZpbGUpCi0gICAgICAgICAgICAgICAgbmFt
ZSA9IGdlbmVyYXRlZEZpbGVOYW1lOwotICAgICAgICB9Ci0gICAgfQotCiAgICAgLy8gV2UgaGF2
ZSB0byBpbmNsdWRlIHRoZSBmaWxlbmFtZT0iLi4iIHBhcnQgaW4gdGhlIGhlYWRlciwgZXZlbiBp
ZiB0aGUgZmlsZW5hbWUgaXMgZW1wdHkKICAgICBGb3JtRGF0YUJ1aWxkZXI6OmFkZEZpbGVuYW1l
VG9NdWx0aVBhcnRIZWFkZXIoaGVhZGVyLCBlbmNvZGluZywgbmFtZSk7CiAKQEAgLTIzOCw3ICsy
MTMsNyBAQCB2b2lkIEZvcm1EYXRhOjphcHBlbmRNdWx0aVBhcnRGaWxlVmFsdWUoY29uc3QgRmls
ZSYgZmlsZSwgVmVjdG9yPGNoYXI+JiBoZWFkZXIsCiAgICAgYXBwZW5kRGF0YShoZWFkZXIuZGF0
YSgpLCBoZWFkZXIuc2l6ZSgpKTsKIAogICAgIGlmICghZmlsZS5wYXRoKCkuaXNFbXB0eSgpKQot
ICAgICAgICBhcHBlbmRGaWxlKGZpbGUucGF0aCgpLCBzaG91bGRHZW5lcmF0ZUZpbGUpOworICAg
ICAgICBhcHBlbmRGaWxlKGZpbGUucGF0aCgpKTsKICAgICBlbHNlIGlmIChmaWxlLnNpemUoKSkK
ICAgICAgICAgYXBwZW5kQmxvYihmaWxlLnVybCgpKTsKIH0KQEAgLTI1Miw3ICsyMjcsNyBAQCB2
b2lkIEZvcm1EYXRhOjphcHBlbmRNdWx0aVBhcnRTdHJpbmdWYWx1ZShjb25zdCBTdHJpbmcmIHN0
cmluZywgVmVjdG9yPGNoYXI+JiBoZQogICAgIGFwcGVuZERhdGEobm9ybWFsaXplZFN0cmluZ0Rh
dGEuZGF0YSgpLCBub3JtYWxpemVkU3RyaW5nRGF0YS5zaXplKCkpOwogfQogCi12b2lkIEZvcm1E
YXRhOjphcHBlbmRNdWx0aVBhcnRLZXlWYWx1ZVBhaXJJdGVtcyhjb25zdCBET01Gb3JtRGF0YSYg
Zm9ybURhdGEsIERvY3VtZW50KiBkb2N1bWVudCkKK3ZvaWQgRm9ybURhdGE6OmFwcGVuZE11bHRp
UGFydEtleVZhbHVlUGFpckl0ZW1zKGNvbnN0IERPTUZvcm1EYXRhJiBmb3JtRGF0YSkKIHsKICAg
ICBtX2JvdW5kYXJ5ID0gRm9ybURhdGFCdWlsZGVyOjpnZW5lcmF0ZVVuaXF1ZUJvdW5kYXJ5U3Ry
aW5nKCk7CiAKQEAgLTI2Niw3ICsyNDEsNyBAQCB2b2lkIEZvcm1EYXRhOjphcHBlbmRNdWx0aVBh
cnRLZXlWYWx1ZVBhaXJJdGVtcyhjb25zdCBET01Gb3JtRGF0YSYgZm9ybURhdGEsIERvYwogICAg
ICAgICBGb3JtRGF0YUJ1aWxkZXI6OmJlZ2luTXVsdGlQYXJ0SGVhZGVyKGhlYWRlciwgbV9ib3Vu
ZGFyeS5kYXRhKCksIG5vcm1hbGl6ZWROYW1lKTsKIAogICAgICAgICBpZiAoV1RGOjpob2xkc19h
bHRlcm5hdGl2ZTxSZWZQdHI8RmlsZT4+KGl0ZW0uZGF0YSkpCi0gICAgICAgICAgICBhcHBlbmRN
dWx0aVBhcnRGaWxlVmFsdWUoKldURjo6Z2V0PFJlZlB0cjxGaWxlPj4oaXRlbS5kYXRhKSwgaGVh
ZGVyLCBlbmNvZGluZywgZG9jdW1lbnQpOworICAgICAgICAgICAgYXBwZW5kTXVsdGlQYXJ0Rmls
ZVZhbHVlKCpXVEY6OmdldDxSZWZQdHI8RmlsZT4+KGl0ZW0uZGF0YSksIGhlYWRlciwgZW5jb2Rp
bmcpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBhcHBlbmRNdWx0aVBhcnRTdHJpbmdWYWx1
ZShXVEY6OmdldDxTdHJpbmc+KGl0ZW0uZGF0YSksIGhlYWRlciwgZW5jb2RpbmcpOwogCkBAIC0z
NTksNyArMzM0LDcgQEAgUmVmPEZvcm1EYXRhPiBGb3JtRGF0YTo6cmVzb2x2ZUJsb2JSZWZlcmVu
Y2VzKEJsb2JSZWdpc3RyeSYgYmxvYlJlZ2lzdHJ5KQogICAgICAgICAgICAgWyZdIChjb25zdCBW
ZWN0b3I8Y2hhcj4mIGJ5dGVzKSB7CiAgICAgICAgICAgICAgICAgbmV3Rm9ybURhdGEtPmFwcGVu
ZERhdGEoYnl0ZXMuZGF0YSgpLCBieXRlcy5zaXplKCkpOwogICAgICAgICAgICAgfSwgWyZdIChj
b25zdCBGb3JtRGF0YUVsZW1lbnQ6OkVuY29kZWRGaWxlRGF0YSYgZmlsZURhdGEpIHsKLSAgICAg
ICAgICAgICAgICBuZXdGb3JtRGF0YS0+YXBwZW5kRmlsZVJhbmdlKGZpbGVEYXRhLmZpbGVuYW1l
LCBmaWxlRGF0YS5maWxlU3RhcnQsIGZpbGVEYXRhLmZpbGVMZW5ndGgsIGZpbGVEYXRhLmV4cGVj
dGVkRmlsZU1vZGlmaWNhdGlvblRpbWUsIGZpbGVEYXRhLnNob3VsZEdlbmVyYXRlRmlsZSk7Cisg
ICAgICAgICAgICAgICAgbmV3Rm9ybURhdGEtPmFwcGVuZEZpbGVSYW5nZShmaWxlRGF0YS5maWxl
bmFtZSwgZmlsZURhdGEuZmlsZVN0YXJ0LCBmaWxlRGF0YS5maWxlTGVuZ3RoLCBmaWxlRGF0YS5l
eHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lKTsKICAgICAgICAgICAgIH0sIFsmXSAoY29uc3Qg
Rm9ybURhdGFFbGVtZW50OjpFbmNvZGVkQmxvYkRhdGEmIGJsb2JEYXRhKSB7CiAgICAgICAgICAg
ICAgICAgYXBwZW5kQmxvYlJlc29sdmVkKGJsb2JSZWdpc3RyeSwgbmV3Rm9ybURhdGEuZ2V0KCks
IGJsb2JEYXRhLnVybCk7CiAgICAgICAgICAgICB9CkBAIC0zNjgsNjYgKzM0Myw0MSBAQCBSZWY8
Rm9ybURhdGE+IEZvcm1EYXRhOjpyZXNvbHZlQmxvYlJlZmVyZW5jZXMoQmxvYlJlZ2lzdHJ5JiBi
bG9iUmVnaXN0cnkpCiAgICAgcmV0dXJuIG5ld0Zvcm1EYXRhOwogfQogCi12b2lkIEZvcm1EYXRh
OjpnZW5lcmF0ZUZpbGVzKERvY3VtZW50KiBkb2N1bWVudCkKLXsKLSAgICBQYWdlKiBwYWdlID0g
ZG9jdW1lbnQtPnBhZ2UoKTsKLSAgICBpZiAoIXBhZ2UpCi0gICAgICAgIHJldHVybjsKLQotICAg
IGZvciAoYXV0byYgZWxlbWVudCA6IG1fZWxlbWVudHMpIHsKLSAgICAgICAgaWYgKGF1dG8qIGZp
bGVEYXRhID0gV1RGOjpnZXRfaWY8Rm9ybURhdGFFbGVtZW50OjpFbmNvZGVkRmlsZURhdGE+KGVs
ZW1lbnQuZGF0YSkpIHsKLSAgICAgICAgICAgIGlmIChmaWxlRGF0YS0+c2hvdWxkR2VuZXJhdGVG
aWxlKSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKCFmaWxlRGF0YS0+b3duc0dlbmVyYXRlZEZp
bGUpOwotICAgICAgICAgICAgICAgIEFTU0VSVChmaWxlRGF0YS0+Z2VuZXJhdGVkRmlsZW5hbWUu
aXNFbXB0eSgpKTsKLSAgICAgICAgICAgICAgICBpZiAoIWZpbGVEYXRhLT5nZW5lcmF0ZWRGaWxl
bmFtZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAg
ICAgICAgIGZpbGVEYXRhLT5nZW5lcmF0ZWRGaWxlbmFtZSA9IHBhZ2UtPmNocm9tZSgpLmNsaWVu
dCgpLmdlbmVyYXRlUmVwbGFjZW1lbnRGaWxlKGZpbGVEYXRhLT5maWxlbmFtZSk7Ci0gICAgICAg
ICAgICAgICAgaWYgKCFmaWxlRGF0YS0+Z2VuZXJhdGVkRmlsZW5hbWUuaXNFbXB0eSgpKQotICAg
ICAgICAgICAgICAgICAgICBmaWxlRGF0YS0+b3duc0dlbmVyYXRlZEZpbGUgPSB0cnVlOwotICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotfQotCi1ib29sIEZvcm1EYXRhOjpoYXNHZW5l
cmF0ZWRGaWxlcygpIGNvbnN0CitGb3JtRGF0YUZvclVwbG9hZCBGb3JtRGF0YTo6cHJlcGFyZUZv
clVwbG9hZCgpCiB7CisgICAgVmVjdG9yPFN0cmluZz4gZ2VuZXJhdGVkRmlsZXM7CiAgICAgZm9y
IChhdXRvJiBlbGVtZW50IDogbV9lbGVtZW50cykgewotICAgICAgICBpZiAoYXV0byogZmlsZURh
dGEgPSBXVEY6OmdldF9pZjxGb3JtRGF0YUVsZW1lbnQ6OkVuY29kZWRGaWxlRGF0YT4oZWxlbWVu
dC5kYXRhKSkgewotICAgICAgICAgICAgaWYgKCFmaWxlRGF0YS0+Z2VuZXJhdGVkRmlsZW5hbWUu
aXNFbXB0eSgpKQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9CisgICAg
ICAgIGF1dG8qIGZpbGVEYXRhID0gV1RGOjpnZXRfaWY8Rm9ybURhdGFFbGVtZW50OjpFbmNvZGVk
RmlsZURhdGE+KGVsZW1lbnQuZGF0YSk7CisgICAgICAgIGlmICghZmlsZURhdGEpCisgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKCFGaWxlU3lzdGVtOjpmaWxlSXNEaXJlY3Rvcnko
ZmlsZURhdGEtPmZpbGVuYW1lLCBGaWxlU3lzdGVtOjpTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtz
OjpZZXMpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmIChmaWxlRGF0YS0+Zmls
ZVN0YXJ0IHx8IGZpbGVEYXRhLT5maWxlTGVuZ3RoICE9IEJsb2JEYXRhSXRlbTo6dG9FbmRPZkZp
bGUpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKCFmaWxlRGF0YS0+ZmlsZU1v
ZGlmaWNhdGlvblRpbWVNYXRjaGVzRXhwZWN0YXRpb24oKSkKKyAgICAgICAgICAgIGNvbnRpbnVl
OworCisgICAgICAgIGF1dG8gZ2VuZXJhdGVkRmlsZW5hbWUgPSBGaWxlU3lzdGVtOjpjcmVhdGVU
ZW1wb3JhcnlaaXBBcmNoaXZlKGZpbGVEYXRhLT5maWxlbmFtZSk7CisgICAgICAgIGlmICghZ2Vu
ZXJhdGVkRmlsZW5hbWUpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgZmlsZURhdGEt
PmZpbGVuYW1lID0gZ2VuZXJhdGVkRmlsZW5hbWU7CisgICAgICAgIGdlbmVyYXRlZEZpbGVzLmFw
cGVuZChXVEZNb3ZlKGdlbmVyYXRlZEZpbGVuYW1lKSk7CiAgICAgfQotICAgIHJldHVybiBmYWxz
ZTsKKyAgICAKKyAgICByZXR1cm4geyAqdGhpcywgV1RGTW92ZShnZW5lcmF0ZWRGaWxlcykgfTsK
IH0KIAotYm9vbCBGb3JtRGF0YTo6aGFzT3duZWRHZW5lcmF0ZWRGaWxlcygpIGNvbnN0CitGb3Jt
RGF0YUZvclVwbG9hZDo6Rm9ybURhdGFGb3JVcGxvYWQoRm9ybURhdGEmIGRhdGEsIFZlY3RvcjxT
dHJpbmc+JiYgdGVtcG9yYXJ5WmlwRmlsZXMpCisgICAgOiBtX2RhdGEoZGF0YSkKKyAgICAsIG1f
dGVtcG9yYXJ5WmlwRmlsZXMoV1RGTW92ZSh0ZW1wb3JhcnlaaXBGaWxlcykpCiB7Ci0gICAgZm9y
IChhdXRvJiBlbGVtZW50IDogbV9lbGVtZW50cykgewotICAgICAgICBpZiAoYXV0byogZmlsZURh
dGEgPSBXVEY6OmdldF9pZjxGb3JtRGF0YUVsZW1lbnQ6OkVuY29kZWRGaWxlRGF0YT4oZWxlbWVu
dC5kYXRhKSkgewotICAgICAgICAgICAgaWYgKGZpbGVEYXRhLT5vd25zR2VuZXJhdGVkRmlsZSkg
ewotICAgICAgICAgICAgICAgIEFTU0VSVCghZmlsZURhdGEtPmdlbmVyYXRlZEZpbGVuYW1lLmlz
RW1wdHkoKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIEZvcm1EYXRhOjpy
ZW1vdmVHZW5lcmF0ZWRGaWxlc0lmTmVlZGVkKCkKK0Zvcm1EYXRhRm9yVXBsb2FkOjp+Rm9ybURh
dGFGb3JVcGxvYWQoKQogewotICAgIGZvciAoYXV0byYgZWxlbWVudCA6IG1fZWxlbWVudHMpIHsK
LSAgICAgICAgaWYgKGF1dG8qIGZpbGVEYXRhID0gV1RGOjpnZXRfaWY8Rm9ybURhdGFFbGVtZW50
OjpFbmNvZGVkRmlsZURhdGE+KGVsZW1lbnQuZGF0YSkpIHsKLSAgICAgICAgICAgIGlmIChmaWxl
RGF0YS0+b3duc0dlbmVyYXRlZEZpbGUpIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQoIWZpbGVE
YXRhLT5nZW5lcmF0ZWRGaWxlbmFtZS5pc0VtcHR5KCkpOwotICAgICAgICAgICAgICAgIEFTU0VS
VChmaWxlRGF0YS0+c2hvdWxkR2VuZXJhdGVGaWxlKTsKLSAgICAgICAgICAgICAgICBTdHJpbmcg
ZGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShmaWxlRGF0YS0+Z2VuZXJhdGVk
RmlsZW5hbWUpOwotICAgICAgICAgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoZmlsZURh
dGEtPmdlbmVyYXRlZEZpbGVuYW1lKTsKLSAgICAgICAgICAgICAgICBGaWxlU3lzdGVtOjpkZWxl
dGVFbXB0eURpcmVjdG9yeShkaXJlY3RvcnkpOwotICAgICAgICAgICAgICAgIGZpbGVEYXRhLT5n
ZW5lcmF0ZWRGaWxlbmFtZSA9IFN0cmluZygpOwotICAgICAgICAgICAgICAgIGZpbGVEYXRhLT5v
d25zR2VuZXJhdGVkRmlsZSA9IGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAg
fQorICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgZm9yIChhdXRvJiBmaWxlIDogbV90
ZW1wb3JhcnlaaXBGaWxlcykKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShmaWxlKTsK
IH0KIAogdWludDY0X3QgRm9ybURhdGE6Omxlbmd0aEluQnl0ZXMoKSBjb25zdApAQCAtNDYwLDQg
KzQxMCwxOSBAQCBVUkwgRm9ybURhdGE6OmFzQmxvYlVSTCgpIGNvbnN0CiAgICAgcmV0dXJuIHsg
fTsKIH0KIAorYm9vbCBGb3JtRGF0YUVsZW1lbnQ6OkVuY29kZWRGaWxlRGF0YTo6ZmlsZU1vZGlm
aWNhdGlvblRpbWVNYXRjaGVzRXhwZWN0YXRpb24oKSBjb25zdAoreworICAgIGlmICghZXhwZWN0
ZWRGaWxlTW9kaWZpY2F0aW9uVGltZSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBhdXRv
IGZpbGVNb2RpZmljYXRpb25UaW1lID0gRmlsZVN5c3RlbTo6Z2V0RmlsZU1vZGlmaWNhdGlvblRp
bWUoZmlsZW5hbWUpOworICAgIGlmICghZmlsZU1vZGlmaWNhdGlvblRpbWUpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIGlmIChmaWxlTW9kaWZpY2F0aW9uVGltZS0+c2Vjb25kc1NpbmNl
RXBvY2goKS5zZWNvbmRzQXM8dGltZV90PigpICE9IGV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRp
bWUtPnNlY29uZHNTaW5jZUVwb2NoKCkuc2Vjb25kc0FzPHRpbWVfdD4oKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaAppbmRleCAyOWQ1
NTdhNmJhMjYzYzUyNDU2YjRiYzcwYTFjZDRkOWYxZjQzNjRiLi4yMGJmNjJlMjEwMDBmNTUzNmE1
OWM2OWI2YzUyNTkyMDU5YTVmMzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0Zvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9Gb3JtRGF0YS5oCkBAIC0zMSw3ICszMSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgQmxvYlJlZ2lzdHJ5OwogY2xhc3MgRE9NRm9ybURhdGE7Ci1jbGFzcyBEb2N1bWVudDsKIGNs
YXNzIEZpbGU7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBUZXh0RW5jb2Rpbmc7CkBAIC00
Niw4ICs0NSw4IEBAIHN0cnVjdCBGb3JtRGF0YUVsZW1lbnQgewogICAgICAgICA6IGRhdGEoV1RG
TW92ZShkYXRhKSkgeyB9CiAgICAgZXhwbGljaXQgRm9ybURhdGFFbGVtZW50KFZlY3RvcjxjaGFy
PiYmIGFycmF5KQogICAgICAgICA6IGRhdGEoV1RGTW92ZShhcnJheSkpIHsgfQotICAgIEZvcm1E
YXRhRWxlbWVudChjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBpbnQ2NF90IGZpbGVTdGFydCwgaW50
NjRfdCBmaWxlTGVuZ3RoLCBPcHRpb25hbDxXYWxsVGltZT4gZXhwZWN0ZWRGaWxlTW9kaWZpY2F0
aW9uVGltZSwgYm9vbCBzaG91bGRHZW5lcmF0ZUZpbGUpCi0gICAgICAgIDogZGF0YShFbmNvZGVk
RmlsZURhdGEgeyBmaWxlbmFtZSwgZmlsZVN0YXJ0LCBmaWxlTGVuZ3RoLCBleHBlY3RlZEZpbGVN
b2RpZmljYXRpb25UaW1lLCB7IH0sIHNob3VsZEdlbmVyYXRlRmlsZSwgZmFsc2UgfSkgeyB9Cisg
ICAgRm9ybURhdGFFbGVtZW50KGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGludDY0X3QgZmlsZVN0
YXJ0LCBpbnQ2NF90IGZpbGVMZW5ndGgsIE9wdGlvbmFsPFdhbGxUaW1lPiBleHBlY3RlZEZpbGVN
b2RpZmljYXRpb25UaW1lKQorICAgICAgICA6IGRhdGEoRW5jb2RlZEZpbGVEYXRhIHsgZmlsZW5h
bWUsIGZpbGVTdGFydCwgZmlsZUxlbmd0aCwgZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZSB9
KSB7IH0KICAgICBleHBsaWNpdCBGb3JtRGF0YUVsZW1lbnQoY29uc3QgVVJMJiBibG9iVVJMKQog
ICAgICAgICA6IGRhdGEoRW5jb2RlZEJsb2JEYXRhIHsgYmxvYlVSTCB9KSB7IH0KIApAQCAtNzMs
MTcgKzcyLDEyIEBAIHN0cnVjdCBGb3JtRGF0YUVsZW1lbnQgewogICAgICAgICBpbnQ2NF90IGZp
bGVTdGFydCB7IDAgfTsKICAgICAgICAgaW50NjRfdCBmaWxlTGVuZ3RoIHsgMCB9OwogICAgICAg
ICBPcHRpb25hbDxXYWxsVGltZT4gZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZTsKLSAgICAg
ICAgU3RyaW5nIGdlbmVyYXRlZEZpbGVuYW1lOwotICAgICAgICBib29sIHNob3VsZEdlbmVyYXRl
RmlsZSB7IGZhbHNlIH07Ci0gICAgICAgIGJvb2wgb3duc0dlbmVyYXRlZEZpbGUgeyBmYWxzZSB9
OwogCi0gICAgICAgIC8vIEZJWE1FOiBHZW5lcmF0ZWQgZmlsZSBzdXBwb3J0IGluIEZvcm1EYXRh
IGlzIGFsbW9zdCBpZGVudGljYWwgdG8gQmxvYiwgdGhleSBzaG91bGQgYmUgbWVyZ2VkLgotICAg
ICAgICAvLyBXZSBjYW4ndCBqdXN0IHN3aXRjaCB0byB1c2luZyBCbG9icyBmb3IgYWxsIGZpbGVz
IGJlY2F1c2UgRW5jb2RlZEZpbGUgZm9ybSBkYXRhIGVsZW1lbnRzIGRvIG5vdAotICAgICAgICAv
LyBoYXZlIGEgdmFsaWQgZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZSwgbWVhbmluZyB3ZSBh
bHdheXMgdXBsb2FkIHRoZSBsYXRlc3QgY29udGVudCBmcm9tIGRpc2suCisgICAgICAgIGJvb2wg
ZmlsZU1vZGlmaWNhdGlvblRpbWVNYXRjaGVzRXhwZWN0YXRpb24oKSBjb25zdDsKIAogICAgICAg
ICBFbmNvZGVkRmlsZURhdGEgaXNvbGF0ZWRDb3B5KCkgY29uc3QKICAgICAgICAgewotICAgICAg
ICAgICAgcmV0dXJuIHsgZmlsZW5hbWUuaXNvbGF0ZWRDb3B5KCksIGZpbGVTdGFydCwgZmlsZUxl
bmd0aCwgZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZSwgZ2VuZXJhdGVkRmlsZW5hbWUuaXNv
bGF0ZWRDb3B5KCksIHNob3VsZEdlbmVyYXRlRmlsZSwgb3duc0dlbmVyYXRlZEZpbGUgfTsKKyAg
ICAgICAgICAgIHJldHVybiB7IGZpbGVuYW1lLmlzb2xhdGVkQ29weSgpLCBmaWxlU3RhcnQsIGZp
bGVMZW5ndGgsIGV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUgfTsKICAgICAgICAgfQogICAg
ICAgICAKICAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEVuY29kZWRGaWxlRGF0YSYgb3Ro
ZXIpIGNvbnN0CkBAIC05MSwxNCArODUsMTEgQEAgc3RydWN0IEZvcm1EYXRhRWxlbWVudCB7CiAg
ICAgICAgICAgICByZXR1cm4gZmlsZW5hbWUgPT0gb3RoZXIuZmlsZW5hbWUKICAgICAgICAgICAg
ICAgICAmJiBmaWxlU3RhcnQgPT0gb3RoZXIuZmlsZVN0YXJ0CiAgICAgICAgICAgICAgICAgJiYg
ZmlsZUxlbmd0aCA9PSBvdGhlci5maWxlTGVuZ3RoCi0gICAgICAgICAgICAgICAgJiYgZXhwZWN0
ZWRGaWxlTW9kaWZpY2F0aW9uVGltZSA9PSBvdGhlci5leHBlY3RlZEZpbGVNb2RpZmljYXRpb25U
aW1lCi0gICAgICAgICAgICAgICAgJiYgZ2VuZXJhdGVkRmlsZW5hbWUgPT0gb3RoZXIuZ2VuZXJh
dGVkRmlsZW5hbWUKLSAgICAgICAgICAgICAgICAmJiBzaG91bGRHZW5lcmF0ZUZpbGUgPT0gb3Ro
ZXIuc2hvdWxkR2VuZXJhdGVGaWxlCi0gICAgICAgICAgICAgICAgJiYgb3duc0dlbmVyYXRlZEZp
bGUgPT0gb3RoZXIub3duc0dlbmVyYXRlZEZpbGU7CisgICAgICAgICAgICAgICAgJiYgZXhwZWN0
ZWRGaWxlTW9kaWZpY2F0aW9uVGltZSA9PSBvdGhlci5leHBlY3RlZEZpbGVNb2RpZmljYXRpb25U
aW1lOwogICAgICAgICB9CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+IHZvaWQg
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgICAgIHsKLSAgICAgICAgICAgIGVu
Y29kZXIgPDwgZmlsZW5hbWUgPDwgZmlsZVN0YXJ0IDw8IGZpbGVMZW5ndGggPDwgZXhwZWN0ZWRG
aWxlTW9kaWZpY2F0aW9uVGltZSA8PCBnZW5lcmF0ZWRGaWxlbmFtZSA8PCBzaG91bGRHZW5lcmF0
ZUZpbGU7CisgICAgICAgICAgICBlbmNvZGVyIDw8IGZpbGVuYW1lIDw8IGZpbGVTdGFydCA8PCBm
aWxlTGVuZ3RoIDw8IGV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWU7CiAgICAgICAgIH0KICAg
ICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPEVuY29kZWRG
aWxlRGF0YT4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgICAgIHsKQEAgLTEyMSwyNyAr
MTEyLDEyIEBAIHN0cnVjdCBGb3JtRGF0YUVsZW1lbnQgewogICAgICAgICAgICAgZGVjb2RlciA+
PiBleHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lOwogICAgICAgICAgICAgaWYgKCFleHBlY3Rl
ZEZpbGVNb2RpZmljYXRpb25UaW1lKQogICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIE9wdGlvbmFsPFN0cmluZz4gZ2VuZXJhdGVk
RmlsZW5hbWU7Ci0gICAgICAgICAgICBkZWNvZGVyID4+IGdlbmVyYXRlZEZpbGVuYW1lOwotICAg
ICAgICAgICAgaWYgKCFnZW5lcmF0ZWRGaWxlbmFtZSkKLSAgICAgICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwotCi0gICAgICAgICAgICBPcHRpb25hbDxib29sPiBzaG91bGRHZW5lcmF0
ZUZpbGU7Ci0gICAgICAgICAgICBkZWNvZGVyID4+IHNob3VsZEdlbmVyYXRlRmlsZTsKLSAgICAg
ICAgICAgIGlmICghc2hvdWxkR2VuZXJhdGVGaWxlKQotICAgICAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CiAKLSAgICAgICAgICAgIGJvb2wgb3duc0dlbmVyYXRlZEZpbGUgPSBmYWxz
ZTsKLSAgICAgICAgICAgIAogICAgICAgICAgICAgcmV0dXJuIHt7CiAgICAgICAgICAgICAgICAg
V1RGTW92ZSgqZmlsZW5hbWUpLAogICAgICAgICAgICAgICAgIFdURk1vdmUoKmZpbGVTdGFydCks
CiAgICAgICAgICAgICAgICAgV1RGTW92ZSgqZmlsZUxlbmd0aCksCi0gICAgICAgICAgICAgICAg
V1RGTW92ZSgqZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZSksCi0gICAgICAgICAgICAgICAg
V1RGTW92ZSgqZ2VuZXJhdGVkRmlsZW5hbWUpLAotICAgICAgICAgICAgICAgIFdURk1vdmUoKnNo
b3VsZEdlbmVyYXRlRmlsZSksCi0gICAgICAgICAgICAgICAgV1RGTW92ZShvd25zR2VuZXJhdGVk
RmlsZSkKKyAgICAgICAgICAgICAgICBXVEZNb3ZlKCpleHBlY3RlZEZpbGVNb2RpZmljYXRpb25U
aW1lKQogICAgICAgICAgICAgfX07CiAgICAgICAgIH0KIApAQCAtMTg5LDYgKzE2NSwyMiBAQCBz
dHJ1Y3QgRm9ybURhdGFFbGVtZW50IHsKICAgICBEYXRhIGRhdGE7CiB9OwogCitjbGFzcyBGb3Jt
RGF0YTsKKworc3RydWN0IEZvcm1EYXRhRm9yVXBsb2FkIHsKK3B1YmxpYzoKKyAgICBGb3JtRGF0
YUZvclVwbG9hZChGb3JtRGF0YUZvclVwbG9hZCYmKSA9IGRlZmF1bHQ7CisgICAgfkZvcm1EYXRh
Rm9yVXBsb2FkKCk7CisKKyAgICBGb3JtRGF0YSYgZGF0YSgpIHsgcmV0dXJuIG1fZGF0YS5nZXQo
KTsgfQorcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgRm9ybURhdGE7CisgICAgRm9ybURhdGFG
b3JVcGxvYWQoRm9ybURhdGEmLCBWZWN0b3I8U3RyaW5nPiYmKTsKKyAgICAKKyAgICBSZWY8Rm9y
bURhdGE+IG1fZGF0YTsKKyAgICBWZWN0b3I8U3RyaW5nPiBtX3RlbXBvcmFyeVppcEZpbGVzOwor
fTsKKwogY2xhc3MgRm9ybURhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxGb3JtRGF0YT4gewogcHVi
bGljOgogICAgIGVudW0gRW5jb2RpbmdUeXBlIHsKQEAgLTIwNCw3ICsxOTYsNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIFJlZjxGb3JtRGF0YT4gY3JlYXRlKGNvbnN0IFZlY3RvcjxjaGFyPiYpOwog
ICAgIHN0YXRpYyBSZWY8Rm9ybURhdGE+IGNyZWF0ZShjb25zdCBWZWN0b3I8dWludDhfdD4mKTsK
ICAgICBzdGF0aWMgUmVmPEZvcm1EYXRhPiBjcmVhdGUoY29uc3QgRE9NRm9ybURhdGEmLCBFbmNv
ZGluZ1R5cGUgPSBGb3JtVVJMRW5jb2RlZCk7Ci0gICAgc3RhdGljIFJlZjxGb3JtRGF0YT4gY3Jl
YXRlTXVsdGlQYXJ0KGNvbnN0IERPTUZvcm1EYXRhJiwgRG9jdW1lbnQqKTsKKyAgICBzdGF0aWMg
UmVmPEZvcm1EYXRhPiBjcmVhdGVNdWx0aVBhcnQoY29uc3QgRE9NRm9ybURhdGEmKTsKICAgICBX
RUJDT1JFX0VYUE9SVCB+Rm9ybURhdGEoKTsKIAogICAgIC8vIEZJWE1FOiBCb3RoIHRoZXNlIGZ1
bmN0aW9ucyBwZXJmb3JtIGEgZGVlcCBjb3B5IG9mIG1fZWxlbWVudHMsIGJ1dCBkaWZmZXIgaW4g
aGFuZGxpbmcgb2Ygb3RoZXIgZGF0YSBtZW1iZXJzLgpAQCAtMjE4LDggKzIxMCw4IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgUmVmUHRyPEZvcm1EYXRhPiBkZWNvZGUoRGVjb2RlciYpOwogCiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmREYXRhKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCk7
Ci0gICAgdm9pZCBhcHBlbmRGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIGJvb2wgc2hvdWxk
R2VuZXJhdGVGaWxlID0gZmFsc2UpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kRmls
ZVJhbmdlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25n
IGxlbmd0aCwgT3B0aW9uYWw8V2FsbFRpbWU+IGV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSwgYm9v
bCBzaG91bGRHZW5lcmF0ZUZpbGUgPSBmYWxzZSk7CisgICAgdm9pZCBhcHBlbmRGaWxlKGNvbnN0
IFN0cmluZyYgZmlsZVBhdGgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kRmlsZVJh
bmdlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGxl
bmd0aCwgT3B0aW9uYWw8V2FsbFRpbWU+IGV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSk7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmRCbG9iKGNvbnN0IFVSTCYgYmxvYlVSTCk7CiAKICAg
ICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8Y2hhcj4gZmxhdHRlbigpIGNvbnN0OyAvLyBvbWl0cyBm
aWxlcwpAQCAtMjI5LDE1ICsyMjEsMTQgQEAgcHVibGljOgogICAgIC8vIElmIHRoZSBGb3JtRGF0
YSBoYXMgbm8gYmxvYiByZWZlcmVuY2VzIHRvIHJlc29sdmUsIHRoaXMgaXMgcmV0dXJuZWQuCiAg
ICAgV0VCQ09SRV9FWFBPUlQgUmVmPEZvcm1EYXRhPiByZXNvbHZlQmxvYlJlZmVyZW5jZXMoQmxv
YlJlZ2lzdHJ5Jik7CiAKKyAgICBXRUJDT1JFX0VYUE9SVCBGb3JtRGF0YUZvclVwbG9hZCBwcmVw
YXJlRm9yVXBsb2FkKCk7CisKICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2Vs
ZW1lbnRzLmlzRW1wdHkoKTsgfQogICAgIGNvbnN0IFZlY3RvcjxGb3JtRGF0YUVsZW1lbnQ+JiBl
bGVtZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudHM7IH0KICAgICBjb25zdCBWZWN0b3I8
Y2hhcj4mIGJvdW5kYXJ5KCkgY29uc3QgeyByZXR1cm4gbV9ib3VuZGFyeTsgfQogCiAgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gYXNTaGFyZWRCdWZmZXIoKSBjb25zdDsKIAotICAgIHZvaWQgZ2Vu
ZXJhdGVGaWxlcyhEb2N1bWVudCopOwotICAgIHZvaWQgcmVtb3ZlR2VuZXJhdGVkRmlsZXNJZk5l
ZWRlZCgpOwotCiAgICAgYm9vbCBhbHdheXNTdHJlYW0oKSBjb25zdCB7IHJldHVybiBtX2Fsd2F5
c1N0cmVhbTsgfQogICAgIHZvaWQgc2V0QWx3YXlzU3RyZWFtKGJvb2wgYWx3YXlzU3RyZWFtKSB7
IG1fYWx3YXlzU3RyZWFtID0gYWx3YXlzU3RyZWFtOyB9CiAKQEAgLTI2NiwxNCArMjU3LDExIEBA
IHByaXZhdGU6CiAgICAgRm9ybURhdGEoKTsKICAgICBGb3JtRGF0YShjb25zdCBGb3JtRGF0YSYp
OwogCi0gICAgdm9pZCBhcHBlbmRNdWx0aVBhcnRGaWxlVmFsdWUoY29uc3QgRmlsZSYsIFZlY3Rv
cjxjaGFyPiYgaGVhZGVyLCBUZXh0RW5jb2RpbmcmLCBEb2N1bWVudCopOworICAgIHZvaWQgYXBw
ZW5kTXVsdGlQYXJ0RmlsZVZhbHVlKGNvbnN0IEZpbGUmLCBWZWN0b3I8Y2hhcj4mIGhlYWRlciwg
VGV4dEVuY29kaW5nJik7CiAgICAgdm9pZCBhcHBlbmRNdWx0aVBhcnRTdHJpbmdWYWx1ZShjb25z
dCBTdHJpbmcmLCBWZWN0b3I8Y2hhcj4mIGhlYWRlciwgVGV4dEVuY29kaW5nJik7Ci0gICAgdm9p
ZCBhcHBlbmRNdWx0aVBhcnRLZXlWYWx1ZVBhaXJJdGVtcyhjb25zdCBET01Gb3JtRGF0YSYsIERv
Y3VtZW50Kik7CisgICAgdm9pZCBhcHBlbmRNdWx0aVBhcnRLZXlWYWx1ZVBhaXJJdGVtcyhjb25z
dCBET01Gb3JtRGF0YSYpOwogICAgIHZvaWQgYXBwZW5kTm9uTXVsdGlQYXJ0S2V5VmFsdWVQYWly
SXRlbXMoY29uc3QgRE9NRm9ybURhdGEmLCBFbmNvZGluZ1R5cGUpOwogCi0gICAgYm9vbCBoYXNH
ZW5lcmF0ZWRGaWxlcygpIGNvbnN0OwotICAgIGJvb2wgaGFzT3duZWRHZW5lcmF0ZWRGaWxlcygp
IGNvbnN0OwotCiAgICAgVmVjdG9yPEZvcm1EYXRhRWxlbWVudD4gbV9lbGVtZW50czsKIAogICAg
IGludDY0X3QgbV9pZGVudGlmaWVyIHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAKaW5kZXggZGZk
ZGU3MWExZjBiOTE4NjcxMjY1NTA0YWM3YTNmYWQ5MTlmZDdlMS4uNDdmMTU0MThmMmFkNGQ1Zjg1
ZDYwOWI3OTc4MzY2Nzk2MGZiYmRmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwCkBAIC05MiwyMCAr
OTIsMjMgQEAgQ0ZTdHJpbmdSZWYgZm9ybURhdGFTdHJlYW1MZW5ndGhQcm9wZXJ0eU5hbWUoKQog
fQogCiBzdHJ1Y3QgRm9ybUNyZWF0aW9uQ29udGV4dCB7Ci0gICAgUmVmUHRyPEZvcm1EYXRhPiBm
b3JtRGF0YTsKKyAgICBGb3JtRGF0YUZvclVwbG9hZCBkYXRhOwogICAgIHVuc2lnbmVkIGxvbmcg
bG9uZyBzdHJlYW1MZW5ndGg7CiB9OwogCiBzdHJ1Y3QgRm9ybVN0cmVhbUZpZWxkcyB7Ci0gICAg
UmVmUHRyPEZvcm1EYXRhPiBmb3JtRGF0YTsKKyAgICBGb3JtU3RyZWFtRmllbGRzKEZvcm1EYXRh
Rm9yVXBsb2FkJiYgZGF0YSkKKyAgICAgICAgOiBkYXRhKFdURk1vdmUoZGF0YSkpIHsgfQorCisg
ICAgRm9ybURhdGFGb3JVcGxvYWQgZGF0YTsKICAgICBTY2hlZHVsZVBhaXJIYXNoU2V0IHNjaGVk
dWxlZFJ1bkxvb3BQYWlyczsKICAgICBWZWN0b3I8Rm9ybURhdGFFbGVtZW50PiByZW1haW5pbmdF
bGVtZW50czsgLy8gaW4gcmV2ZXJzZSBvcmRlcgotICAgIENGUmVhZFN0cmVhbVJlZiBjdXJyZW50
U3RyZWFtOwotICAgIGxvbmcgbG9uZyBjdXJyZW50U3RyZWFtUmFuZ2VMZW5ndGg7CisgICAgQ0ZS
ZWFkU3RyZWFtUmVmIGN1cnJlbnRTdHJlYW0geyBudWxscHRyIH07CisgICAgbG9uZyBsb25nIGN1
cnJlbnRTdHJlYW1SYW5nZUxlbmd0aCB7IEJsb2JEYXRhSXRlbTo6dG9FbmRPZkZpbGUgfTsKICAg
ICBNYWxsb2NQdHI8Y2hhcj4gY3VycmVudERhdGE7Ci0gICAgQ0ZSZWFkU3RyZWFtUmVmIGZvcm1T
dHJlYW07Ci0gICAgdW5zaWduZWQgbG9uZyBsb25nIHN0cmVhbUxlbmd0aDsKLSAgICB1bnNpZ25l
ZCBsb25nIGxvbmcgYnl0ZXNTZW50OworICAgIENGUmVhZFN0cmVhbVJlZiBmb3JtU3RyZWFtIHsg
bnVsbHB0ciB9OworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBzdHJlYW1MZW5ndGggeyAwIH07Cisg
ICAgdW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCB7IDAgfTsKICAgICBMb2NrIHN0cmVhbUlz
QmVpbmdPcGVuZWRPckNsb3NlZExvY2s7CiB9OwogCkBAIC0xNDUsMTUgKzE0OCwxMSBAQCBzdGF0
aWMgYm9vbCBhZHZhbmNlQ3VycmVudFN0cmVhbShGb3JtU3RyZWFtRmllbGRzKiBmb3JtKQogICAg
ICAgICAgICAgZm9ybS0+Y3VycmVudERhdGEgPSBXVEZNb3ZlKGRhdGEpOwogICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgIH0sIFtmb3JtXSAoY29uc3QgRm9ybURhdGFFbGVtZW50OjpF
bmNvZGVkRmlsZURhdGEmIGZpbGVEYXRhKSB7Ci0gICAgICAgICAgICAvLyBDaGVjayBpZiB0aGUg
ZmlsZSBoYXMgYmVlbiBjaGFuZ2VkIG9yIG5vdCBpZiByZXF1aXJlZC4KLSAgICAgICAgICAgIGlm
IChmaWxlRGF0YS5leHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lKSB7Ci0gICAgICAgICAgICAg
ICAgYXV0byBmaWxlTW9kaWZpY2F0aW9uVGltZSA9IEZpbGVTeXN0ZW06OmdldEZpbGVNb2RpZmlj
YXRpb25UaW1lKGZpbGVEYXRhLmZpbGVuYW1lKTsKLSAgICAgICAgICAgICAgICBpZiAoIWZpbGVN
b2RpZmljYXRpb25UaW1lKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgICAgICAgICAgaWYgKGZpbGVNb2RpZmljYXRpb25UaW1lLT5zZWNvbmRzU2luY2VFcG9jaCgp
LnNlY29uZHNBczx0aW1lX3Q+KCkgIT0gZmlsZURhdGEuZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9u
VGltZS0+c2Vjb25kc1NpbmNlRXBvY2goKS5zZWNvbmRzQXM8dGltZV90PigpKQotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBjb25z
dCBTdHJpbmcmIHBhdGggPSBmaWxlRGF0YS5zaG91bGRHZW5lcmF0ZUZpbGUgPyBmaWxlRGF0YS5n
ZW5lcmF0ZWRGaWxlbmFtZSA6IGZpbGVEYXRhLmZpbGVuYW1lOworICAgICAgICAgICAgLy8gQ2hl
Y2sgaWYgdGhlIGZpbGUgaGFzIGJlZW4gY2hhbmdlZC4KKyAgICAgICAgICAgIGlmICghZmlsZURh
dGEuZmlsZU1vZGlmaWNhdGlvblRpbWVNYXRjaGVzRXhwZWN0YXRpb24oKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgcGF0aCA9IGZp
bGVEYXRhLmZpbGVuYW1lOwogICAgICAgICAgICAgZm9ybS0+Y3VycmVudFN0cmVhbSA9IENGUmVh
ZFN0cmVhbUNyZWF0ZVdpdGhGaWxlKDAsIEZpbGVTeXN0ZW06OnBhdGhBc1VSTChwYXRoKS5nZXQo
KSk7CiAgICAgICAgICAgICBpZiAoIWZvcm0tPmN1cnJlbnRTdHJlYW0pIHsKICAgICAgICAgICAg
ICAgICAvLyBUaGUgZmlsZSBtdXN0IGhhdmUgYmVlbiByZW1vdmVkIG9yIGJlY29tZSB1bnJlYWRh
YmxlLgpAQCAtMjA4LDI0ICsyMDcsMjAgQEAgc3RhdGljIGJvb2wgb3Blbk5leHRTdHJlYW0oRm9y
bVN0cmVhbUZpZWxkcyogZm9ybSkKIHN0YXRpYyB2b2lkKiBmb3JtQ3JlYXRlKENGUmVhZFN0cmVh
bVJlZiBzdHJlYW0sIHZvaWQqIGNvbnRleHQpCiB7CiAgICAgRm9ybUNyZWF0aW9uQ29udGV4dCog
Zm9ybUNvbnRleHQgPSBzdGF0aWNfY2FzdDxGb3JtQ3JlYXRpb25Db250ZXh0Kj4oY29udGV4dCk7
Ci0KLSAgICBGb3JtU3RyZWFtRmllbGRzKiBuZXdJbmZvID0gbmV3IEZvcm1TdHJlYW1GaWVsZHM7
Ci0gICAgbmV3SW5mby0+Zm9ybURhdGEgPSBXVEZNb3ZlKGZvcm1Db250ZXh0LT5mb3JtRGF0YSk7
Ci0gICAgbmV3SW5mby0+Y3VycmVudFN0cmVhbSA9IDA7Ci0gICAgbmV3SW5mby0+Y3VycmVudFN0
cmVhbVJhbmdlTGVuZ3RoID0gQmxvYkRhdGFJdGVtOjp0b0VuZE9mRmlsZTsKKyAgICAKKyAgICBG
b3JtU3RyZWFtRmllbGRzKiBuZXdJbmZvID0gbmV3IEZvcm1TdHJlYW1GaWVsZHMoV1RGTW92ZShm
b3JtQ29udGV4dC0+ZGF0YSkpOwogICAgIG5ld0luZm8tPmZvcm1TdHJlYW0gPSBzdHJlYW07IC8v
IERvbid0IHJldGFpbi4gVGhhdCB3b3VsZCBjcmVhdGUgYSByZWZlcmVuY2UgY3ljbGUuCiAgICAg
bmV3SW5mby0+c3RyZWFtTGVuZ3RoID0gZm9ybUNvbnRleHQtPnN0cmVhbUxlbmd0aDsKLSAgICBu
ZXdJbmZvLT5ieXRlc1NlbnQgPSAwOwogICAgIAogICAgIGNhbGxPbk1haW5UaHJlYWQoW2Zvcm1D
b250ZXh0XSB7CiAgICAgICAgIGRlbGV0ZSBmb3JtQ29udGV4dDsKICAgICB9KTsKIAogICAgIC8v
IEFwcGVuZCBpbiByZXZlcnNlIG9yZGVyIHNpbmNlIHdlIHJlbW92ZSBlbGVtZW50cyBmcm9tIHRo
ZSBlbmQuCi0gICAgc2l6ZV90IHNpemUgPSBuZXdJbmZvLT5mb3JtRGF0YS0+ZWxlbWVudHMoKS5z
aXplKCk7CisgICAgc2l6ZV90IHNpemUgPSBuZXdJbmZvLT5kYXRhLmRhdGEoKS5lbGVtZW50cygp
LnNpemUoKTsKICAgICBuZXdJbmZvLT5yZW1haW5pbmdFbGVtZW50cy5yZXNlcnZlSW5pdGlhbENh
cGFjaXR5KHNpemUpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQotICAg
ICAgICBuZXdJbmZvLT5yZW1haW5pbmdFbGVtZW50cy51bmNoZWNrZWRBcHBlbmQobmV3SW5mby0+
Zm9ybURhdGEtPmVsZW1lbnRzKClbc2l6ZSAtIGkgLSAxXSk7CisgICAgICAgIG5ld0luZm8tPnJl
bWFpbmluZ0VsZW1lbnRzLnVuY2hlY2tlZEFwcGVuZChuZXdJbmZvLT5kYXRhLmRhdGEoKS5lbGVt
ZW50cygpW3NpemUgLSBpIC0gMV0pOwogCiAgICAgcmV0dXJuIG5ld0luZm87CiB9CkBAIC0zMTcs
NyArMzEyLDcgQEAgc3RhdGljIENGVHlwZVJlZiBmb3JtQ29weVByb3BlcnR5KENGUmVhZFN0cmVh
bVJlZiwgQ0ZTdHJpbmdSZWYgcHJvcGVydHlOYW1lLCB2b2kKICAgICBGb3JtU3RyZWFtRmllbGRz
KiBmb3JtID0gc3RhdGljX2Nhc3Q8Rm9ybVN0cmVhbUZpZWxkcyo+KGNvbnRleHQpOwogCiAgICAg
aWYgKGtDRkNvbXBhcmVFcXVhbFRvID09IENGU3RyaW5nQ29tcGFyZShwcm9wZXJ0eU5hbWUsIGZv
cm1EYXRhUG9pbnRlclByb3BlcnR5TmFtZSwgMCkpIHsKLSAgICAgICAgbG9uZyBsb25nIGZvcm1E
YXRhQXNOdW1iZXIgPSBzdGF0aWNfY2FzdDxsb25nIGxvbmc+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50
cHRyX3Q+KGZvcm0tPmZvcm1EYXRhLmdldCgpKSk7CisgICAgICAgIGxvbmcgbG9uZyBmb3JtRGF0
YUFzTnVtYmVyID0gc3RhdGljX2Nhc3Q8bG9uZyBsb25nPihyZWludGVycHJldF9jYXN0PGludHB0
cl90PigmZm9ybS0+ZGF0YS5kYXRhKCkpKTsKICAgICAgICAgcmV0dXJuIENGTnVtYmVyQ3JlYXRl
KDAsIGtDRk51bWJlckxvbmdMb25nVHlwZSwgJmZvcm1EYXRhQXNOdW1iZXIpOwogICAgIH0KIApA
QCAtMzc4LDEzICszNzMsMTQgQEAgc3RhdGljIHZvaWQgZm9ybUV2ZW50Q2FsbGJhY2soQ0ZSZWFk
U3RyZWFtUmVmIHN0cmVhbSwgQ0ZTdHJlYW1FdmVudFR5cGUgdHlwZSwgdm8KIFJldGFpblB0cjxD
RlJlYWRTdHJlYW1SZWY+IGNyZWF0ZUhUVFBCb2R5Q0ZSZWFkU3RyZWFtKEZvcm1EYXRhJiBmb3Jt
RGF0YSkKIHsKICAgICBhdXRvIHJlc29sdmVkRm9ybURhdGEgPSBmb3JtRGF0YS5yZXNvbHZlQmxv
YlJlZmVyZW5jZXMoYmxvYlJlZ2lzdHJ5KCkpOworICAgIGF1dG8gZGF0YUZvclVwbG9hZCA9IHJl
c29sdmVkRm9ybURhdGEtPnByZXBhcmVGb3JVcGxvYWQoKTsKIAogICAgIC8vIFByZWNvbXB1dGUg
dGhlIGNvbnRlbnQgbGVuZ3RoIHNvIENGTmV0d29yayBkb2Vzbid0IHVzZSBjaHVua2VkIG1vZGUu
CiAgICAgdW5zaWduZWQgbG9uZyBsb25nIGxlbmd0aCA9IDA7Ci0gICAgZm9yIChhdXRvJiBlbGVt
ZW50IDogcmVzb2x2ZWRGb3JtRGF0YS0+ZWxlbWVudHMoKSkKKyAgICBmb3IgKGF1dG8mIGVsZW1l
bnQgOiBkYXRhRm9yVXBsb2FkLmRhdGEoKS5lbGVtZW50cygpKQogICAgICAgICBsZW5ndGggKz0g
ZWxlbWVudC5sZW5ndGhJbkJ5dGVzKCk7CiAKLSAgICBGb3JtQ3JlYXRpb25Db250ZXh0KiBmb3Jt
Q29udGV4dCA9IG5ldyBGb3JtQ3JlYXRpb25Db250ZXh0IHsgV1RGTW92ZShyZXNvbHZlZEZvcm1E
YXRhKSwgbGVuZ3RoIH07CisgICAgRm9ybUNyZWF0aW9uQ29udGV4dCogZm9ybUNvbnRleHQgPSBu
ZXcgRm9ybUNyZWF0aW9uQ29udGV4dCB7IFdURk1vdmUoZGF0YUZvclVwbG9hZCksIGxlbmd0aCB9
OwogICAgIENGUmVhZFN0cmVhbUNhbGxCYWNrc1YxIGNhbGxCYWNrcyA9IHsgMSwgZm9ybUNyZWF0
ZSwgZm9ybUZpbmFsaXplLCBudWxscHRyLCBmb3JtT3BlbiwgbnVsbHB0ciwgZm9ybVJlYWQsIG51
bGxwdHIsIGZvcm1DYW5SZWFkLCBmb3JtQ2xvc2UsIGZvcm1Db3B5UHJvcGVydHksIG51bGxwdHIs
IG51bGxwdHIsIGZvcm1TY2hlZHVsZSwgZm9ybVVuc2NoZWR1bGUgfTsKICAgICByZXR1cm4gYWRv
cHRDRihDRlJlYWRTdHJlYW1DcmVhdGUobnVsbHB0ciwgc3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+
KCZjYWxsQmFja3MpLCBmb3JtQ29udGV4dCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQmxvYkRhdGFGaWxlUmVmZXJlbmNlTWFjLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQmxvYkRhdGFGaWxlUmVmZXJlbmNlTWFj
Lm1tCmluZGV4IGI2OTI5MjBiMjFmYzY2MzlkNTc0NWQxYzA0NGU4Yjc4NzgyMzUwZDAuLjExNGJi
ZDA1YTE1ZTYzMWIwZjliYmQzZmQyZjBlMTQyOTc2NmNlZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZU1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9CbG9iRGF0YUZpbGVSZWZl
cmVuY2VNYWMubW0KQEAgLTMwLDI1ICszMCw4IEBACiAKICNpbmNsdWRlIDx3dGYvRmlsZU1ldGFk
YXRhLmg+CiAjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KLSNpbmNsdWRlIDx3dGYvU29mdExp
bmtpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKLSNpZiBVU0UoQVBQTEVf
SU5URVJOQUxfU0RLKQotI2luY2x1ZGUgPEJvbS9CT01Db3BpZXIuaD4KLSNlbmRpZgotCi10eXBl
ZGVmIHN0cnVjdCBfQk9NQ29waWVyKiBCT01Db3BpZXI7Ci0KLVNPRlRfTElOS19QUklWQVRFX0ZS
QU1FV09SSyhCb20pCi1TT0ZUX0xJTksoQm9tLCBCT01Db3BpZXJOZXcsIEJPTUNvcGllciwgKCks
ICgpKQotU09GVF9MSU5LKEJvbSwgQk9NQ29waWVyRnJlZSwgdm9pZCwgKEJPTUNvcGllciBjb3Bp
ZXIpLCAoY29waWVyKSkKLVNPRlRfTElOSyhCb20sIEJPTUNvcGllckNvcHlXaXRoT3B0aW9ucywg
aW50LCAoQk9NQ29waWVyIGNvcGllciwgY29uc3QgY2hhciogZnJvbU9iaiwgY29uc3QgY2hhciog
dG9PYmosIENGRGljdGlvbmFyeVJlZiBvcHRpb25zKSwgKGNvcGllciwgZnJvbU9iaiwgdG9PYmos
IG9wdGlvbnMpKQotCi0jZGVmaW5lIGtCT01Db3BpZXJPcHRpb25DcmVhdGVQS1ppcEtleSBDRlNU
UigiY3JlYXRlUEtaaXAiKQotI2RlZmluZSBrQk9NQ29waWVyT3B0aW9uU2VxdWVzdGVyUmVzb3Vy
Y2VzS2V5IENGU1RSKCJzZXF1ZXN0ZXJSZXNvdXJjZXMiKQotI2RlZmluZSBrQk9NQ29waWVyT3B0
aW9uS2VlcFBhcmVudEtleSBDRlNUUigia2VlcFBhcmVudCIpCi0jZGVmaW5lIGtCT01Db3BpZXJP
cHRpb25Db3B5UmVzb3VyY2VzS2V5IENGU1RSKCJjb3B5UmVzb3VyY2VzIikKLQogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiB2b2lkIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6Z2VuZXJhdGVSZXBsYWNl
bWVudEZpbGUoKQpAQCAtNTgsMjUgKzQxLDkgQEAgdm9pZCBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6
OmdlbmVyYXRlUmVwbGFjZW1lbnRGaWxlKCkKIAogICAgIHByZXBhcmVGb3JGaWxlQWNjZXNzKCk7
CiAKLSAgICBSZXRhaW5QdHI8TlNGaWxlQ29vcmRpbmF0b3I+IGNvb3JkaW5hdG9yID0gYWRvcHRO
UyhbW05TRmlsZUNvb3JkaW5hdG9yIGFsbG9jXSBpbml0V2l0aEZpbGVQcmVzZW50ZXI6bmlsXSk7
Ci0gICAgW2Nvb3JkaW5hdG9yIGNvb3JkaW5hdGVSZWFkaW5nSXRlbUF0VVJMOltOU1VSTCBmaWxl
VVJMV2l0aFBhdGg6bV9wYXRoXSBvcHRpb25zOk5TRmlsZUNvb3JkaW5hdG9yUmVhZGluZ1dpdGhv
dXRDaGFuZ2VzIGVycm9yOm51bGxwdHIgYnlBY2Nlc3NvcjpeKE5TVVJMICpuZXdVUkwpIHsKLSAg
ICAgICAgLy8gVGhlIGFyY2hpdmUgaXMgcHV0IGludG8gYSBzdWJkaXJlY3Rvcnkgb2YgdGVtcG9y
YXJ5IGRpcmVjdG9yeSBmb3IgaGlzdG9yaWMgcmVhc29ucy4gQ2hhbmdpbmcgdGhpcyB3aWxsIHJl
cXVpcmUgV2ViQ29yZSB0byBjaGFuZ2UgYXQgdGhlIHNhbWUgdGltZS4KLSAgICAgICAgQ1N0cmlu
ZyBhcmNoaXZlUGF0aChbTlNUZW1wb3JhcnlEaXJlY3RvcnkoKSBzdHJpbmdCeUFwcGVuZGluZ1Bh
dGhDb21wb25lbnQ6QCJXZWJLaXRHZW5lcmF0ZWRGaWxlWFhYWFhYIl0uZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKTsKLSAgICAgICAgaWYgKG1rc3RlbXAoYXJjaGl2ZVBhdGgubXV0YWJsZURhdGEo
KSkgPT0gLTEpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgTlNEaWN0aW9uYXJ5ICpv
cHRpb25zID0gQHsKLSAgICAgICAgICAgIChfX2JyaWRnZSBpZClrQk9NQ29waWVyT3B0aW9uQ3Jl
YXRlUEtaaXBLZXkgOiBAWUVTLAotICAgICAgICAgICAgKF9fYnJpZGdlIGlkKWtCT01Db3BpZXJP
cHRpb25TZXF1ZXN0ZXJSZXNvdXJjZXNLZXkgOiBAWUVTLAotICAgICAgICAgICAgKF9fYnJpZGdl
IGlkKWtCT01Db3BpZXJPcHRpb25LZWVwUGFyZW50S2V5IDogQFlFUywKLSAgICAgICAgICAgIChf
X2JyaWRnZSBpZClrQk9NQ29waWVyT3B0aW9uQ29weVJlc291cmNlc0tleSA6IEBZRVMsCi0gICAg
ICAgIH07Ci0KLSAgICAgICAgQk9NQ29waWVyIGNvcGllciA9IEJPTUNvcGllck5ldygpOwotICAg
ICAgICBpZiAoIUJPTUNvcGllckNvcHlXaXRoT3B0aW9ucyhjb3BpZXIsIG5ld1VSTC5wYXRoLmZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbiwgYXJjaGl2ZVBhdGguZGF0YSgpLCAoX19icmlkZ2UgQ0ZE
aWN0aW9uYXJ5UmVmKW9wdGlvbnMpKQotICAgICAgICAgICAgbV9yZXBsYWNlbWVudFBhdGggPSBT
dHJpbmc6OmZyb21VVEY4KGFyY2hpdmVQYXRoKTsKLSAgICAgICAgQk9NQ29waWVyRnJlZShjb3Bp
ZXIpOwotICAgIH1dOworICAgIGF1dG8gZ2VuZXJhdGVkRmlsZSA9IEZpbGVTeXN0ZW06OmNyZWF0
ZVRlbXBvcmFyeVppcEFyY2hpdmUobV9wYXRoKTsKKyAgICBpZiAoIWdlbmVyYXRlZEZpbGUuaXNO
dWxsKCkpCisgICAgICAgIG1fcmVwbGFjZW1lbnRQYXRoID0gV1RGTW92ZShnZW5lcmF0ZWRGaWxl
KTsKIAogICAgIG1fcmVwbGFjZW1lbnRTaG91bGRCZUdlbmVyYXRlZCA9IGZhbHNlOwogICAgIGlm
ICghbV9yZXBsYWNlbWVudFBhdGguaXNOdWxsKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJl
cXVlc3QuY3BwCmluZGV4IDVjNjQ3NGZmNDdmNmQwMmFkY2JkYTI5ZWNhZDU2NGY0YjQ2YjMwMjgu
LjA0MjgwMzM3ZjE4MWM2MDQ0MGE5MDU5YmMwYTI1ZDg1Y2UzZjA2ZGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
eG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApAQCAtNTMzLDggKzUzMyw3IEBAIEV4Y2VwdGlvbk9yPHZv
aWQ+IFhNTEh0dHBSZXF1ZXN0OjpzZW5kKERPTUZvcm1EYXRhJiBib2R5KQogICAgICAgICByZXR1
cm4gV1RGTW92ZShyZXN1bHQudmFsdWUoKSk7CiAKICAgICBpZiAobV9tZXRob2QgIT0gIkdFVCIg
JiYgbV9tZXRob2QgIT0gIkhFQUQiKSB7Ci0gICAgICAgIG1fcmVxdWVzdEVudGl0eUJvZHkgPSBG
b3JtRGF0YTo6Y3JlYXRlTXVsdGlQYXJ0KGJvZHksIGRvY3VtZW50KCkpOwotICAgICAgICBtX3Jl
cXVlc3RFbnRpdHlCb2R5LT5nZW5lcmF0ZUZpbGVzKGRvY3VtZW50KCkpOworICAgICAgICBtX3Jl
cXVlc3RFbnRpdHlCb2R5ID0gRm9ybURhdGE6OmNyZWF0ZU11bHRpUGFydChib2R5KTsKICAgICAg
ICAgaWYgKCFtX3JlcXVlc3RIZWFkZXJzLmNvbnRhaW5zKEhUVFBIZWFkZXJOYW1lOjpDb250ZW50
VHlwZSkpCiAgICAgICAgICAgICBtX3JlcXVlc3RIZWFkZXJzLnNldChIVFRQSGVhZGVyTmFtZTo6
Q29udGVudFR5cGUsIG1ha2VTdHJpbmcoIm11bHRpcGFydC9mb3JtLWRhdGE7IGJvdW5kYXJ5PSIs
IG1fcmVxdWVzdEVudGl0eUJvZHktPmJvdW5kYXJ5KCkuZGF0YSgpKSk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFy
YW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRQYXJhbWV0ZXJzLmNwcAppbmRleCAwZTQ0NTk0Yjg5ZTY2NjQ4OWFmZjEyOGY4YzUxYzBj
NmMxYWNlMjQ5Li5iZjhhMGE2OGQ3M2JhMjRmZGYzYzE1MDhlYzdkYjBkMTVkZTQxN2JkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQ
YXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcApAQCAtNTcsNyArNTcsNyBAQCB2b2lkIE5ldHdvcmtS
ZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25z
dAogICAgICAgICBmb3IgKHNpemVfdCBpID0gMCwgY291bnQgPSBlbGVtZW50cy5zaXplKCk7IGkg
PCBjb3VudDsgKytpKSB7CiAgICAgICAgICAgICBjb25zdCBGb3JtRGF0YUVsZW1lbnQmIGVsZW1l
bnQgPSBlbGVtZW50c1tpXTsKICAgICAgICAgICAgIGlmIChhdXRvKiBmaWxlRGF0YSA9IFdURjo6
Z2V0X2lmPEZvcm1EYXRhRWxlbWVudDo6RW5jb2RlZEZpbGVEYXRhPihlbGVtZW50LmRhdGEpKSB7
Ci0gICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBwYXRoID0gZmlsZURhdGEtPnNob3VsZEdl
bmVyYXRlRmlsZSA/IGZpbGVEYXRhLT5nZW5lcmF0ZWRGaWxlbmFtZSA6IGZpbGVEYXRhLT5maWxl
bmFtZTsKKyAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHBhdGggPSBmaWxlRGF0YS0+Zmls
ZW5hbWU7CiAgICAgICAgICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKHBh
dGgsIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRPbmx5LCByZXF1ZXN0Qm9keVNhbmRib3hF
eHRlbnNpb25zW2V4dGVuc2lvbkluZGV4KytdKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRm9ybURhdGFSZWZlcmVuY2Uu
aCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Zvcm1EYXRhUmVmZXJlbmNlLmgKaW5kZXgg
OGEzOTVhNjU3MTNhMTlhMzJlMzNkZjhkNmM4OWM5M2E2ODRjMDYzNS4uYmM0OTdjNjIzNWZkMWU1
MjhiMjNhYjU0MDIzMGUwNDBhZDYxMmRiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvRm9ybURhdGFSZWZlcmVuY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9Gb3JtRGF0YVJlZmVyZW5jZS5oCkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICAg
ICAgc2l6ZV90IGV4dGVuc2lvbkluZGV4ID0gMDsKICAgICAgICAgZm9yIChhdXRvJiBlbGVtZW50
IDogZWxlbWVudHMpIHsKICAgICAgICAgICAgIGlmIChhdXRvKiBmaWxlRGF0YSA9IFdURjo6Z2V0
X2lmPFdlYkNvcmU6OkZvcm1EYXRhRWxlbWVudDo6RW5jb2RlZEZpbGVEYXRhPihlbGVtZW50LmRh
dGEpKSB7Ci0gICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBwYXRoID0gZmlsZURhdGEtPnNo
b3VsZEdlbmVyYXRlRmlsZSA/IGZpbGVEYXRhLT5nZW5lcmF0ZWRGaWxlbmFtZSA6IGZpbGVEYXRh
LT5maWxlbmFtZTsKKyAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHBhdGggPSBmaWxlRGF0
YS0+ZmlsZW5hbWU7CiAgICAgICAgICAgICAgICAgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpj
cmVhdGVIYW5kbGUocGF0aCwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkT25s
eSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZXNbZXh0ZW5zaW9uSW5kZXgrK10pOwogICAgICAgICAg
ICAgfQogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Jlc291cmNlcy9TYW5k
Ym94UHJvZmlsZXMvaW9zL2NvbS5hcHBsZS5XZWJLaXQuTmV0d29ya2luZy5zYiBiL1NvdXJjZS9X
ZWJLaXQvUmVzb3VyY2VzL1NhbmRib3hQcm9maWxlcy9pb3MvY29tLmFwcGxlLldlYktpdC5OZXR3
b3JraW5nLnNiCmluZGV4IDgwNzE2ZWM2NDM0OGJmYjQ0OGVkZTY3NjJkNGMwZGQ5YzE5Y2RmN2Yu
LmI2ZDFiMTg1YTRiMzljMjc0Y2M2MWI3NDg3ZjhiZmNkMjE4ZDQzYzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvUmVzb3VyY2VzL1NhbmRib3hQcm9maWxlcy9pb3MvY29tLmFwcGxlLldlYktp
dC5OZXR3b3JraW5nLnNiCisrKyBiL1NvdXJjZS9XZWJLaXQvUmVzb3VyY2VzL1NhbmRib3hQcm9m
aWxlcy9pb3MvY29tLmFwcGxlLldlYktpdC5OZXR3b3JraW5nLnNiCkBAIC04Myw2ICs4Myw3IEBA
CiAgICAgKGdsb2JhbC1uYW1lICJjb20uYXBwbGUucGFzc2QubGlicmFyeSIpKQogCiAoYWxsb3cg
bWFjaC1sb29rdXAKKyAgICAoZ2xvYmFsLW5hbWUgImNvbS5hcHBsZS5GaWxlQ29vcmRpbmF0aW9u
IikKICAgICAoZ2xvYmFsLW5hbWUgImNvbS5hcHBsZS5kbWQucG9saWN5IikKICAgICAoZ2xvYmFs
LW5hbWUgImNvbS5hcHBsZS5zaXJpLmNvbnRleHQuc2VydmljZSIpCiAgICAgKGdsb2JhbC1uYW1l
ICJjb20uYXBwbGUuY3RjYXRlZ29yaWVzLnNlcnZpY2UiKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVQYWdl
VUlDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
QVBJSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQuaAppbmRleCBlYWNhM2U3MTYzZjJhOGM3OTI1
Zjc5M2M0OGUwZDNmOTc3YjdhOTc5Li45NWY0MzgyYjUyYzFhNWY3MDg0OGY5M2MzODk1YjY5NDNl
ZGFlNzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL0FQSUluamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZVBhZ2VVSUNs
aWVudC5oCkBAIC01OCw5ICs1OCw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgbW91c2VE
aWRNb3ZlT3ZlckVsZW1lbnQoV2ViS2l0OjpXZWJQYWdlKiwgY29uc3QgV2ViQ29yZTo6SGl0VGVz
dFJlc3VsdCYsIE9wdGlvblNldDxXZWJLaXQ6OldlYkV2ZW50OjpNb2RpZmllcj4sIFJlZlB0cjxB
UEk6Ok9iamVjdD4mIHVzZXJEYXRhKSB7IFVOVVNFRF9QQVJBTSh1c2VyRGF0YSk7IH0KICAgICB2
aXJ0dWFsIHZvaWQgcGFnZURpZFNjcm9sbChXZWJLaXQ6OldlYlBhZ2UqKSB7IH0KIAotICAgIHZp
cnR1YWwgV1RGOjpTdHJpbmcgc2hvdWxkR2VuZXJhdGVGaWxlRm9yVXBsb2FkKFdlYktpdDo6V2Vi
UGFnZSosIGNvbnN0IFdURjo6U3RyaW5nJiBvcmlnaW5hbEZpbGVQYXRoKSB7IFVOVVNFRF9QQVJB
TShvcmlnaW5hbEZpbGVQYXRoKTsgcmV0dXJuIFdURjo6U3RyaW5nKCk7IH0KLSAgICB2aXJ0dWFs
IFdURjo6U3RyaW5nIGdlbmVyYXRlRmlsZUZvclVwbG9hZChXZWJLaXQ6OldlYlBhZ2UqLCBjb25z
dCBXVEY6OlN0cmluZyYgb3JpZ2luYWxGaWxlUGF0aCkgeyBVTlVTRURfUEFSQU0ob3JpZ2luYWxG
aWxlUGF0aCk7IHJldHVybiBlbXB0eVN0cmluZygpOyB9Ci0KICAgICBlbnVtIGNsYXNzIFVJRWxl
bWVudFZpc2liaWxpdHkgewogICAgICAgICBVbmtub3duLAogICAgICAgICBWaXNpYmxlLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlUGFnZVVJQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5jcHAKaW5kZXggNTg2MzNkOTc2MTgy
Zjc0NDYyN2FlMDU2N2VlY2ZhMjM0MTQzOWZiNi4uM2ZmYjgwMzc1ZjI0NzMwNzRmMjc3MzY5NTBh
MWUyOGU1ZWEzZDEwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQu
Y3BwCkBAIC05MywyMiArOTMsNiBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50Ojpw
YWdlRGlkU2Nyb2xsKFdlYlBhZ2UqIHBhZ2UpCiAgICAgbV9jbGllbnQucGFnZURpZFNjcm9sbCh0
b0FQSShwYWdlKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKIH0KIAotU3RyaW5nIEluamVj
dGVkQnVuZGxlUGFnZVVJQ2xpZW50OjpzaG91bGRHZW5lcmF0ZUZpbGVGb3JVcGxvYWQoV2ViUGFn
ZSogcGFnZSwgY29uc3QgU3RyaW5nJiBvcmlnaW5hbEZpbGVQYXRoKQotewotICAgIGlmICghbV9j
bGllbnQuc2hvdWxkR2VuZXJhdGVGaWxlRm9yVXBsb2FkKQotICAgICAgICByZXR1cm4gU3RyaW5n
KCk7Ci0gICAgUmVmUHRyPEFQSTo6U3RyaW5nPiBnZW5lcmF0ZWRGaWxlUGF0aCA9IGFkb3B0UmVm
KHRvSW1wbChtX2NsaWVudC5zaG91bGRHZW5lcmF0ZUZpbGVGb3JVcGxvYWQodG9BUEkocGFnZSks
IHRvQVBJKG9yaWdpbmFsRmlsZVBhdGguaW1wbCgpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZv
KSkpOwotICAgIHJldHVybiBnZW5lcmF0ZWRGaWxlUGF0aCA/IGdlbmVyYXRlZEZpbGVQYXRoLT5z
dHJpbmcoKSA6IFN0cmluZygpOwotfQotCi1TdHJpbmcgSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGll
bnQ6OmdlbmVyYXRlRmlsZUZvclVwbG9hZChXZWJQYWdlKiBwYWdlLCBjb25zdCBTdHJpbmcmIG9y
aWdpbmFsRmlsZVBhdGgpCi17Ci0gICAgaWYgKCFtX2NsaWVudC5nZW5lcmF0ZUZpbGVGb3JVcGxv
YWQpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICBSZWZQdHI8QVBJOjpTdHJpbmc+IGdl
bmVyYXRlZEZpbGVQYXRoID0gYWRvcHRSZWYodG9JbXBsKG1fY2xpZW50LmdlbmVyYXRlRmlsZUZv
clVwbG9hZCh0b0FQSShwYWdlKSwgdG9BUEkob3JpZ2luYWxGaWxlUGF0aC5pbXBsKCkpLCBtX2Ns
aWVudC5iYXNlLmNsaWVudEluZm8pKSk7Ci0gICAgcmV0dXJuIGdlbmVyYXRlZEZpbGVQYXRoID8g
Z2VuZXJhdGVkRmlsZVBhdGgtPnN0cmluZygpIDogU3RyaW5nKCk7Ci19Ci0KIHN0YXRpYyBBUEk6
OkluamVjdGVkQnVuZGxlOjpQYWdlVUlDbGllbnQ6OlVJRWxlbWVudFZpc2liaWxpdHkgdG9VSUVs
ZW1lbnRWaXNpYmlsaXR5KFdLQnVuZGxlUGFnZVVJRWxlbWVudFZpc2liaWxpdHkgdmlzaWJpbGl0
eSkKIHsKICAgICBzd2l0Y2ggKHZpc2liaWxpdHkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
UGFnZVVJQ2xpZW50LmgKaW5kZXggNTlmMWIxY2NhYzE2MGI3MTYyNTM4MmRjMmRmNWQyMmRkMGQw
NGQ2MS4uNjI3ODQ0YjlhNGE2YmQ1ODNjYjUzZmU3NDU2YTM3NGRkZDA2N2U4NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
UGFnZVVJQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50LmgKQEAgLTU0LDkgKzU0LDYgQEAgcHVibGlj
OgogICAgIHZvaWQgbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoV2ViUGFnZSosIGNvbnN0IFdlYkNv
cmU6OkhpdFRlc3RSZXN1bHQmLCBPcHRpb25TZXQ8V2ViRXZlbnQ6Ok1vZGlmaWVyPiwgUmVmUHRy
PEFQSTo6T2JqZWN0PiYgdXNlckRhdGEpIG92ZXJyaWRlOwogICAgIHZvaWQgcGFnZURpZFNjcm9s
bChXZWJQYWdlKikgb3ZlcnJpZGU7CiAKLSAgICBTdHJpbmcgc2hvdWxkR2VuZXJhdGVGaWxlRm9y
VXBsb2FkKFdlYlBhZ2UqLCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsRmlsZVBhdGgpIG92ZXJyaWRl
OwotICAgIFN0cmluZyBnZW5lcmF0ZUZpbGVGb3JVcGxvYWQoV2ViUGFnZSosIGNvbnN0IFN0cmlu
ZyYgb3JpZ2luYWxGaWxlUGF0aCkgb3ZlcnJpZGU7Ci0gICAgCiAgICAgVUlFbGVtZW50VmlzaWJp
bGl0eSBzdGF0dXNCYXJJc1Zpc2libGUoV2ViUGFnZSopIG92ZXJyaWRlOwogICAgIFVJRWxlbWVu
dFZpc2liaWxpdHkgbWVudUJhcklzVmlzaWJsZShXZWJQYWdlKikgb3ZlcnJpZGU7CiAgICAgVUlF
bGVtZW50VmlzaWJpbGl0eSB0b29sYmFyc0FyZVZpc2libGUoV2ViUGFnZSopIG92ZXJyaWRlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmNwcAppbmRleCAxYTAyNGY3MTAxNTk2Nzc1ZWQ4NDE5YmE1NjEwMjNm
ZDgwYjYwNDAzLi4zYzg3MmY1YWRmMzliZWFjZDNhNzA2NjdiMjY4OWQzOGM5YjExMTJlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmNwcApAQCAtNzg5LDE3ICs3ODksNiBAQCB2b2lkIFdlYkNocm9tZUNs
aWVudDo6cmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShTZWN1cml0eU9yaWdpbiYg
b3JpZ2luLAogICAgIGNhY2hlU3RvcmFnZS5zdG9yZVVwZGF0ZWRRdW90YUZvck9yaWdpbigmb3Jp
Z2luLCBuZXdRdW90YSk7CiB9CiAKLWJvb2wgV2ViQ2hyb21lQ2xpZW50OjpzaG91bGRSZXBsYWNl
V2l0aEdlbmVyYXRlZEZpbGVGb3JVcGxvYWQoY29uc3QgU3RyaW5nJiBwYXRoLCBTdHJpbmcmIGdl
bmVyYXRlZEZpbGVuYW1lKQotewotICAgIGdlbmVyYXRlZEZpbGVuYW1lID0gbV9wYWdlLmluamVj
dGVkQnVuZGxlVUlDbGllbnQoKS5zaG91bGRHZW5lcmF0ZUZpbGVGb3JVcGxvYWQoJm1fcGFnZSwg
cGF0aCk7Ci0gICAgcmV0dXJuICFnZW5lcmF0ZWRGaWxlbmFtZS5pc051bGwoKTsKLX0KLQotU3Ry
aW5nIFdlYkNocm9tZUNsaWVudDo6Z2VuZXJhdGVSZXBsYWNlbWVudEZpbGUoY29uc3QgU3RyaW5n
JiBwYXRoKQotewotICAgIHJldHVybiBtX3BhZ2UuaW5qZWN0ZWRCdW5kbGVVSUNsaWVudCgpLmdl
bmVyYXRlRmlsZUZvclVwbG9hZCgmbV9wYWdlLCBwYXRoKTsKLX0KLQogI2lmIEVOQUJMRShJTlBV
VF9UWVBFX0NPTE9SKQogCiBzdGQ6OnVuaXF1ZV9wdHI8Q29sb3JDaG9vc2VyPiBXZWJDaHJvbWVD
bGllbnQ6OmNyZWF0ZUNvbG9yQ2hvb3NlcihDb2xvckNob29zZXJDbGllbnQmIGNsaWVudCwgY29u
c3QgQ29sb3ImIGluaXRpYWxDb2xvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCBhZmI1ZjdlNGIz
YzUzZGFiNDU1NzM4ZDFjNmZjMTU1ODQzNjIzMjk5Li5jZWQzNmE2YzI1YjdlNGY4MzQ0YTU4OTk0
MDA2NzkxZjdjYzkyNzZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC0xNDIsOSArMTQyLDYgQEAg
cHJpdmF0ZToKIAogICAgIHZvaWQgcmVhY2hlZE1heEFwcENhY2hlU2l6ZShpbnQ2NF90IHNwYWNl
TmVlZGVkKSBmaW5hbDsKICAgICB2b2lkIHJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVv
dGEoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mLCBpbnQ2NF90IHNwYWNlTmVlZGVkKSBmaW5hbDsK
LQotICAgIGJvb2wgc2hvdWxkUmVwbGFjZVdpdGhHZW5lcmF0ZWRGaWxlRm9yVXBsb2FkKGNvbnN0
IFN0cmluZyYgcGF0aCwgU3RyaW5nJiBnZW5lcmF0ZWRGaWxlbmFtZSkgZmluYWw7Ci0gICAgU3Ry
aW5nIGdlbmVyYXRlUmVwbGFjZW1lbnRGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCkgZmluYWw7CiAg
ICAgCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdl
YkNvcmU6OkNvbG9yQ2hvb3Nlcj4gY3JlYXRlQ29sb3JDaG9vc2VyKFdlYkNvcmU6OkNvbG9yQ2hv
b3NlckNsaWVudCYsIGNvbnN0IFdlYkNvcmU6OkNvbG9yJikgZmluYWw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29tLmFwcGxlLldlYlByb2Nlc3Muc2IuaW4gYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvY29tLmFwcGxlLldlYlByb2Nlc3Muc2IuaW4KaW5kZXggZGZk
NGJkOTNkMGMzODk1YjIxMjNlN2Q0Y2JmMzFiYWYyNzE1NTYzOC4uMzk0ZDVhMjQxMTJhZmQ2MzU2
MGZmZWU3Y2UwY2QzYTJmNzNhNGVmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL2NvbS5hcHBsZS5XZWJQcm9jZXNzLnNiLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9jb20uYXBwbGUuV2ViUHJvY2Vzcy5zYi5pbgpAQCAtNTg3LDkgKzU4Nyw2IEBACiAoYWxs
b3cgbWFjaC1sb29rdXAKICAgICAgICAoZ2xvYmFsLW5hbWUgImNvbS5hcHBsZS53ZWJpbnNwZWN0
b3IiKSkKIAotKGFsbG93IG1hY2gtbG9va3VwCi0gICAgKGdsb2JhbC1uYW1lICJjb20uYXBwbGUu
RmlsZUNvb3JkaW5hdGlvbiIpKQotCiA7OyBWYXJpb3VzIHNlcnZpY2VzIHJlcXVpcmVkIGJ5IEFw
cEtpdCBhbmQgb3RoZXIgZnJhbWV3b3JrcwogKGFsbG93IG1hY2gtbG9va3VwCiAjaWYgX19NQUNf
T1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEwMTQwMApAQCAtOTc4LDE4ICs5NzUsOSBAQAog
ICAgICAgICAoc3lzY2FsbC1udW1iZXIgU1lTX3N0YXQ2NF9leHRlbmRlZCkgOzsgPHJkYXI6Ly9w
cm9ibGVtLzUwNDczMzMwPgogICAgICAgICAoc3lzY2FsbC1udW1iZXIgU1lTX2xzdGF0X2V4dGVu
ZGVkKQogICAgICAgICAoc3lzY2FsbC1udW1iZXIgU1lTX2xzdGF0NjRfZXh0ZW5kZWQpCi0gICAg
ICAgIChzeXNjYWxsLW51bWJlciBTWVNfaW9wb2xpY3lzeXMpCi0gICAgICAgIChzeXNjYWxsLW51
bWJlciBTWVNfd29ya3Ffb3BlbikKLSAgICAgICAgKHN5c2NhbGwtbnVtYmVyIFNZU19nZXRncm91
cHMpCiAgICAgICAgIChzeXNjYWxsLW51bWJlciBTWVNfZmdldGF0dHJsaXN0KSA7OyA8cmRhcjov
L3Byb2JsZW0vNTA5MzExMTA+CiAgICAgICAgIChzeXNjYWxsLW51bWJlciBTWVNfa3F1ZXVlKSA7
OyA8cmRhcjovL3Byb2JsZW0vNDk2MDkyMDE+CiAgICAgICAgIChzeXNjYWxsLW51bWJlciBTWVNf
a3F1ZXVlX3dvcmtsb29wX2N0bCkgOzsgPHJkYXI6Ly9wcm9ibGVtLzUwOTk5NDk5PgotICAgICAg
ICAoc3lzY2FsbC1udW1iZXIgU1lTX29wZW5fZHByb3RlY3RlZF9ucCkKLSAgICAgICAgKHN5c2Nh
bGwtbnVtYmVyIFNZU19mbGlzdHhhdHRyKQotICAgICAgICAoc3lzY2FsbC1udW1iZXIgU1lTX2Zz
ZXRhdHRybGlzdCkKLSAgICAgICAgKHN5c2NhbGwtbnVtYmVyIFNZU19mY2hvd24pCi0gICAgICAg
IChzeXNjYWxsLW51bWJlciBTWVNfZmNoZmxhZ3MpCi0gICAgICAgIChzeXNjYWxsLW51bWJlciBT
WVNfZnN0YXQ2NF9leHRlbmRlZCkKICAgICApCiApCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RlZmF1bHREZWxlZ2F0ZXMvV2ViRGVmYXVsdFVJRGVsZWdhdGUubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9EZWZhdWx0RGVsZWdhdGVzL1dlYkRlZmF1bHRVSURlbGVn
YXRlLm1tCmluZGV4IDM1OGFhNjlmYTRjMGQ1OTY2ODljODYxMWE0MWMyZTc5YzlhZDVmM2QuLjU1
MjAxYTY1ZDcxNGU3ZGEwMWRiOTI2NzM3MTAyNzFkYjljNWY3NWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RlZmF1bHREZWxlZ2F0ZXMvV2ViRGVmYXVsdFVJRGVsZWdhdGUu
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRGVmYXVsdERlbGVnYXRlcy9XZWJEZWZh
dWx0VUlEZWxlZ2F0ZS5tbQpAQCAtMjU2LDE2ICsyNTYsNiBAQCBzdGF0aWMgV2ViRGVmYXVsdFVJ
RGVsZWdhdGUgKnNoYXJlZERlbGVnYXRlID0gbmlsOwogewogfQogCi0tIChCT09MKXdlYlZpZXc6
KFdlYlZpZXcgKilzZW5kZXIgc2hvdWxkUmVwbGFjZVVwbG9hZEZpbGU6KE5TU3RyaW5nICopcGF0
aCB1c2luZ0dlbmVyYXRlZEZpbGVuYW1lOihOU1N0cmluZyAqKilmaWxlbmFtZQotewotICAgIHJl
dHVybiBOTzsKLX0KLQotLSAoTlNTdHJpbmcgKil3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIGdl
bmVyYXRlUmVwbGFjZW1lbnRGaWxlOihOU1N0cmluZyAqKXBhdGgKLXsKLSAgICByZXR1cm4gbmls
OwotfQotCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIC0gKHZvaWQpd2ViVmlld1N1cHBvcnRl
ZE9yaWVudGF0aW9uc1VwZGF0ZWQ6KFdlYlZpZXcgKilzZW5kZXIKIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgK
aW5kZXggYjM0MTI0OTI0MDEyZmZiYTllMDY4NWMwYmU5N2IxMjU1NzY0NDM2Yi4uZmRjNGNjNzgx
OTZmY2JjZjMyNjAyZDE4ZTI4OWYwN2ExMTU0Y2M5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTE1
OCw5ICsxNTgsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgZW5hYmxlU3VkZGVuVGVybWluYXRpb24o
KSBmaW5hbDsKICAgICB2b2lkIGRpc2FibGVTdWRkZW5UZXJtaW5hdGlvbigpIGZpbmFsOwogCi0g
ICAgYm9vbCBzaG91bGRSZXBsYWNlV2l0aEdlbmVyYXRlZEZpbGVGb3JVcGxvYWQoY29uc3QgU3Ry
aW5nJiBwYXRoLCBTdHJpbmcgJmdlbmVyYXRlZEZpbGVuYW1lKSBmaW5hbDsKLSAgICBTdHJpbmcg
Z2VuZXJhdGVSZXBsYWNlbWVudEZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKSBmaW5hbDsKLQogI2lm
ICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHZvaWQgZWxlbWVudERpZEZvY3VzKFdlYkNvcmU6
OkVsZW1lbnQmKSBvdmVycmlkZTsKICAgICB2b2lkIGVsZW1lbnREaWRCbHVyKFdlYkNvcmU6OkVs
ZW1lbnQmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbQppbmRleCAzZjk2YjRhYjdiMzhlM2E3
NjIwYzJhMDAzOWI4OTRhZTkwN2NlNzU5Li5lMWE4OTg5YzQ4YmUyNWQ1NTI0YmEzNWVjY2RhYzlh
ZGE0NGI1ZjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCkBAIC04NTUsMjAgKzg1NSw2IEBAIHZvaWQg
V2ViQ2hyb21lQ2xpZW50OjpkaXNhYmxlU3VkZGVuVGVybWluYXRpb24oKQogI2VuZGlmCiB9CiAK
LWJvb2wgV2ViQ2hyb21lQ2xpZW50OjpzaG91bGRSZXBsYWNlV2l0aEdlbmVyYXRlZEZpbGVGb3JV
cGxvYWQoY29uc3QgU3RyaW5nJiBwYXRoLCBTdHJpbmcmIGdlbmVyYXRlZEZpbGVuYW1lKQotewot
ICAgIE5TU3RyaW5nKiBmaWxlbmFtZTsKLSAgICBpZiAoIVtbbV93ZWJWaWV3IF9VSURlbGVnYXRl
Rm9yd2FyZGVyXSB3ZWJWaWV3Om1fd2ViVmlldyBzaG91bGRSZXBsYWNlVXBsb2FkRmlsZTpwYXRo
IHVzaW5nR2VuZXJhdGVkRmlsZW5hbWU6JmZpbGVuYW1lXSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIGdlbmVyYXRlZEZpbGVuYW1lID0gZmlsZW5hbWU7Ci0gICAgcmV0dXJuIHRydWU7Ci19
Ci0KLVN0cmluZyBXZWJDaHJvbWVDbGllbnQ6OmdlbmVyYXRlUmVwbGFjZW1lbnRGaWxlKGNvbnN0
IFN0cmluZyYgcGF0aCkKLXsKLSAgICByZXR1cm4gW1ttX3dlYlZpZXcgX1VJRGVsZWdhdGVGb3J3
YXJkZXJdIHdlYlZpZXc6bV93ZWJWaWV3IGdlbmVyYXRlUmVwbGFjZW1lbnRGaWxlOnBhdGhdOwot
fQotCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiB2b2lkIFdlYkNocm9tZUNsaWVudDo6ZWxl
bWVudERpZEZvY3VzKFdlYkNvcmU6OkVsZW1lbnQmIGVsZW1lbnQpCiB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlVJRGVsZWdhdGVQcml2YXRlLmggYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlVJRGVsZWdhdGVQcml2YXRlLmgKaW5k
ZXggMWFlMmJjMjQxZjBmZjJhZTMyN2I1ZmQ5MmM5Y2FmMjAwNTIzZDlhZi4uYTBlNzE2MWIyZTY2
MTQ2OWIzMWZkNzBhNzkxMWQ0Yzg2OTI1NWRhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJVSURlbGVnYXRlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVUlEZWxlZ2F0ZVByaXZhdGUuaApAQCAtMjQ4LDkgKzI0
OCw2IEBAIGV4dGVybiBOU1N0cmluZyAqV2ViQ29uc29sZU1lc3NhZ2VFcnJvck1lc3NhZ2VMZXZl
bDsKIAogLSAoV2ViVmlldyAqKXdlYlZpZXc6KFdlYlZpZXcgKilzZW5kZXIgY3JlYXRlV2ViVmll
d1dpdGhSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IHdpbmRvd0ZlYXR1cmVzOihOU0Rp
Y3Rpb25hcnkgKilmZWF0dXJlczsKIAotLSAoQk9PTCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVy
IHNob3VsZFJlcGxhY2VVcGxvYWRGaWxlOihOU1N0cmluZyAqKXBhdGggdXNpbmdHZW5lcmF0ZWRG
aWxlbmFtZTooTlNTdHJpbmcgKiopZmlsZW5hbWU7Ci0tIChOU1N0cmluZyAqKXdlYlZpZXc6KFdl
YlZpZXcgKilzZW5kZXIgZ2VuZXJhdGVSZXBsYWNlbWVudEZpbGU6KE5TU3RyaW5nICopcGF0aDsK
LQogLyohCiAgICAgQG1ldGhvZCB3ZWJWaWV3OmRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUmVx
dWVzdEZyb21PcmlnaW46ZnJhbWU6bGlzdGVuZXI6CiAgICAgQHBhcmFtIHdlYlZpZXcgVGhlIFdl
YlZpZXcgc2VuZGluZyB0aGUgZGVsZWdhdGUgbWV0aG9kLgpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hh
bmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDU5ZmU4ODJlY2VhYTNjYTljNGZkMjM0M2Q0
ZWM4OGI0ZjA5NmM4ZDMuLjEzMmU1M2NmNTNiZDIxNTlhOTk2NTVhMGUxMDg4YTZkOTJhZmMxYTAg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNCBAQAorMjAxOS0wNy0zMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3
ZWJraXQub3JnPgorCisgICAgICAgIE1vdmUgRm9ybURhdGEgemlwIGZpbGUgZ2VuZXJhdGlvbiB0
byBOZXR3b3JrUHJvY2VzcyBhbmQgZW5hYmxlIGl0IGZvciBhbGwgV2ViS2l0IGNsaWVudHMgZm9y
IHVwbG9hZGluZyBkaXJlY3RvcmllcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjAwMTAyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81MzI3NTExND4K
KworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBBZGQgYW4gQVBJ
IHRlc3QgdGhhdCBpcyBNYWMtb25seSByaWdodCBub3cgYmVjYXVzZSBydW5PcGVuUGFuZWxXaXRo
UGFyYW1ldGVycyBpcyBvbmx5IHN1cHBvcnRlZCBvbiBNYWMgZm9yIHNvbWUgcmVhc29uCisgICAg
ICAgIGFuZCBiZWNhdXNlIGNsaWNraW5nIG9uIGEgVGVzdFdLV2ViVmlldyBvbmx5IHdvcmtzIG9u
IE1hYy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvVXBsb2FkRGlyZWN0b3J5Lm1tOiBBZGRlZC4KKyAgICAgICAgKC1bVXBsb2FkRGVsZWdhdGUg
aW5pdFdpdGhEaXJlY3Rvcnk6XSk6CisgICAgICAgICgtW1VwbG9hZERlbGVnYXRlIHdlYlZpZXc6
cnVuT3BlblBhbmVsV2l0aFBhcmFtZXRlcnM6aW5pdGlhdGVkQnlGcmFtZTpjb21wbGV0aW9uSGFu
ZGxlcjpdKToKKyAgICAgICAgKC1bVXBsb2FkRGVsZWdhdGUgc2VudERpcmVjdG9yeV0pOgorICAg
ICAgICAoVEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3
Lmg6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tOgorICAg
ICAgICAoLVtUZXN0V0tXZWJWaWV3IHNlbmRDbGlja0F0UG9pbnQ6XSk6CisKIDIwMTktMDctMzEg
IEFha2FzaCBKYWluICA8YWFrYXNoX2phaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtld3MtYnVp
bGRdIEVuYWJsZSBhbGwgbWFjT1MgcXVldWVzIG9uIG5ldyBFV1MKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggNWQ2MTdmZDRjNmJmMWZiNmY3ZmQ4ODcyZDFhZmYyMDQ5NjVkNWVkMi4uMjk4NTVi
ODQwNGNjZThjYWEyOGIxOTgwYjNkZjc2N2VkMzg1MjYwYiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTMyOSw2ICszMjksNyBAQAogCQk1QzIzREYwQjIyNDYwMTU4MDBGNDU0QjYgLyogQ2hh
bGxlbmdlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NUMyM0RGMEEyMjQ1QzlENzAwRjQ1NEI2IC8qIENoYWxsZW5nZS5tbSAqLzsgfTsKIAkJNUMyOTM2
OTMxRDVCRjcwRDAwREVBQjFFIC8qIENvb2tpZUFjY2VwdFBvbGljeS5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMjkzNjkxMUQ1QkY2M0UwMERFQUIx
RSAvKiBDb29raWVBY2NlcHRQb2xpY3kubW0gKi87IH07CiAJCTVDMjkzNjk2MUQ1QzAwRUQwMERF
QUIxRSAvKiBDb29raWVNZXNzYWdlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMyOTM2OTQxRDVCRkQxOTAwREVBQjFFIC8qIENvb2tp
ZU1lc3NhZ2UuaHRtbCAqLzsgfTsKKwkJNUMzQTc3QUEyMkYyMEJFQTAwMzgyN0ZGIC8qIFVwbG9h
ZERpcmVjdG9yeS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDVDM0E3N0E5MjJGMjBCOEEwMDM4MjdGRiAvKiBVcGxvYWREaXJlY3RvcnkubW0gKi87IH07
CiAJCTVDM0IxRDI2MjJBNzRGNjcwMEJDRjREMCAvKiBDb250ZXh0TWVudXMubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzNCMUQyNTIyQTc0RUE0MDBC
Q0Y0RDAgLyogQ29udGV4dE1lbnVzLm1tICovOyB9OwogCQk1QzQyNTk0NjIyNjZBNjhBMDAzOUFB
N0EgLyogQmFzaWNQcm9wb3NlZENyZWRlbnRpYWxQbHVnSW4ubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzQyNTk0NDIyNjY5RTlCMDAzOUFBN0EgLyog
QmFzaWNQcm9wb3NlZENyZWRlbnRpYWxQbHVnSW4ubW0gKi87IH07CiAJCTVDNEE4NDk1MUY3RUVG
RkMwMEFDRkM1NCAvKiBDb25maWd1cmF0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNUM0QTg0OTQxRjdFRUZENDAwQUNGQzU0IC8qIENvbmZpZ3Vy
YXRpb24ubW0gKi87IH07CkBAIC0xODA0LDYgKzE4MDUsNyBAQAogCQk1QzIzREYwQTIyNDVDOUQ3
MDBGNDU0QjYgLyogQ2hhbGxlbmdlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gQ2hhbGxlbmdlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzI5
MzY5MTFENUJGNjNFMDBERUFCMUUgLyogQ29va2llQWNjZXB0UG9saWN5Lm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQ29va2llQWNjZXB0UG9saWN5Lm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzI5MzY5NDFENUJGRDE5MDBERUFCMUUgLyogQ29v
a2llTWVzc2FnZS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gQ29va2llTWVzc2Fn
ZS5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzNBNzdBOTIyRjIwQjhBMDAz
ODI3RkYgLyogVXBsb2FkRGlyZWN0b3J5Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gVXBsb2FkRGlyZWN0b3J5Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1QzNCMUQyNTIyQTc0RUE0MDBCQ0Y0RDAgLyogQ29udGV4dE1lbnVzLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQ29udGV4dE1lbnVzLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1QzQyNTk0NDIyNjY5RTlCMDAzOUFBN0EgLyogQmFzaWNQ
cm9wb3NlZENyZWRlbnRpYWxQbHVnSW4ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBCYXNpY1Byb3Bvc2VkQ3JlZGVudGlhbFBsdWdJbi5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNUM0QTg0OTQxRjdFRUZENDAwQUNGQzU0IC8qIENvbmZpZ3VyYXRp
b24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDb25maWd1cmF0
aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjgxMiw2ICsyODE0LDcgQEAK
IAkJCQlGNENENzRDODIwRkRCNDk2MDBERTM3OTQgLyogVGVzdFVSTFNjaGVtZUhhbmRsZXIubW0g
Ki8sCiAJCQkJQzIyRkEzMkEyMjhGODcwODAwOUQ3OTg4IC8qIFRleHRXaWR0aC5tbSAqLywKIAkJ
CQk1Q0I0MEI0RDFGNEI5OEJFMDA3REM3QjkgLyogVUlEZWxlZ2F0ZS5tbSAqLywKKwkJCQk1QzNB
NzdBOTIyRjIwQjhBMDAzODI3RkYgLyogVXBsb2FkRGlyZWN0b3J5Lm1tICovLAogCQkJCTdDQzNF
MUZBMTk3RTIzNDEwMEJFNjI1MiAvKiBVc2VyQ29udGVudENvbnRyb2xsZXIubW0gKi8sCiAJCQkJ
N0M4ODJFMDMxQzgwQzYyNDAwNkJGNzMxIC8qIFVzZXJDb250ZW50V29ybGQubW0gKi8sCiAJCQkJ
N0M4ODJFMDQxQzgwQzYyNDAwNkJGNzMxIC8qIFVzZXJDb250ZW50V29ybGRQbHVnSW4ubW0gKi8s
CkBAIC00NjMxLDYgKzQ2MzQsNyBAQAogCQkJCTVDOUQ5MjNBMjJEN0UyQjAwMDhFOTI2NiAvKiBV
bmlmaWVkU291cmNlNC1tbS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTVDOUQ5MjNDMjJEN0UyQjAw
MDhFOTI2NiAvKiBVbmlmaWVkU291cmNlNS1tbS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTVDOUQ5
MjNEMjJEN0UyQjAwMDhFOTI2NiAvKiBVbmlmaWVkU291cmNlNS5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQk1QzNBNzdBQTIyRjIwQkVBMDAzODI3RkYgLyogVXBsb2FkRGlyZWN0b3J5Lm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJNUM2RTI3QTcyMjRFRUJFQTAwMTI4NzM2IC8qIFVSTENhbm9uaWNhbGl6
YXRpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQlFM0ExRTc3RjIxQjI1QjM5MDA4QzYwMDcgLyog
VVJMUGFyc2VyVGV4dEVuY29kaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RjI3MUE0
MTFBRjYwMDQ0N0M0QyAvKiBVc2VyQ29udGVudENvbnRyb2xsZXIubW0gaW4gU291cmNlcyAqLywK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVXBsb2Fk
RGlyZWN0b3J5Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9VcGxv
YWREaXJlY3RvcnkubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODQ5Mjc4YjRmMzhmNjBkNzc5NDRhZjYxMDc0NGU1
YzUwZTk0NTMxZgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvVXBsb2FkRGlyZWN0b3J5Lm1tCkBAIC0wLDAgKzEsMTIyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2ltcG9ydCAiY29uZmlnLmgiCisKKyNpZiBQTEFURk9STShNQUMpCisKKyNpbXBvcnQg
IkRyYWdBbmREcm9wU2ltdWxhdG9yLmgiCisjaW1wb3J0ICJUQ1BTZXJ2ZXIuaCIKKyNpbXBvcnQg
IlRlc3ROYXZpZ2F0aW9uRGVsZWdhdGUuaCIKKyNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKKyNp
bXBvcnQgIlV0aWxpdGllcy5oIgorI2ltcG9ydCA8V2ViS2l0L1dlYktpdC5oPgorI2ltcG9ydCA8
d3RmL1JldGFpblB0ci5oPgorI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK0BpbnRl
cmZhY2UgVXBsb2FkRGVsZWdhdGUgOiBOU09iamVjdCA8V0tVSURlbGVnYXRlPgorLSAoaW5zdGFu
Y2V0eXBlKWluaXRXaXRoRGlyZWN0b3J5OihOU1VSTCAqKWRpcmVjdG9yeTsKKy0gKEJPT0wpc2Vu
dERpcmVjdG9yeTsKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFVwbG9hZERlbGVnYXRlIHsKKyAg
ICBSZXRhaW5QdHI8TlNVUkw+IF9kaXJlY3Rvcnk7CisgICAgQk9PTCBfc2VudERpcmVjdG9yeTsK
K30KKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRGlyZWN0b3J5OihOU1VSTCAqKWRpcmVjdG9y
eQoreworICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4gbmls
OworICAgIF9kaXJlY3RvcnkgPSBkaXJlY3Rvcnk7CisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0g
KHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBydW5PcGVuUGFuZWxXaXRoUGFyYW1l
dGVyczooV0tPcGVuUGFuZWxQYXJhbWV0ZXJzICopcGFyYW1ldGVycyBpbml0aWF0ZWRCeUZyYW1l
OihXS0ZyYW1lSW5mbyAqKWZyYW1lIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU0FycmF5
PE5TVVJMICo+ICogX051bGxhYmxlIFVSTHMpKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgY29t
cGxldGlvbkhhbmRsZXIoQFtfZGlyZWN0b3J5LmdldCgpXSk7CisgICAgX3NlbnREaXJlY3Rvcnkg
PSBZRVM7Cit9CisKKy0gKEJPT0wpc2VudERpcmVjdG9yeQoreworICAgIHJldHVybiBfc2VudERp
cmVjdG9yeTsKK30KKworQGVuZAorCitURVNUKFdlYktpdCwgVXBsb2FkRGlyZWN0b3J5KQorewor
ICAgIE5TRmlsZU1hbmFnZXIgKmZpbGVNYW5hZ2VyID0gW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1h
bmFnZXJdOworICAgIE5TRXJyb3IgKmVycm9yID0gbmlsOworICAgIE5TVVJMICpkaXJlY3Rvcnkg
PSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOltOU1RlbXBvcmFyeURpcmVjdG9yeSgpIHN0cmluZ0J5
QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIlVwbG9hZERpcmVjdG9yeSJdIGlzRGlyZWN0b3J5OllF
U107CisgICAgRVhQRUNUX0ZBTFNFKFtmaWxlTWFuYWdlciBmaWxlRXhpc3RzQXRQYXRoOmRpcmVj
dG9yeS5wYXRoXSk7CisgICAgRVhQRUNUX1RSVUUoW2ZpbGVNYW5hZ2VyIGNyZWF0ZURpcmVjdG9y
eUF0VVJMOmRpcmVjdG9yeSB3aXRoSW50ZXJtZWRpYXRlRGlyZWN0b3JpZXM6WUVTIGF0dHJpYnV0
ZXM6bmlsIGVycm9yOiZlcnJvcl0pOworICAgIEVYUEVDVF9GQUxTRShlcnJvcik7CisgICAgTlNE
YXRhICp0ZXN0RGF0YSA9IFtAInRlc3RkYXRhIiBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJp
bmdFbmNvZGluZ107CisgICAgRVhQRUNUX1RSVUUoW2ZpbGVNYW5hZ2VyIGNyZWF0ZUZpbGVBdFBh
dGg6W2RpcmVjdG9yeS5wYXRoIHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAInRlc3Rm
aWxlIl0gY29udGVudHM6dGVzdERhdGEgYXR0cmlidXRlczpuaWxdKTsKKworICAgIHsKKyAgICAg
ICAgdXNpbmcgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEk7CisgICAgICAgIFRDUFNlcnZlciBzZXJ2
ZXIoW10gKGludCBzb2NrZXQpIHsKKyAgICAgICAgICAgIFRDUFNlcnZlcjo6cmVhZChzb2NrZXQp
OworICAgICAgICAgICAgY29uc3QgY2hhciogcmVzcG9uc2UgPQorICAgICAgICAgICAgIkhUVFAv
MS4xIDIwMCBPS1xyXG4iCisgICAgICAgICAgICAiQ29udGVudC1UeXBlOiB0ZXh0L2h0bWxcclxu
IgorICAgICAgICAgICAgIkNvbnRlbnQtTGVuZ3RoOiAxMjNcclxuXHJcbiIKKyAgICAgICAgICAg
ICI8Zm9ybSBpZD0nZm9ybScgYWN0aW9uPScvdXBsb2FkLnBocCcgbWV0aG9kPSdwb3N0JyBlbmN0
eXBlPSdtdWx0aXBhcnQvZm9ybS1kYXRhJz48aW5wdXQgdHlwZT0nZmlsZScgbmFtZT0ndGVzdG5h
bWUnPjwvZm9ybT4iOworICAgICAgICAgICAgVENQU2VydmVyOjp3cml0ZShzb2NrZXQsIHJlc3Bv
bnNlLCBzdHJsZW4ocmVzcG9uc2UpKTsKKworICAgICAgICAgICAgYXV0byBoZWFkZXIgPSBUQ1BT
ZXJ2ZXI6OnJlYWQoc29ja2V0KTsKKyAgICAgICAgICAgIEVYUEVDVF9UUlVFKFN0cmluZyhoZWFk
ZXIuZGF0YSgpLCBoZWFkZXIuc2l6ZSgpKS5jb250YWlucygiQ29udGVudC1MZW5ndGg6IDU0MyIp
KTsKKyAgICAgICAgICAgIHNpemVfdCBib2R5Qnl0ZXNSZWFkID0gMDsKKyAgICAgICAgICAgIHdo
aWxlIChib2R5Qnl0ZXNSZWFkIDwgNTQzKQorICAgICAgICAgICAgICAgIGJvZHlCeXRlc1JlYWQg
Kz0gVENQU2VydmVyOjpyZWFkKHNvY2tldCkuc2l6ZSgpOworICAgICAgICAgICAgRVhQRUNUX0VR
KGJvZHlCeXRlc1JlYWQsIDU0M3VsbCk7CisgICAgICAgICAgICBjb25zdCBjaGFyKiBzZWNvbmRS
ZXNwb25zZSA9CisgICAgICAgICAgICAiSFRUUC8xLjEgMjAwIE9LXHJcbiIKKyAgICAgICAgICAg
ICJDb250ZW50LUxlbmd0aDogMFxyXG5cclxuIjsKKyAgICAgICAgICAgIFRDUFNlcnZlcjo6d3Jp
dGUoc29ja2V0LCBzZWNvbmRSZXNwb25zZSwgc3RybGVuKHNlY29uZFJlc3BvbnNlKSk7CisgICAg
ICAgIH0pOworCisgICAgICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3
IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgODAwLCA2MDApXSk7CisgICAg
ICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbVXBsb2FkRGVsZWdhdGUgYWxsb2NdIGluaXRX
aXRoRGlyZWN0b3J5OmRpcmVjdG9yeV0pOworICAgICAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRl
OmRlbGVnYXRlLmdldCgpXTsKKworICAgICAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFJl
cXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpb
TlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAImh0dHA6Ly8xMjcuMC4wLjE6JWQvIiwgc2VydmVy
LnBvcnQoKV1dXV07CisKKyAgICAgICAgYXV0byBjaG9vc2VGaWxlQnV0dG9uTG9jYXRpb24gPSBO
U01ha2VQb2ludCgxMCwgNTkwKTsKKyAgICAgICAgW3dlYlZpZXcgc2VuZENsaWNrQXRQb2ludDpj
aG9vc2VGaWxlQnV0dG9uTG9jYXRpb25dOworICAgICAgICB3aGlsZSAoIVtkZWxlZ2F0ZSBzZW50
RGlyZWN0b3J5XSkKKyAgICAgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnNwaW5SdW5Mb29w
KCk7CisgICAgICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdDpAImRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdmb3JtJykuc3VibWl0KCkiIGNvbXBsZXRpb25IYW5kbGVyOm5pbF07CisgICAg
ICAgIFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKKyAgICB9CisK
KyAgICBFWFBFQ1RfVFJVRShbZmlsZU1hbmFnZXIgcmVtb3ZlSXRlbUF0UGF0aDpkaXJlY3Rvcnku
cGF0aCBlcnJvcjomZXJyb3JdKTsKKyAgICBFWFBFQ1RfRkFMU0UoZXJyb3IpOworfQorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5o
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3LmgKaW5kZXggZWRlMDY4
MDMyMTVhM2Q1ZjgzZDQ0YmY4OWY2MGMxZTNiNzFmNTUxOC4uZjBmZWQ1ZDhmOGI0NDBmYjk0Y2Uy
M2YxNGVlZDczZWM3NjZjZmUwNCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2Nv
YS9UZXN0V0tXZWJWaWV3LmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tX
ZWJWaWV3LmgKQEAgLTEwNiw2ICsxMDYsNyBAQAogLSAodm9pZCltb3VzZVVwQXRQb2ludDooTlNQ
b2ludClwb2ludEluV2luZG93OwogLSAodm9pZCltb3VzZU1vdmVUb1BvaW50OihOU1BvaW50KXBv
aW50SW5XaW5kb3cgd2l0aEZsYWdzOihOU0V2ZW50TW9kaWZpZXJGbGFncylmbGFnczsKIC0gKHZv
aWQpc2VuZENsaWNrc0F0UG9pbnQ6KE5TUG9pbnQpcG9pbnRJbldpbmRvdyBudW1iZXJPZkNsaWNr
czooTlNVSW50ZWdlciludW1iZXJPZkNsaWNrczsKKy0gKHZvaWQpc2VuZENsaWNrQXRQb2ludDoo
TlNQb2ludClwb2ludEluV2luZG93OwogLSAoTlNXaW5kb3cgKilob3N0V2luZG93OwogLSAodm9p
ZCl0eXBlQ2hhcmFjdGVyOihjaGFyKWNoYXJhY3RlcjsKIEBlbmQKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbQppbmRleCAzZGE4MTcyNjFlMTdjMzkyNDM0OWQxNzE3
YTY2ZmNkYzc5MDZmOTVmLi41NDZjYTZlMjIyZDlmZWE4MWNlN2JlNGUyYzJkMzk4NWM1YjQ0ZjBm
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0K
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCkBAIC01OTMs
NiArNTkzLDExIEBAIHN0YXRpYyBXS0NvbnRlbnRWaWV3ICpyZWN1cnNpdmVGaW5kV0tDb250ZW50
VmlldyhVSVZpZXcgKnZpZXcpCiAgICAgfQogfQogCistICh2b2lkKXNlbmRDbGlja0F0UG9pbnQ6
KE5TUG9pbnQpcG9pbnRJbldpbmRvdworeworICAgIFtzZWxmIHNlbmRDbGlja3NBdFBvaW50OnBv
aW50SW5XaW5kb3cgbnVtYmVyT2ZDbGlja3M6MV07Cit9CisKIC0gKHZvaWQpbW91c2VFbnRlckF0
UG9pbnQ6KE5TUG9pbnQpcG9pbnRJbldpbmRvdwogewogICAgIFtzZWxmIG1vdXNlRW50ZXJlZDpb
c2VsZiBfbW91c2VFdmVudFdpdGhUeXBlOk5TRXZlbnRUeXBlTW91c2VFbnRlcmVkIGF0TG9jYXRp
b246cG9pbnRJbldpbmRvd11dOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>